74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
import * as pointerUtils from "../utils/pointerUtils.js";
|
|
import { BaseEvent } from "../core/BaseEvent.js";
|
|
export default class PointerEvent extends BaseEvent {
|
|
/** */
|
|
constructor(type, pointer, event, eventTarget, interaction, timeStamp) {
|
|
super(interaction);
|
|
this.type = void 0;
|
|
this.originalEvent = void 0;
|
|
this.pointerId = void 0;
|
|
this.pointerType = void 0;
|
|
this.double = void 0;
|
|
this.pageX = void 0;
|
|
this.pageY = void 0;
|
|
this.clientX = void 0;
|
|
this.clientY = void 0;
|
|
this.dt = void 0;
|
|
this.eventable = void 0;
|
|
pointerUtils.pointerExtend(this, event);
|
|
|
|
if (event !== pointer) {
|
|
pointerUtils.pointerExtend(this, pointer);
|
|
}
|
|
|
|
this.timeStamp = timeStamp;
|
|
this.originalEvent = event;
|
|
this.type = type;
|
|
this.pointerId = pointerUtils.getPointerId(pointer);
|
|
this.pointerType = pointerUtils.getPointerType(pointer);
|
|
this.target = eventTarget;
|
|
this.currentTarget = null;
|
|
|
|
if (type === 'tap') {
|
|
const pointerIndex = interaction.getPointerIndex(pointer);
|
|
this.dt = this.timeStamp - interaction.pointers[pointerIndex].downTime;
|
|
const interval = this.timeStamp - interaction.tapTime;
|
|
this.double = !!(interaction.prevTap && interaction.prevTap.type !== 'doubletap' && interaction.prevTap.target === this.target && interval < 500);
|
|
} else if (type === 'doubletap') {
|
|
this.dt = pointer.timeStamp - interaction.tapTime;
|
|
}
|
|
}
|
|
|
|
_subtractOrigin({
|
|
x: originX,
|
|
y: originY
|
|
}) {
|
|
this.pageX -= originX;
|
|
this.pageY -= originY;
|
|
this.clientX -= originX;
|
|
this.clientY -= originY;
|
|
return this;
|
|
}
|
|
|
|
_addOrigin({
|
|
x: originX,
|
|
y: originY
|
|
}) {
|
|
this.pageX += originX;
|
|
this.pageY += originY;
|
|
this.clientX += originX;
|
|
this.clientY += originY;
|
|
return this;
|
|
}
|
|
/**
|
|
* Prevent the default behaviour of the original Event
|
|
*/
|
|
|
|
|
|
preventDefault() {
|
|
this.originalEvent.preventDefault();
|
|
}
|
|
|
|
}
|
|
export { PointerEvent };
|
|
//# sourceMappingURL=PointerEvent.js.map
|