diff --git a/visualizer.html b/visualizer.html
index fa8bda1..15e4c25 100644
--- a/visualizer.html
+++ b/visualizer.html
@@ -267,6 +267,18 @@
//themes are available here: https://github.com/ajaxorg/ace/tree/master/lib/ace/theme
editor.setTheme("ace/theme/tomorrow");
editor.session.setMode("ace/mode/javascript");
+editor.getSession().on('change', function() {
+ saveOnEditorUpdate()
+});
+
+if (sessionStorage.getItem("autosave")) {
+ editor.setValue(sessionStorage.getItem("autosave"));
+}
+
+function saveOnEditorUpdate()
+{
+ sessionStorage.setItem("autosave", editor.getValue());
+}
var show = document.getElementById('show');
@@ -431,13 +443,7 @@
let reload = document.getElementById("reload");
let currentSource = null; //{file:file} or {url:url} or null
reload.addEventListener('click', function() {
- if (currentSource) {
- if (currentSource.file) {
- readFile(currentSource.file);
- } else if (currentSource.url) {
- readURL(currentSource.url);
- }
- }
+ location.reload();
});
@@ -580,6 +586,7 @@
file.addEventListener('change', function(evt){
try {
readFile(file.files[0]);
+ deleteParam();
file.value = "";
} catch (e) {
console.log(e);
@@ -589,11 +596,32 @@
});
+
+function addURLParam(key, value){
+ let params = new URLSearchParams(window.location.search);
+ params.set(key, value);
+ const editedURL = window.location.pathname + "?" + params.toString();
+ history.pushState(null, "", editedURL);
+ let newParams = new URLSearchParams(window.location.search);
+}
+function deleteParam(){
+ window.history.pushState(null, "", window.location.pathname);
+}
{ //check for '?load=....' in the URL:
- const m = document.location.search.match(/^\?load=(.+)$/);
- if (m) {
- readURL(m[1]);
- }
+ let params = new URLSearchParams(window.location.search);
+ let name = params.get("load");
+ if (name && !isFileEdited()) {
+ readURL(name);
+ addURLParam("edited", "true");
+ updateVisualizer(true);
+ }
+}
+
+function isFileEdited(){
+ let params = new URLSearchParams(window.location.search);
+ let edited = params.get("edited");
+ return edited !== null;
+
}