UNPKG

comic-plus

Version:

<p align="center"> <img width="200px" src="./logo.png"/> </p>

45 lines (44 loc) 1.29 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); require("../../../utils/config.js"); require("vue"); const typescript = require("../../../utils/typescript.js"); const client = require("../../../utils/client.js"); function getNextScrollTop(t, b, c, d) { const cc = c - b; t /= d / 2; if (t < 1) { return cc / 2 * t * t * t + b; } return cc / 2 * ((t -= 2) * t * t + 2) + b; } function animateScrollTo(container, from, to, duration) { const startTime = Date.now(); let handle; const scroll = () => { const timestamp = Date.now(); const time = timestamp - startTime; const nst = getNextScrollTop(time > duration ? duration : time, from, to, duration); if (typescript.isWindow(container)) { container.scrollTo(window.pageXOffset, nst); } else { container.scrollTop = nst; } if (time < duration) { handle = client.raf(scroll); } }; scroll(); return () => { handle && client.caf(handle); }; } function elAnimation(el, duration) { const time = 1e3 + (duration ?? 0); el.classList.add("cu-anchor--animation"); setTimeout(() => { el.classList.remove("cu-anchor--animation"); }, time); } exports.animateScrollTo = animateScrollTo; exports.elAnimation = elAnimation;