diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a534179..1bebfc7 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -35,6 +35,7 @@ src="https://analytics.mifi.holdings/script.js" data-website-id="72ac01ce-e7fc-4582-8593-703f15add8d5" > + {merged.title} diff --git a/static/assets/js/umami-helper.js b/static/assets/js/umami-helper.js new file mode 100644 index 0000000..17c9f14 --- /dev/null +++ b/static/assets/js/umami-helper.js @@ -0,0 +1,28 @@ +// Umami: safe track (no-op if script blocked or not loaded) +function umamiTrack(name, data) { + if ( + typeof window.umami !== 'undefined' && + typeof window.umami.track === 'function' + ) { + if (data != null) window.umami.track(name, data); + else window.umami.track(name); + } +} + +// Umami: scroll depth (25%, 50%, 75%, 100%) – once per milestone +const scrollMilestones = new Set(); +function onScroll() { + const doc = document.documentElement; + const scrollTop = doc.scrollTop || document.body.scrollTop; + const scrollHeight = + (doc.scrollHeight || document.body.scrollHeight) - window.innerHeight; + if (scrollHeight <= 0) return; + const pct = Math.round((scrollTop / scrollHeight) * 100); + for (const m of [25, 50, 75, 100]) { + if (pct >= m && !scrollMilestones.has(m)) { + scrollMilestones.add(m); + umamiTrack('scroll-depth', { depth: String(m) }); + } + } +} +window.addEventListener('scroll', onScroll, { passive: true });