UNPKG

2.55 kBTypeScriptView Raw
1/**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @format
8 */
9
10export type LayoutAnimationType =
11 | 'spring'
12 | 'linear'
13 | 'easeInEaseOut'
14 | 'easeIn'
15 | 'easeOut'
16 | 'keyboard';
17
18export type LayoutAnimationTypes = {
19 [type in LayoutAnimationType]: type;
20};
21
22export type LayoutAnimationProperty =
23 | 'opacity'
24 | 'scaleX'
25 | 'scaleY'
26 | 'scaleXY';
27
28export type LayoutAnimationProperties = {
29 [prop in LayoutAnimationProperty]: prop;
30};
31
32export interface LayoutAnimationAnim {
33 duration?: number | undefined;
34 delay?: number | undefined;
35 springDamping?: number | undefined;
36 initialVelocity?: number | undefined;
37 type?: LayoutAnimationType | undefined;
38 property?: LayoutAnimationProperty | undefined;
39}
40
41export interface LayoutAnimationConfig {
42 duration: number;
43 create?: LayoutAnimationAnim | undefined;
44 update?: LayoutAnimationAnim | undefined;
45 delete?: LayoutAnimationAnim | undefined;
46}
47
48/** Automatically animates views to their new positions when the next layout happens.
49 * A common way to use this API is to call LayoutAnimation.configureNext before
50 * calling setState. */
51export interface LayoutAnimationStatic {
52 /** Schedules an animation to happen on the next layout.
53 * @param config Specifies animation properties:
54 * `duration` in milliseconds
55 * `create`, config for animating in new views (see Anim type)
56 * `update`, config for animating views that have been updated (see Anim type)
57 * @param onAnimationDidEnd Called when the animation finished. Only supported on iOS.
58 */
59 configureNext: (
60 config: LayoutAnimationConfig,
61 onAnimationDidEnd?: () => void,
62 onAnimationDidFail?: () => void,
63 ) => void;
64 /** Helper for creating a config for configureNext. */
65 create: (
66 duration: number,
67 type?: LayoutAnimationType,
68 creationProp?: LayoutAnimationProperty,
69 ) => LayoutAnimationConfig;
70 Types: LayoutAnimationTypes;
71 Properties: LayoutAnimationProperties;
72 configChecker: (shapeTypes: {[key: string]: any}) => any;
73 Presets: {
74 easeInEaseOut: LayoutAnimationConfig;
75 linear: LayoutAnimationConfig;
76 spring: LayoutAnimationConfig;
77 };
78 easeInEaseOut: (onAnimationDidEnd?: () => void) => void;
79 linear: (onAnimationDidEnd?: () => void) => void;
80 spring: (onAnimationDidEnd?: () => void) => void;
81}
82
83export const LayoutAnimation: LayoutAnimationStatic;
84export type LayoutAnimation = LayoutAnimationStatic;