From f97cd133636eb54b7d2d7c49d5f607f4cc2d0d30 Mon Sep 17 00:00:00 2001 From: Chaoran Chen Date: Sun, 8 Jan 2023 18:15:46 +0100 Subject: [PATCH] feat: implement custom rendering --- src/lib/ImageGallery.svelte | 246 ++++++++++++++++++++++++------------ src/lib/Slide.svelte | 32 ++--- src/lib/SlideWrapper.svelte | 66 +++++++--- src/routes/+page.svelte | 113 ++++++++++++++--- 4 files changed, 326 insertions(+), 131 deletions(-) diff --git a/src/lib/ImageGallery.svelte b/src/lib/ImageGallery.svelte index e90180f..57a4753 100644 --- a/src/lib/ImageGallery.svelte +++ b/src/lib/ImageGallery.svelte @@ -392,45 +392,90 @@ >
{#if thumbnailPosition === 'bottom' || thumbnailPosition === 'right'} - slideLeft()} - on:slideright={() => slideRight()} - on:slidejump={(event) => { - slideToIndex(event.detail); - }} - on:playtoggle={togglePlay} - on:fullscreentoggle={toggleFullscreen} - on:lazyload={onLazyLoad} - on:imageload={handleImageLoad} - on:imageerror={handleImageError} - /> + {#if $$slots.render} + slideLeft()} + on:slideright={() => slideRight()} + on:slidejump={(event) => { + slideToIndex(event.detail); + }} + on:playtoggle={togglePlay} + on:fullscreentoggle={toggleFullscreen} + on:lazyload={onLazyLoad} + on:imageload={handleImageLoad} + on:imageerror={handleImageError} + let:item + > + + + {:else} + slideLeft()} + on:slideright={() => slideRight()} + on:slidejump={(event) => { + slideToIndex(event.detail); + }} + on:playtoggle={togglePlay} + on:fullscreentoggle={toggleFullscreen} + on:lazyload={onLazyLoad} + on:imageload={handleImageLoad} + on:imageerror={handleImageError} + /> + {/if} {/if} {#if showThumbnails} {/if} {#if thumbnailPosition === 'top' || thumbnailPosition === 'left'} - slideLeft()} - on:slideright={() => slideRight()} - on:slidejump={(event) => { - slideToIndex(event.detail); - }} - on:playtoggle={togglePlay} - on:fullscreentoggle={toggleFullscreen} - on:lazyload={onLazyLoad} - on:imageload={handleImageLoad} - on:imageerror={handleImageError} - /> + {#if $$slots.render} + slideLeft()} + on:slideright={() => slideRight()} + on:slidejump={(event) => { + slideToIndex(event.detail); + }} + on:playtoggle={togglePlay} + on:fullscreentoggle={toggleFullscreen} + on:lazyload={onLazyLoad} + on:imageload={handleImageLoad} + on:imageerror={handleImageError} + let:item + > + + + {:else} + slideLeft()} + on:slideright={() => slideRight()} + on:slidejump={(event) => { + slideToIndex(event.detail); + }} + on:playtoggle={togglePlay} + on:fullscreentoggle={toggleFullscreen} + on:lazyload={onLazyLoad} + on:imageload={handleImageLoad} + on:imageerror={handleImageError} + /> + {/if} {/if}
diff --git a/src/lib/Slide.svelte b/src/lib/Slide.svelte index 0371e37..f926d76 100644 --- a/src/lib/Slide.svelte +++ b/src/lib/Slide.svelte @@ -39,21 +39,23 @@ role="button" > {#if showItem} - + + + {:else}
{/if} diff --git a/src/lib/SlideWrapper.svelte b/src/lib/SlideWrapper.svelte index fad6721..2b0bdf3 100644 --- a/src/lib/SlideWrapper.svelte +++ b/src/lib/SlideWrapper.svelte @@ -172,6 +172,54 @@ > + + {:else} + - - {:else} - {/if} diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 33ca8e4..580d5dc 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -2,6 +2,7 @@ import './+page.css'; import ImageGallery from '$lib/ImageGallery.svelte'; import type { Position, TItem } from '$lib/types'; + import Item from '$lib/Item.svelte'; let startIndex = 0; // TODO Once the ImageGallery supports rendering of custom items, we can showcase videos @@ -24,8 +25,9 @@ let useWindowKeyDown = true; let disableSwipe = false; let disableThumbnailSwipe = false; + let useCustomRender = true; - const PREFIX_URL = 'https://raw.githubusercontent.com/react2svelte/image-gallery/main/static/'; + const PREFIX_URL = '/'; function _getStaticImages() { let images: TItem[] = []; @@ -42,30 +44,95 @@ } const images = _getStaticImages(); + + let rotationDegree = 0; + let rotationDirectionIncreasing = true; + + setInterval(() => { + if (rotationDegree >= 6) { + rotationDirectionIncreasing = false; + } else if (rotationDegree <= -6) { + rotationDirectionIncreasing = true; + } + if (rotationDirectionIncreasing) { + rotationDegree += 1; + } else { + rotationDegree -= 1; + } + }, 300);