diff --git a/docs/assets/js/playground.js b/docs/assets/js/playground.js index 1b151e42..572370cf 100644 --- a/docs/assets/js/playground.js +++ b/docs/assets/js/playground.js @@ -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() {