import * as React from "react"; import { EasingFunction } from "react-native"; import { INodeImageImmutable, INodeImageOptions, NodeType } from "@ef-carbon/dom"; import { Url } from "@ef-carbon/primitive"; import { Component, ReferencedTypedComponent } from "@ef-carbon/react-render-component"; import IDimensions from "../IDimensions"; import IFullscreen from "../IFullscreen"; import IBaseProps from "../IProps"; import { ErrorComponent, IProps as IResourceProps, LoadingComponent } from "../Resource/index"; import IMediaImage from "../media/IImage"; import MediaImage, { IProps as IMediaImageProps } from "../media/Image"; import { IProps as IFullscreenProps } from "./Fullscreen/index"; export { LoadingComponent, ErrorComponent }; export declare type OpenFullscreen = (node: React.ReactNode) => IFullscreen; export declare type ImplementationComponent = ReferencedTypedComponent; export declare type FullscreenImplementationComponent = Component; export interface IProps extends INodeImageOptions, IBaseProps, Partial, "LoadingComponent" | "ErrorComponent" | "reloadParameter" | "reloadAttempts">> { ImplementationComponent?: ImplementationComponent; FullscreenImplementationComponent?: FullscreenImplementationComponent | null; openFullscreen?: OpenFullscreen; onLoad?(): void; animate?: boolean; animationDelay?: number; animationDuration?: number; animationEasing?: EasingFunction; } export interface IState { progress: number; reloads: number; error?: Error; dimensions?: IDimensions; size?: IDimensions; fadeDelay: number; scaleDuration: number; } declare class Image extends React.PureComponent implements IMediaImage, INodeImageImmutable { private mounted; private dimensionsRef; private resourceRef; private implementationRef; static ImplementationComponent?: ImplementationComponent; static FullscreenImplementationComponent?: FullscreenImplementationComponent; static LoadingComponent?: LoadingComponent; static ErrorComponent?: ErrorComponent; static openFullscreen?: OpenFullscreen; static animate: boolean; constructor(props: IProps); componentDidMount(): void; componentWillUnmount(): void; render(): React.ReactNode; readonly animate: boolean; readonly animationDuration: number; readonly animationEasing: EasingFunction | undefined; readonly animationDelay: number; readonly type: NodeType.Image; readonly url: Url; readonly loading: boolean; readonly loaded: boolean; readonly unloaded: boolean; readonly error: Error | undefined; unload(): Promise; readonly width: number | undefined; readonly height: number | undefined; private readonly dimensions; private readonly implementationComponent; private readonly fullscreenImplementationComponent; private readonly renderImplementationComponent; private readonly loadingComponent; private readonly renderLoadingComponent; private readonly errorComponent; private readonly renderErrorComponent; private readonly openFullscreen; private readonly handleOpenFullscreen; private readonly layout; private readonly handleLoad; private readonly handleError; private readonly handleProgress; private readonly handleDimensions; private readonly handleSize; private readonly handleUnload; private readonly handleReload; private readonly refDimensions; private readonly refResource; private readonly refImplementation; private readonly handleScaleBegin; private readonly handleScaleEnd; private updateState; private readonly catcher; } export interface IStatic extends React.ComponentClass { } declare const component: IStatic; export { component as Component }; export default Image;