Skip to content

Commit 53da3a5

Browse files
committed
Refactor visibility to play nice with SSR (#56)
1 parent 4624b35 commit 53da3a5

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/ToastItem.svelte

+12-10
Original file line numberDiff line numberDiff line change
@@ -46,26 +46,28 @@ $: if (item.component) {
4646
componentProps = { ...props, ...(sendIdTo && { [sendIdTo]: item.id }) }
4747
}
4848
49+
const check = (prop, kind = 'undefined') => typeof prop === kind
4950
// `progress` has been renamed to `next`; shim included for backward compatibility, to remove in next major
50-
$: if (typeof item.progress !== 'undefined') {
51+
$: if (!check(item.progress)) {
5152
item.next = item.progress
5253
}
5354
54-
const handler = () => (document.hidden ? pause() : resume())
55-
const listener = (add) => {
56-
const { hidden, addEventListener, removeEventListener } = document
57-
if (typeof hidden === 'undefined') return
55+
let unlisten
56+
const listen = (d = document) => {
57+
if (check(d.hidden)) return
58+
const handler = () => (d.hidden ? pause() : resume())
5859
const name = 'visibilitychange'
59-
add ? addEventListener(name, handler) : removeEventListener(name, handler)
60-
return true
60+
d.addEventListener(name, handler)
61+
unlisten = () => d.removeEventListener(name, handler)
62+
handler()
6163
}
62-
onMount(() => listener(true) && handler())
6364
65+
onMount(listen)
6466
onDestroy(() => {
65-
if (typeof item.onpop === 'function') {
67+
if (check(item.onpop, 'function')) {
6668
item.onpop(item.id)
6769
}
68-
listener(false)
70+
unlisten && unlisten()
6971
})
7072
</script>
7173

0 commit comments

Comments
 (0)