{"version":3,"file":"chunk-foundation.util.touch-8fe69c90-esm.js","sources":["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":["Touch","startPosX","startTime","elapsedTime","startEvent","isMoving","didMoved","onTouchEnd","e","removeEventListener","onTouchMove","tapEvent","$","Event","trigger","spotSwipe","preventDefault","x","touches","pageX","dx","dir","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","changedTouches","first","eventTypes","touchstart","touchmove","touchend","type","simulatedEvent","window","MouseEvent","screenX","screenY","clientX","clientY","createEvent","initMouseEvent","target","dispatchEvent"],"mappings":";;AAAA;AACA,IAMIA,KAAK,GAAG,EAAE;AAEd,IAAIC,SAAS;EACTC,SAAS;EACTC,WAAW;EACXC,UAAU;EACVC,QAAQ,GAAG,KAAK;EAChBC,QAAQ,GAAG,KAAK;AAEpB,SAASC,UAAUA,CAACC,CAAC,EAAE;EACrB,IAAI,CAACC,mBAAmB,CAAC,WAAW,EAAEC,WAAW,CAAC;EAClD,IAAI,CAACD,mBAAmB,CAAC,UAAU,EAAEF,UAAU,CAAC;;;EAGhD,IAAI,CAACD,QAAQ,EAAE;IACb,IAAIK,QAAQ,GAAGC,MAAC,CAACC,KAAK,CAAC,KAAK,EAAET,UAAU,IAAII,CAAC,CAAC;IAC9CI,MAAC,CAAC,IAAI,CAAC,CAACE,OAAO,CAACH,QAAQ,CAAC;;EAG3BP,UAAU,GAAG,IAAI;EACjBC,QAAQ,GAAG,KAAK;EAChBC,QAAQ,GAAG,KAAK;;AAGlB,SAASI,WAAWA,CAACF,CAAC,EAAE;EACtB,IAAI,IAAI,KAAKI,MAAC,CAACG,SAAS,CAACC,cAAc,EAAE;IAAER,CAAC,CAACQ,cAAc,EAAE;;EAE7D,IAAGX,QAAQ,EAAE;IACX,IAAIY,CAAC,GAAGT,CAAC,CAACU,OAAO,CAAC,CAAC,CAAC,CAACC,KAAK;;IAE1B,IAAIC,EAAE,GAAGnB,SAAS,GAAGgB,CAAC;;IAEtB,IAAII,GAAG;IACPf,QAAQ,GAAG,IAAI;IACfH,WAAW,GAAG,IAAImB,IAAI,EAAE,CAACC,OAAO,EAAE,GAAGrB,SAAS;IAC9C,IAAGsB,IAAI,CAACC,GAAG,CAACL,EAAE,CAAC,IAAIR,MAAC,CAACG,SAAS,CAACW,aAAa,IAAIvB,WAAW,IAAIS,MAAC,CAACG,SAAS,CAACY,aAAa,EAAE;MACxFN,GAAG,GAAGD,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO;;;;;IAKjC,IAAGC,GAAG,EAAE;MACNb,CAAC,CAACQ,cAAc,EAAE;MAClBT,UAAU,CAACqB,KAAK,CAAC,IAAI,EAAEC,SAAS,CAAC;MACjCjB,MAAC,CAAC,IAAI,CAAC,CACJE,OAAO,CAACF,MAAC,CAACC,KAAK,CAAC,OAAO,EAAEiB,MAAM,CAACC,MAAM,CAAC,EAAE,EAAEvB,CAAC,CAAC,CAAC,EAAEa,GAAG,CAAC,CACpDP,OAAO,CAACF,MAAC,CAACC,KAAK,CAAE,QAAOQ,GAAI,EAAC,EAAES,MAAM,CAACC,MAAM,CAAC,EAAE,EAAEvB,CAAC,CAAC,CAAC,CAAC;;;;AAM9D,SAASwB,YAAYA,CAACxB,CAAC,EAAE;EAEvB,IAAIA,CAAC,CAACU,OAAO,CAACe,MAAM,KAAK,CAAC,EAAE;IAC1BhC,SAAS,GAAGO,CAAC,CAACU,OAAO,CAAC,CAAC,CAAC,CAACC,KAAK;IAC9Bf,UAAU,GAAGI,CAAC;IACdH,QAAQ,GAAG,IAAI;IACfC,QAAQ,GAAG,KAAK;IAChBJ,SAAS,GAAG,IAAIoB,IAAI,EAAE,CAACC,OAAO,EAAE;IAChC,IAAI,CAACW,gBAAgB,CAAC,WAAW,EAAExB,WAAW,EAAE;MAAEyB,OAAO,EAAG,IAAI,KAAKvB,MAAC,CAACG,SAAS,CAACC;KAAgB,CAAC;IAClG,IAAI,CAACkB,gBAAgB,CAAC,UAAU,EAAE3B,UAAU,EAAE,KAAK,CAAC;;;AAIxD,SAAS6B,IAAIA,GAAG;EACd,IAAI,CAACF,gBAAgB,IAAI,IAAI,CAACA,gBAAgB,CAAC,YAAY,EAAEF,YAAY,EAAE;IAAEG,OAAO,EAAG;GAAM,CAAC;;;;;;;AAOhG,MAAME,SAAS,CAAC;EACdC,WAAWA,GAAG;IACZ,IAAI,CAACC,OAAO,GAAG,OAAO;IACtB,IAAI,CAACC,OAAO,GAAG,cAAc,IAAIC,QAAQ,CAACC,eAAe;IACzD,IAAI,CAAC1B,cAAc,GAAG,KAAK;IAC3B,IAAI,CAACU,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,aAAa,GAAG,GAAG;IACxB,IAAI,CAACgB,KAAK,EAAE;;EAGdA,KAAKA,GAAG;IACN/B,MAAC,CAACgC,KAAK,CAACC,OAAO,CAACC,KAAK,GAAG;MAAEC,KAAK,EAAEX;KAAM;IACvCxB,MAAC,CAACgC,KAAK,CAACC,OAAO,CAACG,GAAG,GAAG;MAAED,KAAK,EAAEX;KAAM;IAErCxB,MAAC,CAACqC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;MAClDrC,MAAC,CAACgC,KAAK,CAACC,OAAO,CAAE,QAAO,IAAK,EAAC,CAAC,GAAG;QAAEE,KAAK,EAAE,YAAU;UACnDnC,MAAC,CAAC,IAAI,CAAC,CAACsC,EAAE,CAAC,OAAO,EAAEtC,MAAC,CAACuC,IAAI,CAAC;;OAC1B;KACJ,CAAC;;;;;;;;;;;AAWNnD,KAAK,CAACoD,cAAc,GAAG,YAAW;EAChCxC,MAAC,CAACG,SAAS,GAAG,IAAIsB,SAAS,CAACzB,MAAC,CAAC;CAC/B;;;;;AAKDZ,KAAK,CAACqD,iBAAiB,GAAG,YAAW;EACnCzC,MAAC,CAAC0C,EAAE,CAACC,QAAQ,GAAG,YAAU;IACxB,IAAI,CAACN,IAAI,CAAC,UAASO,CAAC,EAAEC,EAAE,EAAC;MACvB7C,MAAC,CAAC6C,EAAE,CAAC,CAACC,IAAI,CAAC,2CAA2C,EAAE,UAASd,KAAK,EAAG;;;QAGvEe,WAAW,CAACf,KAAK,CAAC;OACnB,CAAC;KACH,CAAC;IAEF,IAAIe,WAAW,GAAG,UAASf,KAAK,EAAE;MAChC,IAAI1B,OAAO,GAAG0B,KAAK,CAACgB,cAAc;QAC9BC,KAAK,GAAG3C,OAAO,CAAC,CAAC,CAAC;QAClB4C,UAAU,GAAG;UACXC,UAAU,EAAE,WAAW;UACvBC,SAAS,EAAE,WAAW;UACtBC,QAAQ,EAAE;SACX;QACDC,IAAI,GAAGJ,UAAU,CAAClB,KAAK,CAACsB,IAAI,CAAC;QAC7BC,cAAc;MAGlB,IAAG,YAAY,IAAIC,MAAM,IAAI,OAAOA,MAAM,CAACC,UAAU,KAAK,UAAU,EAAE;QACpEF,cAAc,GAAG,IAAIC,MAAM,CAACC,UAAU,CAACH,IAAI,EAAE;UAC3C,SAAS,EAAE,IAAI;UACf,YAAY,EAAE,IAAI;UAClB,SAAS,EAAEL,KAAK,CAACS,OAAO;UACxB,SAAS,EAAET,KAAK,CAACU,OAAO;UACxB,SAAS,EAAEV,KAAK,CAACW,OAAO;UACxB,SAAS,EAAEX,KAAK,CAACY;SAClB,CAAC;OACH,MAAM;QACLN,cAAc,GAAG1B,QAAQ,CAACiC,WAAW,CAAC,YAAY,CAAC;QACnDP,cAAc,CAACQ,cAAc,CAACT,IAAI,EAAE,IAAI,EAAE,IAAI,EAAEE,MAAM,EAAE,CAAC,EAAEP,KAAK,CAACS,OAAO,EAAET,KAAK,CAACU,OAAO,EAAEV,KAAK,CAACW,OAAO,EAAEX,KAAK,CAACY,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,WAAU,IAAI,CAAC;;MAErKZ,KAAK,CAACe,MAAM,CAACC,aAAa,CAACV,cAAc,CAAC;KAC3C;GACF;CACF;AAEDnE,KAAK,CAACoC,IAAI,GAAG,YAAY;EACvB,IAAG,OAAOxB,MAAC,CAACG,SAAU,KAAK,WAAW,EAAE;IACtCf,KAAK,CAACoD,cAAc,CAACxC,MAAC,CAAC;IACvBZ,KAAK,CAACqD,iBAAiB,CAACzC,MAAC,CAAC;;CAE7B;;;;"}