]>
Commit | Line | Data |
---|---|---|
f9f354fc | 1 | // Local js definitions: |
5869c6ff | 2 | /* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */ |
f9f354fc | 3 | |
83c7162d | 4 | (function () { |
29967ef6 XL |
5 | function changeSetting(settingName, value) { |
6 | updateLocalStorage("rustdoc-" + settingName, value); | |
83c7162d | 7 | |
29967ef6 XL |
8 | switch (settingName) { |
9 | case "preferred-dark-theme": | |
10 | case "preferred-light-theme": | |
11 | case "use-system-theme": | |
12 | updateSystemTheme(); | |
13 | break; | |
14 | } | |
83c7162d XL |
15 | } |
16 | ||
fc512014 XL |
17 | function handleKey(ev) { |
18 | // Don't interfere with browser shortcuts | |
19 | if (ev.ctrlKey || ev.altKey || ev.metaKey) { | |
20 | return; | |
21 | } | |
22 | switch (getVirtualKey(ev)) { | |
23 | case "Enter": | |
24 | case "Return": | |
25 | case "Space": | |
26 | ev.target.checked = !ev.target.checked; | |
27 | ev.preventDefault(); | |
28 | break; | |
83c7162d | 29 | } |
fc512014 | 30 | } |
29967ef6 | 31 | |
fc512014 XL |
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"; | |
83c7162d | 39 | } |
fc512014 XL |
40 | toggle.onchange = function() { |
41 | changeSetting(this.id, this.checked); | |
42 | }; | |
43 | toggle.onkeyup = handleKey; | |
44 | toggle.onkeyrelease = handleKey; | |
45 | }); | |
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; | |
52 | } | |
53 | select.onchange = function() { | |
54 | changeSetting(this.id, this.value); | |
55 | }; | |
56 | }); | |
83c7162d XL |
57 | } |
58 | ||
fc512014 | 59 | window.addEventListener("DOMContentLoaded", setEvents); |
83c7162d | 60 | })(); |