aboutsummaryrefslogtreecommitdiff
path: root/viewer/src/@types/gallery.d.ts
diff options
context:
space:
mode:
Diffstat (limited to 'viewer/src/@types/gallery.d.ts')
-rw-r--r--viewer/src/@types/gallery.d.ts74
1 files changed, 74 insertions, 0 deletions
diff --git a/viewer/src/@types/gallery.d.ts b/viewer/src/@types/gallery.d.ts
new file mode 100644
index 0000000..066aedf
--- /dev/null
+++ b/viewer/src/@types/gallery.d.ts
@@ -0,0 +1,74 @@
1/* ldgallery - A static generator which turns a collection of tagged
2-- pictures into a searchable web gallery.
3--
4-- Copyright (C) 2019-2020 Guillaume FOUET
5--
6-- This program is free software: you can redistribute it and/or modify
7-- it under the terms of the GNU Affero General Public License as
8-- published by the Free Software Foundation, either version 3 of the
9-- License, or (at your option) any later version.
10--
11-- This program is distributed in the hope that it will be useful,
12-- but WITHOUT ANY WARRANTY; without even the implied warranty of
13-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14-- GNU Affero General Public License for more details.
15--
16-- You should have received a copy of the GNU Affero General Public License
17-- along with this program. If not, see <https://www.gnu.org/licenses/>.
18*/
19
20declare namespace Gallery {
21 interface Config {
22 galleryRoot: string,
23 }
24
25 interface GalleryProperties {
26 galleryTitle: string,
27 tagCategories: RawTag[]
28 }
29 interface Index {
30 properties: GalleryProperties,
31 tree: Directory
32 }
33
34 interface Other extends Item {
35 properties: OtherProperties,
36 }
37 interface Picture extends Item {
38 properties: PictureProperties,
39 }
40 interface Directory extends Item {
41 properties: DirectoryProperties,
42 }
43 interface Item {
44 title: string,
45 datetime: string,
46 description: string,
47 tags: RawTag[],
48 path: string,
49 thumbnail?: Thumbnail
50 properties: OtherProperties | PictureProperties | DirectoryProperties,
51 }
52 interface Resolution {
53 width: number,
54 height: number,
55 }
56 interface OtherProperties {
57 type: "other",
58 }
59 interface PictureProperties {
60 type: "picture",
61 resource: string,
62 resolution: Resolution
63 }
64 interface DirectoryProperties {
65 type: "directory",
66 items: Item[]
67 }
68 interface Thumbnail {
69 resource: string,
70 resolution: Resolution
71 }
72 type RawTag = string;
73 type ItemType = "other" | "picture" | "directory";
74}