react-shimmer
Version:
React Image (Suspense-like) Loader component that simulates a shimmer effect
48 lines (47 loc) • 1.58 kB
TypeScript
/**
* @class SuspenseImage
* @version 3.2.0
* @author github.com/gokcan
*/
/// <reference types="node" />
import React, { ReactNode, ImgHTMLAttributes, Component } from 'react';
import PropTypes from 'prop-types';
import './anims/anims.css';
export interface ImageProps {
src: string;
fallback: ReactNode;
errorFallback?: (err: string) => ReactNode;
onLoad?: (image: HTMLImageElement) => any;
delay?: number;
fadeIn?: boolean;
NativeImgProps?: ImgHTMLAttributes<HTMLImageElement>;
}
interface State {
isLoading: boolean;
error?: string;
}
export declare class SuspenseImage extends Component<ImageProps, State> {
static propTypes: {
src: PropTypes.Validator<string>;
fallback: PropTypes.Validator<PropTypes.ReactElementLike>;
errorFallback: PropTypes.Requireable<(...args: any[]) => any>;
onLoad: PropTypes.Requireable<(...args: any[]) => any>;
delay: PropTypes.Requireable<number>;
fadeIn: PropTypes.Requireable<boolean>;
NativeImgProps: PropTypes.Requireable<object>;
};
state: State;
timeoutId?: NodeJS.Timeout;
forceReject?: (reason: Error) => void;
_isMounted: boolean;
imgRef: React.RefObject<HTMLImageElement>;
componentDidMount(): void;
componentDidUpdate(prevProps: ImageProps): void;
componentWillUnmount(): void;
private start;
private loadImage;
private tryLoadImage;
private safeClearTimeout;
render(): {} | null | undefined;
}
export { SuspenseImage as Image };