UNPKG

tapspace

Version:

A zoomable user interface lib for web apps

30 lines (26 loc) 842 B
const Point = require('../../geometry/Point') module.exports = function (pageX, pageY) { // @Viewport:atPage(pageX, pageY) // // Compute a point on the viewport from page coordinates. // Pointer events are a common source for page coordinates. // // Parameters // pageX // a number // pageY // a number // // Return // a Point on viewport // // Affine viewport relative to the browser viewport. const rect = this.element.getBoundingClientRect() // Browser viewport relative to the page available via scrollX and scrollY const clientX = pageX - window.scrollX const clientY = pageY - window.scrollY // Finally, coords relative to the affine viewport const offsetX = clientX - rect.left const offsetY = clientY - rect.top return new Point(this, { x: offsetX, y: offsetY, z: 0 }) }