From 48ee9d0cef28ed15cbe19b67603e094cd38d5c82 Mon Sep 17 00:00:00 2001 From: Mathias Hall-Andersen Date: Tue, 12 Nov 2024 13:56:04 +0100 Subject: [PATCH] feat: dynamically pick the right logos --- book.toml | 4 +- src/intro/index.md | 4 +- src/intro/zircuit-dark-themed.png | Bin 0 -> 8672 bytes src/intro/zircuit-light-themed.png | Bin 0 -> 55225 bytes src/intro/zks-light-themed.png | Bin 0 -> 23276 bytes src/intro/zks-scale-dark-themed.png | Bin 0 -> 19485 bytes src/intro/zks-scale-light-themed.png | Bin 0 -> 23851 bytes theme/book.js | 1301 ++++++++++++++------------ 8 files changed, 703 insertions(+), 606 deletions(-) create mode 100644 src/intro/zircuit-dark-themed.png create mode 100644 src/intro/zircuit-light-themed.png create mode 100644 src/intro/zks-light-themed.png create mode 100644 src/intro/zks-scale-dark-themed.png create mode 100644 src/intro/zks-scale-light-themed.png diff --git a/book.toml b/book.toml index 004ae11..268931c 100644 --- a/book.toml +++ b/book.toml @@ -12,7 +12,7 @@ extra-watch-dirs = ["halo-hero"] [preprocessor.admonish] command = "mdbook-admonish" -assets_version = "2.0.0" # do not edit: managed by `mdbook-admonish install` +assets_version = "2.0.0" # do not edit: managed by `mdbook-admonish install` [[preprocessor.admonish.custom]] @@ -31,3 +31,5 @@ additional-css = [ "././mdbook-admonish.css", ] mathjax-support = true +default-theme = "light" +preferred-dark-theme = "navy" diff --git a/src/intro/index.md b/src/intro/index.md index e9b7276..3014579 100644 --- a/src/intro/index.md +++ b/src/intro/index.md @@ -8,6 +8,6 @@ The book was created as a collaboration between [ZKSecurity](https://zksecurity. the [Zircuit](https://www.zircuit.com/) development team. All material, full code examples and the book's source, are available on [GitHub](https://github.com/zksecurity/halo2-course). -![zks](/intro/zks-scale.png) + -![zircuit](/intro/zircuit.png) + diff --git a/src/intro/zircuit-dark-themed.png b/src/intro/zircuit-dark-themed.png new file mode 100644 index 0000000000000000000000000000000000000000..b780d274b6de6d5273665092d3e04ab467792d49 GIT binary patch literal 8672 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 literal 0 HcmV?d00001 diff --git a/src/intro/zircuit-light-themed.png b/src/intro/zircuit-light-themed.png new file mode 100644 index 0000000000000000000000000000000000000000..6d54e6d31ab4880549256ef504f5201c806927fa GIT binary patch literal 55225 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 literal 0 HcmV?d00001 diff --git a/src/intro/zks-scale-dark-themed.png b/src/intro/zks-scale-dark-themed.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f4b79b401bddb0f0d15ce82c3b9561e215fcbe GIT binary patch literal 19485 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 literal 0 HcmV?d00001 diff --git a/theme/book.js b/theme/book.js index e303ebb..f389679 100644 --- a/theme/book.js +++ b/theme/book.js @@ -1,688 +1,783 @@ "use strict"; // Fix back button cache problem -window.onunload = function () { }; +window.onunload = function () {}; // Global variable, shared between modules function playground_text(playground, hidden = true) { - let code_block = playground.querySelector("code"); - - if (window.ace && code_block.classList.contains("editable")) { - let editor = window.ace.edit(code_block); - return editor.getValue(); - } else if (hidden) { - return code_block.textContent; - } else { - return code_block.innerText; - } + let code_block = playground.querySelector("code"); + + if (window.ace && code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + return editor.getValue(); + } else if (hidden) { + return code_block.textContent; + } else { + return code_block.innerText; + } } (function codeSnippets() { - function fetch_with_timeout(url, options, timeout = 6000) { - return Promise.race([ - fetch(url, options), - new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), timeout)) - ]); - } - - var playgrounds = Array.from(document.querySelectorAll(".playground")); - if (playgrounds.length > 0) { - fetch_with_timeout("https://play.rust-lang.org/meta/crates", { - headers: { - 'Content-Type': "application/json", - }, - method: 'POST', - mode: 'cors', - }) - .then(response => response.json()) - .then(response => { - // get list of crates available in the rust playground - let playground_crates = response.crates.map(item => item["id"]); - playgrounds.forEach(block => handle_crate_list_update(block, playground_crates)); + function fetch_with_timeout(url, options, timeout = 6000) { + return Promise.race([ + fetch(url, options), + new Promise((_, reject) => + setTimeout(() => reject(new Error("timeout")), timeout), + ), + ]); + } + + var playgrounds = Array.from(document.querySelectorAll(".playground")); + if (playgrounds.length > 0) { + fetch_with_timeout("https://play.rust-lang.org/meta/crates", { + headers: { + "Content-Type": "application/json", + }, + method: "POST", + mode: "cors", + }) + .then((response) => response.json()) + .then((response) => { + // get list of crates available in the rust playground + let playground_crates = response.crates.map((item) => item["id"]); + playgrounds.forEach((block) => + handle_crate_list_update(block, playground_crates), + ); + }); + } + + function handle_crate_list_update(playground_block, playground_crates) { + // update the play buttons after receiving the response + update_play_button(playground_block, playground_crates); + + // and install on change listener to dynamically update ACE editors + if (window.ace) { + let code_block = playground_block.querySelector("code"); + if (code_block.classList.contains("editable")) { + let editor = window.ace.edit(code_block); + editor.addEventListener("change", function (e) { + update_play_button(playground_block, playground_crates); }); - } - - function handle_crate_list_update(playground_block, playground_crates) { - // update the play buttons after receiving the response - update_play_button(playground_block, playground_crates); - - // and install on change listener to dynamically update ACE editors - if (window.ace) { - let code_block = playground_block.querySelector("code"); - if (code_block.classList.contains("editable")) { - let editor = window.ace.edit(code_block); - editor.addEventListener("change", function (e) { - update_play_button(playground_block, playground_crates); - }); - // add Ctrl-Enter command to execute rust code - editor.commands.addCommand({ - name: "run", - bindKey: { - win: "Ctrl-Enter", - mac: "Ctrl-Enter" - }, - exec: _editor => run_rust_code(playground_block) - }); - } - } - } - - // updates the visibility of play button based on `no_run` class and - // used crates vs ones available on http://play.rust-lang.org - function update_play_button(pre_block, playground_crates) { - var play_button = pre_block.querySelector(".play-button"); - - // skip if code is `no_run` - if (pre_block.querySelector('code').classList.contains("no_run")) { - play_button.classList.add("hidden"); - return; - } - - // get list of `extern crate`'s from snippet - var txt = playground_text(pre_block); - var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; - var snippet_crates = []; - var item; - while (item = re.exec(txt)) { - snippet_crates.push(item[1]); - } - - // check if all used crates are available on play.rust-lang.org - var all_available = snippet_crates.every(function (elem) { - return playground_crates.indexOf(elem) > -1; + // add Ctrl-Enter command to execute rust code + editor.commands.addCommand({ + name: "run", + bindKey: { + win: "Ctrl-Enter", + mac: "Ctrl-Enter", + }, + exec: (_editor) => run_rust_code(playground_block), }); - - if (all_available) { - play_button.classList.remove("hidden"); - } else { - play_button.classList.add("hidden"); - } + } } + } - function run_rust_code(code_block) { - var result_block = code_block.querySelector(".result"); - if (!result_block) { - result_block = document.createElement('code'); - result_block.className = 'result hljs language-bash'; - - code_block.append(result_block); - } + // updates the visibility of play button based on `no_run` class and + // used crates vs ones available on http://play.rust-lang.org + function update_play_button(pre_block, playground_crates) { + var play_button = pre_block.querySelector(".play-button"); - let text = playground_text(code_block); - let classes = code_block.querySelector('code').classList; - let edition = "2015"; - if(classes.contains("edition2018")) { - edition = "2018"; - } else if(classes.contains("edition2021")) { - edition = "2021"; - } - var params = { - version: "stable", - optimize: "0", - code: text, - edition: edition - }; - - if (text.indexOf("#![feature") !== -1) { - params.version = "nightly"; - } + // skip if code is `no_run` + if (pre_block.querySelector("code").classList.contains("no_run")) { + play_button.classList.add("hidden"); + return; + } - result_block.innerText = "Running..."; - - fetch_with_timeout("https://play.rust-lang.org/evaluate.json", { - headers: { - 'Content-Type': "application/json", - }, - method: 'POST', - mode: 'cors', - body: JSON.stringify(params) - }) - .then(response => response.json()) - .then(response => { - if (response.result.trim() === '') { - result_block.innerText = "No output"; - result_block.classList.add("result-no-output"); - } else { - result_block.innerText = response.result; - result_block.classList.remove("result-no-output"); - } - }) - .catch(error => result_block.innerText = "Playground Communication: " + error.message); + // get list of `extern crate`'s from snippet + var txt = playground_text(pre_block); + var re = /extern\s+crate\s+([a-zA-Z_0-9]+)\s*;/g; + var snippet_crates = []; + var item; + while ((item = re.exec(txt))) { + snippet_crates.push(item[1]); } - // Syntax highlighting Configuration - hljs.configure({ - tabReplace: ' ', // 4 spaces - languages: [], // Languages used for auto-detection + // check if all used crates are available on play.rust-lang.org + var all_available = snippet_crates.every(function (elem) { + return playground_crates.indexOf(elem) > -1; }); - let code_nodes = Array - .from(document.querySelectorAll('code')) - // Don't highlight `inline code` blocks in headers. - .filter(function (node) {return !node.parentElement.classList.contains("header"); }); - - if (window.ace) { - // language-rust class needs to be removed for editable - // blocks or highlightjs will capture events - code_nodes - .filter(function (node) {return node.classList.contains("editable"); }) - .forEach(function (block) { block.classList.remove('language-rust'); }); - - code_nodes - .filter(function (node) {return !node.classList.contains("editable"); }) - .forEach(function (block) { hljs.highlightBlock(block); }); + if (all_available) { + play_button.classList.remove("hidden"); } else { - code_nodes.forEach(function (block) { hljs.highlightBlock(block); }); + play_button.classList.add("hidden"); } + } - // Adding the hljs class gives code blocks the color css - // even if highlighting doesn't apply - code_nodes.forEach(function (block) { block.classList.add('hljs'); }); - - Array.from(document.querySelectorAll("code.language-rust")).forEach(function (block) { + function run_rust_code(code_block) { + var result_block = code_block.querySelector(".result"); + if (!result_block) { + result_block = document.createElement("code"); + result_block.className = "result hljs language-bash"; - var lines = Array.from(block.querySelectorAll('.boring')); - // If no lines were hidden, return - if (!lines.length) { return; } - block.classList.add("hide-boring"); + code_block.append(result_block); + } - var buttons = document.createElement('div'); - buttons.className = 'buttons'; - buttons.innerHTML = ""; + let text = playground_text(code_block); + let classes = code_block.querySelector("code").classList; + let edition = "2015"; + if (classes.contains("edition2018")) { + edition = "2018"; + } else if (classes.contains("edition2021")) { + edition = "2021"; + } + var params = { + version: "stable", + optimize: "0", + code: text, + edition: edition, + }; - // add expand button - var pre_block = block.parentNode; - pre_block.insertBefore(buttons, pre_block.firstChild); + if (text.indexOf("#![feature") !== -1) { + params.version = "nightly"; + } - pre_block.querySelector('.buttons').addEventListener('click', function (e) { - if (e.target.classList.contains('fa-eye')) { - e.target.classList.remove('fa-eye'); - e.target.classList.add('fa-eye-slash'); - e.target.title = 'Hide lines'; - e.target.setAttribute('aria-label', e.target.title); - - block.classList.remove('hide-boring'); - } else if (e.target.classList.contains('fa-eye-slash')) { - e.target.classList.remove('fa-eye-slash'); - e.target.classList.add('fa-eye'); - e.target.title = 'Show hidden lines'; - e.target.setAttribute('aria-label', e.target.title); - - block.classList.add('hide-boring'); - } - }); + result_block.innerText = "Running..."; + + fetch_with_timeout("https://play.rust-lang.org/evaluate.json", { + headers: { + "Content-Type": "application/json", + }, + method: "POST", + mode: "cors", + body: JSON.stringify(params), + }) + .then((response) => response.json()) + .then((response) => { + if (response.result.trim() === "") { + result_block.innerText = "No output"; + result_block.classList.add("result-no-output"); + } else { + result_block.innerText = response.result; + result_block.classList.remove("result-no-output"); + } + }) + .catch( + (error) => + (result_block.innerText = + "Playground Communication: " + error.message), + ); + } + + // Syntax highlighting Configuration + hljs.configure({ + tabReplace: " ", // 4 spaces + languages: [], // Languages used for auto-detection + }); + + let code_nodes = Array.from(document.querySelectorAll("code")) + // Don't highlight `inline code` blocks in headers. + .filter(function (node) { + return !node.parentElement.classList.contains("header"); }); - if (window.playground_copyable) { - Array.from(document.querySelectorAll('pre code')).forEach(function (block) { - var pre_block = block.parentNode; - if (!pre_block.classList.contains('playground')) { - var buttons = pre_block.querySelector(".buttons"); - if (!buttons) { - buttons = document.createElement('div'); - buttons.className = 'buttons'; - pre_block.insertBefore(buttons, pre_block.firstChild); - } - - var clipButton = document.createElement('button'); - clipButton.className = 'fa fa-copy clip-button'; - clipButton.title = 'Copy to clipboard'; - clipButton.setAttribute('aria-label', clipButton.title); - clipButton.innerHTML = ''; - - buttons.insertBefore(clipButton, buttons.firstChild); - } + if (window.ace) { + // language-rust class needs to be removed for editable + // blocks or highlightjs will capture events + code_nodes + .filter(function (node) { + return node.classList.contains("editable"); + }) + .forEach(function (block) { + block.classList.remove("language-rust"); + }); + + code_nodes + .filter(function (node) { + return !node.classList.contains("editable"); + }) + .forEach(function (block) { + hljs.highlightBlock(block); + }); + } else { + code_nodes.forEach(function (block) { + hljs.highlightBlock(block); + }); + } + + // Adding the hljs class gives code blocks the color css + // even if highlighting doesn't apply + code_nodes.forEach(function (block) { + block.classList.add("hljs"); + }); + + Array.from(document.querySelectorAll("code.language-rust")).forEach( + function (block) { + var lines = Array.from(block.querySelectorAll(".boring")); + // If no lines were hidden, return + if (!lines.length) { + return; + } + block.classList.add("hide-boring"); + + var buttons = document.createElement("div"); + buttons.className = "buttons"; + buttons.innerHTML = + ''; + + // add expand button + var pre_block = block.parentNode; + pre_block.insertBefore(buttons, pre_block.firstChild); + + pre_block + .querySelector(".buttons") + .addEventListener("click", function (e) { + if (e.target.classList.contains("fa-eye")) { + e.target.classList.remove("fa-eye"); + e.target.classList.add("fa-eye-slash"); + e.target.title = "Hide lines"; + e.target.setAttribute("aria-label", e.target.title); + + block.classList.remove("hide-boring"); + } else if (e.target.classList.contains("fa-eye-slash")) { + e.target.classList.remove("fa-eye-slash"); + e.target.classList.add("fa-eye"); + e.target.title = "Show hidden lines"; + e.target.setAttribute("aria-label", e.target.title); + + block.classList.add("hide-boring"); + } }); - } + }, + ); - // Process playground code blocks - Array.from(document.querySelectorAll(".playground")).forEach(function (pre_block) { - // Add play button + if (window.playground_copyable) { + Array.from(document.querySelectorAll("pre code")).forEach(function (block) { + var pre_block = block.parentNode; + if (!pre_block.classList.contains("playground")) { var buttons = pre_block.querySelector(".buttons"); if (!buttons) { - buttons = document.createElement('div'); - buttons.className = 'buttons'; - pre_block.insertBefore(buttons, pre_block.firstChild); + buttons = document.createElement("div"); + buttons.className = "buttons"; + pre_block.insertBefore(buttons, pre_block.firstChild); } - var runCodeButton = document.createElement('button'); - runCodeButton.className = 'fa fa-play play-button'; - runCodeButton.hidden = true; - runCodeButton.title = 'Run this code'; - runCodeButton.setAttribute('aria-label', runCodeButton.title); - - buttons.insertBefore(runCodeButton, buttons.firstChild); - runCodeButton.addEventListener('click', function (e) { - run_rust_code(pre_block); - }); - - if (window.playground_copyable) { - var copyCodeClipboardButton = document.createElement('button'); - copyCodeClipboardButton.className = 'fa fa-copy clip-button'; - copyCodeClipboardButton.innerHTML = ''; - copyCodeClipboardButton.title = 'Copy to clipboard'; - copyCodeClipboardButton.setAttribute('aria-label', copyCodeClipboardButton.title); - - buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); - } + var clipButton = document.createElement("button"); + clipButton.className = "fa fa-copy clip-button"; + clipButton.title = "Copy to clipboard"; + clipButton.setAttribute("aria-label", clipButton.title); + clipButton.innerHTML = ''; - let code_block = pre_block.querySelector("code"); - if (window.ace && code_block.classList.contains("editable")) { - var undoChangesButton = document.createElement('button'); - undoChangesButton.className = 'fa fa-history reset-button'; - undoChangesButton.title = 'Undo changes'; - undoChangesButton.setAttribute('aria-label', undoChangesButton.title); - - buttons.insertBefore(undoChangesButton, buttons.firstChild); - - undoChangesButton.addEventListener('click', function () { - let editor = window.ace.edit(code_block); - editor.setValue(editor.originalCode); - editor.clearSelection(); - }); - } + buttons.insertBefore(clipButton, buttons.firstChild); + } }); + } + + // Process playground code blocks + Array.from(document.querySelectorAll(".playground")).forEach( + function (pre_block) { + // Add play button + var buttons = pre_block.querySelector(".buttons"); + if (!buttons) { + buttons = document.createElement("div"); + buttons.className = "buttons"; + pre_block.insertBefore(buttons, pre_block.firstChild); + } + + var runCodeButton = document.createElement("button"); + runCodeButton.className = "fa fa-play play-button"; + runCodeButton.hidden = true; + runCodeButton.title = "Run this code"; + runCodeButton.setAttribute("aria-label", runCodeButton.title); + + buttons.insertBefore(runCodeButton, buttons.firstChild); + runCodeButton.addEventListener("click", function (e) { + run_rust_code(pre_block); + }); + + if (window.playground_copyable) { + var copyCodeClipboardButton = document.createElement("button"); + copyCodeClipboardButton.className = "fa fa-copy clip-button"; + copyCodeClipboardButton.innerHTML = ''; + copyCodeClipboardButton.title = "Copy to clipboard"; + copyCodeClipboardButton.setAttribute( + "aria-label", + copyCodeClipboardButton.title, + ); + + buttons.insertBefore(copyCodeClipboardButton, buttons.firstChild); + } + + let code_block = pre_block.querySelector("code"); + if (window.ace && code_block.classList.contains("editable")) { + var undoChangesButton = document.createElement("button"); + undoChangesButton.className = "fa fa-history reset-button"; + undoChangesButton.title = "Undo changes"; + undoChangesButton.setAttribute("aria-label", undoChangesButton.title); + + buttons.insertBefore(undoChangesButton, buttons.firstChild); + + undoChangesButton.addEventListener("click", function () { + let editor = window.ace.edit(code_block); + editor.setValue(editor.originalCode); + editor.clearSelection(); + }); + } + }, + ); })(); (function themes() { - var html = document.querySelector('html'); - var themeToggleButton = document.getElementById('theme-toggle'); - var themePopup = document.getElementById('theme-list'); - var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); - var stylesheets = { - ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), - tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), - highlight: document.querySelector("[href$='highlight.css']"), - }; - - function showThemes() { - themePopup.style.display = 'block'; - themeToggleButton.setAttribute('aria-expanded', true); - themePopup.querySelector("button#" + get_theme()).focus(); - } - - function updateThemeSelected() { - themePopup.querySelectorAll('.theme-selected').forEach(function (el) { - el.classList.remove('theme-selected'); - }); - themePopup.querySelector("button#" + get_theme()).classList.add('theme-selected'); - } - - function hideThemes() { - themePopup.style.display = 'none'; - themeToggleButton.setAttribute('aria-expanded', false); - themeToggleButton.focus(); - } - - function get_theme() { - var theme; - try { theme = localStorage.getItem('mdbook-theme'); } catch (e) { } - if (theme === null || theme === undefined) { - return default_theme; + var html = document.querySelector("html"); + var themeToggleButton = document.getElementById("theme-toggle"); + var themePopup = document.getElementById("theme-list"); + var themeColorMetaTag = document.querySelector('meta[name="theme-color"]'); + var stylesheets = { + ayuHighlight: document.querySelector("[href$='ayu-highlight.css']"), + tomorrowNight: document.querySelector("[href$='tomorrow-night.css']"), + highlight: document.querySelector("[href$='highlight.css']"), + }; + + function showThemes() { + themePopup.style.display = "block"; + themeToggleButton.setAttribute("aria-expanded", true); + themePopup.querySelector("button#" + get_theme()).focus(); + } + + function updateThemedImg(theme) { + // Update any themed images + document.querySelectorAll('img[src*="-themed"]').forEach((img) => { + if (img.src.match(/-(dark|light)-themed\.[a-z]+$/i)) { + if (theme.match(/coal|navy|ayu/)) { + img.src = img.src.replace(/-light-themed\./, "-dark-themed."); } else { - return theme; - } - } - - function set_theme(theme, store = true) { - let ace_theme; - - if (theme == 'coal' || theme == 'navy') { - stylesheets.ayuHighlight.disabled = true; - stylesheets.tomorrowNight.disabled = false; - stylesheets.highlight.disabled = true; - - ace_theme = "ace/theme/tomorrow_night"; - } else if (theme == 'ayu') { - stylesheets.ayuHighlight.disabled = false; - stylesheets.tomorrowNight.disabled = true; - stylesheets.highlight.disabled = true; - ace_theme = "ace/theme/tomorrow_night"; - } else { - stylesheets.ayuHighlight.disabled = true; - stylesheets.tomorrowNight.disabled = true; - stylesheets.highlight.disabled = false; - ace_theme = "ace/theme/dawn"; - } - - setTimeout(function () { - themeColorMetaTag.content = getComputedStyle(document.body).backgroundColor; - }, 1); - - if (window.ace && window.editors) { - window.editors.forEach(function (editor) { - editor.setTheme(ace_theme); - }); - } - - var previousTheme = get_theme(); - - if (store) { - try { localStorage.setItem('mdbook-theme', theme); } catch (e) { } - } - - html.classList.remove(previousTheme); - html.classList.add(theme); - updateThemeSelected(); - } - - // Set theme - var theme = get_theme(); - - set_theme(theme, false); - - themeToggleButton.addEventListener('click', function () { - if (themePopup.style.display === 'block') { - hideThemes(); - } else { - showThemes(); + img.src = img.src.replace(/-dark-themed\./, "-light-themed."); } + } }); + } - themePopup.addEventListener('click', function (e) { - var theme; - if (e.target.className === "theme") { - theme = e.target.id; - } else if (e.target.parentElement.className === "theme") { - theme = e.target.parentElement.id; - } else { - return; - } - set_theme(theme); + function updateThemeSelected() { + themePopup.querySelectorAll(".theme-selected").forEach(function (el) { + el.classList.remove("theme-selected"); }); + themePopup + .querySelector("button#" + get_theme()) + .classList.add("theme-selected"); + } + + function hideThemes() { + themePopup.style.display = "none"; + themeToggleButton.setAttribute("aria-expanded", false); + themeToggleButton.focus(); + } + + function get_theme() { + var theme; + try { + theme = localStorage.getItem("mdbook-theme"); + } catch (e) {} + if (theme === null || theme === undefined) { + return default_theme; + } else { + return theme; + } + } - themePopup.addEventListener('focusout', function(e) { - // e.relatedTarget is null in Safari and Firefox on macOS (see workaround below) - if (!!e.relatedTarget && !themeToggleButton.contains(e.relatedTarget) && !themePopup.contains(e.relatedTarget)) { - hideThemes(); - } - }); + function set_theme(theme, store = true) { + let ace_theme; - // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 - document.addEventListener('click', function(e) { - if (themePopup.style.display === 'block' && !themeToggleButton.contains(e.target) && !themePopup.contains(e.target)) { - hideThemes(); - } - }); + updateThemedImg(theme); - document.addEventListener('keydown', function (e) { - if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } - if (!themePopup.contains(e.target)) { return; } - - switch (e.key) { - case 'Escape': - e.preventDefault(); - hideThemes(); - break; - case 'ArrowUp': - e.preventDefault(); - var li = document.activeElement.parentElement; - if (li && li.previousElementSibling) { - li.previousElementSibling.querySelector('button').focus(); - } - break; - case 'ArrowDown': - e.preventDefault(); - var li = document.activeElement.parentElement; - if (li && li.nextElementSibling) { - li.nextElementSibling.querySelector('button').focus(); - } - break; - case 'Home': - e.preventDefault(); - themePopup.querySelector('li:first-child button').focus(); - break; - case 'End': - e.preventDefault(); - themePopup.querySelector('li:last-child button').focus(); - break; - } - }); -})(); + if (theme == "coal" || theme == "navy") { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = false; + stylesheets.highlight.disabled = true; -(function sidebar() { - var html = document.querySelector("html"); - var sidebar = document.getElementById("sidebar"); - var sidebarLinks = document.querySelectorAll('#sidebar a'); - var sidebarToggleButton = document.getElementById("sidebar-toggle"); - var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); - var firstContact = null; - - function showSidebar() { - html.classList.remove('sidebar-hidden') - html.classList.add('sidebar-visible'); - Array.from(sidebarLinks).forEach(function (link) { - link.setAttribute('tabIndex', 0); - }); - sidebarToggleButton.setAttribute('aria-expanded', true); - sidebar.setAttribute('aria-hidden', false); - try { localStorage.setItem('mdbook-sidebar', 'visible'); } catch (e) { } + ace_theme = "ace/theme/tomorrow_night"; + } else if (theme == "ayu") { + stylesheets.ayuHighlight.disabled = false; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = true; + ace_theme = "ace/theme/tomorrow_night"; + } else { + stylesheets.ayuHighlight.disabled = true; + stylesheets.tomorrowNight.disabled = true; + stylesheets.highlight.disabled = false; + ace_theme = "ace/theme/dawn"; } + setTimeout(function () { + themeColorMetaTag.content = getComputedStyle( + document.body, + ).backgroundColor; + }, 1); - var sidebarAnchorToggles = document.querySelectorAll('#sidebar a.toggle'); - - function toggleSection(ev) { - ev.currentTarget.parentElement.classList.toggle('expanded'); + if (window.ace && window.editors) { + window.editors.forEach(function (editor) { + editor.setTheme(ace_theme); + }); } - Array.from(sidebarAnchorToggles).forEach(function (el) { - el.addEventListener('click', toggleSection); - }); + var previousTheme = get_theme(); - function hideSidebar() { - html.classList.remove('sidebar-visible') - html.classList.add('sidebar-hidden'); - Array.from(sidebarLinks).forEach(function (link) { - link.setAttribute('tabIndex', -1); - }); - sidebarToggleButton.setAttribute('aria-expanded', false); - sidebar.setAttribute('aria-hidden', true); - try { localStorage.setItem('mdbook-sidebar', 'hidden'); } catch (e) { } + if (store) { + try { + localStorage.setItem("mdbook-theme", theme); + } catch (e) {} } - // Toggle sidebar - sidebarToggleButton.addEventListener('click', function sidebarToggle() { - if (html.classList.contains("sidebar-hidden")) { - var current_width = parseInt( - document.documentElement.style.getPropertyValue('--sidebar-width'), 10); - if (current_width < 150) { - document.documentElement.style.setProperty('--sidebar-width', '150px'); - } - showSidebar(); - } else if (html.classList.contains("sidebar-visible")) { - hideSidebar(); - } else { - if (getComputedStyle(sidebar)['transform'] === 'none') { - hideSidebar(); - } else { - showSidebar(); - } - } - }); + html.classList.remove(previousTheme); + html.classList.add(theme); + updateThemeSelected(); + } - sidebarResizeHandle.addEventListener('mousedown', initResize, false); + // Set theme + var theme = get_theme(); - function initResize(e) { - window.addEventListener('mousemove', resize, false); - window.addEventListener('mouseup', stopResize, false); - html.classList.add('sidebar-resizing'); + set_theme(theme, false); + + themeToggleButton.addEventListener("click", function () { + if (themePopup.style.display === "block") { + hideThemes(); + } else { + showThemes(); } - function resize(e) { - var pos = (e.clientX - sidebar.offsetLeft); - if (pos < 20) { - hideSidebar(); - } else { - if (html.classList.contains("sidebar-hidden")) { - showSidebar(); - } - pos = Math.min(pos, window.innerWidth - 100); - document.documentElement.style.setProperty('--sidebar-width', pos + 'px'); - } + }); + + themePopup.addEventListener("click", function (e) { + var theme; + if (e.target.className === "theme") { + theme = e.target.id; + } else if (e.target.parentElement.className === "theme") { + theme = e.target.parentElement.id; + } else { + return; } - //on mouseup remove windows functions mousemove & mouseup - function stopResize(e) { - html.classList.remove('sidebar-resizing'); - window.removeEventListener('mousemove', resize, false); - window.removeEventListener('mouseup', stopResize, false); + set_theme(theme); + }); + + themePopup.addEventListener("focusout", function (e) { + // e.relatedTarget is null in Safari and Firefox on macOS (see workaround below) + if ( + !!e.relatedTarget && + !themeToggleButton.contains(e.relatedTarget) && + !themePopup.contains(e.relatedTarget) + ) { + hideThemes(); } + }); + + // Should not be needed, but it works around an issue on macOS & iOS: https://github.com/rust-lang/mdBook/issues/628 + document.addEventListener("click", function (e) { + if ( + themePopup.style.display === "block" && + !themeToggleButton.contains(e.target) && + !themePopup.contains(e.target) + ) { + hideThemes(); + } + }); - document.addEventListener('touchstart', function (e) { - firstContact = { - x: e.touches[0].clientX, - time: Date.now() - }; - }, { passive: true }); - - document.addEventListener('touchmove', function (e) { - if (!firstContact) - return; - - var curX = e.touches[0].clientX; - var xDiff = curX - firstContact.x, - tDiff = Date.now() - firstContact.time; - - if (tDiff < 250 && Math.abs(xDiff) >= 150) { - if (xDiff >= 0 && firstContact.x < Math.min(document.body.clientWidth * 0.25, 300)) - showSidebar(); - else if (xDiff < 0 && curX < 300) - hideSidebar(); + document.addEventListener("keydown", function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { + return; + } + if (!themePopup.contains(e.target)) { + return; + } - firstContact = null; + switch (e.key) { + case "Escape": + e.preventDefault(); + hideThemes(); + break; + case "ArrowUp": + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.previousElementSibling) { + li.previousElementSibling.querySelector("button").focus(); } - }, { passive: true }); - - // Scroll sidebar to current active section - var activeSection = document.getElementById("sidebar").querySelector(".active"); - if (activeSection) { - // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView - activeSection.scrollIntoView({ block: 'center' }); + break; + case "ArrowDown": + e.preventDefault(); + var li = document.activeElement.parentElement; + if (li && li.nextElementSibling) { + li.nextElementSibling.querySelector("button").focus(); + } + break; + case "Home": + e.preventDefault(); + themePopup.querySelector("li:first-child button").focus(); + break; + case "End": + e.preventDefault(); + themePopup.querySelector("li:last-child button").focus(); + break; } + }); })(); -(function chapterNavigation() { - document.addEventListener('keydown', function (e) { - if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { return; } - if (window.search && window.search.hasFocus()) { return; } - - switch (e.key) { - case 'ArrowRight': - e.preventDefault(); - var nextButton = document.querySelector('.nav-chapters.next'); - if (nextButton) { - window.location.href = nextButton.href; - } - break; - case 'ArrowLeft': - e.preventDefault(); - var previousButton = document.querySelector('.nav-chapters.previous'); - if (previousButton) { - window.location.href = previousButton.href; - } - break; - } +(function sidebar() { + var html = document.querySelector("html"); + var sidebar = document.getElementById("sidebar"); + var sidebarLinks = document.querySelectorAll("#sidebar a"); + var sidebarToggleButton = document.getElementById("sidebar-toggle"); + var sidebarResizeHandle = document.getElementById("sidebar-resize-handle"); + var firstContact = null; + + function showSidebar() { + html.classList.remove("sidebar-hidden"); + html.classList.add("sidebar-visible"); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute("tabIndex", 0); + }); + sidebarToggleButton.setAttribute("aria-expanded", true); + sidebar.setAttribute("aria-hidden", false); + try { + localStorage.setItem("mdbook-sidebar", "visible"); + } catch (e) {} + } + + var sidebarAnchorToggles = document.querySelectorAll("#sidebar a.toggle"); + + function toggleSection(ev) { + ev.currentTarget.parentElement.classList.toggle("expanded"); + } + + Array.from(sidebarAnchorToggles).forEach(function (el) { + el.addEventListener("click", toggleSection); + }); + + function hideSidebar() { + html.classList.remove("sidebar-visible"); + html.classList.add("sidebar-hidden"); + Array.from(sidebarLinks).forEach(function (link) { + link.setAttribute("tabIndex", -1); }); + sidebarToggleButton.setAttribute("aria-expanded", false); + sidebar.setAttribute("aria-hidden", true); + try { + localStorage.setItem("mdbook-sidebar", "hidden"); + } catch (e) {} + } + + // Toggle sidebar + sidebarToggleButton.addEventListener("click", function sidebarToggle() { + if (html.classList.contains("sidebar-hidden")) { + var current_width = parseInt( + document.documentElement.style.getPropertyValue("--sidebar-width"), + 10, + ); + if (current_width < 150) { + document.documentElement.style.setProperty("--sidebar-width", "150px"); + } + showSidebar(); + } else if (html.classList.contains("sidebar-visible")) { + hideSidebar(); + } else { + if (getComputedStyle(sidebar)["transform"] === "none") { + hideSidebar(); + } else { + showSidebar(); + } + } + }); + + sidebarResizeHandle.addEventListener("mousedown", initResize, false); + + function initResize(e) { + window.addEventListener("mousemove", resize, false); + window.addEventListener("mouseup", stopResize, false); + html.classList.add("sidebar-resizing"); + } + function resize(e) { + var pos = e.clientX - sidebar.offsetLeft; + if (pos < 20) { + hideSidebar(); + } else { + if (html.classList.contains("sidebar-hidden")) { + showSidebar(); + } + pos = Math.min(pos, window.innerWidth - 100); + document.documentElement.style.setProperty("--sidebar-width", pos + "px"); + } + } + //on mouseup remove windows functions mousemove & mouseup + function stopResize(e) { + html.classList.remove("sidebar-resizing"); + window.removeEventListener("mousemove", resize, false); + window.removeEventListener("mouseup", stopResize, false); + } + + document.addEventListener( + "touchstart", + function (e) { + firstContact = { + x: e.touches[0].clientX, + time: Date.now(), + }; + }, + { passive: true }, + ); + + document.addEventListener( + "touchmove", + function (e) { + if (!firstContact) return; + + var curX = e.touches[0].clientX; + var xDiff = curX - firstContact.x, + tDiff = Date.now() - firstContact.time; + + if (tDiff < 250 && Math.abs(xDiff) >= 150) { + if ( + xDiff >= 0 && + firstContact.x < Math.min(document.body.clientWidth * 0.25, 300) + ) + showSidebar(); + else if (xDiff < 0 && curX < 300) hideSidebar(); + + firstContact = null; + } + }, + { passive: true }, + ); + + // Scroll sidebar to current active section + var activeSection = document + .getElementById("sidebar") + .querySelector(".active"); + if (activeSection) { + // https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView + activeSection.scrollIntoView({ block: "center" }); + } })(); -(function clipboard() { - var clipButtons = document.querySelectorAll('.clip-button'); - - function hideTooltip(elem) { - elem.firstChild.innerText = ""; - elem.className = 'fa fa-copy clip-button'; +(function chapterNavigation() { + document.addEventListener("keydown", function (e) { + if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) { + return; } - - function showTooltip(elem, msg) { - elem.firstChild.innerText = msg; - elem.className = 'fa fa-copy tooltipped'; + if (window.search && window.search.hasFocus()) { + return; } - var clipboardSnippets = new ClipboardJS('.clip-button', { - text: function (trigger) { - hideTooltip(trigger); - let playground = trigger.closest("pre"); - return playground_text(playground, false); + switch (e.key) { + case "ArrowRight": + e.preventDefault(); + var nextButton = document.querySelector(".nav-chapters.next"); + if (nextButton) { + window.location.href = nextButton.href; } - }); + break; + case "ArrowLeft": + e.preventDefault(); + var previousButton = document.querySelector(".nav-chapters.previous"); + if (previousButton) { + window.location.href = previousButton.href; + } + break; + } + }); +})(); - Array.from(clipButtons).forEach(function (clipButton) { - clipButton.addEventListener('mouseout', function (e) { - hideTooltip(e.currentTarget); - }); +(function clipboard() { + var clipButtons = document.querySelectorAll(".clip-button"); + + function hideTooltip(elem) { + elem.firstChild.innerText = ""; + elem.className = "fa fa-copy clip-button"; + } + + function showTooltip(elem, msg) { + elem.firstChild.innerText = msg; + elem.className = "fa fa-copy tooltipped"; + } + + var clipboardSnippets = new ClipboardJS(".clip-button", { + text: function (trigger) { + hideTooltip(trigger); + let playground = trigger.closest("pre"); + return playground_text(playground, false); + }, + }); + + Array.from(clipButtons).forEach(function (clipButton) { + clipButton.addEventListener("mouseout", function (e) { + hideTooltip(e.currentTarget); }); + }); - clipboardSnippets.on('success', function (e) { - e.clearSelection(); - showTooltip(e.trigger, "Copied!"); - }); + clipboardSnippets.on("success", function (e) { + e.clearSelection(); + showTooltip(e.trigger, "Copied!"); + }); - clipboardSnippets.on('error', function (e) { - showTooltip(e.trigger, "Clipboard error!"); - }); + clipboardSnippets.on("error", function (e) { + showTooltip(e.trigger, "Clipboard error!"); + }); })(); -(function scrollToTop () { - var menuTitle = document.querySelector('.menu-title'); +(function scrollToTop() { + var menuTitle = document.querySelector(".menu-title"); - menuTitle.addEventListener('click', function () { - document.scrollingElement.scrollTo({ top: 0, behavior: 'smooth' }); - }); + menuTitle.addEventListener("click", function () { + document.scrollingElement.scrollTo({ top: 0, behavior: "smooth" }); + }); })(); (function controllMenu() { - var menu = document.getElementById('menu-bar'); - - (function controllPosition() { - var scrollTop = document.scrollingElement.scrollTop; - var prevScrollTop = scrollTop; - var minMenuY = -menu.clientHeight - 50; - // When the script loads, the page can be at any scroll (e.g. if you reforesh it). - menu.style.top = scrollTop + 'px'; - // Same as parseInt(menu.style.top.slice(0, -2), but faster - var topCache = menu.style.top.slice(0, -2); - menu.classList.remove('sticky'); - var stickyCache = false; // Same as menu.classList.contains('sticky'), but faster - document.addEventListener('scroll', function () { - scrollTop = Math.max(document.scrollingElement.scrollTop, 0); - // `null` means that it doesn't need to be updated - var nextSticky = null; - var nextTop = null; - var scrollDown = scrollTop > prevScrollTop; - var menuPosAbsoluteY = topCache - scrollTop; - if (scrollDown) { - nextSticky = false; - if (menuPosAbsoluteY > 0) { - nextTop = prevScrollTop; - } - } else { - if (menuPosAbsoluteY > 0) { - nextSticky = true; - } else if (menuPosAbsoluteY < minMenuY) { - nextTop = prevScrollTop + minMenuY; - } - } - if (nextSticky === true && stickyCache === false) { - menu.classList.add('sticky'); - stickyCache = true; - } else if (nextSticky === false && stickyCache === true) { - menu.classList.remove('sticky'); - stickyCache = false; - } - if (nextTop !== null) { - menu.style.top = nextTop + 'px'; - topCache = nextTop; - } - prevScrollTop = scrollTop; - }, { passive: true }); - })(); - (function controllBorder() { - menu.classList.remove('bordered'); - document.addEventListener('scroll', function () { - if (menu.offsetTop === 0) { - menu.classList.remove('bordered'); - } else { - menu.classList.add('bordered'); - } - }, { passive: true }); - })(); + var menu = document.getElementById("menu-bar"); + + (function controllPosition() { + var scrollTop = document.scrollingElement.scrollTop; + var prevScrollTop = scrollTop; + var minMenuY = -menu.clientHeight - 50; + // When the script loads, the page can be at any scroll (e.g. if you reforesh it). + menu.style.top = scrollTop + "px"; + // Same as parseInt(menu.style.top.slice(0, -2), but faster + var topCache = menu.style.top.slice(0, -2); + menu.classList.remove("sticky"); + var stickyCache = false; // Same as menu.classList.contains('sticky'), but faster + document.addEventListener( + "scroll", + function () { + scrollTop = Math.max(document.scrollingElement.scrollTop, 0); + // `null` means that it doesn't need to be updated + var nextSticky = null; + var nextTop = null; + var scrollDown = scrollTop > prevScrollTop; + var menuPosAbsoluteY = topCache - scrollTop; + if (scrollDown) { + nextSticky = false; + if (menuPosAbsoluteY > 0) { + nextTop = prevScrollTop; + } + } else { + if (menuPosAbsoluteY > 0) { + nextSticky = true; + } else if (menuPosAbsoluteY < minMenuY) { + nextTop = prevScrollTop + minMenuY; + } + } + if (nextSticky === true && stickyCache === false) { + menu.classList.add("sticky"); + stickyCache = true; + } else if (nextSticky === false && stickyCache === true) { + menu.classList.remove("sticky"); + stickyCache = false; + } + if (nextTop !== null) { + menu.style.top = nextTop + "px"; + topCache = nextTop; + } + prevScrollTop = scrollTop; + }, + { passive: true }, + ); + })(); + (function controllBorder() { + menu.classList.remove("bordered"); + document.addEventListener( + "scroll", + function () { + if (menu.offsetTop === 0) { + menu.classList.remove("bordered"); + } else { + menu.classList.add("bordered"); + } + }, + { passive: true }, + ); + })(); })();