vue-admin-core
Version:
A Component Library for Vue 3
1 lines • 3.69 kB
Source Map (JSON)
{"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;;;;"}