diff options
Diffstat (limited to 'data/extensions/https-everywhere@eff.org/debugging-rulesets.js')
-rw-r--r-- | data/extensions/https-everywhere@eff.org/debugging-rulesets.js | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/data/extensions/https-everywhere@eff.org/debugging-rulesets.js b/data/extensions/https-everywhere@eff.org/debugging-rulesets.js new file mode 100644 index 0000000..be6c8b5 --- /dev/null +++ b/data/extensions/https-everywhere@eff.org/debugging-rulesets.js @@ -0,0 +1,44 @@ +/* global sendMessage, CodeMirror */ + +"use strict"; + +const savedTextElement = document.getElementById("saved-text"); +const unsavedTextElement = document.getElementById("unsaved-text"); +const savedTitle = "Debugging Rulesets"; +const unsavedTitle = "* Debugging Rulesets"; + +document.title = savedTitle; + +const cm = CodeMirror.fromTextArea( + document.getElementById("codemirror-textarea"), + { + mode: "xml", + theme: "default main saved" + } +); + +let valueHasChanged = false; +sendMessage("get_option", { debugging_rulesets: "" }, item => { + cm.setValue(item.debugging_rulesets); + cm.on("change", cm => { + if (!(valueHasChanged)) { + valueHasChanged = true; + document.title = unsavedTitle; + cm.setOption("theme", "default main unsaved"); + unsavedTextElement.style.visibility = "visible"; + } + }); +}); + +document.getElementById("save-button").addEventListener("click", e => { + e.preventDefault(); + sendMessage("set_option", { debugging_rulesets: cm.getValue() }, () => { + savedTextElement.style.display = "block"; + setTimeout(() => { savedTextElement.style.display = "none" }, 1000); + + valueHasChanged = false; + document.title = savedTitle; + cm.setOption("theme", "default main saved"); + unsavedTextElement.style.visibility = "hidden"; + }); +}); |