From f0f496ae925400130d621609979925d38630e13f Mon Sep 17 00:00:00 2001 From: Dave Brondsema Date: Wed, 2 Sep 2015 19:59:11 +0000 Subject: [PATCH] Make preview rendering be customizable --- README.md | 1 + src/js/simplemde.js | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5fc1b3f..67cbba9 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ simplemde.value(); - **enabled**: If set to `true`, autosave the text. Defaults to `false`. - **unique_id**: You must set a unique identifier so that SimpleMDE can autosave. Something that separates this from other textareas. - **delay**: Delay between saves, in milliseconds. Defaults to `10000` (10s). +- **preview_render**: A custom function to render the preview mode contents. ```JavaScript var simplemde = new SimpleMDE({ diff --git a/src/js/simplemde.js b/src/js/simplemde.js index 31d6f7d..437f803 100644 --- a/src/js/simplemde.js +++ b/src/js/simplemde.js @@ -331,12 +331,11 @@ function toggleSideBySide(editor) { } // Start preview with the current text - var parse = editor.constructor.markdown; - preview.innerHTML = parse(cm.getValue()); + editor.options.preview_render(editor, preview); // Updates preview cm.on('update', function() { - preview.innerHTML = parse(cm.getValue()); + editor.options.preview_render(editor, preview); }); } @@ -349,7 +348,6 @@ function togglePreview(editor) { var wrapper = cm.getWrapperElement(); var toolbar_div = wrapper.previousSibling; var toolbar = editor.toolbarElements.preview; - var parse = editor.constructor.markdown; var preview = wrapper.lastChild; if(!/editor-preview/.test(preview.className)) { preview = document.createElement('div'); @@ -373,8 +371,7 @@ function togglePreview(editor) { toolbar.className += ' active'; toolbar_div.className += ' disabled-for-preview'; } - var text = cm.getValue(); - preview.innerHTML = parse(text); + editor.options.preview_render(editor, preview); // Turn off side by side if needed var sidebyside = cm.getWrapperElement().nextSibling; @@ -745,6 +742,14 @@ function SimpleMDE(options) { options.status = ['autosave', 'lines', 'words', 'cursor']; } + if(!options.preview_render) { + options.preview_render = function(editor, preview) { + var text = editor.codemirror.getValue(); + preview.innerHTML = editor.markdown(text); + } + } + + this.options = options; // If user has passed an element, it should auto rendered @@ -766,7 +771,7 @@ SimpleMDE.toolbar = toolbar; /** * Default markdown render. */ -SimpleMDE.markdown = function(text) { +SimpleMDE.prototype.markdown = function(text) { if(window.marked) { // Update options if(this.options.singleLineBreaks !== false) {