diff options
| author | Fuwn <[email protected]> | 2023-12-28 20:28:03 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-12-28 20:28:03 -0800 |
| commit | 1d190da6e3b97ce338d185880375382b2f4bd5f7 (patch) | |
| tree | d48d4559c422eeb21b9002ab372367c1bbc77567 /src/lib | |
| parent | feat(hovercover): allow for no subs (diff) | |
| download | due.moe-1d190da6e3b97ce338d185880375382b2f4bd5f7.tar.xz due.moe-1d190da6e3b97ce338d185880375382b2f4bd5f7.zip | |
feat(list): hover cover
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/List/Anime/CleanAnimeList.svelte | 35 | ||||
| -rw-r--r-- | src/lib/List/Manga/CleanMangaList.svelte | 35 |
2 files changed, 68 insertions, 2 deletions
diff --git a/src/lib/List/Anime/CleanAnimeList.svelte b/src/lib/List/Anime/CleanAnimeList.svelte index 67d6797e..425b588a 100644 --- a/src/lib/List/Anime/CleanAnimeList.svelte +++ b/src/lib/List/Anime/CleanAnimeList.svelte @@ -12,6 +12,8 @@ import { outboundLink } from '$lib/Media/links'; import { onDestroy } from 'svelte'; import type { SubsPlease } from '$lib/Media/Anime/Airing/Subtitled/subsPlease'; + import HoverCover from '$lib/Media/HoverCover.svelte'; + import { onMouseEnter, onMouseLeave, onMouseMove } from '$lib/Media/hoverCover'; export let media: Media[]; export let title: string; @@ -25,6 +27,10 @@ export let pendingUpdate: number | null; export let subsPlease: SubsPlease | null = null; + let hovering = false; + let hoveredMedia: Media | null = null; + let imageStyle = ''; + const keyCacher = setInterval( () => (media = media), (() => { @@ -60,7 +66,32 @@ {@const progress = (anime.mediaListEntry || { progress: 0 }).progress} {#if title.includes('Upcoming Episodes') || progress !== (anime.nextAiringEpisode?.episode || 9999) - 1} - <li class="entry"> + <li + class="entry" + on:mouseenter={() => { + if ($settings.displayHoverCover === false) return; + + const response = onMouseEnter(anime); + + hovering = response.hovering; + hoveredMedia = response.media; + }} + on:mouseleave={() => { + if ($settings.displayHoverCover === false) return; + + const response = onMouseLeave(); + + hovering = response.hovering; + hoveredMedia = response.media; + }} + on:mousemove={(e) => { + if ($settings.displayHoverCover === false) return; + + const response = onMouseMove(e); + + imageStyle = response.style; + }} + > <span class="content"> <a href={outboundLink(anime, 'anime', $settings.displayOutboundLinksTo)} target="_blank"> <span @@ -119,6 +150,8 @@ {/each} </ul> +<HoverCover {hovering} {hoveredMedia} {imageStyle} /> + <style> .entry::after { content: ''; diff --git a/src/lib/List/Manga/CleanMangaList.svelte b/src/lib/List/Manga/CleanMangaList.svelte index 3ccdbf49..918db3f9 100644 --- a/src/lib/List/Manga/CleanMangaList.svelte +++ b/src/lib/List/Manga/CleanMangaList.svelte @@ -6,6 +6,8 @@ import settings from '../../../stores/settings'; import ListTitle from '../ListTitle.svelte'; import MediaTitle from '../MediaTitleDisplay.svelte'; + import HoverCover from '$lib/Media/HoverCover.svelte'; + import { onMouseEnter, onMouseLeave, onMouseMove } from '$lib/Media/hoverCover'; export let media: Media[]; export let cleanCache: () => void; @@ -20,6 +22,10 @@ export let due: boolean; export let rateLimited: boolean; export let authorised: boolean; + + let hovering = false; + let hoveredMedia: Media | null = null; + let imageStyle = ''; </script> {#if authorised} @@ -54,7 +60,32 @@ {@const progress = (manga.mediaListEntry || { progress: 0 }).progress} {#if progress !== manga.episodes} - <li> + <li + class="entry" + on:mouseenter={() => { + if ($settings.displayHoverCover === false) return; + + const response = onMouseEnter(manga); + + hovering = response.hovering; + hoveredMedia = response.media; + }} + on:mouseleave={() => { + if ($settings.displayHoverCover === false) return; + + const response = onMouseLeave(); + + hovering = response.hovering; + hoveredMedia = response.media; + }} + on:mousemove={(e) => { + if ($settings.displayHoverCover === false) return; + + const response = onMouseMove(e); + + imageStyle = response.style; + }} + > <a href={outboundLink(manga, 'manga', $settings.displayOutboundLinksTo)} target="_blank"> <span style={lastUpdatedMedia === manga.id && manga.chapters !== progress @@ -96,3 +127,5 @@ {/if} {/each} </ul> + +<HoverCover {hovering} {hoveredMedia} {imageStyle} /> |