| /* CodeMirror - Minified & Bundled |
| Generated on 2015. 08. 31. with http://codemirror.net/doc/compress.html |
| Version: HEAD |
| |
| CodeMirror Library: |
| - codemirror.js |
| Modes: |
| - css.js |
| - htmlmixed.js |
| - javascript.js |
| - perl.js |
| - python.js |
| - shell.js |
| - xml.js |
| Add-ons: |
| - active-line.js |
| - brace-fold.js |
| - closebrackets.js |
| - closetag.js |
| - foldcode.js |
| - foldgutter.js |
| - indent-fold.js |
| - match-highlighter.js |
| - matchbrackets.js |
| - matchtags.js |
| - search.js |
| - xml-fold.js |
| */ |
| |
| ! function (a) { |
| if ("object" == typeof exports && "object" == typeof module) module.exports = a(); |
| else { |
| if ("function" == typeof define && define.amd) return define([], a); |
| this.CodeMirror = a() |
| } |
| }(function () { |
| "use strict"; |
| |
| function v(a, b) { |
| if (!(this instanceof v)) return new v(a, b); |
| this.options = b = b ? hg(b) : {}, hg(Ad, b, !1), I(b); |
| var c = b.value; |
| "string" == typeof c && (c = new af(c, b.mode, null, b.lineSeparator)), this.doc = c; |
| var g = new v.inputStyles[b.inputStyle](this), |
| h = this.display = new w(a, c, g); |
| h.wrapper.CodeMirror = this, E(this), C(this), b.lineWrapping && (this.display.wrapper.className += " CodeMirror-wrap"), b.autofocus && !n && h.input.focus(), M(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 Yf, |
| keySeq: null, |
| specialChars: null |
| }; |
| var i = this; |
| d && 11 > e && setTimeout(function () { |
| i.display.input.reset(!0) |
| }, 20), pc(this), Bg(), Vb(this), this.curOp.forceUpdate = !0, ef(this, c), b.autofocus && !n || i.hasFocus() ? setTimeout(ig(Zc, this), 20) : $c(this); |
| for (var j in Bd) Bd.hasOwnProperty(j) && Bd[j](this, b[j], Dd); |
| R(this), b.finishInit && b.finishInit(this); |
| for (var k = 0; k < Hd.length; ++k) Hd[k](this); |
| Xb(this), f && b.lineWrapping && "optimizelegibility" == getComputedStyle(h.lineDiv) |
| .textRendering && (h.lineDiv.style.textRendering = "auto") |
| } |
| |
| function w(b, c, g) { |
| var h = this; |
| this.input = g, h.scrollbarFiller = pg("div", null, "CodeMirror-scrollbar-filler"), h.scrollbarFiller.setAttribute("cm-not-content", "true"), h.gutterFiller = pg("div", null, "CodeMirror-gutter-filler"), h.gutterFiller.setAttribute("cm-not-content", "true"), h.lineDiv = pg("div", null, "CodeMirror-code"), h.selectionDiv = pg("div", null, null, "position: relative; z-index: 1"), h.cursorDiv = pg("div", null, "CodeMirror-cursors"), h.measure = pg("div", null, "CodeMirror-measure"), h.lineMeasure = pg("div", null, "CodeMirror-measure"), h.lineSpace = pg("div", [h.measure, h.lineMeasure, h.selectionDiv, h.cursorDiv, h.lineDiv], null, "position: relative; outline: none"), h.mover = pg("div", [pg("div", [h.lineSpace], "CodeMirror-lines")], null, "position: relative"), h.sizer = pg("div", [h.mover], "CodeMirror-sizer"), h.sizerWidth = null, h.heightForcer = pg("div", null, null, "position: absolute; height: " + Tf + "px; width: 1px;"), h.gutters = pg("div", null, "CodeMirror-gutters"), h.lineGutter = null, h.scroller = pg("div", [h.sizer, h.heightForcer, h.gutters], "CodeMirror-scroll"), h.scroller.setAttribute("tabIndex", "-1"), h.wrapper = pg("div", [h.scrollbarFiller, h.gutterFiller, h.scroller], "CodeMirror"), d && 8 > e && (h.gutters.style.zIndex = -1, h.scroller.style.paddingRight = 0), f || a && n || (h.scroller.draggable = !0), b && (b.appendChild ? b.appendChild(h.wrapper) : b(h.wrapper)), h.viewFrom = h.viewTo = c.first, h.reportedViewFrom = h.reportedViewTo = c.first, h.view = [], h.renderedView = null, h.externalMeasured = null, h.viewOffset = 0, h.lastWrapHeight = h.lastWrapWidth = 0, h.updateLineNumbers = null, h.nativeBarWidth = h.barHeight = h.barWidth = 0, h.scrollbarsClipped = !1, h.lineNumWidth = h.lineNumInnerWidth = h.lineNumChars = null, h.alignWidgets = !1, h.cachedCharWidth = h.cachedTextHeight = h.cachedPaddingH = null, h.maxLine = null, h.maxLineLength = 0, h.maxLineChanged = !1, h.wheelDX = h.wheelDY = h.wheelStartX = h.wheelStartY = null, h.shift = !1, h.selForContextMenu = null, h.activeTouch = null, g.init(h) |
| } |
| |
| function x(a) { |
| a.doc.mode = v.getMode(a.options, a.doc.modeOption), y(a) |
| } |
| |
| function y(a) { |
| a.doc.iter(function (a) { |
| a.stateAfter && (a.stateAfter = null), a.styles && (a.styles = null) |
| }), a.doc.frontier = a.doc.first, ib(a, 100), a.state.modeGen++, a.curOp && ic(a) |
| } |
| |
| function z(a) { |
| a.options.lineWrapping ? (xg(a.display.wrapper, "CodeMirror-wrap"), a.display.sizer.style.minWidth = "", a.display.sizerWidth = null) : (wg(a.display.wrapper, "CodeMirror-wrap"), H(a)), B(a), ic(a), Fb(a), setTimeout(function () { |
| N(a) |
| }, 100) |
| } |
| |
| function A(a) { |
| var b = Rb(a.display), |
| c = a.options.lineWrapping, |
| d = c && Math.max(5, a.display.scroller.clientWidth / Sb(a.display) - 3); |
| return function (e) { |
| if (we(a.doc, e)) return 0; |
| var f = 0; |
| if (e.widgets) |
| for (var g = 0; g < e.widgets.length; g++) e.widgets[g].height && (f += e.widgets[g].height); |
| return c ? f + (Math.ceil(e.text.length / d) || 1) * b : f + b |
| } |
| } |
| |
| function B(a) { |
| var b = a.doc, |
| c = A(a); |
| b.iter(function (a) { |
| var b = c(a); |
| b != a.height && jf(a, b) |
| }) |
| } |
| |
| function C(a) { |
| a.display.wrapper.className = a.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + a.options.theme.replace(/(^|\s)\s*/g, " cm-s-"), Fb(a) |
| } |
| |
| function D(a) { |
| E(a), ic(a), setTimeout(function () { |
| Q(a) |
| }, 20) |
| } |
| |
| function E(a) { |
| var b = a.display.gutters, |
| c = a.options.gutters; |
| rg(b); |
| for (var d = 0; d < c.length; ++d) { |
| var e = c[d], |
| f = b.appendChild(pg("div", null, "CodeMirror-gutter " + e)); |
| "CodeMirror-linenumbers" == e && (a.display.lineGutter = f, f.style.width = (a.display.lineNumWidth || 1) + "px") |
| } |
| b.style.display = d ? "" : "none", F(a) |
| } |
| |
| function F(a) { |
| var b = a.display.gutters.offsetWidth; |
| a.display.sizer.style.marginLeft = b + "px" |
| } |
| |
| function G(a) { |
| if (0 == a.height) return 0; |
| for (var c, b = a.text.length, d = a; c = pe(d);) { |
| var e = c.find(0, !0); |
| d = e.from.line, b += e.from.ch - e.to.ch |
| } |
| for (d = a; c = qe(d);) { |
| var e = c.find(0, !0); |
| b -= d.text.length - e.from.ch, d = e.to.line, b += d.text.length - e.to.ch |
| } |
| return b |
| } |
| |
| function H(a) { |
| var b = a.display, |
| c = a.doc; |
| b.maxLine = ff(c, c.first), b.maxLineLength = G(b.maxLine), b.maxLineChanged = !0, c.iter(function (a) { |
| var c = G(a); |
| c > b.maxLineLength && (b.maxLineLength = c, b.maxLine = a) |
| }) |
| } |
| |
| function I(a) { |
| var b = dg(a.gutters, "CodeMirror-linenumbers"); - 1 == b && a.lineNumbers ? a.gutters = a.gutters.concat(["CodeMirror-linenumbers"]) : b > -1 && !a.lineNumbers && (a.gutters = a.gutters.slice(0), a.gutters.splice(b, 1)) |
| } |
| |
| function J(a) { |
| var b = a.display, |
| c = b.gutters.offsetWidth, |
| d = Math.round(a.doc.height + nb(a.display)); |
| return { |
| clientHeight: b.scroller.clientHeight, |
| viewHeight: b.wrapper.clientHeight, |
| scrollWidth: b.scroller.scrollWidth, |
| clientWidth: b.scroller.clientWidth, |
| viewWidth: b.wrapper.clientWidth, |
| barLeft: a.options.fixedGutter ? c : 0, |
| docHeight: d, |
| scrollHeight: d + pb(a) + b.barHeight, |
| nativeBarWidth: b.nativeBarWidth, |
| gutterWidth: c |
| } |
| } |
| |
| function K(a, b, c) { |
| this.cm = c; |
| var f = this.vert = pg("div", [pg("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"), |
| g = this.horiz = pg("div", [pg("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); |
| a(f), a(g), Jf(f, "scroll", function () { |
| f.clientHeight && b(f.scrollTop, "vertical") |
| }), Jf(g, "scroll", function () { |
| g.clientWidth && b(g.scrollLeft, "horizontal") |
| }), this.checkedOverlay = !1, d && 8 > e && (this.horiz.style.minHeight = this.vert.style.minWidth = "18px") |
| } |
| |
| function L() {} |
| |
| function M(a) { |
| a.display.scrollbars && (a.display.scrollbars.clear(), a.display.scrollbars.addClass && wg(a.display.wrapper, a.display.scrollbars.addClass)), a.display.scrollbars = new v.scrollbarModel[a.options.scrollbarStyle](function (b) { |
| a.display.wrapper.insertBefore(b, a.display.scrollbarFiller), Jf(b, "mousedown", function () { |
| a.state.focused && setTimeout(function () { |
| a.display.input.focus() |
| }, 0) |
| }), b.setAttribute("cm-not-content", "true") |
| }, function (b, c) { |
| "horizontal" == c ? Ic(a, b) : Hc(a, b) |
| }, a), a.display.scrollbars.addClass && xg(a.display.wrapper, a.display.scrollbars.addClass) |
| } |
| |
| function N(a, b) { |
| b || (b = J(a)); |
| var c = a.display.barWidth, |
| d = a.display.barHeight; |
| O(a, b); |
| for (var e = 0; 4 > e && c != a.display.barWidth || d != a.display.barHeight; e++) c != a.display.barWidth && a.options.lineWrapping && $(a), O(a, J(a)), c = a.display.barWidth, d = a.display.barHeight |
| } |
| |
| function O(a, b) { |
| var c = a.display, |
| d = c.scrollbars.update(b); |
| c.sizer.style.paddingRight = (c.barWidth = d.right) + "px", c.sizer.style.paddingBottom = (c.barHeight = d.bottom) + "px", d.right && d.bottom ? (c.scrollbarFiller.style.display = "block", c.scrollbarFiller.style.height = d.bottom + "px", c.scrollbarFiller.style.width = d.right + "px") : c.scrollbarFiller.style.display = "", d.bottom && a.options.coverGutterNextToScrollbar && a.options.fixedGutter ? (c.gutterFiller.style.display = "block", c.gutterFiller.style.height = d.bottom + "px", c.gutterFiller.style.width = b.gutterWidth + "px") : c.gutterFiller.style.display = "" |
| } |
| |
| function P(a, b, c) { |
| var d = c && null != c.top ? Math.max(0, c.top) : a.scroller.scrollTop; |
| d = Math.floor(d - mb(a)); |
| var e = c && null != c.bottom ? c.bottom : d + a.wrapper.clientHeight, |
| f = lf(b, d), |
| g = lf(b, e); |
| if (c && c.ensure) { |
| var h = c.ensure.from.line, |
| i = c.ensure.to.line; |
| f > h ? (f = h, g = lf(b, mf(ff(b, h)) + a.wrapper.clientHeight)) : Math.min(i, b.lastLine()) >= g && (f = lf(b, mf(ff(b, i)) - a.wrapper.clientHeight), g = i) |
| } |
| return { |
| from: f, |
| to: Math.max(g, f + 1) |
| } |
| } |
| |
| function Q(a) { |
| var b = a.display, |
| c = b.view; |
| if (b.alignWidgets || b.gutters.firstChild && a.options.fixedGutter) { |
| for (var d = T(b) - b.scroller.scrollLeft + a.doc.scrollLeft, e = b.gutters.offsetWidth, f = d + "px", g = 0; g < c.length; g++) |
| if (!c[g].hidden) { |
| a.options.fixedGutter && c[g].gutter && (c[g].gutter.style.left = f); |
| var h = c[g].alignable; |
| if (h) |
| for (var i = 0; i < h.length; i++) h[i].style.left = f |
| } |
| a.options.fixedGutter && (b.gutters.style.left = d + e + "px") |
| } |
| } |
| |
| function R(a) { |
| if (!a.options.lineNumbers) return !1; |
| var b = a.doc, |
| c = S(a.options, b.first + b.size - 1), |
| d = a.display; |
| if (c.length != d.lineNumChars) { |
| var e = d.measure.appendChild(pg("div", [pg("div", c)], "CodeMirror-linenumber CodeMirror-gutter-elt")), |
| f = e.firstChild.offsetWidth, |
| g = e.offsetWidth - f; |
| return d.lineGutter.style.width = "", d.lineNumInnerWidth = Math.max(f, d.lineGutter.offsetWidth - g) + 1, d.lineNumWidth = d.lineNumInnerWidth + g, d.lineNumChars = d.lineNumInnerWidth ? c.length : -1, d.lineGutter.style.width = d.lineNumWidth + "px", F(a), !0 |
| } |
| return !1 |
| } |
| |
| function S(a, b) { |
| return String(a.lineNumberFormatter(b + a.firstLineNumber)) |
| } |
| |
| function T(a) { |
| return a.scroller.getBoundingClientRect() |
| .left - a.sizer.getBoundingClientRect() |
| .left |
| } |
| |
| function U(a, b, c) { |
| var d = a.display; |
| this.viewport = b, this.visible = P(d, a.doc, b), this.editorIsHidden = !d.wrapper.offsetWidth, this.wrapperHeight = d.wrapper.clientHeight, this.wrapperWidth = d.wrapper.clientWidth, this.oldDisplayWidth = qb(a), this.force = c, this.dims = aa(a), this.events = [] |
| } |
| |
| function V(a) { |
| var b = a.display; |
| !b.scrollbarsClipped && b.scroller.offsetWidth && (b.nativeBarWidth = b.scroller.offsetWidth - b.scroller.clientWidth, b.heightForcer.style.height = pb(a) + "px", b.sizer.style.marginBottom = -b.nativeBarWidth + "px", b.sizer.style.borderRightWidth = pb(a) + "px", b.scrollbarsClipped = !0) |
| } |
| |
| function W(a, b) { |
| var c = a.display, |
| d = a.doc; |
| if (b.editorIsHidden) return kc(a), !1; |
| if (!b.force && b.visible.from >= c.viewFrom && b.visible.to <= c.viewTo && (null == c.updateLineNumbers || c.updateLineNumbers >= c.viewTo) && c.renderedView == c.view && 0 == oc(a)) return !1; |
| R(a) && (kc(a), b.dims = aa(a)); |
| var e = d.first + d.size, |
| f = Math.max(b.visible.from - a.options.viewportMargin, d.first), |
| g = Math.min(e, b.visible.to + a.options.viewportMargin); |
| c.viewFrom < f && f - c.viewFrom < 20 && (f = Math.max(d.first, c.viewFrom)), c.viewTo > g && c.viewTo - g < 20 && (g = Math.min(e, c.viewTo)), u && (f = ue(a.doc, f), g = ve(a.doc, g)); |
| var h = f != c.viewFrom || g != c.viewTo || c.lastWrapHeight != b.wrapperHeight || c.lastWrapWidth != b.wrapperWidth; |
| nc(a, f, g), c.viewOffset = mf(ff(a.doc, c.viewFrom)), a.display.mover.style.top = c.viewOffset + "px"; |
| var i = oc(a); |
| if (!h && 0 == i && !b.force && c.renderedView == c.view && (null == c.updateLineNumbers || c.updateLineNumbers >= c.viewTo)) return !1; |
| var j = ug(); |
| return i > 4 && (c.lineDiv.style.display = "none"), ba(a, c.updateLineNumbers, b.dims), i > 4 && (c.lineDiv.style.display = ""), c.renderedView = c.view, j && ug() != j && j.offsetHeight && j.focus(), rg(c.cursorDiv), rg(c.selectionDiv), c.gutters.style.height = c.sizer.style.minHeight = 0, h && (c.lastWrapHeight = b.wrapperHeight, c.lastWrapWidth = b.wrapperWidth, ib(a, 400)), c.updateLineNumbers = null, !0 |
| } |
| |
| function X(a, b) { |
| for (var c = b.viewport, d = !0; |
| (d && a.options.lineWrapping && b.oldDisplayWidth != qb(a) || (c && null != c.top && (c = { |
| top: Math.min(a.doc.height + nb(a.display) - rb(a), c.top) |
| }), b.visible = P(a.display, a.doc, c), !(b.visible.from >= a.display.viewFrom && b.visible.to <= a.display.viewTo))) && W(a, b); d = !1) { |
| $(a); |
| var e = J(a); |
| db(a), Z(a, e), N(a, e) |
| } |
| b.signal(a, "update", a), (a.display.viewFrom != a.display.reportedViewFrom || a.display.viewTo != a.display.reportedViewTo) && (b.signal(a, "viewportChange", a, a.display.viewFrom, a.display.viewTo), a.display.reportedViewFrom = a.display.viewFrom, a.display.reportedViewTo = a.display.viewTo) |
| } |
| |
| function Y(a, b) { |
| var c = new U(a, b); |
| if (W(a, c)) { |
| $(a), X(a, c); |
| var d = J(a); |
| db(a), Z(a, d), N(a, d), c.finish() |
| } |
| } |
| |
| function Z(a, b) { |
| a.display.sizer.style.minHeight = b.docHeight + "px"; |
| var c = b.docHeight + a.display.barHeight; |
| a.display.heightForcer.style.top = c + "px", a.display.gutters.style.height = Math.max(c + pb(a), b.clientHeight) + "px" |
| } |
| |
| function $(a) { |
| for (var b = a.display, c = b.lineDiv.offsetTop, f = 0; f < b.view.length; f++) { |
| var h, g = b.view[f]; |
| if (!g.hidden) { |
| if (d && 8 > e) { |
| var i = g.node.offsetTop + g.node.offsetHeight; |
| h = i - c, c = i |
| } else { |
| var j = g.node.getBoundingClientRect(); |
| h = j.bottom - j.top |
| } |
| var k = g.line.height - h; |
| if (2 > h && (h = Rb(b)), (k > .001 || -.001 > k) && (jf(g.line, h), _(g.line), g.rest)) |
| for (var l = 0; l < g.rest.length; l++) _(g.rest[l]) |
| } |
| } |
| } |
| |
| function _(a) { |
| if (a.widgets) |
| for (var b = 0; b < a.widgets.length; ++b) a.widgets[b].height = a.widgets[b].node.offsetHeight |
| } |
| |
| function aa(a) { |
| for (var b = a.display, c = {}, d = {}, e = b.gutters.clientLeft, f = b.gutters.firstChild, g = 0; f; f = f.nextSibling, ++g) c[a.options.gutters[g]] = f.offsetLeft + f.clientLeft + e, d[a.options.gutters[g]] = f.clientWidth; |
| return { |
| fixedPos: T(b), |
| gutterTotalWidth: b.gutters.offsetWidth, |
| gutterLeft: c, |
| gutterWidth: d, |
| wrapperWidth: b.wrapper.clientWidth |
| } |
| } |
| |
| function ba(a, b, c) { |
| function i(b) { |
| var c = b.nextSibling; |
| return f && o && a.display.currentWheelTarget == b ? b.style.display = "none" : b.parentNode.removeChild(b), c |
| } |
| for (var d = a.display, e = a.options.lineNumbers, g = d.lineDiv, h = g.firstChild, j = d.view, k = d.viewFrom, l = 0; l < j.length; l++) { |
| var m = j[l]; |
| if (m.hidden); |
| else if (m.node && m.node.parentNode == g) { |
| for (; h != m.node;) h = i(h); |
| var p = e && null != b && k >= b && m.lineNumber; |
| m.changes && (dg(m.changes, "gutter") > -1 && (p = !1), ca(a, m, k, c)), p && (rg(m.lineNumber), m.lineNumber.appendChild(document.createTextNode(S(a.options, k)))), h = m.node.nextSibling |
| } else { |
| var n = ka(a, m, k, c); |
| g.insertBefore(n, h) |
| } |
| k += m.size |
| } |
| for (; h;) h = i(h) |
| } |
| |
| function ca(a, b, c, d) { |
| for (var e = 0; e < b.changes.length; e++) { |
| var f = b.changes[e]; |
| "text" == f ? ga(a, b) : "gutter" == f ? ia(a, b, c, d) : "class" == f ? ha(b) : "widget" == f && ja(a, b, d) |
| } |
| b.changes = null |
| } |
| |
| function da(a) { |
| return a.node == a.text && (a.node = pg("div", null, null, "position: relative"), a.text.parentNode && a.text.parentNode.replaceChild(a.node, a.text), a.node.appendChild(a.text), d && 8 > e && (a.node.style.zIndex = 2)), a.node |
| } |
| |
| function ea(a) { |
| var b = a.bgClass ? a.bgClass + " " + (a.line.bgClass || "") : a.line.bgClass; |
| if (b && (b += " CodeMirror-linebackground"), a.background) b ? a.background.className = b : (a.background.parentNode.removeChild(a.background), a.background = null); |
| else if (b) { |
| var c = da(a); |
| a.background = c.insertBefore(pg("div", null, b), c.firstChild) |
| } |
| } |
| |
| function fa(a, b) { |
| var c = a.display.externalMeasured; |
| return c && c.line == b.line ? (a.display.externalMeasured = null, b.measure = c.measure, c.built) : Qe(a, b) |
| } |
| |
| function ga(a, b) { |
| var c = b.text.className, |
| d = fa(a, b); |
| b.text == b.node && (b.node = d.pre), b.text.parentNode.replaceChild(d.pre, b.text), b.text = d.pre, d.bgClass != b.bgClass || d.textClass != b.textClass ? (b.bgClass = d.bgClass, b.textClass = d.textClass, ha(b)) : c && (b.text.className = c) |
| } |
| |
| function ha(a) { |
| ea(a), a.line.wrapClass ? da(a) |
| .className = a.line.wrapClass : a.node != a.text && (a.node.className = ""); |
| var b = a.textClass ? a.textClass + " " + (a.line.textClass || "") : a.line.textClass; |
| a.text.className = b || "" |
| } |
| |
| function ia(a, b, c, d) { |
| if (b.gutter && (b.node.removeChild(b.gutter), b.gutter = null), b.gutterBackground && (b.node.removeChild(b.gutterBackground), b.gutterBackground = null), b.line.gutterClass) { |
| var e = da(b); |
| b.gutterBackground = pg("div", null, "CodeMirror-gutter-background " + b.line.gutterClass, "left: " + (a.options.fixedGutter ? d.fixedPos : -d.gutterTotalWidth) + "px; width: " + d.gutterTotalWidth + "px"), e.insertBefore(b.gutterBackground, b.text) |
| } |
| var f = b.line.gutterMarkers; |
| if (a.options.lineNumbers || f) { |
| var e = da(b), |
| g = b.gutter = pg("div", null, "CodeMirror-gutter-wrapper", "left: " + (a.options.fixedGutter ? d.fixedPos : -d.gutterTotalWidth) + "px"); |
| if (a.display.input.setUneditable(g), e.insertBefore(g, b.text), b.line.gutterClass && (g.className += " " + b.line.gutterClass), !a.options.lineNumbers || f && f["CodeMirror-linenumbers"] || (b.lineNumber = g.appendChild(pg("div", S(a.options, c), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + d.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + a.display.lineNumInnerWidth + "px"))), f) |
| for (var h = 0; h < a.options.gutters.length; ++h) { |
| var i = a.options.gutters[h], |
| j = f.hasOwnProperty(i) && f[i]; |
| j && g.appendChild(pg("div", [j], "CodeMirror-gutter-elt", "left: " + d.gutterLeft[i] + "px; width: " + d.gutterWidth[i] + "px")) |
| } |
| } |
| } |
| |
| function ja(a, b, c) { |
| b.alignable && (b.alignable = null); |
| for (var e, d = b.node.firstChild; d; d = e) { |
| var e = d.nextSibling; |
| "CodeMirror-linewidget" == d.className && b.node.removeChild(d) |
| } |
| la(a, b, c) |
| } |
| |
| function ka(a, b, c, d) { |
| var e = fa(a, b); |
| return b.text = b.node = e.pre, e.bgClass && (b.bgClass = e.bgClass), e.textClass && (b.textClass = e.textClass), ha(b), ia(a, b, c, d), la(a, b, d), b.node |
| } |
| |
| function la(a, b, c) { |
| if (ma(a, b.line, b, c, !0), b.rest) |
| for (var d = 0; d < b.rest.length; d++) ma(a, b.rest[d], b, c, !1) |
| } |
| |
| function ma(a, b, c, d, e) { |
| if (b.widgets) |
| for (var f = da(c), g = 0, h = b.widgets; g < h.length; ++g) { |
| var i = h[g], |
| j = pg("div", [i.node], "CodeMirror-linewidget"); |
| i.handleMouseEvents || j.setAttribute("cm-ignore-events", "true"), na(i, j, c, d), a.display.input.setUneditable(j), e && i.above ? f.insertBefore(j, c.gutter || c.text) : f.appendChild(j), Nf(i, "redraw") |
| } |
| } |
| |
| function na(a, b, c, d) { |
| if (a.noHScroll) { |
| (c.alignable || (c.alignable = [])) |
| .push(b); |
| var e = d.wrapperWidth; |
| b.style.left = d.fixedPos + "px", a.coverGutter || (e -= d.gutterTotalWidth, b.style.paddingLeft = d.gutterTotalWidth + "px"), b.style.width = e + "px" |
| } |
| a.coverGutter && (b.style.zIndex = 5, b.style.position = "relative", a.noHScroll || (b.style.marginLeft = -d.gutterTotalWidth + "px")) |
| } |
| |
| function qa(a) { |
| return oa(a.line, a.ch) |
| } |
| |
| function ra(a, b) { |
| return pa(a, b) < 0 ? b : a |
| } |
| |
| function sa(a, b) { |
| return pa(a, b) < 0 ? a : b |
| } |
| |
| function ta(a) { |
| a.state.focused || (a.display.input.focus(), Zc(a)) |
| } |
| |
| function ua(a) { |
| return a.options.readOnly || a.doc.cantEdit |
| } |
| |
| function wa(a, b, c, d, e) { |
| var f = a.doc; |
| a.display.shift = !1, d || (d = f.sel); |
| var g = a.state.pasteIncoming || "paste" == e, |
| h = f.splitLines(b), |
| i = null; |
| if (g && d.ranges.length > 1) |
| if (va && va.join("\n") == b) { |
| if (d.ranges.length % va.length == 0) { |
| i = []; |
| for (var j = 0; j < va.length; j++) i.push(f.splitLines(va[j])) |
| } |
| } else h.length == d.ranges.length && (i = eg(h, function (a) { |
| return [a] |
| })); |
| for (var j = d.ranges.length - 1; j >= 0; j--) { |
| var k = d.ranges[j], |
| l = k.from(), |
| m = k.to(); |
| k.empty() && (c && c > 0 ? l = oa(l.line, l.ch - c) : a.state.overwrite && !g && (m = oa(m.line, Math.min(ff(f, m.line) |
| .text.length, m.ch + bg(h) |
| .length)))); |
| var n = a.curOp.updateInput, |
| o = { |
| from: l, |
| to: m, |
| text: i ? i[j % i.length] : h, |
| origin: e || (g ? "paste" : a.state.cutIncoming ? "cut" : "+input") |
| }; |
| hd(a.doc, o), Nf(a, "inputRead", a, o) |
| } |
| b && !g && ya(a, b), td(a), a.curOp.updateInput = n, a.curOp.typing = !0, a.state.pasteIncoming = a.state.cutIncoming = !1 |
| } |
| |
| function xa(a, b) { |
| var c = a.clipboardData && a.clipboardData.getData("text/plain"); |
| return c ? (a.preventDefault(), ua(b) || b.options.disableInput || cc(b, function () { |
| wa(b, c, 0, null, "paste") |
| }), !0) : void 0 |
| } |
| |
| function ya(a, b) { |
| if (a.options.electricChars && a.options.smartIndent) |
| for (var c = a.doc.sel, d = c.ranges.length - 1; d >= 0; d--) { |
| var e = c.ranges[d]; |
| if (!(e.head.ch > 100 || d && c.ranges[d - 1].head.line == e.head.line)) { |
| var f = a.getModeAt(e.head), |
| g = !1; |
| if (f.electricChars) { |
| for (var h = 0; h < f.electricChars.length; h++) |
| if (b.indexOf(f.electricChars.charAt(h)) > -1) { |
| g = vd(a, e.head.line, "smart"); |
| break |
| } |
| } else f.electricInput && f.electricInput.test(ff(a.doc, e.head.line) |
| .text.slice(0, e.head.ch)) && (g = vd(a, e.head.line, "smart")); |
| g && Nf(a, "electricInput", a, e.head.line) |
| } |
| } |
| } |
| |
| function za(a) { |
| for (var b = [], c = [], d = 0; d < a.doc.sel.ranges.length; d++) { |
| var e = a.doc.sel.ranges[d].head.line, |
| f = { |
| anchor: oa(e, 0), |
| head: oa(e + 1, 0) |
| }; |
| c.push(f), b.push(a.getRange(f.anchor, f.head)) |
| } |
| return { |
| text: b, |
| ranges: c |
| } |
| } |
| |
| function Aa(a) { |
| a.setAttribute("autocorrect", "off"), a.setAttribute("autocapitalize", "off"), a.setAttribute("spellcheck", "false") |
| } |
| |
| function Ba(a) { |
| this.cm = a, this.prevInput = "", this.pollingFast = !1, this.polling = new Yf, this.inaccurateSelection = !1, this.hasSelection = !1, this.composing = null |
| } |
| |
| function Ca() { |
| var a = pg("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"), |
| b = pg("div", [a], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); |
| return f ? a.style.width = "1000px" : a.setAttribute("wrap", "off"), m && (a.style.border = "1px solid black"), Aa(a), b |
| } |
| |
| function Da(a) { |
| this.cm = a, this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null, this.polling = new Yf, this.gracePeriod = !1 |
| } |
| |
| function Ea(a, b) { |
| var c = wb(a, b.line); |
| if (!c || c.hidden) return null; |
| var d = ff(a.doc, b.line), |
| e = tb(c, d, b.line), |
| f = nf(d), |
| g = "left"; |
| if (f) { |
| var h = Yg(f, b.ch); |
| g = h % 2 ? "right" : "left" |
| } |
| var i = Ab(e.map, b.ch, g); |
| return i.offset = "right" == i.collapse ? i.end : i.start, i |
| } |
| |
| function Fa(a, b) { |
| return b && (a.bad = !0), a |
| } |
| |
| function Ga(a, b, c) { |
| var d; |
| if (b == a.display.lineDiv) { |
| if (d = a.display.lineDiv.childNodes[c], !d) return Fa(a.clipPos(oa(a.display.viewTo - 1)), !0); |
| b = null, c = 0 |
| } else |
| for (d = b;; d = d.parentNode) { |
| if (!d || d == a.display.lineDiv) return null; |
| if (d.parentNode && d.parentNode == a.display.lineDiv) break |
| } |
| for (var e = 0; e < a.display.view.length; e++) { |
| var f = a.display.view[e]; |
| if (f.node == d) return Ha(f, b, c) |
| } |
| } |
| |
| function Ha(a, b, c) { |
| function k(b, c, d) { |
| for (var e = -1; e < (j ? j.length : 0); e++) |
| for (var f = 0 > e ? i.map : j[e], g = 0; g < f.length; g += 3) { |
| var h = f[g + 2]; |
| if (h == b || h == c) { |
| var k = kf(0 > e ? a.line : a.rest[e]), |
| l = f[g] + d; |
| return (0 > d || h != b) && (l = f[g + (d ? 1 : 0)]), oa(k, l) |
| } |
| } |
| } |
| var d = a.text.firstChild, |
| e = !1; |
| if (!b || !tg(d, b)) return Fa(oa(kf(a.line), 0), !0); |
| if (b == d && (e = !0, b = d.childNodes[c], c = 0, !b)) { |
| var f = a.rest ? bg(a.rest) : a.line; |
| return Fa(oa(kf(f), f.text.length), e) |
| } |
| var g = 3 == b.nodeType ? b : null, |
| h = b; |
| for (g || 1 != b.childNodes.length || 3 != b.firstChild.nodeType || (g = b.firstChild, c && (c = g.nodeValue.length)); h.parentNode != d;) h = h.parentNode; |
| var i = a.measure, |
| j = i.maps, |
| l = k(g, h, c); |
| if (l) return Fa(l, e); |
| for (var m = h.nextSibling, n = g ? g.nodeValue.length - c : 0; m; m = m.nextSibling) { |
| if (l = k(m, m.firstChild, 0)) return Fa(oa(l.line, l.ch - n), e); |
| n += m.textContent.length |
| } |
| for (var o = h.previousSibling, n = c; o; o = o.previousSibling) { |
| if (l = k(o, o.firstChild, -1)) return Fa(oa(l.line, l.ch + n), e); |
| n += m.textContent.length |
| } |
| } |
| |
| function Ia(a, b, c, d, e) { |
| function i(a) { |
| return function (b) { |
| return b.id == a |
| } |
| } |
| |
| function j(b) { |
| if (1 == b.nodeType) { |
| var c = b.getAttribute("cm-text"); |
| if (null != c) return "" == c && (c = b.textContent.replace(/\u200b/g, "")), void(f += c); |
| var l, k = b.getAttribute("cm-marker"); |
| if (k) { |
| var m = a.findMarks(oa(d, 0), oa(e + 1, 0), i(+k)); |
| return void(m.length && (l = m[0].find()) && (f += gf(a.doc, l.from, l.to) |
| .join(h))) |
| } |
| if ("false" == b.getAttribute("contenteditable")) return; |
| for (var n = 0; n < b.childNodes.length; n++) j(b.childNodes[n]); |
| /^(pre|div|p)$/i.test(b.nodeName) && (g = !0) |
| } else if (3 == b.nodeType) { |
| var o = b.nodeValue; |
| if (!o) return; |
| g && (f += h, g = !1), f += o |
| } |
| } |
| for (var f = "", g = !1, h = a.doc.lineSeparator(); j(b), b != c;) b = b.nextSibling; |
| return f |
| } |
| |
| function Ja(a, b) { |
| this.ranges = a, this.primIndex = b |
| } |
| |
| function Ka(a, b) { |
| this.anchor = a, this.head = b |
| } |
| |
| function La(a, b) { |
| var c = a[b]; |
| a.sort(function (a, b) { |
| return pa(a.from(), b.from()) |
| }), b = dg(a, c); |
| for (var d = 1; d < a.length; d++) { |
| var e = a[d], |
| f = a[d - 1]; |
| if (pa(f.to(), e.from()) >= 0) { |
| var g = sa(f.from(), e.from()), |
| h = ra(f.to(), e.to()), |
| i = f.empty() ? e.from() == e.head : f.from() == f.head; |
| b >= d && --b, a.splice(--d, 2, new Ka(i ? h : g, i ? g : h)) |
| } |
| } |
| return new Ja(a, b) |
| } |
| |
| function Ma(a, b) { |
| return new Ja([new Ka(a, b || a)], 0) |
| } |
| |
| function Na(a, b) { |
| return Math.max(a.first, Math.min(b, a.first + a.size - 1)) |
| } |
| |
| function Oa(a, b) { |
| if (b.line < a.first) return oa(a.first, 0); |
| var c = a.first + a.size - 1; |
| return b.line > c ? oa(c, ff(a, c) |
| .text.length) : Pa(b, ff(a, b.line) |
| .text.length) |
| } |
| |
| function Pa(a, b) { |
| var c = a.ch; |
| return null == c || c > b ? oa(a.line, b) : 0 > c ? oa(a.line, 0) : a |
| } |
| |
| function Qa(a, b) { |
| return b >= a.first && b < a.first + a.size |
| } |
| |
| function Ra(a, b) { |
| for (var c = [], d = 0; d < b.length; d++) c[d] = Oa(a, b[d]); |
| return c |
| } |
| |
| function Sa(a, b, c, d) { |
| if (a.cm && a.cm.display.shift || a.extend) { |
| var e = b.anchor; |
| if (d) { |
| var f = pa(c, e) < 0; |
| f != pa(d, e) < 0 ? (e = c, c = d) : f != pa(c, d) < 0 && (c = d) |
| } |
| return new Ka(e, c) |
| } |
| return new Ka(d || c, c) |
| } |
| |
| function Ta(a, b, c, d) { |
| Za(a, new Ja([Sa(a, a.sel.primary(), b, c)], 0), d) |
| } |
| |
| function Ua(a, b, c) { |
| for (var d = [], e = 0; e < a.sel.ranges.length; e++) d[e] = Sa(a, a.sel.ranges[e], b[e], null); |
| var f = La(d, a.sel.primIndex); |
| Za(a, f, c) |
| } |
| |
| function Va(a, b, c, d) { |
| var e = a.sel.ranges.slice(0); |
| e[b] = c, Za(a, La(e, a.sel.primIndex), d) |
| } |
| |
| function Wa(a, b, c, d) { |
| Za(a, Ma(b, c), d) |
| } |
| |
| function Xa(a, b) { |
| var c = { |
| ranges: b.ranges, |
| update: function (b) { |
| this.ranges = []; |
| for (var c = 0; c < b.length; c++) this.ranges[c] = new Ka(Oa(a, b[c].anchor), Oa(a, b[c].head)) |
| } |
| }; |
| return Lf(a, "beforeSelectionChange", a, c), a.cm && Lf(a.cm, "beforeSelectionChange", a.cm, c), c.ranges != b.ranges ? La(c.ranges, c.ranges.length - 1) : b |
| } |
| |
| function Ya(a, b, c) { |
| var d = a.history.done, |
| e = bg(d); |
| e && e.ranges ? (d[d.length - 1] = b, $a(a, b, c)) : Za(a, b, c) |
| } |
| |
| function Za(a, b, c) { |
| $a(a, b, c), uf(a, a.sel, a.cm ? a.cm.curOp.id : NaN, c) |
| } |
| |
| function $a(a, b, c) { |
| (Rf(a, "beforeSelectionChange") || a.cm && Rf(a.cm, "beforeSelectionChange")) && (b = Xa(a, b)); |
| var d = c && c.bias || (pa(b.primary() |
| .head, a.sel.primary() |
| .head) < 0 ? -1 : 1); |
| _a(a, bb(a, b, d, !0)), c && c.scroll === !1 || !a.cm || td(a.cm) |
| } |
| |
| function _a(a, b) { |
| b.equals(a.sel) || (a.sel = b, a.cm && (a.cm.curOp.updateInput = a.cm.curOp.selectionChanged = !0, Qf(a.cm)), Nf(a, "cursorActivity", a)) |
| } |
| |
| function ab(a) { |
| _a(a, bb(a, a.sel, null, !1), Vf) |
| } |
| |
| function bb(a, b, c, d) { |
| for (var e, f = 0; f < b.ranges.length; f++) { |
| var g = b.ranges[f], |
| h = cb(a, g.anchor, c, d), |
| i = cb(a, g.head, c, d); |
| (e || h != g.anchor || i != g.head) && (e || (e = b.ranges.slice(0, f)), e[f] = new Ka(h, i)) |
| } |
| return e ? La(e, b.primIndex) : b |
| } |
| |
| function cb(a, b, c, d) { |
| var e = !1, |
| f = b, |
| g = c || 1; |
| a.cantEdit = !1; |
| a: for (;;) { |
| var h = ff(a, f.line); |
| if (h.markedSpans) |
| for (var i = 0; i < h.markedSpans.length; ++i) { |
| var j = h.markedSpans[i], |
| k = j.marker; |
| if ((null == j.from || (k.inclusiveLeft ? j.from <= f.ch : j.from < f.ch)) && (null == j.to || (k.inclusiveRight ? j.to >= f.ch : j.to > f.ch))) { |
| if (d && (Lf(k, "beforeCursorEnter"), k.explicitlyCleared)) { |
| if (h.markedSpans) { |
| --i; |
| continue |
| } |
| break |
| } |
| if (!k.atomic) continue; |
| var l = k.find(0 > g ? -1 : 1); |
| if (0 == pa(l, f) && (l.ch += g, l.ch < 0 ? l = l.line > a.first ? Oa(a, oa(l.line - 1)) : null : l.ch > h.text.length && (l = l.line < a.first + a.size - 1 ? oa(l.line + 1, 0) : null), !l)) { |
| if (e) return d ? (a.cantEdit = !0, oa(a.first, 0)) : cb(a, b, c, !0); |
| e = !0, l = b, g = -g |
| } |
| f = l; |
| continue a |
| } |
| } |
| return f |
| } |
| } |
| |
| function db(a) { |
| a.display.input.showSelection(a.display.input.prepareSelection()) |
| } |
| |
| function eb(a, b) { |
| for (var c = a.doc, d = {}, e = d.cursors = document.createDocumentFragment(), f = d.selection = document.createDocumentFragment(), g = 0; g < c.sel.ranges.length; g++) |
| if (b !== !1 || g != c.sel.primIndex) { |
| var h = c.sel.ranges[g], |
| i = h.empty(); |
| (i || a.options.showCursorWhenSelecting) && fb(a, h.head, e), i || gb(a, h, f) |
| } |
| return d |
| } |
| |
| function fb(a, b, c) { |
| var d = Lb(a, b, "div", null, null, !a.options.singleCursorHeightPerLine), |
| e = c.appendChild(pg("div", "\xa0", "CodeMirror-cursor")); |
| if (e.style.left = d.left + "px", e.style.top = d.top + "px", e.style.height = Math.max(0, d.bottom - d.top) * a.options.cursorHeight + "px", d.other) { |
| var f = c.appendChild(pg("div", "\xa0", "CodeMirror-cursor CodeMirror-secondarycursor")); |
| f.style.display = "", f.style.left = d.other.left + "px", f.style.top = d.other.top + "px", f.style.height = .85 * (d.other.bottom - d.other.top) + "px" |
| } |
| } |
| |
| function gb(a, b, c) { |
| function j(a, b, c, d) { |
| 0 > b && (b = 0), b = Math.round(b), d = Math.round(d), f.appendChild(pg("div", null, "CodeMirror-selected", "position: absolute; left: " + a + "px; top: " + b + "px; width: " + (null == c ? i - a : c) + "px; height: " + (d - b) + "px")) |
| } |
| |
| function k(b, c, d) { |
| function m(c, d) { |
| return Kb(a, oa(b, c), "div", f, d) |
| } |
| var k, l, f = ff(e, b), |
| g = f.text.length; |
| return Og(nf(f), c || 0, null == d ? g : d, function (a, b, e) { |
| var n, o, p, f = m(a, "left"); |
| if (a == b) n = f, o = p = f.left; |
| else { |
| if (n = m(b - 1, "right"), "rtl" == e) { |
| var q = f; |
| f = n, n = q |
| } |
| o = f.left, p = n.right |
| } |
| null == c && 0 == a && (o = h), n.top - f.top > 3 && (j(o, f.top, null, f.bottom), o = h, f.bottom < n.top && j(o, f.bottom, null, n.top)), null == d && b == g && (p = i), (!k || f.top < k.top || f.top == k.top && f.left < k.left) && (k = f), (!l || n.bottom > l.bottom || n.bottom == l.bottom && n.right > l.right) && (l = n), h + 1 > o && (o = h), j(o, n.top, p - o, n.bottom) |
| }), { |
| start: k, |
| end: l |
| } |
| } |
| var d = a.display, |
| e = a.doc, |
| f = document.createDocumentFragment(), |
| g = ob(a.display), |
| h = g.left, |
| i = Math.max(d.sizerWidth, qb(a) - d.sizer.offsetLeft) - g.right, |
| l = b.from(), |
| m = b.to(); |
| if (l.line == m.line) k(l.line, l.ch, m.ch); |
| else { |
| var n = ff(e, l.line), |
| o = ff(e, m.line), |
| p = se(n) == se(o), |
| q = k(l.line, l.ch, p ? n.text.length + 1 : null) |
| .end, |
| r = k(m.line, p ? 0 : null, m.ch) |
| .start; |
| p && (q.top < r.top - 2 ? (j(q.right, q.top, null, q.bottom), j(h, r.top, r.left, r.bottom)) : j(q.right, q.top, r.left - q.right, q.bottom)), q.bottom < r.top && j(h, q.bottom, null, r.top) |
| } |
| c.appendChild(f) |
| } |
| |
| function hb(a) { |
| if (a.state.focused) { |
| var b = a.display; |
| clearInterval(b.blinker); |
| var c = !0; |
| b.cursorDiv.style.visibility = "", a.options.cursorBlinkRate > 0 ? b.blinker = setInterval(function () { |
| b.cursorDiv.style.visibility = (c = !c) ? "" : "hidden" |
| }, a.options.cursorBlinkRate) : a.options.cursorBlinkRate < 0 && (b.cursorDiv.style.visibility = "hidden") |
| } |
| } |
| |
| function ib(a, b) { |
| a.doc.mode.startState && a.doc.frontier < a.display.viewTo && a.state.highlight.set(b, ig(jb, a)) |
| } |
| |
| function jb(a) { |
| var b = a.doc; |
| if (b.frontier < b.first && (b.frontier = b.first), !(b.frontier >= a.display.viewTo)) { |
| var c = +new Date + a.options.workTime, |
| d = Jd(b.mode, lb(a, b.frontier)), |
| e = []; |
| b.iter(b.frontier, Math.min(b.first + b.size, a.display.viewTo + 500), function (f) { |
| if (b.frontier >= a.display.viewFrom) { |
| var g = f.styles, |
| h = f.text.length > a.options.maxHighlightLength, |
| i = Ke(a, f, h ? Jd(b.mode, d) : d, !0); |
| f.styles = i.styles; |
| var j = f.styleClasses, |
| k = i.classes; |
| k ? f.styleClasses = k : j && (f.styleClasses = null); |
| for (var l = !g || g.length != f.styles.length || j != k && (!j || !k || j.bgClass != k.bgClass || j.textClass != k.textClass), m = 0; !l && m < g.length; ++m) l = g[m] != f.styles[m]; |
| l && e.push(b.frontier), f.stateAfter = h ? d : Jd(b.mode, d) |
| } else f.text.length <= a.options.maxHighlightLength && Me(a, f.text, d), f.stateAfter = b.frontier % 5 == 0 ? Jd(b.mode, d) : null; |
| return ++b.frontier, +new Date > c ? (ib(a, a.options.workDelay), !0) : void 0 |
| }), e.length && cc(a, function () { |
| for (var b = 0; b < e.length; b++) jc(a, e[b], "text") |
| }) |
| } |
| } |
| |
| function kb(a, b, c) { |
| for (var d, e, f = a.doc, g = c ? -1 : b - (a.doc.mode.innerMode ? 1e3 : 100), h = b; h > g; --h) { |
| if (h <= f.first) return f.first; |
| var i = ff(f, h - 1); |
| if (i.stateAfter && (!c || h <= f.frontier)) return h; |
| var j = Zf(i.text, null, a.options.tabSize); |
| (null == e || d > j) && (e = h - 1, d = j) |
| } |
| return e |
| } |
| |
| function lb(a, b, c) { |
| var d = a.doc, |
| e = a.display; |
| if (!d.mode.startState) return !0; |
| var f = kb(a, b, c), |
| g = f > d.first && ff(d, f - 1) |
| .stateAfter; |
| return g = g ? Jd(d.mode, g) : Kd(d.mode), d.iter(f, b, function (c) { |
| Me(a, c.text, g); |
| var h = f == b - 1 || f % 5 == 0 || f >= e.viewFrom && f < e.viewTo; |
| c.stateAfter = h ? Jd(d.mode, g) : null, ++f |
| }), c && (d.frontier = f), g |
| } |
| |
| function mb(a) { |
| return a.lineSpace.offsetTop |
| } |
| |
| function nb(a) { |
| return a.mover.offsetHeight - a.lineSpace.offsetHeight |
| } |
| |
| function ob(a) { |
| if (a.cachedPaddingH) return a.cachedPaddingH; |
| var b = sg(a.measure, pg("pre", "x")), |
| c = window.getComputedStyle ? window.getComputedStyle(b, null) : b.currentStyle, // why the null: http://bugs.jquery.com/ticket/8635 |
| d = { |
| left: parseInt(c.paddingLeft), |
| right: parseInt(c.paddingRight) |
| }; |
| return isNaN(d.left) || isNaN(d.right) || (a.cachedPaddingH = d), d |
| } |
| |
| function pb(a) { |
| return Tf - a.display.nativeBarWidth |
| } |
| |
| function qb(a) { |
| return a.display.scroller.clientWidth - pb(a) - a.display.barWidth |
| } |
| |
| function rb(a) { |
| return a.display.scroller.clientHeight - pb(a) - a.display.barHeight |
| } |
| |
| function sb(a, b, c) { |
| var d = a.options.lineWrapping, |
| e = d && qb(a); |
| if (!b.measure.heights || d && b.measure.width != e) { |
| var f = b.measure.heights = []; |
| if (d) { |
| b.measure.width = e; |
| for (var g = b.text.firstChild.getClientRects(), h = 0; h < g.length - 1; h++) { |
| var i = g[h], |
| j = g[h + 1]; |
| Math.abs(i.bottom - j.bottom) > 2 && f.push((i.bottom + j.top) / 2 - c.top) |
| } |
| } |
| f.push(c.bottom - c.top) |
| } |
| } |
| |
| function tb(a, b, c) { |
| if (a.line == b) return { |
| map: a.measure.map, |
| cache: a.measure.cache |
| }; |
| for (var d = 0; d < a.rest.length; d++) |
| if (a.rest[d] == b) return { |
| map: a.measure.maps[d], |
| cache: a.measure.caches[d] |
| }; |
| for (var d = 0; d < a.rest.length; d++) |
| if (kf(a.rest[d]) > c) return { |
| map: a.measure.maps[d], |
| cache: a.measure.caches[d], |
| before: !0 |
| } |
| } |
| |
| function ub(a, b) { |
| b = se(b); |
| var c = kf(b), |
| d = a.display.externalMeasured = new gc(a.doc, b, c); |
| d.lineN = c; |
| var e = d.built = Qe(a, d); |
| return d.text = e.pre, sg(a.display.lineMeasure, e.pre), d |
| } |
| |
| function vb(a, b, c, d) { |
| return yb(a, xb(a, b), c, d) |
| } |
| |
| function wb(a, b) { |
| if (b >= a.display.viewFrom && b < a.display.viewTo) return a.display.view[lc(a, b)]; |
| var c = a.display.externalMeasured; |
| return c && b >= c.lineN && b < c.lineN + c.size ? c : void 0 |
| } |
| |
| function xb(a, b) { |
| var c = kf(b), |
| d = wb(a, c); |
| d && !d.text ? d = null : d && d.changes && (ca(a, d, c, aa(a)), a.curOp.forceUpdate = !0), d || (d = ub(a, b)); |
| var e = tb(d, b, c); |
| return { |
| line: b, |
| view: d, |
| rect: null, |
| map: e.map, |
| cache: e.cache, |
| before: e.before, |
| hasHeights: !1 |
| } |
| } |
| |
| function yb(a, b, c, d, e) { |
| b.before && (c = -1); |
| var g, f = c + (d || ""); |
| return b.cache.hasOwnProperty(f) ? g = b.cache[f] : (b.rect || (b.rect = b.view.text.getBoundingClientRect()), b.hasHeights || (sb(a, b.view, b.rect), b.hasHeights = !0), g = Bb(a, b, c, d), g.bogus || (b.cache[f] = g)), { |
| left: g.left, |
| right: g.right, |
| top: e ? g.rtop : g.top, |
| bottom: e ? g.rbottom : g.bottom |
| } |
| } |
| |
| function Ab(a, b, c) { |
| for (var d, e, f, g, h = 0; h < a.length; h += 3) { |
| var i = a[h], |
| j = a[h + 1]; |
| if (i > b ? (e = 0, f = 1, g = "left") : j > b ? (e = b - i, f = e + 1) : (h == a.length - 3 || b == j && a[h + 3] > b) && (f = j - i, e = f - 1, b >= j && (g = "right")), null != e) { |
| if (d = a[h + 2], i == j && c == (d.insertLeft ? "left" : "right") && (g = c), "left" == c && 0 == e) |
| for (; h && a[h - 2] == a[h - 3] && a[h - 1].insertLeft;) d = a[(h -= 3) + 2], g = "left"; |
| if ("right" == c && e == j - i) |
| for (; h < a.length - 3 && a[h + 3] == a[h + 4] && !a[h + 5].insertLeft;) d = a[(h += 3) + 2], g = "right"; |
| break |
| } |
| } |
| return { |
| node: d, |
| start: e, |
| end: f, |
| collapse: g, |
| coverStart: i, |
| coverEnd: j |
| } |
| } |
| |
| function Bb(a, b, c, f) { |
| var l, g = Ab(b.map, c, f), |
| h = g.node, |
| i = g.start, |
| j = g.end, |
| k = g.collapse; |
| if (3 == h.nodeType) { |
| for (var m = 0; 4 > m; m++) { |
| for (; i && og(b.line.text.charAt(g.coverStart + i));) --i; |
| for (; g.coverStart + j < g.coverEnd && og(b.line.text.charAt(g.coverStart + j));) ++j; |
| if (d && 9 > e && 0 == i && j == g.coverEnd - g.coverStart) l = h.parentNode.getBoundingClientRect(); |
| else if (d && a.options.lineWrapping) { |
| var n = qg(h, i, j).getClientRects(); |
| l = n.length ? n["right" == f ? n.length - 1 : 0] : zb |
| } else if (oldff) { // customization here |
| var w = jQuery(".CodeMirror-line SPAN", b.view.node).get(0); |
| if (w) { |
| l = w.getClientRects()[0]; |
| } else { |
| l = zb; |
| } |
| } else { |
| l = qg(h, i, j).getBoundingClientRect() || zb; |
| } |
| if (l.left || l.right || 0 == i) break; |
| j = i, i -= 1, k = "right" |
| } |
| d && 11 > e && (l = Cb(a.display.measure, l)) |
| } else { |
| i > 0 && (k = f = "right"); |
| var n; |
| l = a.options.lineWrapping && (n = h.getClientRects()) |
| .length > 1 ? n["right" == f ? n.length - 1 : 0] : h.getBoundingClientRect() |
| } |
| if (d && 9 > e && !i && (!l || !l.left && !l.right)) { |
| var o = h.parentNode.getClientRects()[0]; |
| l = o ? { |
| left: o.left, |
| right: o.left + Sb(a.display), |
| top: o.top, |
| bottom: o.bottom |
| } : zb |
| } |
| for (var p = l.top - b.rect.top, q = l.bottom - b.rect.top, r = (p + q) / 2, s = b.view.measure.heights, m = 0; m < s.length - 1 && !(r < s[m]); m++); |
| var t = m ? s[m - 1] : 0, |
| u = s[m], |
| v = { |
| left: ("right" == k ? l.right : l.left) - b.rect.left, |
| right: ("left" == k ? l.left : l.right) - b.rect.left, |
| top: t, |
| bottom: u |
| }; |
| return l.left || l.right || (v.bogus = !0), a.options.singleCursorHeightPerLine || (v.rtop = p, v.rbottom = q), v |
| } |
| |
| function Cb(a, b) { |
| if (!window.screen || null == screen.logicalXDPI || screen.logicalXDPI == screen.deviceXDPI || !Mg(a)) return b; |
| var c = screen.logicalXDPI / screen.deviceXDPI, |
| d = screen.logicalYDPI / screen.deviceYDPI; |
| return { |
| left: b.left * c, |
| right: b.right * c, |
| top: b.top * d, |
| bottom: b.bottom * d |
| } |
| } |
| |
| function Db(a) { |
| if (a.measure && (a.measure.cache = {}, a.measure.heights = null, a.rest)) |
| for (var b = 0; b < a.rest.length; b++) a.measure.caches[b] = {} |
| } |
| |
| function Eb(a) { |
| a.display.externalMeasure = null, rg(a.display.lineMeasure); |
| for (var b = 0; b < a.display.view.length; b++) Db(a.display.view[b]) |
| } |
| |
| function Fb(a) { |
| Eb(a), a.display.cachedCharWidth = a.display.cachedTextHeight = a.display.cachedPaddingH = null, a.options.lineWrapping || (a.display.maxLineChanged = !0), a.display.lineNumChars = null |
| } |
| |
| function Gb() { |
| return window.pageXOffset || (document.documentElement || document.body) |
| .scrollLeft |
| } |
| |
| function Hb() { |
| return window.pageYOffset || (document.documentElement || document.body) |
| .scrollTop |
| } |
| |
| function Ib(a, b, c, d) { |
| if (b.widgets) |
| for (var e = 0; e < b.widgets.length; ++e) |
| if (b.widgets[e].above) { |
| var f = Ae(b.widgets[e]); |
| c.top += f, c.bottom += f |
| } |
| if ("line" == d) return c; |
| d || (d = "local"); |
| var g = mf(b); |
| if ("local" == d ? g += mb(a.display) : g -= a.display.viewOffset, "page" == d || "window" == d) { |
| var h = a.display.lineSpace.getBoundingClientRect(); |
| g += h.top + ("window" == d ? 0 : Hb()); |
| var i = h.left + ("window" == d ? 0 : Gb()); |
| c.left += i, c.right += i |
| } |
| return c.top += g, c.bottom += g, c |
| } |
| |
| function Jb(a, b, c) { |
| if ("div" == c) return b; |
| var d = b.left, |
| e = b.top; |
| if ("page" == c) d -= Gb(), e -= Hb(); |
| else if ("local" == c || !c) { |
| var f = a.display.sizer.getBoundingClientRect(); |
| d += f.left, e += f.top |
| } |
| var g = a.display.lineSpace.getBoundingClientRect(); |
| return { |
| left: d - g.left, |
| top: e - g.top |
| } |
| } |
| |
| function Kb(a, b, c, d, e) { |
| return d || (d = ff(a.doc, b.line)), Ib(a, d, vb(a, d, b.ch, e), c) |
| } |
| |
| function Lb(a, b, c, d, e, f) { |
| function g(b, g) { |
| var h = yb(a, e, b, g ? "right" : "left", f); |
| return g ? h.left = h.right : h.right = h.left, Ib(a, d, h, c) |
| } |
| |
| function h(a, b) { |
| var c = i[b], |
| d = c.level % 2; |
| return a == Pg(c) && b && c.level < i[b - 1].level ? (c = i[--b], a = Qg(c) - (c.level % 2 ? 0 : 1), d = !0) : a == Qg(c) && b < i.length - 1 && c.level < i[b + 1].level && (c = i[++b], a = Pg(c) - c.level % 2, d = !1), d && a == c.to && a > c.from ? g(a - 1) : g(a, d) |
| } |
| d = d || ff(a.doc, b.line), e || (e = xb(a, d)); |
| var i = nf(d), |
| j = b.ch; |
| if (!i) return g(j); |
| var k = Yg(i, j), |
| l = h(j, k); |
| return null != Xg && (l.other = h(j, Xg)), l |
| } |
| |
| function Mb(a, b) { |
| var c = 0, |
| b = Oa(a.doc, b); |
| a.options.lineWrapping || (c = Sb(a.display) * b.ch); |
| var d = ff(a.doc, b.line), |
| e = mf(d) + mb(a.display); |
| return { |
| left: c, |
| right: c, |
| top: e, |
| bottom: e + d.height |
| } |
| } |
| |
| function Nb(a, b, c, d) { |
| var e = oa(a, b); |
| return e.xRel = d, c && (e.outside = !0), e |
| } |
| |
| function Ob(a, b, c) { |
| var d = a.doc; |
| if (c += a.display.viewOffset, 0 > c) return Nb(d.first, 0, !0, -1); |
| var e = lf(d, c), |
| f = d.first + d.size - 1; |
| if (e > f) return Nb(d.first + d.size - 1, ff(d, f) |
| .text.length, !0, 1); |
| 0 > b && (b = 0); |
| for (var g = ff(d, e);;) { |
| var h = Pb(a, g, e, b, c), |
| i = qe(g), |
| j = i && i.find(0, !0); |
| if (!i || !(h.ch > j.from.ch || h.ch == j.from.ch && h.xRel > 0)) return h; |
| e = kf(g = j.to.line) |
| } |
| } |
| |
| function Pb(a, b, c, d, e) { |
| function j(d) { |
| var e = Lb(a, oa(c, d), "line", b, i); |
| return g = !0, f > e.bottom ? e.left - h : f < e.top ? e.left + h : (g = !1, e.left) |
| } |
| var f = e - mf(b), |
| g = !1, |
| h = 2 * a.display.wrapper.clientWidth, |
| i = xb(a, b), |
| k = nf(b), |
| l = b.text.length, |
| m = Rg(b), |
| n = Sg(b), |
| o = j(m), |
| p = g, |
| q = j(n), |
| r = g; |
| if (d > q) return Nb(c, n, r, 1); |
| for (;;) { |
| if (k ? n == m || n == $g(b, m, 1) : 1 >= n - m) { |
| for (var s = o > d || q - d >= d - o ? m : n, t = d - (s == m ? o : q); og(b.text.charAt(s));) ++s; |
| var u = Nb(c, s, s == m ? p : r, -1 > t ? -1 : t > 1 ? 1 : 0); |
| return u |
| } |
| var v = Math.ceil(l / 2), |
| w = m + v; |
| if (k) { |
| w = m; |
| for (var x = 0; v > x; ++x) w = $g(b, w, 1) |
| } |
| var y = j(w); |
| y > d ? (n = w, q = y, (r = g) && (q += 1e3), l = v) : (m = w, o = y, p = g, l -= v) |
| } |
| } |
| |
| function Rb(a) { |
| if (null != a.cachedTextHeight) return a.cachedTextHeight; |
| if (null == Qb) { |
| Qb = pg("pre"); |
| for (var b = 0; 49 > b; ++b) Qb.appendChild(document.createTextNode("x")), Qb.appendChild(pg("br")); |
| Qb.appendChild(document.createTextNode("x")) |
| } |
| sg(a.measure, Qb); |
| var c = Qb.offsetHeight / 50; |
| return c > 3 && (a.cachedTextHeight = c), rg(a.measure), c || 1 |
| } |
| |
| function Sb(a) { |
| if (null != a.cachedCharWidth) return a.cachedCharWidth; |
| var b = pg("span", "xxxxxxxxxx"), |
| c = pg("pre", [b]); |
| sg(a.measure, c); |
| var d = b.getBoundingClientRect(), |
| e = (d.right - d.left) / 10; |
| return e > 2 && (a.cachedCharWidth = e), e || 10 |
| } |
| |
| function Vb(a) { |
| a.curOp = { |
| cm: a, |
| viewChanged: !1, |
| startHeight: a.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: ++Ub |
| }, Tb ? Tb.ops.push(a.curOp) : a.curOp.ownsGroup = Tb = { |
| ops: [a.curOp], |
| delayedCallbacks: [] |
| } |
| } |
| |
| function Wb(a) { |
| var b = a.delayedCallbacks, |
| c = 0; |
| do { |
| for (; c < b.length; c++) b[c].call(null); |
| for (var d = 0; d < a.ops.length; d++) { |
| var e = a.ops[d]; |
| if (e.cursorActivityHandlers) |
| for (; e.cursorActivityCalled < e.cursorActivityHandlers.length;) e.cursorActivityHandlers[e.cursorActivityCalled++].call(null, e.cm) |
| } |
| } while (c < b.length) |
| } |
| |
| function Xb(a) { |
| var b = a.curOp, |
| c = b.ownsGroup; |
| if (c) try { |
| Wb(c) |
| } finally { |
| Tb = null; |
| for (var d = 0; d < c.ops.length; d++) c.ops[d].cm.curOp = null; |
| Yb(c) |
| } |
| } |
| |
| function Yb(a) { |
| for (var b = a.ops, c = 0; c < b.length; c++) Zb(b[c]); |
| for (var c = 0; c < b.length; c++) $b(b[c]); |
| for (var c = 0; c < b.length; c++) _b(b[c]); |
| for (var c = 0; c < b.length; c++) ac(b[c]); |
| for (var c = 0; c < b.length; c++) bc(b[c]) |
| } |
| |
| function Zb(a) { |
| var b = a.cm, |
| c = b.display; |
| V(b), a.updateMaxLine && H(b), a.mustUpdate = a.viewChanged || a.forceUpdate || null != a.scrollTop || a.scrollToPos && (a.scrollToPos.from.line < c.viewFrom || a.scrollToPos.to.line >= c.viewTo) || c.maxLineChanged && b.options.lineWrapping, a.update = a.mustUpdate && new U(b, a.mustUpdate && { |
| top: a.scrollTop, |
| ensure: a.scrollToPos |
| }, a.forceUpdate) |
| } |
| |
| function $b(a) { |
| a.updatedDisplay = a.mustUpdate && W(a.cm, a.update) |
| } |
| |
| function _b(a) { |
| var b = a.cm, |
| c = b.display; |
| a.updatedDisplay && $(b), a.barMeasure = J(b), c.maxLineChanged && !b.options.lineWrapping && (a.adjustWidthTo = vb(b, c.maxLine, c.maxLine.text.length) |
| .left + 3, b.display.sizerWidth = a.adjustWidthTo, a.barMeasure.scrollWidth = Math.max(c.scroller.clientWidth, c.sizer.offsetLeft + a.adjustWidthTo + pb(b) + b.display.barWidth), a.maxScrollLeft = Math.max(0, c.sizer.offsetLeft + a.adjustWidthTo - qb(b))), (a.updatedDisplay || a.selectionChanged) && (a.preparedSelection = c.input.prepareSelection()) |
| } |
| |
| function ac(a) { |
| var b = a.cm; |
| null != a.adjustWidthTo && (b.display.sizer.style.minWidth = a.adjustWidthTo + "px", a.maxScrollLeft < b.doc.scrollLeft && Ic(b, Math.min(b.display.scroller.scrollLeft, a.maxScrollLeft), !0), b.display.maxLineChanged = !1), a.preparedSelection && b.display.input.showSelection(a.preparedSelection), a.updatedDisplay && Z(b, a.barMeasure), (a.updatedDisplay || a.startHeight != b.doc.height) && N(b, a.barMeasure), a.selectionChanged && hb(b), b.state.focused && a.updateInput && b.display.input.reset(a.typing), a.focus && a.focus == ug() && ta(a.cm) |
| } |
| |
| function bc(a) { |
| var b = a.cm, |
| c = b.display, |
| d = b.doc; |
| if (a.updatedDisplay && X(b, a.update), null == c.wheelStartX || null == a.scrollTop && null == a.scrollLeft && !a.scrollToPos || (c.wheelStartX = c.wheelStartY = null), null == a.scrollTop || c.scroller.scrollTop == a.scrollTop && !a.forceScroll || (d.scrollTop = Math.max(0, Math.min(c.scroller.scrollHeight - c.scroller.clientHeight, a.scrollTop)), c.scrollbars.setScrollTop(d.scrollTop), c.scroller.scrollTop = d.scrollTop), null == a.scrollLeft || c.scroller.scrollLeft == a.scrollLeft && !a.forceScroll || (d.scrollLeft = Math.max(0, Math.min(c.scroller.scrollWidth - qb(b), a.scrollLeft)), c.scrollbars.setScrollLeft(d.scrollLeft), c.scroller.scrollLeft = d.scrollLeft, Q(b)), a.scrollToPos) { |
| var e = pd(b, Oa(d, a.scrollToPos.from), Oa(d, a.scrollToPos.to), a.scrollToPos.margin); |
| a.scrollToPos.isCursor && b.state.focused && od(b, e) |
| } |
| var f = a.maybeHiddenMarkers, |
| g = a.maybeUnhiddenMarkers; |
| if (f) |
| for (var h = 0; h < f.length; ++h) f[h].lines.length || Lf(f[h], "hide"); |
| if (g) |
| for (var h = 0; h < g.length; ++h) g[h].lines.length && Lf(g[h], "unhide"); |
| c.wrapper.offsetHeight && (d.scrollTop = b.display.scroller.scrollTop), a.changeObjs && Lf(b, "changes", b, a.changeObjs), a.update && a.update.finish() |
| } |
| |
| function cc(a, b) { |
| if (a.curOp) return b(); |
| Vb(a); |
| try { |
| return b() |
| } finally { |
| Xb(a) |
| } |
| } |
| |
| function dc(a, b) { |
| return function () { |
| if (a.curOp) return b.apply(a, arguments); |
| Vb(a); |
| try { |
| return b.apply(a, arguments) |
| } finally { |
| Xb(a) |
| } |
| } |
| } |
| |
| function ec(a) { |
| return function () { |
| if (this.curOp) return a.apply(this, arguments); |
| Vb(this); |
| try { |
| return a.apply(this, arguments) |
| } finally { |
| Xb(this) |
| } |
| } |
| } |
| |
| function fc(a) { |
| return function () { |
| var b = this.cm; |
| if (!b || b.curOp) return a.apply(this, arguments); |
| Vb(b); |
| try { |
| return a.apply(this, arguments) |
| } finally { |
| Xb(b) |
| } |
| } |
| } |
| |
| function gc(a, b, c) { |
| this.line = b, this.rest = te(b), this.size = this.rest ? kf(bg(this.rest)) - c + 1 : 1, this.node = this.text = null, this.hidden = we(a, b) |
| } |
| |
| function hc(a, b, c) { |
| for (var e, d = [], f = b; c > f; f = e) { |
| var g = new gc(a.doc, ff(a.doc, f), f); |
| e = f + g.size, d.push(g) |
| } |
| return d |
| } |
| |
| function ic(a, b, c, d) { |
| null == b && (b = a.doc.first), null == c && (c = a.doc.first + a.doc.size), d || (d = 0); |
| var e = a.display; |
| if (d && c < e.viewTo && (null == e.updateLineNumbers || e.updateLineNumbers > b) && (e.updateLineNumbers = b), a.curOp.viewChanged = !0, b >= e.viewTo) u && ue(a.doc, b) < e.viewTo && kc(a); |
| else if (c <= e.viewFrom) u && ve(a.doc, c + d) > e.viewFrom ? kc(a) : (e.viewFrom += d, e.viewTo += d); |
| else if (b <= e.viewFrom && c >= e.viewTo) kc(a); |
| else if (b <= e.viewFrom) { |
| var f = mc(a, c, c + d, 1); |
| f ? (e.view = e.view.slice(f.index), e.viewFrom = f.lineN, e.viewTo += d) : kc(a) |
| } else if (c >= e.viewTo) { |
| var f = mc(a, b, b, -1); |
| f ? (e.view = e.view.slice(0, f.index), e.viewTo = f.lineN) : kc(a) |
| } else { |
| var g = mc(a, b, b, -1), |
| h = mc(a, c, c + d, 1); |
| g && h ? (e.view = e.view.slice(0, g.index) |
| .concat(hc(a, g.lineN, h.lineN)) |
| .concat(e.view.slice(h.index)), e.viewTo += d) : kc(a) |
| } |
| var i = e.externalMeasured; |
| i && (c < i.lineN ? i.lineN += d : b < i.lineN + i.size && (e.externalMeasured = null)) |
| } |
| |
| function jc(a, b, c) { |
| a.curOp.viewChanged = !0; |
| var d = a.display, |
| e = a.display.externalMeasured; |
| if (e && b >= e.lineN && b < e.lineN + e.size && (d.externalMeasured = null), !(b < d.viewFrom || b >= d.viewTo)) { |
| var f = d.view[lc(a, b)]; |
| if (null != f.node) { |
| var g = f.changes || (f.changes = []); - 1 == dg(g, c) && g.push(c) |
| } |
| } |
| } |
| |
| function kc(a) { |
| a.display.viewFrom = a.display.viewTo = a.doc.first, a.display.view = [], a.display.viewOffset = 0 |
| } |
| |
| function lc(a, b) { |
| if (b >= a.display.viewTo) return null; |
| if (b -= a.display.viewFrom, 0 > b) return null; |
| for (var c = a.display.view, d = 0; d < c.length; d++) |
| if (b -= c[d].size, 0 > b) return d |
| } |
| |
| function mc(a, b, c, d) { |
| var f, e = lc(a, b), |
| g = a.display.view; |
| if (!u || c == a.doc.first + a.doc.size) return { |
| index: e, |
| lineN: c |
| }; |
| for (var h = 0, i = a.display.viewFrom; e > h; h++) i += g[h].size; |
| if (i != b) { |
| if (d > 0) { |
| if (e == g.length - 1) return null; |
| f = i + g[e].size - b, e++ |
| } else f = i - b; |
| b += f, c += f |
| } |
| for (; ue(a.doc, c) != c;) { |
| if (e == (0 > d ? 0 : g.length - 1)) return null; |
| c += d * g[e - (0 > d ? 1 : 0)].size, e += d |
| } |
| return { |
| index: e, |
| lineN: c |
| } |
| } |
| |
| function nc(a, b, c) { |
| var d = a.display, |
| e = d.view; |
| 0 == e.length || b >= d.viewTo || c <= d.viewFrom ? (d.view = hc(a, b, c), d.viewFrom = b) : (d.viewFrom > b ? d.view = hc(a, b, d.viewFrom) |
| .concat(d.view) : d.viewFrom < b && (d.view = d.view.slice(lc(a, b))), d.viewFrom = b, d.viewTo < c ? d.view = d.view.concat(hc(a, d.viewTo, c)) : d.viewTo > c && (d.view = d.view.slice(0, lc(a, c)))), d.viewTo = c |
| } |
| |
| function oc(a) { |
| for (var b = a.display.view, c = 0, d = 0; d < b.length; d++) { |
| var e = b[d]; |
| e.hidden || e.node && !e.changes || ++c |
| } |
| return c |
| } |
| |
| function pc(a) { |
| function g() { |
| b.activeTouch && (c = setTimeout(function () { |
| b.activeTouch = null |
| }, 1e3), f = b.activeTouch, f.end = +new Date) |
| } |
| |
| function h(a) { |
| if (1 != a.touches.length) return !1; |
| var b = a.touches[0]; |
| return b.radiusX <= 1 && b.radiusY <= 1 |
| } |
| |
| function i(a, b) { |
| if (null == b.left) return !0; |
| var c = b.left - a.left, |
| d = b.top - a.top; |
| return c * c + d * d > 400 |
| } |
| var b = a.display; |
| Jf(b.scroller, "mousedown", dc(a, uc)), d && 11 > e ? Jf(b.scroller, "dblclick", dc(a, function (b) { |
| if (!Pf(a, b)) { |
| var c = tc(a, b); |
| if (c && !Bc(a, b) && !sc(a.display, b)) { |
| Df(b); |
| var d = a.findWordAt(c); |
| Ta(a.doc, d.anchor, d.head) |
| } |
| } |
| })) : Jf(b.scroller, "dblclick", function (b) { |
| Pf(a, b) || Df(b) |
| }), s || Jf(b.scroller, "contextmenu", function (b) { |
| _c(a, b) |
| }); |
| var c, f = { |
| end: 0 |
| }; |
| Jf(b.scroller, "touchstart", function (a) { |
| if (!h(a)) { |
| clearTimeout(c); |
| var d = +new Date; |
| b.activeTouch = { |
| start: d, |
| moved: !1, |
| prev: d - f.end <= 300 ? f : null |
| }, 1 == a.touches.length && (b.activeTouch.left = a.touches[0].pageX, b.activeTouch.top = a.touches[0].pageY) |
| } |
| }), Jf(b.scroller, "touchmove", function () { |
| b.activeTouch && (b.activeTouch.moved = !0) |
| }), Jf(b.scroller, "touchend", function (c) { |
| var d = b.activeTouch; |
| if (d && !sc(b, c) && null != d.left && !d.moved && new Date - d.start < 300) { |
| var f, e = a.coordsChar(b.activeTouch, "page"); |
| f = !d.prev || i(d, d.prev) ? new Ka(e, e) : !d.prev.prev || i(d, d.prev.prev) ? a.findWordAt(e) : new Ka(oa(e.line, 0), Oa(a.doc, oa(e.line + 1, 0))), a.setSelection(f.anchor, f.head), a.focus(), Df(c) |
| } |
| g() |
| }), Jf(b.scroller, "touchcancel", g), Jf(b.scroller, "scroll", function () { |
| b.scroller.clientHeight && (Hc(a, b.scroller.scrollTop), Ic(a, b.scroller.scrollLeft, !0), Lf(a, "scroll", a)) |
| }), Jf(b.scroller, "mousewheel", function (b) { |
| Mc(a, b) |
| }), Jf(b.scroller, "DOMMouseScroll", function (b) { |
| Mc(a, b) |
| }), Jf(b.wrapper, "scroll", function () { |
| b.wrapper.scrollTop = b.wrapper.scrollLeft = 0 |
| }), b.dragFunctions = { |
| enter: function (b) { |
| Pf(a, b) || Gf(b) |
| }, |
| over: function (b) { |
| Pf(a, b) || (Fc(a, b), Gf(b)) |
| }, |
| start: function (b) { |
| Ec(a, b) |
| }, |
| drop: dc(a, Dc), |
| leave: function () { |
| Gc(a) |
| } |
| }; |
| var j = b.input.getField(); |
| Jf(j, "keyup", function (b) { |
| Wc.call(a, b) |
| }), Jf(j, "keydown", dc(a, Uc)), Jf(j, "keypress", dc(a, Xc)), Jf(j, "focus", ig(Zc, a)), Jf(j, "blur", ig($c, a)) |
| } |
| |
| function qc(a, b, c) { |
| var d = c && c != v.Init; |
| if (!b != !d) { |
| var e = a.display.dragFunctions, |
| f = b ? Jf : Kf; |
| f(a.display.scroller, "dragstart", e.start), f(a.display.scroller, "dragenter", e.enter), f(a.display.scroller, "dragover", e.over), f(a.display.scroller, "dragleave", e.leave), f(a.display.scroller, "drop", e.drop) |
| } |
| } |
| |
| function rc(a) { |
| var b = a.display; |
| (b.lastWrapHeight != b.wrapper.clientHeight || b.lastWrapWidth != b.wrapper.clientWidth) && (b.cachedCharWidth = b.cachedTextHeight = b.cachedPaddingH = null, b.scrollbarsClipped = !1, a.setSize()) |
| } |
| |
| function sc(a, b) { |
| for (var c = Hf(b); c != a.wrapper; c = c.parentNode) |
| if (!c || 1 == c.nodeType && "true" == c.getAttribute("cm-ignore-events") || c.parentNode == a.sizer && c != a.mover) return !0 |
| } |
| |
| function tc(a, b, c, d) { |
| var e = a.display; |
| if (!c && "true" == Hf(b) |
| .getAttribute("cm-not-content")) return null; |
| var f, g, h = e.lineSpace.getBoundingClientRect(); |
| try { |
| f = b.clientX - h.left, g = b.clientY - h.top |
| } catch (b) { |
| return null |
| } |
| var j, i = Ob(a, f, g); |
| if (d && 1 == i.xRel && (j = ff(a.doc, i.line) |
| .text) |
| .length == i.ch) { |
| var k = Zf(j, j.length, a.options.tabSize) - j.length; |
| i = oa(i.line, Math.max(0, Math.round((f - ob(a.display) |
| .left) / Sb(a.display)) - k)) |
| } |
| return i |
| } |
| |
| function uc(a) { |
| var b = this, |
| c = b.display; |
| if (!(c.activeTouch && c.input.supportsTouch() || Pf(b, a))) { |
| if (c.shift = a.shiftKey, sc(c, a)) return void(f || (c.scroller.draggable = !1, setTimeout(function () { |
| c.scroller.draggable = !0 |
| }, 100))); |
| if (!Bc(b, a)) { |
| var d = tc(b, a); |
| switch (window.focus(), If(a)) { |
| case 1: |
| b.state.selectingText ? b.state.selectingText(a) : d ? xc(b, a, d) : Hf(a) == c.scroller && Df(a); |
| break; |
| case 2: |
| f && (b.state.lastMiddleDown = +new Date), d && Ta(b.doc, d), setTimeout(function () { |
| c.input.focus() |
| }, 20), Df(a); |
| break; |
| case 3: |
| s ? _c(b, a) : Yc(b) |
| } |
| } |
| } |
| } |
| |
| function xc(a, b, c) { |
| d ? setTimeout(ig(ta, a), 0) : a.curOp.focus = ug(); |
| var f, e = +new Date; |
| wc && wc.time > e - 400 && 0 == pa(wc.pos, c) ? f = "triple" : vc && vc.time > e - 400 && 0 == pa(vc.pos, c) ? (f = "double", wc = { |
| time: e, |
| pos: c |
| }) : (f = "single", vc = { |
| time: e, |
| pos: c |
| }); |
| var i, g = a.doc.sel, |
| h = o ? b.metaKey : b.ctrlKey; |
| a.options.dragDrop && Dg && !ua(a) && "single" == f && (i = g.contains(c)) > -1 && (pa((i = g.ranges[i]) |
| .from(), c) < 0 || c.xRel > 0) && (pa(i.to(), c) > 0 || c.xRel < 0) ? yc(a, b, c, h) : zc(a, b, c, f, h) |
| } |
| |
| function yc(a, b, c, g) { |
| var h = a.display, |
| i = +new Date, |
| j = dc(a, function (k) { |
| f && (h.scroller.draggable = !1), a.state.draggingText = !1, Kf(document, "mouseup", j), Kf(h.scroller, "drop", j), Math.abs(b.clientX - k.clientX) + Math.abs(b.clientY - k.clientY) < 10 && (Df(k), !g && +new Date - 200 < i && Ta(a.doc, c), f || d && 9 == e ? setTimeout(function () { |
| document.body.focus(), h.input.focus() |
| }, 20) : h.input.focus()) |
| }); |
| f && (h.scroller.draggable = !0), a.state.draggingText = j, h.scroller.dragDrop && h.scroller.dragDrop(), Jf(document, "mouseup", j), Jf(h.scroller, "drop", j) |
| } |
| |
| function zc(a, b, c, d, e) { |
| function o(b) { |
| if (0 != pa(n, b)) |
| if (n = b, "rect" == d) { |
| for (var e = [], f = a.options.tabSize, k = Zf(ff(g, c.line) |
| .text, c.ch, f), l = Zf(ff(g, b.line) |
| .text, b.ch, f), m = Math.min(k, l), o = Math.max(k, l), p = Math.min(c.line, b.line), q = Math.min(a.lastLine(), Math.max(c.line, b.line)); q >= p; p++) { |
| var r = ff(g, p) |
| .text, |
| s = $f(r, m, f); |
| m == o ? e.push(new Ka(oa(p, s), oa(p, s))) : r.length > s && e.push(new Ka(oa(p, s), oa(p, $f(r, o, f)))) |
| } |
| e.length || e.push(new Ka(c, c)), Za(g, La(j.ranges.slice(0, i) |
| .concat(e), i), { |
| origin: "*mouse", |
| scroll: !1 |
| }), a.scrollIntoView(b) |
| } else { |
| var t = h, |
| u = t.anchor, |
| v = b; |
| if ("single" != d) { |
| if ("double" == d) var w = a.findWordAt(b); |
| else var w = new Ka(oa(b.line, 0), Oa(g, oa(b.line + 1, 0))); |
| pa(w.anchor, u) > 0 ? (v = w.head, u = sa(t.from(), w.anchor)) : (v = w.anchor, u = ra(t.to(), w.head)) |
| } |
| var e = j.ranges.slice(0); |
| e[i] = new Ka(Oa(g, u), v), Za(g, La(e, i), Wf) |
| } |
| } |
| |
| function r(b) { |
| var c = ++q, |
| e = tc(a, b, !0, "rect" == d); |
| if (e) |
| if (0 != pa(e, n)) { |
| a.curOp.focus = ug(), o(e); |
| var h = P(f, g); |
| (e.line >= h.to || e.line < h.from) && setTimeout(dc(a, function () { |
| q == c && r(b) |
| }), 150) |
| } else { |
| var i = b.clientY < p.top ? -20 : b.clientY > p.bottom ? 20 : 0; |
| i && setTimeout(dc(a, function () { |
| q == c && (f.scroller.scrollTop += i, r(b)) |
| }), 50) |
| } |
| } |
| |
| function s(b) { |
| a.state.selectingText = !1, q = 1 / 0, Df(b), f.input.focus(), Kf(document, "mousemove", t), Kf(document, "mouseup", u), g.history.lastSelOrigin = null |
| } |
| var f = a.display, |
| g = a.doc; |
| Df(b); |
| var h, i, j = g.sel, |
| k = j.ranges; |
| if (e && !b.shiftKey ? (i = g.sel.contains(c), h = i > -1 ? k[i] : new Ka(c, c)) : (h = g.sel.primary(), i = g.sel.primIndex), b.altKey) d = "rect", e || (h = new Ka(c, c)), c = tc(a, b, !0, !0), i = -1; |
| else if ("double" == d) { |
| var l = a.findWordAt(c); |
| h = a.display.shift || g.extend ? Sa(g, h, l.anchor, l.head) : l |
| } else if ("triple" == d) { |
| var m = new Ka(oa(c.line, 0), Oa(g, oa(c.line + 1, 0))); |
| h = a.display.shift || g.extend ? Sa(g, h, m.anchor, m.head) : m |
| } else h = Sa(g, h, c); |
| e ? -1 == i ? (i = k.length, Za(g, La(k.concat([h]), i), { |
| scroll: !1, |
| origin: "*mouse" |
| })) : k.length > 1 && k[i].empty() && "single" == d && !b.shiftKey ? (Za(g, La(k.slice(0, i) |
| .concat(k.slice(i + 1)), 0), { |
| scroll: !1, |
| origin: "*mouse" |
| }), j = g.sel) : Va(g, i, h, Wf) : (i = 0, Za(g, new Ja([h], 0), Wf), j = g.sel); |
| var n = c, |
| p = f.wrapper.getBoundingClientRect(), |
| q = 0, |
| t = dc(a, function (a) { |
| If(a) ? r(a) : s(a) |
| }), |
| u = dc(a, s); |
| a.state.selectingText = u, Jf(document, "mousemove", t), Jf(document, "mouseup", u) |
| } |
| |
| function Ac(a, b, c, d, e) { |
| try { |
| var f = b.clientX, |
| g = b.clientY |
| } catch (b) { |
| return !1 |
| } |
| if (f >= Math.floor(a.display.gutters.getBoundingClientRect() |
| .right)) return !1; |
| d && Df(b); |
| var h = a.display, |
| i = h.lineDiv.getBoundingClientRect(); |
| if (g > i.bottom || !Rf(a, c)) return Ff(b); |
| g -= i.top - h.viewOffset; |
| for (var j = 0; j < a.options.gutters.length; ++j) { |
| var k = h.gutters.childNodes[j]; |
| if (k && k.getBoundingClientRect() |
| .right >= f) { |
| var l = lf(a.doc, g), |
| m = a.options.gutters[j]; |
| return e(a, c, a, l, m, b), Ff(b) |
| } |
| } |
| } |
| |
| function Bc(a, b) { |
| return Ac(a, b, "gutterClick", !0, Nf) |
| } |
| |
| function Dc(a) { |
| var b = this; |
| if (Gc(b), !Pf(b, a) && !sc(b.display, a)) { |
| Df(a), d && (Cc = +new Date); |
| var c = tc(b, a, !0), |
| e = a.dataTransfer.files; |
| if (c && !ua(b)) |
| if (e && e.length && window.FileReader && window.File) |
| for (var f = e.length, g = Array(f), h = 0, i = function (a, d) { |
| var e = new FileReader; |
| e.onload = dc(b, function () { |
| if (g[d] = e.result, ++h == f) { |
| c = Oa(b.doc, c); |
| var a = { |
| from: c, |
| to: c, |
| text: b.doc.splitLines(g.join(b.doc.lineSeparator())), |
| origin: "paste" |
| }; |
| hd(b.doc, a), Ya(b.doc, Ma(c, bd(a))) |
| } |
| }), e.readAsText(a) |
| }, j = 0; f > j; ++j) i(e[j], j); |
| else { |
| if (b.state.draggingText && b.doc.sel.contains(c) > -1) return b.state.draggingText(a), void setTimeout(function () { |
| b.display.input.focus() |
| }, 20); |
| try { |
| var g = a.dataTransfer.getData("Text"); |
| if (g) { |
| if (b.state.draggingText && !(o ? a.altKey : a.ctrlKey)) var k = b.listSelections(); |
| if ($a(b.doc, Ma(c, c)), k) |
| for (var j = 0; j < k.length; ++j) nd(b.doc, "", k[j].anchor, k[j].head, "drag"); |
| b.replaceSelection(g, "around", "paste"), b.display.input.focus() |
| } |
| } catch (a) {} |
| } |
| } |
| } |
| |
| function Ec(a, b) { |
| if (d && (!a.state.draggingText || +new Date - Cc < 100)) return void Gf(b); |
| if (!Pf(a, b) && !sc(a.display, b) && (b.dataTransfer.setData("Text", a.getSelection()), b.dataTransfer.setDragImage && !j)) { |
| var c = pg("img", null, null, "position: fixed; left: 0; top: 0;"); |
| c.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", i && (c.width = c.height = 1, a.display.wrapper.appendChild(c), c._top = c.offsetTop), b.dataTransfer.setDragImage(c, 0, 0), i && c.parentNode.removeChild(c) |
| } |
| } |
| |
| function Fc(a, b) { |
| var c = tc(a, b); |
| if (c) { |
| var d = document.createDocumentFragment(); |
| fb(a, c, d), a.display.dragCursor || (a.display.dragCursor = pg("div", null, "CodeMirror-cursors CodeMirror-dragcursors"), a.display.lineSpace.insertBefore(a.display.dragCursor, a.display.cursorDiv)), sg(a.display.dragCursor, d) |
| } |
| } |
| |
| function Gc(a) { |
| a.display.dragCursor && (a.display.lineSpace.removeChild(a.display.dragCursor), a.display.dragCursor = null) |
| } |
| |
| function Hc(b, c) { |
| Math.abs(b.doc.scrollTop - c) < 2 || (b.doc.scrollTop = c, a || Y(b, { |
| top: c |
| }), b.display.scroller.scrollTop != c && (b.display.scroller.scrollTop = c), b.display.scrollbars.setScrollTop(c), a && Y(b), ib(b, 100)) |
| } |
| |
| function Ic(a, b, c) { |
| (c ? b == a.doc.scrollLeft : Math.abs(a.doc.scrollLeft - b) < 2) || (b = Math.min(b, a.display.scroller.scrollWidth - a.display.scroller.clientWidth), a.doc.scrollLeft = b, Q(a), a.display.scroller.scrollLeft != b && (a.display.scroller.scrollLeft = b), a.display.scrollbars.setScrollLeft(b)) |
| } |
| |
| function Mc(b, c) { |
| var d = Lc(c), |
| e = d.x, |
| g = d.y, |
| h = b.display, |
| j = h.scroller; |
| if (e && j.scrollWidth > j.clientWidth || g && j.scrollHeight > j.clientHeight) { |
| if (g && o && f) a: for (var k = c.target, l = h.view; k != j; k = k.parentNode) |
| for (var m = 0; m < l.length; m++) |
| if (l[m].node == k) { |
| b.display.currentWheelTarget = k; |
| break a |
| } |
| if (e && !a && !i && null != Kc) return g && Hc(b, Math.max(0, Math.min(j.scrollTop + g * Kc, j.scrollHeight - j.clientHeight))), Ic(b, Math.max(0, Math.min(j.scrollLeft + e * Kc, j.scrollWidth - j.clientWidth))), Df(c), void(h.wheelStartX = null); |
| if (g && null != Kc) { |
| var n = g * Kc, |
| p = b.doc.scrollTop, |
| q = p + h.wrapper.clientHeight; |
| 0 > n ? p = Math.max(0, p + n - 50) : q = Math.min(b.doc.height, q + n + 50), Y(b, { |
| top: p, |
| bottom: q |
| }) |
| } |
| 20 > Jc && (null == h.wheelStartX ? (h.wheelStartX = j.scrollLeft, h.wheelStartY = j.scrollTop, h.wheelDX = e, h.wheelDY = g, setTimeout(function () { |
| if (null != h.wheelStartX) { |
| var a = j.scrollLeft - h.wheelStartX, |
| b = j.scrollTop - h.wheelStartY, |
| c = b && h.wheelDY && b / h.wheelDY || a && h.wheelDX && a / h.wheelDX; |
| h.wheelStartX = h.wheelStartY = null, c && (Kc = (Kc * Jc + c) / (Jc + 1), ++Jc) |
| } |
| }, 200)) : (h.wheelDX += e, h.wheelDY += g)) |
| } |
| } |
| |
| function Nc(a, b, c) { |
| if ("string" == typeof b && (b = Ld[b], !b)) return !1; |
| a.display.input.ensurePolled(); |
| var d = a.display.shift, |
| e = !1; |
| try { |
| ua(a) && (a.state.suppressEdits = !0), c && (a.display.shift = !1), e = b(a) != Uf |
| } finally { |
| a.display.shift = d, a.state.suppressEdits = !1 |
| } |
| return e |
| } |
| |
| function Oc(a, b, c) { |
| for (var d = 0; d < a.state.keyMaps.length; d++) { |
| var e = Od(b, a.state.keyMaps[d], c, a); |
| if (e) return e |
| } |
| return a.options.extraKeys && Od(b, a.options.extraKeys, c, a) || Od(b, a.options.keyMap, c, a) |
| } |
| |
| function Qc(a, b, c, d) { |
| var e = a.state.keySeq; |
| if (e) { |
| if (Pd(b)) return "handled"; |
| Pc.set(50, function () { |
| a.state.keySeq == e && (a.state.keySeq = null, a.display.input.reset()) |
| }), b = e + " " + b |
| } |
| var f = Oc(a, b, d); |
| return "multi" == f && (a.state.keySeq = b), "handled" == f && Nf(a, "keyHandled", a, b, c), ("handled" == f || "multi" == f) && (Df(c), hb(a)), e && !f && /\'$/.test(b) ? (Df(c), !0) : !!f |
| } |
| |
| function Rc(a, b) { |
| var c = Qd(b, !0); |
| return c ? b.shiftKey && !a.state.keySeq ? Qc(a, "Shift-" + c, b, function (b) { |
| return Nc(a, b, !0) |
| }) || Qc(a, c, b, function (b) { |
| return ("string" == typeof b ? /^go[A-Z]/.test(b) : b.motion) ? Nc(a, b) : void 0 |
| }) : Qc(a, c, b, function (b) { |
| return Nc(a, b) |
| }) : !1 |
| } |
| |
| function Sc(a, b, c) { |
| return Qc(a, "'" + c + "'", b, function (b) { |
| return Nc(a, b, !0) |
| }) |
| } |
| |
| function Uc(a) { |
| var b = this; |
| if (b.curOp.focus = ug(), !Pf(b, a)) { |
| d && 11 > e && 27 == a.keyCode && (a.returnValue = !1); |
| var c = a.keyCode; |
| b.display.shift = 16 == c || a.shiftKey; |
| var f = Rc(b, a); |
| i && (Tc = f ? c : null, !f && 88 == c && !Kg && (o ? a.metaKey : a.ctrlKey) && b.replaceSelection("", null, "cut")), 18 != c || /\bCodeMirror-crosshair\b/.test(b.display.lineDiv.className) || Vc(b) |
| } |
| } |
| |
| function Vc(a) { |
| function c(a) { |
| 18 != a.keyCode && a.altKey || (wg(b, "CodeMirror-crosshair"), Kf(document, "keyup", c), Kf(document, "mouseover", c)) |
| } |
| var b = a.display.lineDiv; |
| xg(b, "CodeMirror-crosshair"), Jf(document, "keyup", c), Jf(document, "mouseover", c) |
| } |
| |
| function Wc(a) { |
| 16 == a.keyCode && (this.doc.sel.shift = !1), Pf(this, a) |
| } |
| |
| function Xc(a) { |
| var b = this; |
| if (!(sc(b.display, a) || Pf(b, a) || a.ctrlKey && !a.altKey || o && a.metaKey)) { |
| var c = a.keyCode, |
| d = a.charCode; |
| if (i && c == Tc) return Tc = null, void Df(a); |
| if (!i || a.which && !(a.which < 10) || !Rc(b, a)) { |
| var e = String.fromCharCode(null == d ? c : d); |
| Sc(b, a, e) || b.display.input.onKeyPress(a) |
| } |
| } |
| } |
| |
| function Yc(a) { |
| a.state.delayingBlurEvent = !0, setTimeout(function () { |
| a.state.delayingBlurEvent && (a.state.delayingBlurEvent = !1, $c(a)) |
| }, 100) |
| } |
| |
| function Zc(a) { |
| a.state.delayingBlurEvent && (a.state.delayingBlurEvent = !1), "nocursor" != a.options.readOnly && (a.state.focused || (Lf(a, "focus", a), a.state.focused = !0, xg(a.display.wrapper, "CodeMirror-focused"), a.curOp || a.display.selForContextMenu == a.doc.sel || (a.display.input.reset(), f && setTimeout(function () { |
| a.display.input.reset(!0) |
| }, 20)), a.display.input.receivedFocus()), hb(a)) |
| } |
| |
| function $c(a) { |
| a.state.delayingBlurEvent || (a.state.focused && (Lf(a, "blur", a), a.state.focused = !1, wg(a.display.wrapper, "CodeMirror-focused")), clearInterval(a.display.blinker), setTimeout(function () { |
| a.state.focused || (a.display.shift = !1) |
| }, 150)) |
| } |
| |
| function _c(a, b) { |
| sc(a.display, b) || ad(a, b) || a.display.input.onContextMenu(b) |
| } |
| |
| function ad(a, b) { |
| return Rf(a, "gutterContextMenu") ? Ac(a, b, "gutterContextMenu", !1, Lf) : !1 |
| } |
| |
| function cd(a, b) { |
| if (pa(a, b.from) < 0) return a; |
| if (pa(a, b.to) <= 0) return bd(b); |
| var c = a.line + b.text.length - (b.to.line - b.from.line) - 1, |
| d = a.ch; |
| return a.line == b.to.line && (d += bd(b) |
| .ch - b.to.ch), oa(c, d) |
| } |
| |
| function dd(a, b) { |
| for (var c = [], d = 0; d < a.sel.ranges.length; d++) { |
| var e = a.sel.ranges[d]; |
| c.push(new Ka(cd(e.anchor, b), cd(e.head, b))) |
| } |
| return La(c, a.sel.primIndex) |
| } |
| |
| function ed(a, b, c) { |
| return a.line == b.line ? oa(c.line, a.ch - b.ch + c.ch) : oa(c.line + (a.line - b.line), a.ch) |
| } |
| |
| function fd(a, b, c) { |
| for (var d = [], e = oa(a.first, 0), f = e, g = 0; g < b.length; g++) { |
| var h = b[g], |
| i = ed(h.from, e, f), |
| j = ed(bd(h), e, f); |
| if (e = h.to, f = j, "around" == c) { |
| var k = a.sel.ranges[g], |
| l = pa(k.head, k.anchor) < 0; |
| d[g] = new Ka(l ? j : i, l ? i : j) |
| } else d[g] = new Ka(i, i) |
| } |
| return new Ja(d, a.sel.primIndex) |
| } |
| |
| function gd(a, b, c) { |
| var d = { |
| canceled: !1, |
| from: b.from, |
| to: b.to, |
| text: b.text, |
| origin: b.origin, |
| cancel: function () { |
| this.canceled = !0 |
| } |
| }; |
| return c && (d.update = function (b, c, d, e) { |
| b && (this.from = Oa(a, b)), c && (this.to = Oa(a, c)), d && (this.text = d), void 0 !== e && (this.origin = e) |
| }), Lf(a, "beforeChange", a, d), a.cm && Lf(a.cm, "beforeChange", a.cm, d), d.canceled ? null : { |
| from: d.from, |
| to: d.to, |
| text: d.text, |
| origin: d.origin |
| } |
| } |
| |
| function hd(a, b, c) { |
| if (a.cm) { |
| if (!a.cm.curOp) return dc(a.cm, hd)(a, b, c); |
| if (a.cm.state.suppressEdits) return |
| } |
| if (!(Rf(a, "beforeChange") || a.cm && Rf(a.cm, "beforeChange")) || (b = gd(a, b, !0))) { |
| var d = t && !c && ie(a, b.from, b.to); |
| if (d) |
| for (var e = d.length - 1; e >= 0; --e) id(a, { |
| from: d[e].from, |
| to: d[e].to, |
| text: e ? [""] : b.text |
| }); |
| else id(a, b) |
| } |
| } |
| |
| function id(a, b) { |
| if (1 != b.text.length || "" != b.text[0] || 0 != pa(b.from, b.to)) { |
| var c = dd(a, b); |
| sf(a, b, c, a.cm ? a.cm.curOp.id : NaN), ld(a, b, c, fe(a, b)); |
| var d = []; |
| df(a, function (a, c) { |
| c || -1 != dg(d, a.history) || (Cf(a.history, b), d.push(a.history)), ld(a, b, null, fe(a, b)) |
| }) |
| } |
| } |
| |
| function jd(a, b, c) { |
| if (!a.cm || !a.cm.state.suppressEdits) { |
| for (var e, d = a.history, f = a.sel, g = "undo" == b ? d.done : d.undone, h = "undo" == b ? d.undone : d.done, i = 0; i < g.length && (e = g[i], c ? !e.ranges || e.equals(a.sel) : e.ranges); i++); |
| if (i != g.length) { |
| for (d.lastOrigin = d.lastSelOrigin = null; e = g.pop(), e.ranges;) { |
| if (vf(e, h), c && !e.equals(a.sel)) return void Za(a, e, { |
| clearRedo: !1 |
| }); |
| f = e |
| } |
| var j = []; |
| vf(f, h), h.push({ |
| changes: j, |
| generation: d.generation |
| }), d.generation = e.generation || ++d.maxGeneration; |
| for (var k = Rf(a, "beforeChange") || a.cm && Rf(a.cm, "beforeChange"), i = e.changes.length - 1; i >= 0; --i) { |
| var l = e.changes[i]; |
| if (l.origin = b, k && !gd(a, l, !1)) return void(g.length = 0); |
| j.push(pf(a, l)); |
| var m = i ? dd(a, l) : bg(g); |
| ld(a, l, m, he(a, l)), !i && a.cm && a.cm.scrollIntoView({ |
| from: l.from, |
| to: bd(l) |
| }); |
| var n = []; |
| df(a, function (a, b) { |
| b || -1 != dg(n, a.history) || (Cf(a.history, l), n.push(a.history)), ld(a, l, null, he(a, l)) |
| }) |
| } |
| } |
| } |
| } |
| |
| function kd(a, b) { |
| if (0 != b && (a.first += b, a.sel = new Ja(eg(a.sel.ranges, function (a) { |
| return new Ka(oa(a.anchor.line + b, a.anchor.ch), oa(a.head.line + b, a.head.ch)) |
| }), a.sel.primIndex), a.cm)) { |
| ic(a.cm, a.first, a.first - b, b); |
| for (var c = a.cm.display, d = c.viewFrom; d < c.viewTo; d++) jc(a.cm, d, "gutter") |
| } |
| } |
| |
| function ld(a, b, c, d) { |
| if (a.cm && !a.cm.curOp) return dc(a.cm, ld)(a, b, c, d); |
| if (b.to.line < a.first) return void kd(a, b.text.length - 1 - (b.to.line - b.from.line)); |
| if (!(b.from.line > a.lastLine())) { |
| if (b.from.line < a.first) { |
| var e = b.text.length - 1 - (a.first - b.from.line); |
| kd(a, e), b = { |
| from: oa(a.first, 0), |
| to: oa(b.to.line + e, b.to.ch), |
| text: [bg(b.text)], |
| origin: b.origin |
| } |
| } |
| var f = a.lastLine(); |
| b.to.line > f && (b = { |
| from: b.from, |
| to: oa(f, ff(a, f) |
| .text.length), |
| text: [b.text[0]], |
| origin: b.origin |
| }), b.removed = gf(a, b.from, b.to), c || (c = dd(a, b)), a.cm ? md(a.cm, b, d) : Ye(a, b, d), $a(a, c, Vf) |
| } |
| } |
| |
| function md(a, b, c) { |
| var d = a.doc, |
| e = a.display, |
| f = b.from, |
| g = b.to, |
| h = !1, |
| i = f.line; |
| a.options.lineWrapping || (i = kf(se(ff(d, f.line))), d.iter(i, g.line + 1, function (a) { |
| return a == e.maxLine ? (h = !0, !0) : void 0 |
| })), d.sel.contains(b.from, b.to) > -1 && Qf(a), Ye(d, b, c, A(a)), a.options.lineWrapping || (d.iter(i, f.line + b.text.length, function (a) { |
| var b = G(a); |
| b > e.maxLineLength && (e.maxLine = a, e.maxLineLength = b, e.maxLineChanged = !0, h = !1) |
| }), h && (a.curOp.updateMaxLine = !0)), d.frontier = Math.min(d.frontier, f.line), ib(a, 400); |
| var j = b.text.length - (g.line - f.line) - 1; |
| b.full ? ic(a) : f.line != g.line || 1 != b.text.length || Xe(a.doc, b) ? ic(a, f.line, g.line + 1, j) : jc(a, f.line, "text"); |
| var k = Rf(a, "changes"), |
| l = Rf(a, "change"); |
| if (l || k) { |
| var m = { |
| from: f, |
| to: g, |
| text: b.text, |
| removed: b.removed, |
| origin: b.origin |
| }; |
| l && Nf(a, "change", a, m), k && (a.curOp.changeObjs || (a.curOp.changeObjs = [])) |
| .push(m) |
| } |
| a.display.selForContextMenu = null |
| } |
| |
| function nd(a, b, c, d, e) { |
| if (d || (d = c), pa(d, c) < 0) { |
| var f = d; |
| d = c, c = f |
| } |
| "string" == typeof b && (b = a.splitLines(b)), hd(a, { |
| from: c, |
| to: d, |
| text: b, |
| origin: e |
| }) |
| } |
| |
| function od(a, b) { |
| if (!Pf(a, "scrollCursorIntoView")) { |
| var c = a.display, |
| d = c.sizer.getBoundingClientRect(), |
| e = null; |
| if (b.top + d.top < 0 ? e = !0 : b.bottom + d.top > (window.innerHeight || document.documentElement.clientHeight) && (e = !1), null != e && !l) { |
| var f = pg("div", "\u200b", null, "position: absolute; top: " + (b.top - c.viewOffset - mb(a.display)) + "px; height: " + (b.bottom - b.top + pb(a) + c.barHeight) + "px; left: " + b.left + "px; width: 2px;"); |
| a.display.lineSpace.appendChild(f), f.scrollIntoView(e), a.display.lineSpace.removeChild(f) |
| } |
| } |
| } |
| |
| function pd(a, b, c, d) { |
| null == d && (d = 0); |
| for (var e = 0; 5 > e; e++) { |
| var f = !1, |
| g = Lb(a, b), |
| h = c && c != b ? Lb(a, c) : g, |
| i = rd(a, Math.min(g.left, h.left), Math.min(g.top, h.top) - d, Math.max(g.left, h.left), Math.max(g.bottom, h.bottom) + d), |
| j = a.doc.scrollTop, |
| k = a.doc.scrollLeft; |
| if (null != i.scrollTop && (Hc(a, i.scrollTop), Math.abs(a.doc.scrollTop - j) > 1 && (f = !0)), null != i.scrollLeft && (Ic(a, i.scrollLeft), Math.abs(a.doc.scrollLeft - k) > 1 && (f = !0)), !f) break |
| } |
| return g |
| } |
| |
| function qd(a, b, c, d, e) { |
| var f = rd(a, b, c, d, e); |
| null != f.scrollTop && Hc(a, f.scrollTop), null != f.scrollLeft && Ic(a, f.scrollLeft) |
| } |
| |
| function rd(a, b, c, d, e) { |
| var f = a.display, |
| g = Rb(a.display); |
| 0 > c && (c = 0); |
| var h = a.curOp && null != a.curOp.scrollTop ? a.curOp.scrollTop : f.scroller.scrollTop, |
| i = rb(a), |
| j = {}; |
| e - c > i && (e = c + i); |
| var k = a.doc.height + nb(f), |
| l = g > c, |
| m = e > k - g; |
| if (h > c) j.scrollTop = l ? 0 : c; |
| else if (e > h + i) { |
| var n = Math.min(c, (m ? k : e) - i); |
| n != h && (j.scrollTop = n) |
| } |
| var o = a.curOp && null != a.curOp.scrollLeft ? a.curOp.scrollLeft : f.scroller.scrollLeft, |
| p = qb(a) - (a.options.fixedGutter ? f.gutters.offsetWidth : 0), |
| q = d - b > p; |
| return q && (d = b + p), 10 > b ? j.scrollLeft = 0 : o > b ? j.scrollLeft = Math.max(0, b - (q ? 0 : 10)) : d > p + o - 3 && (j.scrollLeft = d + (q ? 0 : 10) - p), j |
| } |
| |
| function sd(a, b, c) { |
| (null != b || null != c) && ud(a), null != b && (a.curOp.scrollLeft = (null == a.curOp.scrollLeft ? a.doc.scrollLeft : a.curOp.scrollLeft) + b), null != c && (a.curOp.scrollTop = (null == a.curOp.scrollTop ? a.doc.scrollTop : a.curOp.scrollTop) + c) |
| } |
| |
| function td(a) { |
| ud(a); |
| var b = a.getCursor(), |
| c = b, |
| d = b; |
| a.options.lineWrapping || (c = b.ch ? oa(b.line, b.ch - 1) : b, d = oa(b.line, b.ch + 1)), a.curOp.scrollToPos = { |
| from: c, |
| to: d, |
| margin: a.options.cursorScrollMargin, |
| isCursor: !0 |
| } |
| } |
| |
| function ud(a) { |
| var b = a.curOp.scrollToPos; |
| if (b) { |
| a.curOp.scrollToPos = null; |
| var c = Mb(a, b.from), |
| d = Mb(a, b.to), |
| e = rd(a, Math.min(c.left, d.left), Math.min(c.top, d.top) - b.margin, Math.max(c.right, d.right), Math.max(c.bottom, d.bottom) + b.margin); |
| a.scrollTo(e.scrollLeft, e.scrollTop) |
| } |
| } |
| |
| function vd(a, b, c, d) { |
| var f, e = a.doc; |
| null == c && (c = "add"), "smart" == c && (e.mode.indent ? f = lb(a, b) : c = "prev"); |
| var g = a.options.tabSize, |
| h = ff(e, b), |
| i = Zf(h.text, null, g); |
| h.stateAfter && (h.stateAfter = null); |
| var k, j = h.text.match(/^\s*/)[0]; |
| if (d || /\S/.test(h.text)) { |
| if ("smart" == c && (k = e.mode.indent(f, h.text.slice(j.length), h.text), k == Uf || k > 150)) { |
| if (!d) return; |
| c = "prev" |
| } |
| } else k = 0, c = "not"; |
| "prev" == c ? k = b > e.first ? Zf(ff(e, b - 1) |
| .text, null, g) : 0 : "add" == c ? k = i + a.options.indentUnit : "subtract" == c ? k = i - a.options.indentUnit : "number" == typeof c && (k = i + c), k = Math.max(0, k); |
| var l = "", |
| m = 0; |
| if (a.options.indentWithTabs) |
| for (var n = Math.floor(k / g); n; --n) m += g, l += " "; |
| if (k > m && (l += ag(k - m)), l != j) return nd(e, l, oa(b, 0), oa(b, j.length), "+input"), h.stateAfter = null, !0; |
| for (var n = 0; n < e.sel.ranges.length; n++) { |
| var o = e.sel.ranges[n]; |
| if (o.head.line == b && o.head.ch < j.length) { |
| var m = oa(b, j.length); |
| Va(e, n, new Ka(m, m)); |
| break |
| } |
| } |
| } |
| |
| function wd(a, b, c, d) { |
| var e = b, |
| f = b; |
| return "number" == typeof b ? f = ff(a, Na(a, b)) : e = kf(b), null == e ? null : (d(f, e) && a.cm && jc(a.cm, e, c), f) |
| } |
| |
| function xd(a, b) { |
| for (var c = a.doc.sel.ranges, d = [], e = 0; e < c.length; e++) { |
| for (var f = b(c[e]); d.length && pa(f.from, bg(d) |
| .to) <= 0;) { |
| var g = d.pop(); |
| if (pa(g.from, f.from) < 0) { |
| f.from = g.from; |
| break |
| } |
| } |
| d.push(f) |
| } |
| cc(a, function () { |
| for (var b = d.length - 1; b >= 0; b--) nd(a.doc, "", d[b].from, d[b].to, "+delete"); |
| td(a) |
| }) |
| } |
| |
| function yd(a, b, c, d, e) { |
| function k() { |
| var b = f + c; |
| return b < a.first || b >= a.first + a.size ? j = !1 : (f = b, i = ff(a, b)) |
| } |
| |
| function l(a) { |
| var b = (e ? $g : _g)(i, g, c, !0); |
| if (null == b) { |
| if (a || !k()) return j = !1; |
| g = e ? (0 > c ? Sg : Rg)(i) : 0 > c ? i.text.length : 0 |
| } else g = b; |
| return !0 |
| } |
| var f = b.line, |
| g = b.ch, |
| h = c, |
| i = ff(a, f), |
| j = !0; |
| if ("char" == d) l(); |
| else if ("column" == d) l(!0); |
| else if ("word" == d || "group" == d) |
| for (var m = null, n = "group" == d, o = a.cm && a.cm.getHelper(b, "wordChars"), p = !0; !(0 > c) || l(!p); p = !1) { |
| var q = i.text.charAt(g) || "\n", |
| r = lg(q, o) ? "w" : n && "\n" == q ? "n" : !n || /\s/.test(q) ? null : "p"; |
| if (!n || p || r || (r = "s"), m && m != r) { |
| 0 > c && (c = 1, l()); |
| break |
| } |
| if (r && (m = r), c > 0 && !l(!p)) break |
| } |
| var s = cb(a, oa(f, g), h, !0); |
| return j || (s.hitSide = !0), s |
| } |
| |
| function zd(a, b, c, d) { |
| var g, e = a.doc, |
| f = b.left; |
| if ("page" == d) { |
| var h = Math.min(a.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); |
| g = b.top + c * (h - (0 > c ? 1.5 : .5) * Rb(a.display)) |
| } else "line" == d && (g = c > 0 ? b.bottom + 3 : b.top - 3); |
| for (;;) { |
| var i = Ob(a, f, g); |
| if (!i.outside) break; |
| if (0 > c ? 0 >= g : g >= e.height) { |
| i.hitSide = !0; |
| break |
| } |
| g += 5 * c |
| } |
| return i |
| } |
| |
| function Cd(a, b, c, d) { |
| v.defaults[a] = b, c && (Bd[a] = d ? function (a, b, d) { |
| d != Dd && c(a, b, d) |
| } : c) |
| } |
| |
| function Nd(a) { |
| for (var c, d, e, f, b = a.split(/-(?!$)/), a = b[b.length - 1], g = 0; g < b.length - 1; g++) { |
| var h = b[g]; |
| if (/^(cmd|meta|m)$/i.test(h)) f = !0; |
| else if (/^a(lt)?$/i.test(h)) c = !0; |
| else if (/^(c|ctrl|control)$/i.test(h)) d = !0; |
| else { |
| if (!/^s(hift)$/i.test(h)) throw new Error("Unrecognized modifier name: " + h); |
| e = !0 |
| } |
| } |
| return c && (a = "Alt-" + a), d && (a = "Ctrl-" + a), f && (a = "Cmd-" + a), e && (a = "Shift-" + a), a |
| } |
| |
| function Rd(a) { |
| return "string" == typeof a ? Md[a] : a |
| } |
| |
| function Vd(a, b, c, d, e) { |
| if (d && d.shared) return Xd(a, b, c, d, e); |
| if (a.cm && !a.cm.curOp) return dc(a.cm, Vd)(a, b, c, d, e); |
| var f = new Ud(a, e), |
| g = pa(b, c); |
| if (d && hg(d, f, !1), g > 0 || 0 == g && f.clearWhenEmpty !== !1) return f; |
| if (f.replacedWith && (f.collapsed = !0, f.widgetNode = pg("span", [f.replacedWith], "CodeMirror-widget"), d.handleMouseEvents || f.widgetNode.setAttribute("cm-ignore-events", "true"), d.insertLeft && (f.widgetNode.insertLeft = !0)), f.collapsed) { |
| if (re(a, b.line, b, c, f) || b.line != c.line && re(a, c.line, b, c, f)) throw new Error("Inserting collapsed marker partially overlapping an existing one"); |
| u = !0 |
| } |
| f.addToHistory && sf(a, { |
| from: b, |
| to: c, |
| origin: "markText" |
| }, a.sel, NaN); |
| var j, h = b.line, |
| i = a.cm; |
| if (a.iter(h, c.line + 1, function (a) { |
| i && f.collapsed && !i.options.lineWrapping && se(a) == i.display.maxLine && (j = !0), f.collapsed && h != b.line && jf(a, 0), ce(a, new _d(f, h == b.line ? b.ch : null, h == c.line ? c.ch : null)), ++h |
| }), f.collapsed && a.iter(b.line, c.line + 1, function (b) { |
| we(a, b) && jf(b, 0) |
| }), f.clearOnEnter && Jf(f, "beforeCursorEnter", function () { |
| f.clear() |
| }), f.readOnly && (t = !0, (a.history.done.length || a.history.undone.length) && a.clearHistory()), f.collapsed && (f.id = ++Td, f.atomic = !0), i) { |
| if (j && (i.curOp.updateMaxLine = !0), f.collapsed) ic(i, b.line, c.line + 1); |
| else if (f.className || f.title || f.startStyle || f.endStyle || f.css) |
| for (var k = b.line; k <= c.line; k++) jc(i, k, "text"); |
| f.atomic && ab(i.doc), Nf(i, "markerAdded", i, f) |
| } |
| return f |
| } |
| |
| function Xd(a, b, c, d, e) { |
| d = hg(d), d.shared = !1; |
| var f = [Vd(a, b, c, d, e)], |
| g = f[0], |
| h = d.widgetNode; |
| return df(a, function (a) { |
| h && (d.widgetNode = h.cloneNode(!0)), f.push(Vd(a, Oa(a, b), Oa(a, c), d, e)); |
| for (var i = 0; i < a.linked.length; ++i) |
| if (a.linked[i].isParent) return; |
| g = bg(f) |
| }), new Wd(f, g) |
| } |
| |
| function Yd(a) { |
| return a.findMarks(oa(a.first, 0), a.clipPos(oa(a.lastLine())), function (a) { |
| return a.parent |
| }) |
| } |
| |
| function Zd(a, b) { |
| for (var c = 0; c < b.length; c++) { |
| var d = b[c], |
| e = d.find(), |
| f = a.clipPos(e.from), |
| g = a.clipPos(e.to); |
| if (pa(f, g)) { |
| var h = Vd(a, f, g, d.primary, d.primary.type); |
| d.markers.push(h), h.parent = d |
| } |
| } |
| } |
| |
| function $d(a) { |
| for (var b = 0; b < a.length; b++) { |
| var c = a[b], |
| d = [c.primary.doc]; |
| df(c.primary.doc, function (a) { |
| d.push(a) |
| }); |
| for (var e = 0; e < c.markers.length; e++) { |
| var f = c.markers[e]; - 1 == dg(d, f.doc) && (f.parent = null, c.markers.splice(e--, 1)) |
| } |
| } |
| } |
| |
| function _d(a, b, c) { |
| this.marker = a, this.from = b, this.to = c |
| } |
| |
| function ae(a, b) { |
| if (a) |
| for (var c = 0; c < a.length; ++c) { |
| var d = a[c]; |
| if (d.marker == b) return d |
| } |
| } |
| |
| function be(a, b) { |
| for (var c, d = 0; d < a.length; ++d) a[d] != b && (c || (c = [])) |
| .push(a[d]); |
| return c |
| } |
| |
| function ce(a, b) { |
| a.markedSpans = a.markedSpans ? a.markedSpans.concat([b]) : [b], b.marker.attachLine(a) |
| } |
| |
| function de(a, b, c) { |
| if (a) |
| for (var e, d = 0; d < a.length; ++d) { |
| var f = a[d], |
| g = f.marker, |
| h = null == f.from || (g.inclusiveLeft ? f.from <= b : f.from < b); |
| if (h || f.from == b && "bookmark" == g.type && (!c || !f.marker.insertLeft)) { |
| var i = null == f.to || (g.inclusiveRight ? f.to >= b : f.to > b); |
| (e || (e = [])) |
| .push(new _d(g, f.from, i ? null : f.to)) |
| } |
| } |
| return e |
| } |
| |
| function ee(a, b, c) { |
| if (a) |
| for (var e, d = 0; d < a.length; ++d) { |
| var f = a[d], |
| g = f.marker, |
| h = null == f.to || (g.inclusiveRight ? f.to >= b : f.to > b); |
| if (h || f.from == b && "bookmark" == g.type && (!c || f.marker.insertLeft)) { |
| var i = null == f.from || (g.inclusiveLeft ? f.from <= b : f.from < b); |
| (e || (e = [])) |
| .push(new _d(g, i ? null : f.from - b, null == f.to ? null : f.to - b)) |
| } |
| } |
| return e |
| } |
| |
| function fe(a, b) { |
| if (b.full) return null; |
| var c = Qa(a, b.from.line) && ff(a, b.from.line) |
| .markedSpans, |
| d = Qa(a, b.to.line) && ff(a, b.to.line) |
| .markedSpans; |
| if (!c && !d) return null; |
| var e = b.from.ch, |
| f = b.to.ch, |
| g = 0 == pa(b.from, b.to), |
| h = de(c, e, g), |
| i = ee(d, f, g), |
| j = 1 == b.text.length, |
| k = bg(b.text) |
| .length + (j ? e : 0); |
| if (h) |
| for (var l = 0; l < h.length; ++l) { |
| var m = h[l]; |
| if (null == m.to) { |
| var n = ae(i, m.marker); |
| n ? j && (m.to = null == n.to ? null : n.to + k) : m.to = e |
| } |
| } |
| if (i) |
| for (var l = 0; l < i.length; ++l) { |
| var m = i[l]; |
| if (null != m.to && (m.to += k), null == m.from) { |
| var n = ae(h, m.marker); |
| n || (m.from = k, j && (h || (h = [])) |
| .push(m)) |
| } else m.from += k, j && (h || (h = [])) |
| .push(m) |
| } |
| h && (h = ge(h)), i && i != h && (i = ge(i)); |
| var o = [h]; |
| if (!j) { |
| var q, p = b.text.length - 2; |
| if (p > 0 && h) |
| for (var l = 0; l < h.length; ++l) null == h[l].to && (q || (q = [])) |
| .push(new _d(h[l].marker, null, null)); |
| for (var l = 0; p > l; ++l) o.push(q); |
| o.push(i) |
| } |
| return o |
| } |
| |
| function ge(a) { |
| for (var b = 0; b < a.length; ++b) { |
| var c = a[b]; |
| null != c.from && c.from == c.to && c.marker.clearWhenEmpty !== !1 && a.splice(b--, 1) |
| } |
| return a.length ? a : null |
| } |
| |
| function he(a, b) { |
| var c = yf(a, b), |
| d = fe(a, b); |
| if (!c) return d; |
| if (!d) return c; |
| for (var e = 0; e < c.length; ++e) { |
| var f = c[e], |
| g = d[e]; |
| if (f && g) a: for (var h = 0; h < g.length; ++h) { |
| for (var i = g[h], j = 0; j < f.length; ++j) |
| if (f[j].marker == i.marker) continue a; |
| f.push(i) |
| } else g && (c[e] = g) |
| } |
| return c |
| } |
| |
| function ie(a, b, c) { |
| var d = null; |
| if (a.iter(b.line, c.line + 1, function (a) { |
| if (a.markedSpans) |
| for (var b = 0; b < a.markedSpans.length; ++b) { |
| var c = a.markedSpans[b].marker; |
| !c.readOnly || d && -1 != dg(d, c) || (d || (d = [])) |
| .push(c) |
| } |
| }), !d) return null; |
| for (var e = [{ |
| from: b, |
| to: c |
| }], f = 0; f < d.length; ++f) |
| for (var g = d[f], h = g.find(0), i = 0; i < e.length; ++i) { |
| var j = e[i]; |
| if (!(pa(j.to, h.from) < 0 || pa(j.from, h.to) > 0)) { |
| var k = [i, 1], |
| l = pa(j.from, h.from), |
| m = pa(j.to, h.to); |
| (0 > l || !g.inclusiveLeft && !l) && k.push({ |
| from: j.from, |
| to: h.from |
| }), (m > 0 || !g.inclusiveRight && !m) && k.push({ |
| from: h.to, |
| to: j.to |
| }), e.splice.apply(e, k), i += k.length - 1 |
| } |
| } |
| return e |
| } |
| |
| function je(a) { |
| var b = a.markedSpans; |
| if (b) { |
| for (var c = 0; c < b.length; ++c) b[c].marker.detachLine(a); |
| a.markedSpans = null |
| } |
| } |
| |
| function ke(a, b) { |
| if (b) { |
| for (var c = 0; c < b.length; ++c) b[c].marker.attachLine(a); |
| a.markedSpans = b |
| } |
| } |
| |
| function le(a) { |
| return a.inclusiveLeft ? -1 : 0 |
| } |
| |
| function me(a) { |
| return a.inclusiveRight ? 1 : 0 |
| } |
| |
| function ne(a, b) { |
| var c = a.lines.length - b.lines.length; |
| if (0 != c) return c; |
| var d = a.find(), |
| e = b.find(), |
| f = pa(d.from, e.from) || le(a) - le(b); |
| if (f) return -f; |
| var g = pa(d.to, e.to) || me(a) - me(b); |
| return g ? g : b.id - a.id |
| } |
| |
| function oe(a, b) { |
| var d, c = u && a.markedSpans; |
| if (c) |
| for (var e, f = 0; f < c.length; ++f) e = c[f], e.marker.collapsed && null == (b ? e.from : e.to) && (!d || ne(d, e.marker) < 0) && (d = e.marker); |
| return d |
| } |
| |
| function pe(a) { |
| return oe(a, !0) |
| } |
| |
| function qe(a) { |
| return oe(a, !1) |
| } |
| |
| function re(a, b, c, d, e) { |
| var f = ff(a, b), |
| g = u && f.markedSpans; |
| if (g) |
| for (var h = 0; h < g.length; ++h) { |
| var i = g[h]; |
| if (i.marker.collapsed) { |
| var j = i.marker.find(0), |
| k = pa(j.from, c) || le(i.marker) - le(e), |
| l = pa(j.to, d) || me(i.marker) - me(e); |
| if (!(k >= 0 && 0 >= l || 0 >= k && l >= 0) && (0 >= k && (pa(j.to, c) > 0 || i.marker.inclusiveRight && e.inclusiveLeft) || k >= 0 && (pa(j.from, d) < 0 || i.marker.inclusiveLeft && e.inclusiveRight))) return !0 |
| } |
| } |
| } |
| |
| function se(a) { |
| for (var b; b = pe(a);) a = b.find(-1, !0) |
| .line; |
| return a |
| } |
| |
| function te(a) { |
| for (var b, c; b = qe(a);) a = b.find(1, !0) |
| .line, (c || (c = [])) |
| .push(a); |
| return c |
| } |
| |
| function ue(a, b) { |
| var c = ff(a, b), |
| d = se(c); |
| return c == d ? b : kf(d) |
| } |
| |
| function ve(a, b) { |
| if (b > a.lastLine()) return b; |
| var d, c = ff(a, b); |
| if (!we(a, c)) return b; |
| for (; d = qe(c);) c = d.find(1, !0) |
| .line; |
| return kf(c) + 1 |
| } |
| |
| function we(a, b) { |
| var c = u && b.markedSpans; |
| if (c) |
| for (var d, e = 0; e < c.length; ++e) |
| if (d = c[e], d.marker.collapsed) { |
| if (null == d.from) return !0; |
| if (!d.marker.widgetNode && 0 == d.from && d.marker.inclusiveLeft && xe(a, b, d)) return !0 |
| } |
| } |
| |
| function xe(a, b, c) { |
| if (null == c.to) { |
| var d = c.marker.find(1, !0); |
| return xe(a, d.line, ae(d.line.markedSpans, c.marker)) |
| } |
| if (c.marker.inclusiveRight && c.to == b.text.length) return !0; |
| for (var e, f = 0; f < b.markedSpans.length; ++f) |
| if (e = b.markedSpans[f], e.marker.collapsed && !e.marker.widgetNode && e.from == c.to && (null == e.to || e.to != c.from) && (e.marker.inclusiveLeft || c.marker.inclusiveRight) && xe(a, b, e)) return !0 |
| } |
| |
| function ze(a, b, c) { |
| mf(b) < (a.curOp && a.curOp.scrollTop || a.doc.scrollTop) && sd(a, null, c) |
| } |
| |
| function Ae(a) { |
| if (null != a.height) return a.height; |
| var b = a.doc.cm; |
| if (!b) return 0; |
| if (!tg(document.body, a.node)) { |
| var c = "position: relative;"; |
| a.coverGutter && (c += "margin-left: -" + b.display.gutters.offsetWidth + "px;"), a.noHScroll && (c += "width: " + b.display.wrapper.clientWidth + "px;"), sg(b.display.measure, pg("div", [a.node], null, c)) |
| } |
| return a.height = a.node.offsetHeight |
| } |
| |
| function Be(a, b, c, d) { |
| var e = new ye(a, c, d), |
| f = a.cm; |
| return f && e.noHScroll && (f.display.alignWidgets = !0), wd(a, b, "widget", function (b) { |
| var c = b.widgets || (b.widgets = []); |
| if (null == e.insertAt ? c.push(e) : c.splice(Math.min(c.length - 1, Math.max(0, e.insertAt)), 0, e), e.line = b, f && !we(a, b)) { |
| var d = mf(b) < a.scrollTop; |
| jf(b, b.height + Ae(e)), d && sd(f, null, e.height), f.curOp.forceUpdate = !0 |
| } |
| return !0 |
| }), e |
| } |
| |
| function De(a, b, c, d) { |
| a.text = b, a.stateAfter && (a.stateAfter = null), a.styles && (a.styles = null), null != a.order && (a.order = null), je(a), ke(a, c); |
| var e = d ? d(a) : 1; |
| e != a.height && jf(a, e) |
| } |
| |
| function Ee(a) { |
| a.parent = null, je(a) |
| } |
| |
| function Fe(a, b) { |
| if (a) |
| for (;;) { |
| var c = a.match(/(?:^|\s+)line-(background-)?(\S+)/); |
| if (!c) break; |
| a = a.slice(0, c.index) + a.slice(c.index + c[0].length); |
| var d = c[1] ? "bgClass" : "textClass"; |
| null == b[d] ? b[d] = c[2] : new RegExp("(?:^|s)" + c[2] + "(?:$|s)") |
| .test(b[d]) || (b[d] += " " + c[2]) |
| } |
| return a |
| } |
| |
| function Ge(a, b) { |
| if (a.blankLine) return a.blankLine(b); |
| if (a.innerMode) { |
| var c = v.innerMode(a, b); |
| return c.mode.blankLine ? c.mode.blankLine(c.state) : void 0 |
| } |
| } |
| |
| function He(a, b, c, d) { |
| for (var e = 0; 10 > e; e++) { |
| d && (d[0] = v.innerMode(a, c) |
| .mode); |
| var f = a.token(b, c); |
| if (b.pos > b.start) return f |
| } |
| throw new Error("Mode " + a.name + " failed to advance stream.") |
| } |
| |
| function Ie(a, b, c, d) { |
| function e(a) { |
| return { |
| start: k.start, |
| end: k.pos, |
| string: k.current(), |
| type: h || null, |
| state: a ? Jd(f.mode, j) : j |
| } |
| } |
| var h, f = a.doc, |
| g = f.mode; |
| b = Oa(f, b); |
| var l, i = ff(f, b.line), |
| j = lb(a, b.line, c), |
| k = new Sd(i.text, a.options.tabSize); |
| for (d && (l = []); |
| (d || k.pos < b.ch) && !k.eol();) k.start = k.pos, h = He(g, k, j), d && l.push(e(!0)); |
| return d ? l : e() |
| } |
| |
| function Je(a, b, c, d, e, f, g) { |
| var h = c.flattenSpans; |
| null == h && (h = a.options.flattenSpans); |
| var l, i = 0, |
| j = null, |
| k = new Sd(b, a.options.tabSize), |
| m = a.options.addModeClass && [null]; |
| for ("" == b && Fe(Ge(c, d), f); !k.eol();) { |
| if (k.pos > a.options.maxHighlightLength ? (h = !1, g && Me(a, b, d, k.pos), k.pos = b.length, l = null) : l = Fe(He(c, k, d, m), f), m) { |
| var n = m[0].name; |
| n && (l = "m-" + (l ? n + " " + l : n)) |
| } |
| if (!h || j != l) { |
| for (; i < k.start;) i = Math.min(k.start, i + 5e4), e(i, j); |
| j = l |
| } |
| k.start = k.pos |
| } |
| for (; i < k.pos;) { |
| var o = Math.min(k.pos, i + 5e4); |
| e(o, j), i = o |
| } |
| } |
| |
| function Ke(a, b, c, d) { |
| var e = [a.state.modeGen], |
| f = {}; |
| Je(a, b.text, a.doc.mode, c, function (a, b) { |
| e.push(a, b) |
| }, f, d); |
| for (var g = 0; g < a.state.overlays.length; ++g) { |
| var h = a.state.overlays[g], |
| i = 1, |
| j = 0; |
| Je(a, b.text, h.mode, !0, function (a, b) { |
| for (var c = i; a > j;) { |
| var d = e[i]; |
| d > a && e.splice(i, 1, a, e[i + 1], d), i += 2, j = Math.min(a, d) |
| } |
| if (b) |
| if (h.opaque) e.splice(c, i - c, a, "cm-overlay " + b), i = c + 2; |
| else |
| for (; i > c; c += 2) { |
| var f = e[c + 1]; |
| e[c + 1] = (f ? f + " " : "") + "cm-overlay " + b |
| } |
| }, f) |
| } |
| return { |
| styles: e, |
| classes: f.bgClass || f.textClass ? f : null |
| } |
| } |
| |
| function Le(a, b, c) { |
| if (!b.styles || b.styles[0] != a.state.modeGen) { |
| var d = lb(a, kf(b)), |
| e = Ke(a, b, b.text.length > a.options.maxHighlightLength ? Jd(a.doc.mode, d) : d); |
| b.stateAfter = d, b.styles = e.styles, e.classes ? b.styleClasses = e.classes : b.styleClasses && (b.styleClasses = null), c === a.doc.frontier && a.doc.frontier++ |
| } |
| return b.styles |
| } |
| |
| function Me(a, b, c, d) { |
| var e = a.doc.mode, |
| f = new Sd(b, a.options.tabSize); |
| for (f.start = f.pos = d || 0, "" == b && Ge(e, c); !f.eol();) He(e, f, c), f.start = f.pos |
| } |
| |
| function Pe(a, b) { |
| if (!a || /^\s*$/.test(a)) return null; |
| var c = b.addModeClass ? Oe : Ne; |
| return c[a] || (c[a] = a.replace(/\S+/g, "cm-$&")) |
| } |
| |
| function Qe(a, b) { |
| var c = pg("span", null, null, f ? "padding-right: .1px" : null), |
| e = { |
| pre: pg("pre", [c], "CodeMirror-line"), |
| content: c, |
| col: 0, |
| pos: 0, |
| cm: a, |
| splitSpaces: (d || f) && a.getOption("lineWrapping") |
| }; |
| b.measure = {}; |
| for (var g = 0; g <= (b.rest ? b.rest.length : 0); g++) { |
| var i, h = g ? b.rest[g - 1] : b.line; |
| e.pos = 0, e.addToken = Se, Hg(a.display.measure) && (i = nf(h)) && (e.addToken = Ue(e.addToken, i)), e.map = []; |
| var j = b != a.display.externalMeasured && kf(h); |
| We(h, e, Le(a, h, j)), h.styleClasses && (h.styleClasses.bgClass && (e.bgClass = yg(h.styleClasses.bgClass, e.bgClass || "")), h.styleClasses.textClass && (e.textClass = yg(h.styleClasses.textClass, e.textClass || ""))), 0 == e.map.length && e.map.push(0, 0, e.content.appendChild(Fg(a.display.measure))), 0 == g ? (b.measure.map = e.map, b.measure.cache = {}) : ((b.measure.maps || (b.measure.maps = [])) |
| .push(e.map), (b.measure.caches || (b.measure.caches = [])) |
| .push({})) |
| } |
| return f && /\bcm-tab\b/.test(e.content.lastChild.className) && (e.content.className = "cm-tab-wrap-hack"), Lf(a, "renderLine", a, b.line, e.pre), e.pre.className && (e.textClass = yg(e.pre.className, e.textClass || "")), e |
| } |
| |
| function Re(a) { |
| var b = pg("span", "\u2022", "cm-invalidchar"); |
| return b.title = "\\u" + a.charCodeAt(0) |
| .toString(16), b.setAttribute("aria-label", b.title), b |
| } |
| |
| function Se(a, b, c, f, g, h, i) { |
| if (b) { |
| var j = a.splitSpaces ? b.replace(/ {3,}/g, Te) : b, |
| k = a.cm.state.specialChars, |
| l = !1; |
| if (k.test(b)) |
| for (var m = document.createDocumentFragment(), n = 0;;) { |
| k.lastIndex = n; |
| var o = k.exec(b), |
| p = o ? o.index - n : b.length - n; |
| if (p) { |
| var q = document.createTextNode(j.slice(n, n + p)); |
| d && 9 > e ? m.appendChild(pg("span", [q])) : m.appendChild(q), a.map.push(a.pos, a.pos + p, q), a.col += p, a.pos += p |
| } |
| if (!o) break; |
| if (n += p + 1, " " == o[0]) { |
| var r = a.cm.options.tabSize, |
| s = r - a.col % r, |
| q = m.appendChild(pg("span", ag(s), "cm-tab")); |
| q.setAttribute("role", "presentation"), q.setAttribute("cm-text", " "), a.col += s |
| } else if ("\r" == o[0] || "\n" == o[0]) { |
| var q = m.appendChild(pg("span", "\r" == o[0] ? "\u240d" : "\u2424", "cm-invalidchar")); |
| q.setAttribute("cm-text", o[0]), a.col += 1 |
| } else { |
| var q = a.cm.options.specialCharPlaceholder(o[0]); |
| q.setAttribute("cm-text", o[0]), d && 9 > e ? m.appendChild(pg("span", [q])) : m.appendChild(q), a.col += 1 |
| } |
| a.map.push(a.pos, a.pos + 1, q), a.pos++ |
| } else { |
| a.col += b.length; |
| var m = document.createTextNode(j); |
| a.map.push(a.pos, a.pos + b.length, m), d && 9 > e && (l = !0), a.pos += b.length |
| } |
| if (c || f || g || l || i) { |
| var t = c || ""; |
| f && (t += f), g && (t += g); |
| var u = pg("span", [m], t, i); |
| return h && (u.title = h), a.content.appendChild(u) |
| } |
| a.content.appendChild(m) |
| } |
| } |
| |
| function Te(a) { |
| for (var b = " ", c = 0; c < a.length - 2; ++c) b += c % 2 ? " " : "\xa0"; |
| return b += " " |
| } |
| |
| function Ue(a, b) { |
| return function (c, d, e, f, g, h, i) { |
| e = e ? e + " cm-force-border" : "cm-force-border"; |
| for (var j = c.pos, k = j + d.length;;) { |
| for (var l = 0; l < b.length; l++) { |
| var m = b[l]; |
| if (m.to > j && m.from <= j) break |
| } |
| if (m.to >= k) return a(c, d, e, f, g, h, i); |
| a(c, d.slice(0, m.to - j), e, f, null, h, i), f = null, d = d.slice(m.to - j), j = m.to |
| } |
| } |
| } |
| |
| function Ve(a, b, c, d) { |
| var e = !d && c.widgetNode; |
| e && a.map.push(a.pos, a.pos + b, e), !d && a.cm.display.input.needsContentAttribute && (e || (e = a.content.appendChild(document.createElement("span"))), e.setAttribute("cm-marker", c.id)), e && (a.cm.display.input.setUneditable(e), a.content.appendChild(e)), a.pos += b |
| } |
| |
| function We(a, b, c) { |
| var d = a.markedSpans, |
| e = a.text, |
| f = 0; |
| if (d) |
| for (var k, l, n, o, p, q, r, h = e.length, i = 0, g = 1, j = "", m = 0;;) { |
| if (m == i) { |
| n = o = p = q = l = "", r = null, m = 1 / 0; |
| for (var s = [], t = 0; t < d.length; ++t) { |
| var u = d[t], |
| v = u.marker; |
| "bookmark" == v.type && u.from == i && v.widgetNode ? s.push(v) : u.from <= i && (null == u.to || u.to > i || v.collapsed && u.to == i && u.from == i) ? (null != u.to && u.to != i && m > u.to && (m = u.to, o = ""), v.className && (n += " " + v.className), v.css && (l = v.css), v.startStyle && u.from == i && (p += " " + v.startStyle), v.endStyle && u.to == m && (o += " " + v.endStyle), v.title && !q && (q = v.title), v.collapsed && (!r || ne(r.marker, v) < 0) && (r = u)) : u.from > i && m > u.from && (m = u.from) |
| } |
| if (r && (r.from || 0) == i) { |
| if (Ve(b, (null == r.to ? h + 1 : r.to) - i, r.marker, null == r.from), null == r.to) return; |
| r.to == i && (r = !1) |
| } |
| if (!r && s.length) |
| for (var t = 0; t < s.length; ++t) Ve(b, 0, s[t]) |
| } |
| if (i >= h) break; |
| for (var w = Math.min(h, m);;) { |
| if (j) { |
| var x = i + j.length; |
| if (!r) { |
| var y = x > w ? j.slice(0, w - i) : j; |
| b.addToken(b, y, k ? k + n : n, p, i + y.length == m ? o : "", q, l) |
| } |
| if (x >= w) { |
| j = j.slice(w - i), i = w; |
| break |
| } |
| i = x, p = "" |
| } |
| j = e.slice(f, f = c[g++]), k = Pe(c[g++], b.cm.options) |
| } |
| } else |
| for (var g = 1; g < c.length; g += 2) b.addToken(b, e.slice(f, f = c[g]), Pe(c[g + 1], b.cm.options)) |
| } |
| |
| function Xe(a, b) { |
| return 0 == b.from.ch && 0 == b.to.ch && "" == bg(b.text) && (!a.cm || a.cm.options.wholeLineUpdateBefore) |
| } |
| |
| function Ye(a, b, c, d) { |
| function e(a) { |
| return c ? c[a] : null |
| } |
| |
| function f(a, c, e) { |
| De(a, c, e, d), Nf(a, "change", a, b) |
| } |
| |
| function g(a, b) { |
| for (var c = a, f = []; b > c; ++c) f.push(new Ce(j[c], e(c), d)); |
| return f |
| } |
| var h = b.from, |
| i = b.to, |
| j = b.text, |
| k = ff(a, h.line), |
| l = ff(a, i.line), |
| m = bg(j), |
| n = e(j.length - 1), |
| o = i.line - h.line; |
| if (b.full) a.insert(0, g(0, j.length)), a.remove(j.length, a.size - j.length); |
| else if (Xe(a, b)) { |
| var p = g(0, j.length - 1); |
| f(l, l.text, n), o && a.remove(h.line, o), p.length && a.insert(h.line, p) |
| } else if (k == l) |
| if (1 == j.length) f(k, k.text.slice(0, h.ch) + m + k.text.slice(i.ch), n); |
| else { |
| var p = g(1, j.length - 1); |
| p.push(new Ce(m + k.text.slice(i.ch), n, d)), f(k, k.text.slice(0, h.ch) + j[0], e(0)), a.insert(h.line + 1, p) |
| } else if (1 == j.length) f(k, k.text.slice(0, h.ch) + j[0] + l.text.slice(i.ch), e(0)), a.remove(h.line + 1, o); |
| else { |
| f(k, k.text.slice(0, h.ch) + j[0], e(0)), f(l, m + l.text.slice(i.ch), n); |
| var p = g(1, j.length - 1); |
| o > 1 && a.remove(h.line + 1, o - 1), a.insert(h.line + 1, p) |
| } |
| Nf(a, "change", a, b) |
| } |
| |
| function Ze(a) { |
| this.lines = a, this.parent = null; |
| for (var b = 0, c = 0; b < a.length; ++b) a[b].parent = this, c += a[b].height; |
| this.height = c |
| } |
| |
| function $e(a) { |
| this.children = a; |
| for (var b = 0, c = 0, d = 0; d < a.length; ++d) { |
| var e = a[d]; |
| b += e.chunkSize(), c += e.height, e.parent = this |
| } |
| this.size = b, this.height = c, this.parent = null |
| } |
| |
| function df(a, b, c) { |
| function d(a, e, f) { |
| if (a.linked) |
| for (var g = 0; g < a.linked.length; ++g) { |
| var h = a.linked[g]; |
| if (h.doc != e) { |
| var i = f && h.sharedHist; |
| (!c || i) && (b(h.doc, i), d(h.doc, a, i)) |
| } |
| } |
| } |
| d(a, null, !0) |
| } |
| |
| function ef(a, b) { |
| if (b.cm) throw new Error("This document is already in use."); |
| a.doc = b, b.cm = a, B(a), x(a), a.options.lineWrapping || H(a), a.options.mode = b.modeOption, ic(a) |
| } |
| |
| function ff(a, b) { |
| if (b -= a.first, 0 > b || b >= a.size) throw new Error("There is no line " + (b + a.first) + " in the document."); |
| for (var c = a; !c.lines;) |
| for (var d = 0;; ++d) { |
| var e = c.children[d], |
| f = e.chunkSize(); |
| if (f > b) { |
| c = e; |
| break |
| } |
| b -= f |
| } |
| return c.lines[b] |
| } |
| |
| function gf(a, b, c) { |
| var d = [], |
| e = b.line; |
| return a.iter(b.line, c.line + 1, function (a) { |
| var f = a.text; |
| e == c.line && (f = f.slice(0, c.ch)), e == b.line && (f = f.slice(b.ch)), d.push(f), ++e |
| }), d |
| } |
| |
| function hf(a, b, c) { |
| var d = []; |
| return a.iter(b, c, function (a) { |
| d.push(a.text) |
| }), d |
| } |
| |
| function jf(a, b) { |
| var c = b - a.height; |
| if (c) |
| for (var d = a; d; d = d.parent) d.height += c |
| } |
| |
| function kf(a) { |
| if (null == a.parent) return null; |
| for (var b = a.parent, c = dg(b.lines, a), d = b.parent; d; b = d, d = d.parent) |
| for (var e = 0; d.children[e] != b; ++e) c += d.children[e].chunkSize(); |
| return c + b.first |
| } |
| |
| function lf(a, b) { |
| var c = a.first; |
| a: do { |
| for (var d = 0; d < a.children.length; ++d) { |
| var e = a.children[d], |
| f = e.height; |
| if (f > b) { |
| a = e; |
| continue a |
| } |
| b -= f, c += e.chunkSize() |
| } |
| return c |
| } while (!a.lines); |
| for (var d = 0; d < a.lines.length; ++d) { |
| var g = a.lines[d], |
| h = g.height; |
| if (h > b) break; |
| b -= h |
| } |
| return c + d |
| } |
| |
| function mf(a) { |
| a = se(a); |
| for (var b = 0, c = a.parent, d = 0; d < c.lines.length; ++d) { |
| var e = c.lines[d]; |
| if (e == a) break; |
| b += e.height |
| } |
| for (var f = c.parent; f; c = f, f = c.parent) |
| for (var d = 0; d < f.children.length; ++d) { |
| var g = f.children[d]; |
| if (g == c) break; |
| b += g.height |
| } |
| return b |
| } |
| |
| function nf(a) { |
| var b = a.order; |
| return null == b && (b = a.order = ah(a.text)), b |
| } |
| |
| function of(a) { |
| 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 = a || 1 |
| } |
| |
| function pf(a, b) { |
| var c = { |
| from: qa(b.from), |
| to: bd(b), |
| text: gf(a, b.from, b.to) |
| }; |
| return wf(a, c, b.from.line, b.to.line + 1), df(a, function (a) { |
| wf(a, c, b.from.line, b.to.line + 1) |
| }, !0), c |
| } |
| |
| function qf(a) { |
| for (; a.length;) { |
| var b = bg(a); |
| if (!b.ranges) break; |
| a.pop() |
| } |
| } |
| |
| function rf(a, b) { |
| return b ? (qf(a.done), bg(a.done)) : a.done.length && !bg(a.done) |
| .ranges ? bg(a.done) : a.done.length > 1 && !a.done[a.done.length - 2].ranges ? (a.done.pop(), bg(a.done)) : void 0 |
| } |
| |
| function sf(a, b, c, d) { |
| var e = a.history; |
| e.undone.length = 0; |
| var g, f = +new Date; |
| if ((e.lastOp == d || e.lastOrigin == b.origin && b.origin && ("+" == b.origin.charAt(0) && a.cm && e.lastModTime > f - a.cm.options.historyEventDelay || "*" == b.origin.charAt(0))) && (g = rf(e, e.lastOp == d))) { |
| var h = bg(g.changes); |
| 0 == pa(b.from, b.to) && 0 == pa(b.from, h.to) ? h.to = bd(b) : g.changes.push(pf(a, b)) |
| } else { |
| var i = bg(e.done); |
| for (i && i.ranges || vf(a.sel, e.done), g = { |
| changes: [pf(a, b)], |
| generation: e.generation |
| }, e.done.push(g); e.done.length > e.undoDepth;) e.done.shift(), e.done[0].ranges || e.done.shift() |
| } |
| e.done.push(c), e.generation = ++e.maxGeneration, e.lastModTime = e.lastSelTime = f, e.lastOp = e.lastSelOp = d, e.lastOrigin = e.lastSelOrigin = b.origin, h || Lf(a, "historyAdded") |
| } |
| |
| function tf(a, b, c, d) { |
| var e = b.charAt(0); |
| return "*" == e || "+" == e && c.ranges.length == d.ranges.length && c.somethingSelected() == d.somethingSelected() && new Date - a.history.lastSelTime <= (a.cm ? a.cm.options.historyEventDelay : 500) |
| } |
| |
| function uf(a, b, c, d) { |
| var e = a.history, |
| f = d && d.origin; |
| c == e.lastSelOp || f && e.lastSelOrigin == f && (e.lastModTime == e.lastSelTime && e.lastOrigin == f || tf(a, f, bg(e.done), b)) ? e.done[e.done.length - 1] = b : vf(b, e.done), e.lastSelTime = +new Date, e.lastSelOrigin = f, e.lastSelOp = c, d && d.clearRedo !== !1 && qf(e.undone) |
| } |
| |
| function vf(a, b) { |
| var c = bg(b); |
| c && c.ranges && c.equals(a) || b.push(a) |
| } |
| |
| function wf(a, b, c, d) { |
| var e = b["spans_" + a.id], |
| f = 0; |
| a.iter(Math.max(a.first, c), Math.min(a.first + a.size, d), function (c) { |
| c.markedSpans && ((e || (e = b["spans_" + a.id] = {}))[f] = c.markedSpans), ++f |
| }) |
| } |
| |
| function xf(a) { |
| if (!a) return null; |
| for (var c, b = 0; b < a.length; ++b) a[b].marker.explicitlyCleared ? c || (c = a.slice(0, b)) : c && c.push(a[b]); |
| return c ? c.length ? c : null : a |
| } |
| |
| function yf(a, b) { |
| var c = b["spans_" + a.id]; |
| if (!c) return null; |
| for (var d = 0, e = []; d < b.text.length; ++d) e.push(xf(c[d])); |
| return e |
| } |
| |
| function zf(a, b, c) { |
| for (var d = 0, e = []; d < a.length; ++d) { |
| var f = a[d]; |
| if (f.ranges) e.push(c ? Ja.prototype.deepCopy.call(f) : f); |
| else { |
| var g = f.changes, |
| h = []; |
| e.push({ |
| changes: h |
| }); |
| for (var i = 0; i < g.length; ++i) { |
| var k, j = g[i]; |
| if (h.push({ |
| from: j.from, |
| to: j.to, |
| text: j.text |
| }), b) |
| for (var l in j)(k = l.match(/^spans_(\d+)$/)) && dg(b, Number(k[1])) > -1 && (bg(h)[l] = j[l], delete j[l]) |
| } |
| } |
| } |
| return e |
| } |
| |
| function Af(a, b, c, d) { |
| c < a.line ? a.line += d : b < a.line && (a.line = b, a.ch = 0) |
| } |
| |
| function Bf(a, b, c, d) { |
| for (var e = 0; e < a.length; ++e) { |
| var f = a[e], |
| g = !0; |
| if (f.ranges) { |
| f.copied || (f = a[e] = f.deepCopy(), f.copied = !0); |
| for (var h = 0; h < f.ranges.length; h++) Af(f.ranges[h].anchor, b, c, d), Af(f.ranges[h].head, b, c, d) |
| } else { |
| for (var h = 0; h < f.changes.length; ++h) { |
| var i = f.changes[h]; |
| if (c < i.from.line) i.from = oa(i.from.line + d, i.from.ch), i.to = oa(i.to.line + d, i.to.ch); |
| else if (b <= i.to.line) { |
| g = !1; |
| break |
| } |
| } |
| g || (a.splice(0, e + 1), e = 0) |
| } |
| } |
| } |
| |
| function Cf(a, b) { |
| var c = b.from.line, |
| d = b.to.line, |
| e = b.text.length - (d - c) - 1; |
| Bf(a.done, c, d, e), Bf(a.undone, c, d, e) |
| } |
| |
| function Ff(a) { |
| return null != a.defaultPrevented ? a.defaultPrevented : 0 == a.returnValue |
| } |
| |
| function Hf(a) { |
| return a.target || a.srcElement |
| } |
| |
| function If(a) { |
| var b = a.which; |
| return null == b && (1 & a.button ? b = 1 : 2 & a.button ? b = 3 : 4 & a.button && (b = 2)), o && a.ctrlKey && 1 == b && (b = 3), b |
| } |
| |
| function Nf(a, b) { |
| function f(a) { |
| return function () { |
| a.apply(null, d) |
| } |
| } |
| var c = a._handlers && a._handlers[b]; |
| if (c) { |
| var e, d = Array.prototype.slice.call(arguments, 2); |
| Tb ? e = Tb.delayedCallbacks : Mf ? e = Mf : (e = Mf = [], setTimeout(Of, 0)); |
| for (var g = 0; g < c.length; ++g) e.push(f(c[g])) |
| } |
| } |
| |
| function Of() { |
| var a = Mf; |
| Mf = null; |
| for (var b = 0; b < a.length; ++b) a[b]() |
| } |
| |
| function Pf(a, b, c) { |
| return "string" == typeof b && (b = { |
| type: b, |
| preventDefault: function () { |
| this.defaultPrevented = !0 |
| } |
| }), Lf(a, c || b.type, a, b), Ff(b) || b.codemirrorIgnore |
| } |
| |
| function Qf(a) { |
| var b = a._handlers && a._handlers.cursorActivity; |
| if (b) |
| for (var c = a.curOp.cursorActivityHandlers || (a.curOp.cursorActivityHandlers = []), d = 0; d < b.length; ++d) - 1 == dg(c, b[d]) && c.push(b[d]) |
| } |
| |
| function Rf(a, b) { |
| var c = a._handlers && a._handlers[b]; |
| return c && c.length > 0 |
| } |
| |
| function Sf(a) { |
| a.prototype.on = function (a, b) { |
| Jf(this, a, b) |
| }, a.prototype.off = function (a, b) { |
| Kf(this, a, b) |
| } |
| } |
| |
| function Yf() { |
| this.id = null |
| } |
| |
| function ag(a) { |
| for (; _f.length <= a;) _f.push(bg(_f) + " "); |
| return _f[a] |
| } |
| |
| function bg(a) { |
| return a[a.length - 1] |
| } |
| |
| function dg(a, b) { |
| for (var c = 0; c < a.length; ++c) |
| if (a[c] == b) return c; |
| return -1 |
| } |
| |
| function eg(a, b) { |
| for (var c = [], d = 0; d < a.length; d++) c[d] = b(a[d], d); |
| return c |
| } |
| |
| function fg() {} |
| |
| function gg(a, b) { |
| var c; |
| return Object.create ? c = Object.create(a) : (fg.prototype = a, c = new fg), b && hg(b, c), c |
| } |
| |
| function hg(a, b, c) { |
| b || (b = {}); |
| for (var d in a) !a.hasOwnProperty(d) || c === !1 && b.hasOwnProperty(d) || (b[d] = a[d]); |
| return b |
| } |
| |
| function ig(a) { |
| var b = Array.prototype.slice.call(arguments, 1); |
| return function () { |
| return a.apply(null, b) |
| } |
| } |
| |
| function lg(a, b) { |
| return b ? b.source.indexOf("\\w") > -1 && kg(a) ? !0 : b.test(a) : kg(a) |
| } |
| |
| function mg(a) { |
| for (var b in a) |
| if (a.hasOwnProperty(b) && a[b]) return !1; |
| return !0 |
| } |
| |
| function og(a) { |
| return a.charCodeAt(0) >= 768 && ng.test(a) |
| } |
| |
| function pg(a, b, c, d) { |
| var e = document.createElement(a); |
| if (c && (e.className = c), d && (e.style.cssText = d), "string" == typeof b) e.appendChild(document.createTextNode(b)); |
| else if (b) |
| for (var f = 0; f < b.length; ++f) e.appendChild(b[f]); |
| return e |
| } |
| |
| function rg(a) { |
| for (var b = a.childNodes.length; b > 0; --b) a.removeChild(a.firstChild); |
| return a |
| } |
| |
| function sg(a, b) { |
| return rg(a) |
| .appendChild(b) |
| } |
| |
| function ug() { |
| for (var a = document.activeElement; a && a.root && a.root.activeElement;) a = a.root.activeElement; |
| return a |
| } |
| |
| function vg(a) { |
| return new RegExp("(^|\\s)" + a + "(?:$|\\s)\\s*") |
| } |
| |
| function yg(a, b) { |
| for (var c = a.split(" "), d = 0; d < c.length; d++) c[d] && !vg(c[d]) |
| .test(b) && (b += " " + c[d]); |
| return b |
| } |
| |
| function zg(a) { |
| if (document.body.getElementsByClassName) |
| for (var b = document.body.getElementsByClassName("CodeMirror"), c = 0; c < b.length; c++) { |
| var d = b[c].CodeMirror; |
| d && a(d) |
| } |
| } |
| |
| function Bg() { |
| Ag || (Cg(), Ag = !0) |
| } |
| |
| function Cg() { |
| var a; |
| Jf(window, "resize", function () { |
| null == a && (a = setTimeout(function () { |
| a = null, zg(rc) |
| }, 100)) |
| }), Jf(window, "blur", function () { |
| zg($c) |
| }) |
| } |
| |
| function Fg(a) { |
| if (null == Eg) { |
| var b = pg("span", "\u200b"); |
| sg(a, pg("span", [b, document.createTextNode("x")])), 0 != a.firstChild.offsetHeight && (Eg = b.offsetWidth <= 1 && b.offsetHeight > 2 && !(d && 8 > e)) |
| } |
| var c = Eg ? pg("span", "\u200b") : pg("span", "\xa0", null, "display: inline-block; width: 1px; margin-right: -1px"); |
| return c.setAttribute("cm-text", ""), c |
| } |
| |
| function Hg(a) { |
| if (oldff) return false; |
| if (null != Gg) return Gg; |
| var b = sg(a, document.createTextNode("A\u062eA")), |
| c = qg(b, 0, 1) |
| .getBoundingClientRect(); |
| if (!c || c.left == c.right) return !1; |
| var d = qg(b, 1, 2) |
| .getBoundingClientRect(); |
| return Gg = d.right - c.right < 3 |
| } |
| |
| function Mg(a) { |
| if (null != Lg) return Lg; |
| var b = sg(a, pg("span", "x")), |
| c = b.getBoundingClientRect(), |
| d = qg(b, 0, 1) |
| .getBoundingClientRect(); |
| return Lg = Math.abs(c.left - d.left) > 1 |
| } |
| |
| function Og(a, b, c, d) { |
| if (!a) return d(b, c, "ltr"); |
| for (var e = !1, f = 0; f < a.length; ++f) { |
| var g = a[f]; |
| (g.from < c && g.to > b || b == c && g.to == b) && (d(Math.max(g.from, b), Math.min(g.to, c), 1 == g.level ? "rtl" : "ltr"), e = !0) |
| } |
| e || d(b, c, "ltr") |
| } |
| |
| function Pg(a) { |
| return a.level % 2 ? a.to : a.from |
| } |
| |
| function Qg(a) { |
| return a.level % 2 ? a.from : a.to |
| } |
| |
| function Rg(a) { |
| var b = nf(a); |
| return b ? Pg(b[0]) : 0 |
| } |
| |
| function Sg(a) { |
| var b = nf(a); |
| return b ? Qg(bg(b)) : a.text.length |
| } |
| |
| function Tg(a, b) { |
| var c = ff(a.doc, b), |
| d = se(c); |
| d != c && (b = kf(d)); |
| var e = nf(d), |
| f = e ? e[0].level % 2 ? Sg(d) : Rg(d) : 0; |
| return oa(b, f) |
| } |
| |
| function Ug(a, b) { |
| for (var c, d = ff(a.doc, b); c = qe(d);) d = c.find(1, !0) |
| .line, b = null; |
| var e = nf(d), |
| f = e ? e[0].level % 2 ? Rg(d) : Sg(d) : d.text.length; |
| return oa(null == b ? kf(d) : b, f) |
| } |
| |
| function Vg(a, b) { |
| var c = Tg(a, b.line), |
| d = ff(a.doc, c.line), |
| e = nf(d); |
| if (!e || 0 == e[0].level) { |
| var f = Math.max(0, d.text.search(/\S/)), |
| g = b.line == c.line && b.ch <= f && b.ch; |
| return oa(c.line, g ? 0 : f) |
| } |
| return c |
| } |
| |
| function Wg(a, b, c) { |
| var d = a[0].level; |
| return b == d ? !0 : c == d ? !1 : c > b |
| } |
| |
| function Yg(a, b) { |
| Xg = null; |
| for (var d, c = 0; c < a.length; ++c) { |
| var e = a[c]; |
| if (e.from < b && e.to > b) return c; |
| if (e.from == b || e.to == b) { |
| if (null != d) return Wg(a, e.level, a[d].level) ? (e.from != e.to && (Xg = d), c) : (e.from != e.to && (Xg = c), d); |
| d = c |
| } |
| } |
| return d |
| } |
| |
| function Zg(a, b, c, d) { |
| if (!d) return b + c; |
| do b += c; while (b > 0 && og(a.text.charAt(b))); |
| return b |
| } |
| |
| function $g(a, b, c, d) { |
| var e = nf(a); |
| if (!e) return _g(a, b, c, d); |
| for (var f = Yg(e, b), g = e[f], h = Zg(a, b, g.level % 2 ? -c : c, d);;) { |
| if (h > g.from && h < g.to) return h; |
| if (h == g.from || h == g.to) return Yg(e, h) == f ? h : (g = e[f += c], c > 0 == g.level % 2 ? g.to : g.from); |
| if (g = e[f += c], !g) return null; |
| h = c > 0 == g.level % 2 ? Zg(a, g.to, -1, d) : Zg(a, g.from, 1, d) |
| } |
| } |
| |
| function _g(a, b, c, d) { |
| var e = b + c; |
| if (d) |
| for (; e > 0 && og(a.text.charAt(e));) e += c; |
| return 0 > e || e > a.text.length ? null : e |
| } |
| var a = /gecko\/\d/i.test(navigator.userAgent), |
| b = /MSIE \d/.test(navigator.userAgent), |
| c = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent), |
| d = b || c, |
| e = d && (b ? document.documentMode || 6 : c[1]), |
| f = /WebKit\//.test(navigator.userAgent), |
| g = f && /Qt\/\d+\.\d+/.test(navigator.userAgent), |
| h = /Chrome\//.test(navigator.userAgent), |
| i = /Opera\//.test(navigator.userAgent), |
| j = /Apple Computer/.test(navigator.vendor), |
| k = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent), |
| l = /PhantomJS/.test(navigator.userAgent), |
| m = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent), |
| n = m || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent), |
| o = m || /Mac/.test(navigator.platform), |
| p = /win/i.test(navigator.platform), |
| q = i && navigator.userAgent.match(/Version\/(\d*\.\d*)/), |
| oldff = /Firefox\/([1-3])\./i.test(navigator.userAgent); |
| q && (q = Number(q[1])), q && q >= 15 && (i = !1, f = !0); |
| var r = o && (g || i && (null == q || 12.11 > q)), |
| s = a || d && e >= 9, |
| t = !1, |
| u = !1; |
| K.prototype = hg({ |
| update: function (a) { |
| var b = a.scrollWidth > a.clientWidth + 1, |
| c = a.scrollHeight > a.clientHeight + 1, |
| d = a.nativeBarWidth; |
| if (c) { |
| this.vert.style.display = "block", this.vert.style.bottom = b ? d + "px" : "0"; |
| var e = a.viewHeight - (b ? d : 0); |
| this.vert.firstChild.style.height = Math.max(0, a.scrollHeight - a.clientHeight + e) + "px" |
| } else this.vert.style.display = "", this.vert.firstChild.style.height = "0"; |
| if (b) { |
| this.horiz.style.display = "block", this.horiz.style.right = c ? d + "px" : "0", this.horiz.style.left = a.barLeft + "px"; |
| var f = a.viewWidth - a.barLeft - (c ? d : 0); |
| this.horiz.firstChild.style.width = a.scrollWidth - a.clientWidth + f + "px" |
| } else this.horiz.style.display = "", this.horiz.firstChild.style.width = "0"; |
| return !this.checkedOverlay && a.clientHeight > 0 && (0 == d && this.overlayHack(), this.checkedOverlay = !0), { |
| right: c ? d : 0, |
| bottom: b ? d : 0 |
| } |
| }, |
| setScrollLeft: function (a) { |
| this.horiz.scrollLeft != a && (this.horiz.scrollLeft = a) |
| }, |
| setScrollTop: function (a) { |
| this.vert.scrollTop != a && (this.vert.scrollTop = a) |
| }, |
| overlayHack: function () { |
| var a = o && !k ? "12px" : "18px"; |
| this.horiz.style.minHeight = this.vert.style.minWidth = a; |
| var b = this, |
| c = function (a) { |
| Hf(a) != b.vert && Hf(a) != b.horiz && dc(b.cm, uc)(a) |
| }; |
| Jf(this.vert, "mousedown", c), Jf(this.horiz, "mousedown", c) |
| }, |
| clear: function () { |
| var a = this.horiz.parentNode; |
| a.removeChild(this.horiz), a.removeChild(this.vert) |
| } |
| }, K.prototype), L.prototype = hg({ |
| update: function () { |
| return { |
| bottom: 0, |
| right: 0 |
| } |
| }, |
| setScrollLeft: function () {}, |
| setScrollTop: function () {}, |
| clear: function () {} |
| }, L.prototype), v.scrollbarModel = { |
| "native": K, |
| "null": L |
| }, U.prototype.signal = function (a, b) { |
| Rf(a, b) && this.events.push(arguments) |
| }, U.prototype.finish = function () { |
| for (var a = 0; a < this.events.length; a++) Lf.apply(null, this.events[a]) |
| }; |
| var oa = v.Pos = function (a, b) { |
| return this instanceof oa ? (this.line = a, void(this.ch = b)) : new oa(a, b) |
| }, |
| pa = v.cmpPos = function (a, b) { |
| return a.line - b.line || a.ch - b.ch |
| }, |
| va = null; |
| Ba.prototype = hg({ |
| init: function (a) { |
| function h(a) { |
| if (c.somethingSelected()) va = c.getSelections(), b.inaccurateSelection && (b.prevInput = "", b.inaccurateSelection = !1, g.value = va.join("\n"), cg(g)); |
| else { |
| if (!c.options.lineWiseCopyCut) return; |
| var d = za(c); |
| va = d.text, "cut" == a.type ? c.setSelections(d.ranges, null, Vf) : (b.prevInput = "", g.value = d.text.join("\n"), cg(g)) |
| } |
| "cut" == a.type && (c.state.cutIncoming = !0) |
| } |
| var b = this, |
| c = this.cm, |
| f = this.wrapper = Ca(), |
| g = this.textarea = f.firstChild; |
| a.wrapper.insertBefore(f, a.wrapper.firstChild), m && (g.style.width = "0px"), Jf(g, "input", function () { |
| d && e >= 9 && b.hasSelection && (b.hasSelection = null), b.poll() |
| }), Jf(g, "paste", function (a) { |
| return xa(a, c) ? !0 : (c.state.pasteIncoming = !0, void b.fastPoll()) |
| }), Jf(g, "cut", h), Jf(g, "copy", h), Jf(a.scroller, "paste", function (d) { |
| sc(a, d) || (c.state.pasteIncoming = !0, b.focus()) |
| }), Jf(a.lineSpace, "selectstart", function (b) { |
| sc(a, b) || Df(b) |
| }), Jf(g, "compositionstart", function () { |
| var a = c.getCursor("from"); |
| b.composing = { |
| start: a, |
| range: c.markText(a, c.getCursor("to"), { |
| className: "CodeMirror-composing" |
| }) |
| } |
| }), Jf(g, "compositionend", function () { |
| b.composing && (b.poll(), b.composing.range.clear(), b.composing = null) |
| }) |
| }, |
| prepareSelection: function () { |
| var a = this.cm, |
| b = a.display, |
| c = a.doc, |
| d = eb(a); |
| if (a.options.moveInputWithCursor) { |
| var e = Lb(a, c.sel.primary() |
| .head, "div"), |
| f = b.wrapper.getBoundingClientRect(), |
| g = b.lineDiv.getBoundingClientRect(); |
| d.teTop = Math.max(0, Math.min(b.wrapper.clientHeight - 10, e.top + g.top - f.top)), d.teLeft = Math.max(0, Math.min(b.wrapper.clientWidth - 10, e.left + g.left - f.left)) |
| } |
| return d |
| }, |
| showSelection: function (a) { |
| var b = this.cm, |
| c = b.display; |
| sg(c.cursorDiv, a.cursors), sg(c.selectionDiv, a.selection), null != a.teTop && (this.wrapper.style.top = a.teTop + "px", this.wrapper.style.left = a.teLeft + "px") |
| }, |
| reset: function (a) { |
| if (!this.contextMenuPending) { |
| var b, c, f = this.cm, |
| g = f.doc; |
| if (f.somethingSelected()) { |
| this.prevInput = ""; |
| var h = g.sel.primary(); |
| b = Kg && (h.to() |
| .line - h.from() |
| .line > 100 || (c = f.getSelection()) |
| .length > 1e3); |
| var i = b ? "-" : c || f.getSelection(); |
| this.textarea.value = i, f.state.focused && cg(this.textarea), d && e >= 9 && (this.hasSelection = i) |
| } else a || (this.prevInput = this.textarea.value = "", d && e >= 9 && (this.hasSelection = null)); |
| this.inaccurateSelection = b |
| } |
| }, |
| getField: function () { |
| return this.textarea |
| }, |
| supportsTouch: function () { |
| return !1 |
| }, |
| focus: function () { |
| if ("nocursor" != this.cm.options.readOnly && (!n || ug() != this.textarea)) try { |
| this.textarea.focus() |
| } catch (a) {} |
| }, |
| blur: function () { |
| this.textarea.blur() |
| }, |
| resetPosition: function () { |
| this.wrapper.style.top = this.wrapper.style.left = 0 |
| }, |
| receivedFocus: function () { |
| this.slowPoll() |
| }, |
| slowPoll: function () { |
| var a = this; |
| a.pollingFast || a.polling.set(this.cm.options.pollInterval, function () { |
| a.poll(), a.cm.state.focused && a.slowPoll() |
| }) |
| }, |
| fastPoll: function () { |
| function c() { |
| var d = b.poll(); |
| d || a ? (b.pollingFast = !1, b.slowPoll()) : (a = !0, b.polling.set(60, c)) |
| } |
| var a = !1, |
| b = this; |
| b.pollingFast = !0, b.polling.set(20, c) |
| }, |
| poll: function () { |
| var a = this.cm, |
| b = this.textarea, |
| c = this.prevInput; |
| if (this.contextMenuPending || !a.state.focused || Jg(b) && !c && !this.composing || ua(a) || a.options.disableInput || a.state.keySeq) return !1; |
| var f = b.value; |
| if (f == c && !a.somethingSelected()) return !1; |
| if (d && e >= 9 && this.hasSelection === f || o && /[\uf700-\uf7ff]/.test(f)) return a.display.input.reset(), !1; |
| if (a.doc.sel == a.display.selForContextMenu) { |
| var g = f.charCodeAt(0); |
| if (8203 != g || c || (c = "\u200b"), 8666 == g) return this.reset(), this.cm.execCommand("undo") |
| } |
| for (var h = 0, i = Math.min(c.length, f.length); i > h && c.charCodeAt(h) == f.charCodeAt(h);) ++h; |
| var j = this; |
| return cc(a, function () { |
| wa(a, f.slice(h), c.length - h, null, j.composing ? "*compose" : null), f.length > 1e3 || f.indexOf("\n") > -1 ? b.value = j.prevInput = "" : j.prevInput = f, j.composing && (j.composing.range.clear(), j.composing.range = a.markText(j.composing.start, a.getCursor("to"), { |
| className: "CodeMirror-composing" |
| })) |
| }), !0 |
| }, |
| ensurePolled: function () { |
| this.pollingFast && this.poll() && (this.pollingFast = !1) |
| }, |
| onKeyPress: function () { |
| d && e >= 9 && (this.hasSelection = null), this.fastPoll() |
| }, |
| onContextMenu: function (a) { |
| function o() { |
| if (null != h.selectionStart) { |
| var a = c.somethingSelected(), |
| d = "\u200b" + (a ? h.value : ""); |
| h.value = "\u21da", h.value = d, b.prevInput = a ? "" : "\u200b", h.selectionStart = 1, h.selectionEnd = d.length, g.selForContextMenu = c.doc.sel |
| } |
| } |
| |
| function p() { |
| if (b.contextMenuPending = !1, b.wrapper.style.position = "relative", h.style.cssText = m, d && 9 > e && g.scrollbars.setScrollTop(g.scroller.scrollTop = k), null != h.selectionStart) { |
| (!d || d && 9 > e) && o(); |
| var a = 0, |
| f = function () { |
| g.selForContextMenu == c.doc.sel && 0 == h.selectionStart && h.selectionEnd > 0 && "\u200b" == b.prevInput ? dc(c, Ld.selectAll)(c) : a++ < 10 ? g.detectingSelectAll = setTimeout(f, 500) : g.input.reset() |
| }; |
| g.detectingSelectAll = setTimeout(f, 200) |
| } |
| } |
| var b = this, |
| c = b.cm, |
| g = c.display, |
| h = b.textarea, |
| j = tc(c, a), |
| k = g.scroller.scrollTop; |
| if (j && !i) { |
| var l = c.options.resetSelectionOnContextMenu; |
| l && -1 == c.doc.sel.contains(j) && dc(c, Za)(c.doc, Ma(j), Vf); |
| var m = h.style.cssText; |
| if (b.wrapper.style.position = "absolute", h.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (a.clientY - 5) + "px; left: " + (a.clientX - 5) + "px; z-index: 1000; background: " + (d ? "rgba(255, 255, 255, .05)" : "transparent") + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);", f) var n = window.scrollY; |
| if (g.input.focus(), f && window.scrollTo(null, n), g.input.reset(), c.somethingSelected() || (h.value = b.prevInput = " "), b.contextMenuPending = !0, g.selForContextMenu = c.doc.sel, clearTimeout(g.detectingSelectAll), d && e >= 9 && o(), s) { |
| Gf(a); |
| var q = function () { |
| Kf(window, "mouseup", q), setTimeout(p, 20) |
| }; |
| Jf(window, "mouseup", q) |
| } else setTimeout(p, 50) |
| } |
| }, |
| setUneditable: fg, |
| needsContentAttribute: !1 |
| }, Ba.prototype), Da.prototype = hg({ |
| init: function (a) { |
| function e(a) { |
| if (c.somethingSelected()) va = c.getSelections(), "cut" == a.type && c.replaceSelection("", null, "cut"); |
| else { |
| if (!c.options.lineWiseCopyCut) return; |
| var b = za(c); |
| va = b.text, "cut" == a.type && c.operation(function () { |
| c.setSelections(b.ranges, 0, Vf), c.replaceSelection("", null, "cut") |
| }) |
| } |
| if (a.clipboardData && !m) a.preventDefault(), a.clipboardData.clearData(), a.clipboardData.setData("text/plain", va.join("\n")); |
| else { |
| var d = Ca(), |
| e = d.firstChild; |
| c.display.lineSpace.insertBefore(d, c.display.lineSpace.firstChild), e.value = va.join("\n"); |
| var f = document.activeElement; |
| cg(e), setTimeout(function () { |
| c.display.lineSpace.removeChild(d), f.focus() |
| }, 50) |
| } |
| } |
| var b = this, |
| c = b.cm, |
| d = b.div = a.lineDiv; |
| d.contentEditable = "true", Aa(d), Jf(d, "paste", function (a) { |
| xa(a, c) |
| }), Jf(d, "compositionstart", function (a) { |
| var d = a.data; |
| if (b.composing = { |
| sel: c.doc.sel, |
| data: d, |
| startData: d |
| }, d) { |
| var e = c.doc.sel.primary(), |
| f = c.getLine(e.head.line), |
| g = f.indexOf(d, Math.max(0, e.head.ch - d.length)); |
| g > -1 && g <= e.head.ch && (b.composing.sel = Ma(oa(e.head.line, g), oa(e.head.line, g + d.length))) |
| } |
| }), Jf(d, "compositionupdate", function (a) { |
| b.composing.data = a.data |
| }), Jf(d, "compositionend", function (a) { |
| var c = b.composing; |
| c && (a.data == c.startData || /\u200b/.test(a.data) || (c.data = a.data), setTimeout(function () { |
| c.handled || b.applyComposition(c), b.composing == c && (b.composing = null) |
| }, 50)) |
| }), Jf(d, "touchstart", function () { |
| b.forceCompositionEnd() |
| }), Jf(d, "input", function () { |
| b.composing || b.pollContent() || cc(b.cm, function () { |
| ic(c) |
| }) |
| }), Jf(d, "copy", e), Jf(d, "cut", e) |
| }, |
| prepareSelection: function () { |
| var a = eb(this.cm, !1); |
| return a.focus = this.cm.state.focused, a |
| }, |
| showSelection: function (a) { |
| a && this.cm.display.view.length && (a.focus && this.showPrimarySelection(), this.showMultipleSelections(a)) |
| }, |
| showPrimarySelection: function () { |
| var b = window.getSelection(), |
| c = this.cm.doc.sel.primary(), |
| d = Ga(this.cm, b.anchorNode, b.anchorOffset), |
| e = Ga(this.cm, b.focusNode, b.focusOffset); |
| if (!d || d.bad || !e || e.bad || 0 != pa(sa(d, e), c.from()) || 0 != pa(ra(d, e), c.to())) { |
| var f = Ea(this.cm, c.from()), |
| g = Ea(this.cm, c.to()); |
| if (f || g) { |
| var h = this.cm.display.view, |
| i = b.rangeCount && b.getRangeAt(0); |
| if (f) { |
| if (!g) { |
| var j = h[h.length - 1].measure, |
| k = j.maps ? j.maps[j.maps.length - 1] : j.map; |
| g = { |
| node: k[k.length - 1], |
| offset: k[k.length - 2] - k[k.length - 3] |
| } |
| } |
| } else f = { |
| node: h[0].measure.map[2], |
| offset: 0 |
| }; |
| try { |
| var l = qg(f.node, f.offset, g.offset, g.node) |
| } catch (m) {} |
| l && (b.removeAllRanges(), b.addRange(l), i && null == b.anchorNode ? b.addRange(i) : a && this.startGracePeriod()), this.rememberSelection() |
| } |
| } |
| }, |
| startGracePeriod: function () { |
| var a = this; |
| clearTimeout(this.gracePeriod), this.gracePeriod = setTimeout(function () { |
| a.gracePeriod = !1, a.selectionChanged() && a.cm.operation(function () { |
| a.cm.curOp.selectionChanged = !0 |
| }) |
| }, 20) |
| }, |
| showMultipleSelections: function (a) { |
| sg(this.cm.display.cursorDiv, a.cursors), sg(this.cm.display.selectionDiv, a.selection) |
| }, |
| rememberSelection: function () { |
| var a = window.getSelection(); |
| this.lastAnchorNode = a.anchorNode, this.lastAnchorOffset = a.anchorOffset, this.lastFocusNode = a.focusNode, this.lastFocusOffset = a.focusOffset |
| }, |
| selectionInEditor: function () { |
| var a = window.getSelection(); |
| if (!a.rangeCount) return !1; |
| var b = a.getRangeAt(0) |
| .commonAncestorContainer; |
| return tg(this.div, b) |
| }, |
| focus: function () { |
| "nocursor" != this.cm.options.readOnly && this.div.focus() |
| }, |
| blur: function () { |
| this.div.blur() |
| }, |
| getField: function () { |
| return this.div |
| }, |
| supportsTouch: function () { |
| return !0 |
| }, |
| receivedFocus: function () { |
| function b() { |
| a.cm.state.focused && (a.pollSelection(), a.polling.set(a.cm.options.pollInterval, b)) |
| } |
| var a = this; |
| this.selectionInEditor() ? this.pollSelection() : cc(this.cm, function () { |
| a.cm.curOp.selectionChanged = !0 |
| }), this.polling.set(this.cm.options.pollInterval, b) |
| }, |
| selectionChanged: function () { |
| var a = window.getSelection(); |
| return a.anchorNode != this.lastAnchorNode || a.anchorOffset != this.lastAnchorOffset || a.focusNode != this.lastFocusNode || a.focusOffset != this.lastFocusOffset |
| }, |
| pollSelection: function () { |
| if (!this.composing && !this.gracePeriod && this.selectionChanged()) { |
| var a = window.getSelection(), |
| b = this.cm; |
| this.rememberSelection(); |
| var c = Ga(b, a.anchorNode, a.anchorOffset), |
| d = Ga(b, a.focusNode, a.focusOffset); |
| c && d && cc(b, function () { |
| Za(b.doc, Ma(c, d), Vf), (c.bad || d.bad) && (b.curOp.selectionChanged = !0) |
| }) |
| } |
| }, |
| pollContent: function () { |
| var a = this.cm, |
| b = a.display, |
| c = a.doc.sel.primary(), |
| d = c.from(), |
| e = c.to(); |
| if (d.line < b.viewFrom || e.line > b.viewTo - 1) return !1; |
| var f; |
| if (d.line == b.viewFrom || 0 == (f = lc(a, d.line))) var g = kf(b.view[0].line), |
| h = b.view[0].node; |
| else var g = kf(b.view[f].line), |
| h = b.view[f - 1].node.nextSibling; |
| var i = lc(a, e.line); |
| if (i == b.view.length - 1) var j = b.viewTo - 1, |
| k = b.lineDiv.lastChild; |
| else var j = kf(b.view[i + 1].line) - 1, |
| k = b.view[i + 1].node.previousSibling; |
| for (var l = a.doc.splitLines(Ia(a, h, k, g, j)), m = gf(a.doc, oa(g, 0), oa(j, ff(a.doc, j) |
| .text.length)); l.length > 1 && m.length > 1;) |
| if (bg(l) == bg(m)) l.pop(), m.pop(), j--; |
| else { |
| if (l[0] != m[0]) break; |
| l.shift(), m.shift(), g++ |
| } |
| for (var n = 0, o = 0, p = l[0], q = m[0], r = Math.min(p.length, q.length); r > n && p.charCodeAt(n) == q.charCodeAt(n);) ++n; |
| for (var s = bg(l), t = bg(m), u = Math.min(s.length - (1 == l.length ? n : 0), t.length - (1 == m.length ? n : 0)); u > o && s.charCodeAt(s.length - o - 1) == t.charCodeAt(t.length - o - 1);) ++o; |
| l[l.length - 1] = s.slice(0, s.length - o), l[0] = l[0].slice(n); |
| var v = oa(g, n), |
| w = oa(j, m.length ? bg(m) |
| .length - o : 0); |
| return l.length > 1 || l[0] || pa(v, w) ? (nd(a.doc, l, v, w, "+input"), !0) : void 0 |
| }, |
| ensurePolled: function () { |
| this.forceCompositionEnd() |
| }, |
| reset: function () { |
| this.forceCompositionEnd() |
| }, |
| forceCompositionEnd: function () { |
| this.composing && !this.composing.handled && (this.applyComposition(this.composing), this.composing.handled = !0, this.div.blur(), this.div.focus()) |
| }, |
| applyComposition: function (a) { |
| a.data && a.data != a.startData && dc(this.cm, wa)(this.cm, a.data, 0, a.sel) |
| }, |
| setUneditable: function (a) { |
| a.setAttribute("contenteditable", "false") |
| }, |
| onKeyPress: function (a) { |
| a.preventDefault(), dc(this.cm, wa)(this.cm, String.fromCharCode(null == a.charCode ? a.keyCode : a.charCode), 0) |
| }, |
| onContextMenu: fg, |
| resetPosition: fg, |
| needsContentAttribute: !0 |
| }, Da.prototype), v.inputStyles = { |
| textarea: Ba, |
| contenteditable: Da |
| }, Ja.prototype = { |
| primary: function () { |
| return this.ranges[this.primIndex] |
| }, |
| equals: function (a) { |
| if (a == this) return !0; |
| if (a.primIndex != this.primIndex || a.ranges.length != this.ranges.length) return !1; |
| for (var b = 0; b < this.ranges.length; b++) { |
| var c = this.ranges[b], |
| d = a.ranges[b]; |
| if (0 != pa(c.anchor, d.anchor) || 0 != pa(c.head, d.head)) return !1 |
| } |
| return !0 |
| }, |
| deepCopy: function () { |
| for (var a = [], b = 0; b < this.ranges.length; b++) a[b] = new Ka(qa(this.ranges[b].anchor), qa(this.ranges[b].head)); |
| return new Ja(a, this.primIndex) |
| }, |
| somethingSelected: function () { |
| for (var a = 0; a < this.ranges.length; a++) |
| if (!this.ranges[a].empty()) return !0; |
| return !1 |
| }, |
| contains: function (a, b) { |
| b || (b = a); |
| for (var c = 0; c < this.ranges.length; c++) { |
| var d = this.ranges[c]; |
| if (pa(b, d.from()) >= 0 && pa(a, d.to()) <= 0) return c |
| } |
| return -1 |
| } |
| }, Ka.prototype = { |
| from: function () { |
| return sa(this.anchor, this.head) |
| }, |
| to: function () { |
| return ra(this.anchor, this.head) |
| }, |
| empty: function () { |
| return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch |
| } |
| }; |
| var Qb, vc, wc, zb = { |
| left: 0, |
| right: 0, |
| top: 0, |
| bottom: 0 |
| }, |
| Tb = null, |
| Ub = 0, |
| Cc = 0, |
| Jc = 0, |
| Kc = null; |
| d ? Kc = -.53 : a ? Kc = 15 : h ? Kc = -.7 : j && (Kc = -1 / 3); |
| var Lc = function (a) { |
| var b = a.wheelDeltaX, |
| c = a.wheelDeltaY; |
| return null == b && a.detail && a.axis == a.HORIZONTAL_AXIS && (b = a.detail), null == c && a.detail && a.axis == a.VERTICAL_AXIS ? c = a.detail : null == c && (c = a.wheelDelta), { |
| x: b, |
| y: c |
| } |
| }; |
| v.wheelEventPixels = function (a) { |
| var b = Lc(a); |
| return b.x *= Kc, b.y *= Kc, b |
| }; |
| var Pc = new Yf, |
| Tc = null, |
| bd = v.changeEnd = function (a) { |
| return a.text ? oa(a.from.line + a.text.length - 1, bg(a.text) |
| .length + (1 == a.text.length ? a.from.ch : 0)) : a.to |
| }; |
| v.prototype = { |
| constructor: v, |
| focus: function () { |
| window.focus(), this.display.input.focus() |
| }, |
| setOption: function (a, b) { |
| var c = this.options, |
| d = c[a]; |
| (c[a] != b || "mode" == a) && (c[a] = b, Bd.hasOwnProperty(a) && dc(this, Bd[a])(this, b, d)) |
| }, |
| getOption: function (a) { |
| return this.options[a] |
| }, |
| getDoc: function () { |
| return this.doc |
| }, |
| addKeyMap: function (a, b) { |
| this.state.keyMaps[b ? "push" : "unshift"](Rd(a)) |
| }, |
| removeKeyMap: function (a) { |
| for (var b = this.state.keyMaps, c = 0; c < b.length; ++c) |
| if (b[c] == a || b[c].name == a) return b.splice(c, 1), !0 |
| }, |
| addOverlay: ec(function (a, b) { |
| var c = a.token ? a : v.getMode(this.options, a); |
| if (c.startState) throw new Error("Overlays may not be stateful."); |
| this.state.overlays.push({ |
| mode: c, |
| modeSpec: a, |
| opaque: b && b.opaque |
| }), this.state.modeGen++, ic(this) |
| }), |
| removeOverlay: ec(function (a) { |
| for (var b = this.state.overlays, c = 0; c < b.length; ++c) { |
| var d = b[c].modeSpec; |
| if (d == a || "string" == typeof a && d.name == a) return b.splice(c, 1), this.state.modeGen++, void ic(this) |
| } |
| }), |
| indentLine: ec(function (a, b, c) { |
| "string" != typeof b && "number" != typeof b && (b = null == b ? this.options.smartIndent ? "smart" : "prev" : b ? "add" : "subtract"), Qa(this.doc, a) && vd(this, a, b, c) |
| }), |
| indentSelection: ec(function (a) { |
| for (var b = this.doc.sel.ranges, c = -1, d = 0; d < b.length; d++) { |
| var e = b[d]; |
| if (e.empty()) e.head.line > c && (vd(this, e.head.line, a, !0), c = e.head.line, d == this.doc.sel.primIndex && td(this)); |
| else { |
| var f = e.from(), |
| g = e.to(), |
| h = Math.max(c, f.line); |
| c = Math.min(this.lastLine(), g.line - (g.ch ? 0 : 1)) + 1; |
| for (var i = h; c > i; ++i) vd(this, i, a); |
| var j = this.doc.sel.ranges; |
| 0 == f.ch && b.length == j.length && j[d].from() |
| .ch > 0 && Va(this.doc, d, new Ka(f, j[d].to()), Vf) |
| } |
| } |
| }), |
| getTokenAt: function (a, b) { |
| return Ie(this, a, b) |
| }, |
| getLineTokens: function (a, b) { |
| return Ie(this, oa(a), b, !0) |
| }, |
| getTokenTypeAt: function (a) { |
| a = Oa(this.doc, a); |
| var f, b = Le(this, ff(this.doc, a.line)), |
| c = 0, |
| d = (b.length - 1) / 2, |
| e = a.ch; |
| if (0 == e) f = b[2]; |
| else |
| for (;;) { |
| var g = c + d >> 1; |
| if ((g ? b[2 * g - 1] : 0) >= e) d = g; |
| else { |
| if (!(b[2 * g + 1] < e)) { |
| f = b[2 * g + 2]; |
| break |
| } |
| c = g + 1 |
| } |
| } |
| var h = f ? f.indexOf("cm-overlay ") : -1; |
| return 0 > h ? f : 0 == h ? null : f.slice(0, h - 1) |
| }, |
| getModeAt: function (a) { |
| var b = this.doc.mode; |
| return b.innerMode ? v.innerMode(b, this.getTokenAt(a) |
| .state) |
| .mode : b |
| }, |
| getHelper: function (a, b) { |
| return this.getHelpers(a, b)[0] |
| }, |
| getHelpers: function (a, b) { |
| var c = []; |
| if (!Id.hasOwnProperty(b)) return c; |
| var d = Id[b], |
| e = this.getModeAt(a); |
| if ("string" == typeof e[b]) d[e[b]] && c.push(d[e[b]]); |
| else if (e[b]) |
| for (var f = 0; f < e[b].length; f++) { |
| var g = d[e[b][f]]; |
| g && c.push(g) |
| } else e.helperType && d[e.helperType] ? c.push(d[e.helperType]) : d[e.name] && c.push(d[e.name]); |
| for (var f = 0; f < d._global.length; f++) { |
| var h = d._global[f]; |
| h.pred(e, this) && -1 == dg(c, h.val) && c.push(h.val) |
| } |
| return c |
| }, |
| getStateAfter: function (a, b) { |
| var c = this.doc; |
| return a = Na(c, null == a ? c.first + c.size - 1 : a), lb(this, a + 1, b) |
| }, |
| cursorCoords: function (a, b) { |
| var c, d = this.doc.sel.primary(); |
| return c = null == a ? d.head : "object" == typeof a ? Oa(this.doc, a) : a ? d.from() : d.to(), Lb(this, c, b || "page") |
| }, |
| charCoords: function (a, b) { |
| return Kb(this, Oa(this.doc, a), b || "page") |
| }, |
| coordsChar: function (a, b) { |
| return a = Jb(this, a, b || "page"), Ob(this, a.left, a.top) |
| }, |
| lineAtHeight: function (a, b) { |
| return a = Jb(this, { |
| top: a, |
| left: 0 |
| }, b || "page") |
| .top, lf(this.doc, a + this.display.viewOffset) |
| }, |
| heightAtLine: function (a, b) { |
| var d, c = !1; |
| if ("number" == typeof a) { |
| var e = this.doc.first + this.doc.size - 1; |
| a < this.doc.first ? a = this.doc.first : a > e && (a = e, c = !0), d = ff(this.doc, a) |
| } else d = a; |
| return Ib(this, d, { |
| top: 0, |
| left: 0 |
| }, b || "page") |
| .top + (c ? this.doc.height - mf(d) : 0) |
| }, |
| defaultTextHeight: function () { |
| return Rb(this.display) |
| }, |
| defaultCharWidth: function () { |
| return Sb(this.display) |
| }, |
| setGutterMarker: ec(function (a, b, c) { |
| return wd(this.doc, a, "gutter", function (a) { |
| var d = a.gutterMarkers || (a.gutterMarkers = {}); |
| return d[b] = c, !c && mg(d) && (a.gutterMarkers = null), !0 |
| }) |
| }), |
| clearGutter: ec(function (a) { |
| var b = this, |
| c = b.doc, |
| d = c.first; |
| c.iter(function (c) { |
| c.gutterMarkers && c.gutterMarkers[a] && (c.gutterMarkers[a] = null, jc(b, d, "gutter"), mg(c.gutterMarkers) && (c.gutterMarkers = null)), ++d |
| }) |
| }), |
| lineInfo: function (a) { |
| if ("number" == typeof a) { |
| if (!Qa(this.doc, a)) return null; |
| var b = a; |
| if (a = ff(this.doc, a), !a) return null |
| } else { |
| var b = kf(a); |
| if (null == b) return null |
| } |
| return { |
| line: b, |
| handle: a, |
| text: a.text, |
| gutterMarkers: a.gutterMarkers, |
| textClass: a.textClass, |
| bgClass: a.bgClass, |
| wrapClass: a.wrapClass, |
| widgets: a.widgets |
| } |
| }, |
| getViewport: function () { |
| return { |
| from: this.display.viewFrom, |
| to: this.display.viewTo |
| } |
| }, |
| addWidget: function (a, b, c, d, e) { |
| var f = this.display; |
| a = Lb(this, Oa(this.doc, a)); |
| var g = a.bottom, |
| h = a.left; |
| if (b.style.position = "absolute", b.setAttribute("cm-ignore-events", "true"), this.display.input.setUneditable(b), f.sizer.appendChild(b), "over" == d) g = a.top; |
| else if ("above" == d || "near" == d) { |
| var i = Math.max(f.wrapper.clientHeight, this.doc.height), |
| j = Math.max(f.sizer.clientWidth, f.lineSpace.clientWidth); |
| ("above" == d || a.bottom + b.offsetHeight > i) && a.top > b.offsetHeight ? g = a.top - b.offsetHeight : a.bottom + b.offsetHeight <= i && (g = a.bottom), h + b.offsetWidth > j && (h = j - b.offsetWidth) |
| } |
| b.style.top = g + "px", b.style.left = b.style.right = "", "right" == e ? (h = f.sizer.clientWidth - b.offsetWidth, b.style.right = "0px") : ("left" == e ? h = 0 : "middle" == e && (h = (f.sizer.clientWidth - b.offsetWidth) / 2), b.style.left = h + "px"), c && qd(this, h, g, h + b.offsetWidth, g + b.offsetHeight) |
| }, |
| triggerOnKeyDown: ec(Uc), |
| triggerOnKeyPress: ec(Xc), |
| triggerOnKeyUp: Wc, |
| execCommand: function (a) { |
| return Ld.hasOwnProperty(a) ? Ld[a].call(null, this) : void 0 |
| }, |
| triggerElectric: ec(function (a) { |
| ya(this, a) |
| }), |
| findPosH: function (a, b, c, d) { |
| var e = 1; |
| 0 > b && (e = -1, b = -b); |
| for (var f = 0, g = Oa(this.doc, a); b > f && (g = yd(this.doc, g, e, c, d), !g.hitSide); ++f); |
| return g |
| }, |
| moveH: ec(function (a, b) { |
| var c = this; |
| c.extendSelectionsBy(function (d) { |
| return c.display.shift || c.doc.extend || d.empty() ? yd(c.doc, d.head, a, b, c.options.rtlMoveVisually) : 0 > a ? d.from() : d.to() |
| }, Xf) |
| }), |
| deleteH: ec(function (a, b) { |
| var c = this.doc.sel, |
| d = this.doc; |
| c.somethingSelected() ? d.replaceSelection("", null, "+delete") : xd(this, function (c) { |
| var e = yd(d, c.head, a, b, !1); |
| return 0 > a ? { |
| from: e, |
| to: c.head |
| } : { |
| from: c.head, |
| to: e |
| } |
| }) |
| }), |
| findPosV: function (a, b, c, d) { |
| var e = 1, |
| f = d; |
| 0 > b && (e = -1, b = -b); |
| for (var g = 0, h = Oa(this.doc, a); b > g; ++g) { |
| var i = Lb(this, h, "div"); |
| if (null == f ? f = i.left : i.left = f, h = zd(this, i, e, c), h.hitSide) break |
| } |
| return h |
| }, |
| moveV: ec(function (a, b) { |
| var c = this, |
| d = this.doc, |
| e = [], |
| f = !c.display.shift && !d.extend && d.sel.somethingSelected(); |
| if (d.extendSelectionsBy(function (g) { |
| if (f) return 0 > a ? g.from() : g.to(); |
| var h = Lb(c, g.head, "div"); |
| null != g.goalColumn && (h.left = g.goalColumn), e.push(h.left); |
| var i = zd(c, h, a, b); |
| return "page" == b && g == d.sel.primary() && sd(c, null, Kb(c, i, "div") |
| .top - h.top), i |
| }, Xf), e.length) |
| for (var g = 0; g < d.sel.ranges.length; g++) d.sel.ranges[g].goalColumn = e[g] |
| }), |
| findWordAt: function (a) { |
| var b = this.doc, |
| c = ff(b, a.line) |
| .text, |
| d = a.ch, |
| e = a.ch; |
| if (c) { |
| var f = this.getHelper(a, "wordChars"); |
| (a.xRel < 0 || e == c.length) && d ? --d : ++e; |
| for (var g = c.charAt(d), h = lg(g, f) ? function (a) { |
| return lg(a, f) |
| } : /\s/.test(g) ? function (a) { |
| return /\s/.test(a) |
| } : function (a) { |
| return !/\s/.test(a) && !lg(a) |
| }; d > 0 && h(c.charAt(d - 1));) --d; |
| for (; e < c.length && h(c.charAt(e));) ++e |
| } |
| return new Ka(oa(a.line, d), oa(a.line, e)) |
| }, |
| toggleOverwrite: function (a) { |
| (null == a || a != this.state.overwrite) && ((this.state.overwrite = !this.state.overwrite) ? xg(this.display.cursorDiv, "CodeMirror-overwrite") : wg(this.display.cursorDiv, "CodeMirror-overwrite"), Lf(this, "overwriteToggle", this, this.state.overwrite)) |
| }, |
| hasFocus: function () { |
| return this.display.input.getField() == ug() |
| }, |
| scrollTo: ec(function (a, b) { |
| (null != a || null != b) && ud(this), null != a && (this.curOp.scrollLeft = a), null != b && (this.curOp.scrollTop = b) |
| }), |
| getScrollInfo: function () { |
| var a = this.display.scroller; |
| return { |
| left: a.scrollLeft, |
| top: a.scrollTop, |
| height: a.scrollHeight - pb(this) - this.display.barHeight, |
| width: a.scrollWidth - pb(this) - this.display.barWidth, |
| clientHeight: rb(this), |
| clientWidth: qb(this) |
| } |
| }, |
| scrollIntoView: ec(function (a, b) { |
| if (null == a ? (a = { |
| from: this.doc.sel.primary() |
| .head, |
| to: null |
| }, null == b && (b = this.options.cursorScrollMargin)) : "number" == typeof a ? a = { |
| from: oa(a, 0), |
| to: null |
| } : null == a.from && (a = { |
| from: a, |
| to: null |
| }), a.to || (a.to = a.from), a.margin = b || 0, null != a.from.line) ud(this), this.curOp.scrollToPos = a; |
| else { |
| var c = rd(this, Math.min(a.from.left, a.to.left), Math.min(a.from.top, a.to.top) - a.margin, Math.max(a.from.right, a.to.right), Math.max(a.from.bottom, a.to.bottom) + a.margin); |
| this.scrollTo(c.scrollLeft, c.scrollTop) |
| } |
| }), |
| setSize: ec(function (a, b) { |
| function d(a) { |
| return "number" == typeof a || /^\d+$/.test(String(a)) ? a + "px" : a |
| } |
| var c = this; |
| null != a && (c.display.wrapper.style.width = d(a)), null != b && (c.display.wrapper.style.height = d(b)), c.options.lineWrapping && Eb(this); |
| var e = c.display.viewFrom; |
| c.doc.iter(e, c.display.viewTo, function (a) { |
| if (a.widgets) |
| for (var b = 0; b < a.widgets.length; b++) |
| if (a.widgets[b].noHScroll) { |
| jc(c, e, "widget"); |
| break |
| }++e |
| }), c.curOp.forceUpdate = !0, Lf(c, "refresh", this) |
| }), |
| operation: function (a) { |
| return cc(this, a) |
| }, |
| refresh: ec(function () { |
| var a = this.display.cachedTextHeight; |
| ic(this), this.curOp.forceUpdate = !0, Fb(this), this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop), F(this), (null == a || Math.abs(a - Rb(this.display)) > .5) && B(this), Lf(this, "refresh", this) |
| }), |
| swapDoc: ec(function (a) { |
| var b = this.doc; |
| return b.cm = null, ef(this, a), Fb(this), this.display.input.reset(), this.scrollTo(a.scrollLeft, a.scrollTop), this.curOp.forceScroll = !0, Nf(this, "swapDoc", this, b), b |
| }), |
| 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 |
| } |
| }, Sf(v); |
| var Ad = v.defaults = {}, |
| Bd = v.optionHandlers = {}, |
| Dd = v.Init = { |
| toString: function () { |
| return "CodeMirror.Init" |
| } |
| }; |
| Cd("value", "", function (a, b) { |
| a.setValue(b) |
| }, !0), Cd("mode", null, function (a, b) { |
| a.doc.modeOption = b, x(a) |
| }, !0), Cd("indentUnit", 2, x, !0), Cd("indentWithTabs", !1), Cd("smartIndent", !0), Cd("tabSize", 4, function (a) { |
| y(a), Fb(a), ic(a) |
| }, !0), Cd("lineSeparator", null, function (a, b) { |
| if (a.doc.lineSep = b, b) { |
| var c = [], |
| d = a.doc.first; |
| a.doc.iter(function (a) { |
| for (var e = 0;;) { |
| var f = a.text.indexOf(b, e); |
| if (-1 == f) break; |
| e = f + b.length, c.push(oa(d, f)) |
| } |
| d++ |
| }); |
| for (var e = c.length - 1; e >= 0; e--) nd(a.doc, b, c[e], oa(c[e].line, c[e].ch + b.length)) |
| } |
| }), Cd("specialChars", /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function (a, b, c) { |
| a.state.specialChars = new RegExp(b.source + (b.test(" ") ? "" : "| "), "g"), c != v.Init && a.refresh() |
| }), Cd("specialCharPlaceholder", Re, function (a) { |
| a.refresh() |
| }, !0), Cd("electricChars", !0), Cd("inputStyle", n ? "contenteditable" : "textarea", function () { |
| throw new Error("inputStyle can not (yet) be changed in a running editor") |
| }, !0), Cd("rtlMoveVisually", !p), Cd("wholeLineUpdateBefore", !0), Cd("theme", "default", function (a) { |
| C(a), D(a) |
| }, !0), Cd("keyMap", "default", function (a, b, c) { |
| var d = Rd(b), |
| e = c != v.Init && Rd(c); |
| e && e.detach && e.detach(a, d), d.attach && d.attach(a, e || null) |
| }), Cd("extraKeys", null), Cd("lineWrapping", !1, z, !0), Cd("gutters", [], function (a) { |
| I(a.options), D(a) |
| }, !0), Cd("fixedGutter", !0, function (a, b) { |
| a.display.gutters.style.left = b ? T(a.display) + "px" : "0", a.refresh() |
| }, !0), Cd("coverGutterNextToScrollbar", !1, function (a) { |
| N(a) |
| }, !0), Cd("scrollbarStyle", "native", function (a) { |
| M(a), N(a), a.display.scrollbars.setScrollTop(a.doc.scrollTop), a.display.scrollbars.setScrollLeft(a.doc.scrollLeft) |
| }, !0), Cd("lineNumbers", !1, function (a) { |
| I(a.options), D(a) |
| }, !0), Cd("firstLineNumber", 1, D, !0), Cd("lineNumberFormatter", function (a) { |
| return a |
| }, D, !0), Cd("showCursorWhenSelecting", !1, db, !0), Cd("resetSelectionOnContextMenu", !0), Cd("lineWiseCopyCut", !0), Cd("readOnly", !1, function (a, b) { |
| "nocursor" == b ? ($c(a), a.display.input.blur(), a.display.disabled = !0) : (a.display.disabled = !1, b || a.display.input.reset()) |
| }), Cd("disableInput", !1, function (a, b) { |
| b || a.display.input.reset() |
| }, !0), Cd("dragDrop", !0, qc), Cd("cursorBlinkRate", 530), Cd("cursorScrollMargin", 0), Cd("cursorHeight", 1, db, !0), Cd("singleCursorHeightPerLine", !0, db, !0), Cd("workTime", 100), Cd("workDelay", 100), Cd("flattenSpans", !0, y, !0), Cd("addModeClass", !1, y, !0), Cd("pollInterval", 100), Cd("undoDepth", 200, function (a, b) { |
| a.doc.history.undoDepth = b |
| }), Cd("historyEventDelay", 1250), Cd("viewportMargin", 10, function (a) { |
| a.refresh() |
| }, !0), Cd("maxHighlightLength", 1e4, y, !0), Cd("moveInputWithCursor", !0, function (a, b) { |
| b || a.display.input.resetPosition() |
| }), Cd("tabindex", null, function (a, b) { |
| a.display.input.getField() |
| .tabIndex = b || "" |
| }), Cd("autofocus", null); |
| var Ed = v.modes = {}, |
| Fd = v.mimeModes = {}; |
| v.defineMode = function (a, b) { |
| v.defaults.mode || "null" == a || (v.defaults.mode = a), arguments.length > 2 && (b.dependencies = Array.prototype.slice.call(arguments, 2)), Ed[a] = b |
| }, v.defineMIME = function (a, b) { |
| Fd[a] = b |
| }, v.resolveMode = function (a) { |
| if ("string" == typeof a && Fd.hasOwnProperty(a)) a = Fd[a]; |
| else if (a && "string" == typeof a.name && Fd.hasOwnProperty(a.name)) { |
| var b = Fd[a.name]; |
| "string" == typeof b && (b = { |
| name: b |
| }), a = gg(b, a), a.name = b.name |
| } else if ("string" == typeof a && /^[\w\-]+\/[\w\-]+\+xml$/.test(a)) return v.resolveMode("application/xml"); |
| return "string" == typeof a ? { |
| name: a |
| } : a || { |
| name: "null" |
| } |
| }, v.getMode = function (a, b) { |
| var b = v.resolveMode(b), |
| c = Ed[b.name]; |
| if (!c) return v.getMode(a, "text/plain"); |
| var d = c(a, b); |
| if (Gd.hasOwnProperty(b.name)) { |
| var e = Gd[b.name]; |
| for (var f in e) e.hasOwnProperty(f) && (d.hasOwnProperty(f) && (d["_" + f] = d[f]), d[f] = e[f]) |
| } |
| if (d.name = b.name, b.helperType && (d.helperType = b.helperType), b.modeProps) |
| for (var f in b.modeProps) d[f] = b.modeProps[f]; |
| return d |
| }, v.defineMode("null", function () { |
| return { |
| token: function (a) { |
| a.skipToEnd() |
| } |
| } |
| }), v.defineMIME("text/plain", "null"); |
| var Gd = v.modeExtensions = {}; |
| v.extendMode = function (a, b) { |
| var c = Gd.hasOwnProperty(a) ? Gd[a] : Gd[a] = {}; |
| hg(b, c) |
| }, v.defineExtension = function (a, b) { |
| v.prototype[a] = b |
| }, v.defineDocExtension = function (a, b) { |
| af.prototype[a] = b |
| }, v.defineOption = Cd; |
| var Hd = []; |
| v.defineInitHook = function (a) { |
| Hd.push(a) |
| }; |
| var Id = v.helpers = {}; |
| v.registerHelper = function (a, b, c) { |
| Id.hasOwnProperty(a) || (Id[a] = v[a] = { |
| _global: [] |
| }), Id[a][b] = c |
| }, v.registerGlobalHelper = function (a, b, c, d) { |
| v.registerHelper(a, b, d), Id[a]._global.push({ |
| pred: c, |
| val: d |
| }) |
| }; |
| var Jd = v.copyState = function (a, b) { |
| if (b === !0) return b; |
| if (a.copyState) return a.copyState(b); |
| var c = {}; |
| for (var d in b) { |
| var e = b[d]; |
| e instanceof Array && (e = e.concat([])), c[d] = e |
| } |
| return c |
| }, |
| Kd = v.startState = function (a, b, c) { |
| return a.startState ? a.startState(b, c) : !0 |
| }; |
| v.innerMode = function (a, b) { |
| for (; a.innerMode;) { |
| var c = a.innerMode(b); |
| if (!c || c.mode == a) break; |
| b = c.state, a = c.mode |
| } |
| return c || { |
| mode: a, |
| state: b |
| } |
| }; |
| var Ld = v.commands = { |
| selectAll: function (a) { |
| a.setSelection(oa(a.firstLine(), 0), oa(a.lastLine()), Vf) |
| }, |
| singleSelection: function (a) { |
| a.setSelection(a.getCursor("anchor"), a.getCursor("head"), Vf) |
| }, |
| killLine: function (a) { |
| xd(a, function (b) { |
| if (b.empty()) { |
| var c = ff(a.doc, b.head.line) |
| .text.length; |
| return b.head.ch == c && b.head.line < a.lastLine() ? { |
| from: b.head, |
| to: oa(b.head.line + 1, 0) |
| } : { |
| from: b.head, |
| to: oa(b.head.line, c) |
| } |
| } |
| return { |
| from: b.from(), |
| to: b.to() |
| } |
| }) |
| }, |
| deleteLine: function (a) { |
| xd(a, function (b) { |
| return { |
| from: oa(b.from() |
| .line, 0), |
| to: Oa(a.doc, oa(b.to() |
| .line + 1, 0)) |
| } |
| }) |
| }, |
| delLineLeft: function (a) { |
| xd(a, function (a) { |
| return { |
| from: oa(a.from() |
| .line, 0), |
| to: a.from() |
| } |
| }) |
| }, |
| delWrappedLineLeft: function (a) { |
| xd(a, function (b) { |
| var c = a.charCoords(b.head, "div") |
| .top + 5, |
| d = a.coordsChar({ |
| left: 0, |
| top: c |
| }, "div"); |
| return { |
| from: d, |
| to: b.from() |
| } |
| }) |
| }, |
| delWrappedLineRight: function (a) { |
| xd(a, function (b) { |
| var c = a.charCoords(b.head, "div") |
| .top + 5, |
| d = a.coordsChar({ |
| left: a.display.lineDiv.offsetWidth + 100, |
| top: c |
| }, "div"); |
| return { |
| from: b.from(), |
| to: d |
| } |
| }) |
| }, |
| undo: function (a) { |
| a.undo() |
| }, |
| redo: function (a) { |
| a.redo() |
| }, |
| undoSelection: function (a) { |
| a.undoSelection() |
| }, |
| redoSelection: function (a) { |
| a.redoSelection() |
| }, |
| goDocStart: function (a) { |
| a.extendSelection(oa(a.firstLine(), 0)) |
| }, |
| goDocEnd: function (a) { |
| a.extendSelection(oa(a.lastLine())) |
| }, |
| goLineStart: function (a) { |
| a.extendSelectionsBy(function (b) { |
| return Tg(a, b.head.line) |
| }, { |
| origin: "+move", |
| bias: 1 |
| }) |
| }, |
| goLineStartSmart: function (a) { |
| a.extendSelectionsBy(function (b) { |
| return Vg(a, b.head) |
| }, { |
| origin: "+move", |
| bias: 1 |
| }) |
| }, |
| goLineEnd: function (a) { |
| a.extendSelectionsBy(function (b) { |
| return Ug(a, b.head.line) |
| }, { |
| origin: "+move", |
| bias: -1 |
| }) |
| }, |
| goLineRight: function (a) { |
| a.extendSelectionsBy(function (b) { |
| var c = a.charCoords(b.head, "div") |
| .top + 5; |
| return a.coordsChar({ |
| left: a.display.lineDiv.offsetWidth + 100, |
| top: c |
| }, "div") |
| }, Xf) |
| }, |
| goLineLeft: function (a) { |
| a.extendSelectionsBy(function (b) { |
| var c = a.charCoords(b.head, "div") |
| .top + 5; |
| return a.coordsChar({ |
| left: 0, |
| top: c |
| }, "div") |
| }, Xf) |
| }, |
| goLineLeftSmart: function (a) { |
| a.extendSelectionsBy(function (b) { |
| var c = a.charCoords(b.head, "div") |
| .top + 5, |
| d = a.coordsChar({ |
| left: 0, |
| top: c |
| }, "div"); |
| return d.ch < a.getLine(d.line) |
| .search(/\S/) ? Vg(a, b.head) : d |
| }, Xf) |
| }, |
| goLineUp: function (a) { |
| a.moveV(-1, "line") |
| }, |
| goLineDown: function (a) { |
| a.moveV(1, "line") |
| }, |
| goPageUp: function (a) { |
| a.moveV(-1, "page") |
| }, |
| goPageDown: function (a) { |
| a.moveV(1, "page") |
| }, |
| goCharLeft: function (a) { |
| a.moveH(-1, "char") |
| }, |
| goCharRight: function (a) { |
| a.moveH(1, "char") |
| }, |
| goColumnLeft: function (a) { |
| a.moveH(-1, "column") |
| }, |
| goColumnRight: function (a) { |
| a.moveH(1, "column") |
| }, |
| goWordLeft: function (a) { |
| a.moveH(-1, "word") |
| }, |
| goGroupRight: function (a) { |
| a.moveH(1, "group") |
| }, |
| goGroupLeft: function (a) { |
| a.moveH(-1, "group") |
| }, |
| goWordRight: function (a) { |
| a.moveH(1, "word") |
| }, |
| delCharBefore: function (a) { |
| a.deleteH(-1, "char") |
| }, |
| delCharAfter: function (a) { |
| a.deleteH(1, "char") |
| }, |
| delWordBefore: function (a) { |
| a.deleteH(-1, "word") |
| }, |
| delWordAfter: function (a) { |
| a.deleteH(1, "word") |
| }, |
| delGroupBefore: function (a) { |
| a.deleteH(-1, "group") |
| }, |
| delGroupAfter: function (a) { |
| a.deleteH(1, "group") |
| }, |
| indentAuto: function (a) { |
| a.indentSelection("smart") |
| }, |
| indentMore: function (a) { |
| a.indentSelection("add") |
| }, |
| indentLess: function (a) { |
| a.indentSelection("subtract") |
| }, |
| insertTab: function (a) { |
| a.replaceSelection(" ") |
| }, |
| insertSoftTab: function (a) { |
| for (var b = [], c = a.listSelections(), d = a.options.tabSize, e = 0; e < c.length; e++) { |
| var f = c[e].from(), |
| g = Zf(a.getLine(f.line), f.ch, d); |
| b.push(new Array(d - g % d + 1) |
| .join(" ")) |
| } |
| a.replaceSelections(b) |
| }, |
| defaultTab: function (a) { |
| a.somethingSelected() ? a.indentSelection("add") : a.execCommand("insertTab") |
| }, |
| transposeChars: function (a) { |
| cc(a, function () { |
| for (var b = a.listSelections(), c = [], d = 0; d < b.length; d++) { |
| var e = b[d].head, |
| f = ff(a.doc, e.line) |
| .text; |
| if (f) |
| if (e.ch == f.length && (e = new oa(e.line, e.ch - 1)), e.ch > 0) e = new oa(e.line, e.ch + 1), a.replaceRange(f.charAt(e.ch - 1) + f.charAt(e.ch - 2), oa(e.line, e.ch - 2), e, "+transpose"); |
| else if (e.line > a.doc.first) { |
| var g = ff(a.doc, e.line - 1) |
| .text; |
| g && a.replaceRange(f.charAt(0) + a.doc.lineSeparator() + g.charAt(g.length - 1), oa(e.line - 1, g.length - 1), oa(e.line, 1), "+transpose") |
| } |
| c.push(new Ka(e, e)) |
| } |
| a.setSelections(c) |
| }) |
| }, |
| newlineAndIndent: function (a) { |
| cc(a, function () { |
| for (var b = a.listSelections() |
| .length, c = 0; b > c; c++) { |
| var d = a.listSelections()[c]; |
| a.replaceRange(a.doc.lineSeparator(), d.anchor, d.head, "+input"), a.indentLine(d.from() |
| .line + 1, null, !0), td(a) |
| } |
| }) |
| }, |
| toggleOverwrite: function (a) { |
| a.toggleOverwrite() |
| } |
| }, |
| Md = v.keyMap = {}; |
| Md.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" |
| }, Md.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" |
| }, Md.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" |
| }, Md.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"] |
| }, Md["default"] = o ? Md.macDefault : Md.pcDefault, v.normalizeKeyMap = function (a) { |
| var b = {}; |
| for (var c in a) |
| if (a.hasOwnProperty(c)) { |
| var d = a[c]; |
| if (/^(name|fallthrough|(de|at)tach)$/.test(c)) continue; |
| if ("..." == d) { |
| delete a[c]; |
| continue |
| } |
| for (var e = eg(c.split(" "), Nd), f = 0; f < e.length; f++) { |
| var g, h; |
| f == e.length - 1 ? (h = e.join(" "), g = d) : (h = e.slice(0, f + 1) |
| .join(" "), g = "..."); |
| var i = b[h]; |
| if (i) { |
| if (i != g) throw new Error("Inconsistent bindings for " + h) |
| } else b[h] = g |
| } |
| delete a[c] |
| } |
| for (var j in b) a[j] = b[j]; |
| return a |
| }; |
| var Od = v.lookupKey = function (a, b, c, d) { |
| b = Rd(b); |
| var e = b.call ? b.call(a, d) : b[a]; |
| if (e === !1) return "nothing"; |
| if ("..." === e) return "multi"; |
| if (null != e && c(e)) return "handled"; |
| if (b.fallthrough) { |
| if ("[object Array]" != Object.prototype.toString.call(b.fallthrough)) return Od(a, b.fallthrough, c, d); |
| for (var f = 0; f < b.fallthrough.length; f++) { |
| var g = Od(a, b.fallthrough[f], c, d); |
| if (g) return g |
| } |
| } |
| }, |
| Pd = v.isModifierKey = function (a) { |
| var b = "string" == typeof a ? a : Ng[a.keyCode]; |
| return "Ctrl" == b || "Alt" == b || "Shift" == b || "Mod" == b |
| }, |
| Qd = v.keyName = function (a, b) { |
| if (i && 34 == a.keyCode && a["char"]) return !1; |
| var c = Ng[a.keyCode], |
| d = c; |
| return null == d || a.altGraphKey ? !1 : (a.altKey && "Alt" != c && (d = "Alt-" + d), (r ? a.metaKey : a.ctrlKey) && "Ctrl" != c && (d = "Ctrl-" + d), (r ? a.ctrlKey : a.metaKey) && "Cmd" != c && (d = "Cmd-" + d), !b && a.shiftKey && "Shift" != c && (d = "Shift-" + d), d) |
| }; |
| v.fromTextArea = function (a, b) { |
| function d() { |
| a.value = i.getValue() |
| } |
| if (b = b ? hg(b) : {}, b.value = a.value, !b.tabindex && a.tabIndex && (b.tabindex = a.tabIndex), !b.placeholder && a.placeholder && (b.placeholder = a.placeholder), null == b.autofocus) { |
| var c = ug(); |
| b.autofocus = c == a || null != a.getAttribute("autofocus") && c == document.body |
| } |
| if (a.form && (Jf(a.form, "submit", d), !b.leaveSubmitMethodAlone)) { |
| var e = a.form, |
| f = e.submit; |
| try { |
| var g = e.submit = function () { |
| d(), e.submit = f, e.submit(), e.submit = g |
| } |
| } catch (h) {} |
| } |
| b.finishInit = function (b) { |
| b.save = d, b.getTextArea = function () { |
| return a |
| }, b.toTextArea = function () { |
| b.toTextArea = isNaN, d(), a.parentNode.removeChild(b.getWrapperElement()), a.style.display = "", a.form && (Kf(a.form, "submit", d), "function" == typeof a.form.submit && (a.form.submit = f)) |
| } |
| }, a.style.display = "none"; |
| var i = v(function (b) { |
| a.parentNode.insertBefore(b, a.nextSibling) |
| }, b); |
| return i |
| }; |
| var Sd = v.StringStream = function (a, b) { |
| this.pos = this.start = 0, this.string = a, this.tabSize = b || 8, this.lastColumnPos = this.lastColumnValue = 0, this.lineStart = 0 |
| }; |
| Sd.prototype = { |
| eol: function () { |
| return this.pos >= this.string.length |
| }, |
| sol: function () { |
| return this.pos == this.lineStart |
| }, |
| peek: function () { |
| return this.string.charAt(this.pos) || void 0 |
| }, |
| next: function () { |
| return this.pos < this.string.length ? this.string.charAt(this.pos++) : void 0 |
| }, |
| eat: function (a) { |
| var b = this.string.charAt(this.pos); |
| if ("string" == typeof a) var c = b == a; |
| else var c = b && (a.test ? a.test(b) : a(b)); |
| return c ? (++this.pos, b) : void 0 |
| }, |
| eatWhile: function (a) { |
| for (var b = this.pos; this.eat(a);); |
| return this.pos > b |
| }, |
| eatSpace: function () { |
| for (var a = this.pos; |
| /[\s\u00a0]/.test(this.string.charAt(this.pos));) ++this.pos; |
| return this.pos > a |
| }, |
| skipToEnd: function () { |
| this.pos = this.string.length |
| }, |
| skipTo: function (a) { |
| var b = this.string.indexOf(a, this.pos); |
| return b > -1 ? (this.pos = b, !0) : void 0 |
| }, |
| backUp: function (a) { |
| this.pos -= a |
| }, |
| column: function () { |
| return this.lastColumnPos < this.start && (this.lastColumnValue = Zf(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue), this.lastColumnPos = this.start), this.lastColumnValue - (this.lineStart ? Zf(this.string, this.lineStart, this.tabSize) : 0) |
| }, |
| indentation: function () { |
| return Zf(this.string, null, this.tabSize) - (this.lineStart ? Zf(this.string, this.lineStart, this.tabSize) : 0) |
| }, |
| match: function (a, b, c) { |
| if ("string" != typeof a) { |
| var f = this.string.slice(this.pos) |
| .match(a); |
| return f && f.index > 0 ? null : (f && b !== !1 && (this.pos += f[0].length), f) |
| } |
| var d = function (a) { |
| return c ? a.toLowerCase() : a |
| }, |
| e = this.string.substr(this.pos, a.length); |
| return d(e) == d(a) ? (b !== !1 && (this.pos += a.length), !0) : void 0 |
| }, |
| current: function () { |
| return this.string.slice(this.start, this.pos) |
| }, |
| hideFirstChars: function (a, b) { |
| this.lineStart += a; |
| try { |
| return b() |
| } finally { |
| this.lineStart -= a |
| } |
| } |
| }; |
| var Td = 0, |
| Ud = v.TextMarker = function (a, b) { |
| this.lines = [], this.type = b, this.doc = a, this.id = ++Td |
| }; |
| Sf(Ud), Ud.prototype.clear = function () { |
| if (!this.explicitlyCleared) { |
| var a = this.doc.cm, |
| b = a && !a.curOp; |
| if (b && Vb(a), Rf(this, "clear")) { |
| var c = this.find(); |
| c && Nf(this, "clear", c.from, c.to) |
| } |
| for (var d = null, e = null, f = 0; f < this.lines.length; ++f) { |
| var g = this.lines[f], |
| h = ae(g.markedSpans, this); |
| a && !this.collapsed ? jc(a, kf(g), "text") : a && (null != h.to && (e = kf(g)), null != h.from && (d = kf(g))), g.markedSpans = be(g.markedSpans, h), null == h.from && this.collapsed && !we(this.doc, g) && a && jf(g, Rb(a.display)) |
| } |
| if (a && this.collapsed && !a.options.lineWrapping) |
| for (var f = 0; f < this.lines.length; ++f) { |
| var i = se(this.lines[f]), |
| j = G(i); |
| j > a.display.maxLineLength && (a.display.maxLine = i, a.display.maxLineLength = j, a.display.maxLineChanged = !0) |
| } |
| null != d && a && this.collapsed && ic(a, d, e + 1), this.lines.length = 0, this.explicitlyCleared = !0, this.atomic && this.doc.cantEdit && (this.doc.cantEdit = !1, a && ab(a.doc)), a && Nf(a, "markerCleared", a, this), b && Xb(a), this.parent && this.parent.clear() |
| } |
| }, Ud.prototype.find = function (a, b) { |
| null == a && "bookmark" == this.type && (a = 1); |
| for (var c, d, e = 0; e < this.lines.length; ++e) { |
| var f = this.lines[e], |
| g = ae(f.markedSpans, this); |
| if (null != g.from && (c = oa(b ? f : kf(f), g.from), -1 == a)) return c; |
| if (null != g.to && (d = oa(b ? f : kf(f), g.to), 1 == a)) return d |
| } |
| return c && { |
| from: c, |
| to: d |
| } |
| }, Ud.prototype.changed = function () { |
| var a = this.find(-1, !0), |
| b = this, |
| c = this.doc.cm; |
| a && c && cc(c, function () { |
| var d = a.line, |
| e = kf(a.line), |
| f = wb(c, e); |
| if (f && (Db(f), c.curOp.selectionChanged = c.curOp.forceUpdate = !0), c.curOp.updateMaxLine = !0, !we(b.doc, d) && null != b.height) { |
| var g = b.height; |
| b.height = null; |
| var h = Ae(b) - g; |
| h && jf(d, d.height + h) |
| } |
| }) |
| }, Ud.prototype.attachLine = function (a) { |
| if (!this.lines.length && this.doc.cm) { |
| var b = this.doc.cm.curOp; |
| b.maybeHiddenMarkers && -1 != dg(b.maybeHiddenMarkers, this) || (b.maybeUnhiddenMarkers || (b.maybeUnhiddenMarkers = [])) |
| .push(this) |
| } |
| this.lines.push(a) |
| }, Ud.prototype.detachLine = function (a) { |
| if (this.lines.splice(dg(this.lines, a), 1), !this.lines.length && this.doc.cm) { |
| var b = this.doc.cm.curOp; |
| (b.maybeHiddenMarkers || (b.maybeHiddenMarkers = [])) |
| .push(this) |
| } |
| }; |
| var Td = 0, |
| Wd = v.SharedTextMarker = function (a, b) { |
| this.markers = a, this.primary = b; |
| for (var c = 0; c < a.length; ++c) a[c].parent = this |
| }; |
| Sf(Wd), Wd.prototype.clear = function () { |
| if (!this.explicitlyCleared) { |
| this.explicitlyCleared = !0; |
| for (var a = 0; a < this.markers.length; ++a) this.markers[a].clear(); |
| Nf(this, "clear") |
| } |
| }, Wd.prototype.find = function (a, b) { |
| return this.primary.find(a, b) |
| }; |
| var ye = v.LineWidget = function (a, b, c) { |
| if (c) |
| for (var d in c) c.hasOwnProperty(d) && (this[d] = c[d]); |
| this.doc = a, this.node = b |
| }; |
| Sf(ye), ye.prototype.clear = function () { |
| var a = this.doc.cm, |
| b = this.line.widgets, |
| c = this.line, |
| d = kf(c); |
| if (null != d && b) { |
| for (var e = 0; e < b.length; ++e) b[e] == this && b.splice(e--, 1); |
| b.length || (c.widgets = null); |
| var f = Ae(this); |
| jf(c, Math.max(0, c.height - f)), a && cc(a, function () { |
| ze(a, c, -f), jc(a, d, "widget") |
| }) |
| } |
| }, ye.prototype.changed = function () { |
| var a = this.height, |
| b = this.doc.cm, |
| c = this.line; |
| this.height = null; |
| var d = Ae(this) - a; |
| d && (jf(c, c.height + d), b && cc(b, function () { |
| b.curOp.forceUpdate = !0, ze(b, c, d) |
| })) |
| }; |
| var Ce = v.Line = function (a, b, c) { |
| this.text = a, ke(this, b), this.height = c ? c(this) : 1 |
| }; |
| Sf(Ce), Ce.prototype.lineNo = function () { |
| return kf(this) |
| }; |
| var Ne = {}, |
| Oe = {}; |
| Ze.prototype = { |
| chunkSize: function () { |
| return this.lines.length |
| }, |
| removeInner: function (a, b) { |
| for (var c = a, d = a + b; d > c; ++c) { |
| var e = this.lines[c]; |
| this.height -= e.height, Ee(e), Nf(e, "delete") |
| } |
| this.lines.splice(a, b) |
| }, |
| collapse: function (a) { |
| a.push.apply(a, this.lines) |
| }, |
| insertInner: function (a, b, c) { |
| this.height += c, this.lines = this.lines.slice(0, a) |
| .concat(b) |
| .concat(this.lines.slice(a)); |
| for (var d = 0; d < b.length; ++d) b[d].parent = this |
| }, |
| iterN: function (a, b, c) { |
| for (var d = a + b; d > a; ++a) |
| if (c(this.lines[a])) return !0 |
| } |
| }, $e.prototype = { |
| chunkSize: function () { |
| return this.size |
| }, |
| removeInner: function (a, b) { |
| this.size -= b; |
| for (var c = 0; c < this.children.length; ++c) { |
| var d = this.children[c], |
| e = d.chunkSize(); |
| if (e > a) { |
| var f = Math.min(b, e - a), |
| g = d.height; |
| if (d.removeInner(a, f), this.height -= g - d.height, e == f && (this.children.splice(c--, 1), d.parent = null), 0 == (b -= f)) break; |
| a = 0 |
| } else a -= e |
| } |
| if (this.size - b < 25 && (this.children.length > 1 || !(this.children[0] instanceof Ze))) { |
| var h = []; |
| this.collapse(h), this.children = [new Ze(h)], this.children[0].parent = this |
| } |
| }, |
| collapse: function (a) { |
| for (var b = 0; b < this.children.length; ++b) this.children[b].collapse(a) |
| }, |
| insertInner: function (a, b, c) { |
| this.size += b.length, this.height += c; |
| for (var d = 0; d < this.children.length; ++d) { |
| var e = this.children[d], |
| f = e.chunkSize(); |
| if (f >= a) { |
| if (e.insertInner(a, b, c), e.lines && e.lines.length > 50) { |
| for (; e.lines.length > 50;) { |
| var g = e.lines.splice(e.lines.length - 25, 25), |
| h = new Ze(g); |
| e.height -= h.height, this.children.splice(d + 1, 0, h), h.parent = this |
| } |
| this.maybeSpill() |
| } |
| break |
| } |
| a -= f |
| } |
| }, |
| maybeSpill: function () { |
| if (!(this.children.length <= 10)) { |
| var a = this; |
| do { |
| var b = a.children.splice(a.children.length - 5, 5), |
| c = new $e(b); |
| if (a.parent) { |
| a.size -= c.size, a.height -= c.height; |
| var e = dg(a.parent.children, a); |
| a.parent.children.splice(e + 1, 0, c) |
| } else { |
| var d = new $e(a.children); |
| d.parent = a, a.children = [d, c], a = d |
| } |
| c.parent = a.parent |
| } while (a.children.length > 10); |
| a.parent.maybeSpill() |
| } |
| }, |
| iterN: function (a, b, c) { |
| for (var d = 0; d < this.children.length; ++d) { |
| var e = this.children[d], |
| f = e.chunkSize(); |
| if (f > a) { |
| var g = Math.min(b, f - a); |
| if (e.iterN(a, g, c)) return !0; |
| if (0 == (b -= g)) break; |
| a = 0 |
| } else a -= f |
| } |
| } |
| }; |
| var _e = 0, |
| af = v.Doc = function (a, b, c, d) { |
| if (!(this instanceof af)) return new af(a, b, c, d); |
| null == c && (c = 0), $e.call(this, [new Ze([new Ce("", null)])]), this.first = c, this.scrollTop = this.scrollLeft = 0, this.cantEdit = !1, this.cleanGeneration = 1, this.frontier = c; |
| var e = oa(c, 0); |
| this.sel = Ma(e), this.history = new of(null), this.id = ++_e, this.modeOption = b, this.lineSep = d, "string" == typeof a && (a = this.splitLines(a)), Ye(this, { |
| from: e, |
| to: e, |
| text: a |
| }), Za(this, Ma(e), Vf) |
| }; |
| af.prototype = gg($e.prototype, { |
| constructor: af, |
| iter: function (a, b, c) { |
| c ? this.iterN(a - this.first, b - a, c) : this.iterN(this.first, this.first + this.size, a) |
| }, |
| insert: function (a, b) { |
| for (var c = 0, d = 0; d < b.length; ++d) c += b[d].height; |
| this.insertInner(a - this.first, b, c) |
| }, |
| remove: function (a, b) { |
| this.removeInner(a - this.first, b) |
| }, |
| getValue: function (a) { |
| var b = hf(this, this.first, this.first + this.size); |
| return a === !1 ? b : b.join(a || this.lineSeparator()) |
| }, |
| setValue: fc(function (a) { |
| var b = oa(this.first, 0), |
| c = this.first + this.size - 1; |
| hd(this, { |
| from: b, |
| to: oa(c, ff(this, c) |
| .text.length), |
| text: this.splitLines(a), |
| origin: "setValue", |
| full: !0 |
| }, !0), Za(this, Ma(b)) |
| }), |
| replaceRange: function (a, b, c, d) { |
| b = Oa(this, b), c = c ? Oa(this, c) : b, nd(this, a, b, c, d) |
| }, |
| getRange: function (a, b, c) { |
| var d = gf(this, Oa(this, a), Oa(this, b)); |
| return c === !1 ? d : d.join(c || this.lineSeparator()) |
| }, |
| getLine: function (a) { |
| var b = this.getLineHandle(a); |
| return b && b.text |
| }, |
| getLineHandle: function (a) { |
| return Qa(this, a) ? ff(this, a) : void 0 |
| }, |
| getLineNumber: function (a) { |
| return kf(a) |
| }, |
| getLineHandleVisualStart: function (a) { |
| return "number" == typeof a && (a = ff(this, a)), se(a) |
| }, |
| lineCount: function () { |
| return this.size |
| }, |
| firstLine: function () { |
| return this.first |
| }, |
| lastLine: function () { |
| return this.first + this.size - 1 |
| }, |
| clipPos: function (a) { |
| return Oa(this, a) |
| }, |
| getCursor: function (a) { |
| var c, b = this.sel.primary(); |
| return c = null == a || "head" == a ? b.head : "anchor" == a ? b.anchor : "end" == a || "to" == a || a === !1 ? b.to() : b.from() |
| }, |
| listSelections: function () { |
| return this.sel.ranges |
| }, |
| somethingSelected: function () { |
| return this.sel.somethingSelected() |
| }, |
| setCursor: fc(function (a, b, c) { |
| Wa(this, Oa(this, "number" == typeof a ? oa(a, b || 0) : a), null, c) |
| }), |
| setSelection: fc(function (a, b, c) { |
| Wa(this, Oa(this, a), Oa(this, b || a), c) |
| }), |
| extendSelection: fc(function (a, b, c) { |
| Ta(this, Oa(this, a), b && Oa(this, b), c) |
| }), |
| extendSelections: fc(function (a, b) { |
| Ua(this, Ra(this, a, b)) |
| }), |
| extendSelectionsBy: fc(function (a, b) { |
| Ua(this, eg(this.sel.ranges, a), b) |
| }), |
| setSelections: fc(function (a, b, c) { |
| if (a.length) { |
| for (var d = 0, e = []; d < a.length; d++) e[d] = new Ka(Oa(this, a[d].anchor), Oa(this, a[d].head)); |
| null == b && (b = Math.min(a.length - 1, this.sel.primIndex)), Za(this, La(e, b), c) |
| } |
| }), |
| addSelection: fc(function (a, b, c) { |
| var d = this.sel.ranges.slice(0); |
| d.push(new Ka(Oa(this, a), Oa(this, b || a))), Za(this, La(d, d.length - 1), c) |
| }), |
| getSelection: function (a) { |
| for (var c, b = this.sel.ranges, d = 0; d < b.length; d++) { |
| var e = gf(this, b[d].from(), b[d].to()); |
| c = c ? c.concat(e) : e |
| } |
| return a === !1 ? c : c.join(a || this.lineSeparator()) |
| }, |
| getSelections: function (a) { |
| for (var b = [], c = this.sel.ranges, d = 0; d < c.length; d++) { |
| var e = gf(this, c[d].from(), c[d].to()); |
| a !== !1 && (e = e.join(a || this.lineSeparator())), b[d] = e |
| } |
| return b |
| }, |
| replaceSelection: function (a, b, c) { |
| for (var d = [], e = 0; e < this.sel.ranges.length; e++) d[e] = a; |
| this.replaceSelections(d, b, c || "+input") |
| }, |
| replaceSelections: fc(function (a, b, c) { |
| for (var d = [], e = this.sel, f = 0; f < e.ranges.length; f++) { |
| var g = e.ranges[f]; |
| d[f] = { |
| from: g.from(), |
| to: g.to(), |
| text: this.splitLines(a[f]), |
| origin: c |
| } |
| } |
| for (var h = b && "end" != b && fd(this, d, b), f = d.length - 1; f >= 0; f--) hd(this, d[f]); |
| h ? Ya(this, h) : this.cm && td(this.cm) |
| }), |
| undo: fc(function () { |
| jd(this, "undo") |
| }), |
| redo: fc(function () { |
| jd(this, "redo") |
| }), |
| undoSelection: fc(function () { |
| jd(this, "undo", !0) |
| }), |
| redoSelection: fc(function () { |
| jd(this, "redo", !0) |
| }), |
| setExtending: function (a) { |
| this.extend = a |
| }, |
| getExtending: function () { |
| return this.extend |
| }, |
| historySize: function () { |
| for (var a = this.history, b = 0, c = 0, d = 0; d < a.done.length; d++) a.done[d].ranges || ++b; |
| for (var d = 0; d < a.undone.length; d++) a.undone[d].ranges || ++c; |
| return { |
| undo: b, |
| redo: c |
| } |
| }, |
| clearHistory: function () { |
| this.history = new of(this.history.maxGeneration) |
| }, |
| markClean: function () { |
| this.cleanGeneration = this.changeGeneration(!0) |
| }, |
| changeGeneration: function (a) { |
| return a && (this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null), this.history.generation |
| }, |
| isClean: function (a) { |
| return this.history.generation == (a || this.cleanGeneration) |
| }, |
| getHistory: function () { |
| return { |
| done: zf(this.history.done), |
| undone: zf(this.history.undone) |
| } |
| }, |
| setHistory: function (a) { |
| var b = this.history = new of(this.history.maxGeneration); |
| b.done = zf(a.done.slice(0), null, !0), b.undone = zf(a.undone.slice(0), null, !0) |
| }, |
| addLineClass: fc(function (a, b, c) { |
| return wd(this, a, "gutter" == b ? "gutter" : "class", function (a) { |
| var d = "text" == b ? "textClass" : "background" == b ? "bgClass" : "gutter" == b ? "gutterClass" : "wrapClass"; |
| if (a[d]) { |
| if (vg(c) |
| .test(a[d])) return !1; |
| a[d] += " " + c |
| } else a[d] = c; |
| return !0 |
| }) |
| }), |
| removeLineClass: fc(function (a, b, c) { |
| return wd(this, a, "gutter" == b ? "gutter" : "class", function (a) { |
| var d = "text" == b ? "textClass" : "background" == b ? "bgClass" : "gutter" == b ? "gutterClass" : "wrapClass", |
| e = a[d]; |
| if (!e) return !1; |
| if (null == c) a[d] = null; |
| else { |
| var f = e.match(vg(c)); |
| if (!f) return !1; |
| var g = f.index + f[0].length; |
| a[d] = e.slice(0, f.index) + (f.index && g != e.length ? " " : "") + e.slice(g) || null |
| } |
| return !0 |
| }) |
| }), |
| addLineWidget: fc(function (a, b, c) { |
| return Be(this, a, b, c) |
| }), |
| removeLineWidget: function (a) { |
| a.clear() |
| }, |
| markText: function (a, b, c) { |
| return Vd(this, Oa(this, a), Oa(this, b), c, "range") |
| }, |
| setBookmark: function (a, b) { |
| var c = { |
| replacedWith: b && (null == b.nodeType ? b.widget : b), |
| insertLeft: b && b.insertLeft, |
| clearWhenEmpty: !1, |
| shared: b && b.shared, |
| handleMouseEvents: b && b.handleMouseEvents |
| }; |
| return a = Oa(this, a), Vd(this, a, a, c, "bookmark") |
| }, |
| findMarksAt: function (a) { |
| a = Oa(this, a); |
| var b = [], |
| c = ff(this, a.line) |
| .markedSpans; |
| if (c) |
| for (var d = 0; d < c.length; ++d) { |
| var e = c[d]; |
| (null == e.from || e.from <= a.ch) && (null == e.to || e.to >= a.ch) && b.push(e.marker.parent || e.marker) |
| } |
| return b |
| }, |
| findMarks: function (a, b, c) { |
| a = Oa(this, a), b = Oa(this, b); |
| var d = [], |
| e = a.line; |
| return this.iter(a.line, b.line + 1, function (f) { |
| var g = f.markedSpans; |
| if (g) |
| for (var h = 0; h < g.length; h++) { |
| var i = g[h]; |
| e == a.line && a.ch > i.to || null == i.from && e != a.line || e == b.line && i.from > b.ch || c && !c(i.marker) || d.push(i.marker.parent || i.marker) |
| }++e |
| }), d |
| }, |
| getAllMarks: function () { |
| var a = []; |
| return this.iter(function (b) { |
| var c = b.markedSpans; |
| if (c) |
| for (var d = 0; d < c.length; ++d) null != c[d].from && a.push(c[d].marker) |
| }), a |
| }, |
| posFromIndex: function (a) { |
| var b, c = this.first; |
| return this.iter(function (d) { |
| var e = d.text.length + 1; |
| return e > a ? (b = a, !0) : (a -= e, void++c) |
| }), Oa(this, oa(c, b)) |
| }, |
| indexFromPos: function (a) { |
| a = Oa(this, a); |
| var b = a.ch; |
| return a.line < this.first || a.ch < 0 ? 0 : (this.iter(this.first, a.line, function (a) { |
| b += a.text.length + 1 |
| }), b) |
| }, |
| copy: function (a) { |
| var b = new af(hf(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep); |
| return b.scrollTop = this.scrollTop, b.scrollLeft = this.scrollLeft, b.sel = this.sel, b.extend = !1, a && (b.history.undoDepth = this.history.undoDepth, b.setHistory(this.getHistory())), b |
| }, |
| linkedDoc: function (a) { |
| a || (a = {}); |
| var b = this.first, |
| c = this.first + this.size; |
| null != a.from && a.from > b && (b = a.from), null != a.to && a.to < c && (c = a.to); |
| var d = new af(hf(this, b, c), a.mode || this.modeOption, b, this.lineSep); |
| return a.sharedHist && (d.history = this.history), (this.linked || (this.linked = [])) |
| .push({ |
| doc: d, |
| sharedHist: a.sharedHist |
| }), d.linked = [{ |
| doc: this, |
| isParent: !0, |
| sharedHist: a.sharedHist |
| }], Zd(d, Yd(this)), d |
| }, |
| unlinkDoc: function (a) { |
| if (a instanceof v && (a = a.doc), this.linked) |
| for (var b = 0; b < this.linked.length; ++b) { |
| var c = this.linked[b]; |
| if (c.doc == a) { |
| this.linked.splice(b, 1), a.unlinkDoc(this), $d(Yd(this)); |
| break |
| } |
| } |
| if (a.history == this.history) { |
| var d = [a.id]; |
| df(a, function (a) { |
| d.push(a.id) |
| }, !0), a.history = new of(null), a.history.done = zf(this.history.done, d), a.history.undone = zf(this.history.undone, d) |
| } |
| }, |
| iterLinkedDocs: function (a) { |
| df(this, a) |
| }, |
| getMode: function () { |
| return this.mode |
| }, |
| getEditor: function () { |
| return this.cm |
| }, |
| splitLines: function (a) { |
| return this.lineSep ? a.split(this.lineSep) : Ig(a) |
| }, |
| lineSeparator: function () { |
| return this.lineSep || "\n" |
| } |
| }), af.prototype.eachLine = af.prototype.iter; |
| var bf = "iter insert remove copy getEditor constructor".split(" "); |
| for (var cf in af.prototype) af.prototype.hasOwnProperty(cf) && dg(bf, cf) < 0 && (v.prototype[cf] = function (a) { |
| return function () { |
| return a.apply(this.doc, arguments) |
| } |
| }(af.prototype[cf])); |
| Sf(af); |
| var Df = v.e_preventDefault = function (a) { |
| a.preventDefault ? a.preventDefault() : a.returnValue = !1 |
| }, |
| Ef = v.e_stopPropagation = function (a) { |
| a.stopPropagation ? a.stopPropagation() : a.cancelBubble = !0 |
| }, |
| Gf = v.e_stop = function (a) { |
| Df(a), Ef(a) |
| }, |
| Jf = v.on = function (a, b, c) { |
| if (a.addEventListener) a.addEventListener(b, c, !1); |
| else if (a.attachEvent) a.attachEvent("on" + b, c); |
| else { |
| var d = a._handlers || (a._handlers = {}), |
| e = d[b] || (d[b] = []); |
| e.push(c) |
| } |
| }, |
| Kf = v.off = function (a, b, c) { |
| if (a.removeEventListener) a.removeEventListener(b, c, !1); |
| else if (a.detachEvent) a.detachEvent("on" + b, c); |
| else { |
| var d = a._handlers && a._handlers[b]; |
| if (!d) return; |
| for (var e = 0; e < d.length; ++e) |
| if (d[e] == c) { |
| d.splice(e, 1); |
| break |
| } |
| } |
| }, |
| Lf = v.signal = function (a, b) { |
| var c = a._handlers && a._handlers[b]; |
| if (c) |
| for (var d = Array.prototype.slice.call(arguments, 2), e = 0; e < c.length; ++e) c[e].apply(null, d) |
| }, |
| Mf = null, |
| Tf = 30, |
| Uf = v.Pass = { |
| toString: function () { |
| return "CodeMirror.Pass" |
| } |
| }, |
| Vf = { |
| scroll: !1 |
| }, |
| Wf = { |
| origin: "*mouse" |
| }, |
| Xf = { |
| origin: "+move" |
| }; |
| Yf.prototype.set = function (a, b) { |
| clearTimeout(this.id), this.id = setTimeout(b, a) |
| }; |
| var Zf = v.countColumn = function (a, b, c, d, e) { |
| null == b && (b = a.search(/[^\s\u00a0]/), -1 == b && (b = a.length)); |
| for (var f = d || 0, g = e || 0;;) { |
| var h = a.indexOf(" ", f); |
| if (0 > h || h >= b) return g + (b - f); |
| g += h - f, g += c - g % c, f = h + 1 |
| } |
| }, |
| $f = v.findColumn = function (a, b, c) { |
| for (var d = 0, e = 0;;) { |
| var f = a.indexOf(" ", d); - 1 == f && (f = a.length); |
| var g = f - d; |
| if (f == a.length || e + g >= b) return d + Math.min(g, b - e); |
| if (e += f - d, e += c - e % c, d = f + 1, e >= b) return d |
| } |
| }, |
| _f = [""], |
| cg = function (a) { |
| a.select() |
| }; |
| m ? cg = function (a) { |
| a.selectionStart = 0, a.selectionEnd = a.value.length |
| } : d && (cg = function (a) { |
| try { |
| a.select() |
| } catch (b) {} |
| }); |
| var qg, jg = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/, |
| kg = v.isWordChar = function (a) { |
| return /\w/.test(a) || a > "\x80" && (a.toUpperCase() != a.toLowerCase() || jg.test(a)) |
| }, |
| ng = /[\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]/; |
| qg = document.createRange ? function (a, b, c, d) { |
| var e = document.createRange(); |
| return e.setEnd(d || a, c), e.setStart(a, b), e |
| } : function (a, b, c) { |
| var d = document.body.createTextRange(); |
| try { |
| d.moveToElementText(a.parentNode) |
| } catch (e) { |
| return d |
| } |
| return d.collapse(!0), d.moveEnd("character", c), d.moveStart("character", b), d |
| }; |
| var tg = v.contains = function (a, b) { |
| if (3 == b.nodeType && (b = b.parentNode), a.contains) return a.contains(b); |
| do |
| if (11 == b.nodeType && (b = b.host), b == a) return !0; |
| while (b = b.parentNode) |
| }; |
| d && 11 > e && (ug = function () { |
| try { |
| return document.activeElement |
| } catch (a) { |
| return document.body |
| } |
| }); |
| var Eg, Gg, wg = v.rmClass = function (a, b) { |
| var c = a.className, |
| d = vg(b) |
| .exec(c); |
| if (d) { |
| var e = c.slice(d.index + d[0].length); |
| a.className = c.slice(0, d.index) + (e ? d[1] + e : "") |
| } |
| }, |
| xg = v.addClass = function (a, b) { |
| var c = a.className; |
| vg(b) |
| .test(c) || (a.className += (c ? " " : "") + b) |
| }, |
| Ag = !1, |
| Dg = function () { |
| if (d && 9 > e) return !1; |
| var a = pg("div"); |
| return "draggable" in a || "dragDrop" in a |
| }(), |
| Ig = v.splitLines = 3 != "\n\nb".split(/\n/) |
| .length ? function (a) { |
| for (var b = 0, c = [], d = a.length; d >= b;) { |
| var e = a.indexOf("\n", b); - 1 == e && (e = a.length); |
| var f = a.slice(b, "\r" == a.charAt(e - 1) ? e - 1 : e), |
| g = f.indexOf("\r"); - 1 != g ? (c.push(f.slice(0, g)), b += g + 1) : (c.push(f), b = e + 1) |
| } |
| return c |
| } : function (a) { |
| return a.split(/\r\n?|\n/) |
| }, |
| Jg = window.getSelection ? function (a) { |
| try { |
| return a.selectionStart != a.selectionEnd |
| } catch (b) { |
| return !1 |
| } |
| } : function (a) { |
| try { |
| var b = a.ownerDocument.selection.createRange() |
| } catch (c) {} |
| return b && b.parentElement() == a ? 0 != b.compareEndPoints("StartToEnd", b) : !1 |
| }, |
| Kg = function () { |
| var a = pg("div"); |
| return "oncopy" in a ? !0 : (a.setAttribute("oncopy", "return;"), "function" == typeof a.oncopy) |
| }(), |
| Lg = null, |
| Ng = { |
| 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", |
| 107: "=", |
| 109: "-", |
| 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" |
| }; |
| v.keyNames = Ng, |
| function () { |
| for (var a = 0; 10 > a; a++) Ng[a + 48] = Ng[a + 96] = String(a); |
| for (var a = 65; 90 >= a; a++) Ng[a] = String.fromCharCode(a); |
| for (var a = 1; 12 >= a; a++) Ng[a + 111] = Ng[a + 63235] = "F" + a |
| }(); |
| var Xg, ah = function () { |
| function c(c) { |
| return 247 >= c ? a.charAt(c) : c >= 1424 && 1524 >= c ? "R" : c >= 1536 && 1773 >= c ? b.charAt(c - 1536) : c >= 1774 && 2220 >= c ? "r" : c >= 8192 && 8203 >= c ? "w" : 8204 == c ? "b" : "L" |
| } |
| |
| function j(a, b, c) { |
| this.level = a, this.from = b, this.to = c |
| } |
| var a = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN", |
| b = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm", |
| d = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/, |
| e = /[stwN]/, |
| f = /[LRr]/, |
| g = /[Lb1n]/, |
| h = /[1n]/, |
| i = "L"; |
| return function (a) { |
| if (!d.test(a)) return !1; |
| for (var m, b = a.length, k = [], l = 0; b > l; ++l) k.push(m = c(a.charCodeAt(l))); |
| for (var l = 0, n = i; b > l; ++l) { |
| var m = k[l]; |
| "m" == m ? k[l] = n : n = m |
| } |
| for (var l = 0, o = i; b > l; ++l) { |
| var m = k[l]; |
| "1" == m && "r" == o ? k[l] = "n" : f.test(m) && (o = m, "r" == m && (k[l] = "R")) |
| } |
| for (var l = 1, n = k[0]; b - 1 > l; ++l) { |
| var m = k[l]; |
| "+" == m && "1" == n && "1" == k[l + 1] ? k[l] = "1" : "," != m || n != k[l + 1] || "1" != n && "n" != n || (k[l] = n), n = m |
| } |
| for (var l = 0; b > l; ++l) { |
| var m = k[l]; |
| if ("," == m) k[l] = "N"; |
| else if ("%" == m) { |
| for (var p = l + 1; b > p && "%" == k[p]; ++p); |
| for (var q = l && "!" == k[l - 1] || b > p && "1" == k[p] ? "1" : "N", r = l; p > r; ++r) k[r] = q; |
| l = p - 1 |
| } |
| } |
| for (var l = 0, o = i; b > l; ++l) { |
| var m = k[l]; |
| "L" == o && "1" == m ? k[l] = "L" : f.test(m) && (o = m) |
| } |
| for (var l = 0; b > l; ++l) |
| if (e.test(k[l])) { |
| for (var p = l + 1; b > p && e.test(k[p]); ++p); |
| for (var s = "L" == (l ? k[l - 1] : i), t = "L" == (b > p ? k[p] : i), q = s || t ? "L" : "R", r = l; p > r; ++r) k[r] = q; |
| l = p - 1 |
| } |
| for (var v, u = [], l = 0; b > l;) |
| if (g.test(k[l])) { |
| var w = l; |
| for (++l; b > l && g.test(k[l]); ++l); |
| u.push(new j(0, w, l)) |
| } else { |
| var x = l, |
| y = u.length; |
| for (++l; b > l && "L" != k[l]; ++l); |
| for (var r = x; l > r;) |
| if (h.test(k[r])) { |
| r > x && u.splice(y, 0, new j(1, x, r)); |
| var z = r; |
| for (++r; l > r && h.test(k[r]); ++r); |
| u.splice(y, 0, new j(2, z, r)), x = r |
| } else ++r; |
| l > x && u.splice(y, 0, new j(1, x, l)) |
| } |
| return 1 == u[0].level && (v = a.match(/^\s+/)) && (u[0].from = v[0].length, u.unshift(new j(0, 0, v[0].length))), 1 == bg(u) |
| .level && (v = a.match(/\s+$/)) && (bg(u) |
| .to -= v[0].length, u.push(new j(0, b - v[0].length, b))), 2 == u[0].level && u.unshift(new j(1, u[0].to, u[0].to)), u[0].level != bg(u) |
| .level && u.push(new j(u[0].level, b, b)), u |
| } |
| }(); |
| return v.version = "5.6.1", v |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function b(a) { |
| for (var b = {}, c = 0; c < a.length; ++c) b[a[c]] = !0; |
| return b |
| } |
| |
| function x(a, b) { |
| for (var d, c = !1; null != (d = a.next());) { |
| if (c && "/" == d) { |
| b.tokenize = null; |
| break |
| } |
| c = "*" == d |
| } |
| return ["comment", "comment"] |
| } |
| a.defineMode("css", function (b, c) { |
| function u(a, b) { |
| return s = b, a |
| } |
| |
| function v(a, b) { |
| var c = a.next(); |
| if (f[c]) { |
| var d = f[c](a, b); |
| if (d !== !1) return d |
| } |
| return "@" == c ? (a.eatWhile(/[\w\\\-]/), u("def", a.current())) : "=" == c || ("~" == c || "|" == c) && a.eat("=") ? u(null, "compare") : '"' == c || "'" == c ? (b.tokenize = w(c), b.tokenize(a, b)) : "#" == c ? (a.eatWhile(/[\w\\\-]/), u("atom", "hash")) : "!" == c ? (a.match(/^\s*\w*/), u("keyword", "important")) : /\d/.test(c) || "." == c && a.eat(/\d/) ? (a.eatWhile(/[\w.%]/), u("number", "unit")) : "-" !== c ? /[,+>*\/]/.test(c) ? u(null, "select-op") : "." == c && a.match(/^-?[_a-z][_a-z0-9-]*/i) ? u("qualifier", "qualifier") : /[:;{}\[\]\(\)]/.test(c) ? u(null, c) : "u" == c && a.match(/rl(-prefix)?\(/) || "d" == c && a.match("omain(") || "r" == c && a.match("egexp(") ? (a.backUp(1), b.tokenize = x, u("property", "word")) : /[\w\\\-]/.test(c) ? (a.eatWhile(/[\w\\\-]/), u("property", "word")) : u(null, null) : /[\d.]/.test(a.peek()) ? (a.eatWhile(/[\w.%]/), u("number", "unit")) : a.match(/^-[\w\\\-]+/) ? (a.eatWhile(/[\w\\\-]/), a.match(/^\s*:/, !1) ? u("variable-2", "variable-definition") : u("variable-2", "variable")) : a.match(/^\w+-/) ? u("meta", "meta") : void 0 |
| } |
| |
| function w(a) { |
| return function (b, c) { |
| for (var e, d = !1; null != (e = b.next());) { |
| if (e == a && !d) { |
| ")" == a && b.backUp(1); |
| break |
| } |
| d = !d && "\\" == e |
| } |
| return (e == a || !d && ")" != a) && (c.tokenize = null), u("string", "string") |
| } |
| } |
| |
| function x(a, b) { |
| return a.next(), a.match(/\s*[\"\')]/, !1) ? b.tokenize = null : b.tokenize = w(")"), u(null, "(") |
| } |
| |
| function y(a, b, c) { |
| this.type = a, this.indent = b, this.prev = c |
| } |
| |
| function z(a, b, c, d) { |
| return a.context = new y(c, b.indentation() + (d === !1 ? 0 : e), a.context), c |
| } |
| |
| function A(a) { |
| return a.context.prev && (a.context = a.context.prev), a.context.type |
| } |
| |
| function B(a, b, c) { |
| return E[c.context.type](a, b, c) |
| } |
| |
| function C(a, b, c, d) { |
| for (var e = d || 1; e > 0; e--) c.context = c.context.prev; |
| return B(a, b, c) |
| } |
| |
| function D(a) { |
| var b = a.current() |
| .toLowerCase(); |
| t = p.hasOwnProperty(b) ? "atom" : o.hasOwnProperty(b) ? "keyword" : "variable" |
| } |
| var d = c; |
| c.propertyKeywords || (c = a.resolveMode("text/css")), c.inline = d.inline; |
| var s, t, e = b.indentUnit, |
| f = c.tokenHooks, |
| g = c.documentTypes || {}, |
| h = c.mediaTypes || {}, |
| i = c.mediaFeatures || {}, |
| j = c.mediaValueKeywords || {}, |
| k = c.propertyKeywords || {}, |
| l = c.nonStandardPropertyKeywords || {}, |
| m = c.fontProperties || {}, |
| n = c.counterDescriptors || {}, |
| o = c.colorKeywords || {}, |
| p = c.valueKeywords || {}, |
| q = c.allowNested, |
| r = c.supportsAtComponent === !0, |
| E = {}; |
| return E.top = function (a, b, c) { |
| if ("{" == a) return z(c, b, "block"); |
| if ("}" == a && c.context.prev) return A(c); |
| if (r && /@component/.test(a)) return z(c, b, "atComponentBlock"); |
| if (/^@(-moz-)?document$/.test(a)) return z(c, b, "documentTypes"); |
| if (/^@(media|supports|(-moz-)?document|import)$/.test(a)) return z(c, b, "atBlock"); |
| if (/^@(font-face|counter-style)/.test(a)) return c.stateArg = a, "restricted_atBlock_before"; |
| if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(a)) return "keyframes"; |
| if (a && "@" == a.charAt(0)) return z(c, b, "at"); |
| if ("hash" == a) t = "builtin"; |
| else if ("word" == a) t = "tag"; |
| else { |
| if ("variable-definition" == a) return "maybeprop"; |
| if ("interpolation" == a) return z(c, b, "interpolation"); |
| if (":" == a) return "pseudo"; |
| if (q && "(" == a) return z(c, b, "parens") |
| } |
| return c.context.type |
| }, E.block = function (a, b, c) { |
| if ("word" == a) { |
| var d = b.current() |
| .toLowerCase(); |
| return k.hasOwnProperty(d) ? (t = "property", "maybeprop") : l.hasOwnProperty(d) ? (t = "string-2", "maybeprop") : q ? (t = b.match(/^\s*:(?:\s|$)/, !1) ? "property" : "tag", "block") : (t += " error", "maybeprop") |
| } |
| return "meta" == a ? "block" : q || "hash" != a && "qualifier" != a ? E.top(a, b, c) : (t = "error", "block") |
| }, E.maybeprop = function (a, b, c) { |
| return ":" == a ? z(c, b, "prop") : B(a, b, c) |
| }, E.prop = function (a, b, c) { |
| if (";" == a) return A(c); |
| if ("{" == a && q) return z(c, b, "propBlock"); |
| if ("}" == a || "{" == a) return C(a, b, c); |
| if ("(" == a) return z(c, b, "parens"); |
| if ("hash" != a || /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(b.current())) { |
| if ("word" == a) D(b); |
| else if ("interpolation" == a) return z(c, b, "interpolation") |
| } else t += " error"; |
| return "prop" |
| }, E.propBlock = function (a, b, c) { |
| return "}" == a ? A(c) : "word" == a ? (t = "property", "maybeprop") : c.context.type |
| }, E.parens = function (a, b, c) { |
| return "{" == a || "}" == a ? C(a, b, c) : ")" == a ? A(c) : "(" == a ? z(c, b, "parens") : "interpolation" == a ? z(c, b, "interpolation") : ("word" == a && D(b), "parens") |
| }, E.pseudo = function (a, b, c) { |
| return "word" == a ? (t = "variable-3", c.context.type) : B(a, b, c) |
| }, E.documentTypes = function (a, b, c) { |
| return "word" == a && g.hasOwnProperty(b.current()) ? (t = "tag", c.context.type) : E.atBlock(a, b, c) |
| }, E.atBlock = function (a, b, c) { |
| if ("(" == a) return z(c, b, "atBlock_parens"); |
| if ("}" == a || ";" == a) return C(a, b, c); |
| if ("{" == a) return A(c) && z(c, b, q ? "block" : "top"); |
| if ("word" == a) { |
| var d = b.current() |
| .toLowerCase(); |
| t = "only" == d || "not" == d || "and" == d || "or" == d ? "keyword" : h.hasOwnProperty(d) ? "attribute" : i.hasOwnProperty(d) ? "property" : j.hasOwnProperty(d) ? "keyword" : k.hasOwnProperty(d) ? "property" : l.hasOwnProperty(d) ? "string-2" : p.hasOwnProperty(d) ? "atom" : o.hasOwnProperty(d) ? "keyword" : "error" |
| } |
| return c.context.type |
| }, E.atComponentBlock = function (a, b, c) { |
| return "}" == a ? C(a, b, c) : "{" == a ? A(c) && z(c, b, q ? "block" : "top", !1) : ("word" == a && (t = "error"), c.context.type) |
| }, E.atBlock_parens = function (a, b, c) { |
| return ")" == a ? A(c) : "{" == a || "}" == a ? C(a, b, c, 2) : E.atBlock(a, b, c) |
| }, E.restricted_atBlock_before = function (a, b, c) { |
| return "{" == a ? z(c, b, "restricted_atBlock") : "word" == a && "@counter-style" == c.stateArg ? (t = "variable", "restricted_atBlock_before") : B(a, b, c) |
| }, E.restricted_atBlock = function (a, b, c) { |
| return "}" == a ? (c.stateArg = null, A(c)) : "word" == a ? (t = "@font-face" == c.stateArg && !m.hasOwnProperty(b.current() |
| .toLowerCase()) || "@counter-style" == c.stateArg && !n.hasOwnProperty(b.current() |
| .toLowerCase()) ? "error" : "property", "maybeprop") : "restricted_atBlock" |
| }, E.keyframes = function (a, b, c) { |
| return "word" == a ? (t = "variable", "keyframes") : "{" == a ? z(c, b, "top") : B(a, b, c) |
| }, E.at = function (a, b, c) { |
| return ";" == a ? A(c) : "{" == a || "}" == a ? C(a, b, c) : ("word" == a ? t = "tag" : "hash" == a && (t = "builtin"), "at") |
| }, E.interpolation = function (a, b, c) { |
| return "}" == a ? A(c) : "{" == a || ";" == a ? C(a, b, c) : ("word" == a ? t = "variable" : "variable" != a && "(" != a && ")" != a && (t = "error"), "interpolation") |
| }, { |
| startState: function (a) { |
| return { |
| tokenize: null, |
| state: c.inline ? "block" : "top", |
| stateArg: null, |
| context: new y(c.inline ? "block" : "top", a || 0, null) |
| } |
| }, |
| token: function (a, b) { |
| if (!b.tokenize && a.eatSpace()) return null; |
| var c = (b.tokenize || v)(a, b); |
| return c && "object" == typeof c && (s = c[1], c = c[0]), t = c, b.state = E[b.state](s, a, b), t |
| }, |
| indent: function (a, b) { |
| var c = a.context, |
| d = b && b.charAt(0), |
| f = c.indent; |
| return "prop" != c.type || "}" != d && ")" != d || (c = c.prev), c.prev && ("}" != d || "block" != c.type && "top" != c.type && "interpolation" != c.type && "restricted_atBlock" != c.type ? (")" == d && ("parens" == c.type || "atBlock_parens" == c.type) || "{" == d && ("at" == c.type || "atBlock" == c.type)) && (f = Math.max(0, c.indent - e), c = c.prev) : (c = c.prev, f = c.indent)), f |
| }, |
| electricChars: "}", |
| blockCommentStart: "/*", |
| blockCommentEnd: "*/", |
| fold: "brace" |
| } |
| }); |
| var c = ["domain", "regexp", "url", "url-prefix"], |
| d = b(c), |
| e = ["all", "aural", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "embossed"], |
| f = b(e), |
| g = ["width", "min-width", "max-width", "height", "min-height", "max-height", "device-width", "min-device-width", "max-device-width", "device-height", "min-device-height", "max-device-height", "aspect-ratio", "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", "max-color", "color-index", "min-color-index", "max-color-index", "monochrome", "min-monochrome", "max-monochrome", "resolution", "min-resolution", "max-resolution", "scan", "grid", "orientation", "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", "pointer", "any-pointer", "hover", "any-hover"], |
| h = b(g), |
| i = ["landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", "interlace", "progressive"], |
| j = b(i), |
| k = ["align-content", "align-items", "align-self", "alignment-adjust", "alignment-baseline", "anchor-point", "animation", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "appearance", "azimuth", "backface-visibility", "background", "background-attachment", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-repeat", "background-size", "baseline-shift", "binding", "bleed", "bookmark-label", "bookmark-level", "bookmark-state", "bookmark-target", "border", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source", "border-image-width", "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width", "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", "caption-side", "clear", "clip", "color", "color-profile", "column-count", "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width", "column-span", "column-width", "columns", "content", "counter-increment", "counter-reset", "crop", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "dominant-baseline", "drop-initial-after-adjust", "drop-initial-after-align", "drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size", "drop-initial-value", "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-synthesis", "font-variant", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-position", "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-start", "grid-row", "grid-row-end", "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens", "icon", "image-orientation", "image-rendering", "image-resolution", "inline-box-align", "justify-content", "left", "letter-spacing", "line-break", "line-height", "line-stacking", "line-stacking-ruby", "line-stacking-shift", "line-stacking-strategy", "list-style", "list-style-image", "list-style-position", "list-style-type", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "marker-offset", "marks", "marquee-direction", "marquee-loop", "marquee-play-count", "marquee-speed", "marquee-style", "max-height", "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "object-fit", "object-position", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", "page", "page-break-after", "page-break-before", "page-break-inside", "page-policy", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pitch", "pitch-range", "play-during", "position", "presentation-level", "punctuation-trim", "quotes", "region-break-after", "region-break-before", "region-break-inside", "region-fragment", "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", "shape-outside", "size", "speak", "speak-as", "speak-header", "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", "tab-size", "table-layout", "target", "target-name", "target-new", "target-position", "text-align", "text-align-last", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-skip", "text-decoration-style", "text-emphasis", "text-emphasis-color", "text-emphasis-position", "text-emphasis-style", "text-height", "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", "text-wrap", "top", "transform", "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "unicode-bidi", "vertical-align", "visibility", "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", "voice-volume", "volume", "white-space", "widows", "width", "word-break", "word-spacing", "word-wrap", "z-index", "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", "color-interpolation", "color-interpolation-filters", "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", "glyph-orientation-vertical", "text-anchor", "writing-mode"], |
| l = b(k), |
| m = ["scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "zoom"], |
| n = b(m), |
| o = ["font-family", "src", "unicode-range", "font-variant", "font-feature-settings", "font-stretch", "font-weight", "font-style"], |
| p = b(o), |
| q = ["additive-symbols", "fallback", "negative", "pad", "prefix", "range", "speak-as", "suffix", "symbols", "system"], |
| r = b(q), |
| s = ["aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen"], |
| t = b(s), |
| u = ["above", "absolute", "activeborder", "additive", "activecaption", "afar", "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page", "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", "col-resize", "collapse", "column", "column-reverse", "compact", "condensed", "contain", "content", "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", "cross", "crosshair", "currentcolor", "cursive", "cyclic", "dashed", "decimal", "decimal-leading-zero", "default", "default-button", "destination-atop", "destination-in", "destination-out", "destination-over", "devanagari", "disc", "discard", "disclosure-closed", "disclosure-open", "document", "dot-dash", "dot-dot-dash", "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", "ethiopic-halehame-gez", "ethiopic-halehame-om-et", "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", "ethiopic-numeric", "ew-resize", "expanded", "extends", "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", "forwards", "from", "geometricPrecision", "georgian", "graytext", "groove", "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hebrew", "help", "hidden", "hide", "higher", "highlight", "highlighttext", "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "icon", "ignore", "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", "inline-block", "inline-flex", "inline-table", "inset", "inside", "intrinsic", "invert", "italic", "japanese-formal", "japanese-informal", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", "landscape", "lao", "large", "larger", "left", "level", "lighter", "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", "lower-roman", "lowercase", "ltr", "malayalam", "match", "matrix", "matrix3d", "media-controls-background", "media-current-time-display", "media-fullscreen-button", "media-mute-button", "media-play-button", "media-return-to-realtime-button", "media-rewind-button", "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", "media-volume-slider-container", "media-volume-sliderthumb", "medium", "menu", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", "mix", "mongolian", "monospace", "move", "multiple", "myanmar", "n-resize", "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", "radial-gradient", "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", "s-resize", "sans-serif", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "scroll", "scrollbar", "se-resize", "searchfield", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", "simp-chinese-formal", "simp-chinese-informal", "single", "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", "small", "small-caps", "small-caption", "smaller", "solid", "somali", "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square", "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "tamil", "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", "trad-chinese-formal", "trad-chinese-informal", "translate", "translate3d", "translateX", "translateY", "translateZ", "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", "xx-large", "xx-small"], |
| v = b(u), |
| w = c.concat(e) |
| .concat(g) |
| .concat(i) |
| .concat(k) |
| .concat(m) |
| .concat(s) |
| .concat(u); |
| a.registerHelper("hintWords", "css", w), a.defineMIME("text/css", { |
| documentTypes: d, |
| mediaTypes: f, |
| mediaFeatures: h, |
| mediaValueKeywords: j, |
| propertyKeywords: l, |
| nonStandardPropertyKeywords: n, |
| fontProperties: p, |
| counterDescriptors: r, |
| colorKeywords: t, |
| valueKeywords: v, |
| tokenHooks: { |
| "/": function (a, b) { |
| return a.eat("*") ? (b.tokenize = x, x(a, b)) : !1 |
| } |
| }, |
| name: "css" |
| }), a.defineMIME("text/x-scss", { |
| mediaTypes: f, |
| mediaFeatures: h, |
| mediaValueKeywords: j, |
| propertyKeywords: l, |
| nonStandardPropertyKeywords: n, |
| colorKeywords: t, |
| valueKeywords: v, |
| fontProperties: p, |
| allowNested: !0, |
| tokenHooks: { |
| "/": function (a, b) { |
| return a.eat("/") ? (a.skipToEnd(), ["comment", "comment"]) : a.eat("*") ? (b.tokenize = x, x(a, b)) : ["operator", "operator"] |
| }, |
| ":": function (a) { |
| return a.match(/\s*\{/) ? [null, "{"] : !1 |
| }, |
| $: function (a) { |
| return a.match(/^[\w-]+/), a.match(/^\s*:/, !1) ? ["variable-2", "variable-definition"] : ["variable-2", "variable"] |
| }, |
| "#": function (a) { |
| return a.eat("{") ? [null, "interpolation"] : !1 |
| } |
| }, |
| name: "css", |
| helperType: "scss" |
| }), a.defineMIME("text/x-less", { |
| mediaTypes: f, |
| mediaFeatures: h, |
| mediaValueKeywords: j, |
| propertyKeywords: l, |
| nonStandardPropertyKeywords: n, |
| colorKeywords: t, |
| valueKeywords: v, |
| fontProperties: p, |
| allowNested: !0, |
| tokenHooks: { |
| "/": function (a, b) { |
| return a.eat("/") ? (a.skipToEnd(), ["comment", "comment"]) : a.eat("*") ? (b.tokenize = x, x(a, b)) : ["operator", "operator"] |
| }, |
| "@": function (a) { |
| return a.eat("{") ? [null, "interpolation"] : a.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, !1) ? !1 : (a.eatWhile(/[\w\\\-]/), a.match(/^\s*:/, !1) ? ["variable-2", "variable-definition"] : ["variable-2", "variable"]) |
| }, |
| "&": function () { |
| return ["atom", "atom"] |
| } |
| }, |
| name: "css", |
| helperType: "less" |
| }), a.defineMIME("text/x-gss", { |
| documentTypes: d, |
| mediaTypes: f, |
| mediaFeatures: h, |
| propertyKeywords: l, |
| nonStandardPropertyKeywords: n, |
| fontProperties: p, |
| counterDescriptors: r, |
| colorKeywords: t, |
| valueKeywords: v, |
| supportsAtComponent: !0, |
| tokenHooks: { |
| "/": function (a, b) { |
| return a.eat("*") ? (b.tokenize = x, x(a, b)) : !1 |
| } |
| }, |
| name: "css", |
| helperType: "gss" |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function c(a, b, c) { |
| var d = a.current(), |
| e = d.search(b); |
| return e > -1 ? a.backUp(d.length - e) : d.match(/<\/?$/) && (a.backUp(d.length), a.match(b, !1) || a.match(d)), c |
| } |
| |
| function e(a) { |
| var b = d[a]; |
| return b ? b : d[a] = new RegExp("\\s+" + a + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*") |
| } |
| |
| function f(a, b) { |
| for (var d, c = a.pos; c >= 0 && "<" !== a.string.charAt(c);) c--; |
| return 0 > c ? c : (d = a.string.slice(c, a.pos) |
| .match(e(b))) ? d[2] : "" |
| } |
| |
| function g(a, b) { |
| return new RegExp((b ? "^" : "") + "</s*" + a + "s*>", "i") |
| } |
| |
| function h(a, b) { |
| for (var c in a) |
| for (var d = b[c] || (b[c] = []), e = a[c], f = e.length - 1; f >= 0; f--) d.unshift(e[f]) |
| } |
| |
| function i(a, b) { |
| for (var c = 0; c < a.length; c++) { |
| var d = a[c]; |
| if (!d[0] || d[1].test(f(b, d[0]))) return d[2] |
| } |
| } |
| var b = { |
| script: [["lang", /(javascript|babel)/i, "javascript"], ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"], ["type", /./, "text/plain"], [null, null, "javascript"]], |
| style: [["lang", /^css$/i, "css"], ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], ["type", /./, "text/plain"], [null, null, "css"]] |
| }, |
| d = {}; |
| a.defineMode("htmlmixed", function (d, e) { |
| function n(b, e) { |
| var m, h = e.htmlState.tagName, |
| k = h && j[h.toLowerCase()], |
| l = f.token(b, e.htmlState); |
| if (k && /\btag\b/.test(l) && ">" === b.current() && (m = i(k, b))) { |
| var o = a.getMode(d, m), |
| p = g(h, !0), |
| q = g(h, !1); |
| e.token = function (a, b) { |
| return a.match(p, !1) ? (b.token = n, b.localState = b.localMode = null, null) : c(a, q, b.localMode.token(a, b.localState)) |
| }, e.localMode = o, e.localState = a.startState(o, f.indent(e.htmlState, "")) |
| } |
| return l |
| } |
| var f = a.getMode(d, { |
| name: "xml", |
| htmlMode: !0, |
| multilineTagIndentFactor: e.multilineTagIndentFactor, |
| multilineTagIndentPastTag: e.multilineTagIndentPastTag |
| }), |
| j = {}, |
| k = e && e.tags, |
| l = e && e.scriptTypes; |
| if (h(b, j), k && h(k, j), l) |
| for (var m = l.length - 1; m >= 0; m--) j.script.unshift(["type", l[m].matches, l[m].mode]); |
| return { |
| startState: function () { |
| var a = f.startState(); |
| return { |
| token: n, |
| localMode: null, |
| localState: null, |
| htmlState: a |
| } |
| }, |
| copyState: function (b) { |
| var c; |
| return b.localState && (c = a.copyState(b.localMode, b.localState)), { |
| token: b.token, |
| localMode: b.localMode, |
| localState: c, |
| htmlState: a.copyState(f, b.htmlState) |
| } |
| }, |
| token: function (a, b) { |
| return b.token(a, b) |
| }, |
| indent: function (b, c) { |
| return !b.localMode || /^\s*<\//.test(c) ? f.indent(b.htmlState, c) : b.localMode.indent ? b.localMode.indent(b.localState, c) : a.Pass |
| }, |
| innerMode: function (a) { |
| return { |
| state: a.localState || a.htmlState, |
| mode: a.localMode || f |
| } |
| } |
| } |
| }, "xml", "javascript", "css"), a.defineMIME("text/html", "htmlmixed") |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| a.defineMode("javascript", function (b, c) { |
| function m(a) { |
| for (var c, b = !1, d = !1; null != (c = a.next());) { |
| if (!b) { |
| if ("/" == c && !d) return; |
| "[" == c ? d = !0 : d && "]" == c && (d = !1) |
| } |
| b = !b && "\\" == c |
| } |
| } |
| |
| function p(a, b, c) { |
| return n = a, o = c, b |
| } |
| |
| function q(a, b) { |
| var c = a.next(); |
| if ('"' == c || "'" == c) return b.tokenize = r(c), b.tokenize(a, b); |
| if ("." == c && a.match(/^\d+(?:[eE][+\-]?\d+)?/)) return p("number", "number"); |
| if ("." == c && a.match("..")) return p("spread", "meta"); |
| if (/[\[\]{}\(\),;\:\.]/.test(c)) return p(c); |
| if ("=" == c && a.eat(">")) return p("=>", "operator"); |
| if ("0" == c && a.eat(/x/i)) return a.eatWhile(/[\da-f]/i), p("number", "number"); |
| if (/\d/.test(c)) return a.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/), p("number", "number"); |
| if ("/" == c) return a.eat("*") ? (b.tokenize = s, s(a, b)) : a.eat("/") ? (a.skipToEnd(), p("comment", "comment")) : "operator" == b.lastType || "keyword c" == b.lastType || "sof" == b.lastType || /^[\[{}\(,;:]$/.test(b.lastType) ? (m(a), a.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/), p("regexp", "string-2")) : (a.eatWhile(k), p("operator", "operator", a.current())); |
| if ("`" == c) return b.tokenize = t, t(a, b); |
| if ("#" == c) return a.skipToEnd(), p("error", "error"); |
| if (k.test(c)) return a.eatWhile(k), p("operator", "operator", a.current()); |
| if (i.test(c)) { |
| a.eatWhile(i); |
| var d = a.current(), |
| e = j.propertyIsEnumerable(d) && j[d]; |
| return e && "." != b.lastType ? p(e.type, e.style, d) : p("variable", "variable", d) |
| } |
| } |
| |
| function r(a) { |
| return function (b, c) { |
| var e, d = !1; |
| if (f && "@" == b.peek() && b.match(l)) return c.tokenize = q, p("jsonld-keyword", "meta"); |
| for (; null != (e = b.next()) && (e != a || d);) d = !d && "\\" == e; |
| return d || (c.tokenize = q), p("string", "string") |
| } |
| } |
| |
| function s(a, b) { |
| for (var d, c = !1; d = a.next();) { |
| if ("/" == d && c) { |
| b.tokenize = q; |
| break |
| } |
| c = "*" == d |
| } |
| return p("comment", "comment") |
| } |
| |
| function t(a, b) { |
| for (var d, c = !1; null != (d = a.next());) { |
| if (!c && ("`" == d || "$" == d && a.eat("{"))) { |
| b.tokenize = q; |
| break |
| } |
| c = !c && "\\" == d |
| } |
| return p("quasi", "string-2", a.current()) |
| } |
| |
| function v(a, b) { |
| b.fatArrowAt && (b.fatArrowAt = null); |
| var c = a.string.indexOf("=>", a.start); |
| if (!(0 > c)) { |
| for (var d = 0, e = !1, f = c - 1; f >= 0; --f) { |
| var g = a.string.charAt(f), |
| h = u.indexOf(g); |
| if (h >= 0 && 3 > h) { |
| if (!d) { |
| ++f; |
| break |
| } |
| if (0 == --d) break |
| } else if (h >= 3 && 6 > h) ++d; |
| else if (i.test(g)) e = !0; |
| else { |
| if (/["'\/]/.test(g)) return; |
| if (e && !d) { |
| ++f; |
| break |
| } |
| } |
| } |
| e && !d && (b.fatArrowAt = f) |
| } |
| } |
| |
| function x(a, b, c, d, e, f) { |
| this.indented = a, this.column = b, this.type = c, this.prev = e, this.info = f, null != d && (this.align = d) |
| } |
| |
| function y(a, b) { |
| for (var c = a.localVars; c; c = c.next) |
| if (c.name == b) return !0; |
| for (var d = a.context; d; d = d.prev) |
| for (var c = d.vars; c; c = c.next) |
| if (c.name == b) return !0 |
| } |
| |
| function z(a, b, c, d, e) { |
| var f = a.cc; |
| for (A.state = a, A.stream = e, A.marked = null, A.cc = f, A.style = b, a.lexical.hasOwnProperty("align") || (a.lexical.align = !0);;) { |
| var h = f.length ? f.pop() : g ? L : K; |
| if (h(c, d)) { |
| for (; f.length && f[f.length - 1].lex;) f.pop()(); |
| return A.marked ? A.marked : "variable" == c && y(a, d) ? "variable-2" : b |
| } |
| } |
| } |
| |
| function B() { |
| for (var a = arguments.length - 1; a >= 0; a--) A.cc.push(arguments[a]) |
| } |
| |
| function C() { |
| return B.apply(null, arguments), !0 |
| } |
| |
| function D(a) { |
| function b(b) { |
| for (var c = b; c; c = c.next) |
| if (c.name == a) return !0; |
| return !1 |
| } |
| var d = A.state; |
| if (d.context) { |
| if (A.marked = "def", b(d.localVars)) return; |
| d.localVars = { |
| name: a, |
| next: d.localVars |
| } |
| } else { |
| if (b(d.globalVars)) return; |
| c.globalVars && (d.globalVars = { |
| name: a, |
| next: d.globalVars |
| }) |
| } |
| } |
| |
| function F() { |
| A.state.context = { |
| prev: A.state.context, |
| vars: A.state.localVars |
| }, A.state.localVars = E |
| } |
| |
| function G() { |
| A.state.localVars = A.state.context.vars, A.state.context = A.state.context.prev |
| } |
| |
| function H(a, b) { |
| var c = function () { |
| var c = A.state, |
| d = c.indented; |
| if ("stat" == c.lexical.type) d = c.lexical.indented; |
| else |
| for (var e = c.lexical; e && ")" == e.type && e.align; e = e.prev) d = e.indented; |
| c.lexical = new x(d, A.stream.column(), a, null, c.lexical, b) |
| }; |
| return c.lex = !0, c |
| } |
| |
| function I() { |
| var a = A.state; |
| a.lexical.prev && (")" == a.lexical.type && (a.indented = a.lexical.indented), a.lexical = a.lexical.prev) |
| } |
| |
| function J(a) { |
| function b(c) { |
| return c == a ? C() : ";" == a ? B() : C(b) |
| } |
| return b |
| } |
| |
| function K(a, b) { |
| return "var" == a ? C(H("vardef", b.length), fa, J(";"), I) : "keyword a" == a ? C(H("form"), L, K, I) : "keyword b" == a ? C(H("form"), K, I) : "{" == a ? C(H("}"), ba, I) : ";" == a ? C() : "if" == a ? ("else" == A.state.lexical.info && A.state.cc[A.state.cc.length - 1] == I && A.state.cc.pop()(), C(H("form"), L, K, I, ka)) : "function" == a ? C(qa) : "for" == a ? C(H("form"), la, K, I) : "variable" == a ? C(H("stat"), W) : "switch" == a ? C(H("form"), L, H("}", "switch"), J("{"), ba, I, I) : "case" == a ? C(L, J(":")) : "default" == a ? C(J(":")) : "catch" == a ? C(H("form"), F, J("("), ra, J(")"), K, I, G) : "class" == a ? C(H("form"), sa, I) : "export" == a ? C(H("form"), wa, I) : "import" == a ? C(H("form"), xa, I) : B(H("stat"), L, J(";"), I) |
| } |
| |
| function L(a) { |
| return N(a, !1) |
| } |
| |
| function M(a) { |
| return N(a, !0) |
| } |
| |
| function N(a, b) { |
| if (A.state.fatArrowAt == A.stream.start) { |
| var c = b ? V : U; |
| if ("(" == a) return C(F, H(")"), _(ga, ")"), I, J("=>"), c, G); |
| if ("variable" == a) return B(F, ga, J("=>"), c, G) |
| } |
| var d = b ? R : Q; |
| return w.hasOwnProperty(a) ? C(d) : "async" == a ? C(L) : "function" == a ? C(qa, d) : "keyword c" == a ? C(b ? P : O) : "(" == a ? C(H(")"), O, Da, J(")"), I, d) : "operator" == a || "spread" == a ? C(b ? M : L) : "[" == a ? C(H("]"), Ba, I, d) : "{" == a ? aa(Y, "}", null, d) : "quasi" == a ? B(S, d) : C() |
| } |
| |
| function O(a) { |
| return a.match(/[;\}\)\],]/) ? B() : B(L) |
| } |
| |
| function P(a) { |
| return a.match(/[;\}\)\],]/) ? B() : B(M) |
| } |
| |
| function Q(a, b) { |
| return "," == a ? C(L) : R(a, b, !1) |
| } |
| |
| function R(a, b, c) { |
| var d = 0 == c ? Q : R, |
| e = 0 == c ? L : M; |
| return "=>" == a ? C(F, c ? V : U, G) : "operator" == a ? /\+\+|--/.test(b) ? C(d) : "?" == b ? C(L, J(":"), e) : C(e) : "quasi" == a ? B(S, d) : ";" != a ? "(" == a ? aa(M, ")", "call", d) : "." == a ? C(X, d) : "[" == a ? C(H("]"), O, J("]"), I, d) : void 0 : void 0 |
| } |
| |
| function S(a, b) { |
| return "quasi" != a ? B() : "${" != b.slice(b.length - 2) ? C(S) : C(L, T) |
| } |
| |
| function T(a) { |
| return "}" == a ? (A.marked = "string-2", A.state.tokenize = t, C(S)) : void 0 |
| } |
| |
| function U(a) { |
| return v(A.stream, A.state), B("{" == a ? K : L) |
| } |
| |
| function V(a) { |
| return v(A.stream, A.state), B("{" == a ? K : M) |
| } |
| |
| function W(a) { |
| return ":" == a ? C(I, K) : B(Q, J(";"), I) |
| } |
| |
| function X(a) { |
| return "variable" == a ? (A.marked = "property", C()) : void 0 |
| } |
| |
| function Y(a, b) { |
| return "async" == a ? C(Y) : "variable" == a || "keyword" == A.style ? (A.marked = "property", C("get" == b || "set" == b ? Z : $)) : "number" == a || "string" == a ? (A.marked = f ? "property" : A.style + " property", C($)) : "jsonld-keyword" == a ? C($) : "[" == a ? C(L, J("]"), $) : void 0 |
| } |
| |
| function Z(a) { |
| return "variable" != a ? B($) : (A.marked = "property", C(qa)) |
| } |
| |
| function $(a) { |
| return ":" == a ? C(M) : "(" == a ? B(qa) : void 0 |
| } |
| |
| function _(a, b) { |
| function c(d) { |
| if ("," == d) { |
| var e = A.state.lexical; |
| return "call" == e.info && (e.pos = (e.pos || 0) + 1), C(a, c) |
| } |
| return d == b ? C() : C(J(b)) |
| } |
| return function (d) { |
| return d == b ? C() : B(a, c) |
| } |
| } |
| |
| function aa(a, b, c) { |
| for (var d = 3; d < arguments.length; d++) A.cc.push(arguments[d]); |
| return C(H(b, c), _(a, b), I) |
| } |
| |
| function ba(a) { |
| return "}" == a ? C() : B(K, ba) |
| } |
| |
| function ca(a) { |
| return h && ":" == a ? C(ea) : void 0 |
| } |
| |
| function da(a, b) { |
| return "=" == b ? C(M) : void 0 |
| } |
| |
| function ea(a) { |
| return "variable" == a ? (A.marked = "variable-3", C()) : void 0 |
| } |
| |
| function fa() { |
| return B(ga, ca, ia, ja) |
| } |
| |
| function ga(a, b) { |
| return "variable" == a ? (D(b), C()) : "[" == a ? aa(ga, "]") : "{" == a ? aa(ha, "}") : void 0 |
| } |
| |
| function ha(a, b) { |
| return "variable" != a || A.stream.match(/^\s*:/, !1) ? ("variable" == a && (A.marked = "property"), C(J(":"), ga, ia)) : (D(b), C(ia)) |
| } |
| |
| function ia(a, b) { |
| return "=" == b ? C(M) : void 0 |
| } |
| |
| function ja(a) { |
| return "," == a ? C(fa) : void 0 |
| } |
| |
| function ka(a, b) { |
| return "keyword b" == a && "else" == b ? C(H("form", "else"), K, I) : void 0 |
| } |
| |
| function la(a) { |
| return "(" == a ? C(H(")"), ma, J(")"), I) : void 0 |
| } |
| |
| function ma(a) { |
| return "var" == a ? C(fa, J(";"), oa) : ";" == a ? C(oa) : "variable" == a ? C(na) : B(L, J(";"), oa) |
| } |
| |
| function na(a, b) { |
| return "in" == b || "of" == b ? (A.marked = "keyword", C(L)) : C(Q, oa) |
| } |
| |
| function oa(a, b) { |
| return ";" == a ? C(pa) : "in" == b || "of" == b ? (A.marked = "keyword", C(L)) : B(L, J(";"), pa) |
| } |
| |
| function pa(a) { |
| ")" != a && C(L) |
| } |
| |
| function qa(a, b) { |
| return "*" == b ? (A.marked = "keyword", C(qa)) : "variable" == a ? (D(b), C(qa)) : "(" == a ? C(F, H(")"), _(ra, ")"), I, K, G) : void 0 |
| } |
| |
| function ra(a) { |
| return "spread" == a ? C(ra) : B(ga, ca, da) |
| } |
| |
| function sa(a, b) { |
| return "variable" == a ? (D(b), C(ta)) : void 0 |
| } |
| |
| function ta(a, b) { |
| return "extends" == b ? C(L, ta) : "{" == a ? C(H("}"), ua, I) : void 0 |
| } |
| |
| function ua(a, b) { |
| return "variable" == a || "keyword" == A.style ? "static" == b ? (A.marked = "keyword", C(ua)) : (A.marked = "property", "get" == b || "set" == b ? C(va, qa, ua) : C(qa, ua)) : "*" == b ? (A.marked = "keyword", C(ua)) : ";" == a ? C(ua) : "}" == a ? C() : void 0 |
| } |
| |
| function va(a) { |
| return "variable" != a ? B() : (A.marked = "property", C()) |
| } |
| |
| function wa(a, b) { |
| return "*" == b ? (A.marked = "keyword", C(Aa, J(";"))) : "default" == b ? (A.marked = "keyword", C(L, J(";"))) : B(K) |
| } |
| |
| function xa(a) { |
| return "string" == a ? C() : B(ya, Aa) |
| } |
| |
| function ya(a, b) { |
| return "{" == a ? aa(ya, "}") : ("variable" == a && D(b), "*" == b && (A.marked = "keyword"), C(za)) |
| } |
| |
| function za(a, b) { |
| return "as" == b ? (A.marked = "keyword", C(ya)) : void 0 |
| } |
| |
| function Aa(a, b) { |
| return "from" == b ? (A.marked = "keyword", C(L)) : void 0 |
| } |
| |
| function Ba(a) { |
| return "]" == a ? C() : B(M, Ca) |
| } |
| |
| function Ca(a) { |
| return "for" == a ? B(Da, J("]")) : "," == a ? C(_(P, "]")) : B(_(M, "]")) |
| } |
| |
| function Da(a) { |
| return "for" == a ? C(la, Da) : "if" == a ? C(L, Da) : void 0 |
| } |
| |
| function Ea(a, b) { |
| return "operator" == a.lastType || "," == a.lastType || k.test(b.charAt(0)) || /[,.]/.test(b.charAt(0)) |
| } |
| var n, o, d = b.indentUnit, |
| e = c.statementIndent, |
| f = c.jsonld, |
| g = c.json || f, |
| h = c.typescript, |
| i = c.wordCharacters || /[\w$\xa1-\uffff]/, |
| j = function () { |
| function a(a) { |
| return { |
| type: a, |
| style: "keyword" |
| } |
| } |
| var b = a("keyword a"), |
| c = a("keyword b"), |
| d = a("keyword c"), |
| e = a("operator"), |
| f = { |
| type: "atom", |
| style: "atom" |
| }, |
| g = { |
| "if": a("if"), |
| "while": b, |
| "with": b, |
| "else": c, |
| "do": c, |
| "try": c, |
| "finally": c, |
| "return": d, |
| "break": d, |
| "continue": d, |
| "new": d, |
| "delete": d, |
| "throw": d, |
| "debugger": d, |
| "var": a("var"), |
| "const": a("var"), |
| let: a("var"), |
| async: a("async"), |
| "function": a("function"), |
| "catch": a("catch"), |
| "for": a("for"), |
| "switch": a("switch"), |
| "case": a("case"), |
| "default": a("default"), |
| "in": e, |
| "typeof": e, |
| "instanceof": e, |
| "true": f, |
| "false": f, |
| "null": f, |
| undefined: f, |
| NaN: f, |
| Infinity: f, |
| "this": a("this"), |
| "class": a("class"), |
| "super": a("atom"), |
| await: d, |
| "yield": d, |
| "export": a("export"), |
| "import": a("import"), |
| "extends": d |
| }; |
| if (h) { |
| var i = { |
| type: "variable", |
| style: "variable-3" |
| }, |
| j = { |
| "interface": a("interface"), |
| "extends": a("extends"), |
| constructor: a("constructor"), |
| "public": a("public"), |
| "private": a("private"), |
| "protected": a("protected"), |
| "static": a("static"), |
| string: i, |
| number: i, |
| bool: i, |
| any: i |
| }; |
| for (var k in j) g[k] = j[k] |
| } |
| return g |
| }(), |
| k = /[+\-*&%=<>!?|~^]/, |
| l = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/, |
| u = "([{}])", |
| w = { |
| atom: !0, |
| number: !0, |
| variable: !0, |
| string: !0, |
| regexp: !0, |
| "this": !0, |
| "jsonld-keyword": !0 |
| }, |
| A = { |
| state: null, |
| column: null, |
| marked: null, |
| cc: null |
| }, |
| E = { |
| name: "this", |
| next: { |
| name: "arguments" |
| } |
| }; |
| return I.lex = !0, { |
| startState: function (a) { |
| var b = { |
| tokenize: q, |
| lastType: "sof", |
| cc: [], |
| lexical: new x((a || 0) - d, 0, "block", !1), |
| localVars: c.localVars, |
| context: c.localVars && { |
| vars: c.localVars |
| }, |
| indented: 0 |
| }; |
| return c.globalVars && "object" == typeof c.globalVars && (b.globalVars = c.globalVars), b |
| }, |
| token: function (a, b) { |
| if (a.sol() && (b.lexical.hasOwnProperty("align") || (b.lexical.align = !1), b.indented = a.indentation(), v(a, b)), b.tokenize != s && a.eatSpace()) return null; |
| var c = b.tokenize(a, b); |
| return "comment" == n ? c : (b.lastType = "operator" != n || "++" != o && "--" != o ? n : "incdec", z(b, c, n, o, a)) |
| }, |
| indent: function (b, f) { |
| if (b.tokenize == s) return a.Pass; |
| if (b.tokenize != q) return 0; |
| var g = f && f.charAt(0), |
| h = b.lexical; |
| if (!/^\s*else\b/.test(f)) |
| for (var i = b.cc.length - 1; i >= 0; --i) { |
| var j = b.cc[i]; |
| if (j == I) h = h.prev; |
| else if (j != ka) break |
| } |
| "stat" == h.type && "}" == g && (h = h.prev), e && ")" == h.type && "stat" == h.prev.type && (h = h.prev); |
| var k = h.type, |
| l = g == k; |
| return "vardef" == k ? h.indented + ("operator" == b.lastType || "," == b.lastType ? h.info + 1 : 0) : "form" == k && "{" == g ? h.indented : "form" == k ? h.indented + d : "stat" == k ? h.indented + (Ea(b, f) ? e || d : 0) : "switch" != h.info || l || 0 == c.doubleIndentSwitch ? h.align ? h.column + (l ? 0 : 1) : h.indented + (l ? 0 : d) : h.indented + (/^(?:case|default)\b/.test(f) ? d : 2 * d) |
| }, |
| electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, |
| blockCommentStart: g ? null : "/*", |
| blockCommentEnd: g ? null : "*/", |
| lineComment: g ? null : "//", |
| fold: "brace", |
| closeBrackets: "()[]{}''\"\"``", |
| helperType: g ? "json" : "javascript", |
| jsonldMode: f, |
| jsonMode: g |
| } |
| }), a.registerHelper("wordChars", "javascript", /[\w$]/), a.defineMIME("text/javascript", "javascript"), a.defineMIME("text/ecmascript", "javascript"), a.defineMIME("application/javascript", "javascript"), |
| a.defineMIME("application/x-javascript", "javascript"), a.defineMIME("application/ecmascript", "javascript"), a.defineMIME("application/json", { |
| name: "javascript", |
| json: !0 |
| }), a.defineMIME("application/x-json", { |
| name: "javascript", |
| json: !0 |
| }), a.defineMIME("application/ld+json", { |
| name: "javascript", |
| jsonld: !0 |
| }), a.defineMIME("text/typescript", { |
| name: "javascript", |
| typescript: !0 |
| }), a.defineMIME("application/typescript", { |
| name: "javascript", |
| typescript: !0 |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function b(a, b) { |
| return a.string.charAt(a.pos + (b || 0)) |
| } |
| |
| function c(a, b) { |
| if (b) { |
| var c = a.pos - b; |
| return a.string.substr(c >= 0 ? c : 0, b) |
| } |
| return a.string.substr(0, a.pos - 1) |
| } |
| |
| function d(a, b) { |
| var c = a.string.length, |
| d = c - a.pos + 1; |
| return a.string.substr(a.pos, b && c > b ? b : d) |
| } |
| |
| function e(a, b) { |
| var d, c = a.pos + b; |
| 0 >= c ? a.pos = 0 : c >= (d = a.string.length - 1) ? a.pos = d : a.pos = c |
| } |
| a.defineMode("perl", function () { |
| function h(a, b, c, d, e) { |
| return b.chain = null, b.style = null, b.tail = null, b.tokenize = function (a, b) { |
| for (var g, f = !1, h = 0; g = a.next();) { |
| if (g === c[h] && !f) return void 0 !== c[++h] ? (b.chain = c[h], b.style = d, b.tail = e) : e && a.eatWhile(e), b.tokenize = j, d; |
| f = !f && "\\" == g |
| } |
| return d |
| }, b.tokenize(a, b) |
| } |
| |
| function i(a, b, c) { |
| return b.tokenize = function (a, b) { |
| return a.string == c && (b.tokenize = j), a.skipToEnd(), "string" |
| }, b.tokenize(a, b) |
| } |
| |
| function j(j, k) { |
| if (j.eatSpace()) return null; |
| if (k.chain) return h(j, k, k.chain, k.style, k.tail); |
| if (j.match(/^\-?[\d\.]/, !1) && j.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) return "number"; |
| if (j.match(/^<<(?=\w)/)) return j.eatWhile(/\w/), i(j, k, j.current() |
| .substr(2)); |
| if (j.sol() && j.match(/^\=item(?!\w)/)) return i(j, k, "=cut"); |
| var l = j.next(); |
| if ('"' == l || "'" == l) { |
| if (c(j, 3) == "<<" + l) { |
| var m = j.pos; |
| j.eatWhile(/\w/); |
| var n = j.current() |
| .substr(1); |
| if (n && j.eat(l)) return i(j, k, n); |
| j.pos = m |
| } |
| return h(j, k, [l], "string") |
| } |
| if ("q" == l) { |
| var o = b(j, -2); |
| if (!o || !/\w/.test(o)) |
| if (o = b(j, 0), "x" == o) { |
| if (o = b(j, 1), "(" == o) return e(j, 2), h(j, k, [")"], f, g); |
| if ("[" == o) return e(j, 2), h(j, k, ["]"], f, g); |
| if ("{" == o) return e(j, 2), h(j, k, ["}"], f, g); |
| if ("<" == o) return e(j, 2), h(j, k, [">"], f, g); |
| if (/[\^'"!~\/]/.test(o)) return e(j, 1), h(j, k, [j.eat(o)], f, g) |
| } else if ("q" == o) { |
| if (o = b(j, 1), "(" == o) return e(j, 2), h(j, k, [")"], "string"); |
| if ("[" == o) return e(j, 2), h(j, k, ["]"], "string"); |
| if ("{" == o) return e(j, 2), h(j, k, ["}"], "string"); |
| if ("<" == o) return e(j, 2), h(j, k, [">"], "string"); |
| if (/[\^'"!~\/]/.test(o)) return e(j, 1), h(j, k, [j.eat(o)], "string") |
| } else if ("w" == o) { |
| if (o = b(j, 1), "(" == o) return e(j, 2), h(j, k, [")"], "bracket"); |
| if ("[" == o) return e(j, 2), h(j, k, ["]"], "bracket"); |
| if ("{" == o) return e(j, 2), h(j, k, ["}"], "bracket"); |
| if ("<" == o) return e(j, 2), h(j, k, [">"], "bracket"); |
| if (/[\^'"!~\/]/.test(o)) return e(j, 1), h(j, k, [j.eat(o)], "bracket") |
| } else if ("r" == o) { |
| if (o = b(j, 1), "(" == o) return e(j, 2), h(j, k, [")"], f, g); |
| if ("[" == o) return e(j, 2), h(j, k, ["]"], f, g); |
| if ("{" == o) return e(j, 2), h(j, k, ["}"], f, g); |
| if ("<" == o) return e(j, 2), h(j, k, [">"], f, g); |
| if (/[\^'"!~\/]/.test(o)) return e(j, 1), h(j, k, [j.eat(o)], f, g) |
| } else if (/[\^'"!~\/(\[{<]/.test(o)) { |
| if ("(" == o) return e(j, 1), h(j, k, [")"], "string"); |
| if ("[" == o) return e(j, 1), h(j, k, ["]"], "string"); |
| if ("{" == o) return e(j, 1), h(j, k, ["}"], "string"); |
| if ("<" == o) return e(j, 1), h(j, k, [">"], "string"); |
| if (/[\^'"!~\/]/.test(o)) return h(j, k, [j.eat(o)], "string") |
| } |
| } |
| if ("m" == l) { |
| var o = b(j, -2); |
| if ((!o || !/\w/.test(o)) && (o = j.eat(/[(\[{<\^'"!~\/]/))) { |
| if (/[\^'"!~\/]/.test(o)) return h(j, k, [o], f, g); |
| if ("(" == o) return h(j, k, [")"], f, g); |
| if ("[" == o) return h(j, k, ["]"], f, g); |
| if ("{" == o) return h(j, k, ["}"], f, g); |
| if ("<" == o) return h(j, k, [">"], f, g) |
| } |
| } |
| if ("s" == l) { |
| var o = /[\/>\]})\w]/.test(b(j, -2)); |
| if (!o && (o = j.eat(/[(\[{<\^'"!~\/]/))) return "[" == o ? h(j, k, ["]", "]"], f, g) : "{" == o ? h(j, k, ["}", "}"], f, g) : "<" == o ? h(j, k, [">", ">"], f, g) : "(" == o ? h(j, k, [")", ")"], f, g) : h(j, k, [o, o], f, g) |
| } |
| if ("y" == l) { |
| var o = /[\/>\]})\w]/.test(b(j, -2)); |
| if (!o && (o = j.eat(/[(\[{<\^'"!~\/]/))) return "[" == o ? h(j, k, ["]", "]"], f, g) : "{" == o ? h(j, k, ["}", "}"], f, g) : "<" == o ? h(j, k, [">", ">"], f, g) : "(" == o ? h(j, k, [")", ")"], f, g) : h(j, k, [o, o], f, g) |
| } |
| if ("t" == l) { |
| var o = /[\/>\]})\w]/.test(b(j, -2)); |
| if (!o && (o = j.eat("r"), o && (o = j.eat(/[(\[{<\^'"!~\/]/)))) return "[" == o ? h(j, k, ["]", "]"], f, g) : "{" == o ? h(j, k, ["}", "}"], f, g) : "<" == o ? h(j, k, [">", ">"], f, g) : "(" == o ? h(j, k, [")", ")"], f, g) : h(j, k, [o, o], f, g) |
| } |
| if ("`" == l) return h(j, k, [l], "variable-2"); |
| if ("/" == l) return /~\s*$/.test(c(j)) ? h(j, k, [l], f, g) : "operator"; |
| if ("$" == l) { |
| var m = j.pos; |
| if (j.eatWhile(/\d/) || j.eat("{") && j.eatWhile(/\d/) && j.eat("}")) return "variable-2"; |
| j.pos = m |
| } |
| if (/[$@%]/.test(l)) { |
| var m = j.pos; |
| if (j.eat("^") && j.eat(/[A-Z]/) || !/[@$%&]/.test(b(j, -2)) && j.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)) { |
| var o = j.current(); |
| if (a[o]) return "variable-2" |
| } |
| j.pos = m |
| } |
| if (/[$@%&]/.test(l) && (j.eatWhile(/[\w$\[\]]/) || j.eat("{") && j.eatWhile(/[\w$\[\]]/) && j.eat("}"))) { |
| var o = j.current(); |
| return a[o] ? "variable-2" : "variable" |
| } |
| if ("#" == l && "$" != b(j, -2)) return j.skipToEnd(), "comment"; |
| if (/[:+\-\^*$&%@=<>!?|\/~\.]/.test(l)) { |
| var m = j.pos; |
| if (j.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/), a[j.current()]) return "operator"; |
| j.pos = m |
| } |
| if ("_" == l && 1 == j.pos) { |
| if ("_END__" == d(j, 6)) return h(j, k, ["\x00"], "comment"); |
| if ("_DATA__" == d(j, 7)) return h(j, k, ["\x00"], "variable-2"); |
| if ("_C__" == d(j, 7)) return h(j, k, ["\x00"], "string") |
| } |
| if (/\w/.test(l)) { |
| var m = j.pos; |
| if ("{" == b(j, -2) && ("}" == b(j, 0) || j.eatWhile(/\w/) && "}" == b(j, 0))) return "string"; |
| j.pos = m |
| } |
| if (/[A-Z]/.test(l)) { |
| var p = b(j, -2), |
| m = j.pos; |
| if (j.eatWhile(/[A-Z_]/), !/[\da-z]/.test(b(j, 0))) { |
| var o = a[j.current()]; |
| return o ? (o[1] && (o = o[0]), ":" != p ? 1 == o ? "keyword" : 2 == o ? "def" : 3 == o ? "atom" : 4 == o ? "operator" : 5 == o ? "variable-2" : "meta" : "meta") : "meta" |
| } |
| j.pos = m |
| } |
| if (/[a-zA-Z_]/.test(l)) { |
| var p = b(j, -2); |
| j.eatWhile(/\w/); |
| var o = a[j.current()]; |
| return o ? (o[1] && (o = o[0]), ":" != p ? 1 == o ? "keyword" : 2 == o ? "def" : 3 == o ? "atom" : 4 == o ? "operator" : 5 == o ? "variable-2" : "meta" : "meta") : "meta" |
| } |
| return null |
| } |
| var a = { |
| "->": 4, |
| "++": 4, |
| "--": 4, |
| "**": 4, |
| "=~": 4, |
| "!~": 4, |
| "*": 4, |
| "/": 4, |
| "%": 4, |
| x: 4, |
| "+": 4, |
| "-": 4, |
| ".": 4, |
| "<<": 4, |
| ">>": 4, |
| "<": 4, |
| ">": 4, |
| "<=": 4, |
| ">=": 4, |
| lt: 4, |
| gt: 4, |
| le: 4, |
| ge: 4, |
| "==": 4, |
| "!=": 4, |
| "<=>": 4, |
| eq: 4, |
| ne: 4, |
| cmp: 4, |
| "~~": 4, |
| "&": 4, |
| "|": 4, |
| "^": 4, |
| "&&": 4, |
| "||": 4, |
| "//": 4, |
| "..": 4, |
| "...": 4, |
| "?": 4, |
| ":": 4, |
| "=": 4, |
| "+=": 4, |
| "-=": 4, |
| "*=": 4, |
| ",": 4, |
| "=>": 4, |
| "::": 4, |
| not: 4, |
| and: 4, |
| or: 4, |
| xor: 4, |
| BEGIN: [5, 1], |
| END: [5, 1], |
| PRINT: [5, 1], |
| PRINTF: [5, 1], |
| GETC: [5, 1], |
| READ: [5, 1], |
| READLINE: [5, 1], |
| DESTROY: [5, 1], |
| TIE: [5, 1], |
| TIEHANDLE: [5, 1], |
| UNTIE: [5, 1], |
| STDIN: 5, |
| STDIN_TOP: 5, |
| STDOUT: 5, |
| STDOUT_TOP: 5, |
| STDERR: 5, |
| STDERR_TOP: 5, |
| $ARG: 5, |
| $_: 5, |
| "@ARG": 5, |
| "@_": 5, |
| $LIST_SEPARATOR: 5, |
| '$"': 5, |
| $PROCESS_ID: 5, |
| $PID: 5, |
| $$: 5, |
| $REAL_GROUP_ID: 5, |
| $GID: 5, |
| "$(": 5, |
| $EFFECTIVE_GROUP_ID: 5, |
| $EGID: 5, |
| "$)": 5, |
| $PROGRAM_NAME: 5, |
| $0: 5, |
| $SUBSCRIPT_SEPARATOR: 5, |
| $SUBSEP: 5, |
| "$;": 5, |
| $REAL_USER_ID: 5, |
| $UID: 5, |
| "$<": 5, |
| $EFFECTIVE_USER_ID: 5, |
| $EUID: 5, |
| "$>": 5, |
| $a: 5, |
| $b: 5, |
| $COMPILING: 5, |
| "$^C": 5, |
| $DEBUGGING: 5, |
| "$^D": 5, |
| "${^ENCODING}": 5, |
| $ENV: 5, |
| "%ENV": 5, |
| $SYSTEM_FD_MAX: 5, |
| "$^F": 5, |
| "@F": 5, |
| "${^GLOBAL_PHASE}": 5, |
| "$^H": 5, |
| "%^H": 5, |
| "@INC": 5, |
| "%INC": 5, |
| $INPLACE_EDIT: 5, |
| "$^I": 5, |
| "$^M": 5, |
| $OSNAME: 5, |
| "$^O": 5, |
| "${^OPEN}": 5, |
| $PERLDB: 5, |
| "$^P": 5, |
| $SIG: 5, |
| "%SIG": 5, |
| $BASETIME: 5, |
| "$^T": 5, |
| "${^TAINT}": 5, |
| "${^UNICODE}": 5, |
| "${^UTF8CACHE}": 5, |
| "${^UTF8LOCALE}": 5, |
| $PERL_VERSION: 5, |
| "$^V": 5, |
| "${^WIN32_SLOPPY_STAT}": 5, |
| $EXECUTABLE_NAME: 5, |
| "$^X": 5, |
| $1: 5, |
| $MATCH: 5, |
| "$&": 5, |
| "${^MATCH}": 5, |
| $PREMATCH: 5, |
| "$`": 5, |
| "${^PREMATCH}": 5, |
| $POSTMATCH: 5, |
| "$'": 5, |
| "${^POSTMATCH}": 5, |
| $LAST_PAREN_MATCH: 5, |
| "$+": 5, |
| $LAST_SUBMATCH_RESULT: 5, |
| "$^N": 5, |
| "@LAST_MATCH_END": 5, |
| "@+": 5, |
| "%LAST_PAREN_MATCH": 5, |
| "%+": 5, |
| "@LAST_MATCH_START": 5, |
| "@-": 5, |
| "%LAST_MATCH_START": 5, |
| "%-": 5, |
| $LAST_REGEXP_CODE_RESULT: 5, |
| "$^R": 5, |
| "${^RE_DEBUG_FLAGS}": 5, |
| "${^RE_TRIE_MAXBUF}": 5, |
| $ARGV: 5, |
| "@ARGV": 5, |
| ARGV: 5, |
| ARGVOUT: 5, |
| $OUTPUT_FIELD_SEPARATOR: 5, |
| $OFS: 5, |
| "$,": 5, |
| $INPUT_LINE_NUMBER: 5, |
| $NR: 5, |
| "$.": 5, |
| $INPUT_RECORD_SEPARATOR: 5, |
| $RS: 5, |
| "$/": 5, |
| $OUTPUT_RECORD_SEPARATOR: 5, |
| $ORS: 5, |
| "$\\": 5, |
| $OUTPUT_AUTOFLUSH: 5, |
| "$|": 5, |
| $ACCUMULATOR: 5, |
| "$^A": 5, |
| $FORMAT_FORMFEED: 5, |
| "$^L": 5, |
| $FORMAT_PAGE_NUMBER: 5, |
| "$%": 5, |
| $FORMAT_LINES_LEFT: 5, |
| "$-": 5, |
| $FORMAT_LINE_BREAK_CHARACTERS: 5, |
| "$:": 5, |
| $FORMAT_LINES_PER_PAGE: 5, |
| "$=": 5, |
| $FORMAT_TOP_NAME: 5, |
| "$^": 5, |
| $FORMAT_NAME: 5, |
| "$~": 5, |
| "${^CHILD_ERROR_NATIVE}": 5, |
| $EXTENDED_OS_ERROR: 5, |
| "$^E": 5, |
| $EXCEPTIONS_BEING_CAUGHT: 5, |
| "$^S": 5, |
| $WARNING: 5, |
| "$^W": 5, |
| "${^WARNING_BITS}": 5, |
| $OS_ERROR: 5, |
| $ERRNO: 5, |
| "$!": 5, |
| "%OS_ERROR": 5, |
| "%ERRNO": 5, |
| "%!": 5, |
| $CHILD_ERROR: 5, |
| "$?": 5, |
| $EVAL_ERROR: 5, |
| "$@": 5, |
| $OFMT: 5, |
| "$#": 5, |
| "$*": 5, |
| $ARRAY_BASE: 5, |
| "$[": 5, |
| $OLD_PERL_VERSION: 5, |
| "$]": 5, |
| "if": [1, 1], |
| elsif: [1, 1], |
| "else": [1, 1], |
| "while": [1, 1], |
| unless: [1, 1], |
| "for": [1, 1], |
| foreach: [1, 1], |
| abs: 1, |
| accept: 1, |
| alarm: 1, |
| atan2: 1, |
| bind: 1, |
| binmode: 1, |
| bless: 1, |
| bootstrap: 1, |
| "break": 1, |
| caller: 1, |
| chdir: 1, |
| chmod: 1, |
| chomp: 1, |
| chop: 1, |
| chown: 1, |
| chr: 1, |
| chroot: 1, |
| close: 1, |
| closedir: 1, |
| connect: 1, |
| "continue": [1, 1], |
| cos: 1, |
| crypt: 1, |
| dbmclose: 1, |
| dbmopen: 1, |
| "default": 1, |
| defined: 1, |
| "delete": 1, |
| die: 1, |
| "do": 1, |
| dump: 1, |
| each: 1, |
| endgrent: 1, |
| endhostent: 1, |
| endnetent: 1, |
| endprotoent: 1, |
| endpwent: 1, |
| endservent: 1, |
| eof: 1, |
| eval: 1, |
| exec: 1, |
| exists: 1, |
| exit: 1, |
| exp: 1, |
| fcntl: 1, |
| fileno: 1, |
| flock: 1, |
| fork: 1, |
| format: 1, |
| formline: 1, |
| getc: 1, |
| getgrent: 1, |
| getgrgid: 1, |
| getgrnam: 1, |
| gethostbyaddr: 1, |
| gethostbyname: 1, |
| gethostent: 1, |
| getlogin: 1, |
| getnetbyaddr: 1, |
| getnetbyname: 1, |
| getnetent: 1, |
| getpeername: 1, |
| getpgrp: 1, |
| getppid: 1, |
| getpriority: 1, |
| getprotobyname: 1, |
| getprotobynumber: 1, |
| getprotoent: 1, |
| getpwent: 1, |
| getpwnam: 1, |
| getpwuid: 1, |
| getservbyname: 1, |
| getservbyport: 1, |
| getservent: 1, |
| getsockname: 1, |
| getsockopt: 1, |
| given: 1, |
| glob: 1, |
| gmtime: 1, |
| "goto": 1, |
| grep: 1, |
| hex: 1, |
| "import": 1, |
| index: 1, |
| "int": 1, |
| ioctl: 1, |
| join: 1, |
| keys: 1, |
| kill: 1, |
| last: 1, |
| lc: 1, |
| lcfirst: 1, |
| length: 1, |
| link: 1, |
| listen: 1, |
| local: 2, |
| localtime: 1, |
| lock: 1, |
| log: 1, |
| lstat: 1, |
| m: null, |
| map: 1, |
| mkdir: 1, |
| msgctl: 1, |
| msgget: 1, |
| msgrcv: 1, |
| msgsnd: 1, |
| my: 2, |
| "new": 1, |
| next: 1, |
| no: 1, |
| oct: 1, |
| open: 1, |
| opendir: 1, |
| ord: 1, |
| our: 2, |
| pack: 1, |
| "package": 1, |
| pipe: 1, |
| pop: 1, |
| pos: 1, |
| print: 1, |
| printf: 1, |
| prototype: 1, |
| push: 1, |
| q: null, |
| qq: null, |
| qr: null, |
| quotemeta: null, |
| qw: null, |
| qx: null, |
| rand: 1, |
| read: 1, |
| readdir: 1, |
| readline: 1, |
| readlink: 1, |
| readpipe: 1, |
| recv: 1, |
| redo: 1, |
| ref: 1, |
| rename: 1, |
| require: 1, |
| reset: 1, |
| "return": 1, |
| reverse: 1, |
| rewinddir: 1, |
| rindex: 1, |
| rmdir: 1, |
| s: null, |
| say: 1, |
| scalar: 1, |
| seek: 1, |
| seekdir: 1, |
| select: 1, |
| semctl: 1, |
| semget: 1, |
| semop: 1, |
| send: 1, |
| setgrent: 1, |
| sethostent: 1, |
| setnetent: 1, |
| setpgrp: 1, |
| setpriority: 1, |
| setprotoent: 1, |
| setpwent: 1, |
| setservent: 1, |
| setsockopt: 1, |
| shift: 1, |
| shmctl: 1, |
| shmget: 1, |
| shmread: 1, |
| shmwrite: 1, |
| shutdown: 1, |
| sin: 1, |
| sleep: 1, |
| socket: 1, |
| socketpair: 1, |
| sort: 1, |
| splice: 1, |
| split: 1, |
| sprintf: 1, |
| sqrt: 1, |
| srand: 1, |
| stat: 1, |
| state: 1, |
| study: 1, |
| sub: 1, |
| substr: 1, |
| symlink: 1, |
| syscall: 1, |
| sysopen: 1, |
| sysread: 1, |
| sysseek: 1, |
| system: 1, |
| syswrite: 1, |
| tell: 1, |
| telldir: 1, |
| tie: 1, |
| tied: 1, |
| time: 1, |
| times: 1, |
| tr: null, |
| truncate: 1, |
| uc: 1, |
| ucfirst: 1, |
| umask: 1, |
| undef: 1, |
| unlink: 1, |
| unpack: 1, |
| unshift: 1, |
| untie: 1, |
| use: 1, |
| utime: 1, |
| values: 1, |
| vec: 1, |
| wait: 1, |
| waitpid: 1, |
| wantarray: 1, |
| warn: 1, |
| when: 1, |
| write: 1, |
| y: null |
| }, |
| f = "string-2", |
| g = /[goseximacplud]/; |
| return { |
| startState: function () { |
| return { |
| tokenize: j, |
| chain: null, |
| style: null, |
| tail: null |
| } |
| }, |
| token: function (a, b) { |
| return (b.tokenize || j)(a, b) |
| }, |
| lineComment: "#" |
| } |
| }), a.registerHelper("wordChars", "perl", /[\w$]/), a.defineMIME("text/x-perl", "perl") |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function b(a) { |
| return new RegExp("^((" + a.join(")|(") + "))\\b") |
| } |
| |
| function h(a) { |
| return a.scopes[a.scopes.length - 1] |
| } |
| var c = b(["and", "or", "not", "is"]), |
| d = ["as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "lambda", "pass", "raise", "return", "try", "while", "with", "yield", "in"], |
| e = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip", "__import__", "NotImplemented", "Ellipsis", "__debug__"], |
| f = { |
| builtins: ["apply", "basestring", "buffer", "cmp", "coerce", "execfile", "file", "intern", "long", "raw_input", "reduce", "reload", "unichr", "unicode", "xrange", "False", "True", "None"], |
| keywords: ["exec", "print"] |
| }, |
| g = { |
| builtins: ["ascii", "bytes", "exec", "print"], |
| keywords: ["nonlocal", "False", "True", "None", "async", "await"] |
| }; |
| a.registerHelper("hintWords", "python", d.concat(e)), a.defineMode("python", function (i, j) { |
| function x(a, b) { |
| if (a.sol() && "py" == h(b) |
| .type) { |
| var c = h(b) |
| .offset; |
| if (a.eatSpace()) { |
| var d = a.indentation(); |
| return d > c ? A(a, b, "py") : c > d && B(a, b) && (b.errorToken = !0), null |
| } |
| var e = y(a, b); |
| return c > 0 && B(a, b) && (e += " " + k), e |
| } |
| return y(a, b) |
| } |
| |
| function y(a, b) { |
| if (a.eatSpace()) return null; |
| var d = a.peek(); |
| if ("#" == d) return a.skipToEnd(), "comment"; |
| if (a.match(/^[0-9\.]/, !1)) { |
| var e = !1; |
| if (a.match(/^\d*\.\d+(e[\+\-]?\d+)?/i) && (e = !0), a.match(/^\d+\.\d*/) && (e = !0), a.match(/^\.\d+/) && (e = !0), e) return a.eat(/J/i), "number"; |
| var f = !1; |
| if (a.match(/^0x[0-9a-f]+/i) && (f = !0), a.match(/^0b[01]+/i) && (f = !0), a.match(/^0o[0-7]+/i) && (f = !0), a.match(/^[1-9]\d*(e[\+\-]?\d+)?/) && (a.eat(/J/i), f = !0), a.match(/^0(?![\dx])/i) && (f = !0), f) return a.eat(/L/i), "number" |
| } |
| return a.match(u) ? (b.tokenize = z(a.current()), b.tokenize(a, b)) : a.match(o) || a.match(n) ? null : a.match(m) || a.match(p) ? "operator" : a.match(l) ? null : a.match(v) || a.match(c) ? "keyword" : a.match(w) ? "builtin" : a.match(/^(self|cls)\b/) ? "variable-2" : a.match(q) ? "def" == b.lastToken || "class" == b.lastToken ? "def" : "variable" : (a.next(), k) |
| } |
| |
| function z(a) { |
| function d(d, e) { |
| for (; !d.eol();) |
| if (d.eatWhile(/[^'"\\]/), d.eat("\\")) { |
| if (d.next(), b && d.eol()) return c |
| } else { |
| if (d.match(a)) return e.tokenize = x, c; |
| d.eat(/['"]/) |
| } |
| if (b) { |
| if (j.singleLineStringErrors) return k; |
| e.tokenize = x |
| } |
| return c |
| } |
| for (; |
| "rub".indexOf(a.charAt(0) |
| .toLowerCase()) >= 0;) a = a.substr(1); |
| var b = 1 == a.length, |
| c = "string"; |
| return d.isString = !0, d |
| } |
| |
| function A(a, b, c) { |
| var d = 0, |
| e = null; |
| if ("py" == c) |
| for (; |
| "py" != h(b) |
| .type;) b.scopes.pop(); |
| d = h(b) |
| .offset + ("py" == c ? i.indentUnit : r), "py" == c || a.match(/^(\s|#.*)*$/, !1) || (e = a.column() + 1), b.scopes.push({ |
| offset: d, |
| type: c, |
| align: e |
| }) |
| } |
| |
| function B(a, b) { |
| for (var c = a.indentation(); h(b) |
| .offset > c;) { |
| if ("py" != h(b) |
| .type) return !0; |
| b.scopes.pop() |
| } |
| return h(b) |
| .offset != c |
| } |
| |
| function C(a, b) { |
| var c = b.tokenize(a, b), |
| d = a.current(); |
| if ("." == d) return c = a.match(q, !1) ? null : k, null == c && "meta" == b.lastStyle && (c = "meta"), c; |
| if ("@" == d) return j.version && 3 == parseInt(j.version, 10) ? a.match(q, !1) ? "meta" : "operator" : a.match(q, !1) ? "meta" : k; |
| "variable" != c && "builtin" != c || "meta" != b.lastStyle || (c = "meta"), ("pass" == d || "return" == d) && (b.dedent += 1), "lambda" == d && (b.lambda = !0), ":" != d || b.lambda || "py" != h(b) |
| .type || A(a, b, "py"); |
| var e = 1 == d.length ? "[({".indexOf(d) : -1; |
| if (-1 != e && A(a, b, "])}".slice(e, e + 1)), e = "])}".indexOf(d), -1 != e) { |
| if (h(b) |
| .type != d) return k; |
| b.scopes.pop() |
| } |
| return b.dedent > 0 && a.eol() && "py" == h(b) |
| .type && (b.scopes.length > 1 && b.scopes.pop(), b.dedent -= 1), c |
| } |
| var k = "error", |
| l = j.singleDelimiters || new RegExp("^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]"), |
| m = j.doubleOperators || new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"), |
| n = j.doubleDelimiters || new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"), |
| o = j.tripleDelimiters || new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); |
| if (j.version && 3 == parseInt(j.version, 10)) var p = j.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!@]"), |
| q = j.identifiers || new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); |
| else var p = j.singleOperators || new RegExp("^[\\+\\-\\*/%&|\\^~<>!]"), |
| q = j.identifiers || new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); |
| var r = j.hangingIndent || i.indentUnit, |
| s = d, |
| t = e; |
| if (void 0 != j.extra_keywords && (s = s.concat(j.extra_keywords)), void 0 != j.extra_builtins && (t = t.concat(j.extra_builtins)), j.version && 3 == parseInt(j.version, 10)) { |
| s = s.concat(g.keywords), t = t.concat(g.builtins); |
| var u = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i") |
| } else { |
| s = s.concat(f.keywords), t = t.concat(f.builtins); |
| var u = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i") |
| } |
| var v = b(s), |
| w = b(t), |
| D = { |
| startState: function (a) { |
| return { |
| tokenize: x, |
| scopes: [{ |
| offset: a || 0, |
| type: "py", |
| align: null |
| }], |
| lastStyle: null, |
| lastToken: null, |
| lambda: !1, |
| dedent: 0 |
| } |
| }, |
| token: function (a, b) { |
| var c = b.errorToken; |
| c && (b.errorToken = !1); |
| var d = C(a, b); |
| b.lastStyle = d; |
| var e = a.current(); |
| return e && d && (b.lastToken = e), a.eol() && b.lambda && (b.lambda = !1), c ? d + " " + k : d |
| }, |
| indent: function (b, c) { |
| if (b.tokenize != x) return b.tokenize.isString ? a.Pass : 0; |
| var d = h(b), |
| e = c && c.charAt(0) == d.type; |
| return null != d.align ? d.align - (e ? 1 : 0) : e && b.scopes.length > 1 ? b.scopes[b.scopes.length - 2].offset : d.offset |
| }, |
| closeBrackets: { |
| triples: "'\"" |
| }, |
| lineComment: "#", |
| fold: "indent" |
| }; |
| return D |
| }), a.defineMIME("text/x-python", "python"); |
| var i = function (a) { |
| return a.split(" ") |
| }; |
| a.defineMIME("text/x-cython", { |
| name: "python", |
| extra_keywords: i("by cdef cimport cpdef ctypedef enum exceptextern gil include nogil property publicreadonly struct union DEF IF ELIF ELSE") |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| a.defineMode("shell", function () { |
| function b(b, c) { |
| for (var d = c.split(" "), e = 0; e < d.length; e++) a[d[e]] = b |
| } |
| |
| function c(b, c) { |
| if (b.eatSpace()) return null; |
| var g = b.sol(), |
| h = b.next(); |
| if ("\\" === h) return b.next(), null; |
| if ("'" === h || '"' === h || "`" === h) return c.tokens.unshift(d(h)), f(b, c); |
| if ("#" === h) return g && b.eat("!") ? (b.skipToEnd(), "meta") : (b.skipToEnd(), "comment"); |
| if ("$" === h) return c.tokens.unshift(e), f(b, c); |
| if ("+" === h || "=" === h) return "operator"; |
| if ("-" === h) return b.eat("-"), b.eatWhile(/\w/), "attribute"; |
| if (/\d/.test(h) && (b.eatWhile(/\d/), b.eol() || !/\w/.test(b.peek()))) return "number"; |
| b.eatWhile(/[\w-]/); |
| var i = b.current(); |
| return "=" === b.peek() && /\w+/.test(i) ? "def" : a.hasOwnProperty(i) ? a[i] : null |
| } |
| |
| function d(a) { |
| return function (b, c) { |
| for (var d, f = !1, g = !1; null != (d = b.next());) { |
| if (d === a && !g) { |
| f = !0; |
| break |
| } |
| if ("$" === d && !g && "'" !== a) { |
| g = !0, b.backUp(1), c.tokens.unshift(e); |
| break |
| } |
| g = !g && "\\" === d |
| } |
| return (f || !g) && c.tokens.shift(), "`" === a || ")" === a ? "quote" : "string" |
| } |
| } |
| |
| function f(a, b) { |
| return (b.tokens[0] || c)(a, b) |
| } |
| var a = {}; |
| b("atom", "true false"), b("keyword", "if then do else elif while until for in esac fi fin fil done exit set unset export function"), b("builtin", "ab awk bash beep cat cc cd chown chmod chroot clear cp curl cut diff echo find gawk gcc get git grep kill killall ln ls make mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh shopt shred source sort sleep ssh start stop su sudo tee telnet top touch vi vim wall wc wget who write yes zsh"); |
| var e = function (a, b) { |
| b.tokens.length > 1 && a.eat("$"); |
| var c = a.next(), |
| e = /\w/; |
| return "{" === c && (e = /[^}]/), "(" === c ? (b.tokens[0] = d(")"), f(a, b)) : (/\d/.test(c) || (a.eatWhile(e), a.eat("}")), b.tokens.shift(), "def") |
| }; |
| return { |
| startState: function () { |
| return { |
| tokens: [] |
| } |
| }, |
| token: function (a, b) { |
| return f(a, b) |
| }, |
| lineComment: "#", |
| fold: "brace" |
| } |
| }), a.defineMIME("text/x-sh", "shell") |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| a.defineMode("xml", function (b, c) { |
| function k(a, b) { |
| function c(c) { |
| return b.tokenize = c, c(a, b) |
| } |
| var d = a.next(); |
| if ("<" == d) return a.eat("!") ? a.eat("[") ? a.match("CDATA[") ? c(n("atom", "]]>")) : null : a.match("--") ? c(n("comment", "-->")) : a.match("DOCTYPE", !0, !0) ? (a.eatWhile(/[\w\._\-]/), c(o(1))) : null : a.eat("?") ? (a.eatWhile(/[\w\._\-]/), b.tokenize = n("meta", "?>"), "meta") : (i = a.eat("/") ? "closeTag" : "openTag", b.tokenize = l, "tag bracket"); |
| if ("&" == d) { |
| var e; |
| return e = a.eat("#") ? a.eat("x") ? a.eatWhile(/[a-fA-F\d]/) && a.eat(";") : a.eatWhile(/[\d]/) && a.eat(";") : a.eatWhile(/[\w\.\-:]/) && a.eat(";"), e ? "atom" : "error" |
| } |
| return a.eatWhile(/[^&<]/), null |
| } |
| |
| function l(a, b) { |
| var c = a.next(); |
| if (">" == c || "/" == c && a.eat(">")) return b.tokenize = k, i = ">" == c ? "endTag" : "selfcloseTag", "tag bracket"; |
| if ("=" == c) return i = "equals", null; |
| if ("<" == c) { |
| b.tokenize = k, b.state = s, b.tagName = b.tagStart = null; |
| var d = b.tokenize(a, b); |
| return d ? d + " tag error" : "tag error" |
| } |
| return /[\'\"]/.test(c) ? (b.tokenize = m(c), b.stringStartCol = a.column(), b.tokenize(a, b)) : (a.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/), "word") |
| } |
| |
| function m(a) { |
| var b = function (b, c) { |
| for (; !b.eol();) |
| if (b.next() == a) { |
| c.tokenize = l; |
| break |
| } |
| return "string" |
| }; |
| return b.isInAttribute = !0, b |
| } |
| |
| function n(a, b) { |
| return function (c, d) { |
| for (; !c.eol();) { |
| if (c.match(b)) { |
| d.tokenize = k; |
| break |
| } |
| c.next() |
| } |
| return a |
| } |
| } |
| |
| function o(a) { |
| return function (b, c) { |
| for (var d; null != (d = b.next());) { |
| if ("<" == d) return c.tokenize = o(a + 1), c.tokenize(b, c); |
| if (">" == d) { |
| if (1 == a) { |
| c.tokenize = k; |
| break |
| } |
| return c.tokenize = o(a - 1), c.tokenize(b, c) |
| } |
| } |
| return "meta" |
| } |
| } |
| |
| function p(a, b, c) { |
| this.prev = a.context, this.tagName = b, this.indent = a.indented, this.startOfLine = c, (g.doNotIndent.hasOwnProperty(b) || a.context && a.context.noIndent) && (this.noIndent = !0) |
| } |
| |
| function q(a) { |
| a.context && (a.context = a.context.prev) |
| } |
| |
| function r(a, b) { |
| for (var c;;) { |
| if (!a.context) return; |
| if (c = a.context.tagName, !g.contextGrabbers.hasOwnProperty(c) || !g.contextGrabbers[c].hasOwnProperty(b)) return; |
| q(a) |
| } |
| } |
| |
| function s(a, b, c) { |
| return "openTag" == a ? (c.tagStart = b.column(), t) : "closeTag" == a ? u : s |
| } |
| |
| function t(a, b, c) { |
| return "word" == a ? (c.tagName = b.current(), j = "tag", x) : (j = "error", t) |
| } |
| |
| function u(a, b, c) { |
| if ("word" == a) { |
| var d = b.current(); |
| return c.context && c.context.tagName != d && g.implicitlyClosed.hasOwnProperty(c.context.tagName) && q(c), c.context && c.context.tagName == d ? (j = "tag", v) : (j = "tag error", w) |
| } |
| return j = "error", w |
| } |
| |
| function v(a, b, c) { |
| return "endTag" != a ? (j = "error", v) : (q(c), s) |
| } |
| |
| function w(a, b, c) { |
| return j = "error", v(a, b, c) |
| } |
| |
| function x(a, b, c) { |
| if ("word" == a) return j = "attribute", y; |
| if ("endTag" == a || "selfcloseTag" == a) { |
| var d = c.tagName, |
| e = c.tagStart; |
| return c.tagName = c.tagStart = null, "selfcloseTag" == a || g.autoSelfClosers.hasOwnProperty(d) ? r(c, d) : (r(c, d), c.context = new p(c, d, e == c.indented)), s |
| } |
| return j = "error", x |
| } |
| |
| function y(a, b, c) { |
| return "equals" == a ? z : (g.allowMissing || (j = "error"), x(a, b, c)) |
| } |
| |
| function z(a, b, c) { |
| return "string" == a ? A : "word" == a && g.allowUnquoted ? (j = "string", x) : (j = "error", x(a, b, c)) |
| } |
| |
| function A(a, b, c) { |
| return "string" == a ? A : x(a, b, c) |
| } |
| var d = b.indentUnit, |
| e = c.multilineTagIndentFactor || 1, |
| f = c.multilineTagIndentPastTag; |
| null == f && (f = !0); |
| var i, j, g = c.htmlMode ? { |
| 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 |
| } : { |
| autoSelfClosers: {}, |
| implicitlyClosed: {}, |
| contextGrabbers: {}, |
| doNotIndent: {}, |
| allowUnquoted: !1, |
| allowMissing: !1, |
| caseFold: !1 |
| }, |
| h = c.alignCDATA; |
| return k.isInText = !0, { |
| startState: function () { |
| return { |
| tokenize: k, |
| state: s, |
| indented: 0, |
| tagName: null, |
| tagStart: null, |
| context: null |
| } |
| }, |
| token: function (a, b) { |
| if (!b.tagName && a.sol() && (b.indented = a.indentation()), a.eatSpace()) return null; |
| i = null; |
| var c = b.tokenize(a, b); |
| return (c || i) && "comment" != c && (j = null, b.state = b.state(i || c, a, b), j && (c = "error" == j ? c + " error" : j)), c |
| }, |
| indent: function (b, c, i) { |
| var j = b.context; |
| if (b.tokenize.isInAttribute) return b.tagStart == b.indented ? b.stringStartCol + 1 : b.indented + d; |
| if (j && j.noIndent) return a.Pass; |
| if (b.tokenize != l && b.tokenize != k) return i ? i.match(/^(\s*)/)[0].length : 0; |
| if (b.tagName) return f ? b.tagStart + b.tagName.length + 2 : b.tagStart + d * e; |
| if (h && /<!\[CDATA\[/.test(c)) return 0; |
| var m = c && /^<(\/)?([\w_:\.-]*)/.exec(c); |
| if (m && m[1]) |
| for (; j;) { |
| if (j.tagName == m[2]) { |
| j = j.prev; |
| break |
| } |
| if (!g.implicitlyClosed.hasOwnProperty(j.tagName)) break; |
| j = j.prev |
| } else if (m) |
| for (; j;) { |
| var n = g.contextGrabbers[j.tagName]; |
| if (!n || !n.hasOwnProperty(m[2])) break; |
| j = j.prev |
| } |
| for (; j && !j.startOfLine;) j = j.prev; |
| return j ? j.indent + d : 0 |
| }, |
| electricInput: /<\/[\s\w:]+>$/, |
| blockCommentStart: "<!--", |
| blockCommentEnd: "-->", |
| configuration: c.htmlMode ? "html" : "xml", |
| helperType: c.htmlMode ? "html" : "xml" |
| } |
| }), a.defineMIME("text/xml", "xml"), a.defineMIME("application/xml", "xml"), a.mimeModes.hasOwnProperty("text/html") || a.defineMIME("text/html", { |
| name: "xml", |
| htmlMode: !0 |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function d(a) { |
| for (var d = 0; d < a.state.activeLines.length; d++) a.removeLineClass(a.state.activeLines[d], "wrap", b), a.removeLineClass(a.state.activeLines[d], "background", c) |
| } |
| |
| function e(a, b) { |
| if (a.length != b.length) return !1; |
| for (var c = 0; c < a.length; c++) |
| if (a[c] != b[c]) return !1; |
| return !0 |
| } |
| |
| function f(a, f) { |
| for (var g = [], h = 0; h < f.length; h++) { |
| var i = f[h]; |
| if (i.empty()) { |
| var j = a.getLineHandleVisualStart(i.head.line); |
| g[g.length - 1] != j && g.push(j) |
| } |
| } |
| e(a.state.activeLines, g) || a.operation(function () { |
| d(a); |
| for (var e = 0; e < g.length; e++) a.addLineClass(g[e], "wrap", b), a.addLineClass(g[e], "background", c); |
| a.state.activeLines = g |
| }) |
| } |
| |
| function g(a, b) { |
| f(a, b.ranges) |
| } |
| var b = "CodeMirror-activeline", |
| c = "CodeMirror-activeline-background"; |
| a.defineOption("styleActiveLine", !1, function (b, c, e) { |
| var h = e && e != a.Init; |
| c && !h ? (b.state.activeLines = [], f(b, b.listSelections()), b.on("beforeSelectionChange", g)) : !c && h && (b.off("beforeSelectionChange", g), d(b), delete b.state.activeLines) |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| a.registerHelper("fold", "brace", function (b, c) { |
| function h(f) { |
| for (var h = c.ch, i = 0;;) { |
| var j = 0 >= h ? -1 : e.lastIndexOf(f, h - 1); |
| if (-1 != j) { |
| if (1 == i && j < c.ch) break; |
| if (g = b.getTokenTypeAt(a.Pos(d, j + 1)), !/^(comment|string)/.test(g)) return j + 1; |
| h = j - 1 |
| } else { |
| if (1 == i) break; |
| i = 1, h = e.length |
| } |
| } |
| } |
| var f, g, d = c.line, |
| e = b.getLine(d), |
| i = "{", |
| j = "}", |
| f = h("{"); |
| if (null == f && (i = "[", j = "]", f = h("[")), null != f) { |
| var m, n, k = 1, |
| l = b.lastLine(); |
| a: for (var o = d; l >= o; ++o) |
| for (var p = b.getLine(o), q = o == d ? f : 0;;) { |
| var r = p.indexOf(i, q), |
| s = p.indexOf(j, q); |
| if (0 > r && (r = p.length), 0 > s && (s = p.length), q = Math.min(r, s), q == p.length) break; |
| if (b.getTokenTypeAt(a.Pos(o, q + 1)) == g) |
| if (q == r) ++k; |
| else if (!--k) { |
| m = o, n = q; |
| break a |
| }++q |
| } |
| if (null != m && (d != m || n != f)) return { |
| from: a.Pos(d, f), |
| to: a.Pos(m, n) |
| } |
| } |
| }), a.registerHelper("fold", "import", function (b, c) { |
| function d(c) { |
| if (c < b.firstLine() || c > b.lastLine()) return null; |
| var d = b.getTokenAt(a.Pos(c, 1)); |
| if (/\S/.test(d.string) || (d = b.getTokenAt(a.Pos(c, d.end + 1))), "keyword" != d.type || "import" != d.string) return null; |
| for (var e = c, f = Math.min(b.lastLine(), c + 10); f >= e; ++e) { |
| var g = b.getLine(e), |
| h = g.indexOf(";"); |
| if (-1 != h) return { |
| startCh: d.end, |
| end: a.Pos(e, h) |
| } |
| } |
| } |
| var f, c = c.line, |
| e = d(c); |
| if (!e || d(c - 1) || (f = d(c - 2)) && f.end.line == c - 1) return null; |
| for (var g = e.end;;) { |
| var h = d(g.line + 1); |
| if (null == h) break; |
| g = h.end |
| } |
| return { |
| from: b.clipPos(a.Pos(c, e.startCh + 1)), |
| to: g |
| } |
| }), a.registerHelper("fold", "include", function (b, c) { |
| function d(c) { |
| if (c < b.firstLine() || c > b.lastLine()) return null; |
| var d = b.getTokenAt(a.Pos(c, 1)); |
| return /\S/.test(d.string) || (d = b.getTokenAt(a.Pos(c, d.end + 1))), "meta" == d.type && "#include" == d.string.slice(0, 8) ? d.start + 8 : void 0 |
| } |
| var c = c.line, |
| e = d(c); |
| if (null == e || null != d(c - 1)) return null; |
| for (var f = c;;) { |
| var g = d(f + 1); |
| if (null == g) break; |
| ++f |
| } |
| return { |
| from: a.Pos(c, e + 1), |
| to: b.clipPos(a.Pos(f)) |
| } |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| function d(a, c) { |
| return "pairs" == c && "string" == typeof a ? a : "object" == typeof a && null != a[c] ? a[c] : b[c] |
| } |
| |
| function h(a) { |
| return function (b) { |
| return l(b, a) |
| } |
| } |
| |
| function i(a) { |
| var b = a.state.closeBrackets; |
| if (!b) return null; |
| var c = a.getModeAt(a.getCursor()); |
| return c.closeBrackets || b |
| } |
| |
| function j(b) { |
| var e = i(b); |
| if (!e || b.getOption("disableInput")) return a.Pass; |
| for (var f = d(e, "pairs"), g = b.listSelections(), h = 0; h < g.length; h++) { |
| if (!g[h].empty()) return a.Pass; |
| var j = n(b, g[h].head); |
| if (!j || f.indexOf(j) % 2 != 0) return a.Pass |
| } |
| for (var h = g.length - 1; h >= 0; h--) { |
| var k = g[h].head; |
| b.replaceRange("", c(k.line, k.ch - 1), c(k.line, k.ch + 1)) |
| } |
| } |
| |
| function k(b) { |
| var c = i(b), |
| e = c && d(c, "explode"); |
| if (!e || b.getOption("disableInput")) return a.Pass; |
| for (var f = b.listSelections(), g = 0; g < f.length; g++) { |
| if (!f[g].empty()) return a.Pass; |
| var h = n(b, f[g].head); |
| if (!h || e.indexOf(h) % 2 != 0) return a.Pass |
| } |
| b.operation(function () { |
| b.replaceSelection("\n\n", null), b.execCommand("goCharLeft"), f = b.listSelections(); |
| for (var a = 0; a < f.length; a++) { |
| var c = f[a].head.line; |
| b.indentLine(c, null, !0), b.indentLine(c + 1, null, !0) |
| } |
| }) |
| } |
| |
| function l(b, e) { |
| var f = i(b); |
| if (!f || b.getOption("disableInput")) return a.Pass; |
| var g = d(f, "pairs"), |
| h = g.indexOf(e); |
| if (-1 == h) return a.Pass; |
| for (var p, q, j = d(f, "triples"), k = g.charAt(h + 1) == e, l = b.listSelections(), n = h % 2 == 0, r = 0; r < l.length; r++) { |
| var u, s = l[r], |
| t = s.head, |
| q = b.getRange(t, c(t.line, t.ch + 1)); |
| if (n && !s.empty()) u = "surround"; |
| else if (!k && n || q != e) |
| if (k && t.ch > 1 && j.indexOf(e) >= 0 && b.getRange(c(t.line, t.ch - 2), t) == e + e && (t.ch <= 2 || b.getRange(c(t.line, t.ch - 3), c(t.line, t.ch - 2)) != e)) u = "addFour"; |
| else if (k) { |
| if (a.isWordChar(q) || !o(b, t, e)) return a.Pass; |
| u = "both" |
| } else { |
| if (!n || b.getLine(t.line) |
| .length != t.ch && !m(q, g) && !/\s/.test(q)) return a.Pass; |
| u = "both" |
| } else u = j.indexOf(e) >= 0 && b.getRange(t, c(t.line, t.ch + 3)) == e + e + e ? "skipThree" : "skip"; |
| if (p) { |
| if (p != u) return a.Pass |
| } else p = u |
| } |
| var v = h % 2 ? g.charAt(h - 1) : e, |
| w = h % 2 ? e : g.charAt(h + 1); |
| b.operation(function () { |
| if ("skip" == p) b.execCommand("goCharRight"); |
| else if ("skipThree" == p) |
| for (var a = 0; 3 > a; a++) b.execCommand("goCharRight"); |
| else if ("surround" == p) { |
| for (var c = b.getSelections(), a = 0; a < c.length; a++) c[a] = v + c[a] + w; |
| b.replaceSelections(c, "around") |
| } else "both" == p ? (b.replaceSelection(v + w, null), b.triggerElectric(v + w), b.execCommand("goCharLeft")) : "addFour" == p && (b.replaceSelection(v + v + v + v, "before"), b.execCommand("goCharRight")) |
| }) |
| } |
| |
| function m(a, b) { |
| var c = b.lastIndexOf(a); |
| return c > -1 && c % 2 == 1 |
| } |
| |
| function n(a, b) { |
| var d = a.getRange(c(b.line, b.ch - 1), c(b.line, b.ch + 1)); |
| return 2 == d.length ? d : null |
| } |
| |
| function o(b, c, d) { |
| var e = b.getLine(c.line), |
| f = b.getTokenAt(c); |
| if (/\bstring2?\b/.test(f.type)) return !1; |
| var g = new a.StringStream(e.slice(0, c.ch) + d + e.slice(c.ch), 4); |
| for (g.pos = g.start = f.start;;) { |
| var h = b.getMode() |
| .token(g, f.state); |
| if (g.pos >= c.ch + 1) return /\bstring2?\b/.test(h); |
| g.start = g.pos |
| } |
| } |
| var b = { |
| pairs: "()[]{}''\"\"", |
| triples: "", |
| explode: "[]{}" |
| }, |
| c = a.Pos; |
| a.defineOption("autoCloseBrackets", !1, function (b, c, d) { |
| d && d != a.Init && (b.removeKeyMap(f), b.state.closeBrackets = null), c && (b.state.closeBrackets = c, b.addKeyMap(f)) |
| }); |
| for (var e = b.pairs + "`", f = { |
| Backspace: j, |
| Enter: k |
| }, g = 0; g < e.length; g++) f["'" + e.charAt(g) + "'"] = h(e.charAt(g)) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror"), require("../fold/xml-fold")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror", "../fold/xml-fold"], a) : a(CodeMirror) |
| }(function (a) { |
| function d(d) { |
| if (d.getOption("disableInput")) return a.Pass; |
| for (var e = d.listSelections(), f = [], i = 0; i < e.length; i++) { |
| if (!e[i].empty()) return a.Pass; |
| var j = e[i].head, |
| k = d.getTokenAt(j), |
| l = a.innerMode(d.getMode(), k.state), |
| m = l.state; |
| if ("xml" != l.mode.name || !m.tagName) return a.Pass; |
| var n = d.getOption("autoCloseTags"), |
| o = "html" == l.mode.configuration, |
| p = "object" == typeof n && n.dontCloseTags || o && b, |
| q = "object" == typeof n && n.indentTags || o && c, |
| r = m.tagName; |
| k.end > j.ch && (r = r.slice(0, r.length - k.end + j.ch)); |
| var s = r.toLowerCase(); |
| if (!r || "string" == k.type && (k.end != j.ch || !/[\"\']/.test(k.string.charAt(k.string.length - 1)) || 1 == k.string.length) || "tag" == k.type && "closeTag" == m.type || k.string.indexOf("/") == k.string.length - 1 || p && g(p, s) > -1 || h(d, r, j, m, !0)) return a.Pass; |
| var t = q && g(q, s) > -1; |
| f[i] = { |
| indent: t, |
| text: ">" + (t ? "\n\n" : "") + "</" + r + ">", |
| newPos: t ? a.Pos(j.line + 1, 0) : a.Pos(j.line, j.ch + 1) |
| } |
| } |
| for (var i = e.length - 1; i >= 0; i--) { |
| var u = f[i]; |
| d.replaceRange(u.text, e[i].head, e[i].anchor, "+insert"); |
| var v = d.listSelections() |
| .slice(0); |
| v[i] = { |
| head: u.newPos, |
| anchor: u.newPos |
| }, d.setSelections(v), u.indent && (d.indentLine(u.newPos.line, null, !0), d.indentLine(u.newPos.line + 1, null, !0)) |
| } |
| } |
| |
| function e(b, c) { |
| for (var d = b.listSelections(), e = [], f = c ? "/" : "</", g = 0; g < d.length; g++) { |
| if (!d[g].empty()) return a.Pass; |
| var i = d[g].head, |
| j = b.getTokenAt(i), |
| k = a.innerMode(b.getMode(), j.state), |
| l = k.state; |
| if (c && ("string" == j.type || "<" != j.string.charAt(0) || j.start != i.ch - 1)) return a.Pass; |
| var m; |
| if ("xml" != k.mode.name) |
| if ("htmlmixed" == b.getMode() |
| .name && "javascript" == k.mode.name) m = f + "script"; |
| else { |
| if ("htmlmixed" != b.getMode() |
| .name || "css" != k.mode.name) return a.Pass; |
| m = f + "style" |
| } else { |
| if (!l.context || !l.context.tagName || h(b, l.context.tagName, i, l)) return a.Pass; |
| m = f + l.context.tagName; |
| } |
| ">" != b.getLine(i.line) |
| .charAt(j.end) && (m += ">"), e[g] = m |
| } |
| b.replaceSelections(e), d = b.listSelections(); |
| for (var g = 0; g < d.length; g++)(g == d.length - 1 || d[g].head.line < d[g + 1].head.line) && b.indentLine(d[g].head.line) |
| } |
| |
| function f(b) { |
| return b.getOption("disableInput") ? a.Pass : e(b, !0) |
| } |
| |
| function g(a, b) { |
| if (a.indexOf) return a.indexOf(b); |
| for (var c = 0, d = a.length; d > c; ++c) |
| if (a[c] == b) return c; |
| return -1 |
| } |
| |
| function h(b, c, d, e, f) { |
| if (!a.scanForClosingTag) return !1; |
| var g = Math.min(b.lastLine() + 1, d.line + 500), |
| h = a.scanForClosingTag(b, d, null, g); |
| if (!h || h.tag != c) return !1; |
| for (var i = e.context, j = f ? 1 : 0; i && i.tagName == c; i = i.prev) ++j; |
| d = h.to; |
| for (var k = 1; j > k; k++) { |
| var l = a.scanForClosingTag(b, d, null, g); |
| if (!l || l.tag != c) return !1; |
| d = l.to |
| } |
| return !0 |
| } |
| a.defineOption("autoCloseTags", !1, function (b, c, e) { |
| if (e != a.Init && e && b.removeKeyMap("autoCloseTags"), c) { |
| var g = { |
| name: "autoCloseTags" |
| }; |
| ("object" != typeof c || c.whenClosing) && (g["'/'"] = function (a) { |
| return f(a) |
| }), ("object" != typeof c || c.whenOpening) && (g["'>'"] = function (a) { |
| return d(a) |
| }), b.addKeyMap(g) |
| } |
| }); |
| var b = ["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"], |
| c = ["applet", "blockquote", "body", "button", "div", "dl", "fieldset", "form", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "html", "iframe", "layer", "legend", "object", "ol", "p", "select", "table", "ul"]; |
| a.commands.closeTag = function (a) { |
| return e(a) |
| } |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function b(b, d, f, g) { |
| function j(a) { |
| var c = h(b, d); |
| if (!c || c.to.line - c.from.line < i) return null; |
| for (var e = b.findMarksAt(c.from), f = 0; f < e.length; ++f) |
| if (e[f].__isFold && "fold" !== g) { |
| if (!a) return null; |
| c.cleared = !0, e[f].clear() |
| } |
| return c |
| } |
| if (f && f.call) { |
| var h = f; |
| f = null |
| } else var h = e(b, f, "rangeFinder"); |
| "number" == typeof d && (d = a.Pos(d, 0)); |
| var i = e(b, f, "minFoldSize"), |
| k = j(!0); |
| if (e(b, f, "scanUp")) |
| for (; !k && d.line > b.firstLine();) d = a.Pos(d.line - 1, 0), k = j(!1); |
| if (k && !k.cleared && "unfold" !== g) { |
| var l = c(b, f); |
| a.on(l, "mousedown", function (b) { |
| m.clear(), a.e_preventDefault(b) |
| }); |
| var m = b.markText(k.from, k.to, { |
| replacedWith: l, |
| clearOnEnter: !0, |
| __isFold: !0 |
| }); |
| m.on("clear", function (c, d) { |
| a.signal(b, "unfold", b, c, d) |
| }), a.signal(b, "fold", b, k.from, k.to) |
| } |
| } |
| |
| function c(a, b) { |
| var c = e(a, b, "widget"); |
| if ("string" == typeof c) { |
| var d = document.createTextNode(c); |
| c = document.createElement("span"), c.appendChild(d), c.className = "CodeMirror-foldmarker" |
| } |
| return c |
| } |
| |
| function e(a, b, c) { |
| if (b && void 0 !== b[c]) return b[c]; |
| var e = a.options.foldOptions; |
| return e && void 0 !== e[c] ? e[c] : d[c] |
| } |
| a.newFoldFunction = function (a, c) { |
| return function (d, e) { |
| b(d, e, { |
| rangeFinder: a, |
| widget: c |
| }) |
| } |
| }, a.defineExtension("foldCode", function (a, c, d) { |
| b(this, a, c, d) |
| }), a.defineExtension("isFolded", function (a) { |
| for (var b = this.findMarksAt(a), c = 0; c < b.length; ++c) |
| if (b[c].__isFold) return !0 |
| }), a.commands.toggleFold = function (a) { |
| a.foldCode(a.getCursor()) |
| }, a.commands.fold = function (a) { |
| a.foldCode(a.getCursor(), null, "fold") |
| }, a.commands.unfold = function (a) { |
| a.foldCode(a.getCursor(), null, "unfold") |
| }, a.commands.foldAll = function (b) { |
| b.operation(function () { |
| for (var c = b.firstLine(), d = b.lastLine(); d >= c; c++) b.foldCode(a.Pos(c, 0), null, "fold") |
| }) |
| }, a.commands.unfoldAll = function (b) { |
| b.operation(function () { |
| for (var c = b.firstLine(), d = b.lastLine(); d >= c; c++) b.foldCode(a.Pos(c, 0), null, "unfold") |
| }) |
| }, a.registerHelper("fold", "combine", function () { |
| var a = Array.prototype.slice.call(arguments, 0); |
| return function (b, c) { |
| for (var d = 0; d < a.length; ++d) { |
| var e = a[d](b, c); |
| if (e) return e |
| } |
| } |
| }), a.registerHelper("fold", "auto", function (a, b) { |
| for (var c = a.getHelpers(b, "fold"), d = 0; d < c.length; d++) { |
| var e = c[d](a, b); |
| if (e) return e |
| } |
| }); |
| var d = { |
| rangeFinder: a.fold.auto, |
| widget: "\u2194", |
| minFoldSize: 0, |
| scanUp: !1 |
| }; |
| a.defineOption("foldOptions", null), a.defineExtension("foldOption", function (a, b) { |
| return e(this, a, b) |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror"), require("./foldcode")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror", "./foldcode"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function c(a) { |
| this.options = a, this.from = this.to = 0 |
| } |
| |
| function d(a) { |
| return a === !0 && (a = {}), null == a.gutter && (a.gutter = "CodeMirror-foldgutter"), null == a.indicatorOpen && (a.indicatorOpen = "CodeMirror-foldgutter-open"), null == a.indicatorFolded && (a.indicatorFolded = "CodeMirror-foldgutter-folded"), a |
| } |
| |
| function e(a, c) { |
| for (var d = a.findMarksAt(b(c)), e = 0; e < d.length; ++e) |
| if (d[e].__isFold && d[e].find() |
| .from.line == c) return d[e] |
| } |
| |
| function f(a) { |
| if ("string" == typeof a) { |
| var b = document.createElement("div"); |
| return b.className = a + " CodeMirror-guttermarker-subtle", b |
| } |
| return a.cloneNode(!0) |
| } |
| |
| function g(a, c, d) { |
| var g = a.state.foldGutter.options, |
| h = c, |
| i = a.foldOption(g, "minFoldSize"), |
| j = a.foldOption(g, "rangeFinder"); |
| a.eachLine(c, d, function (c) { |
| var d = null; |
| if (e(a, h)) d = f(g.indicatorFolded); |
| else { |
| var k = b(h, 0), |
| l = j && j(a, k); |
| l && l.to.line - l.from.line >= i && (d = f(g.indicatorOpen)) |
| } |
| a.setGutterMarker(c, g.gutter, d), ++h |
| }) |
| } |
| |
| function h(a) { |
| var b = a.getViewport(), |
| c = a.state.foldGutter; |
| c && (a.operation(function () { |
| g(a, b.from, b.to) |
| }), c.from = b.from, c.to = b.to) |
| } |
| |
| function i(a, c, d) { |
| var f = a.state.foldGutter; |
| if (f) { |
| var g = f.options; |
| if (d == g.gutter) { |
| var h = e(a, c); |
| h ? h.clear() : a.foldCode(b(c, 0), g.rangeFinder) |
| } |
| } |
| } |
| |
| function j(a) { |
| var b = a.state.foldGutter; |
| if (b) { |
| var c = b.options; |
| b.from = b.to = 0, clearTimeout(b.changeUpdate), b.changeUpdate = setTimeout(function () { |
| h(a) |
| }, c.foldOnChangeTimeSpan || 600) |
| } |
| } |
| |
| function k(a) { |
| var b = a.state.foldGutter; |
| if (b) { |
| var c = b.options; |
| clearTimeout(b.changeUpdate), b.changeUpdate = setTimeout(function () { |
| var c = a.getViewport(); |
| b.from == b.to || c.from - b.to > 20 || b.from - c.to > 20 ? h(a) : a.operation(function () { |
| c.from < b.from && (g(a, c.from, b.from), b.from = c.from), c.to > b.to && (g(a, b.to, c.to), b.to = c.to) |
| }) |
| }, c.updateViewportTimeSpan || 400) |
| } |
| } |
| |
| function l(a, b) { |
| var c = a.state.foldGutter; |
| if (c) { |
| var d = b.line; |
| d >= c.from && d < c.to && g(a, d, d + 1) |
| } |
| } |
| a.defineOption("foldGutter", !1, function (b, e, f) { |
| f && f != a.Init && (b.clearGutter(b.state.foldGutter.options.gutter), b.state.foldGutter = null, b.off("gutterClick", i), b.off("change", j), b.off("viewportChange", k), b.off("fold", l), b.off("unfold", l), b.off("swapDoc", h)), e && (b.state.foldGutter = new c(d(e)), h(b), b.on("gutterClick", i), b.on("change", j), b.on("viewportChange", k), b.on("fold", l), b.on("unfold", l), b.on("swapDoc", h)) |
| }); |
| var b = a.Pos |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| a.registerHelper("fold", "indent", function (b, c) { |
| var d = b.getOption("tabSize"), |
| e = b.getLine(c.line); |
| if (/\S/.test(e)) { |
| for (var f = function (b) { |
| return a.countColumn(b, null, d) |
| }, g = f(e), h = null, i = c.line + 1, j = b.lastLine(); j >= i; ++i) { |
| var k = b.getLine(i), |
| l = f(k); |
| if (l > g) h = i; |
| else if (/\S/.test(k)) break |
| } |
| return h ? { |
| from: a.Pos(c.line, e.length), |
| to: a.Pos(h, b.getLine(h) |
| .length) |
| } : void 0 |
| } |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function f(a) { |
| "object" == typeof a && (this.minChars = a.minChars, this.style = a.style, this.showToken = a.showToken, this.delay = a.delay, this.wordsOnly = a.wordsOnly), null == this.style && (this.style = c), null == this.minChars && (this.minChars = b), null == this.delay && (this.delay = d), null == this.wordsOnly && (this.wordsOnly = e), this.overlay = this.timeout = null |
| } |
| |
| function g(a) { |
| var b = a.state.matchHighlighter; |
| clearTimeout(b.timeout), b.timeout = setTimeout(function () { |
| h(a) |
| }, b.delay) |
| } |
| |
| function h(a) { |
| a.operation(function () { |
| var b = a.state.matchHighlighter; |
| if (b.overlay && (a.removeOverlay(b.overlay), b.overlay = null), !a.somethingSelected() && b.showToken) { |
| for (var c = b.showToken === !0 ? /[\w$]/ : b.showToken, d = a.getCursor(), e = a.getLine(d.line), f = d.ch, g = f; f && c.test(e.charAt(f - 1));) --f; |
| for (; g < e.length && c.test(e.charAt(g));) ++g; |
| return void(g > f && a.addOverlay(b.overlay = k(e.slice(f, g), c, b.style))) |
| } |
| var h = a.getCursor("from"), |
| j = a.getCursor("to"); |
| if (h.line == j.line && (!b.wordsOnly || i(a, h, j))) { |
| var l = a.getRange(h, j) |
| .replace(/^\s+|\s+$/g, ""); |
| l.length >= b.minChars && a.addOverlay(b.overlay = k(l, !1, b.style)) |
| } |
| }) |
| } |
| |
| function i(a, b, c) { |
| var d = a.getRange(b, c); |
| if (null !== d.match(/^\w+$/)) { |
| if (b.ch > 0) { |
| var e = { |
| line: b.line, |
| ch: b.ch - 1 |
| }, |
| f = a.getRange(e, b); |
| if (null === f.match(/\W/)) return !1 |
| } |
| if (c.ch < a.getLine(b.line) |
| .length) { |
| var e = { |
| line: c.line, |
| ch: c.ch + 1 |
| }, |
| f = a.getRange(c, e); |
| if (null === f.match(/\W/)) return !1 |
| } |
| return !0 |
| } |
| return !1 |
| } |
| |
| function j(a, b) { |
| return !(a.start && b.test(a.string.charAt(a.start - 1)) || a.pos != a.string.length && b.test(a.string.charAt(a.pos))) |
| } |
| |
| function k(a, b, c) { |
| return { |
| token: function (d) { |
| return !d.match(a) || b && !j(d, b) ? (d.next(), void(d.skipTo(a.charAt(0)) || d.skipToEnd())) : c |
| } |
| } |
| } |
| var b = 2, |
| c = "matchhighlight", |
| d = 100, |
| e = !1; |
| a.defineOption("highlightSelectionMatches", !1, function (b, c, d) { |
| if (d && d != a.Init) { |
| var e = b.state.matchHighlighter.overlay; |
| e && b.removeOverlay(e), clearTimeout(b.state.matchHighlighter.timeout), b.state.matchHighlighter = null, b.off("cursorActivity", g) |
| } |
| c && (b.state.matchHighlighter = new f(c), h(b), b.on("cursorActivity", g)) |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| function e(a, b, e, g) { |
| var h = a.getLineHandle(b.line), |
| i = b.ch - 1, |
| j = i >= 0 && d[h.text.charAt(i)] || d[h.text.charAt(++i)]; |
| if (!j) return null; |
| var k = ">" == j.charAt(1) ? 1 : -1; |
| if (e && k > 0 != (i == b.ch)) return null; |
| var l = a.getTokenTypeAt(c(b.line, i + 1)), |
| m = f(a, c(b.line, i + (k > 0 ? 1 : 0)), k, l || null, g); |
| return null == m ? null : { |
| from: c(b.line, i), |
| to: m && m.pos, |
| match: m && m.ch == j.charAt(0), |
| forward: k > 0 |
| } |
| } |
| |
| function f(a, b, e, f, g) { |
| for (var h = g && g.maxScanLineLength || 1e4, i = g && g.maxScanLines || 1e3, j = [], k = g && g.bracketRegex ? g.bracketRegex : /[(){}[\]]/, l = e > 0 ? Math.min(b.line + i, a.lastLine() + 1) : Math.max(a.firstLine() - 1, b.line - i), m = b.line; m != l; m += e) { |
| var n = a.getLine(m); |
| if (n) { |
| var o = e > 0 ? 0 : n.length - 1, |
| p = e > 0 ? n.length : -1; |
| if (!(n.length > h)) |
| for (m == b.line && (o = b.ch - (0 > e ? 1 : 0)); o != p; o += e) { |
| var q = n.charAt(o); |
| if (k.test(q) && (void 0 === f || a.getTokenTypeAt(c(m, o + 1)) == f)) { |
| var r = d[q]; |
| if (">" == r.charAt(1) == e > 0) j.push(q); |
| else { |
| if (!j.length) return { |
| pos: c(m, o), |
| ch: q |
| }; |
| j.pop() |
| } |
| } |
| } |
| } |
| } |
| return m - e == (e > 0 ? a.lastLine() : a.firstLine()) ? !1 : null |
| } |
| |
| function g(a, d, f) { |
| for (var g = a.state.matchBrackets.maxHighlightLineLength || 1e3, h = [], i = a.listSelections(), j = 0; j < i.length; j++) { |
| var k = i[j].empty() && e(a, i[j].head, !1, f); |
| if (k && a.getLine(k.from.line) |
| .length <= g) { |
| var l = k.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; |
| h.push(a.markText(k.from, c(k.from.line, k.from.ch + 1), { |
| className: l |
| })), k.to && a.getLine(k.to.line) |
| .length <= g && h.push(a.markText(k.to, c(k.to.line, k.to.ch + 1), { |
| className: l |
| })) |
| } |
| } |
| if (h.length) { |
| b && a.state.focused && a.focus(); |
| var m = function () { |
| a.operation(function () { |
| for (var a = 0; a < h.length; a++) h[a].clear() |
| }) |
| }; |
| if (!d) return m; |
| setTimeout(m, 800) |
| } |
| } |
| |
| function i(a) { |
| a.operation(function () { |
| h && (h(), h = null), h = g(a, !1, a.state.matchBrackets) |
| }) |
| } |
| var b = /MSIE \d/.test(navigator.userAgent) && (null == document.documentMode || document.documentMode < 8), |
| c = a.Pos, |
| d = { |
| "(": ")>", |
| ")": "(<", |
| "[": "]>", |
| "]": "[<", |
| "{": "}>", |
| "}": "{<" |
| }, |
| h = null; |
| a.defineOption("matchBrackets", !1, function (b, c, d) { |
| d && d != a.Init && b.off("cursorActivity", i), c && (b.state.matchBrackets = "object" == typeof c ? c : {}, b.on("cursorActivity", i)) |
| }), a.defineExtension("matchBrackets", function () { |
| g(this, !0) |
| }), a.defineExtension("findMatchingBracket", function (a, b, c) { |
| return e(this, a, b, c) |
| }), a.defineExtension("scanForBracket", function (a, b, c, d) { |
| return f(this, a, b, c, d) |
| }) |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror"), require("../fold/xml-fold")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror", "../fold/xml-fold"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function b(a) { |
| a.state.tagHit && a.state.tagHit.clear(), a.state.tagOther && a.state.tagOther.clear(), a.state.tagHit = a.state.tagOther = null |
| } |
| |
| function c(c) { |
| c.state.failedTagMatch = !1, c.operation(function () { |
| if (b(c), !c.somethingSelected()) { |
| var d = c.getCursor(), |
| e = c.getViewport(); |
| e.from = Math.min(e.from, d.line), e.to = Math.max(d.line + 1, e.to); |
| var f = a.findMatchingTag(c, d, e); |
| if (f) { |
| if (c.state.matchBothTags) { |
| var g = "open" == f.at ? f.open : f.close; |
| g && (c.state.tagHit = c.markText(g.from, g.to, { |
| className: "CodeMirror-matchingtag" |
| })) |
| } |
| var h = "close" == f.at ? f.open : f.close; |
| h ? c.state.tagOther = c.markText(h.from, h.to, { |
| className: "CodeMirror-matchingtag" |
| }) : c.state.failedTagMatch = !0 |
| } |
| } |
| }) |
| } |
| |
| function d(a) { |
| a.state.failedTagMatch && c(a) |
| } |
| a.defineOption("matchTags", !1, function (e, f, g) { |
| g && g != a.Init && (e.off("cursorActivity", c), e.off("viewportChange", d), b(e)), f && (e.state.matchBothTags = "object" == typeof f && f.bothTags, e.on("cursorActivity", c), e.on("viewportChange", d), c(e)) |
| }), a.commands.toMatchingTag = function (b) { |
| var c = a.findMatchingTag(b, b.getCursor()); |
| if (c) { |
| var d = "close" == c.at ? c.open : c.close; |
| d && b.extendSelection(d.to, d.from) |
| } |
| } |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror"), require("./searchcursor"), require("../dialog/dialog")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror", "./searchcursor", "../dialog/dialog"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function b(a, b) { |
| return "string" == typeof a ? a = new RegExp(a.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), b ? "gi" : "g") : a.global || (a = new RegExp(a.source, a.ignoreCase ? "gi" : "g")), { |
| token: function (b) { |
| a.lastIndex = b.pos; |
| var c = a.exec(b.string); |
| return c && c.index == b.pos ? (b.pos += c[0].length, "searching") : void(c ? b.pos = c.index : b.skipToEnd()) |
| } |
| } |
| } |
| |
| function c() { |
| this.posFrom = this.posTo = this.lastQuery = this.query = null, this.overlay = null |
| } |
| |
| function d(a) { |
| return a.state.search || (a.state.search = new c) |
| } |
| |
| function e(a) { |
| return "string" == typeof a && a == a.toLowerCase() |
| } |
| |
| function f(a, b, c) { |
| return a.getSearchCursor(b, c, e(b)) |
| } |
| |
| function g(a, b, c, d) { |
| a.openDialog(b, d, { |
| value: c, |
| selectValueOnOpen: !0, |
| closeOnEnter: !1, |
| onClose: function () { |
| p(a) |
| } |
| }) |
| } |
| |
| function h(a, b, c, d, e) { |
| a.openDialog ? a.openDialog(b, e, { |
| value: d, |
| selectValueOnOpen: !0 |
| }) : e(prompt(c, d)) |
| } |
| |
| function i(a, b, c, d) { |
| a.openConfirm ? a.openConfirm(b, d) : confirm(c) && d[0]() |
| } |
| |
| function j(a) { |
| return a.replace(/\\(.)/g, function (a, b) { |
| return "n" == b ? "\n" : "r" == b ? "\r" : b |
| }) |
| } |
| |
| function k(a) { |
| var b = a.match(/^\/(.*)\/([a-z]*)$/); |
| if (b) try { |
| a = new RegExp(b[1], -1 == b[2].indexOf("i") ? "" : "i") |
| } catch (c) {} else a = j(a); |
| return ("string" == typeof a ? "" == a : a.test("")) && (a = /x^/), a |
| } |
| |
| function m(a, c, d) { |
| c.queryText = d, c.query = k(d), a.removeOverlay(c.overlay, e(c.query)), c.overlay = b(c.query, e(c.query)), a.addOverlay(c.overlay), a.showMatchesOnScrollbar && (c.annotate && (c.annotate.clear(), c.annotate = null), c.annotate = a.showMatchesOnScrollbar(c.query, e(c.query))) |
| } |
| |
| function n(b, c, e) { |
| var f = d(b); |
| if (f.query) return o(b, c); |
| var i = b.getSelection() || f.lastQuery; |
| e && b.openDialog ? g(b, l, i, function (c, d) { |
| a.e_stop(d), c && (c != f.queryText && m(b, f, c), o(b, d.shiftKey)) |
| }) : h(b, l, "Search for:", i, function (a) { |
| a && !f.query && b.operation(function () { |
| m(b, f, a), f.posFrom = f.posTo = b.getCursor(), o(b, c) |
| }) |
| }) |
| } |
| |
| function o(b, c) { |
| b.operation(function () { |
| var e = d(b), |
| g = f(b, e.query, c ? e.posFrom : e.posTo); |
| (g.find(c) || (g = f(b, e.query, c ? a.Pos(b.lastLine()) : a.Pos(b.firstLine(), 0)), g.find(c))) && (b.setSelection(g.from(), g.to()), b.scrollIntoView({ |
| from: g.from(), |
| to: g.to() |
| }, 20), e.posFrom = g.from(), e.posTo = g.to()) |
| }) |
| } |
| |
| function p(a) { |
| a.operation(function () { |
| var b = d(a); |
| b.lastQuery = b.query, b.query && (b.query = b.queryText = null, a.removeOverlay(b.overlay), b.annotate && (b.annotate.clear(), b.annotate = null)) |
| }) |
| } |
| |
| function t(a, b) { |
| if (!a.getOption("readOnly")) { |
| var c = a.getSelection() || d(a) |
| .lastQuery; |
| h(a, q, "Replace:", c, function (c) { |
| c && (c = k(c), h(a, r, "Replace with:", "", function (d) { |
| if (d = j(d), b) a.operation(function () { |
| for (var b = f(a, c); b.findNext();) |
| if ("string" != typeof c) { |
| var e = a.getRange(b.from(), b.to()) |
| .match(c); |
| b.replace(d.replace(/\$(\d)/g, function (a, b) { |
| return e[b] |
| })) |
| } else b.replace(d) |
| }); |
| else { |
| p(a); |
| var e = f(a, c, a.getCursor()), |
| g = function () { |
| var d, b = e.from(); |
| !(d = e.findNext()) && (e = f(a, c), !(d = e.findNext()) || b && e.from() |
| .line == b.line && e.from() |
| .ch == b.ch) || (a.setSelection(e.from(), e.to()), a.scrollIntoView({ |
| from: e.from(), |
| to: e.to() |
| }), i(a, s, "Replace?", [function () { |
| h(d) |
| }, g])) |
| }, |
| h = function (a) { |
| e.replace("string" == typeof c ? d : d.replace(/\$(\d)/g, function (b, c) { |
| return a[c] |
| })), g() |
| }; |
| g() |
| } |
| })) |
| }) |
| } |
| } |
| var l = 'Search: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>', |
| q = 'Replace: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)</span>', |
| r = 'With: <input type="text" style="width: 10em" class="CodeMirror-search-field"/>', |
| s = "Replace? <button>Yes</button> <button>No</button> <button>Stop</button>"; |
| a.commands.find = function (a) { |
| p(a), n(a) |
| }, a.commands.findPersistent = function (a) { |
| p(a), n(a, !1, !0) |
| }, a.commands.findNext = n, a.commands.findPrev = function (a) { |
| n(a, !0) |
| }, a.commands.clearSearch = p, a.commands.replace = t, a.commands.replaceAll = function (a) { |
| t(a, !0) |
| } |
| }), |
| function (a) { |
| "object" == typeof exports && "object" == typeof module ? a(require("../../lib/codemirror")) : "function" == typeof define && define.amd ? define(["../../lib/codemirror"], a) : a(CodeMirror) |
| }(function (a) { |
| "use strict"; |
| |
| function c(a, b) { |
| return a.line - b.line || a.ch - b.ch |
| } |
| |
| function g(a, b, c, d) { |
| this.line = b, this.ch = c, this.cm = a, this.text = a.getLine(b), this.min = d ? d.from : a.firstLine(), this.max = d ? d.to - 1 : a.lastLine() |
| } |
| |
| function h(a, c) { |
| var d = a.cm.getTokenTypeAt(b(a.line, c)); |
| return d && /\btag\b/.test(d) |
| } |
| |
| function i(a) { |
| return a.line >= a.max ? void 0 : (a.ch = 0, a.text = a.cm.getLine(++a.line), !0) |
| } |
| |
| function j(a) { |
| return a.line <= a.min ? void 0 : (a.text = a.cm.getLine(--a.line), a.ch = a.text.length, !0) |
| } |
| |
| function k(a) { |
| for (;;) { |
| var b = a.text.indexOf(">", a.ch); |
| if (-1 == b) { |
| if (i(a)) continue; |
| return |
| } { |
| if (h(a, b + 1)) { |
| var c = a.text.lastIndexOf("/", b), |
| d = c > -1 && !/\S/.test(a.text.slice(c + 1, b)); |
| return a.ch = b + 1, d ? "selfClose" : "regular" |
| } |
| a.ch = b + 1 |
| } |
| } |
| } |
| |
| function l(a) { |
| for (;;) { |
| var b = a.ch ? a.text.lastIndexOf("<", a.ch - 1) : -1; |
| if (-1 == b) { |
| if (j(a)) continue; |
| return |
| } |
| if (h(a, b + 1)) { |
| f.lastIndex = b, a.ch = b; |
| var c = f.exec(a.text); |
| if (c && c.index == b) return c |
| } else a.ch = b |
| } |
| } |
| |
| function m(a) { |
| for (;;) { |
| f.lastIndex = a.ch; |
| var b = f.exec(a.text); |
| if (!b) { |
| if (i(a)) continue; |
| return |
| } { |
| if (h(a, b.index + 1)) return a.ch = b.index + b[0].length, b; |
| a.ch = b.index + 1 |
| } |
| } |
| } |
| |
| function n(a) { |
| for (;;) { |
| var b = a.ch ? a.text.lastIndexOf(">", a.ch - 1) : -1; |
| if (-1 == b) { |
| if (j(a)) continue; |
| return |
| } { |
| if (h(a, b + 1)) { |
| var c = a.text.lastIndexOf("/", b), |
| d = c > -1 && !/\S/.test(a.text.slice(c + 1, b)); |
| return a.ch = b + 1, d ? "selfClose" : "regular" |
| } |
| a.ch = b |
| } |
| } |
| } |
| |
| function o(a, c) { |
| for (var d = [];;) { |
| var f, e = m(a), |
| g = a.line, |
| h = a.ch - (e ? e[0].length : 0); |
| if (!e || !(f = k(a))) return; |
| if ("selfClose" != f) |
| if (e[1]) { |
| for (var i = d.length - 1; i >= 0; --i) |
| if (d[i] == e[2]) { |
| d.length = i; |
| break |
| } |
| if (0 > i && (!c || c == e[2])) return { |
| tag: e[2], |
| from: b(g, h), |
| to: b(a.line, a.ch) |
| } |
| } else d.push(e[2]) |
| } |
| } |
| |
| function p(a, c) { |
| for (var d = [];;) { |
| var e = n(a); |
| if (!e) return; |
| if ("selfClose" != e) { |
| var f = a.line, |
| g = a.ch, |
| h = l(a); |
| if (!h) return; |
| if (h[1]) d.push(h[2]); |
| else { |
| for (var i = d.length - 1; i >= 0; --i) |
| if (d[i] == h[2]) { |
| d.length = i; |
| break |
| } |
| if (0 > i && (!c || c == h[2])) return { |
| tag: h[2], |
| from: b(a.line, a.ch), |
| to: b(f, g) |
| } |
| } |
| } else l(a) |
| } |
| } |
| var b = a.Pos, |
| d = "A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD", |
| e = d + "-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040", |
| f = new RegExp("<(/?)([" + d + "][" + e + "]*)", "g"); |
| a.registerHelper("fold", "xml", function (a, c) { |
| for (var d = new g(a, c.line, 0);;) { |
| var f, e = m(d); |
| if (!e || d.line != c.line || !(f = k(d))) return; |
| if (!e[1] && "selfClose" != f) { |
| var c = b(d.line, d.ch), |
| h = o(d, e[2]); |
| return h && { |
| from: c, |
| to: h.from |
| } |
| } |
| } |
| }), a.findMatchingTag = function (a, d, e) { |
| var f = new g(a, d.line, d.ch, e); |
| if (-1 != f.text.indexOf(">") || -1 != f.text.indexOf("<")) { |
| var h = k(f), |
| i = h && b(f.line, f.ch), |
| j = h && l(f); |
| if (h && j && !(c(f, d) > 0)) { |
| var m = { |
| from: b(f.line, f.ch), |
| to: i, |
| tag: j[2] |
| }; |
| return "selfClose" == h ? { |
| open: m, |
| close: null, |
| at: "open" |
| } : j[1] ? { |
| open: p(f, j[2]), |
| close: m, |
| at: "close" |
| } : (f = new g(a, i.line, i.ch, e), { |
| open: m, |
| close: o(f, j[2]), |
| at: "open" |
| }) |
| } |
| } |
| }, a.findEnclosingTag = function (a, b, c) { |
| for (var d = new g(a, b.line, b.ch, c);;) { |
| var e = p(d); |
| if (!e) break; |
| var f = new g(a, b.line, b.ch, c), |
| h = o(f, e.tag); |
| if (h) return { |
| open: e, |
| close: h |
| } |
| } |
| }, a.scanForClosingTag = function (a, b, c, d) { |
| var e = new g(a, b.line, b.ch, d ? { |
| from: 0, |
| to: d |
| } : null); |
| return o(e, c) |
| } |
| }); |