@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 2.58 kB
Source Map (JSON)
{"version":3,"file":"helper.mjs","sources":["../../../components/native-scroll/helper.ts"],"sourcesContent":["interface ScrollElement {\r\n scrollTo(x: number, y: number): void,\r\n [prop: string]: any,\r\n}\r\n\r\nexport function animateScrollTo(options: {\r\n el: ScrollElement,\r\n xFrom?: number,\r\n xTo?: number,\r\n yFrom?: number,\r\n yTo?: number,\r\n duration?: number,\r\n callback?: null | (() => any),\r\n}): void {\r\n const { el, xFrom = 0, xTo = 0, yFrom = 0, yTo = 0, duration = 500, callback = null } = options\r\n\r\n if (!el) return\r\n\r\n const end = () => {\r\n typeof callback === 'function' && callback()\r\n }\r\n\r\n if (duration <= 0) {\r\n el.scrollTo(xTo, yTo)\r\n end()\r\n return\r\n }\r\n\r\n const xDistance = xTo - xFrom\r\n const yDistance = yTo - yFrom\r\n\r\n if (!xDistance && !yDistance) {\r\n end()\r\n return\r\n }\r\n\r\n const xStep = Math.ceil((xDistance / duration) * 16)\r\n const yStep = Math.ceil((yDistance / duration) * 16)\r\n\r\n let currentX = xFrom\r\n let currentY = yFrom\r\n\r\n const scroll = () => {\r\n currentX += xStep\r\n currentY += yStep\r\n\r\n if (xDistance && (xTo - currentX) / xDistance <= 0) {\r\n currentX = xTo\r\n }\r\n\r\n if (yDistance && (yTo - currentY) / yDistance <= 0) {\r\n currentY = yTo\r\n }\r\n\r\n el.scrollTo(currentX, currentY)\r\n\r\n if ((!xDistance || currentX === xTo) && (!yDistance || currentY === yTo)) {\r\n end()\r\n } else {\r\n requestAnimationFrame(scroll)\r\n }\r\n }\r\n\r\n scroll()\r\n}\r\n"],"names":["animateScrollTo","options","el","xFrom","xTo","yFrom","yTo","duration","callback","end","xDistance","yDistance","xStep","yStep","currentX","currentY","scroll"],"mappings":"AAKO,SAASA,EAAgBC,GAQvB;AACP,QAAM,EAAE,IAAAC,GAAI,OAAAC,IAAQ,GAAG,KAAAC,IAAM,GAAG,OAAAC,IAAQ,GAAG,KAAAC,IAAM,GAAG,UAAAC,IAAW,KAAK,UAAAC,IAAW,SAASP;AAExF,MAAI,CAACC,EAAI;AAET,QAAMO,IAAM,MAAM;AACT,WAAAD,KAAa,cAAcA,EAAS;AAAA,EAC7C;AAEA,MAAID,KAAY,GAAG;AACd,IAAAL,EAAA,SAASE,GAAKE,CAAG,GAChBG,EAAA;AACJ;AAAA,EAAA;AAGF,QAAMC,IAAYN,IAAMD,GAClBQ,IAAYL,IAAMD;AAEpB,MAAA,CAACK,KAAa,CAACC,GAAW;AACxB,IAAAF,EAAA;AACJ;AAAA,EAAA;AAGF,QAAMG,IAAQ,KAAK,KAAMF,IAAYH,IAAY,EAAE,GAC7CM,IAAQ,KAAK,KAAMF,IAAYJ,IAAY,EAAE;AAEnD,MAAIO,IAAWX,GACXY,IAAWV;AAEf,QAAMW,IAAS,MAAM;AACP,IAAAF,KAAAF,GACAG,KAAAF,GAERH,MAAcN,IAAMU,KAAYJ,KAAa,MACpCI,IAAAV,IAGTO,MAAcL,IAAMS,KAAYJ,KAAa,MACpCI,IAAAT,IAGVJ,EAAA,SAASY,GAAUC,CAAQ,IAEzB,CAACL,KAAaI,MAAaV,OAAS,CAACO,KAAaI,MAAaT,KAC9DG,EAAA,IAEJ,sBAAsBO,CAAM;AAAA,EAEhC;AAEO,EAAAA,EAAA;AACT;"}