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/ItemType.ts | 29 --------
viewer/src/@types/Operation.ts | 24 -------
viewer/src/@types/gallery.d.ts | 125 --------------------------------
viewer/src/@types/gallery.ts | 129 ++++++++++++++++++++++++++++++++++
viewer/src/@types/itemType.ts | 29 ++++++++
viewer/src/@types/operation.ts | 24 +++++++
viewer/src/@types/scrollposition.d.ts | 20 ------
viewer/src/@types/splashscreen.d.ts | 25 -------
viewer/src/@types/splashscreen.ts | 25 +++++++
viewer/src/@types/tag.d.ts | 41 -----------
viewer/src/@types/tag.ts | 42 +++++++++++
viewer/src/@types/v-lazy-image.d.ts | 20 ------
viewer/src/@types/vue-dragscroll.d.ts | 20 ------
13 files changed, 249 insertions(+), 304 deletions(-)
delete mode 100644 viewer/src/@types/ItemType.ts
delete mode 100644 viewer/src/@types/Operation.ts
delete mode 100644 viewer/src/@types/gallery.d.ts
create mode 100644 viewer/src/@types/gallery.ts
create mode 100644 viewer/src/@types/itemType.ts
create mode 100644 viewer/src/@types/operation.ts
delete mode 100644 viewer/src/@types/scrollposition.d.ts
delete mode 100644 viewer/src/@types/splashscreen.d.ts
create mode 100644 viewer/src/@types/splashscreen.ts
delete mode 100644 viewer/src/@types/tag.d.ts
create mode 100644 viewer/src/@types/tag.ts
delete mode 100644 viewer/src/@types/v-lazy-image.d.ts
delete mode 100644 viewer/src/@types/vue-dragscroll.d.ts
(limited to 'viewer/src/@types')
diff --git a/viewer/src/@types/ItemType.ts b/viewer/src/@types/ItemType.ts
deleted file mode 100644
index 5ef38d8..0000000
--- a/viewer/src/@types/ItemType.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2021 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 .
-*/
-
-export enum ItemType {
- OTHER = "other",
- PICTURE = "picture",
- PLAINTEXT = "plaintext",
- MARKDOWN = "markdown",
- PDF = "pdf",
- VIDEO = "video",
- AUDIO = "audio",
- DIRECTORY = "directory",
-}
diff --git a/viewer/src/@types/Operation.ts b/viewer/src/@types/Operation.ts
deleted file mode 100644
index e566f4b..0000000
--- a/viewer/src/@types/Operation.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2020 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 .
-*/
-
-export enum Operation {
- INTERSECTION = "",
- ADDITION = "+",
- SUBSTRACTION = "-",
-}
diff --git a/viewer/src/@types/gallery.d.ts b/viewer/src/@types/gallery.d.ts
deleted file mode 100644
index 0b4cfc4..0000000
--- a/viewer/src/@types/gallery.d.ts
+++ /dev/null
@@ -1,125 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2020 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 Properties {
- galleryTitle: string;
- tagCategories: RawTag[];
-}
-export interface Index {
- properties: Properties;
- tree: DirectoryItem;
-}
-
-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 Item {
- title: string;
- datetime: string;
- description: string;
- tags: RawTag[];
- path: string;
- thumbnail?: Thumbnail;
- properties:
- | OtherProperties
- | PictureProperties
- | PlainTextProperties
- | MarkdownProperties
- | PDFProperties
- | VideoProperties
- | AudioProperties
- | DirectoryProperties;
-}
-export interface Resolution {
- width: number;
- height: number;
-}
-export interface OtherProperties {
- type: ItemType.OTHER;
- resource: string;
-}
-export interface PictureProperties {
- type: ItemType.PICTURE;
- resource: string;
- resolution: Resolution;
-}
-export interface PlainTextProperties {
- type: ItemType.PLAINTEXT;
- resource: string;
-}
-export interface MarkdownProperties {
- type: ItemType.MARKDOWN;
- resource: string;
-}
-export interface PDFProperties {
- type: ItemType.PDF;
- resource: string;
-}
-export interface VideoProperties {
- type: ItemType.VIDEO;
- resource: string;
-}
-export interface AudioProperties {
- type: ItemType.AUDIO;
- resource: string;
-}
-export interface DirectoryProperties {
- type: ItemType.DIRECTORY;
- items: Item[];
-}
-
-export interface Thumbnail {
- resource: string;
- resolution: Resolution;
-}
-export type RawTag = string;
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;
+}
diff --git a/viewer/src/@types/itemType.ts b/viewer/src/@types/itemType.ts
new file mode 100644
index 0000000..ecab05c
--- /dev/null
+++ b/viewer/src/@types/itemType.ts
@@ -0,0 +1,29 @@
+/* ldgallery - A static generator which turns a collection of tagged
+-- pictures into a searchable web gallery.
+--
+-- Copyright (C) 2019-2021 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 .
+*/
+
+export enum ItemType {
+ OTHER = 'other',
+ PICTURE = 'picture',
+ PLAINTEXT = 'plaintext',
+ MARKDOWN = 'markdown',
+ PDF = 'pdf',
+ VIDEO = 'video',
+ AUDIO = 'audio',
+ DIRECTORY = 'directory',
+}
diff --git a/viewer/src/@types/operation.ts b/viewer/src/@types/operation.ts
new file mode 100644
index 0000000..ec6a2d3
--- /dev/null
+++ b/viewer/src/@types/operation.ts
@@ -0,0 +1,24 @@
+/* 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 .
+*/
+
+export enum Operation {
+ INTERSECTION = '',
+ ADDITION = '+',
+ SUBSTRACTION = '-',
+}
diff --git a/viewer/src/@types/scrollposition.d.ts b/viewer/src/@types/scrollposition.d.ts
deleted file mode 100644
index 0102eab..0000000
--- a/viewer/src/@types/scrollposition.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2020 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 .
-*/
-
-export type ScrollPosition = Record;
diff --git a/viewer/src/@types/splashscreen.d.ts b/viewer/src/@types/splashscreen.d.ts
deleted file mode 100644
index 4e03fa8..0000000
--- a/viewer/src/@types/splashscreen.d.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2021 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 .
-*/
-
-export interface SplashScreenConfig {
- resource?: string;
- acknowledgmentKey?: string;
- buttonAcknowledgeLabel?: string;
- style?: any;
-}
diff --git a/viewer/src/@types/splashscreen.ts b/viewer/src/@types/splashscreen.ts
new file mode 100644
index 0000000..ea2e331
--- /dev/null
+++ b/viewer/src/@types/splashscreen.ts
@@ -0,0 +1,25 @@
+/* ldgallery - A static generator which turns a collection of tagged
+-- pictures into a searchable web gallery.
+--
+-- Copyright (C) 2019-2021 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 .
+*/
+
+export interface SplashScreenConfig {
+ resource?: string;
+ acknowledgmentKey?: string;
+ buttonAcknowledgeLabel?: string;
+ style?: unknown;
+}
diff --git a/viewer/src/@types/tag.d.ts b/viewer/src/@types/tag.d.ts
deleted file mode 100644
index 9ed2c04..0000000
--- a/viewer/src/@types/tag.d.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2020 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 { Item, RawTag } from "./gallery";
-
-export interface TagNode {
- tag: RawTag;
- tagfiltered: RawTag;
- rootPart: boolean;
- childPart: boolean;
- items: Item[];
- children: TagIndex;
-}
-export interface TagSearch extends TagNode {
- parent?: TagNode;
- operation: string; // Enum Operation
- display: string;
-}
-export type TagSearchByOperation = Record;
-export type TagIndex = Record;
-
-export interface TagCategory {
- tag: string;
- index: TagIndex;
-}
diff --git a/viewer/src/@types/tag.ts b/viewer/src/@types/tag.ts
new file mode 100644
index 0000000..4c909f2
--- /dev/null
+++ b/viewer/src/@types/tag.ts
@@ -0,0 +1,42 @@
+/* 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 { Item, RawTag } from './gallery';
+
+export interface TagNode {
+ tag: RawTag;
+ tagfiltered: RawTag;
+ rootPart: boolean;
+ childPart: boolean;
+ items: Item[];
+ // eslint-disable-next-line no-use-before-define
+ children: TagIndex;
+}
+export interface TagSearch extends TagNode {
+ parent?: TagNode;
+ operation: string; // Enum Operation
+ display: string;
+}
+export type TagSearchByOperation = Record;
+export type TagIndex = Record;
+
+export interface TagCategory {
+ tag: string;
+ index: TagIndex;
+}
diff --git a/viewer/src/@types/v-lazy-image.d.ts b/viewer/src/@types/v-lazy-image.d.ts
deleted file mode 100644
index 2777921..0000000
--- a/viewer/src/@types/v-lazy-image.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2020 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 .
-*/
-
-declare module "v-lazy-image";
diff --git a/viewer/src/@types/vue-dragscroll.d.ts b/viewer/src/@types/vue-dragscroll.d.ts
deleted file mode 100644
index c07c7d8..0000000
--- a/viewer/src/@types/vue-dragscroll.d.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-/* ldgallery - A static generator which turns a collection of tagged
--- pictures into a searchable web gallery.
---
--- Copyright (C) 2019-2020 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 .
-*/
-
-declare module "vue-dragscroll";
--
cgit v1.2.3