SourceTermAnalysisSystem_vue/node_modules/@antv/x6-common/es/dom/mousewheel.js
2026-05-15 10:22:44 +08:00

49 lines
1.5 KiB
JavaScript

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