1
0
Fork 0
mirror of https://github.com/mat-1/matdoesdev.git synced 2025-08-02 14:46:04 +00:00

only add button elements when you scroll

This commit is contained in:
mat 2024-01-07 16:50:08 -06:00
parent 4b181a6c29
commit e4ba97923e

View file

@ -6,6 +6,8 @@
import ButtonLink from './ButtonLink.svelte'
import ExternalLinkIcon from './ExternalLinkIcon.svelte'
import ExternalLink from './ExternalLink.svelte'
import type { UIEventHandler } from 'svelte/elements'
import { browser } from '$app/environment'
let searchQuery = writable('')
let sort = writable('relevance')
@ -151,25 +153,43 @@
}
})
let cutOffButtonEntries = 1000
let cutOffButtonEntries = 500
let isCurrentlyAdding = false
$: {
buttonEntries
cutOffButtonEntries = Math.min(buttonEntries.length, 1000)
requestAnimationFrame(() => addMore(false))
cutOffButtonEntries = Math.min(buttonEntries.length, 500)
}
function shouldAddMore() {
return scrollY + window.innerHeight > document.body.scrollHeight - 100
}
function addMore(force: boolean) {
if (isCurrentlyAdding && !force) return
if (cutOffButtonEntries < buttonEntries.length) {
isCurrentlyAdding = true
cutOffButtonEntries = Math.min(buttonEntries.length, cutOffButtonEntries + 100)
requestAnimationFrame(() => addMore(true))
cutOffButtonEntries = Math.min(buttonEntries.length, cutOffButtonEntries + 500)
requestAnimationFrame(() => {
if (shouldAddMore()) addMore(true)
else isCurrentlyAdding = false
})
} else {
isCurrentlyAdding = false
}
}
let scrollY: number
$: {
if (browser && scrollY) {
if (shouldAddMore()) {
addMore(false)
}
}
}
</script>
<svelte:window bind:scrollY />
{#if selectedButtonIndex !== null}
<h1>
<img src={buttonUrlFromIndex(selectedButtonIndex)} alt="Button" class="button" />