{"version":3,"sources":["imgzoomer.js"],"names":["zoomController","initEvents","zoomInBtn","document","getElementById","zoomOutBtn","addEventListener","panzoom","zoomIn","zoomOut","eventsHandler","haltEventListeners","init","options","instance","initialScale","pannedX","pannedY","this","hammer","Hammer","svgElement","inputClass","SUPPORT_POINTER_EVENTS","PointerEventInput","TouchInput","get","set","enable","on","ev","type","panBy","x","deltaX","y","deltaY","getZoom","zoom","scale","e","preventDefault","destroy","zoomScaleSensitivity","fit","center","customEventsHandler","disableZoom","reset","enableZoom","element","window","panZoom","svgPanZoom","error","console","warn","onresize","resize","resizeZoom","updateBBox"],"mappings":"AAAA,GAAIA,gBAAiB,WAkEjB,QAASC,KACL,GAAIC,GAAYC,SAASC,eAAe,WACpCC,EAAaF,SAASC,eAAe,WAEzCF,GAAUI,iBAAiB,QAAS,WAChCC,EAAQC,WAEZH,EAAWC,iBAAiB,QAAS,WACjCC,EAAQE,YAzEhB,GA+DIF,GA/DAG,GACAC,oBAAqB,aAAc,WAAY,YAAa,aAAc,eACxEC,KAAM,SAAUC,GACd,GAAIC,GAAWD,EAAQC,SACjBC,EAAe,EACfC,EAAU,EACVC,EAAU,CAIhBC,MAAKC,OAASC,OAAOP,EAAQQ,YACzBC,WAAYF,OAAOG,uBAAyBH,OAAOI,kBAAoBJ,OAAOK,aAIlFP,KAAKC,OAAOO,IAAI,SAASC,KAAMC,QAAQ,IAGvCV,KAAKC,OAAOU,GAAG,YAAa,SAAUC,GAClChB,EAASN,WAIbU,KAAKC,OAAOU,GAAG,mBAAoB,SAAUC,GAEzB,aAAZA,EAAGC,OACHf,EAAU,EACVC,EAAU,GAIdH,EAASkB,OAAQC,EAAGH,EAAGI,OAASlB,EAASmB,EAAGL,EAAGM,OAASnB,IACxDD,EAAUc,EAAGI,OACbjB,EAAUa,EAAGM,SAIjBlB,KAAKC,OAAOU,GAAG,uBAAwB,SAAUC,GAE7B,eAAZA,EAAGC,OACHhB,EAAeD,EAASuB,UACxBvB,EAASwB,KAAKvB,EAAee,EAAGS,QAGpCzB,EAASwB,KAAKvB,EAAee,EAAGS,SAKpC1B,EAAQQ,WAAWf,iBAAiB,YAAa,SAAUkC,GAAKA,EAAEC,oBAEpEC,QAAS,WACPxB,KAAKC,OAAOuB,YAIhB7B,GACA8B,qBAAsB,GACtBC,IAAK,EACLC,OAAQ,EACRC,oBAAqBpC,GAiBrBV,GACA+C,YAAa,WACTxC,EAAQyC,QACRzC,EAAQmC,WAEZO,WAAY,SAAUC,GAClBhC,KAAKgC,QAAUA,CACf,KACI3C,EAAU4C,OAAOC,QAAUC,WAAWnC,KAAKgC,QAASrC,GACtD,MAAOyC,GACLC,QAAQC,KAAK,iBAGjBL,OAAOM,SAAW,WACdL,QAAQM,SACRN,QAAQR,MACRQ,QAAQP,WAGhBc,WAAY,WACRP,QAAQQ,aACRR,QAAQM,SACRN,QAAQR,MACRQ,QAAQP,UAIhB,OADA5C,KACOD","file":"imgzoomer.min.js","sourcesContent":["var zoomController = (function () {\r\n var eventsHandler = {\r\n haltEventListeners: ['touchstart', 'touchend', 'touchmove', 'touchleave', 'touchcancel']\r\n , init: function (options) {\r\n var instance = options.instance\r\n , initialScale = 1\r\n , pannedX = 0\r\n , pannedY = 0;\r\n\r\n // Init Hammer\r\n // Listen only for pointer and touch events\r\n this.hammer = Hammer(options.svgElement, {\r\n inputClass: Hammer.SUPPORT_POINTER_EVENTS ? Hammer.PointerEventInput : Hammer.TouchInput\r\n });\r\n\r\n // Enable pinch\r\n this.hammer.get('pinch').set({ enable: true });\r\n\r\n // Handle double tap\r\n this.hammer.on('doubletap', function (ev) {\r\n instance.zoomIn();\r\n });\r\n\r\n // Handle pan\r\n this.hammer.on('panstart panmove', function (ev) {\r\n // On pan start reset panned variables\r\n if (ev.type === 'panstart') {\r\n pannedX = 0;\r\n pannedY = 0;\r\n }\r\n\r\n // Pan only the difference\r\n instance.panBy({ x: ev.deltaX - pannedX, y: ev.deltaY - pannedY });\r\n pannedX = ev.deltaX;\r\n pannedY = ev.deltaY;\r\n });\r\n\r\n // Handle pinch\r\n this.hammer.on('pinchstart pinchmove', function (ev) {\r\n // On pinch start remember initial zoom\r\n if (ev.type === 'pinchstart') {\r\n initialScale = instance.getZoom();\r\n instance.zoom(initialScale * ev.scale);\r\n }\r\n\r\n instance.zoom(initialScale * ev.scale);\r\n\r\n });\r\n\r\n // Prevent moving the page on some devices when panning over SVG\r\n options.svgElement.addEventListener('touchmove', function (e) { e.preventDefault(); });\r\n }\r\n , destroy: function () {\r\n this.hammer.destroy();\r\n }\r\n };\r\n\r\n var options = {\r\n zoomScaleSensitivity: 0.5,\r\n fit: 1,\r\n center: 1,\r\n customEventsHandler: eventsHandler\r\n };\r\n\r\n var panzoom, element;\r\n\r\n function initEvents() {\r\n var zoomInBtn = document.getElementById('zoom-in');\r\n var zoomOutBtn = document.getElementById('zoom-out');\r\n\r\n zoomInBtn.addEventListener('click', function () {\r\n panzoom.zoomIn();\r\n });\r\n zoomOutBtn.addEventListener('click', function () {\r\n panzoom.zoomOut();\r\n });\r\n }\r\n\r\n var zoomController = {\r\n disableZoom: function () {\r\n panzoom.reset();\r\n panzoom.destroy();\r\n },\r\n enableZoom: function (element) {\r\n this.element = element;\r\n try {\r\n panzoom = window.panZoom = svgPanZoom(this.element, options);\r\n } catch (error) {\r\n console.warn('no svgs found');\r\n }\r\n\r\n window.onresize = function () {\r\n panZoom.resize();\r\n panZoom.fit();\r\n panZoom.center();\r\n };\r\n },\r\n resizeZoom: function () {\r\n panZoom.updateBBox();\r\n panZoom.resize();\r\n panZoom.fit();\r\n panZoom.center();\r\n }\r\n };\r\n initEvents();\r\n return zoomController;\r\n})();"],"sourceRoot":"/source/"}