@ -173,7 +173,7 @@ exports.kMaxLength = kMaxLength()
function typedArraySupport ( ) {
try {
var arr = new Uint8Array ( 1 )
arr . foo = function ( ) { return 42 }
arr . __proto _ _ = { _ _proto _ _ : Uint8Array . prototype , foo : function ( ) { return 42 } }
return arr . foo ( ) === 42 && // typed array instances can be augmented
typeof arr . subarray === 'function' && // chrome 9-10 lack `subarray`
arr . subarray ( 1 , 1 ) . byteLength === 0 // ie10 has broken `subarray`
@ -317,7 +317,7 @@ function allocUnsafe (that, size) {
assertSize ( size )
that = createBuffer ( that , size < 0 ? 0 : checked ( size ) | 0 )
if ( ! Buffer . TYPED _ARRAY _SUPPORT ) {
for ( var i = 0 ; i < size ; i ++ ) {
for ( var i = 0 ; i < size ; ++ i ) {
that [ i ] = 0
}
}
@ -373,7 +373,9 @@ function fromArrayBuffer (that, array, byteOffset, length) {
throw new RangeError ( '\'length\' is out of bounds' )
}
if ( length === undefined ) {
if ( byteOffset === undefined && length === undefined ) {
array = new Uint8Array ( array )
} else if ( length === undefined ) {
array = new Uint8Array ( array , byteOffset )
} else {
array = new Uint8Array ( array , byteOffset , length )
@ -495,14 +497,14 @@ Buffer.concat = function concat (list, length) {
var i
if ( length === undefined ) {
length = 0
for ( i = 0 ; i < list . length ; i ++ ) {
for ( i = 0 ; i < list . length ; ++ i ) {
length += list [ i ] . length
}
}
var buffer = Buffer . allocUnsafe ( length )
var pos = 0
for ( i = 0 ; i < list . length ; i ++ ) {
for ( i = 0 ; i < list . length ; ++ i ) {
var buf = list [ i ]
if ( ! Buffer . isBuffer ( buf ) ) {
throw new TypeError ( '"list" argument must be an Array of Buffers' )
@ -534,7 +536,6 @@ function byteLength (string, encoding) {
switch ( encoding ) {
case 'ascii' :
case 'binary' :
// Deprecated
case 'raw' :
case 'raws' :
return len
@ -772,15 +773,16 @@ function arrayIndexOf (arr, val, byteOffset, encoding) {
}
var foundIndex = - 1
for ( var i = 0 ; byteOffset + i < arrLength ; i ++ ) {
if ( read ( arr , byteOffset + i) === read ( val , foundIndex === - 1 ? 0 : i - foundIndex ) ) {
for ( var i = byteOffset ; i < arrLength ; ++ i ) {
if ( read ( arr , i) === read ( val , foundIndex === - 1 ? 0 : i - foundIndex ) ) {
if ( foundIndex === - 1 ) foundIndex = i
if ( i - foundIndex + 1 === valLength ) return ( byteOffset + foundIndex ) * indexSize
if ( i - foundIndex + 1 === valLength ) return foundIndex * indexSize
} else {
if ( foundIndex !== - 1 ) i -= i - foundIndex
foundIndex = - 1
}
}
return - 1
}
@ -845,7 +847,7 @@ function hexWrite (buf, string, offset, length) {
if ( length > strLen / 2 ) {
length = strLen / 2
}
for ( var i = 0 ; i < length ; i ++ ) {
for ( var i = 0 ; i < length ; ++ i ) {
var parsed = parseInt ( string . substr ( i * 2 , 2 ) , 16 )
if ( isNaN ( parsed ) ) return i
buf [ offset + i ] = parsed
@ -1059,7 +1061,7 @@ function asciiSlice (buf, start, end) {
var ret = ''
end = Math . min ( buf . length , end )
for ( var i = start ; i < end ; i ++ ) {
for ( var i = start ; i < end ; ++ i ) {
ret += String . fromCharCode ( buf [ i ] & 0x7F )
}
return ret
@ -1069,7 +1071,7 @@ function binarySlice (buf, start, end) {
var ret = ''
end = Math . min ( buf . length , end )
for ( var i = start ; i < end ; i ++ ) {
for ( var i = start ; i < end ; ++ i ) {
ret += String . fromCharCode ( buf [ i ] )
}
return ret
@ -1082,7 +1084,7 @@ function hexSlice (buf, start, end) {
if ( ! end || end < 0 || end > len ) end = len
var out = ''
for ( var i = start ; i < end ; i ++ ) {
for ( var i = start ; i < end ; ++ i ) {
out += toHex ( buf [ i ] )
}
return out
@ -1125,7 +1127,7 @@ Buffer.prototype.slice = function slice (start, end) {
} else {
var sliceLen = end - start
newBuf = new Buffer ( sliceLen , undefined )
for ( var i = 0 ; i < sliceLen ; i ++ ) {
for ( var i = 0 ; i < sliceLen ; ++ i ) {
newBuf [ i ] = this [ i + start ]
}
}
@ -1352,7 +1354,7 @@ Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
function objectWriteUInt16 ( buf , value , offset , littleEndian ) {
if ( value < 0 ) value = 0xffff + value + 1
for ( var i = 0 , j = Math . min ( buf . length - offset , 2 ) ; i < j ; i ++ ) {
for ( var i = 0 , j = Math . min ( buf . length - offset , 2 ) ; i < j ; ++ i ) {
buf [ offset + i ] = ( value & ( 0xff << ( 8 * ( littleEndian ? i : 1 - i ) ) ) ) >>>
( littleEndian ? i : 1 - i ) * 8
}
@ -1386,7 +1388,7 @@ Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert
function objectWriteUInt32 ( buf , value , offset , littleEndian ) {
if ( value < 0 ) value = 0xffffffff + value + 1
for ( var i = 0 , j = Math . min ( buf . length - offset , 4 ) ; i < j ; i ++ ) {
for ( var i = 0 , j = Math . min ( buf . length - offset , 4 ) ; i < j ; ++ i ) {
buf [ offset + i ] = ( value >>> ( littleEndian ? i : 3 - i ) * 8 ) & 0xff
}
}
@ -1601,12 +1603,12 @@ Buffer.prototype.copy = function copy (target, targetStart, start, end) {
if ( this === target && start < targetStart && targetStart < end ) {
// descending copy from end
for ( i = len - 1 ; i >= 0 ; i -- ) {
for ( i = len - 1 ; i >= 0 ; -- i ) {
target [ i + targetStart ] = this [ i + start ]
}
} else if ( len < 1000 || ! Buffer . TYPED _ARRAY _SUPPORT ) {
// ascending copy from start
for ( i = 0 ; i < len ; i ++ ) {
for ( i = 0 ; i < len ; ++ i ) {
target [ i + targetStart ] = this [ i + start ]
}
} else {
@ -1667,7 +1669,7 @@ Buffer.prototype.fill = function fill (val, start, end, encoding) {
var i
if ( typeof val === 'number' ) {
for ( i = start ; i < end ; i ++ ) {
for ( i = start ; i < end ; ++ i ) {
this [ i ] = val
}
} else {
@ -1675,7 +1677,7 @@ Buffer.prototype.fill = function fill (val, start, end, encoding) {
? val
: utf8ToBytes ( new Buffer ( val , encoding ) . toString ( ) )
var len = bytes . length
for ( i = 0 ; i < end - start ; i ++ ) {
for ( i = 0 ; i < end - start ; ++ i ) {
this [ i + start ] = bytes [ i % len ]
}
}
@ -1717,7 +1719,7 @@ function utf8ToBytes (string, units) {
var leadSurrogate = null
var bytes = [ ]
for ( var i = 0 ; i < length ; i ++ ) {
for ( var i = 0 ; i < length ; ++ i ) {
codePoint = string . charCodeAt ( i )
// is surrogate component
@ -1792,7 +1794,7 @@ function utf8ToBytes (string, units) {
function asciiToBytes ( str ) {
var byteArray = [ ]
for ( var i = 0 ; i < str . length ; i ++ ) {
for ( var i = 0 ; i < str . length ; ++ i ) {
// Node's code seems to be doing this and not & 0x7F..
byteArray . push ( str . charCodeAt ( i ) & 0xFF )
}
@ -1802,7 +1804,7 @@ function asciiToBytes (str) {
function utf16leToBytes ( str , units ) {
var c , hi , lo
var byteArray = [ ]
for ( var i = 0 ; i < str . length ; i ++ ) {
for ( var i = 0 ; i < str . length ; ++ i ) {
if ( ( units -= 2 ) < 0 ) break
c = str . charCodeAt ( i )
@ -1820,7 +1822,7 @@ function base64ToBytes (str) {
}
function blitBuffer ( src , dst , offset , length ) {
for ( var i = 0 ; i < length ; i ++ ) {
for ( var i = 0 ; i < length ; ++ i ) {
if ( ( i + offset >= dst . length ) || ( i >= src . length ) ) break
dst [ i + offset ] = src [ i ]
}
@ -3543,7 +3545,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
} ;
function hiddenTextarea ( ) {
var te = elt ( "textarea" , null , null , "position: absolute; padding: 0; width: 1px; height: 1em; outline: none") ;
var te = elt ( "textarea" , null , null , "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none") ;
var div = elt ( "div" , [ te ] , null , "overflow: hidden; position: relative; width: 3px; height: 0px;" ) ;
// The textarea is kept positioned near the cursor to prevent the
// fact that it'll be scrolled into view on input from scrolling
@ -5010,6 +5012,16 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
return { node : node , start : start , end : end , collapse : collapse , coverStart : mStart , coverEnd : mEnd } ;
}
function getUsefulRect ( rects , bias ) {
var rect = nullRect
if ( bias == "left" ) for ( var i = 0 ; i < rects . length ; i ++ ) {
if ( ( rect = rects [ i ] ) . left != rect . right ) break
} else for ( var i = rects . length - 1 ; i >= 0 ; i -- ) {
if ( ( rect = rects [ i ] ) . left != rect . right ) break
}
return rect
}
function measureCharInner ( cm , prepared , ch , bias ) {
var place = nodeAndOffsetInLineMap ( prepared . map , ch , bias ) ;
var node = place . node , start = place . start , end = place . end , collapse = place . collapse ;
@ -5019,17 +5031,10 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
for ( var i = 0 ; i < 4 ; i ++ ) { // Retry a maximum of 4 times when nonsense rectangles are returned
while ( start && isExtendingChar ( prepared . line . text . charAt ( place . coverStart + start ) ) ) -- start ;
while ( place . coverStart + end < place . coverEnd && isExtendingChar ( prepared . line . text . charAt ( place . coverStart + end ) ) ) ++ end ;
if ( ie && ie _version < 9 && start == 0 && end == place . coverEnd - place . coverStart ) {
if ( ie && ie _version < 9 && start == 0 && end == place . coverEnd - place . coverStart )
rect = node . parentNode . getBoundingClientRect ( ) ;
} else if ( ie && cm . options . lineWrapping ) {
var rects = range ( node , start , end ) . getClientRects ( ) ;
if ( rects . length )
rect = rects [ bias == "right" ? rects . length - 1 : 0 ] ;
else
rect = nullRect ;
} else {
rect = range ( node , start , end ) . getBoundingClientRect ( ) || nullRect ;
}
else
rect = getUsefulRect ( range ( node , start , end ) . getClientRects ( ) , bias )
if ( rect . left || rect . right || start == 0 ) break ;
end = start ;
start = start - 1 ;
@ -5255,10 +5260,23 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
for ( ; ; ) {
if ( bidi ? to == from || to == moveVisually ( lineObj , from , 1 ) : to - from <= 1 ) {
var ch = x < fromX || x - fromX <= toX - x ? from : to ;
var outside = ch == from ? fromOutside : toOutside
var xDiff = x - ( ch == from ? fromX : toX ) ;
// This is a kludge to handle the case where the coordinates
// are after a line-wrapped line. We should replace it with a
// more general handling of cursor positions around line
// breaks. (Issue #4078)
if ( toOutside && ! bidi && ! /\s/ . test ( lineObj . text . charAt ( ch ) ) && xDiff > 0 &&
ch < lineObj . text . length && preparedMeasure . view . measure . heights . length > 1 ) {
var charSize = measureCharPrepared ( cm , preparedMeasure , ch , "right" ) ;
if ( innerOff <= charSize . bottom && innerOff >= charSize . top && Math . abs ( x - charSize . right ) < xDiff ) {
outside = false
ch ++
xDiff = x - charSize . right
}
}
while ( isExtendingChar ( lineObj . text . charAt ( ch ) ) ) ++ ch ;
var pos = PosWithInfo ( lineNo , ch , ch == from ? fromOutside : toOutside ,
xDiff < - 1 ? - 1 : xDiff > 1 ? 1 : 0 ) ;
var pos = PosWithInfo ( lineNo , ch , outside , xDiff < - 1 ? - 1 : xDiff > 1 ? 1 : 0 ) ;
return pos ;
}
var step = Math . ceil ( dist / 2 ) , middle = from + step ;
@ -5982,6 +6000,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
// Let the drag handler handle this.
if ( webkit ) display . scroller . draggable = true ;
cm . state . draggingText = dragEnd ;
dragEnd . copy = mac ? e . altKey : e . ctrlKey
// IE's approach to draggable
if ( display . scroller . dragDrop ) display . scroller . dragDrop ( ) ;
on ( document , "mouseup" , dragEnd ) ;
@ -6212,7 +6231,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
try {
var text = e . dataTransfer . getData ( "Text" ) ;
if ( text ) {
if ( cm . state . draggingText && ! ( mac ? e . altKey : e . ctrlKey ) )
if ( cm . state . draggingText && ! cm . state . draggingText . copy )
var selected = cm . listSelections ( ) ;
setSelectionNoUndo ( cm . doc , simpleSelection ( pos , pos ) ) ;
if ( selected ) for ( var i = 0 ; i < selected . length ; ++ i )
@ -6727,7 +6746,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
// Revert a change stored in a document's history.
function makeChangeFromHistory ( doc , type , allowSelectionOnly ) {
if ( doc . cm && doc . cm . state . suppressEdits ) return ;
if ( doc . cm && doc . cm . state . suppressEdits && ! allowSelectionOnly ) return ;
var hist = doc . history , event , selAfter = doc . sel ;
var source = type == "undo" ? hist . done : hist . undone , dest = type == "undo" ? hist . undone : hist . done ;
@ -9252,6 +9271,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
var content = elt ( "span" , null , null , webkit ? "padding-right: .1px" : null ) ;
var builder = { pre : elt ( "pre" , [ content ] , "CodeMirror-line" ) , content : content ,
col : 0 , pos : 0 , cm : cm ,
trailingSpace : false ,
splitSpaces : ( ie || webkit ) && cm . getOption ( "lineWrapping" ) } ;
lineView . measure = { } ;
@ -9313,7 +9333,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
// the line map. Takes care to render special characters separately.
function buildToken ( builder , text , style , startStyle , endStyle , title , css ) {
if ( ! text ) return ;
var displayText = builder . splitSpaces ? text. replace ( / {3,}/g , splitSpaces ) : text ;
var displayText = builder . splitSpaces ? splitSpaces( text , builder . trailingSpace ) : text
var special = builder . cm . state . specialChars , mustWrap = false ;
if ( ! special . test ( text ) ) {
builder . col += text . length ;
@ -9358,6 +9378,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
builder . pos ++ ;
}
}
builder . trailingSpace = displayText . charCodeAt ( text . length - 1 ) == 32
if ( style || startStyle || endStyle || mustWrap || css ) {
var fullStyle = style || "" ;
if ( startStyle ) fullStyle += startStyle ;
@ -9369,11 +9390,17 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
builder . content . appendChild ( content ) ;
}
function splitSpaces ( old ) {
var out = " " ;
for ( var i = 0 ; i < old . length - 2 ; ++ i ) out += i % 2 ? " " : "\u00a0" ;
out += " " ;
return out ;
function splitSpaces ( text , trailingBefore ) {
if ( text . length > 1 && ! / / . test ( text ) ) return text
var spaceBefore = trailingBefore , result = ""
for ( var i = 0 ; i < text . length ; i ++ ) {
var ch = text . charAt ( i )
if ( ch == " " && spaceBefore && ( i == text . length - 1 || text . charCodeAt ( i + 1 ) == 32 ) )
ch = "\u00a0"
result += ch
spaceBefore = ch == " "
}
return result
}
// Work around nonsense dimensions being reported for stretches of
@ -9410,6 +9437,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
builder . content . appendChild ( widget ) ;
}
builder . pos += size ;
builder . trailingSpace = false
}
// Outputs a number of spans to make up a line, taking highlighting
@ -10857,8 +10885,9 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
if ( badBidiRects != null ) return badBidiRects ;
var txt = removeChildrenAndAdd ( measure , document . createTextNode ( "A\u062eA" ) ) ;
var r0 = range ( txt , 0 , 1 ) . getBoundingClientRect ( ) ;
if ( ! r0 || r0 . left == r0 . right ) return false ; // Safari returns null in some cases (#2780)
var r1 = range ( txt , 1 , 2 ) . getBoundingClientRect ( ) ;
removeChildren ( measure ) ;
if ( ! r0 || r0 . left == r0 . right ) return false ; // Safari returns null in some cases (#2780)
return badBidiRects = ( r1 . right - r0 . right < 3 ) ;
}
@ -11224,7 +11253,7 @@ CodeMirror.overlayMode = function(base, overlay, combine) {
// THE END
CodeMirror . version = "5.1 5.2 ";
CodeMirror . version = "5.1 7.0 ";
return CodeMirror ;
} ) ;
@ -11427,7 +11456,9 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
list2 : "variable-3" ,
list3 : "keyword" ,
hr : "hr" ,
image : "tag" ,
image : "image" ,
imageAltText : "image-alt-text" ,
imageMarker : "image-marker" ,
formatting : "formatting" ,
linkInline : "link" ,
linkEmail : "link" ,
@ -11677,6 +11708,9 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
if ( state . strikethrough ) { styles . push ( tokenTypes . strikethrough ) ; }
if ( state . linkText ) { styles . push ( tokenTypes . linkText ) ; }
if ( state . code ) { styles . push ( tokenTypes . code ) ; }
if ( state . image ) { styles . push ( tokenTypes . image ) ; }
if ( state . imageAltText ) { styles . push ( tokenTypes . imageAltText , "link" ) ; }
if ( state . imageMarker ) { styles . push ( tokenTypes . imageMarker ) ; }
}
if ( state . header ) { styles . push ( tokenTypes . header , tokenTypes . header + "-" + state . header ) ; }
@ -11796,12 +11830,29 @@ CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) {
}
if ( ch === '!' && stream . match ( /\[[^\]]*\] ?(?:\(|\[)/ , false ) ) {
stream . match ( /\[[^\]]*\]/ ) ;
state . imageMarker = true ;
state . image = true ;
if ( modeCfg . highlightFormatting ) state . formatting = "image" ;
return getType ( state ) ;
}
if ( ch === '[' && state . imageMarker ) {
state . imageMarker = false ;
state . imageAltText = true
if ( modeCfg . highlightFormatting ) state . formatting = "image" ;
return getType ( state ) ;
}
if ( ch === ']' && state . imageAltText ) {
if ( modeCfg . highlightFormatting ) state . formatting = "image" ;
var type = getType ( state ) ;
state . imageAltText = false ;
state . image = false ;
state . inline = state . f = linkHref ;
return tokenTypes . image ;
return t ype;
}
if ( ch === '[' && stream . match ( /[^\]]*\](\(.*\)| ?\[.*?\])/ , false ) ) {
if ( ch === '[' && stream . match ( /[^\]]*\](\(.*\)| ?\[.*?\])/ , false ) && ! state . image ) {
state . linkText = true ;
if ( modeCfg . highlightFormatting ) state . formatting = "link" ;
return getType ( state ) ;
@ -15784,8 +15835,10 @@ function _replaceSelection(cm, active, startEnd, url) {
var text ;
var start = startEnd [ 0 ] ;
var end = startEnd [ 1 ] ;
var startPoint = cm . getCursor ( "start" ) ;
var endPoint = cm . getCursor ( "end" ) ;
var startPoint = { } ,
endPoint = { } ;
Object . assign ( startPoint , cm . getCursor ( "start" ) ) ;
Object . assign ( endPoint , cm . getCursor ( "end" ) ) ;
if ( url ) {
end = end . replace ( "#url#" , url ) ;
}
@ -16353,6 +16406,8 @@ function SimpleMDE(options) {
// Merging the shortcuts, with the given options
options . shortcuts = extend ( { } , shortcuts , options . shortcuts || { } ) ;
options . minHeight = options . minHeight || "300px" ;
// Change unique_id to uniqueId for backwards compatibility
if ( options . autosave != undefined && options . autosave . unique _id != undefined && options . autosave . unique _id != "" )
@ -16381,8 +16436,12 @@ function SimpleMDE(options) {
SimpleMDE . prototype . markdown = function ( text ) {
if ( marked ) {
// Initialize
var markedOptions = { } ;
var markedOptions ;
if ( this . options && this . options . renderingConfig && this . options . renderingConfig . markedOptions ) {
markedOptions = this . options . renderingConfig . markedOptions ;
} else {
markedOptions = { } ;
}
// Update options
if ( this . options && this . options . renderingConfig && this . options . renderingConfig . singleLineBreaks === false ) {
@ -16391,10 +16450,17 @@ SimpleMDE.prototype.markdown = function(text) {
markedOptions . breaks = true ;
}
if ( this . options && this . options . renderingConfig && this . options . renderingConfig . codeSyntaxHighlighting === true && window . hljs ) {
markedOptions . highlight = function ( code ) {
return window . hljs . highlightAuto ( code ) . value ;
} ;
if ( this . options && this . options . renderingConfig && this . options . renderingConfig . codeSyntaxHighlighting === true ) {
/* Get HLJS from config or window */
var hljs = this . options . renderingConfig . hljs || window . hljs ;
/* Check if HLJS loaded */
if ( hljs ) {
markedOptions . highlight = function ( code ) {
return hljs . highlightAuto ( code ) . value ;
} ;
}
}
@ -16484,6 +16550,8 @@ SimpleMDE.prototype.render = function(el) {
styleSelectedText : ( options . styleSelectedText != undefined ) ? options . styleSelectedText : true
} ) ;
this . codemirror . getScrollerElement ( ) . style . minHeight = options . minHeight ;
if ( options . forceSync === true ) {
var cm = this . codemirror ;
cm . on ( "change" , function ( ) {