]> git.proxmox.com Git - rustc.git/blob - src/librustdoc/html/static/js/settings.js
New upstream version 1.55.0+dfsg1
[rustc.git] / src / librustdoc / html / static / js / settings.js
1 // Local js definitions:
2 /* global getSettingValue, getVirtualKey, onEachLazy, updateLocalStorage, updateSystemTheme */
3
4 (function () {
5 function changeSetting(settingName, value) {
6 updateLocalStorage("rustdoc-" + settingName, value);
7
8 switch (settingName) {
9 case "preferred-dark-theme":
10 case "preferred-light-theme":
11 case "use-system-theme":
12 updateSystemTheme();
13 break;
14 }
15 }
16
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;
29 }
30 }
31
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";
39 }
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 });
57 }
58
59 window.addEventListener("DOMContentLoaded", setEvents);
60 })();