import {getTouch, offsetXYFromParent} from './domFns'; // Get {x, y} positions from event. export function getControlPosition(event, touchIdentifier) { let touchObj = null; touchObj = typeof touchIdentifier === 'number' ? getTouch(event, touchIdentifier) : null; if (typeof touchIdentifier === 'number' && !touchObj) {return null; }// not the right touch const node = event.target; // User can provide an offsetParent if desired. // event.target.offsetParent || node.offsetParent || const offsetParent = node.ownerDocument.body; if (touchObj !== null) { return offsetXYFromParent(touchObj, offsetParent); } return offsetXYFromParent(event, offsetParent); } // Create an data object exposed by 's events export function createCoreData(node, x, y, lastX, lastY) { const isStart = !isNum(lastX); if (isStart) { // If this is our first move, use the x and y as last coords. return { node, deltaX: 0, deltaY: 0, lastX: x, lastY: y, x, y, }; } else { // Otherwise calculate proper values. return { node, deltaX: x - lastX, deltaY: y - lastY, lastX, lastY, x, y, }; } } export function isNum(num) { return typeof num === 'number' && !isNaN(num); } export function snapToGrid(grid, pendingX, pendingY) { const x = Math.round(pendingX / grid[0]) * grid[0]; const y = Math.round(pendingY / grid[1]) * grid[1]; return [x, y]; } export function setTransform(element: HTMLElement, top: number, left: number): void { const translate = `translate(${left}px,${top}px)`; element.style.transform = translate; (element.style as any).WebkitTransform = translate; (element.style as any).MozTransform = translate; (element.style as any).msTransform = translate; (element.style as any).OTransform = translate; } export function setTopLeft(element: HTMLElement, top: number, left: number): void { element.style.top = `${top}px`; element.style.left = `${left}px`; }