From a494c0ee87fccf2e4513e66dde238178c802a1c7 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 13 Jun 2024 23:58:02 -0700 Subject: feat(BadgePreview): bigger preview window --- src/lib/User/BadgeWall/BadgePreview.svelte | 187 ++++++++++++++--------------- 1 file changed, 91 insertions(+), 96 deletions(-) (limited to 'src/lib') diff --git a/src/lib/User/BadgeWall/BadgePreview.svelte b/src/lib/User/BadgeWall/BadgePreview.svelte index 912889df..7ba34843 100644 --- a/src/lib/User/BadgeWall/BadgePreview.svelte +++ b/src/lib/User/BadgeWall/BadgePreview.svelte @@ -5,41 +5,15 @@ import { databaseTimeToDate } from '$lib/Utility/time'; import locale from '$stores/locale'; import { onMount } from 'svelte'; - import { cubicOut } from 'svelte/easing'; - import { tweened } from 'svelte/motion'; import root from '$lib/Utility/root'; + import ParallaxImage from '$lib/Image/ParallaxImage.svelte'; export let selectedBadge: Badge | undefined; export let onNext: () => void = () => {}; export let onPrevious: () => void = () => {}; + let source = cdn(thumbnail(selectedBadge?.image || '')) || ''; let badgeReference: HTMLImageElement; - const mouse = tweened( - { x: 0, y: 0 }, - { - duration: 300 * 1.75, - easing: cubicOut - } - ); - - const handleMouseMove = (event: MouseEvent) => { - const boundingRectangle = badgeReference.getBoundingClientRect(); - const factor = 1.25; - const limit = 300 * 1.75; - - if ($mouse.x === 0 && $mouse.y === 0) $mouse = { x: event.clientX, y: event.clientY }; - - $mouse.x += - (-(event.clientX - boundingRectangle.left - boundingRectangle.width / 2) - $mouse.x) * factor; - $mouse.y += - (-(event.clientY - boundingRectangle.top - boundingRectangle.height / 2) - $mouse.y) * factor; - $mouse.x = Math.max(Math.min($mouse.x, limit), -limit); - $mouse.y = Math.max(Math.min($mouse.y, limit), -limit); - }; - - const handleMouseLeave = () => { - $mouse = { x: 0, y: 0 }; - }; $: { if (selectedBadge && selectedBadge.image) { @@ -47,7 +21,7 @@ image.src = cdn(selectedBadge.image) || ''; image.onload = () => { - badgeReference.src = image.src; + source = image.src; }; } } @@ -60,6 +34,8 @@ } onMount(() => { + badgeReference = document.querySelector('.badge-container-image') as HTMLImageElement; + const handleClickOutside = (event: any) => { if (event.target.classList.contains('popup')) selectedBadge = undefined; }; @@ -111,7 +87,10 @@ const onClick = (event: MouseEvent) => { event.preventDefault(); - if (event.clientX < badgeReference.getBoundingClientRect().left + badgeReference.width / 2) { + if ( + event.clientX < + badgeReference.getBoundingClientRect().left + badgeReference.getBoundingClientRect().width / 2 + ) { onPrevious(); } else { onNext(); @@ -121,47 +100,44 @@ {#if selectedBadge}
- {#if selectedBadge.image} - +
+ {#if selectedBadge.image} + -

- {/if} +

+ {/if} +

- {#if selectedBadge.time} - {$locale().dateFormatter(databaseTimeToDate(selectedBadge.time))} +
+ {#if selectedBadge.time} + {$locale().dateFormatter(databaseTimeToDate(selectedBadge.time))} - {#if (selectedBadge.designer || selectedBadge.source || selectedBadge.post) && !selectedBadge.description} -

- {:else if selectedBadge.description} -
+ {#if (selectedBadge.designer || selectedBadge.source || selectedBadge.post) && !selectedBadge.description} +

+ {:else if selectedBadge.description} +
+ {/if} {/if} - {/if} - {#if selectedBadge.description} - {selectedBadge.description} + {#if selectedBadge.description} + {selectedBadge.description} -

- {/if} +

+ {/if} - {#if selectedBadge.designer} - Designer: + {#if selectedBadge.designer} + Designer: - - {@html classifyDesigner(selectedBadge.designer)} + {@html classifyDesigner(selectedBadge.designer)} -
- {/if} +
+ {/if} - {#if selectedBadge.post && selectedBadge.post !== '#'} - {selectedBadge.post.includes('forum') ? 'Forum' : 'Activity'}: + {#if selectedBadge.post && selectedBadge.post !== '#'} + {selectedBadge.post.includes('forum') ? 'Forum' : 'Activity'}: - - {selectedBadge.post} - + + {selectedBadge.post} + -
- {/if} +
+ {/if} - {#if selectedBadge.source} - Source: + {#if selectedBadge.source} + Source: - {#if selectedBadge.source.startsWith('http')} - - {@html classifySource(selectedBadge.source)} - {:else} - {selectedBadge.source} - {/if} + {@html classifySource(selectedBadge.source)} + {:else} + {selectedBadge.source} + {/if} -
- {/if} +
+ {/if} - {#if selectedBadge.category} - Category: + {#if selectedBadge.category} + Category: - (selectedBadge = undefined)}> - {selectedBadge.category} - + (selectedBadge = undefined)} + > + {selectedBadge.category} + -
- {/if} +
+ {/if} - SauceNAO: - - Search - + SauceNAO: + + Search + +

{/if} -- cgit v1.2.3