From e1c7022bbc3b7c06fe92c7b67dc72ba174e6712c Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 11 Aug 2025 14:17:04 +0200 Subject: [PATCH 1/4] chore(minimap): fix zooming on windows #5392 --- packages/system/src/xyminimap/index.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/system/src/xyminimap/index.ts b/packages/system/src/xyminimap/index.ts index 025cbeee..e80defac 100644 --- a/packages/system/src/xyminimap/index.ts +++ b/packages/system/src/xyminimap/index.ts @@ -38,18 +38,19 @@ export function XYMinimap({ domNode, panZoom, getTransform, getViewScale }: XYMi zoomable = true, inversePan = false, }: XYMinimapUpdate) { + const _zoomStep = zoomStep / 10; + // eslint-disable-next-line @typescript-eslint/no-explicit-any const zoomHandler = (event: D3ZoomEvent) => { - const transform = getTransform(); - if (event.sourceEvent.type !== 'wheel' || !panZoom) { return; } + const transform = getTransform(); const pinchDelta = -event.sourceEvent.deltaY * (event.sourceEvent.deltaMode === 1 ? 0.05 : event.sourceEvent.deltaMode ? 1 : 0.002) * - zoomStep; + _zoomStep; const nextZoom = transform[2] * Math.pow(2, pinchDelta); panZoom.scaleTo(nextZoom); From 144f8feb0f4a74b63e44eb9edf5beed4dd8a9230 Mon Sep 17 00:00:00 2001 From: moklick Date: Mon, 11 Aug 2025 14:17:45 +0200 Subject: [PATCH 2/4] chore(changeset): add --- .changeset/fresh-eyes-remain.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fresh-eyes-remain.md diff --git a/.changeset/fresh-eyes-remain.md b/.changeset/fresh-eyes-remain.md new file mode 100644 index 00000000..0d2739bb --- /dev/null +++ b/.changeset/fresh-eyes-remain.md @@ -0,0 +1,5 @@ +--- +'@xyflow/system': patch +--- + +Fix minimap zoom for windows users From 9fa07796640f3fe811146a4b1d89ac4d5b6f9782 Mon Sep 17 00:00:00 2001 From: moklick Date: Tue, 12 Aug 2025 12:44:49 +0200 Subject: [PATCH 3/4] chore(minimap): use 1 as a default for zoom step --- .../src/additional-components/MiniMap/MiniMap.tsx | 2 +- packages/system/src/xyminimap/index.ts | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packages/react/src/additional-components/MiniMap/MiniMap.tsx b/packages/react/src/additional-components/MiniMap/MiniMap.tsx index 891f280e..35ded83f 100644 --- a/packages/react/src/additional-components/MiniMap/MiniMap.tsx +++ b/packages/react/src/additional-components/MiniMap/MiniMap.tsx @@ -65,7 +65,7 @@ function MiniMapComponent({ zoomable = false, ariaLabel, inversePan, - zoomStep = 10, + zoomStep = 1, offsetScale = 5, }: MiniMapProps) { const store = useStoreApi(); diff --git a/packages/system/src/xyminimap/index.ts b/packages/system/src/xyminimap/index.ts index e80defac..fc9b2cdb 100644 --- a/packages/system/src/xyminimap/index.ts +++ b/packages/system/src/xyminimap/index.ts @@ -2,6 +2,7 @@ import { type D3ZoomEvent, zoom } from 'd3-zoom'; import { select, pointer } from 'd3-selection'; import type { CoordinateExtent, PanZoomInstance, Transform } from '../types'; +import { isMacOs } from '../utils'; export type XYMinimapInstance = { update: (params: XYMinimapUpdate) => void; @@ -33,25 +34,23 @@ export function XYMinimap({ domNode, panZoom, getTransform, getViewScale }: XYMi translateExtent, width, height, - zoomStep = 10, + zoomStep = 1, pannable = true, zoomable = true, inversePan = false, }: XYMinimapUpdate) { - const _zoomStep = zoomStep / 10; - // eslint-disable-next-line @typescript-eslint/no-explicit-any const zoomHandler = (event: D3ZoomEvent) => { if (event.sourceEvent.type !== 'wheel' || !panZoom) { return; } - const transform = getTransform(); + const factor = event.sourceEvent.ctrlKey && isMacOs() ? 10 : 1; const pinchDelta = -event.sourceEvent.deltaY * (event.sourceEvent.deltaMode === 1 ? 0.05 : event.sourceEvent.deltaMode ? 1 : 0.002) * - _zoomStep; - const nextZoom = transform[2] * Math.pow(2, pinchDelta); + zoomStep; + const nextZoom = transform[2] * Math.pow(2, pinchDelta * factor); panZoom.scaleTo(nextZoom); }; From 34b856a18472b3ca13bcb80f3e8f2a0efa314e3b Mon Sep 17 00:00:00 2001 From: Moritz Klack Date: Tue, 12 Aug 2025 12:49:02 +0200 Subject: [PATCH 4/4] Update fresh-eyes-remain.md --- .changeset/fresh-eyes-remain.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.changeset/fresh-eyes-remain.md b/.changeset/fresh-eyes-remain.md index 0d2739bb..8c63fdce 100644 --- a/.changeset/fresh-eyes-remain.md +++ b/.changeset/fresh-eyes-remain.md @@ -1,5 +1,7 @@ --- '@xyflow/system': patch +'@xyflow/react': patch +'@xyflow/svelte': patch --- -Fix minimap zoom for windows users +Use 1 as the default for interactive Minimap zoom step