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;