import * as React from 'react'; import { Dimension, BaseLayoutProvider } from '../dependencies/LayoutProvider'; import ItemAnimator from '../ItemAnimator'; import { ComponentCompat } from '../../utils/ComponentCompat'; /*** * View renderer is responsible for creating a container of size provided by LayoutProvider and render content inside it. * Also enforces a logic to prevent re renders. RecyclerListView keeps moving these ViewRendereres around using transforms to enable recycling. * View renderer will only update if its position, dimensions or given data changes. Make sure to have a relevant shouldComponentUpdate as well. * This is second of the two things recycler works on. Implemented both for web and react native. */ export interface ViewRendererProps { x: number; y: number; height: number; width: number; childRenderer: (type: string | number, data: T, index: number, extendedState?: object, renderProps?: { style: object; ref: object; }) => JSX.Element | JSX.Element[] | null; layoutType: string | number; dataHasChanged: (r1: T, r2: T) => boolean; onSizeChanged: (dim: Dimension, index: number) => void; data: any; index: number; itemAnimator: ItemAnimator; styleOverrides?: object; forceNonDeterministicRendering?: boolean; disableItemContainer?: boolean; isHorizontal?: boolean; extendedState?: object; internalSnapshot?: object; layoutProvider?: BaseLayoutProvider; onItemLayout?: (index: number) => void; renderItemContainer?: (props: object, parentProps: ViewRendererProps, children?: React.ReactNode) => React.ReactNode; } export default abstract class BaseViewRenderer extends ComponentCompat, Record> { protected animatorStyleOverrides: object | undefined; shouldComponentUpdate(newProps: ViewRendererProps): boolean; componentDidMount(): void; componentWillMountCompat(): void; componentWillUnmount(): void; protected abstract getRef(): object | null; protected renderChild(renderProps?: any): JSX.Element | JSX.Element[] | null; } //# sourceMappingURL=BaseViewRenderer.d.ts.map