aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-28 20:28:03 -0800
committerFuwn <[email protected]>2023-12-28 20:28:03 -0800
commit1d190da6e3b97ce338d185880375382b2f4bd5f7 (patch)
treed48d4559c422eeb21b9002ab372367c1bbc77567 /src/lib
parentfeat(hovercover): allow for no subs (diff)
downloaddue.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.svelte35
-rw-r--r--src/lib/List/Manga/CleanMangaList.svelte35
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} />