UNPKG

5.94 kBTypeScriptView Raw
1import * as React from "react";
2import Draggable, { DraggableEventHandler } from "react-draggable";
3import { Resizable, ResizeDirection } from "re-resizable";
4export type Grid = [number, number];
5export type Position = {
6 x: number;
7 y: number;
8};
9export type DraggableData = {
10 node: HTMLElement;
11 deltaX: number;
12 deltaY: number;
13 lastX: number;
14 lastY: number;
15} & Position;
16export type RndDragCallback = DraggableEventHandler;
17export type RndDragEvent = React.MouseEvent<HTMLElement | SVGElement> | React.TouchEvent<HTMLElement | SVGElement> | MouseEvent | TouchEvent;
18export type RndResizeStartCallback = (e: React.MouseEvent<HTMLElement> | React.TouchEvent<HTMLElement>, dir: ResizeDirection, elementRef: HTMLElement) => void | boolean;
19export type ResizableDelta = {
20 width: number;
21 height: number;
22};
23export type RndResizeCallback = (e: MouseEvent | TouchEvent, dir: ResizeDirection, elementRef: HTMLElement, delta: ResizableDelta, position: Position) => void;
24type Size = {
25 width: string | number;
26 height: string | number;
27};
28type State = {
29 resizing: boolean;
30 bounds: {
31 top: number;
32 right: number;
33 bottom: number;
34 left: number;
35 };
36 maxWidth?: number | string;
37 maxHeight?: number | string;
38};
39type MaxSize = {
40 maxWidth: number | string;
41 maxHeight: number | string;
42};
43export type ResizeEnable = {
44 bottom?: boolean;
45 bottomLeft?: boolean;
46 bottomRight?: boolean;
47 left?: boolean;
48 right?: boolean;
49 top?: boolean;
50 topLeft?: boolean;
51 topRight?: boolean;
52} | boolean;
53export type HandleClasses = {
54 bottom?: string;
55 bottomLeft?: string;
56 bottomRight?: string;
57 left?: string;
58 right?: string;
59 top?: string;
60 topLeft?: string;
61 topRight?: string;
62};
63export type HandleStyles = {
64 bottom?: React.CSSProperties;
65 bottomLeft?: React.CSSProperties;
66 bottomRight?: React.CSSProperties;
67 left?: React.CSSProperties;
68 right?: React.CSSProperties;
69 top?: React.CSSProperties;
70 topLeft?: React.CSSProperties;
71 topRight?: React.CSSProperties;
72};
73export type HandleComponent = {
74 top?: React.ReactElement<any>;
75 right?: React.ReactElement<any>;
76 bottom?: React.ReactElement<any>;
77 left?: React.ReactElement<any>;
78 topRight?: React.ReactElement<any>;
79 bottomRight?: React.ReactElement<any>;
80 bottomLeft?: React.ReactElement<any>;
81 topLeft?: React.ReactElement<any>;
82};
83export interface Props {
84 dragGrid?: Grid;
85 default?: {
86 x: number;
87 y: number;
88 } & Size;
89 position?: {
90 x: number;
91 y: number;
92 };
93 size?: Size;
94 resizeGrid?: Grid;
95 bounds?: string | Element;
96 onMouseDown?: (e: MouseEvent) => void;
97 onMouseUp?: (e: MouseEvent) => void;
98 onResizeStart?: RndResizeStartCallback;
99 onResize?: RndResizeCallback;
100 onResizeStop?: RndResizeCallback;
101 onDragStart?: RndDragCallback;
102 onDrag?: RndDragCallback;
103 onDragStop?: RndDragCallback;
104 className?: string;
105 style?: React.CSSProperties;
106 children?: React.ReactNode;
107 enableResizing?: ResizeEnable;
108 resizeHandleClasses?: HandleClasses;
109 resizeHandleStyles?: HandleStyles;
110 resizeHandleWrapperClass?: string;
111 resizeHandleWrapperStyle?: React.CSSProperties;
112 resizeHandleComponent?: HandleComponent;
113 lockAspectRatio?: boolean | number;
114 lockAspectRatioExtraWidth?: number;
115 lockAspectRatioExtraHeight?: number;
116 maxHeight?: number | string;
117 maxWidth?: number | string;
118 minHeight?: number | string;
119 minWidth?: number | string;
120 dragAxis?: "x" | "y" | "both" | "none";
121 dragHandleClassName?: string;
122 disableDragging?: boolean;
123 cancel?: string;
124 enableUserSelectHack?: boolean;
125 allowAnyClick?: boolean;
126 scale?: number;
127 [key: string]: any;
128}
129interface DefaultProps {
130 maxWidth: number;
131 maxHeight: number;
132 onResizeStart: RndResizeStartCallback;
133 onResize: RndResizeCallback;
134 onResizeStop: RndResizeCallback;
135 onDragStart: RndDragCallback;
136 onDrag: RndDragCallback;
137 onDragStop: RndDragCallback;
138 scale: number;
139}
140export declare class Rnd extends React.PureComponent<Props, State> {
141 static defaultProps: DefaultProps;
142 resizable: Resizable;
143 draggable: Draggable;
144 resizingPosition: {
145 x: number;
146 y: number;
147 };
148 offsetFromParent: {
149 left: number;
150 top: number;
151 };
152 resizableElement: {
153 current: HTMLElement | null;
154 };
155 originalPosition: {
156 x: number;
157 y: number;
158 };
159 constructor(props: Props);
160 componentDidMount(): void;
161 getDraggablePosition(): {
162 x: number;
163 y: number;
164 };
165 getParent(): any;
166 getParentSize(): {
167 width: number;
168 height: number;
169 };
170 getMaxSizesFromProps(): MaxSize;
171 getSelfElement(): HTMLElement | null;
172 getOffsetHeight(boundary: HTMLElement): number;
173 getOffsetWidth(boundary: HTMLElement): number;
174 onDragStart(e: RndDragEvent, data: DraggableData): void;
175 onDrag(e: RndDragEvent, data: DraggableData): false | void;
176 onDragStop(e: RndDragEvent, data: DraggableData): false | void;
177 onResizeStart(e: React.MouseEvent<HTMLElement> | React.TouchEvent<HTMLElement>, dir: ResizeDirection, elementRef: HTMLElement): void;
178 onResize(e: MouseEvent | TouchEvent, direction: ResizeDirection, elementRef: HTMLElement, delta: {
179 height: number;
180 width: number;
181 }): void;
182 onResizeStop(e: MouseEvent | TouchEvent, direction: ResizeDirection, elementRef: HTMLElement, delta: {
183 height: number;
184 width: number;
185 }): void;
186 updateSize(size: {
187 width: number | string;
188 height: number | string;
189 }): void;
190 updatePosition(position: Position): void;
191 updateOffsetFromParent(): {
192 top: number;
193 left: number;
194 } | undefined;
195 render(): React.JSX.Element;
196}
197export {};