UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 1.56 kB
{"version":3,"file":"helper.cjs","sources":["../../../components/anchor/helper.ts"],"sourcesContent":["export interface ScrollElement {\n scrollTo(x: number, y: number): void,\n [prop: string]: any,\n}\n\nexport function animateScrollTo(\n el: ScrollElement,\n from: number,\n to: number,\n duration: number,\n callback: unknown,\n): void {\n const distance = to - from\n const step = Math.ceil((distance / duration) * 16)\n\n const end = () => {\n typeof callback === 'function' && callback()\n }\n\n if (!distance) {\n end()\n return\n }\n\n if (duration <= 0) {\n el.scrollTo(0, to)\n end()\n return\n }\n\n let current = from\n\n const scroll = () => {\n if (!distance) return\n\n current = current + step\n\n if ((to - current) / distance <= 0) {\n current = to\n }\n\n el.scrollTo(0, current)\n\n if (current === to) {\n end()\n } else {\n requestAnimationFrame(scroll)\n }\n }\n\n scroll()\n}\n"],"names":["animateScrollTo","el","from","to","duration","callback","distance","step","end","current","scroll"],"mappings":"gFAKO,SAASA,EACdC,EACAC,EACAC,EACAC,EACAC,EACM,CACN,MAAMC,EAAWH,EAAKD,EAChBK,EAAO,KAAK,KAAMD,EAAWF,EAAY,EAAE,EAE3CI,EAAM,IAAM,CACT,OAAAH,GAAa,YAAcA,EAAS,CAC7C,EAEA,GAAI,CAACC,EAAU,CACTE,EAAA,EACJ,MAAA,CAGF,GAAIJ,GAAY,EAAG,CACdH,EAAA,SAAS,EAAGE,CAAE,EACbK,EAAA,EACJ,MAAA,CAGF,IAAIC,EAAUP,EAEd,MAAMQ,EAAS,IAAM,CACdJ,IAELG,EAAUA,EAAUF,GAEfJ,EAAKM,GAAWH,GAAY,IACrBG,EAAAN,GAGTF,EAAA,SAAS,EAAGQ,CAAO,EAElBA,IAAYN,EACVK,EAAA,EAEJ,sBAAsBE,CAAM,EAEhC,EAEOA,EAAA,CACT"}