diff --git a/package.json b/package.json index 41b1c4c..42f368b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Miru", - "version": "4.1.7", + "version": "4.1.8", "author": "ThaUnknown_ ", "description": "Stream anime torrents, real-time with no waiting for downloads.", "main": "build/main.js", diff --git a/src/renderer/components/cards/EpisodeCard.svelte b/src/renderer/components/cards/EpisodeCard.svelte index a916e4b..6bb7c34 100644 --- a/src/renderer/components/cards/EpisodeCard.svelte +++ b/src/renderer/components/cards/EpisodeCard.svelte @@ -13,7 +13,7 @@ {#if preview} {/if} -
+
cover
play_arrow
@@ -67,7 +67,8 @@ } .item { animation: 0.3s ease 0s 1 load-in; - width: 36rem + width: 36rem; + contain-intrinsic-height: 25.7rem; } .cover-img { object-fit: cover; diff --git a/src/renderer/components/cards/EpisodeSkeletonCard.svelte b/src/renderer/components/cards/EpisodeSkeletonCard.svelte index 4424367..0f4c198 100644 --- a/src/renderer/components/cards/EpisodeSkeletonCard.svelte +++ b/src/renderer/components/cards/EpisodeSkeletonCard.svelte @@ -1,4 +1,4 @@ -
+
@@ -20,5 +20,6 @@ } .wrapper { height: 27.7rem; + contain-intrinsic-height: 27.7rem; } diff --git a/src/renderer/components/cards/FullCard.svelte b/src/renderer/components/cards/FullCard.svelte index 7cc00ec..0b1cde1 100644 --- a/src/renderer/components/cards/FullCard.svelte +++ b/src/renderer/components/cards/FullCard.svelte @@ -15,7 +15,7 @@ {#if preview} {/if} -
@@ -86,6 +86,7 @@ width: 50rem !important; height: 27rem !important; box-shadow: rgba(0, 4, 12, 0.3) 0px 7px 15px, rgba(0, 4, 12, 0.05) 0px 4px 4px; + contain-intrinsic-height: 27rem; } .card-grid { display: grid; diff --git a/src/renderer/components/cards/FullSkeletonCard.svelte b/src/renderer/components/cards/FullSkeletonCard.svelte index bad4302..ebe5a9c 100644 --- a/src/renderer/components/cards/FullSkeletonCard.svelte +++ b/src/renderer/components/cards/FullSkeletonCard.svelte @@ -1,4 +1,4 @@ -
+
@@ -16,5 +16,6 @@ animation: 0.3s ease 0s 1 load-in; width: 50rem !important; height: 27rem !important; + contain-intrinsic-height: 27rem; } diff --git a/src/renderer/components/cards/SkeletonCard.svelte b/src/renderer/components/cards/SkeletonCard.svelte index b8b341a..a27b183 100644 --- a/src/renderer/components/cards/SkeletonCard.svelte +++ b/src/renderer/components/cards/SkeletonCard.svelte @@ -1,4 +1,4 @@ -
+
@@ -16,5 +16,6 @@ } .wrapper { height: 40.6rem; + contain-intrinsic-height: 40.6rem; } diff --git a/src/renderer/components/cards/SmallCard.svelte b/src/renderer/components/cards/SmallCard.svelte index a041ea9..ed838b9 100644 --- a/src/renderer/components/cards/SmallCard.svelte +++ b/src/renderer/components/cards/SmallCard.svelte @@ -15,7 +15,7 @@ {#if preview} {/if} -
+
cover
{#if media.mediaListEntry?.status} @@ -50,7 +50,8 @@ } .item { animation: 0.3s ease 0s 1 load-in; - width: 19rem + width: 19rem; + contain-intrinsic-height: 36.7rem; } .cover-img { object-fit: cover; diff --git a/src/renderer/css.css b/src/renderer/css.css index f42687c..bdedc31 100644 --- a/src/renderer/css.css +++ b/src/renderer/css.css @@ -100,6 +100,10 @@ img[src=''], img[src=' '] { animation: 0.3s ease 0s 1 root-load-in; } +.content-visibility-auto { + content-visibility: auto; +} + .nav-hidden > .content-wrapper { left: 0 !important; width: 100% !important; diff --git a/src/renderer/modules/scroll.js b/src/renderer/modules/scroll.js index dd29887..295c2f8 100644 --- a/src/renderer/modules/scroll.js +++ b/src/renderer/modules/scroll.js @@ -1,6 +1,7 @@ export default function scroll (t, { speed = 120, smooth = 15 } = {}) { let moving = false - let pos = t.scrollTop + let pos = 0 + let scrollTop = 0 t.addEventListener('wheel', e => { e.preventDefault() @@ -8,10 +9,23 @@ export default function scroll (t, { speed = 120, smooth = 15 } = {}) { if (!moving) update() }, { capture: true, passive: false }) - function update () { - const delta = pos - t.scrollTop === smooth * 2 ? 0 : ((pos - t.scrollTop) / smooth) + let scrollBar = false - t.scrollTop += delta + t.addEventListener('pointerdown', e => { + if (e.offsetX > t.clientWidth) scrollBar = true + }) + + t.addEventListener('pointerup', () => { scrollBar = false }) + + t.addEventListener('scroll', () => { + if (scrollBar) pos = scrollTop = t.scrollTop + }, { capture: false, passive: true }) + + function update () { + const delta = pos - scrollTop === smooth * 2 ? 0 : ((pos - scrollTop) / smooth) + scrollTop += delta + + t.scrollTo(0, scrollTop) moving = Math.abs(delta) > 0.5 && requestAnimationFrame(update) } }