aboutsummaryrefslogtreecommitdiff
path: root/haddock-api/resources/html/js-src/style-menu.ts
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2018-10-24 17:31:09 -0700
committerAlec Theriault <alec.theriault@gmail.com>2018-10-24 17:31:09 -0700
commita69311708493efe8524aed0e9d19365f79f2fab3 (patch)
treec9f1f4b9dd9e1469bac811ce9ea563a40f4cab1c /haddock-api/resources/html/js-src/style-menu.ts
parent67a142271f6a590a4307d30ac5c5359632ff21c4 (diff)
Resurrect the style-switcher
This fixes #810. Looks like things were broken during the quickjump refactor of the JS. For the (git) record: I do not think the style switcher is a good idea. I'm fixing it for the same reason @mzero added it; as an answer to "rumblings from some that they didn't want their pixels changed on bit"
Diffstat (limited to 'haddock-api/resources/html/js-src/style-menu.ts')
-rw-r--r--haddock-api/resources/html/js-src/style-menu.ts116
1 files changed, 0 insertions, 116 deletions
diff --git a/haddock-api/resources/html/js-src/style-menu.ts b/haddock-api/resources/html/js-src/style-menu.ts
deleted file mode 100644
index 3911655b..00000000
--- a/haddock-api/resources/html/js-src/style-menu.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-// Haddock JavaScript utilities
-
-import {getCookie, setCookie, clearCookie} from "./cookies";
-
-const rspace = /\s\s+/g,
- rtrim = /^\s+|\s+$/g;
-
-function spaced(s: string) { return (" " + s + " ").replace(rspace, " "); }
-function trim(s: string) { return s.replace(rtrim, ""); }
-
-function hasClass(elem: Element, value: string) {
- const className = spaced(elem.className || "");
- return className.indexOf( " " + value + " " ) >= 0;
-}
-
-function addClass(elem: Element, value: string) {
- const className = spaced(elem.className || "");
- if ( className.indexOf( " " + value + " " ) < 0 ) {
- elem.className = trim(className + " " + value);
- }
-}
-
-function removeClass(elem: Element, value: string) {
- let className = spaced(elem.className || "");
- className = className.replace(" " + value + " ", " ");
- elem.className = trim(className);
-}
-
-function toggleClass(elem: Element, valueOn: string, valueOff: string, bool?: boolean): boolean {
- if (bool == null) { bool = ! hasClass(elem, valueOn); }
- if (bool) {
- removeClass(elem, valueOff);
- addClass(elem, valueOn);
- }
- else {
- removeClass(elem, valueOn);
- addClass(elem, valueOff);
- }
- return bool;
-}
-
-function makeClassToggle(valueOn: string, valueOff: string): (elem: Element, bool?: boolean) => boolean {
- return function(elem, bool) {
- return toggleClass(elem, valueOn, valueOff, bool);
- }
-}
-
-const toggleShow = makeClassToggle("show", "hide");
-
-function addMenuItem(html: string) {
- const menu = document.getElementById("page-menu");
- if (menu && menu.firstChild) {
- const btn = menu.firstChild.cloneNode(false) as Element;
- btn.innerHTML = html;
- menu.appendChild(btn);
- }
-}
-
-function styles(): HTMLLinkElement[] {
- const es = Array.prototype.slice.call(document.getElementsByTagName("link"));
- return es.filter((a: HTMLLinkElement) => a.rel.indexOf("style") != -1 && a.title);
-}
-
-function addStyleMenu() {
- const as = styles();
- let btns = "";
- as.forEach((a) => {
- btns += "<li><a href='#' onclick=\"setActiveStyleSheet('"
- + a.title + "'); return false;\">"
- + a.title + "</a></li>"
- });
- if (as.length > 1) {
- const h = "<div id='style-menu-holder'>"
- + "<a href='#' onclick='styleMenu(); return false;'>Style &#9662;</a>"
- + "<ul id='style-menu' class='hide'>" + btns + "</ul>"
- + "</div>";
- addMenuItem(h);
- }
-}
-
-function setActiveStyleSheet(title: string) {
- const as = styles();
- let found: null | HTMLLinkElement = null;
- for(let i = 0; i < as.length; i++) {
- const a = as[i];
- a.disabled = true;
- // need to do this always, some browsers are edge triggered
- if(a.title == title) {
- found = a;
- }
- }
- if (found) {
- found.disabled = false;
- setCookie("haddock-style", title);
- }
- else {
- as[0].disabled = false;
- clearCookie("haddock-style");
- }
- styleMenu(false);
-}
-
-function resetStyle() {
- const s = getCookie("haddock-style");
- if (s) setActiveStyleSheet(s);
-}
-
-function styleMenu(show?: boolean) {
- const m = document.getElementById('style-menu');
- if (m) toggleShow(m, show);
-}
-
-export function init() {
- addStyleMenu();
- resetStyle();
-} \ No newline at end of file