{"version":3,"sources":["webpack:///../../../src/directives/touch/index.ts"],"names":["handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","Math","abs","left","right","up","down","touchstart","event","touch","changedTouches","clientX","clientY","start","Object","assign","touchend","end","touchmove","touchmoveX","touchmoveY","move","createHandlers","value","e","inserted","el","binding","vnode","target","parent","parentElement","options","passive","handlers","_touchHandlers","context","_uid","keys","forEach","eventName","addEventListener","unbind","removeEventListener","Touch"],"mappings":"gHACA,gBAaA,MAAMA,EAAiBC,IACrB,MAAM,YAAEC,EAAF,UAAeC,EAAf,YAA0BC,EAA1B,UAAuCC,GAAcJ,EACrDK,EAAW,GACXC,EAAc,GACpBN,EAAQO,QAAUL,EAAYD,EAC9BD,EAAQQ,QAAUJ,EAAYD,EAE1BM,KAAKC,IAAIV,EAAQQ,SAAWH,EAAWI,KAAKC,IAAIV,EAAQO,WAC1DP,EAAQW,MAAST,EAAYD,EAAcK,GAAgBN,EAAQW,KAAKX,GACxEA,EAAQY,OAAUV,EAAYD,EAAcK,GAAgBN,EAAQY,MAAMZ,IAGxES,KAAKC,IAAIV,EAAQO,SAAWF,EAAWI,KAAKC,IAAIV,EAAQQ,WAC1DR,EAAQa,IAAOT,EAAYD,EAAcG,GAAgBN,EAAQa,GAAGb,GACpEA,EAAQc,MAASV,EAAYD,EAAcG,GAAgBN,EAAQc,KAAKd,KAI5E,SAASe,EAAYC,EAAmBhB,GACtC,MAAMiB,EAAQD,EAAME,eAAe,GACnClB,EAAQC,YAAcgB,EAAME,QAC5BnB,EAAQG,YAAcc,EAAMG,QAE5BpB,EAAQqB,OACNrB,EAAQqB,MAAMC,OAAOC,OAAOP,EAAOhB,IAGvC,SAASwB,EAAUR,EAAmBhB,GACpC,MAAMiB,EAAQD,EAAME,eAAe,GACnClB,EAAQE,UAAYe,EAAME,QAC1BnB,EAAQI,UAAYa,EAAMG,QAE1BpB,EAAQyB,KACNzB,EAAQyB,IAAIH,OAAOC,OAAOP,EAAOhB,IAEnCD,EAAcC,GAGhB,SAAS0B,EAAWV,EAAmBhB,GACrC,MAAMiB,EAAQD,EAAME,eAAe,GACnClB,EAAQ2B,WAAaV,EAAME,QAC3BnB,EAAQ4B,WAAaX,EAAMG,QAE3BpB,EAAQ6B,MAAQ7B,EAAQ6B,KAAKP,OAAOC,OAAOP,EAAOhB,IAGpD,SAAS8B,EAAgBC,GACvB,MAAM/B,EAAU,CACdC,YAAa,EACbE,YAAa,EACbD,UAAW,EACXE,UAAW,EACXuB,WAAY,EACZC,WAAY,EACZrB,QAAS,EACTC,QAAS,EACTG,KAAMoB,EAAMpB,KACZC,MAAOmB,EAAMnB,MACbC,GAAIkB,EAAMlB,GACVC,KAAMiB,EAAMjB,KACZO,MAAOU,EAAMV,MACbQ,KAAME,EAAMF,KACZJ,IAAKM,EAAMN,KAGb,MAAO,CACLV,WAAaiB,GAAkBjB,EAAWiB,EAAGhC,GAC7CwB,SAAWQ,GAAkBR,EAASQ,EAAGhC,GACzC0B,UAAYM,GAAkBN,EAAUM,EAAGhC,IAI/C,SAASiC,EAAUC,EAAiBC,EAA8BC,GAChE,MAAML,EAAQI,EAAQJ,MAChBM,EAASN,EAAMO,OAASJ,EAAGK,cAAgBL,EAC3CM,EAAUT,EAAMS,SAAW,CAAEC,SAAS,GAG5C,IAAKJ,EAAQ,OAEb,MAAMK,EAAWZ,EAAeK,EAAQJ,OACxCM,EAAOM,eAAiBrB,OAAOe,EAAOM,gBACtCN,EAAOM,eAAgBP,EAAMQ,QAASC,MAAQH,EAE9CI,eAAKJ,GAAUK,QAAQC,IACrBX,EAAOY,iBAAiBD,EAAWN,EAASM,GAA6BR,KAI7E,SAASU,EAAQhB,EAAiBC,EAA8BC,GAC9D,MAAMC,EAASF,EAAQJ,MAAOO,OAASJ,EAAGK,cAAgBL,EAC1D,IAAKG,IAAWA,EAAOM,eAAgB,OAEvC,MAAMD,EAAWL,EAAOM,eAAeP,EAAMQ,QAASC,MACtDC,eAAKJ,GAAUK,QAAQC,IACrBX,EAAOc,oBAAoBH,EAAWN,EAASM,aAE1CX,EAAOM,eAAeP,EAAMQ,QAASC,MAGvC,MAAMO,EAAQ,CACnBnB,WACAiB,UAGaE","file":"js/chunk-2d216db0.150dfe54.js","sourcesContent":["import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n touchstart: (e: TouchEvent) => void\n touchend: (e: TouchEvent) => void\n touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n const dirRatio = 0.5\n const minDistance = 16\n wrapper.offsetX = touchendX - touchstartX\n wrapper.offsetY = touchendY - touchstartY\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchstartX = touch.clientX\n wrapper.touchstartY = touch.clientY\n\n wrapper.start &&\n wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchendX = touch.clientX\n wrapper.touchendY = touch.clientY\n\n wrapper.end &&\n wrapper.end(Object.assign(event, wrapper))\n\n handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n const touch = event.changedTouches[0]\n wrapper.touchmoveX = touch.clientX\n wrapper.touchmoveY = touch.clientY\n\n wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end,\n }\n\n return {\n touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n touchend: (e: TouchEvent) => touchend(e, wrapper),\n touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const value = binding.value!\n const target = value.parent ? el.parentElement : el\n const options = value.options || { passive: true }\n\n // Needed to pass unit tests\n if (!target) return\n\n const handlers = createHandlers(binding.value!)\n target._touchHandlers = Object(target._touchHandlers)\n target._touchHandlers![vnode.context!._uid] = handlers\n\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n const target = binding.value!.parent ? el.parentElement : el\n if (!target || !target._touchHandlers) return\n\n const handlers = target._touchHandlers[vnode.context!._uid]\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName])\n })\n delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n inserted,\n unbind,\n}\n\nexport default Touch\n"],"sourceRoot":""}