From bfa66e5389e88f365c8515f1366dc2858787e075 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 2 Jan 2024 14:10:47 -0800 Subject: feat(sequelspy): media cover hover --- src/lib/AniList/prequels.ts | 14 +++++++++++++- src/lib/Media/Cover/hoverCover.ts | 5 ++++- src/lib/Tools/SequelSpy.svelte | 27 ++++++++++++++++++++++++++- 3 files changed, 43 insertions(+), 3 deletions(-) (limited to 'src/lib') diff --git a/src/lib/AniList/prequels.ts b/src/lib/AniList/prequels.ts index 5b7b4dab..f3351d81 100644 --- a/src/lib/AniList/prequels.ts +++ b/src/lib/AniList/prequels.ts @@ -15,6 +15,9 @@ export interface MediaPrequel { month: number; day: number; }; + coverImage: { + extraLarge: string; + }; } interface PrequelRelations { @@ -27,6 +30,9 @@ interface PrequelRelations { status: string; progress: number; }; + coverImage: { + extraLarge: string; + }; }; }[]; } @@ -47,6 +53,9 @@ interface PrequelsPage { month: number; day: number; }; + coverImage: { + extraLarge: string; + }; }[]; pageInfo: { hasNextPage: boolean; @@ -80,6 +89,7 @@ const prequelsPage = async ( english romaji } + coverImage { extraLarge } id nextAiringEpisode { episode airingAt } startDate { year month day } @@ -96,6 +106,7 @@ const prequelsPage = async ( status progress } + coverImage { extraLarge } } } } @@ -157,7 +168,8 @@ export const prequels = async ( episodes, seen, nextAiringEpisode: candidate.nextAiringEpisode, - startDate: candidate.startDate + startDate: candidate.startDate, + coverImage: candidate.coverImage }); } diff --git a/src/lib/Media/Cover/hoverCover.ts b/src/lib/Media/Cover/hoverCover.ts index 85e4db7c..18b04420 100644 --- a/src/lib/Media/Cover/hoverCover.ts +++ b/src/lib/Media/Cover/hoverCover.ts @@ -9,7 +9,10 @@ interface OnMouseEnterLeave { media: Media | null; } -export const onMouseEnter = (media: Media | null, item: SubsPleaseEpisode | null = null) => { +export const onMouseEnter = ( + media: Media | Partial | null, + item: SubsPleaseEpisode | null = null +) => { if (!get(settings).displayHoverCover && !item) return { hovering: false, item: null, media: null } as OnMouseEnterLeave; diff --git a/src/lib/Tools/SequelSpy.svelte b/src/lib/Tools/SequelSpy.svelte index bedbf84e..5684463f 100644 --- a/src/lib/Tools/SequelSpy.svelte +++ b/src/lib/Tools/SequelSpy.svelte @@ -9,6 +9,8 @@ import { page } from '$app/stores'; import { browser } from '$app/environment'; import { season as getSeason } from '$lib/Media/Anime/season'; + import { onMouseEnter, onMouseLeave, onMouseMove } from '$lib/Media/Cover/hoverCover'; + import HoverCover from '$lib/Media/Cover/HoverCover.svelte'; export let user: AniListAuthorisation; @@ -16,6 +18,9 @@ const urlParameters = browser ? new URLSearchParams(window.location.search) : null; let year = parseOrDefault(urlParameters, 'year', new Date().getFullYear()); let season = parseOrDefault(urlParameters, 'season', getSeason()); + let hovering = false; + let hoveredMedia: Media | null = null; + let imageStyle = ''; $: { if (year.toString().length === 4) currentPrequels = prequels(user, year, season); @@ -50,7 +55,25 @@ {:then currentPrequels}