-
-
Notifications
You must be signed in to change notification settings - Fork 536
Expand file tree
/
Copy pathcontributor-preferences-renderer.js
More file actions
75 lines (66 loc) · 2.33 KB
/
Copy pathcontributor-preferences-renderer.js
File metadata and controls
75 lines (66 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import HtmlTranslate from './utils/htmlTranslate.js'
import { setSameWidths } from './utils/sameWidths.js'
import './platform.js'
let eventsAttached = false
window.onload = async (event) => {
const settings = await window.settings.currentSettings()
setTimeout(() => { eventsAttached = true }, 500)
document.ondragover = event =>
event.preventDefault()
document.ondrop = event =>
event.preventDefault()
document.querySelectorAll('input[type="checkbox"]').forEach(checkbox => {
const isNegative = checkbox.classList.contains('negative')
checkbox.checked = isNegative ? !settings[checkbox.value] : settings[checkbox.value]
if (!eventsAttached) {
checkbox.onchange = (event) =>
window.settings.saveSettings(checkbox.value,
isNegative ? !checkbox.checked : checkbox.checked)
}
})
document.querySelectorAll('input[type="radio"]').forEach(radio => {
let value
switch (radio.value) {
case 'true':
value = true
break
case 'false':
value = false
break
default:
value = radio.value
}
radio.checked = settings[radio.name] === value
if (!eventsAttached) {
radio.onchange = (event) => {
window.settings.saveSettings(radio.name, value)
}
}
})
document.querySelectorAll('select').forEach(select => {
select.value = settings[select.name]
if (!eventsAttached) {
select.onchange = (event) => {
window.settings.saveSettings(select.name, select.value)
}
}
})
document.querySelectorAll('input[type="range"]').forEach(async range => {
const divisor = range.dataset.divisor
const output = range.closest('div').querySelector('output')
range.value = settings[range.name] / divisor
const unit = output.dataset.unit
output.innerHTML = await window.i18next.t(`utils.${unit}`, { count: parseInt(range.value) })
if (!eventsAttached) {
range.onchange = async event => {
output.innerHTML = await window.i18next.t(`utils.${unit}`, { count: parseInt(range.value) })
window.settings.saveSettings(range.name, range.value * divisor)
}
range.oninput = async event => {
output.innerHTML = await window.i18next.t(`utils.${unit}`, { count: parseInt(range.value) })
}
}
})
new HtmlTranslate(document).translate()
setSameWidths()
}