@ -1,5 +1,5 @@
/ * *
* simplemde v1 . 8.1
* simplemde v1 . 9.0
* Copyright Next Step Webs , Inc .
* @ link https : //github.com/NextStepWebs/simplemde-markdown-editor
* @ license MIT
@ -7,7 +7,7 @@
( function ( f ) { if ( typeof exports === "object" && typeof module !== "undefined" ) { module . exports = f ( ) } else if ( typeof define === "function" && define . amd ) { define ( [ ] , f ) } else { var g ; if ( typeof window !== "undefined" ) { g = window } else if ( typeof global !== "undefined" ) { g = global } else if ( typeof self !== "undefined" ) { g = self } else { g = this } g . SimpleMDE = f ( ) } } ) ( function ( ) { var define , module , exports ; return ( function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; var f = new Error ( "Cannot find module '" + o + "'" ) ; throw f . code = "MODULE_NOT_FOUND" , f } var l = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( l . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , l , l . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ) ( { 1 : [ function ( require , module , exports ) {
( function ( global ) {
; Typo = global . Typo = require ( " /Users/wescossick/Documents/Websites/simplemde-markdown-editor/node_modules/codemirror-spell-checker/src/js/ typo.js") ;
; Typo = global . Typo = require ( " D:\\My Web Sites\\simplemde-markdown-editor\\node_modules\\codemirror-spell-checker\\src\\js\\ typo.js") ;
CodeMirror = global . CodeMirror = require ( "codemirror" ) ;
; var _ _browserify _shim _require _ _ = require ; ( function browserifyShim ( module , define , require ) {
// Initialize data globally to reduce memory consumption
@ -105,7 +105,7 @@ if(!String.prototype.includes) {
} ) . call ( global , module , undefined , undefined ) ;
} ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
} , { " /Users/wescossick/Documents/Websites/simplemde-markdown-editor/node_modules/codemirror-spell-checker/src/js/ typo.js": 2 , "codemirror" : 6 } ] , 2 : [ function ( require , module , exports ) {
} , { " D:\\My Web Sites\\simplemde-markdown-editor\\node_modules\\codemirror-spell-checker\\src\\js\\ typo.js": 2 , "codemirror" : 6 } ] , 2 : [ function ( require , module , exports ) {
( function ( global ) {
; var _ _browserify _shim _require _ _ = require ; ( function browserifyShim ( module , exports , require , define , browserify _shim _ _define _ _module _ _export _ _ ) {
'use strict' ;
@ -1888,7 +1888,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
// given line.
function updateWidgetHeight ( line ) {
if ( line . widgets ) for ( var i = 0 ; i < line . widgets . length ; ++ i )
line . widgets [ i ] . height = line . widgets [ i ] . node . offsetHeight;
line . widgets [ i ] . height = line . widgets [ i ] . node . parentNode. offsetHeight;
}
// Do a bulk-read of the DOM positions and sizes needed to draw the
@ -3287,8 +3287,9 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
var out ;
for ( var i = 0 ; i < sel . ranges . length ; i ++ ) {
var range = sel . ranges [ i ] ;
var newAnchor = skipAtomic ( doc , range . anchor , bias , mayClear ) ;
var newHead = skipAtomic ( doc , range . head , bias , mayClear ) ;
var old = sel . ranges . length == doc . sel . ranges . length && doc . sel . ranges [ i ] ;
var newAnchor = skipAtomic ( doc , range . anchor , old && old . anchor , bias , mayClear ) ;
var newHead = skipAtomic ( doc , range . head , old && old . head , bias , mayClear ) ;
if ( out || newAnchor != range . anchor || newHead != range . head ) {
if ( ! out ) out = sel . ranges . slice ( 0 , i ) ;
out [ i ] = new Range ( newAnchor , newHead ) ;
@ -3297,54 +3298,59 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
return out ? normalizeSelection ( out , sel . primIndex ) : sel ;
}
// Ensure a given position is not inside an atomic range.
function skipAtomic ( doc , pos , bias , mayClear ) {
var flipped = false , curPos = pos ;
var dir = bias || 1 ;
doc . cantEdit = false ;
search : for ( ; ; ) {
var line = getLine ( doc , curPos . line ) ;
if ( line . markedSpans ) {
for ( var i = 0 ; i < line . markedSpans . length ; ++ i ) {
var sp = line . markedSpans [ i ] , m = sp . marker ;
if ( ( sp . from == null || ( m . inclusiveLeft ? sp . from <= curPos . ch : sp . from < curPos . ch ) ) &&
( sp . to == null || ( m . inclusiveRight ? sp . to >= curPos . ch : sp . to > curPos . ch ) ) ) {
if ( mayClear ) {
signal ( m , "beforeCursorEnter" ) ;
if ( m . explicitlyCleared ) {
if ( ! line . markedSpans ) break ;
else { -- i ; continue ; }
}
}
if ( ! m . atomic ) continue ;
var newPos = m . find ( dir < 0 ? - 1 : 1 ) ;
if ( cmp ( newPos , curPos ) == 0 ) {
newPos . ch += dir ;
if ( newPos . ch < 0 ) {
if ( newPos . line > doc . first ) newPos = clipPos ( doc , Pos ( newPos . line - 1 ) ) ;
else newPos = null ;
} else if ( newPos . ch > line . text . length ) {
if ( newPos . line < doc . first + doc . size - 1 ) newPos = Pos ( newPos . line + 1 , 0 ) ;
else newPos = null ;
}
if ( ! newPos ) {
if ( flipped ) {
// Driven in a corner -- no valid cursor position found at all
// -- try again *with* clearing, if we didn't already
if ( ! mayClear ) return skipAtomic ( doc , pos , bias , true ) ;
// Otherwise, turn off editing until further notice, and return the start of the doc
doc . cantEdit = true ;
return Pos ( doc . first , 0 ) ;
}
flipped = true ; newPos = pos ; dir = - dir ;
}
}
curPos = newPos ;
continue search ;
function skipAtomicInner ( doc , pos , oldPos , dir , mayClear ) {
var line = getLine ( doc , pos . line ) ;
if ( line . markedSpans ) for ( var i = 0 ; i < line . markedSpans . length ; ++ i ) {
var sp = line . markedSpans [ i ] , m = sp . marker ;
if ( ( sp . from == null || ( m . inclusiveLeft ? sp . from <= pos . ch : sp . from < pos . ch ) ) &&
( sp . to == null || ( m . inclusiveRight ? sp . to >= pos . ch : sp . to > pos . ch ) ) ) {
if ( mayClear ) {
signal ( m , "beforeCursorEnter" ) ;
if ( m . explicitlyCleared ) {
if ( ! line . markedSpans ) break ;
else { -- i ; continue ; }
}
}
if ( ! m . atomic ) continue ;
if ( oldPos ) {
var near = m . find ( dir < 0 ? 1 : - 1 ) , diff ;
if ( dir < 0 ? m . inclusiveRight : m . inclusiveLeft ) near = movePos ( doc , near , - dir , line ) ;
if ( near && near . line == pos . line && ( diff = cmp ( near , oldPos ) ) && ( dir < 0 ? diff < 0 : diff > 0 ) )
return skipAtomicInner ( doc , near , pos , dir , mayClear ) ;
}
var far = m . find ( dir < 0 ? - 1 : 1 ) ;
if ( dir < 0 ? m . inclusiveLeft : m . inclusiveRight ) far = movePos ( doc , far , dir , line ) ;
return far ? skipAtomicInner ( doc , far , pos , dir , mayClear ) : null ;
}
return curPos ;
}
return pos ;
}
// Ensure a given position is not inside an atomic range.
function skipAtomic ( doc , pos , oldPos , bias , mayClear ) {
var dir = bias || 1 ;
var found = skipAtomicInner ( doc , pos , oldPos , dir , mayClear ) ||
( ! mayClear && skipAtomicInner ( doc , pos , oldPos , dir , true ) ) ||
skipAtomicInner ( doc , pos , oldPos , - dir , mayClear ) ||
( ! mayClear && skipAtomicInner ( doc , pos , oldPos , - dir , true ) ) ;
if ( ! found ) {
doc . cantEdit = true ;
return Pos ( doc . first , 0 ) ;
}
return found ;
}
function movePos ( doc , pos , dir , line ) {
if ( dir < 0 && pos . ch == 0 ) {
if ( pos . line > doc . first ) return clipPos ( doc , Pos ( pos . line - 1 ) ) ;
else return null ;
} else if ( dir > 0 && pos . ch == ( line || getLine ( doc , pos . line ) ) . text . length ) {
if ( pos . line < doc . first + doc . size - 1 ) return Pos ( pos . line + 1 , 0 ) ;
else return null ;
} else {
return new Pos ( pos . line , pos . ch + dir ) ;
}
}
@ -5909,7 +5915,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
if ( dir > 0 && ! moveOnce ( ! first ) ) break ;
}
}
var result = skipAtomic ( doc , Pos ( line , ch ) , origDir, true ) ;
var result = skipAtomic ( doc , Pos ( line , ch ) , pos, origDir, true ) ;
if ( ! possible ) result . hitSide = true ;
return result ;
}
@ -7733,7 +7739,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
parentStyle += "width: " + cm . display . wrapper . clientWidth + "px;" ;
removeChildrenAndAdd ( cm . display . measure , elt ( "div" , [ widget . node ] , null , parentStyle ) ) ;
}
return widget . height = widget . node . offsetHeight;
return widget . height = widget . node . parentNode. offsetHeight;
}
function addLineWidget ( doc , handle , node , options ) {
@ -8154,7 +8160,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
spanEndStyle = "" ;
}
if ( m . className ) spanStyle += " " + m . className ;
if ( m . css ) css = m . css ;
if ( m . css ) css = ( css ? css + ";" : "" ) + m . css ;
if ( m . startStyle && sp . from == pos ) spanStartStyle += " " + m . startStyle ;
if ( m . endStyle && sp . to == nextChange ) spanEndStyle += " " + m . endStyle ;
if ( m . title && ! title ) title = m . title ;
@ -8423,6 +8429,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
this . id = ++ nextDocId ;
this . modeOption = mode ;
this . lineSep = lineSep ;
this . extend = false ;
if ( typeof text == "string" ) text = this . splitLines ( text ) ;
updateDoc ( this , { from : start , to : start , text : text } ) ;
@ -9930,7 +9937,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
// THE END
CodeMirror . version = "5. 8 .1";
CodeMirror . version = "5. 9 .1";
return CodeMirror ;
} ) ;
@ -10782,7 +10789,7 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
f : s . f ,
prevLine : s . prevLine ,
thisLine : s . this ,
thisLine : s . thisLine ,
block : s . block ,
htmlState : s . htmlState && CodeMirror . copyState ( htmlMode , s . htmlState ) ,
@ -12808,6 +12815,7 @@ require("spell-checker");
var marked = require ( "marked" ) ;
// Some variables
var isMac = /Mac/ . test ( navigator . platform ) ;
var shortcuts = {
@ -12863,6 +12871,7 @@ function createIcon(options, enableTooltips) {
}
}
el . tabIndex = - 1 ;
el . className = options . className ;
return el ;
}
@ -12966,7 +12975,7 @@ function toggleFullScreen(editor) {
* Action for toggling bold .
* /
function toggleBold ( editor ) {
_toggleBlock ( editor , "bold" , "**" ) ;
_toggleBlock ( editor , "bold" , editor . options . blockStyles . bold ) ;
}
@ -12974,7 +12983,7 @@ function toggleBold(editor) {
* Action for toggling italic .
* /
function toggleItalic ( editor ) {
_toggleBlock ( editor , "italic" , "*" ) ;
_toggleBlock ( editor , "italic" , editor . options . blockStyles . italic ) ;
}
@ -13078,6 +13087,16 @@ function drawImage(editor) {
_replaceSelection ( cm , stat . image , options . insertTexts . image ) ;
}
/ * *
* Action for drawing a table .
* /
function drawTable ( editor ) {
var cm = editor . codemirror ;
var stat = getState ( cm ) ;
var options = editor . options ;
_replaceSelection ( cm , stat . table , options . insertTexts . table ) ;
}
/ * *
* Action for drawing a horizontal rule .
* /
@ -13450,19 +13469,20 @@ function wordCount(data) {
return count ;
}
var toolbarBuiltInButtons = {
"bold" : {
name : "bold" ,
action : toggleBold ,
className : "fa fa-bold" ,
title : "Bold (Ctrl+B)"
title : "Bold (Ctrl+B)" ,
default : true
} ,
"italic" : {
name : "italic" ,
action : toggleItalic ,
className : "fa fa-italic" ,
title : "Italic (Ctrl+I)"
title : "Italic (Ctrl+I)" ,
default : true
} ,
"strikethrough" : {
name : "strikethrough" ,
@ -13474,7 +13494,8 @@ var toolbarBuiltInButtons = {
name : "heading" ,
action : toggleHeadingSmaller ,
className : "fa fa-header" ,
title : "Heading (Ctrl+H)"
title : "Heading (Ctrl+H)" ,
default : true
} ,
"heading-smaller" : {
name : "heading-smaller" ,
@ -13506,6 +13527,9 @@ var toolbarBuiltInButtons = {
className : "fa fa-header fa-header-x fa-header-3" ,
title : "Small Heading"
} ,
"separator-1" : {
name : "separator-1"
} ,
"code" : {
name : "code" ,
action : toggleCodeBlock ,
@ -13516,31 +13540,45 @@ var toolbarBuiltInButtons = {
name : "quote" ,
action : toggleBlockquote ,
className : "fa fa-quote-left" ,
title : "Quote (Ctrl+')"
title : "Quote (Ctrl+')" ,
default : true
} ,
"unordered-list" : {
name : "unordered-list" ,
action : toggleUnorderedList ,
className : "fa fa-list-ul" ,
title : "Generic List (Ctrl+L)"
title : "Generic List (Ctrl+L)" ,
default : true
} ,
"ordered-list" : {
name : "ordered-list" ,
action : toggleOrderedList ,
className : "fa fa-list-ol" ,
title : "Numbered List (Ctrl+Alt+L)"
title : "Numbered List (Ctrl+Alt+L)" ,
default : true
} ,
"separator-2" : {
name : "separator-2"
} ,
"link" : {
name : "link" ,
action : drawLink ,
className : "fa fa-link" ,
title : "Create Link (Ctrl+K)"
title : "Create Link (Ctrl+K)" ,
default : true
} ,
"image" : {
name : "image" ,
action : drawImage ,
className : "fa fa-picture-o" ,
title : "Insert Image (Ctrl+Alt+I)"
title : "Insert Image (Ctrl+Alt+I)" ,
default : true
} ,
"table" : {
name : "table" ,
action : drawTable ,
className : "fa fa-table" ,
title : "Insert Table"
} ,
"horizontal-rule" : {
name : "horizontal-rule" ,
@ -13548,38 +13586,50 @@ var toolbarBuiltInButtons = {
className : "fa fa-minus" ,
title : "Insert Horizontal Line"
} ,
"separator-3" : {
name : "separator-3"
} ,
"preview" : {
name : "preview" ,
action : togglePreview ,
className : "fa fa-eye no-disable" ,
title : "Toggle Preview (Ctrl+P)"
title : "Toggle Preview (Ctrl+P)" ,
default : true
} ,
"side-by-side" : {
name : "side-by-side" ,
action : toggleSideBySide ,
className : "fa fa-columns no-disable no-mobile" ,
title : "Toggle Side by Side (F9)"
title : "Toggle Side by Side (F9)" ,
default : true
} ,
"fullscreen" : {
name : "fullscreen" ,
action : toggleFullScreen ,
className : "fa fa-arrows-alt no-disable no-mobile" ,
title : "Toggle Fullscreen (F11)"
title : "Toggle Fullscreen (F11)" ,
default : true
} ,
"guide" : {
name : "guide" ,
action : "http://nextstepwebs.github.io/simplemde-markdown-editor/markdown-guide" ,
className : "fa fa-question-circle" ,
title : "Markdown Guide"
title : "Markdown Guide" ,
default : true
}
} ;
var insertTexts = {
link : [ "[" , "](http://)" ] ,
image : [ "![](http://" , ")" ] ,
table : [ "" , "\n\n| Column 1 | Column 2 | Column 3 |\n| -------- | -------- | -------- |\n| Text | Text | Text |\n\n" ] ,
horizontalRule : [ "" , "\n\n-----\n\n" ]
} ;
var blockStyles = {
"bold" : "**" ,
"italic" : "*"
} ;
/ * *
* Interface of SimpleMDE .
@ -13630,10 +13680,28 @@ function SimpleMDE(options) {
}
// Handle toolbar and status bar
if ( options . toolbar !== false )
options . toolbar = options . toolbar || SimpleMDE . toolbar ;
// Handle toolbar
if ( options . toolbar === undefined ) {
// Initialize
options . toolbar = [ ] ;
// Loop over the built in buttons, to get the preferred order
for ( var key in toolbarBuiltInButtons ) {
if ( toolbarBuiltInButtons . hasOwnProperty ( key ) ) {
if ( key . indexOf ( "separator-" ) != - 1 ) {
options . toolbar . push ( "|" ) ;
}
if ( toolbarBuiltInButtons [ key ] . default === true || ( options . showIcons && options . showIcons . constructor === Array && options . showIcons . indexOf ( key ) != - 1 ) ) {
options . toolbar . push ( key ) ;
}
}
}
}
// Handle status bar
if ( ! options . hasOwnProperty ( "status" ) ) {
options . status = [ "autosave" , "lines" , "words" , "cursor" ] ;
}
@ -13656,6 +13724,15 @@ function SimpleMDE(options) {
options . insertTexts = extend ( { } , insertTexts , options . insertTexts || { } ) ;
// Merging the blockStyles, with the given options
options . blockStyles = extend ( { } , blockStyles , options . blockStyles || { } ) ;
// Change unique_id to uniqueId for backwards compatibility
if ( options . autosave != undefined && options . autosave . unique _id != undefined && options . autosave . unique _id != "" )
options . autosave . uniqueId = options . autosave . unique _id ;
// Update this options
this . options = options ;
@ -13667,16 +13744,11 @@ function SimpleMDE(options) {
// The codemirror component is only available after rendering
// so, the setter for the initialValue can only run after
// the element has been rendered
if ( options . initialValue ) {
if ( options . initialValue && ( ! this . options . autosave || this . options . autosave . foundSavedValue !== true ) ) {
this . value ( options . initialValue ) ;
}
}
/ * *
* Default toolbar elements .
* /
SimpleMDE . toolbar = [ "bold" , "italic" , "heading" , "|" , "quote" , "unordered-list" , "ordered-list" , "|" , "link" , "image" , "|" , "preview" , "side-by-side" , "fullscreen" , "guide" ] ;
/ * *
* Default markdown render .
* /
@ -13747,6 +13819,14 @@ SimpleMDE.prototype.render = function(el) {
if ( cm . getOption ( "fullScreen" ) ) toggleFullScreen ( self ) ;
} ;
document . addEventListener ( "keydown" , function ( e ) {
e = e || window . event ;
if ( e . keyCode == 27 ) {
if ( self . codemirror . getOption ( "fullScreen" ) ) toggleFullScreen ( self ) ;
}
} , false ) ;
var mode , backdrop ;
if ( options . spellChecker !== false ) {
mode = "spell-checker" ;
@ -13789,53 +13869,69 @@ SimpleMDE.prototype.render = function(el) {
} ;
SimpleMDE . prototype . autosave = function ( ) {
var content = this . value ( ) ;
var simplemde = this ;
if ( localStorage ) {
var simplemde = this ;
if ( this . options . autosave . unique _i d == undefined || this . options . autosave . unique _i d == "" ) {
console . log ( "SimpleMDE: You must set a unique _i d to use the autosave feature") ;
return ;
}
if ( this . options . autosave . unique I d == undefined || this . options . autosave . unique I d == "" ) {
console . log ( "SimpleMDE: You must set a unique I d to use the autosave feature") ;
return ;
}
if ( simplemde . element . form != null && simplemde . element . form != undefined ) {
simplemde . element . form . addEventListener ( "submit" , function ( ) {
localStorage . setItem ( simplemde . options . autosave . unique _id , "" ) ;
} ) ;
}
if ( simplemde . element . form != null && simplemde . element . form != undefined ) {
simplemde . element . form . addEventListener ( "submit" , function ( ) {
localStorage . removeItem ( "smde_" + simplemde . options . autosave . uniqueId ) ;
} ) ;
}
if ( this . options . autosave . loaded !== true ) {
if ( localStorage . getItem ( this . options . autosave . unique _id ) != null )
this . codemirror . setValue ( localStorage . getItem ( this . options . autosave . unique _id ) ) ;
if ( this . options . autosave . loaded !== true ) {
if ( typeof localStorage . getItem ( "smde_" + this . options . autosave . uniqueId ) == "string" && localStorage . getItem ( "smde_" + this . options . autosave . uniqueId ) != "" ) {
this . codemirror . setValue ( localStorage . getItem ( "smde_" + this . options . autosave . uniqueId ) ) ;
this . options . autosave . foundSavedValue = true ;
}
this . options . autosave . loaded = true ;
}
this . options . autosave . loaded = true ;
}
if ( localStorage ) {
localStorage . setItem ( this . options . autosave . unique _id , content ) ;
}
localStorage . setItem ( "smde_" + this . options . autosave . uniqueId , simplemde . value ( ) ) ;
var el = document . getElementById ( "autosaved" ) ;
if ( el != null && el != undefined && el != "" ) {
var d = new Date ( ) ;
var hh = d . getHours ( ) ;
var m = d . getMinutes ( ) ;
var dd = "am" ;
var h = hh ;
if ( h >= 12 ) {
h = hh - 12 ;
dd = "pm" ;
}
if ( h == 0 ) {
h = 12 ;
}
m = m < 10 ? "0" + m : m ;
var el = document . getElementById ( "autosaved" ) ;
if ( el != null && el != undefined && el != "" ) {
var d = new Date ( ) ;
var hh = d . getHours ( ) ;
var m = d . getMinutes ( ) ;
var dd = "am" ;
var h = hh ;
if ( h >= 12 ) {
h = hh - 12 ;
dd = "pm" ;
el . innerHTML = "Autosaved: " + h + ":" + m + " " + dd ;
}
if ( h == 0 ) {
h = 12 ;
}
m = m < 10 ? "0" + m : m ;
el . innerHTML = "Autosaved: " + h + ":" + m + " " + dd ;
setTimeout ( function ( ) {
simplemde . autosave ( ) ;
} , this . options . autosave . delay || 10000 ) ;
} else {
console . log ( "SimpleMDE: localStorage not available, cannot autosave" ) ;
}
} ;
setTimeout ( function ( ) {
simplemde . autosave ( ) ;
} , this . options . autosave . delay || 10000 ) ;
SimpleMDE . prototype . clearAutosavedValue = function ( ) {
if ( localStorage ) {
if ( this . options . autosave . uniqueId == undefined || this . options . autosave . uniqueId == "" ) {
console . log ( "SimpleMDE: You must set a uniqueId to use the autosave feature" ) ;
return ;
}
localStorage . removeItem ( "smde_" + this . options . autosave . uniqueId ) ;
} else {
console . log ( "SimpleMDE: localStorage not available, cannot autosave" ) ;
}
} ;
SimpleMDE . prototype . createSideBySide = function ( ) {
@ -14033,6 +14129,7 @@ SimpleMDE.toggleUnorderedList = toggleUnorderedList;
SimpleMDE . toggleOrderedList = toggleOrderedList ;
SimpleMDE . drawLink = drawLink ;
SimpleMDE . drawImage = drawImage ;
SimpleMDE . drawTable = drawTable ;
SimpleMDE . drawHorizontalRule = drawHorizontalRule ;
SimpleMDE . undo = undo ;
SimpleMDE . redo = redo ;
@ -14085,6 +14182,9 @@ SimpleMDE.prototype.drawLink = function() {
SimpleMDE . prototype . drawImage = function ( ) {
drawImage ( this ) ;
} ;
SimpleMDE . prototype . drawTable = function ( ) {
drawTable ( this ) ;
} ;
SimpleMDE . prototype . drawHorizontalRule = function ( ) {
drawHorizontalRule ( this ) ;
} ;