| | import { app } from "../../../scripts/app.js"; |
| |
|
| | |
| |
|
| | app.registerExtension({ |
| | name: "pysssss.TouchEvents", |
| | setup() { |
| | let touchStart = null; |
| | let touchType = 0; |
| |
|
| | function fireEvent(originalEvent, type) { |
| | const fakeEvent = document.createEvent("MouseEvent"); |
| | const touch = originalEvent.changedTouches[0]; |
| | fakeEvent.initMouseEvent( |
| | type, |
| | true, |
| | true, |
| | window, |
| | 1, |
| | touch.screenX, |
| | touch.screenY, |
| | touch.clientX, |
| | touch.clientY, |
| | false, |
| | false, |
| | false, |
| | false, |
| | 0, |
| | null |
| | ); |
| |
|
| | touch.target.dispatchEvent(fakeEvent); |
| | if (fakeEvent.defaultPrevented) { |
| | originalEvent.preventDefault(); |
| | } |
| | } |
| |
|
| | document.addEventListener( |
| | "touchstart", |
| | (e) => { |
| | |
| | if (touchStart) { |
| | clearTimeout(touchStart); |
| | } |
| | touchStart = setTimeout(() => { |
| | touchStart = null; |
| | }, 100); |
| |
|
| | |
| | touchType = e.touches.length === 1 ? 0 : 2; |
| |
|
| | fireEvent(e, "mousedown"); |
| | }, |
| | true |
| | ); |
| |
|
| | document.addEventListener("touchmove", (e) => fireEvent(e, "mousemove"), true); |
| |
|
| | document.addEventListener( |
| | "touchend", |
| | (e) => { |
| | const isClick = touchStart; |
| | if (isClick) { |
| | |
| | clearTimeout(touchStart); |
| | fireEvent(e, "click"); |
| | } |
| | fireEvent(e, "mouseup"); |
| | touchType = 0; |
| | }, |
| | true |
| | ); |
| | }, |
| | }); |
| |
|