Commit | Line | Data |
---|---|---|
6ac5dde2 MW |
1 | /* -*-javascript-*- |
2 | * | |
3 | * Interactive features for Trivial Gallery. | |
4 | * | |
5 | * (c) 2021 Mark Wooding | |
6 | */ | |
7 | ||
8 | /*----- Licensing notice --------------------------------------------------* | |
9 | * | |
10 | * This file is part of Trivial Gallery. | |
11 | * | |
12 | * Trivial Gallery is free software: you can redistribute it and/or modify | |
13 | * it under the terms of the GNU Affero General Public License as | |
14 | * published by the Free Software Foundation; either version 3 of the | |
15 | * License, or (at your option) any later version. | |
16 | * | |
17 | * Trivial Gallery is distributed in the hope that it will be useful, but | |
18 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
20 | * Affero General Public License for more details. | |
21 | * | |
22 | * You should have received a copy of the GNU Affero General Public | |
23 | * License along with Trivial Gallery. If not, see | |
24 | * <https://www.gnu.org/licenses/>. | |
25 | */ | |
26 | ||
27 | /* Handle keyboard interaction. */ | |
28 | addEventListener("keydown", function (ev) { | |
29 | var dir; | |
30 | if (ev.key === " " || ev.key === "ArrowRight") dir = "next"; | |
31 | else if (ev.key === " " || ev.key === "ArrowRight") dir = "next"; | |
32 | else if (ev.key === "Backspace" || ev.key === "ArrowLeft") dir = "prev"; | |
33 | else if (ev.key === "^") dir = "up"; | |
34 | else if (ev.key === "<") dir = "first"; | |
35 | else if (ev.key === ">") dir = "last"; | |
36 | else return; | |
37 | var elt = document.querySelector("link[rel=" + dir + "]"); | |
38 | if (!elt) return; | |
39 | location = elt.getAttribute("href"); | |
40 | ev.stopPropagation(); | |
41 | }, true); | |
42 | ||
43 | /* Scroll the thumbnail strip so that the current image is in the middle. */ | |
44 | (function () { | |
45 | var strip = document.querySelector("div.thumbstrip"); | |
46 | var focus = document.querySelector("#focusthumb"); | |
47 | if (strip && focus) { | |
48 | var stripbox = strip.getBoundingClientRect(); | |
49 | var focusbox = focus.getBoundingClientRect(); | |
50 | strip.scrollLeft += | |
51 | (focusbox.x - stripbox.x) - | |
52 | (stripbox.width - focusbox.width)/2; | |
53 | } | |
54 | })(); | |
55 | ||
56 | /*----- That's all, folks -------------------------------------------------*/ |