You can override default behaviors by passing an options object as the second argument to svgPanZoom.
Available Options:
viewportSelector: querySelector string or SVGElement.panEnabled: boolean (default: true).controlIconsEnabled: boolean (default: false).zoomEnabled: boolean (default: true).dblClickZoomEnabled: boolean (default: true).mouseWheelZoomEnabled: boolean (default: true).preventMouseEventsDefault: boolean (default: true).zoomScaleSensitivity: scalar (default: 0.2).minZoom: scalar (default: 0.5).maxZoom: scalar (default: 10).fit: boolean (default: true).contain: boolean (default: false). Note: fit takes precedence over contain.center: boolean (default: true).refreshRate: number or 'auto'.beforeZoom: callback function (oldZoom, newZoom) => void. Returning false halts zooming.onZoom: callback function (newZoom) => void.beforePan: callback function (oldPan, newPan) => void. oldPan and newPan are objects with {x, y}. Returning false or {x: true, y: true} halts panning. Returning {x: 10, y: 20} alters the current pan step.onPan: callback function (newPan) => void.onUpdatedCTM: callback function called asynchronously after CTM updates.customEventsHandler: object with init and destroy functions.eventsListenerElement: SVGElement or null.
svgPanZoom('#demo-tiger', {
viewportSelector: '.svg-pan-zoom_viewport'
, panEnabled: true
, controlIconsEnabled: false
, zoomEnabled: true
, dblClickZoomEnabled: true
, mouseWheelZoomEnabled: true
, preventMouseEventsDefault: true
, zoomScaleSensitivity: 0.2
, minZoom: 0.5
, maxZoom: 10
, fit: true
, contain: false
, center: true
, refreshRate: 'auto'
, beforeZoom: function(){}
, onZoom: function(){}
, beforePan: function(){}
, onPan: function(){}
, onUpdatedCTM: function(){}
, customEventsHandler: {}
, eventsListenerElement: null
});