1 // Local js definitions:
2 /* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */
5 function changeSetting(settingName, value) {
6 updateLocalStorage("rustdoc-" + settingName, value);
9 case "preferred-dark-theme":
10 case "preferred-light-theme":
11 case "use-system-theme":
17 function handleKey(ev) {
18 // Don't interfere with browser shortcuts
19 if (ev.ctrlKey || ev.altKey || ev.metaKey) {
22 switch (getVirtualKey(ev)) {
26 ev.target.checked = !ev.target.checked;
32 function setEvents() {
33 onEachLazy(document.getElementsByClassName("slider"), function(elem) {
34 var toggle = elem.previousElementSibling;
35 var settingId = toggle.id;
36 var settingValue = getSettingValue(settingId);
37 if (settingValue !== null) {
38 toggle.checked = settingValue === "true";
40 toggle.onchange = function() {
41 changeSetting(this.id, this.checked);
43 toggle.onkeyup = handleKey;
44 toggle.onkeyrelease = handleKey;
46 onEachLazy(document.getElementsByClassName("select-wrapper"), function(elem) {
47 var select = elem.getElementsByTagName("select")[0];
48 var settingId = select.id;
49 var settingValue = getSettingValue(settingId);
50 if (settingValue !== null) {
51 select.value = settingValue;
53 select.onchange = function() {
54 changeSetting(this.id, this.value);
59 window.addEventListener("DOMContentLoaded", setEvents);