src/admin/js/components/editor.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
(function(){ 'use strict'; var app = window.LS || (window.LS = {}); app.editor = {}; app.editor.config = function(obj){ return function(element, isInitialized, context){ var e = element; if (!isInitialized) { var editor = ace.edit(e); obj.editor = editor; e.style.position = "relative"; editor.updateMode = function(filename) { var self = this; var ext = ""; try { ext = filename.match(/\.([a-z0-9]+)$/)[1]; } catch(e) { ext = ""; } switch (ext){ case 'js': obj.mode = "javascript"; break; case 'css': obj.mode = "css"; break; case 'html': obj.mode = "html"; break; case 'json': obj.mode = "json"; break; case 'md': obj.mode = "markdown"; break; default: obj.mode = "text"; } self.getSession().setMode("ace/mode/"+obj.mode); }; editor.setOptions({ maxLines: Infinity }); editor.setReadOnly(obj.readOnly); editor.setShowPrintMargin(false); editor.setTheme("ace/theme/github"); editor.updateMode(obj.id()); editor.getSession().setUseWrapMode(true); editor.getSession().setTabSize(2); } }; }; /** * @param {Function} ctrl * @param {Object} args * @param {string} args.content */ app.editor.view = function(ctrl, args) { if (args.ext === 'json'){ args.content = JSON.stringify(args.content); } return m(".editor.panel.panal-default", {config: app.editor.config(args)}, args.content); }; }()); |