{"version":3,"file":"scrollTo.mjs","sources":["../../../../package/utils/scrollTo.ts"],"sourcesContent":["const easeInOutQuad = (t: number, b: number, c: number, d: number) => {\n  t /= d / 2;\n  if (t < 1) {\n    return (c / 2) * t * t + b;\n  }\n  t--;\n  return (-c / 2) * (t * (t - 2) - 1) + b;\n};\n\n// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts\nconst requestAnimFrame = (function () {\n  return (\n    window.requestAnimationFrame ||\n    (window as any).webkitRequestAnimationFrame ||\n    (window as any).mozRequestAnimationFrame ||\n    function (callback) {\n      window.setTimeout(callback, 1000 / 60);\n    }\n  );\n})();\n\n/**\n * Because it's so fucking difficult to detect the scrolling element, just move them all\n * @param {number} amount\n */\nconst move = (amount: number) => {\n  document.documentElement.scrollTop = amount;\n  (document.body.parentNode as HTMLElement).scrollTop = amount;\n  document.body.scrollTop = amount;\n};\n\nconst position = () => {\n  return (\n    document.documentElement.scrollTop ||\n    (document.body.parentNode as HTMLElement).scrollTop ||\n    document.body.scrollTop\n  );\n};\n\n/**\n * @param {number} to\n * @param {number} duration\n * @param {Function} callback\n */\nexport const scrollTo = (to: number, duration: number, callback?: any) => {\n  const start = position();\n  const change = to - start;\n  const increment = 20;\n  let currentTime = 0;\n  duration = typeof duration === \"undefined\" ? 500 : duration;\n  const animateScroll = function () {\n    // increment the time\n    currentTime += increment;\n    // find the value with the quadratic in-out easing function\n    const val = easeInOutQuad(currentTime, start, change, duration);\n    // move the document.body\n    move(val);\n    // do the animation unless its over\n    if (currentTime < duration) {\n      requestAnimFrame(animateScroll);\n    } else {\n      if (callback && typeof callback === \"function\") {\n        // the animation is done so lets callback\n        callback();\n      }\n    }\n  };\n  animateScroll();\n};\n"],"names":[],"mappings":"AAAA,MAAM,aAAgB,GAAA,CAAC,CAAW,EAAA,CAAA,EAAW,GAAW,CAAc,KAAA;AACpE,EAAA,CAAA,IAAK,CAAI,GAAA,CAAA,CAAA;AACT,EAAA,IAAI,IAAI,CAAG,EAAA;AACT,IAAQ,OAAA,CAAA,GAAI,CAAK,GAAA,CAAA,GAAI,CAAI,GAAA,CAAA,CAAA;AAAA,GAC3B;AACA,EAAA,CAAA,EAAA,CAAA;AACA,EAAA,OAAQ,CAAC,CAAI,GAAA,CAAA,IAAM,CAAK,IAAA,CAAA,GAAI,KAAK,CAAK,CAAA,GAAA,CAAA,CAAA;AACxC,CAAA,CAAA;AAGA,MAAM,mBAAoB,WAAY;AACpC,EAAA,OACE,OAAO,qBACN,IAAA,MAAA,CAAe,+BACf,MAAe,CAAA,wBAAA,IAChB,SAAU,QAAU,EAAA;AAClB,IAAO,MAAA,CAAA,UAAA,CAAW,QAAU,EAAA,GAAA,GAAO,EAAE,CAAA,CAAA;AAAA,GACvC,CAAA;AAEJ,CAAG,EAAA,CAAA;AAMH,MAAM,IAAA,GAAO,CAAC,MAAmB,KAAA;AAC/B,EAAA,QAAA,CAAS,gBAAgB,SAAY,GAAA,MAAA,CAAA;AACrC,EAAC,QAAA,CAAS,IAAK,CAAA,UAAA,CAA2B,SAAY,GAAA,MAAA,CAAA;AACtD,EAAA,QAAA,CAAS,KAAK,SAAY,GAAA,MAAA,CAAA;AAC5B,CAAA,CAAA;AAEA,MAAM,WAAW,MAAM;AACrB,EACE,OAAA,QAAA,CAAS,gBAAgB,SACxB,IAAA,QAAA,CAAS,KAAK,UAA2B,CAAA,SAAA,IAC1C,SAAS,IAAK,CAAA,SAAA,CAAA;AAElB,CAAA,CAAA;AAOO,MAAM,QAAW,GAAA,CAAC,EAAY,EAAA,QAAA,EAAkB,QAAmB,KAAA;AACxE,EAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AACvB,EAAA,MAAM,SAAS,EAAK,GAAA,KAAA,CAAA;AACpB,EAAA,MAAM,SAAY,GAAA,EAAA,CAAA;AAClB,EAAA,IAAI,WAAc,GAAA,CAAA,CAAA;AAClB,EAAW,QAAA,GAAA,OAAO,QAAa,KAAA,WAAA,GAAc,GAAM,GAAA,QAAA,CAAA;AACnD,EAAA,MAAM,gBAAgB,WAAY;AAEhC,IAAe,WAAA,IAAA,SAAA,CAAA;AAEf,IAAA,MAAM,GAAM,GAAA,aAAA,CAAc,WAAa,EAAA,KAAA,EAAO,QAAQ,QAAQ,CAAA,CAAA;AAE9D,IAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAER,IAAA,IAAI,cAAc,QAAU,EAAA;AAC1B,MAAA,gBAAA,CAAiB,aAAa,CAAA,CAAA;AAAA,KACzB,MAAA;AACL,MAAI,IAAA,QAAA,IAAY,OAAO,QAAA,KAAa,UAAY,EAAA;AAE9C,QAAS,QAAA,EAAA,CAAA;AAAA,OACX;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAc,aAAA,EAAA,CAAA;AAChB;;;;"}