Rollup merge of #96390 - GuillaumeGomez:es6-part2, r=notriddle
Switch JS code to ES6 - part 2 Part of #93058. It's based on https://github.com/rust-lang/rust/pull/96361 so it needs to wait for it to be merged first. r? `@notriddle`
This commit is contained in:
commit
bfb13ec691
7 changed files with 233 additions and 245 deletions
|
@ -1,9 +1,12 @@
|
||||||
// This file contains type definitions that are processed by the Closure Compiler but are
|
// This file contains type definitions that are processed by the Closure Compiler but are
|
||||||
// not put into the JavaScript we include as part of the documentation. It is used for
|
// not put into the JavaScript we include as part of the documentation. It is used for
|
||||||
// type checking. See README.md in this directory for more info.
|
// type checking. See README.md in this directory for more info.
|
||||||
|
/* eslint-env es6 */
|
||||||
|
/* eslint no-var: "error" */
|
||||||
|
/* eslint prefer-const: "error" */
|
||||||
|
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
var searchState;
|
let searchState;
|
||||||
function initSearch(searchIndex){}
|
function initSearch(searchIndex){}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -15,7 +18,7 @@ function initSearch(searchIndex){}
|
||||||
* generics: Array<QueryElement>,
|
* generics: Array<QueryElement>,
|
||||||
* }}
|
* }}
|
||||||
*/
|
*/
|
||||||
var QueryElement;
|
let QueryElement;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
@ -25,7 +28,7 @@ var QueryElement;
|
||||||
* userQuery: string,
|
* userQuery: string,
|
||||||
* }}
|
* }}
|
||||||
*/
|
*/
|
||||||
var ParserState;
|
let ParserState;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
@ -38,7 +41,7 @@ var ParserState;
|
||||||
* foundElems: number,
|
* foundElems: number,
|
||||||
* }}
|
* }}
|
||||||
*/
|
*/
|
||||||
var ParsedQuery;
|
let ParsedQuery;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
@ -53,7 +56,7 @@ var ParsedQuery;
|
||||||
* type: (Array<?>|null)
|
* type: (Array<?>|null)
|
||||||
* }}
|
* }}
|
||||||
*/
|
*/
|
||||||
var Row;
|
let Row;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
@ -63,7 +66,7 @@ var Row;
|
||||||
* query: ParsedQuery,
|
* query: ParsedQuery,
|
||||||
* }}
|
* }}
|
||||||
*/
|
*/
|
||||||
var ResultsTable;
|
let ResultsTable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
@ -80,4 +83,4 @@ var ResultsTable;
|
||||||
* ty: number,
|
* ty: number,
|
||||||
* }}
|
* }}
|
||||||
*/
|
*/
|
||||||
var Results;
|
let Results;
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
/* eslint-env es6 */
|
||||||
|
/* eslint no-var: "error" */
|
||||||
|
/* eslint prefer-const: "error" */
|
||||||
// Local js definitions:
|
// Local js definitions:
|
||||||
/* global addClass, getSettingValue, hasClass, searchState */
|
/* global addClass, getSettingValue, hasClass, searchState */
|
||||||
/* global onEach, onEachLazy, removeClass */
|
/* global onEach, onEachLazy, removeClass */
|
||||||
|
@ -11,7 +14,7 @@ if (!String.prototype.startsWith) {
|
||||||
}
|
}
|
||||||
if (!String.prototype.endsWith) {
|
if (!String.prototype.endsWith) {
|
||||||
String.prototype.endsWith = function(suffix, length) {
|
String.prototype.endsWith = function(suffix, length) {
|
||||||
var l = length || this.length;
|
const l = length || this.length;
|
||||||
return this.indexOf(suffix, l - suffix.length) !== -1;
|
return this.indexOf(suffix, l - suffix.length) !== -1;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -40,7 +43,7 @@ if (!DOMTokenList.prototype.remove) {
|
||||||
// Get a value from the rustdoc-vars div, which is used to convey data from
|
// Get a value from the rustdoc-vars div, which is used to convey data from
|
||||||
// Rust to the JS. If there is no such element, return null.
|
// Rust to the JS. If there is no such element, return null.
|
||||||
function getVar(name) {
|
function getVar(name) {
|
||||||
var el = document.getElementById("rustdoc-vars");
|
const el = document.getElementById("rustdoc-vars");
|
||||||
if (el) {
|
if (el) {
|
||||||
return el.attributes["data-" + name].value;
|
return el.attributes["data-" + name].value;
|
||||||
} else {
|
} else {
|
||||||
|
@ -59,7 +62,7 @@ function resourcePath(basename, extension) {
|
||||||
window.currentCrate = getVar("current-crate");
|
window.currentCrate = getVar("current-crate");
|
||||||
window.searchJS = resourcePath("search", ".js");
|
window.searchJS = resourcePath("search", ".js");
|
||||||
window.searchIndexJS = resourcePath("search-index", ".js");
|
window.searchIndexJS = resourcePath("search-index", ".js");
|
||||||
var sidebarVars = document.getElementById("sidebar-vars");
|
const sidebarVars = document.getElementById("sidebar-vars");
|
||||||
if (sidebarVars) {
|
if (sidebarVars) {
|
||||||
window.sidebarCurrent = {
|
window.sidebarCurrent = {
|
||||||
name: sidebarVars.attributes["data-name"].value,
|
name: sidebarVars.attributes["data-name"].value,
|
||||||
|
@ -68,8 +71,8 @@ function resourcePath(basename, extension) {
|
||||||
};
|
};
|
||||||
// FIXME: It would be nicer to generate this text content directly in HTML,
|
// FIXME: It would be nicer to generate this text content directly in HTML,
|
||||||
// but with the current code it's hard to get the right information in the right place.
|
// but with the current code it's hard to get the right information in the right place.
|
||||||
var mobileLocationTitle = document.querySelector(".mobile-topbar h2.location");
|
const mobileLocationTitle = document.querySelector(".mobile-topbar h2.location");
|
||||||
var locationTitle = document.querySelector(".sidebar h2.location");
|
const locationTitle = document.querySelector(".sidebar h2.location");
|
||||||
if (mobileLocationTitle && locationTitle) {
|
if (mobileLocationTitle && locationTitle) {
|
||||||
mobileLocationTitle.innerHTML = locationTitle.innerHTML;
|
mobileLocationTitle.innerHTML = locationTitle.innerHTML;
|
||||||
}
|
}
|
||||||
|
@ -91,16 +94,16 @@ function getVirtualKey(ev) {
|
||||||
return ev.key;
|
return ev.key;
|
||||||
}
|
}
|
||||||
|
|
||||||
var c = ev.charCode || ev.keyCode;
|
const c = ev.charCode || ev.keyCode;
|
||||||
if (c == 27) {
|
if (c == 27) {
|
||||||
return "Escape";
|
return "Escape";
|
||||||
}
|
}
|
||||||
return String.fromCharCode(c);
|
return String.fromCharCode(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
var THEME_PICKER_ELEMENT_ID = "theme-picker";
|
const THEME_PICKER_ELEMENT_ID = "theme-picker";
|
||||||
var THEMES_ELEMENT_ID = "theme-choices";
|
const THEMES_ELEMENT_ID = "theme-choices";
|
||||||
var MAIN_ID = "main-content";
|
const MAIN_ID = "main-content";
|
||||||
|
|
||||||
function getThemesElement() {
|
function getThemesElement() {
|
||||||
return document.getElementById(THEMES_ELEMENT_ID);
|
return document.getElementById(THEMES_ELEMENT_ID);
|
||||||
|
@ -116,8 +119,8 @@ function getNakedUrl() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function showThemeButtonState() {
|
function showThemeButtonState() {
|
||||||
var themePicker = getThemePickerElement();
|
const themePicker = getThemePickerElement();
|
||||||
var themeChoices = getThemesElement();
|
const themeChoices = getThemesElement();
|
||||||
|
|
||||||
themeChoices.style.display = "block";
|
themeChoices.style.display = "block";
|
||||||
themePicker.style.borderBottomRightRadius = "0";
|
themePicker.style.borderBottomRightRadius = "0";
|
||||||
|
@ -125,8 +128,8 @@ function showThemeButtonState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideThemeButtonState() {
|
function hideThemeButtonState() {
|
||||||
var themePicker = getThemePickerElement();
|
const themePicker = getThemePickerElement();
|
||||||
var themeChoices = getThemesElement();
|
const themeChoices = getThemesElement();
|
||||||
|
|
||||||
themeChoices.style.display = "none";
|
themeChoices.style.display = "none";
|
||||||
themePicker.style.borderBottomRightRadius = "3px";
|
themePicker.style.borderBottomRightRadius = "3px";
|
||||||
|
@ -138,9 +141,9 @@ function hideThemeButtonState() {
|
||||||
if (!document.location.href.startsWith("file:///")) {
|
if (!document.location.href.startsWith("file:///")) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var themeChoices = getThemesElement();
|
const themeChoices = getThemesElement();
|
||||||
var themePicker = getThemePickerElement();
|
const themePicker = getThemePickerElement();
|
||||||
var availableThemes = getVar("themes").split(",");
|
const availableThemes = getVar("themes").split(",");
|
||||||
|
|
||||||
removeClass(themeChoices.parentElement, "hidden");
|
removeClass(themeChoices.parentElement, "hidden");
|
||||||
|
|
||||||
|
@ -153,8 +156,8 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleThemeButtonsBlur(e) {
|
function handleThemeButtonsBlur(e) {
|
||||||
var active = document.activeElement;
|
const active = document.activeElement;
|
||||||
var related = e.relatedTarget;
|
const related = e.relatedTarget;
|
||||||
|
|
||||||
if (active.id !== THEME_PICKER_ELEMENT_ID &&
|
if (active.id !== THEME_PICKER_ELEMENT_ID &&
|
||||||
(!active.parentNode || active.parentNode.id !== THEMES_ELEMENT_ID) &&
|
(!active.parentNode || active.parentNode.id !== THEMES_ELEMENT_ID) &&
|
||||||
|
@ -168,7 +171,7 @@ function hideThemeButtonState() {
|
||||||
themePicker.onclick = switchThemeButtonState;
|
themePicker.onclick = switchThemeButtonState;
|
||||||
themePicker.onblur = handleThemeButtonsBlur;
|
themePicker.onblur = handleThemeButtonsBlur;
|
||||||
availableThemes.forEach(function(item) {
|
availableThemes.forEach(function(item) {
|
||||||
var but = document.createElement("button");
|
const but = document.createElement("button");
|
||||||
but.textContent = item;
|
but.textContent = item;
|
||||||
but.onclick = function() {
|
but.onclick = function() {
|
||||||
switchTheme(window.currentTheme, window.mainTheme, item, true);
|
switchTheme(window.currentTheme, window.mainTheme, item, true);
|
||||||
|
@ -236,10 +239,10 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getQueryStringParams: function() {
|
getQueryStringParams: function() {
|
||||||
var params = {};
|
const params = {};
|
||||||
window.location.search.substring(1).split("&").
|
window.location.search.substring(1).split("&").
|
||||||
map(function(s) {
|
map(function(s) {
|
||||||
var pair = s.split("=");
|
const pair = s.split("=");
|
||||||
params[decodeURIComponent(pair[0])] =
|
params[decodeURIComponent(pair[0])] =
|
||||||
typeof pair[1] === "undefined" ? null : decodeURIComponent(pair[1]);
|
typeof pair[1] === "undefined" ? null : decodeURIComponent(pair[1]);
|
||||||
});
|
});
|
||||||
|
@ -249,17 +252,17 @@ function hideThemeButtonState() {
|
||||||
return window.history && typeof window.history.pushState === "function";
|
return window.history && typeof window.history.pushState === "function";
|
||||||
},
|
},
|
||||||
setup: function() {
|
setup: function() {
|
||||||
var search_input = searchState.input;
|
const search_input = searchState.input;
|
||||||
if (!searchState.input) {
|
if (!searchState.input) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
function loadScript(url) {
|
function loadScript(url) {
|
||||||
var script = document.createElement('script');
|
const script = document.createElement('script');
|
||||||
script.src = url;
|
script.src = url;
|
||||||
document.head.append(script);
|
document.head.append(script);
|
||||||
}
|
}
|
||||||
|
|
||||||
var searchLoaded = false;
|
let searchLoaded = false;
|
||||||
function loadSearch() {
|
function loadSearch() {
|
||||||
if (!searchLoaded) {
|
if (!searchLoaded) {
|
||||||
searchLoaded = true;
|
searchLoaded = true;
|
||||||
|
@ -278,9 +281,9 @@ function hideThemeButtonState() {
|
||||||
loadSearch();
|
loadSearch();
|
||||||
}
|
}
|
||||||
|
|
||||||
var params = searchState.getQueryStringParams();
|
const params = searchState.getQueryStringParams();
|
||||||
if (params.search !== undefined) {
|
if (params.search !== undefined) {
|
||||||
var search = searchState.outputElement();
|
const search = searchState.outputElement();
|
||||||
search.innerHTML = "<h3 class=\"search-loading\">" +
|
search.innerHTML = "<h3 class=\"search-loading\">" +
|
||||||
searchState.loadingText + "</h3>";
|
searchState.loadingText + "</h3>";
|
||||||
searchState.showResults(search);
|
searchState.showResults(search);
|
||||||
|
@ -291,7 +294,7 @@ function hideThemeButtonState() {
|
||||||
|
|
||||||
function getPageId() {
|
function getPageId() {
|
||||||
if (window.location.hash) {
|
if (window.location.hash) {
|
||||||
var tmp = window.location.hash.replace(/^#/, "");
|
const tmp = window.location.hash.replace(/^#/, "");
|
||||||
if (tmp.length > 0) {
|
if (tmp.length > 0) {
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
@ -299,18 +302,18 @@ function hideThemeButtonState() {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var toggleAllDocsId = "toggle-all-docs";
|
const toggleAllDocsId = "toggle-all-docs";
|
||||||
var main = document.getElementById(MAIN_ID);
|
const main = document.getElementById(MAIN_ID);
|
||||||
var savedHash = "";
|
let savedHash = "";
|
||||||
|
|
||||||
function handleHashes(ev) {
|
function handleHashes(ev) {
|
||||||
var elem;
|
let elem;
|
||||||
var search = searchState.outputElement();
|
const search = searchState.outputElement();
|
||||||
if (ev !== null && search && !hasClass(search, "hidden") && ev.newURL) {
|
if (ev !== null && search && !hasClass(search, "hidden") && ev.newURL) {
|
||||||
// This block occurs when clicking on an element in the navbar while
|
// This block occurs when clicking on an element in the navbar while
|
||||||
// in a search.
|
// in a search.
|
||||||
searchState.hideResults(search);
|
searchState.hideResults(search);
|
||||||
var hash = ev.newURL.slice(ev.newURL.indexOf("#") + 1);
|
const hash = ev.newURL.slice(ev.newURL.indexOf("#") + 1);
|
||||||
if (searchState.browserSupportsHistoryApi()) {
|
if (searchState.browserSupportsHistoryApi()) {
|
||||||
// `window.location.search`` contains all the query parameters, not just `search`.
|
// `window.location.search`` contains all the query parameters, not just `search`.
|
||||||
history.replaceState(null, "",
|
history.replaceState(null, "",
|
||||||
|
@ -333,7 +336,7 @@ function hideThemeButtonState() {
|
||||||
|
|
||||||
function onHashChange(ev) {
|
function onHashChange(ev) {
|
||||||
// If we're in mobile mode, we should hide the sidebar in any case.
|
// If we're in mobile mode, we should hide the sidebar in any case.
|
||||||
var sidebar = document.getElementsByClassName("sidebar")[0];
|
const sidebar = document.getElementsByClassName("sidebar")[0];
|
||||||
removeClass(sidebar, "shown");
|
removeClass(sidebar, "shown");
|
||||||
handleHashes(ev);
|
handleHashes(ev);
|
||||||
}
|
}
|
||||||
|
@ -386,8 +389,8 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleEscape(ev) {
|
function handleEscape(ev) {
|
||||||
var help = getHelpElement(false);
|
const help = getHelpElement(false);
|
||||||
var search = searchState.outputElement();
|
const search = searchState.outputElement();
|
||||||
if (help && !hasClass(help, "hidden")) {
|
if (help && !hasClass(help, "hidden")) {
|
||||||
displayHelp(false, ev, help);
|
displayHelp(false, ev, help);
|
||||||
} else if (search && !hasClass(search, "hidden")) {
|
} else if (search && !hasClass(search, "hidden")) {
|
||||||
|
@ -399,13 +402,15 @@ function hideThemeButtonState() {
|
||||||
hideThemeButtonState();
|
hideThemeButtonState();
|
||||||
}
|
}
|
||||||
|
|
||||||
var disableShortcuts = getSettingValue("disable-shortcuts") === "true";
|
const disableShortcuts = getSettingValue("disable-shortcuts") === "true";
|
||||||
function handleShortcut(ev) {
|
function handleShortcut(ev) {
|
||||||
// Don't interfere with browser shortcuts
|
// Don't interfere with browser shortcuts
|
||||||
if (ev.ctrlKey || ev.altKey || ev.metaKey || disableShortcuts) {
|
if (ev.ctrlKey || ev.altKey || ev.metaKey || disableShortcuts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let themePicker;
|
||||||
|
|
||||||
if (document.activeElement.tagName === "INPUT") {
|
if (document.activeElement.tagName === "INPUT") {
|
||||||
switch (getVirtualKey(ev)) {
|
switch (getVirtualKey(ev)) {
|
||||||
case "Escape":
|
case "Escape":
|
||||||
|
@ -439,7 +444,7 @@ function hideThemeButtonState() {
|
||||||
case "T":
|
case "T":
|
||||||
displayHelp(false, ev);
|
displayHelp(false, ev);
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
var themePicker = getThemePickerElement();
|
themePicker = getThemePickerElement();
|
||||||
themePicker.click();
|
themePicker.click();
|
||||||
themePicker.focus();
|
themePicker.focus();
|
||||||
break;
|
break;
|
||||||
|
@ -453,8 +458,8 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleThemeKeyDown(ev) {
|
function handleThemeKeyDown(ev) {
|
||||||
var active = document.activeElement;
|
const active = document.activeElement;
|
||||||
var themes = getThemesElement();
|
const themes = getThemesElement();
|
||||||
switch (getVirtualKey(ev)) {
|
switch (getVirtualKey(ev)) {
|
||||||
case "ArrowUp":
|
case "ArrowUp":
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
@ -499,36 +504,11 @@ function hideThemeButtonState() {
|
||||||
document.addEventListener("keypress", handleShortcut);
|
document.addEventListener("keypress", handleShortcut);
|
||||||
document.addEventListener("keydown", handleShortcut);
|
document.addEventListener("keydown", handleShortcut);
|
||||||
|
|
||||||
(function() {
|
|
||||||
var x = document.getElementsByClassName("version-selector");
|
|
||||||
if (x.length > 0) {
|
|
||||||
x[0].onchange = function() {
|
|
||||||
var i, match,
|
|
||||||
url = document.location.href,
|
|
||||||
stripped = "",
|
|
||||||
len = window.rootPath.match(/\.\.\//g).length + 1;
|
|
||||||
|
|
||||||
for (i = 0; i < len; ++i) {
|
|
||||||
match = url.match(/\/[^/]*$/);
|
|
||||||
if (i < len - 1) {
|
|
||||||
stripped = match[0] + stripped;
|
|
||||||
}
|
|
||||||
url = url.substring(0, url.length - match[0].length);
|
|
||||||
}
|
|
||||||
|
|
||||||
var selectedVersion = document.getElementsByClassName("version-selector")[0].value;
|
|
||||||
url += "/" + selectedVersion + stripped;
|
|
||||||
|
|
||||||
document.location.href = url;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}());
|
|
||||||
|
|
||||||
// delayed sidebar rendering.
|
// delayed sidebar rendering.
|
||||||
window.initSidebarItems = function(items) {
|
window.initSidebarItems = function(items) {
|
||||||
var sidebar = document.getElementsByClassName("sidebar-elems")[0];
|
const sidebar = document.getElementsByClassName("sidebar-elems")[0];
|
||||||
var others;
|
let others;
|
||||||
var current = window.sidebarCurrent;
|
const current = window.sidebarCurrent;
|
||||||
|
|
||||||
function addSidebarCrates(crates) {
|
function addSidebarCrates(crates) {
|
||||||
if (!hasClass(document.body, "crate")) {
|
if (!hasClass(document.body, "crate")) {
|
||||||
|
@ -536,23 +516,23 @@ function hideThemeButtonState() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Draw a convenient sidebar of known crates if we have a listing
|
// Draw a convenient sidebar of known crates if we have a listing
|
||||||
var div = document.createElement("div");
|
const div = document.createElement("div");
|
||||||
div.className = "block crate";
|
div.className = "block crate";
|
||||||
div.innerHTML = "<h3>Crates</h3>";
|
div.innerHTML = "<h3>Crates</h3>";
|
||||||
var ul = document.createElement("ul");
|
const ul = document.createElement("ul");
|
||||||
div.appendChild(ul);
|
div.appendChild(ul);
|
||||||
|
|
||||||
for (var i = 0; i < crates.length; ++i) {
|
for (const crate of crates) {
|
||||||
var klass = "crate";
|
let klass = "crate";
|
||||||
if (window.rootPath !== "./" && crates[i] === window.currentCrate) {
|
if (window.rootPath !== "./" && crate === window.currentCrate) {
|
||||||
klass += " current";
|
klass += " current";
|
||||||
}
|
}
|
||||||
var link = document.createElement("a");
|
const link = document.createElement("a");
|
||||||
link.href = window.rootPath + crates[i] + "/index.html";
|
link.href = window.rootPath + crate + "/index.html";
|
||||||
link.className = klass;
|
link.className = klass;
|
||||||
link.textContent = crates[i];
|
link.textContent = crate;
|
||||||
|
|
||||||
var li = document.createElement("li");
|
const li = document.createElement("li");
|
||||||
li.appendChild(link);
|
li.appendChild(link);
|
||||||
ul.appendChild(li);
|
ul.appendChild(li);
|
||||||
}
|
}
|
||||||
|
@ -568,39 +548,38 @@ function hideThemeButtonState() {
|
||||||
* "Modules", or "Macros".
|
* "Modules", or "Macros".
|
||||||
*/
|
*/
|
||||||
function block(shortty, id, longty) {
|
function block(shortty, id, longty) {
|
||||||
var filtered = items[shortty];
|
const filtered = items[shortty];
|
||||||
if (!filtered) {
|
if (!filtered) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var div = document.createElement("div");
|
const div = document.createElement("div");
|
||||||
div.className = "block " + shortty;
|
div.className = "block " + shortty;
|
||||||
var h3 = document.createElement("h3");
|
const h3 = document.createElement("h3");
|
||||||
h3.innerHTML = `<a href="index.html#${id}">${longty}</a>`;
|
h3.innerHTML = `<a href="index.html#${id}">${longty}</a>`;
|
||||||
div.appendChild(h3);
|
div.appendChild(h3);
|
||||||
var ul = document.createElement("ul");
|
const ul = document.createElement("ul");
|
||||||
|
|
||||||
for (var i = 0, len = filtered.length; i < len; ++i) {
|
for (const item of filtered) {
|
||||||
var item = filtered[i];
|
const name = item[0];
|
||||||
var name = item[0];
|
const desc = item[1]; // can be null
|
||||||
var desc = item[1]; // can be null
|
|
||||||
|
|
||||||
var klass = shortty;
|
let klass = shortty;
|
||||||
if (name === current.name && shortty === current.ty) {
|
if (name === current.name && shortty === current.ty) {
|
||||||
klass += " current";
|
klass += " current";
|
||||||
}
|
}
|
||||||
var path;
|
let path;
|
||||||
if (shortty === "mod") {
|
if (shortty === "mod") {
|
||||||
path = name + "/index.html";
|
path = name + "/index.html";
|
||||||
} else {
|
} else {
|
||||||
path = shortty + "." + name + ".html";
|
path = shortty + "." + name + ".html";
|
||||||
}
|
}
|
||||||
var link = document.createElement("a");
|
const link = document.createElement("a");
|
||||||
link.href = current.relpath + path;
|
link.href = current.relpath + path;
|
||||||
link.title = desc;
|
link.title = desc;
|
||||||
link.className = klass;
|
link.className = klass;
|
||||||
link.textContent = name;
|
link.textContent = name;
|
||||||
var li = document.createElement("li");
|
const li = document.createElement("li");
|
||||||
li.appendChild(link);
|
li.appendChild(link);
|
||||||
ul.appendChild(li);
|
ul.appendChild(li);
|
||||||
}
|
}
|
||||||
|
@ -613,7 +592,7 @@ function hideThemeButtonState() {
|
||||||
others.className = "others";
|
others.className = "others";
|
||||||
sidebar.appendChild(others);
|
sidebar.appendChild(others);
|
||||||
|
|
||||||
var isModule = hasClass(document.body, "mod");
|
const isModule = hasClass(document.body, "mod");
|
||||||
if (!isModule) {
|
if (!isModule) {
|
||||||
block("primitive", "primitives", "Primitive Types");
|
block("primitive", "primitives", "Primitive Types");
|
||||||
block("mod", "modules", "Modules");
|
block("mod", "modules", "Modules");
|
||||||
|
@ -638,8 +617,9 @@ function hideThemeButtonState() {
|
||||||
};
|
};
|
||||||
|
|
||||||
window.register_implementors = function(imp) {
|
window.register_implementors = function(imp) {
|
||||||
var implementors = document.getElementById("implementors-list");
|
const implementors = document.getElementById("implementors-list");
|
||||||
var synthetic_implementors = document.getElementById("synthetic-implementors-list");
|
const synthetic_implementors = document.getElementById("synthetic-implementors-list");
|
||||||
|
const inlined_types = new Set();
|
||||||
|
|
||||||
if (synthetic_implementors) {
|
if (synthetic_implementors) {
|
||||||
// This `inlined_types` variable is used to avoid having the same implementation
|
// This `inlined_types` variable is used to avoid having the same implementation
|
||||||
|
@ -647,9 +627,8 @@ function hideThemeButtonState() {
|
||||||
//
|
//
|
||||||
// By the way, this is only used by and useful for traits implemented automatically
|
// By the way, this is only used by and useful for traits implemented automatically
|
||||||
// (like "Send" and "Sync").
|
// (like "Send" and "Sync").
|
||||||
var inlined_types = new Set();
|
|
||||||
onEachLazy(synthetic_implementors.getElementsByClassName("impl"), function(el) {
|
onEachLazy(synthetic_implementors.getElementsByClassName("impl"), function(el) {
|
||||||
var aliases = el.getAttribute("data-aliases");
|
const aliases = el.getAttribute("data-aliases");
|
||||||
if (!aliases) {
|
if (!aliases) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -659,48 +638,48 @@ function hideThemeButtonState() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentNbImpls = implementors.getElementsByClassName("impl").length;
|
let currentNbImpls = implementors.getElementsByClassName("impl").length;
|
||||||
var traitName = document.querySelector("h1.fqn > .in-band > .trait").textContent;
|
const traitName = document.querySelector("h1.fqn > .in-band > .trait").textContent;
|
||||||
var baseIdName = "impl-" + traitName + "-";
|
const baseIdName = "impl-" + traitName + "-";
|
||||||
var libs = Object.getOwnPropertyNames(imp);
|
const libs = Object.getOwnPropertyNames(imp);
|
||||||
for (var i = 0, llength = libs.length; i < llength; ++i) {
|
for (const lib of libs) {
|
||||||
if (libs[i] === window.currentCrate) { continue; }
|
if (lib === window.currentCrate) {
|
||||||
var structs = imp[libs[i]];
|
continue;
|
||||||
|
}
|
||||||
|
const structs = imp[lib];
|
||||||
|
|
||||||
struct_loop:
|
struct_loop:
|
||||||
for (var j = 0, slength = structs.length; j < slength; ++j) {
|
for (const struct of structs) {
|
||||||
var struct = structs[j];
|
const list = struct.synthetic ? synthetic_implementors : implementors;
|
||||||
|
|
||||||
var list = struct.synthetic ? synthetic_implementors : implementors;
|
|
||||||
|
|
||||||
if (struct.synthetic) {
|
if (struct.synthetic) {
|
||||||
for (var k = 0, stlength = struct.types.length; k < stlength; k++) {
|
for (const struct_type of struct.types) {
|
||||||
if (inlined_types.has(struct.types[k])) {
|
if (inlined_types.has(struct_type)) {
|
||||||
continue struct_loop;
|
continue struct_loop;
|
||||||
}
|
}
|
||||||
inlined_types.add(struct.types[k]);
|
inlined_types.add(struct_type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var code = document.createElement("h3");
|
const code = document.createElement("h3");
|
||||||
code.innerHTML = struct.text;
|
code.innerHTML = struct.text;
|
||||||
addClass(code, "code-header");
|
addClass(code, "code-header");
|
||||||
addClass(code, "in-band");
|
addClass(code, "in-band");
|
||||||
|
|
||||||
onEachLazy(code.getElementsByTagName("a"), function(elem) {
|
onEachLazy(code.getElementsByTagName("a"), function(elem) {
|
||||||
var href = elem.getAttribute("href");
|
const href = elem.getAttribute("href");
|
||||||
|
|
||||||
if (href && href.indexOf("http") !== 0) {
|
if (href && href.indexOf("http") !== 0) {
|
||||||
elem.setAttribute("href", window.rootPath + href);
|
elem.setAttribute("href", window.rootPath + href);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var currentId = baseIdName + currentNbImpls;
|
const currentId = baseIdName + currentNbImpls;
|
||||||
var anchor = document.createElement("a");
|
const anchor = document.createElement("a");
|
||||||
anchor.href = "#" + currentId;
|
anchor.href = "#" + currentId;
|
||||||
addClass(anchor, "anchor");
|
addClass(anchor, "anchor");
|
||||||
|
|
||||||
var display = document.createElement("div");
|
const display = document.createElement("div");
|
||||||
display.id = currentId;
|
display.id = currentId;
|
||||||
addClass(display, "impl");
|
addClass(display, "impl");
|
||||||
display.appendChild(anchor);
|
display.appendChild(anchor);
|
||||||
|
@ -725,11 +704,11 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleAllDocs() {
|
function toggleAllDocs() {
|
||||||
var innerToggle = document.getElementById(toggleAllDocsId);
|
const innerToggle = document.getElementById(toggleAllDocsId);
|
||||||
if (!innerToggle) {
|
if (!innerToggle) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var sectionIsCollapsed = false;
|
let sectionIsCollapsed = false;
|
||||||
if (hasClass(innerToggle, "will-expand")) {
|
if (hasClass(innerToggle, "will-expand")) {
|
||||||
removeClass(innerToggle, "will-expand");
|
removeClass(innerToggle, "will-expand");
|
||||||
onEachLazy(document.getElementsByClassName("rustdoc-toggle"), function(e) {
|
onEachLazy(document.getElementsByClassName("rustdoc-toggle"), function(e) {
|
||||||
|
@ -759,17 +738,17 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var toggles = document.getElementById(toggleAllDocsId);
|
const toggles = document.getElementById(toggleAllDocsId);
|
||||||
if (toggles) {
|
if (toggles) {
|
||||||
toggles.onclick = toggleAllDocs;
|
toggles.onclick = toggleAllDocs;
|
||||||
}
|
}
|
||||||
|
|
||||||
var hideMethodDocs = getSettingValue("auto-hide-method-docs") === "true";
|
const hideMethodDocs = getSettingValue("auto-hide-method-docs") === "true";
|
||||||
var hideImplementations = getSettingValue("auto-hide-trait-implementations") === "true";
|
const hideImplementations = getSettingValue("auto-hide-trait-implementations") === "true";
|
||||||
var hideLargeItemContents = getSettingValue("auto-hide-large-items") !== "false";
|
const hideLargeItemContents = getSettingValue("auto-hide-large-items") !== "false";
|
||||||
|
|
||||||
function setImplementorsTogglesOpen(id, open) {
|
function setImplementorsTogglesOpen(id, open) {
|
||||||
var list = document.getElementById(id);
|
const list = document.getElementById(id);
|
||||||
if (list !== null) {
|
if (list !== null) {
|
||||||
onEachLazy(list.getElementsByClassName("implementors-toggle"), function(e) {
|
onEachLazy(list.getElementsByClassName("implementors-toggle"), function(e) {
|
||||||
e.open = open;
|
e.open = open;
|
||||||
|
@ -792,7 +771,7 @@ function hideThemeButtonState() {
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var pageId = getPageId();
|
const pageId = getPageId();
|
||||||
if (pageId !== null) {
|
if (pageId !== null) {
|
||||||
expandSection(pageId);
|
expandSection(pageId);
|
||||||
}
|
}
|
||||||
|
@ -800,15 +779,15 @@ function hideThemeButtonState() {
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
// To avoid checking on "rustdoc-line-numbers" value on every loop...
|
// To avoid checking on "rustdoc-line-numbers" value on every loop...
|
||||||
var lineNumbersFunc = function() {};
|
let lineNumbersFunc = function() {};
|
||||||
if (getSettingValue("line-numbers") === "true") {
|
if (getSettingValue("line-numbers") === "true") {
|
||||||
lineNumbersFunc = function(x) {
|
lineNumbersFunc = function(x) {
|
||||||
var count = x.textContent.split("\n").length;
|
const count = x.textContent.split("\n").length;
|
||||||
var elems = [];
|
const elems = [];
|
||||||
for (var i = 0; i < count; ++i) {
|
for (let i = 0; i < count; ++i) {
|
||||||
elems.push(i + 1);
|
elems.push(i + 1);
|
||||||
}
|
}
|
||||||
var node = document.createElement("pre");
|
const node = document.createElement("pre");
|
||||||
addClass(node, "line-number");
|
addClass(node, "line-number");
|
||||||
node.innerHTML = elems.join("\n");
|
node.innerHTML = elems.join("\n");
|
||||||
x.parentNode.insertBefore(node, x);
|
x.parentNode.insertBefore(node, x);
|
||||||
|
@ -835,12 +814,12 @@ function hideThemeButtonState() {
|
||||||
}());
|
}());
|
||||||
|
|
||||||
function hideSidebar() {
|
function hideSidebar() {
|
||||||
var sidebar = document.getElementsByClassName("sidebar")[0];
|
const sidebar = document.getElementsByClassName("sidebar")[0];
|
||||||
removeClass(sidebar, "shown");
|
removeClass(sidebar, "shown");
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleClick(id, f) {
|
function handleClick(id, f) {
|
||||||
var elem = document.getElementById(id);
|
const elem = document.getElementById(id);
|
||||||
if (elem) {
|
if (elem) {
|
||||||
elem.addEventListener("click", f);
|
elem.addEventListener("click", f);
|
||||||
}
|
}
|
||||||
|
@ -879,10 +858,10 @@ function hideThemeButtonState() {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
var sidebar_menu_toggle = document.getElementsByClassName("sidebar-menu-toggle")[0];
|
const sidebar_menu_toggle = document.getElementsByClassName("sidebar-menu-toggle")[0];
|
||||||
if (sidebar_menu_toggle) {
|
if (sidebar_menu_toggle) {
|
||||||
sidebar_menu_toggle.addEventListener("click", function() {
|
sidebar_menu_toggle.addEventListener("click", function() {
|
||||||
var sidebar = document.getElementsByClassName("sidebar")[0];
|
const sidebar = document.getElementsByClassName("sidebar")[0];
|
||||||
if (!hasClass(sidebar, "shown")) {
|
if (!hasClass(sidebar, "shown")) {
|
||||||
addClass(sidebar, "shown");
|
addClass(sidebar, "shown");
|
||||||
} else {
|
} else {
|
||||||
|
@ -891,8 +870,8 @@ function hideThemeButtonState() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var buildHelperPopup = function() {
|
let buildHelperPopup = function() {
|
||||||
var popup = document.createElement("aside");
|
const popup = document.createElement("aside");
|
||||||
addClass(popup, "hidden");
|
addClass(popup, "hidden");
|
||||||
popup.id = "help";
|
popup.id = "help";
|
||||||
|
|
||||||
|
@ -903,13 +882,13 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var book_info = document.createElement("span");
|
const book_info = document.createElement("span");
|
||||||
book_info.className = "top";
|
book_info.className = "top";
|
||||||
book_info.innerHTML = "You can find more information in \
|
book_info.innerHTML = "You can find more information in \
|
||||||
<a href=\"https://doc.rust-lang.org/rustdoc/\">the rustdoc book</a>.";
|
<a href=\"https://doc.rust-lang.org/rustdoc/\">the rustdoc book</a>.";
|
||||||
|
|
||||||
var container = document.createElement("div");
|
const container = document.createElement("div");
|
||||||
var shortcuts = [
|
const shortcuts = [
|
||||||
["?", "Show this help dialog"],
|
["?", "Show this help dialog"],
|
||||||
["S", "Focus the search field"],
|
["S", "Focus the search field"],
|
||||||
["T", "Focus the theme picker menu"],
|
["T", "Focus the theme picker menu"],
|
||||||
|
@ -927,11 +906,11 @@ function hideThemeButtonState() {
|
||||||
})
|
})
|
||||||
.join("") + "</dt><dd>" + x[1] + "</dd>";
|
.join("") + "</dt><dd>" + x[1] + "</dd>";
|
||||||
}).join("");
|
}).join("");
|
||||||
var div_shortcuts = document.createElement("div");
|
const div_shortcuts = document.createElement("div");
|
||||||
addClass(div_shortcuts, "shortcuts");
|
addClass(div_shortcuts, "shortcuts");
|
||||||
div_shortcuts.innerHTML = "<h2>Keyboard Shortcuts</h2><dl>" + shortcuts + "</dl></div>";
|
div_shortcuts.innerHTML = "<h2>Keyboard Shortcuts</h2><dl>" + shortcuts + "</dl></div>";
|
||||||
|
|
||||||
var infos = [
|
const infos = [
|
||||||
"Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to \
|
"Prefix searches with a type followed by a colon (e.g., <code>fn:</code>) to \
|
||||||
restrict the search to a given item kind.",
|
restrict the search to a given item kind.",
|
||||||
"Accepted kinds are: <code>fn</code>, <code>mod</code>, <code>struct</code>, \
|
"Accepted kinds are: <code>fn</code>, <code>mod</code>, <code>struct</code>, \
|
||||||
|
@ -947,7 +926,7 @@ function hideThemeButtonState() {
|
||||||
].map(function(x) {
|
].map(function(x) {
|
||||||
return "<p>" + x + "</p>";
|
return "<p>" + x + "</p>";
|
||||||
}).join("");
|
}).join("");
|
||||||
var div_infos = document.createElement("div");
|
const div_infos = document.createElement("div");
|
||||||
addClass(div_infos, "infos");
|
addClass(div_infos, "infos");
|
||||||
div_infos.innerHTML = "<h2>Search Tricks</h2>" + infos;
|
div_infos.innerHTML = "<h2>Search Tricks</h2>" + infos;
|
||||||
|
|
||||||
|
@ -955,9 +934,9 @@ function hideThemeButtonState() {
|
||||||
container.appendChild(div_shortcuts);
|
container.appendChild(div_shortcuts);
|
||||||
container.appendChild(div_infos);
|
container.appendChild(div_infos);
|
||||||
|
|
||||||
var rustdoc_version = document.createElement("span");
|
const rustdoc_version = document.createElement("span");
|
||||||
rustdoc_version.className = "bottom";
|
rustdoc_version.className = "bottom";
|
||||||
var rustdoc_version_code = document.createElement("code");
|
const rustdoc_version_code = document.createElement("code");
|
||||||
rustdoc_version_code.innerText = "rustdoc " + getVar("rustdoc-version");
|
rustdoc_version_code.innerText = "rustdoc " + getVar("rustdoc-version");
|
||||||
rustdoc_version.appendChild(rustdoc_version_code);
|
rustdoc_version.appendChild(rustdoc_version_code);
|
||||||
|
|
||||||
|
@ -975,11 +954,11 @@ function hideThemeButtonState() {
|
||||||
}());
|
}());
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
var reset_button_timeout = null;
|
let reset_button_timeout = null;
|
||||||
|
|
||||||
window.copy_path = function(but) {
|
window.copy_path = function(but) {
|
||||||
var parent = but.parentElement;
|
const parent = but.parentElement;
|
||||||
var path = [];
|
const path = [];
|
||||||
|
|
||||||
onEach(parent.childNodes, function(child) {
|
onEach(parent.childNodes, function(child) {
|
||||||
if (child.tagName === 'A') {
|
if (child.tagName === 'A') {
|
||||||
|
@ -987,7 +966,7 @@ function hideThemeButtonState() {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var el = document.createElement('textarea');
|
const el = document.createElement('textarea');
|
||||||
el.value = path.join('::');
|
el.value = path.join('::');
|
||||||
el.setAttribute('readonly', '');
|
el.setAttribute('readonly', '');
|
||||||
// To not make it appear on the screen.
|
// To not make it appear on the screen.
|
||||||
|
@ -1002,7 +981,7 @@ function hideThemeButtonState() {
|
||||||
// There is always one children, but multiple childNodes.
|
// There is always one children, but multiple childNodes.
|
||||||
but.children[0].style.display = 'none';
|
but.children[0].style.display = 'none';
|
||||||
|
|
||||||
var tmp;
|
let tmp;
|
||||||
if (but.childNodes.length < 2) {
|
if (but.childNodes.length < 2) {
|
||||||
tmp = document.createTextNode('✓');
|
tmp = document.createTextNode('✓');
|
||||||
but.appendChild(tmp);
|
but.appendChild(tmp);
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
/* global addClass, hasClass, removeClass, onEach */
|
/* eslint-env es6 */
|
||||||
|
/* eslint no-var: "error" */
|
||||||
|
/* eslint prefer-const: "error" */
|
||||||
|
/* global addClass, hasClass, removeClass, onEachLazy */
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
// Number of lines shown when code viewer is not expanded
|
// Number of lines shown when code viewer is not expanded
|
||||||
|
@ -6,19 +9,19 @@
|
||||||
|
|
||||||
// Scroll code block to the given code location
|
// Scroll code block to the given code location
|
||||||
function scrollToLoc(elt, loc) {
|
function scrollToLoc(elt, loc) {
|
||||||
var lines = elt.querySelector('.line-numbers');
|
const lines = elt.querySelector('.line-numbers');
|
||||||
var scrollOffset;
|
let scrollOffset;
|
||||||
|
|
||||||
// If the block is greater than the size of the viewer,
|
// If the block is greater than the size of the viewer,
|
||||||
// then scroll to the top of the block. Otherwise scroll
|
// then scroll to the top of the block. Otherwise scroll
|
||||||
// to the middle of the block.
|
// to the middle of the block.
|
||||||
if (loc[1] - loc[0] > MAX_LINES) {
|
if (loc[1] - loc[0] > MAX_LINES) {
|
||||||
var line = Math.max(0, loc[0] - 1);
|
const line = Math.max(0, loc[0] - 1);
|
||||||
scrollOffset = lines.children[line].offsetTop;
|
scrollOffset = lines.children[line].offsetTop;
|
||||||
} else {
|
} else {
|
||||||
var wrapper = elt.querySelector(".code-wrapper");
|
const wrapper = elt.querySelector(".code-wrapper");
|
||||||
var halfHeight = wrapper.offsetHeight / 2;
|
const halfHeight = wrapper.offsetHeight / 2;
|
||||||
var offsetMid = (lines.children[loc[0]].offsetTop
|
const offsetMid = (lines.children[loc[0]].offsetTop
|
||||||
+ lines.children[loc[1]].offsetTop) / 2;
|
+ lines.children[loc[1]].offsetTop) / 2;
|
||||||
scrollOffset = offsetMid - halfHeight;
|
scrollOffset = offsetMid - halfHeight;
|
||||||
}
|
}
|
||||||
|
@ -28,21 +31,21 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateScrapedExample(example) {
|
function updateScrapedExample(example) {
|
||||||
var locs = JSON.parse(example.attributes.getNamedItem("data-locs").textContent);
|
const locs = JSON.parse(example.attributes.getNamedItem("data-locs").textContent);
|
||||||
var locIndex = 0;
|
let locIndex = 0;
|
||||||
var highlights = example.querySelectorAll('.highlight');
|
const highlights = Array.prototype.slice.call(example.querySelectorAll('.highlight'));
|
||||||
var link = example.querySelector('.scraped-example-title a');
|
const link = example.querySelector('.scraped-example-title a');
|
||||||
|
|
||||||
if (locs.length > 1) {
|
if (locs.length > 1) {
|
||||||
// Toggle through list of examples in a given file
|
// Toggle through list of examples in a given file
|
||||||
var onChangeLoc = function(changeIndex) {
|
const onChangeLoc = function(changeIndex) {
|
||||||
removeClass(highlights[locIndex], 'focus');
|
removeClass(highlights[locIndex], 'focus');
|
||||||
changeIndex();
|
changeIndex();
|
||||||
scrollToLoc(example, locs[locIndex][0]);
|
scrollToLoc(example, locs[locIndex][0]);
|
||||||
addClass(highlights[locIndex], 'focus');
|
addClass(highlights[locIndex], 'focus');
|
||||||
|
|
||||||
var url = locs[locIndex][1];
|
const url = locs[locIndex][1];
|
||||||
var title = locs[locIndex][2];
|
const title = locs[locIndex][2];
|
||||||
|
|
||||||
link.href = url;
|
link.href = url;
|
||||||
link.innerHTML = title;
|
link.innerHTML = title;
|
||||||
|
@ -63,7 +66,7 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var expandButton = example.querySelector('.expand');
|
const expandButton = example.querySelector('.expand');
|
||||||
if (expandButton) {
|
if (expandButton) {
|
||||||
expandButton.addEventListener('click', function () {
|
expandButton.addEventListener('click', function () {
|
||||||
if (hasClass(example, "expanded")) {
|
if (hasClass(example, "expanded")) {
|
||||||
|
@ -79,24 +82,24 @@
|
||||||
scrollToLoc(example, locs[0][0]);
|
scrollToLoc(example, locs[0][0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
var firstExamples = document.querySelectorAll('.scraped-example-list > .scraped-example');
|
const firstExamples = document.querySelectorAll('.scraped-example-list > .scraped-example');
|
||||||
onEach(firstExamples, updateScrapedExample);
|
onEachLazy(firstExamples, updateScrapedExample);
|
||||||
onEach(document.querySelectorAll('.more-examples-toggle'), function(toggle) {
|
onEachLazy(document.querySelectorAll('.more-examples-toggle'), function(toggle) {
|
||||||
// Allow users to click the left border of the <details> section to close it,
|
// Allow users to click the left border of the <details> section to close it,
|
||||||
// since the section can be large and finding the [+] button is annoying.
|
// since the section can be large and finding the [+] button is annoying.
|
||||||
toggle.querySelectorAll('.toggle-line, .hide-more').forEach(button => {
|
onEachLazy(toggle.querySelectorAll('.toggle-line, .hide-more'), button => {
|
||||||
button.addEventListener('click', function() {
|
button.addEventListener('click', function() {
|
||||||
toggle.open = false;
|
toggle.open = false;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var moreExamples = toggle.querySelectorAll('.scraped-example');
|
const moreExamples = toggle.querySelectorAll('.scraped-example');
|
||||||
toggle.querySelector('summary').addEventListener('click', function() {
|
toggle.querySelector('summary').addEventListener('click', function() {
|
||||||
// Wrapping in setTimeout ensures the update happens after the elements are actually
|
// Wrapping in setTimeout ensures the update happens after the elements are actually
|
||||||
// visible. This is necessary since updateScrapedExample calls scrollToLoc which
|
// visible. This is necessary since updateScrapedExample calls scrollToLoc which
|
||||||
// depends on offsetHeight, a property that requires an element to be visible to
|
// depends on offsetHeight, a property that requires an element to be visible to
|
||||||
// compute correctly.
|
// compute correctly.
|
||||||
setTimeout(function() { onEach(moreExamples, updateScrapedExample); });
|
setTimeout(function() { onEachLazy(moreExamples, updateScrapedExample); });
|
||||||
}, {once: true});
|
}, {once: true});
|
||||||
});
|
});
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -112,10 +112,6 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
* @type {Array<Row>}
|
* @type {Array<Row>}
|
||||||
*/
|
*/
|
||||||
let searchIndex;
|
let searchIndex;
|
||||||
/**
|
|
||||||
* @type {Array<string>}
|
|
||||||
*/
|
|
||||||
let searchWords = [];
|
|
||||||
let currentResults;
|
let currentResults;
|
||||||
const ALIASES = {};
|
const ALIASES = {};
|
||||||
const params = searchState.getQueryStringParams();
|
const params = searchState.getQueryStringParams();
|
||||||
|
@ -2129,7 +2125,10 @@ window.initSearch = function(rawSearchIndex) {
|
||||||
search(undefined, true);
|
search(undefined, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
searchWords = buildIndex(rawSearchIndex);
|
/**
|
||||||
|
* @type {Array<string>}
|
||||||
|
*/
|
||||||
|
const searchWords = buildIndex(rawSearchIndex);
|
||||||
registerSearchEvents();
|
registerSearchEvents();
|
||||||
|
|
||||||
function runSearchIfNeeded() {
|
function runSearchIfNeeded() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// Local js definitions:
|
|
||||||
/* eslint-env es6 */
|
/* eslint-env es6 */
|
||||||
/* eslint no-var: "error" */
|
/* eslint no-var: "error" */
|
||||||
/* eslint prefer-const: "error" */
|
/* eslint prefer-const: "error" */
|
||||||
|
// Local js definitions:
|
||||||
/* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */
|
/* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */
|
||||||
/* global addClass, removeClass */
|
/* global addClass, removeClass */
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
/* eslint-env es6 */
|
||||||
|
/* eslint no-var: "error" */
|
||||||
|
/* eslint prefer-const: "error" */
|
||||||
|
|
||||||
// From rust:
|
// From rust:
|
||||||
/* global search, sourcesIndex */
|
/* global search, sourcesIndex */
|
||||||
|
|
||||||
|
@ -7,15 +11,15 @@
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
function getCurrentFilePath() {
|
function getCurrentFilePath() {
|
||||||
var parts = window.location.pathname.split("/");
|
const parts = window.location.pathname.split("/");
|
||||||
var rootPathParts = window.rootPath.split("/");
|
const rootPathParts = window.rootPath.split("/");
|
||||||
|
|
||||||
for (var i = 0, len = rootPathParts.length; i < len; ++i) {
|
for (const rootPathPart of rootPathParts) {
|
||||||
if (rootPathParts[i] === "..") {
|
if (rootPathPart === "..") {
|
||||||
parts.pop();
|
parts.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var file = window.location.pathname.substring(parts.join("/").length);
|
let file = window.location.pathname.substring(parts.join("/").length);
|
||||||
if (file.startsWith("/")) {
|
if (file.startsWith("/")) {
|
||||||
file = file.substring(1);
|
file = file.substring(1);
|
||||||
}
|
}
|
||||||
|
@ -23,7 +27,7 @@ function getCurrentFilePath() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
|
function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
|
||||||
var name = document.createElement("div");
|
const name = document.createElement("div");
|
||||||
name.className = "name";
|
name.className = "name";
|
||||||
|
|
||||||
fullPath += elem["name"] + "/";
|
fullPath += elem["name"] + "/";
|
||||||
|
@ -37,16 +41,13 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
|
||||||
};
|
};
|
||||||
name.innerText = elem["name"];
|
name.innerText = elem["name"];
|
||||||
|
|
||||||
var i, len;
|
const children = document.createElement("div");
|
||||||
|
|
||||||
var children = document.createElement("div");
|
|
||||||
children.className = "children";
|
children.className = "children";
|
||||||
var folders = document.createElement("div");
|
const folders = document.createElement("div");
|
||||||
folders.className = "folders";
|
folders.className = "folders";
|
||||||
if (elem.dirs) {
|
if (elem.dirs) {
|
||||||
for (i = 0, len = elem.dirs.length; i < len; ++i) {
|
for (const dir of elem.dirs) {
|
||||||
if (createDirEntry(elem.dirs[i], folders, fullPath, currentFile,
|
if (createDirEntry(dir, folders, fullPath, currentFile, hasFoundFile)) {
|
||||||
hasFoundFile)) {
|
|
||||||
addClass(name, "expand");
|
addClass(name, "expand");
|
||||||
hasFoundFile = true;
|
hasFoundFile = true;
|
||||||
}
|
}
|
||||||
|
@ -54,14 +55,14 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
|
||||||
}
|
}
|
||||||
children.appendChild(folders);
|
children.appendChild(folders);
|
||||||
|
|
||||||
var files = document.createElement("div");
|
const files = document.createElement("div");
|
||||||
files.className = "files";
|
files.className = "files";
|
||||||
if (elem.files) {
|
if (elem.files) {
|
||||||
for (i = 0, len = elem.files.length; i < len; ++i) {
|
for (const file_text of elem.files) {
|
||||||
var file = document.createElement("a");
|
const file = document.createElement("a");
|
||||||
file.innerText = elem.files[i];
|
file.innerText = file_text;
|
||||||
file.href = window.rootPath + "src/" + fullPath + elem.files[i] + ".html";
|
file.href = window.rootPath + "src/" + fullPath + file_text + ".html";
|
||||||
if (!hasFoundFile && currentFile === fullPath + elem.files[i]) {
|
if (!hasFoundFile && currentFile === fullPath + file_text) {
|
||||||
file.className = "selected";
|
file.className = "selected";
|
||||||
addClass(name, "expand");
|
addClass(name, "expand");
|
||||||
hasFoundFile = true;
|
hasFoundFile = true;
|
||||||
|
@ -77,8 +78,8 @@ function createDirEntry(elem, parent, fullPath, currentFile, hasFoundFile) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleSidebar() {
|
function toggleSidebar() {
|
||||||
var sidebar = document.querySelector("nav.sidebar");
|
const sidebar = document.querySelector("nav.sidebar");
|
||||||
var child = this.children[0];
|
const child = this.children[0];
|
||||||
if (child.innerText === ">") {
|
if (child.innerText === ">") {
|
||||||
sidebar.classList.add("expanded");
|
sidebar.classList.add("expanded");
|
||||||
child.innerText = "<";
|
child.innerText = "<";
|
||||||
|
@ -91,11 +92,11 @@ function toggleSidebar() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function createSidebarToggle() {
|
function createSidebarToggle() {
|
||||||
var sidebarToggle = document.createElement("div");
|
const sidebarToggle = document.createElement("div");
|
||||||
sidebarToggle.id = "sidebar-toggle";
|
sidebarToggle.id = "sidebar-toggle";
|
||||||
sidebarToggle.onclick = toggleSidebar;
|
sidebarToggle.onclick = toggleSidebar;
|
||||||
|
|
||||||
var inner = document.createElement("div");
|
const inner = document.createElement("div");
|
||||||
|
|
||||||
if (getCurrentValue("source-sidebar-show") === "true") {
|
if (getCurrentValue("source-sidebar-show") === "true") {
|
||||||
inner.innerText = "<";
|
inner.innerText = "<";
|
||||||
|
@ -113,12 +114,12 @@ function createSourceSidebar() {
|
||||||
if (!window.rootPath.endsWith("/")) {
|
if (!window.rootPath.endsWith("/")) {
|
||||||
window.rootPath += "/";
|
window.rootPath += "/";
|
||||||
}
|
}
|
||||||
var container = document.querySelector("nav.sidebar");
|
const container = document.querySelector("nav.sidebar");
|
||||||
|
|
||||||
var sidebarToggle = createSidebarToggle();
|
const sidebarToggle = createSidebarToggle();
|
||||||
container.insertBefore(sidebarToggle, container.firstChild);
|
container.insertBefore(sidebarToggle, container.firstChild);
|
||||||
|
|
||||||
var sidebar = document.createElement("div");
|
const sidebar = document.createElement("div");
|
||||||
sidebar.id = "source-sidebar";
|
sidebar.id = "source-sidebar";
|
||||||
if (getCurrentValue("source-sidebar-show") !== "true") {
|
if (getCurrentValue("source-sidebar-show") !== "true") {
|
||||||
container.classList.remove("expanded");
|
container.classList.remove("expanded");
|
||||||
|
@ -126,10 +127,10 @@ function createSourceSidebar() {
|
||||||
container.classList.add("expanded");
|
container.classList.add("expanded");
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentFile = getCurrentFilePath();
|
const currentFile = getCurrentFilePath();
|
||||||
var hasFoundFile = false;
|
let hasFoundFile = false;
|
||||||
|
|
||||||
var title = document.createElement("div");
|
const title = document.createElement("div");
|
||||||
title.className = "title";
|
title.className = "title";
|
||||||
title.innerText = "Files";
|
title.innerText = "Files";
|
||||||
sidebar.appendChild(title);
|
sidebar.appendChild(title);
|
||||||
|
@ -141,13 +142,13 @@ function createSourceSidebar() {
|
||||||
|
|
||||||
container.appendChild(sidebar);
|
container.appendChild(sidebar);
|
||||||
// Focus on the current file in the source files sidebar.
|
// Focus on the current file in the source files sidebar.
|
||||||
var selected_elem = sidebar.getElementsByClassName("selected")[0];
|
const selected_elem = sidebar.getElementsByClassName("selected")[0];
|
||||||
if (typeof selected_elem !== "undefined") {
|
if (typeof selected_elem !== "undefined") {
|
||||||
selected_elem.focus();
|
selected_elem.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var lineNumbersRegex = /^#?(\d+)(?:-(\d+))?$/;
|
const lineNumbersRegex = /^#?(\d+)(?:-(\d+))?$/;
|
||||||
|
|
||||||
function highlightSourceLines(match) {
|
function highlightSourceLines(match) {
|
||||||
if (typeof match === "undefined") {
|
if (typeof match === "undefined") {
|
||||||
|
@ -156,21 +157,21 @@ function highlightSourceLines(match) {
|
||||||
if (!match) {
|
if (!match) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var from = parseInt(match[1], 10);
|
let from = parseInt(match[1], 10);
|
||||||
var to = from;
|
let to = from;
|
||||||
if (typeof match[2] !== "undefined") {
|
if (typeof match[2] !== "undefined") {
|
||||||
to = parseInt(match[2], 10);
|
to = parseInt(match[2], 10);
|
||||||
}
|
}
|
||||||
if (to < from) {
|
if (to < from) {
|
||||||
var tmp = to;
|
const tmp = to;
|
||||||
to = from;
|
to = from;
|
||||||
from = tmp;
|
from = tmp;
|
||||||
}
|
}
|
||||||
var elem = document.getElementById(from);
|
let elem = document.getElementById(from);
|
||||||
if (!elem) {
|
if (!elem) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var x = document.getElementById(from);
|
const x = document.getElementById(from);
|
||||||
if (x) {
|
if (x) {
|
||||||
x.scrollIntoView();
|
x.scrollIntoView();
|
||||||
}
|
}
|
||||||
|
@ -179,7 +180,7 @@ function highlightSourceLines(match) {
|
||||||
removeClass(i_e, "line-highlighted");
|
removeClass(i_e, "line-highlighted");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
for (var i = from; i <= to; ++i) {
|
for (let i = from; i <= to; ++i) {
|
||||||
elem = document.getElementById(i);
|
elem = document.getElementById(i);
|
||||||
if (!elem) {
|
if (!elem) {
|
||||||
break;
|
break;
|
||||||
|
@ -188,11 +189,11 @@ function highlightSourceLines(match) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var handleSourceHighlight = (function() {
|
const handleSourceHighlight = (function() {
|
||||||
var prev_line_id = 0;
|
let prev_line_id = 0;
|
||||||
|
|
||||||
var set_fragment = function(name) {
|
const set_fragment = function(name) {
|
||||||
var x = window.scrollX,
|
const x = window.scrollX,
|
||||||
y = window.scrollY;
|
y = window.scrollY;
|
||||||
if (searchState.browserSupportsHistoryApi()) {
|
if (searchState.browserSupportsHistoryApi()) {
|
||||||
history.replaceState(null, null, "#" + name);
|
history.replaceState(null, null, "#" + name);
|
||||||
|
@ -205,13 +206,13 @@ var handleSourceHighlight = (function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
return function(ev) {
|
return function(ev) {
|
||||||
var cur_line_id = parseInt(ev.target.id, 10);
|
let cur_line_id = parseInt(ev.target.id, 10);
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
|
|
||||||
if (ev.shiftKey && prev_line_id) {
|
if (ev.shiftKey && prev_line_id) {
|
||||||
// Swap selection if needed
|
// Swap selection if needed
|
||||||
if (prev_line_id > cur_line_id) {
|
if (prev_line_id > cur_line_id) {
|
||||||
var tmp = prev_line_id;
|
const tmp = prev_line_id;
|
||||||
prev_line_id = cur_line_id;
|
prev_line_id = cur_line_id;
|
||||||
cur_line_id = tmp;
|
cur_line_id = tmp;
|
||||||
}
|
}
|
||||||
|
@ -226,7 +227,7 @@ var handleSourceHighlight = (function() {
|
||||||
}());
|
}());
|
||||||
|
|
||||||
window.addEventListener("hashchange", function() {
|
window.addEventListener("hashchange", function() {
|
||||||
var match = window.location.hash.match(lineNumbersRegex);
|
const match = window.location.hash.match(lineNumbersRegex);
|
||||||
if (match) {
|
if (match) {
|
||||||
return highlightSourceLines(match);
|
return highlightSourceLines(match);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,17 @@
|
||||||
var darkThemes = ["dark", "ayu"];
|
/* eslint-env es6 */
|
||||||
|
/* eslint no-var: "error" */
|
||||||
|
/* eslint prefer-const: "error" */
|
||||||
|
|
||||||
|
const darkThemes = ["dark", "ayu"];
|
||||||
window.currentTheme = document.getElementById("themeStyle");
|
window.currentTheme = document.getElementById("themeStyle");
|
||||||
window.mainTheme = document.getElementById("mainThemeStyle");
|
window.mainTheme = document.getElementById("mainThemeStyle");
|
||||||
|
|
||||||
var settingsDataset = (function () {
|
const settingsDataset = (function () {
|
||||||
var settingsElement = document.getElementById("default-settings");
|
const settingsElement = document.getElementById("default-settings");
|
||||||
if (settingsElement === null) {
|
if (settingsElement === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
var dataset = settingsElement.dataset;
|
const dataset = settingsElement.dataset;
|
||||||
if (dataset === undefined) {
|
if (dataset === undefined) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -15,14 +19,14 @@ var settingsDataset = (function () {
|
||||||
})();
|
})();
|
||||||
|
|
||||||
function getSettingValue(settingName) {
|
function getSettingValue(settingName) {
|
||||||
var current = getCurrentValue(settingName);
|
const current = getCurrentValue(settingName);
|
||||||
if (current !== null) {
|
if (current !== null) {
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
if (settingsDataset !== null) {
|
if (settingsDataset !== null) {
|
||||||
// See the comment for `default_settings.into_iter()` etc. in
|
// See the comment for `default_settings.into_iter()` etc. in
|
||||||
// `Options::from_matches` in `librustdoc/config.rs`.
|
// `Options::from_matches` in `librustdoc/config.rs`.
|
||||||
var def = settingsDataset[settingName.replace(/-/g,'_')];
|
const def = settingsDataset[settingName.replace(/-/g,'_')];
|
||||||
if (def !== undefined) {
|
if (def !== undefined) {
|
||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
|
@ -30,9 +34,9 @@ function getSettingValue(settingName) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var localStoredTheme = getSettingValue("theme");
|
const localStoredTheme = getSettingValue("theme");
|
||||||
|
|
||||||
var savedHref = [];
|
const savedHref = [];
|
||||||
|
|
||||||
// eslint-disable-next-line no-unused-vars
|
// eslint-disable-next-line no-unused-vars
|
||||||
function hasClass(elem, className) {
|
function hasClass(elem, className) {
|
||||||
|
@ -63,17 +67,16 @@ function removeClass(elem, className) {
|
||||||
*/
|
*/
|
||||||
function onEach(arr, func, reversed) {
|
function onEach(arr, func, reversed) {
|
||||||
if (arr && arr.length > 0 && func) {
|
if (arr && arr.length > 0 && func) {
|
||||||
var length = arr.length;
|
|
||||||
var i;
|
|
||||||
if (reversed) {
|
if (reversed) {
|
||||||
for (i = length - 1; i >= 0; --i) {
|
const length = arr.length;
|
||||||
|
for (let i = length - 1; i >= 0; --i) {
|
||||||
if (func(arr[i])) {
|
if (func(arr[i])) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < length; ++i) {
|
for (const elem of arr) {
|
||||||
if (func(arr[i])) {
|
if (func(elem)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -121,7 +124,7 @@ function getCurrentValue(name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function switchTheme(styleElem, mainStyleElem, newTheme, saveTheme) {
|
function switchTheme(styleElem, mainStyleElem, newTheme, saveTheme) {
|
||||||
var newHref = mainStyleElem.href.replace(
|
const newHref = mainStyleElem.href.replace(
|
||||||
/\/rustdoc([^/]*)\.css/, "/" + newTheme + "$1" + ".css");
|
/\/rustdoc([^/]*)\.css/, "/" + newTheme + "$1" + ".css");
|
||||||
|
|
||||||
// If this new value comes from a system setting or from the previously
|
// If this new value comes from a system setting or from the previously
|
||||||
|
@ -134,7 +137,7 @@ function switchTheme(styleElem, mainStyleElem, newTheme, saveTheme) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var found = false;
|
let found = false;
|
||||||
if (savedHref.length === 0) {
|
if (savedHref.length === 0) {
|
||||||
onEachLazy(document.getElementsByTagName("link"), function(el) {
|
onEachLazy(document.getElementsByTagName("link"), function(el) {
|
||||||
savedHref.push(el.href);
|
savedHref.push(el.href);
|
||||||
|
@ -161,17 +164,17 @@ function useSystemTheme(value) {
|
||||||
updateLocalStorage("use-system-theme", value);
|
updateLocalStorage("use-system-theme", value);
|
||||||
|
|
||||||
// update the toggle if we're on the settings page
|
// update the toggle if we're on the settings page
|
||||||
var toggle = document.getElementById("use-system-theme");
|
const toggle = document.getElementById("use-system-theme");
|
||||||
if (toggle && toggle instanceof HTMLInputElement) {
|
if (toggle && toggle instanceof HTMLInputElement) {
|
||||||
toggle.checked = value;
|
toggle.checked = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var updateSystemTheme = (function() {
|
const updateSystemTheme = (function() {
|
||||||
if (!window.matchMedia) {
|
if (!window.matchMedia) {
|
||||||
// fallback to the CSS computed value
|
// fallback to the CSS computed value
|
||||||
return function() {
|
return function() {
|
||||||
var cssTheme = getComputedStyle(document.documentElement)
|
const cssTheme = getComputedStyle(document.documentElement)
|
||||||
.getPropertyValue('content');
|
.getPropertyValue('content');
|
||||||
|
|
||||||
switchTheme(
|
switchTheme(
|
||||||
|
@ -184,16 +187,16 @@ var updateSystemTheme = (function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// only listen to (prefers-color-scheme: dark) because light is the default
|
// only listen to (prefers-color-scheme: dark) because light is the default
|
||||||
var mql = window.matchMedia("(prefers-color-scheme: dark)");
|
const mql = window.matchMedia("(prefers-color-scheme: dark)");
|
||||||
|
|
||||||
function handlePreferenceChange(mql) {
|
function handlePreferenceChange(mql) {
|
||||||
let use = function(theme) {
|
const use = function(theme) {
|
||||||
switchTheme(window.currentTheme, window.mainTheme, theme, true);
|
switchTheme(window.currentTheme, window.mainTheme, theme, true);
|
||||||
};
|
};
|
||||||
// maybe the user has disabled the setting in the meantime!
|
// maybe the user has disabled the setting in the meantime!
|
||||||
if (getSettingValue("use-system-theme") !== "false") {
|
if (getSettingValue("use-system-theme") !== "false") {
|
||||||
var lightTheme = getSettingValue("preferred-light-theme") || "light";
|
const lightTheme = getSettingValue("preferred-light-theme") || "light";
|
||||||
var darkTheme = getSettingValue("preferred-dark-theme") || "dark";
|
const darkTheme = getSettingValue("preferred-dark-theme") || "dark";
|
||||||
|
|
||||||
if (mql.matches) {
|
if (mql.matches) {
|
||||||
use(darkTheme);
|
use(darkTheme);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue