// Type definitions for react-measure 2.0 // Project: https://github.com/souporserious/react-measure // Definitions by: Alexey Svetliakov , Marc Fallows // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 import * as React from "react"; export type MeasurementType = "client" | "offset" | "scroll" | "bounds" | "margin"; interface TopLeft { readonly top: number; readonly left: number; } interface BottomRight { readonly bottom: number; readonly right: number; } interface Dimensions { readonly width: number; readonly height: number; } export type Margin = TopLeft & BottomRight; export type Rect = TopLeft & Dimensions; export type BoundingRect = Dimensions & Margin; export interface ContentRect { client?: Rect; offset?: Rect; scroll?: Rect; bounds?: BoundingRect; margin?: Margin; entry?: any; } export interface MeasuredComponentProps { measureRef(ref: Element | null): void; measure(): void; contentRect: ContentRect; } type MeasuredComponent = React.ComponentType; export interface MeasureProps { client?: boolean; offset?: boolean; scroll?: boolean; bounds?: boolean; margin?: boolean; innerRef?: React.Ref; onResize?(contentRect: ContentRect): void; children?: React.SFC; } export function withContentRect(types: ReadonlyArray | MeasurementType): (fn: MeasuredComponent) => React.ComponentType; declare class Measure extends React.Component {} export default Measure;