{"version":3,"file":"useScrollTo2.mjs","sources":["../../../../../../packages/hooks/event/useScrollTo.ts"],"sourcesContent":["import { ref, unref } from 'vue'\nimport { isFunction, isUnDef } from '@tav-ui/utils/is'\nexport type DirectionType = 'scrollTop' | 'scrollLeft'\n\nexport interface ScrollToParams {\n  el: any\n  to: number\n  duration?: number\n  direction?: DirectionType\n  callback?: () => any\n}\n\nconst easeInOutQuad = (t: number, b: number, c: number, d: number) => {\n  t /= d / 2\n  if (t < 1) return (c / 2) * t * t + b\n\n  t--\n  return (-c / 2) * (t * (t - 2) - 1) + b\n}\nconst move = (el: HTMLElement, amount: number, direction: DirectionType) => {\n  el[direction] = amount\n}\n\nconst position = (el: HTMLElement, direction: DirectionType) => {\n  return el[direction]\n}\nexport function useScrollTo({\n  el,\n  to,\n  duration = 500,\n  direction = 'scrollTop',\n  callback,\n}: ScrollToParams) {\n  const isActiveRef = ref(false)\n  const start = position(el, direction)\n  const change = to - start\n  const increment = 20\n  let currentTime = 0\n  duration = isUnDef(duration) ? 500 : duration\n\n  const animateScroll = function () {\n    if (!unref(isActiveRef)) return\n\n    currentTime += increment\n    const val = easeInOutQuad(currentTime, start, change, duration)\n    move(el, val, direction)\n    if (currentTime < duration && unref(isActiveRef)) requestAnimationFrame(animateScroll)\n    else if (callback && isFunction(callback)) callback()\n  }\n  const run = () => {\n    isActiveRef.value = true\n    animateScroll()\n  }\n\n  const stop = () => {\n    isActiveRef.value = false\n  }\n\n  return { start: run, stop }\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK;AACtC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,EAAE,IAAI,CAAC,GAAG,CAAC;AACX,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC7B,EAAE,CAAC,EAAE,CAAC;AACN,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC,CAAC;AACF,MAAM,IAAI,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,KAAK;AACxC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;AACzB,CAAC,CAAC;AACF,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,SAAS,KAAK;AACpC,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AACK,SAAS,WAAW,CAAC;AAC5B,EAAE,EAAE;AACJ,EAAE,EAAE;AACJ,EAAE,QAAQ,GAAG,GAAG;AAChB,EAAE,SAAS,GAAG,WAAW;AACzB,EAAE,QAAQ;AACV,CAAC,EAAE;AACH,EAAE,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACjC,EAAE,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;AACxC,EAAE,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,CAAC;AAC5B,EAAE,MAAM,SAAS,GAAG,EAAE,CAAC;AACvB,EAAE,IAAI,WAAW,GAAG,CAAC,CAAC;AACtB,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC;AAChD,EAAE,MAAM,aAAa,GAAG,WAAW;AACnC,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;AAC3B,MAAM,OAAO;AACb,IAAI,WAAW,IAAI,SAAS,CAAC;AAC7B,IAAI,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACpE,IAAI,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AAC7B,IAAI,IAAI,WAAW,GAAG,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC;AACpD,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAC3C,SAAS,IAAI,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC;AAC7C,MAAM,QAAQ,EAAE,CAAC;AACjB,GAAG,CAAC;AACJ,EAAE,MAAM,GAAG,GAAG,MAAM;AACpB,IAAI,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;AAC7B,IAAI,aAAa,EAAE,CAAC;AACpB,GAAG,CAAC;AACJ,EAAE,MAAM,IAAI,GAAG,MAAM;AACrB,IAAI,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;AAC9B,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC9B;;;;"}