2023-12-19 02:24:19 +03:00
|
|
|
const callbacks = new Set<() => void>()
|
|
|
|
|
|
|
|
let registered = false
|
|
|
|
|
|
|
|
export function beforeExit(fn: () => void): () => void {
|
2024-03-04 06:32:54 +03:00
|
|
|
if (typeof window === 'undefined') {
|
|
|
|
return () => {}
|
|
|
|
}
|
2023-12-19 02:24:19 +03:00
|
|
|
if (!registered) {
|
|
|
|
registered = true
|
|
|
|
|
|
|
|
window.addEventListener('beforeunload', () => {
|
|
|
|
for (const callback of callbacks) {
|
|
|
|
callback()
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
callbacks.add(fn)
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
callbacks.delete(fn)
|
|
|
|
}
|
|
|
|
}
|