diff --git a/docs/themes/navy/layout/partial/after_footer.swig b/docs/themes/navy/layout/partial/after_footer.swig index e6778541a..4cc27d2c8 100644 --- a/docs/themes/navy/layout/partial/after_footer.swig +++ b/docs/themes/navy/layout/partial/after_footer.swig @@ -1,6 +1,8 @@ {% if page.layout === 'playground' %} {{ js('js/liquid.browser.min.js') }} + + {% endif %} {{ js('js/main') }} diff --git a/docs/themes/navy/layout/playground.swig b/docs/themes/navy/layout/playground.swig index e09cfa1d0..1897d2f5d 100644 --- a/docs/themes/navy/layout/playground.swig +++ b/docs/themes/navy/layout/playground.swig @@ -13,7 +13,9 @@

Output

-
{{__('playground.loading')}}
+
+
{{__('playground.loading')}}
+

diff --git a/docs/themes/navy/source/css/_partial/playground.styl b/docs/themes/navy/source/css/_partial/playground.styl index 953dd1e88..340bb29b4 100644 --- a/docs/themes/navy/source/css/_partial/playground.styl +++ b/docs/themes/navy/source/css/_partial/playground.styl @@ -68,6 +68,28 @@ overflow: hidden @media mq-mobile min-height: 240px + .output-preview + flex: 1 1 auto + min-height: 0 + code-block-chrome() + overflow: auto + pre.highlight + margin: 0 + min-height: 100% + padding: 16px + border: none + box-shadow: none + border-radius: 0 + background: var(--highlight-background) + code + display: block + font-family: font-mono + font-size: 14px + line-height: 1.5 + background: transparent + padding: 0 + white-space: pre-wrap + word-break: break-word .ace_editor font-family: font-mono font-size: 14px diff --git a/docs/themes/navy/source/js/main.js b/docs/themes/navy/source/js/main.js index b113fb27b..4397112da 100644 --- a/docs/themes/navy/source/js/main.js +++ b/docs/themes/navy/source/js/main.js @@ -38,7 +38,7 @@ (function() { // playground - /* global liquidjs, ace */ + /* global liquidjs, ace, Prism */ if (!location.pathname.match(/playground.html$/)) return; updateVersion(liquidjs.version); const engine = new liquidjs.Liquid({ @@ -48,12 +48,9 @@ const colorScheme = window.matchMedia('(prefers-color-scheme: dark)'); const editor = createEditor('editorEl', 'liquid'); const dataEditor = createEditor('dataEl', 'json'); - const preview = createEditor('previewEl', 'html'); - preview.setReadOnly(true); - preview.renderer.setShowGutter(false); - preview.renderer.setPadding(16); + const previewCode = document.getElementById('previewCode'); - const editors = [editor, dataEditor, preview]; + const editors = [editor, dataEditor]; colorScheme.addEventListener('change', function() { editors.forEach(applyEditorTheme); }); @@ -118,15 +115,23 @@ return utoa(obj.tpl) + ',' + utoa(obj.data); } + function setPreview (value) { + previewCode.textContent = value + if (window.Prism) { + delete previewCode.dataset.highlighted + window.Prism.highlightElement(previewCode) + } + } + async function update() { const tpl = editor.getValue(); const data = dataEditor.getValue(); history.replaceState({}, '', '#' + serializeArgs({tpl, data})); try { const html = await engine.parseAndRender(tpl, JSON.parse(data)); - preview.setValue(html, 1); + setPreview(html); } catch (err) { - preview.setValue(err.stack, 1); + setPreview(err.stack); throw err; } }