ace.define( 'ace/ext/rtl', ['require', 'exports', 'module', 'ace/editor', 'ace/config'], function (e, t, n) { 'use strict' function s(e, t) { var n = t.getSelection().lead t.session.$bidiHandler.isRtlLine(n.row) && n.column === 0 && (t.session.$bidiHandler.isMoveLeftOperation && n.row > 0 ? t.getSelection().moveCursorTo(n.row - 1, t.session.getLine(n.row - 1).length) : t.getSelection().isEmpty() ? (n.column += 1) : n.setPosition(n.row, n.column + 1)) } function o(e) { e.editor.session.$bidiHandler.isMoveLeftOperation = /gotoleft|selectleft|backspace|removewordleft/.test(e.command.name) } function u(e, t) { var n = t.session n.$bidiHandler.currentRow = null if (n.$bidiHandler.isRtlLine(e.start.row) && e.action === 'insert' && e.lines.length > 1) for (var r = e.start.row; r < e.end.row; r++) n.getLine(r + 1).charAt(0) !== n.$bidiHandler.RLE && (n.doc.$lines[r + 1] = n.$bidiHandler.RLE + n.getLine(r + 1)) } function a(e, t) { var n = t.session, r = n.$bidiHandler, i = t.$textLayer.$lines.cells, s = t.layerConfig.width - t.layerConfig.padding + 'px' i.forEach(function (e) { var t = e.element.style r && r.isRtlLine(e.row) ? ((t.direction = 'rtl'), (t.textAlign = 'right'), (t.width = s)) : ((t.direction = ''), (t.textAlign = ''), (t.width = '')) }) } function f(e) { function n(e) { var t = e.element.style t.direction = t.textAlign = t.width = '' } var t = e.$textLayer.$lines t.cells.forEach(n), t.cellCache.forEach(n) } var r = [ { name: 'leftToRight', bindKey: { win: 'Ctrl-Alt-Shift-L', mac: 'Command-Alt-Shift-L' }, exec: function (e) { e.session.$bidiHandler.setRtlDirection(e, !1) }, readOnly: !0, }, { name: 'rightToLeft', bindKey: { win: 'Ctrl-Alt-Shift-R', mac: 'Command-Alt-Shift-R' }, exec: function (e) { e.session.$bidiHandler.setRtlDirection(e, !0) }, readOnly: !0, }, ], i = e('../editor').Editor e('../config').defineOptions(i.prototype, 'editor', { rtlText: { set: function (e) { e ? (this.on('change', u), this.on('changeSelection', s), this.renderer.on('afterRender', a), this.commands.on('exec', o), this.commands.addCommands(r)) : (this.off('change', u), this.off('changeSelection', s), this.renderer.off('afterRender', a), this.commands.off('exec', o), this.commands.removeCommands(r), f(this.renderer)), this.renderer.updateFull() }, }, rtl: { set: function (e) { ;(this.session.$bidiHandler.$isRtl = e), e ? (this.setOption('rtlText', !1), this.renderer.on('afterRender', a), (this.session.$bidiHandler.seenBidi = !0)) : (this.renderer.off('afterRender', a), f(this.renderer)), this.renderer.updateFull() }, }, }) } ) ;(function () { ace.require(['ace/ext/rtl'], function (m) { if (typeof module == 'object' && typeof exports == 'object' && module) { module.exports = m } }) })()