diff --git a/common/modules/util.js b/common/modules/util.js index 506d427..5e2c7fd 100644 --- a/common/modules/util.js +++ b/common/modules/util.js @@ -99,12 +99,12 @@ export function generateRandomHexCode (len) { export function throttle (fn, time) { let wait = false - return () => { + return (...args) => { if (!wait) { - fn() + fn(...args) wait = true setTimeout(() => { - fn() + fn(...args) wait = false }, time).unref?.() } diff --git a/web/src/app.html b/web/src/app.html index 8c386d3..04fa9f8 100644 --- a/web/src/app.html +++ b/web/src/app.html @@ -16,15 +16,15 @@ - - + + - + - + - + diff --git a/web/src/lib/components/Stargazers.svelte b/web/src/lib/components/Stargazers.svelte new file mode 100644 index 0000000..8882dc5 --- /dev/null +++ b/web/src/lib/components/Stargazers.svelte @@ -0,0 +1,73 @@ + + +
+
+
+ {#await stargazers} + Loading... + {:then stargazers} + {#each [...chunks(stargazers, 25)] as stargazerRow} +
+ {#each stargazerRow as { htmlUrl, avatarUrl, login }} + +
+ avatar + {login} +
+
+ {/each} +
+ {/each} + {/await} +
+
+ + diff --git a/web/src/routes/+layout.js b/web/src/routes/+layout.js index 7f24145..c844cca 100644 --- a/web/src/routes/+layout.js +++ b/web/src/routes/+layout.js @@ -21,6 +21,15 @@ export function load ({ fetch }) { } catch (e) { return [] } + })(), + stargazers: (async () => { + try { + const res = await fetch('https://api.github.com/repos/ThaUnknown/miru/stargazers?per_page=100&page=' + (Math.round(Math.random() * 10) + 1)) + const json = await res.json() + return json.map(({ html_url: htmlUrl, avatar_url: avatarUrl, login }) => ({ htmlUrl, avatarUrl, login })) + } catch (e) { + return [] + } })() } } diff --git a/web/src/routes/+layout.svelte b/web/src/routes/+layout.svelte index 38ddb1a..4c6fb50 100644 --- a/web/src/routes/+layout.svelte +++ b/web/src/routes/+layout.svelte @@ -2,6 +2,7 @@ import Footer from '$lib/components/Footer.svelte' import Loader from '$lib/components/Loader.svelte' import Navbar from '$lib/components/Navbar.svelte' + import { throttle } from '@/modules/util.js' import { setContext } from 'svelte' import { writable } from 'simple-store-svelte' @@ -15,6 +16,7 @@ let lastTime = null t.addEventListener('wheel', e => { e.preventDefault() + console.log(e.deltaY) // is trackpad const spd = (e.deltaY !== (e.deltaY | 0) || e.wheelDelta % 10 !== 0) ? speed / 10 : speed pos = Math.max(0, Math.min(pos - Math.max(-1, Math.min(1, e.deltaY * -1)) * spd, (t.scrollHeight - t.clientHeight) + (smooth * 2))) @@ -37,6 +39,8 @@ t.addEventListener('pointerup', () => { pos = scrollTop = scrollPosition.value = t.scrollTop }) + t.addEventListener('scrollend', throttle(() => { scrollTop = scrollPosition.value = t.scrollTop }, 1000)) + function update () { const delta = pos - scrollTop === smooth * 2 ? 0 : ((pos - scrollTop) / smooth) * getDeltaTime() scrollTop += delta diff --git a/web/src/routes/+page.svelte b/web/src/routes/+page.svelte index f696bd1..d566d26 100644 --- a/web/src/routes/+page.svelte +++ b/web/src/routes/+page.svelte @@ -8,9 +8,13 @@ import MacOssvg from '$lib/svg/MacOSSVG.svelte' import SteamOssvg from '$lib/svg/SteamOSSVG.svelte' import WindowsSvg from '$lib/svg/WindowsSVG.svelte' + import Stargazers from '$lib/components/Stargazers.svelte' import { getContext } from 'svelte' const scrollPosition = getContext('scroll-position') + + /** @type {import('./$types').PageData} */ + export let data @@ -67,9 +71,11 @@

-
+
- player goes here +
+ player +
@@ -103,12 +109,13 @@

-
+

Loved by thousands.

+