Skip to content

Commit 8576e81

Browse files
author
Sebastian Flick
committed
add intersectionobserver to set the currentVerse
not working properly atm
1 parent 4512c67 commit 8576e81

File tree

1 file changed

+20
-2
lines changed
  • src/routes/textzeugen/[[sigla]]/[[thirties]]/[[verse]]

1 file changed

+20
-2
lines changed

src/routes/textzeugen/[[sigla]]/[[thirties]]/[[verse]]/+page.svelte

+20-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
<script>
22
import { assets } from '$app/paths';
33
import TextzeugenSelector from '$lib/components/TextzeugenSelector.svelte';
4-
import { tick } from 'svelte';
54
65
/** @type {import('./$types').PageData} */
76
export let data;
@@ -132,13 +131,32 @@
132131
verse.scrollIntoView({ behavior: 'smooth', block: 'center' });
133132
verse.parentElement.classList.add('animate-bounce', 'once');
134133
134+
// add intersection observer that sets the currentVerse to the .verse that is currently in view
135+
const observer = new IntersectionObserver(
136+
(entries) => {
137+
entries.forEach((entry) => {
138+
if (entry.isIntersecting) {
139+
currentVerse = entry.target.querySelector('.verse').dataset.verse;
140+
}
141+
});
142+
},
143+
{
144+
root: node,
145+
rootMargin: '0px',
146+
threshold: 0.5
147+
}
148+
);
149+
node.querySelectorAll('.line').forEach((line) => observer.observe(line));
150+
135151
return {
136152
update(targetVerse) {
137153
const verse = node.querySelector(`[data-verse="${targetVerse}"]`);
138154
verse.scrollIntoView({ behavior: 'smooth', block: 'center' });
139155
verse.parentElement.classList.add('animate-bounce', 'once');
140156
},
141-
destroy() {}
157+
destroy() {
158+
observer.disconnect();
159+
}
142160
};
143161
};
144162
let currentVerse = `${data.thirties}.${data.verse}`;

0 commit comments

Comments
 (0)