diff --git a/static/css/lib.min.css b/static/css/lib.min.css new file mode 100644 index 0000000..7d72eef --- /dev/null +++ b/static/css/lib.min.css @@ -0,0 +1,40 @@ +.layout-hide,.ui-layout-resizer-sliding .ui-layout-toggler{display:none}body{font-family:Geneva,Arial,Helvetica,sans-serif;font-size:100%}.ui-layout-content{padding:10px;position:relative;overflow:auto}.layout-child-container,.layout-content-container{padding:0;overflow:hidden}.layout-child-container{border:0}.layout-scroll{overflow:auto}.ui-layout-resizer{border-width:0}.ui-layout-resizer-north-dragging,.ui-layout-resizer-south-dragging{border-width:1px 0}.ui-layout-resizer-east-dragging,.ui-layout-resizer-west-dragging{border-width:0 1px}.ui-layout-resizer-dragging-limit{background:#F0F0F0}.ui-layout-resizer-sliding{opacity:.1;filter:alpha(opacity=10)}.ui-layout-resizer-sliding-hover{opacity:1;filter:alpha(opacity=100)}.ui-layout-resizer-north-sliding-hover{border-bottom-width:1px}.ui-layout-resizer-south-sliding-hover{border-top-width:1px}.ui-layout-resizer-west-sliding-hover{border-right-width:1px}.ui-layout-resizer-east-sliding-hover{border-left-width:1px}.ui-layout-toggler{border:1px solid #BBB;background-color:#BBB}.ui-layout-resizer-hover .ui-layout-toggler{opacity:.6;filter:alpha(opacity=60)}.ui-layout-resizer-hover .ui-layout-toggler-hover,.ui-layout-toggler-hover{background-color:#FC6;opacity:1;filter:alpha(opacity=100)}.ui-layout-toggler-north,.ui-layout-toggler-south{border-width:0 1px}.ui-layout-toggler-east,.ui-layout-toggler-west{border-width:1px 0}.ui-layout-toggler .content{color:#666;font-size:12px;font-weight:700;width:100%;padding-bottom:.35ex}.ui-layout-mask{border:none!important;padding:0!important;margin:0!important;overflow:hidden!important;position:absolute!important;opacity:0!important;filter:Alpha(Opacity="0")!important}.ui-layout-mask-inside-pane{top:0!important;left:0!important;width:100%!important;height:100%!important}@media print{.ui-layout-pane,body.ui-layout-container{top:auto!important;bottom:auto!important;left:auto!important;right:auto!important}.ui-layout-pane,html{height:auto!important;overflow:visible!important}body.ui-layout-container{position:static!important}.ui-layout-resizer,.ui-layout-toggler{display:none!important}.ui-layout-pane{border:none!important;background:0 0!important;position:relative!important;width:auto!important}} +.CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror div.CodeMirror-cursor{border-left:1px solid #000}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.CodeMirror.cm-fat-cursor div.CodeMirror-cursor{width:auto;border:0;background:#7e7}.CodeMirror.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}@-moz-keyframes blink{0%,100%{background:#7e7}50%{background:0 0}}@-webkit-keyframes blink{0%,100%{background:#7e7}50%{background:0 0}}@keyframes blink{0%,100%{background:#7e7}50%{background:0 0}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-invalidchar,.cm-s-default .cm-error{color:red}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:0;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:0 0;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:0}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-measure pre{position:static}.CodeMirror div.CodeMirror-cursor{position:absolute;border-right:none;width:0}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror ::selection,.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror ::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:0 0} +.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;max-width:19em;overflow:hidden;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff} +.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:infobackground;border:1px solid #000;border-radius:4px;color:infotext;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-marker-warning{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%} +.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"\25BE"}.CodeMirror-foldgutter-folded:after{content:"\25B8"} +.CodeMirror-dialog{position:absolute;left:0;right:0;background:#fff;z-index:15;padding:.1em .8em;overflow:hidden;color:#333}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:0;background:0 0;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%} +.cm-s-3024-day.CodeMirror{background:#f7f7f7;color:#3a3432}.cm-s-3024-day div.CodeMirror-selected{background:#d6d5d4!important}.cm-s-3024-day.CodeMirror ::selection{background:#d6d5d4}.cm-s-3024-day.CodeMirror ::-moz-selection{background:#d9d9d9}.cm-s-3024-day .CodeMirror-gutters{background:#f7f7f7;border-right:0}.cm-s-3024-day .CodeMirror-guttermarker{color:#db2d20}.cm-s-3024-day .CodeMirror-guttermarker-subtle,.cm-s-3024-day .CodeMirror-linenumber{color:#807d7c}.cm-s-3024-day .CodeMirror-cursor{border-left:1px solid #5c5855!important}.cm-s-3024-day span.cm-comment{color:#cdab53}.cm-s-3024-day span.cm-atom,.cm-s-3024-day span.cm-number{color:#a16a94}.cm-s-3024-day span.cm-attribute,.cm-s-3024-day span.cm-property{color:#01a252}.cm-s-3024-day span.cm-keyword{color:#db2d20}.cm-s-3024-day span.cm-string{color:#fded02}.cm-s-3024-day span.cm-variable{color:#01a252}.cm-s-3024-day span.cm-variable-2{color:#01a0e4}.cm-s-3024-day span.cm-def{color:#e8bbd0}.cm-s-3024-day span.cm-bracket{color:#3a3432}.cm-s-3024-day span.cm-tag{color:#db2d20}.cm-s-3024-day span.cm-link{color:#a16a94}.cm-s-3024-day span.cm-error{background:#db2d20;color:#5c5855}.cm-s-3024-day .CodeMirror-activeline-background{background:#e8f2ff!important}.cm-s-3024-day .CodeMirror-matchingbracket{text-decoration:underline;color:#a16a94!important} +.cm-s-3024-night.CodeMirror{background:#090300;color:#d6d5d4}.cm-s-3024-night div.CodeMirror-selected{background:#3a3432!important}.cm-s-3024-night.CodeMirror ::selection{background:rgba(58,52,50,.99)}.cm-s-3024-night.CodeMirror ::-moz-selection{background:rgba(58,52,50,.99)}.cm-s-3024-night .CodeMirror-gutters{background:#090300;border-right:0}.cm-s-3024-night .CodeMirror-guttermarker{color:#db2d20}.cm-s-3024-night .CodeMirror-guttermarker-subtle,.cm-s-3024-night .CodeMirror-linenumber{color:#5c5855}.cm-s-3024-night .CodeMirror-cursor{border-left:1px solid #807d7c!important}.cm-s-3024-night span.cm-comment{color:#cdab53}.cm-s-3024-night span.cm-atom,.cm-s-3024-night span.cm-number{color:#a16a94}.cm-s-3024-night span.cm-attribute,.cm-s-3024-night span.cm-property{color:#01a252}.cm-s-3024-night span.cm-keyword{color:#db2d20}.cm-s-3024-night span.cm-string{color:#fded02}.cm-s-3024-night span.cm-variable{color:#01a252}.cm-s-3024-night span.cm-variable-2{color:#01a0e4}.cm-s-3024-night span.cm-def{color:#e8bbd0}.cm-s-3024-night span.cm-bracket{color:#d6d5d4}.cm-s-3024-night span.cm-tag{color:#db2d20}.cm-s-3024-night span.cm-link{color:#a16a94}.cm-s-3024-night span.cm-error{background:#db2d20;color:#807d7c}.cm-s-3024-night .CodeMirror-activeline-background{background:#2F2F2F!important}.cm-s-3024-night .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-ambiance.CodeMirror{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none} +.cm-s-ambiance .cm-keyword{color:#cda869}.cm-s-ambiance .cm-atom{color:#CF7EA9}.cm-s-ambiance .cm-number{color:#78CF8A}.cm-s-ambiance .cm-def{color:#aac6e3}.cm-s-ambiance .cm-variable{color:#ffb795}.cm-s-ambiance .cm-variable-2{color:#eed1b3}.cm-s-ambiance .cm-variable-3{color:#faded3}.cm-s-ambiance .cm-property{color:#eed1b3}.cm-s-ambiance .cm-operator{color:#fa8d6a}.cm-s-ambiance .cm-comment{color:#555;font-style:italic}.cm-s-ambiance .cm-string{color:#8f9d6a}.cm-s-ambiance .cm-string-2{color:#9d937c}.cm-s-ambiance .cm-meta{color:#D2A8A1}.cm-s-ambiance .cm-qualifier{color:#ff0}.cm-s-ambiance .cm-builtin{color:#99c}.cm-s-ambiance .cm-bracket{color:#24C2C7}.cm-s-ambiance .cm-tag{color:#fee4ff}.cm-s-ambiance .cm-attribute{color:#9B859D}.cm-s-ambiance .cm-header{color:#00f}.cm-s-ambiance .cm-quote{color:#24C2C7}.cm-s-ambiance .cm-hr{color:pink}.cm-s-ambiance .cm-link{color:#F4C20B}.cm-s-ambiance .cm-special{color:#FF9D00}.cm-s-ambiance .cm-error{color:#AF2018}.cm-s-ambiance .CodeMirror-matchingbracket{color:#0f0}.cm-s-ambiance .CodeMirror-nonmatchingbracket{color:#f22}.cm-s-ambiance .CodeMirror-selected{background:rgba(255,255,255,.15)}.cm-s-ambiance.CodeMirror ::selection,.cm-s-ambiance.CodeMirror-focused .CodeMirror-selected{background:rgba(255,255,255,.1)}.cm-s-ambiance.CodeMirror ::-moz-selection{background:rgba(255,255,255,.1)}.cm-s-ambiance.CodeMirror{line-height:1.4em;color:#E6E1DC;background-color:#202020;-webkit-box-shadow:inset 0 0 10px #000;-moz-box-shadow:inset 0 0 10px #000;box-shadow:inset 0 0 10px #000}.cm-s-ambiance .CodeMirror-gutters{background:#3D3D3D;border-right:1px solid #4D4D4D;box-shadow:0 10px 20px #000}.cm-s-ambiance .CodeMirror-linenumber{text-shadow:0 1px 1px #4d4d4d;color:#111;padding:0 5px}.cm-s-ambiance .CodeMirror-guttermarker{color:#aaa}.cm-s-ambiance .CodeMirror-guttermarker-subtle{color:#111}.cm-s-ambiance .CodeMirror-lines .CodeMirror-cursor{border-left:1px solid #7991E8}.cm-s-ambiance .CodeMirror-activeline-background{background:rgba(255,255,255,.031)}.cm-s-ambiance .CodeMirror-gutters,.cm-s-ambiance.CodeMirror{background-image:url(data:image/png;base64,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)} +.cm-s-base16-dark.CodeMirror{background:#151515;color:#e0e0e0}.cm-s-base16-dark div.CodeMirror-selected{background:#303030!important}.cm-s-base16-dark.CodeMirror ::selection{background:rgba(48,48,48,.99)}.cm-s-base16-dark.CodeMirror ::-moz-selection{background:rgba(48,48,48,.99)}.cm-s-base16-dark .CodeMirror-gutters{background:#151515;border-right:0}.cm-s-base16-dark .CodeMirror-guttermarker{color:#ac4142}.cm-s-base16-dark .CodeMirror-guttermarker-subtle,.cm-s-base16-dark .CodeMirror-linenumber{color:#505050}.cm-s-base16-dark .CodeMirror-cursor{border-left:1px solid #b0b0b0!important}.cm-s-base16-dark span.cm-comment{color:#8f5536}.cm-s-base16-dark span.cm-atom,.cm-s-base16-dark span.cm-number{color:#aa759f}.cm-s-base16-dark span.cm-attribute,.cm-s-base16-dark span.cm-property{color:#90a959}.cm-s-base16-dark span.cm-keyword{color:#ac4142}.cm-s-base16-dark span.cm-string{color:#f4bf75}.cm-s-base16-dark span.cm-variable{color:#90a959}.cm-s-base16-dark span.cm-variable-2{color:#6a9fb5}.cm-s-base16-dark span.cm-def{color:#d28445}.cm-s-base16-dark span.cm-bracket{color:#e0e0e0}.cm-s-base16-dark span.cm-tag{color:#ac4142}.cm-s-base16-dark span.cm-link{color:#aa759f}.cm-s-base16-dark span.cm-error{background:#ac4142;color:#b0b0b0}.cm-s-base16-dark .CodeMirror-activeline-background{background:#202020!important}.cm-s-base16-dark .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-base16-light.CodeMirror{background:#f5f5f5;color:#202020}.cm-s-base16-light div.CodeMirror-selected{background:#e0e0e0!important}.cm-s-base16-light.CodeMirror ::selection{background:#e0e0e0}.cm-s-base16-light.CodeMirror ::-moz-selection{background:#e0e0e0}.cm-s-base16-light .CodeMirror-gutters{background:#f5f5f5;border-right:0}.cm-s-base16-light .CodeMirror-guttermarker{color:#ac4142}.cm-s-base16-light .CodeMirror-guttermarker-subtle,.cm-s-base16-light .CodeMirror-linenumber{color:#b0b0b0}.cm-s-base16-light .CodeMirror-cursor{border-left:1px solid #505050!important}.cm-s-base16-light span.cm-comment{color:#8f5536}.cm-s-base16-light span.cm-atom,.cm-s-base16-light span.cm-number{color:#aa759f}.cm-s-base16-light span.cm-attribute,.cm-s-base16-light span.cm-property{color:#90a959}.cm-s-base16-light span.cm-keyword{color:#ac4142}.cm-s-base16-light span.cm-string{color:#f4bf75}.cm-s-base16-light span.cm-variable{color:#90a959}.cm-s-base16-light span.cm-variable-2{color:#6a9fb5}.cm-s-base16-light span.cm-def{color:#d28445}.cm-s-base16-light span.cm-bracket{color:#202020}.cm-s-base16-light span.cm-tag{color:#ac4142}.cm-s-base16-light span.cm-link{color:#aa759f}.cm-s-base16-light span.cm-error{background:#ac4142;color:#505050}.cm-s-base16-light .CodeMirror-activeline-background{background:#DDDCDC!important}.cm-s-base16-light .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-blackboard.CodeMirror{background:#0C1021;color:#F8F8F8}.cm-s-blackboard .CodeMirror-selected{background:#253B76!important}.cm-s-blackboard.CodeMirror ::selection{background:rgba(37,59,118,.99)}.cm-s-blackboard.CodeMirror ::-moz-selection{background:rgba(37,59,118,.99)}.cm-s-blackboard .CodeMirror-gutters{background:#0C1021;border-right:0}.cm-s-blackboard .CodeMirror-guttermarker{color:#FBDE2D}.cm-s-blackboard .CodeMirror-guttermarker-subtle,.cm-s-blackboard .CodeMirror-linenumber{color:#888}.cm-s-blackboard .CodeMirror-cursor{border-left:1px solid #A7A7A7!important}.cm-s-blackboard .cm-keyword{color:#FBDE2D}.cm-s-blackboard .cm-atom,.cm-s-blackboard .cm-number{color:#D8FA3C}.cm-s-blackboard .cm-def{color:#8DA6CE}.cm-s-blackboard .cm-variable{color:#FF6400}.cm-s-blackboard .cm-operator{color:#FBDE2D}.cm-s-blackboard .cm-comment{color:#AEAEAE}.cm-s-blackboard .cm-string,.cm-s-blackboard .cm-string-2{color:#61CE3C}.cm-s-blackboard .cm-meta{color:#D8FA3C}.cm-s-blackboard .cm-attribute,.cm-s-blackboard .cm-builtin,.cm-s-blackboard .cm-tag{color:#8DA6CE}.cm-s-blackboard .cm-header{color:#FF6400}.cm-s-blackboard .cm-hr{color:#AEAEAE}.cm-s-blackboard .cm-link{color:#8DA6CE}.cm-s-blackboard .cm-error{background:#9D1E15;color:#F8F8F8}.cm-s-blackboard .CodeMirror-activeline-background{background:#3C3636!important}.cm-s-blackboard .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-cobalt.CodeMirror{background:#002240;color:#fff}.cm-s-cobalt div.CodeMirror-selected{background:#b36539!important}.cm-s-cobalt.CodeMirror ::selection{background:rgba(179,101,57,.99)}.cm-s-cobalt.CodeMirror ::-moz-selection{background:rgba(179,101,57,.99)}.cm-s-cobalt .CodeMirror-gutters{background:#002240;border-right:1px solid #aaa}.cm-s-cobalt .CodeMirror-guttermarker{color:#ffee80}.cm-s-cobalt .CodeMirror-guttermarker-subtle,.cm-s-cobalt .CodeMirror-linenumber{color:#d0d0d0}.cm-s-cobalt .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-cobalt span.cm-comment{color:#08f}.cm-s-cobalt span.cm-atom{color:#845dc4}.cm-s-cobalt span.cm-attribute,.cm-s-cobalt span.cm-number{color:#ff80e1}.cm-s-cobalt span.cm-keyword{color:#ffee80}.cm-s-cobalt span.cm-string{color:#3ad900}.cm-s-cobalt span.cm-meta{color:#ff9d00}.cm-s-cobalt span.cm-tag,.cm-s-cobalt span.cm-variable-2{color:#9effff}.cm-s-cobalt span.cm-def,.cm-s-cobalt span.cm-variable-3{color:#fff}.cm-s-cobalt span.cm-bracket{color:#d8d8d8}.cm-s-cobalt span.cm-builtin,.cm-s-cobalt span.cm-special{color:#ff9e59}.cm-s-cobalt span.cm-link{color:#845dc4}.cm-s-cobalt span.cm-error{color:#9d1e15}.cm-s-cobalt .CodeMirror-activeline-background{background:#002D57!important}.cm-s-cobalt .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-colorforth.CodeMirror{background:#000;color:#f8f8f8}.cm-s-colorforth .CodeMirror-gutters{background:#0a001f;border-right:1px solid #aaa}.cm-s-colorforth .CodeMirror-guttermarker{color:#FFBD40}.cm-s-colorforth .CodeMirror-guttermarker-subtle{color:#78846f}.cm-s-colorforth .CodeMirror-linenumber{color:#bababa}.cm-s-colorforth .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-colorforth span.cm-comment{color:#ededed}.cm-s-colorforth span.cm-def{color:#ff1c1c;font-weight:700}.cm-s-colorforth span.cm-keyword{color:#ffd900}.cm-s-colorforth span.cm-builtin{color:#00d95a}.cm-s-colorforth span.cm-variable{color:#73ff00}.cm-s-colorforth span.cm-string{color:#007bff}.cm-s-colorforth span.cm-number{color:#00c4ff}.cm-s-colorforth span.cm-atom{color:#606060}.cm-s-colorforth span.cm-variable-2{color:#EEE}.cm-s-colorforth span.cm-variable-3{color:#DDD}.cm-s-colorforth span.cm-meta{color:#ff0}.cm-s-colorforth span.cm-qualifier{color:#FFF700}.cm-s-colorforth span.cm-bracket{color:#cc7}.cm-s-colorforth span.cm-tag{color:#FFBD40}.cm-s-colorforth span.cm-attribute{color:#FFF700}.cm-s-colorforth span.cm-error{color:red}.cm-s-colorforth .CodeMirror-selected{background:#333d53!important}.cm-s-colorforth span.cm-compilation{background:rgba(255,255,255,.12)}.cm-s-colorforth .CodeMirror-activeline-background{background:#253540!important} +.cm-s-eclipse span.cm-meta{color:#FF1717}.cm-s-eclipse span.cm-keyword{line-height:1em;font-weight:700;color:#7F0055}.cm-s-eclipse span.cm-atom{color:#219}.cm-s-eclipse span.cm-number{color:#164}.cm-s-eclipse span.cm-def{color:#00f}.cm-s-eclipse span.cm-variable{color:#000}.cm-s-eclipse span.cm-variable-2,.cm-s-eclipse span.cm-variable-3{color:#0000C0}.cm-s-eclipse span.cm-operator,.cm-s-eclipse span.cm-property{color:#000}.cm-s-eclipse span.cm-comment{color:#3F7F5F}.cm-s-eclipse span.cm-string{color:#2A00FF}.cm-s-eclipse span.cm-string-2{color:#f50}.cm-s-eclipse span.cm-qualifier{color:#555}.cm-s-eclipse span.cm-builtin{color:#30a}.cm-s-eclipse span.cm-bracket{color:#cc7}.cm-s-eclipse span.cm-tag{color:#170}.cm-s-eclipse span.cm-attribute{color:#00c}.cm-s-eclipse span.cm-link{color:#219}.cm-s-eclipse span.cm-error{color:red}.cm-s-eclipse .CodeMirror-activeline-background{background:#e8f2ff!important}.cm-s-eclipse .CodeMirror-matchingbracket{outline:grey solid 1px;color:#000!important} +.cm-s-elegant span.cm-atom,.cm-s-elegant span.cm-number,.cm-s-elegant span.cm-string{color:#762}.cm-s-elegant span.cm-comment{color:#262;font-style:italic;line-height:1em}.cm-s-elegant span.cm-meta{color:#555;font-style:italic;line-height:1em}.cm-s-elegant span.cm-variable{color:#000}.cm-s-elegant span.cm-variable-2{color:#b11}.cm-s-elegant span.cm-qualifier{color:#555}.cm-s-elegant span.cm-keyword{color:#730}.cm-s-elegant span.cm-builtin{color:#30a}.cm-s-elegant span.cm-link{color:#762}.cm-s-elegant span.cm-error{background-color:#fdd}.cm-s-elegant .CodeMirror-activeline-background{background:#e8f2ff!important}.cm-s-elegant .CodeMirror-matchingbracket{outline:grey solid 1px;color:#000!important} +.cm-s-erlang-dark.CodeMirror{background:#002240;color:#fff}.cm-s-erlang-dark div.CodeMirror-selected{background:#b36539!important}.cm-s-erlang-dark.CodeMirror ::selection{background:rgba(179,101,57,.99)}.cm-s-erlang-dark.CodeMirror ::-moz-selection{background:rgba(179,101,57,.99)}.cm-s-erlang-dark .CodeMirror-gutters{background:#002240;border-right:1px solid #aaa}.cm-s-erlang-dark .CodeMirror-guttermarker{color:#fff}.cm-s-erlang-dark .CodeMirror-guttermarker-subtle,.cm-s-erlang-dark .CodeMirror-linenumber{color:#d0d0d0}.cm-s-erlang-dark .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-erlang-dark span.cm-atom{color:#f133f1}.cm-s-erlang-dark span.cm-attribute{color:#ff80e1}.cm-s-erlang-dark span.cm-bracket{color:#ff9d00}.cm-s-erlang-dark span.cm-builtin{color:#eaa}.cm-s-erlang-dark span.cm-comment{color:#77f}.cm-s-erlang-dark span.cm-def{color:#e7a}.cm-s-erlang-dark span.cm-keyword{color:#ffee80}.cm-s-erlang-dark span.cm-meta{color:#50fefe}.cm-s-erlang-dark span.cm-number{color:#ffd0d0}.cm-s-erlang-dark span.cm-operator{color:#d55}.cm-s-erlang-dark span.cm-property,.cm-s-erlang-dark span.cm-qualifier,.cm-s-erlang-dark span.cm-quote{color:#ccc}.cm-s-erlang-dark span.cm-special{color:#fbb}.cm-s-erlang-dark span.cm-string{color:#3ad900}.cm-s-erlang-dark span.cm-string-2{color:#ccc}.cm-s-erlang-dark span.cm-tag{color:#9effff}.cm-s-erlang-dark span.cm-variable{color:#50fe50}.cm-s-erlang-dark span.cm-variable-2{color:#e0e}.cm-s-erlang-dark span.cm-variable-3{color:#ccc}.cm-s-erlang-dark span.cm-error{color:#9d1e15}.cm-s-erlang-dark .CodeMirror-activeline-background{background:#013461!important}.cm-s-erlang-dark .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-lesser-dark{line-height:1.3em}.cm-s-lesser-dark.CodeMirror{background:#262626;color:#EBEFE7;text-shadow:0 -1px 1px #262626}.cm-s-lesser-dark div.CodeMirror-selected{background:#45443B!important}.cm-s-lesser-dark.CodeMirror ::selection{background:rgba(69,68,59,.99)}.cm-s-lesser-dark.CodeMirror ::-moz-selection{background:rgba(69,68,59,.99)}.cm-s-lesser-dark .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-lesser-dark pre{padding:0 8px}.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket{color:#7EFC7E}.cm-s-lesser-dark .CodeMirror-gutters{background:#262626;border-right:1px solid #aaa}.cm-s-lesser-dark .CodeMirror-guttermarker{color:#599eff}.cm-s-lesser-dark .CodeMirror-guttermarker-subtle,.cm-s-lesser-dark .CodeMirror-linenumber{color:#777}.cm-s-lesser-dark span.cm-keyword{color:#599eff}.cm-s-lesser-dark span.cm-atom{color:#C2B470}.cm-s-lesser-dark span.cm-number{color:#B35E4D}.cm-s-lesser-dark span.cm-def{color:#fff}.cm-s-lesser-dark span.cm-variable{color:#D9BF8C}.cm-s-lesser-dark span.cm-variable-2{color:#669199}.cm-s-lesser-dark span.cm-variable-3{color:#fff}.cm-s-lesser-dark span.cm-operator,.cm-s-lesser-dark span.cm-property{color:#92A75C}.cm-s-lesser-dark span.cm-comment{color:#666}.cm-s-lesser-dark span.cm-string{color:#BCD279}.cm-s-lesser-dark span.cm-string-2{color:#f50}.cm-s-lesser-dark span.cm-meta{color:#738C73}.cm-s-lesser-dark span.cm-qualifier{color:#555}.cm-s-lesser-dark span.cm-builtin{color:#ff9e59}.cm-s-lesser-dark span.cm-bracket{color:#EBEFE7}.cm-s-lesser-dark span.cm-tag{color:#669199}.cm-s-lesser-dark span.cm-attribute{color:#00c}.cm-s-lesser-dark span.cm-header{color:#a0a}.cm-s-lesser-dark span.cm-quote{color:#090}.cm-s-lesser-dark span.cm-hr{color:#999}.cm-s-lesser-dark span.cm-link{color:#00c}.cm-s-lesser-dark span.cm-error{color:#9d1e15}.cm-s-lesser-dark .CodeMirror-activeline-background{background:#3C3A3A!important}.cm-s-lesser-dark .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-mbo.CodeMirror{background:#2c2c2c;color:#ffffec}.cm-s-mbo div.CodeMirror-selected{background:#716C62!important}.cm-s-mbo.CodeMirror ::selection{background:rgba(113,108,98,.99)}.cm-s-mbo.CodeMirror ::-moz-selection{background:rgba(113,108,98,.99)}.cm-s-mbo .CodeMirror-gutters{background:#4e4e4e;border-right:0}.cm-s-mbo .CodeMirror-guttermarker{color:#fff}.cm-s-mbo .CodeMirror-guttermarker-subtle{color:grey}.cm-s-mbo .CodeMirror-linenumber{color:#dadada}.cm-s-mbo .CodeMirror-cursor{border-left:1px solid #ffffec!important}.cm-s-mbo span.cm-comment{color:#95958a}.cm-s-mbo span.cm-atom,.cm-s-mbo span.cm-number{color:#00a8c6}.cm-s-mbo span.cm-attribute,.cm-s-mbo span.cm-property{color:#9ddfe9}.cm-s-mbo span.cm-keyword{color:#ffb928}.cm-s-mbo span.cm-string{color:#ffcf6c}.cm-s-mbo span.cm-string.cm-property,.cm-s-mbo span.cm-variable{color:#ffffec}.cm-s-mbo span.cm-variable-2{color:#00a8c6}.cm-s-mbo span.cm-def{color:#ffffec}.cm-s-mbo span.cm-bracket{color:#fffffc;font-weight:700}.cm-s-mbo span.cm-tag{color:#9ddfe9}.cm-s-mbo span.cm-link{color:#f54b07}.cm-s-mbo span.cm-error{border-bottom:#636363;color:#ffffec}.cm-s-mbo span.cm-qualifier{color:#ffffec}.cm-s-mbo .CodeMirror-activeline-background{background:#494b41!important}.cm-s-mbo .CodeMirror-matchingbracket{color:#222!important}.cm-s-mbo .CodeMirror-matchingtag{background:rgba(255,255,255,.37)} +.cm-s-mdn-like.CodeMirror{color:#999;background-color:#fff}.cm-s-mdn-like .CodeMirror-selected{background:#cfc!important}.cm-s-mdn-like.CodeMirror ::selection{background:#cfc}.cm-s-mdn-like.CodeMirror ::-moz-selection{background:#cfc}.cm-s-mdn-like .CodeMirror-gutters{background:#f8f8f8;border-left:6px solid rgba(0,83,159,.65);color:#333}.cm-s-mdn-like .CodeMirror-linenumber{color:#aaa;padding-left:8px}div.cm-s-mdn-like .CodeMirror-cursor{border-left:2px solid #222}.cm-s-mdn-like .cm-keyword{color:#6262FF}.cm-s-mdn-like .cm-atom{color:#F90}.cm-s-mdn-like .cm-number{color:#ca7841}.cm-s-mdn-like .cm-def{color:#8DA6CE}.cm-s-mdn-like span.cm-tag,.cm-s-mdn-like span.cm-variable-2{color:#690}.cm-s-mdn-like .cm-variable,.cm-s-mdn-like span.cm-def,.cm-s-mdn-like span.cm-variable-3{color:#07a}.cm-s-mdn-like .cm-property{color:#905}.cm-s-mdn-like .cm-qualifier{color:#690}.cm-s-mdn-like .cm-operator{color:#cda869}.cm-s-mdn-like .cm-comment{color:#777;font-weight:400}.cm-s-mdn-like .cm-string{color:#07a;font-style:italic}.cm-s-mdn-like .cm-string-2{color:#bd6b18}.cm-s-mdn-like .cm-meta{color:#000}.cm-s-mdn-like .cm-builtin{color:#9B7536}.cm-s-mdn-like .cm-tag{color:#997643}.cm-s-mdn-like .cm-attribute{color:#d6bb6d}.cm-s-mdn-like .cm-header{color:#FF6400}.cm-s-mdn-like .cm-hr{color:#AEAEAE}.cm-s-mdn-like .cm-link{color:#ad9361;font-style:italic;text-decoration:none}.cm-s-mdn-like .cm-error{border-bottom:1px solid red}div.cm-s-mdn-like .CodeMirror-activeline-background{background:#efefff}div.cm-s-mdn-like span.CodeMirror-matchingbracket{outline:grey solid 1px;color:inherit}.cm-s-mdn-like.CodeMirror{background-image:url(data:image/png;base64,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)} +.cm-s-midnight span.CodeMirror-matchhighlight{background:#494949}.cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight{background:#314D67!important}.cm-s-midnight .CodeMirror-activeline-background{background:#253540!important}.cm-s-midnight.CodeMirror{background:#0F192A;color:#D1EDFF;border-top:1px solid #000;border-bottom:1px solid #000}.cm-s-midnight div.CodeMirror-selected{background:#314D67!important}.cm-s-midnight.CodeMirror ::selection{background:rgba(49,77,103,.99)}.cm-s-midnight.CodeMirror ::-moz-selection{background:rgba(49,77,103,.99)}.cm-s-midnight .CodeMirror-gutters{background:#0F192A;border-right:1px solid}.cm-s-midnight .CodeMirror-guttermarker{color:#fff}.cm-s-midnight .CodeMirror-guttermarker-subtle{color:#d0d0d0}.cm-s-midnight .CodeMirror-linenumber{color:#D0D0D0}.cm-s-midnight .CodeMirror-cursor{border-left:1px solid #F8F8F0!important}.cm-s-midnight span.cm-comment{color:#428BDD}.cm-s-midnight span.cm-atom{color:#AE81FF}.cm-s-midnight span.cm-number{color:#D1EDFF}.cm-s-midnight span.cm-attribute,.cm-s-midnight span.cm-property{color:#A6E22E}.cm-s-midnight span.cm-keyword{color:#E83737}.cm-s-midnight span.cm-string{color:#1DC116}.cm-s-midnight span.cm-variable,.cm-s-midnight span.cm-variable-2{color:#FFAA3E}.cm-s-midnight span.cm-def{color:#4DD}.cm-s-midnight span.cm-bracket{color:#D1EDFF}.cm-s-midnight span.cm-tag{color:#449}.cm-s-midnight span.cm-link{color:#AE81FF}.cm-s-midnight span.cm-error{background:#F92672;color:#F8F8F0}.cm-s-midnight .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-monokai.CodeMirror{background:#272822;color:#f8f8f2}.cm-s-monokai div.CodeMirror-selected{background:#49483E!important}.cm-s-monokai.CodeMirror ::selection{background:rgba(73,72,62,.99)}.cm-s-monokai.CodeMirror ::-moz-selection{background:rgba(73,72,62,.99)}.cm-s-monokai .CodeMirror-gutters{background:#272822;border-right:0}.cm-s-monokai .CodeMirror-guttermarker{color:#fff}.cm-s-monokai .CodeMirror-guttermarker-subtle,.cm-s-monokai .CodeMirror-linenumber{color:#d0d0d0}.cm-s-monokai .CodeMirror-cursor{border-left:1px solid #f8f8f0!important}.cm-s-monokai span.cm-comment{color:#75715e}.cm-s-monokai span.cm-atom,.cm-s-monokai span.cm-number{color:#ae81ff}.cm-s-monokai span.cm-attribute,.cm-s-monokai span.cm-property{color:#a6e22e}.cm-s-monokai span.cm-keyword{color:#f92672}.cm-s-monokai span.cm-string{color:#e6db74}.cm-s-monokai span.cm-variable{color:#a6e22e}.cm-s-monokai span.cm-variable-2{color:#9effff}.cm-s-monokai span.cm-def{color:#fd971f}.cm-s-monokai span.cm-bracket{color:#f8f8f2}.cm-s-monokai span.cm-tag{color:#f92672}.cm-s-monokai span.cm-link{color:#ae81ff}.cm-s-monokai span.cm-error{background:#f92672;color:#f8f8f0}.cm-s-monokai .CodeMirror-activeline-background{background:#373831!important}.cm-s-monokai .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-neat span.cm-comment{color:#a86}.cm-s-neat span.cm-keyword{line-height:1em;font-weight:700;color:#00f}.cm-s-neat span.cm-string{color:#a22}.cm-s-neat span.cm-builtin{line-height:1em;font-weight:700;color:#077}.cm-s-neat span.cm-special{line-height:1em;font-weight:700;color:#0aa}.cm-s-neat span.cm-variable{color:#000}.cm-s-neat span.cm-atom,.cm-s-neat span.cm-number{color:#3a3}.cm-s-neat span.cm-meta{color:#555}.cm-s-neat span.cm-link{color:#3a3}.cm-s-neat .CodeMirror-activeline-background{background:#e8f2ff!important}.cm-s-neat .CodeMirror-matchingbracket{outline:grey solid 1px;color:#000!important} +.cm-s-neo.CodeMirror{background-color:#fff;color:#2e383c;line-height:1.4375}.cm-s-neo .cm-comment{color:#75787b}.cm-s-neo .cm-keyword,.cm-s-neo .cm-property{color:#1d75b3}.cm-s-neo .cm-atom,.cm-s-neo .cm-number{color:#75438a}.cm-s-neo .cm-node,.cm-s-neo .cm-tag{color:#9c3328}.cm-s-neo .cm-string{color:#b35e14}.cm-s-neo .cm-qualifier,.cm-s-neo .cm-variable{color:#047d65}.cm-s-neo pre{padding:0}.cm-s-neo .CodeMirror-gutters{border:none;border-right:10px solid transparent;background-color:transparent}.cm-s-neo .CodeMirror-linenumber{padding:0;color:#e0e2e5}.cm-s-neo .CodeMirror-guttermarker{color:#1d75b3}.cm-s-neo .CodeMirror-guttermarker-subtle{color:#e0e2e5}.cm-s-neo div.CodeMirror-cursor{width:auto;border:0;background:rgba(155,157,162,.37);z-index:1} +.cm-s-night.CodeMirror{background:#0a001f;color:#f8f8f8}.cm-s-night div.CodeMirror-selected{background:#447!important}.cm-s-night.CodeMirror ::selection{background:rgba(68,68,119,.99)}.cm-s-night.CodeMirror ::-moz-selection{background:rgba(68,68,119,.99)}.cm-s-night .CodeMirror-gutters{background:#0a001f;border-right:1px solid #aaa}.cm-s-night .CodeMirror-guttermarker{color:#fff}.cm-s-night .CodeMirror-guttermarker-subtle{color:#bbb}.cm-s-night .CodeMirror-linenumber{color:#f8f8f8}.cm-s-night .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-night span.cm-atom{color:#845dc4}.cm-s-night span.cm-attribute,.cm-s-night span.cm-number{color:#ffd500}.cm-s-night span.cm-keyword{color:#599eff}.cm-s-night span.cm-string{color:#37f14a}.cm-s-night span.cm-meta{color:#7678e2}.cm-s-night span.cm-tag,.cm-s-night span.cm-variable-2{color:#99b2ff}.cm-s-night span.cm-def,.cm-s-night span.cm-variable-3{color:#fff}.cm-s-night span.cm-bracket{color:#8da6ce}.cm-s-night span.cm-comment{color:#6900a1}.cm-s-night span.cm-builtin,.cm-s-night span.cm-special{color:#ff9e59}.cm-s-night span.cm-link{color:#845dc4}.cm-s-night span.cm-error{color:#9d1e15}.cm-s-night .CodeMirror-activeline-background{background:#1C005A!important}.cm-s-night .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-paraiso-dark.CodeMirror{background:#2f1e2e;color:#b9b6b0}.cm-s-paraiso-dark div.CodeMirror-selected{background:#41323f!important}.cm-s-paraiso-dark.CodeMirror ::selection{background:rgba(65,50,63,.99)}.cm-s-paraiso-dark.CodeMirror ::-moz-selection{background:rgba(65,50,63,.99)}.cm-s-paraiso-dark .CodeMirror-gutters{background:#2f1e2e;border-right:0}.cm-s-paraiso-dark .CodeMirror-guttermarker{color:#ef6155}.cm-s-paraiso-dark .CodeMirror-guttermarker-subtle,.cm-s-paraiso-dark .CodeMirror-linenumber{color:#776e71}.cm-s-paraiso-dark .CodeMirror-cursor{border-left:1px solid #8d8687!important}.cm-s-paraiso-dark span.cm-comment{color:#e96ba8}.cm-s-paraiso-dark span.cm-atom,.cm-s-paraiso-dark span.cm-number{color:#815ba4}.cm-s-paraiso-dark span.cm-attribute,.cm-s-paraiso-dark span.cm-property{color:#48b685}.cm-s-paraiso-dark span.cm-keyword{color:#ef6155}.cm-s-paraiso-dark span.cm-string{color:#fec418}.cm-s-paraiso-dark span.cm-variable{color:#48b685}.cm-s-paraiso-dark span.cm-variable-2{color:#06b6ef}.cm-s-paraiso-dark span.cm-def{color:#f99b15}.cm-s-paraiso-dark span.cm-bracket{color:#b9b6b0}.cm-s-paraiso-dark span.cm-tag{color:#ef6155}.cm-s-paraiso-dark span.cm-link{color:#815ba4}.cm-s-paraiso-dark span.cm-error{background:#ef6155;color:#8d8687}.cm-s-paraiso-dark .CodeMirror-activeline-background{background:#4D344A!important}.cm-s-paraiso-dark .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-paraiso-light.CodeMirror{background:#e7e9db;color:#41323f}.cm-s-paraiso-light div.CodeMirror-selected{background:#b9b6b0!important}.cm-s-paraiso-light.CodeMirror ::selection{background:#b9b6b0}.cm-s-paraiso-light.CodeMirror ::-moz-selection{background:#b9b6b0}.cm-s-paraiso-light .CodeMirror-gutters{background:#e7e9db;border-right:0}.cm-s-paraiso-light .CodeMirror-guttermarker{color:#000}.cm-s-paraiso-light .CodeMirror-guttermarker-subtle,.cm-s-paraiso-light .CodeMirror-linenumber{color:#8d8687}.cm-s-paraiso-light .CodeMirror-cursor{border-left:1px solid #776e71!important}.cm-s-paraiso-light span.cm-comment{color:#e96ba8}.cm-s-paraiso-light span.cm-atom,.cm-s-paraiso-light span.cm-number{color:#815ba4}.cm-s-paraiso-light span.cm-attribute,.cm-s-paraiso-light span.cm-property{color:#48b685}.cm-s-paraiso-light span.cm-keyword{color:#ef6155}.cm-s-paraiso-light span.cm-string{color:#fec418}.cm-s-paraiso-light span.cm-variable{color:#48b685}.cm-s-paraiso-light span.cm-variable-2{color:#06b6ef}.cm-s-paraiso-light span.cm-def{color:#f99b15}.cm-s-paraiso-light span.cm-bracket{color:#41323f}.cm-s-paraiso-light span.cm-tag{color:#ef6155}.cm-s-paraiso-light span.cm-link{color:#815ba4}.cm-s-paraiso-light span.cm-error{background:#ef6155;color:#776e71}.cm-s-paraiso-light .CodeMirror-activeline-background{background:#CFD1C4!important}.cm-s-paraiso-light .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-pastel-on-dark.CodeMirror{background:#2c2827;color:#8F938F;line-height:1.5;font-size:14px}.cm-s-pastel-on-dark div.CodeMirror-selected{background:rgba(221,240,255,.2)!important}.cm-s-pastel-on-dark.CodeMirror ::selection{background:rgba(221,240,255,.2)}.cm-s-pastel-on-dark.CodeMirror ::-moz-selection{background:rgba(221,240,255,.2)}.cm-s-pastel-on-dark .CodeMirror-gutters{background:#34302f;border-right:0;padding:0 3px}.cm-s-pastel-on-dark .CodeMirror-guttermarker{color:#fff}.cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle,.cm-s-pastel-on-dark .CodeMirror-linenumber{color:#8F938F}.cm-s-pastel-on-dark .CodeMirror-cursor{border-left:1px solid #A7A7A7!important}.cm-s-pastel-on-dark span.cm-comment{color:#A6C6FF}.cm-s-pastel-on-dark span.cm-atom{color:#DE8E30}.cm-s-pastel-on-dark span.cm-number{color:#CCC}.cm-s-pastel-on-dark span.cm-property{color:#8F938F}.cm-s-pastel-on-dark span.cm-attribute{color:#a6e22e}.cm-s-pastel-on-dark span.cm-keyword{color:#AEB2F8}.cm-s-pastel-on-dark span.cm-string{color:#66A968}.cm-s-pastel-on-dark span.cm-variable{color:#AEB2F8}.cm-s-pastel-on-dark span.cm-variable-2{color:#BEBF55}.cm-s-pastel-on-dark span.cm-variable-3{color:#DE8E30}.cm-s-pastel-on-dark span.cm-def{color:#757aD8}.cm-s-pastel-on-dark span.cm-bracket{color:#f8f8f2}.cm-s-pastel-on-dark span.cm-tag{color:#C1C144}.cm-s-pastel-on-dark span.cm-link{color:#ae81ff}.cm-s-pastel-on-dark span.cm-builtin,.cm-s-pastel-on-dark span.cm-qualifier{color:#C1C144}.cm-s-pastel-on-dark span.cm-error{background:#757aD8;color:#f8f8f0}.cm-s-pastel-on-dark .CodeMirror-activeline-background{background:rgba(255,255,255,.031)!important}.cm-s-pastel-on-dark .CodeMirror-matchingbracket{border:1px solid rgba(255,255,255,.25);color:#8F938F!important;margin:-1px -1px 0} +.cm-s-rubyblue.CodeMirror{background:#112435;color:#fff}.cm-s-rubyblue div.CodeMirror-selected{background:#38566F!important}.cm-s-rubyblue.CodeMirror ::selection{background:rgba(56,86,111,.99)}.cm-s-rubyblue.CodeMirror ::-moz-selection{background:rgba(56,86,111,.99)}.cm-s-rubyblue .CodeMirror-gutters{background:#1F4661;border-right:7px solid #3E7087}.cm-s-rubyblue .CodeMirror-guttermarker{color:#fff}.cm-s-rubyblue .CodeMirror-guttermarker-subtle{color:#3E7087}.cm-s-rubyblue .CodeMirror-linenumber{color:#fff}.cm-s-rubyblue .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-rubyblue span.cm-comment{color:#999;font-style:italic;line-height:1em}.cm-s-rubyblue span.cm-atom{color:#F4C20B}.cm-s-rubyblue span.cm-attribute,.cm-s-rubyblue span.cm-number{color:#82C6E0}.cm-s-rubyblue span.cm-keyword{color:#F0F}.cm-s-rubyblue span.cm-string{color:#F08047}.cm-s-rubyblue span.cm-meta{color:#F0F}.cm-s-rubyblue span.cm-tag,.cm-s-rubyblue span.cm-variable-2{color:#7BD827}.cm-s-rubyblue span.cm-def,.cm-s-rubyblue span.cm-variable-3{color:#fff}.cm-s-rubyblue span.cm-bracket{color:#F0F}.cm-s-rubyblue span.cm-link{color:#F4C20B}.cm-s-rubyblue span.CodeMirror-matchingbracket{color:#F0F!important}.cm-s-rubyblue span.cm-builtin,.cm-s-rubyblue span.cm-special{color:#FF9D00}.cm-s-rubyblue span.cm-error{color:#AF2018}.cm-s-rubyblue .CodeMirror-activeline-background{background:#173047!important} +.solarized.base03{color:#002b36}.solarized.base02{color:#073642}.solarized.base01{color:#586e75}.solarized.base00{color:#657b83}.solarized.base0{color:#839496}.solarized.base1{color:#93a1a1}.solarized.base2{color:#eee8d5}.solarized.base3{color:#fdf6e3}.solarized.solar-yellow{color:#b58900}.solarized.solar-orange{color:#cb4b16}.solarized.solar-red{color:#dc322f}.solarized.solar-magenta{color:#d33682}.solarized.solar-violet{color:#6c71c4}.solarized.solar-blue{color:#268bd2}.solarized.solar-cyan{color:#2aa198}.solarized.solar-green{color:#859900}.cm-s-solarized{line-height:1.45em;color-profile:sRGB;rendering-intent:auto}.cm-s-solarized.cm-s-dark{color:#839496;background-color:#002b36;text-shadow:#002b36 0 1px}.cm-s-solarized.cm-s-light{background-color:#fdf6e3;color:#657b83;text-shadow:#eee8d5 0 1px}.cm-s-solarized .CodeMirror-widget{text-shadow:none}.cm-s-solarized .cm-keyword{color:#cb4b16}.cm-s-solarized .cm-atom,.cm-s-solarized .cm-number{color:#d33682}.cm-s-solarized .cm-def{color:#2aa198}.cm-s-solarized .cm-variable{color:#268bd2}.cm-s-solarized .cm-variable-2{color:#b58900}.cm-s-solarized .cm-variable-3{color:#6c71c4}.cm-s-solarized .cm-property{color:#2aa198}.cm-s-solarized .cm-operator{color:#6c71c4}.cm-s-solarized .cm-comment{color:#586e75;font-style:italic}.cm-s-solarized .cm-string{color:#859900}.cm-s-solarized .cm-string-2{color:#b58900}.cm-s-solarized .cm-meta{color:#859900}.cm-s-solarized .cm-qualifier{color:#b58900}.cm-s-solarized .cm-builtin{color:#d33682}.cm-s-solarized .cm-bracket{color:#cb4b16}.cm-s-solarized .CodeMirror-matchingbracket{color:#859900}.cm-s-solarized .CodeMirror-nonmatchingbracket{color:#dc322f}.cm-s-solarized .cm-tag{color:#93a1a1}.cm-s-solarized .cm-attribute{color:#2aa198}.cm-s-solarized .cm-header{color:#586e75}.cm-s-solarized .cm-quote{color:#93a1a1}.cm-s-solarized .cm-hr{color:transparent;border-top:1px solid #586e75;display:block}.cm-s-solarized .cm-link{color:#93a1a1;cursor:pointer}.cm-s-solarized .cm-special{color:#6c71c4}.cm-s-solarized .cm-em{color:#999;text-decoration:underline;text-decoration-style:dotted}.cm-s-solarized .cm-strong{color:#eee}.cm-s-solarized .cm-error,.cm-s-solarized .cm-invalidchar{color:#586e75;border-bottom:1px dotted #dc322f}.cm-s-solarized.cm-s-dark .CodeMirror-selected{background:#073642}.cm-s-solarized.cm-s-dark.CodeMirror ::selection{background:rgba(7,54,66,.99)}.cm-s-solarized.cm-s-dark.CodeMirror ::-moz-selection{background:rgba(7,54,66,.99)}.cm-s-solarized.cm-s-light .CodeMirror-selected,.cm-s-solarized.cm-s-light.CodeMirror ::selection{background:#eee8d5}.cm-s-solarized.cm-s-lightCodeMirror ::-moz-selection{background:#eee8d5}.cm-s-solarized.CodeMirror{-moz-box-shadow:inset 7px 0 12px -6px #000;-webkit-box-shadow:inset 7px 0 12px -6px #000;box-shadow:inset 7px 0 12px -6px #000}.cm-s-solarized .CodeMirror-gutters{border-right:1px solid}.cm-s-solarized.cm-s-dark .CodeMirror-gutters{background-color:#002b36;border-color:#00232c}.cm-s-solarized.cm-s-dark .CodeMirror-linenumber{text-shadow:#021014 0 -1px}.cm-s-solarized.cm-s-light .CodeMirror-gutters{background-color:#fdf6e3;border-color:#eee8d5}.cm-s-solarized .CodeMirror-linenumber{color:#586e75;padding:0 5px}.cm-s-solarized .CodeMirror-guttermarker-subtle{color:#586e75}.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker{color:#ddd}.cm-s-solarized.cm-s-light .CodeMirror-guttermarker{color:#cb4b16}.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text{color:#586e75}.cm-s-solarized .CodeMirror-lines .CodeMirror-cursor{border-left:1px solid #819090}.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background{background:rgba(255,255,255,.1)}.cm-s-solarized.cm-s-light .CodeMirror-activeline-background{background:rgba(0,0,0,.1)} +.cm-s-the-matrix.CodeMirror{background:#000;color:#0F0}.cm-s-the-matrix div.CodeMirror-selected{background:#2D2D2D!important}.cm-s-the-matrix.CodeMirror ::selection{background:rgba(45,45,45,.99)}.cm-s-the-matrix.CodeMirror ::-moz-selection{background:rgba(45,45,45,.99)}.cm-s-the-matrix .CodeMirror-gutters{background:#060;border-right:2px solid #0F0}.cm-s-the-matrix .CodeMirror-guttermarker{color:#0f0}.cm-s-the-matrix .CodeMirror-guttermarker-subtle{color:#fff}.cm-s-the-matrix .CodeMirror-linenumber{color:#FFF}.cm-s-the-matrix .CodeMirror-cursor{border-left:1px solid #0F0!important}.cm-s-the-matrix span.cm-keyword{color:#008803;font-weight:700}.cm-s-the-matrix span.cm-atom{color:#3FF}.cm-s-the-matrix span.cm-number{color:#FFB94F}.cm-s-the-matrix span.cm-def{color:#99C}.cm-s-the-matrix span.cm-variable{color:#F6C}.cm-s-the-matrix span.cm-variable-2{color:#C6F}.cm-s-the-matrix span.cm-variable-3{color:#96F}.cm-s-the-matrix span.cm-property{color:#62FFA0}.cm-s-the-matrix span.cm-operator{color:#999}.cm-s-the-matrix span.cm-comment{color:#CCC}.cm-s-the-matrix span.cm-string{color:#39C}.cm-s-the-matrix span.cm-meta{color:#C9F}.cm-s-the-matrix span.cm-qualifier{color:#FFF700}.cm-s-the-matrix span.cm-builtin{color:#30a}.cm-s-the-matrix span.cm-bracket{color:#cc7}.cm-s-the-matrix span.cm-tag{color:#FFBD40}.cm-s-the-matrix span.cm-attribute{color:#FFF700}.cm-s-the-matrix span.cm-error{color:red}.cm-s-the-matrix .CodeMirror-activeline-background{background:#040} +.cm-s-tomorrow-night-bright.CodeMirror{background:#000;color:#eaeaea}.cm-s-tomorrow-night-bright div.CodeMirror-selected{background:#424242!important}.cm-s-tomorrow-night-bright .CodeMirror-gutters{background:#000;border-right:0}.cm-s-tomorrow-night-bright .CodeMirror-guttermarker{color:#e78c45}.cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle{color:#777}.cm-s-tomorrow-night-bright .CodeMirror-linenumber{color:#424242}.cm-s-tomorrow-night-bright .CodeMirror-cursor{border-left:1px solid #6A6A6A!important}.cm-s-tomorrow-night-bright span.cm-comment{color:#d27b53}.cm-s-tomorrow-night-bright span.cm-atom,.cm-s-tomorrow-night-bright span.cm-number{color:#a16a94}.cm-s-tomorrow-night-bright span.cm-attribute,.cm-s-tomorrow-night-bright span.cm-property{color:#9c9}.cm-s-tomorrow-night-bright span.cm-keyword{color:#d54e53}.cm-s-tomorrow-night-bright span.cm-string{color:#e7c547}.cm-s-tomorrow-night-bright span.cm-variable{color:#b9ca4a}.cm-s-tomorrow-night-bright span.cm-variable-2{color:#7aa6da}.cm-s-tomorrow-night-bright span.cm-def{color:#e78c45}.cm-s-tomorrow-night-bright span.cm-bracket{color:#eaeaea}.cm-s-tomorrow-night-bright span.cm-tag{color:#d54e53}.cm-s-tomorrow-night-bright span.cm-link{color:#a16a94}.cm-s-tomorrow-night-bright span.cm-error{background:#d54e53;color:#6A6A6A}.cm-s-tomorrow-night-bright .CodeMirror-activeline-background{background:#2a2a2a!important}.cm-s-tomorrow-night-bright .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-tomorrow-night-eighties.CodeMirror{background:#000;color:#CCC}.cm-s-tomorrow-night-eighties div.CodeMirror-selected{background:#2D2D2D!important}.cm-s-tomorrow-night-eighties.CodeMirror ::selection{background:rgba(45,45,45,.99)}.cm-s-tomorrow-night-eighties.CodeMirror ::-moz-selection{background:rgba(45,45,45,.99)}.cm-s-tomorrow-night-eighties .CodeMirror-gutters{background:#000;border-right:0}.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker{color:#f2777a}.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle{color:#777}.cm-s-tomorrow-night-eighties .CodeMirror-linenumber{color:#515151}.cm-s-tomorrow-night-eighties .CodeMirror-cursor{border-left:1px solid #6A6A6A!important}.cm-s-tomorrow-night-eighties span.cm-comment{color:#d27b53}.cm-s-tomorrow-night-eighties span.cm-atom,.cm-s-tomorrow-night-eighties span.cm-number{color:#a16a94}.cm-s-tomorrow-night-eighties span.cm-attribute,.cm-s-tomorrow-night-eighties span.cm-property{color:#9c9}.cm-s-tomorrow-night-eighties span.cm-keyword{color:#f2777a}.cm-s-tomorrow-night-eighties span.cm-string{color:#fc6}.cm-s-tomorrow-night-eighties span.cm-variable{color:#9c9}.cm-s-tomorrow-night-eighties span.cm-variable-2{color:#69c}.cm-s-tomorrow-night-eighties span.cm-def{color:#f99157}.cm-s-tomorrow-night-eighties span.cm-bracket{color:#CCC}.cm-s-tomorrow-night-eighties span.cm-tag{color:#f2777a}.cm-s-tomorrow-night-eighties span.cm-link{color:#a16a94}.cm-s-tomorrow-night-eighties span.cm-error{background:#f2777a;color:#6A6A6A}.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background{background:#343600!important}.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important} +.cm-s-twilight.CodeMirror{background:#141414;color:#f7f7f7}.cm-s-twilight .CodeMirror-selected{background:#323232!important}.cm-s-twilight.CodeMirror ::selection{background:rgba(50,50,50,.99)}.cm-s-twilight.CodeMirror ::-moz-selection{background:rgba(50,50,50,.99)}.cm-s-twilight .CodeMirror-gutters{background:#222;border-right:1px solid #aaa}.cm-s-twilight .CodeMirror-guttermarker{color:#fff}.cm-s-twilight .CodeMirror-guttermarker-subtle,.cm-s-twilight .CodeMirror-linenumber{color:#aaa}.cm-s-twilight .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-twilight .cm-keyword{color:#f9ee98}.cm-s-twilight .cm-atom{color:#FC0}.cm-s-twilight .cm-number{color:#ca7841}.cm-s-twilight .cm-def{color:#8DA6CE}.cm-s-twilight span.cm-def,.cm-s-twilight span.cm-tag,.cm-s-twilight span.cm-variable-2,.cm-s-twilight span.cm-variable-3{color:#607392}.cm-s-twilight .cm-operator{color:#cda869}.cm-s-twilight .cm-comment{color:#777;font-style:italic;font-weight:400}.cm-s-twilight .cm-string{color:#8f9d6a;font-style:italic}.cm-s-twilight .cm-string-2{color:#bd6b18}.cm-s-twilight .cm-meta{background-color:#141414;color:#f7f7f7}.cm-s-twilight .cm-builtin{color:#cda869}.cm-s-twilight .cm-tag{color:#997643}.cm-s-twilight .cm-attribute{color:#d6bb6d}.cm-s-twilight .cm-header{color:#FF6400}.cm-s-twilight .cm-hr{color:#AEAEAE}.cm-s-twilight .cm-link{color:#ad9361;font-style:italic;text-decoration:none}.cm-s-twilight .cm-error{border-bottom:1px solid red}.cm-s-twilight .CodeMirror-activeline-background{background:#27282E!important}.cm-s-twilight .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-vibrant-ink.CodeMirror{background:#000;color:#fff}.cm-s-vibrant-ink .CodeMirror-selected{background:#35493c!important}.cm-s-vibrant-ink.CodeMirror ::selection{background:rgba(53,73,60,.99)}.cm-s-vibrant-ink.CodeMirror ::-moz-selection{background:rgba(53,73,60,.99)}.cm-s-vibrant-ink .CodeMirror-gutters{background:#002240;border-right:1px solid #aaa}.cm-s-vibrant-ink .CodeMirror-guttermarker{color:#fff}.cm-s-vibrant-ink .CodeMirror-guttermarker-subtle,.cm-s-vibrant-ink .CodeMirror-linenumber{color:#d0d0d0}.cm-s-vibrant-ink .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-vibrant-ink .cm-keyword{color:#CC7832}.cm-s-vibrant-ink .cm-atom{color:#FC0}.cm-s-vibrant-ink .cm-number{color:#FFEE98}.cm-s-vibrant-ink .cm-def{color:#8DA6CE}.cm-s-vibrant span.cm-def,.cm-s-vibrant span.cm-tag,.cm-s-vibrant-ink span.cm-variable-2,.cm-s-vibrant-ink span.cm-variable-3{color:#FFC66D}.cm-s-vibrant-ink .cm-operator{color:#888}.cm-s-vibrant-ink .cm-comment{color:gray;font-weight:700}.cm-s-vibrant-ink .cm-string{color:#A5C25C}.cm-s-vibrant-ink .cm-string-2{color:red}.cm-s-vibrant-ink .cm-meta{color:#D8FA3C}.cm-s-vibrant-ink .cm-attribute,.cm-s-vibrant-ink .cm-builtin,.cm-s-vibrant-ink .cm-tag{color:#8DA6CE}.cm-s-vibrant-ink .cm-header{color:#FF6400}.cm-s-vibrant-ink .cm-hr{color:#AEAEAE}.cm-s-vibrant-ink .cm-link{color:#00f}.cm-s-vibrant-ink .cm-error{border-bottom:1px solid red}.cm-s-vibrant-ink .CodeMirror-activeline-background{background:#27282E!important}.cm-s-vibrant-ink .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-wide span.cm-meta{color:#628fb5}.cm-s-wide span.cm-keyword{color:#0000e6}.cm-s-wide span.cm-atom{color:#93c}.cm-s-wide span.cm-number{color:#B35E4D}.cm-s-wide span.cm-def{color:#00f}.cm-s-wide span.cm-variable{color:#000}.cm-s-wide span.cm-variable-2,.cm-s-wide span.cm-variable-3{color:#0000C0}.cm-s-wide span.cm-property{color:#000}.cm-s-wide span.cm-operator{color:#090}.cm-s-wide span.cm-comment{color:#969696}.cm-s-wide span.cm-string{color:#ce7b00}.cm-s-wide span.cm-string-2{color:#f50}.cm-s-wide span.cm-qualifier{color:#555}.cm-s-wide span.cm-builtin{color:#30a}.cm-s-wide span.cm-bracket{color:#cc7}.cm-s-wide span.cm-tag{color:#170}.cm-s-wide span.cm-attribute{color:#00c}.cm-s-wide span.cm-link{color:#219}.cm-s-wide span.cm-error{color:red}.cm-s-wide .CodeMirror-activeline-background{background:#e8f2ff!important}.cm-s-wide .CodeMirror-matchingbracket{background-color:#ff0;color:#000!important} +.cm-s-xq-dark.CodeMirror{background:#0a001f;color:#f8f8f8}.cm-s-xq-dark .CodeMirror-selected{background:#27007A!important}.cm-s-xq-dark.CodeMirror ::selection{background:rgba(39,0,122,.99)}.cm-s-xq-dark.CodeMirror ::-moz-selection{background:rgba(39,0,122,.99)}.cm-s-xq-dark .CodeMirror-gutters{background:#0a001f;border-right:1px solid #aaa}.cm-s-xq-dark .CodeMirror-guttermarker{color:#FFBD40}.cm-s-xq-dark .CodeMirror-guttermarker-subtle,.cm-s-xq-dark .CodeMirror-linenumber{color:#f8f8f8}.cm-s-xq-dark .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-xq-dark span.cm-keyword{color:#FFBD40}.cm-s-xq-dark span.cm-atom{color:#6C8CD5}.cm-s-xq-dark span.cm-number{color:#164}.cm-s-xq-dark span.cm-def{color:#FFF;text-decoration:underline}.cm-s-xq-dark span.cm-variable{color:#FFF}.cm-s-xq-dark span.cm-variable-2{color:#EEE}.cm-s-xq-dark span.cm-variable-3{color:#DDD}.cm-s-xq-dark span.cm-comment{color:gray}.cm-s-xq-dark span.cm-string{color:#9FEE00}.cm-s-xq-dark span.cm-meta{color:#ff0}.cm-s-xq-dark span.cm-qualifier{color:#FFF700}.cm-s-xq-dark span.cm-builtin{color:#30a}.cm-s-xq-dark span.cm-bracket{color:#cc7}.cm-s-xq-dark span.cm-tag{color:#FFBD40}.cm-s-xq-dark span.cm-attribute{color:#FFF700}.cm-s-xq-dark span.cm-error{color:red}.cm-s-xq-dark .CodeMirror-activeline-background{background:#27282E!important}.cm-s-xq-dark .CodeMirror-matchingbracket{outline:grey solid 1px;color:#fff!important} +.cm-s-xq-light span.cm-keyword{line-height:1em;font-weight:700;color:#5A5CAD}.cm-s-xq-light span.cm-atom{color:#6C8CD5}.cm-s-xq-light span.cm-number{color:#164}.cm-s-xq-light span.cm-def{text-decoration:underline}.cm-s-xq-light span.cm-variable,.cm-s-xq-light span.cm-variable-2,.cm-s-xq-light span.cm-variable-3{color:#000}.cm-s-xq-light span.cm-comment{color:#0080FF;font-style:italic}.cm-s-xq-light span.cm-string{color:red}.cm-s-xq-light span.cm-meta{color:#ff0}.cm-s-xq-light span.cm-qualifier{color:grey}.cm-s-xq-light span.cm-builtin{color:#7EA656}.cm-s-xq-light span.cm-bracket{color:#cc7}.cm-s-xq-light span.cm-tag{color:#3F7F7F}.cm-s-xq-light span.cm-attribute{color:#7F007F}.cm-s-xq-light span.cm-error{color:red}.cm-s-xq-light .CodeMirror-activeline-background{background:#e8f2ff!important}.cm-s-xq-light .CodeMirror-matchingbracket{outline:grey solid 1px;color:#000!important;background:#ff0} +.cm-s-zenburn .CodeMirror-gutters{background:#3f3f3f!important}.CodeMirror-foldgutter-folded,.cm-s-zenburn .CodeMirror-foldgutter-open{color:#999}.cm-s-zenburn .CodeMirror-cursor{border-left:1px solid #fff!important}.cm-s-zenburn{background-color:#3f3f3f;color:#dcdccc}.cm-s-zenburn span.cm-builtin{color:#dcdccc;font-weight:700}.cm-s-zenburn span.cm-comment{color:#7f9f7f}.cm-s-zenburn span.cm-keyword{color:#f0dfaf;font-weight:700}.cm-s-zenburn span.cm-atom{color:#bfebbf}.cm-s-zenburn span.cm-def{color:#dcdccc}.cm-s-zenburn span.cm-variable{color:#dfaf8f}.cm-s-zenburn span.cm-variable-2{color:#dcdccc}.cm-s-zenburn span.cm-string,.cm-s-zenburn span.cm-string-2{color:#cc9393}.cm-s-zenburn span.cm-number{color:#dcdccc}.cm-s-zenburn span.cm-tag{color:#93e0e3}.cm-s-zenburn span.cm-attribute,.cm-s-zenburn span.cm-property{color:#dfaf8f}.cm-s-zenburn span.cm-qualifier{color:#7cb8bb}.cm-s-zenburn span.cm-meta{color:#f0dfaf}.cm-s-zenburn span.cm-header,.cm-s-zenburn span.cm-operator{color:#f0efd0}.cm-s-zenburn span.CodeMirror-matchingbracket{box-sizing:border-box;background:0 0;border-bottom:1px solid}.cm-s-zenburn span.CodeMirror-nonmatchingbracket{border-bottom:1px solid;background:0 0}.cm-s-zenburn .CodeMirror-activeline,.cm-s-zenburn .CodeMirror-activeline-background{background:#000}.cm-s-zenburn .CodeMirror-selected{background:#545454}.cm-s-zenburn .CodeMirror-focused .CodeMirror-selected{background:#4f4f4f} \ No newline at end of file diff --git a/static/css/wide.min.css b/static/css/wide.min.css new file mode 100644 index 0000000..7de9f2e --- /dev/null +++ b/static/css/wide.min.css @@ -0,0 +1,6 @@ +.dialog-close-icon,.dialog-close-icon:hover{text-decoration:none}.dialog-background{height:100%;left:0;opacity:.3;position:absolute;top:0;width:100%;filter:alpha(opacity=30);display:none;background-color:#000;z-index:99}.dialog-panel{position:absolute;z-index:100;display:none;-moz-user-select:none;user-select:none;box-shadow:0 2px 10px 1px #000}.dialog-title{float:left;line-height:22px;margin-left:3px;font-weight:700}.dialog-header-bg{height:23px;background-color:#bbb;cursor:move;width:100%}.dialog-close-icon{float:right;margin:3px}.dialog-main>div{width:100%}.dialog-footer{padding:10px;text-align:right}#dialogCloseEditor button,.dialog-footer button{margin:0 5px}#dialogAlert,#dialogRemoveConfirm,.dialog-form,.dialog-prompt{padding:10px 15px 0;overflow:hidden}.dialog-main input,.dialog-main select{width:100%;margin:2px auto}#dialogGoFilePrompt>ul{position:relative;height:260px;overflow:auto;margin-top:5px;background-color:#FFF;border:1px solid #919191}#dialogPreference{margin:10px}#dialogPreference .tabs-panel{padding:10px}#dialogPreference .preference{margin-bottom:10px}#dialogPreference img.gravatar{width:48px;height:48px} +body,ul{margin:0}body,button,input{font-family:Helvetica}.list li,body{overflow:hidden}::-webkit-scrollbar{background:0 0;width:16px;height:16px}::-webkit-scrollbar-corner{display:none;background-color:transparent}::-webkit-scrollbar-thumb{border:0 solid transparent;border-right-width:4px;border-left-width:4px;border-radius:9px;box-shadow:inset 0 0 0 1px rgba(128,128,128,.2),inset 0 0 0 4px rgba(128,128,128,.2)}::-webkit-scrollbar-thumb:horizontal{border-bottom-width:4px;border-top-width:4px}body{font-size:13px;color:#000}ul{padding:0;list-style:none}*{box-sizing:border-box}a{color:#4183c4;text-decoration:none}a:hover{text-decoration:underline}img{vertical-align:middle}.fn-left{float:left}.fn-right{float:right}.fn-clear:after,.fn-clear:before{display:table;content:""}.fn-clear:after{clear:both}.fn-none{display:none}.ft-small{color:#999;font-size:12px}.ft-red{color:#9d0000}.list li{cursor:pointer;line-height:20px;padding:0 3px;word-wrap:normal;word-break:normal;white-space:nowrap;text-overflow:ellipsis}.list li.selected,.list li:hover{background-color:#3875d7;color:#FFF}.list li.selected .ft-small,.list li:hover .ft-small{color:#FFF}@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?35cb2z);src:url(fonts/icomoon.eot?#iefix35cb2z) format('embedded-opentype'),url(fonts/icomoon.woff?35cb2z) format('woff'),url(fonts/icomoon.ttf?35cb2z) format('truetype'),url(fonts/icomoon.svg?35cb2z#icomoon) format('svg');font-weight:400;font-style:normal}.font-ico,[class^=ico-]{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;font-size:13px;line-height:20px}.ico-book:before{content:"\e623"}.ico-price:before{content:"\e616"}.ico-start:before{content:"\e9d7"}.ico-share:before{content:"\e61f"}.ico-github:before{content:"\f00a"}.ico-git:before{content:"\e624"}.ico-tencent:before{content:"\e622"}.ico-weibo:before{content:"\e621"}.ico-googleplus:before{content:"\e61a"}.ico-twitter:before{content:"\e61c"}.ico-email:before{content:"\e619"}.ico-facebook:before{content:"\e61b"}.ico-moveup:before{content:"\f148"}.ico-movedown:before{content:"\f149"}.ico-keyboard:before{content:"\f11c"}.ico-findfiles:before{content:"\e603"}.ico-find:before{content:"\e602"}.ico-editor:before{content:"\e604"}.ico-tree:before{content:"\e600"}.ico-build:before{content:"\e601"}.ico-notification:before{content:"\e607"}.ico-report:before{content:"\e605"}.ico-comment:before{content:"\e620"}.ico-goline:before{content:"\e61e"}.ico-info:before{content:"\e61d"}.ico-signup:before{content:"\e606"}.ico-signout:before{content:"\e618"}.ico-redo:before{content:"\e615"}.ico-undo:before{content:"\e60e"}.ico-about:before{content:"\e60d"}.ico-import:before{content:"\f0ee"}.ico-export:before{content:"\f0ed"}.ico-refresh:before{content:"\f021"}.ico-remove:before{content:"\e60b"}.ico-save:before{content:"\f0c7"}.ico-max:before{content:"\e609"}.ico-format:before{content:"\e612"}.ico-buildrun:before{content:"\e60c"}.ico-stop:before{content:"\e60f"}.ico-restore:before{content:"\e613"}.toolbars .ico-restore:before{content:"\e60a"}.ico-min:before{content:"\e614";position:absolute;right:5px}.ico-close:before{content:"\e611"} +.frame li,.tabs>div{padding:0 5px;cursor:pointer}.footer .cursor,.frame li,.menu>ul>li>span,.notification-count,.tabs>div{cursor:pointer}.ico,.menu .split,.menu>ul>li,.tabs>div{float:left}.frame{position:absolute;width:320px;z-index:21;display:none}.frame li{line-height:25px}.frame li.disabled,.frame li.disabled .font-ico,.frame li.disabled:hover .font-ico{color:#999}.frame a{color:#000;text-decoration:none}.frame a:hover,.frame li:hover a{color:#FFF}.frame .space{display:inline-block;width:20px;height:15px}.frame .font-ico{margin-right:5px;width:15px;display:inline-block;text-align:center}.tabs{height:21px;overflow:hidden;width:100%}.tabs>div{line-height:20px;height:20px}.tabs>div>span.changed{font-weight:700}.tabs-panel{overflow:auto;flex:1;height:100%}.edit-exprinfo,.edit-panel{position:absolute;overflow:hidden}.menu{display:block!important}.menu>ul>li>span{font-size:12px;line-height:21px;padding:4px 7px}.menu .split{border-left:1px solid #919191;height:21px;margin:0 5px 0 0}.menu img.gravatar{float:left;margin:2px 8px;height:17px;width:17px;border-radius:9px}#buildRun{color:#6DB14C;font-size:19px}#buildRun.ico-stop{color:#9d0000;font-size:16px}.share-panel{position:absolute;z-index:20;width:226px;padding:5px 0;right:0;top:21px}.share-panel .font-ico{font-size:20px;transition:all .2s ease-out 0s;margin:0 5px;width:24px}.share-panel .font-ico:hover{transform:rotate(360deg)}.edit-panel{left:20%;width:60%;height:70%;flex-flow:column;display:flex}.toolbars{position:absolute;right:5px;top:1px}.ico{background-image:url(../images/ico-file.png);height:16px;margin:2px 0 0 -2px;width:16px}.edit-exprinfo{z-index:10;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px rgba(0,0,0,.2);border-radius:3px;border:1px solid silver;background:#fff;font-size:90%;max-height:20em;overflow-y:auto}.CodeMirror,.CodeMirror-hints{font-family:Consolas,'Courier New',monospace}.CodeMirror-hints .ico{margin:-1px 2px 0 -1px}.CodeMirror-focused .cm-matchhighlight{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);background-position:bottom;background-repeat:repeat-x}.CodeMirror-hint{padding-right:18px;max-width:none}.CodeMirror-hint:hover{background:#08f;color:#fff}.CodeMirror div.CodeMirror-cursor{border-left:2px solid #333}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:transparent}.bottom-window-group{background-color:#fff;flex-flow:column}.bottom-window-group .output{font-family:Consolas,Courier New,monospace;padding:0 5px;line-height:16px;font-size:12px;overflow-x:scroll;outline:0}.bottom-window-group .output pre{margin:0;font-family:Consolas,'Courier New',monospace}.bottom-window-group .output .start-build,.bottom-window-group .output .start-get,.bottom-window-group .output .start-install,.bottom-window-group .output .start-test,.start-vet{color:#999}.bottom-window-group .output .build-succ,.bottom-window-group .output .get-succ,.bottom-window-group .output .install-succ,.bottom-window-group .output .test-succ,.vet-succ{color:#090}.bottom-window-group .output .build-error,.bottom-window-group .output .get-error,.bottom-window-group .output .install-error,.bottom-window-group .output .test-error,.vet-error{color:#9d0000}.bottom-window-group .output .stderr{color:gray;font-style:italic}.bottom-window-group .output .path{text-decoration:underline;cursor:pointer}.bottom-window-group table{width:100%}.bottom-window-group td{border-bottom:1px solid #919191;font-size:12px;line-height:19px}.bottom-window-group .notification{outline:0}.bottom-window-group .notification .severity,.bottom-window-group .notification .type{width:50px;padding:0 5px}.bottom-window-group .search{display:flex;flex-flow:column;outline:0}.footer{box-shadow:0 1px 0 0 rgba(255,255,255,.06) inset;padding-left:5px;line-height:18px;display:block!important}.notification-count{float:right;display:none;background-color:#9d0000;color:#FFF;margin:1px 5px;padding:0 2px;border-radius:3px;line-height:16px} +.side{width:20%;position:absolute;height:100%;z-index:8;flex-flow:column;display:flex}.side-max{width:100%;z-index:11}.side-right .tabs-panel>div{overflow:auto}.side-right{flex-flow:column}#outline .ico{margin:1px 5px 0}.ico-func{background-position:-123px -21px}.ico-interface{background-position:-143px -21px}.ico-const{background-position:-103px -21px}.ico-var{background-position:-63px -21px}.ico-struct{background-position:-83px -21px}.ico-type{background-position:-163px -21px}.ico-package{background-position:-183px -21px}.ztree{width:100%;padding:0;outline:0;border:0}.ztree li a.curSelectedNode{background-color:#3875d7;border-width:0;color:#fff;height:18px;opacity:1}.ztree li a:hover{text-decoration:none}.ztree li>a>span.button,.ztree li>a>span.button.ico-ztree-dir,.ztree li>a>span.button.ico-ztree-dir-api,.ztree li>a>span.button.ico-ztree-dir-workspace{margin-right:2px}.ztree li>a>span.button{background-image:url(../images/ico-file.png);margin-right:0}.ico-ztree-dir{background-position:-2px -23px}.ico-ztree-dir-api{background-position:-22px -23px}.ico-ztree-dir-workspace{background-position:-42px -23px}.ico-ztree-html{background-position:-4px -2px}.ico-ztree-go{background-position:-22px -2px}.ico-ztree-css{background-position:-42px -2px}.ico-ztree-img{background-position:-63px -2px}.ico-ztree-other{background-position:-83px -2px}.ico-ztree-text{background-position:-103px -2px}.ico-ztree-sql{background-position:-123px -2px}.ico-ztree-pro{background-position:-142px -2px}.ico-ztree-md{background-position:-162px -2px}.ico-ztree-js{background-position:-182px -2px}.ico-ztree-xml{background-position:-202px -2px} +#startPage{padding:50px 70px;line-height:28px;white-space:normal;word-wrap:break-word;overflow:auto}#startPage a{color:#4183c4;text-decoration:none}#startPage a:hover{text-decoration:underline}#startPage .title{background-color:#BBB;border-bottom-width:0!important;border-radius:3px 3px 0 0;font-size:15px;margin-bottom:10px;padding:5px 10px;color:#FFF;text-shadow:0 1px rgba(0,0,0,.4)}#startPage .details li.border,#startPage .news li{border-bottom:1px solid #919191}#startPage .details{width:30%;float:left}#startPage .details label{color:#666}#startPage .details li.border{padding-bottom:5px;margin-bottom:5px}#startPage .details li.border.workspace{line-height:18px;padding-bottom:10px!important;word-wrap:break-word;white-space:normal;word-break:break-all}#startPage .news{width:60%;float:right;border-left:1px solid #f1f1f1;margin-left:10%;padding-left:10%;white-space:nowrap;overflow:hidden}#startPage .date{color:#bbb;font-size:13px;word-wrap:normal;white-space:nowrap} +#dialogAboutDialog .dialog-main{background-color:#FFF}#dialogAbout{margin:35px 20px;line-height:28px}#dialogAbout .item{margin:0 10px}#dialogAbout a{color:#4183c4;text-decoration:none}#dialogAbout a:hover{text-decoration:underline}#dialogAbout label{color:#666}#dialogAbout img{width:100px;float:left;margin-right:60px}#dialogAbout .space{margin-bottom:6px;border-bottom:1px solid #919191;padding-bottom:6px}#dialogAbout .thx ul{margin-left:50px}#dialogAbout .thx a{width:80px;display:inline-block}#dialogAbout .license{color:#999;font-size:12px;line-height:normal;height:85px;overflow-x:hidden;word-wrap:break-word} \ No newline at end of file diff --git a/static/js/lib.min.js b/static/js/lib.min.js new file mode 100644 index 0000000..486a985 --- /dev/null +++ b/static/js/lib.min.js @@ -0,0 +1,77 @@ +!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=Z.type(e);return"function"===n||Z.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function r(e,t,n){if(Z.isFunction(t))return Z.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return Z.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(ae.test(t))return Z.filter(t,e,n);t=Z.filter(t,e)}return Z.grep(e,function(e){return U.call(t,e)>=0!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function o(e){var t=he[e]={};return Z.each(e.match(de)||[],function(e,n){t[n]=!0}),t}function s(){J.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1),Z.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+Math.random()}function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(be,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:xe.test(n)?Z.parseJSON(n):n}catch(i){}ye.set(e,t,n)}else n=void 0;return n}function l(){return!0}function c(){return!1}function f(){try{return J.activeElement}catch(e){}}function p(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function d(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function h(e){var t=Pe.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function g(e,t){for(var n=0,r=e.length;r>n;n++)ve.set(e[n],"globalEval",!t||ve.get(t[n],"globalEval"))}function m(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(ve.hasData(e)&&(o=ve.access(e),s=ve.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)Z.event.add(t,i,l[i][n])}ye.hasData(e)&&(a=ye.access(e),u=Z.extend({},a),ye.set(t,u))}}function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Z.nodeName(e,t)?Z.merge([e],n):n}function y(e,t){var n=t.nodeName.toLowerCase();"input"===n&&Ne.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function x(t,n){var r,i=Z(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(r=e.getDefaultComputedStyle(i[0]))?r.display:Z.css(i[0],"display");return i.detach(),o}function b(e){var t=J,n=$e[e];return n||(n=x(e,t),"none"!==n&&n||(We=(We||Z("').bind("load",function(){var t,o=e.isArray(r.paramName)?r.paramName:[r.paramName];a.unbind("load").bind("load",function(){var t;try{if(t=a.contents(),!t.length||!t[0].firstChild)throw new Error}catch(r){t=void 0}m(200,"success",{iframe:t}),e('').appendTo(n),window.setTimeout(function(){n.remove()},0)}),n.prop("target",a.prop("name")).prop("action",r.url).prop("method",r.type),r.formData&&e.each(r.formData,function(t,r){e('').prop("name",r.name).val(r.value).appendTo(n)}),r.fileInput&&r.fileInput.length&&"POST"===r.type&&(t=r.fileInput.clone(),r.fileInput.after(function(e){return t[e]}),r.paramName&&r.fileInput.each(function(t){e(this).prop("name",o[t]||r.paramName)}),n.append(r.fileInput).prop("enctype","multipart/form-data").prop("encoding","multipart/form-data"),r.fileInput.removeAttr("form")),n.submit(),t&&t.length&&r.fileInput.each(function(r,n){var a=e(t[r]);e(n).prop("name",a.prop("name")).attr("form",a.attr("form")),a.replaceWith(n)})}),n.append(a).appendTo(document.body)},abort:function(){a&&a.unbind("load").prop("src",i),n&&n.remove()}}}}),e.ajaxSetup({converters:{"iframe text":function(t){return t&&e(t[0].body).text()},"iframe json":function(t){return t&&e.parseJSON(e(t[0].body).text())},"iframe html":function(t){return t&&e(t[0].body).html()},"iframe xml":function(t){var r=t&&t[0];return r&&e.isXMLDoc(r)?r:e.parseXML(r.XMLDocument&&r.XMLDocument.xml||e(r.body).html())},"iframe script":function(t){return t&&e.globalEval(e(t[0].body).text())}}})}); +!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery.ui.widget"],e):e(window.jQuery)}(function(e){"use strict";function t(t){var i="dragover"===t;return function(r){r.dataTransfer=r.originalEvent&&r.originalEvent.dataTransfer;var n=r.dataTransfer;n&&-1!==e.inArray("Files",n.types)&&this._trigger(t,e.Event(t,{delegatedEvent:r}))!==!1&&(r.preventDefault(),i&&(n.dropEffect="copy"))}}e.support.fileInput=!(new RegExp("(Android (1\\.[0156]|2\\.[01]))|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)|(w(eb)?OSBrowser)|(webOS)|(Kindle/(1\\.0|2\\.[05]|3\\.0))").test(window.navigator.userAgent)||e('').prop("disabled")),e.support.xhrFileUpload=!(!window.ProgressEvent||!window.FileReader),e.support.xhrFormDataFileUpload=!!window.FormData,e.support.blobSlice=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice),e.widget("blueimp.fileupload",{options:{dropZone:e(document),pasteZone:void 0,fileInput:void 0,replaceFileInput:!0,paramName:void 0,singleFileUploads:!0,limitMultiFileUploads:void 0,limitMultiFileUploadSize:void 0,limitMultiFileUploadSizeOverhead:512,sequentialUploads:!1,limitConcurrentUploads:void 0,forceIframeTransport:!1,redirect:void 0,redirectParamName:void 0,postMessage:void 0,multipart:!0,maxChunkSize:void 0,uploadedBytes:void 0,recalculateProgress:!0,progressInterval:100,bitrateInterval:500,autoUpload:!0,messages:{uploadedBytes:"Uploaded bytes exceed file size"},i18n:function(t,i){return t=this.messages[t]||t.toString(),i&&e.each(i,function(e,i){t=t.replace("{"+e+"}",i)}),t},formData:function(e){return e.serializeArray()},add:function(t,i){return t.isDefaultPrevented()?!1:void((i.autoUpload||i.autoUpload!==!1&&e(this).fileupload("option","autoUpload"))&&i.process().done(function(){i.submit()}))},processData:!1,contentType:!1,cache:!1},_specialOptions:["fileInput","dropZone","pasteZone","multipart","forceIframeTransport"],_blobSlice:e.support.blobSlice&&function(){var e=this.slice||this.webkitSlice||this.mozSlice;return e.apply(this,arguments)},_BitrateTimer:function(){this.timestamp=Date.now?Date.now():(new Date).getTime(),this.loaded=0,this.bitrate=0,this.getBitrate=function(e,t,i){var r=e-this.timestamp;return(!this.bitrate||!i||r>i)&&(this.bitrate=(t-this.loaded)*(1e3/r)*8,this.loaded=t,this.timestamp=e),this.bitrate}},_isXHRUpload:function(t){return!t.forceIframeTransport&&(!t.multipart&&e.support.xhrFileUpload||e.support.xhrFormDataFileUpload)},_getFormData:function(t){var i;return"function"===e.type(t.formData)?t.formData(t.form):e.isArray(t.formData)?t.formData:"object"===e.type(t.formData)?(i=[],e.each(t.formData,function(e,t){i.push({name:e,value:t})}),i):[]},_getTotal:function(t){var i=0;return e.each(t,function(e,t){i+=t.size||1}),i},_initProgressObject:function(t){var i={loaded:0,total:0,bitrate:0};t._progress?e.extend(t._progress,i):t._progress=i},_initResponseObject:function(e){var t;if(e._response)for(t in e._response)e._response.hasOwnProperty(t)&&delete e._response[t];else e._response={}},_onProgress:function(t,i){if(t.lengthComputable){var r,n=Date.now?Date.now():(new Date).getTime();if(i._time&&i.progressInterval&&n-i._time").prop("href",t.url).prop("host");t.dataType="iframe "+(t.dataType||""),t.formData=this._getFormData(t),t.redirect&&i&&i!==location.host&&t.formData.push({name:t.redirectParamName||"redirect",value:t.redirect})},_initDataSettings:function(e){this._isXHRUpload(e)?(this._chunkedUpload(e,!0)||(e.data||this._initXHRData(e),this._initProgressListener(e)),e.postMessage&&(e.dataType="postmessage "+(e.dataType||""))):this._initIframeSettings(e)},_getParamName:function(t){var i=e(t.fileInput),r=t.paramName;return r?e.isArray(r)||(r=[r]):(r=[],i.each(function(){for(var t=e(this),i=t.prop("name")||"files[]",n=(t.prop("files")||[1]).length;n;)r.push(i),n-=1}),r.length||(r=[i.prop("name")||"files[]"])),r},_initFormSettings:function(t){t.form&&t.form.length||(t.form=e(t.fileInput.prop("form")),t.form.length||(t.form=e(this.options.fileInput.prop("form")))),t.paramName=this._getParamName(t),t.url||(t.url=t.form.prop("action")||location.href),t.type=(t.type||"string"===e.type(t.form.prop("method"))&&t.form.prop("method")||"").toUpperCase(),"POST"!==t.type&&"PUT"!==t.type&&"PATCH"!==t.type&&(t.type="POST"),t.formAcceptCharset||(t.formAcceptCharset=t.form.attr("accept-charset"))},_getAJAXSettings:function(t){var i=e.extend({},this.options,t);return this._initFormSettings(i),this._initDataSettings(i),i},_getDeferredState:function(e){return e.state?e.state():e.isResolved()?"resolved":e.isRejected()?"rejected":"pending"},_enhancePromise:function(e){return e.success=e.done,e.error=e.fail,e.complete=e.always,e},_getXHRPromise:function(t,i,r){var n=e.Deferred(),o=n.promise();return i=i||this.options.context||o,t===!0?n.resolveWith(i,r):t===!1&&n.rejectWith(i,r),o.abort=n.promise,this._enhancePromise(o)},_addConvenienceMethods:function(t,i){var r=this,n=function(t){return e.Deferred().resolveWith(r,t).promise()};i.process=function(t,o){return(t||o)&&(i._processQueue=this._processQueue=(this._processQueue||n([this])).pipe(function(){return i.errorThrown?e.Deferred().rejectWith(r,[i]).promise():n(arguments)}).pipe(t,o)),this._processQueue||n([this])},i.submit=function(){return"pending"!==this.state()&&(i.jqXHR=this.jqXHR=r._trigger("submit",e.Event("submit",{delegatedEvent:t}),this)!==!1&&r._onSend(t,this)),this.jqXHR||r._getXHRPromise()},i.abort=function(){return this.jqXHR?this.jqXHR.abort():(this.errorThrown="abort",r._trigger("fail",null,this),r._getXHRPromise(!1))},i.state=function(){return this.jqXHR?r._getDeferredState(this.jqXHR):this._processQueue?r._getDeferredState(this._processQueue):void 0},i.processing=function(){return!this.jqXHR&&this._processQueue&&"pending"===r._getDeferredState(this._processQueue)},i.progress=function(){return this._progress},i.response=function(){return this._response}},_getUploadedBytes:function(e){var t=e.getResponseHeader("Range"),i=t&&t.split("-"),r=i&&i.length>1&&parseInt(i[1],10);return r&&r+1},_chunkedUpload:function(t,i){t.uploadedBytes=t.uploadedBytes||0;var r,n,o=this,s=t.files[0],a=s.size,l=t.uploadedBytes,p=t.maxChunkSize||a,u=this._blobSlice,d=e.Deferred(),h=d.promise();return this._isXHRUpload(t)&&u&&(l||a>p)&&!t.data?i?!0:l>=a?(s.error=t.i18n("uploadedBytes"),this._getXHRPromise(!1,t.context,[null,"error",s.error])):(n=function(){var i=e.extend({},t),h=i._progress.loaded;i.blob=u.call(s,l,l+p,s.type),i.chunkSize=i.blob.size,i.contentRange="bytes "+l+"-"+(l+i.chunkSize-1)+"/"+a,o._initXHRData(i),o._initProgressListener(i),r=(o._trigger("chunksend",null,i)!==!1&&e.ajax(i)||o._getXHRPromise(!1,i.context)).done(function(r,s,p){l=o._getUploadedBytes(p)||l+i.chunkSize,h+i.chunkSize-i._progress.loaded&&o._onProgress(e.Event("progress",{lengthComputable:!0,loaded:l-i.uploadedBytes,total:l-i.uploadedBytes}),i),t.uploadedBytes=i.uploadedBytes=l,i.result=r,i.textStatus=s,i.jqXHR=p,o._trigger("chunkdone",null,i),o._trigger("chunkalways",null,i),a>l?n():d.resolveWith(i.context,[r,s,p])}).fail(function(e,t,r){i.jqXHR=e,i.textStatus=t,i.errorThrown=r,o._trigger("chunkfail",null,i),o._trigger("chunkalways",null,i),d.rejectWith(i.context,[e,t,r])})},this._enhancePromise(h),h.abort=function(){return r.abort()},n(),h):!1},_beforeSend:function(e,t){0===this._active&&(this._trigger("start"),this._bitrateTimer=new this._BitrateTimer,this._progress.loaded=this._progress.total=0,this._progress.bitrate=0),this._initResponseObject(t),this._initProgressObject(t),t._progress.loaded=t.loaded=t.uploadedBytes||0,t._progress.total=t.total=this._getTotal(t.files)||1,t._progress.bitrate=t.bitrate=0,this._active+=1,this._progress.loaded+=t.loaded,this._progress.total+=t.total},_onDone:function(t,i,r,n){var o=n._progress.total,s=n._response;n._progress.loadeda._sending)for(var r=a._slots.shift();r;){if("pending"===a._getDeferredState(r)){r.resolve();break}r=a._slots.shift()}0===a._active&&a._trigger("stop")})};return this._beforeSend(t,l),this.options.sequentialUploads||this.options.limitConcurrentUploads&&this.options.limitConcurrentUploads<=this._sending?(this.options.limitConcurrentUploads>1?(o=e.Deferred(),this._slots.push(o),s=o.pipe(p)):(this._sequence=this._sequence.pipe(p,p),s=this._sequence),s.abort=function(){return n=[void 0,"abort","abort"],r?r.abort():(o&&o.rejectWith(l.context,n),p())},this._enhancePromise(s)):p()},_onAdd:function(t,i){var r,n,o,s,a=this,l=!0,p=e.extend({},this.options,i),u=i.files,d=u.length,h=p.limitMultiFileUploads,c=p.limitMultiFileUploadSize,f=p.limitMultiFileUploadSizeOverhead,g=0,_=this._getParamName(p),m=0;if(!c||d&&void 0!==u[0].size||(c=void 0),(p.singleFileUploads||h||c)&&this._isXHRUpload(p))if(p.singleFileUploads||c||!h)if(!p.singleFileUploads&&c)for(o=[],r=[],s=0;d>s;s+=1)g+=u[s].size+f,(s+1===d||g+u[s+1].size+f>c||h&&s+1-m>=h)&&(o.push(u.slice(m,s+1)),n=_.slice(m,s+1),n.length||(n=_),r.push(n),m=s+1,g=0);else r=_;else for(o=[],r=[],s=0;d>s;s+=h)o.push(u.slice(s,s+h)),n=_.slice(s,s+h),n.length||(n=_),r.push(n);else o=[u],r=[_];return i.originalFiles=u,e.each(o||u,function(n,s){var p=e.extend({},i);return p.files=o?s:[s],p.paramName=r[n],a._initResponseObject(p),a._initProgressObject(p),a._addConvenienceMethods(t,p),l=a._trigger("add",e.Event("add",{delegatedEvent:t}),p)}),l},_replaceFileInput:function(t){var i=t.fileInput,r=i.clone(!0);t.fileInputClone=r,e("
").append(r)[0].reset(),i.after(r).detach(),e.cleanData(i.unbind("remove")),this.options.fileInput=this.options.fileInput.map(function(e,t){return t===i[0]?r[0]:t}),i[0]===this.element[0]&&(this.element=r)},_handleFileTreeEntry:function(t,i){var r,n=this,o=e.Deferred(),s=function(e){e&&!e.entry&&(e.entry=t),o.resolve([e])},a=function(e){n._handleFileTreeEntries(e,i+t.name+"/").done(function(e){o.resolve(e)}).fail(s)},l=function(){r.readEntries(function(e){e.length?(p=p.concat(e),l()):a(p)},s)},p=[];return i=i||"",t.isFile?t._file?(t._file.relativePath=i,o.resolve(t._file)):t.file(function(e){e.relativePath=i,o.resolve(e)},s):t.isDirectory?(r=t.createReader(),l()):o.resolve([]),o.promise()},_handleFileTreeEntries:function(t,i){var r=this;return e.when.apply(e,e.map(t,function(e){return r._handleFileTreeEntry(e,i)})).pipe(function(){return Array.prototype.concat.apply([],arguments)})},_getDroppedFiles:function(t){t=t||{};var i=t.items;return i&&i.length&&(i[0].webkitGetAsEntry||i[0].getAsEntry)?this._handleFileTreeEntries(e.map(i,function(e){var t;return e.webkitGetAsEntry?(t=e.webkitGetAsEntry(),t&&(t._file=e.getAsFile()),t):e.getAsEntry()})):e.Deferred().resolve(e.makeArray(t.files)).promise()},_getSingleFileInputFiles:function(t){t=e(t);var i,r,n=t.prop("webkitEntries")||t.prop("entries");if(n&&n.length)return this._handleFileTreeEntries(n);if(i=e.makeArray(t.prop("files")),i.length)void 0===i[0].name&&i[0].fileName&&e.each(i,function(e,t){t.name=t.fileName,t.size=t.fileSize});else{if(r=t.prop("value"),!r)return e.Deferred().resolve([]).promise();i=[{name:r.replace(/^.*\\/,"")}]}return e.Deferred().resolve(i).promise()},_getFileInputFiles:function(t){return t instanceof e&&1!==t.length?e.when.apply(e,e.map(t,this._getSingleFileInputFiles)).pipe(function(){return Array.prototype.concat.apply([],arguments)}):this._getSingleFileInputFiles(t)},_onChange:function(t){var i=this,r={fileInput:e(t.target),form:e(t.target.form)};this._getFileInputFiles(r.fileInput).always(function(n){r.files=n,i.options.replaceFileInput&&i._replaceFileInput(r),i._trigger("change",e.Event("change",{delegatedEvent:t}),r)!==!1&&i._onAdd(t,r)})},_onPaste:function(t){var i=t.originalEvent&&t.originalEvent.clipboardData&&t.originalEvent.clipboardData.items,r={files:[]};i&&i.length&&(e.each(i,function(e,t){var i=t.getAsFile&&t.getAsFile();i&&r.files.push(i)}),this._trigger("paste",e.Event("paste",{delegatedEvent:t}),r)!==!1&&this._onAdd(t,r))},_onDrop:function(t){t.dataTransfer=t.originalEvent&&t.originalEvent.dataTransfer;var i=this,r=t.dataTransfer,n={};r&&r.files&&r.files.length&&(t.preventDefault(),this._getDroppedFiles(r).always(function(r){n.files=r,i._trigger("drop",e.Event("drop",{delegatedEvent:t}),n)!==!1&&i._onAdd(t,n)}))},_onDragOver:t("dragover"),_onDragEnter:t("dragenter"),_onDragLeave:t("dragleave"),_initEventHandlers:function(){this._isXHRUpload(this.options)&&(this._on(this.options.dropZone,{dragover:this._onDragOver,drop:this._onDrop,dragenter:this._onDragEnter,dragleave:this._onDragLeave}),this._on(this.options.pasteZone,{paste:this._onPaste})),e.support.fileInput&&this._on(this.options.fileInput,{change:this._onChange})},_destroyEventHandlers:function(){this._off(this.options.dropZone,"dragenter dragleave dragover drop"),this._off(this.options.pasteZone,"paste"),this._off(this.options.fileInput,"change")},_setOption:function(t,i){var r=-1!==e.inArray(t,this._specialOptions);r&&this._destroyEventHandlers(),this._super(t,i),r&&(this._initSpecialOptions(),this._initEventHandlers())},_initSpecialOptions:function(){var t=this.options;void 0===t.fileInput?t.fileInput=this.element.is('input[type="file"]')?this.element:this.element.find('input[type="file"]'):t.fileInput instanceof e||(t.fileInput=e(t.fileInput)),t.dropZone instanceof e||(t.dropZone=e(t.dropZone)),t.pasteZone instanceof e||(t.pasteZone=e(t.pasteZone))},_getRegExp:function(e){var t=e.split("/"),i=t.pop();return t.shift(),new RegExp(t.join("/"),i)},_isRegExpOption:function(t,i){return"url"!==t&&"string"===e.type(i)&&/^\/.*\/[igm]{0,3}$/.test(i)},_initDataAttributes:function(){var t=this,i=this.options,r=e(this.element[0].cloneNode(!1));e.each(r.data(),function(e,n){var o="data-"+e.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();r.attr(o)&&(t._isRegExpOption(e,n)&&(n=t._getRegExp(n)),i[e]=n)})},_create:function(){this._initDataAttributes(),this._initSpecialOptions(),this._slots=[],this._sequence=this._getXHRPromise(!0),this._sending=this._active=0,this._initProgressObject(this),this._initEventHandlers()},active:function(){return this._active},progress:function(){return this._progress},add:function(t){var i=this;t&&!this.options.disabled&&(t.fileInput&&!t.files?this._getFileInputFiles(t.fileInput).always(function(e){t.files=e,i._onAdd(null,t)}):(t.files=e.makeArray(t.files),this._onAdd(null,t)))},send:function(t){if(t&&!this.options.disabled){if(t.fileInput&&!t.files){var i,r,n=this,o=e.Deferred(),s=o.promise();return s.abort=function(){return r=!0,i?i.abort():(o.reject(null,"abort","abort"),s)},this._getFileInputFiles(t.fileInput).always(function(e){if(!r){if(!e.length)return void o.reject();t.files=e,i=n._onSend(null,t),i.then(function(e,t,i){o.resolve(e,t,i)},function(e,t,i){o.reject(e,t,i)})}}),this._enhancePromise(s)}if(t.files=e.makeArray(t.files),t.files.length)return this._onSend(null,t)}return this._getXHRPromise(!1,t&&t.context)}})}); +!function(e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else{if("function"==typeof define&&define.amd)return define([],e);this.CodeMirror=e()}}(function(){function e(r,n){if(!(this instanceof e))return new e(r,n);this.options=n=n?Oi(n):{},Oi(jo,n,!1),d(n);var i=n.value;"string"==typeof i&&(i=new gl(i,n.mode)),this.doc=i;var o=new e.inputStyles[n.inputStyle](this),l=this.display=new t(r,i,o);l.wrapper.CodeMirror=this,u(this),s(this),n.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),n.autofocus&&!xo&&l.input.focus(),m(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,cutIncoming:!1,draggingText:!1,highlight:new Si,keySeq:null,specialChars:null};var a=this;co&&11>fo&&setTimeout(function(){a.display.input.reset(!0)},20),Rt(this),Vi(),mt(this),this.curOp.forceUpdate=!0,Kn(this,i),n.autofocus&&!xo||a.hasFocus()?setTimeout(Di(cr,this),20):fr(this);for(var c in Xo)Xo.hasOwnProperty(c)&&Xo[c](this,n[c],_o);C(this),n.finishInit&&n.finishInit(this);for(var f=0;ffo&&(n.gutters.style.zIndex=-1,n.scroller.style.paddingRight=0),ho||so&&xo||(n.scroller.draggable=!0),e&&(e.appendChild?e.appendChild(n.wrapper):e(n.wrapper)),n.viewFrom=n.viewTo=t.first,n.reportedViewFrom=n.reportedViewTo=t.first,n.view=[],n.renderedView=null,n.externalMeasured=null,n.viewOffset=0,n.lastWrapHeight=n.lastWrapWidth=0,n.updateLineNumbers=null,n.nativeBarWidth=n.barHeight=n.barWidth=0,n.scrollbarsClipped=!1,n.lineNumWidth=n.lineNumInnerWidth=n.lineNumChars=null,n.alignWidgets=!1,n.cachedCharWidth=n.cachedTextHeight=n.cachedPaddingH=null,n.maxLine=null,n.maxLineLength=0,n.maxLineChanged=!1,n.wheelDX=n.wheelDY=n.wheelStartX=n.wheelStartY=null,n.shift=!1,n.selForContextMenu=null,n.activeTouch=null,r.init(n)}function r(t){t.doc.mode=e.getMode(t.options,t.doc.modeOption),n(t)}function n(e){e.doc.iter(function(e){e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null)}),e.doc.frontier=e.doc.first,Ee(e,100),e.state.modeGen++,e.curOp&&Dt(e)}function i(e){e.options.lineWrapping?(Gl(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(Bl(e.display.wrapper,"CodeMirror-wrap"),h(e)),l(e),Dt(e),it(e),setTimeout(function(){y(e)},100)}function o(e){var t=gt(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/vt(e.display)-3);return function(i){if(vn(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;lt.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)})}function d(e){var t=Mi(e.gutters,"CodeMirror-linenumbers");-1==t&&e.lineNumbers?e.gutters=e.gutters.concat(["CodeMirror-linenumbers"]):t>-1&&!e.lineNumbers&&(e.gutters=e.gutters.slice(0),e.gutters.splice(t,1))}function p(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+Ge(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Ve(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}function g(e,t,r){this.cm=r;var n=this.vert=Ei("div",[Ei("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=Ei("div",[Ei("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");e(n),e(i),xl(n,"scroll",function(){n.clientHeight&&t(n.scrollTop,"vertical")}),xl(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedOverlay=!1,co&&8>fo&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}function v(){}function m(t){t.display.scrollbars&&(t.display.scrollbars.clear(),t.display.scrollbars.addClass&&Bl(t.display.wrapper,t.display.scrollbars.addClass)),t.display.scrollbars=new e.scrollbarModel[t.options.scrollbarStyle](function(e){t.display.wrapper.insertBefore(e,t.display.scrollbarFiller),xl(e,"mousedown",function(){t.state.focused&&setTimeout(function(){t.display.input.focus()},0)}),e.setAttribute("cm-not-content","true")},function(e,r){"horizontal"==r?Qt(t,e):Zt(t,e)},t),t.display.scrollbars.addClass&&Gl(t.display.wrapper,t.display.scrollbars.addClass)}function y(e,t){t||(t=p(e));var r=e.display.barWidth,n=e.display.barHeight;b(e,t);for(var i=0;4>i&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&O(e),b(e,p(e)),r=e.display.barWidth,n=e.display.barHeight}function b(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}function w(e,t,r){var n=r&&null!=r.top?Math.max(0,r.top):e.scroller.scrollTop;n=Math.floor(n-Be(e));var i=r&&null!=r.bottom?r.bottom:n+e.wrapper.clientHeight,o=qn(t,n),l=qn(t,i);if(r&&r.ensure){var s=r.ensure.from.line,a=r.ensure.to.line;o>s?(o=s,l=qn(t,Zn(jn(t,s))+e.wrapper.clientHeight)):Math.min(a,t.lastLine())>=l&&(o=qn(t,Zn(jn(t,a))-e.wrapper.clientHeight),l=a)}return{from:o,to:Math.max(l,o+1)}}function x(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=L(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;l=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==Ft(e))return!1;C(e)&&(Pt(e),t.dims=H(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFroml&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),No&&(o=pn(e.doc,o),l=gn(e.doc,l));var s=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;zt(e,o,l),r.viewOffset=Zn(jn(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var a=Ft(e);if(!s&&0==a&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var u=Ri();return a>4&&(r.lineDiv.style.display="none"),P(e,r.updateLineNumbers,t.dims),a>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,u&&Ri()!=u&&u.offsetHeight&&u.focus(),zi(r.cursorDiv),zi(r.selectionDiv),r.gutters.style.height=0,s&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,Ee(e,400)),r.updateLineNumbers=null,!0}function N(e,t){for(var r=t.force,n=t.viewport,i=!0;;i=!1){if(i&&e.options.lineWrapping&&t.oldDisplayWidth!=Ke(e))r=!0;else if(r=!1,n&&null!=n.top&&(n={top:Math.min(e.doc.height+Ge(e.display)-je(e),n.top)}),t.visible=w(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!M(e,t))break;O(e);var o=p(e);Oe(e),W(e,o),y(e,o)}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function A(e,t){var r=new k(e,t);if(M(e,r)){O(e),N(e,r);var n=p(e);Oe(e),W(e,n),y(e,n),r.finish()}}function W(e,t){e.display.sizer.style.minHeight=t.docHeight+"px";var r=t.docHeight+e.display.barHeight;e.display.heightForcer.style.top=r+"px",e.display.gutters.style.height=Math.max(r+Ve(e),t.clientHeight)+"px"}function O(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=0;nfo){var l=o.node.offsetTop+o.node.offsetHeight;i=l-r,r=l}else{var s=o.node.getBoundingClientRect();i=s.bottom-s.top}var a=o.line.height-i;if(2>i&&(i=gt(t)),(a>.001||-.001>a)&&(Yn(o.line,i),D(o.line),o.rest))for(var u=0;u=t&&f.lineNumber;f.changes&&(Mi(f.changes,"gutter")>-1&&(h=!1),I(e,f,u,r)),h&&(zi(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(S(e.options,u)))),s=f.node.nextSibling}else{var d=V(e,f,u,r);l.insertBefore(d,s)}u+=f.size}for(;s;)s=n(s)}function I(e,t,r,n){for(var i=0;ifo&&(e.node.style.zIndex=2)),e.node}function z(e){var t=e.bgClass?e.bgClass+" "+(e.line.bgClass||""):e.line.bgClass;if(t&&(t+=" CodeMirror-linebackground"),e.background)t?e.background.className=t:(e.background.parentNode.removeChild(e.background),e.background=null);else if(t){var r=E(e);e.background=r.insertBefore(Ei("div",null,t),r.firstChild)}}function F(e,t){var r=e.display.externalMeasured;return r&&r.line==t.line?(e.display.externalMeasured=null,t.measure=r.measure,r.built):Dn(e,t)}function R(e,t){var r=t.text.className,n=F(e,t);t.text==t.node&&(t.node=n.pre),t.text.parentNode.replaceChild(n.pre,t.text),t.text=n.pre,n.bgClass!=t.bgClass||n.textClass!=t.textClass?(t.bgClass=n.bgClass,t.textClass=n.textClass,B(t)):r&&(t.text.className=r)}function B(e){z(e),e.line.wrapClass?E(e).className=e.line.wrapClass:e.node!=e.text&&(e.node.className="");var t=e.textClass?e.textClass+" "+(e.line.textClass||""):e.line.textClass;e.text.className=t||""}function G(e,t,r,n){t.gutter&&(t.node.removeChild(t.gutter),t.gutter=null);var i=t.line.gutterMarkers;if(e.options.lineNumbers||i){var o=E(t),l=t.gutter=Ei("div",null,"CodeMirror-gutter-wrapper","left: "+(e.options.fixedGutter?n.fixedPos:-n.gutterTotalWidth)+"px; width: "+n.gutterTotalWidth+"px");if(e.display.input.setUneditable(l),o.insertBefore(l,t.text),t.line.gutterClass&&(l.className+=" "+t.line.gutterClass),!e.options.lineNumbers||i&&i["CodeMirror-linenumbers"]||(t.lineNumber=l.appendChild(Ei("div",S(e.options,r),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+n.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+e.display.lineNumInnerWidth+"px"))),i)for(var s=0;s1&&(Oo&&Oo.join("\n")==t?l=n.ranges.length%Oo.length==0&&Ni(Oo,Kl):o.length==n.ranges.length&&(l=Ni(o,function(e){return[e]})));for(var s=n.ranges.length-1;s>=0;s--){var a=n.ranges[s],u=a.from(),c=a.to();a.empty()&&(r&&r>0?u=Ao(u.line,u.ch-r):e.state.overwrite&&!e.state.pasteIncoming&&(c=Ao(c.line,Math.min(jn(i,c.line).text.length,c.ch+Ti(o).length))));var f=e.curOp.updateInput,h={from:u,to:c,text:l?l[s%l.length]:o,origin:e.state.pasteIncoming?"paste":e.state.cutIncoming?"cut":"+input"};if(br(e.doc,h),mi(e,"inputRead",e,h),t&&!e.state.pasteIncoming&&e.options.electricChars&&e.options.smartIndent&&a.head.ch<100&&(!s||n.ranges[s-1].head.line!=a.head.line)){var d=e.getModeAt(a.head),p=Ko(h);if(d.electricChars){for(var g=0;g-1){Hr(e,p.line,"smart");break}}else d.electricInput&&d.electricInput.test(jn(i,p.line).text.slice(0,p.ch))&&Hr(e,p.line,"smart")}}Or(e),e.curOp.updateInput=f,e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=!1}function J(e){for(var t=[],r=[],n=0;ni?u.map:c[i],l=0;li?e.line:e.rest[i]),f=o[l]+n;return(0>n||s!=t)&&(f=o[l+(n?1:0)]),Ao(a,f)}}}var i=e.text.firstChild,o=!1;if(!t||!zl(i,t))return oe(Ao($n(e.line),0),!0);if(t==i&&(o=!0,t=i.childNodes[r],r=0,!t)){var l=e.rest?Ti(e.rest):e.line;return oe(Ao($n(l),l.text.length),o)}var s=3==t.nodeType?t:null,a=t;for(s||1!=t.childNodes.length||3!=t.firstChild.nodeType||(s=t.firstChild,r&&(r=s.nodeValue.length));a.parentNode!=i;)a=a.parentNode;var u=e.measure,c=u.maps,f=n(s,a,r);if(f)return oe(f,o);for(var h=a.nextSibling,d=s?s.nodeValue.length-r:0;h;h=h.nextSibling){if(f=n(h,h.firstChild,0))return oe(Ao(f.line,f.ch-d),o);d+=h.textContent.length}for(var p=a.previousSibling,d=r;p;p=p.previousSibling){if(f=n(p,p.firstChild,-1))return oe(Ao(f.line,f.ch+d),o);d+=h.textContent.length}}function ae(e,t,r,n,i){function o(e){return function(t){return t.id==e}}function l(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(null!=r)return""==r&&(r=t.textContent.replace(/\u200b/g,"")),void(s+=r);var u,c=t.getAttribute("cm-marker");if(c){var f=e.findMarks(Ao(n,0),Ao(i+1,0),o(+c));return void(f.length&&(u=f[0].find())&&(s+=Xn(e.doc,u.from,u.to).join("\n")))}if("false"==t.getAttribute("contenteditable"))return;for(var h=0;h=0){var l=$(o.from(),i.from()),s=Y(o.to(),i.to()),a=o.empty()?i.from()==i.head:o.from()==o.head;t>=n&&--t,e.splice(--n,2,new ce(a?s:l,a?l:s))}}return new ue(e,t)}function he(e,t){return new ue([new ce(e,t||e)],0)}function de(e,t){return Math.max(e.first,Math.min(t,e.first+e.size-1))}function pe(e,t){if(t.liner?Ao(r,jn(e,r).text.length):ge(t,jn(e,t.line).text.length)}function ge(e,t){var r=e.ch;return null==r||r>t?Ao(e.line,t):0>r?Ao(e.line,0):e}function ve(e,t){return t>=e.first&&t=o.ch:u.to>o.ch))){if(n&&(Sl(c,"beforeCursorEnter"),c.explicitlyCleared)){if(s.markedSpans){--a;continue}break}if(!c.atomic)continue;var f=c.find(0>l?-1:1);if(0==Wo(f,o)&&(f.ch+=l,f.ch<0?f=f.line>e.first?pe(e,Ao(f.line-1)):null:f.ch>s.text.length&&(f=f.linet&&(t=0),t=Math.round(t),n=Math.round(n),s.appendChild(Ei("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px; top: "+t+"px; width: "+(null==r?c-e:r)+"px; height: "+(n-t)+"px"))}function i(t,r,i){function o(r,n){return ut(e,Ao(t,r),"div",f,n)}var s,a,f=jn(l,t),h=f.text.length;return Yi(Qn(f),r||0,null==i?h:i,function(e,t,l){var f,d,p,g=o(e,"left");if(e==t)f=g,d=p=g.left;else{if(f=o(t-1,"right"),"rtl"==l){var v=g;g=f,f=v}d=g.left,p=f.right}null==r&&0==e&&(d=u),f.top-g.top>3&&(n(d,g.top,null,g.bottom),d=u,g.bottoma.bottom||f.bottom==a.bottom&&f.right>a.right)&&(a=f),u+1>d&&(d=u),n(d,f.top,p-d,f.bottom)}),{start:s,end:a}}var o=e.display,l=e.doc,s=document.createDocumentFragment(),a=Ue(e.display),u=a.left,c=Math.max(o.sizerWidth,Ke(e)-o.sizer.offsetLeft)-a.right,f=t.from(),h=t.to();if(f.line==h.line)i(f.line,f.ch,h.ch);else{var d=jn(l,f.line),p=jn(l,h.line),g=hn(d)==hn(p),v=i(f.line,f.ch,g?d.text.length+1:null).end,m=i(h.line,g?0:null,h.ch).start;g&&(v.top0?t.blinker=setInterval(function(){t.cursorDiv.style.visibility=(r=!r)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function Ee(e,t){e.doc.mode.startState&&e.doc.frontier=e.display.viewTo)){var r=+new Date+e.options.workTime,n=Jo(t.mode,Re(e,t.frontier)),i=[];t.iter(t.frontier,Math.min(t.first+t.size,e.display.viewTo+500),function(o){if(t.frontier>=e.display.viewFrom){var l=o.styles,s=Nn(e,o,n,!0);o.styles=s.styles;var a=o.styleClasses,u=s.classes;u?o.styleClasses=u:a&&(o.styleClasses=null);for(var c=!l||l.length!=o.styles.length||a!=u&&(!a||!u||a.bgClass!=u.bgClass||a.textClass!=u.textClass),f=0;!c&&fr?(Ee(e,e.options.workDelay),!0):void 0}),i.length&&Tt(e,function(){for(var t=0;tl;--s){if(s<=o.first)return o.first;var a=jn(o,s-1);if(a.stateAfter&&(!r||s<=o.frontier))return s;var u=Wl(a.text,null,e.options.tabSize);(null==i||n>u)&&(i=s-1,n=u)}return i}function Re(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return!0;var o=Fe(e,t,r),l=o>n.first&&jn(n,o-1).stateAfter;return l=l?Jo(n.mode,l):el(n.mode),n.iter(o,t,function(r){Wn(e,r.text,l);var s=o==t-1||o%5==0||o>=i.viewFrom&&o2&&o.push((a.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}function _e(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};for(var n=0;nr)return{map:e.measure.maps[n],cache:e.measure.caches[n],before:!0}}function Ye(e,t){t=hn(t);var r=$n(t),n=e.display.externalMeasured=new Wt(e.doc,t,r);n.lineN=r;var i=n.built=Dn(e,n);return n.text=i.pre,Fi(e.display.lineMeasure,i.pre),n}function $e(e,t,r,n){return Qe(e,Ze(e,t),r,n)}function qe(e,t){if(t>=e.display.viewFrom&&t=r.lineN&&tt?(i=0,o=1,l="left"):u>t?(i=t-a,o=i+1):(s==e.length-3||t==u&&e[s+3]>t)&&(o=u-a,i=o-1,t>=u&&(l="right")),null!=i){if(n=e[s+2],a==u&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;s&&e[s-2]==e[s-3]&&e[s-1].insertLeft;)n=e[(s-=3)+2],l="left";if("right"==r&&i==u-a)for(;sc;c++){for(;s&&Ii(t.line.text.charAt(o.coverStart+s));)--s;for(;o.coverStart+afo&&0==s&&a==o.coverEnd-o.coverStart)i=l.parentNode.getBoundingClientRect();else if(co&&e.options.lineWrapping){var f=Hl(l,s,a).getClientRects();i=f.length?f["right"==n?f.length-1:0]:Io}else i=Hl(l,s,a).getBoundingClientRect()||Io;if(i.left||i.right||0==s)break;a=s,s-=1,u="right"}co&&11>fo&&(i=tt(e.display.measure,i))}else{s>0&&(u=n="right");var f;i=e.options.lineWrapping&&(f=l.getClientRects()).length>1?f["right"==n?f.length-1:0]:l.getBoundingClientRect()}if(co&&9>fo&&!s&&(!i||!i.left&&!i.right)){var h=l.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+vt(e.display),top:h.top,bottom:h.bottom}:Io}for(var d=i.top-t.rect.top,p=i.bottom-t.rect.top,g=(d+p)/2,v=t.view.measure.heights,c=0;cr.from?l(e-1):l(e,n)}n=n||jn(e.doc,t.line),i||(i=Ze(e,n));var a=Qn(n),u=t.ch;if(!a)return l(u);var c=no(a,u),f=s(u,c);return null!=$l&&(f.other=s(u,$l)),f}function ft(e,t){var r=0,t=pe(e.doc,t);e.options.lineWrapping||(r=vt(e.display)*t.ch);var n=jn(e.doc,t.line),i=Zn(n)+Be(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function ht(e,t,r,n){var i=Ao(e,t);return i.xRel=n,r&&(i.outside=!0),i}function dt(e,t,r){var n=e.doc;if(r+=e.display.viewOffset,0>r)return ht(n.first,0,!0,-1);var i=qn(n,r),o=n.first+n.size-1;if(i>o)return ht(n.first+n.size-1,jn(n,o).text.length,!0,1);0>t&&(t=0);for(var l=jn(n,i);;){var s=pt(e,l,i,t,r),a=cn(l),u=a&&a.find(0,!0);if(!a||!(s.ch>u.from.ch||s.ch==u.from.ch&&s.xRel>0))return s;i=$n(l=u.to.line)}}function pt(e,t,r,n,i){function o(n){var i=ct(e,Ao(r,n),"line",t,u);return s=!0,l>i.bottom?i.left-a:lv)return ht(r,d,m,1);for(;;){if(c?d==h||d==oo(t,h,1):1>=d-h){for(var y=p>n||v-n>=n-p?h:d,b=n-(y==h?p:v);Ii(t.text.charAt(y));)++y;var w=ht(r,y,y==h?g:m,-1>b?-1:b>1?1:0);return w}var x=Math.ceil(f/2),C=h+x;if(c){C=h;for(var S=0;x>S;++S)C=oo(t,C,1)}var L=o(C);L>n?(d=C,v=L,(m=s)&&(v+=1e3),f=x):(h=C,p=L,g=s,f-=x)}}function gt(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==Do){Do=Ei("pre");for(var t=0;49>t;++t)Do.appendChild(document.createTextNode("x")),Do.appendChild(Ei("br"));Do.appendChild(document.createTextNode("x"))}Fi(e.measure,Do);var r=Do.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),zi(e.measure),r||1}function vt(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=Ei("span","xxxxxxxxxx"),r=Ei("pre",[t]);Fi(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function mt(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:null,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,id:++zo},Eo?Eo.ops.push(e.curOp):e.curOp.ownsGroup=Eo={ops:[e.curOp],delayedCallbacks:[]}}function yt(e){var t=e.delayedCallbacks,r=0;do{for(;r=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new k(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Ct(e){e.updatedDisplay=e.mustUpdate&&M(e.cm,e.update)}function St(e){var t=e.cm,r=t.display;e.updatedDisplay&&O(t),e.barMeasure=p(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=$e(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Ve(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Ke(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Lt(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLefto;o=n){var l=new Wt(e.doc,jn(e.doc,o),o);n=o+l.size,i.push(l)}return i}function Dt(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.doc.size),n||(n=0);var i=e.display;if(n&&rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)No&&pn(e.doc,t)i.viewFrom?Pt(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)Pt(e);else if(t<=i.viewFrom){var o=Et(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):Pt(e)}else if(r>=i.viewTo){var o=Et(e,t,t,-1);o?(i.view=i.view.slice(0,o.index),i.viewTo=o.lineN):Pt(e)}else{var l=Et(e,t,t,-1),s=Et(e,r,r+n,1);l&&s?(i.view=i.view.slice(0,l.index).concat(Ot(e,l.lineN,s.lineN)).concat(i.view.slice(s.index)),i.viewTo+=n):Pt(e)}var a=i.externalMeasured;a&&(r=i.lineN&&t=n.viewTo)){var o=n.view[It(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==Mi(l,r)&&l.push(r)}}}function Pt(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function It(e,t){if(t>=e.display.viewTo)return null;if(t-=e.display.viewFrom,0>t)return null;for(var r=e.display.view,n=0;nt)return n}function Et(e,t,r,n){var i,o=It(e,t),l=e.display.view;if(!No||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var s=0,a=e.display.viewFrom;o>s;s++)a+=l[s].size;if(a!=t){if(n>0){if(o==l.length-1)return null;i=a+l[o].size-t,o++}else i=a-t;t+=i,r+=i}for(;pn(e.doc,r)!=r;){if(o==(0>n?0:l.length-1))return null;r+=n*l[o-(0>n?1:0)].size,o+=n}return{index:o,lineN:r}}function zt(e,t,r){var n=e.display,i=n.view;0==i.length||t>=n.viewTo||r<=n.viewFrom?(n.view=Ot(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=Ot(e,t,n.viewFrom).concat(n.view):n.viewFromr&&(n.view=n.view.slice(0,It(e,r)))),n.viewTo=r}function Ft(e){for(var t=e.display.view,r=0,n=0;n400}function i(t){bi(e,t)||wl(t)}var o=e.display;xl(o.scroller,"mousedown",Mt(e,Vt)),co&&11>fo?xl(o.scroller,"dblclick",Mt(e,function(t){if(!bi(e,t)){var r=Ut(e,t);if(r&&!Yt(e,t)&&!Gt(e.display,t)){yl(t);var n=e.findWordAt(r);be(e.doc,n.anchor,n.head)}}})):xl(o.scroller,"dblclick",function(t){bi(e,t)||yl(t)}),To||xl(o.scroller,"contextmenu",function(t){hr(e,t)});var l,s={end:0};xl(o.scroller,"touchstart",function(e){if(!r(e)){clearTimeout(l);var t=+new Date;o.activeTouch={start:t,moved:!1,prev:t-s.end<=300?s:null},1==e.touches.length&&(o.activeTouch.left=e.touches[0].pageX,o.activeTouch.top=e.touches[0].pageY)}}),xl(o.scroller,"touchmove",function(){o.activeTouch&&(o.activeTouch.moved=!0)}),xl(o.scroller,"touchend",function(r){var i=o.activeTouch;if(i&&!Gt(o,r)&&null!=i.left&&!i.moved&&new Date-i.start<300){var l,s=e.coordsChar(o.activeTouch,"page");l=!i.prev||n(i,i.prev)?new ce(s,s):!i.prev.prev||n(i,i.prev.prev)?e.findWordAt(s):new ce(Ao(s.line,0),pe(e.doc,Ao(s.line+1,0))),e.setSelection(l.anchor,l.head),e.focus(),yl(r)}t()}),xl(o.scroller,"touchcancel",t),xl(o.scroller,"scroll",function(){o.scroller.clientHeight&&(Zt(e,o.scroller.scrollTop),Qt(e,o.scroller.scrollLeft,!0),Sl(e,"scroll",e))}),xl(o.scroller,"mousewheel",function(t){Jt(e,t)}),xl(o.scroller,"DOMMouseScroll",function(t){Jt(e,t)}),xl(o.wrapper,"scroll",function(){o.wrapper.scrollTop=o.wrapper.scrollLeft=0}),e.options.dragDrop&&(xl(o.scroller,"dragstart",function(t){qt(e,t)}),xl(o.scroller,"dragenter",i),xl(o.scroller,"dragover",i),xl(o.scroller,"drop",Mt(e,$t)));var a=o.input.getField();xl(a,"keyup",function(t){sr.call(e,t)}),xl(a,"keydown",Mt(e,or)),xl(a,"keypress",Mt(e,ar)),xl(a,"focus",Di(cr,e)),xl(a,"blur",Di(fr,e))}function Bt(e){var t=e.display;(t.lastWrapHeight!=t.wrapper.clientHeight||t.lastWrapWidth!=t.wrapper.clientWidth)&&(t.cachedCharWidth=t.cachedTextHeight=t.cachedPaddingH=null,t.scrollbarsClipped=!1,e.setSize())}function Gt(e,t){for(var r=gi(t);r!=e.wrapper;r=r.parentNode)if(!r||1==r.nodeType&&"true"==r.getAttribute("cm-ignore-events")||r.parentNode==e.sizer&&r!=e.mover)return!0}function Ut(e,t,r,n){var i=e.display;if(!r&&"true"==gi(t).getAttribute("cm-not-content"))return null;var o,l,s=i.lineSpace.getBoundingClientRect();try{o=t.clientX-s.left,l=t.clientY-s.top}catch(t){return null}var a,u=dt(e,o,l);if(n&&1==u.xRel&&(a=jn(e.doc,u.line).text).length==u.ch){var c=Wl(a,a.length,e.options.tabSize)-a.length;u=Ao(u.line,Math.max(0,Math.round((o-Ue(e.display).left)/vt(e.display))-c))}return u}function Vt(e){var t=this,r=t.display;if(!(r.activeTouch&&r.input.supportsTouch()||bi(t,e))){if(r.shift=e.shiftKey,Gt(r,e))return void(ho||(r.scroller.draggable=!1,setTimeout(function(){r.scroller.draggable=!0},100)));if(!Yt(t,e)){var n=Ut(t,e);switch(window.focus(),vi(e)){case 1:n?Kt(t,e,n):gi(e)==r.scroller&&yl(e);break;case 2:ho&&(t.state.lastMiddleDown=+new Date),n&&be(t.doc,n),setTimeout(function(){r.input.focus()},20),yl(e);break;case 3:To?hr(t,e):ur(t)}}}}function Kt(e,t,r){co?setTimeout(Di(q,e),0):q(e);var n,i=+new Date;Po&&Po.time>i-400&&0==Wo(Po.pos,r)?n="triple":Ho&&Ho.time>i-400&&0==Wo(Ho.pos,r)?(n="double",Po={time:i,pos:r}):(n="single",Ho={time:i,pos:r});var o,l=e.doc.sel,s=Co?t.metaKey:t.ctrlKey;e.options.dragDrop&&Vl&&!Z(e)&&"single"==n&&(o=l.contains(r))>-1&&!l.ranges[o].empty()?jt(e,t,r,s):Xt(e,t,r,n,s)}function jt(e,t,r,n){var i=e.display,o=Mt(e,function(l){ho&&(i.scroller.draggable=!1),e.state.draggingText=!1,Cl(document,"mouseup",o),Cl(i.scroller,"drop",o),Math.abs(t.clientX-l.clientX)+Math.abs(t.clientY-l.clientY)<10&&(yl(l),n||be(e.doc,r),ho||co&&9==fo?setTimeout(function(){document.body.focus(),i.input.focus()},20):i.input.focus())});ho&&(i.scroller.draggable=!0),e.state.draggingText=o,i.scroller.dragDrop&&i.scroller.dragDrop(),xl(document,"mouseup",o),xl(i.scroller,"drop",o)}function Xt(e,t,r,n,i){function o(t){if(0!=Wo(v,t))if(v=t,"rect"==n){for(var i=[],o=e.options.tabSize,l=Wl(jn(u,r.line).text,r.ch,o),s=Wl(jn(u,t.line).text,t.ch,o),a=Math.min(l,s),d=Math.max(l,s),p=Math.min(r.line,t.line),g=Math.min(e.lastLine(),Math.max(r.line,t.line));g>=p;p++){var m=jn(u,p).text,y=Li(m,a,o);a==d?i.push(new ce(Ao(p,y),Ao(p,y))):m.length>y&&i.push(new ce(Ao(p,y),Ao(p,Li(m,d,o))))}i.length||i.push(new ce(r,r)),ke(u,fe(h.ranges.slice(0,f).concat(i),f),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b=c,w=b.anchor,x=t;if("single"!=n){if("double"==n)var C=e.findWordAt(t);else var C=new ce(Ao(t.line,0),pe(u,Ao(t.line+1,0)));Wo(C.anchor,w)>0?(x=C.head,w=$(b.from(),C.anchor)):(x=C.anchor,w=Y(b.to(),C.head))}var i=h.ranges.slice(0);i[f]=new ce(pe(u,w),x),ke(u,fe(i,f),Nl)}}function l(t){var r=++y,i=Ut(e,t,!0,"rect"==n);if(i)if(0!=Wo(i,v)){q(e),o(i);var s=w(a,u);(i.line>=s.to||i.linem.bottom?20:0;c&&setTimeout(Mt(e,function(){y==r&&(a.scroller.scrollTop+=c,l(t))}),50)}}function s(e){y=1/0,yl(e),a.input.focus(),Cl(document,"mousemove",b),Cl(document,"mouseup",x),u.history.lastSelOrigin=null}var a=e.display,u=e.doc;yl(t);var c,f,h=u.sel,d=h.ranges;if(i&&!t.shiftKey?(f=u.sel.contains(r),c=f>-1?d[f]:new ce(r,r)):(c=u.sel.primary(),f=u.sel.primIndex),t.altKey)n="rect",i||(c=new ce(r,r)),r=Ut(e,t,!0,!0),f=-1;else if("double"==n){var p=e.findWordAt(r);c=e.display.shift||u.extend?ye(u,c,p.anchor,p.head):p}else if("triple"==n){var g=new ce(Ao(r.line,0),pe(u,Ao(r.line+1,0)));c=e.display.shift||u.extend?ye(u,c,g.anchor,g.head):g}else c=ye(u,c,r);i?-1==f?(f=d.length,ke(u,fe(d.concat([c]),f),{scroll:!1,origin:"*mouse"})):d.length>1&&d[f].empty()&&"single"==n&&!t.shiftKey?(ke(u,fe(d.slice(0,f).concat(d.slice(f+1)),0)),h=u.sel):xe(u,f,c,Nl):(f=0,ke(u,new ue([c],0),Nl),h=u.sel);var v=r,m=a.wrapper.getBoundingClientRect(),y=0,b=Mt(e,function(e){vi(e)?l(e):s(e)}),x=Mt(e,s);xl(document,"mousemove",b),xl(document,"mouseup",x)}function _t(e,t,r,n,i){try{var o=t.clientX,l=t.clientY}catch(t){return!1}if(o>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&yl(t);var s=e.display,a=s.lineDiv.getBoundingClientRect();if(l>a.bottom||!xi(e,r))return pi(t);l-=a.top-s.viewOffset;for(var u=0;u=o){var f=qn(e.doc,l),h=e.options.gutters[u];return i(e,r,e,f,h,t),pi(t)}}}function Yt(e,t){return _t(e,t,"gutterClick",!0,mi)}function $t(e){var t=this;if(!bi(t,e)&&!Gt(t.display,e)){yl(e),co&&(Fo=+new Date);var r=Ut(t,e,!0),n=e.dataTransfer.files;if(r&&!Z(t))if(n&&n.length&&window.FileReader&&window.File)for(var i=n.length,o=Array(i),l=0,s=function(e,n){var s=new FileReader;s.onload=Mt(t,function(){if(o[n]=s.result,++l==i){r=pe(t.doc,r);var e={from:r,to:r,text:Kl(o.join("\n")),origin:"paste"};br(t.doc,e),Le(t.doc,he(r,Ko(e)))}}),s.readAsText(e)},a=0;i>a;++a)s(n[a],a);else{if(t.state.draggingText&&t.doc.sel.contains(r)>-1)return t.state.draggingText(e),void setTimeout(function(){t.display.input.focus()},20);try{var o=e.dataTransfer.getData("Text");if(o){if(t.state.draggingText&&!(Co?e.metaKey:e.ctrlKey))var u=t.listSelections();if(Te(t.doc,he(r,r)),u)for(var a=0;al.clientWidth||i&&l.scrollHeight>l.clientHeight){if(i&&Co&&ho)e:for(var s=t.target,a=o.view;s!=l;s=s.parentNode)for(var u=0;uc?f=Math.max(0,f+c-50):h=Math.min(e.doc.height,h+c+50),A(e,{top:f,bottom:h})}20>Ro&&(null==o.wheelStartX?(o.wheelStartX=l.scrollLeft,o.wheelStartY=l.scrollTop,o.wheelDX=n,o.wheelDY=i,setTimeout(function(){if(null!=o.wheelStartX){var e=l.scrollLeft-o.wheelStartX,t=l.scrollTop-o.wheelStartY,r=t&&o.wheelDY&&t/o.wheelDY||e&&o.wheelDX&&e/o.wheelDX;o.wheelStartX=o.wheelStartY=null,r&&(Bo=(Bo*Ro+r)/(Ro+1),++Ro)}},200)):(o.wheelDX+=n,o.wheelDY+=i))}}function er(e,t,r){if("string"==typeof t&&(t=tl[t],!t))return!1;e.display.input.ensurePolled();var n=e.display.shift,i=!1;try{Z(e)&&(e.state.suppressEdits=!0),r&&(e.display.shift=!1),i=t(e)!=Tl}finally{e.display.shift=n,e.state.suppressEdits=!1}return i}function tr(e,t,r){for(var n=0;nfo&&27==e.keyCode&&(e.returnValue=!1);var r=e.keyCode;t.display.shift=16==r||e.shiftKey;var n=nr(t,e);vo&&(Vo=n?r:null,!n&&88==r&&!Xl&&(Co?e.metaKey:e.ctrlKey)&&t.replaceSelection("",null,"cut")),18!=r||/\bCodeMirror-crosshair\b/.test(t.display.lineDiv.className)||lr(t)}}function lr(e){function t(e){18!=e.keyCode&&e.altKey||(Bl(r,"CodeMirror-crosshair"),Cl(document,"keyup",t),Cl(document,"mouseover",t))}var r=e.display.lineDiv;Gl(r,"CodeMirror-crosshair"),xl(document,"keyup",t),xl(document,"mouseover",t)}function sr(e){16==e.keyCode&&(this.doc.sel.shift=!1),bi(this,e)}function ar(e){var t=this;if(!(Gt(t.display,e)||bi(t,e)||e.ctrlKey&&!e.altKey||Co&&e.metaKey)){var r=e.keyCode,n=e.charCode;if(vo&&r==Vo)return Vo=null,void yl(e);if(!vo||e.which&&!(e.which<10)||!nr(t,e)){var i=String.fromCharCode(null==n?r:n);ir(t,e,i)||t.display.input.onKeyPress(e)}}}function ur(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,fr(e))},100)}function cr(e){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(Sl(e,"focus",e),e.state.focused=!0,Gl(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),ho&&setTimeout(function(){e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Ie(e))}function fr(e){e.state.delayingBlurEvent||(e.state.focused&&(Sl(e,"blur",e),e.state.focused=!1,Bl(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function hr(e,t){Gt(e.display,t)||dr(e,t)||e.display.input.onContextMenu(t)}function dr(e,t){return xi(e,"gutterContextMenu")?_t(e,t,"gutterContextMenu",!1,Sl):!1}function pr(e,t){if(Wo(e,t.from)<0)return e;if(Wo(e,t.to)<=0)return Ko(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=Ko(t).ch-t.to.ch),Ao(r,n)}function gr(e,t){for(var r=[],n=0;n=0;--i)wr(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text});else wr(e,t)}}function wr(e,t){if(1!=t.text.length||""!=t.text[0]||0!=Wo(t.from,t.to)){var r=gr(e,t);ni(e,t,r,e.cm?e.cm.curOp.id:NaN),Sr(e,t,r,Qr(e,t));var n=[];Vn(e,function(e,r){r||-1!=Mi(n,e.history)||(di(e.history,t),n.push(e.history)),Sr(e,t,null,Qr(e,t))})}}function xr(e,t,r){if(!e.cm||!e.cm.state.suppressEdits){for(var n,i=e.history,o=e.sel,l="undo"==t?i.done:i.undone,s="undo"==t?i.undone:i.done,a=0;a=0;--a){var f=n.changes[a];if(f.origin=t,c&&!yr(e,f,!1))return void(l.length=0);u.push(ei(e,f));var h=a?gr(e,f):Ti(l);Sr(e,f,h,en(e,f)),!a&&e.cm&&e.cm.scrollIntoView({from:f.from,to:Ko(f)});var d=[];Vn(e,function(e,t){t||-1!=Mi(d,e.history)||(di(e.history,f),d.push(e.history)),Sr(e,f,null,en(e,f))})}}}}function Cr(e,t){if(0!=t&&(e.first+=t,e.sel=new ue(Ni(e.sel.ranges,function(e){return new ce(Ao(e.anchor.line+t,e.anchor.ch),Ao(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){Dt(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;ne.lastLine())){if(t.from.lineo&&(t={from:t.from,to:Ao(o,jn(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Xn(e,t.from,t.to),r||(r=gr(e,t)),e.cm?Lr(e.cm,t,n):Bn(e,t,n),Te(e,r,Ml)}}function Lr(e,t,r){var n=e.doc,i=e.display,l=t.from,s=t.to,a=!1,u=l.line;e.options.lineWrapping||(u=$n(hn(jn(n,l.line))),n.iter(u,s.line+1,function(e){return e==i.maxLine?(a=!0,!0):void 0})),n.sel.contains(t.from,t.to)>-1&&wi(e),Bn(n,t,r,o(e)),e.options.lineWrapping||(n.iter(u,l.line+t.text.length,function(e){var t=f(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,a=!1)}),a&&(e.curOp.updateMaxLine=!0)),n.frontier=Math.min(n.frontier,l.line),Ee(e,400);var c=t.text.length-(s.line-l.line)-1;t.full?Dt(e):l.line!=s.line||1!=t.text.length||Rn(e.doc,t)?Dt(e,l.line,s.line+1,c):Ht(e,l.line,"text");var h=xi(e,"changes"),d=xi(e,"change");if(d||h){var p={from:l,to:s,text:t.text,removed:t.removed,origin:t.origin};d&&mi(e,"change",e,p),h&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(p)}e.display.selForContextMenu=null}function kr(e,t,r,n,i){if(n||(n=r),Wo(n,r)<0){var o=n;n=r,r=o}"string"==typeof t&&(t=Kl(t)),br(e,{from:r,to:n,text:t,origin:i})}function Tr(e,t){if(!bi(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!bo){var o=Ei("div","​",null,"position: absolute; top: "+(t.top-r.viewOffset-Be(e.display))+"px; height: "+(t.bottom-t.top+Ve(e)+r.barHeight)+"px; left: "+t.left+"px; width: 2px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function Mr(e,t,r,n){null==n&&(n=0);for(var i=0;5>i;i++){var o=!1,l=ct(e,t),s=r&&r!=t?ct(e,r):l,a=Ar(e,Math.min(l.left,s.left),Math.min(l.top,s.top)-n,Math.max(l.left,s.left),Math.max(l.bottom,s.bottom)+n),u=e.doc.scrollTop,c=e.doc.scrollLeft;if(null!=a.scrollTop&&(Zt(e,a.scrollTop),Math.abs(e.doc.scrollTop-u)>1&&(o=!0)),null!=a.scrollLeft&&(Qt(e,a.scrollLeft),Math.abs(e.doc.scrollLeft-c)>1&&(o=!0)),!o)break}return l}function Nr(e,t,r,n,i){var o=Ar(e,t,r,n,i);null!=o.scrollTop&&Zt(e,o.scrollTop),null!=o.scrollLeft&&Qt(e,o.scrollLeft)}function Ar(e,t,r,n,i){var o=e.display,l=gt(e.display);0>r&&(r=0);var s=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:o.scroller.scrollTop,a=je(e),u={};i-r>a&&(i=r+a);var c=e.doc.height+Ge(o),f=l>r,h=i>c-l;if(s>r)u.scrollTop=f?0:r;else if(i>s+a){var d=Math.min(r,(h?c:i)-a);d!=s&&(u.scrollTop=d)}var p=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:o.scroller.scrollLeft,g=Ke(e)-(e.options.fixedGutter?o.gutters.offsetWidth:0),v=n-t>g;return v&&(n=t+g),10>t?u.scrollLeft=0:p>t?u.scrollLeft=Math.max(0,t-(v?0:10)):n>g+p-3&&(u.scrollLeft=n+(v?0:10)-g),u}function Wr(e,t,r){(null!=t||null!=r)&&Dr(e),null!=t&&(e.curOp.scrollLeft=(null==e.curOp.scrollLeft?e.doc.scrollLeft:e.curOp.scrollLeft)+t),null!=r&&(e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+r)}function Or(e){Dr(e);var t=e.getCursor(),r=t,n=t;e.options.lineWrapping||(r=t.ch?Ao(t.line,t.ch-1):t,n=Ao(t.line,t.ch+1)),e.curOp.scrollToPos={from:r,to:n,margin:e.options.cursorScrollMargin,isCursor:!0}}function Dr(e){var t=e.curOp.scrollToPos;if(t){e.curOp.scrollToPos=null;var r=ft(e,t.from),n=ft(e,t.to),i=Ar(e,Math.min(r.left,n.left),Math.min(r.top,n.top)-t.margin,Math.max(r.right,n.right),Math.max(r.bottom,n.bottom)+t.margin);e.scrollTo(i.scrollLeft,i.scrollTop)}}function Hr(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=Re(e,t):r="prev");var l=e.options.tabSize,s=jn(o,t),a=Wl(s.text,null,l);s.stateAfter&&(s.stateAfter=null);var u,c=s.text.match(/^\s*/)[0];if(n||/\S/.test(s.text)){if("smart"==r&&(u=o.mode.indent(i,s.text.slice(c.length),s.text),u==Tl||u>150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?Wl(jn(o,t-1).text,null,l):0:"add"==r?u=a+e.options.indentUnit:"subtract"==r?u=a-e.options.indentUnit:"number"==typeof r&&(u=a+r),u=Math.max(0,u);var f="",h=0;if(e.options.indentWithTabs)for(var d=Math.floor(u/l);d;--d)h+=l,f+=" ";if(u>h&&(f+=ki(u-h)),f!=c)kr(o,f,Ao(t,0),Ao(t,c.length),"+input");else for(var d=0;d=0;t--)kr(e.doc,"",n[t].from,n[t].to,"+delete");Or(e)})}function Er(e,t,r,n,i){function o(){var t=s+r;return t=e.first+e.size?f=!1:(s=t,c=jn(e,t))}function l(e){var t=(i?oo:lo)(c,a,r,!0);if(null==t){if(e||!o())return f=!1;a=i?(0>r?Qi:Zi)(c):0>r?c.text.length:0}else a=t;return!0}var s=t.line,a=t.ch,u=r,c=jn(e,s),f=!0;if("char"==n)l();else if("column"==n)l(!0);else if("word"==n||"group"==n)for(var h=null,d="group"==n,p=e.cm&&e.cm.getHelper(t,"wordChars"),g=!0;!(0>r)||l(!g);g=!1){var v=c.text.charAt(a)||"\n",m=Hi(v,p)?"w":d&&"\n"==v?"n":!d||/\s/.test(v)?null:"p";if(!d||g||m||(m="s"),h&&h!=m){0>r&&(r=1,l());break}if(m&&(h=m),r>0&&!l(!g))break}var y=We(e,Ao(s,a),u,!0);return f||(y.hitSide=!0),y}function zr(e,t,r,n){var i,o=e.doc,l=t.left;if("page"==n){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);i=t.top+r*(s-(0>r?1.5:.5)*gt(e.display))}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;;){var a=dt(e,l,i);if(!a.outside)break;if(0>r?0>=i:i>=o.height){a.hitSide=!0;break}i+=5*r}return a}function Fr(t,r,n,i){e.defaults[t]=r,n&&(Xo[t]=i?function(e,t,r){r!=_o&&n(e,t,r)}:n)}function Rr(e){for(var t,r,n,i,o=e.split(/-(?!$)/),e=o[o.length-1],l=0;l0||0==l&&o.clearWhenEmpty!==!1)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=Ei("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(fn(e,t.line,t,r,o)||t.line!=r.line&&fn(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");No=!0}o.addToHistory&&ni(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var s,a=t.line,u=e.cm;if(e.iter(a,r.line+1,function(e){u&&o.collapsed&&!u.options.lineWrapping&&hn(e)==u.display.maxLine&&(s=!0),o.collapsed&&a!=t.line&&Yn(e,0),$r(e,new Xr(o,a==t.line?t.ch:null,a==r.line?r.ch:null)),++a}),o.collapsed&&e.iter(t.line,r.line+1,function(t){vn(e,t)&&Yn(t,0)}),o.clearOnEnter&&xl(o,"beforeCursorEnter",function(){o.clear()}),o.readOnly&&(Mo=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++sl,o.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),o.collapsed)Dt(u,t.line,r.line+1);else if(o.className||o.title||o.startStyle||o.endStyle||o.css)for(var c=t.line;c<=r.line;c++)Ht(u,c,"text");o.atomic&&Ne(u.doc),mi(u,"markerAdded",u,o)}return o}function Ur(e,t,r,n,i){n=Oi(n),n.shared=!1;var o=[Gr(e,t,r,n,i)],l=o[0],s=n.widgetNode;return Vn(e,function(e){s&&(n.widgetNode=s.cloneNode(!0)),o.push(Gr(e,pe(e,t),pe(e,r),n,i));for(var a=0;a=t:o.to>t);(n||(n=[])).push(new Xr(l,o.from,a?null:o.to))}}return n}function Zr(e,t,r){if(e)for(var n,i=0;i=t:o.to>t);if(s||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var a=null==o.from||(l.inclusiveLeft?o.from<=t:o.from0&&s)for(var f=0;ff;++f)p.push(g);p.push(a)}return p}function Jr(e){for(var t=0;t0)){var c=[a,1],f=Wo(u.from,s.from),h=Wo(u.to,s.to);(0>f||!l.inclusiveLeft&&!f)&&c.push({from:u.from,to:s.from}),(h>0||!l.inclusiveRight&&!h)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),a+=c.length-1}}return i}function rn(e){var t=e.markedSpans;if(t){for(var r=0;r=0&&0>=f||0>=c&&f>=0)&&(0>=c&&(Wo(u.to,r)>0||a.marker.inclusiveRight&&i.inclusiveLeft)||c>=0&&(Wo(u.from,n)<0||a.marker.inclusiveLeft&&i.inclusiveRight)))return!0}}}function hn(e){for(var t;t=un(e);)e=t.find(-1,!0).line;return e}function dn(e){for(var t,r;t=cn(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}function pn(e,t){var r=jn(e,t),n=hn(r);return r==n?t:$n(n)}function gn(e,t){if(t>e.lastLine())return t;var r,n=jn(e,t);if(!vn(e,n))return t;for(;r=cn(n);)n=r.find(1,!0).line;return $n(n)+1}function vn(e,t){var r=No&&t.markedSpans;if(r)for(var n,i=0;io;o++){i&&(i[0]=e.innerMode(t,n).mode);var l=t.token(r,n);if(r.pos>r.start)return l}throw new Error("Mode "+t.name+" failed to advance stream.")}function Tn(e,t,r,n){function i(e){return{start:f.start,end:f.pos,string:f.current(),type:o||null,state:e?Jo(l.mode,c):c}}var o,l=e.doc,s=l.mode;t=pe(l,t);var a,u=jn(l,t.line),c=Re(e,t.line,r),f=new ll(u.text,e.options.tabSize);for(n&&(a=[]);(n||f.pose.options.maxHighlightLength?(s=!1,l&&Wn(e,t,n,f.pos),f.pos=t.length,a=null):a=Sn(kn(r,f,n,h),o),h){var d=h[0].name;d&&(a="m-"+(a?d+" "+a:d))}if(!s||c!=a){for(;uu;){var n=i[a];n>e&&i.splice(a,1,e,i[a+1],n),a+=2,u=Math.min(e,n)}if(t)if(s.opaque)i.splice(r,a-r,e,"cm-overlay "+t),a=r+2;else for(;a>r;r+=2){var o=i[r+1];i[r+1]=(o?o+" ":"")+"cm-overlay "+t}},o)}return{styles:i,classes:o.bgClass||o.textClass?o:null}}function An(e,t,r){if(!t.styles||t.styles[0]!=e.state.modeGen){var n=Nn(e,t,t.stateAfter=Re(e,$n(t)));t.styles=n.styles,n.classes?t.styleClasses=n.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.frontier&&e.doc.frontier++}return t.styles}function Wn(e,t,r,n){var i=e.doc.mode,o=new ll(t,e.options.tabSize);for(o.start=o.pos=n||0,""==t&&Ln(i,r);!o.eol()&&o.pos<=e.options.maxHighlightLength;)kn(i,o,r),o.start=o.pos}function On(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?dl:hl;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function Dn(e,t){var r=Ei("span",null,null,ho?"padding-right: .1px":null),n={pre:Ei("pre",[r]),content:r,col:0,pos:0,cm:e,splitSpaces:(co||ho)&&e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o,l=i?t.rest[i-1]:t.line;n.pos=0,n.addToken=Pn,Xi(e.display.measure)&&(o=Qn(l))&&(n.addToken=En(n.addToken,o)),n.map=[];var s=t!=e.display.externalMeasured&&$n(l);Fn(l,n,An(e,l,s)),l.styleClasses&&(l.styleClasses.bgClass&&(n.bgClass=Gi(l.styleClasses.bgClass,n.bgClass||"")),l.styleClasses.textClass&&(n.textClass=Gi(l.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(ji(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}return ho&&/\bcm-tab\b/.test(n.content.lastChild.className)&&(n.content.className="cm-tab-wrap-hack"),Sl(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=Gi(n.pre.className,n.textClass||"")),n}function Hn(e){var t=Ei("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function Pn(e,t,r,n,i,o,l){if(t){var s=e.splitSpaces?t.replace(/ {3,}/g,In):t,a=e.cm.state.specialChars,u=!1;if(a.test(t))for(var c=document.createDocumentFragment(),f=0;;){a.lastIndex=f;var h=a.exec(t),d=h?h.index-f:t.length-f;if(d){var p=document.createTextNode(s.slice(f,f+d));co&&9>fo?c.appendChild(Ei("span",[p])):c.appendChild(p),e.map.push(e.pos,e.pos+d,p),e.col+=d,e.pos+=d}if(!h)break;if(f+=d+1," "==h[0]){var g=e.cm.options.tabSize,v=g-e.col%g,p=c.appendChild(Ei("span",ki(v),"cm-tab"));p.setAttribute("role","presentation"),p.setAttribute("cm-text"," "),e.col+=v}else{var p=e.cm.options.specialCharPlaceholder(h[0]);p.setAttribute("cm-text",h[0]),co&&9>fo?c.appendChild(Ei("span",[p])):c.appendChild(p),e.col+=1}e.map.push(e.pos,e.pos+1,p),e.pos++}else{e.col+=t.length;var c=document.createTextNode(s);e.map.push(e.pos,e.pos+t.length,c),co&&9>fo&&(u=!0),e.pos+=t.length}if(r||n||i||u||l){var m=r||"";n&&(m+=n),i&&(m+=i);var y=Ei("span",[c],m,l);return o&&(y.title=o),e.content.appendChild(y)}e.content.appendChild(c)}}function In(e){for(var t=" ",r=0;ru&&h.from<=u)break}if(h.to>=c)return e(r,n,i,o,l,s,a);e(r,n.slice(0,h.to-u),i,o,null,s,a),o=null,n=n.slice(h.to-u),u=h.to}}}function zn(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t}function Fn(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,s,a,u,c,f,h,d=i.length,p=0,g=1,v="",m=0;;){if(m==p){a=u=c=f=s="",h=null,m=1/0;for(var y=[],b=0;bp)?(null!=w.to&&m>w.to&&(m=w.to,u=""),x.className&&(a+=" "+x.className),x.css&&(s=x.css),x.startStyle&&w.from==p&&(c+=" "+x.startStyle),x.endStyle&&w.to==m&&(u+=" "+x.endStyle),x.title&&!f&&(f=x.title),x.collapsed&&(!h||sn(h.marker,x)<0)&&(h=w)):w.from>p&&m>w.from&&(m=w.from),"bookmark"==x.type&&w.from==p&&x.widgetNode&&y.push(x)}if(h&&(h.from||0)==p&&(zn(t,(null==h.to?d+1:h.to)-p,h.marker,null==h.from),null==h.to))return;if(!h&&y.length)for(var b=0;b=d)break;for(var C=Math.min(d,m);;){if(v){var S=p+v.length;if(!h){var L=S>C?v.slice(0,C-p):v;t.addToken(t,L,l?l+a:a,c,p+L.length==m?u:"",f,s)}if(S>=C){v=v.slice(C-p),p=C;break}p=S,c=""}v=i.slice(o,o=r[g++]),l=On(r[g++],t.cm.options)}}else for(var g=1;gr;++r)o.push(new fl(u[r],i(r),n));return o}var s=t.from,a=t.to,u=t.text,c=jn(e,s.line),f=jn(e,a.line),h=Ti(u),d=i(u.length-1),p=a.line-s.line;if(t.full)e.insert(0,l(0,u.length)),e.remove(u.length,e.size-u.length);else if(Rn(e,t)){var g=l(0,u.length-1);o(f,f.text,d),p&&e.remove(s.line,p),g.length&&e.insert(s.line,g)}else if(c==f)if(1==u.length)o(c,c.text.slice(0,s.ch)+h+c.text.slice(a.ch),d);else{var g=l(1,u.length-1);g.push(new fl(h+c.text.slice(a.ch),d,n)),o(c,c.text.slice(0,s.ch)+u[0],i(0)),e.insert(s.line+1,g)}else if(1==u.length)o(c,c.text.slice(0,s.ch)+u[0]+f.text.slice(a.ch),i(0)),e.remove(s.line+1,p);else{o(c,c.text.slice(0,s.ch)+u[0],i(0)),o(f,h+f.text.slice(a.ch),d);var g=l(1,u.length-1);p>1&&e.remove(s.line+1,p-1),e.insert(s.line+1,g)}mi(e,"change",e,t)}function Gn(e){this.lines=e,this.parent=null;for(var t=0,r=0;tt||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(o>t){r=i;break}t-=o}return r.lines[t]}function Xn(e,t,r){var n=[],i=t.line;return e.iter(t.line,r.line+1,function(e){var o=e.text;i==r.line&&(o=o.slice(0,r.ch)),i==t.line&&(o=o.slice(t.ch)),n.push(o),++i}),n}function _n(e,t,r){var n=[];return e.iter(t,r,function(e){n.push(e.text)}),n}function Yn(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height+=r}function $n(e){if(null==e.parent)return null;for(var t=e.parent,r=Mi(t.lines,e),n=t.parent;n;t=n,n=n.parent)for(var i=0;n.children[i]!=t;++i)r+=n.children[i].chunkSize();return r+t.first}function qn(e,t){var r=e.first;e:do{for(var n=0;nt){e=i;continue e}t-=o,r+=i.chunkSize()}return r}while(!e.lines);for(var n=0;nt)break;t-=s}return r+n}function Zn(e){e=hn(e);for(var t=0,r=e.parent,n=0;n1&&!e.done[e.done.length-2].ranges?(e.done.pop(),Ti(e.done)):void 0}function ni(e,t,r,n){var i=e.history;i.undone.length=0;var o,l=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&e.cm&&i.lastModTime>l-e.cm.options.historyEventDelay||"*"==t.origin.charAt(0)))&&(o=ri(i,i.lastOp==n))){var s=Ti(o.changes);0==Wo(t.from,t.to)&&0==Wo(t.from,s.to)?s.to=Ko(t):o.changes.push(ei(e,t))}else{var a=Ti(i.done);for(a&&a.ranges||li(e.sel,i.done),o={changes:[ei(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=l,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,s||Sl(e,"historyAdded")}function ii(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function oi(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||ii(e,o,Ti(i.done),t))?i.done[i.done.length-1]=t:li(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&n.clearRedo!==!1&&ti(i.undone)}function li(e,t){var r=Ti(t);r&&r.ranges&&r.equals(e)||t.push(e)}function si(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o})}function ai(e){if(!e)return null;for(var t,r=0;r-1&&(Ti(s)[f]=c[f],delete c[f])}}}return i}function fi(e,t,r,n){r0}function Ci(e){e.prototype.on=function(e,t){xl(this,e,t)},e.prototype.off=function(e,t){Cl(this,e,t)}}function Si(){this.id=null}function Li(e,t,r){for(var n=0,i=0;;){var o=e.indexOf(" ",n);-1==o&&(o=e.length);var l=o-n;if(o==e.length||i+l>=t)return n+Math.min(l,t-i);if(i+=o-n,i+=r-i%r,n=o+1,i>=t)return n}}function ki(e){for(;Ol.length<=e;)Ol.push(Ti(Ol)+" ");return Ol[e]}function Ti(e){return e[e.length-1]}function Mi(e,t){for(var r=0;r-1&&Il(e)?!0:t.test(e):Il(e)}function Pi(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}function Ii(e){return e.charCodeAt(0)>=768&&El.test(e)}function Ei(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o0;--t)e.removeChild(e.firstChild);return e}function Fi(e,t){return zi(e).appendChild(t)}function Ri(){return document.activeElement}function Bi(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function Gi(e,t){for(var r=e.split(" "),n=0;n2&&!(co&&8>fo))}var r=Fl?Ei("span","​"):Ei("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function Xi(e){if(null!=Rl)return Rl;var t=Fi(e,document.createTextNode("AخA")),r=Hl(t,0,1).getBoundingClientRect();if(!r||r.left==r.right)return!1;var n=Hl(t,1,2).getBoundingClientRect();return Rl=n.right-r.right<3}function _i(e){if(null!=_l)return _l;var t=Fi(e,Ei("span","x")),r=t.getBoundingClientRect(),n=Hl(t,0,1).getBoundingClientRect();return _l=Math.abs(r.left-n.left)>1}function Yi(e,t,r,n){if(!e)return n(t,r,"ltr");for(var i=!1,o=0;ot||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr"),i=!0)}i||n(t,r,"ltr")}function $i(e){return e.level%2?e.to:e.from}function qi(e){return e.level%2?e.from:e.to}function Zi(e){var t=Qn(e);return t?$i(t[0]):0}function Qi(e){var t=Qn(e);return t?qi(Ti(t)):e.text.length}function Ji(e,t){var r=jn(e.doc,t),n=hn(r);n!=r&&(t=$n(n));var i=Qn(n),o=i?i[0].level%2?Qi(n):Zi(n):0;return Ao(t,o)}function eo(e,t){for(var r,n=jn(e.doc,t);r=cn(n);)n=r.find(1,!0).line,t=null;var i=Qn(n),o=i?i[0].level%2?Zi(n):Qi(n):n.text.length;return Ao(null==t?$n(n):t,o)}function to(e,t){var r=Ji(e,t.line),n=jn(e.doc,r.line),i=Qn(n);if(!i||0==i[0].level){var o=Math.max(0,n.text.search(/\S/)),l=t.line==r.line&&t.ch<=o&&t.ch;return Ao(r.line,l?0:o)}return r}function ro(e,t,r){var n=e[0].level;return t==n?!0:r==n?!1:r>t}function no(e,t){$l=null;for(var r,n=0;nt)return n;if(i.from==t||i.to==t){if(null!=r)return ro(e,i.level,e[r].level)?(i.from!=i.to&&($l=r),n):(i.from!=i.to&&($l=n),r);r=n}}return r}function io(e,t,r,n){if(!n)return t+r;do t+=r;while(t>0&&Ii(e.text.charAt(t)));return t}function oo(e,t,r,n){var i=Qn(e);if(!i)return lo(e,t,r,n);for(var o=no(i,t),l=i[o],s=io(e,t,l.level%2?-r:r,n);;){if(s>l.from&&s0==l.level%2?l.to:l.from);if(l=i[o+=r],!l)return null;s=r>0==l.level%2?io(e,l.to,-1,n):io(e,l.from,1,n)}}function lo(e,t,r,n){var i=t+r;if(n)for(;i>0&&Ii(e.text.charAt(i));)i+=r;return 0>i||i>e.text.length?null:i}var so=/gecko\/\d/i.test(navigator.userAgent),ao=/MSIE \d/.test(navigator.userAgent),uo=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent),co=ao||uo,fo=co&&(ao?document.documentMode||6:uo[1]),ho=/WebKit\//.test(navigator.userAgent),po=ho&&/Qt\/\d+\.\d+/.test(navigator.userAgent),go=/Chrome\//.test(navigator.userAgent),vo=/Opera\//.test(navigator.userAgent),mo=/Apple Computer/.test(navigator.vendor),yo=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),bo=/PhantomJS/.test(navigator.userAgent),wo=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),xo=wo||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),Co=wo||/Mac/.test(navigator.platform),So=/win/i.test(navigator.platform),Lo=vo&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);Lo&&(Lo=Number(Lo[1])),Lo&&Lo>=15&&(vo=!1,ho=!0);var ko=Co&&(po||vo&&(null==Lo||12.11>Lo)),To=so||co&&fo>=9,Mo=!1,No=!1;g.prototype=Oi({update:function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=e.scrollWidth-e.clientWidth+o+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedOverlay&&e.clientHeight>0&&(0==n&&this.overlayHack(),this.checkedOverlay=!0),{right:r?n:0,bottom:t?n:0}},setScrollLeft:function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e)},setScrollTop:function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e)},overlayHack:function(){var e=Co&&!yo?"12px":"18px";this.horiz.style.minHeight=this.vert.style.minWidth=e;var t=this,r=function(e){gi(e)!=t.vert&&gi(e)!=t.horiz&&Mt(t.cm,Vt)(e)};xl(this.vert,"mousedown",r),xl(this.horiz,"mousedown",r)},clear:function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)}},g.prototype),v.prototype=Oi({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},v.prototype),e.scrollbarModel={"native":g,"null":v},k.prototype.signal=function(e,t){xi(e,t)&&this.events.push(arguments)},k.prototype.finish=function(){for(var e=0;e=9&&r.hasSelection&&(r.hasSelection=null),r.poll()}),xl(o,"paste",function(){if(ho&&!n.state.fakedLastChar&&!(new Date-n.state.lastMiddleDown<200)){var e=o.selectionStart,t=o.selectionEnd;o.value+="$",o.selectionEnd=t,o.selectionStart=e,n.state.fakedLastChar=!0}n.state.pasteIncoming=!0,r.fastPoll()}),xl(o,"cut",t),xl(o,"copy",t),xl(e.scroller,"paste",function(t){Gt(e,t)||(n.state.pasteIncoming=!0,r.focus())}),xl(e.lineSpace,"selectstart",function(t){Gt(e,t)||yl(t)})},prepareSelection:function(){var e=this.cm,t=e.display,r=e.doc,n=De(e);if(e.options.moveInputWithCursor){var i=ct(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},showSelection:function(e){var t=this.cm,r=t.display;Fi(r.cursorDiv,e.cursors),Fi(r.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},reset:function(e){if(!this.contextMenuPending){var t,r,n=this.cm,i=n.doc;if(n.somethingSelected()){this.prevInput="";var o=i.sel.primary();t=Xl&&(o.to().line-o.from().line>100||(r=n.getSelection()).length>1e3);var l=t?"-":r||n.getSelection();this.textarea.value=l,n.state.focused&&Dl(this.textarea),co&&fo>=9&&(this.hasSelection=l)}else e||(this.prevInput=this.textarea.value="",co&&fo>=9&&(this.hasSelection=null));this.inaccurateSelection=t}},getField:function(){return this.textarea},supportsTouch:function(){return!1},focus:function(){if("nocursor"!=this.cm.options.readOnly&&(!xo||Ri()!=this.textarea))try{this.textarea.focus()}catch(e){}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var e=this;e.pollingFast||e.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},fastPoll:function(){function e(){var n=r.poll();n||t?(r.pollingFast=!1,r.slowPoll()):(t=!0,r.polling.set(60,e))}var t=!1,r=this;r.pollingFast=!0,r.polling.set(20,e)},poll:function(){var e=this.cm,t=this.textarea,r=this.prevInput;if(!e.state.focused||jl(t)&&!r||Z(e)||e.options.disableInput||e.state.keySeq)return!1;e.state.pasteIncoming&&e.state.fakedLastChar&&(t.value=t.value.substring(0,t.value.length-1),e.state.fakedLastChar=!1);var n=t.value;if(n==r&&!e.somethingSelected())return!1; +if(co&&fo>=9&&this.hasSelection===n||Co&&/[\uf700-\uf7ff]/.test(n))return e.display.input.reset(),!1;e.doc.sel==e.display.selForContextMenu&&(8203==n.charCodeAt(0)?r||(r="​"):"​"==r&&(n=n.slice(1),r=""));for(var i=0,o=Math.min(r.length,n.length);o>i&&r.charCodeAt(i)==n.charCodeAt(i);)++i;var l=this;return Tt(e,function(){Q(e,n.slice(i),r.length-i),n.length>1e3||n.indexOf("\n")>-1?t.value=l.prevInput="":l.prevInput=n}),!0},ensurePolled:function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},onKeyPress:function(){co&&fo>=9&&(this.hasSelection=null),this.fastPoll()},onContextMenu:function(e){function t(){if(null!=l.selectionStart){var e=i.somethingSelected(),t=l.value="​"+(e?l.value:"");n.prevInput=e?"":"​",l.selectionStart=1,l.selectionEnd=t.length,o.selForContextMenu=i.doc.sel}}function r(){if(n.contextMenuPending=!1,n.wrapper.style.position="relative",l.style.cssText=c,co&&9>fo&&o.scrollbars.setScrollTop(o.scroller.scrollTop=a),null!=l.selectionStart){(!co||co&&9>fo)&&t();var e=0,r=function(){o.selForContextMenu==i.doc.sel&&0==l.selectionStart&&"​"==n.prevInput?Mt(i,tl.selectAll)(i):e++<10?o.detectingSelectAll=setTimeout(r,500):o.input.reset()};o.detectingSelectAll=setTimeout(r,200)}}var n=this,i=n.cm,o=i.display,l=n.textarea,s=Ut(i,e),a=o.scroller.scrollTop;if(s&&!vo){var u=i.options.resetSelectionOnContextMenu;u&&-1==i.doc.sel.contains(s)&&Mt(i,ke)(i.doc,he(s),Ml);var c=l.style.cssText;if(n.wrapper.style.position="absolute",l.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(e.clientY-5)+"px; left: "+(e.clientX-5)+"px; z-index: 1000; background: "+(co?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",ho)var f=window.scrollY;if(o.input.focus(),ho&&window.scrollTo(null,f),o.input.reset(),i.somethingSelected()||(l.value=n.prevInput=" "),n.contextMenuPending=!0,o.selForContextMenu=i.doc.sel,clearTimeout(o.detectingSelectAll),co&&fo>=9&&t(),To){wl(e);var h=function(){Cl(window,"mouseup",h),setTimeout(r,20)};xl(window,"mouseup",h)}else setTimeout(r,50)}},setUneditable:Ai,needsContentAttribute:!1},te.prototype),ne.prototype=Oi({init:function(e){function t(e){if(n.somethingSelected())Oo=n.getSelections(),"cut"==e.type&&n.replaceSelection("",null,"cut");else{var t=J(n);Oo=t.text,"cut"==e.type&&n.operation(function(){n.setSelections(t.ranges,0,Ml),n.replaceSelection("",null,"cut")})}if(e.clipboardData&&!wo)e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/plain",Oo.join("\n"));else{var r=re(),i=r.firstChild;n.display.lineSpace.insertBefore(r,n.display.lineSpace.firstChild),i.value=Oo.join("\n");var o=document.activeElement;Dl(i),setTimeout(function(){n.display.lineSpace.removeChild(r),o.focus()},50)}}var r=this,n=r.cm,i=r.div=e.lineDiv;i.contentEditable="true",ee(i),xl(i,"paste",function(e){var t=e.clipboardData&&e.clipboardData.getData("text/plain");t&&(e.preventDefault(),n.replaceSelection(t,null,"paste"))}),xl(i,"compositionstart",function(e){var t=e.data;if(r.composing={sel:n.doc.sel,data:t,startData:t},t){var i=n.doc.sel.primary(),o=n.getLine(i.head.line),l=o.indexOf(t,Math.max(0,i.head.ch-t.length));l>-1&&l<=i.head.ch&&(r.composing.sel=he(Ao(i.head.line,l),Ao(i.head.line,l+t.length)))}}),xl(i,"compositionupdate",function(e){r.composing.data=e.data}),xl(i,"compositionend",function(e){var t=r.composing;t&&(e.data==t.startData||/\u200b/.test(e.data)||(t.data=e.data),setTimeout(function(){t.handled||r.applyComposition(t),r.composing==t&&(r.composing=null)},50))}),xl(i,"touchstart",function(){r.forceCompositionEnd()}),xl(i,"input",function(){r.composing||r.pollContent()||Tt(r.cm,function(){Dt(n)})}),xl(i,"copy",t),xl(i,"cut",t)},prepareSelection:function(){var e=De(this.cm,!1);return e.focus=this.cm.state.focused,e},showSelection:function(e){e&&this.cm.display.view.length&&(e.focus&&this.showPrimarySelection(),this.showMultipleSelections(e))},showPrimarySelection:function(){var e=window.getSelection(),t=this.cm.doc.sel.primary(),r=le(this.cm,e.anchorNode,e.anchorOffset),n=le(this.cm,e.focusNode,e.focusOffset);if(!r||r.bad||!n||n.bad||0!=Wo($(r,n),t.from())||0!=Wo(Y(r,n),t.to())){var i=ie(this.cm,t.from()),o=ie(this.cm,t.to());if(i||o){var l=this.cm.display.view,s=e.rangeCount&&e.getRangeAt(0);if(i){if(!o){var a=l[l.length-1].measure,u=a.maps?a.maps[a.maps.length-1]:a.map;o={node:u[u.length-1],offset:u[u.length-2]-u[u.length-3]}}}else i={node:l[0].measure.map[2],offset:0};try{var c=Hl(i.node,i.offset,o.offset,o.node)}catch(f){}c&&(e.removeAllRanges(),e.addRange(c),s&&null==e.anchorNode?e.addRange(s):so&&this.startGracePeriod()),this.rememberSelection()}}},startGracePeriod:function(){var e=this;clearTimeout(this.gracePeriod),this.gracePeriod=setTimeout(function(){e.gracePeriod=!1,e.selectionChanged()&&e.cm.operation(function(){e.cm.curOp.selectionChanged=!0})},20)},showMultipleSelections:function(e){Fi(this.cm.display.cursorDiv,e.cursors),Fi(this.cm.display.selectionDiv,e.selection)},rememberSelection:function(){var e=window.getSelection();this.lastAnchorNode=e.anchorNode,this.lastAnchorOffset=e.anchorOffset,this.lastFocusNode=e.focusNode,this.lastFocusOffset=e.focusOffset},selectionInEditor:function(){var e=window.getSelection();if(!e.rangeCount)return!1;var t=e.getRangeAt(0).commonAncestorContainer;return zl(this.div,t)},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 e(){t.cm.state.focused&&(t.pollSelection(),t.polling.set(t.cm.options.pollInterval,e))}var t=this;this.selectionInEditor()?this.pollSelection():Tt(this.cm,function(){t.cm.curOp.selectionChanged=!0}),this.polling.set(this.cm.options.pollInterval,e)},selectionChanged:function(){var e=window.getSelection();return e.anchorNode!=this.lastAnchorNode||e.anchorOffset!=this.lastAnchorOffset||e.focusNode!=this.lastFocusNode||e.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var e=window.getSelection(),t=this.cm;this.rememberSelection();var r=le(t,e.anchorNode,e.anchorOffset),n=le(t,e.focusNode,e.focusOffset);r&&n&&Tt(t,function(){ke(t.doc,he(r,n),Ml),(r.bad||n.bad)&&(t.curOp.selectionChanged=!0)})}},pollContent:function(){var e=this.cm,t=e.display,r=e.doc.sel.primary(),n=r.from(),i=r.to();if(n.linet.viewTo-1)return!1;var o;if(n.line==t.viewFrom||0==(o=It(e,n.line)))var l=$n(t.view[0].line),s=t.view[0].node;else var l=$n(t.view[o].line),s=t.view[o-1].node.nextSibling;var a=It(e,i.line);if(a==t.view.length-1)var u=t.viewTo-1,c=t.view[a].node;else var u=$n(t.view[a+1].line)-1,c=t.view[a+1].node.previousSibling;for(var f=Kl(ae(e,s,c,l,u)),h=Xn(e.doc,Ao(l,0),Ao(u,jn(e.doc,u).text.length));f.length>1&&h.length>1;)if(Ti(f)==Ti(h))f.pop(),h.pop(),u--;else{if(f[0]!=h[0])break;f.shift(),h.shift(),l++}for(var d=0,p=0,g=f[0],v=h[0],m=Math.min(g.length,v.length);m>d&&g.charCodeAt(d)==v.charCodeAt(d);)++d;for(var y=Ti(f),b=Ti(h),w=Math.min(y.length-(1==f.length?d:0),b.length-(1==h.length?d:0));w>p&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)++p;f[f.length-1]=y.slice(0,y.length-p),f[0]=f[0].slice(d);var x=Ao(l,d),C=Ao(u,h.length?Ti(h).length-p:0);return f.length>1||f[0]||Wo(x,C)?(kr(e.doc,f,x,C,"+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(e){e.data&&e.data!=e.startData&&Mt(this.cm,Q)(this.cm,e.data,0,e.sel)},setUneditable:function(e){e.setAttribute("contenteditable","false")},onKeyPress:function(e){e.preventDefault(),Mt(this.cm,Q)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0)},onContextMenu:Ai,resetPosition:Ai,needsContentAttribute:!0},ne.prototype),e.inputStyles={textarea:te,contenteditable:ne},ue.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(e){if(e==this)return!0;if(e.primIndex!=this.primIndex||e.ranges.length!=this.ranges.length)return!1;for(var t=0;t=0&&Wo(e,n.to())<=0)return r}return-1}},ce.prototype={from:function(){return $(this.anchor,this.head)},to:function(){return Y(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};var Do,Ho,Po,Io={left:0,right:0,top:0,bottom:0},Eo=null,zo=0,Fo=0,Ro=0,Bo=null;co?Bo=-.53:so?Bo=15:go?Bo=-.7:mo&&(Bo=-1/3);var Go=function(e){var t=e.wheelDeltaX,r=e.wheelDeltaY;return null==t&&e.detail&&e.axis==e.HORIZONTAL_AXIS&&(t=e.detail),null==r&&e.detail&&e.axis==e.VERTICAL_AXIS?r=e.detail:null==r&&(r=e.wheelDelta),{x:t,y:r}};e.wheelEventPixels=function(e){var t=Go(e);return t.x*=Bo,t.y*=Bo,t};var Uo=new Si,Vo=null,Ko=e.changeEnd=function(e){return e.text?Ao(e.from.line+e.text.length-1,Ti(e.text).length+(1==e.text.length?e.from.ch:0)):e.to};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,t){var r=this.options,n=r[e];(r[e]!=t||"mode"==e)&&(r[e]=t,Xo.hasOwnProperty(e)&&Mt(this,Xo[e])(this,t,n))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Br(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,r=0;rr&&(Hr(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&Or(this));else{var o=i.from(),l=i.to(),s=Math.max(r,o.line);r=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1;for(var a=s;r>a;++a)Hr(this,a,e);var u=this.doc.sel.ranges;0==o.ch&&t.length==u.length&&u[n].from().ch>0&&xe(this.doc,n,new ce(o,u[n].to()),Ml)}}}),getTokenAt:function(e,t){return Tn(this,e,t)},getLineTokens:function(e,t){return Tn(this,Ao(e),t,!0)},getTokenTypeAt:function(e){e=pe(this.doc,e);var t,r=An(this,jn(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]s?t:0==s?null:t.slice(0,s-1)},getModeAt:function(t){var r=this.doc.mode;return r.innerMode?e.innerMode(r,this.getTokenAt(t).state).mode:r},getHelper:function(e,t){return this.getHelpers(e,t)[0]},getHelpers:function(e,t){var r=[];if(!Qo.hasOwnProperty(t))return r;var n=Qo[t],i=this.getModeAt(e);if("string"==typeof i[t])n[i[t]]&&r.push(n[i[t]]);else if(i[t])for(var o=0;on&&(e=n,r=!0);var i=jn(this.doc,e);return st(this,i,{top:0,left:0},t||"page").top+(r?this.doc.height-Zn(i):0)},defaultTextHeight:function(){return gt(this.display)},defaultCharWidth:function(){return vt(this.display)},setGutterMarker:Nt(function(e,t,r){return Pr(this.doc,e,"gutter",function(e){var n=e.gutterMarkers||(e.gutterMarkers={});return n[t]=r,!r&&Pi(n)&&(e.gutterMarkers=null),!0})}),clearGutter:Nt(function(e){var t=this,r=t.doc,n=r.first;r.iter(function(r){r.gutterMarkers&&r.gutterMarkers[e]&&(r.gutterMarkers[e]=null,Ht(t,n,"gutter"),Pi(r.gutterMarkers)&&(r.gutterMarkers=null)),++n})}),lineInfo:function(e){if("number"==typeof e){if(!ve(this.doc,e))return null;var t=e;if(e=jn(this.doc,e),!e)return null}else{var t=$n(e);if(null==t)return null}return{line:t,handle:e,text:e.text,gutterMarkers:e.gutterMarkers,textClass:e.textClass,bgClass:e.bgClass,wrapClass:e.wrapClass,widgets:e.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o=this.display;e=ct(this,pe(this.doc,e));var l=e.bottom,s=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==n)l=e.top;else if("above"==n||"near"==n){var a=Math.max(o.wrapper.clientHeight,this.doc.height),u=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>a)&&e.top>t.offsetHeight?l=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=a&&(l=e.bottom),s+t.offsetWidth>u&&(s=u-t.offsetWidth)}t.style.top=l+"px",t.style.left=t.style.right="","right"==i?(s=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?s=0:"middle"==i&&(s=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=s+"px"),r&&Nr(this,s,l,s+t.offsetWidth,l+t.offsetHeight)},triggerOnKeyDown:Nt(or),triggerOnKeyPress:Nt(ar),triggerOnKeyUp:sr,execCommand:function(e){return tl.hasOwnProperty(e)?tl[e](this):void 0},findPosH:function(e,t,r,n){var i=1;0>t&&(i=-1,t=-t);for(var o=0,l=pe(this.doc,e);t>o&&(l=Er(this.doc,l,i,r,n),!l.hitSide);++o);return l},moveH:Nt(function(e,t){var r=this;r.extendSelectionsBy(function(n){return r.display.shift||r.doc.extend||n.empty()?Er(r.doc,n.head,e,t,r.options.rtlMoveVisually):0>e?n.from():n.to()},Al)}),deleteH:Nt(function(e,t){var r=this.doc.sel,n=this.doc;r.somethingSelected()?n.replaceSelection("",null,"+delete"):Ir(this,function(r){var i=Er(n,r.head,e,t,!1);return 0>e?{from:i,to:r.head}:{from:r.head,to:i}})}),findPosV:function(e,t,r,n){var i=1,o=n;0>t&&(i=-1,t=-t);for(var l=0,s=pe(this.doc,e);t>l;++l){var a=ct(this,s,"div");if(null==o?o=a.left:a.left=o,s=zr(this,a,i,r),s.hitSide)break}return s},moveV:Nt(function(e,t){var r=this,n=this.doc,i=[],o=!r.display.shift&&!n.extend&&n.sel.somethingSelected();if(n.extendSelectionsBy(function(l){if(o)return 0>e?l.from():l.to();var s=ct(r,l.head,"div");null!=l.goalColumn&&(s.left=l.goalColumn),i.push(s.left);var a=zr(r,s,e,t);return"page"==t&&l==n.sel.primary()&&Wr(r,null,ut(r,a,"div").top-s.top),a},Al),i.length)for(var l=0;l0&&s(r.charAt(n-1));)--n;for(;i.5)&&l(this),Sl(this,"refresh",this)}),swapDoc:Nt(function(e){var t=this.doc;return t.cm=null,Kn(this,e),it(this),this.display.input.reset(),this.scrollTo(e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,mi(this,"swapDoc",this,t),t}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ci(e);var jo=e.defaults={},Xo=e.optionHandlers={},_o=e.Init={toString:function(){return"CodeMirror.Init"}};Fr("value","",function(e,t){e.setValue(t)},!0),Fr("mode",null,function(e,t){e.doc.modeOption=t,r(e)},!0),Fr("indentUnit",2,r,!0),Fr("indentWithTabs",!1),Fr("smartIndent",!0),Fr("tabSize",4,function(e){n(e),it(e),Dt(e)},!0),Fr("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(t,r,n){t.state.specialChars=new RegExp(r.source+(r.test(" ")?"":"| "),"g"),n!=e.Init&&t.refresh()}),Fr("specialCharPlaceholder",Hn,function(e){e.refresh()},!0),Fr("electricChars",!0),Fr("inputStyle",xo?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),Fr("rtlMoveVisually",!So),Fr("wholeLineUpdateBefore",!0),Fr("theme","default",function(e){s(e),a(e)},!0),Fr("keyMap","default",function(t,r,n){var i=Br(r),o=n!=e.Init&&Br(n);o&&o.detach&&o.detach(t,i),i.attach&&i.attach(t,o||null)}),Fr("extraKeys",null),Fr("lineWrapping",!1,i,!0),Fr("gutters",[],function(e){d(e.options),a(e)},!0),Fr("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?L(e.display)+"px":"0",e.refresh()},!0),Fr("coverGutterNextToScrollbar",!1,function(e){y(e)},!0),Fr("scrollbarStyle","native",function(e){m(e),y(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),Fr("lineNumbers",!1,function(e){d(e.options),a(e)},!0),Fr("firstLineNumber",1,a,!0),Fr("lineNumberFormatter",function(e){return e},a,!0),Fr("showCursorWhenSelecting",!1,Oe,!0),Fr("resetSelectionOnContextMenu",!0),Fr("readOnly",!1,function(e,t){"nocursor"==t?(fr(e),e.display.input.blur(),e.display.disabled=!0):(e.display.disabled=!1,t||e.display.input.reset())}),Fr("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),Fr("dragDrop",!0),Fr("cursorBlinkRate",530),Fr("cursorScrollMargin",0),Fr("cursorHeight",1,Oe,!0),Fr("singleCursorHeightPerLine",!0,Oe,!0),Fr("workTime",100),Fr("workDelay",100),Fr("flattenSpans",!0,n,!0),Fr("addModeClass",!1,n,!0),Fr("pollInterval",100),Fr("undoDepth",200,function(e,t){e.doc.history.undoDepth=t}),Fr("historyEventDelay",1250),Fr("viewportMargin",10,function(e){e.refresh()},!0),Fr("maxHighlightLength",1e4,n,!0),Fr("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),Fr("tabindex",null,function(e,t){e.display.input.getField().tabIndex=t||""}),Fr("autofocus",null);var Yo=e.modes={},$o=e.mimeModes={};e.defineMode=function(t,r){e.defaults.mode||"null"==t||(e.defaults.mode=t),arguments.length>2&&(r.dependencies=Array.prototype.slice.call(arguments,2)),Yo[t]=r},e.defineMIME=function(e,t){$o[e]=t},e.resolveMode=function(t){if("string"==typeof t&&$o.hasOwnProperty(t))t=$o[t];else if(t&&"string"==typeof t.name&&$o.hasOwnProperty(t.name)){var r=$o[t.name];"string"==typeof r&&(r={name:r}),t=Wi(r,t),t.name=r.name}else if("string"==typeof t&&/^[\w\-]+\/[\w\-]+\+xml$/.test(t))return e.resolveMode("application/xml");return"string"==typeof t?{name:t}:t||{name:"null"}},e.getMode=function(t,r){var r=e.resolveMode(r),n=Yo[r.name];if(!n)return e.getMode(t,"text/plain");var i=n(t,r);if(qo.hasOwnProperty(r.name)){var o=qo[r.name];for(var l in o)o.hasOwnProperty(l)&&(i.hasOwnProperty(l)&&(i["_"+l]=i[l]),i[l]=o[l])}if(i.name=r.name,r.helperType&&(i.helperType=r.helperType),r.modeProps)for(var l in r.modeProps)i[l]=r.modeProps[l];return i},e.defineMode("null",function(){return{token:function(e){e.skipToEnd()}}}),e.defineMIME("text/plain","null");var qo=e.modeExtensions={};e.extendMode=function(e,t){var r=qo.hasOwnProperty(e)?qo[e]:qo[e]={};Oi(t,r)},e.defineExtension=function(t,r){e.prototype[t]=r},e.defineDocExtension=function(e,t){gl.prototype[e]=t},e.defineOption=Fr;var Zo=[];e.defineInitHook=function(e){Zo.push(e)};var Qo=e.helpers={};e.registerHelper=function(t,r,n){Qo.hasOwnProperty(t)||(Qo[t]=e[t]={_global:[]}),Qo[t][r]=n},e.registerGlobalHelper=function(t,r,n,i){e.registerHelper(t,r,i),Qo[t]._global.push({pred:n,val:i})};var Jo=e.copyState=function(e,t){if(t===!0)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r},el=e.startState=function(e,t,r){return e.startState?e.startState(t,r):!0};e.innerMode=function(e,t){for(;e.innerMode;){var r=e.innerMode(t);if(!r||r.mode==e)break;t=r.state,e=r.mode}return r||{mode:e,state:t}};var tl=e.commands={selectAll:function(e){e.setSelection(Ao(e.firstLine(),0),Ao(e.lastLine()),Ml)},singleSelection:function(e){e.setSelection(e.getCursor("anchor"),e.getCursor("head"),Ml)},killLine:function(e){Ir(e,function(t){if(t.empty()){var r=jn(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line0)i=new Ao(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),Ao(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=jn(e.doc,i.line-1).text;l&&e.replaceRange(o.charAt(0)+"\n"+l.charAt(l.length-1),Ao(i.line-1,l.length-1),Ao(i.line,1),"+transpose")}r.push(new ce(i,i))}e.setSelections(r)})},newlineAndIndent:function(e){Tt(e,function(){for(var t=e.listSelections().length,r=0;t>r;r++){var n=e.listSelections()[r];e.replaceRange("\n",n.anchor,n.head,"+input"),e.indentLine(n.from().line+1,null,!0),Or(e)}})},toggleOverwrite:function(e){e.toggleOverwrite()}},rl=e.keyMap={};rl.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"},rl.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"},rl.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"},rl.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"]},rl["default"]=Co?rl.macDefault:rl.pcDefault,e.normalizeKeyMap=function(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];if(/^(name|fallthrough|(de|at)tach)$/.test(r))continue;if("..."==n){delete e[r];continue}for(var i=Ni(r.split(" "),Rr),o=0;o=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||void 0},next:function(){return this.post},eatSpace:function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},skipToEnd:function(){this.pos=this.string.length},skipTo:function(e){var t=this.string.indexOf(e,this.pos);return t>-1?(this.pos=t,!0):void 0},backUp:function(e){this.pos-=e},column:function(){return this.lastColumnPos0?null:(n&&t!==!1&&(this.pos+=n[0].length),n)}var i=function(e){return r?e.toLowerCase():e},o=this.string.substr(this.pos,e.length);return i(o)==i(e)?(t!==!1&&(this.pos+=e.length),!0):void 0},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}}};var sl=0,al=e.TextMarker=function(e,t){this.lines=[],this.type=t,this.doc=e,this.id=++sl};Ci(al),al.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&mt(e),xi(this,"clear")){var r=this.find();r&&mi(this,"clear",r.from,r.to)}for(var n=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=a,e.display.maxLineLength=u,e.display.maxLineChanged=!0)}null!=n&&e&&this.collapsed&&Dt(e,n,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&Ne(e.doc)),e&&mi(e,"markerCleared",e,this),t&&bt(e),this.parent&&this.parent.clear()}},al.prototype.find=function(e,t){null==e&&"bookmark"==this.type&&(e=1);for(var r,n,i=0;ir;++r){var i=this.lines[r];this.height-=i.height,Cn(i),mi(i,"delete")}this.lines.splice(e,t)},collapse:function(e){e.push.apply(e,this.lines)},insertInner:function(e,t,r){this.height+=r,this.lines=this.lines.slice(0,e).concat(t).concat(this.lines.slice(e));for(var n=0;ne;++e)if(r(this.lines[e]))return!0}},Un.prototype={chunkSize:function(){return this.size},removeInner:function(e,t){this.size-=t;for(var r=0;re){var o=Math.min(t,i-e),l=n.height;if(n.removeInner(e,o),this.height-=l-n.height,i==o&&(this.children.splice(r--,1),n.parent=null),0==(t-=o))break;e=0}else e-=i}if(this.size-t<25&&(this.children.length>1||!(this.children[0]instanceof Gn))){var s=[];this.collapse(s),this.children=[new Gn(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t=e){if(i.insertInner(e,t,r),i.lines&&i.lines.length>50){for(;i.lines.length>50;){var l=i.lines.splice(i.lines.length-25,25),s=new Gn(l);i.height-=s.height,this.children.splice(n+1,0,s),s.parent=this}this.maybeSpill()}break}e-=o}},maybeSpill:function(){if(!(this.children.length<=10)){var e=this;do{var t=e.children.splice(e.children.length-5,5),r=new Un(t);if(e.parent){e.size-=r.size,e.height-=r.height;var n=Mi(e.parent.children,e);e.parent.children.splice(n+1,0,r)}else{var i=new Un(e.children);i.parent=e,e.children=[i,r],e=i}r.parent=e.parent}while(e.children.length>10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;ne){var l=Math.min(t,o-e);if(i.iterN(e,l,r))return!0;if(0==(t-=l))break;e=0}else e-=o}}};var pl=0,gl=e.Doc=function(e,t,r){if(!(this instanceof gl))return new gl(e,t,r);null==r&&(r=0),Un.call(this,[new Gn([new fl("",null)])]),this.first=r,this.scrollTop=this.scrollLeft=0,this.cantEdit=!1,this.cleanGeneration=1,this.frontier=r;var n=Ao(r,0);this.sel=he(n),this.history=new Jn(null),this.id=++pl,this.modeOption=t,"string"==typeof e&&(e=Kl(e)),Bn(this,{from:n,to:n,text:e}),ke(this,he(n),Ml)};gl.prototype=Wi(Un.prototype,{constructor:gl,iter:function(e,t,r){r?this.iterN(e-this.first,t-e,r):this.iterN(this.first,this.first+this.size,e)},insert:function(e,t){for(var r=0,n=0;n=0;o--)br(this,n[o]);s?Le(this,s):this.cm&&Or(this.cm)}),undo:At(function(){xr(this,"undo")}),redo:At(function(){xr(this,"redo")}),undoSelection:At(function(){xr(this,"undo",!0)}),redoSelection:At(function(){xr(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=pe(this,e),t=pe(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,function(o){var l=o.markedSpans;if(l)for(var s=0;sa.to||null==a.from&&i!=e.line||i==t.line&&a.from>t.ch||r&&!r(a.marker)||n.push(a.marker.parent||a.marker)}++i}),n},getAllMarks:function(){var e=[];return this.iter(function(t){var r=t.markedSpans;if(r)for(var n=0;ne?(t=e,!0):(e-=i,void++r)}),pe(this,Ao(r,t))},indexFromPos:function(e){e=pe(this,e);var t=e.ch;return e.linet&&(t=e.from),null!=e.to&&e.tos||s>=t)return l+(t-o);l+=s-o,l+=r-l%r,o=s+1}},Ol=[""],Dl=function(e){e.select()};wo?Dl=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:co&&(Dl=function(e){try{e.select()}catch(t){}});var Hl,Pl=/[\u00df\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,Il=e.isWordChar=function(e){return/\w/.test(e)||e>"€"&&(e.toUpperCase()!=e.toLowerCase()||Pl.test(e))},El=/[\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]/;Hl=document.createRange?function(e,t,r,n){var i=document.createRange();return i.setEnd(n||e,r),i.setStart(e,t),i}:function(e,t,r){var n=document.body.createTextRange();try{n.moveToElementText(e.parentNode)}catch(i){return n}return n.collapse(!0),n.moveEnd("character",r),n.moveStart("character",t),n};var zl=e.contains=function(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.contains(t);do if(11==t.nodeType&&(t=t.host),t==e)return!0;while(t=t.parentNode)};co&&11>fo&&(Ri=function(){try{return document.activeElement}catch(e){return document.body}});var Fl,Rl,Bl=e.rmClass=function(e,t){var r=e.className,n=Bi(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}},Gl=e.addClass=function(e,t){var r=e.className;Bi(t).test(r)||(e.className+=(r?" ":"")+t)},Ul=!1,Vl=function(){if(co&&9>fo)return!1;var e=Ei("div");return"draggable"in e||"dragDrop"in e}(),Kl=e.splitLines=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;n>=t;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},jl=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){try{var t=e.ownerDocument.selection.createRange()}catch(r){}return t&&t.parentElement()==e?0!=t.compareEndPoints("StartToEnd",t):!1},Xl=function(){var e=Ei("div");return"oncopy"in e?!0:(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),_l=null,Yl={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"};e.keyNames=Yl,function(){for(var e=0;10>e;e++)Yl[e+48]=Yl[e+96]=String(e);for(var e=65;90>=e;e++)Yl[e]=String.fromCharCode(e);for(var e=1;12>=e;e++)Yl[e+111]=Yl[e+63235]="F"+e}();var $l,ql=function(){function e(e){return 247>=e?r.charAt(e):e>=1424&&1524>=e?"R":e>=1536&&1773>=e?n.charAt(e-1536):e>=1774&&2220>=e?"r":e>=8192&&8203>=e?"w":8204==e?"b":"L"}function t(e,t,r){this.level=e,this.from=t,this.to=r}var r="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",n="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm",i=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,l=/[LRr]/,s=/[Lb1n]/,a=/[1n]/,u="L";return function(r){if(!i.test(r))return!1;for(var n,c=r.length,f=[],h=0;c>h;++h)f.push(n=e(r.charCodeAt(h)));for(var h=0,d=u;c>h;++h){var n=f[h];"m"==n?f[h]=d:d=n}for(var h=0,p=u;c>h;++h){var n=f[h];"1"==n&&"r"==p?f[h]="n":l.test(n)&&(p=n,"r"==n&&(f[h]="R"))}for(var h=1,d=f[0];c-1>h;++h){var n=f[h];"+"==n&&"1"==d&&"1"==f[h+1]?f[h]="1":","!=n||d!=f[h+1]||"1"!=d&&"n"!=d||(f[h]=d),d=n}for(var h=0;c>h;++h){var n=f[h];if(","==n)f[h]="N";else if("%"==n){for(var g=h+1;c>g&&"%"==f[g];++g);for(var v=h&&"!"==f[h-1]||c>g&&"1"==f[g]?"1":"N",m=h;g>m;++m)f[m]=v;h=g-1}}for(var h=0,p=u;c>h;++h){var n=f[h];"L"==p&&"1"==n?f[h]="L":l.test(n)&&(p=n)}for(var h=0;c>h;++h)if(o.test(f[h])){for(var g=h+1;c>g&&o.test(f[g]);++g);for(var y="L"==(h?f[h-1]:u),b="L"==(c>g?f[g]:u),v=y||b?"L":"R",m=h;g>m;++m)f[m]=v;h=g-1}for(var w,x=[],h=0;c>h;)if(s.test(f[h])){var C=h;for(++h;c>h&&s.test(f[h]);++h);x.push(new t(0,C,h))}else{var S=h,L=x.length;for(++h;c>h&&"L"!=f[h];++h);for(var m=S;h>m;)if(a.test(f[m])){m>S&&x.splice(L,0,new t(1,S,m));var k=m;for(++m;h>m&&a.test(f[m]);++m);x.splice(L,0,new t(2,k,m)),S=m}else++m;h>S&&x.splice(L,0,new t(1,S,h))}return 1==x[0].level&&(w=r.match(/^\s+/))&&(x[0].from=w[0].length,x.unshift(new t(0,0,w[0].length))),1==Ti(x).level&&(w=r.match(/\s+$/))&&(Ti(x).to-=w[0].length,x.push(new t(0,c-w[0].length,c))),x[0].level!=Ti(x).level&&x.push(new t(x[0].level,c,c)),x}}();return e.version="5.1.0",e}); +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(e,n){function o(e){return r.parentNode?(r.style.top=Math.max(0,e.clientY-r.offsetHeight-5)+"px",void(r.style.left=e.clientX+5+"px")):t.off(document,"mousemove",o)}var r=document.createElement("div");return r.className="CodeMirror-lint-tooltip",r.appendChild(n.cloneNode(!0)),document.body.appendChild(r),t.on(document,"mousemove",o),o(e),null!=r.style.opacity&&(r.style.opacity=1),r}function n(t){t.parentNode&&t.parentNode.removeChild(t)}function o(t){t.parentNode&&(null==t.style.opacity&&n(t),t.style.opacity=0,setTimeout(function(){n(t)},600))}function r(n,r,i){function a(){t.off(i,"mouseout",a),s&&(o(s),s=null)}var s=e(n,r),u=setInterval(function(){if(s)for(var t=i;;t=t.parentNode){if(t&&11==t.nodeType&&(t=t.host),t==document.body)return;if(!t){a();break}}return s?void 0:clearInterval(u)},400);t.on(i,"mouseout",a)}function i(t,e,n){this.marked=[],this.options=e,this.timeout=null,this.hasGutter=n,this.onMouseOver=function(e){g(t,e)}}function a(e,n){if(n instanceof Function)return{getAnnotations:n};if(n&&n!==!0||(n={}),n.getAnnotations||(n.getAnnotations=e.getHelper(t.Pos(0,0),"lint")),!n.getAnnotations)throw new Error("Required option 'getAnnotations' missing (lint addon)");return n}function s(t){var e=t.state.lint;e.hasGutter&&t.clearGutter(h);for(var n=0;n1,n.options.tooltips))}}o.onUpdateLinting&&o.onUpdateLinting(e,r,t)}function p(t){var e=t.state.lint;e&&(clearTimeout(e.timeout),e.timeout=setTimeout(function(){m(t)},e.options.delay||500))}function v(t,e){var n=e.target||e.srcElement;r(e,f(t),n)}function g(t,e){var n=e.target||e.srcElement;if(/\bCodeMirror-lint-mark-/.test(n.className))for(var o=n.getBoundingClientRect(),r=(o.left+o.right)/2,i=(o.top+o.bottom)/2,a=t.findMarksAt(t.coordsChar({left:r,top:i},"client")),s=0;s0){var A=b.bottom-b.top,x=g.top-(g.bottom-b.top);if(x-A>0)a.style.top=(w=g.top-A)+"px",y=!1;else if(A>H){a.style.height=H-5+"px",a.style.top=(w=g.bottom-b.top)+"px";var T=h.getCursor();s.from.ch!=T.ch&&(g=h.cursorCoords(T),a.style.left=(v=g.left)+"px",b=a.getBoundingClientRect())}}var O=b.left-C;if(O>0&&(b.right-b.left>C&&(a.style.width=C-5+"px",O-=b.right-b.left-C),a.style.left=(v=g.left-O)+"px"),h.addKeyMap(this.keyMap=n(e,{moveFocus:function(t,e){r.changeActive(r.selectedHint+t,e)},setFocus:function(t){r.changeActive(t)},menuSize:function(){return r.screenAmount()},length:f.length,close:function(){e.close()},pick:function(){r.pick()},data:s})),e.options.closeOnUnfocus){var S;h.on("blur",this.onBlur=function(){S=setTimeout(function(){e.close()},100)}),h.on("focus",this.onFocus=function(){clearTimeout(S)})}var N=h.getScrollInfo();return h.on("scroll",this.onScroll=function(){var t=h.getScrollInfo(),i=h.getWrapperElement().getBoundingClientRect(),n=w+N.top-t.top,o=n-(window.pageYOffset||(document.documentElement||document.body).scrollTop);return y||(o+=a.offsetHeight),o<=i.top||o>=i.bottom?e.close():(a.style.top=n+"px",void(a.style.left=v+N.left-t.left+"px"))}),t.on(a,"dblclick",function(t){var e=o(a,t.target||t.srcElement);e&&null!=e.hintId&&(r.changeActive(e.hintId),r.pick())}),t.on(a,"click",function(t){var i=o(a,t.target||t.srcElement);i&&null!=i.hintId&&(r.changeActive(i.hintId),e.options.completeOnSingleClick&&r.pick())}),t.on(a,"mousedown",function(){setTimeout(function(){h.focus()},20)}),t.signal(s,"select",f[0],a.firstChild),!0}var c="CodeMirror-hint",l="CodeMirror-hint-active";t.showHint=function(t,e,i){if(!e)return t.showHint(i);i&&i.async&&(e.async=!0);var n={hint:e};if(i)for(var o in i)n[o]=i[o];return t.showHint(n)},t.defineExtension("showHint",function(i){if(!(this.listSelections().length>1||this.somethingSelected())){this.state.completionActive&&this.state.completionActive.close();var n=this.state.completionActive=new e(this,i),o=n.options.hint;if(o)return t.signal(this,"startCompletion",this),o.async?void o(this,function(t){n.showHints(t)},n.options):n.showHints(o(this,n.options))}}),e.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.widget&&this.widget.close(),this.onClose&&this.onClose(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,n){var o=e.list[n];o.hint?o.hint(this.cm,e,o):this.cm.replaceRange(i(o),o.from||e.from,o.to||e.to,"complete"),t.signal(e,"pick",o),this.close();var s=this.cm.getCursor(),c=this.cm.getTokenAt(s);c&&")"===c.string&&this.cm.setCursor(t.Pos(s.line,s.ch-1))},showHints:function(t){return t&&t.list.length&&this.active()?void(this.options.completeSingle&&1==t.list.length?this.pick(t,0):this.showWidget(t)):this.close()},showWidget:function(e){function i(){r||(r=!0,a.close(),a.cm.off("cursorActivity",l),e&&t.signal(e,"close"))}function n(){if(!r){t.signal(e,"update");var i=a.options.hint;i.async?i(a.cm,o,a.options):o(i(a.cm,a.options))}}function o(t){if(e=t,!r){if(!e||!e.list.length)return i();a.widget&&a.widget.close(),a.widget=new s(a,e)}}function c(){h&&(m(h),h=0)}function l(){c();var t=a.cm.getCursor(),e=a.cm.getLine(t.line);t.line!=u.line||e.length-t.ch!=p-u.ch||t.ch=this.data.list.length?e=i?this.data.list.length-1:0:0>e&&(e=i?0:this.data.list.length-1),this.selectedHint!=e){var n=this.hints.childNodes[this.selectedHint];n.className=n.className.replace(" "+l,""),n=this.hints.childNodes[this.selectedHint=e],n.className+=" "+l,n.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=n.offsetTop+n.offsetHeight-this.hints.clientHeight+3),t.signal(this.data,"select",this.data.list[this.selectedHint],n)}},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1}},t.registerHelper("hint","auto",function(e,i){var n,o=e.getHelpers(e.getCursor(),"hint");if(o.length)for(var s=0;s,]/,closeOnUnfocus:!0,completeOnSingleClick:!1,container:null,customKeys:null,extraKeys:null};t.defineOption("hintOptions",null)}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var r=/[\w$]+/,o=500;e.registerHelper("hint","anyword",function(t,i){for(var n=i&&i.word||r,f=i&&i.range||o,a=t.getCursor(),c=t.getLine(a.line),s=a.ch,l=s;l&&n.test(c.charAt(l-1));)--l;for(var d=l!=s&&c.slice(l,s),u=[],p={},g=new RegExp(n.source,"g"),h=-1;1>=h;h+=2)for(var m=a.line,y=Math.min(Math.max(m+h*f,t.firstLine()),t.lastLine())+h;m!=y;m+=h)for(var b,v=t.getLine(m);b=g.exec(v);)(m!=a.line||b[0]!==d)&&(d&&0!=b[0].lastIndexOf(d,0)||Object.prototype.hasOwnProperty.call(p,b[0])||(p[b[0]]=!0,u.push(b[0])));return{list:u,from:e.Pos(a.line,l),to:e.Pos(a.line,s)}})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function r(e){for(var r=e.display.lineSpace.childNodes.length-1;r>=0;r--){var o=e.display.lineSpace.childNodes[r];/(^|\s)CodeMirror-ruler($|\s)/.test(o.className)&&o.parentNode.removeChild(o)}}function o(r){for(var o=r.getOption("rulers"),t=r.defaultCharWidth(),l=r.charCoords(e.Pos(r.firstLine(),0),"div").left,i=r.display.scroller.offsetHeight+30,s=0;s=0;s--){var f=o[s].head;n.replaceRange("",u(f.line,f.ch-1),u(f.line,f.ch+1))}}function a(n){var i=r(n),a=i&&t(i,"explode");if(!a||n.getOption("disableInput"))return e.Pass;for(var o=n.listSelections(),s=0;s1&&d.indexOf(i)>=0&&n.getRange(u(C.line,C.ch-2),C)==i+i&&(C.ch<=2||n.getRange(u(C.line,C.ch-3),u(C.line,C.ch-2))!=i))b="addFour";else if(p){if(e.isWordChar(h)||!c(n,C,i))return e.Pass;b="both"}else{if(!v||n.getLine(C.line).length!=C.ch&&!s(h,o)&&!/\s/.test(h))return e.Pass;b="both"}else b=d.indexOf(i)>=0&&n.getRange(C,u(C.line,C.ch+3))==i+i+i?"skipThree":"skip";if(f){if(f!=b)return e.Pass}else f=b}var k=l%2?o.charAt(l-1):i,P=l%2?i:o.charAt(l+1);n.operation(function(){if("skip"==f)n.execCommand("goCharRight");else if("skipThree"==f)for(var e=0;3>e;e++)n.execCommand("goCharRight");else if("surround"==f){for(var t=n.getSelections(),e=0;e-1&&n%2==1}function l(e,t){var n=e.getRange(u(t.line,t.ch-1),u(t.line,t.ch+1));return 2==n.length?n:null}function c(t,n,r){var i=t.getLine(n.line),a=t.getTokenAt(n);if(/\bstring2?\b/.test(a.type))return!1;var o=new e.StringStream(i.slice(0,n.ch)+r+i.slice(n.ch),4);for(o.pos=o.start=a.start;;){var s=t.getMode().token(o,a.state);if(o.pos>=n.ch+1)return/\bstring2?\b/.test(s);o.start=o.pos}}var f={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},u=e.Pos;e.defineOption("autoCloseBrackets",!1,function(t,n,r){r&&r!=e.Init&&(t.removeKeyMap(d),t.state.closeBrackets=null),n&&(t.state.closeBrackets=n,t.addKeyMap(d))});for(var h=f.pairs+"`",d={Backspace:i,Enter:a},p=0;p=0&&c[o.text.charAt(f)]||c[o.text.charAt(++f)];if(!l)return null;var u=">"==l.charAt(1)?1:-1;if(i&&u>0!=(f==t.ch))return null;var h=e.getTokenTypeAt(a(t.line,f+1)),s=n(e,a(t.line,f+(u>0?1:0)),u,h||null,r);return null==s?null:{from:a(t.line,f),to:s&&s.pos,match:s&&s.ch==l.charAt(0),forward:u>0}}function n(e,t,n,i,r){for(var o=r&&r.maxScanLineLength||1e4,f=r&&r.maxScanLines||1e3,l=[],u=r&&r.bracketRegex?r.bracketRegex:/[(){}[\]]/,h=n>0?Math.min(t.line+f,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-f),s=t.line;s!=h;s+=n){var m=e.getLine(s);if(m){var d=n>0?0:m.length-1,g=n>0?m.length:-1;if(!(m.length>o))for(s==t.line&&(d=t.ch-(0>n?1:0));d!=g;d+=n){var p=m.charAt(d);if(u.test(p)&&(void 0===i||e.getTokenTypeAt(a(s,d+1))==i)){var v=c[p];if(">"==v.charAt(1)==n>0)l.push(p);else{if(!l.length)return{pos:a(s,d),ch:p};l.pop()}}}}}return s-n==(n>0?e.lastLine():e.firstLine())?!1:null}function i(e,n,i){for(var r=e.state.matchBrackets.maxHighlightLineLength||1e3,c=[],f=e.listSelections(),l=0;l",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},f=null;e.defineOption("matchBrackets",!1,function(t,n,i){i&&i!=e.Init&&t.off("cursorActivity",r),n&&(t.state.matchBrackets="object"==typeof n?n:{},t.on("cursorActivity",r))}),e.defineExtension("matchBrackets",function(){i(this,!0)}),e.defineExtension("findMatchingBracket",function(e,n,i){return t(this,e,n,i)}),e.defineExtension("scanForBracket",function(e,t,i,r){return n(this,e,t,i,r)})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("../fold/xml-fold")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],e):e(CodeMirror)}(function(e){function t(t){if(t.getOption("disableInput"))return e.Pass;for(var n=t.listSelections(),o=[],l=0;lc.ch&&(v=v.slice(0,v.length-d.end+c.ch));var b=v.toLowerCase();if(!v||"string"==d.type&&(d.end!=c.ch||!/[\"\']/.test(d.string.charAt(d.string.length-1))||1==d.string.length)||"tag"==d.type&&"closeTag"==g.type||d.string.indexOf("/")==d.string.length-1||h&&r(h,b)>-1||a(t,v,c,g,!0))return e.Pass;var y=p&&r(p,b)>-1;o[l]={indent:y,text:">"+(y?"\n\n":"")+"",newPos:y?e.Pos(c.line+1,0):e.Pos(c.line,c.ch+1)}}for(var l=n.length-1;l>=0;l--){var x=o[l];t.replaceRange(x.text,n[l].head,n[l].anchor,"+insert");var P=t.listSelections().slice(0);P[l]={head:x.newPos,anchor:x.newPos},t.setSelections(P),x.indent&&(t.indentLine(x.newPos.line,null,!0),t.indentLine(x.newPos.line+1,null,!0))}}function n(t,n){for(var o=t.listSelections(),r=[],i=n?"/":"";else{if("htmlmixed"!=t.getMode().name||"css"!=d.mode.name)return e.Pass;r[s]=i+"style>"}else{if(!f.context||!f.context.tagName||a(t,f.context.tagName,l,f))return e.Pass;r[s]=i+f.context.tagName+">"}}t.replaceSelections(r),o=t.listSelections();for(var s=0;sn;++n)if(e[n]==t)return n;return-1}function a(t,n,o,r,a){if(!e.scanForClosingTag)return!1;var i=Math.min(t.lastLine()+1,o.line+500),s=e.scanForClosingTag(t,o,null,i);if(!s||s.tag!=n)return!1;for(var l=r.context,c=a?1:0;l&&l.tagName==n;l=l.prev)++c;o=s.to;for(var d=1;c>d;d++){var f=e.scanForClosingTag(t,o,null,i);if(!f||f.tag!=n)return!1;o=f.to}return!0}e.defineOption("autoCloseTags",!1,function(n,r,a){if(a!=e.Init&&a&&n.removeKeyMap("autoCloseTags"),r){var i={name:"autoCloseTags"};("object"!=typeof r||r.whenClosing)&&(i["'/'"]=function(e){return o(e)}),("object"!=typeof r||r.whenOpening)&&(i["'>'"]=function(e){return t(e)}),n.addKeyMap(i)}});var i=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],s=["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"];e.commands.closeTag=function(e){return n(e)}}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function t(e,t,r,o){if(this.atOccurrence=!1,this.doc=e,null==o&&"string"==typeof t&&(o=!1),r=r?e.clipPos(r):i(0,0),this.pos={from:r,to:r},"string"!=typeof t)t.global||(t=new RegExp(t.source,t.ignoreCase?"ig":"g")),this.matches=function(n,r){if(n){t.lastIndex=0;for(var o,s,l=e.getLine(r.line).slice(0,r.ch),h=0;;){t.lastIndex=h;var c=t.exec(l);if(!c)break;if(o=c,s=o.index,h=o.index+(o[0].length||1),h==l.length)break}var f=o&&o[0].length||0;f||(0==s&&0==l.length?o=void 0:s!=e.getLine(r.line).length&&f++)}else{t.lastIndex=r.ch;var l=e.getLine(r.line),o=t.exec(l),f=o&&o[0].length||0,s=o&&o.index;s+f==l.length||f||(f=1)}return o&&f?{from:i(r.line,s),to:i(r.line,s+f),match:o}:void 0};else{var s=t;o&&(t=t.toLowerCase());var l=o?function(e){return e.toLowerCase()}:function(e){return e},h=t.split("\n");if(1==h.length)t.length?this.matches=function(r,o){if(r){var h=e.getLine(o.line).slice(0,o.ch),c=l(h),f=c.lastIndexOf(t);if(f>-1)return f=n(h,c,f),{from:i(o.line,f),to:i(o.line,f+s.length)}}else{var h=e.getLine(o.line).slice(o.ch),c=l(h),f=c.indexOf(t);if(f>-1)return f=n(h,c,f)+o.ch,{from:i(o.line,f),to:i(o.line,f+s.length)}}}:this.matches=function(){};else{var c=s.split("\n");this.matches=function(t,n){var r=h.length-1;if(t){if(n.line-(h.length-1)=1;--f,--s)if(h[f]!=l(e.getLine(s)))return;var u=e.getLine(s),a=u.length-c[0].length;if(l(u.slice(a))!=h[0])return;return{from:i(s,a),to:o}}if(!(n.line+(h.length-1)>e.lastLine())){var u=e.getLine(n.line),a=u.length-c[0].length;if(l(u.slice(a))==h[0]){for(var g=i(n.line,a),s=n.line+1,f=1;r>f;++f,++s)if(h[f]!=l(e.getLine(s)))return;if(l(e.getLine(s).slice(0,c[r].length))==h[r])return{from:g,to:i(s,c[r].length)}}}}}}}function n(e,t,n){if(e.length==t.length)return n;for(var i=Math.min(n,e.length);;){var r=e.slice(0,i).toLowerCase().length;if(n>r)++i;else{if(!(r>n))return i;--i}}}var i=e.Pos;t.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(e){function t(e){var t=i(e,0);return n.pos={from:t,to:t},n.atOccurrence=!1,!1}for(var n=this,r=this.doc.clipPos(e?this.pos.from:this.pos.to);;){if(this.pos=this.matches(e,r))return this.atOccurrence=!0,this.pos.match||!0;if(e){if(!r.line)return t(0);r=i(r.line-1,this.doc.getLine(r.line-1).length)}else{var o=this.doc.lineCount();if(r.line==o-1)return t(o);r=i(r.line+1,0)}}},from:function(){return this.atOccurrence?this.pos.from:void 0},to:function(){return this.atOccurrence?this.pos.to:void 0},replace:function(t){if(this.atOccurrence){var n=e.splitLines(t);this.doc.replaceRange(n,this.pos.from,this.pos.to),this.pos.to=i(this.pos.from.line+n.length-1,n[n.length-1].length+(1==n.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",function(e,n,i){return new t(this.doc,e,n,i)}),e.defineDocExtension("getSearchCursor",function(e,n,i){return new t(this,e,n,i)}),e.defineExtension("selectMatches",function(t,n){for(var i,r=[],o=this.getSearchCursor(t,this.getCursor("from"),n);(i=o.findNext())&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)r.push({anchor:o.from(),head:o.to()});r.length&&this.setSelections(r,0)})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],e):e(CodeMirror)}(function(e){"use strict";function o(e,o){return"string"==typeof e?e=new RegExp(e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),o?"gi":"g"):e.global||(e=new RegExp(e.source,e.ignoreCase?"gi":"g")),{token:function(o){e.lastIndex=o.pos;var r=e.exec(o.string);return r&&r.index==o.pos?(o.pos+=r[0].length,"searching"):void(r?o.pos=r.index:o.skipToEnd())}}}function r(){this.posFrom=this.posTo=this.query=null,this.overlay=null}function n(e){return e.state.search||(e.state.search=new r)}function t(e){return"string"==typeof e&&e==e.toLowerCase()}function i(e,o,r){return e.getSearchCursor(o,r,t(o))}function a(e,o,r,n,t){e.openDialog?e.openDialog(o,t,{value:n}):t(prompt(r,n))}function c(e,o,r,n){e.openConfirm?e.openConfirm(o,n):confirm(r)&&n[0]()}function s(e){var o=e.match(/^\/(.*)\/([a-z]*)$/);if(o)try{e=new RegExp(o[1],-1==o[2].indexOf("i")?"":"i")}catch(r){}return("string"==typeof e?""==e:e.test(""))&&(e=/x^/),e}function l(e,r){var i=n(e);return i.query?u(e,r):void a(e,d,"Search for:",e.getSelection(),function(n){e.operation(function(){n&&!i.query&&(i.query=s(n),e.removeOverlay(i.overlay,t(i.query)),i.overlay=o(i.query,t(i.query)),e.addOverlay(i.overlay),e.showMatchesOnScrollbar&&(i.annotate&&(i.annotate.clear(),i.annotate=null),i.annotate=e.showMatchesOnScrollbar(i.query,t(i.query))),i.posFrom=i.posTo=e.getCursor(),u(e,r))})})}function u(o,r){o.operation(function(){var t=n(o),a=i(o,t.query,r?t.posFrom:t.posTo);(a.find(r)||(a=i(o,t.query,r?e.Pos(o.lastLine()):e.Pos(o.firstLine(),0)),a.find(r)))&&(o.setSelection(a.from(),a.to()),o.scrollIntoView({from:a.from(),to:a.to()}),t.posFrom=a.from(),t.posTo=a.to())})}function f(e){e.operation(function(){var o=n(e);o.query&&(o.query=null,e.removeOverlay(o.overlay),o.annotate&&(o.annotate.clear(),o.annotate=null))})}function p(e,o){e.getOption("readOnly")||a(e,m,"Replace:",e.getSelection(),function(r){r&&(r=s(r),a(e,y,"Replace with:","",function(n){if(o)e.operation(function(){for(var o=i(e,r);o.findNext();)if("string"!=typeof r){var t=e.getRange(o.from(),o.to()).match(r);o.replace(n.replace(/\$(\d)/g,function(e,o){return t[o]}))}else o.replace(n)});else{f(e);var t=i(e,r,e.getCursor()),a=function(){var o,n=t.from();!(o=t.findNext())&&(t=i(e,r),!(o=t.findNext())||n&&t.from().line==n.line&&t.from().ch==n.ch)||(e.setSelection(t.from(),t.to()),e.scrollIntoView({from:t.from(),to:t.to()}),c(e,h,"Replace?",[function(){s(o)},a]))},s=function(e){t.replace("string"==typeof r?n:n.replace(/\$(\d)/g,function(o,r){return e[r]})),a()};a()}}))})}var d='Search: (Use /re/ syntax for regexp search)',m='Replace: (Use /re/ syntax for regexp search)',y='With: ',h="Replace? ";e.commands.find=function(e){f(e),l(e)},e.commands.findNext=l,e.commands.findPrev=function(e){l(e,!0)},e.commands.clearSearch=f,e.commands.replace=p,e.commands.replaceAll=function(e){p(e,!0)}}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){function o(e,o,n){var t,i=e.getWrapperElement();return t=i.appendChild(document.createElement("div")),n?t.className="CodeMirror-dialog CodeMirror-dialog-bottom":t.className="CodeMirror-dialog CodeMirror-dialog-top","string"==typeof o?t.innerHTML=o:t.appendChild(o),t}function n(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}e.defineExtension("openDialog",function(t,i,r){function u(e){if("string"==typeof e)s.value=e;else{if(f)return;f=!0,c.parentNode.removeChild(c),a.focus(),r.onClose&&r.onClose(c)}}r||(r={}),n(this,null);var l,c=o(this,t,r.bottom),f=!1,a=this,s=c.getElementsByTagName("input")[0];return s?(r.value&&(s.value=r.value,r.selectValueOnOpen!==!1&&s.select()),r.onInput&&e.on(s,"input",function(e){r.onInput(e,s.value,u)}),r.onKeyUp&&e.on(s,"keyup",function(e){r.onKeyUp(e,s.value,u)}),e.on(s,"keydown",function(o){r&&r.onKeyDown&&r.onKeyDown(o,s.value,u)||((27==o.keyCode||r.closeOnEnter!==!1&&13==o.keyCode)&&(s.blur(),e.e_stop(o),u()),13==o.keyCode&&i(s.value,o))}),r.closeOnBlur!==!1&&e.on(s,"blur",u),s.focus()):(l=c.getElementsByTagName("button")[0])&&(e.on(l,"click",function(){u(),a.focus()}),r.closeOnBlur!==!1&&e.on(l,"blur",u),l.focus()),u}),e.defineExtension("openConfirm",function(t,i,r){function u(){f||(f=!0,l.parentNode.removeChild(l),a.focus())}n(this,null);var l=o(this,t,r&&r.bottom),c=l.getElementsByTagName("button"),f=!1,a=this,s=1;c[0].focus();for(var d=0;d=s&&u()},200)}),e.on(p,"focus",function(){++s})}}),e.defineExtension("openNotification",function(t,i){function r(){c||(c=!0,clearTimeout(u),l.parentNode.removeChild(l))}n(this,r);var u,l=o(this,t,i&&i.bottom),c=!1,f=i&&"undefined"!=typeof i.duration?i.duration:5e3;return e.on(l,"click",function(o){e.e_preventDefault(o),r()}),f&&(u=setTimeout(r,f)),r})}); +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";function e(t){"object"==typeof t&&(this.minChars=t.minChars,this.style=t.style,this.showToken=t.showToken,this.delay=t.delay,this.wordsOnly=t.wordsOnly),null==this.style&&(this.style=s),null==this.minChars&&(this.minChars=h),null==this.delay&&(this.delay=a),null==this.wordsOnly&&(this.wordsOnly=c),this.overlay=this.timeout=null}function i(t){var e=t.state.matchHighlighter;clearTimeout(e.timeout),e.timeout=setTimeout(function(){r(t)},e.delay)}function r(t){t.operation(function(){var e=t.state.matchHighlighter;if(e.overlay&&(t.removeOverlay(e.overlay),e.overlay=null),!t.somethingSelected()&&e.showToken){for(var i=e.showToken===!0?/[\w$]/:e.showToken,r=t.getCursor(),o=t.getLine(r.line),h=r.ch,s=h;h&&i.test(o.charAt(h-1));)--h;for(;sh&&t.addOverlay(e.overlay=l(o.slice(h,s),i,e.style)))}var a=t.getCursor("from"),c=t.getCursor("to");if(a.line==c.line&&(!e.wordsOnly||n(t,a,c))){var u=t.getRange(a,c).replace(/^\s+|\s+$/g,"");u.length>=e.minChars&&t.addOverlay(e.overlay=l(u,!1,e.style))}})}function n(t,e,i){var r=t.getRange(e,i);if(null!==r.match(/^\w+$/)){if(e.ch>0){var n={line:e.line,ch:e.ch-1},o=t.getRange(n,e);if(null===o.match(/\W/))return!1}if(i.cho.firstLine();)i=n.Pos(i.line-1,0),a=l(!1);if(a&&!a.cleared&&"unfold"!==f){var c=e(o,t);n.on(c,"mousedown",function(o){s.clear(),n.e_preventDefault(o)});var s=o.markText(a.from,a.to,{replacedWith:c,clearOnEnter:!0,__isFold:!0});s.on("clear",function(e,r){n.signal(o,"unfold",o,e,r)}),n.signal(o,"fold",o,a.from,a.to)}}function e(n,o){var e=r(n,o,"widget");if("string"==typeof e){var i=document.createTextNode(e);e=document.createElement("span"),e.appendChild(i),e.className="CodeMirror-foldmarker"}return e}function r(n,o,e){if(o&&void 0!==o[e])return o[e];var r=n.options.foldOptions;return r&&void 0!==r[e]?r[e]:i[e]}n.newFoldFunction=function(n,e){return function(r,i){o(r,i,{rangeFinder:n,widget:e})}},n.defineExtension("foldCode",function(n,e,r){o(this,n,e,r)}),n.defineExtension("isFolded",function(n){for(var o=this.findMarksAt(n),e=0;e=e;e++)o.foldCode(n.Pos(e,0),null,"fold")})},n.commands.unfoldAll=function(o){o.operation(function(){for(var e=o.firstLine(),r=o.lastLine();r>=e;e++)o.foldCode(n.Pos(e,0),null,"unfold")})},n.registerHelper("fold","combine",function(){var n=Array.prototype.slice.call(arguments,0);return function(o,e){for(var r=0;r=d&&(e=n(i.indicatorOpen))}o.setGutterMarker(t,i.gutter,e),++f})}function f(o){var t=o.getViewport(),e=o.state.foldGutter;e&&(o.operation(function(){i(o,t.from,t.to)}),e.from=t.from,e.to=t.to)}function d(o,t,e){var n=o.state.foldGutter;if(n){var i=n.options;if(e==i.gutter){var f=r(o,t);f?f.clear():o.foldCode(c(t,0),i.rangeFinder)}}}function a(o){var t=o.state.foldGutter;if(t){var e=t.options;t.from=t.to=0,clearTimeout(t.changeUpdate),t.changeUpdate=setTimeout(function(){f(o)},e.foldOnChangeTimeSpan||600)}}function u(o){var t=o.state.foldGutter;if(t){var e=t.options;clearTimeout(t.changeUpdate),t.changeUpdate=setTimeout(function(){var e=o.getViewport();t.from==t.to||e.from-t.to>20||t.from-e.to>20?f(o):o.operation(function(){e.fromt.to&&(i(o,t.to,e.to),t.to=e.to)})},e.updateViewportTimeSpan||400)}}function l(o,t){var e=o.state.foldGutter;if(e){var r=t.line;r>=e.from&&r=i?-1:f.lastIndexOf(t,i-1);if(-1!=u){if(1==s&&u=v;++v)for(var p=r.getLine(v),m=v==l?i:0;;){var P=p.indexOf(s,m),k=p.indexOf(u,m);if(0>P&&(P=p.length),0>k&&(k=p.length),m=Math.min(P,k),m==p.length)break;if(r.getTokenTypeAt(e.Pos(v,m+1))==o)if(m==P)++c;else if(!--c){a=v,d=m;break e}++m}if(null!=a&&(l!=a||d!=i))return{from:e.Pos(l,i),to:e.Pos(a,d)}}}),e.registerHelper("fold","import",function(r,n){function t(n){if(nr.lastLine())return null;var t=r.getTokenAt(e.Pos(n,1));if(/\S/.test(t.string)||(t=r.getTokenAt(e.Pos(n,t.end+1))),"keyword"!=t.type||"import"!=t.string)return null;for(var i=n,o=Math.min(r.lastLine(),n+10);o>=i;++i){var l=r.getLine(i),f=l.indexOf(";");if(-1!=f)return{startCh:t.end,end:e.Pos(i,f)}}}var i,n=n.line,o=t(n);if(!o||t(n-1)||(i=t(n-2))&&i.end.line==n-1)return null;for(var l=o.end;;){var f=t(l.line+1);if(null==f)break;l=f.end}return{from:r.clipPos(e.Pos(n,o.startCh+1)),to:l}}),e.registerHelper("fold","include",function(r,n){function t(n){if(nr.lastLine())return null;var t=r.getTokenAt(e.Pos(n,1));return/\S/.test(t.string)||(t=r.getTokenAt(e.Pos(n,t.end+1))),"meta"==t.type&&"#include"==t.string.slice(0,8)?t.start+8:void 0}var n=n.line,i=t(n);if(null==i||null!=t(n-1))return null;for(var o=n;;){var l=t(o+1);if(null==l)break;++o}return{from:e.Pos(n,i+1),to:r.clipPos(e.Pos(o))}})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function n(e,n){return e.line-n.line||e.ch-n.ch}function t(e,n,t,i){this.line=n,this.ch=t,this.cm=e,this.text=e.getLine(n),this.min=i?i.from:e.firstLine(),this.max=i?i.to-1:e.lastLine()}function i(e,n){var t=e.cm.getTokenTypeAt(h(e.line,n));return t&&/\btag\b/.test(t)}function r(e){return e.line>=e.max?void 0:(e.ch=0,e.text=e.cm.getLine(++e.line),!0)}function f(e){return e.line<=e.min?void 0:(e.text=e.cm.getLine(--e.line),e.ch=e.text.length,!0)}function o(e){for(;;){var n=e.text.indexOf(">",e.ch);if(-1==n){if(r(e))continue;return}{if(i(e,n+1)){var t=e.text.lastIndexOf("/",n),f=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,f?"selfClose":"regular"}e.ch=n+1}}}function u(e){for(;;){var n=e.ch?e.text.lastIndexOf("<",e.ch-1):-1;if(-1==n){if(f(e))continue;return}if(i(e,n+1)){g.lastIndex=n,e.ch=n;var t=g.exec(e.text);if(t&&t.index==n)return t}else e.ch=n}}function c(e){for(;;){g.lastIndex=e.ch;var n=g.exec(e.text);if(!n){if(r(e))continue;return}{if(i(e,n.index+1))return e.ch=n.index+n[0].length,n;e.ch=n.index+1}}}function l(e){for(;;){var n=e.ch?e.text.lastIndexOf(">",e.ch-1):-1;if(-1==n){if(f(e))continue;return}{if(i(e,n+1)){var t=e.text.lastIndexOf("/",n),r=t>-1&&!/\S/.test(e.text.slice(t+1,n));return e.ch=n+1,r?"selfClose":"regular"}e.ch=n}}}function a(e,n){for(var t=[];;){var i,r=c(e),f=e.line,u=e.ch-(r?r[0].length:0);if(!r||!(i=o(e)))return;if("selfClose"!=i)if(r[1]){for(var l=t.length-1;l>=0;--l)if(t[l]==r[2]){t.length=l;break}if(0>l&&(!n||n==r[2]))return{tag:r[2],from:h(f,u),to:h(e.line,e.ch)}}else t.push(r[2])}}function s(e,n){for(var t=[];;){var i=l(e);if(!i)return;if("selfClose"!=i){var r=e.line,f=e.ch,o=u(e);if(!o)return;if(o[1])t.push(o[2]);else{for(var c=t.length-1;c>=0;--c)if(t[c]==o[2]){t.length=c;break}if(0>c&&(!n||n==o[2]))return{tag:o[2],from:h(e.line,e.ch),to:h(r,f)}}}else u(e)}}var h=e.Pos,x="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",v=x+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",g=new RegExp("<(/?)(["+x+"]["+v+"]*)","g");e.registerHelper("fold","xml",function(e,n){for(var i=new t(e,n.line,0);;){var r,f=c(i);if(!f||i.line!=n.line||!(r=o(i)))return;if(!f[1]&&"selfClose"!=r){var n=h(i.line,i.ch),u=a(i,f[2]);return u&&{from:n,to:u.from}}}}),e.findMatchingTag=function(e,i,r){var f=new t(e,i.line,i.ch,r);if(-1!=f.text.indexOf(">")||-1!=f.text.indexOf("<")){var c=o(f),l=c&&h(f.line,f.ch),x=c&&u(f);if(c&&x&&!(n(f,i)>0)){var v={from:h(f.line,f.ch),to:l,tag:x[2]};return"selfClose"==c?{open:v,close:null,at:"open"}:x[1]?{open:s(f,x[2]),close:v,at:"close"}:(f=new t(e,l.line,l.ch,r),{open:v,close:a(f,x[2]),at:"open"})}}},e.findEnclosingTag=function(e,n,i){for(var r=new t(e,n.line,n.ch,i);;){var f=s(r);if(!f)break;var o=new t(e,n.line,n.ch,i),u=a(o,f.tag);if(u)return{open:f,close:u}}},e.scanForClosingTag=function(e,n,i,r){var f=new t(e,n.line,n.ch,r?{from:0,to:r}:null);return a(f,i)}}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.registerHelper("fold","markdown",function(n,t){function r(t){var r=n.getTokenTypeAt(e.Pos(t,0));return r&&/\bheader\b/.test(r)}function i(e,n,t){var i=n&&n.match(/^#+/);return i&&r(e)?i[0].length:(i=t&&t.match(/^[=\-]+\s*$/),i&&r(e+1)?"="==t[0]?1:2:o)}var o=100,f=n.getLine(t.line),l=n.getLine(t.line+1),c=i(t.line,f,l);if(c!==o){for(var u=n.lastLine(),d=t.line,a=n.getLine(d+2);u>d&&!(i(d+1,l,a)<=c);)++d,l=a,a=n.getLine(d+2);return{from:e.Pos(t.line,f.length),to:e.Pos(d,n.getLine(d).length)}}})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.registerGlobalHelper("fold","comment",function(e){return e.blockCommentStart&&e.blockCommentEnd},function(t,n){var o=t.getModeAt(n),r=o.blockCommentStart,i=o.blockCommentEnd;if(r&&i){for(var f,l=n.line,c=t.getLine(l),m=n.ch,a=0;;){var d=0>=m?-1:c.lastIndexOf(r,m-1);if(-1!=d){if(1==a&&d=h;++h)for(var k=t.getLine(h),v=h==l?f:0;;){var p=k.indexOf(r,v),C=k.indexOf(i,v);if(0>p&&(p=k.length),0>C&&(C=k.length),v=Math.min(p,C),v==k.length)break;if(v==p)++s;else if(!--s){u=h,b=v;break e}++v}if(null!=u&&(l!=u||b!=f))return{from:e.Pos(l,f),to:e.Pos(u,b)}}})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror")):"function"==typeof define&&define.amd?define(["../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.modeInfo=[{name:"APL",mime:"text/apl",mode:"apl",ext:["dyalog","apl"]},{name:"PGP",mimes:["application/pgp","application/pgp-keys","application/pgp-signature"],mode:"asciiarmor",ext:["pgp"]},{name:"Asterisk",mime:"text/x-asterisk",mode:"asterisk",file:/^extensions\.conf$/i},{name:"C",mime:"text/x-csrc",mode:"clike",ext:["c","h"]},{name:"C++",mime:"text/x-c++src",mode:"clike",ext:["cpp","c++","cc","cxx","hpp","h++","hh","hxx"],alias:["cpp"]},{name:"Cobol",mime:"text/x-cobol",mode:"cobol",ext:["cob","cpy"]},{name:"C#",mime:"text/x-csharp",mode:"clike",ext:["cs"],alias:["csharp"]},{name:"Clojure",mime:"text/x-clojure",mode:"clojure",ext:["clj"]},{name:"CMake",mime:"text/x-cmake",mode:"cmake",ext:["cmake","cmake.in"],file:/^CMakeLists.txt$/},{name:"CoffeeScript",mime:"text/x-coffeescript",mode:"coffeescript",ext:["coffee"],alias:["coffee","coffee-script"]},{name:"Common Lisp",mime:"text/x-common-lisp",mode:"commonlisp",ext:["cl","lisp","el"],alias:["lisp"]},{name:"Cypher",mime:"application/x-cypher-query",mode:"cypher",ext:["cyp","cypher"]},{name:"Cython",mime:"text/x-cython",mode:"python",ext:["pyx","pxd","pxi"]},{name:"CSS",mime:"text/css",mode:"css",ext:["css"]},{name:"CQL",mime:"text/x-cassandra",mode:"sql",ext:["cql"]},{name:"D",mime:"text/x-d",mode:"d",ext:["d"]},{name:"Dart",mimes:["application/dart","text/x-dart"],mode:"dart",ext:["dart"]},{name:"diff",mime:"text/x-diff",mode:"diff",ext:["diff","patch"]},{name:"Django",mime:"text/x-django",mode:"django"},{name:"Dockerfile",mime:"text/x-dockerfile",mode:"dockerfile",file:/^Dockerfile$/},{name:"DTD",mime:"application/xml-dtd",mode:"dtd",ext:["dtd"]},{name:"Dylan",mime:"text/x-dylan",mode:"dylan",ext:["dylan","dyl","intr"]},{name:"EBNF",mime:"text/x-ebnf",mode:"ebnf"},{name:"ECL",mime:"text/x-ecl",mode:"ecl",ext:["ecl"]},{name:"Eiffel",mime:"text/x-eiffel",mode:"eiffel",ext:["e"]},{name:"Embedded Javascript",mime:"application/x-ejs",mode:"htmlembedded",ext:["ejs"]},{name:"Embedded Ruby",mime:"application/x-erb",mode:"htmlembedded",ext:["erb"]},{name:"Erlang",mime:"text/x-erlang",mode:"erlang",ext:["erl"]},{name:"Forth",mime:"text/x-forth",mode:"forth",ext:["forth","fth","4th"]},{name:"Fortran",mime:"text/x-fortran",mode:"fortran",ext:["f","for","f77","f90"]},{name:"F#",mime:"text/x-fsharp",mode:"mllike",ext:["fs"],alias:["fsharp"]},{name:"Gas",mime:"text/x-gas",mode:"gas",ext:["s"]},{name:"Gherkin",mime:"text/x-feature",mode:"gherkin",ext:["feature"]},{name:"GitHub Flavored Markdown",mime:"text/x-gfm",mode:"gfm",file:/^(readme|contributing|history).md$/i},{name:"Go",mime:"text/x-go",mode:"go",ext:["go"]},{name:"Groovy",mime:"text/x-groovy",mode:"groovy",ext:["groovy"]},{name:"HAML",mime:"text/x-haml",mode:"haml",ext:["haml"]},{name:"Haskell",mime:"text/x-haskell",mode:"haskell",ext:["hs"]},{name:"Haxe",mime:"text/x-haxe",mode:"haxe",ext:["hx"]},{name:"HXML",mime:"text/x-hxml",mode:"haxe",ext:["hxml"]},{name:"ASP.NET",mime:"application/x-aspx",mode:"htmlembedded",ext:["aspx"],alias:["asp","aspx"]},{name:"HTML",mime:"text/html",mode:"htmlmixed",ext:["html","htm"],alias:["xhtml"]},{name:"HTTP",mime:"message/http",mode:"http"},{name:"IDL",mime:"text/x-idl",mode:"idl",ext:["pro"]},{name:"Jade",mime:"text/x-jade",mode:"jade",ext:["jade"]},{name:"Java",mime:"text/x-java",mode:"clike",ext:["java"]},{name:"Java Server Pages",mime:"application/x-jsp",mode:"htmlembedded",ext:["jsp"],alias:["jsp"]},{name:"JavaScript",mimes:["text/javascript","text/ecmascript","application/javascript","application/x-javascript","application/ecmascript"],mode:"javascript",ext:["js"],alias:["ecmascript","js","node"]},{name:"JSON",mimes:["application/json","application/x-json"],mode:"javascript",ext:["json","map"],alias:["json5"]},{name:"JSON-LD",mime:"application/ld+json",mode:"javascript",ext:["jsonld"],alias:["jsonld"]},{name:"Jinja2",mime:"null",mode:"jinja2"},{name:"Julia",mime:"text/x-julia",mode:"julia",ext:["jl"]},{name:"Kotlin",mime:"text/x-kotlin",mode:"kotlin",ext:["kt"]},{name:"LESS",mime:"text/x-less",mode:"css",ext:["less"]},{name:"LiveScript",mime:"text/x-livescript",mode:"livescript",ext:["ls"],alias:["ls"]},{name:"Lua",mime:"text/x-lua",mode:"lua",ext:["lua"]},{name:"Markdown",mime:"text/x-markdown",mode:"markdown",ext:["markdown","md","mkd"]},{name:"mIRC",mime:"text/mirc",mode:"mirc"},{name:"MariaDB SQL",mime:"text/x-mariadb",mode:"sql"},{name:"Modelica",mime:"text/x-modelica",mode:"modelica",ext:["mo"]},{name:"MS SQL",mime:"text/x-mssql",mode:"sql"},{name:"MySQL",mime:"text/x-mysql",mode:"sql"},{name:"Nginx",mime:"text/x-nginx-conf",mode:"nginx",file:/nginx.*\.conf$/i},{name:"NTriples",mime:"text/n-triples",mode:"ntriples",ext:["nt"]},{name:"Objective C",mime:"text/x-objectivec",mode:"clike",ext:["m","mm"]},{name:"OCaml",mime:"text/x-ocaml",mode:"mllike",ext:["ml","mli","mll","mly"]},{name:"Octave",mime:"text/x-octave",mode:"octave",ext:["m"]},{name:"Pascal",mime:"text/x-pascal",mode:"pascal",ext:["p","pas"]},{name:"PEG.js",mime:"null",mode:"pegjs",ext:["jsonld"]},{name:"Perl",mime:"text/x-perl",mode:"perl",ext:["pl","pm"]},{name:"PHP",mime:"application/x-httpd-php",mode:"php",ext:["php","php3","php4","php5","phtml"]},{name:"Pig",mime:"text/x-pig",mode:"pig",ext:["pig"]},{name:"Plain Text",mime:"text/plain",mode:"null",ext:["txt","text","conf","def","list","log"]},{name:"PLSQL",mime:"text/x-plsql",mode:"sql",ext:["pls"]},{name:"Properties files",mime:"text/x-properties",mode:"properties",ext:["properties","ini","in"],alias:["ini","properties"]},{name:"Python",mime:"text/x-python",mode:"python",ext:["py","pyw"]},{name:"Puppet",mime:"text/x-puppet",mode:"puppet",ext:["pp"]},{name:"Q",mime:"text/x-q",mode:"q",ext:["q"]},{name:"R",mime:"text/x-rsrc",mode:"r",ext:["r"],alias:["rscript"]},{name:"reStructuredText",mime:"text/x-rst",mode:"rst",ext:["rst"],alias:["rst"]},{name:"RPM Changes",mime:"text/x-rpm-changes",mode:"rpm"},{name:"RPM Spec",mime:"text/x-rpm-spec",mode:"rpm",ext:["spec"]},{name:"Ruby",mime:"text/x-ruby",mode:"ruby",ext:["rb"],alias:["jruby","macruby","rake","rb","rbx"]},{name:"Rust",mime:"text/x-rustsrc",mode:"rust",ext:["rs"]},{name:"Sass",mime:"text/x-sass",mode:"sass",ext:["sass"]},{name:"Scala",mime:"text/x-scala",mode:"clike",ext:["scala"]},{name:"Scheme",mime:"text/x-scheme",mode:"scheme",ext:["scm","ss"]},{name:"SCSS",mime:"text/x-scss",mode:"css",ext:["scss"]},{name:"Shell",mime:"text/x-sh",mode:"shell",ext:["sh","ksh","bash"],alias:["bash","sh","zsh"]},{name:"Sieve",mime:"application/sieve",mode:"sieve",ext:["siv","sieve"]},{name:"Slim",mimes:["text/x-slim","application/x-slim"],mode:"slim",ext:["slim"]},{name:"Smalltalk",mime:"text/x-stsrc",mode:"smalltalk",ext:["st"]},{name:"Smarty",mime:"text/x-smarty",mode:"smarty",ext:["tpl"]},{name:"Solr",mime:"text/x-solr",mode:"solr"},{name:"Soy",mime:"text/x-soy",mode:"soy",ext:["soy"],alias:["closure template"]},{name:"SPARQL",mime:"application/sparql-query",mode:"sparql",ext:["rq","sparql"],alias:["sparul"]},{name:"Spreadsheet",mime:"text/x-spreadsheet",mode:"spreadsheet",alias:["excel","formula"]},{name:"SQL",mime:"text/x-sql",mode:"sql",ext:["sql"]},{name:"MariaDB",mime:"text/x-mariadb",mode:"sql"},{name:"sTeX",mime:"text/x-stex",mode:"stex"},{name:"LaTeX",mime:"text/x-latex",mode:"stex",ext:["text","ltx"],alias:["tex"]},{name:"SystemVerilog",mime:"text/x-systemverilog",mode:"verilog",ext:["v"]},{name:"Tcl",mime:"text/x-tcl",mode:"tcl",ext:["tcl"]},{name:"Textile",mime:"text/x-textile",mode:"textile",ext:["textile"]},{name:"TiddlyWiki ",mime:"text/x-tiddlywiki",mode:"tiddlywiki"},{name:"Tiki wiki",mime:"text/tiki",mode:"tiki"},{name:"TOML",mime:"text/x-toml",mode:"toml",ext:["toml"]},{name:"Tornado",mime:"text/x-tornado",mode:"tornado"},{name:"troff",mime:"troff",mode:"troff",ext:["1","2","3","4","5","6","7","8","9"]},{name:"Turtle",mime:"text/turtle",mode:"turtle",ext:["ttl"]},{name:"TypeScript",mime:"application/typescript",mode:"javascript",ext:["ts"],alias:["ts"]},{name:"VB.NET",mime:"text/x-vb",mode:"vb",ext:["vb"]},{name:"VBScript",mime:"text/vbscript",mode:"vbscript",ext:["vbs"]},{name:"Velocity",mime:"text/velocity",mode:"velocity",ext:["vtl"]},{name:"Verilog",mime:"text/x-verilog",mode:"verilog",ext:["v"]},{name:"XML",mimes:["application/xml","text/xml"],mode:"xml",ext:["xml","xsl","xsd"],alias:["rss","wsdl","xsd"]},{name:"XQuery",mime:"application/xquery",mode:"xquery",ext:["xy","xquery"]},{name:"YAML",mime:"text/x-yaml",mode:"yaml",ext:["yaml","yml"],alias:["yml"]},{name:"Z80",mime:"text/x-z80",mode:"z80",ext:["z80"]}];for(var m=0;m-1&&m.substring(i+1,m.length);return x?e.findModeByExtension(x):void 0},e.findModeByName=function(m){m=m.toLowerCase();for(var t=0;t!|\/]/;return{startState:function(e){return{tokenize:null,context:new i((e||0)-u,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,n){var r=n.context;if(e.sol()&&(null==r.align&&(r.align=!1),n.indented=e.indentation(),n.startOfLine=!0,"case"==r.type&&(r.type="}")),e.eatSpace())return null;c=null;var i=(n.tokenize||t)(e,n);return"comment"==i?i:(null==r.align&&(r.align=!0),"{"==c?o(n,e.column(),"}"):"["==c?o(n,e.column(),"]"):"("==c?o(n,e.column(),")"):"case"==c?r.type="case":"}"==c&&"}"==r.type?r=a(n):c==r.type&&a(n),n.startOfLine=!1,i)},indent:function(e,n){if(e.tokenize!=t&&null!=e.tokenize)return 0;var r=e.context,i=n&&n.charAt(0);if("case"==r.type&&/^(?:case|default)\b/.test(n))return e.context.type="}",r.indented;var o=i==r.type;return r.align?r.column+(o?0:1):r.indented+(o?0:u)},electricChars:"{}):",fold:"brace",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//"}}),e.defineMIME("text/x-go","go")}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function t(e){for(var t={},r=e.split(" "),n=0;n!?|\/]/;return{startState:function(e){return{tokenize:null,context:new i((e||0)-u,0,"top",!1),indented:0,startOfLine:!0}},token:function(e,t){var r=t.context;if(e.sol()&&(null==r.align&&(r.align=!1),t.indented=e.indentation(),t.startOfLine=!0),e.eatSpace())return null;c=null;var o=(t.tokenize||n)(e,t);if("comment"==o||"meta"==o)return o;if(null==r.align&&(r.align=!0),";"!=c&&":"!=c&&","!=c||"statement"!=r.type)if("{"==c)l(t,e.column(),"}");else if("["==c)l(t,e.column(),"]");else if("("==c)l(t,e.column(),")");else if("}"==c){for(;"statement"==r.type;)r=s(t);for("}"==r.type&&(r=s(t));"statement"==r.type;)r=s(t)}else c==r.type?s(t):b&&(("}"==r.type||"top"==r.type)&&";"!=c||"statement"==r.type&&"newstatement"==c)&&l(t,e.column(),"statement");else s(t);return t.startOfLine=!1,o},indent:function(t,r){if(t.tokenize!=n&&null!=t.tokenize)return e.Pass;var o=t.context,a=r&&r.charAt(0);"statement"==o.type&&"}"==a&&(o=o.prev);var i=a==o.type;return"statement"==o.type?o.indented+("{"==a?0:d):!o.align||f&&")"==o.type?")"!=o.type||i?o.indented+(i?0:u):o.indented+d:o.column+(i?0:1)},electricChars:"{}",blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}});var s="auto if break int case long char register continue return default short do sizeof double static else struct entry switch extern typedef float union for unsigned goto while enum void const signed volatile";i(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:t(s),blockKeywords:t("case do else for if switch while struct"),atoms:t("null"),hooks:{"#":r},modeProps:{fold:["brace","include"]}}),i(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:t(s+" asm dynamic_cast namespace reinterpret_cast try bool explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected wchar_t alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override"),blockKeywords:t("catch class do else finally for if struct switch try while"),atoms:t("true false null"),hooks:{"#":r,u:n,U:n,L:n,R:n},modeProps:{fold:["brace","include"]}}),i("text/x-java",{name:"clike",keywords:t("abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while"),blockKeywords:t("catch class do else finally for if switch try while"),atoms:t("true false null"),hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"}},modeProps:{fold:["brace","import"]}}),i("text/x-csharp",{name:"clike",keywords:t("abstract as base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),blockKeywords:t("catch class do else finally for foreach if struct switch try while"),builtin:t("Boolean Byte Char DateTime DateTimeOffset Decimal Double Guid Int16 Int32 Int64 Object SByte Single String TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong"),atoms:t("true false null"),hooks:{"@":function(e,t){return e.eat('"')?(t.tokenize=o,o(e,t)):(e.eatWhile(/[\w\$_]/),"meta")}}}),i("text/x-scala",{name:"clike",keywords:t("abstract case catch class def do else extends false final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try trye type val var while with yield _ : = => <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector :: #:: Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),multiLineStrings:!0,blockKeywords:t("catch class do else finally for forSome if match switch try while"),atoms:t("true false null"),indentStatements:!1,hooks:{"@":function(e){return e.eatWhile(/[\w\$_]/),"meta"},'"':function(e,t){return e.match('""')?(t.tokenize=l,t.tokenize(e,t)):!1},"'":function(e){return e.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"}},modeProps:{closeBrackets:{triples:'"'}}}),i(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:t("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4 sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),blockKeywords:t("for while do if else struct"),builtin:t("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:t("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),hooks:{"#":r},modeProps:{fold:["brace","include"]}}),i("text/x-nesc",{name:"clike",keywords:t(s+"as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),blockKeywords:t("case do else for if switch while struct"),atoms:t("null"),hooks:{"#":r},modeProps:{fold:["brace","include"]}}),i("text/x-objectivec",{name:"clike",keywords:t(s+"inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),atoms:t("YES NO NULL NILL ON OFF"),hooks:{"@":function(e){return e.eatWhile(/[\w\$]/),"keyword"},"#":r},modeProps:{fold:"brace"}})}); +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("xml",function(e,n){function r(t,e){function n(n){return e.tokenize=n,n(t,e)}var r=t.next();if("<"==r)return t.eat("!")?t.eat("[")?t.match("CDATA[")?n(i("atom","]]>")):null:t.match("--")?n(i("comment","-->")):t.match("DOCTYPE",!0,!0)?(t.eatWhile(/[\w\._\-]/),n(l(1))):null:t.eat("?")?(t.eatWhile(/[\w\._\-]/),e.tokenize=i("meta","?>"),"meta"):(z=t.eat("/")?"closeTag":"openTag",e.tokenize=o,"tag bracket");if("&"==r){var a;return a=t.eat("#")?t.eat("x")?t.eatWhile(/[a-fA-F\d]/)&&t.eat(";"):t.eatWhile(/[\d]/)&&t.eat(";"):t.eatWhile(/[\w\.\-:]/)&&t.eat(";"),a?"atom":"error"}return t.eatWhile(/[^&<]/),null}function o(t,e){var n=t.next();if(">"==n||"/"==n&&t.eat(">"))return e.tokenize=r,z=">"==n?"endTag":"selfcloseTag","tag bracket";if("="==n)return z="equals",null;if("<"==n){e.tokenize=r,e.state=f,e.tagName=e.tagStart=null;var o=e.tokenize(t,e);return o?o+" tag error":"tag error"}return/[\'\"]/.test(n)?(e.tokenize=a(n),e.stringStartCol=t.column(),e.tokenize(t,e)):(t.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/),"word")}function a(t){var e=function(e,n){for(;!e.eol();)if(e.next()==t){n.tokenize=o;break}return"string"};return e.isInAttribute=!0,e}function i(t,e){return function(n,o){for(;!n.eol();){if(n.match(e)){o.tokenize=r;break}n.next()}return t}}function l(t){return function(e,n){for(var o;null!=(o=e.next());){if("<"==o)return n.tokenize=l(t+1),n.tokenize(e,n);if(">"==o){if(1==t){n.tokenize=r;break}return n.tokenize=l(t-1),n.tokenize(e,n)}}return"meta"}}function u(t,e,n){this.prev=t.context,this.tagName=e,this.indent=t.indented,this.startOfLine=n,(T.doNotIndent.hasOwnProperty(e)||t.context&&t.context.noIndent)&&(this.noIndent=!0)}function d(t){t.context&&(t.context=t.context.prev)}function c(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName,!T.contextGrabbers.hasOwnProperty(n)||!T.contextGrabbers[n].hasOwnProperty(e))return;d(t)}}function f(t,e,n){return"openTag"==t?(n.tagStart=e.column(),s):"closeTag"==t?m:f}function s(t,e,n){return"word"==t?(n.tagName=e.current(),N="tag",h):(N="error",s)}function m(t,e,n){if("word"==t){var r=e.current();return n.context&&n.context.tagName!=r&&T.implicitlyClosed.hasOwnProperty(n.context.tagName)&&d(n),n.context&&n.context.tagName==r?(N="tag",g):(N="tag error",p)}return N="error",p}function g(t,e,n){return"endTag"!=t?(N="error",g):(d(n),f)}function p(t,e,n){return N="error",g(t,e,n)}function h(t,e,n){if("word"==t)return N="attribute",x;if("endTag"==t||"selfcloseTag"==t){var r=n.tagName,o=n.tagStart;return n.tagName=n.tagStart=null,"selfcloseTag"==t||T.autoSelfClosers.hasOwnProperty(r)?c(n,r):(c(n,r),n.context=new u(n,r,o==n.indented)),f}return N="error",h}function x(t,e,n){return"equals"==t?b:(T.allowMissing||(N="error"),h(t,e,n))}function b(t,e,n){return"string"==t?k:"word"==t&&T.allowUnquoted?(N="string",h):(N="error",h(t,e,n))}function k(t,e,n){return"string"==t?k:h(t,e,n)}var w=e.indentUnit,v=n.multilineTagIndentFactor||1,y=n.multilineTagIndentPastTag;null==y&&(y=!0);var z,N,T=n.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},C=n.alignCDATA;return{startState:function(){return{tokenize:r,state:f,indented:0,tagName:null,tagStart:null,context:null}},token:function(t,e){if(!e.tagName&&t.sol()&&(e.indented=t.indentation()),t.eatSpace())return null;z=null;var n=e.tokenize(t,e);return(n||z)&&"comment"!=n&&(N=null,e.state=e.state(z||n,t,e),N&&(n="error"==N?n+" error":N)),n},indent:function(e,n,a){var i=e.context;if(e.tokenize.isInAttribute)return e.tagStart==e.indented?e.stringStartCol+1:e.indented+w;if(i&&i.noIndent)return t.Pass;if(e.tokenize!=o&&e.tokenize!=r)return a?a.match(/^(\s*)/)[0].length:0;if(e.tagName)return y?e.tagStart+e.tagName.length+2:e.tagStart+w*v;if(C&&/$/,blockCommentStart:"",configuration:n.htmlMode?"html":"xml",helperType:n.htmlMode?"html":"xml"}}),t.defineMIME("text/xml","xml"),t.defineMIME("application/xml","xml"),t.mimeModes.hasOwnProperty("text/html")||t.defineMIME("text/html",{name:"xml",htmlMode:!0})}); +!function(t){"object"==typeof exports&&"object"==typeof module?t(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"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("htmlmixed",function(e,a){function o(t,e){var a=e.htmlState.tagName;a&&(a=a.toLowerCase());var o=r.token(t,e.htmlState);if("script"==a&&/\btag\b/.test(o)&&">"==t.current()){var l=t.string.slice(Math.max(0,t.pos-100),t.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i);l=l?l[1]:"",l&&/[\"\']/.test(l.charAt(0))&&(l=l.slice(1,l.length-1));for(var m=0;m"==t.current()&&(e.token=c,e.localMode=s,e.localState=s.startState(r.indent(e.htmlState,"")));return o}function l(t,e,a){var o,l=t.current(),n=l.search(e);return n>-1?t.backUp(l.length-n):(o=l.match(/<\/?$/))&&(t.backUp(l.length),t.match(e,!1)||t.match(l)),a}function n(t,e){return t.match(/^<\/\s*script\s*>/i,!1)?(e.token=o,e.localState=e.localMode=null,null):l(t,/<\/\s*script\s*>/,e.localMode.token(t,e.localState))}function c(t,e){return t.match(/^<\/\s*style\s*>/i,!1)?(e.token=o,e.localState=e.localMode=null,null):l(t,/<\/\s*style\s*>/,s.token(t,e.localState))}var r=t.getMode(e,{name:"xml",htmlMode:!0,multilineTagIndentFactor:a.multilineTagIndentFactor,multilineTagIndentPastTag:a.multilineTagIndentPastTag}),s=t.getMode(e,"css"),i=[],m=a&&a.scriptTypes;if(i.push({matches:/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i,mode:t.getMode(e,"javascript")}),m)for(var d=0;d"))return a("=>","operator");if("0"==r&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),a("number","number");if(/\d/.test(r))return e.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/),a("number","number");if("/"==r)return e.eat("*")?(t.tokenize=c,c(e,t)):e.eat("/")?(e.skipToEnd(),a("comment","comment")):"operator"==t.lastType||"keyword c"==t.lastType||"sof"==t.lastType||/^[\[{}\(,;:]$/.test(t.lastType)?(n(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),a("regexp","string-2")):(e.eatWhile(Me),a("operator","operator",e.current()));if("`"==r)return t.tokenize=u,u(e,t);if("#"==r)return e.skipToEnd(),a("error","error");if(Me.test(r))return e.eatWhile(Me),a("operator","operator",e.current());if(we.test(r)){e.eatWhile(we);var i=e.current(),l=je.propertyIsEnumerable(i)&&je[i];return l&&"."!=t.lastType?a(l.type,l.style,i):a("variable","variable",i)}}function o(e){return function(t,r){var n,o=!1;if(xe&&"@"==t.peek()&&t.match(Ve))return r.tokenize=i,a("jsonld-keyword","meta");for(;null!=(n=t.next())&&(n!=e||o);)o=!o&&"\\"==n;return o||(r.tokenize=i),a("string","string")}}function c(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=i;break}n="*"==r}return a("comment","comment")}function u(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=i;break}n=!n&&"\\"==r}return a("quasi","string-2",e.current())}function l(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(0>r)){for(var n=0,a=!1,i=r-1;i>=0;--i){var o=e.string.charAt(i),c=Ee.indexOf(o);if(c>=0&&3>c){if(!n){++i;break}if(0==--n)break}else if(c>=3&&6>c)++n;else if(we.test(o))a=!0;else{if(/["'\/]/.test(o))return;if(a&&!n){++i;break}}}a&&!n&&(t.fatArrowAt=i)}}function s(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function f(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(var r=n.vars;r;r=r.next)if(r.name==t)return!0}function d(e,t,r,n,a){var i=e.cc;for(ze.state=e,ze.stream=a,ze.marked=null,ze.cc=i,ze.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){var o=i.length?i.pop():he?w:g;if(o(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return ze.marked?ze.marked:"variable"==r&&f(e,n)?"variable-2":t}}}function p(){for(var e=arguments.length-1;e>=0;e--)ze.cc.push(arguments[e])}function v(){return p.apply(null,arguments),!0}function m(e){function t(t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}var n=ze.state;if(n.context){if(ze.marked="def",t(n.localVars))return;n.localVars={name:e,next:n.localVars}}else{if(t(n.globalVars))return;r.globalVars&&(n.globalVars={name:e,next:n.globalVars})}}function y(){ze.state.context={prev:ze.state.context,vars:ze.state.localVars},ze.state.localVars=Te}function k(){ze.state.localVars=ze.state.context.vars,ze.state.context=ze.state.context.prev}function b(e,t){var r=function(){var r=ze.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new s(n,ze.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function x(){var e=ze.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function h(e){function t(r){return r==e?v():";"==e?p():v(t)}return t}function g(e,t){return"var"==e?v(b("vardef",t.length),F,h(";"),x):"keyword a"==e?v(b("form"),w,g,x):"keyword b"==e?v(b("form"),g,x):"{"==e?v(b("}"),H,x):";"==e?v():"if"==e?("else"==ze.state.lexical.info&&ze.state.cc[ze.state.cc.length-1]==x&&ze.state.cc.pop()(),v(b("form"),w,g,x,Q)):"function"==e?v(ee):"for"==e?v(b("form"),R,g,x):"variable"==e?v(b("stat"),q):"switch"==e?v(b("form"),w,b("}","switch"),h("{"),H,x,x):"case"==e?v(w,h(":")):"default"==e?v(h(":")):"catch"==e?v(b("form"),y,h("("),te,h(")"),g,x,k):"module"==e?v(b("form"),y,oe,k,x):"class"==e?v(b("form"),re,x):"export"==e?v(b("form"),ce,x):"import"==e?v(b("form"),ue,x):p(b("stat"),w,h(";"),x)}function w(e){return M(e,!1)}function j(e){return M(e,!0)}function M(e,t){if(ze.state.fatArrowAt==ze.stream.start){var r=t?$:C;if("("==e)return v(y,b(")"),N(G,")"),x,h("=>"),r,k);if("variable"==e)return p(y,G,h("=>"),r,k)}var n=t?z:I;return Ie.hasOwnProperty(e)?v(n):"function"==e?v(ee,n):"keyword c"==e?v(t?E:V):"("==e?v(b(")"),V,pe,h(")"),x,n):"operator"==e||"spread"==e?v(t?j:w):"["==e?v(b("]"),fe,x,n):"{"==e?B(P,"}",null,n):"quasi"==e?p(T,n):v()}function V(e){return e.match(/[;\}\)\],]/)?p():p(w)}function E(e){return e.match(/[;\}\)\],]/)?p():p(j)}function I(e,t){return","==e?v(w):z(e,t,!1)}function z(e,t,r){var n=0==r?I:z,a=0==r?w:j;return"=>"==e?v(y,r?$:C,k):"operator"==e?/\+\+|--/.test(t)?v(n):"?"==t?v(w,h(":"),a):v(a):"quasi"==e?p(T,n):";"!=e?"("==e?B(j,")","call",n):"."==e?v(O,n):"["==e?v(b("]"),V,h("]"),x,n):void 0:void 0}function T(e,t){return"quasi"!=e?p():"${"!=t.slice(t.length-2)?v(T):v(w,A)}function A(e){return"}"==e?(ze.marked="string-2",ze.state.tokenize=u,v(T)):void 0}function C(e){return l(ze.stream,ze.state),p("{"==e?g:w)}function $(e){return l(ze.stream,ze.state),p("{"==e?g:j)}function q(e){return":"==e?v(x,g):p(I,h(";"),x)}function O(e){return"variable"==e?(ze.marked="property",v()):void 0}function P(e,t){return"variable"==e||"keyword"==ze.style?(ze.marked="property",v("get"==t||"set"==t?S:W)):"number"==e||"string"==e?(ze.marked=xe?"property":ze.style+" property",v(W)):"jsonld-keyword"==e?v(W):"["==e?v(w,h("]"),W):void 0}function S(e){return"variable"!=e?p(W):(ze.marked="property",v(ee))}function W(e){return":"==e?v(j):"("==e?p(ee):void 0}function N(e,t){function r(n){if(","==n){var a=ze.state.lexical;return"call"==a.info&&(a.pos=(a.pos||0)+1),v(e,r)}return n==t?v():v(h(t))}return function(n){return n==t?v():p(e,r)}}function B(e,t,r){for(var n=3;n!?|~^]/,Ve=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/,Ee="([{}])",Ie={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,"this":!0,"jsonld-keyword":!0},ze={state:null,column:null,marked:null,cc:null},Te={name:"this",next:{name:"arguments"}};return x.lex=!0,{startState:function(e){var t={tokenize:i,lastType:"sof",cc:[],lexical:new s((e||0)-ke,0,"block",!1),localVars:r.localVars,context:r.localVars&&{vars:r.localVars},indented:0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),l(e,t)),t.tokenize!=c&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==me?r:(t.lastType="operator"!=me||"++"!=ye&&"--"!=ye?me:"incdec",d(t,r,me,ye,e))},indent:function(t,n){if(t.tokenize==c)return e.Pass;if(t.tokenize!=i)return 0;var a=n&&n.charAt(0),o=t.lexical;if(!/^\s*else\b/.test(n))for(var u=t.cc.length-1;u>=0;--u){var l=t.cc[u];if(l==x)o=o.prev;else if(l!=Q)break}"stat"==o.type&&"}"==a&&(o=o.prev),be&&")"==o.type&&"stat"==o.prev.type&&(o=o.prev);var s=o.type,f=a==s;return"vardef"==s?o.indented+("operator"==t.lastType||","==t.lastType?o.info+1:0):"form"==s&&"{"==a?o.indented:"form"==s?o.indented+ke:"stat"==s?o.indented+(ve(t,n)?be||ke:0):"switch"!=o.info||f||0==r.doubleIndentSwitch?o.align?o.column+(f?0:1):o.indented+(f?0:ke):o.indented+(/^(?:case|default)\b/.test(n)?ke:2*ke)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:he?null:"/*",blockCommentEnd:he?null:"*/",lineComment:he?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:he?"json":"javascript",jsonldMode:xe,jsonMode:he}}),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}); +!function(t){"object"==typeof exports&&"object"==typeof module?t(require("../../lib/codemirror"),require("../xml/xml"),require("../meta")):"function"==typeof define&&define.amd?define(["../../lib/codemirror","../xml/xml","../meta"],t):t(CodeMirror)}(function(t){"use strict";t.defineMode("markdown",function(e,i){function n(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return"null"==r.name?null:r}function r(t,e,i){return e.f=e.inline=i,i(t,e)}function a(t,e,i){return e.f=e.block=i,i(t,e)}function o(t){return t.linkTitle=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,L||t.f!=h||(t.f=m,t.block=l),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.thisLineHasContent=!1,null}function l(t,e){var a=t.sol(),o=e.list!==!1;e.list!==!1&&e.indentationDiff>=0?(e.indentationDiff<4&&(e.indentation-=e.indentationDiff),e.list=null):e.list!==!1&&e.indentation>0?(e.list=null,e.listDepth=Math.floor(e.indentation/4)):e.list!==!1&&(e.list=!1,e.listDepth=0);var l=null;if(e.indentationDiff>=4)return e.indentation-=4,t.skipToEnd(),M;if(t.eatSpace())return null;if(l=t.match(P))return e.header=l[0].length<=6?l[0].length:6,i.highlightFormatting&&(e.formatting="header"),e.f=e.inline,f(e);if(e.prevLineHasContent&&(l=t.match(z)))return e.header="="==l[0].charAt(0)?1:2,i.highlightFormatting&&(e.formatting="header"),e.f=e.inline,f(e);if(t.eat(">"))return e.indentation++,e.quote=a?1:e.quote+1,i.highlightFormatting&&(e.formatting="quote"),t.eatSpace(),f(e);if("["===t.peek())return r(t,e,p);if(t.match(U,!0))return T;if((!e.prevLineHasContent||o)&&(t.match(R,!1)||t.match(A,!1))){var h=null;return t.match(R,!0)?h="ul":(t.match(A,!0),h="ol"),e.indentation+=4,e.list=!0,e.listDepth++,i.taskLists&&t.match(I,!1)&&(e.taskList=!0),e.f=e.inline,i.highlightFormatting&&(e.formatting=["list","list-"+h]),f(e)}return i.fencedCodeBlocks&&t.match(/^```[ \t]*([\w+#]*)/,!0)?(e.localMode=n(RegExp.$1),e.localMode&&(e.localState=e.localMode.startState()),e.f=e.block=g,i.highlightFormatting&&(e.formatting="code-block"),e.code=!0,f(e)):r(t,e,e.inline)}function h(t,e){var i=F.token(t,e.htmlState);return(L&&null===e.htmlState.tagStart&&!e.htmlState.context||e.md_inside&&t.current().indexOf(">")>-1)&&(e.f=m,e.block=l,e.htmlState=null),i}function g(t,e){return t.sol()&&t.match("```",!1)?(e.localMode=e.localState=null,e.f=e.block=s,null):e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),M)}function s(t,e){t.match("```"),e.block=l,e.f=m,i.highlightFormatting&&(e.formatting="code-block"),e.code=!0;var n=f(e);return e.code=!1,n}function f(t){var e=[];if(t.formatting){e.push(y),"string"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n=t.quote?e.push(y+"-"+t.formatting[n]+"-"+t.quote):e.push("error"))}if(t.taskOpen)return e.push("meta"),e.length?e.join(" "):null;if(t.taskClosed)return e.push("property"),e.length?e.join(" "):null;if(t.linkHref)return e.push(O),e.length?e.join(" "):null;if(t.strong&&e.push(E),t.em&&e.push(j),t.strikethrough&&e.push(W),t.linkText&&e.push(N),t.code&&e.push(M),t.header&&(e.push(q),e.push(q+"-"+t.header)),t.quote&&(e.push(w),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(w+"-"+t.quote):e.push(w+"-"+i.maxBlockquoteDepth)),t.list!==!1){var r=(t.listDepth-1)%3;r?1===r?e.push(D):e.push(H):e.push(C)}return t.trailingSpaceNewLine?e.push("trailing-space-new-line"):t.trailingSpace&&e.push("trailing-space-"+(t.trailingSpace%2?"a":"b")),e.length?e.join(" "):null}function u(t,e){return t.match(G,!0)?f(e):void 0}function m(e,n){var r=n.text(e,n);if("undefined"!=typeof r)return r;if(n.list)return n.list=null,f(n);if(n.taskList){var o="x"!==e.match(I,!0)[1];return o?n.taskOpen=!0:n.taskClosed=!0,i.highlightFormatting&&(n.formatting="task"),n.taskList=!1,f(n)}if(n.taskOpen=!1,n.taskClosed=!1,n.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(n.formatting="header"),f(n);var l=e.sol(),g=e.next();if("\\"===g&&(e.next(),i.highlightFormatting)){var s=f(n);return s?s+" formatting-escape":"formatting-escape"}if(n.linkTitle){n.linkTitle=!1;var u=g;"("===g&&(u=")"),u=(u+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1");var m="^\\s*(?:[^"+u+"\\\\]+|\\\\\\\\|\\\\.)"+u;if(e.match(new RegExp(m),!0))return O}if("`"===g){var k=n.formatting;i.highlightFormatting&&(n.formatting="code");var p=f(n),v=e.pos;e.eatWhile("`");var x=1+e.pos-v;return n.code?x===b?(n.code=!1,p):(n.formatting=k,f(n)):(b=x,n.code=!0,f(n))}if(n.code)return f(n);if("!"===g&&e.match(/\[[^\]]*\] ?(?:\(|\[)/,!1))return e.match(/\[[^\]]*\]/),n.inline=n.f=d,B;if("["===g&&e.match(/.*\](\(.*\)| ?\[.*\])/,!1))return n.linkText=!0,i.highlightFormatting&&(n.formatting="link"),f(n);if("]"===g&&n.linkText&&e.match(/\(.*\)| ?\[.*\]/,!1)){i.highlightFormatting&&(n.formatting="link");var s=f(n);return n.linkText=!1,n.inline=n.f=d,s}if("<"===g&&e.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/,!1)){n.f=n.inline=c,i.highlightFormatting&&(n.formatting="link");var s=f(n);return s?s+=" ":s="",s+_}if("<"===g&&e.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/,!1)){n.f=n.inline=c,i.highlightFormatting&&(n.formatting="link");var s=f(n);return s?s+=" ":s="",s+$}if("<"===g&&e.match(/^\w/,!1)){if(-1!=e.string.indexOf(">")){var S=e.string.substring(1,e.string.indexOf(">"));/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(S)&&(n.md_inside=!0)}return e.backUp(1),n.htmlState=t.startState(F),a(e,n,h)}if("<"===g&&e.match(/^\/\w*?>/))return n.md_inside=!1,"tag";var L=!1;if(!i.underscoresBreakWords&&"_"===g&&"_"!==e.peek()&&e.match(/(\w)/,!1)){var q=e.pos-2;if(q>=0){var M=e.string.charAt(q);"_"!==M&&M.match(/(\w)/,!1)&&(L=!0)}}if("*"===g||"_"===g&&!L)if(l&&" "===e.peek());else{if(n.strong===g&&e.eat(g)){i.highlightFormatting&&(n.formatting="strong");var p=f(n);return n.strong=!1,p}if(!n.strong&&e.eat(g))return n.strong=g,i.highlightFormatting&&(n.formatting="strong"),f(n);if(n.em===g){i.highlightFormatting&&(n.formatting="em");var p=f(n);return n.em=!1,p}if(!n.em)return n.em=g,i.highlightFormatting&&(n.formatting="em"),f(n)}else if(" "===g&&(e.eat("*")||e.eat("_"))){if(" "===e.peek())return f(n);e.backUp(1)}if(i.strikethrough)if("~"===g&&e.eatWhile(g)){if(n.strikethrough){i.highlightFormatting&&(n.formatting="strikethrough");var p=f(n);return n.strikethrough=!1,p}if(e.match(/^[^\s]/,!1))return n.strikethrough=!0,i.highlightFormatting&&(n.formatting="strikethrough"),f(n)}else if(" "===g&&e.match(/^~~/,!0)){if(" "===e.peek())return f(n);e.backUp(2)}return" "===g&&(e.match(/ +$/,!1)?n.trailingSpace++:n.trailingSpace&&(n.trailingSpaceNewLine=!0)),f(n)}function c(t,e){var n=t.next();if(">"===n){e.f=e.inline=m,i.highlightFormatting&&(e.formatting="link");var r=f(e);return r?r+=" ":r="",r+_}return t.match(/^[^>]+/,!0),_}function d(t,e){if(t.eatSpace())return null;var n=t.next();return"("===n||"["===n?(e.f=e.inline=k("("===n?")":"]"),i.highlightFormatting&&(e.formatting="link-string"),e.linkHref=!0,f(e)):"error"}function k(t){return function(e,n){var r=e.next();if(r===t){n.f=n.inline=m,i.highlightFormatting&&(n.formatting="link-string");var a=f(n);return n.linkHref=!1,a}return e.match(S(t),!0)&&e.backUp(1),n.linkHref=!0,f(n)}}function p(t,e){return t.match(/^[^\]]*\]:/,!1)?(e.f=v,t.next(),i.highlightFormatting&&(e.formatting="link"),e.linkText=!0,f(e)):r(t,e,m)}function v(t,e){if(t.match(/^\]:/,!0)){e.f=e.inline=x,i.highlightFormatting&&(e.formatting="link");var n=f(e);return e.linkText=!1,n}return t.match(/^[^\]]+/,!0),N}function x(t,e){return t.eatSpace()?null:(t.match(/^[^\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/,!0),e.f=e.inline=m,O)}function S(t){return J[t]||(t=(t+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1"),J[t]=new RegExp("^(?:[^\\\\]|\\\\.)*?("+t+")")),J[t]}var L=t.modes.hasOwnProperty("xml"),F=t.getMode(e,L?{name:"xml",htmlMode:!0}:"text/plain");void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.underscoresBreakWords&&(i.underscoresBreakWords=!0),void 0===i.fencedCodeBlocks&&(i.fencedCodeBlocks=!1),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1);var b=0,q="header",M="comment",w="quote",C="variable-2",D="variable-3",H="keyword",T="hr",B="tag",y="formatting",_="link",$="link",N="link",O="string",j="em",E="strong",W="strikethrough",U=/^([*\-=_])(?:\s*\1){2,}\s*$/,R=/^[*\-+]\s+/,A=/^[0-9]+\.\s+/,I=/^\[(x| )\](?=\s)/,P=/^#+/,z=/^(?:\={1,}|-{1,})$/,G=/^[^#!\[\]*_\\<>` "'(~]+/,J=[],K={startState:function(){return{f:l,prevLineHasContent:!1,thisLineHasContent:!1,block:l,htmlState:null,indentation:0,inline:m,text:u,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,em:!1,strong:!1,header:0,taskList:!1,list:!1,listDepth:0,quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1}},copyState:function(e){return{f:e.f,prevLineHasContent:e.prevLineHasContent,thisLineHasContent:e.thisLineHasContent,block:e.block,htmlState:e.htmlState&&t.copyState(F,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkTitle:e.linkTitle,em:e.em,strong:e.strong,strikethrough:e.strikethrough,header:e.header,taskList:e.taskList,list:e.list,listDepth:e.listDepth,quote:e.quote,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside}},token:function(t,e){if(e.formatting=!1,t.sol()){var i=!!e.header;if(e.header=0,t.match(/^\s*$/,!0)||i)return e.prevLineHasContent=!1,o(e),i?this.token(t,e):null;e.prevLineHasContent=e.thisLineHasContent,e.thisLineHasContent=!0,e.taskList=!1,e.code=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,e.f=e.block;var n=t.match(/^\s*/,!0)[0].replace(/\t/g," ").length,r=4*Math.floor((n-e.indentation)/4);r>4&&(r=4);var a=e.indentation+r;if(e.indentationDiff=a-e.indentation,e.indentation=a,n>0)return null}return e.f(t,e)},innerMode:function(t){return t.block==h?{state:t.htmlState,mode:F}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:K}},blankLine:o,getType:f,fold:"markdown"};return K},"xml"),t.defineMIME("text/x-markdown","markdown")}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";function t(e){for(var t={},r=0;r")?(e.match("-->"),t.tokenize=null):e.skipToEnd(),["comment","comment"]}e.defineMode("css",function(t,r){function o(e,t){return m=t,e}function a(e,t){var r=e.next();if(b[r]){var a=b[r](e,t);if(a!==!1)return a}return"@"==r?(e.eatWhile(/[\w\\\-]/),o("def",e.current())):"="==r||("~"==r||"|"==r)&&e.eat("=")?o(null,"compare"):'"'==r||"'"==r?(t.tokenize=i(r),t.tokenize(e,t)):"#"==r?(e.eatWhile(/[\w\\\-]/),o("atom","hash")):"!"==r?(e.match(/^\s*\w*/),o("keyword","important")):/\d/.test(r)||"."==r&&e.eat(/\d/)?(e.eatWhile(/[\w.%]/),o("number","unit")):"-"!==r?/[,+>*\/]/.test(r)?o(null,"select-op"):"."==r&&e.match(/^-?[_a-z][_a-z0-9-]*/i)?o("qualifier","qualifier"):/[:;{}\[\]\(\)]/.test(r)?o(null,r):"u"==r&&e.match(/rl(-prefix)?\(/)||"d"==r&&e.match("omain(")||"r"==r&&e.match("egexp(")?(e.backUp(1),t.tokenize=n,o("property","word")):/[\w\\\-]/.test(r)?(e.eatWhile(/[\w\\\-]/),o("property","word")):o(null,null):/[\d.]/.test(e.peek())?(e.eatWhile(/[\w.%]/),o("number","unit")):e.match(/^-[\w\\\-]+/)?(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?o("variable-2","variable-definition"):o("variable-2","variable")):e.match(/^\w+-/)?o("meta","meta"):void 0}function i(e){return function(t,r){for(var a,i=!1;null!=(a=t.next());){if(a==e&&!i){")"==e&&t.backUp(1);break}i=!i&&"\\"==a}return(a==e||!i&&")"!=e)&&(r.tokenize=null),o("string","string")}}function n(e,t){return e.next(),e.match(/\s*[\"\')]/,!1)?t.tokenize=null:t.tokenize=i(")"),o(null,"(")}function l(e,t,r){this.type=e,this.indent=t,this.prev=r}function s(e,t,r){return e.context=new l(r,t.indentation()+g,e.context),r}function c(e){return e.context=e.context.prev,e.context.type}function d(e,t,r){return K[r.context.type](e,t,r)}function u(e,t,r,o){for(var a=o||1;a>0;a--)r.context=r.context.prev;return d(e,t,r)}function p(e){var t=e.current().toLowerCase();h=j.hasOwnProperty(t)?"atom":q.hasOwnProperty(t)?"keyword":"variable"}r.propertyKeywords||(r=e.resolveMode("text/css"));var m,h,g=t.indentUnit,b=r.tokenHooks,f=r.documentTypes||{},k=r.mediaTypes||{},y=r.mediaFeatures||{},w=r.propertyKeywords||{},v=r.nonStandardPropertyKeywords||{},x=r.fontProperties||{},z=r.counterDescriptors||{},q=r.colorKeywords||{},j=r.valueKeywords||{},P=r.allowNested,K={};return K.top=function(e,t,r){if("{"==e)return s(r,t,"block");if("}"==e&&r.context.prev)return c(r);if(/@(media|supports|(-moz-)?document)/.test(e))return s(r,t,"atBlock");if(/@(font-face|counter-style)/.test(e))return r.stateArg=e,"restricted_atBlock_before";if(/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(e))return"keyframes";if(e&&"@"==e.charAt(0))return s(r,t,"at");if("hash"==e)h="builtin";else if("word"==e)h="tag";else{if("variable-definition"==e)return"maybeprop";if("interpolation"==e)return s(r,t,"interpolation");if(":"==e)return"pseudo";if(P&&"("==e)return s(r,t,"parens")}return r.context.type},K.block=function(e,t,r){if("word"==e){var o=t.current().toLowerCase();return w.hasOwnProperty(o)?(h="property","maybeprop"):v.hasOwnProperty(o)?(h="string-2","maybeprop"):P?(h=t.match(/^\s*:(?:\s|$)/,!1)?"property":"tag","block"):(h+=" error","maybeprop")}return"meta"==e?"block":P||"hash"!=e&&"qualifier"!=e?K.top(e,t,r):(h="error","block")},K.maybeprop=function(e,t,r){return":"==e?s(r,t,"prop"):d(e,t,r)},K.prop=function(e,t,r){if(";"==e)return c(r);if("{"==e&&P)return s(r,t,"propBlock");if("}"==e||"{"==e)return u(e,t,r);if("("==e)return s(r,t,"parens");if("hash"!=e||/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(t.current())){if("word"==e)p(t);else if("interpolation"==e)return s(r,t,"interpolation")}else h+=" error";return"prop"},K.propBlock=function(e,t,r){return"}"==e?c(r):"word"==e?(h="property","maybeprop"):r.context.type},K.parens=function(e,t,r){return"{"==e||"}"==e?u(e,t,r):")"==e?c(r):"("==e?s(r,t,"parens"):"interpolation"==e?s(r,t,"interpolation"):("word"==e&&p(t),"parens")},K.pseudo=function(e,t,r){return"word"==e?(h="variable-3",r.context.type):d(e,t,r)},K.atBlock=function(e,t,r){if("("==e)return s(r,t,"atBlock_parens");if("}"==e)return u(e,t,r);if("{"==e)return c(r)&&s(r,t,P?"block":"top");if("word"==e){var o=t.current().toLowerCase();h="only"==o||"not"==o||"and"==o||"or"==o?"keyword":f.hasOwnProperty(o)?"tag":k.hasOwnProperty(o)?"attribute":y.hasOwnProperty(o)?"property":w.hasOwnProperty(o)?"property":v.hasOwnProperty(o)?"string-2":j.hasOwnProperty(o)?"atom":"error"}return r.context.type},K.atBlock_parens=function(e,t,r){return")"==e?c(r):"{"==e||"}"==e?u(e,t,r,2):K.atBlock(e,t,r)},K.restricted_atBlock_before=function(e,t,r){return"{"==e?s(r,t,"restricted_atBlock"):"word"==e&&"@counter-style"==r.stateArg?(h="variable","restricted_atBlock_before"):d(e,t,r)},K.restricted_atBlock=function(e,t,r){return"}"==e?(r.stateArg=null,c(r)):"word"==e?(h="@font-face"==r.stateArg&&!x.hasOwnProperty(t.current().toLowerCase())||"@counter-style"==r.stateArg&&!z.hasOwnProperty(t.current().toLowerCase())?"error":"property","maybeprop"):"restricted_atBlock"},K.keyframes=function(e,t,r){return"word"==e?(h="variable","keyframes"):"{"==e?s(r,t,"top"):d(e,t,r)},K.at=function(e,t,r){return";"==e?c(r):"{"==e||"}"==e?u(e,t,r):("word"==e?h="tag":"hash"==e&&(h="builtin"),"at")},K.interpolation=function(e,t,r){return"}"==e?c(r):"{"==e||";"==e?u(e,t,r):("variable"!=e&&(h="error"),"interpolation")},{startState:function(e){return{tokenize:null,state:"top",stateArg:null,context:new l("top",e||0,null)}},token:function(e,t){if(!t.tokenize&&e.eatSpace())return null;var r=(t.tokenize||a)(e,t);return r&&"object"==typeof r&&(m=r[1],r=r[0]),h=r,t.state=K[t.state](m,e,t),h},indent:function(e,t){var r=e.context,o=t&&t.charAt(0),a=r.indent;return"prop"!=r.type||"}"!=o&&")"!=o||(r=r.prev),!r.prev||("}"!=o||"block"!=r.type&&"top"!=r.type&&"interpolation"!=r.type&&"restricted_atBlock"!=r.type)&&(")"!=o||"parens"!=r.type&&"atBlock_parens"!=r.type)&&("{"!=o||"at"!=r.type&&"atBlock"!=r.type)||(a=r.indent-g,r=r.prev),a},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",fold:"brace"}});var a=["domain","regexp","url","url-prefix"],i=t(a),n=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],l=t(n),s=["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"],c=t(s),d=["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"],u=t(d),p=["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"],m=t(p),h=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],g=t(h),b=["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"],f=t(b),k=["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"],y=t(k),w=["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","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","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-resize","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","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","x-large","x-small","xor","xx-large","xx-small"],v=t(w),x=a.concat(n).concat(s).concat(d).concat(p).concat(k).concat(w);e.registerHelper("hintWords","css",x),e.defineMIME("text/css",{documentTypes:i,mediaTypes:l,mediaFeatures:c,propertyKeywords:u,nonStandardPropertyKeywords:m,fontProperties:g,counterDescriptors:f,colorKeywords:y,valueKeywords:v,tokenHooks:{"<":function(e,t){return e.match("!--")?(t.tokenize=o,o(e,t)):!1},"/":function(e,t){return e.eat("*")?(t.tokenize=r,r(e,t)):!1}},name:"css"}),e.defineMIME("text/x-scss",{mediaTypes:l,mediaFeatures:c,propertyKeywords:u,nonStandardPropertyKeywords:m,colorKeywords:y,valueKeywords:v,fontProperties:g,allowNested:!0,tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=r,r(e,t)):["operator","operator"]},":":function(e){return e.match(/\s*\{/)?[null,"{"]:!1},$:function(e){return e.match(/^[\w-]+/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"]},"#":function(e){return e.eat("{")?[null,"interpolation"]:!1}},name:"css",helperType:"scss"}),e.defineMIME("text/x-less",{mediaTypes:l,mediaFeatures:c,propertyKeywords:u,nonStandardPropertyKeywords:m,colorKeywords:y,valueKeywords:v,fontProperties:g,allowNested:!0,tokenHooks:{"/":function(e,t){return e.eat("/")?(e.skipToEnd(),["comment","comment"]):e.eat("*")?(t.tokenize=r,r(e,t)):["operator","operator"]},"@":function(e){return e.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/,!1)?!1:(e.eatWhile(/[\w\\\-]/),e.match(/^\s*:/,!1)?["variable-2","variable-definition"]:["variable-2","variable"])},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"})}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("shell",function(){function e(e,t){for(var n=t.split(" "),r=0;r1&&e.eat("$");var i=e.next(),o=/\w/;return"{"===i&&(o=/[^}]/),"("===i?(t.tokens[0]=n(")"),r(e,t)):(/\d/.test(i)||(e.eatWhile(o),e.eat("}")),t.tokens.shift(),"def")};return{startState:function(){return{tokens:[]}},token:function(e,t){return r(e,t)},lineComment:"#",fold:"brace"}}),e.defineMIME("text/x-sh","shell")}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";e.defineMode("sql",function(t,r){function a(e,t){var r=e.next();if(b[r]){var a=b[r](e,t);if(a!==!1)return a}if(1==p.hexNumber&&("0"==r&&e.match(/^[xX][0-9a-fA-F]+/)||("x"==r||"X"==r)&&e.match(/^'[0-9a-fA-F]+'/)))return"number";if(1==p.binaryNumber&&(("b"==r||"B"==r)&&e.match(/^'[01]+'/)||"0"==r&&e.match(/^b[01]+/)))return"number";if(r.charCodeAt(0)>47&&r.charCodeAt(0)<58)return e.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/),1==p.decimallessFloat&&e.eat("."),"number";if("?"==r&&(e.eatSpace()||e.eol()||e.eat(";")))return"variable-3";if("'"==r||'"'==r&&p.doubleQuote)return t.tokenize=n(r),t.tokenize(e,t);if((1==p.nCharCast&&("n"==r||"N"==r)||1==p.charsetCast&&"_"==r&&e.match(/[a-z][a-z0-9]*/i))&&("'"==e.peek()||'"'==e.peek()))return"keyword";if(/^[\(\),\;\[\]]/.test(r))return null;if(p.commentSlashSlash&&"/"==r&&e.eat("/"))return e.skipToEnd(),"comment";if(p.commentHash&&"#"==r||"-"==r&&e.eat("-")&&(!p.commentSpaceRequired||e.eat(" ")))return e.skipToEnd(),"comment";if("/"==r&&e.eat("*"))return t.tokenize=i,t.tokenize(e,t);if("."!=r){if(m.test(r))return e.eatWhile(m),null;if("{"==r&&(e.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/)||e.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/)))return"number";e.eatWhile(/^[_\w\d]/);var o=e.current().toLowerCase();return h.hasOwnProperty(o)&&(e.match(/^( )+'[^']*'/)||e.match(/^( )+"[^"]*"/))?"number":c.hasOwnProperty(o)?"atom":u.hasOwnProperty(o)?"builtin":d.hasOwnProperty(o)?"keyword":l.hasOwnProperty(o)?"string-2":null}return 1==p.zerolessFloat&&e.match(/^(?:\d+(?:e[+-]?\d+)?)/i)?"number":1==p.ODBCdotTable&&e.match(/^[a-zA-Z_]+/)?"variable-2":void 0}function n(e){return function(t,r){for(var n,i=!1;null!=(n=t.next());){if(n==e&&!i){r.tokenize=a;break}i=!i&&"\\"==n}return"string"}}function i(e,t){for(;;){if(!e.skipTo("*")){e.skipToEnd();break}if(e.next(),e.eat("/")){t.tokenize=a;break}}return"comment"}function o(e,t,r){t.context={prev:t.context,indent:e.indentation(),col:e.column(),type:r}}function s(e){e.indent=e.context.indent,e.context=e.context.prev}var l=r.client||{},c=r.atoms||{"false":!0,"true":!0,"null":!0},u=r.builtin||{},d=r.keywords||{},m=r.operatorChars||/^[*+\-%<>!=&|~^]/,p=r.support||{},b=r.hooks||{},h=r.dateSQL||{date:!0,time:!0,timestamp:!0};return{startState:function(){return{tokenize:a,context:null}},token:function(e,t){if(e.sol()&&t.context&&null==t.context.align&&(t.context.align=!1),e.eatSpace())return null;var r=t.tokenize(e,t);if("comment"==r)return r;t.context&&null==t.context.align&&(t.context.align=!0);var a=e.current();return"("==a?o(e,t,")"):"["==a?o(e,t,"]"):t.context&&t.context.type==a&&s(t),r},indent:function(r,a){var n=r.context;if(!n)return e.Pass;var i=a.charAt(0)==n.type;return n.align?n.col+(i?0:1):n.indent+(i?0:t.indentUnit)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:p.commentSlashSlash?"//":p.commentHash?"#":null}}),function(){function t(e){for(var t;null!=(t=e.next());)if("`"==t&&!e.eat("`"))return"variable-2";return e.backUp(e.current().length-1),e.eatWhile(/\w/)?"variable-2":null}function r(e){return e.eat("@")&&(e.match(/^session\./),e.match(/^local\./),e.match(/^global\./)),e.eat("'")?(e.match(/^.*'/),"variable-2"):e.eat('"')?(e.match(/^.*"/),"variable-2"):e.eat("`")?(e.match(/^.*`/),"variable-2"):e.match(/^[0-9a-zA-Z$\.\_]+/)?"variable-2":null}function a(e){return e.eat("N")?"atom":e.match(/^[a-zA-Z.#!?]/)?"variable-2":null}function n(e){for(var t={},r=e.split(" "),a=0;a!=]/,dateSQL:n("date time timestamp"),support:n("ODBCdotTable doubleQuote binaryNumber hexNumber")}),e.defineMIME("text/x-mssql",{name:"sql",client:n("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:n(i+"begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered"),builtin:n("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "),atoms:n("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:n("date datetimeoffset datetime2 smalldatetime datetime time"),hooks:{"@":r}}),e.defineMIME("text/x-mysql",{name:"sql",client:n("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:n(i+"accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group groupby_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:n("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:n("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:n("date time timestamp"),support:n("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":r,"`":t,"\\":a}}),e.defineMIME("text/x-mariadb",{name:"sql",client:n("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"),keywords:n(i+"accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"),builtin:n("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"),atoms:n("false true null unknown"),operatorChars:/^[*+\-%<>!=&|^]/,dateSQL:n("date time timestamp"),support:n("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"),hooks:{"@":r,"`":t,"\\":a}}),e.defineMIME("text/x-cassandra",{name:"sql",client:{},keywords:n("use select from using consistency where limit first reversed first and in insert into values using consistency ttl update set delete truncate begin batch apply create keyspace with columnfamily primary key index on drop alter type add any one quorum all local_quorum each_quorum"),builtin:n("ascii bigint blob boolean counter decimal double float int text timestamp uuid varchar varint"),atoms:n("false true"),operatorChars:/^[<>=]/,dateSQL:{},support:n("commentSlashSlash decimallessFloat"),hooks:{}}),e.defineMIME("text/x-plsql",{name:"sql",client:n("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"),keywords:n("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"),builtin:n("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least lenght lenghtb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"),operatorChars:/^[*+\-%<>!=~]/,dateSQL:n("date time timestamp"),support:n("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber")}),e.defineMIME("text/x-hive",{name:"sql",keywords:n("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"),builtin:n("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"),atoms:n("false true null unknown"),operatorChars:/^[*+\-%<>!=]/,dateSQL:n("date timestamp"),support:n("ODBCdotTable doubleQuote binaryNumber hexNumber")})}()}); +!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../lib/codemirror"),require("../addon/search/searchcursor"),require("../addon/dialog/dialog"),require("../addon/edit/matchbrackets.js")):"function"==typeof define&&define.amd?define(["../lib/codemirror","../addon/search/searchcursor","../addon/dialog/dialog","../addon/edit/matchbrackets"],e):e(CodeMirror)}(function(e){"use strict";var t=[{keys:"",type:"keyToKey",toKeys:"h"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"l"},{keys:"",type:"keyToKey",toKeys:"h",context:"normal"},{keys:"",type:"keyToKey",toKeys:"W"},{keys:"",type:"keyToKey",toKeys:"B",context:"normal"},{keys:"",type:"keyToKey",toKeys:"w"},{keys:"",type:"keyToKey",toKeys:"b",context:"normal"},{keys:"",type:"keyToKey",toKeys:"j"},{keys:"",type:"keyToKey",toKeys:"k"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"",type:"keyToKey",toKeys:"",context:"insert"},{keys:"s",type:"keyToKey",toKeys:"cl",context:"normal"},{keys:"s",type:"keyToKey",toKeys:"xi",context:"visual"},{keys:"S",type:"keyToKey",toKeys:"cc",context:"normal"},{keys:"S",type:"keyToKey",toKeys:"dcc",context:"visual"},{keys:"",type:"keyToKey",toKeys:"0"},{keys:"",type:"keyToKey",toKeys:"$"},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:""},{keys:"",type:"keyToKey",toKeys:"j^",context:"normal"},{keys:"H",type:"motion",motion:"moveToTopLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"M",type:"motion",motion:"moveToMiddleLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"L",type:"motion",motion:"moveToBottomLine",motionArgs:{linewise:!0,toJumplist:!0}},{keys:"h",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!1}},{keys:"l",type:"motion",motion:"moveByCharacters",motionArgs:{forward:!0}},{keys:"j",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,linewise:!0}},{keys:"k",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,linewise:!0}},{keys:"gj",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!0}},{keys:"gk",type:"motion",motion:"moveByDisplayLines",motionArgs:{forward:!1}},{keys:"w",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1}},{keys:"W",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!1,bigWord:!0}},{keys:"e",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,inclusive:!0}},{keys:"E",type:"motion",motion:"moveByWords",motionArgs:{forward:!0,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"b",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1}},{keys:"B",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1,bigWord:!0}},{keys:"ge",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,inclusive:!0}},{keys:"gE",type:"motion",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!0,bigWord:!0,inclusive:!0}},{keys:"{",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!1,toJumplist:!0}},{keys:"}",type:"motion",motion:"moveByParagraph",motionArgs:{forward:!0,toJumplist:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!0}},{keys:"",type:"motion",motion:"moveByPage",motionArgs:{forward:!1}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!0,explicitRepeat:!0}},{keys:"",type:"motion",motion:"moveByScroll",motionArgs:{forward:!1,explicitRepeat:!0}},{keys:"gg",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!1,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"G",type:"motion",motion:"moveToLineOrEdgeOfDocument",motionArgs:{forward:!0,explicitRepeat:!0,linewise:!0,toJumplist:!0}},{keys:"0",type:"motion",motion:"moveToStartOfLine"},{keys:"^",type:"motion",motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"+",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0}},{keys:"-",type:"motion",motion:"moveByLines",motionArgs:{forward:!1,toFirstChar:!0}},{keys:"_",type:"motion",motion:"moveByLines",motionArgs:{forward:!0,toFirstChar:!0,repeatOffset:-1}},{keys:"$",type:"motion",motion:"moveToEol",motionArgs:{inclusive:!0}},{keys:"%",type:"motion",motion:"moveToMatchedSymbol",motionArgs:{inclusive:!0,toJumplist:!0}},{keys:"f",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"F",type:"motion",motion:"moveToCharacter",motionArgs:{forward:!1}},{keys:"t",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!0,inclusive:!0}},{keys:"T",type:"motion",motion:"moveTillCharacter",motionArgs:{forward:!1}},{keys:";",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!0}},{keys:",",type:"motion",motion:"repeatLastCharacterSearch",motionArgs:{forward:!1}},{keys:"'",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0,linewise:!0}},{keys:"`",type:"motion",motion:"goToMark",motionArgs:{toJumplist:!0}},{keys:"]`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0}},{keys:"[`",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1}},{keys:"]'",type:"motion",motion:"jumpToMark",motionArgs:{forward:!0,linewise:!0}},{keys:"['",type:"motion",motion:"jumpToMark",motionArgs:{forward:!1,linewise:!0}},{keys:"]p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0,matchIndent:!0}},{keys:"[p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0,matchIndent:!0}},{keys:"]",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!0,toJumplist:!0}},{keys:"[",type:"motion",motion:"moveToSymbol",motionArgs:{forward:!1,toJumplist:!0}},{keys:"|",type:"motion",motion:"moveToColumn"},{keys:"o",type:"motion",motion:"moveToOtherHighlightedEnd",context:"visual"},{keys:"O",type:"motion",motion:"moveToOtherHighlightedEnd",motionArgs:{sameLine:!0},context:"visual"},{keys:"d",type:"operator",operator:"delete"},{keys:"y",type:"operator",operator:"yank"},{keys:"c",type:"operator",operator:"change"},{keys:">",type:"operator",operator:"indent",operatorArgs:{indentRight:!0}},{keys:"<",type:"operator",operator:"indent",operatorArgs:{indentRight:!1}},{keys:"g~",type:"operator",operator:"changeCase"},{keys:"gu",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},isEdit:!0},{keys:"gU",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},isEdit:!0},{keys:"n",type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:!0}},{keys:"N",type:"motion",motion:"findNext",motionArgs:{forward:!1,toJumplist:!0}},{keys:"x",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!0},operatorMotionArgs:{visualLine:!1}},{keys:"X",type:"operatorMotion",operator:"delete",motion:"moveByCharacters",motionArgs:{forward:!1},operatorMotionArgs:{visualLine:!0}},{keys:"D",type:"operatorMotion",operator:"delete",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"D",type:"operator",operator:"delete",operatorArgs:{linewise:!0},context:"visual"},{keys:"Y",type:"operatorMotion",operator:"yank",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"Y",type:"operator",operator:"yank",operatorArgs:{linewise:!0},context:"visual"},{keys:"C",type:"operatorMotion",operator:"change",motion:"moveToEol",motionArgs:{inclusive:!0},context:"normal"},{keys:"C",type:"operator",operator:"change",operatorArgs:{linewise:!0},context:"visual"},{keys:"~",type:"operatorMotion",operator:"changeCase",motion:"moveByCharacters",motionArgs:{forward:!0},operatorArgs:{shouldMoveCursor:!0},context:"normal"},{keys:"~",type:"operator",operator:"changeCase",context:"visual"},{keys:"",type:"operatorMotion",operator:"delete",motion:"moveByWords",motionArgs:{forward:!1,wordEnd:!1},context:"insert"},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!0}},{keys:"",type:"action",action:"jumpListWalk",actionArgs:{forward:!1}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!0,linewise:!0}},{keys:"",type:"action",action:"scroll",actionArgs:{forward:!1,linewise:!0}},{keys:"a",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"charAfter"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"eol"},context:"normal"},{keys:"A",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"endOfSelectedArea"},context:"visual"},{keys:"i",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"inplace"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"firstNonBlank"},context:"normal"},{keys:"I",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{insertAt:"startOfSelectedArea"},context:"visual"},{keys:"o",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!0},context:"normal"},{keys:"O",type:"action",action:"newLineAndEnterInsertMode",isEdit:!0,interlaceInsertRepeat:!0,actionArgs:{after:!1},context:"normal"},{keys:"v",type:"action",action:"toggleVisualMode"},{keys:"V",type:"action",action:"toggleVisualMode",actionArgs:{linewise:!0}},{keys:"",type:"action",action:"toggleVisualMode",actionArgs:{blockwise:!0}},{keys:"gv",type:"action",action:"reselectLastSelection"},{keys:"J",type:"action",action:"joinLines",isEdit:!0},{keys:"p",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!0,isEdit:!0}},{keys:"P",type:"action",action:"paste",isEdit:!0,actionArgs:{after:!1,isEdit:!0}},{keys:"r",type:"action",action:"replace",isEdit:!0},{keys:"@",type:"action",action:"replayMacro"},{keys:"q",type:"action",action:"enterMacroRecordMode"},{keys:"R",type:"action",action:"enterInsertMode",isEdit:!0,actionArgs:{replace:!0}},{keys:"u",type:"action",action:"undo",context:"normal"},{keys:"u",type:"operator",operator:"changeCase",operatorArgs:{toLower:!0},context:"visual",isEdit:!0},{keys:"U",type:"operator",operator:"changeCase",operatorArgs:{toLower:!1},context:"visual",isEdit:!0},{keys:"",type:"action",action:"redo"},{keys:"m",type:"action",action:"setMark"},{keys:'"',type:"action",action:"setRegister"},{keys:"zz",type:"action",action:"scrollToCursor",actionArgs:{position:"center"}},{keys:"z.",type:"action",action:"scrollToCursor",actionArgs:{position:"center"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"zt",type:"action",action:"scrollToCursor",actionArgs:{position:"top"}},{keys:"z",type:"action",action:"scrollToCursor",actionArgs:{position:"top"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:"z-",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"}},{keys:"zb",type:"action",action:"scrollToCursor",actionArgs:{position:"bottom"},motion:"moveToFirstNonWhiteSpaceCharacter"},{keys:".",type:"action",action:"repeatLastEdit"},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!0,backtrack:!1}},{keys:"",type:"action",action:"incrementNumberToken",isEdit:!0,actionArgs:{increase:!1,backtrack:!1}},{keys:"a",type:"motion",motion:"textObjectManipulation"},{keys:"i",type:"motion",motion:"textObjectManipulation",motionArgs:{textObjectInner:!0}},{keys:"/",type:"search",searchArgs:{forward:!0,querySrc:"prompt",toJumplist:!0}},{keys:"?",type:"search",searchArgs:{forward:!1,querySrc:"prompt",toJumplist:!0}},{keys:"*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",wholeWordOnly:!0,toJumplist:!0}},{keys:"g*",type:"search",searchArgs:{forward:!0,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:"g#",type:"search",searchArgs:{forward:!1,querySrc:"wordUnderCursor",toJumplist:!0}},{keys:":",type:"ex"}],r=e.Pos,n=function(){function n(t){t.setOption("disableInput",!0),t.setOption("showCursorWhenSelecting",!1),e.signal(t,"vim-mode-change",{mode:"normal"}),t.on("cursorActivity",Ye),x(t),e.on(t.getInputField(),"paste",c(t))}function o(t){t.setOption("disableInput",!1),t.off("cursorActivity",Ye),e.off(t.getInputField(),"paste",c(t)),t.state.vim=null}function i(t,r){this==e.keyMap.vim&&e.rmClass(t.getWrapperElement(),"cm-fat-cursor"),r&&r.attach==a||o(t,!1)}function a(t,r){this==e.keyMap.vim&&e.addClass(t.getWrapperElement(),"cm-fat-cursor"),r&&r.attach==a||n(t)}function s(t,r){if(r){var n=l(t);if(!n)return!1;var o=e.Vim.findKey(r,n);return"function"==typeof o&&e.signal(r,"vim-keypress",n),o}}function l(e){if("'"==e.charAt(0))return e.charAt(1);var t=e.split("-");/-$/.test(e)&&t.splice(-2,2,"-");var r=t[t.length-1];if(1==t.length&&1==t[0].length)return!1;if(2==t.length&&"Shift"==t[0]&&1==r.length)return!1;for(var n=!1,o=0;o"):!1}function c(e){var t=e.state.vim;return t.onPasteFn||(t.onPasteFn=function(){t.insertMode||(e.setCursor(N(e.getCursor(),0,1)),St.enterInsertMode(e,{},t))}),t.onPasteFn}function u(e,t){for(var r=[],n=e;e+t>n;n++)r.push(String.fromCharCode(n));return r}function h(e,t){return t>=e.firstLine()&&t<=e.lastLine()}function p(e){return/^[a-z]$/.test(e)}function d(e){return-1!="()[]{}".indexOf(e)}function f(e){return st.test(e)}function m(e){return/^[A-Z]$/.test(e)}function v(e){return/^\s*$/.test(e)}function g(e,t){for(var r=0;rn;n++)r.push(e);return r}function B(e,t){Mt[e]=t}function I(e,t){St[e]=t}function O(e,t,n){var o=Math.min(Math.max(e.firstLine(),t.line),e.lastLine()),i=q(e,o)-1;i=n?i+1:i;var a=Math.min(Math.max(0,t.ch),i);return r(o,a)}function K(e){var t={};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}function N(e,t,n){return"object"==typeof t&&(n=t.ch,t=t.line),r(e.line+t,e.ch+n)}function P(e,t){return{line:t.line-e.line,ch:t.line-e.line}}function j(e,t,r,n){for(var o,i=[],a=[],s=0;s"==t.slice(-11)){var r=t.length-11,n=e.slice(0,r),o=t.slice(0,r);return n==o&&e.length>r?"full":0==o.indexOf(n)?"partial":!1}return e==t?"full":0==t.indexOf(e)?"partial":!1}function F(e){var t=/^.*(<[\w\-]+>)$/.exec(e),r=t?t[1]:e.slice(-1);if(r.length>1)switch(r){case"":r="\n";break;case"":r=" "}return r}function W(e,t,r){return function(){for(var n=0;r>n;n++)t(e)}}function D(e){return r(e.line,e.ch)}function _(e,t){return e.ch==t.ch&&e.line==t.line}function V(e,t){return e.line2&&(t=J.apply(void 0,Array.prototype.slice.call(arguments,1))),V(e,t)?e:t}function U(e,t){return arguments.length>2&&(t=U.apply(void 0,Array.prototype.slice.call(arguments,1))),V(e,t)?t:e}function $(e,t,r){var n=V(e,t),o=V(t,r);return n&&o}function q(e,t){return e.getLine(t).length}function Q(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function z(e){return e.replace(/([.?*+$\[\]\/\\(){}|\-])/g,"\\$1")}function Z(e,t,n){var o=q(e,t),i=new Array(n-o+1).join(" ");e.setCursor(r(t,o)),e.replaceRange(i,e.getCursor())}function G(e,t){var n=[],o=e.listSelections(),i=D(e.clipPos(t)),a=!_(t,i),s=e.getCursor("head"),l=X(o,s),c=_(o[l].head,o[l].anchor),u=o.length-1,h=u-l>l?u:0,p=o[h].anchor,d=Math.min(p.line,i.line),f=Math.max(p.line,i.line),m=p.ch,v=i.ch,g=o[h].head.ch-m,y=v-m;g>0&&0>=y?(m++,a||v--):0>g&&y>=0?(m--,c||v++):0>g&&-1==y&&(m--,v++);for(var k=d;f>=k;k++){var C={anchor:new r(k,m),head:new r(k,v)};n.push(C)}return l=i.line==f?n.length-1:0,e.setSelections(n),t.ch=v,p.ch=m,p}function Y(e,t,r){for(var n=[],o=0;r>o;o++){var i=N(t,o,0);n.push({anchor:i,head:i})}e.setSelections(n,0)}function X(e,t,r){for(var n=0;nc&&(i.line=c),i.ch=q(e,i.line)}return{ranges:[{anchor:a,head:i}],primary:0}}if("block"==n){for(var u=Math.min(a.line,i.line),h=Math.min(a.ch,i.ch),p=Math.max(a.line,i.line),d=Math.max(a.ch,i.ch)+1,f=p-u+1,m=i.line==u?0:f-1,v=[],g=0;f>g;g++)v.push({anchor:r(u+g,h),head:r(u+g,d)});return{ranges:v,primary:m}}}function ie(e){var t=e.getCursor("head");return 1==e.getSelection().length&&(t=J(t,e.getCursor("anchor"))),t}function ae(t,r){var n=t.state.vim;r!==!1&&t.setCursor(O(t,n.sel.head)),te(t,n),n.visualMode=!1,n.visualLine=!1,n.visualBlock=!1,e.signal(t,"vim-mode-change",{mode:"normal"}),n.fakeCursor&&n.fakeCursor.clear()}function se(e,t,r){var n=e.getRange(t,r);if(/\n\s*$/.test(n)){var o=n.split("\n");o.pop();for(var i,i=o.pop();o.length>0&&i&&v(i);i=o.pop())r.line--,r.ch=0;i?(r.line--,r.ch=q(e,r.line)):r.ch=0}}function le(e,t,r){t.ch=0,r.ch=0,r.line++}function ce(e){if(!e)return 0;var t=e.search(/\S/);return-1==t?e.length:t}function ue(e,t,n,o,i){for(var a=ie(e),s=e.getLine(a.line),l=a.ch,c=i?lt[0]:ct[0];!c(s.charAt(l));)if(l++,l>=s.length)return null;o?c=ct[0]:(c=lt[0],c(s.charAt(l))||(c=lt[1]));for(var u=l,h=l;c(s.charAt(u))&&u=0;)h--;if(h++,t){for(var p=u;/\s/.test(s.charAt(u))&&u0;)h--;h||(h=d)}}return{start:r(a.line,h),end:r(a.line,u)}}function he(e,t,r){_(t,r)||yt.jumpList.add(e,t,r)}function pe(e,t){yt.lastChararacterSearch.increment=e,yt.lastChararacterSearch.forward=t.forward,yt.lastChararacterSearch.selectedCharacter=t.selectedCharacter}function de(e,t,n,o){var i=D(e.getCursor()),a=n?1:-1,s=n?e.lineCount():-1,l=i.ch,c=i.line,u=e.getLine(c),h={lineText:u,nextCh:u.charAt(l),lastCh:null,index:l,symb:o,reverseSymb:(n?{")":"(","}":"{"}:{"(":")","{":"}"})[o],forward:n,depth:0,curMoveThrough:!1},p=At[o];if(!p)return i;var d=bt[p].init,f=bt[p].isComplete;for(d&&d(h);c!==s&&t;){if(h.index+=a,h.nextCh=h.lineText.charAt(h.index),!h.nextCh){if(c+=a,h.lineText=e.getLine(c)||"",a>0)h.index=0;else{var m=h.lineText.length;h.index=m>0?m-1:0}h.nextCh=h.lineText.charAt(h.index)}f(h)&&(i.line=c,i.ch=h.index,t--)}return h.nextCh||h.curMoveThrough?r(c,h.index):i}function fe(e,t,r,n,o){var i=t.line,a=t.ch,s=e.getLine(i),l=r?1:-1,c=n?ct:lt;if(o&&""==s){if(i+=l,s=e.getLine(i),!h(e,i))return null;a=r?0:s.length}for(;;){if(o&&""==s)return{from:0,to:0,line:i};for(var u=l>0?s.length:-1,p=u,d=u;a!=u;){for(var f=!1,m=0;m0?0:s.length}throw new Error("The impossible happened.")}function me(e,t,n,o,i,a){var s=D(t),l=[];(o&&!i||!o&&i)&&n++;for(var c=!(o&&i),u=0;n>u;u++){var h=fe(e,t,o,a,c);if(!h){var p=q(e,e.lastLine());l.push(o?{line:e.lastLine(),from:p,to:p}:{line:0,from:0,to:0});break}l.push(h),t=r(h.line,o?h.to-1:h.from)}var d=l.length!=n,f=l[0],m=l.pop();return o&&!i?(d||f.from==s.ch&&f.line==s.line||(m=l.pop()),r(m.line,m.from)):o&&i?r(m.line,m.to-1):!o&&i?(d||f.to==s.ch&&f.line==s.line||(m=l.pop()),r(m.line,m.to)):r(m.line,m.from)}function ve(e,t,n,o){for(var i,a=e.getCursor(),s=a.ch,l=0;t>l;l++){var c=e.getLine(a.line);if(i=ke(s,c,o,n,!0),-1==i)return null;s=i}return r(e.getCursor().line,i)}function ge(e,t){var n=e.getCursor().line;return O(e,r(n,t-1))}function ye(e,t,r,n){g(r,dt)&&(t.marks[r]&&t.marks[r].clear(),t.marks[r]=e.setBookmark(n))}function ke(e,t,r,n,o){var i;return n?(i=t.indexOf(r,e+1),-1==i||o||(i-=1)):(i=t.lastIndexOf(r,e-1),-1==i||o||(i+=1)),i}function Ce(e,t,n,o,i){function a(t){return!e.getLine(t)}function s(e,t,r){return r?a(e)!=a(e+t):!a(e)&&a(e+t)}var l,c,u=t.line,h=e.firstLine(),p=e.lastLine(),d=u;if(o){for(;d>=h&&p>=d&&n>0;)s(d,o)&&n--,d+=o;return new r(d,0)}var f=e.state.vim;if(f.visualLine&&s(u,1,!0)){var m=f.sel.anchor;s(m.line,-1,!0)&&(i&&m.line==u||(u+=1))}var v=a(u);for(d=u;p>=d&&n;d++)s(d,1,!0)&&(i&&a(d)==v||n--);for(c=new r(d,0),d>p&&!v?v=!0:i=!1,d=u;d>h&&(i&&a(d)!=v&&d!=u||!s(d,-1,!0));d--);return l=new r(d,0),{start:l,end:c}}function we(e,t,n,o){var i,a,s=t,l={"(":/[()]/,")":/[()]/,"[":/[[\]]/,"]":/[[\]]/,"{":/[{}]/,"}":/[{}]/}[n],c={"(":"(",")":"(","[":"[","]":"[","{":"{","}":"{"}[n],u=e.getLine(s.line).charAt(s.ch),h=u===c?1:0;if(i=e.scanForBracket(r(s.line,s.ch+h),-1,null,{bracketRegex:l}),a=e.scanForBracket(r(s.line,s.ch+h),1,null,{bracketRegex:l}),!i||!a)return{start:s,end:s};if(i=i.pos,a=a.pos,i.line==a.line&&i.ch>a.ch||i.line>a.line){var p=i;i=a,a=p}return o?a.ch+=1:i.ch+=1,{start:i,end:a}}function xe(e,t,n,o){var i,a,s,l,c=D(t),u=e.getLine(c.line),h=u.split(""),p=h.indexOf(n);if(c.ch-1&&!i;s--)h[s]==n&&(i=s+1);else i=c.ch+1;if(i&&!a)for(s=i,l=h.length;l>s&&!a;s++)h[s]==n&&(a=s);return i&&a?(o&&(--i,++a),{start:r(c.line,i),end:r(c.line,a)}):{start:c,end:c}}function Me(){}function Se(e){var t=e.state.vim;return t.searchState_||(t.searchState_=new Me)}function Ae(e,t,r,n,o){e.openDialog?e.openDialog(t,n,{bottom:!0,value:o.value,onKeyDown:o.onKeyDown,onKeyUp:o.onKeyUp,selectValueOnOpen:!1}):n(prompt(r,""))}function be(e){var t=Le(e)||[];if(!t.length)return[];var r=[];if(0===t[0]){for(var n=0;n'+t+"",{bottom:!0,duration:5e3}):alert(t)}function Oe(e,t){var r="";return e&&(r+=''+e+""),r+=' ',t&&(r+='',r+=t,r+=""),r}function Ke(e,t){var r=(t.prefix||"")+" "+(t.desc||""),n=Oe(t.prefix,t.desc);Ae(e,n,r,t.onClose,t)}function Ne(e,t){if(e instanceof RegExp&&t instanceof RegExp){for(var r=["global","multiline","ignoreCase","source"],n=0;ns;s++){var l=a.find(t);if(0==s&&l&&_(a.from(),i)&&(l=a.find(t)),!l&&(a=e.getSearchCursor(n,t?r(e.lastLine()):r(e.firstLine(),0)),!a.find(t)))return}return a.from()})}function We(e){var t=Se(e);e.removeOverlay(Se(e).getOverlay()),t.setOverlay(null),t.getScrollbarAnnotate()&&(t.getScrollbarAnnotate().clear(),t.setScrollbarAnnotate(null))}function De(e,t,r){return"number"!=typeof e&&(e=e.line),t instanceof Array?g(e,t):r?e>=t&&r>=e:e==t}function _e(e){var t=e.getScrollInfo(),r=6,n=10,o=e.coordsChar({left:0,top:r+t.top},"local"),i=t.clientHeight-n+t.top,a=e.coordsChar({left:0,top:i},"local");return{top:o.line,bottom:a.line}}function Ve(t,r,n,o,i,a,s,l,c){function u(){t.operation(function(){for(;!m;)h(),p();d()})}function h(){var e=t.getRange(a.from(),a.to()),r=e.replace(s,l);a.replace(r)}function p(){for(var e;e=a.findNext()&&De(a.from(),o,i);)if(n||!v||a.from().line!=v.line)return t.scrollIntoView(a.from(),30),t.setSelection(a.from(),a.to()),v=a.from(),void(m=!1);m=!0}function d(e){if(e&&e(),t.focus(),v){t.setCursor(v);var r=t.state.vim;r.exMode=!1,r.lastHPos=r.lastHSPos=v.ch}c&&c()}function f(r,n,o){e.e_stop(r);var i=e.keyName(r);switch(i){case"Y":h(),p();break;case"N":p();break;case"A":var a=c;c=void 0,t.operation(u),c=a;break;case"L":h();case"Q":case"Esc":case"Ctrl-C":case"Ctrl-[":d(o)}return m&&d(o),!0}t.state.vim.exMode=!0;var m=!1,v=a.from();return p(),m?void Ie(t,"No matches for "+s.source):r?void Ke(t,{prefix:"replace with "+l+" (y/n/a/q/l)",onKeyDown:f}):(u(),void(c&&c()))}function Je(t){var r=t.state.vim,n=yt.macroModeState,o=yt.registerController.getRegister("."),i=n.isPlaying,a=n.lastInsertModeChanges,s=[];if(!i){for(var l=a.inVisualBlock?r.lastSelection.visualBlock.height:1,c=a.changes,s=[],u=0;u1&&(nt(t,r,r.insertModeRepeat-1,!0),r.lastEditInputState.repeatOverride=r.insertModeRepeat),delete r.insertModeRepeat,r.insertMode=!1,t.setCursor(t.getCursor().line,t.getCursor().ch-1),t.setOption("keyMap","vim"),t.setOption("disableInput",!0),t.toggleOverwrite(!1),o.setText(a.changes.join("")),e.signal(t,"vim-mode-change",{mode:"normal"}),n.isRecording&&ze(n)}function Ue(e){t.push(e)}function $e(e,t,r,n,o){var i={keys:e,type:t};i[t]=r,i[t+"Args"]=n;for(var a in o)i[a]=o[a];Ue(i)}function qe(t,r,n,o){var i=yt.registerController.getRegister(o),a=i.keyBuffer,s=0;n.isPlaying=!0,n.replaySearchQueries=i.searchQueries.slice(0);for(var l=0;l|<\w+>|./.exec(h),u=c[0],h=h.substring(c.index+u.length),e.Vim.handleKey(t,u,"macro"),r.insertMode){var p=i.insertModeChanges[s++].changes;yt.macroModeState.lastInsertModeChanges.changes=p,ot(t,p,1),Je(t)}n.isPlaying=!1}function Qe(e,t){if(!e.isPlaying){var r=e.latestRegister,n=yt.registerController.getRegister(r);n&&n.pushText(t)}}function ze(e){if(!e.isPlaying){var t=e.latestRegister,r=yt.registerController.getRegister(t);r&&r.pushInsertModeChanges(e.lastInsertModeChanges)}}function Ze(e,t){if(!e.isPlaying){var r=e.latestRegister,n=yt.registerController.getRegister(r);n&&n.pushSearchQuery(t)}}function Ge(e,t){var r=yt.macroModeState,n=r.lastInsertModeChanges;if(!r.isPlaying)for(;t;){if(n.expectCursorActivityForChange=!0,"+input"==t.origin||"paste"==t.origin||void 0===t.origin){var o=t.text.join("\n");n.changes.push(o)}t=t.next}}function Ye(e){var t=e.state.vim;if(t.insertMode){var r=yt.macroModeState;if(r.isPlaying)return;var n=r.lastInsertModeChanges;n.expectCursorActivityForChange?n.expectCursorActivityForChange=!1:n.changes=[]}else e.curOp.isVimOp||et(e,t);t.visualMode&&Xe(e)}function Xe(e){var t=e.state.vim,r=D(t.sel.head),n=N(r,0,1);t.fakeCursor&&t.fakeCursor.clear(),t.fakeCursor=e.markText(r,n,{className:"cm-animate-fat-cursor"})}function et(t,r){var n=t.getCursor("anchor"),o=t.getCursor("head");if(r.visualMode&&!t.somethingSelected()?ae(t,!1):r.visualMode||r.insertMode||!t.somethingSelected()||(r.visualMode=!0,r.visualLine=!1,e.signal(t,"vim-mode-change",{mode:"visual"})),r.visualMode){var i=V(o,n)?0:-1,a=V(o,n)?-1:0;o=N(o,0,i),n=N(n,0,a),r.sel={anchor:n,head:o},ye(t,r,"<",J(o,n)), +ye(t,r,">",U(o,n))}else r.insertMode||(r.lastHPos=t.getCursor().ch)}function tt(e){this.keyName=e}function rt(t){function r(){return o.changes.push(new tt(i)),!0}var n=yt.macroModeState,o=n.lastInsertModeChanges,i=e.keyName(t);i&&(-1!=i.indexOf("Delete")||-1!=i.indexOf("Backspace"))&&e.lookupKey(i,"vim-insert",r)}function nt(e,t,r,n){function o(){s?wt.processAction(e,t,t.lastEditActionCommand):wt.evalInput(e,t)}function i(r){if(a.lastInsertModeChanges.changes.length>0){r=t.lastEditActionCommand?r:1;var n=a.lastInsertModeChanges;ot(e,n.changes,r)}}var a=yt.macroModeState;a.isPlaying=!0;var s=!!t.lastEditActionCommand,l=t.inputState;if(t.inputState=t.lastEditInputState,s&&t.lastEditActionCommand.interlaceInsertRepeat)for(var c=0;r>c;c++)o(),i(1);else n||o(),i(r);t.inputState=l,t.insertMode&&!n&&Je(e),a.isPlaying=!1}function ot(t,r,n){function o(r){return"string"==typeof r?e.commands[r](t):r(t),!0}var i=t.getCursor("head"),a=yt.macroModeState.lastInsertModeChanges.inVisualBlock;if(a){var s=t.state.vim,l=s.lastSelection,c=P(l.anchor,l.head);Y(t,i,c.line+1),n=t.listSelections().length,t.setCursor(i)}for(var u=0;n>u;u++){a&&t.setCursor(N(i,u,0));for(var h=0;h"]),ft=[].concat(ut,ht,pt,["-",'"',".",":","/"]),mt={},vt=function(){function e(e,t,s){function l(t){var o=++n%r,i=a[o];i&&i.clear(),a[o]=e.setBookmark(t)}var c=n%r,u=a[c];if(u){var h=u.find();h&&!_(h,t)&&l(t)}else l(t);l(s),o=n,i=n-r+1,0>i&&(i=0)}function t(e,t){n+=t,n>o?n=o:i>n&&(n=i);var s=a[(r+n)%r];if(s&&!s.find()){var l,c=t>0?1:-1,u=e.getCursor();do if(n+=c,s=a[(r+n)%r],s&&(l=s.find())&&!_(u,l))break;while(o>n&&n>i)}return s}var r=100,n=-1,o=0,i=0,a=new Array(r);return{cachedCursor:void 0,add:e,move:t}},gt=function(e){return e?{changes:e.changes,expectCursorActivityForChange:e.expectCursorActivityForChange}:{changes:[],expectCursorActivityForChange:!1}};w.prototype={exitMacroRecordMode:function(){var e=yt.macroModeState;e.onRecordingDone&&e.onRecordingDone(),e.onRecordingDone=void 0,e.isRecording=!1},enterMacroRecordMode:function(e,t){var r=yt.registerController.getRegister(t);r&&(r.clear(),this.latestRegister=t,e.openDialog&&(this.onRecordingDone=e.openDialog("(recording)["+t+"]",null,{bottom:!0})),this.isRecording=!0)}};var yt,kt,Ct={buildKeyMap:function(){},getRegisterController:function(){return yt.registerController},resetVimGlobalState_:M,getVimGlobalState_:function(){return yt},maybeInitVimState_:x,suppressErrorLogging:!1,InsertModeKey:tt,map:function(e,t,r){Bt.map(e,t,r)},setOption:k,getOption:C,defineOption:y,defineEx:function(e,t,r){if(0!==e.indexOf(t))throw new Error('(Vim.defineEx) "'+t+'" is not a prefix of "'+e+'", command not registered');Et[e]=r,Bt.commandMap_[t]={name:e,shortName:t,type:"api"}},handleKey:function(e,t,r){var n=this.findKey(e,t,r);return"function"==typeof n?n():void 0},findKey:function(r,n,o){function i(){var e=yt.macroModeState;if(e.isRecording){if("q"==n)return e.exitMacroRecordMode(),A(r),!0;"mapping"!=o&&Qe(e,n)}}function a(){return""==n?(A(r),h.visualMode?ae(r):h.insertMode&&Je(r),!0):void 0}function s(t){for(var o;t;)o=/<\w+-.+?>|<\w+>|./.exec(t),n=o[0],t=t.substring(o.index+n.length),e.Vim.handleKey(r,n,"mapping")}function l(){if(a())return!0;for(var e=h.inputState.keyBuffer=h.inputState.keyBuffer+n,o=1==n.length,i=wt.matchCommand(e,t,h.inputState,"insert");e.length>1&&"full"!=i.type;){var e=h.inputState.keyBuffer=e.slice(1),s=wt.matchCommand(e,t,h.inputState,"insert");"none"!=s.type&&(i=s)}if("none"==i.type)return A(r),!1;if("partial"==i.type)return kt&&window.clearTimeout(kt),kt=window.setTimeout(function(){h.insertMode&&h.inputState.keyBuffer&&A(r)},C("insertModeEscKeysTimeout")),!o;if(kt&&window.clearTimeout(kt),o){var l=r.getCursor();r.replaceRange("",N(l,0,-(e.length-1)),l,"+input")}return A(r),i.command}function c(){if(i()||a())return!0;var e=h.inputState.keyBuffer=h.inputState.keyBuffer+n;if(/^[1-9]\d*$/.test(e))return!0;var o=/^(\d*)(.*)$/.exec(e);if(!o)return A(r),!1;var s=h.visualMode?"visual":"normal",l=wt.matchCommand(o[2]||o[1],t,h.inputState,s);if("none"==l.type)return A(r),!1;if("partial"==l.type)return!0;h.inputState.keyBuffer="";var o=/^(\d*)(.*)$/.exec(e);return o[1]&&"0"!=o[1]&&h.inputState.pushRepeatDigit(o[1]),l.command}var u,h=x(r);return u=h.insertMode?l():c(),u===!1?void 0:u===!0?function(){}:function(){return r.operation(function(){r.curOp.isVimOp=!0;try{"keyToKey"==u.type?s(u.toKeys):wt.processCommand(r,h,u)}catch(t){throw r.state.vim=void 0,x(r),e.Vim.suppressErrorLogging||console.log(t),t}return!0})}},handleEx:function(e,t){Bt.processCommand(e,t)},defineMotion:R,defineAction:I,defineOperator:B,mapCommand:$e,_mapCommand:Ue,exitVisualMode:ae,exitInsertMode:Je};S.prototype.pushRepeatDigit=function(e){this.operator?this.motionRepeat=this.motionRepeat.concat(e):this.prefixRepeat=this.prefixRepeat.concat(e)},S.prototype.getRepeat=function(){var e=0;return(this.prefixRepeat.length>0||this.motionRepeat.length>0)&&(e=1,this.prefixRepeat.length>0&&(e*=parseInt(this.prefixRepeat.join(""),10)),this.motionRepeat.length>0&&(e*=parseInt(this.motionRepeat.join(""),10))),e},b.prototype={setText:function(e,t,r){this.keyBuffer=[e||""],this.linewise=!!t,this.blockwise=!!r},pushText:function(e,t){t&&(this.linewise||this.keyBuffer.push("\n"),this.linewise=!0),this.keyBuffer.push(e)},pushInsertModeChanges:function(e){this.insertModeChanges.push(gt(e))},pushSearchQuery:function(e){this.searchQueries.push(e)},clear:function(){this.keyBuffer=[],this.insertModeChanges=[],this.searchQueries=[],this.linewise=!1},toString:function(){return this.keyBuffer.join("")}},L.prototype={pushText:function(e,t,r,n,o){n&&"\n"==r.charAt(0)&&(r=r.slice(1)+"\n"),n&&"\n"!==r.charAt(r.length-1)&&(r+="\n");var i=this.isValidRegister(e)?this.getRegister(e):null;if(!i){switch(t){case"yank":this.registers[0]=new b(r,n,o);break;case"delete":case"change":-1==r.indexOf("\n")?this.registers["-"]=new b(r,n):(this.shiftNumericRegisters_(),this.registers[1]=new b(r,n))}return void this.unnamedRegister.setText(r,n,o)}var a=m(e);a?i.pushText(r,n):i.setText(r,n,o),this.unnamedRegister.setText(i.toString(),n)},getRegister:function(e){return this.isValidRegister(e)?(e=e.toLowerCase(),this.registers[e]||(this.registers[e]=new b),this.registers[e]):this.unnamedRegister},isValidRegister:function(e){return e&&g(e,ft)},shiftNumericRegisters_:function(){for(var e=9;e>=2;e--)this.registers[e]=this.getRegister(""+(e-1))}},T.prototype={nextMatch:function(e,t){var r=this.historyBuffer,n=t?-1:1;null===this.initialPrefix&&(this.initialPrefix=e);for(var o=this.iterator+n;t?o>=0:o=r.length?(this.iterator=r.length,this.initialPrefix):0>o?e:void 0},pushInput:function(e){var t=this.historyBuffer.indexOf(e);t>-1&&this.historyBuffer.splice(t,1),e.length&&this.historyBuffer.push(e)},reset:function(){this.initialPrefix=null,this.iterator=this.historyBuffer.length}};var wt={matchCommand:function(e,t,r,n){var o=j(e,t,n,r);if(!o.full&&!o.partial)return{type:"none"};if(!o.full&&o.partial)return{type:"partial"};for(var i,a=0;a"==i.keys.slice(-11)&&(r.selectedCharacter=F(e)),{type:"full",command:i}},processCommand:function(e,t,r){switch(t.inputState.repeatOverride=r.repeatOverride,r.type){case"motion":this.processMotion(e,t,r);break;case"operator":this.processOperator(e,t,r);break;case"operatorMotion":this.processOperatorMotion(e,t,r);break;case"action":this.processAction(e,t,r);break;case"search":this.processSearch(e,t,r);break;case"ex":case"keyToEx":this.processEx(e,t,r)}},processMotion:function(e,t,r){t.inputState.motion=r.motion,t.inputState.motionArgs=K(r.motionArgs),this.evalInput(e,t)},processOperator:function(e,t,r){var n=t.inputState;if(n.operator){if(n.operator==r.operator)return n.motion="expandToLine",n.motionArgs={linewise:!0},void this.evalInput(e,t);A(e)}n.operator=r.operator,n.operatorArgs=K(r.operatorArgs),t.visualMode&&this.evalInput(e,t)},processOperatorMotion:function(e,t,r){var n=t.visualMode,o=K(r.operatorMotionArgs);o&&n&&o.visualLine&&(t.visualLine=!0),this.processOperator(e,t,r),n||this.processMotion(e,t,r)},processAction:function(e,t,r){var n=t.inputState,o=n.getRepeat(),i=!!o,a=K(r.actionArgs)||{};n.selectedCharacter&&(a.selectedCharacter=n.selectedCharacter),r.operator&&this.processOperator(e,t,r),r.motion&&this.processMotion(e,t,r),(r.motion||r.operator)&&this.evalInput(e,t),a.repeat=o||1,a.repeatIsExplicit=i,a.registerName=n.registerName,A(e),t.lastMotion=null,r.isEdit&&this.recordLastEdit(t,n,r),St[r.action](e,a,t)},processSearch:function(t,r,n){function o(e,o,i){yt.searchHistoryController.pushInput(e),yt.searchHistoryController.reset();try{Pe(t,e,o,i)}catch(a){return Ie(t,"Invalid regex: "+e),void A(t)}wt.processMotion(t,r,{type:"motion",motion:"findNext",motionArgs:{forward:!0,toJumplist:n.searchArgs.toJumplist}})}function i(e){t.scrollTo(p.left,p.top),o(e,!0,!0);var r=yt.macroModeState;r.isRecording&&Ze(r,e)}function a(r,n,o){var i,a=e.keyName(r);"Up"==a||"Down"==a?(i="Up"==a?!0:!1,n=yt.searchHistoryController.nextMatch(n,i)||"",o(n)):"Left"!=a&&"Right"!=a&&"Ctrl"!=a&&"Alt"!=a&&"Shift"!=a&&yt.searchHistoryController.reset();var s;try{s=Pe(t,n,!0,!0)}catch(r){}s?t.scrollIntoView(Fe(t,!l,s),30):(We(t),t.scrollTo(p.left,p.top))}function s(r,n,o){var i=e.keyName(r);("Esc"==i||"Ctrl-C"==i||"Ctrl-["==i)&&(yt.searchHistoryController.pushInput(n),yt.searchHistoryController.reset(),Pe(t,h),We(t),t.scrollTo(p.left,p.top),e.e_stop(r),A(t),o(),t.focus())}if(t.getSearchCursor){var l=n.searchArgs.forward,c=n.searchArgs.wholeWordOnly;Se(t).setReversed(!l);var u=l?"/":"?",h=Se(t).getQuery(),p=t.getScrollInfo();switch(n.searchArgs.querySrc){case"prompt":var d=yt.macroModeState;if(d.isPlaying){var f=d.replaySearchQueries.shift();o(f,!0,!1)}else Ke(t,{onClose:i,prefix:u,desc:Lt,onKeyUp:a,onKeyDown:s});break;case"wordUnderCursor":var m=ue(t,!1,!0,!1,!0),v=!0;if(m||(m=ue(t,!1,!0,!1,!1),v=!1),!m)return;var f=t.getLine(m.start.line).substring(m.start.ch,m.end.ch);f=v&&c?"\\b"+f+"\\b":z(f),yt.jumpList.cachedCursor=t.getCursor(),t.setCursor(m.start),o(f,!0,!1)}}},processEx:function(t,r,n){function o(e){yt.exCommandHistoryController.pushInput(e),yt.exCommandHistoryController.reset(),Bt.processCommand(t,e)}function i(r,n,o){var i,a=e.keyName(r);("Esc"==a||"Ctrl-C"==a||"Ctrl-["==a)&&(yt.exCommandHistoryController.pushInput(n),yt.exCommandHistoryController.reset(),e.e_stop(r),A(t),o(),t.focus()),"Up"==a||"Down"==a?(i="Up"==a?!0:!1,n=yt.exCommandHistoryController.nextMatch(n,i)||"",o(n)):"Left"!=a&&"Right"!=a&&"Ctrl"!=a&&"Alt"!=a&&"Shift"!=a&&yt.exCommandHistoryController.reset()}"keyToEx"==n.type?Bt.processCommand(t,n.exArgs.input):r.visualMode?Ke(t,{onClose:o,prefix:":",value:"'<,'>",onKeyDown:i}):Ke(t,{onClose:o,prefix:":",onKeyDown:i})},evalInput:function(e,t){var n,o,i,a=t.inputState,s=a.motion,l=a.motionArgs||{},c=a.operator,u=a.operatorArgs||{},h=a.registerName,p=t.sel,d=D(t.visualMode?p.head:e.getCursor("head")),f=D(t.visualMode?p.anchor:e.getCursor("anchor")),m=D(d),v=D(f);if(c&&this.recordLastEdit(t,a),i=void 0!==a.repeatOverride?a.repeatOverride:a.getRepeat(),i>0&&l.explicitRepeat?l.repeatIsExplicit=!0:(l.noRepeat||!l.explicitRepeat&&0===i)&&(i=1,l.repeatIsExplicit=!1),a.selectedCharacter&&(l.selectedCharacter=u.selectedCharacter=a.selectedCharacter),l.repeat=i,A(e),s){var g=xt[s](e,d,l,t);if(t.lastMotion=xt[s],!g)return;if(l.toJumplist){var y=yt.jumpList,k=y.cachedCursor;k?(he(e,k,g),delete y.cachedCursor):he(e,d,g)}g instanceof Array?(o=g[0],n=g[1]):n=g,n||(n=D(d)),t.visualMode?(t.visualBlock&&n.ch===1/0||(n=O(e,n,t.visualBlock)),o&&(o=O(e,o,!0)),o=o||v,p.anchor=o,p.head=n,ne(e),ye(e,t,"<",V(o,n)?o:n),ye(e,t,">",V(o,n)?n:o)):c||(n=O(e,n),e.setCursor(n.line,n.ch))}if(c){if(u.lastSel){o=v;var C=u.lastSel,w=Math.abs(C.head.line-C.anchor.line),x=Math.abs(C.head.ch-C.anchor.ch);n=C.visualLine?r(v.line+w,v.ch):C.visualBlock?r(v.line+w,v.ch+x):C.head.line==C.anchor.line?r(v.line,v.ch+x):r(v.line+w,v.ch),t.visualMode=!0,t.visualLine=C.visualLine,t.visualBlock=C.visualBlock,p=t.sel={anchor:o,head:n},ne(e)}else t.visualMode&&(u.lastSel={anchor:D(p.anchor),head:D(p.head),visualBlock:t.visualBlock,visualLine:t.visualLine});var M,S,b,L,T;if(t.visualMode){if(M=J(p.head,p.anchor),S=U(p.head,p.anchor),b=t.visualLine||u.linewise,L=t.visualBlock?"block":b?"line":"char",T=oe(e,{anchor:M,head:S},L),b){var R=T.ranges;if("block"==L)for(var E=0;El&&i.line==c||l>u&&i.line==u?void 0:(n.toFirstChar&&(a=ce(e.getLine(l)),o.lastHPos=a),o.lastHSPos=e.charCoords(r(l,a),"div").left,r(l,a))},moveByDisplayLines:function(e,t,n,o){var i=t;switch(o.lastMotion){case this.moveByDisplayLines:case this.moveByScroll:case this.moveByLines:case this.moveToColumn:case this.moveToEol:break;default:o.lastHSPos=e.charCoords(i,"div").left}var a=n.repeat,s=e.findPosV(i,n.forward?a:-a,"line",o.lastHSPos);if(s.hitSide)if(n.forward)var l=e.charCoords(s,"div"),c={top:l.top+8,left:o.lastHSPos},s=e.coordsChar(c,"div");else{var u=e.charCoords(r(e.firstLine(),0),"div");u.left=o.lastHSPos,s=e.coordsChar(u,"div")}return o.lastHPos=s.ch,s},moveByPage:function(e,t,r){var n=t,o=r.repeat;return e.findPosV(n,r.forward?o:-o,"page")},moveByParagraph:function(e,t,r){var n=r.forward?1:-1;return Ce(e,t,r.repeat,n)},moveByScroll:function(e,t,r,n){var o=e.getScrollInfo(),i=null,a=r.repeat;a||(a=o.clientHeight/(2*e.defaultTextHeight()));var s=e.charCoords(t,"local");r.repeat=a;var i=xt.moveByDisplayLines(e,t,r,n);if(!i)return null;var l=e.charCoords(i,"local");return e.scrollTo(null,o.top+l.top-s.top),i},moveByWords:function(e,t,r){return me(e,t,r.repeat,!!r.forward,!!r.wordEnd,!!r.bigWord)},moveTillCharacter:function(e,t,r){var n=r.repeat,o=ve(e,n,r.forward,r.selectedCharacter),i=r.forward?-1:1;return pe(i,r),o?(o.ch+=i,o):null},moveToCharacter:function(e,t,r){var n=r.repeat;return pe(0,r),ve(e,n,r.forward,r.selectedCharacter)||t},moveToSymbol:function(e,t,r){var n=r.repeat;return de(e,n,r.forward,r.selectedCharacter)||t},moveToColumn:function(e,t,r,n){var o=r.repeat;return n.lastHPos=o-1,n.lastHSPos=e.charCoords(t,"div").left,ge(e,o)},moveToEol:function(e,t,n,o){var i=t;o.lastHPos=1/0;var a=r(i.line+n.repeat-1,1/0),s=e.clipPos(a);return s.ch--,o.lastHSPos=e.charCoords(s,"div").left,a},moveToFirstNonWhiteSpaceCharacter:function(e,t){var n=t;return r(n.line,ce(e.getLine(n.line)))},moveToMatchedSymbol:function(e,t){var n,o=t,i=o.line,a=o.ch,s=e.getLine(i);do if(n=s.charAt(a++),n&&d(n)){var l=e.getTokenTypeAt(r(i,a));if("string"!==l&&"comment"!==l)break}while(n);if(n){var c=e.findMatchingBracket(r(i,a));return c.to}return o},moveToStartOfLine:function(e,t){return r(t.line,0)},moveToLineOrEdgeOfDocument:function(e,t,n){var o=n.forward?e.lastLine():e.firstLine();return n.repeatIsExplicit&&(o=n.repeat-e.getOption("firstLineNumber")),r(o,ce(e.getLine(o)))},textObjectManipulation:function(e,t,r,n){var o={"(":")",")":"(","{":"}","}":"{","[":"]","]":"["},i={"'":!0,'"':!0},a=r.selectedCharacter;"b"==a?a="(":"B"==a&&(a="{");var s,l=!r.textObjectInner;if(o[a])s=we(e,t,a,l);else if(i[a])s=xe(e,t,a,l);else if("W"===a)s=ue(e,l,!0,!0);else if("w"===a)s=ue(e,l,!0,!1);else{if("p"!==a)return null;if(s=Ce(e,t,r.repeat,0,l),r.linewise=!0,n.visualMode)n.visualLine||(n.visualLine=!0);else{var c=n.inputState.operatorArgs;c&&(c.linewise=!0),s.end.line--}}return e.state.vim.visualMode?re(e,s.start,s.end):[s.start,s.end]},repeatLastCharacterSearch:function(e,t,r){var n=yt.lastChararacterSearch,o=r.repeat,i=r.forward===n.forward,a=(n.increment?1:0)*(i?-1:1);e.moveH(-a,"char"),r.inclusive=i?!0:!1;var s=ve(e,o,i,n.selectedCharacter);return s?(s.ch+=a,s):(e.moveH(a,"char"),t)}},Mt={change:function(t,r,n){var o,i,a=t.state.vim;if(yt.macroModeState.lastInsertModeChanges.inVisualBlock=a.visualBlock,a.visualMode){i=t.getSelection();var s=E("",n.length);t.replaceSelections(s),o=J(n[0].head,n[0].anchor)}else{var l=n[0].anchor,c=n[0].head;if(i=t.getRange(l,c),!v(i)){var u=/\s+$/.exec(i);u&&(c=N(c,0,-u[0].length),i=i.slice(0,-u[0].length))}var h=c.line-1==t.lastLine();t.replaceRange("",l,c),r.linewise&&!h&&(e.commands.newlineAndIndent(t),l.ch=null),o=l}yt.registerController.pushText(r.registerName,"change",i,r.linewise,n.length>1),St.enterInsertMode(t,{head:o},t.state.vim)},"delete":function(e,t,n){var o,i,a=e.state.vim;if(a.visualBlock){i=e.getSelection();var s=E("",n.length);e.replaceSelections(s),o=n[0].anchor}else{var l=n[0].anchor,c=n[0].head;t.linewise&&c.line!=e.firstLine()&&l.line==e.lastLine()&&l.line==c.line-1&&(l.line==e.firstLine()?l.ch=0:l=r(l.line-1,q(e,l.line-1))),i=e.getRange(l,c),e.replaceRange("",l,c),o=l,t.linewise&&(o=xt.moveToFirstNonWhiteSpaceCharacter(e,l))}return yt.registerController.pushText(t.registerName,"delete",i,t.linewise,a.visualBlock),O(e,o)},indent:function(e,t,r){var n=e.state.vim,o=r[0].anchor.line,i=n.visualBlock?r[r.length-1].anchor.line:r[0].head.line,a=n.visualMode?t.repeat:1;t.linewise&&i--;for(var s=o;i>=s;s++)for(var l=0;a>l;l++)e.indentLine(s,t.indentRight);return xt.moveToFirstNonWhiteSpaceCharacter(e,r[0].anchor)},changeCase:function(e,t,r,n,o){for(var i=e.getSelections(),a=[],s=t.toLower,l=0;lc.top?(l.line+=(s-c.top)/o,l.line=Math.ceil(l.line),e.setCursor(l),c=e.charCoords(l,"local"),e.scrollTo(null,c.top)):e.scrollTo(null,s);else{var u=s+e.getScrollInfo().clientHeight;u=a.anchor.line?N(a.head,0,1):r(a.anchor.line,0);else if("inplace"==i&&o.visualMode)return;t.setOption("keyMap","vim-insert"),t.setOption("disableInput",!1),n&&n.replace?(t.toggleOverwrite(!0),t.setOption("keyMap","vim-replace"),e.signal(t,"vim-mode-change",{mode:"replace"})):(t.setOption("keyMap","vim-insert"),e.signal(t,"vim-mode-change",{mode:"insert"})),yt.macroModeState.isPlaying||(t.on("change",Ge),e.on(t.getInputField(),"keydown",rt)),o.visualMode&&ae(t),Y(t,s,l)}},toggleVisualMode:function(t,n,o){var i,a=n.repeat,s=t.getCursor();o.visualMode?o.visualLine^n.linewise||o.visualBlock^n.blockwise?(o.visualLine=!!n.linewise,o.visualBlock=!!n.blockwise,e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),ne(t)):ae(t):(o.visualMode=!0,o.visualLine=!!n.linewise,o.visualBlock=!!n.blockwise,i=O(t,r(s.line,s.ch+a-1),!0),o.sel={anchor:s,head:i},e.signal(t,"vim-mode-change",{mode:"visual",subMode:o.visualLine?"linewise":o.visualBlock?"blockwise":""}),ne(t),ye(t,o,"<",J(s,i)),ye(t,o,">",U(s,i)))},reselectLastSelection:function(t,r,n){var o=n.lastSelection;if(n.visualMode&&te(t,n),o){var i=o.anchorMark.find(),a=o.headMark.find();if(!i||!a)return;n.sel={anchor:i,head:a},n.visualMode=!0,n.visualLine=o.visualLine,n.visualBlock=o.visualBlock,ne(t),ye(t,n,"<",J(i,a)),ye(t,n,">",U(i,a)),e.signal(t,"vim-mode-change",{mode:"visual",subMode:n.visualLine?"linewise":n.visualBlock?"blockwise":""})}},joinLines:function(e,t,n){var o,i;if(n.visualMode){if(o=e.getCursor("anchor"),i=e.getCursor("head"),V(i,o)){var a=i;i=o,o=a}i.ch=q(e,i.line)-1}else{var s=Math.max(t.repeat,2);o=e.getCursor(),i=O(e,r(o.line+s-1,1/0))}for(var l=0,c=o.line;cr)return"";if(e.getOption("indentWithTabs")){var n=Math.floor(r/s);return Array(n+1).join(" ")}return Array(r+1).join(" ")});a+=p?"\n":""}if(t.repeat>1)var a=Array(t.repeat+1).join(a);var f=i.linewise,m=i.blockwise;if(f)n.visualMode?a=n.visualLine?a.slice(0,-1):"\n"+a.slice(0,a.length-1)+"\n":t.after?(a="\n"+a.slice(0,a.length-1),o.ch=q(e,o.line)):o.ch=0;else{if(m){a=a.split("\n");for(var v=0;ve.lastLine()&&e.replaceRange("\n",r(b,0));var L=q(e,b);Lu.length&&(i=u.length),a=r(l.line,i)}if("\n"==s)o.visualMode||t.replaceRange("",l,a),(e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent)(t);else{var h=t.getRange(l,a);if(h=h.replace(/[^\n]/g,s),o.visualBlock){var p=new Array(t.getOption("tabSize")+1).join(" ");h=t.getSelection(),h=h.replace(/\t/g,p).replace(/[^\n]/g,s).split("\n"),t.replaceSelections(h)}else t.replaceRange(h,l,a);o.visualMode?(l=V(c[0].anchor,c[0].head)?c[0].anchor:c[0].head,t.setCursor(l),ae(t,!1)):t.setCursor(N(a,0,-1))}},incrementNumberToken:function(e,t){for(var n,o,i,a,s,l=e.getCursor(),c=e.getLine(l.line),u=/-?\d+/g;null!==(n=u.exec(c))&&(s=n[0],o=n.index,i=o+s.length,!(l.ch=1)return!0}else e.nextCh===e.reverseSymb&&e.depth--;return!1}},section:{init:function(e){e.curMoveThrough=!0,e.symb=(e.forward?"]":"[")===e.symb?"{":"}"},isComplete:function(e){return 0===e.index&&e.nextCh===e.symb}},comment:{isComplete:function(e){var t="*"===e.lastCh&&"/"===e.nextCh;return e.lastCh=e.nextCh,t}},method:{init:function(e){e.symb="m"===e.symb?"{":"}",e.reverseSymb="{"===e.symb?"}":"{"},isComplete:function(e){return e.nextCh===e.symb?!0:!1}},preprocess:{init:function(e){e.index=0},isComplete:function(e){if("#"===e.nextCh){var t=e.lineText.match(/#(\w+)/)[1];if("endif"===t){if(e.forward&&0===e.depth)return!0;e.depth++}else if("if"===t){if(!e.forward&&0===e.depth)return!0;e.depth--}if("else"===t&&0===e.depth)return!0}return!1}}};y("pcre",!0,"boolean"),Me.prototype={getQuery:function(){return yt.query},setQuery:function(e){yt.query=e},getOverlay:function(){return this.searchOverlay},setOverlay:function(e){this.searchOverlay=e},isReversed:function(){return yt.isReversed},setReversed:function(e){yt.isReversed=e},getScrollbarAnnotate:function(){return this.annotate},setScrollbarAnnotate:function(e){this.annotate=e}};var Lt="(Javascript regexp)",Tt=[{name:"map"},{name:"imap",shortName:"im"},{name:"nmap",shortName:"nm"},{name:"vmap",shortName:"vm"},{name:"unmap"},{name:"write",shortName:"w"},{name:"undo",shortName:"u"},{name:"redo",shortName:"red"},{name:"set",shortName:"set"},{name:"sort",shortName:"sor"},{name:"substitute",shortName:"s",possiblyAsync:!0},{name:"nohlsearch",shortName:"noh"},{name:"delmarks",shortName:"delm"},{name:"registers",shortName:"reg",excludeFromCommandHistory:!0},{name:"global",shortName:"g"}],Rt=function(){this.buildCommandMap_()};Rt.prototype={processCommand:function(e,t,r){var n=this;e.operation(function(){e.curOp.isVimOp=!0,n._processCommand(e,t,r)})},_processCommand:function(t,r,n){var o=t.state.vim,i=yt.registerController.getRegister(":"),a=i.toString();o.visualMode&&ae(t);var s=new e.StringStream(r);i.setText(r);var l=n||{};l.input=r;try{this.parseInput_(t,s,l)}catch(c){throw Ie(t,c),c}var u,h;if(l.commandName){if(u=this.matchCommand_(l.commandName)){if(h=u.name,u.excludeFromCommandHistory&&i.setText(a),this.parseCommandArgs_(s,l,u),"exToKey"==u.type){for(var p=0;p0;t--){ +var r=e.substring(0,t);if(this.commandMap_[r]){var n=this.commandMap_[r];if(0===n.name.indexOf(e))return n}}return null},buildCommandMap_:function(){this.commandMap_={};for(var e=0;e
";if(r){var i;r=r.join("");for(var a=0;a"}}else for(var i in n){var l=n[i].toString();l.length&&(o+='"'+i+" "+l+"
")}Ie(e,o)},sort:function(t,n){function o(){if(n.argString){var t=new e.StringStream(n.argString);if(t.eat("!")&&(a=!0),t.eol())return;if(!t.eatSpace())return"Invalid arguments";var r=t.match(/[a-z]+/);if(r){r=r[0],s=-1!=r.indexOf("i"),l=-1!=r.indexOf("u");var o=-1!=r.indexOf("d")&&1,i=-1!=r.indexOf("x")&&1,u=-1!=r.indexOf("o")&&1;if(o+i+u>1)return"Invalid arguments";c=o&&"decimal"||i&&"hex"||u&&"octal"}t.eatSpace()&&t.match(/\/.*\//)}}function i(e,t){if(a){var r;r=e,e=t,t=r}s&&(e=e.toLowerCase(),t=t.toLowerCase());var n=c&&v.exec(e),o=c&&v.exec(t);return n?(n=parseInt((n[1]+n[2]).toLowerCase(),g),o=parseInt((o[1]+o[2]).toLowerCase(),g),n-o):t>e?-1:1}var a,s,l,c,u=o();if(u)return void Ie(t,u+": "+n.argString);var h=n.line||t.firstLine(),p=n.lineEnd||n.line||t.lastLine();if(h!=p){var d=r(h,0),f=r(p,q(t,p)),m=t.getRange(d,f).split("\n"),v="decimal"==c?/(-?)([\d]+)/:"hex"==c?/(-?)(?:0x)?([0-9a-f]+)/i:"octal"==c?/([0-7]+)/:null,g="decimal"==c?10:"hex"==c?16:"octal"==c?8:null,y=[],k=[];if(c)for(var C=0;C=p;p++){var d=c.test(e.getLine(p));d&&(u.push(p+1),h+=e.getLine(p)+"
")}if(!n)return void Ie(e,h);var f=0,m=function(){if(f=u)return void Ie(t,"Invalid argument: "+r.argString.substring(i));for(var h=0;u-c>=h;h++){var d=String.fromCharCode(c+h);delete n.marks[d]}}else delete n.marks[a]}}},Bt=new Rt;return e.keyMap.vim={attach:a,detach:i,call:s},y("insertModeEscKeysTimeout",200,"number"),e.keyMap["vim-insert"]={"Ctrl-N":"autocomplete","Ctrl-P":"autocomplete",Enter:function(t){var r=e.commands.newlineAndIndentContinueComment||e.commands.newlineAndIndent;r(t)},fallthrough:["default"],attach:a,detach:i,call:s},e.keyMap["vim-replace"]={Backspace:"goCharLeft",fallthrough:["vim-insert"],attach:a,detach:i,call:s},M(),Ct};e.Vim=n()}); +var jsonlint=function(){var t={trace:function(){},yy:{},symbols_:{error:2,JSONString:3,STRING:4,JSONNumber:5,NUMBER:6,JSONNullLiteral:7,NULL:8,JSONBooleanLiteral:9,TRUE:10,FALSE:11,JSONText:12,JSONValue:13,EOF:14,JSONObject:15,JSONArray:16,"{":17,"}":18,JSONMemberList:19,JSONMember:20,":":21,",":22,"[":23,"]":24,JSONElementList:25,$accept:0,$end:1},terminals_:{2:"error",4:"STRING",6:"NUMBER",8:"NULL",10:"TRUE",11:"FALSE",14:"EOF",17:"{",18:"}",21:":",22:",",23:"[",24:"]"},productions_:[0,[3,1],[5,1],[7,1],[9,1],[9,1],[12,2],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[15,2],[15,3],[20,3],[19,1],[19,3],[16,2],[16,3],[25,1],[25,3]],performAction:function(t,e,i,n,r,s,h){var l=s.length-1;switch(r){case 1:this.$=t.replace(/\\(\\|")/g,"$1").replace(/\\n/g,"\n").replace(/\\r/g,"\r").replace(/\\t/g," ").replace(/\\v/g,"\x0B").replace(/\\f/g,"\f").replace(/\\b/g,"\b");break;case 2:this.$=Number(t);break;case 3:this.$=null;break;case 4:this.$=!0;break;case 5:this.$=!1;break;case 6:return this.$=s[l-1];case 13:this.$={};break;case 14:this.$=s[l-1];break;case 15:this.$=[s[l-2],s[l]];break;case 16:this.$={},this.$[s[l][0]]=s[l][1];break;case 17:this.$=s[l-2],s[l-2][s[l][0]]=s[l][1];break;case 18:this.$=[];break;case 19:this.$=s[l-1];break;case 20:this.$=[s[l]];break;case 21:this.$=s[l-2],s[l-2].push(s[l])}},table:[{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],12:1,13:2,15:7,16:8,17:[1,14],23:[1,15]},{1:[3]},{14:[1,16]},{14:[2,7],18:[2,7],22:[2,7],24:[2,7]},{14:[2,8],18:[2,8],22:[2,8],24:[2,8]},{14:[2,9],18:[2,9],22:[2,9],24:[2,9]},{14:[2,10],18:[2,10],22:[2,10],24:[2,10]},{14:[2,11],18:[2,11],22:[2,11],24:[2,11]},{14:[2,12],18:[2,12],22:[2,12],24:[2,12]},{14:[2,3],18:[2,3],22:[2,3],24:[2,3]},{14:[2,4],18:[2,4],22:[2,4],24:[2,4]},{14:[2,5],18:[2,5],22:[2,5],24:[2,5]},{14:[2,1],18:[2,1],21:[2,1],22:[2,1],24:[2,1]},{14:[2,2],18:[2,2],22:[2,2],24:[2,2]},{3:20,4:[1,12],18:[1,17],19:18,20:19},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:23,15:7,16:8,17:[1,14],23:[1,15],24:[1,21],25:22},{1:[2,6]},{14:[2,13],18:[2,13],22:[2,13],24:[2,13]},{18:[1,24],22:[1,25]},{18:[2,16],22:[2,16]},{21:[1,26]},{14:[2,18],18:[2,18],22:[2,18],24:[2,18]},{22:[1,28],24:[1,27]},{22:[2,20],24:[2,20]},{14:[2,14],18:[2,14],22:[2,14],24:[2,14]},{3:20,4:[1,12],20:29},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:30,15:7,16:8,17:[1,14],23:[1,15]},{14:[2,19],18:[2,19],22:[2,19],24:[2,19]},{3:5,4:[1,12],5:6,6:[1,13],7:3,8:[1,9],9:4,10:[1,10],11:[1,11],13:31,15:7,16:8,17:[1,14],23:[1,15]},{18:[2,17],22:[2,17]},{18:[2,15],22:[2,15]},{22:[2,21],24:[2,21]}],defaultActions:{16:[2,6]},parseError:function(t,e){throw new Error(t)},parse:function(t){function e(t){r.length=r.length-2*t,s.length=s.length-t,h.length=h.length-t}function i(){var t;return t=n.lexer.lex()||1,"number"!=typeof t&&(t=n.symbols_[t]||t),t}var n=this,r=[0],s=[null],h=[],l=this.table,o="",a=0,c=0,u=0,y=2,p=1;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var f=this.lexer.yylloc;h.push(f),"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var g,d,m,x,_,b,E,S,k,v={};;){if(m=r[r.length-1],this.defaultActions[m]?x=this.defaultActions[m]:(null==g&&(g=i()),x=l[m]&&l[m][g]),"undefined"==typeof x||!x.length||!x[0]){if(!u){k=[];for(b in l[m])this.terminals_[b]&&b>2&&k.push("'"+this.terminals_[b]+"'");var $="";$=this.lexer.showPosition?"Parse error on line "+(a+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+this.terminals_[g]+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==g?"end of input":"'"+(this.terminals_[g]||g)+"'"),this.parseError($,{text:this.lexer.match,token:this.terminals_[g]||g,line:this.lexer.yylineno,loc:f,expected:k})}if(3==u){if(g==p)throw new Error($||"Parsing halted.");c=this.lexer.yyleng,o=this.lexer.yytext,a=this.lexer.yylineno,f=this.lexer.yylloc,g=i()}for(;;){if(y.toString()in l[m])break;if(0==m)throw new Error($||"Parsing halted.");e(1),m=r[r.length-1]}d=g,g=y,m=r[r.length-1],x=l[m]&&l[m][y],u=3}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+m+", token: "+g);switch(x[0]){case 1:r.push(g),s.push(this.lexer.yytext),h.push(this.lexer.yylloc),r.push(x[1]),g=null,d?(g=d,d=null):(c=this.lexer.yyleng,o=this.lexer.yytext,a=this.lexer.yylineno,f=this.lexer.yylloc,u>0&&u--);break;case 2:if(E=this.productions_[x[1]][1],v.$=s[s.length-E],v._$={first_line:h[h.length-(E||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(E||1)].first_column,last_column:h[h.length-1].last_column},_=this.performAction.call(v,o,c,a,this.yy,x[1],s,h),"undefined"!=typeof _)return _;E&&(r=r.slice(0,-1*E*2),s=s.slice(0,-1*E),h=h.slice(0,-1*E)),r.push(this.productions_[x[1]][0]),s.push(v.$),h.push(v._$),S=l[r[r.length-2]][r[r.length-1]],r.push(S);break;case 3:return!0}}return!0}},e=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parseError)throw new Error(t);this.yy.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this},input:function(){var t=this._input[0];this.yytext+=t,this.yyleng++,this.match+=t,this.matched+=t;var e=t.match(/\n/);return e&&this.yylineno++,this._input=this._input.slice(1),t},unput:function(t){return this._input=t+this._input,this},more:function(){return this._more=!0,this},less:function(t){this._input=this.match.slice(t)+this._input},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var t,e,i,n,r;this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),h=0;he[0].length)||(e=i,n=h,this.options.flex));h++);return e?(r=e[0].match(/\n.*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-1:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.yyleng=this.yytext.length,this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,s[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t?t:void 0):""===this._input?this.EOF:void this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return"undefined"!=typeof t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)}};return t.options={},t.performAction=function(t,e,i,n){switch(i){case 0:break;case 1:return 6;case 2:return e.yytext=e.yytext.substr(1,e.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},t.rules=[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt\/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],t.conditions={INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}},t}();return t.lexer=e,t}();"undefined"!=typeof require&&"undefined"!=typeof exports&&(exports.parser=jsonlint,exports.parse=function(){return jsonlint.parse.apply(jsonlint,arguments)},exports.main=function(t){if(!t[1])throw new Error("Usage: "+t[0]+" FILE");if("undefined"!=typeof process)var e=require("fs").readFileSync(require("path").join(process.cwd(),t[1]),"utf8");else var i=require("file").path(require("file").cwd()),e=i.join(t[1]).read({charset:"utf-8"});return exports.parser.parse(e)},"undefined"!=typeof module&&require.main===module&&exports.main("undefined"!=typeof process?process.argv.slice(1):require("system").args)); +goLintFound=[],function(n){n(CodeMirror)}(function(n){"use strict";n.registerHelper("lint","go",function(n){return goLintFound})}); \ No newline at end of file diff --git a/static/js/lib/ztree/zTreeStyle.min.css b/static/js/lib/ztree/zTreeStyle.min.css new file mode 100644 index 0000000..486127d --- /dev/null +++ b/static/js/lib/ztree/zTreeStyle.min.css @@ -0,0 +1 @@ +.ztree,.ztree li a{color:#333;margin:0}.ztree li a,.ztree li span.button{cursor:pointer;display:inline-block}.ztree li a.tmpTargetNode_inner,ul.tmpTargetzTree,ul.ztree.zTreeDragUL{opacity:.8;filter:alpha(opacity=80)}.ztree *{padding:0;margin:0;font-size:12px;font-family:Verdana,Arial,Helvetica,AppleGothic,sans-serif}.ztree{padding:5px}.ztree li{padding:0;margin:0;list-style:none;line-height:14px;text-align:left;white-space:nowrap;outline:0}.ztree li ul{margin:0;padding:0 0 0 18px}.ztree li ul.line{background:url(img/line_conn.gif) repeat-y}.ztree li a{padding:1px 3px 0 0;height:17px;background-color:transparent;text-decoration:none;vertical-align:top}.ztree li a:hover{text-decoration:underline}.ztree li a.curSelectedNode,.ztree li a.curSelectedNode_Edit{padding-top:0;background-color:#FFE6B0;color:#000;height:16px;border:1px solid #FFB951;opacity:.8}.ztree li a.tmpTargetNode_inner{padding-top:0;background-color:#316AC5;color:#fff;height:16px;border:1px solid #316AC5}.ztree li a input.rename{height:14px;width:80px;padding:0;margin:0;font-size:12px;border:1px solid #7EC4CC}.ztree li span{line-height:16px;margin-right:2px}.ztree li span.button{line-height:0;margin:0;width:16px;height:16px;vertical-align:middle;border:0;outline:0;background-color:transparent;background-repeat:no-repeat;background-attachment:scroll;background-image:url(img/zTreeStandard.png)}.ztree li span.button.chk{width:13px;height:13px;margin:0 3px 0 0;cursor:auto}.ztree li span.button.chk.checkbox_false_full{background-position:0 0}.ztree li span.button.chk.checkbox_false_full_focus{background-position:0 -14px}.ztree li span.button.chk.checkbox_false_part{background-position:0 -28px}.ztree li span.button.chk.checkbox_false_part_focus{background-position:0 -42px}.ztree li span.button.chk.checkbox_false_disable{background-position:0 -56px}.ztree li span.button.chk.checkbox_true_full{background-position:-14px 0}.ztree li span.button.chk.checkbox_true_full_focus{background-position:-14px -14px}.ztree li span.button.chk.checkbox_true_part{background-position:-14px -28px}.ztree li span.button.chk.checkbox_true_part_focus{background-position:-14px -42px}.ztree li span.button.chk.checkbox_true_disable{background-position:-14px -56px}.ztree li span.button.chk.radio_false_full{background-position:-28px 0}.ztree li span.button.chk.radio_false_full_focus{background-position:-28px -14px}.ztree li span.button.chk.radio_false_part{background-position:-28px -28px}.ztree li span.button.chk.radio_false_part_focus{background-position:-28px -42px}.ztree li span.button.chk.radio_false_disable{background-position:-28px -56px}.ztree li span.button.chk.radio_true_full{background-position:-42px 0}.ztree li span.button.chk.radio_true_full_focus{background-position:-42px -14px}.ztree li span.button.chk.radio_true_part{background-position:-42px -28px}.ztree li span.button.chk.radio_true_part_focus{background-position:-42px -42px}.ztree li span.button.chk.radio_true_disable{background-position:-42px -56px}.ztree li span.button.switch{width:18px;height:18px}.ztree li span.button.root_open{background-position:-92px -54px}.ztree li span.button.root_close{background-position:-74px -54px}.ztree li span.button.roots_open{background-position:-92px 0}.ztree li span.button.roots_close{background-position:-74px 0}.ztree li span.button.center_open{background-position:-92px -18px}.ztree li span.button.center_close{background-position:-74px -18px}.ztree li span.button.bottom_open{background-position:-92px -36px}.ztree li span.button.bottom_close{background-position:-74px -36px}.ztree li span.button.noline_open{background-position:-92px -72px}.ztree li span.button.noline_close{background-position:-74px -72px}.ztree li span.button.root_docu{background:0 0}.ztree li span.button.roots_docu{background-position:-56px 0}.ztree li span.button.center_docu{background-position:-56px -18px}.ztree li span.button.bottom_docu{background-position:-56px -36px}.ztree li span.button.noline_docu{background:0 0}.ztree li span.button.ico_open{margin-right:2px;background-position:-110px -16px;vertical-align:top}.ztree li span.button.ico_close{margin-right:2px;background-position:-110px 0;vertical-align:top}.ztree li span.button.ico_docu{margin-right:2px;background-position:-110px -32px;vertical-align:top}.ztree li span.button.edit{margin-right:2px;background-position:-110px -48px;vertical-align:top}.ztree li span.button.remove{margin-right:2px;background-position:-110px -64px;vertical-align:top}.ztree li span.button.ico_loading{margin-right:2px;background:url(img/loading.gif) no-repeat;vertical-align:top}ul.tmpTargetzTree{background-color:#FFE6B0}span.tmpzTreeMove_arrow{width:16px;height:16px;display:inline-block;padding:0;margin:2px 0 0 1px;border:0;position:absolute;background-color:transparent;background-repeat:no-repeat;background-attachment:scroll;background-position:-110px -80px;background-image:url(img/zTreeStandard.png)}.zTreeMask,ul.ztree.zTreeDragUL{background-color:#cfcfcf;position:absolute}ul.ztree.zTreeDragUL{margin:0;padding:0;width:auto;height:auto;overflow:hidden;border:1px dotted #00B83F}.zTreeMask{z-index:10000;opacity:0;filter:alpha(opacity=0)} \ No newline at end of file diff --git a/static/js/wide.min.js b/static/js/wide.min.js new file mode 100644 index 0000000..e4716c7 --- /dev/null +++ b/static/js/wide.min.js @@ -0,0 +1,12 @@ +var Tabs=function(t){t._$tabsPanel=$(t.id+" > .tabs-panel"),t._$tabs=$(t.id+" > .tabs"),t._stack=[],this.obj=t,this.obj.STACKSIZE=64,this._init(t);var e=this;$(t.id+" > .tabs > div").each(function(){var i=$(this).data("index");t._stack.length===e.obj.STACKSIZE&&t._stack.splice(0,1),t._stack[t._stack.length-1]!==i&&e.obj._stack.push(i)})};$.extend(Tabs.prototype,{_init:function(t){var e=this;t._$tabs.on("click","div",function(i){if($(this).hasClass("current"))return!1;var r=$(this).data("index");e.setCurrent(r),"function"==typeof t.clickAfter&&t.clickAfter(r)}),t._$tabs.on("click",".ico-close",function(i){var r=$(this).parent().data("index"),a=!0;"function"==typeof t.removeBefore&&(a=t.removeBefore(r)),a&&e.del(r),i.stopPropagation()})},_hasId:function(t){var e=this.obj._$tabs;return 0===e.find('div[data-index="'+t+'"]').length?!1:!0},add:function(t){if(this.getCurrentId()===t.id)return!1;if(this._hasId(t.id))return this.setCurrent(t.id),!1;var e=this.obj._$tabsPanel,i=this.obj._$tabs;i.append('
'+t.title+'
'),e.append('
'+t.content+"
"),this.setCurrent(t.id),"function"==typeof t.after&&t.after()},del:function(t){var e=this.obj._$tabsPanel,i=this.obj._$tabs,r=this.obj._stack,a=null;i.children("div[data-index='"+t+"']").remove(),e.children("div[data-index='"+t+"']").remove();for(var n=0;no;o++)if(editors.data[o].id===n){wide.curEditor=editors.data[o].editor;break}if(wide.curEditor){var h=wide.curEditor.getCursor();wide.curEditor.setCursor(h),wide.curEditor.focus(),wide.refreshOutline(),$(".footer .cursor").text("| "+(h.line+1)+":"+(h.ch+1)+" |")}}}}); +!function(t){t.fn.extend({dialog:{version:"0.0.1.7",author:"lly219@gmail.com"}});var e=(new Date).getTime(),i="dialog",o=function(){this._defaults={styleClass:{background:"dialog-background",panel:"dialog-panel",main:"dialog-main",footer:"dialog-footer",headerMiddle:"dialog-header-middle",headerBg:"dialog-header-bg",closeIcon:"dialog-close-icon",closeIconHover:"dialog-close-icon-hover",title:"dialog-title"}}};t.extend(o.prototype,{_attach:function(e,o){e.id||(this.uuid++,e.id="dp"+this.uuid);var n=this._newInst(t(e));n.settings=t.extend({},o||{}),t.data(e,i,n),this._init(e)},_newInst:function(t){var e=t[0].id.replace(/([^A-Za-z0-9_])/g,"\\\\$1");return{id:e}},_getInst:function(e){try{return t.data(e,i)}catch(o){throw"Missing instance data for this dialog"}},_destroyDialog:function(e){var o=t.dialog._getInst(e),n=o.id;t.removeData(e,i),t(e).prependTo("#"+n+"Wrap").unwrap(),t(e).removeAttr("style");var a=this._getDefaults(t.dialog._defaults,o.settings,"styleClass");t("."+a.background).remove(),t("#"+n+"Dialog").remove()},_init:function(e){var i=this._getInst(e),o=i.id,n=i.settings,a=t(window).height(),l=t(window).width(),s=this._getDefaults(t.dialog._defaults,n,"styleClass"),d=n.height?n.height:parseInt(.6*a),r=n.width?n.width:parseInt(.6*l);n.title=n.title?n.title:"",n.okText=n.okText?n.okText:"Ok",n.cancelText=n.cancelText?n.cancelText:"Cancel";var c="",h="
"+n.title+"
";n.hideFooter||(n.hiddenOk||(c=""),c+="");var g="
"+h+"
"+c+"
",u="";if(n.modal&&0===t("."+s.background).length){var f=a
"}t("#"+o).wrap("
");var v=t(e).clone(!0);t(e).remove(),t("body").append(u+g),t(t("#"+o+"Dialog ."+s.main+" div").get(0)).append(v),t(v).show(),t("#"+o+"Dialog ."+s.closeIcon).bind("click",function(){t.dialog._close(o,n)});var p=t("#"+o+"Dialog ."+s.footer+" button");t(p.get(1)).bind("click",function(){t.dialog._close(o,n)}),t(p.get(0)).bind("click",function(){(void 0===n.ok||n.ok())&&t.dialog._close(o,n)}),this._bindMove(o,s.headerBg,d,r),t(window).keyup(function(e){27===e.keyCode&&t.dialog._close(o,n)}),t(window).resize(function(){var e=t("body").height()>t(window).height()?t("body").height():t(window).height();t(".dialog-background").height(e)}),"function"==typeof n.afterInit&&n.afterInit()},_bindMove:function(e,i){t("#"+e+"Dialog ."+i).mousedown(function(i){var o=document;i||(i=window.event);var n=document.getElementById(e+"Dialog"),a=i.clientX-parseInt(n.style.left),l=i.clientY-parseInt(n.style.top);o.ondragstart="return false;",o.onselectstart="return false;",o.onselect="document.selection.empty();",this.setCapture?this.setCapture():window.captureEvents&&window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP),o.onmousemove=function(e){e||(e=window.event);var i=e.clientX-a,o=e.clientY-l;0>i&&(i=0),i>t(window).width()-t(n).width()&&(i=t(window).width()-t(n).width()),o>t(window).height()-t(n).height()&&(o=t(window).height()-t(n).height()),0>o&&(o=0),n.style.left=i+"px",n.style.top=o+"px"},o.onmouseup=function(){this.releaseCapture?this.releaseCapture():window.captureEvents&&window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP),o.onmousemove=null,o.onmouseup=null,o.ondragstart=null,o.onselectstart=null,o.onselect=null}})},_close:function(e,i){if("none"!==t("#"+e+"Dialog").css("display")&&(void 0===i.close||i.close())&&(t("#"+e+"Dialog").hide(),i.modal)){var o=this._getDefaults(t.dialog._defaults,i,"styleClass");t("."+o.background).hide()}},_closeDialog:function(e){var i=this._getInst(e),o=i.id,n=i.settings;t.dialog._close(o,n)},_openDialog:function(e,i){var o=this._getInst(e),n=o.id,a=o.settings,l="",s="",d=t("#"+n+"Dialog"),r=t(window).height(),c=t(window).width(),h=a.height?a.height:parseInt(.6*r),g=a.width?a.width:parseInt(.6*c);if(a.position?(l=a.position.top,s=a.position.left):(l=parseInt((r-h-43)/2),0>l&&(l=0),s=parseInt((c-g)/2)),d.css({top:l+"px",left:s+"px"}).show(),a.modal){var u=this._getDefaults(t.dialog._defaults,a,"styleClass");t("."+u.background).show()}"function"==typeof a.afterOpen&&a.afterOpen(i),t("#"+n+"Dialog .dialog-footer button:eq(0)").focus()},_updateDialog:function(e,i){var o=this._getInst(e),n=o.id,a=o.settings,l=this._getDefaults(t.dialog._defaults,a,"styleClass");t.extend(a,i);var s=t("#"+n+"Dialog");i.position&&s.css({top:i.position.top,left:i.position.left}),i.width&&(s.width(i.width+26),s.find("."+l.main+" div")[0].style.width=i.width+"px",s.find("."+l.headerBg).width(i.width+18)),i.height&&(s.find("."+l.main+" div")[0].style.height=i.height+"px"),i.title&&s.find("."+l.title).html(i.title),void 0!==i.modal&&(i.modal?t("."+l.background).show():t("."+l.background).hide()),void 0!==i.hideFooter&&(i.hideFooter?s.find("."+l.footer).hide():s.find("."+l.footer).show())},_getDefaults:function(t,e,i){if("styleClass"===i){if("default"===e.theme||void 0===e.theme)return t.styleClass;e.styleClass={};for(var o in t[i])e.styleClass[o]=e.theme+"-"+t.styleClass[o]}else{if("height"===i||"width"===i)return null===e[i]||void 0===e[i]?"auto":e[i]+"px";if(null===e[i]||void 0===e[i])return t[i]}return e[i]}}),t.fn.dialog=function(e){var i=Array.prototype.slice.call(arguments);return"string"==typeof e?(i.shift(),t.dialog["_"+e+"Dialog"].apply(t.dialog,[this[0]].concat(i))):this.each(function(){t.dialog._attach(this,e)})},t.dialog=new o,window["DP_jQuery_"+e]=t}(jQuery); +var editors={autocompleteMutex:!1,data:[],tabs:{},getEditorByPath:function(e){for(var t=0,o=editors.data.length;o>t;t++)if(editors.data[t].editor.options.path===e)return editors.data[t].editor},close:function(){$('.edit-panel .tabs > div[data-index="'+$(".edit-panel .frame").data("index")+"]").find(".ico-close").click()},closeOther:function(){var e=$(".edit-panel .frame").data("index"),t=[];if($(".edit-panel .tabs > div").each(function(o){e!==$(this).data("index")&&t.push($(this).data("index"))}),0===t.length)return!1;var o=t.splice(0,1);$("#dialogCloseEditor").data("removeData",t),$('.edit-panel .tabs > div[data-index="'+o+'"]').find(".ico-close").click()},_removeAllMarker:function(){var e=$("#dialogCloseEditor").data("removeData");if(e&&e.length>0){var t=e.splice(0,1);$("#dialogCloseEditor").data("removeData",e),$('.edit-panel .tabs > div[data-index="'+t+'"] .ico-close').click()}wide.curEditor&&wide.curEditor.focus()},_initClose:function(){new ZeroClipboard($("#copyFilePath")),$(".edit-panel").on("mouseup",".tabs > div",function(e){if(e.stopPropagation(),0===e.button)return $(".edit-panel .frame").hide(),!1;var t=e.screenX;return("auto"===$(".side").css("left")||"0px"===$(".side").css("left"))&&(t=e.screenX-$(".side").width()),$(".edit-panel .frame").show().css({left:t+"px",top:"21px"}).data("index",$(this).data("index")),$("#copyFilePath").attr("data-clipboard-text",$(this).find("span:eq(0)").attr("title")),!1})},init:function(){$("#dialogCloseEditor").dialog({modal:!0,height:90,width:260,title:config.label.tip,hideFooter:!0,afterOpen:function(e){$("#dialogCloseEditor > div:eq(0)").html(config.label.file+" "+e+". "+config.label.confirm_save+"?"),$("#dialogCloseEditor button:eq(0)").focus()},afterInit:function(){$("#dialogCloseEditor button.save").click(function(){var e=$("#dialogCloseEditor").data("index");wide.fmt(editors.data[e].id,editors.data[e].editor),editors.tabs.del(editors.data[e].id),$("#dialogCloseEditor").dialog("close"),editors._removeAllMarker()}),$("#dialogCloseEditor button.discard").click(function(){var e=$("#dialogCloseEditor").data("index");editors.tabs.del(editors.data[e].id),$("#dialogCloseEditor").dialog("close"),editors._removeAllMarker()}),$("#dialogCloseEditor button.cancel").click(function(e){$("#dialogCloseEditor").dialog("close"),editors._removeAllMarker()})}}),editors.tabs=new Tabs({id:".edit-panel",setAfter:function(){wide.curEditor&&wide.curEditor.focus()},clickAfter:function(e){return"startPage"===e?(wide.curEditor=void 0,$(".footer .cursor").text(""),wide.refreshOutline(),!1):void 0},removeBefore:function(e){if("startPage"===e)return editors._removeAllMarker(),!0;for(var t=0,o=editors.data.length;o>t;t++)if(editors.data[t].id===e)return editors.data[t].editor.doc.isClean()?(editors._removeAllMarker(),!0):($("#dialogCloseEditor").dialog("open",$('.edit-panel .tabs > div[data-index="'+editors.data[t].id+'"] > span:eq(0)').text()),$("#dialogCloseEditor").data("index",t),!1)},removeAfter:function(e,t){0===$(".edit-panel .tabs > div").length&&menu.disabled(["close-all"]);for(var o=0,i=editors.data.length;i>o;o++)if(editors.data[o].id===e){editors.data.splice(o,1);break}return 0===editors.data.length?(menu.disabled(["save-all","build","run","go-test","go-vet","go-get","go-install","find","find-next","find-previous","replace","replace-all","format","autocomplete","jump-to-decl","expr-info","find-usages","toggle-comment","edit"]),tree.fileTree.cancelSelectedNode(),wide.curNode=void 0,wide.curEditor=void 0,wide.refreshOutline(),$(".footer .cursor").text(""),!1):t?t===editors.tabs.getCurrentId()?!1:void 0:(tree.fileTree.cancelSelectedNode(),wide.curNode=void 0,wide.curEditor=void 0,wide.refreshOutline(),$(".footer .cursor").text(""),!1)}}),this._initCodeMirrorHotKeys(),this.openStartPage(),this._initClose()},openStartPage:function(){wide.curEditor=void 0,wide.refreshOutline(),$(".footer .cursor").text("");var e=function(e,t){var o=new Date(e),i={"M+":o.getMonth()+1,"d+":o.getDate(),"h+":o.getHours(),"m+":o.getMinutes(),"s+":o.getSeconds(),"q+":Math.floor((o.getMonth()+3)/3),S:o.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(o.getFullYear()+"").substr(4-RegExp.$1.length)));for(var r in i)new RegExp("("+r+")").test(t)&&(t=t.replace(RegExp.$1,1===RegExp.$1.length?i[r]:("00"+i[r]).substr((""+i[r]).length)));return t};editors.tabs.add({id:"startPage",title:' '+config.label.start_page+"",content:'
',after:function(){$("#startPage").load(config.context+"/start?sid="+config.wideSessionId),$.ajax({url:"https://symphony.b3log.org/apis/articles?tags=wide,golang&p=1&size=20",type:"GET",dataType:"jsonp",jsonp:"callback",success:function(t,o){var i=t.articles;if(0!==i.length){var r=i.length;r>9&&(r=9);for(var n="
  • "+config.label.community+"
  • ",a=0;r>a;a++){var s=i[a];n+="
  • "+s.articleTitle+"  "+e(s.articleCreateTime,"yyyy-MM-dd")}$("#startPage .news").html(n+"
")}}})}})},getCurrentId:function(){var e=editors.tabs.getCurrentId();return"startPage"===e&&(e=null),e},getCurrentPath:function(){var e=$(".edit-panel .tabs .current span:eq(0)").attr("title");return e===config.label.start_page&&(e=null),e},_initCodeMirrorHotKeys:function(){CodeMirror.registerHelper("hint","go",function(e){e=wide.curEditor;for(var t=/[\w$]+/,o=e.getCursor(),i=e.getLine(o.line),r=o.ch,n=r;n span:eq(0)").attr("title"),a.code=e.getValue(),a.cursorLine=o.line,a.cursorCh=o.ch;var s=[];return editors.autocompleteMutex&&e.state.completionActive?void 0:(editors.autocompleteMutex=!0,$.ajax({async:!1,type:"POST",url:config.context+"/autocomplete",data:JSON.stringify(a),dataType:"json",success:function(t){var o=t[1];if(o)for(var i=0;i'+o[i].name+" "+o[i].type+"
";break;case"const":r=''+o[i].name+" "+o[i].type+"";break;case"var":r=''+o[i].name+" "+o[i].type+"";break;case"package":r=''+o[i].name+" "+o[i].type+"";break;case"func":r=''+o[i].name+""+o[i].type.substring(4)+"",n+="()";break;default:console.warn("Can't handle autocomplete ["+o[i]["class"]+"]")}s[i]={displayText:r,text:n}}e.doc.markClean(),$(".edit-panel .tabs .current > span:eq(0)").removeClass("changed")}}),setTimeout(function(){editors.autocompleteMutex=!1},20),{list:s,from:CodeMirror.Pos(o.line,r),to:CodeMirror.Pos(o.line,n)})}),CodeMirror.commands.autocompleteAfterDot=function(e){var t=e.getMode();if(t&&"go"!==t.name)return CodeMirror.Pass;var o=e.getTokenAt(e.getCursor());return"comment"===o.type||"string"===o.type?CodeMirror.Pass:(setTimeout(function(){e.state.completionActive||e.showHint({hint:CodeMirror.hint.go,completeSingle:!1})},50),CodeMirror.Pass)},CodeMirror.commands.autocompleteAnyWord=function(e){e.showHint({hint:CodeMirror.hint.auto})},CodeMirror.commands.gotoLine=function(e){$("#dialogGoLinePrompt").dialog("open")},CodeMirror.commands.doNothing=function(e){},CodeMirror.commands.exprInfo=function(e){var t=wide.curEditor.getCursor(),o=newWideRequest();o.path=$(".edit-panel .tabs .current > span:eq(0)").attr("title"),o.code=wide.curEditor.getValue(),o.cursorLine=t.line,o.cursorCh=t.ch,$.ajax({type:"POST",url:config.context+"/exprinfo",data:JSON.stringify(o),dataType:"json",success:function(e){if(e.succ){var t=wide.curEditor.cursorCoords();$("body").append('
'+e.data+"
")}}})},CodeMirror.commands.copyLinesDown=function(e){var t="",o=e.listSelections()[0],i=o.anchor,r=o.head;i.line>r.line&&(i=o.head,r=o.anchor);for(var n=i.line,a=r.line;a>=n;n++)(0!==r.ch||n!==a)&&(t+="\n"+e.getLine(n));var s=r.line;0===r.ch&&(s=r.line-1),e.replaceRange(t,CodeMirror.Pos(s));var d=s-i.line+1;e.setSelection(CodeMirror.Pos(i.line+d,i.ch),CodeMirror.Pos(r.line+d,r.ch))},CodeMirror.commands.copyLinesUp=function(e){var t="",o=e.listSelections()[0],i=o.anchor,r=o.head;i.line>r.line&&(i=o.head,r=o.anchor);for(var n=i.line,a=r.line;a>=n;n++)(0!==r.ch||n!==a)&&(t+="\n"+e.getLine(n));var s=r.line;0===r.ch&&(s=r.line-1),e.replaceRange(t,CodeMirror.Pos(s)),e.setSelection(CodeMirror.Pos(i.line,i.ch),CodeMirror.Pos(r.line,r.ch))},CodeMirror.commands.moveLinesUp=function(e){var t=e.listSelections()[0],o=t.anchor,i=t.head;if(o.line>i.line&&(o=t.head,i=t.anchor),0===o.line)return!1;var r=i.line;0===i.ch&&(r=i.line-1),e.replaceRange("\n"+e.getLine(o.line-1),CodeMirror.Pos(r)),1===o.line?e.replaceRange("",CodeMirror.Pos(0,0),CodeMirror.Pos(1,0)):e.replaceRange("",CodeMirror.Pos(o.line-2,e.getLine(o.line-2).length),CodeMirror.Pos(o.line-1,e.getLine(o.line-1).length)),e.setSelection(CodeMirror.Pos(o.line-1,o.ch),CodeMirror.Pos(i.line-1,i.ch))},CodeMirror.commands.moveLinesDown=function(e){var t=e.listSelections()[0],o=t.anchor,i=t.head;if(o.line>i.line&&(o=t.head,i=t.anchor),i.line===e.lastLine())return!1;var r=i.line;0===i.ch&&(r=i.line-1),0===o.line?e.replaceRange(e.getLine(r+1)+"\n",CodeMirror.Pos(0,0)):e.replaceRange("\n"+e.getLine(r+1),CodeMirror.Pos(o.line-1)),e.replaceRange("",CodeMirror.Pos(r+1,e.getLine(r+1).length),CodeMirror.Pos(r+2,e.getLine(r+2).length)),e.setSelection(CodeMirror.Pos(o.line+1,o.ch),CodeMirror.Pos(i.line+1,i.ch))},CodeMirror.commands.jumpToDecl=function(e){var t=wide.curEditor.getCursor(),o=newWideRequest();o.path=$(".edit-panel .tabs .current > span:eq(0)").attr("title"),o.code=wide.curEditor.getValue(),o.cursorLine=t.line,o.cursorCh=t.ch,$.ajax({type:"POST",url:config.context+"/find/decl",data:JSON.stringify(o),dataType:"json",success:function(e){if(e.succ){var t=e.data,o=tree.getTIdByPath(t.path);wide.curNode=tree.fileTree.getNodeByTId(o),tree.fileTree.selectNode(wide.curNode),tree.openFile(wide.curNode,CodeMirror.Pos(t.cursorLine-1,t.cursorCh-1))}}})},CodeMirror.commands.findUsages=function(e){var t=wide.curEditor.getCursor(),o=newWideRequest();o.path=$(".edit-panel .tabs .current > span:eq(0)").attr("title"),o.code=wide.curEditor.getValue(),o.cursorLine=t.line,o.cursorCh=t.ch,$.ajax({type:"POST",url:config.context+"/find/usages",data:JSON.stringify(o),dataType:"json",success:function(e){e.succ&&editors.appendSearch(e.data,"usages","")}})},CodeMirror.commands.selectIdentifier=function(e){var t=e.getCursor(),o=e.findWordAt(t);e.extendSelection(o.anchor,o.head)}},appendSearch:function(e,t,o){for(var i='
    ',o=o.toLowerCase(),r=0,n=e.length;n>r;r++){for(var a="",s=e[r].contents[0].toLowerCase(),d=s.split(o),l=0,c=0,u=0,p=d.length;p>u;u++){l=c+d[u].length,c=l+o.length;var f=e[r].contents[0].substring(l,c);""!==f&&(f=""+f+""),a+=e[r].contents[0].substring(l-d[u].length,l)+f}i+='
  • '+a+"    "+e[r].path+' ('+e[r].line+":"+e[r].ch+")
  • "}0===e.length&&(i+="
  • "+config.label.search_no_match+"
  • "),i+="
";var g=$(".bottom-window-group .search"),h=config.label.find_usages;"founds"===t&&(h=config.label.search_text),0===g.find("ul").length?(bottomGroup.searchTab=new Tabs({id:".bottom-window-group .search",removeAfter:function(e,t){1===g.find("ul").length&&g.find(".tabs").hide()}}),g.on("click","li",function(){g.find("li").removeClass("selected"),$(this).addClass("selected")}),g.on("dblclick","li",function(){var e=$(this),t=tree.getTIdByPath(e.attr("title"));tree.openFile(tree.fileTree.getNodeByTId(t)),tree.fileTree.selectNode(wide.curNode);var o=e.find(".position").data("line")-1,i=CodeMirror.Pos(o,e.find(".position").data("ch")-1),r=wide.curEditor;r.setCursor(i);var n=Math.floor(r.getScrollInfo().clientHeight/r.defaultTextHeight()/2),a=r.cursorCoords({line:i.line-n,ch:0},"local");r.scrollTo(0,a.top),wide.curEditor.focus()}),g.find(".tabs-panel > div").append(i),g.find(".tabs .first").text(h)):(g.find(".tabs").show(),bottomGroup.searchTab.add({id:"search"+(new Date).getTime(),title:h,content:i})),bottomGroup.tabs.setCurrent("search"),windows.flowBottom(),$(".bottom-window-group .search").focus()},newEditor:function(e,t){var o=wide.curNode.id;editors.tabs.add({id:o,title:''+wide.curNode.name+"",content:''}),menu.undisabled(["save-all","close-all","build","run","go-test","go-vet","go-get","go-install","find","find-next","find-previous","replace","replace-all","format","autocomplete","jump-to-decl","expr-info","find-usages","toggle-comment","edit"]);var i=document.getElementById("editor"+o);i.value=e.content;var r=CodeMirror.fromTextArea(i,{lineNumbers:!0,autofocus:!0,autoCloseBrackets:!0,matchBrackets:!0,highlightSelectionMatches:{showToken:/\w/},rulers:[{color:"#ccc",column:120,lineStyle:"dashed"}],styleActiveLine:!0,theme:config.editorTheme,tabSize:config.editorTabSize,indentUnit:4,indentWithTabs:!0,foldGutter:!0,cursorHeight:1,path:e.path,readOnly:wide.curNode.isGOAPI,profile:"xhtml",extraKeys:{"Ctrl-\\":"autocompleteAnyWord",".":"autocompleteAfterDot","Ctrl-/":"toggleComment","Ctrl-I":"exprInfo","Ctrl-L":"gotoLine","Ctrl-E":"deleteLine","Ctrl-D":"doNothing","Ctrl-B":"jumpToDecl","Ctrl-S":function(){wide.saveFile()},"Shift-Ctrl-S":function(){menu.saveAllFiles()},"Shift-Alt-F":function(){var e=editors.getCurrentPath();return e?void wide.fmt(e,wide.curEditor):!1},"Alt-F7":"findUsages","Shift-Alt-Enter":function(){windows.isMaxEditor?windows.restoreEditor():windows.maxEditor()},"Shift-Ctrl-Up":"copyLinesUp","Shift-Ctrl-Down":"copyLinesDown","Shift-Alt-Up":"moveLinesUp","Shift-Alt-Down":"moveLinesDown","Shift-Alt-J":"selectIdentifier"}});"text/html"===e.mode&&emmetCodeMirror(r),r.on("cursorActivity",function(e){$(".edit-exprinfo").remove();var t=e.getCursor();$(".footer .cursor").text("| "+(t.line+1)+":"+(t.ch+1)+" |")}),r.on("blur",function(e){$(".edit-exprinfo").remove()}),r.on("changes",function(e){return e.doc.isClean()?void $(".edit-panel .tabs > div").each(function(){var t=$(this).find("span:eq(0)");t.attr("title")===e.options.path&&t.removeClass("changed")}):void $(".edit-panel .tabs > div").each(function(){var t=$(this).find("span:eq(0)");t.attr("title")===e.options.path&&t.addClass("changed")})}),r.on("keydown",function(e,t){if(!(t.altKey||t.ctrlKey||t.shiftKey)){var o=t.which;48>o||o>57&&65>o||o>90||config.autocomplete&&.5<=Math.random()&&CodeMirror.commands.autocompleteAfterDot(e)}}),r.setSize("100%",$(".edit-panel").height()-$(".edit-panel .tabs").height()),r.setOption("mode",e.mode),r.setOption("gutters",["CodeMirror-lint-markers","CodeMirror-foldgutter"]),"wide"!==config.keymap&&r.setOption("keyMap",config.keymap),("text/x-go"===e.mode||"application/json"===e.mode)&&r.setOption("lint",!0),("application/xml"===e.mode||"text/html"===e.mode)&&r.setOption("autoCloseTags",!0),wide.curEditor=r,editors.data.push({editor:r,id:o}),$(".footer .cursor").text("| "+(t.line+1)+":"+(t.ch+1)+" |");var n=Math.floor(wide.curEditor.getScrollInfo().clientHeight/wide.curEditor.defaultTextHeight()/2),a=wide.curEditor.cursorCoords({line:t.line-n,ch:0},"local");wide.curEditor.scrollTo(0,a.top),r.setCursor(t),r.focus()}}; +var notification={init:function(){$(".notification-count").click(function(){bottomGroup.tabs.setCurrent("notification"),$(".bottom-window-group .notification").focus(),$(this).hide()}),this._initWS()},_initWS:function(){var o=new ReconnectingWebSocket(config.channel+"/notification/ws?sid="+config.wideSessionId);o.onopen=function(){console.log("[notification onopen] connected")},o.onmessage=function(o){var n=JSON.parse(o.data),i=$(".bottom-window-group .notification > table"),t="";return n.cmd&&"init-notification"===n.cmd?void console.log("[notification onmessage]"+o.data):(t+=''+n.severity+''+n.message+''+n.type+"",i.append(t),void $(".notification-count").show())},o.onclose=function(o){console.log("[notification onclose] disconnected ("+o.code+")")},o.onerror=function(o){console.log("[notification onerror]")}}}; +var tree={fileTree:void 0,getCurrentNodeLastNode:function(e){var t=e.children[e.children.length-1];return t.open?tree.getCurrentNodeLastNode(t):t},getNextShowNode:function(e){return 0!==e.level?e.getParentNode().getNextNode()?e.getParentNode().getNextNode():tree.getNextShowNode(e.getParentNode()):e.getNextNode()},isBottomNode:function(e){return e.open?!1:e.getParentNode()?e.getParentNode().isLastNode?tree.isBottomNode(e.getParentNode()):!1:e.isLastNode?!0:!1},getTIdByPath:function(e){for(var t=tree.fileTree.transformToArray(tree.fileTree.getNodes()),i=0,o=t.length;o>i;i++)if(t[i].path===e)return t[i].tId},getOpenPaths:function(){for(var e=tree.fileTree.transformToArray(tree.fileTree.getNodes()),t=[],i=0,o=e.length;o>i;i++)e[i].open&&t.push(e[i].path);return t},getAllParents:function(e,t){return t||(t=[]),e&&e.parentTId?(t.push(e.getParentNode()),tree.getAllParents(e.getParentNode(),t)):t},isParents:function(e,t){var i=tree.fileTree.getNodeByTId(e);if(i&&i.parentTId){var o=tree.fileTree.getNodeByTId(i.parentTId);return i.path===t?!0:tree.isParents(o.tId,t)}return!1},isDir:function(){return 0===wide.curNode.iconSkin.indexOf("ico-ztree-dir")?!0:!1},newFile:function(e){return $(e).hasClass("disabled")?!1:void $("#dialogNewFilePrompt").dialog("open")},newDir:function(e){return $(e).hasClass("disabled")?!1:void $("#dialogNewDirPrompt").dialog("open")},removeIt:function(e){if(e){if($(e).hasClass("disabled"))return!1}else if(!wide.curNode.removable)return!1;$("#dialogRemoveConfirm").dialog("open")},rename:function(e){return e&&$(e).hasClass("disabled")?!1:void $("#dialogRenamePrompt").dialog("open")},"export":function(){var e=newWideRequest(),t=!1;e.path=wide.curNode.path,$.ajax({async:!1,type:"POST",url:config.context+"/file/zip/new",data:JSON.stringify(e),dataType:"json",success:function(e){return e.succ?void(t=!0):($("#dialogAlert").dialog("open",e.msg),!1)}}),t&&window.open(config.context+"/file/zip?path="+wide.curNode.path+".zip")},crossCompile:function(e){var t=newWideRequest();t.path=wide.curNode.path,t.platform=e,$.ajax({async:!1,type:"POST",url:config.context+"/cross",data:JSON.stringify(t),dataType:"json",success:function(e){return e.succ?void 0:($("#dialogAlert").dialog("open",e.msg),!1)}})},decompress:function(){var e=newWideRequest();e.path=wide.curNode.path,$.ajax({async:!1,type:"POST",url:config.context+"/file/decompress",data:JSON.stringify(e),dataType:"json",success:function(e){if(!e.succ)return $("#dialogAlert").dialog("open",e.msg),!1;var t=wide.curNode.getParentNode();tree.fileTree.reAsyncChildNodes(t,"refresh")}})},refresh:function(e){return e&&$(e).hasClass("disabled")?!1:void tree.fileTree.reAsyncChildNodes(wide.curNode,"refresh",!0)},gitClone:function(e){return e&&$(e).hasClass("disabled")?!1:void $("#dialogGitClonePrompt").dialog("open")},"import":function(){var e=newWideRequest();e.path=wide.curNode.path,$("#importFileupload").fileupload({url:"/file/upload?path="+e.path,dataType:"json",formData:e,done:function(e,t){tree.fileTree.reAsyncChildNodes(wide.curNode,"refresh")},fail:function(){console.log(arguments)}})},init:function(){$("#file").click(function(){$(this).focus()});var e=newWideRequest();$.ajax({type:"POST",url:config.context+"/files",data:JSON.stringify(e),dataType:"json",success:function(e){if(e.succ){var t=$("#dirRMenu"),i=$("#fileRMenu"),o={data:{key:{title:"path"}},view:{showTitle:!0,selectedMulti:!1},async:{enable:!0,url:config.context+"/file/refresh",autoParam:["path"]},callback:{onDblClick:function(e,t,i){i&&tree.openFile(i)},onRightClick:function(e,o,r){if(r&&!r.isGOAPI){if(menu.undisabled(["import","export","git-clone"]),wide.curNode=r,tree.fileTree.selectNode(r),tree.isDir()){wide.curNode.removable?t.find(".remove").removeClass("disabled"):t.find(".remove").addClass("disabled"),wide.curNode.creatable?t.find(".create").removeClass("disabled"):t.find(".create").addClass("disabled");var n=e.clientY-10;t.height()+n>$(".content").height()&&(n=n-t.height()-25),t.css({top:n+"px",left:e.clientX+"px",display:"block"}).show(),i.hide()}else{wide.curNode.removable?i.find(".remove").removeClass("disabled"):i.find(".remove").addClass("disabled"),-1===wide.curNode.path.indexOf("zip",wide.curNode.path.length-"zip".length)?i.find(".decompress").hide():i.find(".decompress").show(),-1===wide.curNode.path.indexOf("go",wide.curNode.path.length-"go".length)?i.find(".linux64").hide():i.find(".linux64").show();var n=e.clientY-10;i.height()+n>$(".content").height()&&(n=n-i.height()-25),i.css({top:n+"px",left:e.clientX+"px",display:"block"}).show(),t.hide(),menu.disabled(["import","git-clone"])}$("#files").focus()}},onClick:function(e,t,i,o){i&&(wide.curNode=i,tree.fileTree.selectNode(i),menu.undisabled(["import","export","git-clone"]),tree.isDir()||menu.disabled(["import","git-clone"]),$("#files").focus())}}};tree.fileTree=$.fn.zTree.init($("#files"),o,e.data.children),session.restore()}}}),this._initSearch(),this._initRename()},openFile:function(e,t){wide.curNode=e;for(var i=t,o=0,r=editors.data.length;r>o;o++)if(editors.data[o].id===e.path){editors.tabs.setCurrent(e.path),wide.curEditor=editors.data[o].editor,i||(i=wide.curEditor.getCursor()),$(".footer .cursor").text("| "+(i.line+1)+":"+(i.ch+1)+" |"),wide.curEditor.setCursor(i);var n=Math.floor(wide.curEditor.getScrollInfo().clientHeight/wide.curEditor.defaultTextHeight()/2),a=wide.curEditor.cursorCoords({line:i.line-n,ch:0},"local");return wide.curEditor.scrollTo(0,a.top),wide.curEditor.focus(),wide.refreshOutline(),!1}if(!tree.isDir()){var d=newWideRequest();d.path=e.path,$.ajax({async:!1,type:"POST",url:config.context+"/file",data:JSON.stringify(d),dataType:"json",success:function(t){if(!t.succ)return $("#dialogAlert").dialog("open",t.msg),!1;var o=t.data;if(!o.mode){var r=CodeMirror.findModeByFileName(e.path);r?o.mode=r.mime:o.mode="text/plain"}if(o.mode||console.error("Can't find mode by file name ["+e.path+"]"),"img"===o.mode){window.open(config.context+o.path);return!1}i||(i=CodeMirror.Pos(0,0)),editors.newEditor(o,i),wide.refreshOutline()}})}},_initSearch:function(){$("#dialogSearchForm > input:eq(0)").keyup(function(e){var t=$(this).closest(".dialog-main").find(".dialog-footer > button:eq(0)");13!==e.which||t.prop("disabled")||t.click(),""===$.trim($(this).val())?t.prop("disabled",!0):t.prop("disabled",!1)}),$("#dialogSearchForm > input:eq(1)").keyup(function(e){var t=$(this).closest(".dialog-main").find(".dialog-footer > button:eq(0)");13!==e.which||t.prop("disabled")||t.click()}),$("#dialogSearchForm").dialog({modal:!0,height:80,width:260,title:config.label.search,okText:config.label.search,cancelText:config.label.cancel,afterOpen:function(){$("#dialogSearchForm > input:eq(0)").val("").focus(),$("#dialogSearchForm > input:eq(1)").val(""),$("#dialogSearchForm").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0)},ok:function(){var e=newWideRequest();wide.curNode?e.dir=wide.curNode.path:e.dir="",e.text=$("#dialogSearchForm > input:eq(0)").val(),e.extension=$("#dialogSearchForm > input:eq(1)").val(),$.ajax({type:"POST",url:config.context+"/file/search/text",data:JSON.stringify(e),dataType:"json",success:function(t){t.succ&&($("#dialogSearchForm").dialog("close"),editors.appendSearch(t.data,"founds",e.text))}})}})},_initRename:function(){$("#dialogRenamePrompt").dialog({modal:!0,height:52,width:260,title:config.label.rename,okText:config.label.rename,cancelText:config.label.cancel,afterOpen:function(){$("#dialogRenamePrompt").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0),$("#dialogRenamePrompt > input").val(wide.curNode.name).select().focus()},ok:function(){var e=$("#dialogRenamePrompt > input").val(),t=newWideRequest();t.oldPath=wide.curNode.path,t.newPath=wide.curNode.path.substring(0,wide.curNode.path.lastIndexOf("/")+1)+e,$.ajax({type:"POST",url:config.context+"/file/rename",data:JSON.stringify(t),dataType:"json",success:function(e){return e.succ?void $("#dialogRenamePrompt").dialog("close"):($("#dialogRenamePrompt").dialog("close"),bottomGroup.tabs.setCurrent("notification"),windows.flowBottom(),$(".bottom-window-group .notification").focus(),!1)}})}})}}; +var wide={curNode:void 0,curEditor:void 0,curProcessId:void 0,refreshOutline:function(){if(!wide.curEditor||wide.curEditor&&"go"!==wide.curEditor.doc.getMode().name)return $("#outline").html(""),!1;var e=newWideRequest();e.code=wide.curEditor.getValue(),$.ajax({type:"POST",async:!1,url:config.context+"/outline",data:JSON.stringify(e),dataType:"json",success:function(e){if(e.succ){for(var t=e.data,o='
    ',i=["constDecls","varDecls","funcDecls","structDecls","interfaceDecls","typeDecls"],a=0,n=i.length;n>a;a++)for(var l=i[a],r=0,c=t[l].length;c>r;r++){var s=t[l][r];o+='
  • '+s.Name+"
  • "}$("#outline").html(o+"
"),$("#outline li").dblclick(function(){var e=$(this),t=CodeMirror.Pos(e.data("line"),e.data("ch")),o=wide.curEditor;o.setCursor(t);var i=Math.floor(o.getScrollInfo().clientHeight/o.defaultTextHeight()/2),a=o.cursorCoords({line:t.line-i,ch:0},"local");o.scrollTo(0,a.top),o.focus()})}}})},_initDialog:function(){$(".dialog-prompt > input").keyup(function(e){var t=$(this).closest(".dialog-main").find(".dialog-footer > button:eq(0)");13!==e.which||t.prop("disabled")||t.click(),""===$.trim($(this).val())?t.prop("disabled",!0):t.prop("disabled",!1)}),$("#dialogAlert").dialog({modal:!0,height:40,width:350,title:config.label.tip,hiddenOk:!0,cancelText:config.label.confirm,afterOpen:function(e){$("#dialogAlert").html(e)}}),$("#dialogRemoveConfirm").dialog({modal:!0,height:36,width:260,title:config.label["delete"],okText:config.label["delete"],cancelText:config.label.cancel,afterOpen:function(){$("#dialogRemoveConfirm > b").html('"'+wide.curNode.name+'"')},ok:function(){var e=newWideRequest();e.path=wide.curNode.path,$.ajax({type:"POST",url:config.context+"/file/remove",data:JSON.stringify(e),dataType:"json",success:function(e){return e.succ?void $("#dialogRemoveConfirm").dialog("close"):($("#dialogRemoveConfirm").dialog("close"),bottomGroup.tabs.setCurrent("notification"),windows.flowBottom(),$(".bottom-window-group .notification").focus(),!1)}})}}),$("#dialogNewFilePrompt").dialog({modal:!0,height:52,width:260,title:config.label.create_file,okText:config.label.create,cancelText:config.label.cancel,afterOpen:function(){$("#dialogNewFilePrompt > input").val("").focus(),$("#dialogNewFilePrompt").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0)},ok:function(){var e=newWideRequest(),t=$("#dialogNewFilePrompt > input").val();e.path=wide.curNode.path+"/"+t,e.fileType="f",$.ajax({type:"POST",url:config.context+"/file/new",data:JSON.stringify(e),dataType:"json",success:function(t){return t.succ?($("#dialogNewFilePrompt").dialog("close"),void setTimeout(function(){var t=tree.getTIdByPath(e.path);tree.openFile(tree.fileTree.getNodeByTId(t)),tree.fileTree.selectNode(wide.curNode)},100)):($("#dialogNewFilePrompt").dialog("close"),bottomGroup.tabs.setCurrent("notification"),windows.flowBottom(),$(".bottom-window-group .notification").focus(),!1)}})}}),$("#dialogNewDirPrompt").dialog({modal:!0,height:52,width:260,title:config.label.create_dir,okText:config.label.create,cancelText:config.label.cancel,afterOpen:function(){$("#dialogNewDirPrompt > input").val("").focus(),$("#dialogNewDirPrompt").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0)},ok:function(){var e=$("#dialogNewDirPrompt > input").val(),t=newWideRequest();t.path=wide.curNode.path+"/"+e,t.fileType="d",$.ajax({type:"POST",url:config.context+"/file/new",data:JSON.stringify(t),dataType:"json",success:function(e){return e.succ?void $("#dialogNewDirPrompt").dialog("close"):($("#dialogNewDirPrompt").dialog("close"),bottomGroup.tabs.setCurrent("notification"),windows.flowBottom(),$(".bottom-window-group .notification").focus(),!1)}})}}),$("#dialogGoFilePrompt").dialog({modal:!0,height:320,width:660,title:config.label.goto_file,okText:config.label.go,cancelText:config.label.cancel,afterInit:function(){$("#dialogGoFilePrompt").on("dblclick","li",function(){var e=tree.getTIdByPath($(this).find(".ft-small").text());tree.openFile(tree.fileTree.getNodeByTId(e)),tree.fileTree.selectNode(wide.curNode),$("#dialogGoFilePrompt").dialog("close"),wide.curEditor.focus()}),$("#dialogGoFilePrompt").on("click","li",function(){var e=$("#dialogGoFilePrompt > .list");e.find("li").removeClass("selected"),e.data("index",$(this).data("index")),$(this).addClass("selected")}),hotkeys.bindList($("#dialogGoFilePrompt > input"),$("#dialogGoFilePrompt > .list"),function(e){var t=tree.getTIdByPath(e.find(".ft-small").text());tree.openFile(tree.fileTree.getNodeByTId(t)),tree.fileTree.selectNode(wide.curNode),$("#dialogGoFilePrompt").dialog("close"),wide.curEditor.focus()}),$("#dialogGoFilePrompt > input").bind("input",function(){var e=$("#dialogGoFilePrompt > input").val(),t=newWideRequest();t.path="",t.name="*"+e+"*",wide.curNode&&(t.path=wide.curNode.path),$.ajax({type:"POST",url:config.context+"/file/find/name",data:JSON.stringify(t),dataType:"json",success:function(e){if(e.succ){for(var t=e.data,o="",i=0,a=t.length;a>i;i++){var n=t[i].path,l=n.substr(n.lastIndexOf("/")+1),r=wide.getClassBySuffix(l.split(".")[1]);o+=0===i?'
  • '+l+'    '+n+"
  • ":'
  • '+l+'    '+n+"
  • "}$("#dialogGoFilePrompt > ul").html(o)}}})})},afterOpen:function(){$("#dialogGoFilePrompt > input").val("").focus(),$("#dialogGoFilePrompt").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0),$("#dialogGoFilePrompt .list").html("").data("index",0)},ok:function(){var e=tree.getTIdByPath($("#dialogGoFilePrompt .selected .ft-small").text());tree.openFile(tree.fileTree.getNodeByTId(e)),tree.fileTree.selectNode(wide.curNode),$("#dialogGoFilePrompt").dialog("close"),wide.curEditor.focus()}}),$("#dialogGoLinePrompt").dialog({modal:!0,height:52,width:260,title:config.label.goto_line,okText:config.label.go,cancelText:config.label.cancel,afterOpen:function(){$("#dialogGoLinePrompt > input").val("").focus(),$("#dialogGoLinePrompt").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0)},ok:function(){var e=parseInt($("#dialogGoLinePrompt > input").val())-1;$("#dialogGoLinePrompt").dialog("close");var t=wide.curEditor,o=t.getCursor();t.setCursor(CodeMirror.Pos(e,o.ch));var i=Math.floor(t.getScrollInfo().clientHeight/t.defaultTextHeight()/2),a=t.cursorCoords({line:e-i,ch:o.ch},"local");t.scrollTo(0,a.top),t.focus()}}),$("#dialogGitClonePrompt").dialog({modal:!0,height:52,width:360,title:config.label.git_clone,okText:config.label.confirm,cancelText:config.label.cancel,afterOpen:function(){$("#dialogGitClonePrompt > input").val("").focus(),$("#dialogGitClonePrompt").closest(".dialog-main").find(".dialog-footer > button:eq(0)").prop("disabled",!0)},ok:function(){$("#dialogGitClonePrompt").dialog("close");var e=newWideRequest();e.path=wide.curNode.path,e.repository=$("#dialogGitClonePrompt > input").val(),$.ajax({type:"POST",url:config.context+"/git/clone",data:JSON.stringify(e),dataType:"json",success:function(e){}})}})},_initWS:function(){var e=new ReconnectingWebSocket(config.channel+"/output/ws?sid="+config.wideSessionId);e.onopen=function(){console.log("[output onopen] connected")},e.onmessage=function(e){console.log("[output onmessage]"+e.data);var t=JSON.parse(e.data);if(goLintFound&&(goLintFound=[]),"run"===t.nextCmd){var o=newWideRequest();o.executable=t.executable,$.ajax({type:"POST",url:config.context+"/run",data:JSON.stringify(o),dataType:"json"})}switch(t.cmd){case"run":var i=$(".bottom-window-group .output > div").html();wide.curProcessId&&""!==i?bottomGroup.fillOutput(i.replace(/<\/pre>$/g,t.output+"")):bottomGroup.fillOutput(i+"
    "+t.output+"
    "),wide.curProcessId=t.pid;break;case"run-done":bottomGroup.fillOutput($(".bottom-window-group .output > div").html().replace(/<\/pre>$/g,t.output+"")),wide.curProcessId=void 0,$("#buildRun").removeClass("ico-stop").addClass("ico-buildrun").attr("title",config.label.build_n_run);break;case"start-build":case"start-test":case"start-vet":case"start-install":case"start-get":case"start-git_clone":bottomGroup.fillOutput(t.output);break;case"go test":case"go vet":case"go install":case"go get":bottomGroup.fillOutput($(".bottom-window-group .output > div").html()+t.output);break;case"git clone":bottomGroup.fillOutput($(".bottom-window-group .output > div").html()+t.output),tree.fileTree.reAsyncChildNodes(wide.curNode,"refresh",!1);break;case"build":case"cross-build":if(bottomGroup.fillOutput($(".bottom-window-group .output > div").html()+t.output),t.lints){for(var a={},n=0;n ul > li").unbind().removeClass("selected"),menu.subMenu())))}),window.onbeforeunload=function(){return editors.data.length>0?config.label.confirm_save:void 0},document.oncontextmenu=function(){return!1},this._initDialog()},_save:function(e,t){if(!e)return!1;var o=newWideRequest();o.file=e,o.code=t.getValue(),$.ajax({type:"POST",url:config.context+"/file/save",data:JSON.stringify(o),dataType:"json",success:function(o){t.doc.markClean(),$(".edit-panel .tabs > div").each(function(){var t=$(this).find("span:eq(0)");t.attr("title")===e&&t.removeClass("changed")})}})},saveFile:function(){var e=editors.getCurrentPath();if(!e)return!1;var t=wide.curEditor;if(t.doc.isClean())return!1;if("text/x-go"===t.getOption("mode")){wide.gofmt(e,wide.curEditor);var o=newWideRequest();return o.file=e,o.code=t.getValue(),o.nextCmd="",$.ajax({type:"POST",url:config.context+"/build",data:JSON.stringify(o),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){}}),void wide.refreshOutline()}wide._save(e,wide.curEditor)},stop:function(){if($("#buildRun").hasClass("ico-buildrun"))return menu.run(),!1;if(!wide.curProcessId)return!1;var e=newWideRequest();e.pid=wide.curProcessId,$.ajax({type:"POST",url:config.context+"/stop",data:JSON.stringify(e),dataType:"json",success:function(e){$("#buildRun").removeClass("ico-stop").addClass("ico-buildrun").attr("title",config.label.build_n_run)}})},gofmt:function(e,t){var o=t.getCursor(),i=t.getScrollInfo(),a=newWideRequest();a.file=e,a.code=t.getValue(),a.cursorLine=o.line,a.cursorCh=o.ch,$.ajax({async:!1,type:"POST",url:config.context+"/go/fmt",data:JSON.stringify(a),dataType:"json",success:function(a){a.succ&&(t.setValue(a.data.code),t.setCursor(o),t.scrollTo(null,i.top),wide._save(e,t))}})},fmt:function(e,t){var o=t.getOption("mode"),i=t.getCursor(),a=t.getScrollInfo(),n=newWideRequest();n.file=e,n.code=t.getValue(),n.cursorLine=i.line,n.cursorCh=i.ch;var l=null;switch(o){case"text/x-go":$.ajax({async:!1,type:"POST",url:config.context+"/go/fmt",data:JSON.stringify(n),dataType:"json",success:function(e){e.succ&&(l=e.data.code)}});break;case"text/html":l=html_beautify(t.getValue());break;case"text/javascript":case"application/json":l=js_beautify(t.getValue());break;case"text/css":l=css_beautify(t.getValue())}l&&(t.setValue(l),t.setCursor(i),t.scrollTo(null,a.top),wide._save(e,t))},getClassBySuffix:function(e){var t="ico-ztree-other ";switch(e){case"html":case"htm":t="ico-ztree-html ";break;case"go":t="ico-ztree-go ";break;case"css":t="ico-ztree-css ";break;case"txt":t="ico-ztree-text ";break;case"sql":t="ico-ztree-sql ";break;case"properties":t="ico-ztree-pro ";break;case"md":t="ico-ztree-md ";break;case"json":t="ico-ztree-js ";break;case"xml":t="ico-ztree-xml ";break;case"jpg":case"jpeg":case"bmp":case"gif":case"png":case"svg":case"ico":t="ico-ztree-img "}return t}};$(document).ready(function(){wide.init(),tree.init(),menu.init(),hotkeys.init(),session.init(),notification.init(),editors.init(),windows.init(),bottomGroup.init()}); +var session={init:function(){this._initWS();var e=function(e){var t="normal";return e.isClosed?t="min":e.size>=$("body").width()&&(t="max"),t};setInterval(function(){var t=newWideRequest(),s=[],o=[],n=editors.getCurrentId(),r=n?editors.getCurrentPath():"";editors.tabs.obj._$tabs.find("div").each(function(){var e=$(this);e.find("span:eq(0)").attr("title")!==config.label.start_page&&s.push(e.find("span:eq(0)").attr("title"))}),o=tree.getOpenPaths(),t.currentFile=r,t.fileTree=o,t.files=s,t.layout={side:{size:windows.outerLayout.west.state.size,state:e(windows.outerLayout.west.state)},sideRight:{size:windows.innerLayout.east.state.size,state:e(windows.innerLayout.east.state)},bottom:{size:windows.innerLayout.south.state.size,state:e(windows.innerLayout.south.state)}},$.ajax({type:"POST",url:config.context+"/session/save",data:JSON.stringify(t),dataType:"json",success:function(e){}})},3e4)},restore:function(){if(config.latestSessionContent){for(var e=config.latestSessionContent.fileTree,t=config.latestSessionContent.files,s=config.latestSessionContent.currentFile,o="",n=[],r=tree.fileTree.transformToArray(tree.fileTree.getNodes()),i=0,a=r.length;a>i;i++){for(var d=0,l=e.length;l>d;d++)if(r[i].path===e[d]){for(var c=tree.getAllParents(tree.fileTree.getNodeByTId(r[i].tId)),f=!0,g=0,p=c.length;p>g;g++)c[g].open===!1&&(f=!1);f?tree.fileTree.expandNode(r[i],!0,!1,!0):r[i].open=!0;break}for(var h=0,u=t.length;u>h;h++)if(r[i].path===t[h]){n.push(r[i]);break}r[i].path===s&&(o=r[i].path,tree.fileTree.selectNode(r[i]),wide.curNode=r[i])}for(var y=0,v=t.length;v>y;y++)for(var w=0,m=n.length;m>w;w++)if(n[w].path===t[y]){tree.openFile(n[w]);break}editors.tabs.setCurrent(o);for(var b=0,p=editors.data.length;p>b;b++)if(o===editors.data[b].id){wide.curEditor=editors.data[b].editor;break}}},_initWS:function(){var e=new ReconnectingWebSocket(config.channel+"/session/ws?sid="+config.wideSessionId);e.onopen=function(){console.log("[session onopen] connected");var e=function(e,t){var s=new Date(e),o={"M+":s.getMonth()+1,"d+":s.getDate(),"h+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(var n in o)new RegExp("("+n+")").test(t)&&(t=t.replace(RegExp.$1,1===RegExp.$1.length?o[n]:("00"+o[n]).substr((""+o[n]).length)));return t},t={type:"Network",severity:"INFO",message:"Connected to server [sid="+config.wideSessionId+"], "+e((new Date).getTime(),"yyyy-MM-dd hh:mm:ss")},s=$(".bottom-window-group .notification > table"),o="";o+=''+t.severity+''+t.message+''+t.type+"",s.append(o)},e.onmessage=function(e){var t=JSON.parse(e.data);switch(t.cmd){case"create-file":var s=tree.fileTree.getNodeByTId(tree.getTIdByPath(t.dir)),o=t.path.replace(t.dir+"/",""),n=CodeMirror.findModeByFileName(o),r=wide.getClassBySuffix(o.split(".")[1]);t.type&&"f"===t.type?tree.fileTree.addNodes(s,[{id:t.path,name:o,iconSkin:r,path:t.path,mode:n,removable:!0,creatable:!0}]):tree.fileTree.addNodes(s,[{id:t.path,name:o,iconSkin:"ico-ztree-dir ",path:t.path,removable:!0,creatable:!0,isParent:!0}]);break;case"remove-file":case"rename-file":var s=tree.fileTree.getNodeByTId(tree.getTIdByPath(t.path));tree.fileTree.removeNode(s);for(var i=tree.fileTree.transformToArray(s),a=0,d=i.length;d>a;a++)editors.tabs.del(i[a].path)}},e.onclose=function(e){console.log("[session onclose] disconnected ("+e.code+")");var t={type:"Network",severity:"ERROR",message:"Disconnected from server, trying to reconnect it [sid="+config.wideSessionId+"]"},s=$(".bottom-window-group .notification > table"),o="";o+=''+t.severity+''+t.message+''+t.type+"",s.append(o),$(".notification-count").show()},e.onerror=function(e){console.log("[session onerror]")}}}; +var menu={init:function(){this.subMenu(),this._initPreference(),this._initAbout(),this._initShare(),$(".menu .frame li").click(function(){$(".menu > ul > li").unbind().removeClass("selected"),menu.subMenu()})},_initShare:function(){$(".menu .ico-share").hover(function(){$(".menu .share-panel").show()}),$(".share-panel .font-ico").click(function(){var e=$(this).attr("class").split("-")[2],t="https://wide.b3log.org",a="https://wide.b3log.org/static/images/wide-logo.png",n={};n.email="mailto:?subject="+$("title").text()+"&body="+$("meta[name=description]").attr("content")+" "+t;var i=encodeURIComponent($("meta[name=description]").attr("content")+" "+t+" #golang");n.twitter="https://twitter.com/intent/tweet?status="+i,n.facebook="https://www.facebook.com/sharer/sharer.php?u="+t,n.googleplus="https://plus.google.com/share?url="+t;var o=encodeURIComponent($("title").text()+". \n"+$("meta[name=description]").attr("content")+" #golang#");n.weibo="http://v.t.sina.com.cn/share/share.php?title="+o+"&url="+t+"&pic="+a,n.tencent="http://share.v.t.qq.com/index.php?c=share&a=index&title="+o+"&url="+t+"&pic="+a,window.open(n[e],"_blank","top=100,left=200,width=648,height=618")})},_initAbout:function(){$("#dialogAbout").load(config.context+"/about",function(){$("#dialogAbout").dialog({modal:!0,title:config.label.about,hideFooter:!0,afterOpen:function(){$.ajax({url:"https://rhythm.b3log.org/version/wide/latest",type:"GET",dataType:"jsonp",jsonp:"callback",success:function(e,t){$("#dialogAbout .version").text()===e.wideVersion?$(".upgrade").text(config.label.uptodate):$(".upgrade").html(config.label.new_version_available+config.label.colon+""+e.wideVersion+"")}})}})})},disabled:function(e){for(var t=0,a=e.length;a>t;t++)$(".menu li."+e[t]).addClass("disabled")},undisabled:function(e){for(var t=0,a=e.length;a>t;t++)$(".menu li."+e[t]).removeClass("disabled")},subMenu:function(){$(".menu > ul > li").click(function(e){if(1!==$(e.target).closest(".frame").length){var t=$(this);t.find(".frame").show(),$(".menu > ul > li").removeClass("selected"),$(this).addClass("selected"),$(".menu > ul > li").unbind(),$(".menu > ul > li").mouseover(function(){1!==$(e.target).closest(".frame").length&&($(".menu .frame").hide(),$(this).find(".frame").show(),$(".menu > ul > li").removeClass("selected"),$(this).addClass("selected"))})}})},openPreference:function(){$("#dialogPreference").dialog("open")},saveAllFiles:function(){if($(".menu li.save-all").hasClass("disabled"))return!1;for(var e=0,t=editors.data.length;t>e;e++){var a=editors.data[e].id,n=editors.data[e].editor;"text/x-go"===n.getOption("mode")?wide.fmt(a,n):wide._save(a,n)}},closeAllFiles:function(){if($(".menu li.close-all").hasClass("disabled"))return!1;var e=[];$(".edit-panel .tabs > div").each(function(t){0!==t&&e.push($(this).data("index"))}),$("#dialogCloseEditor").data("removeData",e),$(".edit-panel .tabs .ico-close:eq(0)").click()},exit:function(){var e=newWideRequest();$.ajax({type:"POST",url:config.context+"/logout",data:JSON.stringify(e),dataType:"json",success:function(e){e.succ&&(window.location.href="/login")}})},openAbout:function(){$("#dialogAbout").dialog("open")},goget:function(){menu.saveAllFiles();var e=editors.getCurrentPath();if(!e)return!1;if($(".menu li.go-get").hasClass("disabled"))return!1;var t=newWideRequest();t.file=e,$.ajax({type:"POST",url:config.context+"/go/get",data:JSON.stringify(t),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){}})},goinstall:function(){menu.saveAllFiles();var e=editors.getCurrentPath();if(!e)return!1;if($(".menu li.go-install").hasClass("disabled"))return!1;var t=newWideRequest();t.file=e,$.ajax({type:"POST",url:config.context+"/go/install",data:JSON.stringify(t),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){}})},test:function(){menu.saveAllFiles();var e=editors.getCurrentPath();if(!e)return!1;if($(".menu li.go-test").hasClass("disabled"))return!1;var t=newWideRequest();t.file=e,$.ajax({type:"POST",url:config.context+"/go/test",data:JSON.stringify(t),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){}})},govet:function(){menu.saveAllFiles();var e=editors.getCurrentPath();if(!e)return!1;if($(".menu li.go-vet").hasClass("disabled"))return!1;var t=newWideRequest();t.file=e,$.ajax({type:"POST",url:config.context+"/go/vet",data:JSON.stringify(t),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){}})},run:function(){if(menu.saveAllFiles(),$("#buildRun").hasClass("ico-stop"))return wide.stop(),!1;var e=editors.getCurrentPath();if(!e)return!1;if($(".menu li.run").hasClass("disabled"))return!1;var t=newWideRequest();t.file=e,t.code=wide.curEditor.getValue(),t.nextCmd="run",$.ajax({type:"POST",url:config.context+"/build",data:JSON.stringify(t),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){$("#buildRun").addClass("ico-stop").removeClass("ico-buildrun").attr("title",config.label.stop)}})},build:function(){menu.saveAllFiles();var e=editors.getCurrentPath();if(!e)return!1;if($(".menu li.build").hasClass("disabled"))return!1;var t=newWideRequest();t.file=e,t.code=wide.curEditor.getValue(),t.nextCmd="",$.ajax({type:"POST",url:config.context+"/build",data:JSON.stringify(t),dataType:"json",beforeSend:function(){bottomGroup.resetOutput()},success:function(e){}})},_initPreference:function(){$("#dialogPreference").load(config.context+"/preference",function(){$("#dialogPreference input").keyup(function(){var e=!1,t=[],a="";$("#dialogPreference input").each(function(){var a=$(this);a.val()!=a.data("value")&&(e=!0),""===$.trim(a.val())&&t.push(a)});var n=$("#dialogPreference").closest(".dialog-main").find(".dialog-footer > button:eq(0)");if(e?n.prop("disabled",!1):n.prop("disabled",!0),0===t.length)$("#dialogPreference").find(".tip").html(""),n.prop("disabled",!1);else{for(var i=0,o=t.length;o>i;i++){var l=t[i].closest("div").data("index"),r=$.trim(t[i].parent().text());a+="["+$('#dialogPreference .tabs > div[data-index="'+l+'"]').text()+"] -> ["+r.substr(0,r.length-1)+"]: "+config.label.no_empty+"
    "}$("#dialogPreference").find(".tip").html(a),n.prop("disabled",!0)}}),$("#dialogPreference select").on("change",function(){var e=!1;$("#dialogPreference select").each(function(){$(this).val()!==$(this).data("value")&&(e=!0)});var t=$("#dialogPreference").closest(".dialog-main").find(".dialog-footer > button:eq(0)");e?t.prop("disabled",!1):t.prop("disabled",!0)}),$("#dialogPreference").dialog({modal:!0,height:280,width:800,title:config.label.preference,okText:config.label.apply,cancelText:config.label.cancel,afterOpen:function(){var e=$("#dialogPreference").closest(".dialog-main").find(".dialog-footer > button:eq(0)");e.prop("disabled",!0)},ok:function(){var e=newWideRequest(),t=$("#dialogPreference"),a=t.find("input[name=fontFamily]"),n=t.find("input[name=fontSize]"),i=t.find("select[name=goFmt]"),o=t.find("input[name=workspace]"),l=t.find("input[name=password]"),r=t.find("input[name=email]"),s=t.find("select[name=locale]"),d=t.find("select[name=theme]"),u=t.find("input[name=editorFontFamily]"),c=t.find("input[name=editorFontSize]"),f=t.find("input[name=editorLineHeight]"),g=t.find("select[name=editorTheme]"),p=t.find("input[name=editorTabSize]"),v=t.find("select[name=keymap]");$.extend(e,{fontFamily:a.val(),fontSize:n.val(),goFmt:i.val(),workspace:o.val(),password:l.val(),email:r.val(),locale:s.val(),theme:d.val(),editorFontFamily:u.val(),editorFontSize:c.val(),editorLineHeight:f.val(),editorTheme:g.val(),editorTabSize:p.val(),keymap:v.val()}),config.keymap!==v.val()&&window.location.reload(),$.ajax({type:"POST",url:config.context+"/preference",data:JSON.stringify(e),success:function(e,t,m){if(!e.succ)return!1;a.data("value",a.val()),n.data("value",n.val()),i.data("value",i.val()),o.data("value",o.val()),l.data("value",l.val()),r.data("value",r.val()),s.data("value",s.val()),d.data("value",d.val()),u.data("value",u.val()),c.data("value",c.val()),f.data("value",f.val()),g.data("value",g.val()),p.data("value",p.val()),v.data("value",v.val()),config.keymap=v.val();var h=$("#dialogPreference").closest(".dialog-main").find(".dialog-footer > button:eq(0)");h.prop("disabled",!0),$("#themesLink").attr("href",config.staticServer+"/static/css/themes/"+d.val()+".css"),config.editorTheme=g.val();for(var b=0,w=editors.data.length;w>b;b++)editors.data[b].editor.setOption("theme",g.val())}})}}),new Tabs({id:".preference"})})}}; +var windows={isMaxEditor:!1,outerLayout:{},innerLayout:{},init:function(){config.latestSessionContent.layout||(config.latestSessionContent.layout={side:{size:200,state:"normal"},sideRight:{size:200,state:"normal"},bottom:{size:100,state:"normal"}});var o=config.latestSessionContent.layout;this.outerLayout=$("body").layout({north__paneSelector:".menu",center__paneSelector:".content",south__paneSelector:".footer",north__size:22,south__size:19,spacing_open:2,north__spacing_open:0,south__spacing_open:0,defaults:{fxSpeed_open:300,fxSpeed_close:100,fxSettings_close:{easing:"easeOutQuint"},fxSettings_open:{easing:"easeInQuint"}},west:{size:o.side.size,paneSelector:".side",togglerLength_open:0,togglerLength_closed:15,togglerAlign_closed:"top",slideTrigger_open:"mouseover",spacing_closed:15,minSize:100,togglerClass:"ico-restore",togglerTip_open:config.label.min,togglerTip_closed:config.label.restore_side,resizerTip:config.label.resize,initClosed:"min"===o.side.state}}),this.innerLayout=$("div.content").layout({spacing_open:2,defaults:{fxSpeed_open:300,fxSpeed_close:100,fxSettings_close:{easing:"easeOutQuint"},fxSettings_open:{easing:"easeInQuint"}},center:{paneSelector:".edit-panel"},east:{size:o.sideRight.size,paneSelector:".side-right",togglerLength_open:0,togglerLength_closed:15,togglerAlign_closed:"top",slideTrigger_open:"mouseover",spacing_closed:15,minSize:100,togglerClass:"ico-restore",togglerTip_open:config.label.min,togglerTip_closed:config.label.restore_outline,resizerTip:config.label.resize,initClosed:"min"===o.sideRight.state},south:{size:o.bottom.size,paneSelector:".bottom-window-group",togglerLength_open:0,togglerLength_closed:15,togglerAlign_closed:"top",slideTrigger_open:"mouseover",spacing_closed:16,minSize:100,togglerClass:"ico-restore",togglerTip_open:config.label.min,togglerTip_closed:config.label.restore_bottom,resizerTip:config.label.resize,initClosed:"min"===o.bottom.state,ondrag_end:function(o,e){windows.refreshEditor(e,"drag")},onresize_end:function(o,e){windows.refreshEditor(e,"resize")},onclose_end:function(o,e){windows.refreshEditor(e,"close")},onopen_end:function(o,e){windows.refreshEditor(e,"open")},onshow_end:function(o,e){windows.refreshEditor(e,"show")}}}),this.outerLayout.addCloseBtn(".side .ico-min","west"),this.innerLayout.addCloseBtn(".side-right .ico-min","east"),this.innerLayout.addCloseBtn(".bottom-window-group .ico-min","south"),"max"===o.side.state&&windows.maxSide(),"max"===o.sideRight.state&&windows.maxSideRight(),"max"===o.bottom.state&&windows.maxBottom(),$(".toolbars .ico-max").click(function(){windows.toggleEditor()}),$(".edit-panel .tabs").on("dblclick",function(){windows.toggleEditor()}),$(".bottom-window-group .tabs").dblclick(function(){var o=$(".bottom-window-group");o.hasClass("bottom-window-group-max")?windows.restoreBottom():windows.maxBottom(o)}),$(".side .tabs").dblclick(function(){var o=$(".side");o.hasClass("side-max")?windows.restoreSide():windows.restoreSide(o)}),$(".side-right .tabs").dblclick(function(){var o=$(".side-right");o.hasClass("side-right-max")?windows.restoreSideRight():windows.maxSideRight(o)}),$(".bottom-window-group .search").height($(".bottom-window-group .tabs-panel").height()),$(window).resize(function(){windows.refreshEditor($(".bottom-window-group"))})},maxEditor:function(){var o=$(".toolbars .font-ico");windows.outerLayout.close("west"),windows.innerLayout.close("south"),windows.innerLayout.close("east"),o.removeClass("ico-max").addClass("ico-restore").attr("title",config.label.min),windows.isMaxEditor=!0},maxBottom:function(o){o.data("height",o.height()).addClass("bottom-window-group-max").find(".ico-min").hide(),windows.outerLayout.hide("west"),windows.innerLayout.hide("east"),windows.innerLayout.sizePane("south",$(".content").height())},maxSide:function(o){o.data("width",o.width()).addClass("side-max").find(".ico-min").hide(),$(".content").hide(),windows.outerLayout.sizePane("west",$("body").width())},maxSideRight:function(o){o.addClass("side-right-max").data("width",o.width()).find(".ico-min").hide(),windows.outerLayout.hide("west"),windows.innerLayout.hide("south"),windows.innerLayout.sizePane("east",$("body").width())},toggleEditor:function(){var o=$(".toolbars .font-ico");o.hasClass("ico-restore")?windows.restoreEditor():windows.maxEditor()},restoreBottom:function(){var o=$(".bottom-window-group");o.removeClass("bottom-window-group-max").find(".ico-min").show(),windows.outerLayout.show("west"),windows.innerLayout.show("east"),windows.innerLayout.sizePane("south",o.data("height"))},restoreSide:function(){var o=$(".side");o.removeClass("side-max").find(".ico-min").show(),$(".content").show(),windows.outerLayout.sizePane("west",o.data("width"))},restoreSideRight:function(){var o=$(".side-right");o.removeClass("side-right-max").find(".ico-min").show(),windows.outerLayout.show("west"),windows.innerLayout.show("south"),windows.innerLayout.sizePane("east",o.data("width"))},restoreEditor:function(){windows.outerLayout.open("west"),windows.innerLayout.open("south"),windows.innerLayout.open("east"),windows.isMaxEditor=!1,$(".toolbars .font-ico").addClass("ico-max").removeClass("ico-restore").attr("title",config.label.max_editor)},refreshEditor:function(o,e){var t=editors.data,i=$(".content").height()-o.height()-24;switch(e){case"close":i=$(".content").height()-40}for(var n=0,s=t.length;s>n;n++)t[n].editor.setSize("100%",i);$(".bottom-window-group .search").height($(".bottom-window-group .tabs-panel").height())},flowBottom:function(){windows.innerLayout.south.state.isClosed&&windows.innerLayout.slideOpen("south")}}; +var hotkeys={defaultKeyMap:{goEditor:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:48,fun:function(){wide.curEditor&&wide.curEditor.focus()}},goFileTree:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:49,fun:function(){windows.outerLayout.west.state.isClosed&&windows.outerLayout.slideOpen("west"),$("#files").focus()}},goOutline:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:50,fun:function(){windows.innerLayout.east.state.isClosed&&windows.innerLayout.slideOpen("east"),$("#outline").focus()}},goOutput:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:52,fun:function(){bottomGroup.tabs.setCurrent("output"),windows.flowBottom(),$(".bottom-window-group .output").focus()}},goSearch:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:53,fun:function(){bottomGroup.tabs.setCurrent("search"),windows.flowBottom(),$(".bottom-window-group .search").focus()}},goNotification:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:54,fun:function(){bottomGroup.tabs.setCurrent("notification"),windows.flowBottom(),$(".bottom-window-group .notification").focus()}},clearWindow:{ctrlKey:!1,altKey:!0,shiftKey:!1,which:67},changeEditor:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:68},search:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:70},closeCurEditor:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:81},rename:{ctrlKey:!0,altKey:!1,shiftKey:!1,which:82},goFile:{ctrlKey:!1,altKey:!0,shiftKey:!0,which:79},build:{ctrlKey:!1,altKey:!1,shiftKey:!1,which:116},buildRun:{ctrlKey:!1,altKey:!1,shiftKey:!1,which:117}},bindList:function(e,t,i){t.data("index",0),e.keydown(function(e){var r=t.data("index"),o=t.find("li").length;if(0===o)return!0;38===e.which&&(r--,0>r&&(r=o-1)),40===e.which&&(r++,r>o-1&&(r=0));var d=t.find("li:eq("+r+")");return 13===e.which&&i(d),t.find("li").removeClass("selected"),t.data("index",r),d.addClass("selected"),0===r?t.scrollTop(0):d[0].offsetTop+t.scrollTop()>t.height()?40===e.which?t.scrollTop(t.scrollTop()+d.height()):t.scrollTop(d[0].offsetTop):t.scrollTop(0),38===e.which||40===e.which||13===e.which?!1:void 0})},_bindOutput:function(){$(".bottom-window-group .output").keydown(function(e){var t=hotkeys.defaultKeyMap;return e.altKey===t.clearWindow.altKey&&e.which===t.clearWindow.which?(bottomGroup.clear("output"),void e.preventDefault()):void 0})},_bindFileTree:function(){$("#files").keydown(function(e){e.preventDefault();var t=hotkeys.defaultKeyMap;if(e.ctrlKey===t.search.ctrlKey&&e.which===t.search.which)return void $("#dialogSearchForm").dialog("open");if(e.ctrlKey===t.rename.ctrlKey&&e.which===t.rename.which)return void(wide.curNode.removable&&$("#dialogRenamePrompt").dialog("open"));switch(e.which){case 46:tree.removeIt();break;case 13:if(!wide.curNode)return!1;if(tree.isDir()){if(wide.curNode.open)return!1;tree.fileTree.expandNode(wide.curNode,!0,!1,!0),$("#files").focus();break}tree.openFile(wide.curNode);break;case 38:var i={};if(wide.curNode){if(wide.curNode&&wide.curNode.isFirstNode&&0===wide.curNode.level)return!1;i=wide.curNode.getPreNode(),wide.curNode.isFirstNode&&wide.curNode.getParentNode()&&(i=wide.curNode.getParentNode());var r=wide.curNode.getPreNode();r&&tree.isDir()&&r.open&&(i=tree.getCurrentNodeLastNode(r))}else i=tree.fileTree.getNodeByTId("files_1");wide.curNode=i,tree.fileTree.selectNode(i),$("#files").focus();break;case 40:var i={};if(wide.curNode){if(wide.curNode&&tree.isBottomNode(wide.curNode))return!1;i=wide.curNode.getNextNode(),tree.isDir()&&wide.curNode.open&&(i=wide.curNode.children[0]);var o=tree.getNextShowNode(wide.curNode);wide.curNode.isLastNode&&0!==wide.curNode.level&&!wide.curNode.open&&o&&(i=o)}else i=tree.fileTree.getNodeByTId("files_1");i&&(wide.curNode=i,tree.fileTree.selectNode(i)),$("#files").focus();break;case 37:if(!wide.curNode)return wide.curNode=tree.fileTree.getNodeByTId("files_1"),tree.fileTree.selectNode(wide.curNode),$("#files").focus(),!1;if(!tree.isDir()||!wide.curNode.open)return!1;tree.fileTree.expandNode(wide.curNode,!1,!1,!0),$("#files").focus();break;case 39:if(!wide.curNode)return wide.curNode=tree.fileTree.getNodeByTId("files_1"),tree.fileTree.selectNode(wide.curNode),$("#files").focus(),!1;if(!tree.isDir()||wide.curNode.open)return!1;tree.fileTree.expandNode(wide.curNode,!0,!1,!0),$("#files").focus();break;case 116:if(!wide.curNode||!tree.isDir())return!1;tree.refresh(wide.curNode)}})},_bindDocument:function(){var e=this.defaultKeyMap;$(document).keydown(function(t){if(t.ctrlKey===e.goEditor.ctrlKey&&t.which===e.goEditor.which)return e.goEditor.fun(),void t.preventDefault();if(t.ctrlKey===e.goFileTree.ctrlKey&&t.which===e.goFileTree.which)return e.goFileTree.fun(),void t.preventDefault();if(t.ctrlKey===e.goOutline.ctrlKey&&t.which===e.goOutline.which)return e.goOutline.fun(),void t.preventDefault();if(t.ctrlKey===e.goOutput.ctrlKey&&t.which===e.goOutput.which)return e.goOutput.fun(),void t.preventDefault();if(t.ctrlKey===e.goSearch.ctrlKey&&t.which===e.goSearch.which)return e.goSearch.fun(),void t.preventDefault();if(t.ctrlKey===e.goNotification.ctrlKey&&t.which===e.goNotification.which)return e.goNotification.fun(),void t.preventDefault();if(t.ctrlKey===e.closeCurEditor.ctrlKey&&t.which===e.closeCurEditor.which)return $(".edit-panel .tabs > div.current").find(".ico-close").click(),void t.preventDefault();if(t.ctrlKey===e.changeEditor.ctrlKey&&t.which===e.changeEditor.which){if("notification"===document.activeElement.className||"output"===document.activeElement.className||"search"===document.activeElement.className){for(var i=["output","search","notification"],r="",o=0,d=i.length;d>o;o++)if(bottomGroup.tabs.getCurrentId()===i[o]){r=d-1>o?i[o+1]:i[0];break}return bottomGroup.tabs.setCurrent(r),$(".bottom-window-group ."+r).focus(),t.preventDefault(),!1}if(editors.data.length>1){for(var r="",o=0,d=editors.data.length;d>o;o++){var c=editors.getCurrentId();if(c&&c===editors.data[o].id){d-1>o?(r=editors.data[o+1].id,wide.curEditor=editors.data[o+1].editor):(r=editors.data[0].id,wide.curEditor=editors.data[0].editor);break}}editors.tabs.setCurrent(r);var u=tree.getTIdByPath(r);wide.curNode=tree.fileTree.getNodeByTId(u),tree.fileTree.selectNode(wide.curNode),wide.refreshOutline();var n=wide.curEditor.getCursor();$(".footer .cursor").text("| "+(n.line+1)+":"+(n.ch+1)+" |"),wide.curEditor.focus()}return t.preventDefault(),!1}return t.which===e.build.which?(menu.build(),void t.preventDefault()):t.which===e.buildRun.which?(menu.run(),void t.preventDefault()):void(t.ctrlKey===e.goFile.ctrlKey&&t.altKey===e.goFile.altKey&&t.shiftKey===e.goFile.shiftKey&&t.which===e.goFile.which&&$("#dialogGoFilePrompt").dialog("open"))})},init:function(){this._bindFileTree(),this._bindOutput(),this._bindDocument()}}; +var bottomGroup={tabs:void 0,searchTab:void 0,init:function(){this._initTabs(),this._initFrame(),$(".bottom-window-group .output").click(function(){$(this).focus()}),$(".bottom-window-group .output").on("click",".path",function(t){var o=$(this),i=tree.getTIdByPath(o.data("path"));return tree.openFile(tree.fileTree.getNodeByTId(i),CodeMirror.Pos(o.data("line")-1,o.data("column")-1)),t.preventDefault(),!1})},_initFrame:function(){$(".bottom-window-group .output").parent().mouseup(function(t){if(t.stopPropagation(),0===t.button)return void $(".bottom-window-group .frame").hide();var o=t.screenX,i=$(this);("auto"===$(".side").css("left")||"0px"===$(".side").css("left"))&&(o=t.screenX-$(".side").width()),$(".bottom-window-group .frame").show().css({left:o+"px",top:t.offsetY+t.target.offsetTop-i.scrollTop()-10+"px"})})},clear:function(t){$(".bottom-window-group ."+t+" > div").text("")},resetOutput:function(){this.clear("output"),bottomGroup.tabs.setCurrent("output"),windows.flowBottom()},_initTabs:function(){this.tabs=new Tabs({id:".bottom-window-group",clickAfter:function(t){this._$tabsPanel.find("."+t).focus()}})},fillOutput:function(t){var o=$(".bottom-window-group .output");t=t.replace(/\n/g,"
    "),-1!==t.indexOf("
    ")&&(t=Autolinker.link(t)),o.find("div").html(t),o.parent().scrollTop(o[0].scrollHeight)}}; + diff --git a/static/js/wide.min.js.map b/static/js/wide.min.js.map new file mode 100644 index 0000000..c1abcc7 --- /dev/null +++ b/static/js/wide.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["tabs.js","dialog.js","editors.js","notification.js","tree.js","wide.js","session.js","menu.js","windows.js","hotkeys.js","bottomGroup.js"],"names":["Tabs","obj","_$tabsPanel","$","id","_$tabs","_stack","this","STACKSIZE","_init","_it","each","data","length","splice","push","extend","prototype","_that","on","event","hasClass","setCurrent","clickAfter","parent","isRemove","removeBefore","del","stopPropagation","_hasId","$tabs","find","add","getCurrentId","$tabsPanel","append","title","content","after","stack","prevId","children","remove","i","removeAfter","path","$currentTab","removeClass","hide","addClass","show","setAfter","tId","tree","getTIdByPath","node","fileTree","getNodeByTId","selectNode","wide","curNode","ii","editors","curEditor","editor","cursor","getCursor","setCursor","focus","refreshOutline","text","line","ch","fn","dialog","version","author","dpuuid","Date","getTime","PROP_NAME","Dialog","_defaults","styleClass","background","panel","main","footer","headerMiddle","headerBg","closeIcon","closeIconHover","_attach","target","settings","uuid","inst","_newInst","replace","_getInst","err","_destroyDialog","removeData","prependTo","unwrap","removeAttr","_getDefaults","windowH","window","height","windowW","width","dialogH","parseInt","dialogW","okText","cancelText","footerHTML","headerHTML","hideFooter","hiddenOk","dialogHTML","bgHTML","modal","bgHeight","document","documentElement","scrollHeight","wrap","cloneObj","clone","get","bind","_close","$buttons","undefined","ok","_bindMove","keyup","keyCode","resize","afterInit","className","mousedown","_document","getElementById","x","clientX","style","left","y","clientY","top","ondragstart","onselectstart","onselect","setCapture","captureEvents","Event","MOUSEMOVE","MOUSEUP","onmousemove","positionX","positionY","onmouseup","releaseCapture","css","close","_closeDialog","_openDialog","msg","$dialog","position","afterOpen","_updateDialog","html","defaults","key","theme","styleName","options","otherArgs","Array","slice","call","arguments","shift","apply","concat","jQuery","autocompleteMutex","tabs","getEditorByPath","click","closeOther","currentIndex","firstIndex","_removeAllMarker","removeIndex","_initClose","ZeroClipboard","button","screenX","attr","init","config","label","tip","fileName","file","confirm_save","fmt","doc","isClean","nextId","menu","disabled","cancelSelectedNode","_initCodeMirrorHotKeys","openStartPage","dateFormat","time","date","dateObj","M+","getMonth","d+","getDate","h+","getHours","m+","getMinutes","s+","getSeconds","q+","Math","floor","S","getMilliseconds","test","RegExp","$1","getFullYear","substr","k","start_page","load","context","wideSessionId","ajax","url","type","dataType","jsonp","success","textStatus","articles","listHTML","community","article","articlePermalink","articleTitle","articleCreateTime","ret","getCurrentPath","currentPath","CodeMirror","registerHelper","word","cur","curLine","getLine","start","end","charAt","request","newWideRequest","code","getValue","cursorLine","cursorCh","autocompleteHints","state","completionActive","async","JSON","stringify","autocompleteArray","displayText","name","substring","console","warn","markClean","setTimeout","list","from","Pos","to","commands","autocompleteAfterDot","cm","mode","getMode","Pass","token","getTokenAt","showHint","hint","go","completeSingle","autocompleteAnyWord","auto","gotoLine","doNothing","exprInfo","result","succ","cursorCoords","copyLinesDown","selectoion","listSelections","anchor","head","max","replaceToLine","replaceRange","offset","setSelection","copyLinesUp","moveLinesUp","moveLinesDown","lastLine","jumpToDecl","openFile","findUsages","appendSearch","selectIdentifier","findWordAt","extendSelection","searcHTML","toLowerCase","contents","lowerCaseContents","matches","split","startIndex","endIndex","j","keyWord","search_no_match","$search","find_usages","search_text","bottomGroup","searchTab","$it","half","getScrollInfo","clientHeight","defaultTextHeight","scrollTo","windows","flowBottom","newEditor","iconSkin","undisabled","textArea","value","fromTextArea","lineNumbers","autofocus","autoCloseBrackets","matchBrackets","highlightSelectionMatches","showToken","rulers","color","column","lineStyle","styleActiveLine","editorTheme","tabSize","editorTabSize","indentUnit","indentWithTabs","foldGutter","cursorHeight","readOnly","isGOAPI","profile","extraKeys","Ctrl-\\",".","Ctrl-/","Ctrl-I","Ctrl-L","Ctrl-E","Ctrl-D","Ctrl-B","Ctrl-S","saveFile","Shift-Ctrl-S","saveAllFiles","Shift-Alt-F","Alt-F7","Shift-Alt-Enter","isMaxEditor","restoreEditor","maxEditor","Shift-Ctrl-Up","Shift-Ctrl-Down","Shift-Alt-Up","Shift-Alt-Down","Shift-Alt-J","emmetCodeMirror","$span","evt","altKey","ctrlKey","shiftKey","which","autocomplete","random","setSize","setOption","keymap","notification","_initWS","notificationWS","ReconnectingWebSocket","channel","onopen","log","onmessage","e","parse","$notification","notificationHTML","cmd","severity","message","onclose","onerror","getCurrentNodeLastNode","returnNode","open","getNextShowNode","level","getParentNode","getNextNode","isBottomNode","isLastNode","nodes","transformToArray","getNodes","getOpenPaths","paths","getAllParents","parents","parentTId","isParents","parentPath","parentNode","isDir","indexOf","newFile","it","newDir","removeIt","removable","rename","export","isSucc","crossCompile","platform","decompress","dir","reAsyncChildNodes","refresh","gitClone","import","fileupload","formData","done","fail","$dirRMenu","$fileRMenu","setting","view","showTitle","selectedMulti","enable","autoParam","callback","onDblClick","treeId","treeNode","onRightClick","creatable","display","onClick","clickFlag","zTree","session","restore","_initSearch","_initRename","tempCursor","findModeByFileName","mime","error","$okBtn","closest","prop","trim","val","search","cancel","extension","select","oldPath","newPath","lastIndexOf","curProcessId","outlineHTML","decls","maxj","Ch","Line","Name","dblclick","_initDialog","confirm","create_file","create","fileType","create_dir","goto_file","$list","hotkeys","bindList","$selected","goFileHTML","icoSkin","getClassBySuffix","goto_line","git_clone","repository","outputWS","goLintFound","nextCmd","executable","fillOutput","output","pid","build_n_run","lints","files","lint","lineNo","signal","_initFooter","unbind","subMenu","onbeforeunload","oncontextmenu","_save","getOption","gofmt","beforeSend","resetOutput","stop","run","scrollInfo","setValue","formatted","html_beautify","js_beautify","css_beautify","suffix","ready","getLayoutState","paneState","isClosed","size","setInterval","filse","currentId","currentFile","layout","side","outerLayout","west","sideRight","innerLayout","east","bottom","south","latestSessionContent","nodesToOpen","jj","isOpen","l","expandNode","kk","m","mm","n","nn","c","sessionWS","addNodes","isParent","removeNode","_initPreference","_initAbout","_initShare","hover","pic","urls","email","twitterShare","encodeURIComponent","twitter","facebook","googleplus","weibo","tencent","about","wideVersion","uptodate","new_version_available","colon","wideDownload","mouseover","openPreference","closeAllFiles","exit","location","href","openAbout","goget","goinstall","govet","build","isChange","emptys","emptysTip","tabIndex","no_empty","preference","$dialogPreference","$fontFamily","$fontSize","$goFmt","$workspace","$password","$email","$locale","$theme","$editorFontFamily","$editorFontSize","$editorLineHeight","$editorTheme","$editorTabSize","$keymap","fontFamily","fontSize","goFmt","workspace","password","locale","editorFontFamily","editorFontSize","editorLineHeight","reload","jqXHR","staticServer","north__paneSelector","center__paneSelector","south__paneSelector","north__size","south__size","spacing_open","north__spacing_open","south__spacing_open","fxSpeed_open","fxSpeed_close","fxSettings_close","easing","fxSettings_open","paneSelector","togglerLength_open","togglerLength_closed","togglerAlign_closed","slideTrigger_open","spacing_closed","minSize","togglerClass","togglerTip_open","min","togglerTip_closed","restore_side","resizerTip","initClosed","center","restore_outline","restore_bottom","ondrag_end","pane","refreshEditor","onresize_end","onclose_end","onopen_end","onshow_end","addCloseBtn","maxSide","maxSideRight","maxBottom","toggleEditor","restoreBottom","restoreSide","restoreSideRight","sizePane","max_editor","editorDatas","slideOpen","defaultKeyMap","goEditor","fun","goFileTree","goOutline","goOutput","goSearch","goNotification","clearWindow","changeEditor","closeCurEditor","goFile","buildRun","$source","enterFun","keydown","index","count","scrollTop","offsetTop","_bindOutput","hotKeys","clear","preventDefault","_bindFileTree","isFirstNode","getPreNode","preNode","nextShowNode","_bindDocument","activeElement","nextPath","nextTId","_initTabs","_initFrame","$path","mouseup","offsetY","$output","Autolinker","link"],"mappings":"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","file":"wide.min.js","sourcesContent":["/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file tabs.js\r\n *\r\n * @author Liyuan Li\r\n * @version 1.0.0.1, Dec 8, 2015\r\n */\r\nvar Tabs = function (obj) {\r\n obj._$tabsPanel = $(obj.id + \" > .tabs-panel\");\r\n obj._$tabs = $(obj.id + \" > .tabs\");\r\n obj._stack = [];\r\n\r\n this.obj = obj;\r\n this.obj.STACKSIZE = 64;\r\n\r\n this._init(obj);\r\n\r\n // DOM 元素存在时,应顺序入栈\r\n var _it = this;\r\n $(obj.id + \" > .tabs > div\").each(function () {\r\n var id = $(this).data(\"index\");\r\n if (obj._stack.length === _it.obj.STACKSIZE) {\r\n obj._stack.splice(0, 1);\r\n }\r\n if (obj._stack[obj._stack.length - 1] !== id) {\r\n _it.obj._stack.push(id);\r\n }\r\n });\r\n\r\n};\r\n\r\n$.extend(Tabs.prototype, {\r\n _init: function (obj) {\r\n var _that = this;\r\n\r\n obj._$tabs.on(\"click\", \"div\", function (event) {\r\n if ($(this).hasClass('current')) {\r\n return false;\r\n }\r\n\r\n var id = $(this).data(\"index\");\r\n _that.setCurrent(id);\r\n if (typeof (obj.clickAfter) === \"function\") {\r\n obj.clickAfter(id);\r\n }\r\n });\r\n\r\n obj._$tabs.on(\"click\", \".ico-close\", function (event) {\r\n var id = $(this).parent().data(\"index\"),\r\n isRemove = true;\r\n\r\n if (typeof obj.removeBefore === 'function') {\r\n isRemove = obj.removeBefore(id);\r\n }\r\n\r\n if (isRemove) {\r\n _that.del(id);\r\n }\r\n event.stopPropagation();\r\n });\r\n },\r\n _hasId: function (id) {\r\n var $tabs = this.obj._$tabs;\r\n if ($tabs.find('div[data-index=\"' + id + '\"]').length === 0) {\r\n return false;\r\n }\r\n return true;\r\n },\r\n add: function (data) {\r\n // 添加当前 tab\r\n if (this.getCurrentId() === data.id) {\r\n return false;\r\n }\r\n\r\n // 当前 tab 已经存在\r\n if (this._hasId(data.id)) {\r\n this.setCurrent(data.id);\r\n return false;\r\n }\r\n\r\n var $tabsPanel = this.obj._$tabsPanel,\r\n $tabs = this.obj._$tabs;\r\n\r\n $tabs.append('
    '\r\n + data.title + '
    ');\r\n $tabsPanel.append('
    ' + data.content\r\n + '
    ');\r\n\r\n this.setCurrent(data.id);\r\n\r\n if (typeof data.after === 'function') {\r\n data.after();\r\n }\r\n },\r\n del: function (id) {\r\n var $tabsPanel = this.obj._$tabsPanel,\r\n $tabs = this.obj._$tabs,\r\n stack = this.obj._stack,\r\n prevId = null;\r\n\r\n $tabs.children(\"div[data-index='\" + id + \"']\").remove();\r\n $tabsPanel.children(\"div[data-index='\" + id + \"']\").remove();\r\n\r\n // 移除堆栈中该 id\r\n for (var i = 0; i < stack.length; i++) {\r\n if (id === stack[i]) {\r\n stack.splice(i, 1);\r\n i--;\r\n }\r\n }\r\n\r\n prevId = stack[stack.length - 1];\r\n\r\n if (typeof this.obj.removeAfter === 'function') {\r\n this.obj.removeAfter(id, prevId);\r\n }\r\n\r\n this.setCurrent(prevId);\r\n },\r\n getCurrentId: function () {\r\n var $tabs = this.obj._$tabs;\r\n return $tabs.children(\".current\").data(\"index\");\r\n },\r\n setCurrent: function (path) {\r\n if (!path) {\r\n return false;\r\n }\r\n\r\n var $tabsPanel = this.obj._$tabsPanel,\r\n $tabs = this.obj._$tabs;\r\n\r\n var $currentTab = $tabs.children(\".current\");\r\n if ($currentTab.data(\"index\") === path) {\r\n return false;\r\n }\r\n\r\n // tab 顺序入栈,如栈满则清除\r\n var stack = this.obj._stack;\r\n if (stack.length === this.obj.STACKSIZE) {\r\n stack.splice(0, 1);\r\n }\r\n if (stack[stack.length - 1] !== path) {\r\n this.obj._stack.push(path);\r\n }\r\n\r\n $tabs.children(\"div\").removeClass(\"current\");\r\n $tabsPanel.children(\"div\").hide();\r\n\r\n $tabs.children('div[data-index=\"' + path + '\"]').addClass(\"current\");\r\n $tabsPanel.children('div[data-index=\"' + path + '\"]').show();\r\n\r\n if (typeof this.obj.setAfter === 'function') {\r\n this.obj.setAfter();\r\n }\r\n\r\n var id = this.getCurrentId();\r\n if (\"startPage\" === id) {\r\n return;\r\n }\r\n\r\n // set tree node selected\r\n var tId = tree.getTIdByPath(id);\r\n var node = tree.fileTree.getNodeByTId(tId);\r\n tree.fileTree.selectNode(node);\r\n wide.curNode = node;\r\n\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n if (editors.data[i].id === id) {\r\n wide.curEditor = editors.data[i].editor;\r\n break;\r\n }\r\n }\r\n\r\n if (wide.curEditor) {\r\n var cursor = wide.curEditor.getCursor();\r\n wide.curEditor.setCursor(cursor);\r\n wide.curEditor.focus();\r\n wide.refreshOutline();\r\n\r\n $(\".footer .cursor\").text('| ' + (cursor.line + 1) + ':' + (cursor.ch + 1) + ' |');\r\n }\r\n }\r\n});","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file dialog.js\r\n *\r\n * @author Liyuan Li\r\n * @version 1.0.0.1, Dec 8, 2015\r\n */\r\n(function ($) {\r\n $.fn.extend({\r\n dialog: {\r\n version: \"0.0.1.7\",\r\n author: \"lly219@gmail.com\"\r\n }\r\n });\r\n\r\n var dpuuid = new Date().getTime();\r\n var PROP_NAME = 'dialog';\r\n\r\n var Dialog = function () {\r\n this._defaults = {\r\n \"styleClass\": {\r\n \"background\": \"dialog-background\",\r\n \"panel\": \"dialog-panel\",\r\n \"main\": \"dialog-main\",\r\n \"footer\": \"dialog-footer\",\r\n \"headerMiddle\": \"dialog-header-middle\",\r\n \"headerBg\": \"dialog-header-bg\",\r\n \"closeIcon\": \"dialog-close-icon\",\r\n \"closeIconHover\": \"dialog-close-icon-hover\",\r\n \"title\": \"dialog-title\"\r\n }\r\n };\r\n };\r\n\r\n $.extend(Dialog.prototype, {\r\n _attach: function (target, settings) {\r\n if (!target.id) {\r\n this.uuid++;\r\n target.id = 'dp' + this.uuid;\r\n }\r\n var inst = this._newInst($(target));\r\n\r\n inst.settings = $.extend({}, settings || {});\r\n $.data(target, PROP_NAME, inst);\r\n this._init(target);\r\n },\r\n /* Create a new instance object. */\r\n _newInst: function (target) {\r\n // escape jQuery meta chars\r\n var id = target[0].id.replace(/([^A-Za-z0-9_])/g, '\\\\\\\\$1');\r\n return {\r\n id: id\r\n };\r\n },\r\n _getInst: function (target) {\r\n try {\r\n return $.data(target, PROP_NAME);\r\n } catch (err) {\r\n throw 'Missing instance data for this dialog';\r\n }\r\n },\r\n _destroyDialog: function (target) {\r\n var inst = $.dialog._getInst(target);\r\n var id = inst.id;\r\n $.removeData(target, PROP_NAME);\r\n\r\n $(target).prependTo(\"#\" + id + \"Wrap\").unwrap();\r\n $(target).removeAttr(\"style\");\r\n\r\n var styleClass = this._getDefaults($.dialog._defaults, inst.settings, \"styleClass\");\r\n $(\".\" + styleClass.background).remove();\r\n $(\"#\" + id + \"Dialog\").remove();\r\n },\r\n _init: function (target) {\r\n var inst = this._getInst(target);\r\n var id = inst.id,\r\n settings = inst.settings;\r\n var windowH = $(window).height(),\r\n windowW = $(window).width();\r\n var styleClass = this._getDefaults($.dialog._defaults, settings, \"styleClass\"),\r\n dialogH = settings.height ? settings.height : parseInt(windowH * 0.6),\r\n dialogW = settings.width ? settings.width : parseInt(windowW * 0.6);\r\n\r\n // get settings or default value.\r\n settings.title = settings.title ? settings.title : \"\";\r\n settings.okText = settings.okText ? settings.okText : \"Ok\";\r\n settings.cancelText = settings.cancelText ? settings.cancelText : \"Cancel\";\r\n\r\n // build HTML.\r\n var footerHTML = \"\",\r\n headerHTML = \"
    \"\r\n + settings.title + \"
    \";\r\n\r\n // Sets footerHTML.\r\n if (!settings.hideFooter) {\r\n if (!settings.hiddenOk) {\r\n footerHTML = \"\";\r\n }\r\n footerHTML += \"\";\r\n }\r\n\r\n var dialogHTML = \"
    \" + headerHTML\r\n + \"
    \"\r\n + footerHTML + \"
    \";\r\n\r\n var bgHTML = \"\";\r\n if (settings.modal && $(\".\" + styleClass.background).length === 0) {\r\n var bgHeight = windowH < document.documentElement.scrollHeight\r\n ? document.documentElement.scrollHeight : windowH;\r\n bgHTML = \"
    \";\r\n }\r\n\r\n // Package dialog.\r\n $(\"#\" + id).wrap(\"
    \");\r\n var cloneObj = $(target).clone(true);\r\n $(target).remove();\r\n $('body').append(bgHTML + dialogHTML);\r\n $($(\"#\" + id + \"Dialog .\" + styleClass.main + \" div\").get(0)).append(cloneObj);\r\n $(cloneObj).show();\r\n\r\n // Bind event.\r\n $(\"#\" + id + \"Dialog .\" + styleClass.closeIcon).bind(\"click\", function () {\r\n $.dialog._close(id, settings);\r\n });\r\n\r\n var $buttons = $(\"#\" + id + \"Dialog .\" + styleClass.footer + \" button\");\r\n $($buttons.get(1)).bind(\"click\", function () {\r\n $.dialog._close(id, settings);\r\n });\r\n\r\n $($buttons.get(0)).bind(\"click\", function () {\r\n if (settings.ok === undefined || settings.ok()) {\r\n $.dialog._close(id, settings);\r\n }\r\n });\r\n\r\n this._bindMove(id, styleClass.headerBg, dialogH, dialogW);\r\n\r\n // esc exit\r\n $(window).keyup(function (event) {\r\n if (event.keyCode === 27) {\r\n $.dialog._close(id, settings);\r\n }\r\n });\r\n\r\n $(window).resize(function () {\r\n var height = $(\"body\").height() > $(window).height() ? $(\"body\").height() : $(window).height();\r\n $(\".dialog-background\").height(height);\r\n });\r\n\r\n if (typeof settings.afterInit === \"function\") {\r\n settings.afterInit();\r\n }\r\n },\r\n _bindMove: function (id, className) {\r\n $(\"#\" + id + \"Dialog .\" + className).mousedown(function (event) {\r\n var _document = document;\r\n if (!event) {\r\n event = window.event;\r\n }\r\n var dialog = document.getElementById(id + \"Dialog\");\r\n var x = event.clientX - parseInt(dialog.style.left),\r\n y = event.clientY - parseInt(dialog.style.top);\r\n _document.ondragstart = \"return false;\";\r\n _document.onselectstart = \"return false;\";\r\n _document.onselect = \"document.selection.empty();\";\r\n\r\n if (this.setCapture) {\r\n this.setCapture();\r\n } else if (window.captureEvents) {\r\n window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);\r\n }\r\n\r\n _document.onmousemove = function (event) {\r\n if (!event) {\r\n event = window.event;\r\n }\r\n var positionX = event.clientX - x,\r\n positionY = event.clientY - y;\r\n if (positionX < 0) {\r\n positionX = 0;\r\n }\r\n if (positionX > $(window).width() - $(dialog).width()) {\r\n positionX = $(window).width() - $(dialog).width();\r\n }\r\n if (positionY > $(window).height() - $(dialog).height()) {\r\n positionY = $(window).height() - $(dialog).height();\r\n }\r\n if (positionY < 0) {\r\n positionY = 0;\r\n }\r\n dialog.style.left = positionX + \"px\";\r\n dialog.style.top = positionY + \"px\";\r\n };\r\n\r\n _document.onmouseup = function () {\r\n if (this.releaseCapture) {\r\n this.releaseCapture();\r\n } else if (window.captureEvents) {\r\n window.captureEvents(Event.MOUSEMOVE | Event.MOUSEUP);\r\n }\r\n _document.onmousemove = null;\r\n _document.onmouseup = null;\r\n _document.ondragstart = null;\r\n _document.onselectstart = null;\r\n _document.onselect = null;\r\n };\r\n });\r\n },\r\n _close: function (id, settings) {\r\n if ($(\"#\" + id + \"Dialog\").css(\"display\") === \"none\") {\r\n return;\r\n }\r\n if (settings.close === undefined || settings.close()) {\r\n $(\"#\" + id + \"Dialog\").hide();\r\n if (settings.modal) {\r\n var styleClass = this._getDefaults($.dialog._defaults, settings, \"styleClass\");\r\n $(\".\" + styleClass.background).hide();\r\n }\r\n }\r\n },\r\n _closeDialog: function (target) {\r\n var inst = this._getInst(target);\r\n var id = inst.id,\r\n settings = inst.settings;\r\n $.dialog._close(id, settings);\r\n },\r\n _openDialog: function (target, msg) {\r\n var inst = this._getInst(target);\r\n var id = inst.id,\r\n settings = inst.settings,\r\n top = \"\", left = \"\",\r\n $dialog = $(\"#\" + id + \"Dialog\"),\r\n windowH = $(window).height(),\r\n windowW = $(window).width(),\r\n dialogH = settings.height ? settings.height : parseInt(windowH * 0.6),\r\n dialogW = settings.width ? settings.width : parseInt(windowW * 0.6);\r\n\r\n // Sets position.\r\n if (settings.position) {\r\n top = settings.position.top;\r\n left = settings.position.left;\r\n } else {\r\n // 20(footer) + 23(header)\r\n top = parseInt((windowH - dialogH - 43) / 2);\r\n if (top < 0) {\r\n top = 0;\r\n }\r\n left = parseInt((windowW - dialogW) / 2);\r\n }\r\n $dialog.css({\r\n \"top\": top + \"px\",\r\n \"left\": left + \"px\"\r\n }).show();\r\n\r\n if (settings.modal) {\r\n var styleClass = this._getDefaults($.dialog._defaults, settings, \"styleClass\");\r\n $(\".\" + styleClass.background).show();\r\n }\r\n\r\n if (typeof settings.afterOpen === \"function\") {\r\n settings.afterOpen(msg);\r\n }\r\n\r\n $(\"#\" + id + \"Dialog .dialog-footer button:eq(0)\").focus();\r\n },\r\n _updateDialog: function (target, data) {\r\n var inst = this._getInst(target);\r\n var id = inst.id,\r\n settings = inst.settings;\r\n var styleClass = this._getDefaults($.dialog._defaults, settings, \"styleClass\");\r\n $.extend(settings, data);\r\n var $dialog = $(\"#\" + id + \"Dialog\");\r\n if (data.position) {\r\n $dialog.css({\r\n \"top\": data.position.top,\r\n \"left\": data.position.left\r\n });\r\n }\r\n\r\n if (data.width) {\r\n $dialog.width(data.width + 26);\r\n $dialog.find(\".\" + styleClass.main + \" div\")[0].style.width = data.width + \"px\";\r\n $dialog.find(\".\" + styleClass.headerBg).width(data.width + 18);\r\n }\r\n\r\n if (data.height) {\r\n $dialog.find(\".\" + styleClass.main + \" div\")[0].style.height = data.height + \"px\";\r\n }\r\n\r\n if (data.title) {\r\n $dialog.find(\".\" + styleClass.title).html(data.title);\r\n }\r\n\r\n if (data.modal !== undefined) {\r\n if (data.modal) {\r\n $(\".\" + styleClass.background).show();\r\n } else {\r\n $(\".\" + styleClass.background).hide();\r\n }\r\n }\r\n\r\n if (data.hideFooter !== undefined) {\r\n if (data.hideFooter) {\r\n $dialog.find(\".\" + styleClass.footer).hide();\r\n } else {\r\n $dialog.find(\".\" + styleClass.footer).show();\r\n }\r\n }\r\n\r\n },\r\n _getDefaults: function (defaults, settings, key) {\r\n if (key === \"styleClass\") {\r\n if (settings.theme === \"default\" || settings.theme === undefined) {\r\n return defaults.styleClass;\r\n }\r\n settings.styleClass = {};\r\n for (var styleName in defaults[key]) {\r\n settings.styleClass[styleName] = settings.theme + \"-\" + defaults.styleClass[styleName];\r\n }\r\n } else if (key === \"height\" || key === \"width\") {\r\n if (settings[key] === null || settings[key] === undefined) {\r\n return \"auto\";\r\n } else {\r\n return settings[key] + \"px\";\r\n }\r\n } else {\r\n if (settings[key] === null || settings[key] === undefined) {\r\n return defaults[key];\r\n }\r\n }\r\n return settings[key];\r\n }\r\n });\r\n\r\n $.fn.dialog = function (options) {\r\n var otherArgs = Array.prototype.slice.call(arguments);\r\n\r\n if (typeof options === 'string') {\r\n otherArgs.shift();\r\n return $.dialog['_' + options + 'Dialog'].apply($.dialog, [this[0]].concat(otherArgs));\r\n }\r\n return this.each(function () {\r\n $.dialog._attach(this, options);\r\n });\r\n };\r\n\r\n $.dialog = new Dialog();\r\n\r\n // Add another global to avoid noConflict issues with inline event handlers\r\n window['DP_jQuery_' + dpuuid] = $;\r\n})(jQuery);","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file editor.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.1.0.0, Dec 6, 2015\r\n */\r\nvar editors = {\r\n autocompleteMutex: false,\r\n data: [],\r\n tabs: {},\r\n getEditorByPath: function (path) {\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n if (editors.data[i].editor.options.path === path) {\r\n return editors.data[i].editor;\r\n }\r\n }\r\n },\r\n close: function () {\r\n $('.edit-panel .tabs > div[data-index=\"' + $('.edit-panel .frame').data('index') + ']').find('.ico-close').click();\r\n },\r\n closeOther: function () {\r\n var currentIndex = $(\".edit-panel .frame\").data(\"index\");\r\n\r\n // 设置全部关闭标识\r\n var removeData = [];\r\n $(\".edit-panel .tabs > div\").each(function (i) {\r\n if (currentIndex !== $(this).data(\"index\")) {\r\n removeData.push($(this).data(\"index\"));\r\n }\r\n });\r\n if (removeData.length === 0) {\r\n return false;\r\n }\r\n var firstIndex = removeData.splice(0, 1);\r\n $(\"#dialogCloseEditor\").data(\"removeData\", removeData);\r\n // 开始关闭\r\n $('.edit-panel .tabs > div[data-index=\"' + firstIndex + '\"]').find(\".ico-close\").click();\r\n },\r\n _removeAllMarker: function () {\r\n var removeData = $(\"#dialogCloseEditor\").data(\"removeData\");\r\n if (removeData && removeData.length > 0) {\r\n var removeIndex = removeData.splice(0, 1);\r\n $(\"#dialogCloseEditor\").data(\"removeData\", removeData);\r\n $('.edit-panel .tabs > div[data-index=\"' + removeIndex + '\"] .ico-close').click();\r\n }\r\n if (wide.curEditor) {\r\n wide.curEditor.focus();\r\n }\r\n },\r\n _initClose: function () {\r\n new ZeroClipboard($(\"#copyFilePath\"));\r\n\r\n // 关闭、关闭其他、关闭所有\r\n $(\".edit-panel\").on(\"mouseup\", '.tabs > div', function (event) {\r\n event.stopPropagation();\r\n\r\n if (event.button === 0) { // 左键\r\n $(\".edit-panel .frame\").hide();\r\n return false;\r\n }\r\n\r\n // event.button === 2 右键\r\n var left = event.screenX;\r\n if ($(\".side\").css(\"left\") === \"auto\" || $(\".side\").css(\"left\") === \"0px\") {\r\n left = event.screenX - $(\".side\").width();\r\n }\r\n $(\".edit-panel .frame\").show().css({\r\n \"left\": left + \"px\",\r\n \"top\": \"21px\"\r\n }).data('index', $(this).data(\"index\"));\r\n\r\n $(\"#copyFilePath\").attr('data-clipboard-text', $(this).find(\"span:eq(0)\").attr(\"title\"));\r\n return false;\r\n });\r\n },\r\n init: function () {\r\n $(\"#dialogCloseEditor\").dialog({\r\n \"modal\": true,\r\n \"height\": 90,\r\n \"width\": 260,\r\n \"title\": config.label.tip,\r\n \"hideFooter\": true,\r\n \"afterOpen\": function (fileName) {\r\n $(\"#dialogCloseEditor > div:eq(0)\").html(config.label.file\r\n + ' ' + fileName + '. ' + config.label.confirm_save + '?');\r\n $(\"#dialogCloseEditor button:eq(0)\").focus();\r\n },\r\n \"afterInit\": function () {\r\n $(\"#dialogCloseEditor button.save\").click(function () {\r\n var i = $(\"#dialogCloseEditor\").data(\"index\");\r\n wide.fmt(editors.data[i].id, editors.data[i].editor);\r\n editors.tabs.del(editors.data[i].id);\r\n $(\"#dialogCloseEditor\").dialog(\"close\");\r\n editors._removeAllMarker();\r\n });\r\n\r\n $(\"#dialogCloseEditor button.discard\").click(function () {\r\n var i = $(\"#dialogCloseEditor\").data(\"index\");\r\n editors.tabs.del(editors.data[i].id);\r\n $(\"#dialogCloseEditor\").dialog(\"close\");\r\n editors._removeAllMarker();\r\n });\r\n\r\n $(\"#dialogCloseEditor button.cancel\").click(function (event) {\r\n $(\"#dialogCloseEditor\").dialog(\"close\");\r\n editors._removeAllMarker();\r\n });\r\n }\r\n });\r\n\r\n editors.tabs = new Tabs({\r\n id: \".edit-panel\",\r\n setAfter: function () {\r\n if (wide.curEditor) {\r\n wide.curEditor.focus();\r\n }\r\n },\r\n clickAfter: function (id) {\r\n if (id === 'startPage') {\r\n wide.curEditor = undefined;\r\n $(\".footer .cursor\").text('');\r\n wide.refreshOutline();\r\n \r\n return false;\r\n }\r\n },\r\n removeBefore: function (id) {\r\n if (id === 'startPage') { // 当前关闭的 tab 是起始页\r\n editors._removeAllMarker();\r\n return true;\r\n }\r\n\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n if (editors.data[i].id === id) {\r\n if (editors.data[i].editor.doc.isClean()) {\r\n editors._removeAllMarker();\r\n return true;\r\n } else {\r\n $(\"#dialogCloseEditor\").dialog(\"open\", $('.edit-panel .tabs > div[data-index=\"'\r\n + editors.data[i].id + '\"] > span:eq(0)').text());\r\n $(\"#dialogCloseEditor\").data(\"index\", i);\r\n return false;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n },\r\n removeAfter: function (id, nextId) {\r\n if ($(\".edit-panel .tabs > div\").length === 0) {\r\n // 全部 tab 都关闭时才 disables 菜单中“全部关闭”的按钮\r\n menu.disabled(['close-all']);\r\n }\r\n\r\n // 移除编辑器\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n if (editors.data[i].id === id) {\r\n editors.data.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n if (editors.data.length === 0) { // 起始页可能存在,所以用编辑器数据判断\r\n menu.disabled(['save-all', 'build', 'run', 'go-test', 'go-vet', 'go-get', 'go-install',\r\n 'find', 'find-next', 'find-previous', 'replace', 'replace-all',\r\n 'format', 'autocomplete', 'jump-to-decl', 'expr-info', 'find-usages', 'toggle-comment',\r\n 'edit']);\r\n\r\n // remove selected tree node\r\n tree.fileTree.cancelSelectedNode();\r\n wide.curNode = undefined;\r\n wide.curEditor = undefined;\r\n wide.refreshOutline();\r\n $(\".footer .cursor\").text('');\r\n return false;\r\n }\r\n\r\n if (!nextId) {\r\n // 编辑器区域不存在打开的 Tab\r\n // remove selected tree node\r\n tree.fileTree.cancelSelectedNode();\r\n wide.curNode = undefined;\r\n wide.curEditor = undefined;\r\n wide.refreshOutline();\r\n $(\".footer .cursor\").text('');\r\n return false;\r\n }\r\n\r\n if (nextId === editors.tabs.getCurrentId()) {\r\n // 关闭的不是当前编辑器\r\n return false;\r\n }\r\n }\r\n });\r\n\r\n this._initCodeMirrorHotKeys();\r\n this.openStartPage();\r\n this._initClose();\r\n },\r\n openStartPage: function () {\r\n wide.curEditor = undefined;\r\n wide.refreshOutline();\r\n $(\".footer .cursor\").text('');\r\n\r\n var dateFormat = function (time, fmt) {\r\n var date = new Date(time);\r\n var dateObj = {\r\n \"M+\": date.getMonth() + 1, //月份 \r\n \"d+\": date.getDate(), //日 \r\n \"h+\": date.getHours(), //小时 \r\n \"m+\": date.getMinutes(), //分 \r\n \"s+\": date.getSeconds(), //秒 \r\n \"q+\": Math.floor((date.getMonth() + 3) / 3), //季度 \r\n \"S\": date.getMilliseconds() //毫秒 \r\n };\r\n if (/(y+)/.test(fmt))\r\n fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\r\n for (var k in dateObj)\r\n if (new RegExp(\"(\" + k + \")\").test(fmt)) {\r\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1)\r\n ? (dateObj[k]) : ((\"00\" + dateObj[k]).substr((\"\" + dateObj[k]).length)));\r\n }\r\n return fmt;\r\n };\r\n\r\n editors.tabs.add({\r\n id: \"startPage\",\r\n title: ' ' + config.label.start_page + '',\r\n content: '
    ',\r\n after: function () {\r\n $(\"#startPage\").load(config.context + '/start?sid=' + config.wideSessionId);\r\n $.ajax({\r\n url: \"https://symphony.b3log.org/apis/articles?tags=wide,golang&p=1&size=20\",\r\n type: \"GET\",\r\n dataType: \"jsonp\",\r\n jsonp: \"callback\",\r\n success: function (data, textStatus) {\r\n var articles = data.articles;\r\n if (0 === articles.length) {\r\n return;\r\n }\r\n\r\n // 按 size = 20 取,但只保留最多 9 篇\r\n var length = articles.length;\r\n if (length > 9) {\r\n length = 9;\r\n }\r\n\r\n var listHTML = \"
    • \" + config.label.community + \"
    • \";\r\n for (var i = 0; i < length; i++) {\r\n var article = articles[i];\r\n listHTML += \"
    • \"\r\n + \"\"\r\n + article.articleTitle + \"  \"\r\n + dateFormat(article.articleCreateTime, 'yyyy-MM-dd');\r\n +\"
    • \";\r\n }\r\n\r\n $(\"#startPage .news\").html(listHTML + \"
    \");\r\n }\r\n });\r\n }\r\n });\r\n },\r\n getCurrentId: function () {\r\n var ret = editors.tabs.getCurrentId();\r\n if (ret === 'startPage') {\r\n ret = null;\r\n }\r\n \r\n return ret;\r\n },\r\n getCurrentPath: function () {\r\n var currentPath = $(\".edit-panel .tabs .current span:eq(0)\").attr(\"title\");\r\n if (currentPath === config.label.start_page) {\r\n currentPath = null;\r\n }\r\n return currentPath;\r\n },\r\n _initCodeMirrorHotKeys: function () {\r\n CodeMirror.registerHelper(\"hint\", \"go\", function (editor) {\r\n editor = wide.curEditor; // 使用当前编辑器覆盖实参,因为异步调用的原因,实参不一定正确\r\n var word = /[\\w$]+/;\r\n\r\n var cur = editor.getCursor(), curLine = editor.getLine(cur.line);\r\n\r\n var start = cur.ch, end = start;\r\n while (end < curLine.length && word.test(curLine.charAt(end))) {\r\n ++end;\r\n }\r\n while (start && word.test(curLine.charAt(start - 1))) {\r\n --start;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.path = $(\".edit-panel .tabs .current > span:eq(0)\").attr(\"title\");\r\n request.code = editor.getValue();\r\n request.cursorLine = cur.line;\r\n request.cursorCh = cur.ch;\r\n\r\n var autocompleteHints = [];\r\n\r\n if (editors.autocompleteMutex && editor.state.completionActive) {\r\n return;\r\n }\r\n\r\n editors.autocompleteMutex = true;\r\n\r\n $.ajax({\r\n async: false, // 同步执行\r\n type: 'POST',\r\n url: config.context + '/autocomplete',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (data) {\r\n var autocompleteArray = data[1];\r\n\r\n if (autocompleteArray) {\r\n for (var i = 0; i < autocompleteArray.length; i++) {\r\n var displayText = '',\r\n text = autocompleteArray[i].name;\r\n\r\n switch (autocompleteArray[i].class) {\r\n case \"type\":\r\n displayText = ''// + autocompleteArray[i].class \r\n + '' + autocompleteArray[i].name + ' '\r\n + autocompleteArray[i].type + '';\r\n break;\r\n case \"const\":\r\n displayText = ''// + autocompleteArray[i].class \r\n + '' + autocompleteArray[i].name + ' '\r\n + autocompleteArray[i].type + '';\r\n break;\r\n case \"var\":\r\n displayText = ''// + autocompleteArray[i].class \r\n + '' + autocompleteArray[i].name + ' '\r\n + autocompleteArray[i].type + '';\r\n break;\r\n case \"package\":\r\n displayText = ''// + autocompleteArray[i].class \r\n + '' + autocompleteArray[i].name + ' '\r\n + autocompleteArray[i].type + '';\r\n break;\r\n case \"func\":\r\n displayText = ''// + autocompleteArray[i].class \r\n + '' + autocompleteArray[i].name + ''\r\n + autocompleteArray[i].type.substring(4) + '';\r\n text += '()';\r\n break;\r\n default:\r\n console.warn(\"Can't handle autocomplete [\" + autocompleteArray[i].class + \"]\");\r\n break;\r\n }\r\n\r\n autocompleteHints[i] = {\r\n displayText: displayText,\r\n text: text\r\n };\r\n }\r\n }\r\n\r\n editor.doc.markClean();\r\n $(\".edit-panel .tabs .current > span:eq(0)\").removeClass(\"changed\");\r\n }\r\n });\r\n\r\n setTimeout(function () {\r\n editors.autocompleteMutex = false;\r\n }, 20);\r\n\r\n return {list: autocompleteHints, from: CodeMirror.Pos(cur.line, start), to: CodeMirror.Pos(cur.line, end)};\r\n });\r\n\r\n CodeMirror.commands.autocompleteAfterDot = function (cm) {\r\n var mode = cm.getMode();\r\n if (mode && \"go\" !== mode.name) {\r\n return CodeMirror.Pass;\r\n }\r\n\r\n var token = cm.getTokenAt(cm.getCursor());\r\n\r\n if (\"comment\" === token.type || \"string\" === token.type) {\r\n return CodeMirror.Pass;\r\n }\r\n\r\n setTimeout(function () {\r\n if (!cm.state.completionActive) {\r\n cm.showHint({hint: CodeMirror.hint.go, completeSingle: false});\r\n }\r\n }, 50);\r\n\r\n return CodeMirror.Pass;\r\n };\r\n\r\n CodeMirror.commands.autocompleteAnyWord = function (cm) {\r\n cm.showHint({hint: CodeMirror.hint.auto});\r\n };\r\n\r\n CodeMirror.commands.gotoLine = function (cm) {\r\n $(\"#dialogGoLinePrompt\").dialog(\"open\");\r\n };\r\n\r\n // 用于覆盖 cm 默认绑定的某些快捷键功能.\r\n CodeMirror.commands.doNothing = function (cm) {\r\n };\r\n\r\n CodeMirror.commands.exprInfo = function (cm) {\r\n var cur = wide.curEditor.getCursor();\r\n\r\n var request = newWideRequest();\r\n request.path = $(\".edit-panel .tabs .current > span:eq(0)\").attr(\"title\");\r\n request.code = wide.curEditor.getValue();\r\n request.cursorLine = cur.line;\r\n request.cursorCh = cur.ch;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/exprinfo',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n return;\r\n }\r\n \r\n var position = wide.curEditor.cursorCoords();\r\n $(\"body\").append('
    ' + result.data + '
    ');\r\n }\r\n });\r\n };\r\n\r\n CodeMirror.commands.copyLinesDown = function (cm) {\r\n var content = '',\r\n selectoion = cm.listSelections()[0];\r\n\r\n var from = selectoion.anchor,\r\n to = selectoion.head;\r\n if (from.line > to.line) {\r\n from = selectoion.head;\r\n to = selectoion.anchor;\r\n }\r\n\r\n for (var i = from.line, max = to.line; i <= max; i++) {\r\n if (to.ch !== 0 || i !== max) { // 下一行选中为0时,不应添加内容\r\n content += '\\n' + cm.getLine(i);\r\n }\r\n }\r\n // 下一行选中为0时,应添加到上一行末\r\n var replaceToLine = to.line;\r\n if (to.ch === 0) {\r\n replaceToLine = to.line - 1;\r\n }\r\n cm.replaceRange(content, CodeMirror.Pos(replaceToLine));\r\n\r\n var offset = replaceToLine - from.line + 1;\r\n cm.setSelection(CodeMirror.Pos(from.line + offset, from.ch),\r\n CodeMirror.Pos(to.line + offset, to.ch));\r\n };\r\n\r\n CodeMirror.commands.copyLinesUp = function (cm) {\r\n var content = '',\r\n selectoion = cm.listSelections()[0];\r\n\r\n var from = selectoion.anchor,\r\n to = selectoion.head;\r\n if (from.line > to.line) {\r\n from = selectoion.head;\r\n to = selectoion.anchor;\r\n }\r\n\r\n for (var i = from.line, max = to.line; i <= max; i++) {\r\n if (to.ch !== 0 || i !== max) { // 下一行选中为0时,不应添加内容\r\n content += '\\n' + cm.getLine(i);\r\n }\r\n }\r\n\r\n // 下一行选中为0时,应添加到上一行末\r\n var replaceToLine = to.line;\r\n if (to.ch === 0) {\r\n replaceToLine = to.line - 1;\r\n }\r\n cm.replaceRange(content, CodeMirror.Pos(replaceToLine));\r\n\r\n cm.setSelection(CodeMirror.Pos(from.line, from.ch),\r\n CodeMirror.Pos(to.line, to.ch));\r\n };\r\n\r\n CodeMirror.commands.moveLinesUp = function (cm) {\r\n var selectoion = cm.listSelections()[0];\r\n\r\n var from = selectoion.anchor,\r\n to = selectoion.head;\r\n if (from.line > to.line) {\r\n from = selectoion.head;\r\n to = selectoion.anchor;\r\n }\r\n\r\n if (from.line === 0) {\r\n return false;\r\n }\r\n // 下一行选中为0时,应添加到上一行末\r\n var replaceToLine = to.line;\r\n if (to.ch === 0) {\r\n replaceToLine = to.line - 1;\r\n }\r\n cm.replaceRange('\\n' + cm.getLine(from.line - 1), CodeMirror.Pos(replaceToLine));\r\n if (from.line === 1) {\r\n // 移除第一行的换行\r\n cm.replaceRange('', CodeMirror.Pos(0, 0),\r\n CodeMirror.Pos(1, 0));\r\n } else {\r\n cm.replaceRange('', CodeMirror.Pos(from.line - 2, cm.getLine(from.line - 2).length),\r\n CodeMirror.Pos(from.line - 1, cm.getLine(from.line - 1).length));\r\n }\r\n\r\n cm.setSelection(CodeMirror.Pos(from.line - 1, from.ch),\r\n CodeMirror.Pos(to.line - 1, to.ch));\r\n };\r\n\r\n CodeMirror.commands.moveLinesDown = function (cm) {\r\n var selectoion = cm.listSelections()[0];\r\n\r\n var from = selectoion.anchor,\r\n to = selectoion.head;\r\n if (from.line > to.line) {\r\n from = selectoion.head;\r\n to = selectoion.anchor;\r\n }\r\n\r\n if (to.line === cm.lastLine()) {\r\n return false;\r\n }\r\n\r\n // 下一行选中为0时,应添加到上一行末\r\n var replaceToLine = to.line;\r\n if (to.ch === 0) {\r\n replaceToLine = to.line - 1;\r\n }\r\n // 把选中的下一行添加到选中区域的上一行\r\n if (from.line === 0) {\r\n cm.replaceRange(cm.getLine(replaceToLine + 1) + '\\n', CodeMirror.Pos(0, 0));\r\n } else {\r\n cm.replaceRange('\\n' + cm.getLine(replaceToLine + 1), CodeMirror.Pos(from.line - 1));\r\n }\r\n // 删除选中的下一行\r\n cm.replaceRange('', CodeMirror.Pos(replaceToLine + 1, cm.getLine(replaceToLine + 1).length),\r\n CodeMirror.Pos(replaceToLine + 2, cm.getLine(replaceToLine + 2).length));\r\n\r\n cm.setSelection(CodeMirror.Pos(from.line + 1, from.ch),\r\n CodeMirror.Pos(to.line + 1, to.ch));\r\n };\r\n\r\n CodeMirror.commands.jumpToDecl = function (cm) {\r\n var cur = wide.curEditor.getCursor();\r\n\r\n var request = newWideRequest();\r\n request.path = $(\".edit-panel .tabs .current > span:eq(0)\").attr(\"title\");\r\n request.code = wide.curEditor.getValue();\r\n request.cursorLine = cur.line;\r\n request.cursorCh = cur.ch;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/find/decl',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n return;\r\n }\r\n \r\n var data = result.data;\r\n\r\n var tId = tree.getTIdByPath(data.path);\r\n wide.curNode = tree.fileTree.getNodeByTId(tId);\r\n tree.fileTree.selectNode(wide.curNode);\r\n\r\n tree.openFile(wide.curNode, CodeMirror.Pos(data.cursorLine - 1, data.cursorCh - 1));\r\n }\r\n });\r\n };\r\n\r\n CodeMirror.commands.findUsages = function (cm) {\r\n var cur = wide.curEditor.getCursor();\r\n\r\n var request = newWideRequest();\r\n request.path = $(\".edit-panel .tabs .current > span:eq(0)\").attr(\"title\");\r\n request.code = wide.curEditor.getValue();\r\n request.cursorLine = cur.line;\r\n request.cursorCh = cur.ch;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/find/usages',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n return;\r\n }\r\n\r\n editors.appendSearch(result.data, 'usages', '');\r\n }\r\n });\r\n };\r\n\r\n CodeMirror.commands.selectIdentifier = function (cm) {\r\n var cur = cm.getCursor();\r\n var word = cm.findWordAt(cur);\r\n cm.extendSelection(word.anchor, word.head);\r\n };\r\n },\r\n appendSearch: function (data, type, key) {\r\n var searcHTML = '
      ',\r\n key = key.toLowerCase();\r\n\r\n for (var i = 0, ii = data.length; i < ii; i++) {\r\n var contents = '',\r\n lowerCaseContents = data[i].contents[0].toLowerCase(),\r\n matches = lowerCaseContents.split(key),\r\n startIndex = 0,\r\n endIndex = 0;\r\n for (var j = 0, max = matches.length; j < max; j++) {\r\n startIndex = endIndex + matches[j].length;\r\n endIndex = startIndex + key.length;\r\n var keyWord = data[i].contents[0].substring(startIndex, endIndex);\r\n if (keyWord !== '') {\r\n keyWord = '' + keyWord + '';\r\n }\r\n contents += data[i].contents[0].substring(startIndex - matches[j].length, startIndex) + keyWord;\r\n }\r\n\r\n searcHTML += '
    • '\r\n + contents + \"    \" + data[i].path\r\n + ' (' + data[i].line + ':'\r\n + data[i].ch + ')
    • ';\r\n }\r\n\r\n if (data.length === 0) {\r\n searcHTML += '
    • ' + config.label.search_no_match + '
    • ';\r\n }\r\n searcHTML += '
    ';\r\n\r\n var $search = $('.bottom-window-group .search'),\r\n title = config.label.find_usages;\r\n if (type === \"founds\") {\r\n title = config.label.search_text;\r\n }\r\n if ($search.find(\"ul\").length === 0) {\r\n bottomGroup.searchTab = new Tabs({\r\n id: \".bottom-window-group .search\",\r\n removeAfter: function (id, prevId) {\r\n if ($search.find(\"ul\").length === 1) {\r\n $search.find(\".tabs\").hide();\r\n }\r\n }\r\n });\r\n\r\n $search.on(\"click\", \"li\", function () {\r\n $search.find(\"li\").removeClass(\"selected\");\r\n $(this).addClass(\"selected\");\r\n });\r\n\r\n $search.on(\"dblclick\", \"li\", function () {\r\n var $it = $(this),\r\n tId = tree.getTIdByPath($it.attr(\"title\"));\r\n tree.openFile(tree.fileTree.getNodeByTId(tId));\r\n tree.fileTree.selectNode(wide.curNode);\r\n\r\n var line = $it.find(\".position\").data(\"line\") - 1;\r\n var cursor = CodeMirror.Pos(line, $it.find(\".position\").data(\"ch\") - 1);\r\n\r\n\r\n var editor = wide.curEditor;\r\n editor.setCursor(cursor);\r\n\r\n var half = Math.floor(editor.getScrollInfo().clientHeight / editor.defaultTextHeight() / 2);\r\n var cursorCoords = editor.cursorCoords({line: cursor.line - half, ch: 0}, \"local\");\r\n editor.scrollTo(0, cursorCoords.top);\r\n\r\n wide.curEditor.focus();\r\n });\r\n\r\n $search.find(\".tabs-panel > div\").append(searcHTML);\r\n\r\n $search.find(\".tabs .first\").text(title);\r\n } else {\r\n $search.find(\".tabs\").show();\r\n bottomGroup.searchTab.add({\r\n \"id\": \"search\" + (new Date()).getTime(),\r\n \"title\": title,\r\n \"content\": searcHTML\r\n });\r\n }\r\n\r\n // focus\r\n bottomGroup.tabs.setCurrent(\"search\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .search\").focus();\r\n },\r\n // 新建一个编辑器 Tab,如果已经存在 Tab 则切换到该 Tab.\r\n newEditor: function (data, cursor) {\r\n var id = wide.curNode.id;\r\n\r\n editors.tabs.add({\r\n id: id,\r\n title: '' + wide.curNode.name + '',\r\n content: ''\r\n });\r\n\r\n menu.undisabled(['save-all', 'close-all', 'build', 'run', 'go-test', 'go-vet', 'go-get', 'go-install',\r\n 'find', 'find-next', 'find-previous', 'replace', 'replace-all',\r\n 'format', 'autocomplete', 'jump-to-decl', 'expr-info', 'find-usages', 'toggle-comment',\r\n 'edit']);\r\n\r\n var textArea = document.getElementById(\"editor\" + id);\r\n textArea.value = data.content;\r\n\r\n var editor = CodeMirror.fromTextArea(textArea, {\r\n lineNumbers: true,\r\n autofocus: true,\r\n autoCloseBrackets: true,\r\n matchBrackets: true,\r\n highlightSelectionMatches: {showToken: /\\w/},\r\n rulers: [{color: \"#ccc\", column: 120, lineStyle: \"dashed\"}],\r\n styleActiveLine: true,\r\n theme: config.editorTheme,\r\n tabSize: config.editorTabSize,\r\n indentUnit: 4,\r\n indentWithTabs: true,\r\n foldGutter: true,\r\n cursorHeight: 1,\r\n path: data.path,\r\n readOnly: wide.curNode.isGOAPI,\r\n profile: 'xhtml', // define Emmet output profile\r\n extraKeys: {\r\n \"Ctrl-\\\\\": \"autocompleteAnyWord\",\r\n \".\": \"autocompleteAfterDot\",\r\n \"Ctrl-/\": 'toggleComment',\r\n \"Ctrl-I\": \"exprInfo\",\r\n \"Ctrl-L\": \"gotoLine\",\r\n \"Ctrl-E\": \"deleteLine\",\r\n \"Ctrl-D\": \"doNothing\", // 取消默认的 deleteLine\r\n \"Ctrl-B\": \"jumpToDecl\",\r\n \"Ctrl-S\": function () {\r\n wide.saveFile();\r\n },\r\n \"Shift-Ctrl-S\": function () {\r\n menu.saveAllFiles();\r\n },\r\n \"Shift-Alt-F\": function () {\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n wide.fmt(currentPath, wide.curEditor);\r\n },\r\n \"Alt-F7\": \"findUsages\",\r\n \"Shift-Alt-Enter\": function () {\r\n if (windows.isMaxEditor) {\r\n windows.restoreEditor();\r\n } else {\r\n windows.maxEditor();\r\n }\r\n },\r\n \"Shift-Ctrl-Up\": \"copyLinesUp\",\r\n \"Shift-Ctrl-Down\": \"copyLinesDown\",\r\n \"Shift-Alt-Up\": \"moveLinesUp\",\r\n \"Shift-Alt-Down\": \"moveLinesDown\",\r\n \"Shift-Alt-J\": \"selectIdentifier\"\r\n }\r\n });\r\n\r\n if (\"text/html\" === data.mode) {\r\n emmetCodeMirror(editor);\r\n }\r\n\r\n editor.on('cursorActivity', function (cm) {\r\n $(\".edit-exprinfo\").remove();\r\n var cursor = cm.getCursor();\r\n\r\n $(\".footer .cursor\").text('| ' + (cursor.line + 1) + ':' + (cursor.ch + 1) + ' |');\r\n });\r\n\r\n editor.on('blur', function (cm) {\r\n $(\".edit-exprinfo\").remove();\r\n });\r\n\r\n editor.on('changes', function (cm) {\r\n if (cm.doc.isClean()) { // no modification\r\n $(\".edit-panel .tabs > div\").each(function () {\r\n var $span = $(this).find(\"span:eq(0)\");\r\n if ($span.attr(\"title\") === cm.options.path) {\r\n $span.removeClass(\"changed\");\r\n }\r\n });\r\n\r\n return;\r\n }\r\n\r\n // changed\r\n\r\n $(\".edit-panel .tabs > div\").each(function () {\r\n var $span = $(this).find(\"span:eq(0)\");\r\n if ($span.attr(\"title\") === cm.options.path) {\r\n $span.addClass(\"changed\");\r\n }\r\n });\r\n });\r\n\r\n editor.on('keydown', function (cm, evt) {\r\n if (evt.altKey || evt.ctrlKey || evt.shiftKey) {\r\n return;\r\n }\r\n\r\n var k = evt.which;\r\n\r\n if (k < 48) {\r\n return;\r\n }\r\n\r\n // hit [0-9]\r\n\r\n if (k > 57 && k < 65) {\r\n return;\r\n }\r\n\r\n // hit [a-z]\r\n\r\n if (k > 90) {\r\n return;\r\n }\r\n\r\n if (config.autocomplete) {\r\n if (0.5 <= Math.random()) {\r\n CodeMirror.commands.autocompleteAfterDot(cm);\r\n }\r\n }\r\n });\r\n\r\n editor.setSize('100%', $(\".edit-panel\").height() - $(\".edit-panel .tabs\").height());\r\n editor.setOption(\"mode\", data.mode);\r\n editor.setOption(\"gutters\", [\"CodeMirror-lint-markers\", \"CodeMirror-foldgutter\"]);\r\n\r\n if (\"wide\" !== config.keymap) {\r\n editor.setOption(\"keyMap\", config.keymap);\r\n }\r\n\r\n if (\"text/x-go\" === data.mode || \"application/json\" === data.mode) {\r\n editor.setOption(\"lint\", true);\r\n }\r\n\r\n if (\"application/xml\" === data.mode || \"text/html\" === data.mode) {\r\n editor.setOption(\"autoCloseTags\", true);\r\n }\r\n\r\n wide.curEditor = editor;\r\n editors.data.push({\r\n \"editor\": editor,\r\n \"id\": id\r\n });\r\n\r\n $(\".footer .cursor\").text('| ' + (cursor.line + 1) + ':' + (cursor.ch + 1) + ' |');\r\n\r\n var half = Math.floor(wide.curEditor.getScrollInfo().clientHeight / wide.curEditor.defaultTextHeight() / 2);\r\n var cursorCoords = wide.curEditor.cursorCoords({line: cursor.line - half, ch: 0}, \"local\");\r\n wide.curEditor.scrollTo(0, cursorCoords.top);\r\n\r\n editor.setCursor(cursor);\r\n editor.focus();\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file notification.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.0.0.1, Dec 8, 2015\r\n */\r\nvar notification = {\r\n init: function () {\r\n $(\".notification-count\").click(function () {\r\n bottomGroup.tabs.setCurrent(\"notification\");\r\n $(\".bottom-window-group .notification\").focus();\r\n $(this).hide();\r\n });\r\n\r\n this._initWS();\r\n },\r\n _initWS: function () {\r\n var notificationWS = new ReconnectingWebSocket(config.channel + '/notification/ws?sid=' + config.wideSessionId);\r\n\r\n notificationWS.onopen = function () {\r\n console.log('[notification onopen] connected');\r\n };\r\n\r\n notificationWS.onmessage = function (e) {\r\n var data = JSON.parse(e.data),\r\n $notification = $('.bottom-window-group .notification > table'),\r\n notificationHTML = '';\r\n \r\n if (data.cmd && \"init-notification\" === data.cmd) {\r\n console.log('[notification onmessage]' + e.data);\r\n \r\n return;\r\n }\r\n\r\n notificationHTML += '' + data.severity\r\n + '' + data.message\r\n + '' + data.type + '';\r\n $notification.append(notificationHTML);\r\n\r\n $(\".notification-count\").show();\r\n };\r\n\r\n notificationWS.onclose = function (e) {\r\n console.log('[notification onclose] disconnected (' + e.code + ')');\r\n };\r\n\r\n notificationWS.onerror = function (e) {\r\n console.log('[notification onerror]');\r\n };\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file tree.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.0.0.1, Dec 8, 2015\r\n */\r\nvar tree = {\r\n fileTree: undefined,\r\n // 递归获取当前节点展开中的最后一个节点\r\n getCurrentNodeLastNode: function (node) {\r\n var returnNode = node.children[node.children.length - 1];\r\n if (returnNode.open) {\r\n return tree.getCurrentNodeLastNode(returnNode);\r\n } else {\r\n return returnNode;\r\n }\r\n },\r\n // 按照树展现获取下一个节点\r\n getNextShowNode: function (node) {\r\n if (node.level !== 0) {\r\n if (node.getParentNode().getNextNode()) {\r\n return node.getParentNode().getNextNode();\r\n } else {\r\n return tree.getNextShowNode(node.getParentNode());\r\n }\r\n } else {\r\n return node.getNextNode();\r\n }\r\n },\r\n isBottomNode: function (node) {\r\n if (node.open) {\r\n return false;\r\n }\r\n\r\n if (node.getParentNode()) {\r\n if (node.getParentNode().isLastNode) {\r\n return tree.isBottomNode(node.getParentNode());\r\n } else {\r\n return false;\r\n }\r\n } else {\r\n if (node.isLastNode) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n },\r\n getTIdByPath: function (path) {\r\n var nodes = tree.fileTree.transformToArray(tree.fileTree.getNodes());\r\n for (var i = 0, ii = nodes.length; i < ii; i++) {\r\n if (nodes[i].path === path) {\r\n return nodes[i].tId;\r\n }\r\n }\r\n\r\n return undefined;\r\n },\r\n getOpenPaths: function () {\r\n var nodes = tree.fileTree.transformToArray(tree.fileTree.getNodes()),\r\n paths = [];\r\n for (var i = 0, ii = nodes.length; i < ii; i++) {\r\n if (nodes[i].open) {\r\n paths.push(nodes[i].path);\r\n }\r\n }\r\n\r\n return paths;\r\n },\r\n getAllParents: function (node, parents) {\r\n if (!parents) {\r\n parents = [];\r\n }\r\n\r\n if (!node || !node.parentTId) {\r\n return parents;\r\n } else {\r\n parents.push(node.getParentNode());\r\n return tree.getAllParents(node.getParentNode(), parents);\r\n }\r\n },\r\n isParents: function (tId, parentPath) {\r\n var node = tree.fileTree.getNodeByTId(tId);\r\n if (!node || !node.parentTId) {\r\n return false;\r\n } else {\r\n var parentNode = tree.fileTree.getNodeByTId(node.parentTId);\r\n if (node.path === parentPath) {\r\n return true;\r\n } else {\r\n return tree.isParents(parentNode.tId, parentPath);\r\n }\r\n }\r\n },\r\n isDir: function () {\r\n if (wide.curNode.iconSkin.indexOf(\"ico-ztree-dir\") === 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n newFile: function (it) {\r\n if ($(it).hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n $(\"#dialogNewFilePrompt\").dialog(\"open\");\r\n },\r\n newDir: function (it) {\r\n if ($(it).hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n $(\"#dialogNewDirPrompt\").dialog(\"open\");\r\n },\r\n removeIt: function (it) {\r\n if (it) {\r\n if ($(it).hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n } else {\r\n if (!wide.curNode.removable) {\r\n return false;\r\n }\r\n }\r\n\r\n $(\"#dialogRemoveConfirm\").dialog(\"open\");\r\n },\r\n rename: function (it) {\r\n if (it) {\r\n if ($(it).hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n }\r\n\r\n $(\"#dialogRenamePrompt\").dialog(\"open\");\r\n },\r\n export: function () {\r\n var request = newWideRequest(),\r\n isSucc = false;\r\n request.path = wide.curNode.path;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'POST',\r\n url: config.context + '/file/zip/new',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogAlert\").dialog(\"open\", result.msg);\r\n\r\n return false;\r\n }\r\n\r\n isSucc = true;\r\n }\r\n });\r\n\r\n if (isSucc) {\r\n window.open(config.context + '/file/zip?path=' + wide.curNode.path + \".zip\");\r\n }\r\n },\r\n crossCompile: function (platform) {\r\n var request = newWideRequest();\r\n request.path = wide.curNode.path;\r\n request.platform = platform;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'POST',\r\n url: config.context + '/cross',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogAlert\").dialog(\"open\", result.msg);\r\n\r\n return false;\r\n }\r\n }\r\n });\r\n },\r\n decompress: function () {\r\n var request = newWideRequest();\r\n request.path = wide.curNode.path;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'POST',\r\n url: config.context + '/file/decompress',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogAlert\").dialog(\"open\", result.msg);\r\n\r\n return false;\r\n }\r\n\r\n var dir = wide.curNode.getParentNode();\r\n tree.fileTree.reAsyncChildNodes(dir, \"refresh\");\r\n }\r\n });\r\n },\r\n refresh: function (it) {\r\n if (it) {\r\n if ($(it).hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n }\r\n\r\n tree.fileTree.reAsyncChildNodes(wide.curNode, \"refresh\", true);\r\n },\r\n gitClone: function (it) {\r\n if (it) {\r\n if ($(it).hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n }\r\n\r\n $(\"#dialogGitClonePrompt\").dialog('open');\r\n },\r\n import: function () {\r\n var request = newWideRequest();\r\n request.path = wide.curNode.path;\r\n\r\n $('#importFileupload').fileupload({\r\n url: \"/file/upload?path=\" + request.path,\r\n dataType: 'json',\r\n formData: request,\r\n done: function (e, result) {\r\n tree.fileTree.reAsyncChildNodes(wide.curNode, \"refresh\");\r\n },\r\n fail: function () {\r\n console.log(arguments);\r\n }\r\n });\r\n },\r\n init: function () {\r\n $(\"#file\").click(function () {\r\n $(this).focus();\r\n });\r\n\r\n var request = newWideRequest();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/files',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (result.succ) {\r\n var $dirRMenu = $(\"#dirRMenu\");\r\n var $fileRMenu = $(\"#fileRMenu\");\r\n var setting = {\r\n data: {\r\n key: {\r\n title: \"path\"\r\n }\r\n },\r\n view: {\r\n showTitle: true,\r\n selectedMulti: false\r\n },\r\n async: {\r\n enable: true,\r\n url: config.context + \"/file/refresh\",\r\n autoParam: [\"path\"]\r\n },\r\n callback: {\r\n onDblClick: function (event, treeId, treeNode) {\r\n if (treeNode) {\r\n tree.openFile(treeNode);\r\n }\r\n },\r\n onRightClick: function (event, treeId, treeNode) {\r\n if (treeNode && !treeNode.isGOAPI) {\r\n menu.undisabled(['import', 'export', 'git-clone']);\r\n\r\n wide.curNode = treeNode;\r\n tree.fileTree.selectNode(treeNode);\r\n\r\n if (!tree.isDir()) { // if right click on a file\r\n if (wide.curNode.removable) {\r\n $fileRMenu.find(\".remove\").removeClass(\"disabled\");\r\n } else {\r\n $fileRMenu.find(\".remove\").addClass(\"disabled\");\r\n }\r\n\r\n if (-1 === wide.curNode.path.indexOf(\"zip\", wide.curNode.path.length - \"zip\".length)) { // !path.endsWith(\"zip\")\r\n $fileRMenu.find(\".decompress\").hide();\r\n } else {\r\n $fileRMenu.find(\".decompress\").show();\r\n }\r\n\r\n if (-1 === wide.curNode.path.indexOf(\"go\", wide.curNode.path.length - \"go\".length)) { // !path.endsWith(\"go\")\r\n $fileRMenu.find(\".linux64\").hide();\r\n } else {\r\n $fileRMenu.find(\".linux64\").show();\r\n }\r\n\r\n var top = event.clientY - 10;\r\n if ($fileRMenu.height() + top > $('.content').height()) {\r\n top = top - $fileRMenu.height() - 25;\r\n }\r\n $fileRMenu.css({\r\n \"top\": top + \"px\",\r\n \"left\": event.clientX + \"px\",\r\n \"display\": \"block\"\r\n }).show();\r\n\r\n $dirRMenu.hide();\r\n\r\n menu.disabled(['import', 'git-clone']);\r\n } else { // 右击了目录\r\n if (wide.curNode.removable) {\r\n $dirRMenu.find(\".remove\").removeClass(\"disabled\");\r\n } else {\r\n $dirRMenu.find(\".remove\").addClass(\"disabled\");\r\n }\r\n\r\n if (wide.curNode.creatable) {\r\n $dirRMenu.find(\".create\").removeClass(\"disabled\");\r\n } else {\r\n $dirRMenu.find(\".create\").addClass(\"disabled\");\r\n }\r\n\r\n var top = event.clientY - 10;\r\n if ($dirRMenu.height() + top > $('.content').height()) {\r\n top = top - $dirRMenu.height() - 25;\r\n }\r\n\r\n $dirRMenu.css({\r\n \"top\": top + \"px\",\r\n \"left\": event.clientX + \"px\",\r\n \"display\": \"block\"\r\n }).show();\r\n\r\n $fileRMenu.hide();\r\n }\r\n $(\"#files\").focus();\r\n }\r\n },\r\n onClick: function (event, treeId, treeNode, clickFlag) {\r\n if (treeNode) {\r\n wide.curNode = treeNode;\r\n tree.fileTree.selectNode(treeNode);\r\n\r\n menu.undisabled(['import', 'export', 'git-clone']);\r\n if (!tree.isDir()) {\r\n menu.disabled(['import', 'git-clone']);\r\n }\r\n\r\n $(\"#files\").focus();\r\n }\r\n }\r\n }\r\n };\r\n tree.fileTree = $.fn.zTree.init($(\"#files\"), setting, result.data.children);\r\n\r\n session.restore();\r\n }\r\n }\r\n });\r\n\r\n this._initSearch();\r\n this._initRename();\r\n },\r\n openFile: function (treeNode, cursor) {\r\n wide.curNode = treeNode;\r\n var tempCursor = cursor;\r\n\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n // 该节点文件已经打开\r\n if (editors.data[i].id === treeNode.path) {\r\n editors.tabs.setCurrent(treeNode.path);\r\n wide.curEditor = editors.data[i].editor;\r\n\r\n if (!tempCursor) {\r\n tempCursor = wide.curEditor.getCursor();\r\n }\r\n $(\".footer .cursor\").text('| ' + (tempCursor.line + 1) + ':' + (tempCursor.ch + 1) + ' |');\r\n\r\n wide.curEditor.setCursor(tempCursor);\r\n var half = Math.floor(wide.curEditor.getScrollInfo().clientHeight / wide.curEditor.defaultTextHeight() / 2);\r\n var cursorCoords = wide.curEditor.cursorCoords({line: tempCursor.line - half, ch: 0}, \"local\");\r\n wide.curEditor.scrollTo(0, cursorCoords.top);\r\n wide.curEditor.focus();\r\n\r\n wide.refreshOutline();\r\n return false;\r\n }\r\n }\r\n\r\n if (!tree.isDir()) {\r\n var request = newWideRequest();\r\n request.path = treeNode.path;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'POST',\r\n url: config.context + '/file',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogAlert\").dialog(\"open\", result.msg);\r\n\r\n return false;\r\n }\r\n\r\n var data = result.data;\r\n\r\n if (!data.mode) {\r\n var mode = CodeMirror.findModeByFileName(treeNode.path);\r\n if (mode) {\r\n data.mode = mode.mime;\r\n } else {\r\n data.mode = 'text/plain';\r\n }\r\n }\r\n\r\n if (!data.mode) {\r\n console.error(\"Can't find mode by file name [\" + treeNode.path + \"]\");\r\n }\r\n\r\n if (\"img\" === data.mode) { // 是图片文件的话新建 tab 打开\r\n // 最好是开 tab,但这个最终取决于浏览器设置\r\n var w = window.open(config.context + data.path);\r\n return false;\r\n }\r\n\r\n if (!tempCursor) {\r\n tempCursor = CodeMirror.Pos(0, 0);\r\n }\r\n\r\n editors.newEditor(data, tempCursor);\r\n\r\n wide.refreshOutline();\r\n }\r\n });\r\n }\r\n },\r\n _initSearch: function () {\r\n $(\"#dialogSearchForm > input:eq(0)\").keyup(function (event) {\r\n var $okBtn = $(this).closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n if (event.which === 13 && !$okBtn.prop(\"disabled\")) {\r\n $okBtn.click();\r\n }\r\n\r\n if ($.trim($(this).val()) === \"\") {\r\n $okBtn.prop(\"disabled\", true);\r\n } else {\r\n $okBtn.prop(\"disabled\", false);\r\n }\r\n });\r\n\r\n $(\"#dialogSearchForm > input:eq(1)\").keyup(function (event) {\r\n var $okBtn = $(this).closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n if (event.which === 13 && !$okBtn.prop(\"disabled\")) {\r\n $okBtn.click();\r\n }\r\n });\r\n\r\n $(\"#dialogSearchForm\").dialog({\r\n \"modal\": true,\r\n \"height\": 80,\r\n \"width\": 260,\r\n \"title\": config.label.search,\r\n \"okText\": config.label.search,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogSearchForm > input:eq(0)\").val('').focus();\r\n $(\"#dialogSearchForm > input:eq(1)\").val('');\r\n $(\"#dialogSearchForm\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n },\r\n \"ok\": function () {\r\n var request = newWideRequest();\r\n\r\n if (!wide.curNode) {\r\n request.dir = \"\";\r\n } else {\r\n request.dir = wide.curNode.path;\r\n }\r\n\r\n request.text = $(\"#dialogSearchForm > input:eq(0)\").val();\r\n request.extension = $(\"#dialogSearchForm > input:eq(1)\").val();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/search/text',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n return;\r\n }\r\n\r\n $(\"#dialogSearchForm\").dialog(\"close\");\r\n editors.appendSearch(result.data, 'founds', request.text);\r\n }\r\n });\r\n }\r\n });\r\n },\r\n _initRename: function () {\r\n $(\"#dialogRenamePrompt\").dialog({\r\n \"modal\": true,\r\n \"height\": 52,\r\n \"width\": 260,\r\n \"title\": config.label.rename,\r\n \"okText\": config.label.rename,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogRenamePrompt\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n $(\"#dialogRenamePrompt > input\").val(wide.curNode.name).select().focus();\r\n },\r\n \"ok\": function () {\r\n var name = $(\"#dialogRenamePrompt > input\").val(),\r\n request = newWideRequest();\r\n\r\n request.oldPath = wide.curNode.path;\r\n request.newPath = wide.curNode.path.substring(0, wide.curNode.path.lastIndexOf(\"/\") + 1) + name;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/rename',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogRenamePrompt\").dialog(\"close\");\r\n bottomGroup.tabs.setCurrent(\"notification\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .notification\").focus();\r\n return false;\r\n }\r\n\r\n $(\"#dialogRenamePrompt\").dialog(\"close\");\r\n }\r\n });\r\n }\r\n });\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file wide.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.0.0.1, Dec 8, 2015\r\n */\r\nvar wide = {\r\n curNode: undefined,\r\n curEditor: undefined,\r\n curProcessId: undefined, // curent running process id (pid)\r\n refreshOutline: function () {\r\n if (!wide.curEditor ||\r\n (wide.curEditor && wide.curEditor.doc.getMode().name !== \"go\")) {\r\n $(\"#outline\").html('');\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.code = wide.curEditor.getValue();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n async: false,\r\n url: config.context + '/outline',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n return;\r\n }\r\n\r\n var data = result.data;\r\n\r\n var outlineHTML = '
      ',\r\n decls = ['constDecls', 'varDecls', 'funcDecls',\r\n 'structDecls', 'interfaceDecls', 'typeDecls'];\r\n\r\n for (var i = 0, max = decls.length; i < max; i++) {\r\n var key = decls[i];\r\n for (var j = 0, maxj = data[key].length; j < maxj; j++) {\r\n var obj = data[key][j];\r\n outlineHTML += '
    • ' + obj.Name + '
    • ';\r\n }\r\n }\r\n $(\"#outline\").html(outlineHTML + '
    ');\r\n\r\n $(\"#outline li\").dblclick(function () {\r\n var $it = $(this),\r\n cursor = CodeMirror.Pos($it.data('line'), $it.data(\"ch\"));\r\n\r\n var editor = wide.curEditor;\r\n editor.setCursor(cursor);\r\n\r\n var half = Math.floor(editor.getScrollInfo().clientHeight / editor.defaultTextHeight() / 2);\r\n var cursorCoords = editor.cursorCoords({line: cursor.line - half, ch: 0}, \"local\");\r\n editor.scrollTo(0, cursorCoords.top);\r\n\r\n editor.focus();\r\n });\r\n }\r\n });\r\n },\r\n _initDialog: function () {\r\n $(\".dialog-prompt > input\").keyup(function (event) {\r\n var $okBtn = $(this).closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n if (event.which === 13 && !$okBtn.prop(\"disabled\")) {\r\n $okBtn.click();\r\n }\r\n\r\n if ($.trim($(this).val()) === \"\") {\r\n $okBtn.prop(\"disabled\", true);\r\n } else {\r\n $okBtn.prop(\"disabled\", false);\r\n }\r\n });\r\n\r\n $(\"#dialogAlert\").dialog({\r\n \"modal\": true,\r\n \"height\": 40,\r\n \"width\": 350,\r\n \"title\": config.label.tip,\r\n \"hiddenOk\": true,\r\n \"cancelText\": config.label.confirm,\r\n \"afterOpen\": function (msg) {\r\n $(\"#dialogAlert\").html(msg);\r\n }\r\n });\r\n\r\n $(\"#dialogRemoveConfirm\").dialog({\r\n \"modal\": true,\r\n \"height\": 36,\r\n \"width\": 260,\r\n \"title\": config.label.delete,\r\n \"okText\": config.label.delete,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogRemoveConfirm > b\").html('\"' + wide.curNode.name + '\"');\r\n },\r\n \"ok\": function () {\r\n var request = newWideRequest();\r\n request.path = wide.curNode.path;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/remove',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogRemoveConfirm\").dialog(\"close\");\r\n bottomGroup.tabs.setCurrent(\"notification\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .notification\").focus();\r\n return false;\r\n }\r\n\r\n $(\"#dialogRemoveConfirm\").dialog(\"close\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n $(\"#dialogNewFilePrompt\").dialog({\r\n \"modal\": true,\r\n \"height\": 52,\r\n \"width\": 260,\r\n \"title\": config.label.create_file,\r\n \"okText\": config.label.create,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogNewFilePrompt > input\").val('').focus();\r\n $(\"#dialogNewFilePrompt\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n },\r\n \"ok\": function () {\r\n var request = newWideRequest(),\r\n name = $(\"#dialogNewFilePrompt > input\").val();\r\n\r\n request.path = wide.curNode.path + \"/\" + name;\r\n request.fileType = \"f\";\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/new',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogNewFilePrompt\").dialog(\"close\");\r\n bottomGroup.tabs.setCurrent(\"notification\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .notification\").focus();\r\n return false;\r\n }\r\n\r\n $(\"#dialogNewFilePrompt\").dialog(\"close\");\r\n\r\n setTimeout(function () { // Delay, waiting the file change notified and then open it\r\n var tId = tree.getTIdByPath(request.path);\r\n tree.openFile(tree.fileTree.getNodeByTId(tId));\r\n tree.fileTree.selectNode(wide.curNode);\r\n }, 100);\r\n }\r\n });\r\n }\r\n });\r\n\r\n $(\"#dialogNewDirPrompt\").dialog({\r\n \"modal\": true,\r\n \"height\": 52,\r\n \"width\": 260,\r\n \"title\": config.label.create_dir,\r\n \"okText\": config.label.create,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogNewDirPrompt > input\").val('').focus();\r\n $(\"#dialogNewDirPrompt\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n },\r\n \"ok\": function () {\r\n var name = $(\"#dialogNewDirPrompt > input\").val(),\r\n request = newWideRequest();\r\n\r\n request.path = wide.curNode.path + \"/\" + name;\r\n request.fileType = \"d\";\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/new',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogNewDirPrompt\").dialog(\"close\");\r\n bottomGroup.tabs.setCurrent(\"notification\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .notification\").focus();\r\n return false;\r\n }\r\n\r\n $(\"#dialogNewDirPrompt\").dialog(\"close\");\r\n }\r\n });\r\n }\r\n });\r\n\r\n $(\"#dialogGoFilePrompt\").dialog({\r\n \"modal\": true,\r\n \"height\": 320,\r\n \"width\": 660,\r\n \"title\": config.label.goto_file,\r\n \"okText\": config.label.go,\r\n \"cancelText\": config.label.cancel,\r\n \"afterInit\": function () {\r\n $(\"#dialogGoFilePrompt\").on(\"dblclick\", \"li\", function () {\r\n var tId = tree.getTIdByPath($(this).find(\".ft-small\").text());\r\n tree.openFile(tree.fileTree.getNodeByTId(tId));\r\n tree.fileTree.selectNode(wide.curNode);\r\n $(\"#dialogGoFilePrompt\").dialog(\"close\");\r\n wide.curEditor.focus();\r\n });\r\n\r\n $(\"#dialogGoFilePrompt\").on(\"click\", \"li\", function () {\r\n var $list = $(\"#dialogGoFilePrompt > .list\");\r\n $list.find(\"li\").removeClass(\"selected\");\r\n $list.data(\"index\", $(this).data(\"index\"));\r\n $(this).addClass(\"selected\");\r\n });\r\n\r\n hotkeys.bindList($(\"#dialogGoFilePrompt > input\"), $(\"#dialogGoFilePrompt > .list\"), function ($selected) {\r\n var tId = tree.getTIdByPath($selected.find(\".ft-small\").text());\r\n tree.openFile(tree.fileTree.getNodeByTId(tId));\r\n tree.fileTree.selectNode(wide.curNode);\r\n $(\"#dialogGoFilePrompt\").dialog(\"close\");\r\n wide.curEditor.focus();\r\n });\r\n\r\n $(\"#dialogGoFilePrompt > input\").bind(\"input\", function () {\r\n var name = $(\"#dialogGoFilePrompt > input\").val();\r\n\r\n var request = newWideRequest();\r\n request.path = '';\r\n request.name = '*' + name + '*';\r\n if (wide.curNode) {\r\n request.path = wide.curNode.path;\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/find/name',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n return;\r\n }\r\n\r\n var data = result.data;\r\n\r\n var goFileHTML = '';\r\n for (var i = 0, max = data.length; i < max; i++) {\r\n var path = data[i].path,\r\n name = path.substr(path.lastIndexOf(\"/\") + 1),\r\n icoSkin = wide.getClassBySuffix(name.split(\".\")[1]);\r\n if (i === 0) {\r\n goFileHTML += '
  • '\r\n + name + '    '\r\n + path + '
  • ';\r\n } else {\r\n goFileHTML += '
  • '\r\n + name + '    '\r\n + path + '
  • ';\r\n }\r\n }\r\n\r\n $(\"#dialogGoFilePrompt > ul\").html(goFileHTML);\r\n }\r\n });\r\n });\r\n },\r\n \"afterOpen\": function () {\r\n $(\"#dialogGoFilePrompt > input\").val('').focus();\r\n $(\"#dialogGoFilePrompt\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n $(\"#dialogGoFilePrompt .list\").html('').data(\"index\", 0);\r\n },\r\n \"ok\": function () {\r\n var tId = tree.getTIdByPath($(\"#dialogGoFilePrompt .selected .ft-small\").text());\r\n tree.openFile(tree.fileTree.getNodeByTId(tId));\r\n tree.fileTree.selectNode(wide.curNode);\r\n $(\"#dialogGoFilePrompt\").dialog(\"close\");\r\n wide.curEditor.focus();\r\n }\r\n });\r\n\r\n $(\"#dialogGoLinePrompt\").dialog({\r\n \"modal\": true,\r\n \"height\": 52,\r\n \"width\": 260,\r\n \"title\": config.label.goto_line,\r\n \"okText\": config.label.go,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogGoLinePrompt > input\").val('').focus();\r\n $(\"#dialogGoLinePrompt\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n },\r\n \"ok\": function () {\r\n var line = parseInt($(\"#dialogGoLinePrompt > input\").val()) - 1;\r\n $(\"#dialogGoLinePrompt\").dialog(\"close\");\r\n\r\n var editor = wide.curEditor;\r\n var cursor = editor.getCursor();\r\n\r\n editor.setCursor(CodeMirror.Pos(line, cursor.ch));\r\n\r\n var half = Math.floor(editor.getScrollInfo().clientHeight / editor.defaultTextHeight() / 2);\r\n var cursorCoords = editor.cursorCoords({line: line - half, ch: cursor.ch}, \"local\");\r\n editor.scrollTo(0, cursorCoords.top);\r\n\r\n editor.focus();\r\n }\r\n });\r\n\r\n $(\"#dialogGitClonePrompt\").dialog({\r\n \"modal\": true,\r\n \"height\": 52,\r\n \"width\": 360,\r\n \"title\": config.label.git_clone,\r\n \"okText\": config.label.confirm,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n $(\"#dialogGitClonePrompt > input\").val('').focus();\r\n $(\"#dialogGitClonePrompt\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\").prop(\"disabled\", true);\r\n },\r\n \"ok\": function () {\r\n $(\"#dialogGitClonePrompt\").dialog(\"close\");\r\n\r\n var request = newWideRequest();\r\n request.path = wide.curNode.path;\r\n request.repository = $(\"#dialogGitClonePrompt > input\").val();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/git/clone',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n }\r\n });\r\n }\r\n });\r\n },\r\n _initWS: function () {\r\n var outputWS = new ReconnectingWebSocket(config.channel + '/output/ws?sid=' + config.wideSessionId);\r\n outputWS.onopen = function () {\r\n console.log('[output onopen] connected');\r\n };\r\n\r\n outputWS.onmessage = function (e) {\r\n console.log('[output onmessage]' + e.data);\r\n var data = JSON.parse(e.data);\r\n\r\n if (goLintFound) {\r\n goLintFound = [];\r\n }\r\n\r\n if ('run' === data.nextCmd) {\r\n var request = newWideRequest();\r\n request.executable = data.executable;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/run',\r\n data: JSON.stringify(request),\r\n dataType: \"json\"\r\n });\r\n }\r\n\r\n switch (data.cmd) {\r\n case 'run':\r\n var content = $('.bottom-window-group .output > div').html();\r\n if (!wide.curProcessId || '' === content) {\r\n bottomGroup.fillOutput(content + '
    ' + data.output + '
    ');\r\n } else {\r\n bottomGroup.fillOutput(content.replace(/<\\/pre>$/g, data.output + ''));\r\n }\r\n\r\n wide.curProcessId = data.pid;\r\n\r\n break;\r\n case 'run-done':\r\n bottomGroup.fillOutput($('.bottom-window-group .output > div').html().replace(/<\\/pre>$/g, data.output + ''));\r\n\r\n wide.curProcessId = undefined;\r\n $(\"#buildRun\").removeClass(\"ico-stop\")\r\n .addClass(\"ico-buildrun\").attr(\"title\", config.label.build_n_run);\r\n\r\n break;\r\n case 'start-build':\r\n case 'start-test':\r\n case 'start-vet':\r\n case 'start-install':\r\n case 'start-get':\r\n case 'start-git_clone':\r\n bottomGroup.fillOutput(data.output);\r\n\r\n break;\r\n case 'go test':\r\n case 'go vet':\r\n case 'go install':\r\n case 'go get':\r\n bottomGroup.fillOutput($('.bottom-window-group .output > div').html() + data.output);\r\n\r\n break;\r\n case 'git clone':\r\n bottomGroup.fillOutput($('.bottom-window-group .output > div').html() + data.output);\r\n tree.fileTree.reAsyncChildNodes(wide.curNode, \"refresh\", false);\r\n\r\n break;\r\n case 'build':\r\n case 'cross-build':\r\n bottomGroup.fillOutput($('.bottom-window-group .output > div').html() + data.output);\r\n\r\n if (data.lints) { // has build error\r\n var files = {};\r\n\r\n for (var i = 0; i < data.lints.length; i++) {\r\n var lint = data.lints[i];\r\n\r\n goLintFound.push({from: CodeMirror.Pos(lint.lineNo, 0),\r\n to: CodeMirror.Pos(lint.lineNo, 0),\r\n message: lint.msg, severity: lint.severity});\r\n\r\n files[lint.file] = lint.file;\r\n }\r\n\r\n $(\"#buildRun\").removeClass(\"ico-stop\")\r\n .addClass(\"ico-buildrun\").attr(\"title\", config.label.build_n_run);\r\n\r\n // trigger gutter lint\r\n for (var path in files) {\r\n var editor = editors.getEditorByPath(path);\r\n CodeMirror.signal(editor, \"change\", editor);\r\n }\r\n } else {\r\n if ('cross-build' === data.cmd) {\r\n var request = newWideRequest(),\r\n path = null;\r\n request.path = data.executable;\r\n request.name = data.name;\r\n\r\n $.ajax({\r\n async: false,\r\n type: 'POST',\r\n url: config.context + '/file/zip/new',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (!result.succ) {\r\n $(\"#dialogAlert\").dialog(\"open\", result.msg);\r\n\r\n return false;\r\n }\r\n\r\n path = result.data;\r\n }\r\n });\r\n\r\n if (path) {\r\n window.open(config.context + '/file/zip?path=' + path + \".zip\");\r\n }\r\n }\r\n }\r\n\r\n break;\r\n }\r\n };\r\n outputWS.onclose = function (e) {\r\n console.log('[output onclose] disconnected (' + e.code + ')');\r\n };\r\n outputWS.onerror = function (e) {\r\n console.log('[output onerror]');\r\n };\r\n },\r\n _initFooter: function () {\r\n $(\".footer .cursor\").dblclick(function () {\r\n $(\"#dialogGoLinePrompt\").dialog(\"open\");\r\n });\r\n },\r\n init: function () {\r\n this._initFooter();\r\n\r\n this._initWS();\r\n\r\n // 点击隐藏弹出层\r\n $(\"body\").bind(\"mouseup\", function (event) {\r\n // MAC 右键文件树失效\r\n if (event.which === 3) {\r\n return false;\r\n }\r\n\r\n $(\".frame\").hide();\r\n\r\n if (!($(event.target).closest(\".frame\").length === 1 || event.target.className === \"frame\")) {\r\n $(\".menu > ul > li\").unbind().removeClass(\"selected\");\r\n menu.subMenu();\r\n }\r\n });\r\n\r\n // 刷新提示\r\n window.onbeforeunload = function () {\r\n if (editors.data.length > 0) {\r\n return config.label.confirm_save;\r\n }\r\n };\r\n\r\n // 禁止鼠标右键菜单\r\n document.oncontextmenu = function () {\r\n return false;\r\n };\r\n\r\n this._initDialog();\r\n },\r\n _save: function (path, editor) {\r\n if (!path) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = path;\r\n request.code = editor.getValue();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/file/save',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n // reset the save state\r\n editor.doc.markClean();\r\n $(\".edit-panel .tabs > div\").each(function () {\r\n var $span = $(this).find(\"span:eq(0)\");\r\n if ($span.attr(\"title\") === path) {\r\n $span.removeClass(\"changed\");\r\n }\r\n });\r\n }\r\n });\r\n },\r\n saveFile: function () {\r\n var path = editors.getCurrentPath();\r\n if (!path) {\r\n return false;\r\n }\r\n\r\n var editor = wide.curEditor;\r\n if (editor.doc.isClean()) { // no modification\r\n return false;\r\n }\r\n\r\n if (\"text/x-go\" === editor.getOption(\"mode\")) {\r\n wide.gofmt(path, wide.curEditor); // go fmt will save\r\n\r\n // build the file at once\r\n var request = newWideRequest();\r\n request.file = path;\r\n request.code = editor.getValue();\r\n request.nextCmd = \"\"; // build only, no following operation\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/build',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n }\r\n });\r\n\r\n // refresh outline\r\n wide.refreshOutline();\r\n\r\n return;\r\n }\r\n\r\n wide._save(path, wide.curEditor);\r\n },\r\n stop: function () {\r\n if ($(\"#buildRun\").hasClass(\"ico-buildrun\")) {\r\n menu.run();\r\n return false;\r\n }\r\n\r\n if (!wide.curProcessId) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.pid = wide.curProcessId;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/stop',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n $(\"#buildRun\").removeClass(\"ico-stop\")\r\n .addClass(\"ico-buildrun\").attr(\"title\", config.label.build_n_run);\r\n }\r\n });\r\n },\r\n gofmt: function (path, editor) {\r\n var cursor = editor.getCursor();\r\n var scrollInfo = editor.getScrollInfo();\r\n\r\n var request = newWideRequest();\r\n request.file = path;\r\n request.code = editor.getValue();\r\n request.cursorLine = cursor.line;\r\n request.cursorCh = cursor.ch;\r\n\r\n $.ajax({\r\n async: false, // sync\r\n type: 'POST',\r\n url: config.context + '/go/fmt',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (result.succ) {\r\n editor.setValue(result.data.code);\r\n editor.setCursor(cursor);\r\n editor.scrollTo(null, scrollInfo.top);\r\n\r\n wide._save(path, editor);\r\n }\r\n }\r\n });\r\n },\r\n fmt: function (path, editor) {\r\n var mode = editor.getOption(\"mode\");\r\n\r\n var cursor = editor.getCursor();\r\n var scrollInfo = editor.getScrollInfo();\r\n\r\n var request = newWideRequest();\r\n request.file = path;\r\n request.code = editor.getValue();\r\n request.cursorLine = cursor.line;\r\n request.cursorCh = cursor.ch;\r\n\r\n var formatted = null;\r\n\r\n switch (mode) {\r\n case \"text/x-go\":\r\n $.ajax({\r\n async: false, // sync\r\n type: 'POST',\r\n url: config.context + '/go/fmt',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (result.succ) {\r\n formatted = result.data.code;\r\n }\r\n }\r\n });\r\n\r\n break;\r\n case \"text/html\":\r\n formatted = html_beautify(editor.getValue());\r\n break;\r\n case \"text/javascript\":\r\n case \"application/json\":\r\n formatted = js_beautify(editor.getValue());\r\n break;\r\n case \"text/css\":\r\n formatted = css_beautify(editor.getValue());\r\n break;\r\n default :\r\n break;\r\n }\r\n\r\n if (formatted) {\r\n editor.setValue(formatted);\r\n editor.setCursor(cursor);\r\n editor.scrollTo(null, scrollInfo.top);\r\n\r\n wide._save(path, editor);\r\n }\r\n },\r\n getClassBySuffix: function (suffix) {\r\n var iconSkin = \"ico-ztree-other \";\r\n switch (suffix) {\r\n case \"html\":\r\n case \"htm\":\r\n iconSkin = \"ico-ztree-html \";\r\n break;\r\n case \"go\":\r\n iconSkin = \"ico-ztree-go \";\r\n break;\r\n case \"css\":\r\n iconSkin = \"ico-ztree-css \";\r\n break;\r\n case \"txt\":\r\n iconSkin = \"ico-ztree-text \";\r\n break;\r\n case \"sql\":\r\n iconSkin = \"ico-ztree-sql \";\r\n break;\r\n case \"properties\":\r\n iconSkin = \"ico-ztree-pro \";\r\n break;\r\n case \"md\":\r\n iconSkin = \"ico-ztree-md \";\r\n break;\r\n case \"js\", \"json\":\r\n iconSkin = \"ico-ztree-js \";\r\n break;\r\n case \"xml\":\r\n iconSkin = \"ico-ztree-xml \";\r\n break;\r\n case \"jpg\":\r\n case \"jpeg\":\r\n case \"bmp\":\r\n case \"gif\":\r\n case \"png\":\r\n case \"svg\":\r\n case \"ico\":\r\n iconSkin = \"ico-ztree-img \";\r\n break;\r\n }\r\n\r\n return iconSkin;\r\n }\r\n};\r\n\r\n$(document).ready(function () {\r\n wide.init();\r\n tree.init();\r\n menu.init();\r\n hotkeys.init();\r\n session.init();\r\n notification.init();\r\n editors.init();\r\n windows.init();\r\n bottomGroup.init();\r\n});\r\n","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file session.js\r\n *\r\n * @author Liyuan Li\r\n * @version 1.1.0.1, Dec 8, 2015\r\n */\r\nvar session = {\r\n init: function () {\r\n this._initWS();\r\n\r\n var getLayoutState = function (paneState) {\r\n var state = 'normal';\r\n if (paneState.isClosed) {\r\n state = 'min';\r\n } else if (paneState.size >= $('body').width()) {\r\n state = 'max';\r\n }\r\n\r\n return state;\r\n };\r\n\r\n // save session content every 30 seconds\r\n setInterval(function () {\r\n var request = newWideRequest(),\r\n filse = [],\r\n fileTree = [],\r\n currentId = editors.getCurrentId(),\r\n currentFile = currentId ? editors.getCurrentPath() : \"\";\r\n\r\n editors.tabs.obj._$tabs.find(\"div\").each(function () {\r\n var $it = $(this);\r\n if ($it.find(\"span:eq(0)\").attr(\"title\") !== config.label.start_page) {\r\n filse.push($it.find(\"span:eq(0)\").attr(\"title\"));\r\n }\r\n });\r\n\r\n fileTree = tree.getOpenPaths();\r\n\r\n request.currentFile = currentFile; // current editor file\r\n request.fileTree = fileTree; // file tree expansion state\r\n request.files = filse; // editor tabs\r\n\r\n\r\n request.layout = {\r\n \"side\": {\r\n \"size\": windows.outerLayout.west.state.size,\r\n \"state\": getLayoutState(windows.outerLayout.west.state)\r\n },\r\n \"sideRight\": {\r\n \"size\": windows.innerLayout.east.state.size,\r\n \"state\": getLayoutState(windows.innerLayout.east.state)\r\n },\r\n \"bottom\": {\r\n \"size\": windows.innerLayout.south.state.size,\r\n \"state\": getLayoutState(windows.innerLayout.south.state)\r\n }\r\n };\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/session/save',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n }\r\n });\r\n }, 30000);\r\n },\r\n restore: function () {\r\n if (!config.latestSessionContent) {\r\n return;\r\n }\r\n\r\n var fileTree = config.latestSessionContent.fileTree,\r\n files = config.latestSessionContent.files,\r\n currentFile = config.latestSessionContent.currentFile,\r\n id = \"\",\r\n nodesToOpen = [];\r\n\r\n var nodes = tree.fileTree.transformToArray(tree.fileTree.getNodes());\r\n\r\n for (var i = 0, ii = nodes.length; i < ii; i++) {\r\n // expand tree\r\n for (var j = 0, jj = fileTree.length; j < jj; j++) {\r\n if (nodes[i].path === fileTree[j]) {\r\n // expand this node only if its parents are open\r\n var parents = tree.getAllParents(tree.fileTree.getNodeByTId(nodes[i].tId)),\r\n isOpen = true;\r\n for (var l = 0, max = parents.length; l < max; l++) {\r\n if (parents[l].open === false) {\r\n isOpen = false;\r\n }\r\n }\r\n if (isOpen) {\r\n tree.fileTree.expandNode(nodes[i], true, false, true);\r\n } else {\r\n // flag it is open\r\n nodes[i].open = true;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n // open editors\r\n for (var k = 0, kk = files.length; k < kk; k++) {\r\n if (nodes[i].path === files[k]) {\r\n nodesToOpen.push(nodes[i]);\r\n break;\r\n }\r\n }\r\n\r\n if (nodes[i].path === currentFile) {\r\n id = nodes[i].path;\r\n\r\n // FIXME: 上面的展开是异步进行的,所以执行到这里的时候可能还没有展开完,导致定位不了可视区域\r\n tree.fileTree.selectNode(nodes[i]);\r\n wide.curNode = nodes[i];\r\n }\r\n }\r\n\r\n // handle the open sequence of editors\r\n for (var m = 0, mm = files.length; m < mm; m++) {\r\n for (var n = 0, nn = nodesToOpen.length; n < nn; n++) {\r\n if (nodesToOpen[n].path === files[m]) {\r\n tree.openFile(nodesToOpen[n]);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // set the current editor\r\n editors.tabs.setCurrent(id);\r\n for (var c = 0, max = editors.data.length; c < max; c++) {\r\n if (id === editors.data[c].id) {\r\n wide.curEditor = editors.data[c].editor;\r\n break;\r\n }\r\n } \r\n },\r\n _initWS: function () {\r\n // Used for session retention, server will release all resources of the session if this channel closed\r\n var sessionWS = new ReconnectingWebSocket(config.channel + '/session/ws?sid=' + config.wideSessionId);\r\n\r\n sessionWS.onopen = function () {\r\n console.log('[session onopen] connected');\r\n\r\n var dateFormat = function (time, fmt) {\r\n var date = new Date(time);\r\n var dateObj = {\r\n \"M+\": date.getMonth() + 1,\r\n \"d+\": date.getDate(),\r\n \"h+\": date.getHours(),\r\n \"m+\": date.getMinutes(),\r\n \"s+\": date.getSeconds(),\r\n \"q+\": Math.floor((date.getMonth() + 3) / 3),\r\n \"S\": date.getMilliseconds()\r\n };\r\n if (/(y+)/.test(fmt))\r\n fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\r\n for (var k in dateObj)\r\n if (new RegExp(\"(\" + k + \")\").test(fmt)) {\r\n fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1)\r\n ? (dateObj[k]) : ((\"00\" + dateObj[k]).substr((\"\" + dateObj[k]).length)));\r\n }\r\n return fmt;\r\n };\r\n\r\n var data = {type: \"Network\", severity: \"INFO\",\r\n message: \"Connected to server [sid=\" + config.wideSessionId + \"], \" + dateFormat(new Date().getTime(), 'yyyy-MM-dd hh:mm:ss')},\r\n $notification = $('.bottom-window-group .notification > table'),\r\n notificationHTML = '';\r\n\r\n notificationHTML += '' + data.severity\r\n + '' + data.message\r\n + '' + data.type + '';\r\n $notification.append(notificationHTML);\r\n };\r\n\r\n sessionWS.onmessage = function (e) {\r\n var data = JSON.parse(e.data);\r\n switch (data.cmd) {\r\n case 'create-file':\r\n var node = tree.fileTree.getNodeByTId(tree.getTIdByPath(data.dir)),\r\n name = data.path.replace(data.dir + '/', ''),\r\n mode = CodeMirror.findModeByFileName(name),\r\n iconSkin = wide.getClassBySuffix(name.split(\".\")[1]);\r\n\r\n if (data.type && data.type === 'f') {\r\n tree.fileTree.addNodes(node, [{\r\n \"id\": data.path,\r\n \"name\": name,\r\n \"iconSkin\": iconSkin,\r\n \"path\": data.path,\r\n \"mode\": mode,\r\n \"removable\": true,\r\n \"creatable\": true\r\n }]);\r\n\r\n } else {\r\n tree.fileTree.addNodes(node, [{\r\n \"id\": data.path,\r\n \"name\": name,\r\n \"iconSkin\": \"ico-ztree-dir \",\r\n \"path\": data.path,\r\n \"removable\": true,\r\n \"creatable\": true,\r\n \"isParent\": true\r\n }]);\r\n }\r\n break;\r\n case 'remove-file':\r\n case 'rename-file':\r\n var node = tree.fileTree.getNodeByTId(tree.getTIdByPath(data.path));\r\n tree.fileTree.removeNode(node);\r\n\r\n var nodes = tree.fileTree.transformToArray(node);\r\n for (var i = 0, ii = nodes.length; i < ii; i++) {\r\n editors.tabs.del(nodes[i].path);\r\n }\r\n\r\n break;\r\n }\r\n };\r\n sessionWS.onclose = function (e) {\r\n console.log('[session onclose] disconnected (' + e.code + ')');\r\n\r\n var data = {type: \"Network\", severity: \"ERROR\",\r\n message: \"Disconnected from server, trying to reconnect it [sid=\" + config.wideSessionId + \"]\"},\r\n $notification = $('.bottom-window-group .notification > table'),\r\n notificationHTML = '';\r\n\r\n notificationHTML += '' + data.severity\r\n + '' + data.message\r\n + '' + data.type + '';\r\n $notification.append(notificationHTML);\r\n\r\n $(\".notification-count\").show();\r\n };\r\n sessionWS.onerror = function (e) {\r\n console.log('[session onerror]');\r\n };\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file menu.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.0.0.1, Dec 8, 2015\r\n */\r\nvar menu = {\r\n init: function () {\r\n this.subMenu();\r\n this._initPreference();\r\n this._initAbout();\r\n this._initShare();\r\n\r\n // 点击子菜单后消失\r\n $(\".menu .frame li\").click(function () {\r\n $(\".menu > ul > li\").unbind().removeClass(\"selected\");\r\n menu.subMenu();\r\n });\r\n },\r\n _initShare: function () {\r\n $(\".menu .ico-share\").hover(function () {\r\n $(\".menu .share-panel\").show();\r\n });\r\n\r\n $(\".share-panel .font-ico\").click(function () {\r\n var key = $(this).attr('class').split('-')[2];\r\n var url = \"https://wide.b3log.org\", pic = 'https://wide.b3log.org/static/images/wide-logo.png';\r\n var urls = {};\r\n urls.email = \"mailto:?subject=\" + $('title').text()\r\n + \"&body=\" + $('meta[name=description]').attr('content') + ' ' + url;\r\n\r\n var twitterShare = encodeURIComponent($('meta[name=description]').attr('content') + \" \" + url + \" #golang\");\r\n urls.twitter = \"https://twitter.com/intent/tweet?status=\" + twitterShare;\r\n\r\n urls.facebook = \"https://www.facebook.com/sharer/sharer.php?u=\" + url;\r\n urls.googleplus = \"https://plus.google.com/share?url=\" + url;\r\n\r\n var title = encodeURIComponent($('title').text() + '. \\n' + $('meta[name=description]').attr('content')\r\n + \" #golang#\");\r\n urls.weibo = \"http://v.t.sina.com.cn/share/share.php?title=\" + title + \"&url=\" + url + \"&pic=\" + pic;\r\n urls.tencent = \"http://share.v.t.qq.com/index.php?c=share&a=index&title=\" + title +\r\n \"&url=\" + url + \"&pic=\" + pic;\r\n\r\n window.open(urls[key], \"_blank\", \"top=100,left=200,width=648,height=618\");\r\n });\r\n },\r\n _initAbout: function () {\r\n $(\"#dialogAbout\").load(config.context + '/about', function () {\r\n $(\"#dialogAbout\").dialog({\r\n \"modal\": true,\r\n \"title\": config.label.about,\r\n \"hideFooter\": true,\r\n \"afterOpen\": function () {\r\n $.ajax({\r\n url: \"https://rhythm.b3log.org/version/wide/latest\",\r\n type: \"GET\",\r\n dataType: \"jsonp\",\r\n jsonp: \"callback\",\r\n success: function (data, textStatus) {\r\n if ($(\"#dialogAbout .version\").text() === data.wideVersion) {\r\n $(\".upgrade\").text(config.label.uptodate);\r\n } else {\r\n $(\".upgrade\").html(config.label.new_version_available + config.label.colon\r\n + \"\" + data.wideVersion + \"\");\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n },\r\n disabled: function (list) {\r\n for (var i = 0, max = list.length; i < max; i++) {\r\n $(\".menu li.\" + list[i]).addClass(\"disabled\");\r\n }\r\n },\r\n undisabled: function (list) {\r\n for (var i = 0, max = list.length; i < max; i++) {\r\n $(\".menu li.\" + list[i]).removeClass(\"disabled\");\r\n }\r\n },\r\n // 焦点不在菜单上时需点击展开子菜单,否则为鼠标移动展开\r\n subMenu: function () {\r\n $(\".menu > ul > li\").click(function (event) {\r\n if ($(event.target).closest(\".frame\").length === 1) {\r\n return;\r\n }\r\n var $it = $(this);\r\n $it.find('.frame').show();\r\n $(\".menu > ul > li\").removeClass(\"selected\");\r\n $(this).addClass(\"selected\");\r\n\r\n $(\".menu > ul > li\").unbind();\r\n\r\n $(\".menu > ul > li\").mouseover(function () {\r\n if ($(event.target).closest(\".frame\").length === 1) {\r\n return;\r\n }\r\n $(\".menu .frame\").hide();\r\n $(this).find('.frame').show();\r\n $(\".menu > ul > li\").removeClass(\"selected\");\r\n $(this).addClass(\"selected\");\r\n });\r\n });\r\n },\r\n openPreference: function () {\r\n $(\"#dialogPreference\").dialog(\"open\");\r\n },\r\n saveAllFiles: function () {\r\n if ($(\".menu li.save-all\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n var path = editors.data[i].id;\r\n var editor = editors.data[i].editor;\r\n\r\n if (\"text/x-go\" === editor.getOption(\"mode\")) {\r\n wide.fmt(path, editor);\r\n } else {\r\n wide._save(path, editor);\r\n }\r\n }\r\n },\r\n closeAllFiles: function () {\r\n if ($(\".menu li.close-all\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n // 设置全部关闭标识\r\n var removeData = [];\r\n $(\".edit-panel .tabs > div\").each(function (i) {\r\n if (i !== 0) {\r\n removeData.push($(this).data(\"index\"));\r\n }\r\n });\r\n $(\"#dialogCloseEditor\").data(\"removeData\", removeData);\r\n // 开始关闭\r\n $(\".edit-panel .tabs .ico-close:eq(0)\").click();\r\n },\r\n exit: function () {\r\n var request = newWideRequest();\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/logout',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n success: function (result) {\r\n if (result.succ) {\r\n window.location.href = \"/login\";\r\n }\r\n }\r\n });\r\n },\r\n openAbout: function () {\r\n $(\"#dialogAbout\").dialog(\"open\");\r\n },\r\n goget: function () {\r\n menu.saveAllFiles();\r\n\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n\r\n if ($(\".menu li.go-get\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = currentPath;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/go/get',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n }\r\n });\r\n },\r\n goinstall: function () {\r\n menu.saveAllFiles();\r\n\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n\r\n if ($(\".menu li.go-install\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = currentPath;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/go/install',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n }\r\n });\r\n },\r\n // go test.\r\n test: function () {\r\n menu.saveAllFiles();\r\n\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n\r\n if ($(\".menu li.go-test\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = currentPath;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/go/test',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n }\r\n });\r\n },\r\n // go vet.\r\n govet: function () {\r\n menu.saveAllFiles();\r\n\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n\r\n if ($(\".menu li.go-vet\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = currentPath;\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/go/vet',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n }\r\n });\r\n },\r\n // Build & Run.\r\n run: function () {\r\n menu.saveAllFiles();\r\n\r\n if ($(\"#buildRun\").hasClass(\"ico-stop\")) {\r\n wide.stop();\r\n return false;\r\n }\r\n\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n\r\n if ($(\".menu li.run\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = currentPath;\r\n request.code = wide.curEditor.getValue();\r\n request.nextCmd = \"run\";\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/build',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n $(\"#buildRun\").addClass(\"ico-stop\")\r\n .removeClass(\"ico-buildrun\").attr(\"title\", config.label.stop);\r\n }\r\n });\r\n },\r\n // Build.\r\n build: function () {\r\n menu.saveAllFiles();\r\n\r\n var currentPath = editors.getCurrentPath();\r\n if (!currentPath) {\r\n return false;\r\n }\r\n\r\n if ($(\".menu li.build\").hasClass(\"disabled\")) {\r\n return false;\r\n }\r\n\r\n var request = newWideRequest();\r\n request.file = currentPath;\r\n request.code = wide.curEditor.getValue();\r\n request.nextCmd = \"\"; // build only, no following operation\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/build',\r\n data: JSON.stringify(request),\r\n dataType: \"json\",\r\n beforeSend: function () {\r\n bottomGroup.resetOutput();\r\n },\r\n success: function (result) {\r\n }\r\n });\r\n },\r\n _initPreference: function () {\r\n $(\"#dialogPreference\").load(config.context + '/preference', function () {\r\n $(\"#dialogPreference input\").keyup(function () {\r\n var isChange = false,\r\n emptys = [],\r\n emptysTip = '';\r\n $(\"#dialogPreference input\").each(function () {\r\n var $it = $(this);\r\n // data-value 如为数字,则不会和 value 一样转换为 String,再次不使用全等\r\n if ($it.val() != $it.data(\"value\")) {\r\n isChange = true;\r\n }\r\n\r\n if ($.trim($it.val()) === '') {\r\n emptys.push($it);\r\n }\r\n });\r\n\r\n var $okBtn = $(\"#dialogPreference\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n if (isChange) {\r\n $okBtn.prop(\"disabled\", false);\r\n } else {\r\n $okBtn.prop(\"disabled\", true);\r\n }\r\n\r\n if (emptys.length === 0) {\r\n $(\"#dialogPreference\").find(\".tip\").html(\"\");\r\n $okBtn.prop(\"disabled\", false);\r\n } else {\r\n for (var i = 0, max = emptys.length; i < max; i++) {\r\n var tabIndex = emptys[i].closest('div').data(\"index\"),\r\n text = $.trim(emptys[i].parent().text());\r\n emptysTip += '[' + $('#dialogPreference .tabs > div[data-index=\"' + tabIndex + '\"]').text()\r\n + '] -> [' + text.substr(0, text.length - 1)\r\n + ']: ' + config.label.no_empty + \"
    \";\r\n }\r\n $(\"#dialogPreference\").find(\".tip\").html(emptysTip);\r\n $okBtn.prop(\"disabled\", true);\r\n }\r\n });\r\n\r\n $(\"#dialogPreference select\").on(\"change\", function () {\r\n var isChange = false;\r\n $(\"#dialogPreference select\").each(function () {\r\n if ($(this).val() !== $(this).data(\"value\")) {\r\n isChange = true;\r\n }\r\n });\r\n\r\n var $okBtn = $(\"#dialogPreference\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n if (isChange) {\r\n $okBtn.prop(\"disabled\", false);\r\n } else {\r\n $okBtn.prop(\"disabled\", true);\r\n }\r\n });\r\n\r\n $(\"#dialogPreference\").dialog({\r\n \"modal\": true,\r\n \"height\": 280,\r\n \"width\": 800,\r\n \"title\": config.label.preference,\r\n \"okText\": config.label.apply,\r\n \"cancelText\": config.label.cancel,\r\n \"afterOpen\": function () {\r\n var $okBtn = $(\"#dialogPreference\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n $okBtn.prop(\"disabled\", true);\r\n },\r\n \"ok\": function () {\r\n var request = newWideRequest(),\r\n $dialogPreference = $(\"#dialogPreference\"),\r\n $fontFamily = $dialogPreference.find(\"input[name=fontFamily]\"),\r\n $fontSize = $dialogPreference.find(\"input[name=fontSize]\"),\r\n $goFmt = $dialogPreference.find(\"select[name=goFmt]\"),\r\n $workspace = $dialogPreference.find(\"input[name=workspace]\"),\r\n $password = $dialogPreference.find(\"input[name=password]\"),\r\n $email = $dialogPreference.find(\"input[name=email]\"),\r\n $locale = $dialogPreference.find(\"select[name=locale]\"),\r\n $theme = $dialogPreference.find(\"select[name=theme]\"),\r\n $editorFontFamily = $dialogPreference.find(\"input[name=editorFontFamily]\"),\r\n $editorFontSize = $dialogPreference.find(\"input[name=editorFontSize]\"),\r\n $editorLineHeight = $dialogPreference.find(\"input[name=editorLineHeight]\"),\r\n $editorTheme = $dialogPreference.find(\"select[name=editorTheme]\"),\r\n $editorTabSize = $dialogPreference.find(\"input[name=editorTabSize]\"),\r\n $keymap = $dialogPreference.find(\"select[name=keymap]\");\r\n\r\n $.extend(request, {\r\n \"fontFamily\": $fontFamily.val(),\r\n \"fontSize\": $fontSize.val(),\r\n \"goFmt\": $goFmt.val(),\r\n \"workspace\": $workspace.val(),\r\n \"password\": $password.val(),\r\n \"email\": $email.val(),\r\n \"locale\": $locale.val(),\r\n \"theme\": $theme.val(),\r\n \"editorFontFamily\": $editorFontFamily.val(),\r\n \"editorFontSize\": $editorFontSize.val(),\r\n \"editorLineHeight\": $editorLineHeight.val(),\r\n \"editorTheme\": $editorTheme.val(),\r\n \"editorTabSize\": $editorTabSize.val(),\r\n \"keymap\": $keymap.val()\r\n });\r\n\r\n if (config.keymap !== $keymap.val()) {\r\n window.location.reload();\r\n }\r\n\r\n $.ajax({\r\n type: 'POST',\r\n url: config.context + '/preference',\r\n data: JSON.stringify(request),\r\n success: function (result, textStatus, jqXHR) {\r\n if (!result.succ) {\r\n return false;\r\n }\r\n\r\n $fontFamily.data(\"value\", $fontFamily.val());\r\n $fontSize.data(\"value\", $fontSize.val());\r\n $goFmt.data(\"value\", $goFmt.val());\r\n $workspace.data(\"value\", $workspace.val());\r\n $password.data(\"value\", $password.val());\r\n $email.data(\"value\", $email.val());\r\n $locale.data(\"value\", $locale.val());\r\n $theme.data(\"value\", $theme.val());\r\n $editorFontFamily.data(\"value\", $editorFontFamily.val());\r\n $editorFontSize.data(\"value\", $editorFontSize.val());\r\n $editorLineHeight.data(\"value\", $editorLineHeight.val());\r\n $editorTheme.data(\"value\", $editorTheme.val());\r\n $editorTabSize.data(\"value\", $editorTabSize.val());\r\n $keymap.data(\"value\", $keymap.val());\r\n\r\n // update the config\r\n config.keymap = $keymap.val();\r\n\r\n var $okBtn = $(\"#dialogPreference\").closest(\".dialog-main\").find(\".dialog-footer > button:eq(0)\");\r\n $okBtn.prop(\"disabled\", true);\r\n\r\n $(\"#themesLink\").attr(\"href\", config.staticServer + '/static/css/themes/' + $theme.val() + '.css');\r\n\r\n config.editorTheme = $editorTheme.val();\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n editors.data[i].editor.setOption(\"theme\", $editorTheme.val());\r\n }\r\n }\r\n });\r\n }\r\n });\r\n\r\n new Tabs({\r\n id: \".preference\"\r\n });\r\n });\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file windows.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.1.1.2, Dec 15, 2015\r\n */\r\nvar windows = {\r\n isMaxEditor: false,\r\n outerLayout: {},\r\n innerLayout: {},\r\n init: function () {\r\n if (!config.latestSessionContent.layout) {\r\n config.latestSessionContent.layout = {\r\n \"side\": {\r\n \"size\": 200,\r\n \"state\": 'normal'\r\n },\r\n \"sideRight\": {\r\n \"size\": 200,\r\n \"state\": 'normal'\r\n },\r\n \"bottom\": {\r\n \"size\": 100,\r\n \"state\": 'normal'\r\n }\r\n };\r\n }\r\n\r\n var layout = config.latestSessionContent.layout;\r\n\r\n this.outerLayout = $('body').layout({\r\n north__paneSelector: \".menu\",\r\n center__paneSelector: \".content\",\r\n south__paneSelector: \".footer\",\r\n north__size: 22,\r\n south__size: 19,\r\n spacing_open: 2,\r\n north__spacing_open: 0,\r\n south__spacing_open: 0,\r\n defaults: {\r\n fxSpeed_open: 300,\r\n fxSpeed_close: 100,\r\n fxSettings_close: {\r\n easing: \"easeOutQuint\"\r\n },\r\n fxSettings_open: {\r\n easing: \"easeInQuint\"\r\n }\r\n },\r\n west: {\r\n size: layout.side.size,\r\n paneSelector: \".side\",\r\n togglerLength_open: 0,\r\n togglerLength_closed: 15,\r\n togglerAlign_closed: \"top\",\r\n slideTrigger_open: \"mouseover\",\r\n spacing_closed: 15,\r\n minSize: 100,\r\n togglerClass: \"ico-restore\",\r\n togglerTip_open: config.label.min,\r\n togglerTip_closed: config.label.restore_side,\r\n resizerTip: config.label.resize,\r\n initClosed: (layout.side.state === 'min')\r\n }\r\n });\r\n\r\n this.innerLayout = $('div.content').layout({\r\n spacing_open: 2,\r\n defaults: {\r\n fxSpeed_open: 300,\r\n fxSpeed_close: 100,\r\n fxSettings_close: {\r\n easing: \"easeOutQuint\"\r\n },\r\n fxSettings_open: {\r\n easing: \"easeInQuint\"\r\n }\r\n },\r\n center: {\r\n paneSelector: \".edit-panel\"\r\n },\r\n east: {\r\n size: layout.sideRight.size,\r\n paneSelector: \".side-right\",\r\n togglerLength_open: 0,\r\n togglerLength_closed: 15,\r\n togglerAlign_closed: \"top\",\r\n slideTrigger_open: \"mouseover\",\r\n spacing_closed: 15,\r\n minSize: 100,\r\n togglerClass: \"ico-restore\",\r\n togglerTip_open: config.label.min,\r\n togglerTip_closed: config.label.restore_outline,\r\n resizerTip: config.label.resize,\r\n initClosed: (layout.sideRight.state === 'min')\r\n },\r\n south: {\r\n size: layout.bottom.size,\r\n paneSelector: \".bottom-window-group\",\r\n togglerLength_open: 0,\r\n togglerLength_closed: 15,\r\n togglerAlign_closed: \"top\",\r\n slideTrigger_open: \"mouseover\",\r\n spacing_closed: 16,\r\n minSize: 100,\r\n togglerClass: \"ico-restore\",\r\n togglerTip_open: config.label.min,\r\n togglerTip_closed: config.label.restore_bottom,\r\n resizerTip: config.label.resize,\r\n initClosed: (layout.bottom.state === 'min'),\r\n ondrag_end: function (type, pane) {\r\n windows.refreshEditor(pane, 'drag');\r\n },\r\n onresize_end: function (type, pane) {\r\n windows.refreshEditor(pane, 'resize');\r\n },\r\n onclose_end: function (type, pane) {\r\n windows.refreshEditor(pane, 'close');\r\n },\r\n onopen_end: function (type, pane) {\r\n windows.refreshEditor(pane, 'open');\r\n },\r\n onshow_end: function (type, pane) {\r\n windows.refreshEditor(pane, 'show');\r\n }\r\n }\r\n });\r\n\r\n this.outerLayout.addCloseBtn(\".side .ico-min\", \"west\");\r\n this.innerLayout.addCloseBtn(\".side-right .ico-min\", \"east\");\r\n this.innerLayout.addCloseBtn(\".bottom-window-group .ico-min\", \"south\");\r\n\r\n if (layout.side.state === 'max') {\r\n windows.maxSide();\r\n }\r\n if (layout.sideRight.state === 'max') {\r\n windows.maxSideRight();\r\n }\r\n if (layout.bottom.state === 'max') {\r\n windows.maxBottom();\r\n }\r\n\r\n $(\".toolbars .ico-max\").click(function () {\r\n windows.toggleEditor();\r\n });\r\n\r\n $(\".edit-panel .tabs\").on(\"dblclick\", function () {\r\n windows.toggleEditor();\r\n });\r\n\r\n $(\".bottom-window-group .tabs\").dblclick(function () {\r\n var $it = $(\".bottom-window-group\");\r\n if ($it.hasClass(\"bottom-window-group-max\")) {\r\n windows.restoreBottom();\r\n } else {\r\n windows.maxBottom($it);\r\n }\r\n });\r\n\r\n $(\".side .tabs\").dblclick(function () {\r\n var $it = $(\".side\");\r\n if ($it.hasClass(\"side-max\")) {\r\n windows.restoreSide();\r\n } else {\r\n windows.restoreSide($it);\r\n }\r\n });\r\n\r\n $(\".side-right .tabs\").dblclick(function () {\r\n var $it = $(\".side-right\");\r\n if ($it.hasClass(\"side-right-max\")) {\r\n windows.restoreSideRight();\r\n } else {\r\n windows.maxSideRight($it);\r\n }\r\n });\r\n\r\n $('.bottom-window-group .search').height($('.bottom-window-group .tabs-panel').height());\r\n $(window).resize(function () {\r\n windows.refreshEditor($('.bottom-window-group'));\r\n });\r\n\r\n },\r\n maxEditor: function () {\r\n var $it = $(\".toolbars .font-ico\");\r\n windows.outerLayout.close('west');\r\n windows.innerLayout.close('south');\r\n windows.innerLayout.close('east');\r\n $it.removeClass('ico-max').addClass('ico-restore').attr('title', config.label.min);\r\n windows.isMaxEditor = true;\r\n },\r\n maxBottom: function ($it) {\r\n $it.data('height', $it.height()).addClass(\"bottom-window-group-max\").find('.ico-min').hide();\r\n windows.outerLayout.hide('west');\r\n windows.innerLayout.hide('east');\r\n windows.innerLayout.sizePane('south', $('.content').height());\r\n },\r\n maxSide: function ($it) {\r\n $it.data('width', $it.width()).addClass(\"side-max\").find('.ico-min').hide();\r\n $('.content').hide();\r\n windows.outerLayout.sizePane('west', $('body').width());\r\n },\r\n maxSideRight: function ($it) {\r\n $it.addClass(\"side-right-max\").data('width', $it.width()).find('.ico-min').hide();\r\n windows.outerLayout.hide('west');\r\n windows.innerLayout.hide('south');\r\n windows.innerLayout.sizePane('east', $('body').width());\r\n },\r\n toggleEditor: function () {\r\n var $it = $(\".toolbars .font-ico\");\r\n if ($it.hasClass('ico-restore')) {\r\n windows.restoreEditor();\r\n } else {\r\n windows.maxEditor();\r\n }\r\n },\r\n restoreBottom: function () {\r\n var $it = $(\".bottom-window-group\");\r\n $it.removeClass(\"bottom-window-group-max\").find('.ico-min').show();\r\n windows.outerLayout.show('west');\r\n windows.innerLayout.show('east');\r\n windows.innerLayout.sizePane('south', $it.data('height'));\r\n },\r\n restoreSide: function () {\r\n var $it = $(\".side\");\r\n $it.removeClass(\"side-max\").find('.ico-min').show();\r\n $('.content').show();\r\n windows.outerLayout.sizePane('west', $it.data('width'));\r\n },\r\n restoreSideRight: function () {\r\n var $it = $(\".side-right\");\r\n $it.removeClass(\"side-right-max\").find('.ico-min').show();\r\n windows.outerLayout.show('west');\r\n windows.innerLayout.show('south');\r\n windows.innerLayout.sizePane('east', $it.data('width'));\r\n },\r\n restoreEditor: function () {\r\n windows.outerLayout.open('west');\r\n windows.innerLayout.open('south');\r\n windows.innerLayout.open('east');\r\n windows.isMaxEditor = false;\r\n $(\".toolbars .font-ico\").addClass('ico-max').removeClass('ico-restore').attr('title', config.label.max_editor);\r\n },\r\n refreshEditor: function (pane, type) {\r\n var editorDatas = editors.data,\r\n height = $('.content').height() - pane.height() - 24;\r\n switch (type) {\r\n case 'close':\r\n height = $('.content').height() - 40;\r\n break;\r\n default:\r\n break;\r\n }\r\n for (var i = 0, ii = editorDatas.length; i < ii; i++) {\r\n editorDatas[i].editor.setSize(\"100%\", height);\r\n }\r\n\r\n $('.bottom-window-group .search').height($('.bottom-window-group .tabs-panel').height());\r\n },\r\n flowBottom: function () {\r\n if (windows.innerLayout.south.state.isClosed) {\r\n windows.innerLayout.slideOpen('south');\r\n }\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file hotkeys.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.0.0.2, Dec 15, 2015\r\n */\r\nvar hotkeys = {\r\n defaultKeyMap: {\r\n // Ctrl-0\r\n goEditor: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 48,\r\n fun: function () {\r\n if (wide.curEditor) {\r\n wide.curEditor.focus();\r\n }\r\n }\r\n },\r\n // Ctrl-1\r\n goFileTree: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 49,\r\n fun: function () {\r\n // 有些元素需设置 tabindex 为 -1 时才可以 focus\r\n if (windows.outerLayout.west.state.isClosed) {\r\n windows.outerLayout.slideOpen('west');\r\n }\r\n $(\"#files\").focus();\r\n }\r\n },\r\n // Ctrl-2\r\n goOutline: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 50,\r\n fun: function () {\r\n if (windows.innerLayout.east.state.isClosed) {\r\n windows.innerLayout.slideOpen('east');\r\n }\r\n\r\n $(\"#outline\").focus();\r\n }\r\n },\r\n // Ctrl-4\r\n goOutput: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 52,\r\n fun: function () {\r\n bottomGroup.tabs.setCurrent(\"output\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .output\").focus();\r\n }\r\n },\r\n // Ctrl-5\r\n goSearch: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 53,\r\n fun: function () {\r\n bottomGroup.tabs.setCurrent(\"search\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .search\").focus();\r\n }\r\n },\r\n // Ctrl-6\r\n goNotification: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 54,\r\n fun: function () {\r\n bottomGroup.tabs.setCurrent(\"notification\");\r\n windows.flowBottom();\r\n $(\".bottom-window-group .notification\").focus();\r\n }\r\n },\r\n // Alt-C\r\n clearWindow: {\r\n ctrlKey: false,\r\n altKey: true,\r\n shiftKey: false,\r\n which: 67\r\n },\r\n // Ctrl-D 窗口组切换 \r\n changeEditor: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 68\r\n },\r\n // Ctrl-F search \r\n search: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 70\r\n },\r\n // Ctrl-Q close current editor \r\n closeCurEditor: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 81\r\n },\r\n // Ctrl-R\r\n rename: {\r\n ctrlKey: true,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 82\r\n },\r\n // Shift-Alt-O 跳转到文件\r\n goFile: {\r\n ctrlKey: false,\r\n altKey: true,\r\n shiftKey: true,\r\n which: 79\r\n },\r\n // F5 Build\r\n build: {\r\n ctrlKey: false,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 116\r\n },\r\n // F6 Build & Run\r\n buildRun: {\r\n ctrlKey: false,\r\n altKey: false,\r\n shiftKey: false,\r\n which: 117\r\n }\r\n },\r\n bindList: function ($source, $list, enterFun) {\r\n $list.data(\"index\", 0);\r\n $source.keydown(function (event) {\r\n var index = $list.data(\"index\"),\r\n count = $list.find(\"li\").length;\r\n\r\n if (count === 0) {\r\n return true;\r\n }\r\n\r\n if (event.which === 38) { // up\r\n index--;\r\n if (index < 0) {\r\n index = count - 1;\r\n }\r\n }\r\n\r\n if (event.which === 40) { // down\r\n index++;\r\n if (index > count - 1) {\r\n index = 0;\r\n }\r\n }\r\n\r\n var $selected = $list.find(\"li:eq(\" + index + \")\");\r\n\r\n if (event.which === 13) { // enter\r\n enterFun($selected);\r\n }\r\n\r\n $list.find(\"li\").removeClass(\"selected\");\r\n $list.data(\"index\", index);\r\n $selected.addClass(\"selected\");\r\n\r\n if (index === 0) {\r\n $list.scrollTop(0);\r\n } else {\r\n if ($selected[0].offsetTop + $list.scrollTop() > $list.height()) {\r\n if (event.which === 40) {\r\n $list.scrollTop($list.scrollTop() + $selected.height());\r\n } else {\r\n $list.scrollTop($selected[0].offsetTop);\r\n }\r\n } else {\r\n $list.scrollTop(0);\r\n }\r\n }\r\n\r\n // 阻止上下键改变光标位置\r\n if (event.which === 38 || event.which === 40 || event.which === 13) {\r\n return false;\r\n }\r\n });\r\n },\r\n _bindOutput: function () {\r\n $(\".bottom-window-group .output\").keydown(function (event) {\r\n var hotKeys = hotkeys.defaultKeyMap;\r\n if (event.altKey === hotKeys.clearWindow.altKey\r\n && event.which === hotKeys.clearWindow.which) { // Alt-C clear output\r\n bottomGroup.clear('output');\r\n\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n });\r\n },\r\n _bindFileTree: function () {\r\n $(\"#files\").keydown(function (event) {\r\n event.preventDefault();\r\n\r\n var hotKeys = hotkeys.defaultKeyMap;\r\n if (event.ctrlKey === hotKeys.search.ctrlKey\r\n && event.which === hotKeys.search.which) { // Ctrl-F 搜索\r\n $(\"#dialogSearchForm\").dialog(\"open\");\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.rename.ctrlKey\r\n && event.which === hotKeys.rename.which) { // Ctrl-R 重命名\r\n if (wide.curNode.removable) {\r\n $(\"#dialogRenamePrompt\").dialog(\"open\");\r\n }\r\n return;\r\n }\r\n\r\n switch (event.which) {\r\n case 46: // delete\r\n tree.removeIt();\r\n break;\r\n case 13: // enter\r\n if (!wide.curNode) {\r\n return false;\r\n }\r\n\r\n if (tree.isDir()) {\r\n if (wide.curNode.open) {\r\n return false;\r\n }\r\n\r\n tree.fileTree.expandNode(wide.curNode, true, false, true);\r\n $(\"#files\").focus();\r\n\r\n break;\r\n }\r\n\r\n tree.openFile(wide.curNode);\r\n\r\n break;\r\n case 38: // up\r\n var node = {};\r\n\r\n if (!wide.curNode) { // select the first one if no node been selected\r\n node = tree.fileTree.getNodeByTId(\"files_1\");\r\n } else {\r\n if (wide.curNode && wide.curNode.isFirstNode && wide.curNode.level === 0) {\r\n return false;\r\n }\r\n\r\n node = wide.curNode.getPreNode();\r\n if (wide.curNode.isFirstNode && wide.curNode.getParentNode()) {\r\n node = wide.curNode.getParentNode();\r\n }\r\n\r\n var preNode = wide.curNode.getPreNode();\r\n if (preNode && tree.isDir() && preNode.open) {\r\n node = tree.getCurrentNodeLastNode(preNode);\r\n }\r\n }\r\n\r\n wide.curNode = node;\r\n tree.fileTree.selectNode(node);\r\n $(\"#files\").focus();\r\n break;\r\n case 40: // down\r\n var node = {};\r\n\r\n if (!wide.curNode) { // select the first one if no node been selected \r\n node = tree.fileTree.getNodeByTId(\"files_1\");\r\n } else {\r\n if (wide.curNode && tree.isBottomNode(wide.curNode)) {\r\n return false;\r\n }\r\n\r\n node = wide.curNode.getNextNode();\r\n if (tree.isDir() && wide.curNode.open) {\r\n node = wide.curNode.children[0];\r\n }\r\n\r\n var nextShowNode = tree.getNextShowNode(wide.curNode);\r\n if (wide.curNode.isLastNode && wide.curNode.level !== 0 && !wide.curNode.open && nextShowNode) {\r\n node = nextShowNode;\r\n }\r\n }\r\n\r\n if (node) {\r\n wide.curNode = node;\r\n tree.fileTree.selectNode(node);\r\n }\r\n\r\n $(\"#files\").focus();\r\n break;\r\n case 37: // left\r\n if (!wide.curNode) {\r\n wide.curNode = tree.fileTree.getNodeByTId(\"files_1\");\r\n tree.fileTree.selectNode(wide.curNode);\r\n $(\"#files\").focus();\r\n return false;\r\n }\r\n\r\n if (!tree.isDir() || !wide.curNode.open) {\r\n return false;\r\n }\r\n\r\n tree.fileTree.expandNode(wide.curNode, false, false, true);\r\n $(\"#files\").focus();\r\n break;\r\n case 39: // right\r\n if (!wide.curNode) {\r\n wide.curNode = tree.fileTree.getNodeByTId(\"files_1\");\r\n tree.fileTree.selectNode(wide.curNode);\r\n $(\"#files\").focus();\r\n return false;\r\n }\r\n\r\n if (!tree.isDir() || wide.curNode.open) {\r\n return false;\r\n }\r\n\r\n tree.fileTree.expandNode(wide.curNode, true, false, true);\r\n $(\"#files\").focus();\r\n\r\n break;\r\n case 116: // F5\r\n if (!wide.curNode || !tree.isDir()) {\r\n return false;\r\n }\r\n\r\n tree.refresh(wide.curNode);\r\n\r\n break;\r\n }\r\n });\r\n },\r\n _bindDocument: function () {\r\n var hotKeys = this.defaultKeyMap;\r\n $(document).keydown(function (event) {\r\n if (event.ctrlKey === hotKeys.goEditor.ctrlKey\r\n && event.which === hotKeys.goEditor.which) { // Ctrl-0 焦点切换到当前编辑器\r\n hotKeys.goEditor.fun();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.goFileTree.ctrlKey\r\n && event.which === hotKeys.goFileTree.which) { // Ctrl-1 焦点切换到文件树\r\n hotKeys.goFileTree.fun();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.goOutline.ctrlKey\r\n && event.which === hotKeys.goOutline.which) { // Ctrl-2 焦点切换到大纲\r\n hotKeys.goOutline.fun();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.goOutput.ctrlKey\r\n && event.which === hotKeys.goOutput.which) { // Ctrl-4 焦点切换到输出窗口 \r\n hotKeys.goOutput.fun();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.goSearch.ctrlKey\r\n && event.which === hotKeys.goSearch.which) { // Ctrl-5 焦点切换到搜索窗口 \r\n hotKeys.goSearch.fun();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.goNotification.ctrlKey\r\n && event.which === hotKeys.goNotification.which) { // Ctrl-6 焦点切换到通知窗口 \r\n hotKeys.goNotification.fun();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.closeCurEditor.ctrlKey\r\n && event.which === hotKeys.closeCurEditor.which) { // Ctrl-Q 关闭当前编辑器 \r\n $(\".edit-panel .tabs > div.current\").find(\".ico-close\").click();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.changeEditor.ctrlKey\r\n && event.which === hotKeys.changeEditor.which) { // Ctrl-D 窗口组切换\r\n if (document.activeElement.className === \"notification\"\r\n || document.activeElement.className === \"output\"\r\n || document.activeElement.className === \"search\") {\r\n // 焦点在底部窗口组时,对底部进行切换\r\n var tabs = [\"output\", \"search\", \"notification\"],\r\n nextPath = \"\";\r\n for (var i = 0, ii = tabs.length; i < ii; i++) {\r\n if (bottomGroup.tabs.getCurrentId() === tabs[i]) {\r\n if (i < ii - 1) {\r\n nextPath = tabs[i + 1];\r\n } else {\r\n nextPath = tabs[0];\r\n }\r\n break;\r\n }\r\n }\r\n bottomGroup.tabs.setCurrent(nextPath);\r\n $(\".bottom-window-group .\" + nextPath).focus();\r\n\r\n event.preventDefault();\r\n\r\n return false;\r\n }\r\n\r\n if (editors.data.length > 1) {\r\n var nextPath = \"\";\r\n for (var i = 0, ii = editors.data.length; i < ii; i++) {\r\n var currentId = editors.getCurrentId();\r\n if (currentId) {\r\n if (currentId === editors.data[i].id) {\r\n if (i < ii - 1) {\r\n nextPath = editors.data[i + 1].id;\r\n wide.curEditor = editors.data[i + 1].editor;\r\n } else {\r\n nextPath = editors.data[0].id;\r\n wide.curEditor = editors.data[0].editor;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n editors.tabs.setCurrent(nextPath);\r\n var nextTId = tree.getTIdByPath(nextPath);\r\n wide.curNode = tree.fileTree.getNodeByTId(nextTId);\r\n\r\n tree.fileTree.selectNode(wide.curNode);\r\n wide.refreshOutline();\r\n var cursor = wide.curEditor.getCursor();\r\n $(\".footer .cursor\").text('| ' + (cursor.line + 1) + ':' + (cursor.ch + 1) + ' |');\r\n wide.curEditor.focus();\r\n }\r\n\r\n event.preventDefault();\r\n\r\n return false;\r\n }\r\n\r\n if (event.which === hotKeys.build.which) { // F5 Build\r\n menu.build();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.which === hotKeys.buildRun.which) { // F6 Build & Run\r\n menu.run();\r\n event.preventDefault();\r\n\r\n return;\r\n }\r\n\r\n if (event.ctrlKey === hotKeys.goFile.ctrlKey\r\n && event.altKey === hotKeys.goFile.altKey\r\n && event.shiftKey === hotKeys.goFile.shiftKey\r\n && event.which === hotKeys.goFile.which) { // Shift-Alt-O 跳转到文件\r\n $(\"#dialogGoFilePrompt\").dialog(\"open\");\r\n }\r\n });\r\n },\r\n init: function () {\r\n this._bindFileTree();\r\n this._bindOutput();\r\n this._bindDocument();\r\n }\r\n};","/*\r\n * Copyright (c) 2014-2015, b3log.org\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n\r\n/*\r\n * @file bottomGroup.js\r\n *\r\n * @author Liyuan Li\r\n * @author Liang Ding\r\n * @version 1.1.0.1, Dec 8, 2015\r\n */\r\nvar bottomGroup = {\r\n tabs: undefined,\r\n searchTab: undefined,\r\n init: function () {\r\n this._initTabs();\r\n this._initFrame();\r\n\r\n $('.bottom-window-group .output').click(function () {\r\n $(this).focus();\r\n });\r\n\r\n $('.bottom-window-group .output').on('click', '.path', function (event) {\r\n var $path = $(this),\r\n tId = tree.getTIdByPath($path.data(\"path\"));\r\n tree.openFile(tree.fileTree.getNodeByTId(tId),\r\n CodeMirror.Pos($path.data(\"line\") - 1, $path.data(\"column\") - 1));\r\n event.preventDefault();\r\n return false;\r\n });\r\n },\r\n _initFrame: function () {\r\n $(\".bottom-window-group .output\").parent().mouseup(function (event) {\r\n event.stopPropagation();\r\n\r\n if (event.button === 0) { // 左键\r\n $(\".bottom-window-group .frame\").hide();\r\n return;\r\n }\r\n\r\n // event.button === 2 右键\r\n var left = event.screenX,\r\n $it = $(this);\r\n if ($(\".side\").css(\"left\") === \"auto\" || $(\".side\").css(\"left\") === \"0px\") {\r\n left = event.screenX - $(\".side\").width();\r\n }\r\n $(\".bottom-window-group .frame\").show().css({\r\n \"left\": left + \"px\",\r\n \"top\": (event.offsetY + event.target.offsetTop - $it.scrollTop() - 10) + \"px\"\r\n });\r\n return;\r\n });\r\n },\r\n clear: function (id) {\r\n $('.bottom-window-group .' + id + ' > div').text('');\r\n },\r\n resetOutput: function () {\r\n this.clear('output');\r\n bottomGroup.tabs.setCurrent(\"output\");\r\n windows.flowBottom();\r\n },\r\n _initTabs: function () {\r\n this.tabs = new Tabs({\r\n id: \".bottom-window-group\",\r\n clickAfter: function (id) {\r\n this._$tabsPanel.find(\".\" + id).focus();\r\n }\r\n });\r\n },\r\n fillOutput: function (data) {\r\n var $output = $('.bottom-window-group .output');\r\n\r\n data = data.replace(/\\n/g, '
    ');\r\n\r\n if (-1 !== data.indexOf(\"
    \")) {\r\n data = Autolinker.link(data);\r\n }\r\n\r\n $output.find(\"div\").html(data);\r\n $output.parent().scrollTop($output[0].scrollHeight);\r\n }\r\n};\r\n"],"sourceRoot":"/source/"} \ No newline at end of file