UNPKG

@skymp/skymp-ui-components

Version:

Library of UI components, styles and resources of Skymp

51 lines (50 loc) 1.62 kB
import { DragEvent } from "react"; export interface UseMovableProps { /** * initial left component property */ left: number; /** * initial top component property */ top: number; /** * React.Dispatch function for set left state */ setLeft: React.Dispatch<React.SetStateAction<number>>; /** * React.Dispatch function for set top state */ setTop: React.Dispatch<React.SetStateAction<number>>; /** * toggle of movable component state */ isMovable: boolean; } export interface CreateDragMoveArgs { isMouseEvents?: boolean; isMovable?: boolean; isAxisX?: boolean; isAxisY?: boolean; } /** * @description hook makes an component moveable and/or draggable */ export declare const useMovable: (props: UseMovableProps) => readonly [({ isMouseEvents, isMovable, isAxisX, isAxisY }: CreateDragMoveArgs) => { onMouseDown: (event: React.MouseEvent<HTMLDivElement, MouseEvent> | DragEvent<Element>) => void; onMouseMove: (event: React.MouseEvent<HTMLDivElement, MouseEvent> | MouseEvent) => void; onMouseUp: () => void; draggable?: undefined; onDrag?: undefined; onDragStart?: undefined; onDragEnd?: undefined; } | { draggable: boolean; onDrag: (event: React.MouseEvent<HTMLDivElement, MouseEvent> | MouseEvent) => void; onDragStart: (event: DragEvent<Element>) => void; onDragEnd: () => void; onMouseDown?: undefined; onMouseMove?: undefined; onMouseUp?: undefined; }, boolean, boolean, boolean]; export default useMovable;