/** * @description Listen for page hide events, and execute a callback when * such events occur. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event} * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event} */ export const onPageHide = (callback: (event: PageTransitionEvent) => void): void => { window.addEventListener("pagehide", (event: PageTransitionEvent): void => { callback(event) }) } /** * @description Listen for visibility change events, and execute a callback when * such events occur. * * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilitychange_event} */ export const onVisibilityChange = ( callback: (visibilityState: DocumentVisibilityState) => void, ): void => { window.addEventListener("visibilitychange", (): void => { callback(document.visibilityState) }) } /** * @description Listen for visibility change events, and execute a callback when * the page becomes hidden. */ export const onVisibilityChangeToHidden = (callback: () => void): void => { onVisibilityChange((visibilityState) => { if (visibilityState === "hidden") { callback() } }) } /** * @description Listen for visibility change events, and execute a callback when * the page becomes visible. */ export const onVisibilityChangeToVisible = (callback: () => void): void => { onVisibilityChange((visibilityState) => { if (visibilityState === "visible") { callback() } }) }