diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 74bd348e9ac1c..53f0831852456 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -1,9 +1,6 @@
-// From rust:
-/* global ALIASES */
-
// Local js definitions:
-/* global addClass, getCurrentValue, hasClass */
-/* global onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
+/* global addClass, getSettingValue, hasClass */
+/* global onEach, onEachLazy, hasOwnProperty, removeClass, updateLocalStorage */
/* global hideThemeButtonState, showThemeButtonState */
if (!String.prototype.startsWith) {
@@ -2214,7 +2211,7 @@ function defocusSearchBar() {
}
}
- function toggleAllDocs(pageId, fromAutoCollapse) {
+ function toggleAllDocs(fromAutoCollapse) {
var innerToggle = document.getElementById(toggleAllDocsId);
if (!innerToggle) {
return;
@@ -2257,14 +2254,14 @@ function defocusSearchBar() {
}
if (!parent || !superParent || superParent.id !== "main" ||
hasClass(parent, "impl") === false) {
- collapseDocs(e, "hide", pageId);
+ collapseDocs(e, "hide");
}
});
}
}
}
- function collapseDocs(toggle, mode, pageId) {
+ function collapseDocs(toggle, mode) {
if (!toggle || !toggle.parentNode) {
return;
}
@@ -2384,27 +2381,27 @@ function defocusSearchBar() {
}
}
- function collapser(pageId, e, collapse) {
+ function collapser(e, collapse) {
// inherent impl ids are like "impl" or impl-'.
// they will never be hidden by default.
var n = e.parentElement;
if (n.id.match(/^impl(?:-\d+)?$/) === null) {
// Automatically minimize all non-inherent impls
if (collapse || hasClass(n, "impl")) {
- collapseDocs(e, "hide", pageId);
+ collapseDocs(e, "hide");
}
}
}
- function autoCollapse(pageId, collapse) {
+ function autoCollapse(collapse) {
if (collapse) {
- toggleAllDocs(pageId, true);
+ toggleAllDocs(true);
} else if (getSettingValue("auto-hide-trait-implementations") !== "false") {
var impl_list = document.getElementById("trait-implementations-list");
if (impl_list !== null) {
onEachLazy(impl_list.getElementsByClassName("collapse-toggle"), function(e) {
- collapser(pageId, e, collapse);
+ collapser(e, collapse);
});
}
@@ -2412,7 +2409,7 @@ function defocusSearchBar() {
if (blanket_list !== null) {
onEachLazy(blanket_list.getElementsByClassName("collapse-toggle"), function(e) {
- collapser(pageId, e, collapse);
+ collapser(e, collapse);
});
}
}
@@ -2475,7 +2472,6 @@ function defocusSearchBar() {
var toggle = createSimpleToggle(false);
var hideMethodDocs = getSettingValue("auto-hide-method-docs") === "true";
var hideImplementors = getSettingValue("auto-collapse-implementors") !== "false";
- var pageId = getPageId();
var func = function(e) {
var next = e.nextElementSibling;
@@ -2489,7 +2485,7 @@ function defocusSearchBar() {
var newToggle = toggle.cloneNode(true);
insertAfter(newToggle, e.childNodes[e.childNodes.length - 1]);
if (hideMethodDocs === true && hasClass(e, "method") === true) {
- collapseDocs(newToggle, "hide", pageId);
+ collapseDocs(newToggle, "hide");
}
}
};
@@ -2513,7 +2509,7 @@ function defocusSearchBar() {
// In case the option "auto-collapse implementors" is not set to false, we collapse
// all implementors.
if (hideImplementors === true && e.parentNode.id === "implementors-list") {
- collapseDocs(newToggle, "hide", pageId);
+ collapseDocs(newToggle, "hide");
}
}
};
@@ -2527,7 +2523,7 @@ function defocusSearchBar() {
if (e.id.match(/^impl(?:-\d+)?$/) === null) {
// Automatically minimize all non-inherent impls
if (hasClass(e, "impl") === true) {
- collapseDocs(newToggle, "hide", pageId);
+ collapseDocs(newToggle, "hide");
}
}
};
@@ -2562,14 +2558,12 @@ function defocusSearchBar() {
}
onEachLazy(document.getElementsByClassName("impl-items"), function(e) {
onEachLazy(e.getElementsByClassName("associatedconstant"), func);
- var hiddenElems = e.getElementsByClassName("hidden");
- var needToggle = false;
-
- var needToggle = onEachLazy(e.getElementsByClassName("hidden"), function(hiddenElem) {
- if (hasClass(hiddenElem, "content") === false &&
- hasClass(hiddenElem, "docblock") === false) {
- return true;
- }
+ // We transform the DOM iterator into a vec of DOM elements to prevent performance
+ // issues on webkit browsers.
+ var hiddenElems = Array.prototype.slice.call(e.getElementsByClassName("hidden"));
+ var needToggle = hiddenElems.some(function(hiddenElem) {
+ return hasClass(hiddenElem, "content") === false &&
+ hasClass(hiddenElem, "docblock") === false;
});
if (needToggle === true) {
var inner_toggle = newToggle.cloneNode(true);
@@ -2672,10 +2666,10 @@ function defocusSearchBar() {
onEachLazy(document.getElementsByClassName("docblock"), buildToggleWrapper);
onEachLazy(document.getElementsByClassName("sub-variant"), buildToggleWrapper);
- var pageId = getPageId();
- autoCollapse(pageId, getSettingValue("collapse") === "true");
+ autoCollapse(getSettingValue("collapse") === "true");
+ var pageId = getPageId();
if (pageId !== null) {
expandSection(pageId);
}
diff --git a/src/librustdoc/html/static/settings.js b/src/librustdoc/html/static/settings.js
index bc14420232c4d..4f10e14e8558c 100644
--- a/src/librustdoc/html/static/settings.js
+++ b/src/librustdoc/html/static/settings.js
@@ -1,5 +1,5 @@
// Local js definitions:
-/* global getCurrentValue, getVirtualKey, updateLocalStorage, updateSystemTheme */
+/* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */
(function () {
function changeSetting(settingName, value) {
diff --git a/src/librustdoc/html/static/source-script.js b/src/librustdoc/html/static/source-script.js
index a9cc0ffdf79b0..42b54e4cc1e46 100644
--- a/src/librustdoc/html/static/source-script.js
+++ b/src/librustdoc/html/static/source-script.js
@@ -113,6 +113,8 @@ function createSidebarToggle() {
return sidebarToggle;
}
+// This function is called from "source-files.js", generated in `html/render/mod.rs`.
+// eslint-disable-next-line no-unused-vars
function createSourceSidebar() {
if (window.rootPath.endsWith("/") === false) {
window.rootPath += "/";
diff --git a/src/librustdoc/html/static/storage.js b/src/librustdoc/html/static/storage.js
index d081781f14be1..9c5ac1625afea 100644
--- a/src/librustdoc/html/static/storage.js
+++ b/src/librustdoc/html/static/storage.js
@@ -1,5 +1,5 @@
// From rust:
-/* global resourcesSuffix, getSettingValue */
+/* global resourcesSuffix */
var darkThemes = ["dark", "ayu"];
var currentTheme = document.getElementById("themeStyle");
@@ -35,10 +35,12 @@ var localStoredTheme = getSettingValue("theme");
var savedHref = [];
+// eslint-disable-next-line no-unused-vars
function hasClass(elem, className) {
return elem && elem.classList && elem.classList.contains(className);
}
+// eslint-disable-next-line no-unused-vars
function addClass(elem, className) {
if (!elem || !elem.classList) {
return;
@@ -46,6 +48,7 @@ function addClass(elem, className) {
elem.classList.add(className);
}
+// eslint-disable-next-line no-unused-vars
function removeClass(elem, className) {
if (!elem || !elem.classList) {
return;
@@ -81,6 +84,7 @@ function onEachLazy(lazyArray, func, reversed) {
reversed);
}
+// eslint-disable-next-line no-unused-vars
function hasOwnProperty(obj, property) {
return Object.prototype.hasOwnProperty.call(obj, property);
}
@@ -148,6 +152,8 @@ function switchTheme(styleElem, mainStyleElem, newTheme, saveTheme) {
}
}
+// This function is called from "theme.js", generated in `html/render/mod.rs`.
+// eslint-disable-next-line no-unused-vars
function useSystemTheme(value) {
if (value === undefined) {
value = true;
@@ -172,7 +178,7 @@ var updateSystemTheme = (function() {
switchTheme(
currentTheme,
mainTheme,
- JSON.parse(cssTheme) || light,
+ JSON.parse(cssTheme) || "light",
true
);
};