docs/build/0.320b8cca.js
webpackJsonp([0], {
"./node_modules/codemirror/lib/codemirror.js": function(e, t, n) {
!(function(t, n) {
e.exports = n()
})(0, function() {
"use strict"
function classTest(e) {
return new RegExp("(^|\\s)" + e + "(?:$|\\s)\\s*")
}
function removeChildren(e) {
for (var t = e.childNodes.length; t > 0; --t)
e.removeChild(e.firstChild)
return e
}
function removeChildrenAndAdd(e, t) {
return removeChildren(e).appendChild(t)
}
function elt(e, t, n, r) {
var o = document.createElement(e)
if (
(n && (o.className = n),
r && (o.style.cssText = r),
"string" == typeof t)
)
o.appendChild(document.createTextNode(t))
else if (t) for (var i = 0; i < t.length; ++i) o.appendChild(t[i])
return o
}
function eltP(e, t, n, r) {
var o = elt(e, t, n, r)
return o.setAttribute("role", "presentation"), o
}
function contains(e, t) {
if ((3 == t.nodeType && (t = t.parentNode), e.contains))
return e.contains(t)
do {
if ((11 == t.nodeType && (t = t.host), t == e)) return !0
} while ((t = t.parentNode))
}
function activeElt() {
var e
try {
e = document.activeElement
} catch (t) {
e = document.body || null
}
for (; e && e.shadowRoot && e.shadowRoot.activeElement; )
e = e.shadowRoot.activeElement
return e
}
function addClass(e, t) {
var n = e.className
classTest(t).test(n) || (e.className += (n ? " " : "") + t)
}
function joinClasses(e, t) {
for (var n = e.split(" "), r = 0; r < n.length; r++)
n[r] && !classTest(n[r]).test(t) && (t += " " + n[r])
return t
}
function bind(e) {
var t = Array.prototype.slice.call(arguments, 1)
return function() {
return e.apply(null, t)
}
}
function copyObj(e, t, n) {
t || (t = {})
for (var r in e)
!e.hasOwnProperty(r) ||
(!1 === n && t.hasOwnProperty(r)) ||
(t[r] = e[r])
return t
}
function countColumn(e, t, n, r, o) {
null == t && -1 == (t = e.search(/[^\s\u00a0]/)) && (t = e.length)
for (var i = r || 0, a = o || 0; ; ) {
var s = e.indexOf("\t", i)
if (s < 0 || s >= t) return a + (t - i)
;(a += s - i), (a += n - a % n), (i = s + 1)
}
}
function indexOf(e, t) {
for (var n = 0; n < e.length; ++n) if (e[n] == t) return n
return -1
}
function findColumn(e, t, n) {
for (var r = 0, o = 0; ; ) {
var i = e.indexOf("\t", r)
;-1 == i && (i = e.length)
var a = i - r
if (i == e.length || o + a >= t) return r + Math.min(a, t - o)
if (((o += i - r), (o += n - o % n), (r = i + 1), o >= t)) return r
}
}
function spaceStr(e) {
for (; E.length <= e; ) E.push(lst(E) + " ")
return E[e]
}
function lst(e) {
return e[e.length - 1]
}
function map(e, t) {
for (var n = [], r = 0; r < e.length; r++) n[r] = t(e[r], r)
return n
}
function insertSorted(e, t, n) {
for (var r = 0, o = n(t); r < e.length && n(e[r]) <= o; ) r++
e.splice(r, 0, t)
}
function nothing() {}
function createObj(e, t) {
var n
return (
Object.create
? (n = Object.create(e))
: ((nothing.prototype = e), (n = new nothing())),
t && copyObj(t, n),
n
)
}
function isWordCharBasic(e) {
return (
/\w/.test(e) ||
(e > "" && (e.toUpperCase() != e.toLowerCase() || I.test(e)))
)
}
function isWordChar(e, t) {
return t
? !!(t.source.indexOf("\\w") > -1 && isWordCharBasic(e)) || t.test(e)
: isWordCharBasic(e)
}
function isEmpty(e) {
for (var t in e) if (e.hasOwnProperty(t) && e[t]) return !1
return !0
}
function isExtendingChar(e) {
return e.charCodeAt(0) >= 768 && F.test(e)
}
function skipExtendingChars(e, t, n) {
for (; (n < 0 ? t > 0 : t < e.length) && isExtendingChar(e.charAt(t)); )
t += n
return t
}
function findFirst(e, t, n) {
for (var r = t > n ? -1 : 1; ; ) {
if (t == n) return t
var o = (t + n) / 2,
i = r < 0 ? Math.ceil(o) : Math.floor(o)
if (i == t) return e(i) ? t : n
e(i) ? (n = i) : (t = i + r)
}
}
function Display(e, t, r) {
var o = this
;(this.input = r),
(o.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler")),
o.scrollbarFiller.setAttribute("cm-not-content", "true"),
(o.gutterFiller = elt("div", null, "CodeMirror-gutter-filler")),
o.gutterFiller.setAttribute("cm-not-content", "true"),
(o.lineDiv = eltP("div", null, "CodeMirror-code")),
(o.selectionDiv = elt(
"div",
null,
null,
"position: relative; z-index: 1"
)),
(o.cursorDiv = elt("div", null, "CodeMirror-cursors")),
(o.measure = elt("div", null, "CodeMirror-measure")),
(o.lineMeasure = elt("div", null, "CodeMirror-measure")),
(o.lineSpace = eltP(
"div",
[o.measure, o.lineMeasure, o.selectionDiv, o.cursorDiv, o.lineDiv],
null,
"position: relative; outline: none"
))
var i = eltP("div", [o.lineSpace], "CodeMirror-lines")
;(o.mover = elt("div", [i], null, "position: relative")),
(o.sizer = elt("div", [o.mover], "CodeMirror-sizer")),
(o.sizerWidth = null),
(o.heightForcer = elt(
"div",
null,
null,
"position: absolute; height: " + A + "px; width: 1px;"
)),
(o.gutters = elt("div", null, "CodeMirror-gutters")),
(o.lineGutter = null),
(o.scroller = elt(
"div",
[o.sizer, o.heightForcer, o.gutters],
"CodeMirror-scroll"
)),
o.scroller.setAttribute("tabIndex", "-1"),
(o.wrapper = elt(
"div",
[o.scrollbarFiller, o.gutterFiller, o.scroller],
"CodeMirror"
)),
a &&
s < 8 &&
((o.gutters.style.zIndex = -1),
(o.scroller.style.paddingRight = 0)),
l || (n && v) || (o.scroller.draggable = !0),
e && (e.appendChild ? e.appendChild(o.wrapper) : e(o.wrapper)),
(o.viewFrom = o.viewTo = t.first),
(o.reportedViewFrom = o.reportedViewTo = t.first),
(o.view = []),
(o.renderedView = null),
(o.externalMeasured = null),
(o.viewOffset = 0),
(o.lastWrapHeight = o.lastWrapWidth = 0),
(o.updateLineNumbers = null),
(o.nativeBarWidth = o.barHeight = o.barWidth = 0),
(o.scrollbarsClipped = !1),
(o.lineNumWidth = o.lineNumInnerWidth = o.lineNumChars = null),
(o.alignWidgets = !1),
(o.cachedCharWidth = o.cachedTextHeight = o.cachedPaddingH = null),
(o.maxLine = null),
(o.maxLineLength = 0),
(o.maxLineChanged = !1),
(o.wheelDX = o.wheelDY = o.wheelStartX = o.wheelStartY = null),
(o.shift = !1),
(o.selForContextMenu = null),
(o.activeTouch = null),
r.init(o)
}
function getLine(e, t) {
if ((t -= e.first) < 0 || t >= e.size)
throw new Error(
"There is no line " + (t + e.first) + " in the document."
)
for (var n = e; !n.lines; )
for (var r = 0; ; ++r) {
var o = n.children[r],
i = o.chunkSize()
if (t < i) {
n = o
break
}
t -= i
}
return n.lines[t]
}
function getBetween(e, t, n) {
var r = [],
o = t.line
return (
e.iter(t.line, n.line + 1, function(e) {
var i = e.text
o == n.line && (i = i.slice(0, n.ch)),
o == t.line && (i = i.slice(t.ch)),
r.push(i),
++o
}),
r
)
}
function getLines(e, t, n) {
var r = []
return (
e.iter(t, n, function(e) {
r.push(e.text)
}),
r
)
}
function updateLineHeight(e, t) {
var n = t - e.height
if (n) for (var r = e; r; r = r.parent) r.height += n
}
function lineNo(e) {
if (null == e.parent) return null
for (
var t = e.parent, n = indexOf(t.lines, e), r = t.parent;
r;
t = r, r = r.parent
)
for (var o = 0; r.children[o] != t; ++o)
n += r.children[o].chunkSize()
return n + t.first
}
function lineAtHeight(e, t) {
var n = e.first
e: do {
for (var r = 0; r < e.children.length; ++r) {
var o = e.children[r],
i = o.height
if (t < i) {
e = o
continue e
}
;(t -= i), (n += o.chunkSize())
}
return n
} while (!e.lines)
for (var a = 0; a < e.lines.length; ++a) {
var s = e.lines[a].height
if (t < s) break
t -= s
}
return n + a
}
function isLine(e, t) {
return t >= e.first && t < e.first + e.size
}
function lineNumberFor(e, t) {
return String(e.lineNumberFormatter(t + e.firstLineNumber))
}
function Pos(e, t, n) {
if ((void 0 === n && (n = null), !(this instanceof Pos)))
return new Pos(e, t, n)
;(this.line = e), (this.ch = t), (this.sticky = n)
}
function cmp(e, t) {
return e.line - t.line || e.ch - t.ch
}
function equalCursorPos(e, t) {
return e.sticky == t.sticky && 0 == cmp(e, t)
}
function copyPos(e) {
return Pos(e.line, e.ch)
}
function maxPos(e, t) {
return cmp(e, t) < 0 ? t : e
}
function minPos(e, t) {
return cmp(e, t) < 0 ? e : t
}
function clipLine(e, t) {
return Math.max(e.first, Math.min(t, e.first + e.size - 1))
}
function clipPos(e, t) {
if (t.line < e.first) return Pos(e.first, 0)
var n = e.first + e.size - 1
return t.line > n
? Pos(n, getLine(e, n).text.length)
: clipToLen(t, getLine(e, t.line).text.length)
}
function clipToLen(e, t) {
var n = e.ch
return null == n || n > t ? Pos(e.line, t) : n < 0 ? Pos(e.line, 0) : e
}
function clipPosArray(e, t) {
for (var n = [], r = 0; r < t.length; r++) n[r] = clipPos(e, t[r])
return n
}
function seeReadOnlySpans() {
B = !0
}
function seeCollapsedSpans() {
z = !0
}
function MarkedSpan(e, t, n) {
;(this.marker = e), (this.from = t), (this.to = n)
}
function getMarkedSpanFor(e, t) {
if (e)
for (var n = 0; n < e.length; ++n) {
var r = e[n]
if (r.marker == t) return r
}
}
function removeMarkedSpan(e, t) {
for (var n, r = 0; r < e.length; ++r)
e[r] != t && (n || (n = [])).push(e[r])
return n
}
function addMarkedSpan(e, t) {
;(e.markedSpans = e.markedSpans ? e.markedSpans.concat([t]) : [t]),
t.marker.attachLine(e)
}
function markedSpansBefore(e, t, n) {
var r
if (e)
for (var o = 0; o < e.length; ++o) {
var i = e[o],
a = i.marker
if (
null == i.from ||
(a.inclusiveLeft ? i.from <= t : i.from < t) ||
(i.from == t &&
"bookmark" == a.type &&
(!n || !i.marker.insertLeft))
) {
var s = null == i.to || (a.inclusiveRight ? i.to >= t : i.to > t)
;(r || (r = [])).push(new MarkedSpan(a, i.from, s ? null : i.to))
}
}
return r
}
function markedSpansAfter(e, t, n) {
var r
if (e)
for (var o = 0; o < e.length; ++o) {
var i = e[o],
a = i.marker
if (
null == i.to ||
(a.inclusiveRight ? i.to >= t : i.to > t) ||
(i.from == t &&
"bookmark" == a.type &&
(!n || i.marker.insertLeft))
) {
var s =
null == i.from || (a.inclusiveLeft ? i.from <= t : i.from < t)
;(r || (r = [])).push(
new MarkedSpan(
a,
s ? null : i.from - t,
null == i.to ? null : i.to - t
)
)
}
}
return r
}
function stretchSpansOverChange(e, t) {
if (t.full) return null
var n = isLine(e, t.from.line) && getLine(e, t.from.line).markedSpans,
r = isLine(e, t.to.line) && getLine(e, t.to.line).markedSpans
if (!n && !r) return null
var o = t.from.ch,
i = t.to.ch,
a = 0 == cmp(t.from, t.to),
s = markedSpansBefore(n, o, a),
l = markedSpansAfter(r, i, a),
c = 1 == t.text.length,
u = lst(t.text).length + (c ? o : 0)
if (s)
for (var d = 0; d < s.length; ++d) {
var p = s[d]
if (null == p.to) {
var h = getMarkedSpanFor(l, p.marker)
h ? c && (p.to = null == h.to ? null : h.to + u) : (p.to = o)
}
}
if (l)
for (var f = 0; f < l.length; ++f) {
var g = l[f]
null != g.to && (g.to += u),
null == g.from
? getMarkedSpanFor(s, g.marker) ||
((g.from = u), c && (s || (s = [])).push(g))
: ((g.from += u), c && (s || (s = [])).push(g))
}
s && (s = clearEmptySpans(s)), l && l != s && (l = clearEmptySpans(l))
var m = [s]
if (!c) {
var v,
y = t.text.length - 2
if (y > 0 && s)
for (var b = 0; b < s.length; ++b)
null == s[b].to &&
(v || (v = [])).push(new MarkedSpan(s[b].marker, null, null))
for (var x = 0; x < y; ++x) m.push(v)
m.push(l)
}
return m
}
function clearEmptySpans(e) {
for (var t = 0; t < e.length; ++t) {
var n = e[t]
null != n.from &&
n.from == n.to &&
!1 !== n.marker.clearWhenEmpty &&
e.splice(t--, 1)
}
return e.length ? e : null
}
function removeReadOnlyRanges(e, t, n) {
var r = null
if (
(e.iter(t.line, n.line + 1, function(e) {
if (e.markedSpans)
for (var t = 0; t < e.markedSpans.length; ++t) {
var n = e.markedSpans[t].marker
!n.readOnly ||
(r && -1 != indexOf(r, n)) ||
(r || (r = [])).push(n)
}
}),
!r)
)
return null
for (var o = [{ from: t, to: n }], i = 0; i < r.length; ++i)
for (var a = r[i], s = a.find(0), l = 0; l < o.length; ++l) {
var c = o[l]
if (!(cmp(c.to, s.from) < 0 || cmp(c.from, s.to) > 0)) {
var u = [l, 1],
d = cmp(c.from, s.from),
p = cmp(c.to, s.to)
;(d < 0 || (!a.inclusiveLeft && !d)) &&
u.push({ from: c.from, to: s.from }),
(p > 0 || (!a.inclusiveRight && !p)) &&
u.push({ from: s.to, to: c.to }),
o.splice.apply(o, u),
(l += u.length - 3)
}
}
return o
}
function detachMarkedSpans(e) {
var t = e.markedSpans
if (t) {
for (var n = 0; n < t.length; ++n) t[n].marker.detachLine(e)
e.markedSpans = null
}
}
function attachMarkedSpans(e, t) {
if (t) {
for (var n = 0; n < t.length; ++n) t[n].marker.attachLine(e)
e.markedSpans = t
}
}
function extraLeft(e) {
return e.inclusiveLeft ? -1 : 0
}
function extraRight(e) {
return e.inclusiveRight ? 1 : 0
}
function compareCollapsedMarkers(e, t) {
var n = e.lines.length - t.lines.length
if (0 != n) return n
var r = e.find(),
o = t.find(),
i = cmp(r.from, o.from) || extraLeft(e) - extraLeft(t)
if (i) return -i
var a = cmp(r.to, o.to) || extraRight(e) - extraRight(t)
return a || t.id - e.id
}
function collapsedSpanAtSide(e, t) {
var n,
r = z && e.markedSpans
if (r)
for (var o = void 0, i = 0; i < r.length; ++i)
(o = r[i]).marker.collapsed &&
null == (t ? o.from : o.to) &&
(!n || compareCollapsedMarkers(n, o.marker) < 0) &&
(n = o.marker)
return n
}
function collapsedSpanAtStart(e) {
return collapsedSpanAtSide(e, !0)
}
function collapsedSpanAtEnd(e) {
return collapsedSpanAtSide(e, !1)
}
function conflictingCollapsedRange(e, t, n, r, o) {
var i = getLine(e, t),
a = z && i.markedSpans
if (a)
for (var s = 0; s < a.length; ++s) {
var l = a[s]
if (l.marker.collapsed) {
var c = l.marker.find(0),
u = cmp(c.from, n) || extraLeft(l.marker) - extraLeft(o),
d = cmp(c.to, r) || extraRight(l.marker) - extraRight(o)
if (
!((u >= 0 && d <= 0) || (u <= 0 && d >= 0)) &&
((u <= 0 &&
(l.marker.inclusiveRight && o.inclusiveLeft
? cmp(c.to, n) >= 0
: cmp(c.to, n) > 0)) ||
(u >= 0 &&
(l.marker.inclusiveRight && o.inclusiveLeft
? cmp(c.from, r) <= 0
: cmp(c.from, r) < 0)))
)
return !0
}
}
}
function visualLine(e) {
for (var t; (t = collapsedSpanAtStart(e)); ) e = t.find(-1, !0).line
return e
}
function visualLineEnd(e) {
for (var t; (t = collapsedSpanAtEnd(e)); ) e = t.find(1, !0).line
return e
}
function visualLineContinued(e) {
for (var t, n; (t = collapsedSpanAtEnd(e)); )
(e = t.find(1, !0).line), (n || (n = [])).push(e)
return n
}
function visualLineNo(e, t) {
var n = getLine(e, t),
r = visualLine(n)
return n == r ? t : lineNo(r)
}
function visualLineEndNo(e, t) {
if (t > e.lastLine()) return t
var n,
r = getLine(e, t)
if (!lineIsHidden(e, r)) return t
for (; (n = collapsedSpanAtEnd(r)); ) r = n.find(1, !0).line
return lineNo(r) + 1
}
function lineIsHidden(e, t) {
var n = z && t.markedSpans
if (n)
for (var r = void 0, o = 0; o < n.length; ++o)
if ((r = n[o]).marker.collapsed) {
if (null == r.from) return !0
if (
!r.marker.widgetNode &&
0 == r.from &&
r.marker.inclusiveLeft &&
lineIsHiddenInner(e, t, r)
)
return !0
}
}
function lineIsHiddenInner(e, t, n) {
if (null == n.to) {
var r = n.marker.find(1, !0)
return lineIsHiddenInner(
e,
r.line,
getMarkedSpanFor(r.line.markedSpans, n.marker)
)
}
if (n.marker.inclusiveRight && n.to == t.text.length) return !0
for (var o = void 0, i = 0; i < t.markedSpans.length; ++i)
if (
(o = t.markedSpans[i]).marker.collapsed &&
!o.marker.widgetNode &&
o.from == n.to &&
(null == o.to || o.to != n.from) &&
(o.marker.inclusiveLeft || n.marker.inclusiveRight) &&
lineIsHiddenInner(e, t, o)
)
return !0
}
function heightAtLine(e) {
for (
var t = 0, n = (e = visualLine(e)).parent, r = 0;
r < n.lines.length;
++r
) {
var o = n.lines[r]
if (o == e) break
t += o.height
}
for (var i = n.parent; i; n = i, i = n.parent)
for (var a = 0; a < i.children.length; ++a) {
var s = i.children[a]
if (s == n) break
t += s.height
}
return t
}
function lineLength(e) {
if (0 == e.height) return 0
for (var t, n = e.text.length, r = e; (t = collapsedSpanAtStart(r)); ) {
var o = t.find(0, !0)
;(r = o.from.line), (n += o.from.ch - o.to.ch)
}
for (r = e; (t = collapsedSpanAtEnd(r)); ) {
var i = t.find(0, !0)
;(n -= r.text.length - i.from.ch),
(n += (r = i.to.line).text.length - i.to.ch)
}
return n
}
function findMaxLine(e) {
var t = e.display,
n = e.doc
;(t.maxLine = getLine(n, n.first)),
(t.maxLineLength = lineLength(t.maxLine)),
(t.maxLineChanged = !0),
n.iter(function(e) {
var n = lineLength(e)
n > t.maxLineLength && ((t.maxLineLength = n), (t.maxLine = e))
})
}
function iterateBidiSections(e, t, n, r) {
if (!e) return r(t, n, "ltr", 0)
for (var o = !1, i = 0; i < e.length; ++i) {
var a = e[i]
;((a.from < n && a.to > t) || (t == n && a.to == t)) &&
(r(
Math.max(a.from, t),
Math.min(a.to, n),
1 == a.level ? "rtl" : "ltr",
i
),
(o = !0))
}
o || r(t, n, "ltr")
}
function getBidiPartAt(e, t, n) {
var r
R = null
for (var o = 0; o < e.length; ++o) {
var i = e[o]
if (i.from < t && i.to > t) return o
i.to == t && (i.from != i.to && "before" == n ? (r = o) : (R = o)),
i.from == t && (i.from != i.to && "before" != n ? (r = o) : (R = o))
}
return null != r ? r : R
}
function getOrder(e, t) {
var n = e.order
return null == n && (n = e.order = j(e.text, t)), n
}
function getHandlers(e, t) {
return (e._handlers && e._handlers[t]) || _
}
function off(e, t, n) {
if (e.removeEventListener) e.removeEventListener(t, n, !1)
else if (e.detachEvent) e.detachEvent("on" + t, n)
else {
var r = e._handlers,
o = r && r[t]
if (o) {
var i = indexOf(o, n)
i > -1 && (r[t] = o.slice(0, i).concat(o.slice(i + 1)))
}
}
}
function signal(e, t) {
var n = getHandlers(e, t)
if (n.length)
for (
var r = Array.prototype.slice.call(arguments, 2), o = 0;
o < n.length;
++o
)
n[o].apply(null, r)
}
function signalDOMEvent(e, t, n) {
return (
"string" == typeof t &&
(t = {
type: t,
preventDefault: function() {
this.defaultPrevented = !0
},
}),
signal(e, n || t.type, e, t),
e_defaultPrevented(t) || t.codemirrorIgnore
)
}
function signalCursorActivity(e) {
var t = e._handlers && e._handlers.cursorActivity
if (t)
for (
var n =
e.curOp.cursorActivityHandlers ||
(e.curOp.cursorActivityHandlers = []),
r = 0;
r < t.length;
++r
)
-1 == indexOf(n, t[r]) && n.push(t[r])
}
function hasHandler(e, t) {
return getHandlers(e, t).length > 0
}
function eventMixin(e) {
;(e.prototype.on = function(e, t) {
V(this, e, t)
}),
(e.prototype.off = function(e, t) {
off(this, e, t)
})
}
function e_preventDefault(e) {
e.preventDefault ? e.preventDefault() : (e.returnValue = !1)
}
function e_stopPropagation(e) {
e.stopPropagation ? e.stopPropagation() : (e.cancelBubble = !0)
}
function e_defaultPrevented(e) {
return null != e.defaultPrevented
? e.defaultPrevented
: 0 == e.returnValue
}
function e_stop(e) {
e_preventDefault(e), e_stopPropagation(e)
}
function e_target(e) {
return e.target || e.srcElement
}
function e_button(e) {
var t = e.which
return (
null == t &&
(1 & e.button
? (t = 1)
: 2 & e.button ? (t = 3) : 4 & e.button && (t = 2)),
y && e.ctrlKey && 1 == t && (t = 3),
t
)
}
function zeroWidthElement(e) {
if (null == O) {
var t = elt("span", "")
removeChildrenAndAdd(
e,
elt("span", [t, document.createTextNode("x")])
),
0 != e.firstChild.offsetHeight &&
(O = t.offsetWidth <= 1 && t.offsetHeight > 2 && !(a && s < 8))
}
var n = O
? elt("span", "")
: elt(
"span",
" ",
null,
"display: inline-block; width: 1px; margin-right: -1px"
)
return n.setAttribute("cm-text", ""), n
}
function hasBadBidiRects(e) {
if (null != P) return P
var t = removeChildrenAndAdd(e, document.createTextNode("AخA")),
n = w(t, 0, 1).getBoundingClientRect(),
r = w(t, 1, 2).getBoundingClientRect()
return (
removeChildren(e),
!(!n || n.left == n.right) && (P = r.right - n.right < 3)
)
}
function hasBadZoomedRects(e) {
if (null != q) return q
var t = removeChildrenAndAdd(e, elt("span", "x")),
n = t.getBoundingClientRect(),
r = w(t, 0, 1).getBoundingClientRect()
return (q = Math.abs(n.left - r.left) > 1)
}
function defineMode(e, t) {
arguments.length > 2 &&
(t.dependencies = Array.prototype.slice.call(arguments, 2)),
(X[e] = t)
}
function resolveMode(e) {
if ("string" == typeof e && Y.hasOwnProperty(e)) e = Y[e]
else if (e && "string" == typeof e.name && Y.hasOwnProperty(e.name)) {
var t = Y[e.name]
"string" == typeof t && (t = { name: t }),
((e = createObj(t, e)).name = t.name)
} else {
if ("string" == typeof e && /^[\w\-]+\/[\w\-]+\+xml$/.test(e))
return resolveMode("application/xml")
if ("string" == typeof e && /^[\w\-]+\/[\w\-]+\+json$/.test(e))
return resolveMode("application/json")
}
return "string" == typeof e ? { name: e } : e || { name: "null" }
}
function getMode(e, t) {
t = resolveMode(t)
var n = X[t.name]
if (!n) return getMode(e, "text/plain")
var r = n(e, t)
if (Z.hasOwnProperty(t.name)) {
var o = Z[t.name]
for (var i in o)
o.hasOwnProperty(i) &&
(r.hasOwnProperty(i) && (r["_" + i] = r[i]), (r[i] = o[i]))
}
if (
((r.name = t.name),
t.helperType && (r.helperType = t.helperType),
t.modeProps)
)
for (var a in t.modeProps) r[a] = t.modeProps[a]
return r
}
function extendMode(e, t) {
copyObj(t, Z.hasOwnProperty(e) ? Z[e] : (Z[e] = {}))
}
function copyState(e, t) {
if (!0 === t) return t
if (e.copyState) return e.copyState(t)
var n = {}
for (var r in t) {
var o = t[r]
o instanceof Array && (o = o.concat([])), (n[r] = o)
}
return n
}
function innerMode(e, t) {
for (var n; e.innerMode && (n = e.innerMode(t)) && n.mode != e; )
(t = n.state), (e = n.mode)
return n || { mode: e, state: t }
}
function startState(e, t, n) {
return !e.startState || e.startState(t, n)
}
function highlightLine(e, t, n, r) {
var o = [e.state.modeGen],
i = {}
runMode(
e,
t.text,
e.doc.mode,
n,
function(e, t) {
return o.push(e, t)
},
i,
r
)
for (var a = n.state, s = 0; s < e.state.overlays.length; ++s)
!(function(r) {
n.baseTokens = o
var s = e.state.overlays[r],
l = 1,
c = 0
;(n.state = !0),
runMode(
e,
t.text,
s.mode,
n,
function(e, t) {
for (var n = l; c < e; ) {
var r = o[l]
r > e && o.splice(l, 1, e, o[l + 1], r),
(l += 2),
(c = Math.min(e, r))
}
if (t)
if (s.opaque)
o.splice(n, l - n, e, "overlay " + t), (l = n + 2)
else
for (; n < l; n += 2) {
var i = o[n + 1]
o[n + 1] = (i ? i + " " : "") + "overlay " + t
}
},
i
),
(n.state = a),
(n.baseTokens = null),
(n.baseTokenPos = 1)
})(s)
return { styles: o, classes: i.bgClass || i.textClass ? i : null }
}
function getLineStyles(e, t, n) {
if (!t.styles || t.styles[0] != e.state.modeGen) {
var r = getContextBefore(e, lineNo(t)),
o =
t.text.length > e.options.maxHighlightLength &&
copyState(e.doc.mode, r.state),
i = highlightLine(e, t, r)
o && (r.state = o),
(t.stateAfter = r.save(!o)),
(t.styles = i.styles),
i.classes
? (t.styleClasses = i.classes)
: t.styleClasses && (t.styleClasses = null),
n === e.doc.highlightFrontier &&
(e.doc.modeFrontier = Math.max(
e.doc.modeFrontier,
++e.doc.highlightFrontier
))
}
return t.styles
}
function getContextBefore(e, t, n) {
var r = e.doc,
o = e.display
if (!r.mode.startState) return new ee(r, !0, t)
var i = findStartLine(e, t, n),
a = i > r.first && getLine(r, i - 1).stateAfter,
s = a ? ee.fromSaved(r, a, i) : new ee(r, startState(r.mode), i)
return (
r.iter(i, t, function(n) {
processLine(e, n.text, s)
var r = s.line
;(n.stateAfter =
r == t - 1 || r % 5 == 0 || (r >= o.viewFrom && r < o.viewTo)
? s.save()
: null),
s.nextLine()
}),
n && (r.modeFrontier = s.line),
s
)
}
function processLine(e, t, n, r) {
var o = e.doc.mode,
i = new J(t, e.options.tabSize, n)
for (
i.start = i.pos = r || 0, "" == t && callBlankLine(o, n.state);
!i.eol();
)
readToken(o, i, n.state), (i.start = i.pos)
}
function callBlankLine(e, t) {
if (e.blankLine) return e.blankLine(t)
if (e.innerMode) {
var n = innerMode(e, t)
return n.mode.blankLine ? n.mode.blankLine(n.state) : void 0
}
}
function readToken(e, t, n, r) {
for (var o = 0; o < 10; o++) {
r && (r[0] = innerMode(e, n).mode)
var i = e.token(t, n)
if (t.pos > t.start) return i
}
throw new Error("Mode " + e.name + " failed to advance stream.")
}
function takeToken(e, t, n, r) {
var o,
i,
a = e.doc,
s = a.mode,
l = getLine(a, (t = clipPos(a, t)).line),
c = getContextBefore(e, t.line, n),
u = new J(l.text, e.options.tabSize, c)
for (r && (i = []); (r || u.pos < t.ch) && !u.eol(); )
(u.start = u.pos),
(o = readToken(s, u, c.state)),
r && i.push(new te(u, o, copyState(a.mode, c.state)))
return r ? i : new te(u, o, c.state)
}
function extractLineClasses(e, t) {
if (e)
for (;;) {
var n = e.match(/(?:^|\s+)line-(background-)?(\S+)/)
if (!n) break
e = e.slice(0, n.index) + e.slice(n.index + n[0].length)
var r = n[1] ? "bgClass" : "textClass"
null == t[r]
? (t[r] = n[2])
: new RegExp("(?:^|s)" + n[2] + "(?:$|s)").test(t[r]) ||
(t[r] += " " + n[2])
}
return e
}
function runMode(e, t, n, r, o, i, a) {
var s = n.flattenSpans
null == s && (s = e.options.flattenSpans)
var l,
c = 0,
u = null,
d = new J(t, e.options.tabSize, r),
p = e.options.addModeClass && [null]
for (
"" == t && extractLineClasses(callBlankLine(n, r.state), i);
!d.eol();
) {
if (
(d.pos > e.options.maxHighlightLength
? ((s = !1),
a && processLine(e, t, r, d.pos),
(d.pos = t.length),
(l = null))
: (l = extractLineClasses(readToken(n, d, r.state, p), i)),
p)
) {
var h = p[0].name
h && (l = "m-" + (l ? h + " " + l : h))
}
if (!s || u != l) {
for (; c < d.start; ) o((c = Math.min(d.start, c + 5e3)), u)
u = l
}
d.start = d.pos
}
for (; c < d.pos; ) {
var f = Math.min(d.pos, c + 5e3)
o(f, u), (c = f)
}
}
function findStartLine(e, t, n) {
for (
var r,
o,
i = e.doc,
a = n ? -1 : t - (e.doc.mode.innerMode ? 1e3 : 100),
s = t;
s > a;
--s
) {
if (s <= i.first) return i.first
var l = getLine(i, s - 1),
c = l.stateAfter
if (
c &&
(!n || s + (c instanceof Q ? c.lookAhead : 0) <= i.modeFrontier)
)
return s
var u = countColumn(l.text, null, e.options.tabSize)
;(null == o || r > u) && ((o = s - 1), (r = u))
}
return o
}
function retreatFrontier(e, t) {
if (
((e.modeFrontier = Math.min(e.modeFrontier, t)),
!(e.highlightFrontier < t - 10))
) {
for (var n = e.first, r = t - 1; r > n; r--) {
var o = getLine(e, r).stateAfter
if (o && (!(o instanceof Q) || r + o.lookAhead < t)) {
n = r + 1
break
}
}
e.highlightFrontier = Math.min(e.highlightFrontier, n)
}
}
function updateLine(e, t, n, r) {
;(e.text = t),
e.stateAfter && (e.stateAfter = null),
e.styles && (e.styles = null),
null != e.order && (e.order = null),
detachMarkedSpans(e),
attachMarkedSpans(e, n)
var o = r ? r(e) : 1
o != e.height && updateLineHeight(e, o)
}
function cleanUpLine(e) {
;(e.parent = null), detachMarkedSpans(e)
}
function interpretTokenStyle(e, t) {
if (!e || /^\s*$/.test(e)) return null
var n = t.addModeClass ? ie : oe
return n[e] || (n[e] = e.replace(/\S+/g, "cm-$&"))
}
function buildLineContent(e, t) {
var n = eltP("span", null, null, l ? "padding-right: .1px" : null),
r = {
pre: eltP("pre", [n], "CodeMirror-line"),
content: n,
col: 0,
pos: 0,
cm: e,
trailingSpace: !1,
splitSpaces: (a || l) && e.getOption("lineWrapping"),
}
t.measure = {}
for (var o = 0; o <= (t.rest ? t.rest.length : 0); o++) {
var i = o ? t.rest[o - 1] : t.line,
s = void 0
;(r.pos = 0),
(r.addToken = buildToken),
hasBadBidiRects(e.display.measure) &&
(s = getOrder(i, e.doc.direction)) &&
(r.addToken = buildTokenBadBidi(r.addToken, s)),
(r.map = []),
insertLineContent(
i,
r,
getLineStyles(e, i, t != e.display.externalMeasured && lineNo(i))
),
i.styleClasses &&
(i.styleClasses.bgClass &&
(r.bgClass = joinClasses(
i.styleClasses.bgClass,
r.bgClass || ""
)),
i.styleClasses.textClass &&
(r.textClass = joinClasses(
i.styleClasses.textClass,
r.textClass || ""
))),
0 == r.map.length &&
r.map.push(
0,
0,
r.content.appendChild(zeroWidthElement(e.display.measure))
),
0 == o
? ((t.measure.map = r.map), (t.measure.cache = {}))
: ((t.measure.maps || (t.measure.maps = [])).push(r.map),
(t.measure.caches || (t.measure.caches = [])).push({}))
}
if (l) {
var c = r.content.lastChild
;(/\bcm-tab\b/.test(c.className) ||
(c.querySelector && c.querySelector(".cm-tab"))) &&
(r.content.className = "cm-tab-wrap-hack")
}
return (
signal(e, "renderLine", e, t.line, r.pre),
r.pre.className &&
(r.textClass = joinClasses(r.pre.className, r.textClass || "")),
r
)
}
function defaultSpecialCharPlaceholder(e) {
var t = elt("span", "•", "cm-invalidchar")
return (
(t.title = "\\u" + e.charCodeAt(0).toString(16)),
t.setAttribute("aria-label", t.title),
t
)
}
function buildToken(e, t, n, r, o, i, l) {
if (t) {
var c,
u = e.splitSpaces ? splitSpaces(t, e.trailingSpace) : t,
d = e.cm.state.specialChars,
p = !1
if (d.test(t)) {
c = document.createDocumentFragment()
for (var h = 0; ; ) {
d.lastIndex = h
var f = d.exec(t),
g = f ? f.index - h : t.length - h
if (g) {
var m = document.createTextNode(u.slice(h, h + g))
a && s < 9 ? c.appendChild(elt("span", [m])) : c.appendChild(m),
e.map.push(e.pos, e.pos + g, m),
(e.col += g),
(e.pos += g)
}
if (!f) break
h += g + 1
var v = void 0
if ("\t" == f[0]) {
var y = e.cm.options.tabSize,
b = y - e.col % y
;(v = c.appendChild(
elt("span", spaceStr(b), "cm-tab")
)).setAttribute("role", "presentation"),
v.setAttribute("cm-text", "\t"),
(e.col += b)
} else
"\r" == f[0] || "\n" == f[0]
? ((v = c.appendChild(
elt("span", "\r" == f[0] ? "␍" : "", "cm-invalidchar")
)).setAttribute("cm-text", f[0]),
(e.col += 1))
: ((v = e.cm.options.specialCharPlaceholder(
f[0]
)).setAttribute("cm-text", f[0]),
a && s < 9
? c.appendChild(elt("span", [v]))
: c.appendChild(v),
(e.col += 1))
e.map.push(e.pos, e.pos + 1, v), e.pos++
}
} else
(e.col += t.length),
(c = document.createTextNode(u)),
e.map.push(e.pos, e.pos + t.length, c),
a && s < 9 && (p = !0),
(e.pos += t.length)
if (
((e.trailingSpace = 32 == u.charCodeAt(t.length - 1)),
n || r || o || p || l)
) {
var x = n || ""
r && (x += r), o && (x += o)
var C = elt("span", [c], x, l)
return i && (C.title = i), e.content.appendChild(C)
}
e.content.appendChild(c)
}
}
function splitSpaces(e, t) {
if (e.length > 1 && !/ /.test(e)) return e
for (var n = t, r = "", o = 0; o < e.length; o++) {
var i = e.charAt(o)
" " != i ||
!n ||
(o != e.length - 1 && 32 != e.charCodeAt(o + 1)) ||
(i = " "),
(r += i),
(n = " " == i)
}
return r
}
function buildTokenBadBidi(e, t) {
return function(n, r, o, i, a, s, l) {
o = o ? o + " cm-force-border" : "cm-force-border"
for (var c = n.pos, u = c + r.length; ; ) {
for (
var d = void 0, p = 0;
p < t.length && !((d = t[p]).to > c && d.from <= c);
p++
);
if (d.to >= u) return e(n, r, o, i, a, s, l)
e(n, r.slice(0, d.to - c), o, i, null, s, l),
(i = null),
(r = r.slice(d.to - c)),
(c = d.to)
}
}
}
function buildCollapsedSpan(e, t, n, r) {
var o = !r && n.widgetNode
o && e.map.push(e.pos, e.pos + t, o),
!r &&
e.cm.display.input.needsContentAttribute &&
(o || (o = e.content.appendChild(document.createElement("span"))),
o.setAttribute("cm-marker", n.id)),
o && (e.cm.display.input.setUneditable(o), e.content.appendChild(o)),
(e.pos += t),
(e.trailingSpace = !1)
}
function insertLineContent(e, t, n) {
var r = e.markedSpans,
o = e.text,
i = 0
if (r)
for (
var a, s, l, c, u, d, p, h = o.length, f = 0, g = 1, m = "", v = 0;
;
) {
if (v == f) {
;(l = c = u = d = s = ""), (p = null), (v = 1 / 0)
for (var y = [], b = void 0, x = 0; x < r.length; ++x) {
var C = r[x],
w = C.marker
"bookmark" == w.type && C.from == f && w.widgetNode
? y.push(w)
: C.from <= f &&
(null == C.to ||
C.to > f ||
(w.collapsed && C.to == f && C.from == f))
? (null != C.to &&
C.to != f &&
v > C.to &&
((v = C.to), (c = "")),
w.className && (l += " " + w.className),
w.css && (s = (s ? s + ";" : "") + w.css),
w.startStyle && C.from == f && (u += " " + w.startStyle),
w.endStyle &&
C.to == v &&
(b || (b = [])).push(w.endStyle, C.to),
w.title && !d && (d = w.title),
w.collapsed &&
(!p || compareCollapsedMarkers(p.marker, w) < 0) &&
(p = C))
: C.from > f && v > C.from && (v = C.from)
}
if (b)
for (var S = 0; S < b.length; S += 2)
b[S + 1] == v && (c += " " + b[S])
if (!p || p.from == f)
for (var k = 0; k < y.length; ++k)
buildCollapsedSpan(t, 0, y[k])
if (p && (p.from || 0) == f) {
if (
(buildCollapsedSpan(
t,
(null == p.to ? h + 1 : p.to) - f,
p.marker,
null == p.from
),
null == p.to)
)
return
p.to == f && (p = !1)
}
}
if (f >= h) break
for (var L = Math.min(h, v); ; ) {
if (m) {
var M = f + m.length
if (!p) {
var T = M > L ? m.slice(0, L - f) : m
t.addToken(
t,
T,
a ? a + l : l,
u,
f + T.length == v ? c : "",
d,
s
)
}
if (M >= L) {
;(m = m.slice(L - f)), (f = L)
break
}
;(f = M), (u = "")
}
;(m = o.slice(i, (i = n[g++]))),
(a = interpretTokenStyle(n[g++], t.cm.options))
}
}
else
for (var O = 1; O < n.length; O += 2)
t.addToken(
t,
o.slice(i, (i = n[O])),
interpretTokenStyle(n[O + 1], t.cm.options)
)
}
function LineView(e, t, n) {
;(this.line = t),
(this.rest = visualLineContinued(t)),
(this.size = this.rest ? lineNo(lst(this.rest)) - n + 1 : 1),
(this.node = this.text = null),
(this.hidden = lineIsHidden(e, t))
}
function buildViewArray(e, t, n) {
for (var r, o = [], i = t; i < n; i = r) {
var a = new LineView(e.doc, getLine(e.doc, i), i)
;(r = i + a.size), o.push(a)
}
return o
}
function pushOperation(e) {
ae
? ae.ops.push(e)
: (e.ownsGroup = ae = { ops: [e], delayedCallbacks: [] })
}
function fireCallbacksForOps(e) {
var t = e.delayedCallbacks,
n = 0
do {
for (; n < t.length; n++) t[n].call(null)
for (var r = 0; r < e.ops.length; r++) {
var o = e.ops[r]
if (o.cursorActivityHandlers)
for (; o.cursorActivityCalled < o.cursorActivityHandlers.length; )
o.cursorActivityHandlers[o.cursorActivityCalled++].call(
null,
o.cm
)
}
} while (n < t.length)
}
function finishOperation(e, t) {
var n = e.ownsGroup
if (n)
try {
fireCallbacksForOps(n)
} finally {
;(ae = null), t(n)
}
}
function signalLater(e, t) {
var n = getHandlers(e, t)
if (n.length) {
var r,
o = Array.prototype.slice.call(arguments, 2)
ae
? (r = ae.delayedCallbacks)
: se ? (r = se) : ((r = se = []), setTimeout(fireOrphanDelayed, 0))
for (var i = 0; i < n.length; ++i)
!(function(e) {
r.push(function() {
return n[e].apply(null, o)
})
})(i)
}
}
function fireOrphanDelayed() {
var e = se
se = null
for (var t = 0; t < e.length; ++t) e[t]()
}
function updateLineForChanges(e, t, n, r) {
for (var o = 0; o < t.changes.length; o++) {
var i = t.changes[o]
"text" == i
? updateLineText(e, t)
: "gutter" == i
? updateLineGutter(e, t, n, r)
: "class" == i
? updateLineClasses(e, t)
: "widget" == i && updateLineWidgets(e, t, r)
}
t.changes = null
}
function ensureLineWrapped(e) {
return (
e.node == e.text &&
((e.node = elt("div", null, null, "position: relative")),
e.text.parentNode && e.text.parentNode.replaceChild(e.node, e.text),
e.node.appendChild(e.text),
a && s < 8 && (e.node.style.zIndex = 2)),
e.node
)
}
function updateLineBackground(e, t) {
var n = t.bgClass
? t.bgClass + " " + (t.line.bgClass || "")
: t.line.bgClass
if ((n && (n += " CodeMirror-linebackground"), t.background))
n
? (t.background.className = n)
: (t.background.parentNode.removeChild(t.background),
(t.background = null))
else if (n) {
var r = ensureLineWrapped(t)
;(t.background = r.insertBefore(elt("div", null, n), r.firstChild)),
e.display.input.setUneditable(t.background)
}
}
function getLineContent(e, t) {
var n = e.display.externalMeasured
return n && n.line == t.line
? ((e.display.externalMeasured = null),
(t.measure = n.measure),
n.built)
: buildLineContent(e, t)
}
function updateLineText(e, t) {
var n = t.text.className,
r = getLineContent(e, t)
t.text == t.node && (t.node = r.pre),
t.text.parentNode.replaceChild(r.pre, t.text),
(t.text = r.pre),
r.bgClass != t.bgClass || r.textClass != t.textClass
? ((t.bgClass = r.bgClass),
(t.textClass = r.textClass),
updateLineClasses(e, t))
: n && (t.text.className = n)
}
function updateLineClasses(e, t) {
updateLineBackground(e, t),
t.line.wrapClass
? (ensureLineWrapped(t).className = t.line.wrapClass)
: t.node != t.text && (t.node.className = "")
var n = t.textClass
? t.textClass + " " + (t.line.textClass || "")
: t.line.textClass
t.text.className = n || ""
}
function updateLineGutter(e, t, n, r) {
if (
(t.gutter && (t.node.removeChild(t.gutter), (t.gutter = null)),
t.gutterBackground &&
(t.node.removeChild(t.gutterBackground),
(t.gutterBackground = null)),
t.line.gutterClass)
) {
var o = ensureLineWrapped(t)
;(t.gutterBackground = elt(
"div",
null,
"CodeMirror-gutter-background " + t.line.gutterClass,
"left: " +
(e.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) +
"px; width: " +
r.gutterTotalWidth +
"px"
)),
e.display.input.setUneditable(t.gutterBackground),
o.insertBefore(t.gutterBackground, t.text)
}
var i = t.line.gutterMarkers
if (e.options.lineNumbers || i) {
var a = ensureLineWrapped(t),
s = (t.gutter = elt(
"div",
null,
"CodeMirror-gutter-wrapper",
"left: " +
(e.options.fixedGutter ? r.fixedPos : -r.gutterTotalWidth) +
"px"
))
if (
(e.display.input.setUneditable(s),
a.insertBefore(s, t.text),
t.line.gutterClass && (s.className += " " + t.line.gutterClass),
!e.options.lineNumbers ||
(i && i["CodeMirror-linenumbers"]) ||
(t.lineNumber = s.appendChild(
elt(
"div",
lineNumberFor(e.options, n),
"CodeMirror-linenumber CodeMirror-gutter-elt",
"left: " +
r.gutterLeft["CodeMirror-linenumbers"] +
"px; width: " +
e.display.lineNumInnerWidth +
"px"
)
)),
i)
)
for (var l = 0; l < e.options.gutters.length; ++l) {
var c = e.options.gutters[l],
u = i.hasOwnProperty(c) && i[c]
u &&
s.appendChild(
elt(
"div",
[u],
"CodeMirror-gutter-elt",
"left: " +
r.gutterLeft[c] +
"px; width: " +
r.gutterWidth[c] +
"px"
)
)
}
}
}
function updateLineWidgets(e, t, n) {
t.alignable && (t.alignable = null)
for (var r = t.node.firstChild, o = void 0; r; r = o)
(o = r.nextSibling),
"CodeMirror-linewidget" == r.className && t.node.removeChild(r)
insertLineWidgets(e, t, n)
}
function buildLineElement(e, t, n, r) {
var o = getLineContent(e, t)
return (
(t.text = t.node = o.pre),
o.bgClass && (t.bgClass = o.bgClass),
o.textClass && (t.textClass = o.textClass),
updateLineClasses(e, t),
updateLineGutter(e, t, n, r),
insertLineWidgets(e, t, r),
t.node
)
}
function insertLineWidgets(e, t, n) {
if ((insertLineWidgetsFor(e, t.line, t, n, !0), t.rest))
for (var r = 0; r < t.rest.length; r++)
insertLineWidgetsFor(e, t.rest[r], t, n, !1)
}
function insertLineWidgetsFor(e, t, n, r, o) {
if (t.widgets)
for (
var i = ensureLineWrapped(n), a = 0, s = t.widgets;
a < s.length;
++a
) {
var l = s[a],
c = elt("div", [l.node], "CodeMirror-linewidget")
l.handleMouseEvents || c.setAttribute("cm-ignore-events", "true"),
positionLineWidget(l, c, n, r),
e.display.input.setUneditable(c),
o && l.above
? i.insertBefore(c, n.gutter || n.text)
: i.appendChild(c),
signalLater(l, "redraw")
}
}
function positionLineWidget(e, t, n, r) {
if (e.noHScroll) {
;(n.alignable || (n.alignable = [])).push(t)
var o = r.wrapperWidth
;(t.style.left = r.fixedPos + "px"),
e.coverGutter ||
((o -= r.gutterTotalWidth),
(t.style.paddingLeft = r.gutterTotalWidth + "px")),
(t.style.width = o + "px")
}
e.coverGutter &&
((t.style.zIndex = 5),
(t.style.position = "relative"),
e.noHScroll || (t.style.marginLeft = -r.gutterTotalWidth + "px"))
}
function widgetHeight(e) {
if (null != e.height) return e.height
var t = e.doc.cm
if (!t) return 0
if (!contains(document.body, e.node)) {
var n = "position: relative;"
e.coverGutter &&
(n += "margin-left: -" + t.display.gutters.offsetWidth + "px;"),
e.noHScroll &&
(n += "width: " + t.display.wrapper.clientWidth + "px;"),
removeChildrenAndAdd(
t.display.measure,
elt("div", [e.node], null, n)
)
}
return (e.height = e.node.parentNode.offsetHeight)
}
function eventInWidget(e, t) {
for (var n = e_target(t); n != e.wrapper; n = n.parentNode)
if (
!n ||
(1 == n.nodeType && "true" == n.getAttribute("cm-ignore-events")) ||
(n.parentNode == e.sizer && n != e.mover)
)
return !0
}
function paddingTop(e) {
return e.lineSpace.offsetTop
}
function paddingVert(e) {
return e.mover.offsetHeight - e.lineSpace.offsetHeight
}
function paddingH(e) {
if (e.cachedPaddingH) return e.cachedPaddingH
var t = removeChildrenAndAdd(e.measure, elt("pre", "x")),
n = window.getComputedStyle
? window.getComputedStyle(t)
: t.currentStyle,
r = { left: parseInt(n.paddingLeft), right: parseInt(n.paddingRight) }
return isNaN(r.left) || isNaN(r.right) || (e.cachedPaddingH = r), r
}
function scrollGap(e) {
return A - e.display.nativeBarWidth
}
function displayWidth(e) {
return (
e.display.scroller.clientWidth - scrollGap(e) - e.display.barWidth
)
}
function displayHeight(e) {
return (
e.display.scroller.clientHeight - scrollGap(e) - e.display.barHeight
)
}
function ensureLineHeights(e, t, n) {
var r = e.options.lineWrapping,
o = r && displayWidth(e)
if (!t.measure.heights || (r && t.measure.width != o)) {
var i = (t.measure.heights = [])
if (r) {
t.measure.width = o
for (
var a = t.text.firstChild.getClientRects(), s = 0;
s < a.length - 1;
s++
) {
var l = a[s],
c = a[s + 1]
Math.abs(l.bottom - c.bottom) > 2 &&
i.push((l.bottom + c.top) / 2 - n.top)
}
}
i.push(n.bottom - n.top)
}
}
function mapFromLineView(e, t, n) {
if (e.line == t) return { map: e.measure.map, cache: e.measure.cache }
for (var r = 0; r < e.rest.length; r++)
if (e.rest[r] == t)
return { map: e.measure.maps[r], cache: e.measure.caches[r] }
for (var o = 0; o < e.rest.length; o++)
if (lineNo(e.rest[o]) > n)
return {
map: e.measure.maps[o],
cache: e.measure.caches[o],
before: !0,
}
}
function updateExternalMeasurement(e, t) {
var n = lineNo((t = visualLine(t))),
r = (e.display.externalMeasured = new LineView(e.doc, t, n))
r.lineN = n
var o = (r.built = buildLineContent(e, r))
return (
(r.text = o.pre),
removeChildrenAndAdd(e.display.lineMeasure, o.pre),
r
)
}
function measureChar(e, t, n, r) {
return measureCharPrepared(e, prepareMeasureForLine(e, t), n, r)
}
function findViewForLine(e, t) {
if (t >= e.display.viewFrom && t < e.display.viewTo)
return e.display.view[findViewIndex(e, t)]
var n = e.display.externalMeasured
return n && t >= n.lineN && t < n.lineN + n.size ? n : void 0
}
function prepareMeasureForLine(e, t) {
var n = lineNo(t),
r = findViewForLine(e, n)
r && !r.text
? (r = null)
: r &&
r.changes &&
(updateLineForChanges(e, r, n, getDimensions(e)),
(e.curOp.forceUpdate = !0)),
r || (r = updateExternalMeasurement(e, t))
var o = mapFromLineView(r, t, n)
return {
line: t,
view: r,
rect: null,
map: o.map,
cache: o.cache,
before: o.before,
hasHeights: !1,
}
}
function measureCharPrepared(e, t, n, r, o) {
t.before && (n = -1)
var i,
a = n + (r || "")
return (
t.cache.hasOwnProperty(a)
? (i = t.cache[a])
: (t.rect || (t.rect = t.view.text.getBoundingClientRect()),
t.hasHeights ||
(ensureLineHeights(e, t.view, t.rect), (t.hasHeights = !0)),
(i = measureCharInner(e, t, n, r)).bogus || (t.cache[a] = i)),
{
left: i.left,
right: i.right,
top: o ? i.rtop : i.top,
bottom: o ? i.rbottom : i.bottom,
}
)
}
function nodeAndOffsetInLineMap(e, t, n) {
for (var r, o, i, a, s, l, c = 0; c < e.length; c += 3)
if (
((s = e[c]),
(l = e[c + 1]),
t < s
? ((o = 0), (i = 1), (a = "left"))
: t < l
? (i = (o = t - s) + 1)
: (c == e.length - 3 || (t == l && e[c + 3] > t)) &&
((o = (i = l - s) - 1), t >= l && (a = "right")),
null != o)
) {
if (
((r = e[c + 2]),
s == l && n == (r.insertLeft ? "left" : "right") && (a = n),
"left" == n && 0 == o)
)
for (; c && e[c - 2] == e[c - 3] && e[c - 1].insertLeft; )
(r = e[2 + (c -= 3)]), (a = "left")
if ("right" == n && o == l - s)
for (
;
c < e.length - 3 &&
e[c + 3] == e[c + 4] &&
!e[c + 5].insertLeft;
)
(r = e[(c += 3) + 2]), (a = "right")
break
}
return {
node: r,
start: o,
end: i,
collapse: a,
coverStart: s,
coverEnd: l,
}
}
function getUsefulRect(e, t) {
var n = le
if ("left" == t)
for (var r = 0; r < e.length && (n = e[r]).left == n.right; r++);
else
for (var o = e.length - 1; o >= 0 && (n = e[o]).left == n.right; o--);
return n
}
function measureCharInner(e, t, n, r) {
var o,
i = nodeAndOffsetInLineMap(t.map, n, r),
l = i.node,
c = i.start,
u = i.end,
d = i.collapse
if (3 == l.nodeType) {
for (var p = 0; p < 4; p++) {
for (; c && isExtendingChar(t.line.text.charAt(i.coverStart + c)); )
--c
for (
;
i.coverStart + u < i.coverEnd &&
isExtendingChar(t.line.text.charAt(i.coverStart + u));
)
++u
if (
(o =
a && s < 9 && 0 == c && u == i.coverEnd - i.coverStart
? l.parentNode.getBoundingClientRect()
: getUsefulRect(w(l, c, u).getClientRects(), r)).left ||
o.right ||
0 == c
)
break
;(u = c), (c -= 1), (d = "right")
}
a && s < 11 && (o = maybeUpdateRectForZooming(e.display.measure, o))
} else {
c > 0 && (d = r = "right")
var h
o =
e.options.lineWrapping && (h = l.getClientRects()).length > 1
? h["right" == r ? h.length - 1 : 0]
: l.getBoundingClientRect()
}
if (a && s < 9 && !c && (!o || (!o.left && !o.right))) {
var f = l.parentNode.getClientRects()[0]
o = f
? {
left: f.left,
right: f.left + charWidth(e.display),
top: f.top,
bottom: f.bottom,
}
: le
}
for (
var g = o.top - t.rect.top,
m = o.bottom - t.rect.top,
v = (g + m) / 2,
y = t.view.measure.heights,
b = 0;
b < y.length - 1 && !(v < y[b]);
b++
);
var x = b ? y[b - 1] : 0,
C = y[b],
S = {
left: ("right" == d ? o.right : o.left) - t.rect.left,
right: ("left" == d ? o.left : o.right) - t.rect.left,
top: x,
bottom: C,
}
return (
o.left || o.right || (S.bogus = !0),
e.options.singleCursorHeightPerLine ||
((S.rtop = g), (S.rbottom = m)),
S
)
}
function maybeUpdateRectForZooming(e, t) {
if (
!window.screen ||
null == screen.logicalXDPI ||
screen.logicalXDPI == screen.deviceXDPI ||
!hasBadZoomedRects(e)
)
return t
var n = screen.logicalXDPI / screen.deviceXDPI,
r = screen.logicalYDPI / screen.deviceYDPI
return {
left: t.left * n,
right: t.right * n,
top: t.top * r,
bottom: t.bottom * r,
}
}
function clearLineMeasurementCacheFor(e) {
if (
e.measure &&
((e.measure.cache = {}), (e.measure.heights = null), e.rest)
)
for (var t = 0; t < e.rest.length; t++) e.measure.caches[t] = {}
}
function clearLineMeasurementCache(e) {
;(e.display.externalMeasure = null),
removeChildren(e.display.lineMeasure)
for (var t = 0; t < e.display.view.length; t++)
clearLineMeasurementCacheFor(e.display.view[t])
}
function clearCaches(e) {
clearLineMeasurementCache(e),
(e.display.cachedCharWidth = e.display.cachedTextHeight = e.display.cachedPaddingH = null),
e.options.lineWrapping || (e.display.maxLineChanged = !0),
(e.display.lineNumChars = null)
}
function pageScrollX() {
return u && m
? -(
document.body.getBoundingClientRect().left -
parseInt(getComputedStyle(document.body).marginLeft)
)
: window.pageXOffset ||
(document.documentElement || document.body).scrollLeft
}
function pageScrollY() {
return u && m
? -(
document.body.getBoundingClientRect().top -
parseInt(getComputedStyle(document.body).marginTop)
)
: window.pageYOffset ||
(document.documentElement || document.body).scrollTop
}
function widgetTopHeight(e) {
var t = 0
if (e.widgets)
for (var n = 0; n < e.widgets.length; ++n)
e.widgets[n].above && (t += widgetHeight(e.widgets[n]))
return t
}
function intoCoordSystem(e, t, n, r, o) {
if (!o) {
var i = widgetTopHeight(t)
;(n.top += i), (n.bottom += i)
}
if ("line" == r) return n
r || (r = "local")
var a = heightAtLine(t)
if (
("local" == r
? (a += paddingTop(e.display))
: (a -= e.display.viewOffset),
"page" == r || "window" == r)
) {
var s = e.display.lineSpace.getBoundingClientRect()
a += s.top + ("window" == r ? 0 : pageScrollY())
var l = s.left + ("window" == r ? 0 : pageScrollX())
;(n.left += l), (n.right += l)
}
return (n.top += a), (n.bottom += a), n
}
function fromCoordSystem(e, t, n) {
if ("div" == n) return t
var r = t.left,
o = t.top
if ("page" == n) (r -= pageScrollX()), (o -= pageScrollY())
else if ("local" == n || !n) {
var i = e.display.sizer.getBoundingClientRect()
;(r += i.left), (o += i.top)
}
var a = e.display.lineSpace.getBoundingClientRect()
return { left: r - a.left, top: o - a.top }
}
function charCoords(e, t, n, r, o) {
return (
r || (r = getLine(e.doc, t.line)),
intoCoordSystem(e, r, measureChar(e, r, t.ch, o), n)
)
}
function cursorCoords(e, t, n, r, o, i) {
function get(t, a) {
var s = measureCharPrepared(e, o, t, a ? "right" : "left", i)
return (
a ? (s.left = s.right) : (s.right = s.left),
intoCoordSystem(e, r, s, n)
)
}
function getBidi(e, t, n) {
var r = 1 == a[t].level
return get(n ? e - 1 : e, r != n)
}
;(r = r || getLine(e.doc, t.line)),
o || (o = prepareMeasureForLine(e, r))
var a = getOrder(r, e.doc.direction),
s = t.ch,
l = t.sticky
if (
(s >= r.text.length
? ((s = r.text.length), (l = "before"))
: s <= 0 && ((s = 0), (l = "after")),
!a)
)
return get("before" == l ? s - 1 : s, "before" == l)
var c = getBidiPartAt(a, s, l),
u = R,
d = getBidi(s, c, "before" == l)
return null != u && (d.other = getBidi(s, u, "before" != l)), d
}
function estimateCoords(e, t) {
var n = 0
;(t = clipPos(e.doc, t)),
e.options.lineWrapping || (n = charWidth(e.display) * t.ch)
var r = getLine(e.doc, t.line),
o = heightAtLine(r) + paddingTop(e.display)
return { left: n, right: n, top: o, bottom: o + r.height }
}
function PosWithInfo(e, t, n, r, o) {
var i = Pos(e, t, n)
return (i.xRel = o), r && (i.outside = !0), i
}
function coordsChar(e, t, n) {
var r = e.doc
if ((n += e.display.viewOffset) < 0)
return PosWithInfo(r.first, 0, null, !0, -1)
var o = lineAtHeight(r, n),
i = r.first + r.size - 1
if (o > i)
return PosWithInfo(
r.first + r.size - 1,
getLine(r, i).text.length,
null,
!0,
1
)
t < 0 && (t = 0)
for (var a = getLine(r, o); ; ) {
var s = coordsCharInner(e, a, o, t, n),
l = collapsedSpanAtEnd(a),
c = l && l.find(0, !0)
if (!l || !(s.ch > c.from.ch || (s.ch == c.from.ch && s.xRel > 0)))
return s
o = lineNo((a = c.to.line))
}
}
function wrappedLineExtent(e, t, n, r) {
r -= widgetTopHeight(t)
var o = t.text.length,
i = findFirst(
function(t) {
return measureCharPrepared(e, n, t - 1).bottom <= r
},
o,
0
)
return (
(o = findFirst(
function(t) {
return measureCharPrepared(e, n, t).top > r
},
i,
o
)),
{ begin: i, end: o }
)
}
function wrappedLineExtentChar(e, t, n, r) {
return (
n || (n = prepareMeasureForLine(e, t)),
wrappedLineExtent(
e,
t,
n,
intoCoordSystem(e, t, measureCharPrepared(e, n, r), "line").top
)
)
}
function boxIsAfter(e, t, n, r) {
return !(e.bottom <= n) && (e.top > n || (r ? e.left : e.right) > t)
}
function coordsCharInner(e, t, n, r, o) {
o -= heightAtLine(t)
var i = prepareMeasureForLine(e, t),
a = widgetTopHeight(t),
s = 0,
l = t.text.length,
c = !0,
u = getOrder(t, e.doc.direction)
if (u) {
var d = (e.options.lineWrapping
? coordsBidiPartWrapped
: coordsBidiPart)(e, t, n, i, u, r, o)
;(s = (c = 1 != d.level) ? d.from : d.to - 1),
(l = c ? d.to : d.from - 1)
}
var p,
h,
f = null,
g = null,
m = findFirst(
function(t) {
var n = measureCharPrepared(e, i, t)
return (
(n.top += a),
(n.bottom += a),
!!boxIsAfter(n, r, o, !1) &&
(n.top <= o && n.left <= r && ((f = t), (g = n)), !0)
)
},
s,
l
),
v = !1
if (g) {
var y = r - g.left < g.right - r,
b = y == c
;(m = f + (b ? 0 : 1)),
(h = b ? "after" : "before"),
(p = y ? g.left : g.right)
} else {
c || (m != l && m != s) || m++,
(h =
0 == m
? "after"
: m == t.text.length
? "before"
: measureCharPrepared(e, i, m - (c ? 1 : 0)).bottom + a <=
o ==
c
? "after"
: "before")
var x = cursorCoords(e, Pos(n, m, h), "line", t, i)
;(p = x.left), (v = o < x.top || o >= x.bottom)
}
return (
(m = skipExtendingChars(t.text, m, 1)), PosWithInfo(n, m, h, v, r - p)
)
}
function coordsBidiPart(e, t, n, r, o, i, a) {
var s = findFirst(
function(s) {
var l = o[s],
c = 1 != l.level
return boxIsAfter(
cursorCoords(
e,
Pos(n, c ? l.to : l.from, c ? "before" : "after"),
"line",
t,
r
),
i,
a,
!0
)
},
0,
o.length - 1
),
l = o[s]
if (s > 0) {
var c = 1 != l.level,
u = cursorCoords(
e,
Pos(n, c ? l.from : l.to, c ? "after" : "before"),
"line",
t,
r
)
boxIsAfter(u, i, a, !0) && u.top > a && (l = o[s - 1])
}
return l
}
function coordsBidiPartWrapped(e, t, n, r, o, i, a) {
var s = wrappedLineExtent(e, t, r, a),
l = s.begin,
c = s.end
;/\s/.test(t.text.charAt(c - 1)) && c--
for (var u = null, d = null, p = 0; p < o.length; p++) {
var h = o[p]
if (!(h.from >= c || h.to <= l)) {
var f = measureCharPrepared(
e,
r,
1 != h.level ? Math.min(c, h.to) - 1 : Math.max(l, h.from)
).right,
g = f < i ? i - f + 1e9 : f - i
;(!u || d > g) && ((u = h), (d = g))
}
}
return (
u || (u = o[o.length - 1]),
u.from < l && (u = { from: l, to: u.to, level: u.level }),
u.to > c && (u = { from: u.from, to: c, level: u.level }),
u
)
}
function textHeight(e) {
if (null != e.cachedTextHeight) return e.cachedTextHeight
if (null == re) {
re = elt("pre")
for (var t = 0; t < 49; ++t)
re.appendChild(document.createTextNode("x")),
re.appendChild(elt("br"))
re.appendChild(document.createTextNode("x"))
}
removeChildrenAndAdd(e.measure, re)
var n = re.offsetHeight / 50
return (
n > 3 && (e.cachedTextHeight = n), removeChildren(e.measure), n || 1
)
}
function charWidth(e) {
if (null != e.cachedCharWidth) return e.cachedCharWidth
var t = elt("span", "xxxxxxxxxx"),
n = elt("pre", [t])
removeChildrenAndAdd(e.measure, n)
var r = t.getBoundingClientRect(),
o = (r.right - r.left) / 10
return o > 2 && (e.cachedCharWidth = o), o || 10
}
function getDimensions(e) {
for (
var t = e.display,
n = {},
r = {},
o = t.gutters.clientLeft,
i = t.gutters.firstChild,
a = 0;
i;
i = i.nextSibling, ++a
)
(n[e.options.gutters[a]] = i.offsetLeft + i.clientLeft + o),
(r[e.options.gutters[a]] = i.clientWidth)
return {
fixedPos: compensateForHScroll(t),
gutterTotalWidth: t.gutters.offsetWidth,
gutterLeft: n,
gutterWidth: r,
wrapperWidth: t.wrapper.clientWidth,
}
}
function compensateForHScroll(e) {
return (
e.scroller.getBoundingClientRect().left -
e.sizer.getBoundingClientRect().left
)
}
function estimateHeight(e) {
var t = textHeight(e.display),
n = e.options.lineWrapping,
r =
n &&
Math.max(
5,
e.display.scroller.clientWidth / charWidth(e.display) - 3
)
return function(o) {
if (lineIsHidden(e.doc, o)) return 0
var i = 0
if (o.widgets)
for (var a = 0; a < o.widgets.length; a++)
o.widgets[a].height && (i += o.widgets[a].height)
return n ? i + (Math.ceil(o.text.length / r) || 1) * t : i + t
}
}
function estimateLineHeights(e) {
var t = e.doc,
n = estimateHeight(e)
t.iter(function(e) {
var t = n(e)
t != e.height && updateLineHeight(e, t)
})
}
function posFromMouse(e, t, n, r) {
var o = e.display
if (!n && "true" == e_target(t).getAttribute("cm-not-content"))
return null
var i,
a,
s = o.lineSpace.getBoundingClientRect()
try {
;(i = t.clientX - s.left), (a = t.clientY - s.top)
} catch (t) {
return null
}
var l,
c = coordsChar(e, i, a)
if (
r &&
1 == c.xRel &&
(l = getLine(e.doc, c.line).text).length == c.ch
) {
var u = countColumn(l, l.length, e.options.tabSize) - l.length
c = Pos(
c.line,
Math.max(
0,
Math.round(
(i - paddingH(e.display).left) / charWidth(e.display)
) - u
)
)
}
return c
}
function findViewIndex(e, t) {
if (t >= e.display.viewTo) return null
if ((t -= e.display.viewFrom) < 0) return null
for (var n = e.display.view, r = 0; r < n.length; r++)
if ((t -= n[r].size) < 0) return r
}
function updateSelection(e) {
e.display.input.showSelection(e.display.input.prepareSelection())
}
function prepareSelection(e, t) {
void 0 === t && (t = !0)
for (
var n = e.doc,
r = {},
o = (r.cursors = document.createDocumentFragment()),
i = (r.selection = document.createDocumentFragment()),
a = 0;
a < n.sel.ranges.length;
a++
)
if (t || a != n.sel.primIndex) {
var s = n.sel.ranges[a]
if (
!(
s.from().line >= e.display.viewTo ||
s.to().line < e.display.viewFrom
)
) {
var l = s.empty()
;(l || e.options.showCursorWhenSelecting) &&
drawSelectionCursor(e, s.head, o),
l || drawSelectionRange(e, s, i)
}
}
return r
}
function drawSelectionCursor(e, t, n) {
var r = cursorCoords(
e,
t,
"div",
null,
null,
!e.options.singleCursorHeightPerLine
),
o = n.appendChild(elt("div", " ", "CodeMirror-cursor"))
if (
((o.style.left = r.left + "px"),
(o.style.top = r.top + "px"),
(o.style.height =
Math.max(0, r.bottom - r.top) * e.options.cursorHeight + "px"),
r.other)
) {
var i = n.appendChild(
elt("div", " ", "CodeMirror-cursor CodeMirror-secondarycursor")
)
;(i.style.display = ""),
(i.style.left = r.other.left + "px"),
(i.style.top = r.other.top + "px"),
(i.style.height = 0.85 * (r.other.bottom - r.other.top) + "px")
}
}
function cmpCoords(e, t) {
return e.top - t.top || e.left - t.left
}
function drawSelectionRange(e, t, n) {
function add(e, t, n, r) {
t < 0 && (t = 0),
(t = Math.round(t)),
(r = Math.round(r)),
i.appendChild(
elt(
"div",
null,
"CodeMirror-selected",
"position: absolute; left: " +
e +
"px;\n top: " +
t +
"px; width: " +
(null == n ? l - e : n) +
"px;\n height: " +
(r - t) +
"px"
)
)
}
function drawForLine(t, n, r) {
function coords(n, r) {
return charCoords(e, Pos(t, n), "div", u, r)
}
function wrapX(t, n, r) {
var o = wrappedLineExtentChar(e, u, null, t),
i = ("ltr" == n) == ("after" == r) ? "left" : "right"
return coords(
"after" == r
? o.begin
: o.end - (/\s/.test(u.text.charAt(o.end - 1)) ? 2 : 1),
i
)[i]
}
var i,
a,
u = getLine(o, t),
d = u.text.length,
p = getOrder(u, o.direction)
return (
iterateBidiSections(p, n || 0, null == r ? d : r, function(
e,
t,
o,
u
) {
var h = "ltr" == o,
f = coords(e, h ? "left" : "right"),
g = coords(t - 1, h ? "right" : "left"),
m = null == n && 0 == e,
v = null == r && t == d,
y = 0 == u,
b = !p || u == p.length - 1
if (g.top - f.top <= 3) {
var x = (c ? v : m) && b,
C = (c ? m : v) && y ? s : (h ? f : g).left,
w = x ? l : (h ? g : f).right
add(C, f.top, w - C, f.bottom)
} else {
var S, k, L, M
h
? ((S = c && m && y ? s : f.left),
(k = c ? l : wrapX(e, o, "before")),
(L = c ? s : wrapX(t, o, "after")),
(M = c && v && b ? l : g.right))
: ((S = c ? wrapX(e, o, "before") : s),
(k = !c && m && y ? l : f.right),
(L = !c && v && b ? s : g.left),
(M = c ? wrapX(t, o, "after") : l)),
add(S, f.top, k - S, f.bottom),
f.bottom < g.top && add(s, f.bottom, null, g.top),
add(L, g.top, M - L, g.bottom)
}
;(!i || cmpCoords(f, i) < 0) && (i = f),
cmpCoords(g, i) < 0 && (i = g),
(!a || cmpCoords(f, a) < 0) && (a = f),
cmpCoords(g, a) < 0 && (a = g)
}),
{ start: i, end: a }
)
}
var r = e.display,
o = e.doc,
i = document.createDocumentFragment(),
a = paddingH(e.display),
s = a.left,
l =
Math.max(r.sizerWidth, displayWidth(e) - r.sizer.offsetLeft) -
a.right,
c = "ltr" == o.direction,
u = t.from(),
d = t.to()
if (u.line == d.line) drawForLine(u.line, u.ch, d.ch)
else {
var p = getLine(o, u.line),
h = getLine(o, d.line),
f = visualLine(p) == visualLine(h),
g = drawForLine(u.line, u.ch, f ? p.text.length + 1 : null).end,
m = drawForLine(d.line, f ? 0 : null, d.ch).start
f &&
(g.top < m.top - 2
? (add(g.right, g.top, null, g.bottom),
add(s, m.top, m.left, m.bottom))
: add(g.right, g.top, m.left - g.right, g.bottom)),
g.bottom < m.top && add(s, g.bottom, null, m.top)
}
n.appendChild(i)
}
function restartBlink(e) {
if (e.state.focused) {
var t = e.display
clearInterval(t.blinker)
var n = !0
;(t.cursorDiv.style.visibility = ""),
e.options.cursorBlinkRate > 0
? (t.blinker = setInterval(function() {
return (t.cursorDiv.style.visibility = (n = !n)
? ""
: "hidden")
}, e.options.cursorBlinkRate))
: e.options.cursorBlinkRate < 0 &&
(t.cursorDiv.style.visibility = "hidden")
}
}
function ensureFocus(e) {
e.state.focused || (e.display.input.focus(), onFocus(e))
}
function delayBlurEvent(e) {
;(e.state.delayingBlurEvent = !0),
setTimeout(function() {
e.state.delayingBlurEvent &&
((e.state.delayingBlurEvent = !1), onBlur(e))
}, 100)
}
function onFocus(e, t) {
e.state.delayingBlurEvent && (e.state.delayingBlurEvent = !1),
"nocursor" != e.options.readOnly &&
(e.state.focused ||
(signal(e, "focus", e, t),
(e.state.focused = !0),
addClass(e.display.wrapper, "CodeMirror-focused"),
e.curOp ||
e.display.selForContextMenu == e.doc.sel ||
(e.display.input.reset(),
l &&
setTimeout(function() {
return e.display.input.reset(!0)
}, 20)),
e.display.input.receivedFocus()),
restartBlink(e))
}
function onBlur(e, t) {
e.state.delayingBlurEvent ||
(e.state.focused &&
(signal(e, "blur", e, t),
(e.state.focused = !1),
L(e.display.wrapper, "CodeMirror-focused")),
clearInterval(e.display.blinker),
setTimeout(function() {
e.state.focused || (e.display.shift = !1)
}, 150))
}
function updateHeightsInViewport(e) {
for (
var t = e.display, n = t.lineDiv.offsetTop, r = 0;
r < t.view.length;
r++
) {
var o = t.view[r],
i = void 0
if (!o.hidden) {
if (a && s < 8) {
var l = o.node.offsetTop + o.node.offsetHeight
;(i = l - n), (n = l)
} else {
var c = o.node.getBoundingClientRect()
i = c.bottom - c.top
}
var u = o.line.height - i
if (
(i < 2 && (i = textHeight(t)),
(u > 0.005 || u < -0.005) &&
(updateLineHeight(o.line, i),
updateWidgetHeight(o.line),
o.rest))
)
for (var d = 0; d < o.rest.length; d++)
updateWidgetHeight(o.rest[d])
}
}
}
function updateWidgetHeight(e) {
if (e.widgets)
for (var t = 0; t < e.widgets.length; ++t)
e.widgets[t].height = e.widgets[t].node.parentNode.offsetHeight
}
function visibleLines(e, t, n) {
var r = n && null != n.top ? Math.max(0, n.top) : e.scroller.scrollTop
r = Math.floor(r - paddingTop(e))
var o = n && null != n.bottom ? n.bottom : r + e.wrapper.clientHeight,
i = lineAtHeight(t, r),
a = lineAtHeight(t, o)
if (n && n.ensure) {
var s = n.ensure.from.line,
l = n.ensure.to.line
s < i
? ((i = s),
(a = lineAtHeight(
t,
heightAtLine(getLine(t, s)) + e.wrapper.clientHeight
)))
: Math.min(l, t.lastLine()) >= a &&
((i = lineAtHeight(
t,
heightAtLine(getLine(t, l)) - e.wrapper.clientHeight
)),
(a = l))
}
return { from: i, to: Math.max(a, i + 1) }
}
function alignHorizontally(e) {
var t = e.display,
n = t.view
if (t.alignWidgets || (t.gutters.firstChild && e.options.fixedGutter)) {
for (
var r =
compensateForHScroll(t) -
t.scroller.scrollLeft +
e.doc.scrollLeft,
o = t.gutters.offsetWidth,
i = r + "px",
a = 0;
a < n.length;
a++
)
if (!n[a].hidden) {
e.options.fixedGutter &&
(n[a].gutter && (n[a].gutter.style.left = i),
n[a].gutterBackground && (n[a].gutterBackground.style.left = i))
var s = n[a].alignable
if (s) for (var l = 0; l < s.length; l++) s[l].style.left = i
}
e.options.fixedGutter && (t.gutters.style.left = r + o + "px")
}
}
function maybeUpdateLineNumberWidth(e) {
if (!e.options.lineNumbers) return !1
var t = e.doc,
n = lineNumberFor(e.options, t.first + t.size - 1),
r = e.display
if (n.length != r.lineNumChars) {
var o = r.measure.appendChild(
elt(
"div",
[elt("div", n)],
"CodeMirror-linenumber CodeMirror-gutter-elt"
)
),
i = o.firstChild.offsetWidth,
a = o.offsetWidth - i
return (
(r.lineGutter.style.width = ""),
(r.lineNumInnerWidth =
Math.max(i, r.lineGutter.offsetWidth - a) + 1),
(r.lineNumWidth = r.lineNumInnerWidth + a),
(r.lineNumChars = r.lineNumInnerWidth ? n.length : -1),
(r.lineGutter.style.width = r.lineNumWidth + "px"),
updateGutterSpace(e),
!0
)
}
return !1
}
function maybeScrollWindow(e, t) {
if (!signalDOMEvent(e, "scrollCursorIntoView")) {
var n = e.display,
r = n.sizer.getBoundingClientRect(),
o = null
if (
(t.top + r.top < 0
? (o = !0)
: t.bottom + r.top >
(window.innerHeight ||
document.documentElement.clientHeight) && (o = !1),
null != o && !f)
) {
var i = elt(
"div",
"",
null,
"position: absolute;\n top: " +
(t.top - n.viewOffset - paddingTop(e.display)) +
"px;\n height: " +
(t.bottom - t.top + scrollGap(e) + n.barHeight) +
"px;\n left: " +
t.left +
"px; width: " +
Math.max(2, t.right - t.left) +
"px;"
)
e.display.lineSpace.appendChild(i),
i.scrollIntoView(o),
e.display.lineSpace.removeChild(i)
}
}
}
function scrollPosIntoView(e, t, n, r) {
null == r && (r = 0)
var o
e.options.lineWrapping ||
t != n ||
(n =
"before" ==
(t = t.ch
? Pos(t.line, "before" == t.sticky ? t.ch - 1 : t.ch, "after")
: t).sticky
? Pos(t.line, t.ch + 1, "before")
: t)
for (var i = 0; i < 5; i++) {
var a = !1,
s = cursorCoords(e, t),
l = n && n != t ? cursorCoords(e, n) : s,
c = calculateScrollPos(
e,
(o = {
left: Math.min(s.left, l.left),
top: Math.min(s.top, l.top) - r,
right: Math.max(s.left, l.left),
bottom: Math.max(s.bottom, l.bottom) + r,
})
),
u = e.doc.scrollTop,
d = e.doc.scrollLeft
if (
(null != c.scrollTop &&
(updateScrollTop(e, c.scrollTop),
Math.abs(e.doc.scrollTop - u) > 1 && (a = !0)),
null != c.scrollLeft &&
(setScrollLeft(e, c.scrollLeft),
Math.abs(e.doc.scrollLeft - d) > 1 && (a = !0)),
!a)
)
break
}
return o
}
function scrollIntoView(e, t) {
var n = calculateScrollPos(e, t)
null != n.scrollTop && updateScrollTop(e, n.scrollTop),
null != n.scrollLeft && setScrollLeft(e, n.scrollLeft)
}
function calculateScrollPos(e, t) {
var n = e.display,
r = textHeight(e.display)
t.top < 0 && (t.top = 0)
var o =
e.curOp && null != e.curOp.scrollTop
? e.curOp.scrollTop
: n.scroller.scrollTop,
i = displayHeight(e),
a = {}
t.bottom - t.top > i && (t.bottom = t.top + i)
var s = e.doc.height + paddingVert(n),
l = t.top < r,
c = t.bottom > s - r
if (t.top < o) a.scrollTop = l ? 0 : t.top
else if (t.bottom > o + i) {
var u = Math.min(t.top, (c ? s : t.bottom) - i)
u != o && (a.scrollTop = u)
}
var d =
e.curOp && null != e.curOp.scrollLeft
? e.curOp.scrollLeft
: n.scroller.scrollLeft,
p =
displayWidth(e) -
(e.options.fixedGutter ? n.gutters.offsetWidth : 0),
h = t.right - t.left > p
return (
h && (t.right = t.left + p),
t.left < 10
? (a.scrollLeft = 0)
: t.left < d
? (a.scrollLeft = Math.max(0, t.left - (h ? 0 : 10)))
: t.right > p + d - 3 &&
(a.scrollLeft = t.right + (h ? 0 : 10) - p),
a
)
}
function addToScrollTop(e, t) {
null != t &&
(resolveScrollToPos(e),
(e.curOp.scrollTop =
(null == e.curOp.scrollTop ? e.doc.scrollTop : e.curOp.scrollTop) +
t))
}
function ensureCursorVisible(e) {
resolveScrollToPos(e)
var t = e.getCursor()
e.curOp.scrollToPos = {
from: t,
to: t,
margin: e.options.cursorScrollMargin,
}
}
function scrollToCoords(e, t, n) {
;(null == t && null == n) || resolveScrollToPos(e),
null != t && (e.curOp.scrollLeft = t),
null != n && (e.curOp.scrollTop = n)
}
function scrollToRange(e, t) {
resolveScrollToPos(e), (e.curOp.scrollToPos = t)
}
function resolveScrollToPos(e) {
var t = e.curOp.scrollToPos
t &&
((e.curOp.scrollToPos = null),
scrollToCoordsRange(
e,
estimateCoords(e, t.from),
estimateCoords(e, t.to),
t.margin
))
}
function scrollToCoordsRange(e, t, n, r) {
var o = calculateScrollPos(e, {
left: Math.min(t.left, n.left),
top: Math.min(t.top, n.top) - r,
right: Math.max(t.right, n.right),
bottom: Math.max(t.bottom, n.bottom) + r,
})
scrollToCoords(e, o.scrollLeft, o.scrollTop)
}
function updateScrollTop(e, t) {
Math.abs(e.doc.scrollTop - t) < 2 ||
(n || updateDisplaySimple(e, { top: t }),
setScrollTop(e, t, !0),
n && updateDisplaySimple(e),
startWorker(e, 100))
}
function setScrollTop(e, t, n) {
;(t = Math.min(
e.display.scroller.scrollHeight - e.display.scroller.clientHeight,
t
)),
(e.display.scroller.scrollTop != t || n) &&
((e.doc.scrollTop = t),
e.display.scrollbars.setScrollTop(t),
e.display.scroller.scrollTop != t &&
(e.display.scroller.scrollTop = t))
}
function setScrollLeft(e, t, n, r) {
;(t = Math.min(
t,
e.display.scroller.scrollWidth - e.display.scroller.clientWidth
)),
((n ? t == e.doc.scrollLeft : Math.abs(e.doc.scrollLeft - t) < 2) &&
!r) ||
((e.doc.scrollLeft = t),
alignHorizontally(e),
e.display.scroller.scrollLeft != t &&
(e.display.scroller.scrollLeft = t),
e.display.scrollbars.setScrollLeft(t))
}
function measureForScrollbars(e) {
var t = e.display,
n = t.gutters.offsetWidth,
r = Math.round(e.doc.height + paddingVert(e.display))
return {
clientHeight: t.scroller.clientHeight,
viewHeight: t.wrapper.clientHeight,
scrollWidth: t.scroller.scrollWidth,
clientWidth: t.scroller.clientWidth,
viewWidth: t.wrapper.clientWidth,
barLeft: e.options.fixedGutter ? n : 0,
docHeight: r,
scrollHeight: r + scrollGap(e) + t.barHeight,
nativeBarWidth: t.nativeBarWidth,
gutterWidth: n,
}
}
function updateScrollbars(e, t) {
t || (t = measureForScrollbars(e))
var n = e.display.barWidth,
r = e.display.barHeight
updateScrollbarsInner(e, t)
for (
var o = 0;
(o < 4 && n != e.display.barWidth) || r != e.display.barHeight;
o++
)
n != e.display.barWidth &&
e.options.lineWrapping &&
updateHeightsInViewport(e),
updateScrollbarsInner(e, measureForScrollbars(e)),
(n = e.display.barWidth),
(r = e.display.barHeight)
}
function updateScrollbarsInner(e, t) {
var n = e.display,
r = n.scrollbars.update(t)
;(n.sizer.style.paddingRight = (n.barWidth = r.right) + "px"),
(n.sizer.style.paddingBottom = (n.barHeight = r.bottom) + "px"),
(n.heightForcer.style.borderBottom =
r.bottom + "px solid transparent"),
r.right && r.bottom
? ((n.scrollbarFiller.style.display = "block"),
(n.scrollbarFiller.style.height = r.bottom + "px"),
(n.scrollbarFiller.style.width = r.right + "px"))
: (n.scrollbarFiller.style.display = ""),
r.bottom &&
e.options.coverGutterNextToScrollbar &&
e.options.fixedGutter
? ((n.gutterFiller.style.display = "block"),
(n.gutterFiller.style.height = r.bottom + "px"),
(n.gutterFiller.style.width = t.gutterWidth + "px"))
: (n.gutterFiller.style.display = "")
}
function initScrollbars(e) {
e.display.scrollbars &&
(e.display.scrollbars.clear(),
e.display.scrollbars.addClass &&
L(e.display.wrapper, e.display.scrollbars.addClass)),
(e.display.scrollbars = new de[e.options.scrollbarStyle](
function(t) {
e.display.wrapper.insertBefore(t, e.display.scrollbarFiller),
V(t, "mousedown", function() {
e.state.focused &&
setTimeout(function() {
return e.display.input.focus()
}, 0)
}),
t.setAttribute("cm-not-content", "true")
},
function(t, n) {
"horizontal" == n ? setScrollLeft(e, t) : updateScrollTop(e, t)
},
e
)),
e.display.scrollbars.addClass &&
addClass(e.display.wrapper, e.display.scrollbars.addClass)
}
function startOperation(e) {
;(e.curOp = {
cm: e,
viewChanged: !1,
startHeight: e.doc.height,
forceUpdate: !1,
updateInput: null,
typing: !1,
changeObjs: null,
cursorActivityHandlers: null,
cursorActivityCalled: 0,
selectionChanged: !1,
updateMaxLine: !1,
scrollLeft: null,
scrollTop: null,
scrollToPos: null,
focus: !1,
id: ++pe,
}),
pushOperation(e.curOp)
}
function endOperation(e) {
finishOperation(e.curOp, function(e) {
for (var t = 0; t < e.ops.length; t++) e.ops[t].cm.curOp = null
endOperations(e)
})
}
function endOperations(e) {
for (var t = e.ops, n = 0; n < t.length; n++) endOperation_R1(t[n])
for (var r = 0; r < t.length; r++) endOperation_W1(t[r])
for (var o = 0; o < t.length; o++) endOperation_R2(t[o])
for (var i = 0; i < t.length; i++) endOperation_W2(t[i])
for (var a = 0; a < t.length; a++) endOperation_finish(t[a])
}
function endOperation_R1(e) {
var t = e.cm,
n = t.display
maybeClipScrollbars(t),
e.updateMaxLine && findMaxLine(t),
(e.mustUpdate =
e.viewChanged ||
e.forceUpdate ||
null != e.scrollTop ||
(e.scrollToPos &&
(e.scrollToPos.from.line < n.viewFrom ||
e.scrollToPos.to.line >= n.viewTo)) ||
(n.maxLineChanged && t.options.lineWrapping)),
(e.update =
e.mustUpdate &&
new he(
t,
e.mustUpdate && { top: e.scrollTop, ensure: e.scrollToPos },
e.forceUpdate
))
}
function endOperation_W1(e) {
e.updatedDisplay = e.mustUpdate && updateDisplayIfNeeded(e.cm, e.update)
}
function endOperation_R2(e) {
var t = e.cm,
n = t.display
e.updatedDisplay && updateHeightsInViewport(t),
(e.barMeasure = measureForScrollbars(t)),
n.maxLineChanged &&
!t.options.lineWrapping &&
((e.adjustWidthTo =
measureChar(t, n.maxLine, n.maxLine.text.length).left + 3),
(t.display.sizerWidth = e.adjustWidthTo),
(e.barMeasure.scrollWidth = Math.max(
n.scroller.clientWidth,
n.sizer.offsetLeft +
e.adjustWidthTo +
scrollGap(t) +
t.display.barWidth
)),
(e.maxScrollLeft = Math.max(
0,
n.sizer.offsetLeft + e.adjustWidthTo - displayWidth(t)
))),
(e.updatedDisplay || e.selectionChanged) &&
(e.preparedSelection = n.input.prepareSelection())
}
function endOperation_W2(e) {
var t = e.cm
null != e.adjustWidthTo &&
((t.display.sizer.style.minWidth = e.adjustWidthTo + "px"),
e.maxScrollLeft < t.doc.scrollLeft &&
setScrollLeft(
t,
Math.min(t.display.scroller.scrollLeft, e.maxScrollLeft),
!0
),
(t.display.maxLineChanged = !1))
var n = e.focus && e.focus == activeElt()
e.preparedSelection &&
t.display.input.showSelection(e.preparedSelection, n),
(e.updatedDisplay || e.startHeight != t.doc.height) &&
updateScrollbars(t, e.barMeasure),
e.updatedDisplay && setDocumentHeight(t, e.barMeasure),
e.selectionChanged && restartBlink(t),
t.state.focused && e.updateInput && t.display.input.reset(e.typing),
n && ensureFocus(e.cm)
}
function endOperation_finish(e) {
var t = e.cm,
n = t.display,
r = t.doc
e.updatedDisplay && postUpdateDisplay(t, e.update),
null == n.wheelStartX ||
(null == e.scrollTop && null == e.scrollLeft && !e.scrollToPos) ||
(n.wheelStartX = n.wheelStartY = null),
null != e.scrollTop && setScrollTop(t, e.scrollTop, e.forceScroll),
null != e.scrollLeft && setScrollLeft(t, e.scrollLeft, !0, !0),
e.scrollToPos &&
maybeScrollWindow(
t,
scrollPosIntoView(
t,
clipPos(r, e.scrollToPos.from),
clipPos(r, e.scrollToPos.to),
e.scrollToPos.margin
)
)
var o = e.maybeHiddenMarkers,
i = e.maybeUnhiddenMarkers
if (o)
for (var a = 0; a < o.length; ++a)
o[a].lines.length || signal(o[a], "hide")
if (i)
for (var s = 0; s < i.length; ++s)
i[s].lines.length && signal(i[s], "unhide")
n.wrapper.offsetHeight && (r.scrollTop = t.display.scroller.scrollTop),
e.changeObjs && signal(t, "changes", t, e.changeObjs),
e.update && e.update.finish()
}
function runInOp(e, t) {
if (e.curOp) return t()
startOperation(e)
try {
return t()
} finally {
endOperation(e)
}
}
function operation(e, t) {
return function() {
if (e.curOp) return t.apply(e, arguments)
startOperation(e)
try {
return t.apply(e, arguments)
} finally {
endOperation(e)
}
}
}
function methodOp(e) {
return function() {
if (this.curOp) return e.apply(this, arguments)
startOperation(this)
try {
return e.apply(this, arguments)
} finally {
endOperation(this)
}
}
}
function docMethodOp(e) {
return function() {
var t = this.cm
if (!t || t.curOp) return e.apply(this, arguments)
startOperation(t)
try {
return e.apply(this, arguments)
} finally {
endOperation(t)
}
}
}
function regChange(e, t, n, r) {
null == t && (t = e.doc.first),
null == n && (n = e.doc.first + e.doc.size),
r || (r = 0)
var o = e.display
if (
(r &&
n < o.viewTo &&
(null == o.updateLineNumbers || o.updateLineNumbers > t) &&
(o.updateLineNumbers = t),
(e.curOp.viewChanged = !0),
t >= o.viewTo)
)
z && visualLineNo(e.doc, t) < o.viewTo && resetView(e)
else if (n <= o.viewFrom)
z && visualLineEndNo(e.doc, n + r) > o.viewFrom
? resetView(e)
: ((o.viewFrom += r), (o.viewTo += r))
else if (t <= o.viewFrom && n >= o.viewTo) resetView(e)
else if (t <= o.viewFrom) {
var i = viewCuttingPoint(e, n, n + r, 1)
i
? ((o.view = o.view.slice(i.index)),
(o.viewFrom = i.lineN),
(o.viewTo += r))
: resetView(e)
} else if (n >= o.viewTo) {
var a = viewCuttingPoint(e, t, t, -1)
a
? ((o.view = o.view.slice(0, a.index)), (o.viewTo = a.lineN))
: resetView(e)
} else {
var s = viewCuttingPoint(e, t, t, -1),
l = viewCuttingPoint(e, n, n + r, 1)
s && l
? ((o.view = o.view
.slice(0, s.index)
.concat(buildViewArray(e, s.lineN, l.lineN))
.concat(o.view.slice(l.index))),
(o.viewTo += r))
: resetView(e)
}
var c = o.externalMeasured
c &&
(n < c.lineN
? (c.lineN += r)
: t < c.lineN + c.size && (o.externalMeasured = null))
}
function regLineChange(e, t, n) {
e.curOp.viewChanged = !0
var r = e.display,
o = e.display.externalMeasured
if (
(o &&
t >= o.lineN &&
t < o.lineN + o.size &&
(r.externalMeasured = null),
!(t < r.viewFrom || t >= r.viewTo))
) {
var i = r.view[findViewIndex(e, t)]
if (null != i.node) {
var a = i.changes || (i.changes = [])
;-1 == indexOf(a, n) && a.push(n)
}
}
}
function resetView(e) {
;(e.display.viewFrom = e.display.viewTo = e.doc.first),
(e.display.view = []),
(e.display.viewOffset = 0)
}
function viewCuttingPoint(e, t, n, r) {
var o,
i = findViewIndex(e, t),
a = e.display.view
if (!z || n == e.doc.first + e.doc.size) return { index: i, lineN: n }
for (var s = e.display.viewFrom, l = 0; l < i; l++) s += a[l].size
if (s != t) {
if (r > 0) {
if (i == a.length - 1) return null
;(o = s + a[i].size - t), i++
} else o = s - t
;(t += o), (n += o)
}
for (; visualLineNo(e.doc, n) != n; ) {
if (i == (r < 0 ? 0 : a.length - 1)) return null
;(n += r * a[i - (r < 0 ? 1 : 0)].size), (i += r)
}
return { index: i, lineN: n }
}
function adjustView(e, t, n) {
var r = e.display
0 == r.view.length || t >= r.viewTo || n <= r.viewFrom
? ((r.view = buildViewArray(e, t, n)), (r.viewFrom = t))
: (r.viewFrom > t
? (r.view = buildViewArray(e, t, r.viewFrom).concat(r.view))
: r.viewFrom < t && (r.view = r.view.slice(findViewIndex(e, t))),
(r.viewFrom = t),
r.viewTo < n
? (r.view = r.view.concat(buildViewArray(e, r.viewTo, n)))
: r.viewTo > n &&
(r.view = r.view.slice(0, findViewIndex(e, n)))),
(r.viewTo = n)
}
function countDirtyView(e) {
for (var t = e.display.view, n = 0, r = 0; r < t.length; r++) {
var o = t[r]
o.hidden || (o.node && !o.changes) || ++n
}
return n
}
function startWorker(e, t) {
e.doc.highlightFrontier < e.display.viewTo &&
e.state.highlight.set(t, bind(highlightWorker, e))
}
function highlightWorker(e) {
var t = e.doc
if (!(t.highlightFrontier >= e.display.viewTo)) {
var n = +new Date() + e.options.workTime,
r = getContextBefore(e, t.highlightFrontier),
o = []
t.iter(
r.line,
Math.min(t.first + t.size, e.display.viewTo + 500),
function(i) {
if (r.line >= e.display.viewFrom) {
var a = i.styles,
s =
i.text.length > e.options.maxHighlightLength
? copyState(t.mode, r.state)
: null,
l = highlightLine(e, i, r, !0)
s && (r.state = s), (i.styles = l.styles)
var c = i.styleClasses,
u = l.classes
u ? (i.styleClasses = u) : c && (i.styleClasses = null)
for (
var d =
!a ||
a.length != i.styles.length ||
(c != u &&
(!c ||
!u ||
c.bgClass != u.bgClass ||
c.textClass != u.textClass)),
p = 0;
!d && p < a.length;
++p
)
d = a[p] != i.styles[p]
d && o.push(r.line), (i.stateAfter = r.save()), r.nextLine()
} else
i.text.length <= e.options.maxHighlightLength &&
processLine(e, i.text, r),
(i.stateAfter = r.line % 5 == 0 ? r.save() : null),
r.nextLine()
if (+new Date() > n)
return startWorker(e, e.options.workDelay), !0
}
),
(t.highlightFrontier = r.line),
(t.modeFrontier = Math.max(t.modeFrontier, r.line)),
o.length &&
runInOp(e, function() {
for (var t = 0; t < o.length; t++)
regLineChange(e, o[t], "text")
})
}
}
function maybeClipScrollbars(e) {
var t = e.display
!t.scrollbarsClipped &&
t.scroller.offsetWidth &&
((t.nativeBarWidth = t.scroller.offsetWidth - t.scroller.clientWidth),
(t.heightForcer.style.height = scrollGap(e) + "px"),
(t.sizer.style.marginBottom = -t.nativeBarWidth + "px"),
(t.sizer.style.borderRightWidth = scrollGap(e) + "px"),
(t.scrollbarsClipped = !0))
}
function selectionSnapshot(e) {
if (e.hasFocus()) return null
var t = activeElt()
if (!t || !contains(e.display.lineDiv, t)) return null
var n = { activeElt: t }
if (window.getSelection) {
var r = window.getSelection()
r.anchorNode &&
r.extend &&
contains(e.display.lineDiv, r.anchorNode) &&
((n.anchorNode = r.anchorNode),
(n.anchorOffset = r.anchorOffset),
(n.focusNode = r.focusNode),
(n.focusOffset = r.focusOffset))
}
return n
}
function restoreSelection(e) {
if (
e &&
e.activeElt &&
e.activeElt != activeElt() &&
(e.activeElt.focus(),
e.anchorNode &&
contains(document.body, e.anchorNode) &&
contains(document.body, e.focusNode))
) {
var t = window.getSelection(),
n = document.createRange()
n.setEnd(e.anchorNode, e.anchorOffset),
n.collapse(!1),
t.removeAllRanges(),
t.addRange(n),
t.extend(e.focusNode, e.focusOffset)
}
}
function updateDisplayIfNeeded(e, t) {
var n = e.display,
r = e.doc
if (t.editorIsHidden) return resetView(e), !1
if (
!t.force &&
t.visible.from >= n.viewFrom &&
t.visible.to <= n.viewTo &&
(null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo) &&
n.renderedView == n.view &&
0 == countDirtyView(e)
)
return !1
maybeUpdateLineNumberWidth(e) &&
(resetView(e), (t.dims = getDimensions(e)))
var o = r.first + r.size,
i = Math.max(t.visible.from - e.options.viewportMargin, r.first),
a = Math.min(o, t.visible.to + e.options.viewportMargin)
n.viewFrom < i &&
i - n.viewFrom < 20 &&
(i = Math.max(r.first, n.viewFrom)),
n.viewTo > a && n.viewTo - a < 20 && (a = Math.min(o, n.viewTo)),
z && ((i = visualLineNo(e.doc, i)), (a = visualLineEndNo(e.doc, a)))
var s =
i != n.viewFrom ||
a != n.viewTo ||
n.lastWrapHeight != t.wrapperHeight ||
n.lastWrapWidth != t.wrapperWidth
adjustView(e, i, a),
(n.viewOffset = heightAtLine(getLine(e.doc, n.viewFrom))),
(e.display.mover.style.top = n.viewOffset + "px")
var l = countDirtyView(e)
if (
!s &&
0 == l &&
!t.force &&
n.renderedView == n.view &&
(null == n.updateLineNumbers || n.updateLineNumbers >= n.viewTo)
)
return !1
var c = selectionSnapshot(e)
return (
l > 4 && (n.lineDiv.style.display = "none"),
patchDisplay(e, n.updateLineNumbers, t.dims),
l > 4 && (n.lineDiv.style.display = ""),
(n.renderedView = n.view),
restoreSelection(c),
removeChildren(n.cursorDiv),
removeChildren(n.selectionDiv),
(n.gutters.style.height = n.sizer.style.minHeight = 0),
s &&
((n.lastWrapHeight = t.wrapperHeight),
(n.lastWrapWidth = t.wrapperWidth),
startWorker(e, 400)),
(n.updateLineNumbers = null),
!0
)
}
function postUpdateDisplay(e, t) {
for (
var n = t.viewport, r = !0;
((r &&
e.options.lineWrapping &&
t.oldDisplayWidth != displayWidth(e)) ||
(n &&
null != n.top &&
(n = {
top: Math.min(
e.doc.height + paddingVert(e.display) - displayHeight(e),
n.top
),
}),
(t.visible = visibleLines(e.display, e.doc, n)),
!(
t.visible.from >= e.display.viewFrom &&
t.visible.to <= e.display.viewTo
))) &&
updateDisplayIfNeeded(e, t);
r = !1
) {
updateHeightsInViewport(e)
var o = measureForScrollbars(e)
updateSelection(e),
updateScrollbars(e, o),
setDocumentHeight(e, o),
(t.force = !1)
}
t.signal(e, "update", e),
(e.display.viewFrom == e.display.reportedViewFrom &&
e.display.viewTo == e.display.reportedViewTo) ||
(t.signal(
e,
"viewportChange",
e,
e.display.viewFrom,
e.display.viewTo
),
(e.display.reportedViewFrom = e.display.viewFrom),
(e.display.reportedViewTo = e.display.viewTo))
}
function updateDisplaySimple(e, t) {
var n = new he(e, t)
if (updateDisplayIfNeeded(e, n)) {
updateHeightsInViewport(e), postUpdateDisplay(e, n)
var r = measureForScrollbars(e)
updateSelection(e),
updateScrollbars(e, r),
setDocumentHeight(e, r),
n.finish()
}
}
function patchDisplay(e, t, n) {
function rm(t) {
var n = t.nextSibling
return (
l && y && e.display.currentWheelTarget == t
? (t.style.display = "none")
: t.parentNode.removeChild(t),
n
)
}
for (
var r = e.display,
o = e.options.lineNumbers,
i = r.lineDiv,
a = i.firstChild,
s = r.view,
c = r.viewFrom,
u = 0;
u < s.length;
u++
) {
var d = s[u]
if (d.hidden);
else if (d.node && d.node.parentNode == i) {
for (; a != d.node; ) a = rm(a)
var p = o && null != t && t <= c && d.lineNumber
d.changes &&
(indexOf(d.changes, "gutter") > -1 && (p = !1),
updateLineForChanges(e, d, c, n)),
p &&
(removeChildren(d.lineNumber),
d.lineNumber.appendChild(
document.createTextNode(lineNumberFor(e.options, c))
)),
(a = d.node.nextSibling)
} else {
var h = buildLineElement(e, d, c, n)
i.insertBefore(h, a)
}
c += d.size
}
for (; a; ) a = rm(a)
}
function updateGutterSpace(e) {
var t = e.display.gutters.offsetWidth
e.display.sizer.style.marginLeft = t + "px"
}
function setDocumentHeight(e, t) {
;(e.display.sizer.style.minHeight = t.docHeight + "px"),
(e.display.heightForcer.style.top = t.docHeight + "px"),
(e.display.gutters.style.height =
t.docHeight + e.display.barHeight + scrollGap(e) + "px")
}
function updateGutters(e) {
var t = e.display.gutters,
n = e.options.gutters
removeChildren(t)
for (var r = 0; r < n.length; ++r) {
var o = n[r],
i = t.appendChild(elt("div", null, "CodeMirror-gutter " + o))
"CodeMirror-linenumbers" == o &&
((e.display.lineGutter = i),
(i.style.width = (e.display.lineNumWidth || 1) + "px"))
}
;(t.style.display = r ? "" : "none"), updateGutterSpace(e)
}
function setGuttersForLineNumbers(e) {
var t = indexOf(e.gutters, "CodeMirror-linenumbers")
;-1 == t && e.lineNumbers
? (e.gutters = e.gutters.concat(["CodeMirror-linenumbers"]))
: t > -1 &&
!e.lineNumbers &&
((e.gutters = e.gutters.slice(0)), e.gutters.splice(t, 1))
}
function wheelEventDelta(e) {
var t = e.wheelDeltaX,
n = e.wheelDeltaY
return (
null == t &&
e.detail &&
e.axis == e.HORIZONTAL_AXIS &&
(t = e.detail),
null == n && e.detail && e.axis == e.VERTICAL_AXIS
? (n = e.detail)
: null == n && (n = e.wheelDelta),
{ x: t, y: n }
)
}
function wheelEventPixels(e) {
var t = wheelEventDelta(e)
return (t.x *= ge), (t.y *= ge), t
}
function onScrollWheel(e, t) {
var r = wheelEventDelta(t),
o = r.x,
i = r.y,
a = e.display,
s = a.scroller,
c = s.scrollWidth > s.clientWidth,
u = s.scrollHeight > s.clientHeight
if ((o && c) || (i && u)) {
if (i && y && l)
e: for (var p = t.target, h = a.view; p != s; p = p.parentNode)
for (var f = 0; f < h.length; f++)
if (h[f].node == p) {
e.display.currentWheelTarget = p
break e
}
if (o && !n && !d && null != ge)
return (
i && u && updateScrollTop(e, Math.max(0, s.scrollTop + i * ge)),
setScrollLeft(e, Math.max(0, s.scrollLeft + o * ge)),
(!i || (i && u)) && e_preventDefault(t),
void (a.wheelStartX = null)
)
if (i && null != ge) {
var g = i * ge,
m = e.doc.scrollTop,
v = m + a.wrapper.clientHeight
g < 0
? (m = Math.max(0, m + g - 50))
: (v = Math.min(e.doc.height, v + g + 50)),
updateDisplaySimple(e, { top: m, bottom: v })
}
fe < 20 &&
(null == a.wheelStartX
? ((a.wheelStartX = s.scrollLeft),
(a.wheelStartY = s.scrollTop),
(a.wheelDX = o),
(a.wheelDY = i),
setTimeout(function() {
if (null != a.wheelStartX) {
var e = s.scrollLeft - a.wheelStartX,
t = s.scrollTop - a.wheelStartY,
n =
(t && a.wheelDY && t / a.wheelDY) ||
(e && a.wheelDX && e / a.wheelDX)
;(a.wheelStartX = a.wheelStartY = null),
n && ((ge = (ge * fe + n) / (fe + 1)), ++fe)
}
}, 200))
: ((a.wheelDX += o), (a.wheelDY += i)))
}
}
function normalizeSelection(e, t) {
var n = e[t]
e.sort(function(e, t) {
return cmp(e.from(), t.from())
}),
(t = indexOf(e, n))
for (var r = 1; r < e.length; r++) {
var o = e[r],
i = e[r - 1]
if (cmp(i.to(), o.from()) >= 0) {
var a = minPos(i.from(), o.from()),
s = maxPos(i.to(), o.to()),
l = i.empty() ? o.from() == o.head : i.from() == i.head
r <= t && --t, e.splice(--r, 2, new ve(l ? s : a, l ? a : s))
}
}
return new me(e, t)
}
function simpleSelection(e, t) {
return new me([new ve(e, t || e)], 0)
}
function changeEnd(e) {
return e.text
? Pos(
e.from.line + e.text.length - 1,
lst(e.text).length + (1 == e.text.length ? e.from.ch : 0)
)
: e.to
}
function adjustForChange(e, t) {
if (cmp(e, t.from) < 0) return e
if (cmp(e, t.to) <= 0) return changeEnd(t)
var n = e.line + t.text.length - (t.to.line - t.from.line) - 1,
r = e.ch
return (
e.line == t.to.line && (r += changeEnd(t).ch - t.to.ch), Pos(n, r)
)
}
function computeSelAfterChange(e, t) {
for (var n = [], r = 0; r < e.sel.ranges.length; r++) {
var o = e.sel.ranges[r]
n.push(
new ve(adjustForChange(o.anchor, t), adjustForChange(o.head, t))
)
}
return normalizeSelection(n, e.sel.primIndex)
}
function offsetPos(e, t, n) {
return e.line == t.line
? Pos(n.line, e.ch - t.ch + n.ch)
: Pos(n.line + (e.line - t.line), e.ch)
}
function computeReplacedSel(e, t, n) {
for (var r = [], o = Pos(e.first, 0), i = o, a = 0; a < t.length; a++) {
var s = t[a],
l = offsetPos(s.from, o, i),
c = offsetPos(changeEnd(s), o, i)
if (((o = s.to), (i = c), "around" == n)) {
var u = e.sel.ranges[a],
d = cmp(u.head, u.anchor) < 0
r[a] = new ve(d ? c : l, d ? l : c)
} else r[a] = new ve(l, l)
}
return new me(r, e.sel.primIndex)
}
function loadMode(e) {
;(e.doc.mode = getMode(e.options, e.doc.modeOption)), resetModeState(e)
}
function resetModeState(e) {
e.doc.iter(function(e) {
e.stateAfter && (e.stateAfter = null), e.styles && (e.styles = null)
}),
(e.doc.modeFrontier = e.doc.highlightFrontier = e.doc.first),
startWorker(e, 100),
e.state.modeGen++,
e.curOp && regChange(e)
}
function isWholeLineUpdate(e, t) {
return (
0 == t.from.ch &&
0 == t.to.ch &&
"" == lst(t.text) &&
(!e.cm || e.cm.options.wholeLineUpdateBefore)
)
}
function updateDoc(e, t, n, r) {
function spansFor(e) {
return n ? n[e] : null
}
function update(e, n, o) {
updateLine(e, n, o, r), signalLater(e, "change", e, t)
}
function linesFor(e, t) {
for (var n = [], o = e; o < t; ++o)
n.push(new ne(a[o], spansFor(o), r))
return n
}
var o = t.from,
i = t.to,
a = t.text,
s = getLine(e, o.line),
l = getLine(e, i.line),
c = lst(a),
u = spansFor(a.length - 1),
d = i.line - o.line
if (t.full)
e.insert(0, linesFor(0, a.length)),
e.remove(a.length, e.size - a.length)
else if (isWholeLineUpdate(e, t)) {
var p = linesFor(0, a.length - 1)
update(l, l.text, u),
d && e.remove(o.line, d),
p.length && e.insert(o.line, p)
} else if (s == l)
if (1 == a.length)
update(s, s.text.slice(0, o.ch) + c + s.text.slice(i.ch), u)
else {
var h = linesFor(1, a.length - 1)
h.push(new ne(c + s.text.slice(i.ch), u, r)),
update(s, s.text.slice(0, o.ch) + a[0], spansFor(0)),
e.insert(o.line + 1, h)
}
else if (1 == a.length)
update(
s,
s.text.slice(0, o.ch) + a[0] + l.text.slice(i.ch),
spansFor(0)
),
e.remove(o.line + 1, d)
else {
update(s, s.text.slice(0, o.ch) + a[0], spansFor(0)),
update(l, c + l.text.slice(i.ch), u)
var f = linesFor(1, a.length - 1)
d > 1 && e.remove(o.line + 1, d - 1), e.insert(o.line + 1, f)
}
signalLater(e, "change", e, t)
}
function linkedDocs(e, t, n) {
function propagate(e, r, o) {
if (e.linked)
for (var i = 0; i < e.linked.length; ++i) {
var a = e.linked[i]
if (a.doc != r) {
var s = o && a.sharedHist
;(n && !s) || (t(a.doc, s), propagate(a.doc, e, s))
}
}
}
propagate(e, null, !0)
}
function attachDoc(e, t) {
if (t.cm) throw new Error("This document is already in use.")
;(e.doc = t),
(t.cm = e),
estimateLineHeights(e),
loadMode(e),
setDirectionClass(e),
e.options.lineWrapping || findMaxLine(e),
(e.options.mode = t.modeOption),
regChange(e)
}
function setDirectionClass(e) {
;("rtl" == e.doc.direction
? addClass
: L)(e.display.lineDiv, "CodeMirror-rtl")
}
function directionChanged(e) {
runInOp(e, function() {
setDirectionClass(e), regChange(e)
})
}
function History(e) {
;(this.done = []),
(this.undone = []),
(this.undoDepth = 1 / 0),
(this.lastModTime = this.lastSelTime = 0),
(this.lastOp = this.lastSelOp = null),
(this.lastOrigin = this.lastSelOrigin = null),
(this.generation = this.maxGeneration = e || 1)
}
function historyChangeFromChange(e, t) {
var n = {
from: copyPos(t.from),
to: changeEnd(t),
text: getBetween(e, t.from, t.to),
}
return (
attachLocalSpans(e, n, t.from.line, t.to.line + 1),
linkedDocs(
e,
function(e) {
return attachLocalSpans(e, n, t.from.line, t.to.line + 1)
},
!0
),
n
)
}
function clearSelectionEvents(e) {
for (; e.length && lst(e).ranges; ) e.pop()
}
function lastChangeEvent(e, t) {
return t
? (clearSelectionEvents(e.done), lst(e.done))
: e.done.length && !lst(e.done).ranges
? lst(e.done)
: e.done.length > 1 && !e.done[e.done.length - 2].ranges
? (e.done.pop(), lst(e.done))
: void 0
}
function addChangeToHistory(e, t, n, r) {
var o = e.history
o.undone.length = 0
var i,
a,
s = +new Date()
if (
(o.lastOp == r ||
(o.lastOrigin == t.origin &&
t.origin &&
(("+" == t.origin.charAt(0) &&
e.cm &&
o.lastModTime > s - e.cm.options.historyEventDelay) ||
"*" == t.origin.charAt(0)))) &&
(i = lastChangeEvent(o, o.lastOp == r))
)
(a = lst(i.changes)),
0 == cmp(t.from, t.to) && 0 == cmp(t.from, a.to)
? (a.to = changeEnd(t))
: i.changes.push(historyChangeFromChange(e, t))
else {
var l = lst(o.done)
for (
(l && l.ranges) || pushSelectionToHistory(e.sel, o.done),
i = {
changes: [historyChangeFromChange(e, t)],
generation: o.generation,
},
o.done.push(i);
o.done.length > o.undoDepth;
)
o.done.shift(), o.done[0].ranges || o.done.shift()
}
o.done.push(n),
(o.generation = ++o.maxGeneration),
(o.lastModTime = o.lastSelTime = s),
(o.lastOp = o.lastSelOp = r),
(o.lastOrigin = o.lastSelOrigin = t.origin),
a || signal(e, "historyAdded")
}
function selectionEventCanBeMerged(e, t, n, r) {
var o = t.charAt(0)
return (
"*" == o ||
("+" == o &&
n.ranges.length == r.ranges.length &&
n.somethingSelected() == r.somethingSelected() &&
new Date() - e.history.lastSelTime <=
(e.cm ? e.cm.options.historyEventDelay : 500))
)
}
function addSelectionToHistory(e, t, n, r) {
var o = e.history,
i = r && r.origin
n == o.lastSelOp ||
(i &&
o.lastSelOrigin == i &&
((o.lastModTime == o.lastSelTime && o.lastOrigin == i) ||
selectionEventCanBeMerged(e, i, lst(o.done), t)))
? (o.done[o.done.length - 1] = t)
: pushSelectionToHistory(t, o.done),
(o.lastSelTime = +new Date()),
(o.lastSelOrigin = i),
(o.lastSelOp = n),
r && !1 !== r.clearRedo && clearSelectionEvents(o.undone)
}
function pushSelectionToHistory(e, t) {
var n = lst(t)
;(n && n.ranges && n.equals(e)) || t.push(e)
}
function attachLocalSpans(e, t, n, r) {
var o = t["spans_" + e.id],
i = 0
e.iter(Math.max(e.first, n), Math.min(e.first + e.size, r), function(
n
) {
n.markedSpans &&
((o || (o = t["spans_" + e.id] = {}))[i] = n.markedSpans),
++i
})
}
function removeClearedSpans(e) {
if (!e) return null
for (var t, n = 0; n < e.length; ++n)
e[n].marker.explicitlyCleared
? t || (t = e.slice(0, n))
: t && t.push(e[n])
return t ? (t.length ? t : null) : e
}
function getOldSpans(e, t) {
var n = t["spans_" + e.id]
if (!n) return null
for (var r = [], o = 0; o < t.text.length; ++o)
r.push(removeClearedSpans(n[o]))
return r
}
function mergeOldSpans(e, t) {
var n = getOldSpans(e, t),
r = stretchSpansOverChange(e, t)
if (!n) return r
if (!r) return n
for (var o = 0; o < n.length; ++o) {
var i = n[o],
a = r[o]
if (i && a)
e: for (var s = 0; s < a.length; ++s) {
for (var l = a[s], c = 0; c < i.length; ++c)
if (i[c].marker == l.marker) continue e
i.push(l)
}
else a && (n[o] = a)
}
return n
}
function copyHistoryArray(e, t, n) {
for (var r = [], o = 0; o < e.length; ++o) {
var i = e[o]
if (i.ranges) r.push(n ? me.prototype.deepCopy.call(i) : i)
else {
var a = i.changes,
s = []
r.push({ changes: s })
for (var l = 0; l < a.length; ++l) {
var c = a[l],
u = void 0
if ((s.push({ from: c.from, to: c.to, text: c.text }), t))
for (var d in c)
(u = d.match(/^spans_(\d+)$/)) &&
indexOf(t, Number(u[1])) > -1 &&
((lst(s)[d] = c[d]), delete c[d])
}
}
}
return r
}
function extendRange(e, t, n, r) {
if (r) {
var o = e.anchor
if (n) {
var i = cmp(t, o) < 0
i != cmp(n, o) < 0
? ((o = t), (t = n))
: i != cmp(t, n) < 0 && (t = n)
}
return new ve(o, t)
}
return new ve(n || t, t)
}
function extendSelection(e, t, n, r, o) {
null == o && (o = e.cm && (e.cm.display.shift || e.extend)),
setSelection(e, new me([extendRange(e.sel.primary(), t, n, o)], 0), r)
}
function extendSelections(e, t, n) {
for (
var r = [], o = e.cm && (e.cm.display.shift || e.extend), i = 0;
i < e.sel.ranges.length;
i++
)
r[i] = extendRange(e.sel.ranges[i], t[i], null, o)
setSelection(e, normalizeSelection(r, e.sel.primIndex), n)
}
function replaceOneSelection(e, t, n, r) {
var o = e.sel.ranges.slice(0)
;(o[t] = n), setSelection(e, normalizeSelection(o, e.sel.primIndex), r)
}
function setSimpleSelection(e, t, n, r) {
setSelection(e, simpleSelection(t, n), r)
}
function filterSelectionChange(e, t, n) {
var r = {
ranges: t.ranges,
update: function(t) {
var n = this
this.ranges = []
for (var r = 0; r < t.length; r++)
n.ranges[r] = new ve(
clipPos(e, t[r].anchor),
clipPos(e, t[r].head)
)
},
origin: n && n.origin,
}
return (
signal(e, "beforeSelectionChange", e, r),
e.cm && signal(e.cm, "beforeSelectionChange", e.cm, r),
r.ranges != t.ranges
? normalizeSelection(r.ranges, r.ranges.length - 1)
: t
)
}
function setSelectionReplaceHistory(e, t, n) {
var r = e.history.done,
o = lst(r)
o && o.ranges
? ((r[r.length - 1] = t), setSelectionNoUndo(e, t, n))
: setSelection(e, t, n)
}
function setSelection(e, t, n) {
setSelectionNoUndo(e, t, n),
addSelectionToHistory(e, e.sel, e.cm ? e.cm.curOp.id : NaN, n)
}
function setSelectionNoUndo(e, t, n) {
;(hasHandler(e, "beforeSelectionChange") ||
(e.cm && hasHandler(e.cm, "beforeSelectionChange"))) &&
(t = filterSelectionChange(e, t, n)),
setSelectionInner(
e,
skipAtomicInSelection(
e,
t,
(n && n.bias) ||
(cmp(t.primary().head, e.sel.primary().head) < 0 ? -1 : 1),
!0
)
),
(n && !1 === n.scroll) || !e.cm || ensureCursorVisible(e.cm)
}
function setSelectionInner(e, t) {
t.equals(e.sel) ||
((e.sel = t),
e.cm &&
((e.cm.curOp.updateInput = e.cm.curOp.selectionChanged = !0),
signalCursorActivity(e.cm)),
signalLater(e, "cursorActivity", e))
}
function reCheckSelection(e) {
setSelectionInner(e, skipAtomicInSelection(e, e.sel, null, !1))
}
function skipAtomicInSelection(e, t, n, r) {
for (var o, i = 0; i < t.ranges.length; i++) {
var a = t.ranges[i],
s = t.ranges.length == e.sel.ranges.length && e.sel.ranges[i],
l = skipAtomic(e, a.anchor, s && s.anchor, n, r),
c = skipAtomic(e, a.head, s && s.head, n, r)
;(o || l != a.anchor || c != a.head) &&
(o || (o = t.ranges.slice(0, i)), (o[i] = new ve(l, c)))
}
return o ? normalizeSelection(o, t.primIndex) : t
}
function skipAtomicInner(e, t, n, r, o) {
var i = getLine(e, t.line)
if (i.markedSpans)
for (var a = 0; a < i.markedSpans.length; ++a) {
var s = i.markedSpans[a],
l = s.marker
if (
(null == s.from ||
(l.inclusiveLeft ? s.from <= t.ch : s.from < t.ch)) &&
(null == s.to || (l.inclusiveRight ? s.to >= t.ch : s.to > t.ch))
) {
if (o && (signal(l, "beforeCursorEnter"), l.explicitlyCleared)) {
if (i.markedSpans) {
--a
continue
}
break
}
if (!l.atomic) continue
if (n) {
var c = l.find(r < 0 ? 1 : -1),
u = void 0
if (
((r < 0 ? l.inclusiveRight : l.inclusiveLeft) &&
(c = movePos(e, c, -r, c && c.line == t.line ? i : null)),
c &&
c.line == t.line &&
(u = cmp(c, n)) &&
(r < 0 ? u < 0 : u > 0))
)
return skipAtomicInner(e, c, t, r, o)
}
var d = l.find(r < 0 ? -1 : 1)
return (
(r < 0 ? l.inclusiveLeft : l.inclusiveRight) &&
(d = movePos(e, d, r, d.line == t.line ? i : null)),
d ? skipAtomicInner(e, d, t, r, o) : null
)
}
}
return t
}
function skipAtomic(e, t, n, r, o) {
var i = r || 1,
a =
skipAtomicInner(e, t, n, i, o) ||
(!o && skipAtomicInner(e, t, n, i, !0)) ||
skipAtomicInner(e, t, n, -i, o) ||
(!o && skipAtomicInner(e, t, n, -i, !0))
return a || ((e.cantEdit = !0), Pos(e.first, 0))
}
function movePos(e, t, n, r) {
return n < 0 && 0 == t.ch
? t.line > e.first ? clipPos(e, Pos(t.line - 1)) : null
: n > 0 && t.ch == (r || getLine(e, t.line)).text.length
? t.line < e.first + e.size - 1 ? Pos(t.line + 1, 0) : null
: new Pos(t.line, t.ch + n)
}
function selectAll(e) {
e.setSelection(Pos(e.firstLine(), 0), Pos(e.lastLine()), D)
}
function filterChange(e, t, n) {
var r = {
canceled: !1,
from: t.from,
to: t.to,
text: t.text,
origin: t.origin,
cancel: function() {
return (r.canceled = !0)
},
}
return (
n &&
(r.update = function(t, n, o, i) {
t && (r.from = clipPos(e, t)),
n && (r.to = clipPos(e, n)),
o && (r.text = o),
void 0 !== i && (r.origin = i)
}),
signal(e, "beforeChange", e, r),
e.cm && signal(e.cm, "beforeChange", e.cm, r),
r.canceled
? null
: { from: r.from, to: r.to, text: r.text, origin: r.origin }
)
}
function makeChange(e, t, n) {
if (e.cm) {
if (!e.cm.curOp) return operation(e.cm, makeChange)(e, t, n)
if (e.cm.state.suppressEdits) return
}
if (
!(
hasHandler(e, "beforeChange") ||
(e.cm && hasHandler(e.cm, "beforeChange"))
) ||
(t = filterChange(e, t, !0))
) {
var r = B && !n && removeReadOnlyRanges(e, t.from, t.to)
if (r)
for (var o = r.length - 1; o >= 0; --o)
makeChangeInner(e, {
from: r[o].from,
to: r[o].to,
text: o ? [""] : t.text,
origin: t.origin,
})
else makeChangeInner(e, t)
}
}
function makeChangeInner(e, t) {
if (1 != t.text.length || "" != t.text[0] || 0 != cmp(t.from, t.to)) {
var n = computeSelAfterChange(e, t)
addChangeToHistory(e, t, n, e.cm ? e.cm.curOp.id : NaN),
makeChangeSingleDoc(e, t, n, stretchSpansOverChange(e, t))
var r = []
linkedDocs(e, function(e, n) {
n ||
-1 != indexOf(r, e.history) ||
(rebaseHist(e.history, t), r.push(e.history)),
makeChangeSingleDoc(e, t, null, stretchSpansOverChange(e, t))
})
}
}
function makeChangeFromHistory(e, t, n) {
if (!e.cm || !e.cm.state.suppressEdits || n) {
for (
var r,
o = e.history,
i = e.sel,
a = "undo" == t ? o.done : o.undone,
s = "undo" == t ? o.undone : o.done,
l = 0;
l < a.length &&
((r = a[l]), n ? !r.ranges || r.equals(e.sel) : r.ranges);
l++
);
if (l != a.length) {
for (
o.lastOrigin = o.lastSelOrigin = null;
(r = a.pop()).ranges;
) {
if ((pushSelectionToHistory(r, s), n && !r.equals(e.sel)))
return void setSelection(e, r, { clearRedo: !1 })
i = r
}
var c = []
pushSelectionToHistory(i, s),
s.push({ changes: c, generation: o.generation }),
(o.generation = r.generation || ++o.maxGeneration)
for (
var u =
hasHandler(e, "beforeChange") ||
(e.cm && hasHandler(e.cm, "beforeChange")),
d = r.changes.length - 1;
d >= 0;
--d
) {
var p = (function(n) {
var o = r.changes[n]
if (((o.origin = t), u && !filterChange(e, o, !1)))
return (a.length = 0), {}
c.push(historyChangeFromChange(e, o))
var i = n ? computeSelAfterChange(e, o) : lst(a)
makeChangeSingleDoc(e, o, i, mergeOldSpans(e, o)),
!n &&
e.cm &&
e.cm.scrollIntoView({ from: o.from, to: changeEnd(o) })
var s = []
linkedDocs(e, function(e, t) {
t ||
-1 != indexOf(s, e.history) ||
(rebaseHist(e.history, o), s.push(e.history)),
makeChangeSingleDoc(e, o, null, mergeOldSpans(e, o))
})
})(d)
if (p) return p.v
}
}
}
}
function shiftDoc(e, t) {
if (
0 != t &&
((e.first += t),
(e.sel = new me(
map(e.sel.ranges, function(e) {
return new ve(
Pos(e.anchor.line + t, e.anchor.ch),
Pos(e.head.line + t, e.head.ch)
)
}),
e.sel.primIndex
)),
e.cm)
) {
regChange(e.cm, e.first, e.first - t, t)
for (var n = e.cm.display, r = n.viewFrom; r < n.viewTo; r++)
regLineChange(e.cm, r, "gutter")
}
}
function makeChangeSingleDoc(e, t, n, r) {
if (e.cm && !e.cm.curOp)
return operation(e.cm, makeChangeSingleDoc)(e, t, n, r)
if (t.to.line < e.first)
shiftDoc(e, t.text.length - 1 - (t.to.line - t.from.line))
else if (!(t.from.line > e.lastLine())) {
if (t.from.line < e.first) {
var o = t.text.length - 1 - (e.first - t.from.line)
shiftDoc(e, o),
(t = {
from: Pos(e.first, 0),
to: Pos(t.to.line + o, t.to.ch),
text: [lst(t.text)],
origin: t.origin,
})
}
var i = e.lastLine()
t.to.line > i &&
(t = {
from: t.from,
to: Pos(i, getLine(e, i).text.length),
text: [t.text[0]],
origin: t.origin,
}),
(t.removed = getBetween(e, t.from, t.to)),
n || (n = computeSelAfterChange(e, t)),
e.cm ? makeChangeSingleDocInEditor(e.cm, t, r) : updateDoc(e, t, r),
setSelectionNoUndo(e, n, D)
}
}
function makeChangeSingleDocInEditor(e, t, n) {
var r = e.doc,
o = e.display,
i = t.from,
a = t.to,
s = !1,
l = i.line
e.options.lineWrapping ||
((l = lineNo(visualLine(getLine(r, i.line)))),
r.iter(l, a.line + 1, function(e) {
if (e == o.maxLine) return (s = !0), !0
})),
r.sel.contains(t.from, t.to) > -1 && signalCursorActivity(e),
updateDoc(r, t, n, estimateHeight(e)),
e.options.lineWrapping ||
(r.iter(l, i.line + t.text.length, function(e) {
var t = lineLength(e)
t > o.maxLineLength &&
((o.maxLine = e),
(o.maxLineLength = t),
(o.maxLineChanged = !0),
(s = !1))
}),
s && (e.curOp.updateMaxLine = !0)),
retreatFrontier(r, i.line),
startWorker(e, 400)
var c = t.text.length - (a.line - i.line) - 1
t.full
? regChange(e)
: i.line != a.line ||
1 != t.text.length ||
isWholeLineUpdate(e.doc, t)
? regChange(e, i.line, a.line + 1, c)
: regLineChange(e, i.line, "text")
var u = hasHandler(e, "changes"),
d = hasHandler(e, "change")
if (d || u) {
var p = {
from: i,
to: a,
text: t.text,
removed: t.removed,
origin: t.origin,
}
d && signalLater(e, "change", e, p),
u && (e.curOp.changeObjs || (e.curOp.changeObjs = [])).push(p)
}
e.display.selForContextMenu = null
}
function replaceRange(e, t, n, r, o) {
if ((r || (r = n), cmp(r, n) < 0)) {
var i
;(n = (i = [r, n])[0]), (r = i[1])
}
"string" == typeof t && (t = e.splitLines(t)),
makeChange(e, { from: n, to: r, text: t, origin: o })
}
function rebaseHistSelSingle(e, t, n, r) {
n < e.line ? (e.line += r) : t < e.line && ((e.line = t), (e.ch = 0))
}
function rebaseHistArray(e, t, n, r) {
for (var o = 0; o < e.length; ++o) {
var i = e[o],
a = !0
if (i.ranges) {
i.copied || ((i = e[o] = i.deepCopy()).copied = !0)
for (var s = 0; s < i.ranges.length; s++)
rebaseHistSelSingle(i.ranges[s].anchor, t, n, r),
rebaseHistSelSingle(i.ranges[s].head, t, n, r)
} else {
for (var l = 0; l < i.changes.length; ++l) {
var c = i.changes[l]
if (n < c.from.line)
(c.from = Pos(c.from.line + r, c.from.ch)),
(c.to = Pos(c.to.line + r, c.to.ch))
else if (t <= c.to.line) {
a = !1
break
}
}
a || (e.splice(0, o + 1), (o = 0))
}
}
}
function rebaseHist(e, t) {
var n = t.from.line,
r = t.to.line,
o = t.text.length - (r - n) - 1
rebaseHistArray(e.done, n, r, o), rebaseHistArray(e.undone, n, r, o)
}
function changeLine(e, t, n, r) {
var o = t,
i = t
return (
"number" == typeof t
? (i = getLine(e, clipLine(e, t)))
: (o = lineNo(t)),
null == o ? null : (r(i, o) && e.cm && regLineChange(e.cm, o, n), i)
)
}
function LeafChunk(e) {
var t = this
;(this.lines = e), (this.parent = null)
for (var n = 0, r = 0; r < e.length; ++r)
(e[r].parent = t), (n += e[r].height)
this.height = n
}
function BranchChunk(e) {
var t = this
this.children = e
for (var n = 0, r = 0, o = 0; o < e.length; ++o) {
var i = e[o]
;(n += i.chunkSize()), (r += i.height), (i.parent = t)
}
;(this.size = n), (this.height = r), (this.parent = null)
}
function adjustScrollWhenAboveVisible(e, t, n) {
heightAtLine(t) < ((e.curOp && e.curOp.scrollTop) || e.doc.scrollTop) &&
addToScrollTop(e, n)
}
function addLineWidget(e, t, n, r) {
var o = new ye(e, n, r),
i = e.cm
return (
i && o.noHScroll && (i.display.alignWidgets = !0),
changeLine(e, t, "widget", function(t) {
var n = t.widgets || (t.widgets = [])
if (
(null == o.insertAt
? n.push(o)
: n.splice(
Math.min(n.length - 1, Math.max(0, o.insertAt)),
0,
o
),
(o.line = t),
i && !lineIsHidden(e, t))
) {
var r = heightAtLine(t) < e.scrollTop
updateLineHeight(t, t.height + widgetHeight(o)),
r && addToScrollTop(i, o.height),
(i.curOp.forceUpdate = !0)
}
return !0
}),
signalLater(
i,
"lineWidgetAdded",
i,
o,
"number" == typeof t ? t : lineNo(t)
),
o
)
}
function markText(e, t, n, r, o) {
if (r && r.shared) return markTextShared(e, t, n, r, o)
if (e.cm && !e.cm.curOp) return operation(e.cm, markText)(e, t, n, r, o)
var i = new xe(e, o),
a = cmp(t, n)
if (
(r && copyObj(r, i, !1), a > 0 || (0 == a && !1 !== i.clearWhenEmpty))
)
return i
if (
(i.replacedWith &&
((i.collapsed = !0),
(i.widgetNode = eltP(
"span",
[i.replacedWith],
"CodeMirror-widget"
)),
r.handleMouseEvents ||
i.widgetNode.setAttribute("cm-ignore-events", "true"),
r.insertLeft && (i.widgetNode.insertLeft = !0)),
i.collapsed)
) {
if (
conflictingCollapsedRange(e, t.line, t, n, i) ||
(t.line != n.line && conflictingCollapsedRange(e, n.line, t, n, i))
)
throw new Error(
"Inserting collapsed marker partially overlapping an existing one"
)
seeCollapsedSpans()
}
i.addToHistory &&
addChangeToHistory(
e,
{ from: t, to: n, origin: "markText" },
e.sel,
NaN
)
var s,
l = t.line,
c = e.cm
if (
(e.iter(l, n.line + 1, function(e) {
c &&
i.collapsed &&
!c.options.lineWrapping &&
visualLine(e) == c.display.maxLine &&
(s = !0),
i.collapsed && l != t.line && updateLineHeight(e, 0),
addMarkedSpan(
e,
new MarkedSpan(
i,
l == t.line ? t.ch : null,
l == n.line ? n.ch : null
)
),
++l
}),
i.collapsed &&
e.iter(t.line, n.line + 1, function(t) {
lineIsHidden(e, t) && updateLineHeight(t, 0)
}),
i.clearOnEnter &&
V(i, "beforeCursorEnter", function() {
return i.clear()
}),
i.readOnly &&
(seeReadOnlySpans(),
(e.history.done.length || e.history.undone.length) &&
e.clearHistory()),
i.collapsed && ((i.id = ++be), (i.atomic = !0)),
c)
) {
if ((s && (c.curOp.updateMaxLine = !0), i.collapsed))
regChange(c, t.line, n.line + 1)
else if (
i.className ||
i.title ||
i.startStyle ||
i.endStyle ||
i.css
)
for (var u = t.line; u <= n.line; u++) regLineChange(c, u, "text")
i.atomic && reCheckSelection(c.doc),
signalLater(c, "markerAdded", c, i)
}
return i
}
function markTextShared(e, t, n, r, o) {
;(r = copyObj(r)).shared = !1
var i = [markText(e, t, n, r, o)],
a = i[0],
s = r.widgetNode
return (
linkedDocs(e, function(e) {
s && (r.widgetNode = s.cloneNode(!0)),
i.push(markText(e, clipPos(e, t), clipPos(e, n), r, o))
for (var l = 0; l < e.linked.length; ++l)
if (e.linked[l].isParent) return
a = lst(i)
}),
new Ce(i, a)
)
}
function findSharedMarkers(e) {
return e.findMarks(
Pos(e.first, 0),
e.clipPos(Pos(e.lastLine())),
function(e) {
return e.parent
}
)
}
function copySharedMarkers(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n],
o = r.find(),
i = e.clipPos(o.from),
a = e.clipPos(o.to)
if (cmp(i, a)) {
var s = markText(e, i, a, r.primary, r.primary.type)
r.markers.push(s), (s.parent = r)
}
}
}
function detachSharedMarkers(e) {
for (var t = 0; t < e.length; t++)
!(function(t) {
var n = e[t],
r = [n.primary.doc]
linkedDocs(n.primary.doc, function(e) {
return r.push(e)
})
for (var o = 0; o < n.markers.length; o++) {
var i = n.markers[o]
;-1 == indexOf(r, i.doc) &&
((i.parent = null), n.markers.splice(o--, 1))
}
})(t)
}
function onDrop(e) {
var t = this
if (
(clearDragCursor(t),
!signalDOMEvent(t, e) && !eventInWidget(t.display, e))
) {
e_preventDefault(e), a && (ke = +new Date())
var n = posFromMouse(t, e, !0),
r = e.dataTransfer.files
if (n && !t.isReadOnly())
if (r && r.length && window.FileReader && window.File)
for (
var o = r.length,
i = Array(o),
s = 0,
l = function(e, r) {
if (
!t.options.allowDropFileTypes ||
-1 != indexOf(t.options.allowDropFileTypes, e.type)
) {
var a = new FileReader()
;(a.onload = operation(t, function() {
var e = a.result
if (
(/[\x00-\x08\x0e-\x1f]{2}/.test(e) && (e = ""),
(i[r] = e),
++s == o)
) {
var l = {
from: (n = clipPos(t.doc, n)),
to: n,
text: t.doc.splitLines(
i.join(t.doc.lineSeparator())
),
origin: "paste",
}
makeChange(t.doc, l),
setSelectionReplaceHistory(
t.doc,
simpleSelection(n, changeEnd(l))
)
}
})),
a.readAsText(e)
}
},
c = 0;
c < o;
++c
)
l(r[c], c)
else {
if (t.state.draggingText && t.doc.sel.contains(n) > -1)
return (
t.state.draggingText(e),
void setTimeout(function() {
return t.display.input.focus()
}, 20)
)
try {
var u = e.dataTransfer.getData("Text")
if (u) {
var d
if (
(t.state.draggingText &&
!t.state.draggingText.copy &&
(d = t.listSelections()),
setSelectionNoUndo(t.doc, simpleSelection(n, n)),
d)
)
for (var p = 0; p < d.length; ++p)
replaceRange(t.doc, "", d[p].anchor, d[p].head, "drag")
t.replaceSelection(u, "around", "paste"),
t.display.input.focus()
}
} catch (e) {}
}
}
}
function onDragStart(e, t) {
if (a && (!e.state.draggingText || +new Date() - ke < 100)) e_stop(t)
else if (
!signalDOMEvent(e, t) &&
!eventInWidget(e.display, t) &&
(t.dataTransfer.setData("Text", e.getSelection()),
(t.dataTransfer.effectAllowed = "copyMove"),
t.dataTransfer.setDragImage && !p)
) {
var n = elt("img", null, null, "position: fixed; left: 0; top: 0;")
;(n.src =
"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="),
d &&
((n.width = n.height = 1),
e.display.wrapper.appendChild(n),
(n._top = n.offsetTop)),
t.dataTransfer.setDragImage(n, 0, 0),
d && n.parentNode.removeChild(n)
}
}
function onDragOver(e, t) {
var n = posFromMouse(e, t)
if (n) {
var r = document.createDocumentFragment()
drawSelectionCursor(e, n, r),
e.display.dragCursor ||
((e.display.dragCursor = elt(
"div",
null,
"CodeMirror-cursors CodeMirror-dragcursors"
)),
e.display.lineSpace.insertBefore(
e.display.dragCursor,
e.display.cursorDiv
)),
removeChildrenAndAdd(e.display.dragCursor, r)
}
}
function clearDragCursor(e) {
e.display.dragCursor &&
(e.display.lineSpace.removeChild(e.display.dragCursor),
(e.display.dragCursor = null))
}
function forEachCodeMirror(e) {
if (document.getElementsByClassName)
for (
var t = document.getElementsByClassName("CodeMirror"), n = 0;
n < t.length;
n++
) {
var r = t[n].CodeMirror
r && e(r)
}
}
function ensureGlobalHandlers() {
Le || (registerGlobalHandlers(), (Le = !0))
}
function registerGlobalHandlers() {
var e
V(window, "resize", function() {
null == e &&
(e = setTimeout(function() {
;(e = null), forEachCodeMirror(onResize)
}, 100))
}),
V(window, "blur", function() {
return forEachCodeMirror(onBlur)
})
}
function onResize(e) {
var t = e.display
;(t.lastWrapHeight == t.wrapper.clientHeight &&
t.lastWrapWidth == t.wrapper.clientWidth) ||
((t.cachedCharWidth = t.cachedTextHeight = t.cachedPaddingH = null),
(t.scrollbarsClipped = !1),
e.setSize())
}
function normalizeKeyName(e) {
var t = e.split(/-(?!$)/)
e = t[t.length - 1]
for (var n, r, o, i, a = 0; a < t.length - 1; a++) {
var s = t[a]
if (/^(cmd|meta|m)$/i.test(s)) i = !0
else if (/^a(lt)?$/i.test(s)) n = !0
else if (/^(c|ctrl|control)$/i.test(s)) r = !0
else {
if (!/^s(hift)?$/i.test(s))
throw new Error("Unrecognized modifier name: " + s)
o = !0
}
}
return (
n && (e = "Alt-" + e),
r && (e = "Ctrl-" + e),
i && (e = "Cmd-" + e),
o && (e = "Shift-" + e),
e
)
}
function normalizeKeyMap(e) {
var t = {}
for (var n in e)
if (e.hasOwnProperty(n)) {
var r = e[n]
if (/^(name|fallthrough|(de|at)tach)$/.test(n)) continue
if ("..." == r) {
delete e[n]
continue
}
for (
var o = map(n.split(" "), normalizeKeyName), i = 0;
i < o.length;
i++
) {
var a = void 0,
s = void 0
i == o.length - 1
? ((s = o.join(" ")), (a = r))
: ((s = o.slice(0, i + 1).join(" ")), (a = "..."))
var l = t[s]
if (l) {
if (l != a) throw new Error("Inconsistent bindings for " + s)
} else t[s] = a
}
delete e[n]
}
for (var c in t) e[c] = t[c]
return e
}
function lookupKey(e, t, n, r) {
var o = (t = getKeyMap(t)).call ? t.call(e, r) : t[e]
if (!1 === o) return "nothing"
if ("..." === o) return "multi"
if (null != o && n(o)) return "handled"
if (t.fallthrough) {
if ("[object Array]" != Object.prototype.toString.call(t.fallthrough))
return lookupKey(e, t.fallthrough, n, r)
for (var i = 0; i < t.fallthrough.length; i++) {
var a = lookupKey(e, t.fallthrough[i], n, r)
if (a) return a
}
}
}
function isModifierKey(e) {
var t = "string" == typeof e ? e : Me[e.keyCode]
return "Ctrl" == t || "Alt" == t || "Shift" == t || "Mod" == t
}
function addModifierNames(e, t, n) {
var r = e
return (
t.altKey && "Alt" != r && (e = "Alt-" + e),
(S ? t.metaKey : t.ctrlKey) && "Ctrl" != r && (e = "Ctrl-" + e),
(S ? t.ctrlKey : t.metaKey) && "Cmd" != r && (e = "Cmd-" + e),
!n && t.shiftKey && "Shift" != r && (e = "Shift-" + e),
e
)
}
function keyName(e, t) {
if (d && 34 == e.keyCode && e.char) return !1
var n = Me[e.keyCode]
return null != n && !e.altGraphKey && addModifierNames(n, e, t)
}
function getKeyMap(e) {
return "string" == typeof e ? Ae[e] : e
}
function deleteNearSelection(e, t) {
for (var n = e.doc.sel.ranges, r = [], o = 0; o < n.length; o++) {
for (var i = t(n[o]); r.length && cmp(i.from, lst(r).to) <= 0; ) {
var a = r.pop()
if (cmp(a.from, i.from) < 0) {
i.from = a.from
break
}
}
r.push(i)
}
runInOp(e, function() {
for (var t = r.length - 1; t >= 0; t--)
replaceRange(e.doc, "", r[t].from, r[t].to, "+delete")
ensureCursorVisible(e)
})
}
function moveCharLogically(e, t, n) {
var r = skipExtendingChars(e.text, t + n, n)
return r < 0 || r > e.text.length ? null : r
}
function moveLogically(e, t, n) {
var r = moveCharLogically(e, t.ch, n)
return null == r ? null : new Pos(t.line, r, n < 0 ? "after" : "before")
}
function endOfLine(e, t, n, r, o) {
if (e) {
var i = getOrder(n, t.doc.direction)
if (i) {
var a,
s = o < 0 ? lst(i) : i[0],
l = o < 0 == (1 == s.level) ? "after" : "before"
if (s.level > 0 || "rtl" == t.doc.direction) {
var c = prepareMeasureForLine(t, n)
a = o < 0 ? n.text.length - 1 : 0
var u = measureCharPrepared(t, c, a).top
;(a = findFirst(
function(e) {
return measureCharPrepared(t, c, e).top == u
},
o < 0 == (1 == s.level) ? s.from : s.to - 1,
a
)),
"before" == l && (a = moveCharLogically(n, a, 1))
} else a = o < 0 ? s.to : s.from
return new Pos(r, a, l)
}
}
return new Pos(r, o < 0 ? n.text.length : 0, o < 0 ? "before" : "after")
}
function moveVisually(e, t, n, r) {
var o = getOrder(t, e.doc.direction)
if (!o) return moveLogically(t, n, r)
n.ch >= t.text.length
? ((n.ch = t.text.length), (n.sticky = "before"))
: n.ch <= 0 && ((n.ch = 0), (n.sticky = "after"))
var i = getBidiPartAt(o, n.ch, n.sticky),
a = o[i]
if (
"ltr" == e.doc.direction &&
a.level % 2 == 0 &&
(r > 0 ? a.to > n.ch : a.from < n.ch)
)
return moveLogically(t, n, r)
var s,
l = function(e, n) {
return moveCharLogically(t, e instanceof Pos ? e.ch : e, n)
},
c = function(n) {
return e.options.lineWrapping
? ((s = s || prepareMeasureForLine(e, t)),
wrappedLineExtentChar(e, t, s, n))
: { begin: 0, end: t.text.length }
},
u = c("before" == n.sticky ? l(n, -1) : n.ch)
if ("rtl" == e.doc.direction || 1 == a.level) {
var d = (1 == a.level) == r < 0,
p = l(n, d ? 1 : -1)
if (
null != p &&
(d ? p <= a.to && p <= u.end : p >= a.from && p >= u.begin)
) {
var h = d ? "before" : "after"
return new Pos(n.line, p, h)
}
}
var f = function(e, t, r) {
for (
var i = function(e, t) {
return t
? new Pos(n.line, l(e, 1), "before")
: new Pos(n.line, e, "after")
};
e >= 0 && e < o.length;
e += t
) {
var a = o[e],
s = t > 0 == (1 != a.level),
c = s ? r.begin : l(r.end, -1)
if (a.from <= c && c < a.to) return i(c, s)
if (((c = s ? a.from : l(a.to, -1)), r.begin <= c && c < r.end))
return i(c, s)
}
},
g = f(i + r, r, u)
if (g) return g
var m = r > 0 ? u.end : l(u.begin, -1)
return null == m ||
(r > 0 && m == t.text.length) ||
!(g = f(r > 0 ? 0 : o.length - 1, r, c(m)))
? null
: g
}
function lineStart(e, t) {
var n = getLine(e.doc, t),
r = visualLine(n)
return r != n && (t = lineNo(r)), endOfLine(!0, e, r, t, 1)
}
function lineEnd(e, t) {
var n = getLine(e.doc, t),
r = visualLineEnd(n)
return r != n && (t = lineNo(r)), endOfLine(!0, e, n, t, -1)
}
function lineStartSmart(e, t) {
var n = lineStart(e, t.line),
r = getLine(e.doc, n.line),
o = getOrder(r, e.doc.direction)
if (!o || 0 == o[0].level) {
var i = Math.max(0, r.text.search(/\S/)),
a = t.line == n.line && t.ch <= i && t.ch
return Pos(n.line, a ? 0 : i, n.sticky)
}
return n
}
function doHandleBinding(e, t, n) {
if ("string" == typeof t && !(t = Ne[t])) return !1
e.display.input.ensurePolled()
var r = e.display.shift,
o = !1
try {
e.isReadOnly() && (e.state.suppressEdits = !0),
n && (e.display.shift = !1),
(o = t(e) != N)
} finally {
;(e.display.shift = r), (e.state.suppressEdits = !1)
}
return o
}
function lookupKeyForEditor(e, t, n) {
for (var r = 0; r < e.state.keyMaps.length; r++) {
var o = lookupKey(t, e.state.keyMaps[r], n, e)
if (o) return o
}
return (
(e.options.extraKeys && lookupKey(t, e.options.extraKeys, n, e)) ||
lookupKey(t, e.options.keyMap, n, e)
)
}
function dispatchKey(e, t, n, r) {
var o = e.state.keySeq
if (o) {
if (isModifierKey(t)) return "handled"
De.set(50, function() {
e.state.keySeq == o &&
((e.state.keySeq = null), e.display.input.reset())
}),
(t = o + " " + t)
}
var i = lookupKeyForEditor(e, t, r)
return (
"multi" == i && (e.state.keySeq = t),
"handled" == i && signalLater(e, "keyHandled", e, t, n),
("handled" != i && "multi" != i) ||
(e_preventDefault(n), restartBlink(e)),
o && !i && /\'$/.test(t) ? (e_preventDefault(n), !0) : !!i
)
}
function handleKeyBinding(e, t) {
var n = keyName(t, !0)
return (
!!n &&
(t.shiftKey && !e.state.keySeq
? dispatchKey(e, "Shift-" + n, t, function(t) {
return doHandleBinding(e, t, !0)
}) ||
dispatchKey(e, n, t, function(t) {
if ("string" == typeof t ? /^go[A-Z]/.test(t) : t.motion)
return doHandleBinding(e, t)
})
: dispatchKey(e, n, t, function(t) {
return doHandleBinding(e, t)
}))
)
}
function handleCharBinding(e, t, n) {
return dispatchKey(e, "'" + n + "'", t, function(t) {
return doHandleBinding(e, t, !0)
})
}
function onKeyDown(e) {
var t = this
if (((t.curOp.focus = activeElt()), !signalDOMEvent(t, e))) {
a && s < 11 && 27 == e.keyCode && (e.returnValue = !1)
var n = e.keyCode
t.display.shift = 16 == n || e.shiftKey
var r = handleKeyBinding(t, e)
d &&
((He = r ? n : null),
!r &&
88 == n &&
!$ &&
(y ? e.metaKey : e.ctrlKey) &&
t.replaceSelection("", null, "cut")),
18 != n ||
/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className) ||
showCrossHair(t)
}
}
function showCrossHair(e) {
function up(e) {
;(18 != e.keyCode && e.altKey) ||
(L(t, "CodeMirror-crosshair"),
off(document, "keyup", up),
off(document, "mouseover", up))
}
var t = e.display.lineDiv
addClass(t, "CodeMirror-crosshair"),
V(document, "keyup", up),
V(document, "mouseover", up)
}
function onKeyUp(e) {
16 == e.keyCode && (this.doc.sel.shift = !1), signalDOMEvent(this, e)
}
function onKeyPress(e) {
var t = this
if (
!(
eventInWidget(t.display, e) ||
signalDOMEvent(t, e) ||
(e.ctrlKey && !e.altKey) ||
(y && e.metaKey)
)
) {
var n = e.keyCode,
r = e.charCode
if (d && n == He) return (He = null), void e_preventDefault(e)
if (!d || (e.which && !(e.which < 10)) || !handleKeyBinding(t, e)) {
var o = String.fromCharCode(null == r ? n : r)
"\b" != o &&
(handleCharBinding(t, e, o) || t.display.input.onKeyPress(e))
}
}
}
function clickRepeat(e, t) {
var n = +new Date()
return Ie && Ie.compare(n, e, t)
? ((Ee = Ie = null), "triple")
: Ee && Ee.compare(n, e, t)
? ((Ie = new We(n, e, t)), (Ee = null), "double")
: ((Ee = new We(n, e, t)), (Ie = null), "single")
}
function onMouseDown(e) {
var t = this,
n = t.display
if (
!(signalDOMEvent(t, e) || (n.activeTouch && n.input.supportsTouch()))
)
if (
(n.input.ensurePolled(),
(n.shift = e.shiftKey),
eventInWidget(n, e))
)
l ||
((n.scroller.draggable = !1),
setTimeout(function() {
return (n.scroller.draggable = !0)
}, 100))
else if (!clickInGutter(t, e)) {
var r = posFromMouse(t, e),
o = e_button(e),
i = r ? clickRepeat(r, o) : "single"
window.focus(),
1 == o && t.state.selectingText && t.state.selectingText(e),
(r && handleMappedButton(t, o, r, i, e)) ||
(1 == o
? r
? leftButtonDown(t, r, i, e)
: e_target(e) == n.scroller && e_preventDefault(e)
: 2 == o
? (r && extendSelection(t.doc, r),
setTimeout(function() {
return n.input.focus()
}, 20))
: 3 == o && (k ? onContextMenu(t, e) : delayBlurEvent(t)))
}
}
function handleMappedButton(e, t, n, r, o) {
var i = "Click"
return (
"double" == r
? (i = "Double" + i)
: "triple" == r && (i = "Triple" + i),
(i = (1 == t ? "Left" : 2 == t ? "Middle" : "Right") + i),
dispatchKey(e, addModifierNames(i, o), o, function(t) {
if (("string" == typeof t && (t = Ne[t]), !t)) return !1
var r = !1
try {
e.isReadOnly() && (e.state.suppressEdits = !0), (r = t(e, n) != N)
} finally {
e.state.suppressEdits = !1
}
return r
})
)
}
function configureMouse(e, t, n) {
var r = e.getOption("configureMouse"),
o = r ? r(e, t, n) : {}
if (null == o.unit) {
var i = b ? n.shiftKey && n.metaKey : n.altKey
o.unit = i
? "rectangle"
: "single" == t ? "char" : "double" == t ? "word" : "line"
}
return (
(null == o.extend || e.doc.extend) &&
(o.extend = e.doc.extend || n.shiftKey),
null == o.addNew && (o.addNew = y ? n.metaKey : n.ctrlKey),
null == o.moveOnDrag && (o.moveOnDrag = !(y ? n.altKey : n.ctrlKey)),
o
)
}
function leftButtonDown(e, t, n, r) {
a ? setTimeout(bind(ensureFocus, e), 0) : (e.curOp.focus = activeElt())
var o,
i = configureMouse(e, n, r),
s = e.doc.sel
e.options.dragDrop &&
G &&
!e.isReadOnly() &&
"single" == n &&
(o = s.contains(t)) > -1 &&
(cmp((o = s.ranges[o]).from(), t) < 0 || t.xRel > 0) &&
(cmp(o.to(), t) > 0 || t.xRel < 0)
? leftButtonStartDrag(e, r, t, i)
: leftButtonSelect(e, r, t, i)
}
function leftButtonStartDrag(e, t, n, r) {
var o = e.display,
i = !1,
c = operation(e, function(t) {
l && (o.scroller.draggable = !1),
(e.state.draggingText = !1),
off(document, "mouseup", c),
off(document, "mousemove", u),
off(o.scroller, "dragstart", d),
off(o.scroller, "drop", c),
i ||
(e_preventDefault(t),
r.addNew || extendSelection(e.doc, n, null, null, r.extend),
l || (a && 9 == s)
? setTimeout(function() {
document.body.focus(), o.input.focus()
}, 20)
: o.input.focus())
}),
u = function(e) {
i =
i ||
Math.abs(t.clientX - e.clientX) +
Math.abs(t.clientY - e.clientY) >=
10
},
d = function() {
return (i = !0)
}
l && (o.scroller.draggable = !0),
(e.state.draggingText = c),
(c.copy = !r.moveOnDrag),
o.scroller.dragDrop && o.scroller.dragDrop(),
V(document, "mouseup", c),
V(document, "mousemove", u),
V(o.scroller, "dragstart", d),
V(o.scroller, "drop", c),
delayBlurEvent(e),
setTimeout(function() {
return o.input.focus()
}, 20)
}
function rangeForUnit(e, t, n) {
if ("char" == n) return new ve(t, t)
if ("word" == n) return e.findWordAt(t)
if ("line" == n)
return new ve(Pos(t.line, 0), clipPos(e.doc, Pos(t.line + 1, 0)))
var r = n(e, t)
return new ve(r.from, r.to)
}
function leftButtonSelect(e, t, n, r) {
function extendTo(t) {
if (0 != cmp(d, t))
if (((d = t), "rectangle" == r.unit)) {
for (
var o = [],
c = e.options.tabSize,
u = countColumn(getLine(i, n.line).text, n.ch, c),
p = countColumn(getLine(i, t.line).text, t.ch, c),
h = Math.min(u, p),
f = Math.max(u, p),
g = Math.min(n.line, t.line),
m = Math.min(e.lastLine(), Math.max(n.line, t.line));
g <= m;
g++
) {
var v = getLine(i, g).text,
y = findColumn(v, h, c)
h == f
? o.push(new ve(Pos(g, y), Pos(g, y)))
: v.length > y &&
o.push(new ve(Pos(g, y), Pos(g, findColumn(v, f, c))))
}
o.length || o.push(new ve(n, n)),
setSelection(
i,
normalizeSelection(l.ranges.slice(0, s).concat(o), s),
{ origin: "*mouse", scroll: !1 }
),
e.scrollIntoView(t)
} else {
var b,
x = a,
C = rangeForUnit(e, t, r.unit),
w = x.anchor
cmp(C.anchor, w) > 0
? ((b = C.head), (w = minPos(x.from(), C.anchor)))
: ((b = C.anchor), (w = maxPos(x.to(), C.head)))
var S = l.ranges.slice(0)
;(S[s] = bidiSimplify(e, new ve(clipPos(i, w), b))),
setSelection(i, normalizeSelection(S, s), H)
}
}
function extend(t) {
var n = ++h,
a = posFromMouse(e, t, !0, "rectangle" == r.unit)
if (a)
if (0 != cmp(a, d)) {
;(e.curOp.focus = activeElt()), extendTo(a)
var s = visibleLines(o, i)
;(a.line >= s.to || a.line < s.from) &&
setTimeout(
operation(e, function() {
h == n && extend(t)
}),
150
)
} else {
var l = t.clientY < p.top ? -20 : t.clientY > p.bottom ? 20 : 0
l &&
setTimeout(
operation(e, function() {
h == n && ((o.scroller.scrollTop += l), extend(t))
}),
50
)
}
}
function done(t) {
;(e.state.selectingText = !1),
(h = 1 / 0),
e_preventDefault(t),
o.input.focus(),
off(document, "mousemove", f),
off(document, "mouseup", g),
(i.history.lastSelOrigin = null)
}
var o = e.display,
i = e.doc
e_preventDefault(t)
var a,
s,
l = i.sel,
c = l.ranges
if (
(r.addNew && !r.extend
? ((s = i.sel.contains(n)), (a = s > -1 ? c[s] : new ve(n, n)))
: ((a = i.sel.primary()), (s = i.sel.primIndex)),
"rectangle" == r.unit)
)
r.addNew || (a = new ve(n, n)),
(n = posFromMouse(e, t, !0, !0)),
(s = -1)
else {
var u = rangeForUnit(e, n, r.unit)
a = r.extend ? extendRange(a, u.anchor, u.head, r.extend) : u
}
r.addNew
? -1 == s
? ((s = c.length),
setSelection(i, normalizeSelection(c.concat([a]), s), {
scroll: !1,
origin: "*mouse",
}))
: c.length > 1 && c[s].empty() && "char" == r.unit && !r.extend
? (setSelection(
i,
normalizeSelection(c.slice(0, s).concat(c.slice(s + 1)), 0),
{ scroll: !1, origin: "*mouse" }
),
(l = i.sel))
: replaceOneSelection(i, s, a, H)
: ((s = 0), setSelection(i, new me([a], 0), H), (l = i.sel))
var d = n,
p = o.wrapper.getBoundingClientRect(),
h = 0,
f = operation(e, function(e) {
e_button(e) ? extend(e) : done(e)
}),
g = operation(e, done)
;(e.state.selectingText = g),
V(document, "mousemove", f),
V(document, "mouseup", g)
}
function bidiSimplify(e, t) {
var n = t.anchor,
r = t.head,
o = getLine(e.doc, n.line)
if (0 == cmp(n, r) && n.sticky == r.sticky) return t
var i = getOrder(o)
if (!i) return t
var a = getBidiPartAt(i, n.ch, n.sticky),
s = i[a]
if (s.from != n.ch && s.to != n.ch) return t
var l = a + ((s.from == n.ch) == (1 != s.level) ? 0 : 1)
if (0 == l || l == i.length) return t
var c
if (r.line != n.line)
c = (r.line - n.line) * ("ltr" == e.doc.direction ? 1 : -1) > 0
else {
var u = getBidiPartAt(i, r.ch, r.sticky),
d = u - a || (r.ch - n.ch) * (1 == s.level ? -1 : 1)
c = u == l - 1 || u == l ? d < 0 : d > 0
}
var p = i[l + (c ? -1 : 0)],
h = c == (1 == p.level),
f = h ? p.from : p.to,
g = h ? "after" : "before"
return n.ch == f && n.sticky == g ? t : new ve(new Pos(n.line, f, g), r)
}
function gutterEvent(e, t, n, r) {
var o, i
if (t.touches) (o = t.touches[0].clientX), (i = t.touches[0].clientY)
else
try {
;(o = t.clientX), (i = t.clientY)
} catch (t) {
return !1
}
if (o >= Math.floor(e.display.gutters.getBoundingClientRect().right))
return !1
r && e_preventDefault(t)
var a = e.display,
s = a.lineDiv.getBoundingClientRect()
if (i > s.bottom || !hasHandler(e, n)) return e_defaultPrevented(t)
i -= s.top - a.viewOffset
for (var l = 0; l < e.options.gutters.length; ++l) {
var c = a.gutters.childNodes[l]
if (c && c.getBoundingClientRect().right >= o)
return (
signal(e, n, e, lineAtHeight(e.doc, i), e.options.gutters[l], t),
e_defaultPrevented(t)
)
}
}
function clickInGutter(e, t) {
return gutterEvent(e, t, "gutterClick", !0)
}
function onContextMenu(e, t) {
eventInWidget(e.display, t) ||
contextMenuInGutter(e, t) ||
signalDOMEvent(e, t, "contextmenu") ||
e.display.input.onContextMenu(t)
}
function contextMenuInGutter(e, t) {
return (
!!hasHandler(e, "gutterContextMenu") &&
gutterEvent(e, t, "gutterContextMenu", !1)
)
}
function themeChanged(e) {
;(e.display.wrapper.className =
e.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") +
e.options.theme.replace(/(^|\s)\s*/g, " cm-s-")),
clearCaches(e)
}
function guttersChanged(e) {
updateGutters(e), regChange(e), alignHorizontally(e)
}
function dragDropChanged(e, t, n) {
if (!t != !(n && n != Fe)) {
var r = e.display.dragFunctions,
o = t ? V : off
o(e.display.scroller, "dragstart", r.start),
o(e.display.scroller, "dragenter", r.enter),
o(e.display.scroller, "dragover", r.over),
o(e.display.scroller, "dragleave", r.leave),
o(e.display.scroller, "drop", r.drop)
}
}
function wrappingChanged(e) {
e.options.lineWrapping
? (addClass(e.display.wrapper, "CodeMirror-wrap"),
(e.display.sizer.style.minWidth = ""),
(e.display.sizerWidth = null))
: (L(e.display.wrapper, "CodeMirror-wrap"), findMaxLine(e)),
estimateLineHeights(e),
regChange(e),
clearCaches(e),
setTimeout(function() {
return updateScrollbars(e)
}, 100)
}
function CodeMirror$1(e, t) {
var n = this
if (!(this instanceof CodeMirror$1)) return new CodeMirror$1(e, t)
;(this.options = t = t ? copyObj(t) : {}),
copyObj(Be, t, !1),
setGuttersForLineNumbers(t)
var r = t.value
"string" == typeof r &&
(r = new Se(r, t.mode, null, t.lineSeparator, t.direction)),
(this.doc = r)
var o = new CodeMirror$1.inputStyles[t.inputStyle](this),
i = (this.display = new Display(e, r, o))
;(i.wrapper.CodeMirror = this),
updateGutters(this),
themeChanged(this),
t.lineWrapping &&
(this.display.wrapper.className += " CodeMirror-wrap"),
initScrollbars(this),
(this.state = {
keyMaps: [],
overlays: [],
modeGen: 0,
overwrite: !1,
delayingBlurEvent: !1,
focused: !1,
suppressEdits: !1,
pasteIncoming: !1,
cutIncoming: !1,
selectingText: !1,
draggingText: !1,
highlight: new T(),
keySeq: null,
specialChars: null,
}),
t.autofocus && !v && i.input.focus(),
a &&
s < 11 &&
setTimeout(function() {
return n.display.input.reset(!0)
}, 20),
registerEventHandlers(this),
ensureGlobalHandlers(),
startOperation(this),
(this.curOp.forceUpdate = !0),
attachDoc(this, r),
(t.autofocus && !v) || this.hasFocus()
? setTimeout(bind(onFocus, this), 20)
: onBlur(this)
for (var c in ze) ze.hasOwnProperty(c) && ze[c](n, t[c], Fe)
maybeUpdateLineNumberWidth(this), t.finishInit && t.finishInit(this)
for (var u = 0; u < Re.length; ++u) Re[u](n)
endOperation(this),
l &&
t.lineWrapping &&
"optimizelegibility" == getComputedStyle(i.lineDiv).textRendering &&
(i.lineDiv.style.textRendering = "auto")
}
function registerEventHandlers(e) {
function finishTouch() {
t.activeTouch &&
((n = setTimeout(function() {
return (t.activeTouch = null)
}, 1e3)),
((r = t.activeTouch).end = +new Date()))
}
function isMouseLikeTouchEvent(e) {
if (1 != e.touches.length) return !1
var t = e.touches[0]
return t.radiusX <= 1 && t.radiusY <= 1
}
function farAway(e, t) {
if (null == t.left) return !0
var n = t.left - e.left,
r = t.top - e.top
return n * n + r * r > 400
}
var t = e.display
V(t.scroller, "mousedown", operation(e, onMouseDown)),
a && s < 11
? V(
t.scroller,
"dblclick",
operation(e, function(t) {
if (!signalDOMEvent(e, t)) {
var n = posFromMouse(e, t)
if (
n &&
!clickInGutter(e, t) &&
!eventInWidget(e.display, t)
) {
e_preventDefault(t)
var r = e.findWordAt(n)
extendSelection(e.doc, r.anchor, r.head)
}
}
})
)
: V(t.scroller, "dblclick", function(t) {
return signalDOMEvent(e, t) || e_preventDefault(t)
}),
k ||
V(t.scroller, "contextmenu", function(t) {
return onContextMenu(e, t)
})
var n,
r = { end: 0 }
V(t.scroller, "touchstart", function(o) {
if (
!signalDOMEvent(e, o) &&
!isMouseLikeTouchEvent(o) &&
!clickInGutter(e, o)
) {
t.input.ensurePolled(), clearTimeout(n)
var i = +new Date()
;(t.activeTouch = {
start: i,
moved: !1,
prev: i - r.end <= 300 ? r : null,
}),
1 == o.touches.length &&
((t.activeTouch.left = o.touches[0].pageX),
(t.activeTouch.top = o.touches[0].pageY))
}
}),
V(t.scroller, "touchmove", function() {
t.activeTouch && (t.activeTouch.moved = !0)
}),
V(t.scroller, "touchend", function(n) {
var r = t.activeTouch
if (
r &&
!eventInWidget(t, n) &&
null != r.left &&
!r.moved &&
new Date() - r.start < 300
) {
var o,
i = e.coordsChar(t.activeTouch, "page")
;(o =
!r.prev || farAway(r, r.prev)
? new ve(i, i)
: !r.prev.prev || farAway(r, r.prev.prev)
? e.findWordAt(i)
: new ve(
Pos(i.line, 0),
clipPos(e.doc, Pos(i.line + 1, 0))
)),
e.setSelection(o.anchor, o.head),
e.focus(),
e_preventDefault(n)
}
finishTouch()
}),
V(t.scroller, "touchcancel", finishTouch),
V(t.scroller, "scroll", function() {
t.scroller.clientHeight &&
(updateScrollTop(e, t.scroller.scrollTop),
setScrollLeft(e, t.scroller.scrollLeft, !0),
signal(e, "scroll", e))
}),
V(t.scroller, "mousewheel", function(t) {
return onScrollWheel(e, t)
}),
V(t.scroller, "DOMMouseScroll", function(t) {
return onScrollWheel(e, t)
}),
V(t.wrapper, "scroll", function() {
return (t.wrapper.scrollTop = t.wrapper.scrollLeft = 0)
}),
(t.dragFunctions = {
enter: function(t) {
signalDOMEvent(e, t) || e_stop(t)
},
over: function(t) {
signalDOMEvent(e, t) || (onDragOver(e, t), e_stop(t))
},
start: function(t) {
return onDragStart(e, t)
},
drop: operation(e, onDrop),
leave: function(t) {
signalDOMEvent(e, t) || clearDragCursor(e)
},
})
var o = t.input.getField()
V(o, "keyup", function(t) {
return onKeyUp.call(e, t)
}),
V(o, "keydown", operation(e, onKeyDown)),
V(o, "keypress", operation(e, onKeyPress)),
V(o, "focus", function(t) {
return onFocus(e, t)
}),
V(o, "blur", function(t) {
return onBlur(e, t)
})
}
function indentLine(e, t, n, r) {
var o,
i = e.doc
null == n && (n = "add"),
"smart" == n &&
(i.mode.indent ? (o = getContextBefore(e, t).state) : (n = "prev"))
var a = e.options.tabSize,
s = getLine(i, t),
l = countColumn(s.text, null, a)
s.stateAfter && (s.stateAfter = null)
var c,
u = s.text.match(/^\s*/)[0]
if (r || /\S/.test(s.text)) {
if (
"smart" == n &&
((c = i.mode.indent(o, s.text.slice(u.length), s.text)) == N ||
c > 150)
) {
if (!r) return
n = "prev"
}
} else (c = 0), (n = "not")
"prev" == n
? (c = t > i.first ? countColumn(getLine(i, t - 1).text, null, a) : 0)
: "add" == n
? (c = l + e.options.indentUnit)
: "subtract" == n
? (c = l - e.options.indentUnit)
: "number" == typeof n && (c = l + n),
(c = Math.max(0, c))
var d = "",
p = 0
if (e.options.indentWithTabs)
for (var h = Math.floor(c / a); h; --h) (p += a), (d += "\t")
if ((p < c && (d += spaceStr(c - p)), d != u))
return (
replaceRange(i, d, Pos(t, 0), Pos(t, u.length), "+input"),
(s.stateAfter = null),
!0
)
for (var f = 0; f < i.sel.ranges.length; f++) {
var g = i.sel.ranges[f]
if (g.head.line == t && g.head.ch < u.length) {
var m = Pos(t, u.length)
replaceOneSelection(i, f, new ve(m, m))
break
}
}
}
function setLastCopied(e) {
je = e
}
function applyTextInput(e, t, n, r, o) {
var i = e.doc
;(e.display.shift = !1), r || (r = i.sel)
var a = e.state.pasteIncoming || "paste" == o,
s = U(t),
l = null
if (a && r.ranges.length > 1)
if (je && je.text.join("\n") == t) {
if (r.ranges.length % je.text.length == 0) {
l = []
for (var c = 0; c < je.text.length; c++)
l.push(i.splitLines(je.text[c]))
}
} else
s.length == r.ranges.length &&
e.options.pasteLinesPerSelection &&
(l = map(s, function(e) {
return [e]
}))
for (var u, d = r.ranges.length - 1; d >= 0; d--) {
var p = r.ranges[d],
h = p.from(),
f = p.to()
p.empty() &&
(n && n > 0
? (h = Pos(h.line, h.ch - n))
: e.state.overwrite && !a
? (f = Pos(
f.line,
Math.min(
getLine(i, f.line).text.length,
f.ch + lst(s).length
)
))
: je &&
je.lineWise &&
je.text.join("\n") == t &&
(h = f = Pos(h.line, 0))),
(u = e.curOp.updateInput)
var g = {
from: h,
to: f,
text: l ? l[d % l.length] : s,
origin: o || (a ? "paste" : e.state.cutIncoming ? "cut" : "+input"),
}
makeChange(e.doc, g), signalLater(e, "inputRead", e, g)
}
t && !a && triggerElectric(e, t),
ensureCursorVisible(e),
(e.curOp.updateInput = u),
(e.curOp.typing = !0),
(e.state.pasteIncoming = e.state.cutIncoming = !1)
}
function handlePaste(e, t) {
var n = e.clipboardData && e.clipboardData.getData("Text")
if (n)
return (
e.preventDefault(),
t.isReadOnly() ||
t.options.disableInput ||
runInOp(t, function() {
return applyTextInput(t, n, 0, null, "paste")
}),
!0
)
}
function triggerElectric(e, t) {
if (e.options.electricChars && e.options.smartIndent)
for (var n = e.doc.sel, r = n.ranges.length - 1; r >= 0; r--) {
var o = n.ranges[r]
if (
!(
o.head.ch > 100 ||
(r && n.ranges[r - 1].head.line == o.head.line)
)
) {
var i = e.getModeAt(o.head),
a = !1
if (i.electricChars) {
for (var s = 0; s < i.electricChars.length; s++)
if (t.indexOf(i.electricChars.charAt(s)) > -1) {
a = indentLine(e, o.head.line, "smart")
break
}
} else
i.electricInput &&
i.electricInput.test(
getLine(e.doc, o.head.line).text.slice(0, o.head.ch)
) &&
(a = indentLine(e, o.head.line, "smart"))
a && signalLater(e, "electricInput", e, o.head.line)
}
}
}
function copyableRanges(e) {
for (var t = [], n = [], r = 0; r < e.doc.sel.ranges.length; r++) {
var o = e.doc.sel.ranges[r].head.line,
i = { anchor: Pos(o, 0), head: Pos(o + 1, 0) }
n.push(i), t.push(e.getRange(i.anchor, i.head))
}
return { text: t, ranges: n }
}
function disableBrowserMagic(e, t) {
e.setAttribute("autocorrect", "off"),
e.setAttribute("autocapitalize", "off"),
e.setAttribute("spellcheck", !!t)
}
function hiddenTextarea() {
var e = elt(
"textarea",
null,
null,
"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"
),
t = elt(
"div",
[e],
null,
"overflow: hidden; position: relative; width: 3px; height: 0px;"
)
return (
l ? (e.style.width = "1000px") : e.setAttribute("wrap", "off"),
g && (e.style.border = "1px solid black"),
disableBrowserMagic(e),
t
)
}
function findPosH(e, t, n, r, o) {
function findNextLine() {
var r = t.line + n
return (
!(r < e.first || r >= e.first + e.size) &&
((t = new Pos(r, t.ch, t.sticky)), (s = getLine(e, r)))
)
}
function moveOnce(r) {
var i
if (
null ==
(i = o ? moveVisually(e.cm, s, t, n) : moveLogically(s, t, n))
) {
if (r || !findNextLine()) return !1
t = endOfLine(o, e.cm, s, t.line, n)
} else t = i
return !0
}
var i = t,
a = n,
s = getLine(e, t.line)
if ("char" == r) moveOnce()
else if ("column" == r) moveOnce(!0)
else if ("word" == r || "group" == r)
for (
var l = null,
c = "group" == r,
u = e.cm && e.cm.getHelper(t, "wordChars"),
d = !0;
!(n < 0) || moveOnce(!d);
d = !1
) {
var p = s.text.charAt(t.ch) || "\n",
h = isWordChar(p, u)
? "w"
: c && "\n" == p ? "n" : !c || /\s/.test(p) ? null : "p"
if ((!c || d || h || (h = "s"), l && l != h)) {
n < 0 && ((n = 1), moveOnce(), (t.sticky = "after"))
break
}
if ((h && (l = h), n > 0 && !moveOnce(!d))) break
}
var f = skipAtomic(e, t, i, a, !0)
return equalCursorPos(i, f) && (f.hitSide = !0), f
}
function findPosV(e, t, n, r) {
var o,
i = e.doc,
a = t.left
if ("page" == r) {
var s = Math.min(
e.display.wrapper.clientHeight,
window.innerHeight || document.documentElement.clientHeight
),
l = Math.max(s - 0.5 * textHeight(e.display), 3)
o = (n > 0 ? t.bottom : t.top) + n * l
} else "line" == r && (o = n > 0 ? t.bottom + 3 : t.top - 3)
for (var c; (c = coordsChar(e, a, o)).outside; ) {
if (n < 0 ? o <= 0 : o >= i.height) {
c.hitSide = !0
break
}
o += 5 * n
}
return c
}
function posToDOM(e, t) {
var n = findViewForLine(e, t.line)
if (!n || n.hidden) return null
var r = getLine(e.doc, t.line),
o = mapFromLineView(n, r, t.line),
i = getOrder(r, e.doc.direction),
a = "left"
i && (a = getBidiPartAt(i, t.ch) % 2 ? "right" : "left")
var s = nodeAndOffsetInLineMap(o.map, t.ch, a)
return (s.offset = "right" == s.collapse ? s.end : s.start), s
}
function isInGutter(e) {
for (var t = e; t; t = t.parentNode)
if (/CodeMirror-gutter-wrapper/.test(t.className)) return !0
return !1
}
function badPos(e, t) {
return t && (e.bad = !0), e
}
function domTextBetween(e, t, n, r, o) {
function recognizeMarker(e) {
return function(t) {
return t.id == e
}
}
function close() {
a && ((i += s), (a = !1))
}
function addText(e) {
e && (close(), (i += e))
}
function walk(t) {
if (1 == t.nodeType) {
var n = t.getAttribute("cm-text")
if (null != n)
return void addText(n || t.textContent.replace(/\u200b/g, ""))
var i,
l = t.getAttribute("cm-marker")
if (l) {
var c = e.findMarks(Pos(r, 0), Pos(o + 1, 0), recognizeMarker(+l))
return void (
c.length &&
(i = c[0].find(0)) &&
addText(getBetween(e.doc, i.from, i.to).join(s))
)
}
if ("false" == t.getAttribute("contenteditable")) return
var u = /^(pre|div|p)$/i.test(t.nodeName)
u && close()
for (var d = 0; d < t.childNodes.length; d++) walk(t.childNodes[d])
u && (a = !0)
} else 3 == t.nodeType && addText(t.nodeValue)
}
for (var i = "", a = !1, s = e.doc.lineSeparator(); walk(t), t != n; )
t = t.nextSibling
return i
}
function domToPos(e, t, n) {
var r
if (t == e.display.lineDiv) {
if (!(r = e.display.lineDiv.childNodes[n]))
return badPos(e.clipPos(Pos(e.display.viewTo - 1)), !0)
;(t = null), (n = 0)
} else
for (r = t; ; r = r.parentNode) {
if (!r || r == e.display.lineDiv) return null
if (r.parentNode && r.parentNode == e.display.lineDiv) break
}
for (var o = 0; o < e.display.view.length; o++) {
var i = e.display.view[o]
if (i.node == r) return locateNodeInLineView(i, t, n)
}
}
function locateNodeInLineView(e, t, n) {
function find(t, n, r) {
for (var o = -1; o < (c ? c.length : 0); o++)
for (var i = o < 0 ? l.map : c[o], a = 0; a < i.length; a += 3) {
var s = i[a + 2]
if (s == t || s == n) {
var u = lineNo(o < 0 ? e.line : e.rest[o]),
d = i[a] + r
return (r < 0 || s != t) && (d = i[a + (r ? 1 : 0)]), Pos(u, d)
}
}
}
var r = e.text.firstChild,
o = !1
if (!t || !contains(r, t)) return badPos(Pos(lineNo(e.line), 0), !0)
if (t == r && ((o = !0), (t = r.childNodes[n]), (n = 0), !t)) {
var i = e.rest ? lst(e.rest) : e.line
return badPos(Pos(lineNo(i), i.text.length), o)
}
var a = 3 == t.nodeType ? t : null,
s = t
for (
a ||
1 != t.childNodes.length ||
3 != t.firstChild.nodeType ||
((a = t.firstChild), n && (n = a.nodeValue.length));
s.parentNode != r;
)
s = s.parentNode
var l = e.measure,
c = l.maps,
u = find(a, s, n)
if (u) return badPos(u, o)
for (
var d = s.nextSibling, p = a ? a.nodeValue.length - n : 0;
d;
d = d.nextSibling
) {
if ((u = find(d, d.firstChild, 0)))
return badPos(Pos(u.line, u.ch - p), o)
p += d.textContent.length
}
for (var h = s.previousSibling, f = n; h; h = h.previousSibling) {
if ((u = find(h, h.firstChild, -1)))
return badPos(Pos(u.line, u.ch + f), o)
f += h.textContent.length
}
}
var e = navigator.userAgent,
t = navigator.platform,
n = /gecko\/\d/i.test(e),
r = /MSIE \d/.test(e),
o = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),
i = /Edge\/(\d+)/.exec(e),
a = r || o || i,
s = a && (r ? document.documentMode || 6 : +(i || o)[1]),
l = !i && /WebKit\//.test(e),
c = l && /Qt\/\d+\.\d+/.test(e),
u = !i && /Chrome\//.test(e),
d = /Opera\//.test(e),
p = /Apple Computer/.test(navigator.vendor),
h = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),
f = /PhantomJS/.test(e),
g = !i && /AppleWebKit/.test(e) && /Mobile\/\w+/.test(e),
m = /Android/.test(e),
v =
g || m || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),
y = g || /Mac/.test(t),
b = /\bCrOS\b/.test(e),
x = /win/i.test(t),
C = d && e.match(/Version\/(\d*\.\d*)/)
C && (C = Number(C[1])), C && C >= 15 && ((d = !1), (l = !0))
var w,
S = y && (c || (d && (null == C || C < 12.11))),
k = n || (a && s >= 9),
L = function(e, t) {
var n = e.className,
r = classTest(t).exec(n)
if (r) {
var o = n.slice(r.index + r[0].length)
e.className = n.slice(0, r.index) + (o ? r[1] + o : "")
}
}
w = document.createRange
? function(e, t, n, r) {
var o = document.createRange()
return o.setEnd(r || e, n), o.setStart(e, t), o
}
: function(e, t, n) {
var r = document.body.createTextRange()
try {
r.moveToElementText(e.parentNode)
} catch (e) {
return r
}
return (
r.collapse(!0),
r.moveEnd("character", n),
r.moveStart("character", t),
r
)
}
var M = function(e) {
e.select()
}
g
? (M = function(e) {
;(e.selectionStart = 0), (e.selectionEnd = e.value.length)
})
: a &&
(M = function(e) {
try {
e.select()
} catch (e) {}
})
var T = function() {
this.id = null
}
T.prototype.set = function(e, t) {
clearTimeout(this.id), (this.id = setTimeout(t, e))
}
var O,
P,
A = 30,
N = {
toString: function() {
return "CodeMirror.Pass"
},
},
D = { scroll: !1 },
H = { origin: "*mouse" },
W = { origin: "+move" },
E = [""],
I = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,
F = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/,
B = !1,
z = !1,
R = null,
j = (function() {
function charType(n) {
return n <= 247
? e.charAt(n)
: 1424 <= n && n <= 1524
? "R"
: 1536 <= n && n <= 1785
? t.charAt(n - 1536)
: 1774 <= n && n <= 2220
? "r"
: 8192 <= n && n <= 8203 ? "w" : 8204 == n ? "b" : "L"
}
function BidiSpan(e, t, n) {
;(this.level = e), (this.from = t), (this.to = n)
}
var e =
"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",
t =
"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",
n = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,
r = /[stwN]/,
o = /[LRr]/,
i = /[Lb1n]/,
a = /[1n]/
return function(e, t) {
var s = "ltr" == t ? "L" : "R"
if (0 == e.length || ("ltr" == t && !n.test(e))) return !1
for (var l = e.length, c = [], u = 0; u < l; ++u)
c.push(charType(e.charCodeAt(u)))
for (var d = 0, p = s; d < l; ++d) {
var h = c[d]
"m" == h ? (c[d] = p) : (p = h)
}
for (var f = 0, g = s; f < l; ++f) {
var m = c[f]
"1" == m && "r" == g
? (c[f] = "n")
: o.test(m) && ((g = m), "r" == m && (c[f] = "R"))
}
for (var v = 1, y = c[0]; v < l - 1; ++v) {
var b = c[v]
"+" == b && "1" == y && "1" == c[v + 1]
? (c[v] = "1")
: "," != b ||
y != c[v + 1] ||
("1" != y && "n" != y) ||
(c[v] = y),
(y = b)
}
for (var x = 0; x < l; ++x) {
var C = c[x]
if ("," == C) c[x] = "N"
else if ("%" == C) {
var w = void 0
for (w = x + 1; w < l && "%" == c[w]; ++w);
for (
var S =
(x && "!" == c[x - 1]) || (w < l && "1" == c[w])
? "1"
: "N",
k = x;
k < w;
++k
)
c[k] = S
x = w - 1
}
}
for (var L = 0, M = s; L < l; ++L) {
var T = c[L]
"L" == M && "1" == T ? (c[L] = "L") : o.test(T) && (M = T)
}
for (var O = 0; O < l; ++O)
if (r.test(c[O])) {
var P = void 0
for (P = O + 1; P < l && r.test(c[P]); ++P);
for (
var A = "L" == (O ? c[O - 1] : s),
N = A == ("L" == (P < l ? c[P] : s)) ? (A ? "L" : "R") : s,
D = O;
D < P;
++D
)
c[D] = N
O = P - 1
}
for (var H, W = [], E = 0; E < l; )
if (i.test(c[E])) {
var I = E
for (++E; E < l && i.test(c[E]); ++E);
W.push(new BidiSpan(0, I, E))
} else {
var F = E,
B = W.length
for (++E; E < l && "L" != c[E]; ++E);
for (var z = F; z < E; )
if (a.test(c[z])) {
F < z && W.splice(B, 0, new BidiSpan(1, F, z))
var R = z
for (++z; z < E && a.test(c[z]); ++z);
W.splice(B, 0, new BidiSpan(2, R, z)), (F = z)
} else ++z
F < E && W.splice(B, 0, new BidiSpan(1, F, E))
}
return (
"ltr" == t &&
(1 == W[0].level &&
(H = e.match(/^\s+/)) &&
((W[0].from = H[0].length),
W.unshift(new BidiSpan(0, 0, H[0].length))),
1 == lst(W).level &&
(H = e.match(/\s+$/)) &&
((lst(W).to -= H[0].length),
W.push(new BidiSpan(0, l - H[0].length, l)))),
"rtl" == t ? W.reverse() : W
)
}
})(),
_ = [],
V = function(e, t, n) {
if (e.addEventListener) e.addEventListener(t, n, !1)
else if (e.attachEvent) e.attachEvent("on" + t, n)
else {
var r = e._handlers || (e._handlers = {})
r[t] = (r[t] || _).concat(n)
}
},
G = (function() {
if (a && s < 9) return !1
var e = elt("div")
return "draggable" in e || "dragDrop" in e
})(),
U =
3 != "\n\nb".split(/\n/).length
? function(e) {
for (var t = 0, n = [], r = e.length; t <= r; ) {
var o = e.indexOf("\n", t)
;-1 == o && (o = e.length)
var i = e.slice(t, "\r" == e.charAt(o - 1) ? o - 1 : o),
a = i.indexOf("\r")
;-1 != a
? (n.push(i.slice(0, a)), (t += a + 1))
: (n.push(i), (t = o + 1))
}
return n
}
: function(e) {
return e.split(/\r\n?|\n/)
},
K = window.getSelection
? function(e) {
try {
return e.selectionStart != e.selectionEnd
} catch (e) {
return !1
}
}
: function(e) {
var t
try {
t = e.ownerDocument.selection.createRange()
} catch (e) {}
return (
!(!t || t.parentElement() != e) &&
0 != t.compareEndPoints("StartToEnd", t)
)
},
$ = (function() {
var e = elt("div")
return (
"oncopy" in e ||
(e.setAttribute("oncopy", "return;"), "function" == typeof e.oncopy)
)
})(),
q = null,
X = {},
Y = {},
Z = {},
J = function(e, t, n) {
;(this.pos = this.start = 0),
(this.string = e),
(this.tabSize = t || 8),
(this.lastColumnPos = this.lastColumnValue = 0),
(this.lineStart = 0),
(this.lineOracle = n)
}
;(J.prototype.eol = function() {
return this.pos >= this.string.length
}),
(J.prototype.sol = function() {
return this.pos == this.lineStart
}),
(J.prototype.peek = function() {
return this.string.charAt(this.pos) || void 0
}),
(J.prototype.next = function() {
if (this.pos < this.string.length)
return this.string.charAt(this.pos++)
}),
(J.prototype.eat = function(e) {
var t = this.string.charAt(this.pos)
if ("string" == typeof e ? t == e : t && (e.test ? e.test(t) : e(t)))
return ++this.pos, t
}),
(J.prototype.eatWhile = function(e) {
for (var t = this.pos; this.eat(e); );
return this.pos > t
}),
(J.prototype.eatSpace = function() {
for (
var e = this, t = this.pos;
/[\s\u00a0]/.test(this.string.charAt(this.pos));
)
++e.pos
return this.pos > t
}),
(J.prototype.skipToEnd = function() {
this.pos = this.string.length
}),
(J.prototype.skipTo = function(e) {
var t = this.string.indexOf(e, this.pos)
if (t > -1) return (this.pos = t), !0
}),
(J.prototype.backUp = function(e) {
this.pos -= e
}),
(J.prototype.column = function() {
return (
this.lastColumnPos < this.start &&
((this.lastColumnValue = countColumn(
this.string,
this.start,
this.tabSize,
this.lastColumnPos,
this.lastColumnValue
)),
(this.lastColumnPos = this.start)),
this.lastColumnValue -
(this.lineStart
? countColumn(this.string, this.lineStart, this.tabSize)
: 0)
)
}),
(J.prototype.indentation = function() {
return (
countColumn(this.string, null, this.tabSize) -
(this.lineStart
? countColumn(this.string, this.lineStart, this.tabSize)
: 0)
)
}),
(J.prototype.match = function(e, t, n) {
if ("string" != typeof e) {
var r = this.string.slice(this.pos).match(e)
return r && r.index > 0
? null
: (r && !1 !== t && (this.pos += r[0].length), r)
}
var o = function(e) {
return n ? e.toLowerCase() : e
}
if (o(this.string.substr(this.pos, e.length)) == o(e))
return !1 !== t && (this.pos += e.length), !0
}),
(J.prototype.current = function() {
return this.string.slice(this.start, this.pos)
}),
(J.prototype.hideFirstChars = function(e, t) {
this.lineStart += e
try {
return t()
} finally {
this.lineStart -= e
}
}),
(J.prototype.lookAhead = function(e) {
var t = this.lineOracle
return t && t.lookAhead(e)
}),
(J.prototype.baseToken = function() {
var e = this.lineOracle
return e && e.baseToken(this.pos)
})
var Q = function(e, t) {
;(this.state = e), (this.lookAhead = t)
},
ee = function(e, t, n, r) {
;(this.state = t),
(this.doc = e),
(this.line = n),
(this.maxLookAhead = r || 0),
(this.baseTokens = null),
(this.baseTokenPos = 1)
}
;(ee.prototype.lookAhead = function(e) {
var t = this.doc.getLine(this.line + e)
return null != t && e > this.maxLookAhead && (this.maxLookAhead = e), t
}),
(ee.prototype.baseToken = function(e) {
var t = this
if (!this.baseTokens) return null
for (; this.baseTokens[this.baseTokenPos] <= e; ) t.baseTokenPos += 2
var n = this.baseTokens[this.baseTokenPos + 1]
return {
type: n && n.replace(/( |^)overlay .*/, ""),
size: this.baseTokens[this.baseTokenPos] - e,
}
}),
(ee.prototype.nextLine = function() {
this.line++, this.maxLookAhead > 0 && this.maxLookAhead--
}),
(ee.fromSaved = function(e, t, n) {
return t instanceof Q
? new ee(e, copyState(e.mode, t.state), n, t.lookAhead)
: new ee(e, copyState(e.mode, t), n)
}),
(ee.prototype.save = function(e) {
var t = !1 !== e ? copyState(this.doc.mode, this.state) : this.state
return this.maxLookAhead > 0 ? new Q(t, this.maxLookAhead) : t
})
var te = function(e, t, n) {
;(this.start = e.start),
(this.end = e.pos),
(this.string = e.current()),
(this.type = t || null),
(this.state = n)
},
ne = function(e, t, n) {
;(this.text = e),
attachMarkedSpans(this, t),
(this.height = n ? n(this) : 1)
}
;(ne.prototype.lineNo = function() {
return lineNo(this)
}),
eventMixin(ne)
var re,
oe = {},
ie = {},
ae = null,
se = null,
le = { left: 0, right: 0, top: 0, bottom: 0 },
ce = function(e, t, n) {
this.cm = n
var r = (this.vert = elt(
"div",
[elt("div", null, null, "min-width: 1px")],
"CodeMirror-vscrollbar"
)),
o = (this.horiz = elt(
"div",
[elt("div", null, null, "height: 100%; min-height: 1px")],
"CodeMirror-hscrollbar"
))
e(r),
e(o),
V(r, "scroll", function() {
r.clientHeight && t(r.scrollTop, "vertical")
}),
V(o, "scroll", function() {
o.clientWidth && t(o.scrollLeft, "horizontal")
}),
(this.checkedZeroWidth = !1),
a &&
s < 8 &&
(this.horiz.style.minHeight = this.vert.style.minWidth = "18px")
}
;(ce.prototype.update = function(e) {
var t = e.scrollWidth > e.clientWidth + 1,
n = e.scrollHeight > e.clientHeight + 1,
r = e.nativeBarWidth
if (n) {
;(this.vert.style.display = "block"),
(this.vert.style.bottom = t ? r + "px" : "0")
var o = e.viewHeight - (t ? r : 0)
this.vert.firstChild.style.height =
Math.max(0, e.scrollHeight - e.clientHeight + o) + "px"
} else
(this.vert.style.display = ""),
(this.vert.firstChild.style.height = "0")
if (t) {
;(this.horiz.style.display = "block"),
(this.horiz.style.right = n ? r + "px" : "0"),
(this.horiz.style.left = e.barLeft + "px")
var i = e.viewWidth - e.barLeft - (n ? r : 0)
this.horiz.firstChild.style.width =
Math.max(0, e.scrollWidth - e.clientWidth + i) + "px"
} else
(this.horiz.style.display = ""),
(this.horiz.firstChild.style.width = "0")
return (
!this.checkedZeroWidth &&
e.clientHeight > 0 &&
(0 == r && this.zeroWidthHack(), (this.checkedZeroWidth = !0)),
{ right: n ? r : 0, bottom: t ? r : 0 }
)
}),
(ce.prototype.setScrollLeft = function(e) {
this.horiz.scrollLeft != e && (this.horiz.scrollLeft = e),
this.disableHoriz &&
this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz")
}),
(ce.prototype.setScrollTop = function(e) {
this.vert.scrollTop != e && (this.vert.scrollTop = e),
this.disableVert &&
this.enableZeroWidthBar(this.vert, this.disableVert, "vert")
}),
(ce.prototype.zeroWidthHack = function() {
var e = y && !h ? "12px" : "18px"
;(this.horiz.style.height = this.vert.style.width = e),
(this.horiz.style.pointerEvents = this.vert.style.pointerEvents =
"none"),
(this.disableHoriz = new T()),
(this.disableVert = new T())
}),
(ce.prototype.enableZeroWidthBar = function(e, t, n) {
function maybeDisable() {
var r = e.getBoundingClientRect()
;("vert" == n
? document.elementFromPoint(r.right - 1, (r.top + r.bottom) / 2)
: document.elementFromPoint(
(r.right + r.left) / 2,
r.bottom - 1
)) != e
? (e.style.pointerEvents = "none")
: t.set(1e3, maybeDisable)
}
;(e.style.pointerEvents = "auto"), t.set(1e3, maybeDisable)
}),
(ce.prototype.clear = function() {
var e = this.horiz.parentNode
e.removeChild(this.horiz), e.removeChild(this.vert)
})
var ue = function() {}
;(ue.prototype.update = function() {
return { bottom: 0, right: 0 }
}),
(ue.prototype.setScrollLeft = function() {}),
(ue.prototype.setScrollTop = function() {}),
(ue.prototype.clear = function() {})
var de = { native: ce, null: ue },
pe = 0,
he = function(e, t, n) {
var r = e.display
;(this.viewport = t),
(this.visible = visibleLines(r, e.doc, t)),
(this.editorIsHidden = !r.wrapper.offsetWidth),
(this.wrapperHeight = r.wrapper.clientHeight),
(this.wrapperWidth = r.wrapper.clientWidth),
(this.oldDisplayWidth = displayWidth(e)),
(this.force = n),
(this.dims = getDimensions(e)),
(this.events = [])
}
;(he.prototype.signal = function(e, t) {
hasHandler(e, t) && this.events.push(arguments)
}),
(he.prototype.finish = function() {
for (var e = this, t = 0; t < this.events.length; t++)
signal.apply(null, e.events[t])
})
var fe = 0,
ge = null
a ? (ge = -0.53) : n ? (ge = 15) : u ? (ge = -0.7) : p && (ge = -1 / 3)
var me = function(e, t) {
;(this.ranges = e), (this.primIndex = t)
}
;(me.prototype.primary = function() {
return this.ranges[this.primIndex]
}),
(me.prototype.equals = function(e) {
var t = this
if (e == this) return !0
if (
e.primIndex != this.primIndex ||
e.ranges.length != this.ranges.length
)
return !1
for (var n = 0; n < this.ranges.length; n++) {
var r = t.ranges[n],
o = e.ranges[n]
if (
!equalCursorPos(r.anchor, o.anchor) ||
!equalCursorPos(r.head, o.head)
)
return !1
}
return !0
}),
(me.prototype.deepCopy = function() {
for (var e = this, t = [], n = 0; n < this.ranges.length; n++)
t[n] = new ve(
copyPos(e.ranges[n].anchor),
copyPos(e.ranges[n].head)
)
return new me(t, this.primIndex)
}),
(me.prototype.somethingSelected = function() {
for (var e = this, t = 0; t < this.ranges.length; t++)
if (!e.ranges[t].empty()) return !0
return !1
}),
(me.prototype.contains = function(e, t) {
var n = this
t || (t = e)
for (var r = 0; r < this.ranges.length; r++) {
var o = n.ranges[r]
if (cmp(t, o.from()) >= 0 && cmp(e, o.to()) <= 0) return r
}
return -1
})
var ve = function(e, t) {
;(this.anchor = e), (this.head = t)
}
;(ve.prototype.from = function() {
return minPos(this.anchor, this.head)
}),
(ve.prototype.to = function() {
return maxPos(this.anchor, this.head)
}),
(ve.prototype.empty = function() {
return (
this.head.line == this.anchor.line && this.head.ch == this.anchor.ch
)
}),
(LeafChunk.prototype = {
chunkSize: function chunkSize() {
return this.lines.length
},
removeInner: function removeInner(e, t) {
for (var n = this, r = e, o = e + t; r < o; ++r) {
var i = n.lines[r]
;(n.height -= i.height), cleanUpLine(i), signalLater(i, "delete")
}
this.lines.splice(e, t)
},
collapse: function collapse(e) {
e.push.apply(e, this.lines)
},
insertInner: function insertInner(e, t, n) {
var r = this
;(this.height += n),
(this.lines = this.lines
.slice(0, e)
.concat(t)
.concat(this.lines.slice(e)))
for (var o = 0; o < t.length; ++o) t[o].parent = r
},
iterN: function iterN(e, t, n) {
for (var r = this, o = e + t; e < o; ++e)
if (n(r.lines[e])) return !0
},
}),
(BranchChunk.prototype = {
chunkSize: function chunkSize() {
return this.size
},
removeInner: function removeInner(e, t) {
var n = this
this.size -= t
for (var r = 0; r < this.children.length; ++r) {
var o = n.children[r],
i = o.chunkSize()
if (e < i) {
var a = Math.min(t, i - e),
s = o.height
if (
(o.removeInner(e, a),
(n.height -= s - o.height),
i == a && (n.children.splice(r--, 1), (o.parent = null)),
0 == (t -= a))
)
break
e = 0
} else e -= i
}
if (
this.size - t < 25 &&
(this.children.length > 1 ||
!(this.children[0] instanceof LeafChunk))
) {
var l = []
this.collapse(l),
(this.children = [new LeafChunk(l)]),
(this.children[0].parent = this)
}
},
collapse: function collapse(e) {
for (var t = this, n = 0; n < this.children.length; ++n)
t.children[n].collapse(e)
},
insertInner: function insertInner(e, t, n) {
var r = this
;(this.size += t.length), (this.height += n)
for (var o = 0; o < this.children.length; ++o) {
var i = r.children[o],
a = i.chunkSize()
if (e <= a) {
if ((i.insertInner(e, t, n), i.lines && i.lines.length > 50)) {
for (
var s = i.lines.length % 25 + 25, l = s;
l < i.lines.length;
) {
var c = new LeafChunk(i.lines.slice(l, (l += 25)))
;(i.height -= c.height),
r.children.splice(++o, 0, c),
(c.parent = r)
}
;(i.lines = i.lines.slice(0, s)), r.maybeSpill()
}
break
}
e -= a
}
},
maybeSpill: function maybeSpill() {
if (!(this.children.length <= 10)) {
var e = this
do {
var t = new BranchChunk(
e.children.splice(e.children.length - 5, 5)
)
if (e.parent) {
;(e.size -= t.size), (e.height -= t.height)
var n = indexOf(e.parent.children, e)
e.parent.children.splice(n + 1, 0, t)
} else {
var r = new BranchChunk(e.children)
;(r.parent = e), (e.children = [r, t]), (e = r)
}
t.parent = e.parent
} while (e.children.length > 10)
e.parent.maybeSpill()
}
},
iterN: function iterN(e, t, n) {
for (var r = this, o = 0; o < this.children.length; ++o) {
var i = r.children[o],
a = i.chunkSize()
if (e < a) {
var s = Math.min(t, a - e)
if (i.iterN(e, s, n)) return !0
if (0 == (t -= s)) break
e = 0
} else e -= a
}
},
})
var ye = function(e, t, n) {
var r = this
if (n) for (var o in n) n.hasOwnProperty(o) && (r[o] = n[o])
;(this.doc = e), (this.node = t)
}
;(ye.prototype.clear = function() {
var e = this,
t = this.doc.cm,
n = this.line.widgets,
r = this.line,
o = lineNo(r)
if (null != o && n) {
for (var i = 0; i < n.length; ++i) n[i] == e && n.splice(i--, 1)
n.length || (r.widgets = null)
var a = widgetHeight(this)
updateLineHeight(r, Math.max(0, r.height - a)),
t &&
(runInOp(t, function() {
adjustScrollWhenAboveVisible(t, r, -a),
regLineChange(t, o, "widget")
}),
signalLater(t, "lineWidgetCleared", t, this, o))
}
}),
(ye.prototype.changed = function() {
var e = this,
t = this.height,
n = this.doc.cm,
r = this.line
this.height = null
var o = widgetHeight(this) - t
o &&
(updateLineHeight(r, r.height + o),
n &&
runInOp(n, function() {
;(n.curOp.forceUpdate = !0),
adjustScrollWhenAboveVisible(n, r, o),
signalLater(n, "lineWidgetChanged", n, e, lineNo(r))
}))
}),
eventMixin(ye)
var be = 0,
xe = function(e, t) {
;(this.lines = []), (this.type = t), (this.doc = e), (this.id = ++be)
}
;(xe.prototype.clear = function() {
var e = this
if (!this.explicitlyCleared) {
var t = this.doc.cm,
n = t && !t.curOp
if ((n && startOperation(t), hasHandler(this, "clear"))) {
var r = this.find()
r && signalLater(this, "clear", r.from, r.to)
}
for (var o = null, i = null, a = 0; a < this.lines.length; ++a) {
var s = e.lines[a],
l = getMarkedSpanFor(s.markedSpans, e)
t && !e.collapsed
? regLineChange(t, lineNo(s), "text")
: t &&
(null != l.to && (i = lineNo(s)),
null != l.from && (o = lineNo(s))),
(s.markedSpans = removeMarkedSpan(s.markedSpans, l)),
null == l.from &&
e.collapsed &&
!lineIsHidden(e.doc, s) &&
t &&
updateLineHeight(s, textHeight(t.display))
}
if (t && this.collapsed && !t.options.lineWrapping)
for (var c = 0; c < this.lines.length; ++c) {
var u = visualLine(e.lines[c]),
d = lineLength(u)
d > t.display.maxLineLength &&
((t.display.maxLine = u),
(t.display.maxLineLength = d),
(t.display.maxLineChanged = !0))
}
null != o && t && this.collapsed && regChange(t, o, i + 1),
(this.lines.length = 0),
(this.explicitlyCleared = !0),
this.atomic &&
this.doc.cantEdit &&
((this.doc.cantEdit = !1), t && reCheckSelection(t.doc)),
t && signalLater(t, "markerCleared", t, this, o, i),
n && endOperation(t),
this.parent && this.parent.clear()
}
}),
(xe.prototype.find = function(e, t) {
var n = this
null == e && "bookmark" == this.type && (e = 1)
for (var r, o, i = 0; i < this.lines.length; ++i) {
var a = n.lines[i],
s = getMarkedSpanFor(a.markedSpans, n)
if (
null != s.from &&
((r = Pos(t ? a : lineNo(a), s.from)), -1 == e)
)
return r
if (null != s.to && ((o = Pos(t ? a : lineNo(a), s.to)), 1 == e))
return o
}
return r && { from: r, to: o }
}),
(xe.prototype.changed = function() {
var e = this,
t = this.find(-1, !0),
n = this,
r = this.doc.cm
t &&
r &&
runInOp(r, function() {
var o = t.line,
i = lineNo(t.line),
a = findViewForLine(r, i)
if (
(a &&
(clearLineMeasurementCacheFor(a),
(r.curOp.selectionChanged = r.curOp.forceUpdate = !0)),
(r.curOp.updateMaxLine = !0),
!lineIsHidden(n.doc, o) && null != n.height)
) {
var s = n.height
n.height = null
var l = widgetHeight(n) - s
l && updateLineHeight(o, o.height + l)
}
signalLater(r, "markerChanged", r, e)
})
}),
(xe.prototype.attachLine = function(e) {
if (!this.lines.length && this.doc.cm) {
var t = this.doc.cm.curOp
;(t.maybeHiddenMarkers &&
-1 != indexOf(t.maybeHiddenMarkers, this)) ||
(t.maybeUnhiddenMarkers || (t.maybeUnhiddenMarkers = [])).push(
this
)
}
this.lines.push(e)
}),
(xe.prototype.detachLine = function(e) {
if (
(this.lines.splice(indexOf(this.lines, e), 1),
!this.lines.length && this.doc.cm)
) {
var t = this.doc.cm.curOp
;(t.maybeHiddenMarkers || (t.maybeHiddenMarkers = [])).push(this)
}
}),
eventMixin(xe)
var Ce = function(e, t) {
var n = this
;(this.markers = e), (this.primary = t)
for (var r = 0; r < e.length; ++r) e[r].parent = n
}
;(Ce.prototype.clear = function() {
var e = this
if (!this.explicitlyCleared) {
this.explicitlyCleared = !0
for (var t = 0; t < this.markers.length; ++t) e.markers[t].clear()
signalLater(this, "clear")
}
}),
(Ce.prototype.find = function(e, t) {
return this.primary.find(e, t)
}),
eventMixin(Ce)
var we = 0,
Se = function(e, t, n, r, o) {
if (!(this instanceof Se)) return new Se(e, t, n, r, o)
null == n && (n = 0),
BranchChunk.call(this, [new LeafChunk([new ne("", null)])]),
(this.first = n),
(this.scrollTop = this.scrollLeft = 0),
(this.cantEdit = !1),
(this.cleanGeneration = 1),
(this.modeFrontier = this.highlightFrontier = n)
var i = Pos(n, 0)
;(this.sel = simpleSelection(i)),
(this.history = new History(null)),
(this.id = ++we),
(this.modeOption = t),
(this.lineSep = r),
(this.direction = "rtl" == o ? "rtl" : "ltr"),
(this.extend = !1),
"string" == typeof e && (e = this.splitLines(e)),
updateDoc(this, { from: i, to: i, text: e }),
setSelection(this, simpleSelection(i), D)
}
;(Se.prototype = createObj(BranchChunk.prototype, {
constructor: Se,
iter: function(e, t, n) {
n
? this.iterN(e - this.first, t - e, n)
: this.iterN(this.first, this.first + this.size, e)
},
insert: function(e, t) {
for (var n = 0, r = 0; r < t.length; ++r) n += t[r].height
this.insertInner(e - this.first, t, n)
},
remove: function(e, t) {
this.removeInner(e - this.first, t)
},
getValue: function(e) {
var t = getLines(this, this.first, this.first + this.size)
return !1 === e ? t : t.join(e || this.lineSeparator())
},
setValue: docMethodOp(function(e) {
var t = Pos(this.first, 0),
n = this.first + this.size - 1
makeChange(
this,
{
from: t,
to: Pos(n, getLine(this, n).text.length),
text: this.splitLines(e),
origin: "setValue",
full: !0,
},
!0
),
this.cm && scrollToCoords(this.cm, 0, 0),
setSelection(this, simpleSelection(t), D)
}),
replaceRange: function(e, t, n, r) {
replaceRange(
this,
e,
(t = clipPos(this, t)),
(n = n ? clipPos(this, n) : t),
r
)
},
getRange: function(e, t, n) {
var r = getBetween(this, clipPos(this, e), clipPos(this, t))
return !1 === n ? r : r.join(n || this.lineSeparator())
},
getLine: function(e) {
var t = this.getLineHandle(e)
return t && t.text
},
getLineHandle: function(e) {
if (isLine(this, e)) return getLine(this, e)
},
getLineNumber: function(e) {
return lineNo(e)
},
getLineHandleVisualStart: function(e) {
return "number" == typeof e && (e = getLine(this, e)), visualLine(e)
},
lineCount: function() {
return this.size
},
firstLine: function() {
return this.first
},
lastLine: function() {
return this.first + this.size - 1
},
clipPos: function(e) {
return clipPos(this, e)
},
getCursor: function(e) {
var t = this.sel.primary()
return null == e || "head" == e
? t.head
: "anchor" == e
? t.anchor
: "end" == e || "to" == e || !1 === e ? t.to() : t.from()
},
listSelections: function() {
return this.sel.ranges
},
somethingSelected: function() {
return this.sel.somethingSelected()
},
setCursor: docMethodOp(function(e, t, n) {
setSimpleSelection(
this,
clipPos(this, "number" == typeof e ? Pos(e, t || 0) : e),
null,
n
)
}),
setSelection: docMethodOp(function(e, t, n) {
setSimpleSelection(this, clipPos(this, e), clipPos(this, t || e), n)
}),
extendSelection: docMethodOp(function(e, t, n) {
extendSelection(this, clipPos(this, e), t && clipPos(this, t), n)
}),
extendSelections: docMethodOp(function(e, t) {
extendSelections(this, clipPosArray(this, e), t)
}),
extendSelectionsBy: docMethodOp(function(e, t) {
extendSelections(this, clipPosArray(this, map(this.sel.ranges, e)), t)
}),
setSelections: docMethodOp(function(e, t, n) {
var r = this
if (e.length) {
for (var o = [], i = 0; i < e.length; i++)
o[i] = new ve(clipPos(r, e[i].anchor), clipPos(r, e[i].head))
null == t && (t = Math.min(e.length - 1, this.sel.primIndex)),
setSelection(this, normalizeSelection(o, t), n)
}
}),
addSelection: docMethodOp(function(e, t, n) {
var r = this.sel.ranges.slice(0)
r.push(new ve(clipPos(this, e), clipPos(this, t || e))),
setSelection(this, normalizeSelection(r, r.length - 1), n)
}),
getSelection: function(e) {
for (var t, n = this, r = this.sel.ranges, o = 0; o < r.length; o++) {
var i = getBetween(n, r[o].from(), r[o].to())
t = t ? t.concat(i) : i
}
return !1 === e ? t : t.join(e || this.lineSeparator())
},
getSelections: function(e) {
for (
var t = this, n = [], r = this.sel.ranges, o = 0;
o < r.length;
o++
) {
var i = getBetween(t, r[o].from(), r[o].to())
!1 !== e && (i = i.join(e || t.lineSeparator())), (n[o] = i)
}
return n
},
replaceSelection: function(e, t, n) {
for (var r = [], o = 0; o < this.sel.ranges.length; o++) r[o] = e
this.replaceSelections(r, t, n || "+input")
},
replaceSelections: docMethodOp(function(e, t, n) {
for (
var r = this, o = [], i = this.sel, a = 0;
a < i.ranges.length;
a++
) {
var s = i.ranges[a]
o[a] = {
from: s.from(),
to: s.to(),
text: r.splitLines(e[a]),
origin: n,
}
}
for (
var l = t && "end" != t && computeReplacedSel(this, o, t),
c = o.length - 1;
c >= 0;
c--
)
makeChange(r, o[c])
l
? setSelectionReplaceHistory(this, l)
: this.cm && ensureCursorVisible(this.cm)
}),
undo: docMethodOp(function() {
makeChangeFromHistory(this, "undo")
}),
redo: docMethodOp(function() {
makeChangeFromHistory(this, "redo")
}),
undoSelection: docMethodOp(function() {
makeChangeFromHistory(this, "undo", !0)
}),
redoSelection: docMethodOp(function() {
makeChangeFromHistory(this, "redo", !0)
}),
setExtending: function(e) {
this.extend = e
},
getExtending: function() {
return this.extend
},
historySize: function() {
for (
var e = this.history, t = 0, n = 0, r = 0;
r < e.done.length;
r++
)
e.done[r].ranges || ++t
for (var o = 0; o < e.undone.length; o++) e.undone[o].ranges || ++n
return { undo: t, redo: n }
},
clearHistory: function() {
this.history = new History(this.history.maxGeneration)
},
markClean: function() {
this.cleanGeneration = this.changeGeneration(!0)
},
changeGeneration: function(e) {
return (
e &&
(this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null),
this.history.generation
)
},
isClean: function(e) {
return this.history.generation == (e || this.cleanGeneration)
},
getHistory: function() {
return {
done: copyHistoryArray(this.history.done),
undone: copyHistoryArray(this.history.undone),
}
},
setHistory: function(e) {
var t = (this.history = new History(this.history.maxGeneration))
;(t.done = copyHistoryArray(e.done.slice(0), null, !0)),
(t.undone = copyHistoryArray(e.undone.slice(0), null, !0))
},
setGutterMarker: docMethodOp(function(e, t, n) {
return changeLine(this, e, "gutter", function(e) {
var r = e.gutterMarkers || (e.gutterMarkers = {})
return (r[t] = n), !n && isEmpty(r) && (e.gutterMarkers = null), !0
})
}),
clearGutter: docMethodOp(function(e) {
var t = this
this.iter(function(n) {
n.gutterMarkers &&
n.gutterMarkers[e] &&
changeLine(t, n, "gutter", function() {
return (
(n.gutterMarkers[e] = null),
isEmpty(n.gutterMarkers) && (n.gutterMarkers = null),
!0
)
})
})
}),
lineInfo: function(e) {
var t
if ("number" == typeof e) {
if (!isLine(this, e)) return null
if (((t = e), !(e = getLine(this, e)))) return null
} else if (null == (t = lineNo(e))) return null
return {
line: t,
handle: e,
text: e.text,
gutterMarkers: e.gutterMarkers,
textClass: e.textClass,
bgClass: e.bgClass,
wrapClass: e.wrapClass,
widgets: e.widgets,
}
},
addLineClass: docMethodOp(function(e, t, n) {
return changeLine(
this,
e,
"gutter" == t ? "gutter" : "class",
function(e) {
var r =
"text" == t
? "textClass"
: "background" == t
? "bgClass"
: "gutter" == t ? "gutterClass" : "wrapClass"
if (e[r]) {
if (classTest(n).test(e[r])) return !1
e[r] += " " + n
} else e[r] = n
return !0
}
)
}),
removeLineClass: docMethodOp(function(e, t, n) {
return changeLine(
this,
e,
"gutter" == t ? "gutter" : "class",
function(e) {
var r =
"text" == t
? "textClass"
: "background" == t
? "bgClass"
: "gutter" == t ? "gutterClass" : "wrapClass",
o = e[r]
if (!o) return !1
if (null == n) e[r] = null
else {
var i = o.match(classTest(n))
if (!i) return !1
var a = i.index + i[0].length
e[r] =
o.slice(0, i.index) +
(i.index && a != o.length ? " " : "") +
o.slice(a) || null
}
return !0
}
)
}),
addLineWidget: docMethodOp(function(e, t, n) {
return addLineWidget(this, e, t, n)
}),
removeLineWidget: function(e) {
e.clear()
},
markText: function(e, t, n) {
return markText(
this,
clipPos(this, e),
clipPos(this, t),
n,
(n && n.type) || "range"
)
},
setBookmark: function(e, t) {
var n = {
replacedWith: t && (null == t.nodeType ? t.widget : t),
insertLeft: t && t.insertLeft,
clearWhenEmpty: !1,
shared: t && t.shared,
handleMouseEvents: t && t.handleMouseEvents,
}
return (e = clipPos(this, e)), markText(this, e, e, n, "bookmark")
},
findMarksAt: function(e) {
var t = [],
n = getLine(this, (e = clipPos(this, e)).line).markedSpans
if (n)
for (var r = 0; r < n.length; ++r) {
var o = n[r]
;(null == o.from || o.from <= e.ch) &&
(null == o.to || o.to >= e.ch) &&
t.push(o.marker.parent || o.marker)
}
return t
},
findMarks: function(e, t, n) {
;(e = clipPos(this, e)), (t = clipPos(this, t))
var r = [],
o = e.line
return (
this.iter(e.line, t.line + 1, function(i) {
var a = i.markedSpans
if (a)
for (var s = 0; s < a.length; s++) {
var l = a[s]
;(null != l.to && o == e.line && e.ch >= l.to) ||
(null == l.from && o != e.line) ||
(null != l.from && o == t.line && l.from >= t.ch) ||
(n && !n(l.marker)) ||
r.push(l.marker.parent || l.marker)
}
++o
}),
r
)
},
getAllMarks: function() {
var e = []
return (
this.iter(function(t) {
var n = t.markedSpans
if (n)
for (var r = 0; r < n.length; ++r)
null != n[r].from && e.push(n[r].marker)
}),
e
)
},
posFromIndex: function(e) {
var t,
n = this.first,
r = this.lineSeparator().length
return (
this.iter(function(o) {
var i = o.text.length + r
if (i > e) return (t = e), !0
;(e -= i), ++n
}),
clipPos(this, Pos(n, t))
)
},
indexFromPos: function(e) {
var t = (e = clipPos(this, e)).ch
if (e.line < this.first || e.ch < 0) return 0
var n = this.lineSeparator().length
return (
this.iter(this.first, e.line, function(e) {
t += e.text.length + n
}),
t
)
},
copy: function(e) {
var t = new Se(
getLines(this, this.first, this.first + this.size),
this.modeOption,
this.first,
this.lineSep,
this.direction
)
return (
(t.scrollTop = this.scrollTop),
(t.scrollLeft = this.scrollLeft),
(t.sel = this.sel),
(t.extend = !1),
e &&
((t.history.undoDepth = this.history.undoDepth),
t.setHistory(this.getHistory())),
t
)
},
linkedDoc: function(e) {
e || (e = {})
var t = this.first,
n = this.first + this.size
null != e.from && e.from > t && (t = e.from),
null != e.to && e.to < n && (n = e.to)
var r = new Se(
getLines(this, t, n),
e.mode || this.modeOption,
t,
this.lineSep,
this.direction
)
return (
e.sharedHist && (r.history = this.history),
(this.linked || (this.linked = [])).push({
doc: r,
sharedHist: e.sharedHist,
}),
(r.linked = [
{ doc: this, isParent: !0, sharedHist: e.sharedHist },
]),
copySharedMarkers(r, findSharedMarkers(this)),
r
)
},
unlinkDoc: function(e) {
var t = this
if ((e instanceof CodeMirror$1 && (e = e.doc), this.linked))
for (var n = 0; n < this.linked.length; ++n)
if (t.linked[n].doc == e) {
t.linked.splice(n, 1),
e.unlinkDoc(t),
detachSharedMarkers(findSharedMarkers(t))
break
}
if (e.history == this.history) {
var r = [e.id]
linkedDocs(
e,
function(e) {
return r.push(e.id)
},
!0
),
(e.history = new History(null)),
(e.history.done = copyHistoryArray(this.history.done, r)),
(e.history.undone = copyHistoryArray(this.history.undone, r))
}
},
iterLinkedDocs: function(e) {
linkedDocs(this, e)
},
getMode: function() {
return this.mode
},
getEditor: function() {
return this.cm
},
splitLines: function(e) {
return this.lineSep ? e.split(this.lineSep) : U(e)
},
lineSeparator: function() {
return this.lineSep || "\n"
},
setDirection: docMethodOp(function(e) {
"rtl" != e && (e = "ltr"),
e != this.direction &&
((this.direction = e),
this.iter(function(e) {
return (e.order = null)
}),
this.cm && directionChanged(this.cm))
}),
})),
(Se.prototype.eachLine = Se.prototype.iter)
for (
var ke = 0,
Le = !1,
Me = {
3: "Enter",
8: "Backspace",
9: "Tab",
13: "Enter",
16: "Shift",
17: "Ctrl",
18: "Alt",
19: "Pause",
20: "CapsLock",
27: "Esc",
32: "Space",
33: "PageUp",
34: "PageDown",
35: "End",
36: "Home",
37: "Left",
38: "Up",
39: "Right",
40: "Down",
44: "PrintScrn",
45: "Insert",
46: "Delete",
59: ";",
61: "=",
91: "Mod",
92: "Mod",
93: "Mod",
106: "*",
107: "=",
109: "-",
110: ".",
111: "/",
127: "Delete",
173: "-",
186: ";",
187: "=",
188: ",",
189: "-",
190: ".",
191: "/",
192: "`",
219: "[",
220: "\\",
221: "]",
222: "'",
63232: "Up",
63233: "Down",
63234: "Left",
63235: "Right",
63272: "Delete",
63273: "Home",
63275: "End",
63276: "PageUp",
63277: "PageDown",
63302: "Insert",
},
Te = 0;
Te < 10;
Te++
)
Me[Te + 48] = Me[Te + 96] = String(Te)
for (var Oe = 65; Oe <= 90; Oe++) Me[Oe] = String.fromCharCode(Oe)
for (var Pe = 1; Pe <= 12; Pe++) Me[Pe + 111] = Me[Pe + 63235] = "F" + Pe
var Ae = {}
;(Ae.basic = {
Left: "goCharLeft",
Right: "goCharRight",
Up: "goLineUp",
Down: "goLineDown",
End: "goLineEnd",
Home: "goLineStartSmart",
PageUp: "goPageUp",
PageDown: "goPageDown",
Delete: "delCharAfter",
Backspace: "delCharBefore",
"Shift-Backspace": "delCharBefore",
Tab: "defaultTab",
"Shift-Tab": "indentAuto",
Enter: "newlineAndIndent",
Insert: "toggleOverwrite",
Esc: "singleSelection",
}),
(Ae.pcDefault = {
"Ctrl-A": "selectAll",
"Ctrl-D": "deleteLine",
"Ctrl-Z": "undo",
"Shift-Ctrl-Z": "redo",
"Ctrl-Y": "redo",
"Ctrl-Home": "goDocStart",
"Ctrl-End": "goDocEnd",
"Ctrl-Up": "goLineUp",
"Ctrl-Down": "goLineDown",
"Ctrl-Left": "goGroupLeft",
"Ctrl-Right": "goGroupRight",
"Alt-Left": "goLineStart",
"Alt-Right": "goLineEnd",
"Ctrl-Backspace": "delGroupBefore",
"Ctrl-Delete": "delGroupAfter",
"Ctrl-S": "save",
"Ctrl-F": "find",
"Ctrl-G": "findNext",
"Shift-Ctrl-G": "findPrev",
"Shift-Ctrl-F": "replace",
"Shift-Ctrl-R": "replaceAll",
"Ctrl-[": "indentLess",
"Ctrl-]": "indentMore",
"Ctrl-U": "undoSelection",
"Shift-Ctrl-U": "redoSelection",
"Alt-U": "redoSelection",
fallthrough: "basic",
}),
(Ae.emacsy = {
"Ctrl-F": "goCharRight",
"Ctrl-B": "goCharLeft",
"Ctrl-P": "goLineUp",
"Ctrl-N": "goLineDown",
"Alt-F": "goWordRight",
"Alt-B": "goWordLeft",
"Ctrl-A": "goLineStart",
"Ctrl-E": "goLineEnd",
"Ctrl-V": "goPageDown",
"Shift-Ctrl-V": "goPageUp",
"Ctrl-D": "delCharAfter",
"Ctrl-H": "delCharBefore",
"Alt-D": "delWordAfter",
"Alt-Backspace": "delWordBefore",
"Ctrl-K": "killLine",
"Ctrl-T": "transposeChars",
"Ctrl-O": "openLine",
}),
(Ae.macDefault = {
"Cmd-A": "selectAll",
"Cmd-D": "deleteLine",
"Cmd-Z": "undo",
"Shift-Cmd-Z": "redo",
"Cmd-Y": "redo",
"Cmd-Home": "goDocStart",
"Cmd-Up": "goDocStart",
"Cmd-End": "goDocEnd",
"Cmd-Down": "goDocEnd",
"Alt-Left": "goGroupLeft",
"Alt-Right": "goGroupRight",
"Cmd-Left": "goLineLeft",
"Cmd-Right": "goLineRight",
"Alt-Backspace": "delGroupBefore",
"Ctrl-Alt-Backspace": "delGroupAfter",
"Alt-Delete": "delGroupAfter",
"Cmd-S": "save",
"Cmd-F": "find",
"Cmd-G": "findNext",
"Shift-Cmd-G": "findPrev",
"Cmd-Alt-F": "replace",
"Shift-Cmd-Alt-F": "replaceAll",
"Cmd-[": "indentLess",
"Cmd-]": "indentMore",
"Cmd-Backspace": "delWrappedLineLeft",
"Cmd-Delete": "delWrappedLineRight",
"Cmd-U": "undoSelection",
"Shift-Cmd-U": "redoSelection",
"Ctrl-Up": "goDocStart",
"Ctrl-Down": "goDocEnd",
fallthrough: ["basic", "emacsy"],
}),
(Ae.default = y ? Ae.macDefault : Ae.pcDefault)
var Ne = {
selectAll: selectAll,
singleSelection: function(e) {
return e.setSelection(e.getCursor("anchor"), e.getCursor("head"), D)
},
killLine: function(e) {
return deleteNearSelection(e, function(t) {
if (t.empty()) {
var n = getLine(e.doc, t.head.line).text.length
return t.head.ch == n && t.head.line < e.lastLine()
? { from: t.head, to: Pos(t.head.line + 1, 0) }
: { from: t.head, to: Pos(t.head.line, n) }
}
return { from: t.from(), to: t.to() }
})
},
deleteLine: function(e) {
return deleteNearSelection(e, function(t) {
return {
from: Pos(t.from().line, 0),
to: clipPos(e.doc, Pos(t.to().line + 1, 0)),
}
})
},
delLineLeft: function(e) {
return deleteNearSelection(e, function(e) {
return { from: Pos(e.from().line, 0), to: e.from() }
})
},
delWrappedLineLeft: function(e) {
return deleteNearSelection(e, function(t) {
var n = e.charCoords(t.head, "div").top + 5
return {
from: e.coordsChar({ left: 0, top: n }, "div"),
to: t.from(),
}
})
},
delWrappedLineRight: function(e) {
return deleteNearSelection(e, function(t) {
var n = e.charCoords(t.head, "div").top + 5,
r = e.coordsChar(
{ left: e.display.lineDiv.offsetWidth + 100, top: n },
"div"
)
return { from: t.from(), to: r }
})
},
undo: function(e) {
return e.undo()
},
redo: function(e) {
return e.redo()
},
undoSelection: function(e) {
return e.undoSelection()
},
redoSelection: function(e) {
return e.redoSelection()
},
goDocStart: function(e) {
return e.extendSelection(Pos(e.firstLine(), 0))
},
goDocEnd: function(e) {
return e.extendSelection(Pos(e.lastLine()))
},
goLineStart: function(e) {
return e.extendSelectionsBy(
function(t) {
return lineStart(e, t.head.line)
},
{ origin: "+move", bias: 1 }
)
},
goLineStartSmart: function(e) {
return e.extendSelectionsBy(
function(t) {
return lineStartSmart(e, t.head)
},
{ origin: "+move", bias: 1 }
)
},
goLineEnd: function(e) {
return e.extendSelectionsBy(
function(t) {
return lineEnd(e, t.head.line)
},
{ origin: "+move", bias: -1 }
)
},
goLineRight: function(e) {
return e.extendSelectionsBy(function(t) {
var n = e.cursorCoords(t.head, "div").top + 5
return e.coordsChar(
{ left: e.display.lineDiv.offsetWidth + 100, top: n },
"div"
)
}, W)
},
goLineLeft: function(e) {
return e.extendSelectionsBy(function(t) {
var n = e.cursorCoords(t.head, "div").top + 5
return e.coordsChar({ left: 0, top: n }, "div")
}, W)
},
goLineLeftSmart: function(e) {
return e.extendSelectionsBy(function(t) {
var n = e.cursorCoords(t.head, "div").top + 5,
r = e.coordsChar({ left: 0, top: n }, "div")
return r.ch < e.getLine(r.line).search(/\S/)
? lineStartSmart(e, t.head)
: r
}, W)
},
goLineUp: function(e) {
return e.moveV(-1, "line")
},
goLineDown: function(e) {
return e.moveV(1, "line")
},
goPageUp: function(e) {
return e.moveV(-1, "page")
},
goPageDown: function(e) {
return e.moveV(1, "page")
},
goCharLeft: function(e) {
return e.moveH(-1, "char")
},
goCharRight: function(e) {
return e.moveH(1, "char")
},
goColumnLeft: function(e) {
return e.moveH(-1, "column")
},
goColumnRight: function(e) {
return e.moveH(1, "column")
},
goWordLeft: function(e) {
return e.moveH(-1, "word")
},
goGroupRight: function(e) {
return e.moveH(1, "group")
},
goGroupLeft: function(e) {
return e.moveH(-1, "group")
},
goWordRight: function(e) {
return e.moveH(1, "word")
},
delCharBefore: function(e) {
return e.deleteH(-1, "char")
},
delCharAfter: function(e) {
return e.deleteH(1, "char")
},
delWordBefore: function(e) {
return e.deleteH(-1, "word")
},
delWordAfter: function(e) {
return e.deleteH(1, "word")
},
delGroupBefore: function(e) {
return e.deleteH(-1, "group")
},
delGroupAfter: function(e) {
return e.deleteH(1, "group")
},
indentAuto: function(e) {
return e.indentSelection("smart")
},
indentMore: function(e) {
return e.indentSelection("add")
},
indentLess: function(e) {
return e.indentSelection("subtract")
},
insertTab: function(e) {
return e.replaceSelection("\t")
},
insertSoftTab: function(e) {
for (
var t = [], n = e.listSelections(), r = e.options.tabSize, o = 0;
o < n.length;
o++
) {
var i = n[o].from(),
a = countColumn(e.getLine(i.line), i.ch, r)
t.push(spaceStr(r - a % r))
}
e.replaceSelections(t)
},
defaultTab: function(e) {
e.somethingSelected()
? e.indentSelection("add")
: e.execCommand("insertTab")
},
transposeChars: function(e) {
return runInOp(e, function() {
for (var t = e.listSelections(), n = [], r = 0; r < t.length; r++)
if (t[r].empty()) {
var o = t[r].head,
i = getLine(e.doc, o.line).text
if (i)
if (
(o.ch == i.length && (o = new Pos(o.line, o.ch - 1)),
o.ch > 0)
)
(o = new Pos(o.line, o.ch + 1)),
e.replaceRange(
i.charAt(o.ch - 1) + i.charAt(o.ch - 2),
Pos(o.line, o.ch - 2),
o,
"+transpose"
)
else if (o.line > e.doc.first) {
var a = getLine(e.doc, o.line - 1).text
a &&
((o = new Pos(o.line, 1)),
e.replaceRange(
i.charAt(0) +
e.doc.lineSeparator() +
a.charAt(a.length - 1),
Pos(o.line - 1, a.length - 1),
o,
"+transpose"
))
}
n.push(new ve(o, o))
}
e.setSelections(n)
})
},
newlineAndIndent: function(e) {
return runInOp(e, function() {
for (var t = e.listSelections(), n = t.length - 1; n >= 0; n--)
e.replaceRange(
e.doc.lineSeparator(),
t[n].anchor,
t[n].head,
"+input"
)
t = e.listSelections()
for (var r = 0; r < t.length; r++)
e.indentLine(t[r].from().line, null, !0)
ensureCursorVisible(e)
})
},
openLine: function(e) {
return e.replaceSelection("\n", "start")
},
toggleOverwrite: function(e) {
return e.toggleOverwrite()
},
},
De = new T(),
He = null,
We = function(e, t, n) {
;(this.time = e), (this.pos = t), (this.button = n)
}
We.prototype.compare = function(e, t, n) {
return this.time + 400 > e && 0 == cmp(t, this.pos) && n == this.button
}
var Ee,
Ie,
Fe = {
toString: function() {
return "CodeMirror.Init"
},
},
Be = {},
ze = {}
;(CodeMirror$1.defaults = Be), (CodeMirror$1.optionHandlers = ze)
var Re = []
CodeMirror$1.defineInitHook = function(e) {
return Re.push(e)
}
var je = null,
_e = function(e) {
;(this.cm = e),
(this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null),
(this.polling = new T()),
(this.composing = null),
(this.gracePeriod = !1),
(this.readDOMTimeout = null)
}
;(_e.prototype.init = function(e) {
function onCopyCut(e) {
if (!signalDOMEvent(r, e)) {
if (r.somethingSelected())
setLastCopied({ lineWise: !1, text: r.getSelections() }),
"cut" == e.type && r.replaceSelection("", null, "cut")
else {
if (!r.options.lineWiseCopyCut) return
var t = copyableRanges(r)
setLastCopied({ lineWise: !0, text: t.text }),
"cut" == e.type &&
r.operation(function() {
r.setSelections(t.ranges, 0, D),
r.replaceSelection("", null, "cut")
})
}
if (e.clipboardData) {
e.clipboardData.clearData()
var i = je.text.join("\n")
if (
(e.clipboardData.setData("Text", i),
e.clipboardData.getData("Text") == i)
)
return void e.preventDefault()
}
var a = hiddenTextarea(),
s = a.firstChild
r.display.lineSpace.insertBefore(a, r.display.lineSpace.firstChild),
(s.value = je.text.join("\n"))
var l = document.activeElement
M(s),
setTimeout(function() {
r.display.lineSpace.removeChild(a),
l.focus(),
l == o && n.showPrimarySelection()
}, 50)
}
}
var t = this,
n = this,
r = n.cm,
o = (n.div = e.lineDiv)
disableBrowserMagic(o, r.options.spellcheck),
V(o, "paste", function(e) {
signalDOMEvent(r, e) ||
handlePaste(e, r) ||
(s <= 11 &&
setTimeout(
operation(r, function() {
return t.updateFromDOM()
}),
20
))
}),
V(o, "compositionstart", function(e) {
t.composing = { data: e.data, done: !1 }
}),
V(o, "compositionupdate", function(e) {
t.composing || (t.composing = { data: e.data, done: !1 })
}),
V(o, "compositionend", function(e) {
t.composing &&
(e.data != t.composing.data && t.readFromDOMSoon(),
(t.composing.done = !0))
}),
V(o, "touchstart", function() {
return n.forceCompositionEnd()
}),
V(o, "input", function() {
t.composing || t.readFromDOMSoon()
}),
V(o, "copy", onCopyCut),
V(o, "cut", onCopyCut)
}),
(_e.prototype.prepareSelection = function() {
var e = prepareSelection(this.cm, !1)
return (e.focus = this.cm.state.focused), e
}),
(_e.prototype.showSelection = function(e, t) {
e &&
this.cm.display.view.length &&
((e.focus || t) && this.showPrimarySelection(),
this.showMultipleSelections(e))
}),
(_e.prototype.showPrimarySelection = function() {
var e = window.getSelection(),
t = this.cm,
r = t.doc.sel.primary(),
o = r.from(),
i = r.to()
if (
t.display.viewTo == t.display.viewFrom ||
o.line >= t.display.viewTo ||
i.line < t.display.viewFrom
)
e.removeAllRanges()
else {
var a = domToPos(t, e.anchorNode, e.anchorOffset),
s = domToPos(t, e.focusNode, e.focusOffset)
if (
!a ||
a.bad ||
!s ||
s.bad ||
0 != cmp(minPos(a, s), o) ||
0 != cmp(maxPos(a, s), i)
) {
var l = t.display.view,
c = (o.line >= t.display.viewFrom && posToDOM(t, o)) || {
node: l[0].measure.map[2],
offset: 0,
},
u = i.line < t.display.viewTo && posToDOM(t, i)
if (!u) {
var d = l[l.length - 1].measure,
p = d.maps ? d.maps[d.maps.length - 1] : d.map
u = {
node: p[p.length - 1],
offset: p[p.length - 2] - p[p.length - 3],
}
}
if (c && u) {
var h,
f = e.rangeCount && e.getRangeAt(0)
try {
h = w(c.node, c.offset, u.offset, u.node)
} catch (e) {}
h &&
(!n && t.state.focused
? (e.collapse(c.node, c.offset),
h.collapsed || (e.removeAllRanges(), e.addRange(h)))
: (e.removeAllRanges(), e.addRange(h)),
f && null == e.anchorNode
? e.addRange(f)
: n && this.startGracePeriod()),
this.rememberSelection()
} else e.removeAllRanges()
}
}
}),
(_e.prototype.startGracePeriod = function() {
var e = this
clearTimeout(this.gracePeriod),
(this.gracePeriod = setTimeout(function() {
;(e.gracePeriod = !1),
e.selectionChanged() &&
e.cm.operation(function() {
return (e.cm.curOp.selectionChanged = !0)
})
}, 20))
}),
(_e.prototype.showMultipleSelections = function(e) {
removeChildrenAndAdd(this.cm.display.cursorDiv, e.cursors),
removeChildrenAndAdd(this.cm.display.selectionDiv, e.selection)
}),
(_e.prototype.rememberSelection = function() {
var e = window.getSelection()
;(this.lastAnchorNode = e.anchorNode),
(this.lastAnchorOffset = e.anchorOffset),
(this.lastFocusNode = e.focusNode),
(this.lastFocusOffset = e.focusOffset)
}),
(_e.prototype.selectionInEditor = function() {
var e = window.getSelection()
if (!e.rangeCount) return !1
var t = e.getRangeAt(0).commonAncestorContainer
return contains(this.div, t)
}),
(_e.prototype.focus = function() {
"nocursor" != this.cm.options.readOnly &&
(this.selectionInEditor() ||
this.showSelection(this.prepareSelection(), !0),
this.div.focus())
}),
(_e.prototype.blur = function() {
this.div.blur()
}),
(_e.prototype.getField = function() {
return this.div
}),
(_e.prototype.supportsTouch = function() {
return !0
}),
(_e.prototype.receivedFocus = function() {
function poll() {
e.cm.state.focused &&
(e.pollSelection(),
e.polling.set(e.cm.options.pollInterval, poll))
}
var e = this
this.selectionInEditor()
? this.pollSelection()
: runInOp(this.cm, function() {
return (e.cm.curOp.selectionChanged = !0)
}),
this.polling.set(this.cm.options.pollInterval, poll)
}),
(_e.prototype.selectionChanged = function() {
var e = window.getSelection()
return (
e.anchorNode != this.lastAnchorNode ||
e.anchorOffset != this.lastAnchorOffset ||
e.focusNode != this.lastFocusNode ||
e.focusOffset != this.lastFocusOffset
)
}),
(_e.prototype.pollSelection = function() {
if (
null == this.readDOMTimeout &&
!this.gracePeriod &&
this.selectionChanged()
) {
var e = window.getSelection(),
t = this.cm
if (
m &&
u &&
this.cm.options.gutters.length &&
isInGutter(e.anchorNode)
)
return (
this.cm.triggerOnKeyDown({
type: "keydown",
keyCode: 8,
preventDefault: Math.abs,
}),
this.blur(),
void this.focus()
)
if (!this.composing) {
this.rememberSelection()
var n = domToPos(t, e.anchorNode, e.anchorOffset),
r = domToPos(t, e.focusNode, e.focusOffset)
n &&
r &&
runInOp(t, function() {
setSelection(t.doc, simpleSelection(n, r), D),
(n.bad || r.bad) && (t.curOp.selectionChanged = !0)
})
}
}
}),
(_e.prototype.pollContent = function() {
null != this.readDOMTimeout &&
(clearTimeout(this.readDOMTimeout), (this.readDOMTimeout = null))
var e = this.cm,
t = e.display,
n = e.doc.sel.primary(),
r = n.from(),
o = n.to()
if (
(0 == r.ch &&
r.line > e.firstLine() &&
(r = Pos(r.line - 1, getLine(e.doc, r.line - 1).length)),
o.ch == getLine(e.doc, o.line).text.length &&
o.line < e.lastLine() &&
(o = Pos(o.line + 1, 0)),
r.line < t.viewFrom || o.line > t.viewTo - 1)
)
return !1
var i, a, s
r.line == t.viewFrom || 0 == (i = findViewIndex(e, r.line))
? ((a = lineNo(t.view[0].line)), (s = t.view[0].node))
: ((a = lineNo(t.view[i].line)),
(s = t.view[i - 1].node.nextSibling))
var l,
c,
u = findViewIndex(e, o.line)
if (
(u == t.view.length - 1
? ((l = t.viewTo - 1), (c = t.lineDiv.lastChild))
: ((l = lineNo(t.view[u + 1].line) - 1),
(c = t.view[u + 1].node.previousSibling)),
!s)
)
return !1
for (
var d = e.doc.splitLines(domTextBetween(e, s, c, a, l)),
p = getBetween(
e.doc,
Pos(a, 0),
Pos(l, getLine(e.doc, l).text.length)
);
d.length > 1 && p.length > 1;
)
if (lst(d) == lst(p)) d.pop(), p.pop(), l--
else {
if (d[0] != p[0]) break
d.shift(), p.shift(), a++
}
for (
var h = 0,
f = 0,
g = d[0],
m = p[0],
v = Math.min(g.length, m.length);
h < v && g.charCodeAt(h) == m.charCodeAt(h);
)
++h
for (
var y = lst(d),
b = lst(p),
x = Math.min(
y.length - (1 == d.length ? h : 0),
b.length - (1 == p.length ? h : 0)
);
f < x &&
y.charCodeAt(y.length - f - 1) == b.charCodeAt(b.length - f - 1);
)
++f
if (1 == d.length && 1 == p.length && a == r.line)
for (
;
h &&
h > r.ch &&
y.charCodeAt(y.length - f - 1) == b.charCodeAt(b.length - f - 1);
)
h--, f++
;(d[d.length - 1] = y.slice(0, y.length - f).replace(/^\u200b+/, "")),
(d[0] = d[0].slice(h).replace(/\u200b+$/, ""))
var C = Pos(a, h),
w = Pos(l, p.length ? lst(p).length - f : 0)
return d.length > 1 || d[0] || cmp(C, w)
? (replaceRange(e.doc, d, C, w, "+input"), !0)
: void 0
}),
(_e.prototype.ensurePolled = function() {
this.forceCompositionEnd()
}),
(_e.prototype.reset = function() {
this.forceCompositionEnd()
}),
(_e.prototype.forceCompositionEnd = function() {
this.composing &&
(clearTimeout(this.readDOMTimeout),
(this.composing = null),
this.updateFromDOM(),
this.div.blur(),
this.div.focus())
}),
(_e.prototype.readFromDOMSoon = function() {
var e = this
null == this.readDOMTimeout &&
(this.readDOMTimeout = setTimeout(function() {
if (((e.readDOMTimeout = null), e.composing)) {
if (!e.composing.done) return
e.composing = null
}
e.updateFromDOM()
}, 80))
}),
(_e.prototype.updateFromDOM = function() {
var e = this
;(!this.cm.isReadOnly() && this.pollContent()) ||
runInOp(this.cm, function() {
return regChange(e.cm)
})
}),
(_e.prototype.setUneditable = function(e) {
e.contentEditable = "false"
}),
(_e.prototype.onKeyPress = function(e) {
0 != e.charCode &&
(e.preventDefault(),
this.cm.isReadOnly() ||
operation(this.cm, applyTextInput)(
this.cm,
String.fromCharCode(
null == e.charCode ? e.keyCode : e.charCode
),
0
))
}),
(_e.prototype.readOnlyChanged = function(e) {
this.div.contentEditable = String("nocursor" != e)
}),
(_e.prototype.onContextMenu = function() {}),
(_e.prototype.resetPosition = function() {}),
(_e.prototype.needsContentAttribute = !0)
var Ve = function(e) {
;(this.cm = e),
(this.prevInput = ""),
(this.pollingFast = !1),
(this.polling = new T()),
(this.hasSelection = !1),
(this.composing = null)
}
;(Ve.prototype.init = function(e) {
function prepareCopyCut(e) {
if (!signalDOMEvent(r, e)) {
if (r.somethingSelected())
setLastCopied({ lineWise: !1, text: r.getSelections() })
else {
if (!r.options.lineWiseCopyCut) return
var t = copyableRanges(r)
setLastCopied({ lineWise: !0, text: t.text }),
"cut" == e.type
? r.setSelections(t.ranges, null, D)
: ((n.prevInput = ""), (i.value = t.text.join("\n")), M(i))
}
"cut" == e.type && (r.state.cutIncoming = !0)
}
}
var t = this,
n = this,
r = this.cm,
o = (this.wrapper = hiddenTextarea()),
i = (this.textarea = o.firstChild)
e.wrapper.insertBefore(o, e.wrapper.firstChild),
g && (i.style.width = "0px"),
V(i, "input", function() {
a && s >= 9 && t.hasSelection && (t.hasSelection = null), n.poll()
}),
V(i, "paste", function(e) {
signalDOMEvent(r, e) ||
handlePaste(e, r) ||
((r.state.pasteIncoming = !0), n.fastPoll())
}),
V(i, "cut", prepareCopyCut),
V(i, "copy", prepareCopyCut),
V(e.scroller, "paste", function(t) {
eventInWidget(e, t) ||
signalDOMEvent(r, t) ||
((r.state.pasteIncoming = !0), n.focus())
}),
V(e.lineSpace, "selectstart", function(t) {
eventInWidget(e, t) || e_preventDefault(t)
}),
V(i, "compositionstart", function() {
var e = r.getCursor("from")
n.composing && n.composing.range.clear(),
(n.composing = {
start: e,
range: r.markText(e, r.getCursor("to"), {
className: "CodeMirror-composing",
}),
})
}),
V(i, "compositionend", function() {
n.composing &&
(n.poll(), n.composing.range.clear(), (n.composing = null))
})
}),
(Ve.prototype.prepareSelection = function() {
var e = this.cm,
t = e.display,
n = e.doc,
r = prepareSelection(e)
if (e.options.moveInputWithCursor) {
var o = cursorCoords(e, n.sel.primary().head, "div"),
i = t.wrapper.getBoundingClientRect(),
a = t.lineDiv.getBoundingClientRect()
;(r.teTop = Math.max(
0,
Math.min(t.wrapper.clientHeight - 10, o.top + a.top - i.top)
)),
(r.teLeft = Math.max(
0,
Math.min(t.wrapper.clientWidth - 10, o.left + a.left - i.left)
))
}
return r
}),
(Ve.prototype.showSelection = function(e) {
var t = this.cm.display
removeChildrenAndAdd(t.cursorDiv, e.cursors),
removeChildrenAndAdd(t.selectionDiv, e.selection),
null != e.teTop &&
((this.wrapper.style.top = e.teTop + "px"),
(this.wrapper.style.left = e.teLeft + "px"))
}),
(Ve.prototype.reset = function(e) {
if (!this.contextMenuPending && !this.composing) {
var t = this.cm
if (t.somethingSelected()) {
this.prevInput = ""
var n = t.getSelection()
;(this.textarea.value = n),
t.state.focused && M(this.textarea),
a && s >= 9 && (this.hasSelection = n)
} else
e ||
((this.prevInput = this.textarea.value = ""),
a && s >= 9 && (this.hasSelection = null))
}
}),
(Ve.prototype.getField = function() {
return this.textarea
}),
(Ve.prototype.supportsTouch = function() {
return !1
}),
(Ve.prototype.focus = function() {
if (
"nocursor" != this.cm.options.readOnly &&
(!v || activeElt() != this.textarea)
)
try {
this.textarea.focus()
} catch (e) {}
}),
(Ve.prototype.blur = function() {
this.textarea.blur()
}),
(Ve.prototype.resetPosition = function() {
this.wrapper.style.top = this.wrapper.style.left = 0
}),
(Ve.prototype.receivedFocus = function() {
this.slowPoll()
}),
(Ve.prototype.slowPoll = function() {
var e = this
this.pollingFast ||
this.polling.set(this.cm.options.pollInterval, function() {
e.poll(), e.cm.state.focused && e.slowPoll()
})
}),
(Ve.prototype.fastPoll = function() {
function p() {
t.poll() || e
? ((t.pollingFast = !1), t.slowPoll())
: ((e = !0), t.polling.set(60, p))
}
var e = !1,
t = this
;(t.pollingFast = !0), t.polling.set(20, p)
}),
(Ve.prototype.poll = function() {
var e = this,
t = this.cm,
n = this.textarea,
r = this.prevInput
if (
this.contextMenuPending ||
!t.state.focused ||
(K(n) && !r && !this.composing) ||
t.isReadOnly() ||
t.options.disableInput ||
t.state.keySeq
)
return !1
var o = n.value
if (o == r && !t.somethingSelected()) return !1
if (
(a && s >= 9 && this.hasSelection === o) ||
(y && /[\uf700-\uf7ff]/.test(o))
)
return t.display.input.reset(), !1
if (t.doc.sel == t.display.selForContextMenu) {
var i = o.charCodeAt(0)
if ((8203 != i || r || (r = ""), 8666 == i))
return this.reset(), this.cm.execCommand("undo")
}
for (
var l = 0, c = Math.min(r.length, o.length);
l < c && r.charCodeAt(l) == o.charCodeAt(l);
)
++l
return (
runInOp(t, function() {
applyTextInput(
t,
o.slice(l),
r.length - l,
null,
e.composing ? "*compose" : null
),
o.length > 1e3 || o.indexOf("\n") > -1
? (n.value = e.prevInput = "")
: (e.prevInput = o),
e.composing &&
(e.composing.range.clear(),
(e.composing.range = t.markText(
e.composing.start,
t.getCursor("to"),
{ className: "CodeMirror-composing" }
)))
}),
!0
)
}),
(Ve.prototype.ensurePolled = function() {
this.pollingFast && this.poll() && (this.pollingFast = !1)
}),
(Ve.prototype.onKeyPress = function() {
a && s >= 9 && (this.hasSelection = null), this.fastPoll()
}),
(Ve.prototype.onContextMenu = function(e) {
function prepareSelectAllHack() {
if (null != o.selectionStart) {
var e = n.somethingSelected(),
i = "" + (e ? o.value : "")
;(o.value = "⇚"),
(o.value = i),
(t.prevInput = e ? "" : ""),
(o.selectionStart = 1),
(o.selectionEnd = i.length),
(r.selForContextMenu = n.doc.sel)
}
}
function rehide() {
if (
((t.contextMenuPending = !1),
(t.wrapper.style.cssText = p),
(o.style.cssText = u),
a &&
s < 9 &&
r.scrollbars.setScrollTop((r.scroller.scrollTop = c)),
null != o.selectionStart)
) {
;(!a || (a && s < 9)) && prepareSelectAllHack()
var e = 0,
i = function() {
r.selForContextMenu == n.doc.sel &&
0 == o.selectionStart &&
o.selectionEnd > 0 &&
"" == t.prevInput
? operation(n, selectAll)(n)
: e++ < 10
? (r.detectingSelectAll = setTimeout(i, 500))
: ((r.selForContextMenu = null), r.input.reset())
}
r.detectingSelectAll = setTimeout(i, 200)
}
}
var t = this,
n = t.cm,
r = n.display,
o = t.textarea,
i = posFromMouse(n, e),
c = r.scroller.scrollTop
if (i && !d) {
n.options.resetSelectionOnContextMenu &&
-1 == n.doc.sel.contains(i) &&
operation(n, setSelection)(n.doc, simpleSelection(i), D)
var u = o.style.cssText,
p = t.wrapper.style.cssText
t.wrapper.style.cssText = "position: absolute"
var h = t.wrapper.getBoundingClientRect()
o.style.cssText =
"position: absolute; width: 30px; height: 30px;\n top: " +
(e.clientY - h.top - 5) +
"px; left: " +
(e.clientX - h.left - 5) +
"px;\n z-index: 1000; background: " +
(a ? "rgba(255, 255, 255, .05)" : "transparent") +
";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"
var f
if (
(l && (f = window.scrollY),
r.input.focus(),
l && window.scrollTo(null, f),
r.input.reset(),
n.somethingSelected() || (o.value = t.prevInput = " "),
(t.contextMenuPending = !0),
(r.selForContextMenu = n.doc.sel),
clearTimeout(r.detectingSelectAll),
a && s >= 9 && prepareSelectAllHack(),
k)
) {
e_stop(e)
var g = function() {
off(window, "mouseup", g), setTimeout(rehide, 20)
}
V(window, "mouseup", g)
} else setTimeout(rehide, 50)
}
}),
(Ve.prototype.readOnlyChanged = function(e) {
e || this.reset(), (this.textarea.disabled = "nocursor" == e)
}),
(Ve.prototype.setUneditable = function() {}),
(Ve.prototype.needsContentAttribute = !1),
(function defineOptions(e) {
function option(n, r, o, i) {
;(e.defaults[n] = r),
o &&
(t[n] = i
? function(e, t, n) {
n != Fe && o(e, t, n)
}
: o)
}
var t = e.optionHandlers
;(e.defineOption = option),
(e.Init = Fe),
option(
"value",
"",
function(e, t) {
return e.setValue(t)
},
!0
),
option(
"mode",
null,
function(e, t) {
;(e.doc.modeOption = t), loadMode(e)
},
!0
),
option("indentUnit", 2, loadMode, !0),
option("indentWithTabs", !1),
option("smartIndent", !0),
option(
"tabSize",
4,
function(e) {
resetModeState(e), clearCaches(e), regChange(e)
},
!0
),
option("lineSeparator", null, function(e, t) {
if (((e.doc.lineSep = t), t)) {
var n = [],
r = e.doc.first
e.doc.iter(function(e) {
for (var o = 0; ; ) {
var i = e.text.indexOf(t, o)
if (-1 == i) break
;(o = i + t.length), n.push(Pos(r, i))
}
r++
})
for (var o = n.length - 1; o >= 0; o--)
replaceRange(
e.doc,
t,
n[o],
Pos(n[o].line, n[o].ch + t.length)
)
}
}),
option(
"specialChars",
/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g,
function(e, t, n) {
;(e.state.specialChars = new RegExp(
t.source + (t.test("\t") ? "" : "|\t"),
"g"
)),
n != Fe && e.refresh()
}
),
option(
"specialCharPlaceholder",
defaultSpecialCharPlaceholder,
function(e) {
return e.refresh()
},
!0
),
option("electricChars", !0),
option(
"inputStyle",
v ? "contenteditable" : "textarea",
function() {
throw new Error(
"inputStyle can not (yet) be changed in a running editor"
)
},
!0
),
option(
"spellcheck",
!1,
function(e, t) {
return (e.getInputField().spellcheck = t)
},
!0
),
option("rtlMoveVisually", !x),
option("wholeLineUpdateBefore", !0),
option(
"theme",
"default",
function(e) {
themeChanged(e), guttersChanged(e)
},
!0
),
option("keyMap", "default", function(e, t, n) {
var r = getKeyMap(t),
o = n != Fe && getKeyMap(n)
o && o.detach && o.detach(e, r),
r.attach && r.attach(e, o || null)
}),
option("extraKeys", null),
option("configureMouse", null),
option("lineWrapping", !1, wrappingChanged, !0),
option(
"gutters",
[],
function(e) {
setGuttersForLineNumbers(e.options), guttersChanged(e)
},
!0
),
option(
"fixedGutter",
!0,
function(e, t) {
;(e.display.gutters.style.left = t
? compensateForHScroll(e.display) + "px"
: "0"),
e.refresh()
},
!0
),
option(
"coverGutterNextToScrollbar",
!1,
function(e) {
return updateScrollbars(e)
},
!0
),
option(
"scrollbarStyle",
"native",
function(e) {
initScrollbars(e),
updateScrollbars(e),
e.display.scrollbars.setScrollTop(e.doc.scrollTop),
e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)
},
!0
),
option(
"lineNumbers",
!1,
function(e) {
setGuttersForLineNumbers(e.options), guttersChanged(e)
},
!0
),
option("firstLineNumber", 1, guttersChanged, !0),
option(
"lineNumberFormatter",
function(e) {
return e
},
guttersChanged,
!0
),
option("showCursorWhenSelecting", !1, updateSelection, !0),
option("resetSelectionOnContextMenu", !0),
option("lineWiseCopyCut", !0),
option("pasteLinesPerSelection", !0),
option("readOnly", !1, function(e, t) {
"nocursor" == t && (onBlur(e), e.display.input.blur()),
e.display.input.readOnlyChanged(t)
}),
option(
"disableInput",
!1,
function(e, t) {
t || e.display.input.reset()
},
!0
),
option("dragDrop", !0, dragDropChanged),
option("allowDropFileTypes", null),
option("cursorBlinkRate", 530),
option("cursorScrollMargin", 0),
option("cursorHeight", 1, updateSelection, !0),
option("singleCursorHeightPerLine", !0, updateSelection, !0),
option("workTime", 100),
option("workDelay", 100),
option("flattenSpans", !0, resetModeState, !0),
option("addModeClass", !1, resetModeState, !0),
option("pollInterval", 100),
option("undoDepth", 200, function(e, t) {
return (e.doc.history.undoDepth = t)
}),
option("historyEventDelay", 1250),
option(
"viewportMargin",
10,
function(e) {
return e.refresh()
},
!0
),
option("maxHighlightLength", 1e4, resetModeState, !0),
option("moveInputWithCursor", !0, function(e, t) {
t || e.display.input.resetPosition()
}),
option("tabindex", null, function(e, t) {
return (e.display.input.getField().tabIndex = t || "")
}),
option("autofocus", null),
option(
"direction",
"ltr",
function(e, t) {
return e.doc.setDirection(t)
},
!0
)
})(CodeMirror$1),
(function(e) {
var t = e.optionHandlers,
n = (e.helpers = {})
;(e.prototype = {
constructor: e,
focus: function() {
window.focus(), this.display.input.focus()
},
setOption: function(e, n) {
var r = this.options,
o = r[e]
;(r[e] == n && "mode" != e) ||
((r[e] = n),
t.hasOwnProperty(e) && operation(this, t[e])(this, n, o),
signal(this, "optionChange", this, e))
},
getOption: function(e) {
return this.options[e]
},
getDoc: function() {
return this.doc
},
addKeyMap: function(e, t) {
this.state.keyMaps[t ? "push" : "unshift"](getKeyMap(e))
},
removeKeyMap: function(e) {
for (var t = this.state.keyMaps, n = 0; n < t.length; ++n)
if (t[n] == e || t[n].name == e) return t.splice(n, 1), !0
},
addOverlay: methodOp(function(t, n) {
var r = t.token ? t : e.getMode(this.options, t)
if (r.startState) throw new Error("Overlays may not be stateful.")
insertSorted(
this.state.overlays,
{
mode: r,
modeSpec: t,
opaque: n && n.opaque,
priority: (n && n.priority) || 0,
},
function(e) {
return e.priority
}
),
this.state.modeGen++,
regChange(this)
}),
removeOverlay: methodOp(function(e) {
for (
var t = this, n = this.state.overlays, r = 0;
r < n.length;
++r
) {
var o = n[r].modeSpec
if (o == e || ("string" == typeof e && o.name == e))
return n.splice(r, 1), t.state.modeGen++, void regChange(t)
}
}),
indentLine: methodOp(function(e, t, n) {
"string" != typeof t &&
"number" != typeof t &&
(t =
null == t
? this.options.smartIndent ? "smart" : "prev"
: t ? "add" : "subtract"),
isLine(this.doc, e) && indentLine(this, e, t, n)
}),
indentSelection: methodOp(function(e) {
for (
var t = this, n = this.doc.sel.ranges, r = -1, o = 0;
o < n.length;
o++
) {
var i = n[o]
if (i.empty())
i.head.line > r &&
(indentLine(t, i.head.line, e, !0),
(r = i.head.line),
o == t.doc.sel.primIndex && ensureCursorVisible(t))
else {
var a = i.from(),
s = i.to(),
l = Math.max(r, a.line)
r = Math.min(t.lastLine(), s.line - (s.ch ? 0 : 1)) + 1
for (var c = l; c < r; ++c) indentLine(t, c, e)
var u = t.doc.sel.ranges
0 == a.ch &&
n.length == u.length &&
u[o].from().ch > 0 &&
replaceOneSelection(t.doc, o, new ve(a, u[o].to()), D)
}
}
}),
getTokenAt: function(e, t) {
return takeToken(this, e, t)
},
getLineTokens: function(e, t) {
return takeToken(this, Pos(e), t, !0)
},
getTokenTypeAt: function(e) {
e = clipPos(this.doc, e)
var t,
n = getLineStyles(this, getLine(this.doc, e.line)),
r = 0,
o = (n.length - 1) / 2,
i = e.ch
if (0 == i) t = n[2]
else
for (;;) {
var a = (r + o) >> 1
if ((a ? n[2 * a - 1] : 0) >= i) o = a
else {
if (!(n[2 * a + 1] < i)) {
t = n[2 * a + 2]
break
}
r = a + 1
}
}
var s = t ? t.indexOf("overlay ") : -1
return s < 0 ? t : 0 == s ? null : t.slice(0, s - 1)
},
getModeAt: function(t) {
var n = this.doc.mode
return n.innerMode
? e.innerMode(n, this.getTokenAt(t).state).mode
: n
},
getHelper: function(e, t) {
return this.getHelpers(e, t)[0]
},
getHelpers: function(e, t) {
var r = this,
o = []
if (!n.hasOwnProperty(t)) return o
var i = n[t],
a = this.getModeAt(e)
if ("string" == typeof a[t]) i[a[t]] && o.push(i[a[t]])
else if (a[t])
for (var s = 0; s < a[t].length; s++) {
var l = i[a[t][s]]
l && o.push(l)
}
else
a.helperType && i[a.helperType]
? o.push(i[a.helperType])
: i[a.name] && o.push(i[a.name])
for (var c = 0; c < i._global.length; c++) {
var u = i._global[c]
u.pred(a, r) && -1 == indexOf(o, u.val) && o.push(u.val)
}
return o
},
getStateAfter: function(e, t) {
var n = this.doc
return (
(e = clipLine(n, null == e ? n.first + n.size - 1 : e)),
getContextBefore(this, e + 1, t).state
)
},
cursorCoords: function(e, t) {
var n,
r = this.doc.sel.primary()
return (
(n =
null == e
? r.head
: "object" == typeof e
? clipPos(this.doc, e)
: e ? r.from() : r.to()),
cursorCoords(this, n, t || "page")
)
},
charCoords: function(e, t) {
return charCoords(this, clipPos(this.doc, e), t || "page")
},
coordsChar: function(e, t) {
return (
(e = fromCoordSystem(this, e, t || "page")),
coordsChar(this, e.left, e.top)
)
},
lineAtHeight: function(e, t) {
return (
(e = fromCoordSystem(this, { top: e, left: 0 }, t || "page")
.top),
lineAtHeight(this.doc, e + this.display.viewOffset)
)
},
heightAtLine: function(e, t, n) {
var r,
o = !1
if ("number" == typeof e) {
var i = this.doc.first + this.doc.size - 1
e < this.doc.first
? (e = this.doc.first)
: e > i && ((e = i), (o = !0)),
(r = getLine(this.doc, e))
} else r = e
return (
intoCoordSystem(
this,
r,
{ top: 0, left: 0 },
t || "page",
n || o
).top + (o ? this.doc.height - heightAtLine(r) : 0)
)
},
defaultTextHeight: function() {
return textHeight(this.display)
},
defaultCharWidth: function() {
return charWidth(this.display)
},
getViewport: function() {
return { from: this.display.viewFrom, to: this.display.viewTo }
},
addWidget: function(e, t, n, r, o) {
var i = this.display,
a = (e = cursorCoords(this, clipPos(this.doc, e))).bottom,
s = e.left
if (
((t.style.position = "absolute"),
t.setAttribute("cm-ignore-events", "true"),
this.display.input.setUneditable(t),
i.sizer.appendChild(t),
"over" == r)
)
a = e.top
else if ("above" == r || "near" == r) {
var l = Math.max(i.wrapper.clientHeight, this.doc.height),
c = Math.max(i.sizer.clientWidth, i.lineSpace.clientWidth)
;("above" == r || e.bottom + t.offsetHeight > l) &&
e.top > t.offsetHeight
? (a = e.top - t.offsetHeight)
: e.bottom + t.offsetHeight <= l && (a = e.bottom),
s + t.offsetWidth > c && (s = c - t.offsetWidth)
}
;(t.style.top = a + "px"),
(t.style.left = t.style.right = ""),
"right" == o
? ((s = i.sizer.clientWidth - t.offsetWidth),
(t.style.right = "0px"))
: ("left" == o
? (s = 0)
: "middle" == o &&
(s = (i.sizer.clientWidth - t.offsetWidth) / 2),
(t.style.left = s + "px")),
n &&
scrollIntoView(this, {
left: s,
top: a,
right: s + t.offsetWidth,
bottom: a + t.offsetHeight,
})
},
triggerOnKeyDown: methodOp(onKeyDown),
triggerOnKeyPress: methodOp(onKeyPress),
triggerOnKeyUp: onKeyUp,
triggerOnMouseDown: methodOp(onMouseDown),
execCommand: function(e) {
if (Ne.hasOwnProperty(e)) return Ne[e].call(null, this)
},
triggerElectric: methodOp(function(e) {
triggerElectric(this, e)
}),
findPosH: function(e, t, n, r) {
var o = this,
i = 1
t < 0 && ((i = -1), (t = -t))
for (
var a = clipPos(this.doc, e), s = 0;
s < t && !(a = findPosH(o.doc, a, i, n, r)).hitSide;
++s
);
return a
},
moveH: methodOp(function(e, t) {
var n = this
this.extendSelectionsBy(function(r) {
return n.display.shift || n.doc.extend || r.empty()
? findPosH(n.doc, r.head, e, t, n.options.rtlMoveVisually)
: e < 0 ? r.from() : r.to()
}, W)
}),
deleteH: methodOp(function(e, t) {
var n = this.doc.sel,
r = this.doc
n.somethingSelected()
? r.replaceSelection("", null, "+delete")
: deleteNearSelection(this, function(n) {
var o = findPosH(r, n.head, e, t, !1)
return e < 0
? { from: o, to: n.head }
: { from: n.head, to: o }
})
}),
findPosV: function(e, t, n, r) {
var o = this,
i = 1,
a = r
t < 0 && ((i = -1), (t = -t))
for (var s = clipPos(this.doc, e), l = 0; l < t; ++l) {
var c = cursorCoords(o, s, "div")
if (
(null == a ? (a = c.left) : (c.left = a),
(s = findPosV(o, c, i, n)).hitSide)
)
break
}
return s
},
moveV: methodOp(function(e, t) {
var n = this,
r = this.doc,
o = [],
i =
!this.display.shift && !r.extend && r.sel.somethingSelected()
if (
(r.extendSelectionsBy(function(a) {
if (i) return e < 0 ? a.from() : a.to()
var s = cursorCoords(n, a.head, "div")
null != a.goalColumn && (s.left = a.goalColumn),
o.push(s.left)
var l = findPosV(n, s, e, t)
return (
"page" == t &&
a == r.sel.primary() &&
addToScrollTop(n, charCoords(n, l, "div").top - s.top),
l
)
}, W),
o.length)
)
for (var a = 0; a < r.sel.ranges.length; a++)
r.sel.ranges[a].goalColumn = o[a]
}),
findWordAt: function(e) {
var t = getLine(this.doc, e.line).text,
n = e.ch,
r = e.ch
if (t) {
var o = this.getHelper(e, "wordChars")
;("before" != e.sticky && r != t.length) || !n ? ++r : --n
for (
var i = t.charAt(n),
a = isWordChar(i, o)
? function(e) {
return isWordChar(e, o)
}
: /\s/.test(i)
? function(e) {
return /\s/.test(e)
}
: function(e) {
return !/\s/.test(e) && !isWordChar(e)
};
n > 0 && a(t.charAt(n - 1));
)
--n
for (; r < t.length && a(t.charAt(r)); ) ++r
}
return new ve(Pos(e.line, n), Pos(e.line, r))
},
toggleOverwrite: function(e) {
;(null != e && e == this.state.overwrite) ||
((this.state.overwrite = !this.state.overwrite)
? addClass(this.display.cursorDiv, "CodeMirror-overwrite")
: L(this.display.cursorDiv, "CodeMirror-overwrite"),
signal(this, "overwriteToggle", this, this.state.overwrite))
},
hasFocus: function() {
return this.display.input.getField() == activeElt()
},
isReadOnly: function() {
return !(!this.options.readOnly && !this.doc.cantEdit)
},
scrollTo: methodOp(function(e, t) {
scrollToCoords(this, e, t)
}),
getScrollInfo: function() {
var e = this.display.scroller
return {
left: e.scrollLeft,
top: e.scrollTop,
height:
e.scrollHeight - scrollGap(this) - this.display.barHeight,
width: e.scrollWidth - scrollGap(this) - this.display.barWidth,
clientHeight: displayHeight(this),
clientWidth: displayWidth(this),
}
},
scrollIntoView: methodOp(function(e, t) {
null == e
? ((e = { from: this.doc.sel.primary().head, to: null }),
null == t && (t = this.options.cursorScrollMargin))
: "number" == typeof e
? (e = { from: Pos(e, 0), to: null })
: null == e.from && (e = { from: e, to: null }),
e.to || (e.to = e.from),
(e.margin = t || 0),
null != e.from.line
? scrollToRange(this, e)
: scrollToCoordsRange(this, e.from, e.to, e.margin)
}),
setSize: methodOp(function(e, t) {
var n = this,
r = function(e) {
return "number" == typeof e || /^\d+$/.test(String(e))
? e + "px"
: e
}
null != e && (this.display.wrapper.style.width = r(e)),
null != t && (this.display.wrapper.style.height = r(t)),
this.options.lineWrapping && clearLineMeasurementCache(this)
var o = this.display.viewFrom
this.doc.iter(o, this.display.viewTo, function(e) {
if (e.widgets)
for (var t = 0; t < e.widgets.length; t++)
if (e.widgets[t].noHScroll) {
regLineChange(n, o, "widget")
break
}
++o
}),
(this.curOp.forceUpdate = !0),
signal(this, "refresh", this)
}),
operation: function(e) {
return runInOp(this, e)
},
startOperation: function() {
return startOperation(this)
},
endOperation: function() {
return endOperation(this)
},
refresh: methodOp(function() {
var e = this.display.cachedTextHeight
regChange(this),
(this.curOp.forceUpdate = !0),
clearCaches(this),
scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop),
updateGutterSpace(this),
(null == e || Math.abs(e - textHeight(this.display)) > 0.5) &&
estimateLineHeights(this),
signal(this, "refresh", this)
}),
swapDoc: methodOp(function(e) {
var t = this.doc
return (
(t.cm = null),
attachDoc(this, e),
clearCaches(this),
this.display.input.reset(),
scrollToCoords(this, e.scrollLeft, e.scrollTop),
(this.curOp.forceScroll = !0),
signalLater(this, "swapDoc", this, t),
t
)
}),
getInputField: function() {
return this.display.input.getField()
},
getWrapperElement: function() {
return this.display.wrapper
},
getScrollerElement: function() {
return this.display.scroller
},
getGutterElement: function() {
return this.display.gutters
},
}),
eventMixin(e),
(e.registerHelper = function(t, r, o) {
n.hasOwnProperty(t) || (n[t] = e[t] = { _global: [] }),
(n[t][r] = o)
}),
(e.registerGlobalHelper = function(t, r, o, i) {
e.registerHelper(t, r, i), n[t]._global.push({ pred: o, val: i })
})
})(CodeMirror$1)
var Ge = "iter insert remove copy getEditor constructor".split(" ")
for (var Ue in Se.prototype)
Se.prototype.hasOwnProperty(Ue) &&
indexOf(Ge, Ue) < 0 &&
(CodeMirror$1.prototype[Ue] = (function(e) {
return function() {
return e.apply(this.doc, arguments)
}
})(Se.prototype[Ue]))
return (
eventMixin(Se),
(CodeMirror$1.inputStyles = { textarea: Ve, contenteditable: _e }),
(CodeMirror$1.defineMode = function(e) {
CodeMirror$1.defaults.mode ||
"null" == e ||
(CodeMirror$1.defaults.mode = e),
defineMode.apply(this, arguments)
}),
(CodeMirror$1.defineMIME = function defineMIME(e, t) {
Y[e] = t
}),
CodeMirror$1.defineMode("null", function() {
return {
token: function(e) {
return e.skipToEnd()
},
}
}),
CodeMirror$1.defineMIME("text/plain", "null"),
(CodeMirror$1.defineExtension = function(e, t) {
CodeMirror$1.prototype[e] = t
}),
(CodeMirror$1.defineDocExtension = function(e, t) {
Se.prototype[e] = t
}),
(CodeMirror$1.fromTextArea = function fromTextArea(e, t) {
function save() {
e.value = a.getValue()
}
if (
((t = t ? copyObj(t) : {}),
(t.value = e.value),
!t.tabindex && e.tabIndex && (t.tabindex = e.tabIndex),
!t.placeholder && e.placeholder && (t.placeholder = e.placeholder),
null == t.autofocus)
) {
var n = activeElt()
t.autofocus =
n == e ||
(null != e.getAttribute("autofocus") && n == document.body)
}
var r
if (
e.form &&
(V(e.form, "submit", save), !t.leaveSubmitMethodAlone)
) {
var o = e.form
r = o.submit
try {
var i = (o.submit = function() {
save(), (o.submit = r), o.submit(), (o.submit = i)
})
} catch (e) {}
}
;(t.finishInit = function(t) {
;(t.save = save),
(t.getTextArea = function() {
return e
}),
(t.toTextArea = function() {
;(t.toTextArea = isNaN),
save(),
e.parentNode.removeChild(t.getWrapperElement()),
(e.style.display = ""),
e.form &&
(off(e.form, "submit", save),
"function" == typeof e.form.submit && (e.form.submit = r))
})
}),
(e.style.display = "none")
var a = CodeMirror$1(function(t) {
return e.parentNode.insertBefore(t, e.nextSibling)
}, t)
return a
}),
(function addLegacyProps(e) {
;(e.off = off),
(e.on = V),
(e.wheelEventPixels = wheelEventPixels),
(e.Doc = Se),
(e.splitLines = U),
(e.countColumn = countColumn),
(e.findColumn = findColumn),
(e.isWordChar = isWordCharBasic),
(e.Pass = N),
(e.signal = signal),
(e.Line = ne),
(e.changeEnd = changeEnd),
(e.scrollbarModel = de),
(e.Pos = Pos),
(e.cmpPos = cmp),
(e.modes = X),
(e.mimeModes = Y),
(e.resolveMode = resolveMode),
(e.getMode = getMode),
(e.modeExtensions = Z),
(e.extendMode = extendMode),
(e.copyState = copyState),
(e.startState = startState),
(e.innerMode = innerMode),
(e.commands = Ne),
(e.keyMap = Ae),
(e.keyName = keyName),
(e.isModifierKey = isModifierKey),
(e.lookupKey = lookupKey),
(e.normalizeKeyMap = normalizeKeyMap),
(e.StringStream = J),
(e.SharedTextMarker = Ce),
(e.TextMarker = xe),
(e.LineWidget = ye),
(e.e_preventDefault = e_preventDefault),
(e.e_stopPropagation = e_stopPropagation),
(e.e_stop = e_stop),
(e.addClass = addClass),
(e.contains = contains),
(e.rmClass = L),
(e.keyNames = Me)
})(CodeMirror$1),
(CodeMirror$1.version = "5.31.0"),
CodeMirror$1
)
})
},
"./node_modules/codemirror/mode/javascript/javascript.js": function(e, t, n) {
!(function(e) {
e(n("./node_modules/codemirror/lib/codemirror.js"))
})(function(e) {
"use strict"
e.defineMode("javascript", function(t, n) {
function readRegexp(e) {
for (var t, n = !1, r = !1; null != (t = e.next()); ) {
if (!n) {
if ("/" == t && !r) return
"[" == t ? (r = !0) : r && "]" == t && (r = !1)
}
n = !n && "\\" == t
}
}
function ret(e, t, n) {
return (r = e), (o = n), t
}
function tokenBase(e, t) {
var n = e.next()
if ('"' == n || "'" == n)
return (t.tokenize = tokenString(n)), t.tokenize(e, t)
if ("." == n && e.match(/^\d+(?:[eE][+\-]?\d+)?/))
return ret("number", "number")
if ("." == n && e.match("..")) return ret("spread", "meta")
if (/[\[\]{}\(\),;\:\.]/.test(n)) return ret(n)
if ("=" == n && e.eat(">")) return ret("=>", "operator")
if ("0" == n && e.eat(/x/i))
return e.eatWhile(/[\da-f]/i), ret("number", "number")
if ("0" == n && e.eat(/o/i))
return e.eatWhile(/[0-7]/i), ret("number", "number")
if ("0" == n && e.eat(/b/i))
return e.eatWhile(/[01]/i), ret("number", "number")
if (/\d/.test(n))
return (
e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),
ret("number", "number")
)
if ("/" == n)
return e.eat("*")
? ((t.tokenize = tokenComment), tokenComment(e, t))
: e.eat("/")
? (e.skipToEnd(), ret("comment", "comment"))
: expressionAllowed(e, t, 1)
? (readRegexp(e),
e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),
ret("regexp", "string-2"))
: (e.eat("="), ret("operator", "operator", e.current()))
if ("`" == n) return (t.tokenize = tokenQuasi), tokenQuasi(e, t)
if ("#" == n) return e.skipToEnd(), ret("error", "error")
if (p.test(n))
return (
(">" == n && t.lexical && ">" == t.lexical.type) ||
(e.eat("=")
? ("!" != n && "=" != n) || e.eat("=")
: /[<>*+\-]/.test(n) && (e.eat(n), ">" == n && e.eat(n))),
ret("operator", "operator", e.current())
)
if (u.test(n)) {
e.eatWhile(u)
var r = e.current()
if ("." != t.lastType) {
if (d.propertyIsEnumerable(r)) {
var o = d[r]
return ret(o.type, o.style, r)
}
if ("async" == r && e.match(/^\s*[\(\w]/, !1))
return ret("async", "keyword", r)
}
return ret("variable", "variable", r)
}
}
function tokenString(e) {
return function(t, n) {
var r,
o = !1
if (s && "@" == t.peek() && t.match(h))
return (n.tokenize = tokenBase), ret("jsonld-keyword", "meta")
for (; null != (r = t.next()) && (r != e || o); )
o = !o && "\\" == r
return o || (n.tokenize = tokenBase), ret("string", "string")
}
}
function tokenComment(e, t) {
for (var n, r = !1; (n = e.next()); ) {
if ("/" == n && r) {
t.tokenize = tokenBase
break
}
r = "*" == n
}
return ret("comment", "comment")
}
function tokenQuasi(e, t) {
for (var n, r = !1; null != (n = e.next()); ) {
if (!r && ("`" == n || ("$" == n && e.eat("{")))) {
t.tokenize = tokenBase
break
}
r = !r && "\\" == n
}
return ret("quasi", "string-2", e.current())
}
function findFatArrow(e, t) {
t.fatArrowAt && (t.fatArrowAt = null)
var n = e.string.indexOf("=>", e.start)
if (!(n < 0)) {
if (c) {
var r = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(
e.string.slice(e.start, n)
)
r && (n = r.index)
}
for (var o = 0, i = !1, a = n - 1; a >= 0; --a) {
var s = e.string.charAt(a),
l = f.indexOf(s)
if (l >= 0 && l < 3) {
if (!o) {
++a
break
}
if (0 == --o) {
"(" == s && (i = !0)
break
}
} else if (l >= 3 && l < 6) ++o
else if (u.test(s)) i = !0
else {
if (/["'\/]/.test(s)) return
if (i && !o) {
++a
break
}
}
}
i && !o && (t.fatArrowAt = a)
}
}
function JSLexical(e, t, n, r, o, i) {
;(this.indented = e),
(this.column = t),
(this.type = n),
(this.prev = o),
(this.info = i),
null != r && (this.align = r)
}
function inScope(e, t) {
for (r = e.localVars; r; r = r.next) if (r.name == t) return !0
for (var n = e.context; n; n = n.prev)
for (var r = n.vars; r; r = r.next) if (r.name == t) return !0
}
function parseJS(e, t, n, r, o) {
var i = e.cc
for (
m.state = e,
m.stream = o,
m.marked = null,
m.cc = i,
m.style = t,
e.lexical.hasOwnProperty("align") || (e.lexical.align = !0);
;
)
if ((i.length ? i.pop() : l ? expression : statement)(n, r)) {
for (; i.length && i[i.length - 1].lex; ) i.pop()()
return m.marked
? m.marked
: "variable" == n && inScope(e, r) ? "variable-2" : t
}
}
function pass() {
for (var e = arguments.length - 1; e >= 0; e--)
m.cc.push(arguments[e])
}
function cont() {
return pass.apply(null, arguments), !0
}
function register(e) {
function inList(t) {
for (var n = t; n; n = n.next) if (n.name == e) return !0
return !1
}
var t = m.state
if (((m.marked = "def"), t.context)) {
if (inList(t.localVars)) return
t.localVars = { name: e, next: t.localVars }
} else {
if (inList(t.globalVars)) return
n.globalVars && (t.globalVars = { name: e, next: t.globalVars })
}
}
function pushcontext() {
;(m.state.context = {
prev: m.state.context,
vars: m.state.localVars,
}),
(m.state.localVars = v)
}
function popcontext() {
;(m.state.localVars = m.state.context.vars),
(m.state.context = m.state.context.prev)
}
function pushlex(e, t) {
var n = function() {
var n = m.state,
r = n.indented
if ("stat" == n.lexical.type) r = n.lexical.indented
else
for (var o = n.lexical; o && ")" == o.type && o.align; o = o.prev)
r = o.indented
n.lexical = new JSLexical(
r,
m.stream.column(),
e,
null,
n.lexical,
t
)
}
return (n.lex = !0), n
}
function poplex() {
var e = m.state
e.lexical.prev &&
(")" == e.lexical.type && (e.indented = e.lexical.indented),
(e.lexical = e.lexical.prev))
}
function expect(e) {
function exp(t) {
return t == e ? cont() : ";" == e ? pass() : cont(exp)
}
return exp
}
function statement(e, t) {
return "var" == e
? cont(pushlex("vardef", t.length), vardef, expect(";"), poplex)
: "keyword a" == e
? cont(pushlex("form"), parenExpr, statement, poplex)
: "keyword b" == e
? cont(pushlex("form"), statement, poplex)
: "keyword d" == e
? m.stream.match(/^\s*$/, !1)
? cont()
: cont(
pushlex("stat"),
maybeexpression,
expect(";"),
poplex
)
: "debugger" == e
? cont(expect(";"))
: "{" == e
? cont(pushlex("}"), block, poplex)
: ";" == e
? cont()
: "if" == e
? ("else" == m.state.lexical.info &&
m.state.cc[m.state.cc.length - 1] == poplex &&
m.state.cc.pop()(),
cont(
pushlex("form"),
parenExpr,
statement,
poplex,
maybeelse
))
: "function" == e
? cont(functiondef)
: "for" == e
? cont(
pushlex("form"),
forspec,
statement,
poplex
)
: "variable" == e
? c && "type" == t
? ((m.marked = "keyword"),
cont(
typeexpr,
expect("operator"),
typeexpr,
expect(";")
))
: c && "declare" == t
? ((m.marked = "keyword"), cont(statement))
: cont(pushlex("stat"), maybelabel)
: "switch" == e
? cont(
pushlex("form"),
parenExpr,
expect("{"),
pushlex("}", "switch"),
block,
poplex,
poplex
)
: "case" == e
? cont(expression, expect(":"))
: "default" == e
? cont(expect(":"))
: "catch" == e
? cont(
pushlex("form"),
pushcontext,
expect("("),
funarg,
expect(")"),
statement,
poplex,
popcontext
)
: "class" == e
? cont(
pushlex("form"),
className,
poplex
)
: "export" == e
? cont(
pushlex("stat"),
afterExport,
poplex
)
: "import" == e
? cont(
pushlex("stat"),
afterImport,
poplex
)
: "module" == e
? cont(
pushlex("form"),
pattern,
expect("{"),
pushlex("}"),
block,
poplex,
poplex
)
: "async" == e
? cont(statement)
: "@" == t
? cont(
expression,
statement
)
: pass(
pushlex("stat"),
expression,
expect(";"),
poplex
)
}
function expression(e) {
return expressionInner(e, !1)
}
function expressionNoComma(e) {
return expressionInner(e, !0)
}
function parenExpr(e) {
return "(" != e
? pass()
: cont(pushlex(")"), expression, expect(")"), poplex)
}
function expressionInner(e, t) {
if (m.state.fatArrowAt == m.stream.start) {
var n = t ? arrowBodyNoComma : arrowBody
if ("(" == e)
return cont(
pushcontext,
pushlex(")"),
commasep(funarg, ")"),
poplex,
expect("=>"),
n,
popcontext
)
if ("variable" == e)
return pass(pushcontext, pattern, expect("=>"), n, popcontext)
}
var r = t ? maybeoperatorNoComma : maybeoperatorComma
return g.hasOwnProperty(e)
? cont(r)
: "function" == e
? cont(functiondef, r)
: "class" == e
? cont(pushlex("form"), classExpression, poplex)
: "keyword c" == e || "async" == e
? cont(t ? expressionNoComma : expression)
: "(" == e
? cont(
pushlex(")"),
maybeexpression,
expect(")"),
poplex,
r
)
: "operator" == e || "spread" == e
? cont(t ? expressionNoComma : expression)
: "[" == e
? cont(pushlex("]"), arrayLiteral, poplex, r)
: "{" == e
? contCommasep(objprop, "}", null, r)
: "quasi" == e
? pass(quasi, r)
: "new" == e ? cont(maybeTarget(t)) : cont()
}
function maybeexpression(e) {
return e.match(/[;\}\)\],]/) ? pass() : pass(expression)
}
function maybeoperatorComma(e, t) {
return "," == e ? cont(expression) : maybeoperatorNoComma(e, t, !1)
}
function maybeoperatorNoComma(e, t, n) {
var r = 0 == n ? maybeoperatorComma : maybeoperatorNoComma,
o = 0 == n ? expression : expressionNoComma
return "=>" == e
? cont(pushcontext, n ? arrowBodyNoComma : arrowBody, popcontext)
: "operator" == e
? /\+\+|--/.test(t) || (c && "!" == t)
? cont(r)
: "?" == t ? cont(expression, expect(":"), o) : cont(o)
: "quasi" == e
? pass(quasi, r)
: ";" != e
? "(" == e
? contCommasep(expressionNoComma, ")", "call", r)
: "." == e
? cont(property, r)
: "[" == e
? cont(
pushlex("]"),
maybeexpression,
expect("]"),
poplex,
r
)
: c && "as" == t
? ((m.marked = "keyword"), cont(typeexpr, r))
: "regexp" == e
? ((m.state.lastType = m.marked = "operator"),
m.stream.backUp(
m.stream.pos - m.stream.start - 1
),
cont(o))
: void 0
: void 0
}
function quasi(e, t) {
return "quasi" != e
? pass()
: "${" != t.slice(t.length - 2)
? cont(quasi)
: cont(expression, continueQuasi)
}
function continueQuasi(e) {
if ("}" == e)
return (
(m.marked = "string-2"),
(m.state.tokenize = tokenQuasi),
cont(quasi)
)
}
function arrowBody(e) {
return (
findFatArrow(m.stream, m.state),
pass("{" == e ? statement : expression)
)
}
function arrowBodyNoComma(e) {
return (
findFatArrow(m.stream, m.state),
pass("{" == e ? statement : expressionNoComma)
)
}
function maybeTarget(e) {
return function(t) {
return "." == t
? cont(e ? targetNoComma : target)
: "variable" == t && c
? cont(
maybeTypeArgs,
e ? maybeoperatorNoComma : maybeoperatorComma
)
: pass(e ? expressionNoComma : expression)
}
}
function target(e, t) {
if ("target" == t)
return (m.marked = "keyword"), cont(maybeoperatorComma)
}
function targetNoComma(e, t) {
if ("target" == t)
return (m.marked = "keyword"), cont(maybeoperatorNoComma)
}
function maybelabel(e) {
return ":" == e
? cont(poplex, statement)
: pass(maybeoperatorComma, expect(";"), poplex)
}
function property(e) {
if ("variable" == e) return (m.marked = "property"), cont()
}
function objprop(e, t) {
if ("async" == e) return (m.marked = "property"), cont(objprop)
if ("variable" == e || "keyword" == m.style) {
if (((m.marked = "property"), "get" == t || "set" == t))
return cont(getterSetter)
var n
return (
c &&
m.state.fatArrowAt == m.stream.start &&
(n = m.stream.match(/^\s*:\s*/, !1)) &&
(m.state.fatArrowAt = m.stream.pos + n[0].length),
cont(afterprop)
)
}
return "number" == e || "string" == e
? ((m.marked = s ? "property" : m.style + " property"),
cont(afterprop))
: "jsonld-keyword" == e
? cont(afterprop)
: "modifier" == e
? cont(objprop)
: "[" == e
? cont(expression, expect("]"), afterprop)
: "spread" == e
? cont(expressionNoComma, afterprop)
: "*" == t
? ((m.marked = "keyword"), cont(objprop))
: ":" == e ? pass(afterprop) : void 0
}
function getterSetter(e) {
return "variable" != e
? pass(afterprop)
: ((m.marked = "property"), cont(functiondef))
}
function afterprop(e) {
return ":" == e
? cont(expressionNoComma)
: "(" == e ? pass(functiondef) : void 0
}
function commasep(e, t, n) {
function proceed(r, o) {
if (n ? n.indexOf(r) > -1 : "," == r) {
var i = m.state.lexical
return (
"call" == i.info && (i.pos = (i.pos || 0) + 1),
cont(function(n, r) {
return n == t || r == t ? pass() : pass(e)
}, proceed)
)
}
return r == t || o == t ? cont() : cont(expect(t))
}
return function(n, r) {
return n == t || r == t ? cont() : pass(e, proceed)
}
}
function contCommasep(e, t, n) {
for (var r = 3; r < arguments.length; r++) m.cc.push(arguments[r])
return cont(pushlex(t, n), commasep(e, t), poplex)
}
function block(e) {
return "}" == e ? cont() : pass(statement, block)
}
function maybetype(e, t) {
if (c) {
if (":" == e) return cont(typeexpr)
if ("?" == t) return cont(maybetype)
}
}
function typeexpr(e, t) {
return "variable" == e || "void" == t
? "keyof" == t
? ((m.marked = "keyword"), cont(typeexpr))
: ((m.marked = "type"), cont(afterType))
: "string" == e || "number" == e || "atom" == e
? cont(afterType)
: "[" == e
? cont(
pushlex("]"),
commasep(typeexpr, "]", ","),
poplex,
afterType
)
: "{" == e
? cont(
pushlex("}"),
commasep(typeprop, "}", ",;"),
poplex,
afterType
)
: "(" == e
? cont(commasep(typearg, ")"), maybeReturnType)
: void 0
}
function maybeReturnType(e) {
if ("=>" == e) return cont(typeexpr)
}
function typeprop(e, t) {
return "variable" == e || "keyword" == m.style
? ((m.marked = "property"), cont(typeprop))
: "?" == t
? cont(typeprop)
: ":" == e
? cont(typeexpr)
: "[" == e
? cont(expression, maybetype, expect("]"), typeprop)
: void 0
}
function typearg(e) {
return "variable" == e
? cont(typearg)
: ":" == e ? cont(typeexpr) : void 0
}
function afterType(e, t) {
return "<" == t
? cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
: "|" == t || "." == e
? cont(typeexpr)
: "[" == e
? cont(expect("]"), afterType)
: "extends" == t ? cont(typeexpr) : void 0
}
function maybeTypeArgs(e, t) {
if ("<" == t)
return cont(
pushlex(">"),
commasep(typeexpr, ">"),
poplex,
afterType
)
}
function vardef() {
return pass(pattern, maybetype, maybeAssign, vardefCont)
}
function pattern(e, t) {
return "modifier" == e
? cont(pattern)
: "variable" == e
? (register(t), cont())
: "spread" == e
? cont(pattern)
: "[" == e
? contCommasep(pattern, "]")
: "{" == e ? contCommasep(proppattern, "}") : void 0
}
function proppattern(e, t) {
return "variable" != e || m.stream.match(/^\s*:/, !1)
? ("variable" == e && (m.marked = "property"),
"spread" == e
? cont(pattern)
: "}" == e ? pass() : cont(expect(":"), pattern, maybeAssign))
: (register(t), cont(maybeAssign))
}
function maybeAssign(e, t) {
if ("=" == t) return cont(expressionNoComma)
}
function vardefCont(e) {
if ("," == e) return cont(vardef)
}
function maybeelse(e, t) {
if ("keyword b" == e && "else" == t)
return cont(pushlex("form", "else"), statement, poplex)
}
function forspec(e) {
if ("(" == e) return cont(pushlex(")"), forspec1, expect(")"), poplex)
}
function forspec1(e) {
return "var" == e
? cont(vardef, expect(";"), forspec2)
: ";" == e
? cont(forspec2)
: "variable" == e
? cont(formaybeinof)
: pass(expression, expect(";"), forspec2)
}
function formaybeinof(e, t) {
return "in" == t || "of" == t
? ((m.marked = "keyword"), cont(expression))
: cont(maybeoperatorComma, forspec2)
}
function forspec2(e, t) {
return ";" == e
? cont(forspec3)
: "in" == t || "of" == t
? ((m.marked = "keyword"), cont(expression))
: pass(expression, expect(";"), forspec3)
}
function forspec3(e) {
")" != e && cont(expression)
}
function functiondef(e, t) {
return "*" == t
? ((m.marked = "keyword"), cont(functiondef))
: "variable" == e
? (register(t), cont(functiondef))
: "(" == e
? cont(
pushcontext,
pushlex(")"),
commasep(funarg, ")"),
poplex,
maybetype,
statement,
popcontext
)
: c && "<" == t
? cont(
pushlex(">"),
commasep(typeexpr, ">"),
poplex,
functiondef
)
: void 0
}
function funarg(e, t) {
return (
"@" == t && cont(expression, funarg),
"spread" == e || "modifier" == e
? cont(funarg)
: pass(pattern, maybetype, maybeAssign)
)
}
function classExpression(e, t) {
return "variable" == e ? className(e, t) : classNameAfter(e, t)
}
function className(e, t) {
if ("variable" == e) return register(t), cont(classNameAfter)
}
function classNameAfter(e, t) {
return "<" == t
? cont(
pushlex(">"),
commasep(typeexpr, ">"),
poplex,
classNameAfter
)
: "extends" == t || "implements" == t || (c && "," == e)
? cont(c ? typeexpr : expression, classNameAfter)
: "{" == e ? cont(pushlex("}"), classBody, poplex) : void 0
}
function classBody(e, t) {
return "modifier" == e ||
"async" == e ||
("variable" == e &&
("static" == t || "get" == t || "set" == t) &&
m.stream.match(/^\s+[\w$\xa1-\uffff]/, !1))
? ((m.marked = "keyword"), cont(classBody))
: "variable" == e || "keyword" == m.style
? ((m.marked = "property"),
cont(c ? classfield : functiondef, classBody))
: "[" == e
? cont(
expression,
expect("]"),
c ? classfield : functiondef,
classBody
)
: "*" == t
? ((m.marked = "keyword"), cont(classBody))
: ";" == e
? cont(classBody)
: "}" == e
? cont()
: "@" == t ? cont(expression, classBody) : void 0
}
function classfield(e, t) {
return "?" == t
? cont(classfield)
: ":" == e
? cont(typeexpr, maybeAssign)
: "=" == t ? cont(expressionNoComma) : pass(functiondef)
}
function afterExport(e, t) {
return "*" == t
? ((m.marked = "keyword"), cont(maybeFrom, expect(";")))
: "default" == t
? ((m.marked = "keyword"), cont(expression, expect(";")))
: "{" == e
? cont(commasep(exportField, "}"), maybeFrom, expect(";"))
: pass(statement)
}
function exportField(e, t) {
return "as" == t
? ((m.marked = "keyword"), cont(expect("variable")))
: "variable" == e ? pass(expressionNoComma, exportField) : void 0
}
function afterImport(e) {
return "string" == e
? cont()
: pass(importSpec, maybeMoreImports, maybeFrom)
}
function importSpec(e, t) {
return "{" == e
? contCommasep(importSpec, "}")
: ("variable" == e && register(t),
"*" == t && (m.marked = "keyword"),
cont(maybeAs))
}
function maybeMoreImports(e) {
if ("," == e) return cont(importSpec, maybeMoreImports)
}
function maybeAs(e, t) {
if ("as" == t) return (m.marked = "keyword"), cont(importSpec)
}
function maybeFrom(e, t) {
if ("from" == t) return (m.marked = "keyword"), cont(expression)
}
function arrayLiteral(e) {
return "]" == e ? cont() : pass(commasep(expressionNoComma, "]"))
}
function isContinuedStatement(e, t) {
return (
"operator" == e.lastType ||
"," == e.lastType ||
p.test(t.charAt(0)) ||
/[,.]/.test(t.charAt(0))
)
}
function expressionAllowed(e, t, n) {
return (
(t.tokenize == tokenBase &&
/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(
t.lastType
)) ||
("quasi" == t.lastType &&
/\{\s*$/.test(e.string.slice(0, e.pos - (n || 0))))
)
}
var r,
o,
i = t.indentUnit,
a = n.statementIndent,
s = n.jsonld,
l = n.json || s,
c = n.typescript,
u = n.wordCharacters || /[\w$\xa1-\uffff]/,
d = (function() {
function kw(e) {
return { type: e, style: "keyword" }
}
var e = kw("keyword a"),
t = kw("keyword b"),
n = kw("keyword c"),
r = kw("keyword d"),
o = kw("operator"),
i = { type: "atom", style: "atom" },
a = {
if: kw("if"),
while: e,
with: e,
else: t,
do: t,
try: t,
finally: t,
return: r,
break: r,
continue: r,
new: kw("new"),
delete: n,
void: n,
throw: n,
debugger: kw("debugger"),
var: kw("var"),
const: kw("var"),
let: kw("var"),
function: kw("function"),
catch: kw("catch"),
for: kw("for"),
switch: kw("switch"),
case: kw("case"),
default: kw("default"),
in: o,
typeof: o,
instanceof: o,
true: i,
false: i,
null: i,
undefined: i,
NaN: i,
Infinity: i,
this: kw("this"),
class: kw("class"),
super: kw("atom"),
yield: n,
export: kw("export"),
import: kw("import"),
extends: n,
await: n,
}
if (c) {
var s = { type: "variable", style: "type" },
l = {
interface: kw("class"),
implements: n,
namespace: n,
module: kw("module"),
enum: kw("module"),
public: kw("modifier"),
private: kw("modifier"),
protected: kw("modifier"),
abstract: kw("modifier"),
readonly: kw("modifier"),
string: s,
number: s,
boolean: s,
any: s,
}
for (var u in l) a[u] = l[u]
}
return a
})(),
p = /[+\-*&%=<>!?|~^@]/,
h = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,
f = "([{}])",
g = {
atom: !0,
number: !0,
variable: !0,
string: !0,
regexp: !0,
this: !0,
"jsonld-keyword": !0,
},
m = { state: null, column: null, marked: null, cc: null },
v = { name: "this", next: { name: "arguments" } }
return (
(poplex.lex = !0),
{
startState: function(e) {
var t = {
tokenize: tokenBase,
lastType: "sof",
cc: [],
lexical: new JSLexical((e || 0) - i, 0, "block", !1),
localVars: n.localVars,
context: n.localVars && { vars: n.localVars },
indented: e || 0,
}
return (
n.globalVars &&
"object" == typeof n.globalVars &&
(t.globalVars = n.globalVars),
t
)
},
token: function(e, t) {
if (
(e.sol() &&
(t.lexical.hasOwnProperty("align") || (t.lexical.align = !1),
(t.indented = e.indentation()),
findFatArrow(e, t)),
t.tokenize != tokenComment && e.eatSpace())
)
return null
var n = t.tokenize(e, t)
return "comment" == r
? n
: ((t.lastType =
"operator" != r || ("++" != o && "--" != o) ? r : "incdec"),
parseJS(t, n, r, o, e))
},
indent: function(t, r) {
if (t.tokenize == tokenComment) return e.Pass
if (t.tokenize != tokenBase) return 0
var o,
s = r && r.charAt(0),
l = t.lexical
if (!/^\s*else\b/.test(r))
for (var c = t.cc.length - 1; c >= 0; --c) {
var u = t.cc[c]
if (u == poplex) l = l.prev
else if (u != maybeelse) break
}
for (
;
("stat" == l.type || "form" == l.type) &&
("}" == s ||
((o = t.cc[t.cc.length - 1]) &&
(o == maybeoperatorComma || o == maybeoperatorNoComma) &&
!/^[,\.=+\-*:?[\(]/.test(r)));
)
l = l.prev
a && ")" == l.type && "stat" == l.prev.type && (l = l.prev)
var d = l.type,
p = s == d
return "vardef" == d
? l.indented +
("operator" == t.lastType || "," == t.lastType
? l.info + 1
: 0)
: "form" == d && "{" == s
? l.indented
: "form" == d
? l.indented + i
: "stat" == d
? l.indented + (isContinuedStatement(t, r) ? a || i : 0)
: "switch" != l.info || p || 0 == n.doubleIndentSwitch
? l.align
? l.column + (p ? 0 : 1)
: l.indented + (p ? 0 : i)
: l.indented +
(/^(?:case|default)\b/.test(r) ? i : 2 * i)
},
electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
blockCommentStart: l ? null : "/*",
blockCommentEnd: l ? null : "*/",
blockCommentContinue: l ? null : " * ",
lineComment: l ? null : "//",
fold: "brace",
closeBrackets: "()[]{}''\"\"``",
helperType: l ? "json" : "javascript",
jsonldMode: s,
jsonMode: l,
expressionAllowed: expressionAllowed,
skipExpression: function(e) {
var t = e.cc[e.cc.length - 1]
;(t != expression && t != expressionNoComma) || e.cc.pop()
},
}
)
}),
e.registerHelper("wordChars", "javascript", /[\w$]/),
e.defineMIME("text/javascript", "javascript"),
e.defineMIME("text/ecmascript", "javascript"),
e.defineMIME("application/javascript", "javascript"),
e.defineMIME("application/x-javascript", "javascript"),
e.defineMIME("application/ecmascript", "javascript"),
e.defineMIME("application/json", { name: "javascript", json: !0 }),
e.defineMIME("application/x-json", { name: "javascript", json: !0 }),
e.defineMIME("application/ld+json", { name: "javascript", jsonld: !0 }),
e.defineMIME("text/typescript", { name: "javascript", typescript: !0 }),
e.defineMIME("application/typescript", {
name: "javascript",
typescript: !0,
})
})
},
"./node_modules/codemirror/mode/jsx/jsx.js": function(e, t, n) {
!(function(e) {
e(
n("./node_modules/codemirror/lib/codemirror.js"),
n("./node_modules/codemirror/mode/xml/xml.js"),
n("./node_modules/codemirror/mode/javascript/javascript.js")
)
})(function(e) {
"use strict"
function Context(e, t, n, r) {
;(this.state = e), (this.mode = t), (this.depth = n), (this.prev = r)
}
function copyContext(t) {
return new Context(
e.copyState(t.mode, t.state),
t.mode,
t.depth,
t.prev && copyContext(t.prev)
)
}
e.defineMode(
"jsx",
function(t, n) {
function flatXMLIndent(e) {
var t = e.tagName
e.tagName = null
var n = r.indent(e, "")
return (e.tagName = t), n
}
function token(e, t) {
return t.context.mode == r
? xmlToken(e, t, t.context)
: jsToken(e, t, t.context)
}
function xmlToken(n, i, a) {
if (2 == a.depth)
return (
n.match(/^.*?\*\//) ? (a.depth = 1) : n.skipToEnd(), "comment"
)
if ("{" == n.peek()) {
r.skipAttribute(a.state)
var s = flatXMLIndent(a.state),
l = a.state.context
if (l && n.match(/^[^>]*>\s*$/, !1)) {
for (; l.prev && !l.startOfLine; ) l = l.prev
l.startOfLine
? (s -= t.indentUnit)
: a.prev.state.lexical && (s = a.prev.state.lexical.indented)
} else 1 == a.depth && (s += t.indentUnit)
return (
(i.context = new Context(e.startState(o, s), o, 0, i.context)),
null
)
}
if (1 == a.depth) {
if ("<" == n.peek())
return (
r.skipAttribute(a.state),
(i.context = new Context(
e.startState(r, flatXMLIndent(a.state)),
r,
0,
i.context
)),
null
)
if (n.match("//")) return n.skipToEnd(), "comment"
if (n.match("/*")) return (a.depth = 2), token(n, i)
}
var c,
u = r.token(n, a.state),
d = n.current()
return (
/\btag\b/.test(u)
? />$/.test(d)
? a.state.context
? (a.depth = 0)
: (i.context = i.context.prev)
: /^</.test(d) && (a.depth = 1)
: !u && (c = d.indexOf("{")) > -1 && n.backUp(d.length - c),
u
)
}
function jsToken(t, n, i) {
if ("<" == t.peek() && o.expressionAllowed(t, i.state))
return (
o.skipExpression(i.state),
(n.context = new Context(
e.startState(r, o.indent(i.state, "")),
r,
0,
n.context
)),
null
)
var a = o.token(t, i.state)
if (!a && null != i.depth) {
var s = t.current()
"{" == s
? i.depth++
: "}" == s && 0 == --i.depth && (n.context = n.context.prev)
}
return a
}
var r = e.getMode(t, {
name: "xml",
allowMissing: !0,
multilineTagIndentPastTag: !1,
}),
o = e.getMode(t, (n && n.base) || "javascript")
return {
startState: function() {
return { context: new Context(e.startState(o), o) }
},
copyState: function(e) {
return { context: copyContext(e.context) }
},
token: token,
indent: function(e, t, n) {
return e.context.mode.indent(e.context.state, t, n)
},
innerMode: function(e) {
return e.context
},
}
},
"xml",
"javascript"
),
e.defineMIME("text/jsx", "jsx"),
e.defineMIME("text/typescript-jsx", {
name: "jsx",
base: { name: "javascript", typescript: !0 },
})
})
},
"./node_modules/codemirror/mode/xml/xml.js": function(e, t, n) {
!(function(e) {
e(n("./node_modules/codemirror/lib/codemirror.js"))
})(function(e) {
"use strict"
var t = {
autoSelfClosers: {
area: !0,
base: !0,
br: !0,
col: !0,
command: !0,
embed: !0,
frame: !0,
hr: !0,
img: !0,
input: !0,
keygen: !0,
link: !0,
meta: !0,
param: !0,
source: !0,
track: !0,
wbr: !0,
menuitem: !0,
},
implicitlyClosed: {
dd: !0,
li: !0,
optgroup: !0,
option: !0,
p: !0,
rp: !0,
rt: !0,
tbody: !0,
td: !0,
tfoot: !0,
th: !0,
tr: !0,
},
contextGrabbers: {
dd: { dd: !0, dt: !0 },
dt: { dd: !0, dt: !0 },
li: { li: !0 },
option: { option: !0, optgroup: !0 },
optgroup: { optgroup: !0 },
p: {
address: !0,
article: !0,
aside: !0,
blockquote: !0,
dir: !0,
div: !0,
dl: !0,
fieldset: !0,
footer: !0,
form: !0,
h1: !0,
h2: !0,
h3: !0,
h4: !0,
h5: !0,
h6: !0,
header: !0,
hgroup: !0,
hr: !0,
menu: !0,
nav: !0,
ol: !0,
p: !0,
pre: !0,
section: !0,
table: !0,
ul: !0,
},
rp: { rp: !0, rt: !0 },
rt: { rp: !0, rt: !0 },
tbody: { tbody: !0, tfoot: !0 },
td: { td: !0, th: !0 },
tfoot: { tbody: !0 },
th: { td: !0, th: !0 },
thead: { tbody: !0, tfoot: !0 },
tr: { tr: !0 },
},
doNotIndent: { pre: !0 },
allowUnquoted: !0,
allowMissing: !0,
caseFold: !0,
},
n = {
autoSelfClosers: {},
implicitlyClosed: {},
contextGrabbers: {},
doNotIndent: {},
allowUnquoted: !1,
allowMissing: !1,
caseFold: !1,
}
e.defineMode("xml", function(r, o) {
function inText(e, t) {
function chain(n) {
return (t.tokenize = n), n(e, t)
}
var n = e.next()
if ("<" == n)
return e.eat("!")
? e.eat("[")
? e.match("CDATA[") ? chain(inBlock("atom", "]]>")) : null
: e.match("--")
? chain(inBlock("comment", "--\x3e"))
: e.match("DOCTYPE", !0, !0)
? (e.eatWhile(/[\w\._\-]/), chain(doctype(1)))
: null
: e.eat("?")
? (e.eatWhile(/[\w\._\-]/),
(t.tokenize = inBlock("meta", "?>")),
"meta")
: ((c = e.eat("/") ? "closeTag" : "openTag"),
(t.tokenize = inTag),
"tag bracket")
if ("&" == n) {
return (e.eat("#")
? e.eat("x")
? e.eatWhile(/[a-fA-F\d]/) && e.eat(";")
: e.eatWhile(/[\d]/) && e.eat(";")
: e.eatWhile(/[\w\.\-:]/) && e.eat(";"))
? "atom"
: "error"
}
return e.eatWhile(/[^&<]/), null
}
function inTag(e, t) {
var n = e.next()
if (">" == n || ("/" == n && e.eat(">")))
return (
(t.tokenize = inText),
(c = ">" == n ? "endTag" : "selfcloseTag"),
"tag bracket"
)
if ("=" == n) return (c = "equals"), null
if ("<" == n) {
;(t.tokenize = inText),
(t.state = baseState),
(t.tagName = t.tagStart = null)
var r = t.tokenize(e, t)
return r ? r + " tag error" : "tag error"
}
return /[\'\"]/.test(n)
? ((t.tokenize = inAttribute(n)),
(t.stringStartCol = e.column()),
t.tokenize(e, t))
: (e.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/), "word")
}
function inAttribute(e) {
var t = function(t, n) {
for (; !t.eol(); )
if (t.next() == e) {
n.tokenize = inTag
break
}
return "string"
}
return (t.isInAttribute = !0), t
}
function inBlock(e, t) {
return function(n, r) {
for (; !n.eol(); ) {
if (n.match(t)) {
r.tokenize = inText
break
}
n.next()
}
return e
}
}
function doctype(e) {
return function(t, n) {
for (var r; null != (r = t.next()); ) {
if ("<" == r)
return (n.tokenize = doctype(e + 1)), n.tokenize(t, n)
if (">" == r) {
if (1 == e) {
n.tokenize = inText
break
}
return (n.tokenize = doctype(e - 1)), n.tokenize(t, n)
}
}
return "meta"
}
}
function Context(e, t, n) {
;(this.prev = e.context),
(this.tagName = t),
(this.indent = e.indented),
(this.startOfLine = n),
(a.doNotIndent.hasOwnProperty(t) ||
(e.context && e.context.noIndent)) &&
(this.noIndent = !0)
}
function popContext(e) {
e.context && (e.context = e.context.prev)
}
function maybePopContext(e, t) {
for (var n; ; ) {
if (!e.context) return
if (
((n = e.context.tagName),
!a.contextGrabbers.hasOwnProperty(n) ||
!a.contextGrabbers[n].hasOwnProperty(t))
)
return
popContext(e)
}
}
function baseState(e, t, n) {
return "openTag" == e
? ((n.tagStart = t.column()), tagNameState)
: "closeTag" == e ? closeTagNameState : baseState
}
function tagNameState(e, t, n) {
return "word" == e
? ((n.tagName = t.current()), (u = "tag"), attrState)
: ((u = "error"), tagNameState)
}
function closeTagNameState(e, t, n) {
if ("word" == e) {
var r = t.current()
return (
n.context &&
n.context.tagName != r &&
a.implicitlyClosed.hasOwnProperty(n.context.tagName) &&
popContext(n),
(n.context && n.context.tagName == r) || !1 === a.matchClosing
? ((u = "tag"), closeState)
: ((u = "tag error"), closeStateErr)
)
}
return (u = "error"), closeStateErr
}
function closeState(e, t, n) {
return "endTag" != e
? ((u = "error"), closeState)
: (popContext(n), baseState)
}
function closeStateErr(e, t, n) {
return (u = "error"), closeState(e, t, n)
}
function attrState(e, t, n) {
if ("word" == e) return (u = "attribute"), attrEqState
if ("endTag" == e || "selfcloseTag" == e) {
var r = n.tagName,
o = n.tagStart
return (
(n.tagName = n.tagStart = null),
"selfcloseTag" == e || a.autoSelfClosers.hasOwnProperty(r)
? maybePopContext(n, r)
: (maybePopContext(n, r),
(n.context = new Context(n, r, o == n.indented))),
baseState
)
}
return (u = "error"), attrState
}
function attrEqState(e, t, n) {
return "equals" == e
? attrValueState
: (a.allowMissing || (u = "error"), attrState(e, t, n))
}
function attrValueState(e, t, n) {
return "string" == e
? attrContinuedState
: "word" == e && a.allowUnquoted
? ((u = "string"), attrState)
: ((u = "error"), attrState(e, t, n))
}
function attrContinuedState(e, t, n) {
return "string" == e ? attrContinuedState : attrState(e, t, n)
}
var i = r.indentUnit,
a = {},
s = o.htmlMode ? t : n
for (var l in s) a[l] = s[l]
for (var l in o) a[l] = o[l]
var c, u
return (
(inText.isInText = !0),
{
startState: function(e) {
var t = {
tokenize: inText,
state: baseState,
indented: e || 0,
tagName: null,
tagStart: null,
context: null,
}
return null != e && (t.baseIndent = e), t
},
token: function(e, t) {
if (
(!t.tagName && e.sol() && (t.indented = e.indentation()),
e.eatSpace())
)
return null
c = null
var n = t.tokenize(e, t)
return (
(n || c) &&
"comment" != n &&
((u = null),
(t.state = t.state(c || n, e, t)),
u && (n = "error" == u ? n + " error" : u)),
n
)
},
indent: function(t, n, r) {
var o = t.context
if (t.tokenize.isInAttribute)
return t.tagStart == t.indented
? t.stringStartCol + 1
: t.indented + i
if (o && o.noIndent) return e.Pass
if (t.tokenize != inTag && t.tokenize != inText)
return r ? r.match(/^(\s*)/)[0].length : 0
if (t.tagName)
return !1 !== a.multilineTagIndentPastTag
? t.tagStart + t.tagName.length + 2
: t.tagStart + i * (a.multilineTagIndentFactor || 1)
if (a.alignCDATA && /<!\[CDATA\[/.test(n)) return 0
var s = n && /^<(\/)?([\w_:\.-]*)/.exec(n)
if (s && s[1])
for (; o; ) {
if (o.tagName == s[2]) {
o = o.prev
break
}
if (!a.implicitlyClosed.hasOwnProperty(o.tagName)) break
o = o.prev
}
else if (s)
for (; o; ) {
var l = a.contextGrabbers[o.tagName]
if (!l || !l.hasOwnProperty(s[2])) break
o = o.prev
}
for (; o && o.prev && !o.startOfLine; ) o = o.prev
return o ? o.indent + i : t.baseIndent || 0
},
electricInput: /<\/[\s\w:]+>$/,
blockCommentStart: "\x3c!--",
blockCommentEnd: "--\x3e",
configuration: a.htmlMode ? "html" : "xml",
helperType: a.htmlMode ? "html" : "xml",
skipAttribute: function(e) {
e.state == attrValueState && (e.state = attrState)
},
}
)
}),
e.defineMIME("text/xml", "xml"),
e.defineMIME("application/xml", "xml"),
e.mimeModes.hasOwnProperty("text/html") ||
e.defineMIME("text/html", { name: "xml", htmlMode: !0 })
})
},
"./node_modules/react-codemirror2/index.js": function(e, t, n) {
"use strict"
function _classCallCheck(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function _possibleConstructorReturn(e, t) {
if (!e)
throw new ReferenceError(
"this hasn't been initialised - super() hasn't been called"
)
return !t || ("object" != typeof t && "function" != typeof t) ? e : t
}
function _inherits(e, t) {
if ("function" != typeof t && null !== t)
throw new TypeError(
"Super expression must either be null or a function, not " + typeof t
)
;(e.prototype = Object.create(t && t.prototype, {
constructor: {
value: e,
enumerable: !1,
writable: !0,
configurable: !0,
},
})),
t &&
(Object.setPrototypeOf
? Object.setPrototypeOf(e, t)
: (e.__proto__ = t))
}
Object.defineProperty(t, "__esModule", { value: !0 })
var r = (function() {
function defineProperties(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n]
;(r.enumerable = r.enumerable || !1),
(r.configurable = !0),
"value" in r && (r.writable = !0),
Object.defineProperty(e, r.key, r)
}
}
return function(e, t, n) {
return (
t && defineProperties(e.prototype, t),
n && defineProperties(e, n),
e
)
}
})(),
o = (function _interopRequireDefault(e) {
return e && e.__esModule ? e : { default: e }
})(n("./node_modules/react/react.js")),
i = n("./node_modules/codemirror/lib/codemirror.js"),
a = (function(e) {
function CodeMirror(e) {
_classCallCheck(this, CodeMirror)
var t = _possibleConstructorReturn(
this,
(CodeMirror.__proto__ || Object.getPrototypeOf(CodeMirror)).call(
this,
e
)
)
return (
(t.hydrated = !1),
(t.continuePreSet = !1),
(t.continuePreChange = !1),
(t.onBeforeChangeCb = function() {
t.continuePreChange = !0
}),
(t.onBeforeSetCb = function() {
t.continuePreSet = !0
}),
(t.initCb = function() {
t.props.editorDidConfigure && t.props.editorDidConfigure(t.editor)
}),
t
)
}
return (
_inherits(CodeMirror, o.default.Component),
r(CodeMirror, [
{
key: "componentWillMount",
value: function componentWillMount() {
this.props.editorWillMount && this.props.editorWillMount()
},
},
{
key: "componentDidMount",
value: function componentDidMount() {
var e = this
this.props.defineMode &&
this.props.defineMode.name &&
this.props.defineMode.fn &&
i.defineMode(
this.props.defineMode.name,
this.props.defineMode.fn
),
(this.editor = i(this.ref)),
this.editor.on("beforeChange", function(t, n) {
e.props.onBeforeChange &&
e.hydrated &&
e.props.onBeforeChange(e.editor, n, e.onBeforeChangeCb)
}),
this.editor.on("change", function(t, n) {
e.props.onChange &&
e.hydrated &&
(e.props.onBeforeChange
? e.continuePreChange &&
e.props.onChange(e.editor, n, e.editor.getValue())
: e.props.onChange(e.editor, n, e.editor.getValue()))
}),
this.props.onCursorActivity &&
this.editor.on("cursorActivity", function(t) {
e.props.onViewportChange(e.editor)
}),
this.props.onViewportChange &&
this.editor.on("viewportChange", function(t, n, r) {
e.props.onViewportChange(e.editor, n, r)
}),
this.props.onGutterClick &&
this.editor.on("gutterClick", function(t, n, r) {
e.props.onGutterClick(e.editor, n, r)
}),
this.props.onFocus &&
this.editor.on("focus", function(t, n) {
e.props.onFocus(e.editor, n)
}),
this.props.onBlur &&
this.editor.on("blur", function(t, n) {
e.props.onBlur(e.editor, n)
}),
this.props.onUpdate &&
this.editor.on("update", function(t, n) {
e.props.onUpdate(e.editor, n)
}),
this.props.onKeyDown &&
this.editor.on("keydown", function(t, n) {
e.props.onKeyDown(e.editor, n)
}),
this.props.onKeyUp &&
this.editor.on("keyup", function(t, n) {
e.props.onKeyUp(e.editor, n)
}),
this.props.onKeyPress &&
this.editor.on("keypress", function(t, n) {
e.props.onKeyPress(e.editor, n)
}),
this.props.onDragEnter &&
this.editor.on("dragenter", function(t, n) {
e.props.onDragEnter(e.editor, n)
}),
this.props.onDragOver &&
this.editor.on("dragover", function(t, n) {
e.props.onDragOver(e.editor, n)
}),
this.props.onDrop &&
this.editor.on("drop", function(t, n) {
e.props.onDrop(e.editor, n)
}),
this.props.onSelection &&
this.editor.on("beforeSelectionChange", function(t, n) {
e.props.onSelection(e.editor, n.ranges)
}),
this.props.onScroll &&
this.editor.on("scroll", function(t) {
var n = e.editor.getScrollInfo()
e.props.onScroll(e.editor, { x: n.left, y: n.top })
}),
this.props.onCursor &&
this.editor.on("cursorActivity", function(t) {
var n = e.editor.getCursor()
e.props.onCursor(e.editor, { line: n.line, ch: n.ch })
}),
this.hydrate(this.props),
this.props.selection &&
this.editor.setSelections(this.props.selection),
this.props.cursor &&
(this.editor.focus(),
this.editor.setCursor(this.props.cursor)),
this.props.scroll &&
this.editor.scrollTo(
this.props.scroll.x,
this.props.scroll.y
),
this.props.editorDidMount &&
this.props.editorDidMount(this.editor, this.initCb)
},
},
{
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(e) {
this.props.value !== e.value && (this.hydrated = !1),
this.props.resetCursorOnSet ||
(this.cursorPos = this.editor.getCursor()),
this.hydrate(e),
this.props.resetCursorOnSet ||
(this.props.autoScrollCursorOnSet ||
void 0 === this.props.autoScrollCursorOnSet
? this.editor.setCursor(this.cursorPos)
: this.editor.setCursor(this.cursorPos, null, {
scroll: !1,
}))
},
},
{
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.props.editorWillUnmount && this.props.editorWillUnmount(i)
},
},
{
key: "hydrate",
value: function hydrate(e) {
var t = this
if (
(Object.keys(e.options || {}).forEach(function(n) {
return t.editor.setOption(n, e.options[n])
}),
this.props.editorDidConfigure &&
this.props.editorDidConfigure(this.editor),
!this.hydrated)
) {
var n = this.editor.lastLine(),
r = this.editor.getLine(this.editor.lastLine()).length
this.editor.replaceRange(
e.value || "",
{ line: 0, ch: 0 },
{ line: n, ch: r }
),
this.props.onBeforeSet &&
this.props.onBeforeSet(this.editor, this.onBeforeSetCb),
this.props.onBeforeSet
? this.continuePreSet &&
this.props.onSet &&
this.props.onSet(this.editor, this.editor.getValue())
: this.props.onSet &&
this.props.onSet(this.editor, this.editor.getValue())
}
this.hydrated = !0
},
},
{
key: "render",
value: function render() {
var e = this,
t = this.props.className
? "react-codemirror2 " + this.props.className
: "react-codemirror2"
return o.default.createElement("div", {
className: t,
ref: function ref(t) {
return (e.ref = t)
},
})
},
},
]),
CodeMirror
)
})()
t.default = a
},
"./node_modules/react-styleguidist/lib/rsg-components/Editor/Editor.js": function(
e,
t,
n
) {
"use strict"
function _classCallCheck(e, t) {
if (!(e instanceof t))
throw new TypeError("Cannot call a class as a function")
}
function _possibleConstructorReturn(e, t) {
if (!e)
throw new ReferenceError(
"this hasn't been initialised - super() hasn't been called"
)
return !t || ("object" != typeof t && "function" != typeof t) ? e : t
}
function _inherits(e, t) {
if ("function" != typeof t && null !== t)
throw new TypeError(
"Super expression must either be null or a function, not " + typeof t
)
;(e.prototype = Object.create(t && t.prototype, {
constructor: {
value: e,
enumerable: !1,
writable: !0,
configurable: !0,
},
})),
t &&
(Object.setPrototypeOf
? Object.setPrototypeOf(e, t)
: (e.__proto__ = t))
}
Object.defineProperty(t, "__esModule", { value: !0 })
var r = n("./node_modules/react/react.js"),
o = n.n(r),
i = n("./node_modules/prop-types/index.js"),
a = n.n(i),
s = n("./node_modules/lodash/debounce.js"),
l = n.n(s),
c = n("./node_modules/react-codemirror2/index.js"),
u = n.n(c),
d = n("./node_modules/codemirror/mode/jsx/jsx.js"),
p = (n.n(d),
Object.assign ||
function(e) {
for (var t = 1; t < arguments.length; t++) {
var n = arguments[t]
for (var r in n)
Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r])
}
return e
}),
h = (function() {
function defineProperties(e, t) {
for (var n = 0; n < t.length; n++) {
var r = t[n]
;(r.enumerable = r.enumerable || !1),
(r.configurable = !0),
"value" in r && (r.writable = !0),
Object.defineProperty(e, r.key, r)
}
}
return function(e, t, n) {
return (
t && defineProperties(e.prototype, t),
n && defineProperties(e, n),
e
)
}
})()
n(
"./node_modules/react-styleguidist/loaders/style-loader.js!./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/lib/codemirror.css"
),
n(
"./node_modules/react-styleguidist/loaders/style-loader.js!./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/theme/base16-light.css"
)
var f = {
mode: "jsx",
lineNumbers: !1,
lineWrapping: !0,
smartIndent: !1,
matchBrackets: !0,
viewportMargin: 1 / 0,
},
g = 10,
m = (function(e) {
function Editor() {
_classCallCheck(this, Editor)
var e = _possibleConstructorReturn(
this,
(Editor.__proto__ || Object.getPrototypeOf(Editor)).call(this)
)
return (e.handleChange = l()(e.handleChange.bind(e), g)), e
}
return (
_inherits(Editor, r["Component"]),
h(Editor, [
{
key: "shouldComponentUpdate",
value: function shouldComponentUpdate() {
return !1
},
},
{
key: "handleChange",
value: function handleChange(e, t, n) {
this.props.onChange(n)
},
},
{
key: "render",
value: function render() {
var e = this.props.code,
t = this.context.config.highlightTheme,
n = p({}, f, { theme: t })
return o.a.createElement(u.a, {
value: e,
onChange: this.handleChange,
options: n,
})
},
},
]),
Editor
)
})()
;(m.propTypes = {
code: a.a.string.isRequired,
onChange: a.a.func.isRequired,
}),
(m.contextTypes = { config: a.a.object.isRequired }),
(t.default = m)
},
"./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/lib/codemirror.css": function(
e,
t,
n
) {
;(e.exports = n(
"./node_modules/react-styleguidist/node_modules/css-loader/lib/css-base.js"
)(void 0)).push([
e.i,
"/* BASICS */\n\n.CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-family: monospace;\n height: 300px;\n color: black;\n direction: ltr;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre {\n padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n}\n.cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n}\n.cm-fat-cursor div.CodeMirror-cursors {\n z-index: 1;\n}\n.cm-fat-cursor-mark {\n background-color: rgba(20, 255, 20, 0.5);\n -webkit-animation: blink 1.06s steps(1) infinite;\n -moz-animation: blink 1.06s steps(1) infinite;\n animation: blink 1.06s steps(1) infinite;\n}\n.cm-animate-fat-cursor {\n width: auto;\n border: 0;\n -webkit-animation: blink 1.06s steps(1) infinite;\n -moz-animation: blink 1.06s steps(1) infinite;\n animation: blink 1.06s steps(1) infinite;\n background-color: #7e7;\n}\n@-moz-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@-webkit-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\n.CodeMirror-overwrite .CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-rulers {\n position: absolute;\n left: 0; right: 0; top: -50px; bottom: -20px;\n overflow: hidden;\n}\n.CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0; bottom: 0;\n position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n.CodeMirror-composing { border-bottom: 2px solid; }\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n position: relative;\n overflow: hidden;\n background: white;\n}\n\n.CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 30px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -30px; margin-right: -30px;\n padding-bottom: 30px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n}\n.CodeMirror-sizer {\n position: relative;\n border-right: 30px solid transparent;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 6;\n display: none;\n}\n.CodeMirror-vscrollbar {\n right: 0; top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n bottom: 0; left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n position: absolute; left: 0; top: 0;\n min-height: 100%;\n z-index: 3;\n}\n.CodeMirror-gutter {\n white-space: normal;\n height: 100%;\n display: inline-block;\n vertical-align: top;\n margin-bottom: -30px;\n}\n.CodeMirror-gutter-wrapper {\n position: absolute;\n z-index: 4;\n background: none !important;\n border: none !important;\n}\n.CodeMirror-gutter-background {\n position: absolute;\n top: 0; bottom: 0;\n z-index: 4;\n}\n.CodeMirror-gutter-elt {\n position: absolute;\n cursor: default;\n z-index: 4;\n}\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\n\n.CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre {\n /* Reset some styles that the rest of the page might have set */\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: inherit;\n color: inherit;\n z-index: 2;\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n}\n.CodeMirror-wrap pre {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n}\n\n.CodeMirror-linebackground {\n position: absolute;\n left: 0; right: 0; top: 0; bottom: 0;\n z-index: 0;\n}\n\n.CodeMirror-linewidget {\n position: relative;\n z-index: 2;\n overflow: auto;\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-rtl pre { direction: rtl; }\n\n.CodeMirror-code {\n outline: none;\n}\n\n/* Force content-box sizing for the elements where we expect it */\n.CodeMirror-scroll,\n.CodeMirror-sizer,\n.CodeMirror-gutter,\n.CodeMirror-gutters,\n.CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n\n.CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n}\n.CodeMirror-measure pre { position: static; }\n\ndiv.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n z-index: 3;\n}\ndiv.CodeMirror-dragcursors {\n visibility: visible;\n}\n\n.CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n background-color: #ffa;\n background-color: rgba(255, 255, 0, .4);\n}\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n /* Hide the cursor when printing */\n .CodeMirror div.CodeMirror-cursors {\n visibility: hidden;\n }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n",
"",
])
},
"./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/theme/base16-light.css": function(
e,
t,
n
) {
;(e.exports = n(
"./node_modules/react-styleguidist/node_modules/css-loader/lib/css-base.js"
)(void 0)).push([
e.i,
"/*\n\n Name: Base16 Default Light\n Author: Chris Kempson (http://chriskempson.com)\n\n CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror)\n Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\n\n.cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; }\n.cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; }\n.cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right: 0px; }\n.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; }\n.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; }\n.cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; }\n.cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; }\n\n.cm-s-base16-light span.cm-comment { color: #8f5536; }\n.cm-s-base16-light span.cm-atom { color: #aa759f; }\n.cm-s-base16-light span.cm-number { color: #aa759f; }\n\n.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute { color: #90a959; }\n.cm-s-base16-light span.cm-keyword { color: #ac4142; }\n.cm-s-base16-light span.cm-string { color: #f4bf75; }\n\n.cm-s-base16-light span.cm-variable { color: #90a959; }\n.cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; }\n.cm-s-base16-light span.cm-def { color: #d28445; }\n.cm-s-base16-light span.cm-bracket { color: #202020; }\n.cm-s-base16-light span.cm-tag { color: #ac4142; }\n.cm-s-base16-light span.cm-link { color: #aa759f; }\n.cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; }\n\n.cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC; }\n.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }\n",
"",
])
},
"./node_modules/react-styleguidist/loaders/style-loader.js!./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/lib/codemirror.css": function(
e,
t,
n
) {
var r = n(
"./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/lib/codemirror.css"
)
"string" == typeof r && (r = [[e.i, r, ""]])
var o = {}
o.transform = void 0
n("./node_modules/style-loader/lib/addStyles.js")(r, o)
r.locals && (e.exports = r.locals)
},
"./node_modules/react-styleguidist/loaders/style-loader.js!./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/theme/base16-light.css": function(
e,
t,
n
) {
var r = n(
"./node_modules/react-styleguidist/loaders/css-loader.js!./node_modules/codemirror/theme/base16-light.css"
)
"string" == typeof r && (r = [[e.i, r, ""]])
var o = {}
o.transform = void 0
n("./node_modules/style-loader/lib/addStyles.js")(r, o)
r.locals && (e.exports = r.locals)
},
})