public/src/output.js (54 lines of code) (raw):
let ace = require('ace');
let $ = require('jquery');
let settings = require('./settings');
let OutputMode = require('./sense_editor/mode/output');
const smartResize = require('./smart_resize');
var $el = $("#output");
var output = ace.require('ace/ace').edit($el[0]);
var outputMode = new OutputMode.Mode();
output.resize = smartResize(output);
output.update = function (val, mode, cb) {
if (typeof mode === 'function') {
cb = mode;
mode = void 0;
}
var session = output.getSession();
session.setMode(val ? (mode || outputMode) : 'ace/mode/text');
session.setValue(val);
if (typeof cb === 'function') {
setTimeout(cb);
}
};
output.append = function (val, fold_previous, cb) {
if (typeof fold_previous === 'function') {
cb = fold_previous;
fold_previous = true;
}
if (_.isUndefined(fold_previous)) {
fold_previous = true;
}
var session = output.getSession();
var lastLine = session.getLength();
if (fold_previous) {
output.moveCursorTo(Math.max(0, lastLine - 1), 0);
session.toggleFold(false);
}
session.insert({row: lastLine, column: 0}, "\n" + val);
output.moveCursorTo(lastLine + 1, 0);
if (typeof cb === 'function') {
setTimeout(cb);
}
};
output.$el = $el;
(function (session) {
session.setMode("ace/mode/text");
session.setFoldStyle('markbeginend');
session.setTabSize(2);
session.setUseWrapMode(true);
}(output.getSession()));
output.setShowPrintMargin(false);
output.setReadOnly(true);
if (settings) {
settings.applyCurrentSettings(output);
}
module.exports = output;