///
export declare type ShapeId = string;
export interface Point {
readonly x: number;
readonly y: number;
}
export interface Rectangle {
readonly x: number;
readonly y: number;
readonly width: number;
readonly height: number;
}
export interface ConstrainMoveFunc {
(args: Readonly<{
x: number;
y: number;
width: number;
height: number;
originalX: number;
originalY: number;
vectorWidth: number;
vectorHeight: number;
}>): Point;
}
export interface ConstrainResizeFunc {
(args: Readonly<{
originalMovingCorner: Point;
startCorner: Point;
movingCorner: Point;
lockedDimension: 'x' | 'y' | null;
vectorWidth: number;
vectorHeight: number;
}>): Point;
}
export declare type ShapeEditorProps = {
children: any;
focusOnAdd?: boolean;
focusOnDelete?: boolean;
padding?: number | {
top?: number;
right?: number;
bottom?: number;
left?: number;
};
scale?: number;
style?: React.CSSProperties;
vectorHeight: number;
vectorWidth: number;
};
export declare type DrawLayerProps = {
constrainMove?: ConstrainMoveFunc;
constrainResize?: ConstrainResizeFunc;
DrawPreviewComponent?: any;
onAddShape: (newRect: Rectangle) => void;
onDraw?: (args: Readonly<{
startCorner: Point;
movingCorner: Point;
}>) => void;
onDrawEnd?: (args: Readonly<{
startCorner: Point;
movingCorner: Point;
canceled: boolean;
}>) => void;
onDrawStart?: (args: Readonly<{
startCorner: Point;
}>) => void;
};
declare type ResizeComponentHandleProps = {
active: boolean;
nativeActive: boolean;
cursor: ResizeCursor;
isBeingChanged: boolean;
isInSelectionGroup: boolean;
name: HandleName;
onMouseDown: (event: React.MouseEvent) => void;
recommendedSize: number;
scale: number;
x: number;
y: number;
};
export declare type ResizeHandleComponentType = React.ComponentType;
declare type WrappedShapePassthroughProps = {
active?: boolean;
disabled?: boolean;
height: number;
width: number;
x: number;
y: number;
isInSelectionGroup?: boolean;
shapeId: ShapeId;
extraShapeProps?: {
readonly [key: string]: any;
};
};
export declare type WrappedShapeProps = {
constrainMove?: ConstrainMoveFunc;
constrainResize?: ConstrainResizeFunc;
isInternalComponent?: boolean;
keyboardTransformMultiplier?: number;
onBlur?: (event: React.FocusEvent, props: WrappedShapePropsInActions) => void;
onChange?: (nextRect: Rectangle, props: WrappedShapePropsInActions) => void;
onDelete?: (event: React.KeyboardEvent, props: WrappedShapePropsInActions) => void;
onFocus?: (event: React.FocusEvent, props: WrappedShapePropsInActions) => void;
onKeyDown?: (event: React.KeyboardEvent, props: WrappedShapePropsInActions) => void;
onIntermediateChange?: (intermediateRect: Rectangle) => void;
ResizeHandleComponent?: ResizeHandleComponentType;
wrapperProps?: React.SVGProps;
} & WrappedShapePassthroughProps;
export declare type WrappedShapePropsInActions = Required;
export declare type WrappedShapeReceivedProps = Required & {
isBeingChanged: boolean;
nativeActive: boolean;
scale: number;
};
export declare type GetSelectionChildUpdatedRect = (selectionStartRect: Rectangle, selectionEndRect: Rectangle) => Rectangle;
export interface ShapeActions {
props: WrappedShapePropsInActions;
forceFocus: () => void;
getSelectionChildUpdatedRect: GetSelectionChildUpdatedRect;
simulateTransform: (nextRect: Rectangle | null) => void;
}
export declare type CornerHandleName = 'nw' | 'ne' | 'sw' | 'se';
export declare type HandleName = 'w' | 'n' | 's' | 'e' | CornerHandleName;
export declare type ResizeCursor = 'ns-resize' | 'ew-resize' | 'nesw-resize' | 'nwse-resize';
export declare type CoordinateGetterType = React.MutableRefObject<(event: React.MouseEvent | MouseEvent, offsets?: {
x?: number;
y?: number;
}) => Point>;
export declare type ShapeActionRefsArrayRef = React.MutableRefObject[]>;
export declare type ShapeActionRefsDictRef = React.MutableRefObject<{
[shapeId: string]: React.MutableRefObject;
}>;
export {};