diff --git a/packages/template-explorer/src/index.ts b/packages/template-explorer/src/index.ts
index 89c33f99b..22199eaa0 100644
--- a/packages/template-explorer/src/index.ts
+++ b/packages/template-explorer/src/index.ts
@@ -8,9 +8,11 @@ const self = window as any
self.init = () => {
const monaco = (window as any).monaco as typeof m
- const persistedContent =
- decodeURIComponent(window.location.hash.slice(1)) ||
- `
{{ foo + bar }}
`
+ const persistedState = JSON.parse(
+ decodeURIComponent(window.location.hash.slice(1)) || `{}`
+ )
+
+ Object.assign(compilerOptions, persistedState.options)
let lastSuccessfulCode: string = `/* See console for error */`
let lastSuccessfulMap: SourceMapConsumer | undefined = undefined
@@ -56,7 +58,13 @@ self.init = () => {
function reCompile() {
const src = editor.getValue()
- window.location.hash = encodeURIComponent(src)
+ // every time we re-compile, persist current state to URL
+ window.location.hash = encodeURIComponent(
+ JSON.stringify({
+ src,
+ options: compilerOptions
+ })
+ )
const res = compileCode(src)
if (res) {
output.setValue(res)
@@ -78,7 +86,7 @@ self.init = () => {
const editor = monaco.editor.create(
document.getElementById('source') as HTMLElement,
{
- value: persistedContent,
+ value: persistedState.src || `Hello World!
`,
language: 'html',
...sharedEditorOptions
}