{"version":3,"file":"foundation.util.touch.js","sources":["../../../../IREP.Web.Content/v7/node_modules/foundation-sites/js/foundation.util.touch.js"],"sourcesContent":["//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\n// function teardown() {\n// this.removeEventListener('touchstart', onTouchStart);\n// }\n\nclass SpotSwipe {\n constructor() {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this._init();\n }\n\n _init() {\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function() {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function() {\n $.fn.addTouch = function(){\n this.each(function(i, el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event) {\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function () {\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n"],"names":["startPosX","startTime","elapsedTime","startEvent","Touch","isMoving","didMoved","onTouchEnd","e","this","removeEventListener","onTouchMove","tapEvent","$","Event","trigger","spotSwipe","preventDefault","dir","x","touches","pageX","dx","Date","getTime","Math","abs","moveThreshold","timeThreshold","apply","arguments","Object","assign","onTouchStart","length","addEventListener","passive","init","SpotSwipe","constructor","version","enabled","document","documentElement","_init","event","special","swipe","setup","tap","each","on","noop","setupSpotSwipe","setupTouchHandler","fn","addTouch","i","el","bind","handleTouch","simulatedEvent","first","changedTouches","type","touchstart","touchmove","touchend","window","MouseEvent","bubbles","cancelable","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","target","dispatchEvent"],"mappings":"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","x_google_ignoreList":[0]}