From 0528ad5f58bc2ce8a13d5d81240a0549d0c6e6ac Mon Sep 17 00:00:00 2001 From: Max Brunsfeld Date: Wed, 11 Sep 2019 14:44:49 -0700 Subject: [PATCH] playground: Persist state across reloads --- docs/assets/js/playground.js | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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() {