]> git.proxmox.com Git - rustc.git/blame - src/librustdoc/html/static/settings.js
New upstream version 1.54.0+dfsg1
[rustc.git] / src / librustdoc / html / static / settings.js
CommitLineData
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})();