12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import { Platform } from '../platform';
- export class MouseWheelHandle {
- constructor(target, onWheelCallback, onWheelGuard) {
- this.animationFrameId = 0;
- this.deltaX = 0;
- this.deltaY = 0;
- this.eventName = Platform.isEventSupported('wheel')
- ? 'wheel'
- : 'mousewheel';
- this.target = target;
- this.onWheelCallback = onWheelCallback;
- this.onWheelGuard = onWheelGuard;
- this.onWheel = this.onWheel.bind(this);
- this.didWheel = this.didWheel.bind(this);
- }
- enable() {
- this.target.addEventListener(this.eventName, this.onWheel, {
- passive: false,
- });
- }
- disable() {
- this.target.removeEventListener(this.eventName, this.onWheel);
- }
- onWheel(e) {
- if (this.onWheelGuard != null && !this.onWheelGuard(e)) {
- return;
- }
- this.deltaX += e.deltaX;
- this.deltaY += e.deltaY;
- e.preventDefault();
- let changed;
- if (this.deltaX !== 0 || this.deltaY !== 0) {
- e.stopPropagation();
- changed = true;
- }
- if (changed === true && this.animationFrameId === 0) {
- this.animationFrameId = requestAnimationFrame(() => {
- this.didWheel(e);
- });
- }
- }
- didWheel(e) {
- this.animationFrameId = 0;
- this.onWheelCallback(e, this.deltaX, this.deltaY);
- this.deltaX = 0;
- this.deltaY = 0;
- }
- }
- //# sourceMappingURL=mousewheel.js.map
|