| Server IP : 14.225.204.176 / Your IP : 216.73.216.6 Web Server : nginx/1.24.0 System : Linux nodejs-ybgk 6.8.0-40-generic #40-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 5 10:34:03 UTC 2024 x86_64 User : root ( 0) PHP Version : 8.1.34 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/html/php/zinisoft.net-react/node_modules/photoswipe/src/js/ |
Upload File : |
/** @typedef {import('./photoswipe.js').default} PhotoSwipe */
/**
* Handles scroll wheel.
* Can pan and zoom current slide image.
*/
class ScrollWheel {
/**
* @param {PhotoSwipe} pswp
*/
constructor(pswp) {
this.pswp = pswp;
pswp.events.add(pswp.element, 'wheel', /** @type EventListener */(this._onWheel.bind(this)));
}
/**
* @private
* @param {WheelEvent} e
*/
_onWheel(e) {
e.preventDefault();
const { currSlide } = this.pswp;
let { deltaX, deltaY } = e;
if (!currSlide) {
return;
}
if (this.pswp.dispatch('wheel', { originalEvent: e }).defaultPrevented) {
return;
}
if (e.ctrlKey || this.pswp.options.wheelToZoom) {
// zoom
if (currSlide.isZoomable()) {
let zoomFactor = -deltaY;
if (e.deltaMode === 1 /* DOM_DELTA_LINE */) {
zoomFactor *= 0.05;
} else {
zoomFactor *= e.deltaMode ? 1 : 0.002;
}
zoomFactor = 2 ** zoomFactor;
const destZoomLevel = currSlide.currZoomLevel * zoomFactor;
currSlide.zoomTo(destZoomLevel, {
x: e.clientX,
y: e.clientY
});
}
} else {
// pan
if (currSlide.isPannable()) {
if (e.deltaMode === 1 /* DOM_DELTA_LINE */) {
// 18 - average line height
deltaX *= 18;
deltaY *= 18;
}
currSlide.panTo(
currSlide.pan.x - deltaX,
currSlide.pan.y - deltaY
);
}
}
}
}
export default ScrollWheel;