chore(xypanzoom): prevent default for pinch zoom on nowheel element #5074

This commit is contained in:
moklick
2025-04-02 20:46:08 +02:00
parent bab415084a
commit 9980cff2fe
+13 -4
View File
@@ -141,11 +141,20 @@ export function createPanOnScrollHandler({
export function createZoomOnScrollHandler({ noWheelClassName, preventScrolling, d3ZoomHandler }: ZoomOnScrollParams) {
return function (this: Element, event: any, d: unknown) {
// we still want to enable pinch zooming even if preventScrolling is set to false
const preventZoom = !preventScrolling && event.type === 'wheel' && !event.ctrlKey;
if (event.type === 'wheel') {
const isPinch = event.ctrlKey;
// we still want to enable pinch zooming even if preventScrolling is set to false
const preventZoom = !preventScrolling && !isPinch;
const isNoWheel = isWrappedWithClass(event, noWheelClassName);
if (preventZoom || isWrappedWithClass(event, noWheelClassName)) {
return null;
// if user is pinch zooming above a nowheel element, we don't want the browser to zoom
if (isPinch && isNoWheel) {
event.preventDefault();
}
if (preventZoom || isNoWheel) {
return null;
}
}
event.preventDefault();