diff --git a/index.d.ts b/index.d.ts index f1e3913..2214cd5 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,56 +1,91 @@ -import * as React from 'react'; -import { ObjectOverwrite } from 'typelevel-ts'; -import { ImageProperties, ImageStatic } from 'react-native'; +import * as React from 'react' +import { FlexStyle, LayoutChangeEvent, ShadowStyleIOS, StyleProp, TransformsStyle } from 'react-native' declare namespace FastImage { - export namespace priority { - type low = 'low'; - type normal = 'normal'; - type high = 'high'; - } + export namespace priority { + type low = 'low' + type normal = 'normal' + type high = 'high' + } - type priority = - FastImage.priority.low | - FastImage.priority.normal | - FastImage.priority.high; + type priority = + FastImage.priority.low | + FastImage.priority.normal | + FastImage.priority.high - export namespace resizeMode { - type contain = 'contain'; - type cover = 'cover'; - type stretch = 'stretch'; - type center = 'center'; - } + export namespace resizeMode { + type contain = 'contain' + type cover = 'cover' + type stretch = 'stretch' + type center = 'center' + } - export type resizeMode = - FastImage.resizeMode.contain | - FastImage.resizeMode.cover | - FastImage.resizeMode.stretch | - FastImage.resizeMode.center + export type resizeMode = + FastImage.resizeMode.contain | + FastImage.resizeMode.cover | + FastImage.resizeMode.stretch | + FastImage.resizeMode.center } export type FastImageSource = { - uri?: string, - headers?: object; - priority?: FastImage.priority; -}; - -export type FastImageProperties = ObjectOverwrite; - -interface FastImageStatic extends React.ComponentClass { - resizeMode: FastImage.resizeMode; - preload(sources: Array): void; + uri?: string, + headers?: object + priority?: FastImage.priority } -declare var FastImage: FastImageStatic; -type FastImage = FastImageStatic; +export interface ImageStyle extends FlexStyle, TransformsStyle, ShadowStyleIOS { + backfaceVisibility?: 'visible' | 'hidden' + backgroundColor?: string + borderColor?: string + overlayColor?: string + tintColor?: string + opacity?: number +} -export default FastImage; +export interface FastImageProperties { + source: FastImageSource | number + resizeMode?: FastImage.resizeMode + + onLoadStart?(): void + + onProgress?(event: any): void + + onLoad?(): void + + onError?(): void + + onLoadEnd?(): void + + /** + * onLayout function + * + * Invoked on mount and layout changes with + * + * {nativeEvent: { layout: {x, y, width, height}}}. + */ + onLayout?: (event: LayoutChangeEvent) => void; + + /** + * + * Style + */ + style?: StyleProp; + + /** + * A unique identifier for this element to be used in UI Automation testing scripts. + */ + testID?: string; +} + +interface FastImageStatic extends React.ComponentClass { + resizeMode: FastImage.resizeMode + priority: FastImage.priority + + preload(sources: FastImageSource[]): void +} + +declare var FastImage: FastImageStatic +type FastImage = FastImageStatic + +export default FastImage