{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/use-touch/index.ts"],"sourcesContent":["import { ref } from 'vue'\n\nexport const TAP_OFFSET = 5\n\ntype Direction = '' | 'vertical' | 'horizontal'\n\nfunction getDirection(x: number, y: number) {\n  if (x > y) {\n    return 'horizontal'\n  }\n  if (y > x) {\n    return 'vertical'\n  }\n  return ''\n}\n\nexport function useTouch() {\n  const startX = ref(0)\n  const startY = ref(0)\n  const deltaX = ref(0)\n  const deltaY = ref(0)\n  const offsetX = ref(0)\n  const offsetY = ref(0)\n  const direction = ref<Direction>('')\n  const isTap = ref(true)\n\n  const isVertical = () => direction.value === 'vertical'\n  const isHorizontal = () => direction.value === 'horizontal'\n\n  const reset = () => {\n    deltaX.value = 0\n    deltaY.value = 0\n    offsetX.value = 0\n    offsetY.value = 0\n    direction.value = ''\n    isTap.value = true\n  }\n\n  const start = ((event: TouchEvent) => {\n    reset()\n    startX.value = event.touches[0].clientX\n    startY.value = event.touches[0].clientY\n  }) as EventListener\n\n  const move = ((event: TouchEvent) => {\n    const touch = event.touches[0]\n    // safari back will set clientX to negative number\n    deltaX.value = (touch.clientX < 0 ? 0 : touch.clientX) - startX.value\n    deltaY.value = touch.clientY - startY.value\n    offsetX.value = Math.abs(deltaX.value)\n    offsetY.value = Math.abs(deltaY.value)\n\n    // lock direction when distance is greater than a certain value\n    const LOCK_DIRECTION_DISTANCE = 10\n    if (\n      !direction.value ||\n      (offsetX.value < LOCK_DIRECTION_DISTANCE &&\n        offsetY.value < LOCK_DIRECTION_DISTANCE)\n    ) {\n      direction.value = getDirection(offsetX.value, offsetY.value)\n    }\n\n    if (\n      isTap.value &&\n      (offsetX.value > TAP_OFFSET || offsetY.value > TAP_OFFSET)\n    ) {\n      isTap.value = false\n    }\n  }) as EventListener\n\n  return {\n    move,\n    start,\n    reset,\n    startX,\n    startY,\n    deltaX,\n    deltaY,\n    offsetX,\n    offsetY,\n    direction,\n    isVertical,\n    isHorizontal,\n    isTap,\n  }\n}\n"],"names":[],"mappings":";;AAEO,MAAM,UAAa,GAAA,EAAA;AAI1B,SAAS,YAAA,CAAa,GAAW,CAAW,EAAA;AAC1C,EAAA,IAAI,IAAI,CAAG,EAAA;AACT,IAAO,OAAA,YAAA,CAAA;AAAA,GACT;AACA,EAAA,IAAI,IAAI,CAAG,EAAA;AACT,IAAO,OAAA,UAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,EAAA,CAAA;AACT,CAAA;AAEO,SAAS,QAAW,GAAA;AACzB,EAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AACpB,EAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AACpB,EAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AACpB,EAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AACpB,EAAM,MAAA,OAAA,GAAU,IAAI,CAAC,CAAA,CAAA;AACrB,EAAM,MAAA,OAAA,GAAU,IAAI,CAAC,CAAA,CAAA;AACrB,EAAM,MAAA,SAAA,GAAY,IAAe,EAAE,CAAA,CAAA;AACnC,EAAM,MAAA,KAAA,GAAQ,IAAI,IAAI,CAAA,CAAA;AAEtB,EAAM,MAAA,UAAA,GAAa,MAAM,SAAA,CAAU,KAAU,KAAA,UAAA,CAAA;AAC7C,EAAM,MAAA,YAAA,GAAe,MAAM,SAAA,CAAU,KAAU,KAAA,YAAA,CAAA;AAE/C,EAAA,MAAM,QAAQ,MAAM;AAClB,IAAA,MAAA,CAAO,KAAQ,GAAA,CAAA,CAAA;AACf,IAAA,MAAA,CAAO,KAAQ,GAAA,CAAA,CAAA;AACf,IAAA,OAAA,CAAQ,KAAQ,GAAA,CAAA,CAAA;AAChB,IAAA,OAAA,CAAQ,KAAQ,GAAA,CAAA,CAAA;AAChB,IAAA,SAAA,CAAU,KAAQ,GAAA,EAAA,CAAA;AAClB,IAAA,KAAA,CAAM,KAAQ,GAAA,IAAA,CAAA;AAAA,GAChB,CAAA;AAEA,EAAM,MAAA,KAAA,GAAS,CAAC,KAAsB,KAAA;AACpC,IAAM,KAAA,EAAA,CAAA;AACN,IAAO,MAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,CAAQ,CAAG,CAAA,CAAA,OAAA,CAAA;AAChC,IAAO,MAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,CAAQ,CAAG,CAAA,CAAA,OAAA,CAAA;AAAA,GAClC,CAAA;AAEA,EAAM,MAAA,IAAA,GAAQ,CAAC,KAAsB,KAAA;AACnC,IAAM,MAAA,KAAA,GAAQ,MAAM,OAAQ,CAAA,CAAA,CAAA,CAAA;AAE5B,IAAA,MAAA,CAAO,SAAS,KAAM,CAAA,OAAA,GAAU,IAAI,CAAI,GAAA,KAAA,CAAM,WAAW,MAAO,CAAA,KAAA,CAAA;AAChE,IAAO,MAAA,CAAA,KAAA,GAAQ,KAAM,CAAA,OAAA,GAAU,MAAO,CAAA,KAAA,CAAA;AACtC,IAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AACrC,IAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAK,GAAI,CAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAGrC,IAAA,MAAM,uBAA0B,GAAA,EAAA,CAAA;AAChC,IACE,IAAA,CAAC,UAAU,KACV,IAAA,OAAA,CAAQ,QAAQ,uBACf,IAAA,OAAA,CAAQ,QAAQ,uBAClB,EAAA;AACA,MAAA,SAAA,CAAU,KAAQ,GAAA,YAAA,CAAa,OAAQ,CAAA,KAAA,EAAO,QAAQ,KAAK,CAAA,CAAA;AAAA,KAC7D;AAEA,IAAA,IACE,MAAM,KACL,KAAA,OAAA,CAAQ,QAAQ,UAAc,IAAA,OAAA,CAAQ,QAAQ,UAC/C,CAAA,EAAA;AACA,MAAA,KAAA,CAAM,KAAQ,GAAA,KAAA,CAAA;AAAA,KAChB;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,KAAA;AAAA,GACF,CAAA;AACF;;;;"}