UNPKG

web-portals

Version:

web-portals

30 lines (28 loc) 1.13 kB
const getTimerHandler = (handler: TimerHandler, moduleWindow: Window) => { return (..._args: any[]) => { if (moduleWindow['moduleVisibilityState'] === 'visible') { if (typeof handler === 'function') { handler(..._args) } else if (typeof handler === 'string') { const evalHander = new moduleWindow['Function'](`return ${handler}`) evalHander(..._args) } } } } export const smartSetTimeout = (moduleWindow: Window) => { const realSetTimeout = moduleWindow.setTimeout moduleWindow.setInterval = (handler: TimerHandler, timeout?: number | undefined, ...args: any[]) => { const fn = getTimerHandler(handler, moduleWindow) const intervalId = realSetTimeout(fn, timeout, ...args) return intervalId } } export const smartSetInterval = (moduleWindow: Window) => { const realSetInterval = moduleWindow.setInterval moduleWindow.setInterval = (handler: TimerHandler, timeout?: number | undefined, ...args: any[]) => { const fn = getTimerHandler(handler, moduleWindow) const intervalId = realSetInterval(fn, timeout, ...args) return intervalId } }