vue-easy-lightbox
Version:
A Vue.js 3.0 image lightbox component with Zoom / Drag / Rotate / Switch
24 lines (18 loc) • 633 B
text/typescript
import { inBrowser } from './index'
const root = inBrowser ? window : global
let prev = Date.now()
function rafPolyfill(fn: FrameRequestCallback): number {
const curr = Date.now()
const ms = Math.max(0, 16 - (curr - prev))
const id = setTimeout(fn, ms)
prev = curr + ms
return id
}
export function raf(fn: FrameRequestCallback): number {
const requestAnimationFrame = root.requestAnimationFrame || rafPolyfill
return requestAnimationFrame.call(root, fn)
}
export function cancelRaf(id: number) {
const cancelAnimationFrame = root.cancelAnimationFrame || root.clearTimeout
cancelAnimationFrame.call(root, id)
}