1
1
<script lang="ts" setup>
2
2
import type { CoordinateExtent , GraphNode , PanelPosition } from ' @vue-flow/core'
3
- import { Panel , getBoundsofRects , getConnectedEdges , getRectOfNodes , useVueFlow , wheelDelta } from ' @vue-flow/core'
3
+ import { Panel , getBoundsofRects , getConnectedEdges , getRectOfNodes , isMacOs , useVueFlow , wheelDelta } from ' @vue-flow/core'
4
4
import { zoom , zoomIdentity } from ' d3-zoom'
5
5
import type { D3ZoomEvent } from ' d3-zoom'
6
6
import { pointer , select } from ' d3-selection'
@@ -26,7 +26,7 @@ const {
26
26
zoomable = false ,
27
27
ariaLabel = ' Vue Flow mini map' ,
28
28
inversePan = false ,
29
- zoomStep = 10 ,
29
+ zoomStep = 1 ,
30
30
offsetScale = 5 ,
31
31
} = defineProps <MiniMapProps >()
32
32
@@ -126,13 +126,14 @@ watchEffect(
126
126
return
127
127
}
128
128
129
+ const factor = event .sourceEvent .ctrlKey && isMacOs () ? 10 : 1
129
130
const pinchDelta =
130
131
- event .sourceEvent .deltaY *
131
132
(event .sourceEvent .deltaMode === 1 ? 0.05 : event .sourceEvent .deltaMode ? 1 : 0.002 ) *
132
133
zoomStep
133
- const zoom = viewport .value .zoom * 2 ** pinchDelta
134
+ const nextZoom = viewport .value .zoom * 2 ** ( pinchDelta * factor )
134
135
135
- d3Zoom .value .scaleTo (d3Selection .value , zoom )
136
+ d3Zoom .value .scaleTo (d3Selection .value , nextZoom )
136
137
}
137
138
138
139
const panHandler = (event : D3ZoomEvent <HTMLDivElement , any >) => {
0 commit comments