From c8da0ccb337467c12c1693c5b10e45972b846e2a Mon Sep 17 00:00:00 2001 From: kurozenzen Date: Sat, 10 Feb 2024 15:27:42 +0100 Subject: [PATCH] feat: added fullscreen autoscroll --- .../kurosearch/button-tag/TagButton.svelte | 2 +- .../kurosearch/details/Summary.svelte | 3 + .../CreateSupertagDialog.svelte | 2 +- .../dialog-sort-filter/NumberInput.svelte | 38 ++++ .../SortFilterDialog.svelte | 51 ++--- .../fullscreen-post/FullscreenImage.svelte | 177 ++++++++++++++++++ .../fullscreen-post/FullscreenMedia.svelte | 80 +------- .../fullscreen-post/FullscreenPreview.svelte | 4 +- .../fullscreen-post/FullscreenProgress.svelte | 38 ++++ .../fullscreen-post/FullscreenScroller.svelte | 74 +++++--- .../fullscreen-post/FullscreenVideo.svelte | 82 ++++++++ .../kurosearch/media-image/Image.svelte | 1 + .../kurosearch/media-video/Video.svelte | 2 +- .../modified-tag/ModifiedTag.svelte | 3 +- .../kurosearch/post/MosaicPost.svelte | 1 - .../kurosearch/post/SingleColumnPost.svelte | 7 +- .../components/kurosearch/post/Sources.svelte | 22 ++- .../kurosearch/results/Results.svelte | 3 +- .../SortFilterConfig.svelte | 59 ++---- .../sort-filter-config/sortfilter.ts | 66 +++++++ .../kurosearch/supertag/Supertag.svelte | 2 + .../tag-detailed/DetailedTag.svelte | 1 + .../kurosearch/tag-simple/SimpleTag.svelte | 2 +- .../pure/button-icon/IconButton.svelte | 2 +- .../button-scroll-up/ScrollUpButton.svelte | 1 + .../pure/text-button/TextButton.svelte | 2 +- .../pure/toggle-icon/ToggleIcon.svelte | 2 +- .../store/autoplay-fullscreen-delay-store.ts | 4 + .../autoplay-fullscreen-enabled-store.ts | 4 + src/lib/store/generic/bool-store.ts | 6 + src/lib/store/generic/number-store.ts | 6 + src/lib/store/store-keys.ts | 4 +- src/routes/+page.svelte | 2 +- src/routes/post/+page.svelte | 13 +- src/routes/preferences/+page.svelte | 51 +++-- static/manifest.json | 1 - 36 files changed, 596 insertions(+), 222 deletions(-) create mode 100644 src/lib/components/kurosearch/dialog-sort-filter/NumberInput.svelte create mode 100644 src/lib/components/kurosearch/fullscreen-post/FullscreenImage.svelte create mode 100644 src/lib/components/kurosearch/fullscreen-post/FullscreenProgress.svelte create mode 100644 src/lib/components/kurosearch/fullscreen-post/FullscreenVideo.svelte create mode 100644 src/lib/components/kurosearch/sort-filter-config/sortfilter.ts create mode 100644 src/lib/store/autoplay-fullscreen-delay-store.ts create mode 100644 src/lib/store/autoplay-fullscreen-enabled-store.ts create mode 100644 src/lib/store/generic/bool-store.ts create mode 100644 src/lib/store/generic/number-store.ts diff --git a/src/lib/components/kurosearch/button-tag/TagButton.svelte b/src/lib/components/kurosearch/button-tag/TagButton.svelte index aa7ced2c..88c71f2c 100644 --- a/src/lib/components/kurosearch/button-tag/TagButton.svelte +++ b/src/lib/components/kurosearch/button-tag/TagButton.svelte @@ -3,7 +3,7 @@ export let icon: string; - diff --git a/src/lib/components/kurosearch/details/Summary.svelte b/src/lib/components/kurosearch/details/Summary.svelte index f9666d12..dac58979 100644 --- a/src/lib/components/kurosearch/details/Summary.svelte +++ b/src/lib/components/kurosearch/details/Summary.svelte @@ -17,6 +17,7 @@ {#if post.comment_count} {/if} diff --git a/src/lib/components/kurosearch/post/MosaicPost.svelte b/src/lib/components/kurosearch/post/MosaicPost.svelte index 0603e603..8e36f9ac 100644 --- a/src/lib/components/kurosearch/post/MosaicPost.svelte +++ b/src/lib/components/kurosearch/post/MosaicPost.svelte @@ -9,7 +9,6 @@ let rowsPerSquare = 5; let ratio = post.width / post.height; let rows = Math.max(Math.min(Math.round(rowsPerSquare / ratio), rowsPerSquare / maxRatio), 2); - console.log(rows); const isImage = (src: string) => src.endsWith('.jpg') || src.endsWith('.jpeg') || src.endsWith('.png') || src.endsWith('.webp'); diff --git a/src/lib/components/kurosearch/post/SingleColumnPost.svelte b/src/lib/components/kurosearch/post/SingleColumnPost.svelte index a83a0ddc..207f9a15 100644 --- a/src/lib/components/kurosearch/post/SingleColumnPost.svelte +++ b/src/lib/components/kurosearch/post/SingleColumnPost.svelte @@ -21,16 +21,13 @@ export let openTab: string | undefined = undefined; const selectTab = (tab: string) => { - if (openTab === tab) { - openTab = undefined; - } else { - openTab = tab; - } + openTab = openTab === tab ? undefined : tab; }; const links = [ new URL(`https://kurosearch.com/post?id=${post.id}&src=${encodeURIComponent(post.file_url)}`), new URL(`https://rule34.xxx/index.php?page=post&s=view&id=${post.id}`), + new URL(post.file_url), ...post.source .split(' ') .filter((x) => isValidUrl(x)) diff --git a/src/lib/components/kurosearch/post/Sources.svelte b/src/lib/components/kurosearch/post/Sources.svelte index de176f1d..012c680b 100644 --- a/src/lib/components/kurosearch/post/Sources.svelte +++ b/src/lib/components/kurosearch/post/Sources.svelte @@ -11,6 +11,7 @@ 'zone-archive.com': ['#59396A', 'white'], 'subscribestar.adult': ['#ff4081', 'white'], 'redgifs.com': ['#E5194D', 'white'], + 'deviantart.com': ['#00c787', 'black'], default: ['var(--background-2)', 'white'] }; @@ -19,13 +20,14 @@ {#each links as link} {@const host = link.host.replace('www.', '')} {@const [background, foreground] = HOST_COLOR_MAPPING[host] ?? HOST_COLOR_MAPPING['default']} + {@const label = host.includes('api-cdn') ? 'File' : host}
  • - {host} + {label}
  • {/each} @@ -43,7 +45,7 @@ display: flex; align-items: center; height: var(--line-height); - padding-inline: var(--grid-gap); + padding-inline: var(--small-gap); background-color: var(--background-2); color: var(--text-highlight); border-radius: var(--border-radius); @@ -52,4 +54,18 @@ a::before { padding-inline-end: var(--small-gap); } + + @media (hover: hover) { + a { + transition: all var(--default-transition-behaviour); + } + + a.black:hover { + filter: brightness(0.7); + } + + a.white:hover { + filter: brightness(1.5); + } + } diff --git a/src/lib/components/kurosearch/results/Results.svelte b/src/lib/components/kurosearch/results/Results.svelte index a76a90b6..b0d6a166 100644 --- a/src/lib/components/kurosearch/results/Results.svelte +++ b/src/lib/components/kurosearch/results/Results.svelte @@ -64,6 +64,7 @@ diff --git a/src/lib/components/kurosearch/sort-filter-config/sortfilter.ts b/src/lib/components/kurosearch/sort-filter-config/sortfilter.ts new file mode 100644 index 00000000..b6a2bb20 --- /dev/null +++ b/src/lib/components/kurosearch/sort-filter-config/sortfilter.ts @@ -0,0 +1,66 @@ +import { formatCount } from '$lib/logic/format-count'; + +export const LABELS_SORT: Record< + kurosearch.SortProperty, + Record +> = Object.freeze({ + id: { + asc: 'Oldest', + desc: 'Newest' + }, + score: { + asc: 'Worst', + desc: 'Best' + }, + updated: { + asc: 'Inactive', + desc: 'Active' + }, + random: { + asc: 'Random', + desc: 'Random' + } +}); + +export const LABELS_SCORE_COMPARATOR = Object.freeze({ '>=': '≥', '<=': '≤' }); + +export const LABELS_RATING = Object.freeze({ + all: 'All', + safe: 'Safe', + questionable: 'Questionable', + explicit: 'Explicit' +}); +export const LABELS_SORT_PROPERTY = Object.freeze({ + id: 'Uploaded', + score: 'Score', + updated: 'Updated', + random: 'Random' +}); +export const LABELS_SORT_DIRECTION = Object.freeze({ + desc: 'codicon codicon-arrow-down', + asc: 'codicon codicon-arrow-up' +}); + +export const getScoreLabel = (score: number, comparator: kurosearch.ScoreComparator) => + score === 0 && comparator === '>=' + ? undefined + : `Score ${LABELS_SCORE_COMPARATOR[comparator]} ${formatCount(score)}`; + +export const getRatingLabel = (rating: kurosearch.Rating) => + rating === 'all' ? undefined : LABELS_RATING[rating]; + +export const getFilterLabel = ( + rating: kurosearch.Rating, + scoreValue: number, + scoreComparator: kurosearch.ScoreComparator +) => { + let ratingLabel = getRatingLabel(rating); + let scoreLabel = getScoreLabel(scoreValue, scoreComparator); + + return [ratingLabel, scoreLabel].filter((x) => x !== undefined).join(',') || 'All'; +}; + +export const getSortLabel = ( + property: kurosearch.SortProperty, + direction: kurosearch.SortDirection +) => LABELS_SORT[property][direction]; diff --git a/src/lib/components/kurosearch/supertag/Supertag.svelte b/src/lib/components/kurosearch/supertag/Supertag.svelte index 5ff5c340..c697cd0b 100644 --- a/src/lib/components/kurosearch/supertag/Supertag.svelte +++ b/src/lib/components/kurosearch/supertag/Supertag.svelte @@ -17,6 +17,7 @@

    {supertag.name}

    {Object.keys(supertag.tags).length} tags diff --git a/src/lib/components/pure/button-icon/IconButton.svelte b/src/lib/components/pure/button-icon/IconButton.svelte index 52dc5f01..b29a67b4 100644 --- a/src/lib/components/pure/button-icon/IconButton.svelte +++ b/src/lib/components/pure/button-icon/IconButton.svelte @@ -2,7 +2,7 @@ export let id: string | undefined = undefined; - diff --git a/src/lib/components/pure/button-scroll-up/ScrollUpButton.svelte b/src/lib/components/pure/button-scroll-up/ScrollUpButton.svelte index f14d7093..caea5ec1 100644 --- a/src/lib/components/pure/button-scroll-up/ScrollUpButton.svelte +++ b/src/lib/components/pure/button-scroll-up/ScrollUpButton.svelte @@ -23,6 +23,7 @@ diff --git a/src/lib/components/pure/toggle-icon/ToggleIcon.svelte b/src/lib/components/pure/toggle-icon/ToggleIcon.svelte index 2700e5f8..c8e0d854 100644 --- a/src/lib/components/pure/toggle-icon/ToggleIcon.svelte +++ b/src/lib/components/pure/toggle-icon/ToggleIcon.svelte @@ -8,7 +8,7 @@ }; -