resources/assets/js/utils/$.ts

Summary

Maintainability
A
0 mins
Test Coverage
/**
 * A utility that aims to replace jQuery for the most basic DOM methods.
 */
export const $ = {
  scrollTo (el: Element, to: number, duration: number, cb?: Closure) {
    if (duration <= 0 || !el) {
      return
    }

    const difference = to - el.scrollTop
    const perTick = difference / duration * 10

    window.setTimeout(() => {
      el.scrollTop = el.scrollTop + perTick

      if (el.scrollTop === to) {
        cb && cb()
        return
      }

      this.scrollTo(el, to, duration - 10)
    }, 10)
  }
}