UNPKG

vexip-ui

Version:

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

1 lines 2.41 kB
{"version":3,"file":"helper.cjs","sources":["../../../components/native-scroll/helper.ts"],"sourcesContent":["interface ScrollElement {\n scrollTo(x: number, y: number): void,\n [prop: string]: any,\n}\n\nexport function animateScrollTo(options: {\n el: ScrollElement,\n xFrom?: number,\n xTo?: number,\n yFrom?: number,\n yTo?: number,\n duration?: number,\n callback?: null | (() => any),\n}): void {\n const { el, xFrom = 0, xTo = 0, yFrom = 0, yTo = 0, duration = 500, callback = null } = options\n\n if (!el) return\n\n const end = () => {\n typeof callback === 'function' && callback()\n }\n\n if (duration <= 0) {\n el.scrollTo(xTo, yTo)\n end()\n return\n }\n\n const xDistance = xTo - xFrom\n const yDistance = yTo - yFrom\n\n if (!xDistance && !yDistance) {\n end()\n return\n }\n\n const xStep = Math.ceil((xDistance / duration) * 16)\n const yStep = Math.ceil((yDistance / duration) * 16)\n\n let currentX = xFrom\n let currentY = yFrom\n\n const scroll = () => {\n currentX += xStep\n currentY += yStep\n\n if (xDistance && (xTo - currentX) / xDistance <= 0) {\n currentX = xTo\n }\n\n if (yDistance && (yTo - currentY) / yDistance <= 0) {\n currentY = yTo\n }\n\n el.scrollTo(currentX, currentY)\n\n if ((!xDistance || currentX === xTo) && (!yDistance || currentY === yTo)) {\n end()\n } else {\n requestAnimationFrame(scroll)\n }\n }\n\n scroll()\n}\n"],"names":["animateScrollTo","options","el","xFrom","xTo","yFrom","yTo","duration","callback","end","xDistance","yDistance","xStep","yStep","currentX","currentY","scroll"],"mappings":"gFAKO,SAASA,EAAgBC,EAQvB,CACP,KAAM,CAAE,GAAAC,EAAI,MAAAC,EAAQ,EAAG,IAAAC,EAAM,EAAG,MAAAC,EAAQ,EAAG,IAAAC,EAAM,EAAG,SAAAC,EAAW,IAAK,SAAAC,EAAW,MAASP,EAExF,GAAI,CAACC,EAAI,OAET,MAAMO,EAAM,IAAM,CACT,OAAAD,GAAa,YAAcA,EAAS,CAC7C,EAEA,GAAID,GAAY,EAAG,CACdL,EAAA,SAASE,EAAKE,CAAG,EAChBG,EAAA,EACJ,MAAA,CAGF,MAAMC,EAAYN,EAAMD,EAClBQ,EAAYL,EAAMD,EAEpB,GAAA,CAACK,GAAa,CAACC,EAAW,CACxBF,EAAA,EACJ,MAAA,CAGF,MAAMG,EAAQ,KAAK,KAAMF,EAAYH,EAAY,EAAE,EAC7CM,EAAQ,KAAK,KAAMF,EAAYJ,EAAY,EAAE,EAEnD,IAAIO,EAAWX,EACXY,EAAWV,EAEf,MAAMW,EAAS,IAAM,CACPF,GAAAF,EACAG,GAAAF,EAERH,IAAcN,EAAMU,GAAYJ,GAAa,IACpCI,EAAAV,GAGTO,IAAcL,EAAMS,GAAYJ,GAAa,IACpCI,EAAAT,GAGVJ,EAAA,SAASY,EAAUC,CAAQ,GAEzB,CAACL,GAAaI,IAAaV,KAAS,CAACO,GAAaI,IAAaT,GAC9DG,EAAA,EAEJ,sBAAsBO,CAAM,CAEhC,EAEOA,EAAA,CACT"}