| // Local js definitions: |
| /* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */ |
| |
| (function () { |
| function changeSetting(settingName, value) { |
| updateLocalStorage("rustdoc-" + settingName, value); |
| |
| switch (settingName) { |
| case "preferred-dark-theme": |
| case "preferred-light-theme": |
| case "use-system-theme": |
| updateSystemTheme(); |
| break; |
| } |
| } |
| |
| function handleKey(ev) { |
| // Don't interfere with browser shortcuts |
| if (ev.ctrlKey || ev.altKey || ev.metaKey) { |
| return; |
| } |
| switch (getVirtualKey(ev)) { |
| case "Enter": |
| case "Return": |
| case "Space": |
| ev.target.checked = !ev.target.checked; |
| ev.preventDefault(); |
| break; |
| } |
| } |
| |
| function setEvents() { |
| onEachLazy(document.getElementsByClassName("slider"), function(elem) { |
| var toggle = elem.previousElementSibling; |
| var settingId = toggle.id; |
| var settingValue = getSettingValue(settingId); |
| if (settingValue !== null) { |
| toggle.checked = settingValue === "true"; |
| } |
| toggle.onchange = function() { |
| changeSetting(this.id, this.checked); |
| }; |
| toggle.onkeyup = handleKey; |
| toggle.onkeyrelease = handleKey; |
| }); |
| onEachLazy(document.getElementsByClassName("select-wrapper"), function(elem) { |
| var select = elem.getElementsByTagName("select")[0]; |
| var settingId = select.id; |
| var settingValue = getSettingValue(settingId); |
| if (settingValue !== null) { |
| select.value = settingValue; |
| } |
| select.onchange = function() { |
| changeSetting(this.id, this.value); |
| }; |
| }); |
| } |
| |
| window.addEventListener("DOMContentLoaded", setEvents); |
| })(); |