import { ComponentClass, ForwardRefExoticComponent, ReactNode } from "react"; import { ImageProps, RecursiveArray, TextProps, ViewProps, ViewStyle } from "react-native"; import { AssignableKeys, ComponentPropsWithRef, ElementType } from "@react-spring/types"; import { FluidValue } from "@react-spring/shared"; export * from "@react-spring/core"; //#region src/primitives.d.ts declare const primitives: { View: ComponentClass; Text: ComponentClass; Image: ComponentClass; }; //#endregion //#region src/animated.d.ts type Primitives = typeof primitives; type AnimatedPrimitives = { [P in keyof Primitives]: AnimatedComponent }; /** The type of the `animated()` function */ type WithAnimated = { (wrappedComponent: T): AnimatedComponent; } & AnimatedPrimitives; /** The type of an `animated()` component */ type AnimatedComponent = ForwardRefExoticComponent> & { children?: ReactNode; }>; /** The props of an `animated()` component */ type AnimatedProps = { [P in keyof Props]: P extends 'ref' | 'key' ? Props[P] : AnimatedProp }; type AnimatedProp = [T, T] extends [infer T, infer DT] ? [DT] extends [never] ? never : DT extends void ? undefined : DT extends ReadonlyArray ? AnimatedArray
| AnimatedLeaf : DT extends ReadonlyArray ? TransformArray extends DT ? AnimatedTransform : AnimatedStyles
: [AssignableKeys] extends [never] ? DT | AnimatedLeaf : AnimatedStyle
: never; type AnimatedArray> = { [P in keyof T]: T[P] | FluidValue }; type AnimatedStyles> = unknown & T extends RecursiveArray ? { [P in keyof T]: RecursiveArray> }[keyof T] : { [P in keyof T]: [T[P]] extends [infer DT] ? DT extends ReadonlyArray ? AnimatedStyles
: DT extends object ? [AssignableKeys] extends [never] ? AnimatedProp
: { [P in keyof DT]: AnimatedProp } : DT : never }; type AnimatedStyle = [T, T] extends [infer T, infer DT] ? DT extends void ? undefined : [DT] extends [never] ? never : DT extends object ? { [P in keyof T]: P extends 'transform' ? AnimatedTransform : AnimatedStyle } : DT | AnimatedLeaf : never; type TransformArray = Exclude; type AnimatedTransform = Array } : never>; type AnimatedLeaf = Exclude | Extract> extends infer U ? [U] extends [never] ? never : FluidValue> : never; //#endregion //#region src/index.d.ts declare const animated: WithAnimated; //#endregion export { AnimatedComponent, AnimatedProps, AnimatedStyle, AnimatedTransform, WithAnimated, animated as a, animated };