1 | import * as React from "react";
|
2 | import Draggable, { DraggableEventHandler } from "react-draggable";
|
3 | import { Resizable, ResizeDirection } from "re-resizable";
|
4 | export type Grid = [number, number];
|
5 | export type Position = {
|
6 | x: number;
|
7 | y: number;
|
8 | };
|
9 | export type DraggableData = {
|
10 | node: HTMLElement;
|
11 | deltaX: number;
|
12 | deltaY: number;
|
13 | lastX: number;
|
14 | lastY: number;
|
15 | } & Position;
|
16 | export type RndDragCallback = DraggableEventHandler;
|
17 | export type RndDragEvent = React.MouseEvent<HTMLElement | SVGElement> | React.TouchEvent<HTMLElement | SVGElement> | MouseEvent | TouchEvent;
|
18 | export type RndResizeStartCallback = (e: React.MouseEvent<HTMLElement> | React.TouchEvent<HTMLElement>, dir: ResizeDirection, elementRef: HTMLElement) => void | boolean;
|
19 | export type ResizableDelta = {
|
20 | width: number;
|
21 | height: number;
|
22 | };
|
23 | export type RndResizeCallback = (e: MouseEvent | TouchEvent, dir: ResizeDirection, elementRef: HTMLElement, delta: ResizableDelta, position: Position) => void;
|
24 | type Size = {
|
25 | width: string | number;
|
26 | height: string | number;
|
27 | };
|
28 | type 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 | };
|
39 | type MaxSize = {
|
40 | maxWidth: number | string;
|
41 | maxHeight: number | string;
|
42 | };
|
43 | export 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;
|
53 | export 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 | };
|
63 | export 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 | };
|
73 | export 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 | };
|
83 | export 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 | }
|
129 | interface 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 | }
|
140 | export 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 | }
|
197 | export {};
|