-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathoptions.js
93 lines (87 loc) · 3.59 KB
/
options.js
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
const defaultValues = {
highlightColor: '0,1,255',
highlightOpacity: 0.3,
outlineStyle: 'solid',
outlineWidth: '1px',
debugEnabled: false,
hideTitle: false,
fadeOutline: true,
fadeOutlineTime: '1',
fadeOutlineAfter: '25',
}
/**
* Updates the options preview values
* @param items
*/
const update_options = function (items) {
console.log("items", items);
document.getElementById('color').value = items.highlightColor;
document.getElementById('opacity').value = items.highlightOpacity;
document.getElementById('outline_style').value = items.outlineStyle;
document.getElementById('outline_width').value = items.outlineWidth;
document.getElementById('debug_enabled').checked = items.debugEnabled;
document.getElementById('hide_title').checked = items.hideTitle;
document.getElementById('fade_outline').checked = items.fadeOutline;
document.getElementById('fade_outline_time').value = items.fadeOutlineTime;
document.getElementById('fade_outline_after').value = items.fadeOutlineAfter;
}
/**
* Stores user selected options in chrome.storage
*/
function save_options(event) {
document.getElementById('status').textContent = '';
chrome.storage.sync.set({
highlightColor: document.getElementById('color').value,
highlightOpacity: document.getElementById('opacity').value,
outlineStyle: document.getElementById('outline_style').value,
outlineWidth: document.getElementById('outline_width').value,
debugEnabled: document.getElementById('debug_enabled').checked,
hideTitle: document.getElementById('hide_title').checked,
fadeOutline: document.getElementById('fade_outline').checked,
fadeOutlineTime: document.getElementById('fade_outline_time').value,
fadeOutlineAfter: document.getElementById('fade_outline_after').value,
}, function () {
// Update status to let user know options were saved.
document.getElementById('status').textContent = 'Options saved.';
});
event && event.preventDefault()
}
/**
* Restores state using the preferences stored in chrome.storage, or the defaults if none in storage
* @param event
*/
function restore_options(event) {
chrome.storage.sync.get(defaultValues, function (items) {
update_options(items);
update_preview();
});
event.preventDefault()
}
/**
* Updates the preview box in options page
*/
const update_preview = function () {
const outline_width = document.getElementById('outline_width').value;
const outline_style = document.getElementById('outline_style').value;
const color = document.getElementById('color').value;
const opacity = document.getElementById('opacity').value;
document.getElementById('preview').style.outline = `${outline_width} ${outline_style} rgba(${color}, ${opacity})`;
document.getElementById('hey_its_me_debug').style.display = document.getElementById('debug_enabled').checked ? 'inline' : 'none';
document.getElementById('heading').style.display = document.getElementById('hide_title').checked ? 'none' : 'block';
};
/**
* Reset settings to default
*/
const reset_settings = function () {
console.log("Resetting", defaultValues)
update_options(defaultValues);
save_options(null);
update_preview();
}
/**
* Our options page event listeners
*/
document.addEventListener('DOMContentLoaded', restore_options);
document.getElementById('options_form').addEventListener('change', update_preview);
document.getElementById('reset_settings').addEventListener('click', reset_settings);
document.getElementById('save').addEventListener('click', save_options);