ace.define( 'ace/split', [ 'require', 'exports', 'module', 'ace/lib/oop', 'ace/lib/lang', 'ace/lib/event_emitter', 'ace/editor', 'ace/virtual_renderer', 'ace/edit_session', ], function (e, t, n) { 'use strict' var r = e('./lib/oop'), i = e('./lib/lang'), s = e('./lib/event_emitter').EventEmitter, o = e('./editor').Editor, u = e('./virtual_renderer').VirtualRenderer, a = e('./edit_session').EditSession, f = function (e, t, n) { ;(this.BELOW = 1), (this.BESIDE = 0), (this.$container = e), (this.$theme = t), (this.$splits = 0), (this.$editorCSS = ''), (this.$editors = []), (this.$orientation = this.BESIDE), this.setSplits(n || 1), (this.$cEditor = this.$editors[0]), this.on( 'focus', function (e) { this.$cEditor = e }.bind(this) ) } ;(function () { r.implement(this, s), (this.$createEditor = function () { var e = document.createElement('div') ;(e.className = this.$editorCSS), (e.style.cssText = 'position: absolute; top:0px; bottom:0px'), this.$container.appendChild(e) var t = new o(new u(e, this.$theme)) return ( t.on( 'focus', function () { this._emit('focus', t) }.bind(this) ), this.$editors.push(t), t.setFontSize(this.$fontSize), t ) }), (this.setSplits = function (e) { var t if (e < 1) throw 'The number of splits have to be > 0!' if (e == this.$splits) return if (e > this.$splits) { while (this.$splits < this.$editors.length && this.$splits < e) (t = this.$editors[this.$splits]), this.$container.appendChild(t.container), t.setFontSize(this.$fontSize), this.$splits++ while (this.$splits < e) this.$createEditor(), this.$splits++ } else while (this.$splits > e) (t = this.$editors[this.$splits - 1]), this.$container.removeChild(t.container), this.$splits-- this.resize() }), (this.getSplits = function () { return this.$splits }), (this.getEditor = function (e) { return this.$editors[e] }), (this.getCurrentEditor = function () { return this.$cEditor }), (this.focus = function () { this.$cEditor.focus() }), (this.blur = function () { this.$cEditor.blur() }), (this.setTheme = function (e) { this.$editors.forEach(function (t) { t.setTheme(e) }) }), (this.setKeyboardHandler = function (e) { this.$editors.forEach(function (t) { t.setKeyboardHandler(e) }) }), (this.forEach = function (e, t) { this.$editors.forEach(e, t) }), (this.$fontSize = ''), (this.setFontSize = function (e) { ;(this.$fontSize = e), this.forEach(function (t) { t.setFontSize(e) }) }), (this.$cloneSession = function (e) { var t = new a(e.getDocument(), e.getMode()), n = e.getUndoManager() return ( t.setUndoManager(n), t.setTabSize(e.getTabSize()), t.setUseSoftTabs(e.getUseSoftTabs()), t.setOverwrite(e.getOverwrite()), t.setBreakpoints(e.getBreakpoints()), t.setUseWrapMode(e.getUseWrapMode()), t.setUseWorker(e.getUseWorker()), t.setWrapLimitRange(e.$wrapLimitRange.min, e.$wrapLimitRange.max), (t.$foldData = e.$cloneFoldData()), t ) }), (this.setSession = function (e, t) { var n t == null ? (n = this.$cEditor) : (n = this.$editors[t]) var r = this.$editors.some(function (t) { return t.session === e }) return r && (e = this.$cloneSession(e)), n.setSession(e), e }), (this.getOrientation = function () { return this.$orientation }), (this.setOrientation = function (e) { if (this.$orientation == e) return ;(this.$orientation = e), this.resize() }), (this.resize = function () { var e = this.$container.clientWidth, t = this.$container.clientHeight, n if (this.$orientation == this.BESIDE) { var r = e / this.$splits for (var i = 0; i < this.$splits; i++) (n = this.$editors[i]), (n.container.style.width = r + 'px'), (n.container.style.top = '0px'), (n.container.style.left = i * r + 'px'), (n.container.style.height = t + 'px'), n.resize() } else { var s = t / this.$splits for (var i = 0; i < this.$splits; i++) (n = this.$editors[i]), (n.container.style.width = e + 'px'), (n.container.style.top = i * s + 'px'), (n.container.style.left = '0px'), (n.container.style.height = s + 'px'), n.resize() } }) }).call(f.prototype), (t.Split = f) } ), ace.define('ace/ext/split', ['require', 'exports', 'module', 'ace/split'], function (e, t, n) { 'use strict' n.exports = e('../split') }) ;(function () { ace.require(['ace/ext/split'], function (m) { if (typeof module == 'object' && typeof exports == 'object' && module) { module.exports = m } }) })()