From 00510820a2794efcadbc83f7f8b54318fe198ecb Mon Sep 17 00:00:00 2001 From: Zéro~Informatique Date: Tue, 26 Jul 2022 08:44:34 +0200 Subject: viewer: migrate to vue 3, general refactoring and cleanup Non-exhaustive list of fixes and improvements done at the same time: - html default background to grey (avoids white flash during init) - unified links behavior - added more theme variables - removed the flex-expand transition (it wasn't working) and replaced it with a slide - fixed LdLoading not centered on the content - title on removable tags - fixed an issue with encoded URI from vue-router - unified Item resource URLs - removed the iframe for PlainTextViewer (it wasn't working properly) and replaced it with a pre - fixed clear and search buttons tabindex - fixed the information panel bumping up during the fade animation of tag's dropdown - fixed some focus outlines not appearing correctly - moved CSS variables to the :root context - Code cleaning GitHub: closes #217 GitHub: closes #300 GitHub: closes #297 GitHub: closes #105 GitHub: closes #267 GitHub: closes #275 GitHub: closes #228 GitHub: closes #215 GitHub: closes #112 --- viewer/src/@types/gallery.ts | 129 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 viewer/src/@types/gallery.ts (limited to 'viewer/src/@types/gallery.ts') diff --git a/viewer/src/@types/gallery.ts b/viewer/src/@types/gallery.ts new file mode 100644 index 0000000..8c0f177 --- /dev/null +++ b/viewer/src/@types/gallery.ts @@ -0,0 +1,129 @@ +/* ldgallery - A static generator which turns a collection of tagged +-- pictures into a searchable web gallery. +-- +-- Copyright (C) 2019-2022 Guillaume FOUET +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU Affero General Public License for more details. +-- +-- You should have received a copy of the GNU Affero General Public License +-- along with this program. If not, see . +*/ + +import { ItemType } from './itemType'; +import { SplashScreenConfig } from './splashscreen'; + +export type ItemSortStr = 'title_asc' | 'date_asc' | 'date_desc'; + +export interface Config { + galleryRoot: string; + galleryIndex?: string; + initialItemSort?: ItemSortStr; + initialTagDisplayLimit?: number; + splashScreen?: SplashScreenConfig; +} + +// --- + +export interface Resolution { + width: number; + height: number; +} +export interface Thumbnail { + resource: string; + resolution: Resolution; +} +export type RawTag = string; + +// --- + +export interface Downloadable { + resource: string; + type: ItemType; // unknown +} +export interface OtherProperties extends Downloadable { + type: ItemType.OTHER; +} +export interface PictureProperties extends Downloadable { + type: ItemType.PICTURE; + resolution: Resolution; +} +export interface PlainTextProperties extends Downloadable { + type: ItemType.PLAINTEXT; +} +export interface MarkdownProperties extends Downloadable { + type: ItemType.MARKDOWN; +} +export interface PDFProperties extends Downloadable { + type: ItemType.PDF; +} +export interface VideoProperties extends Downloadable { + type: ItemType.VIDEO; +} +export interface AudioProperties extends Downloadable { + type: ItemType.AUDIO; +} +export interface DirectoryProperties { + type: ItemType.DIRECTORY; + // eslint-disable-next-line no-use-before-define + items: Item[]; +} + +// --- + +export interface Item { + title: string; + datetime: string; + description: string; + tags: RawTag[]; + path: string; + thumbnail?: Thumbnail; + properties: + | Downloadable + | DirectoryProperties; +} +export interface DownloadableItem extends Item { // Special unknown item type + properties: Downloadable; +} +export interface OtherItem extends Item { + properties: OtherProperties; +} +export interface PictureItem extends Item { + properties: PictureProperties; +} +export interface PlainTextItem extends Item { + properties: PlainTextProperties; +} +export interface MarkdownItem extends Item { + properties: MarkdownProperties; +} +export interface PDFItem extends Item { + properties: PDFProperties; +} +export interface VideoItem extends Item { + properties: VideoProperties; +} +export interface AudioItem extends Item { + properties: AudioProperties; +} +export interface DirectoryItem extends Item { + properties: DirectoryProperties; +} + +// --- + +export interface IndexProperties { + galleryTitle: string; + tagCategories: RawTag[]; +} +export interface Index { + properties: IndexProperties; + tree: DirectoryItem; +} -- cgit v1.2.3