UNPKG

react-moveable

Version:

A React Component that create Moveable, Draggable, Resizable, Scalable, Rotatable, Warpable, Pinchable, Groupable.

70 lines (60 loc) 1.84 kB
import { MoveableManagerState, OnCustomDrag } from "./types"; export function setCustomDrag(state: Partial<MoveableManagerState<any>>, delta: number[], inputEvent: any) { return { ...state.dragger!.move(delta, inputEvent), parentEvent: true, }; } export default class CustomDragger { private prevX = 0; private prevY = 0; private startX = 0; private startY = 0; private isDrag = false; private isFlag = false; private datas = {}; public dragStart(client: number[], inputEvent: any) { this.isDrag = false; this.isFlag = false; this.datas = {}; return this.move(client, inputEvent); } public drag(client: number[], inputEvent: any) { return this.move([ client[0] - this.prevX, client[1] - this.prevY, ], inputEvent); } public move(delta: number[], inputEvent: any): OnCustomDrag { let clientX!: number; let clientY!: number; if (!this.isFlag) { this.prevX = delta[0]; this.prevY = delta[1]; this.startX = delta[0]; this.startY = delta[1]; clientX = delta[0]; clientY = delta[1]; this.isFlag = true; } else { clientX = this.prevX + delta[0]; clientY = this.prevY + delta[1]; this.isDrag = true; } this.prevX = clientX; this.prevY = clientY; return { clientX, clientY, inputEvent, isDrag: this.isDrag, distX: clientX - this.startX, distY: clientY - this.startY, deltaX: delta[0], deltaY: delta[1], datas: this.datas, parentEvent: true, parentDragger: this, }; } }