DefinitelyTyped/types/react-measure/index.d.ts
Forbes Lindesay 8f8f6c4392 [react] Use HTMLDialogElement for the dialog node (#23053)
* [react] Use HTMLDialogElement for the dialog node

* Actually add the `open` property

* This update requires typescript 2.6

* Update dependents of react to also require typescript 2.6
2018-02-12 12:55:52 +00:00

65 lines
1.7 KiB
TypeScript

// Type definitions for react-measure 2.0
// Project: https://github.com/souporserious/react-measure
// Definitions by: Alexey Svetliakov <https://github.com/asvetliakov>, Marc Fallows <https://github.com/marcfallows>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.6
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<T> = React.ComponentType<T & MeasuredComponentProps>;
export interface MeasureProps<T> {
client?: boolean;
offset?: boolean;
scroll?: boolean;
bounds?: boolean;
margin?: boolean;
innerRef?(ref: Element | null): void;
onResize?(contentRect: ContentRect): void;
children?: React.SFC<MeasuredComponentProps>;
}
export declare function withContentRect(types: ReadonlyArray<MeasurementType> | MeasurementType):
<T extends {}>(fn: MeasuredComponent<T>) => React.ComponentType<T>;
declare class Measure<T> extends React.Component<MeasureProps<T>> {}
export default Measure;