{"version":3,"file":"tabs-touch.mjs","sources":["../../../../../src/components/ivue-tabs/tabs-touch.ts"],"sourcesContent":["import { getCurrentInstance } from 'vue';\r\n\r\nexport default (data: any, container: any, wrapper: any, activeIndex) => {\r\n  const { proxy }: any = getCurrentInstance();\r\n\r\n  // 手势开始\r\n  const onTouchStart = (e) => {\r\n    data.startX = data.scrollOffset + e.touchstartX;\r\n\r\n    container.value.style.transition = 'none';\r\n    container.value.style.willChange = 'transform';\r\n  };\r\n\r\n  // 手势移动\r\n  const onTouchMove = (e: any) => {\r\n    data.scrollOffset = data.startX - e.touchmoveX;\r\n  };\r\n\r\n  // 手势结束\r\n  const onTouchEnd = () => {\r\n    const maxScrollOffset =\r\n      container.value.clientWidth - wrapper.value.clientWidth;\r\n\r\n    container.value.style.transition = '';\r\n    container.value.style.willChange = '';\r\n\r\n    if (data.scrollOffset < 0 || !data.isOverflowing) {\r\n      data.scrollOffset = 0;\r\n    } else if (data.scrollOffset >= maxScrollOffset) {\r\n      data.scrollOffset = maxScrollOffset;\r\n    }\r\n  };\r\n\r\n  // 偏移位置\r\n  const newOffset = (direction: string) => {\r\n    const clientWidth = wrapper.value.clientWidth;\r\n\r\n    if (direction === 'prev') {\r\n      return Math.max(data.scrollOffset - clientWidth, 0);\r\n    } else {\r\n      return Math.min(\r\n        data.scrollOffset + clientWidth,\r\n        container.value.clientWidth - clientWidth\r\n      );\r\n    }\r\n  };\r\n\r\n  // 内容滑动切换.\r\n  const handleSwipeItem = (direction) => {\r\n    // 左\r\n    if (direction === 'next') {\r\n      const index = activeIndex.value + 1;\r\n\r\n      const tab = data.tabs[index];\r\n\r\n      if (tab) {\r\n        proxy.tabNavClick(tab);\r\n      }\r\n    }\r\n\r\n    // 右\r\n    if (direction === 'prev') {\r\n      const index = activeIndex.value - 1;\r\n\r\n      const tab = data.tabs[index];\r\n\r\n      if (tab) {\r\n        proxy.tabNavClick(tab);\r\n      }\r\n    }\r\n  };\r\n\r\n  return {\r\n    onTouchStart,\r\n    onTouchMove,\r\n    onTouchEnd,\r\n    newOffset,\r\n    handleSwipeItem,\r\n  };\r\n};\r\n"],"names":[],"mappings":";;AAEA,gBAAe,CAAC,IAAA,EAAW,SAAgB,EAAA,OAAA,EAAc,WAAgB,KAAA;AACvE,EAAM,MAAA,EAAE,KAAM,EAAA,GAAS,kBAAmB,EAAA,CAAA;AAG1C,EAAM,MAAA,YAAA,GAAe,CAAC,CAAM,KAAA;AAC1B,IAAK,IAAA,CAAA,MAAA,GAAS,IAAK,CAAA,YAAA,GAAe,CAAE,CAAA,WAAA,CAAA;AAEpC,IAAU,SAAA,CAAA,KAAA,CAAM,MAAM,UAAa,GAAA,MAAA,CAAA;AACnC,IAAU,SAAA,CAAA,KAAA,CAAM,MAAM,UAAa,GAAA,WAAA,CAAA;AAAA,GACrC,CAAA;AAGA,EAAM,MAAA,WAAA,GAAc,CAAC,CAAW,KAAA;AAC9B,IAAK,IAAA,CAAA,YAAA,GAAe,IAAK,CAAA,MAAA,GAAS,CAAE,CAAA,UAAA,CAAA;AAAA,GACtC,CAAA;AAGA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,MAAM,eACJ,GAAA,SAAA,CAAU,KAAM,CAAA,WAAA,GAAc,QAAQ,KAAM,CAAA,WAAA,CAAA;AAE9C,IAAU,SAAA,CAAA,KAAA,CAAM,MAAM,UAAa,GAAA,EAAA,CAAA;AACnC,IAAU,SAAA,CAAA,KAAA,CAAM,MAAM,UAAa,GAAA,EAAA,CAAA;AAEnC,IAAA,IAAI,IAAK,CAAA,YAAA,GAAe,CAAK,IAAA,CAAC,KAAK,aAAe,EAAA;AAChD,MAAA,IAAA,CAAK,YAAe,GAAA,CAAA,CAAA;AAAA,KACtB,MAAA,IAAW,IAAK,CAAA,YAAA,IAAgB,eAAiB,EAAA;AAC/C,MAAA,IAAA,CAAK,YAAe,GAAA,eAAA,CAAA;AAAA,KACtB;AAAA,GACF,CAAA;AAGA,EAAM,MAAA,SAAA,GAAY,CAAC,SAAsB,KAAA;AACvC,IAAM,MAAA,WAAA,GAAc,QAAQ,KAAM,CAAA,WAAA,CAAA;AAElC,IAAA,IAAI,cAAc,MAAQ,EAAA;AACxB,MAAA,OAAO,IAAK,CAAA,GAAA,CAAI,IAAK,CAAA,YAAA,GAAe,aAAa,CAAC,CAAA,CAAA;AAAA,KAC7C,MAAA;AACL,MAAA,OAAO,IAAK,CAAA,GAAA;AAAA,QACV,KAAK,YAAe,GAAA,WAAA;AAAA,QACpB,SAAA,CAAU,MAAM,WAAc,GAAA,WAAA;AAAA,OAChC,CAAA;AAAA,KACF;AAAA,GACF,CAAA;AAGA,EAAM,MAAA,eAAA,GAAkB,CAAC,SAAc,KAAA;AAErC,IAAA,IAAI,cAAc,MAAQ,EAAA;AACxB,MAAM,MAAA,KAAA,GAAQ,YAAY,KAAQ,GAAA,CAAA,CAAA;AAElC,MAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,KAAA,CAAA,CAAA;AAEtB,MAAA,IAAI,GAAK,EAAA;AACP,QAAA,KAAA,CAAM,YAAY,GAAG,CAAA,CAAA;AAAA,OACvB;AAAA,KACF;AAGA,IAAA,IAAI,cAAc,MAAQ,EAAA;AACxB,MAAM,MAAA,KAAA,GAAQ,YAAY,KAAQ,GAAA,CAAA,CAAA;AAElC,MAAM,MAAA,GAAA,GAAM,KAAK,IAAK,CAAA,KAAA,CAAA,CAAA;AAEtB,MAAA,IAAI,GAAK,EAAA;AACP,QAAA,KAAA,CAAM,YAAY,GAAG,CAAA,CAAA;AAAA,OACvB;AAAA,KACF;AAAA,GACF,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,YAAA;AAAA,IACA,WAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,GACF,CAAA;AACF,CAAA;;;;"}