playground: Persist state across reloads

This commit is contained in:
Max Brunsfeld 2019-09-11 14:44:49 -07:00
parent 67dcbc3e73
commit 0528ad5f58

View file

@ -11,6 +11,8 @@ let tree;
const demoContainer = document.getElementById('playground-container');
const languagesByName = {};
loadState();
await TreeSitter.init();
const parser = new TreeSitter();
@ -25,6 +27,7 @@ let tree;
scrollElem: outputContainerScroll
});
const renderTreeOnCodeChange = debounce(renderTree, 50);
const saveStateOnChange = debounce(saveState, 2000);
let languageName = languageSelect.value;
let treeRows = null;
@ -81,6 +84,7 @@ let tree;
tree = newTree;
parseCount++;
renderTreeOnCodeChange();
saveStateOnChange();
}
async function renderTree() {
@ -262,6 +266,20 @@ let tree;
};
}
function loadState() {
const language = localStorage.getItem("language");
const sourceCode = localStorage.getItem("sourceCode");
if (language != null && sourceCode != null) {
codeInput.value = sourceCode;
languageSelect.value = language;
}
}
function saveState() {
localStorage.setItem("language", languageSelect.value);
localStorage.setItem("sourceCode", codeEditor.getValue());
}
function debounce(func, wait, immediate) {
var timeout;
return function() {