create-expo-cljs-app
Version:
Create a react native application with Expo and Shadow-CLJS!
140 lines (126 loc) • 4.03 kB
Flow
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
* @format
*/
;
import { AnimatedEvent, attachNativeEvent } from './AnimatedEvent';
import AnimatedImplementation from './AnimatedImplementation';
import AnimatedInterpolation from './nodes/AnimatedInterpolation';
import AnimatedNode from './nodes/AnimatedNode';
import AnimatedProps from './nodes/AnimatedProps';
import AnimatedValue from './nodes/AnimatedValue';
import AnimatedValueXY from './nodes/AnimatedValueXY';
import createAnimatedComponent from './createAnimatedComponent';
import type { EndCallback } from './animations/Animation';
import type { TimingAnimationConfig } from './animations/TimingAnimation';
import type { DecayAnimationConfig } from './animations/DecayAnimation';
import type { SpringAnimationConfig } from './animations/SpringAnimation';
import type { Mapping, EventConfig } from './AnimatedEvent';
/**
* Animations are a source of flakiness in snapshot testing. This mock replaces
* animation functions from AnimatedImplementation with empty animations for
* predictability in tests.
*/
export type CompositeAnimation = {
start: (callback?: ?EndCallback) => void,
stop: () => void,
reset: () => void,
_startNativeLoop: (iterations?: number) => void,
_isUsingNativeDriver: () => boolean,
...
};
const emptyAnimation = {
start: () => {},
stop: () => {},
reset: () => {},
_startNativeLoop: () => {},
_isUsingNativeDriver: () => {
return false;
}
};
const spring = function (value: AnimatedValue | AnimatedValueXY, config: SpringAnimationConfig): CompositeAnimation {
const anyValue: any = value;
return { ...emptyAnimation,
start: (callback?: ?EndCallback): void => {
anyValue.setValue(config.toValue);
callback && callback({
finished: true
});
}
};
};
const timing = function (value: AnimatedValue | AnimatedValueXY, config: TimingAnimationConfig): CompositeAnimation {
const anyValue: any = value;
return { ...emptyAnimation,
start: (callback?: ?EndCallback): void => {
anyValue.setValue(config.toValue);
callback && callback({
finished: true
});
}
};
};
const decay = function (value: AnimatedValue | AnimatedValueXY, config: DecayAnimationConfig): CompositeAnimation {
return emptyAnimation;
};
const sequence = function (animations: Array<CompositeAnimation>): CompositeAnimation {
return emptyAnimation;
};
type ParallelConfig = {
stopTogether?: boolean,
...
};
const parallel = function (animations: Array<CompositeAnimation>, config?: ?ParallelConfig): CompositeAnimation {
return emptyAnimation;
};
const delay = function (time: number): CompositeAnimation {
return emptyAnimation;
};
const stagger = function (time: number, animations: Array<CompositeAnimation>): CompositeAnimation {
return emptyAnimation;
};
type LoopAnimationConfig = {
iterations: number,
resetBeforeIteration?: boolean,
...
};
const loop = function (animation: CompositeAnimation, {
iterations = -1
}: LoopAnimationConfig = {}): CompositeAnimation {
return emptyAnimation;
};
const event = function (argMapping: Array<?Mapping>, config: EventConfig): any {
return null;
};
export default {
Value: AnimatedValue,
ValueXY: AnimatedValueXY,
Interpolation: AnimatedInterpolation,
Node: AnimatedNode,
decay,
timing,
spring,
add: AnimatedImplementation.add,
subtract: AnimatedImplementation.subtract,
divide: AnimatedImplementation.divide,
multiply: AnimatedImplementation.multiply,
modulo: AnimatedImplementation.modulo,
diffClamp: AnimatedImplementation.diffClamp,
delay,
sequence,
parallel,
stagger,
loop,
event,
createAnimatedComponent,
attachNativeEvent,
forkEvent: AnimatedImplementation.forkEvent,
unforkEvent: AnimatedImplementation.unforkEvent,
Event: AnimatedEvent,
__PropsOnlyForTests: AnimatedProps
};