@dream11mobile/react-native-fast-image
Version:
🚩 FastImage, performant React Native image component.
169 lines (138 loc) • 3.8 kB
TypeScript
import * as React from 'react'
import {
FlexStyle,
LayoutChangeEvent,
ShadowStyleIOS,
StyleProp,
TransformsStyle,
} from 'react-native'
declare namespace FastImage {
namespace priority {
type low = 'low'
type normal = 'normal'
type high = 'high'
}
namespace resizeMode {
type contain = 'contain'
type cover = 'cover'
type stretch = 'stretch'
type center = 'center'
}
namespace cacheControl {
type cacheOnly = 'cacheOnly'
type immutable = 'immutable'
type web = 'web'
}
namespace blendMode {
type overlay = 'overlay'
}
export type Priority =
| FastImage.priority.low
| FastImage.priority.normal
| FastImage.priority.high
export type ResizeMode =
| FastImage.resizeMode.contain
| FastImage.resizeMode.cover
| FastImage.resizeMode.stretch
| FastImage.resizeMode.center
export type Cache =
| FastImage.cacheControl.cacheOnly
| FastImage.cacheControl.immutable
| FastImage.cacheControl.web
export type BlendMode =
| FastImage.blendMode.overlay
}
export type FastImageSource = {
uri?: string
headers?: { [key: string]: string }
priority?: FastImage.Priority
cache?: FastImage.Cache
}
export type FastImageGradient = {
blendMode: FastImage.BlendMode
colors: Array<string | number>
locations: Array<number>
angle: number
}
export interface ImageStyle extends FlexStyle, TransformsStyle, ShadowStyleIOS {
backfaceVisibility?: 'visible' | 'hidden'
borderBottomLeftRadius?: number
borderBottomRightRadius?: number
backgroundColor?: string
borderColor?: string
borderWidth?: number
borderRadius?: number
borderTopLeftRadius?: number
borderTopRightRadius?: number
overlayColor?: string
tintColor?: string
opacity?: number
}
export interface OnLoadEvent {
nativeEvent: {
width: number
height: number
}
}
export interface OnProgressEvent {
nativeEvent: {
loaded: number
total: number
}
}
export interface FastImageProperties {
source: FastImageSource | number
gradient?: FastImageGradient
resizeMode?: FastImage.ResizeMode
fallback?: boolean
onLoadStart?(): void
onProgress?(event: OnProgressEvent): void
onLoad?(event: OnLoadEvent): 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<ImageStyle>
/**
* TintColor
*
* If supplied, changes the color of all the non-transparent pixels to the given color.
*/
tintColor?: number | string
/**
* A unique identifier for this element to be used in UI Automation testing scripts.
*/
testID?: string
}
interface FastImageStatic extends React.ComponentClass<FastImageProperties> {
resizeMode: {
contain: FastImage.resizeMode.contain
cover: FastImage.resizeMode.cover
stretch: FastImage.resizeMode.stretch
center: FastImage.resizeMode.center
}
priority: {
low: FastImage.priority.low
normal: FastImage.priority.normal
high: FastImage.priority.high
}
cacheControl: {
cacheOnly: FastImage.cacheControl.cacheOnly
immutable: FastImage.cacheControl.immutable
web: FastImage.cacheControl.web
}
preload(sources: FastImageSource[]): void
}
declare var FastImage: FastImageStatic
type FastImage = FastImageStatic
export default FastImage