Fasten up theme loading
This commit is contained in:
parent
3c52acd9ca
commit
5f93159e9d
3 changed files with 49 additions and 25 deletions
|
@ -48,7 +48,8 @@ r##"<!DOCTYPE html>
|
|||
|
||||
<link rel="stylesheet" type="text/css" href="{root_path}normalize.css">
|
||||
<link rel="stylesheet" type="text/css" href="{root_path}rustdoc.css" id="mainThemeStyle">
|
||||
<link rel="stylesheet" type="text/css" href="{root_path}main.css" id="themeStyle">
|
||||
<link rel="stylesheet" type="text/css" href="" id="themeStyle">
|
||||
<script src="{root_path}storage.js"></script>
|
||||
{css_extension}
|
||||
|
||||
{favicon}
|
||||
|
@ -70,10 +71,10 @@ r##"<!DOCTYPE html>
|
|||
{sidebar}
|
||||
</nav>
|
||||
|
||||
<div id="theme-picker">
|
||||
<button id="theme-picker">
|
||||
<img src="{root_path}brush.svg" width="18" alt="Pick another theme!">
|
||||
<div id="theme-choices"></div>
|
||||
</div>
|
||||
</button>
|
||||
<script src="{root_path}theme.js"></script>
|
||||
<nav class="sub">
|
||||
<form class="search-form js-only">
|
||||
|
|
|
@ -917,8 +917,6 @@ themePicker.onclick = function() {{
|
|||
themePicker.style.borderBottomLeftRadius = "0";
|
||||
}}
|
||||
}};
|
||||
var currentTheme = document.getElementById("themeStyle");
|
||||
var mainTheme = document.getElementById("mainThemeStyle");
|
||||
[{}].forEach(function(item) {{
|
||||
var div = document.createElement('div');
|
||||
div.innerHTML = item;
|
||||
|
@ -927,32 +925,13 @@ var mainTheme = document.getElementById("mainThemeStyle");
|
|||
}};
|
||||
themes.appendChild(div);
|
||||
}});
|
||||
|
||||
function updateLocalStorage(theme) {{
|
||||
if (typeof(Storage) !== "undefined") {{
|
||||
localStorage.theme = theme;
|
||||
}} else {{
|
||||
// No Web Storage support so we do nothing
|
||||
}}
|
||||
}}
|
||||
function switchTheme(styleElem, mainStyleElem, newTheme) {{
|
||||
styleElem.href = mainStyleElem.href.replace("rustdoc.css", newTheme + ".css");
|
||||
updateLocalStorage(newTheme);
|
||||
}}
|
||||
function getCurrentTheme() {{
|
||||
if (typeof(Storage) !== "undefined" && localStorage.theme !== undefined) {{
|
||||
return localStorage.theme;
|
||||
}}
|
||||
return "main";
|
||||
}}
|
||||
|
||||
switchTheme(currentTheme, mainTheme, getCurrentTheme());
|
||||
"#, themes.iter()
|
||||
.map(|s| format!("\"{}\"", s))
|
||||
.collect::<Vec<String>>()
|
||||
.join(",")).as_bytes())?;
|
||||
|
||||
write(cx.dst.join("main.js"), include_bytes!("static/main.js"))?;
|
||||
write(cx.dst.join("storage.js"), include_bytes!("static/storage.js"))?;
|
||||
|
||||
if let Some(ref css) = cx.shared.css_file_extension {
|
||||
let out = cx.dst.join("theme.css");
|
||||
|
|
44
src/librustdoc/html/static/storage.js
Normal file
44
src/librustdoc/html/static/storage.js
Normal file
|
@ -0,0 +1,44 @@
|
|||
/*!
|
||||
* Copyright 2018 The Rust Project Developers. See the COPYRIGHT
|
||||
* file at the top-level directory of this distribution and at
|
||||
* http://rust-lang.org/COPYRIGHT.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
* http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
* <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
* option. This file may not be copied, modified, or distributed
|
||||
* except according to those terms.
|
||||
*/
|
||||
|
||||
var currentTheme = document.getElementById("themeStyle");
|
||||
var mainTheme = document.getElementById("mainThemeStyle");
|
||||
|
||||
function updateLocalStorage(name, value) {
|
||||
if (typeof(Storage) !== "undefined") {
|
||||
localStorage[name] = value;
|
||||
} else {
|
||||
// No Web Storage support so we do nothing
|
||||
}
|
||||
}
|
||||
|
||||
function getCurrentValue(name) {
|
||||
if (typeof(Storage) !== "undefined" && localStorage[name] !== undefined) {
|
||||
return localStorage[name];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function switchTheme(styleElem, mainStyleElem, newTheme) {
|
||||
styleElem.href = mainStyleElem.href.replace("rustdoc.css", newTheme + ".css");
|
||||
updateLocalStorage('theme', newTheme);
|
||||
/*var elem = document.getElementsByTagName('body')[0];
|
||||
if (elem) {
|
||||
updateLocalStorage('background', getComputedStyle(elem)['background-color']);
|
||||
}*/
|
||||
}
|
||||
|
||||
/*var elem = document.getElementsByTagName('body')[0];
|
||||
if (elem) {
|
||||
var value =
|
||||
}*/
|
||||
switchTheme(currentTheme, mainTheme, getCurrentValue('theme') || 'main');
|
Loading…
Add table
Add a link
Reference in a new issue