import { TransCreateFn, TransferCtrl } from ".."; function getTransform(this: TransferCtrl, transType: string) { const { transEvent } = this; const { transform = {} } = this.currComp.layout; const offset = { x: transform.x || 0, y: transform.y || 0, r: transform.r || 0, s: transform.s || 1, }; switch (transType) { case "move": offset.x += transEvent.offsetX * 2; offset.y += transEvent.offsetY * 2; break; case "rotate": offset.r = (offset.r + transEvent.offsetX * -1) % 360; break; case "scale": offset.s = +((offset.s * (1 + (transEvent.offsetX * 2) / transEvent.width)).toFixed(2)) } return offset; } const transform: TransCreateFn = (transType: string) => ({ mousemove() { const style = this.module.helper.createStyle({ transform: getTransform.call(this, transType), }); Object.entries(style).forEach(([key, value]: any[]) => { this.compEl.style[key] = value; }); }, mouseup() { this.currComp.layout.transform = getTransform.call(this, transType); }, }); export const move = transform.bind(null, "move"); export const rotate = transform.bind(null, "rotate"); export const scale = transform.bind(null, "scale");