UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

41 lines (40 loc) 1.38 kB
"use strict"; export class EventHelper { constructor(element) { this.element = element; } setElement(element) { this.element = element; } static elementPosition(event, element, position) { const dim = element.getBoundingClientRect(); if (event.changedTouches) { event = event; const touch = event.changedTouches[0]; position.x = touch.pageX - dim.x; position.y = touch.pageY - dim.y; } else { event = event; position.x = event.pageX - dim.x; position.y = event.pageY - dim.y; } } static normalizedPosition(event, element, position) { this.elementPosition(event, element, position); const dim = element.getBoundingClientRect(); position.x = (position.x - globalThis.scrollX) / dim.width * 2 - 1; position.y = -((position.y - globalThis.scrollY) / dim.height * 2 - 1); } static normalized_position_0_1(event, element, position) { this.elementPosition(event, element, position); const dim = element.getBoundingClientRect(); position.x = (position.x - globalThis.scrollX) / dim.width; position.y = (position.y - globalThis.scrollY) / dim.height; } elementPosition(event, position) { EventHelper.elementPosition(event, this.element, position); } normalizedPosition(event, position) { EventHelper.normalizedPosition(event, this.element, position); } }