File tree Expand file tree Collapse file tree 1 file changed +13
-17
lines changed Expand file tree Collapse file tree 1 file changed +13
-17
lines changed Original file line number Diff line number Diff line change 1
1
<script lang =" ts" >
2
- import { run } from " svelte/legacy" ;
3
-
4
2
import { fade } from " svelte/transition" ;
5
- import { onDestroy } from " svelte" ;
6
3
import IconChevron from " ./icons/IconChevron.svelte" ;
7
4
8
- let visible = $state (false );
9
5
interface Props {
10
6
scrollNode: HTMLElement ;
11
7
class? : string ;
12
8
}
13
9
14
10
let { scrollNode, class : className = " " }: Props = $props ();
11
+
12
+ let visible = $state (false );
15
13
let observer: ResizeObserver | null = $state (null );
16
14
17
15
function updateVisibility() {
24
22
observer ?.disconnect ();
25
23
scrollNode ?.removeEventListener (" scroll" , updateVisibility );
26
24
}
27
-
28
- onDestroy (destroy );
29
- run (() => {
30
- if (scrollNode ) {
31
- destroy ();
32
-
33
- if (window .ResizeObserver ) {
34
- observer = new ResizeObserver (() => {
35
- updateVisibility ();
36
- });
37
- observer .observe (scrollNode );
25
+ const cleanup = $effect .root (() => {
26
+ $effect (() => {
27
+ if (scrollNode ) {
28
+ if (window .ResizeObserver ) {
29
+ observer = new ResizeObserver (() => updateVisibility ());
30
+ observer .observe (scrollNode );
31
+ cleanup ();
32
+ }
33
+ scrollNode ?.addEventListener (" scroll" , updateVisibility );
38
34
}
39
- scrollNode . addEventListener ( " scroll " , updateVisibility );
40
- }
35
+ } );
36
+ return () => destroy ();
41
37
});
42
38
</script >
43
39
You can’t perform that action at this time.
0 commit comments