| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- import { PointerInfo } from "types"
- import { isDarwin } from "utils/utils"
-
- class Inputs {
- points: Record<string, PointerInfo> = {}
-
- pointerDown(e: PointerEvent | React.PointerEvent, target: string) {
- const { shiftKey, ctrlKey, metaKey, altKey } = e
-
- const info = {
- target,
- pointerId: e.pointerId,
- origin: [e.clientX, e.clientY],
- point: [e.clientX, e.clientY],
- shiftKey,
- ctrlKey,
- metaKey: isDarwin() ? metaKey : ctrlKey,
- altKey,
- }
-
- this.points[e.pointerId] = info
-
- return info
- }
-
- pointerEnter(e: PointerEvent | React.PointerEvent, target: string) {
- const { shiftKey, ctrlKey, metaKey, altKey } = e
-
- const info = {
- target,
- pointerId: e.pointerId,
- origin: [e.clientX, e.clientY],
- point: [e.clientX, e.clientY],
- shiftKey,
- ctrlKey,
- metaKey: isDarwin() ? metaKey : ctrlKey,
- altKey,
- }
-
- return info
- }
-
- pointerMove(e: PointerEvent | React.PointerEvent) {
- const { shiftKey, ctrlKey, metaKey, altKey } = e
-
- const prev = this.points[e.pointerId]
-
- const info = {
- ...prev,
- pointerId: e.pointerId,
- point: [e.clientX, e.clientY],
- shiftKey,
- ctrlKey,
- metaKey: isDarwin() ? metaKey : ctrlKey,
- altKey,
- }
-
- if (this.points[e.pointerId]) {
- this.points[e.pointerId] = info
- }
-
- return info
- }
-
- pointerUp(e: PointerEvent | React.PointerEvent) {
- const { shiftKey, ctrlKey, metaKey, altKey } = e
-
- const prev = this.points[e.pointerId]
-
- const info = {
- ...prev,
- origin: prev?.origin || [e.clientX, e.clientY],
- point: [e.clientX, e.clientY],
- shiftKey,
- ctrlKey,
- metaKey: isDarwin() ? metaKey : ctrlKey,
- altKey,
- }
-
- delete this.points[e.pointerId]
-
- return info
- }
-
- wheel(e: WheelEvent) {
- const { shiftKey, ctrlKey, metaKey, altKey } = e
- return { point: [e.clientX, e.clientY], shiftKey, ctrlKey, metaKey, altKey }
- }
-
- get pointer() {
- return this.points[Object.keys(this.points)[0]]
- }
- }
-
- export default new Inputs()
|