UNPKG

@aomao/plugin-codeblock-vue

Version:
1,046 lines (931 loc) 59.7 kB
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty'; import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck'; import _createClass from '@babel/runtime/helpers/esm/createClass'; import _inherits from '@babel/runtime/helpers/esm/inherits'; import _createSuper from '@babel/runtime/helpers/esm/createSuper'; import { isEngine, isMobile, isHotkey, $, escape, isServer, CardActiveTrigger, CardType, Card, Parser, unescape, VIEW_CLASS_NAME, CARD_KEY, READY_CARD_KEY, decodeCardValue, CARD_VALUE_KEY, CARD_TYPE_KEY, Plugin } from '@aomao/engine'; import _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized'; import _get from '@babel/runtime/helpers/esm/get'; import _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf'; import _classPrivateFieldLooseBase from '@babel/runtime/helpers/esm/classPrivateFieldLooseBase'; import _classPrivateFieldLooseKey from '@babel/runtime/helpers/esm/classPrivateFieldLooseKey'; import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2'; import CodeMirror from 'codemirror'; import debounce from 'lodash/debounce'; import { defineComponent, resolveComponent, openBlock, createBlock, withCtx, createElementBlock, Fragment, renderList, createTextVNode, toDisplayString, createApp, toRaw } from 'vue'; import ASelect from 'ant-design-vue/es/select'; import 'ant-design-vue/es/select/style'; import 'codemirror/mode/shell/shell'; import 'codemirror/mode/clike/clike'; import 'codemirror/mode/css/css'; import 'codemirror/mode/dart/dart'; import 'codemirror/mode/diff/diff'; import 'codemirror/mode/dockerfile/dockerfile'; import 'codemirror/mode/erlang/erlang'; import 'codemirror/mode/go/go'; import 'codemirror/mode/groovy/groovy'; import 'codemirror/mode/htmlmixed/htmlmixed'; import 'codemirror/mode/http/http'; import 'codemirror/mode/javascript/javascript'; import 'codemirror/mode/jsx/jsx'; import 'codemirror/mode/cmake/cmake'; import 'codemirror/mode/markdown/markdown'; import 'codemirror/mode/octave/octave'; import 'codemirror/mode/nginx/nginx'; import 'codemirror/mode/pascal/pascal'; import 'codemirror/mode/perl/perl'; import 'codemirror/mode/php/php'; import 'codemirror/mode/powershell/powershell'; import 'codemirror/mode/protobuf/protobuf'; import 'codemirror/mode/python/python'; import 'codemirror/mode/r/r'; import 'codemirror/mode/ruby/ruby'; import 'codemirror/mode/rust/rust'; import 'codemirror/mode/sql/sql'; import 'codemirror/mode/swift/swift'; import 'codemirror/mode/vb/vb'; import 'codemirror/mode/velocity/velocity'; import 'codemirror/mode/xml/xml'; import 'codemirror/mode/yaml/yaml'; import 'codemirror/addon/scroll/simplescrollbars'; import 'codemirror/addon/scroll/simplescrollbars.css'; var qa = ['c', 'cpp', 'csharp', 'erlang', 'go', 'groovy', 'java', 'kotlin', 'makefile', 'objectivec', 'perl', 'python', 'rust', 'swift', 'vbnet']; var defaultStyles = { header: 'color: blue;font-weight: bold;', quote: 'color: #090;', negative: 'color: #d44;', positive: 'color: #292;', strong: 'font-weight: bold;', em: 'font-style: italic;', link: 'text-decoration: underline;color: #00c;', strikethrough: 'text-decoration: line-through;', keyword: 'color: #d73a49;', atom: 'color: #905;', number: 'color: #005cc5;', def: 'color: #005cc5;', variable: '', 'variable-2': 'color: #005cc5;', 'variable-3': 'color: #22863a;', type: 'color: #22863a;', comment: 'color: #6a737d;', string: 'color: #690', 'string-2': 'color: #690;', meta: 'color: #1f7f9a;', qualifier: 'color: #555;', builtin: 'color: #6f42c1;', bracket: 'color: #997;', tag: 'color: #22863a;', attribute: 'color: #6f42c1;', hr: 'color: #999;', error: 'color: #f00;', invalidchar: 'color: #f00;', operator: 'color: #d73a49;', property: 'color: #005cc5;' }; var CodeBlockEditor = /*#__PURE__*/function () { function CodeBlockEditor(editor, options) { _classCallCheck(this, CodeBlockEditor); this.editor = void 0; this.options = void 0; this.styleMap = void 0; this.codeMirror = void 0; this.mode = 'plain'; this.container = void 0; this.editor = editor; this.options = options; this.styleMap = _objectSpread(_objectSpread({}, defaultStyles), options.styleMap); this.container = options.container || $(this.renderTemplate()); } _createClass(CodeBlockEditor, [{ key: "renderTemplate", value: function renderTemplate() { return '<div class="data-codeblock-container"><div class="data-codeblock-content"></div></div>'; } }, { key: "getConfig", value: function getConfig(value, mode) { var mirror = this.codeMirror; var editor = this.editor; var tabSize = mirror ? mirror.getOption('indentUnit') : qa.indexOf(mode || '') > -1 ? 4 : 2; var reg = value ? value.match(/^ {2,4}(?=[^\s])/gm) : null; if (reg) { tabSize = reg.reduce(function (val1, val2) { return Math.min(val1, val2.length); }, 1 / 0); } return { tabSize: tabSize, indentUnit: tabSize, scrollbarStyle: 'simple', readOnly: !isEngine(editor) || editor.readonly, viewportMargin: Infinity }; } }, { key: "getSyntax", value: function getSyntax(mode) { return this.options.synatxMap[mode] || mode; } }, { key: "create", value: function create(mode, value, options) { var _this = this; this.mode = mode; var syntaxMode = this.getSyntax(mode); var mirror = CodeMirror(this.container.find('.data-codeblock-content').get(), _objectSpread(_objectSpread({ value: value, mode: syntaxMode, lineNumbers: true, lineWrapping: false, autofocus: false, dragDrop: false }, this.getConfig(value, syntaxMode)), options)); mirror.on('focus', function () { var onFocus = _this.options.onFocus; if (onFocus) onFocus(); }); mirror.on('blur', function () { var onBlur = _this.options.onBlur; if (onBlur) onBlur(); }); if (isMobile) { mirror.on('touchstart', function (_, event) { var onMouseDown = _this.options.onMouseDown; if (onMouseDown) onMouseDown(event); }); } else { mirror.on('mousedown', function (_, event) { var onMouseDown = _this.options.onMouseDown; if (event.button === 2) event.stopPropagation(); if (onMouseDown) onMouseDown(event); }); } mirror.on('change', debounce(function () { if (!isEngine(_this.editor)) return; _this.save(); }, 50)); mirror.setOption('extraKeys', { Enter: function Enter(mirror) { var config = _this.getConfig(mirror.getValue()); Object.keys(config).forEach(function (key) { return mirror.setOption(key, config[key]); }); mirror.execCommand('newlineAndIndent'); } }); mirror.on('keydown', function (editor, event) { // 撤销和重做使用codemirror自带的操作 if (isHotkey('mod+z', event) || isHotkey('mod+y', event) || isHotkey('mod+shift+z', event)) { event.stopPropagation(); } var lineCount = editor.lineCount(); var _editor$getCursor = editor.getCursor(), line = _editor$getCursor.line, ch = _editor$getCursor.ch; var _this$options = _this.options, onUpFocus = _this$options.onUpFocus, onDownFocus = _this$options.onDownFocus, onLeftFocus = _this$options.onLeftFocus, onRightFocus = _this$options.onRightFocus; var content = editor.getLine(line); // 在最后一行 if (line === lineCount - 1 && ch === content.length) { // 按下下键 if (isHotkey('down', event) || isHotkey('ctrl+n', event)) { if (onDownFocus) onDownFocus(event); return; } // 按下右键 else if (isHotkey('right', event) || isHotkey('shift+right', event) || isHotkey('ctrl+e', event) || isHotkey('ctrl+f', event)) { if (onRightFocus) onRightFocus(event); return; } } // 在第一行按下上键 if (line === 0 && ch === 0) { // 按下上键 if (isHotkey('up', event) || isHotkey('ctrl+p', event)) { if (onUpFocus) onUpFocus(event); } // 按下左键 else if (isHotkey('left', event) || isHotkey('shift+left', event) || isHotkey('ctrl+b', event) || isHotkey('ctrl+a', event)) { if (onLeftFocus) onLeftFocus(event); } } }); this.container.on('mousedown', function (event) { if (!(mirror === null || mirror === void 0 ? void 0 : mirror.hasFocus())) { setTimeout(function () { mirror === null || mirror === void 0 ? void 0 : mirror.focus(); }, 0); } }); this.codeMirror = mirror; return this.codeMirror; } }, { key: "setAutoWrap", value: function setAutoWrap(value) { var _this$codeMirror; (_this$codeMirror = this.codeMirror) === null || _this$codeMirror === void 0 ? void 0 : _this$codeMirror.setOption('lineWrapping', value); } }, { key: "update", value: function update(mode, code) { this.mode = mode; var mirror = this.codeMirror; var editor = this.editor; if (code !== undefined) { mirror === null || mirror === void 0 ? void 0 : mirror.setValue(code); } mirror === null || mirror === void 0 ? void 0 : mirror.setOption('mode', this.getSyntax(mode)); mirror === null || mirror === void 0 ? void 0 : mirror.setOption('readOnly', !isEngine(editor) || editor.readonly ? true : false); this.save(); } }, { key: "render", value: function render(mode, value, options) { var root = this.container.find('.data-codeblock-content'); mode = this.getSyntax(mode); var stage = $('<div style="font-family: monospace;font-size: 13px; line-height: 21px; color: #595959; direction: ltr; height: auto; overflow: hidden;background: transparent;"><pre style="color: rgb(89, 89, 89); margin: 0px; padding: 0px; background: none 0% 0% / auto repeat scroll padding-box border-box rgba(0, 0, 0, 0);" /></div>'); root.append(stage); var pre = stage.find('pre')[0]; this.runMode(value || '', mode, pre, _objectSpread(_objectSpread({}, this.getConfig(value, mode)), options)); } }, { key: "save", value: function save() { var mirror = this.codeMirror; var editor = this.editor; if (!isEngine(editor) || !mirror) return; // 中文输入过程需要判断 if (editor.change.isComposing()) { return; } var value = mirror.getValue(); var onSave = this.options.onSave; if (onSave) onSave(this.mode, value); } }, { key: "focus", value: function focus() { var mirror = this.codeMirror; if (!mirror) return; mirror.focus(); } }, { key: "select", value: function select() { var start = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; var mirror = this.codeMirror; if (!mirror) return; mirror.focus(); if (!start) { var line = mirror.lineCount() - 1; var content = mirror.getLine(line); mirror.setSelection({ line: line, ch: content.length }); } else { mirror.setSelection({ line: 0, ch: 0 }); } } }, { key: "toHtml", value: function toHtml(col, text) { var _this2 = this; var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; var tabSize = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0; tabSize = tabSize || CodeMirror.defaults.tabSize; var html = ''; var content = ''; // replace tabs for (var pos = 0;;) { var idx = text.indexOf('\t', pos); if (idx === -1) { content += text.slice(pos); col += text.length - pos; break; } else { col += idx - pos; content += text.slice(pos, idx); var size = tabSize - col % tabSize; col += size; for (var i = 0; i < size; ++i) { content += ' '; } pos = idx + 1; } } if (style) { var styleStr = ''; style.split(' ').forEach(function (cls) { var _this2$styleMap$cls; styleStr += (_this2$styleMap$cls = _this2.styleMap[cls]) !== null && _this2$styleMap$cls !== void 0 ? _this2$styleMap$cls : ''; }); var spanElement = "<span ".concat(styleStr ? "style=\"".concat(styleStr, "\"") : '', ">").concat(escape(content), "</span>"); html += spanElement; } else { html += content; } return html; } /** * 代码来自 runmode addon * 支持行号需要考虑复制粘贴问题 * * runmode 本身不支持行号,见 https://github.com/codemirror/CodeMirror/issues/3364 * 可参考的解法 https://stackoverflow.com/questions/14237361/use-codemirror-for-standalone-syntax-highlighting-with-line-numbers * * ref: * - https://codemirror.net/doc/manual.html#addons * - https://codemirror.net/addon/runmode/runmode.js */ }, { key: "runMode", value: function runMode(string, modespec, callback, options) { var mode = CodeMirror.getMode(CodeMirror.defaults, modespec); var tabSize = options && options.tabSize || CodeMirror.defaults.tabSize; var node = callback; var col = 0; node.innerHTML = ''; var html = ''; var lines = CodeMirror.splitLines(string); var state = options && options.state || CodeMirror.startState(mode); for (var i = 0, e = lines.length; i < e; ++i) { if (i) { html += '<br />'; col = 0; } var stream = new CodeMirror.StringStream(lines[i]); if (!stream.string && mode.blankLine) mode.blankLine(state); while (!stream.eol()) { var style = mode.token ? mode.token(stream, state) : ''; html += this.toHtml(col, stream.current(), style || '', tabSize); stream.start = stream.pos; } } node.innerHTML = html; } }, { key: "destroy", value: function destroy() { this.container.remove(); } }]); return CodeBlockEditor; }(); const ASelectOption = ASelect.Option; var script = defineComponent({ name: "am-codeblock-select", components: { ASelect, ASelectOption }, props: { modeDatas: Array, defaultValue: String, getContainer: Function, onSelect: Function }, methods: { filter(input, option) { input = input.toLowerCase(); const key = option.key || ''; let name = option.name || ''; name = name.toLowerCase(); return key.includes(input) || name.includes(input); } } }); function render(_ctx, _cache, $props, $setup, $data, $options) { const _component_a_select_option = resolveComponent("a-select-option"); const _component_a_select = resolveComponent("a-select"); return (openBlock(), createBlock(_component_a_select, { "show-search": true, size: "small", bordered: false, style: {"min-width":"128px"}, "default-value": _ctx.defaultValue, "get-popup-container": _ctx.getContainer, onSelect: _ctx.onSelect, "filter-option": _ctx.filter }, { default: withCtx(() => [ (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.modeDatas, (item) => { return (openBlock(), createBlock(_component_a_select_option, { name: item.name, value: item.value, key: item.value }, { default: withCtx(() => [ createTextVNode(toDisplayString(item.name), 1 /* TEXT */) ]), _: 2 /* DYNAMIC */ }, 1032 /* PROPS, DYNAMIC_SLOTS */, ["name", "value"])) }), 128 /* KEYED_FRAGMENT */)) ]), _: 1 /* STABLE */ }, 8 /* PROPS */, ["default-value", "get-popup-container", "onSelect", "filter-option"])) } script.render = render; script.__file = "src/component/select/component.vue"; var renderSelect = (function (container, modeDatas, defaultValue, onSelect) { var vm = createApp(script, { modeDatas: modeDatas, defaultValue: defaultValue, getContainer: container ? function () { return container; } : undefined, onSelect: onSelect }); vm.mount(container); return vm; }); var datas = [{ value: 'plain', syntax: 'simplemode', name: 'Plain Text' }, { value: 'bash', syntax: 'shell', name: 'Bash' }, { value: 'basic', syntax: 'vbscript', name: 'Basic' }, { value: 'c', syntax: 'text/x-csrc', name: 'C' }, { value: 'cpp', syntax: 'text/x-c++src', alias: ['c++'], name: 'C++' }, { value: 'csharp', syntax: 'text/x-csharp', alias: ['c#'], name: 'C#' }, { value: 'css', syntax: 'css', name: 'CSS' }, { value: 'dart', syntax: 'dart', name: 'Dart' }, { value: 'diff', syntax: 'diff', name: 'Diff' }, { value: 'dockerfile', syntax: 'dockerfile', name: 'Dockerfile' }, { value: 'erlang', syntax: 'erlang', name: 'Erlang' }, { value: 'git', syntax: 'shell', name: 'Git' }, { value: 'go', syntax: 'go', alias: ['golang'], name: 'Go' }, { value: 'graphql', syntax: 'simplemode', name: 'GraphQL' }, { value: 'groovy', syntax: 'groovy', name: 'Groovy' }, { value: 'html', syntax: 'htmlmixed', name: 'HTML', alias: ['html5'] }, { value: 'http', syntax: 'http', name: 'HTTP' }, { value: 'java', syntax: 'text/x-java', name: 'Java' }, { value: 'javascript', syntax: 'text/javascript', name: 'JavaScript', alias: ['js'] }, { value: 'json', syntax: 'application/json', name: 'JSON' }, { value: 'jsx', syntax: 'jsx', name: 'JSX' }, { value: 'katex', syntax: 'simplemode', name: 'KaTeX' }, { value: 'kotlin', syntax: 'text/x-kotlin', name: 'Kotlin' }, { value: 'less', syntax: 'css', name: 'Less' }, { value: 'makefile', syntax: 'cmake', name: 'Makefile' }, { value: 'markdown', syntax: 'markdown', name: 'Markdown' }, { value: 'matlab', syntax: 'octave', name: 'MATLAB' }, { value: 'nginx', syntax: 'nginx', name: 'Nginx' }, { value: 'objectivec', syntax: 'text/x-objectivec', name: 'Objective-C' }, { value: 'pascal', syntax: 'pascal', name: 'Pascal' }, { value: 'perl', syntax: 'perl', name: 'Perl' }, { value: 'php', syntax: 'php', name: 'PHP' }, { value: 'powershell', syntax: 'powershell', name: 'PowerShell' }, { value: 'protobuf', syntax: 'protobuf', name: 'Protobuf' }, { value: 'python', syntax: 'python', name: 'Python', alias: ['py'] }, { value: 'r', syntax: 'r', name: 'R' }, { value: 'ruby', syntax: 'ruby', name: 'Ruby' }, { value: 'rust', syntax: 'rust', name: 'Rust' }, { value: 'scala', syntax: 'text/x-scala', name: 'Scala' }, { value: 'shell', syntax: 'shell', name: 'Shell' }, { value: 'sql', syntax: 'text/x-sql', name: 'SQL' }, { value: 'swift', syntax: 'swift', name: 'Swift' }, { value: 'typescript', syntax: 'text/typescript', name: 'TypeScript', alias: ['ts'] }, { value: 'vbnet', syntax: 'vb', name: 'VB.net' }, { value: 'velocity', syntax: 'velocity', name: 'Velocity' }, { value: 'xml', syntax: 'xml', name: 'XML' }, { value: 'yaml', syntax: 'yaml', name: 'YAML' }]; function styleInject(css, ref) { if ( ref === void 0 ) ref = {}; var insertAt = ref.insertAt; if (!css || typeof document === 'undefined') { return; } var head = document.head || document.getElementsByTagName('head')[0]; var style = document.createElement('style'); style.type = 'text/css'; if (insertAt === 'top') { if (head.firstChild) { head.insertBefore(style, head.firstChild); } else { head.appendChild(style); } } else { head.appendChild(style); } if (style.styleSheet) { style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } } var css_248z = ".data-codeblock-container {\r\n position: relative;\r\n padding: 0;\r\n overflow: visible;\r\n border: 1px solid #e8e8e8;\r\n border-radius: 2px 2px;\r\n text-indent: 0;\r\n }\r\n \r\n .data-codeblock-container .am-embed-toolbar-item {\r\n float: right;\r\n line-height: 32px;\r\n }\r\n \r\n .data-codeblock-content {\r\n background: #f9f9f9;\r\n overflow: auto;\r\n }\r\n \r\n .am-engine .CodeMirror,\r\n .am-engine-view .CodeMirror {\r\n font-family: monospace;\r\n font-size: 13px;\r\n line-height: 21px;\r\n color: #595959;\r\n direction: ltr;\r\n height: auto;\r\n overflow: hidden;\r\n background: transparent;\r\n }\r\n \r\n .am-engine .CodeMirror-lines,\r\n .am-engine-view .CodeMirror-lines {\r\n padding: 8px 0;\r\n }\r\n \r\n .am-engine .CodeMirror-scrollbar-filler,\r\n .am-engine-view .CodeMirror-scrollbar-filler,\r\n .am-engine .CodeMirror-gutter-filler,\r\n .am-engine-view .CodeMirror-gutter-filler {\r\n background-color: white;\r\n \r\n /* The little square between H and V scrollbars */\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutters,\r\n .am-engine-view .CodeMirror-gutters {\r\n border: 0;\r\n white-space: nowrap;\r\n padding: 0 8px;\r\n background-color: unset;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-linenumber,\r\n .am-engine-view .CodeMirror-linenumber {\r\n padding: 0;\r\n min-width: 20px;\r\n text-align: right;\r\n color: #BFBFBF;\r\n white-space: nowrap;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-guttermarker,\r\n .am-engine-view .CodeMirror-guttermarker {\r\n color: black;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-guttermarker-subtle,\r\n .am-engine-view .CodeMirror-guttermarker-subtle {\r\n color: #999;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-cursor,\r\n .am-engine-view .CodeMirror-cursor {\r\n border-left: 1px solid black;\r\n border-right: none;\r\n width: 0;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror div.CodeMirror-secondarycursor,\r\n .am-engine-view .CodeMirror div.CodeMirror-secondarycursor {\r\n border-left: 1px solid silver;\r\n \r\n }\r\n \r\n .am-engine .cm-fat-cursor .CodeMirror-cursor,\r\n .am-engine-view .cm-fat-cursor .CodeMirror-cursor {\r\n width: auto;\r\n border: 0 !important;\r\n background: #7e7;\r\n \r\n }\r\n \r\n .am-engine .cm-fat-cursor div.CodeMirror-cursors,\r\n .am-engine-view .cm-fat-cursor div.CodeMirror-cursors {\r\n z-index: 1;\r\n \r\n }\r\n \r\n .am-engine .cm-fat-cursor-mark,\r\n .am-engine-view .cm-fat-cursor-mark {\r\n background-color: rgba(20, 255, 20, 0.5);\r\n -webkit-animation: blink 1.06s steps(1) infinite;\r\n animation: blink 1.06s steps(1) infinite;\r\n \r\n }\r\n \r\n .am-engine .cm-animate-fat-cursor,\r\n .am-engine-view .cm-animate-fat-cursor {\r\n width: auto;\r\n border: 0;\r\n -webkit-animation: blink 1.06s steps(1) infinite;\r\n animation: blink 1.06s steps(1) infinite;\r\n background-color: #7e7;\r\n \r\n }\r\n \r\n @-webkit-keyframes blink {\r\n 50% {\r\n background-color: transparent;\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n @keyframes blink {\r\n 50% {\r\n background-color: transparent;\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n .am-engine .cm-tab,\r\n .am-engine-view .cm-tab {\r\n display: inline-block;\r\n text-decoration: inherit;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-rulers,\r\n .am-engine-view .CodeMirror-rulers {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: -50px;\r\n bottom: -20px;\r\n overflow: hidden;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-ruler,\r\n .am-engine-view .CodeMirror-ruler {\r\n border-left: 1px solid #ccc;\r\n top: 0;\r\n bottom: 0;\r\n position: absolute;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-header,\r\n .am-engine-view .cm-s-default .cm-header {\r\n color: blue;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-quote,\r\n .am-engine-view .cm-s-default .cm-quote {\r\n color: #090;\r\n \r\n }\r\n \r\n .am-engine .cm-negative,\r\n .am-engine-view .cm-negative {\r\n color: #d44;\r\n \r\n }\r\n \r\n .am-engine .cm-positive,\r\n .am-engine-view .cm-positive {\r\n color: #292;\r\n \r\n }\r\n \r\n .am-engine .cm-header,\r\n .am-engine-view .cm-header,\r\n .am-engine .cm-strong,\r\n .am-engine-view .cm-strong {\r\n font-weight: bold;\r\n \r\n }\r\n \r\n .am-engine .cm-em,\r\n .am-engine-view .cm-em {\r\n font-style: italic;\r\n \r\n }\r\n \r\n .am-engine .cm-link,\r\n .am-engine-view .cm-link {\r\n text-decoration: underline;\r\n \r\n }\r\n \r\n .am-engine .cm-strikethrough,\r\n .am-engine-view .cm-strikethrough {\r\n text-decoration: line-through;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-keyword,\r\n .am-engine-view .cm-s-default .cm-keyword {\r\n color: #d73a49;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-atom,\r\n .am-engine-view .cm-s-default .cm-atom {\r\n color: #905;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-number,\r\n .am-engine-view .cm-s-default .cm-number {\r\n color: #005cc5;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-def,\r\n .am-engine-view .cm-s-default .cm-def {\r\n color: #005cc5;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-variable-2,\r\n .am-engine-view .cm-s-default .cm-variable-2 {\r\n color: #005cc5;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-variable-3,\r\n .am-engine-view .cm-s-default .cm-variable-3,\r\n .am-engine .cm-s-default .cm-type,\r\n .am-engine-view .cm-s-default .cm-type {\r\n color: #22863a;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-comment,\r\n .am-engine-view .cm-s-default .cm-comment {\r\n color: #6a737d;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-string,\r\n .am-engine-view .cm-s-default .cm-string {\r\n color: #690;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-string-2,\r\n .am-engine-view .cm-s-default .cm-string-2 {\r\n color: #690;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-meta,\r\n .am-engine-view .cm-s-default .cm-meta {\r\n color: #1f7f9a;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-qualifier,\r\n .am-engine-view .cm-s-default .cm-qualifier {\r\n color: #555;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-builtin,\r\n .am-engine-view .cm-s-default .cm-builtin {\r\n color: #6f42c1;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-bracket,\r\n .am-engine-view .cm-s-default .cm-bracket {\r\n color: #997;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-tag,\r\n .am-engine-view .cm-s-default .cm-tag {\r\n color: #22863a;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-attribute,\r\n .am-engine-view .cm-s-default .cm-attribute {\r\n color: #6f42c1;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-hr,\r\n .am-engine-view .cm-s-default .cm-hr {\r\n color: #999;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-link,\r\n .am-engine-view .cm-s-default .cm-link {\r\n color: #00c;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-error,\r\n .am-engine-view .cm-s-default .cm-error {\r\n color: #f00;\r\n \r\n }\r\n \r\n .am-engine .cm-invalidchar,\r\n .am-engine-view .cm-invalidchar {\r\n color: #f00;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-operator,\r\n .am-engine-view .cm-s-default .cm-operator {\r\n color: #d73a49;\r\n \r\n }\r\n \r\n .am-engine .cm-s-default .cm-property,\r\n .am-engine-view .cm-s-default .cm-property {\r\n color: #005cc5;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-composing,\r\n .am-engine-view .CodeMirror-composing {\r\n border-bottom: 2px solid;\r\n \r\n }\r\n \r\n .am-engine div.CodeMirror span.CodeMirror-matchingbracket,\r\n .am-engine-view div.CodeMirror span.CodeMirror-matchingbracket {\r\n color: #0b0;\r\n \r\n }\r\n \r\n .am-engine div.CodeMirror span.CodeMirror-nonmatchingbracket,\r\n .am-engine-view div.CodeMirror span.CodeMirror-nonmatchingbracket {\r\n color: #a22;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-matchingtag,\r\n .am-engine-view .CodeMirror-matchingtag {\r\n background: rgba(255, 150, 0, 0.3);\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-activeline-background,\r\n .am-engine-view .CodeMirror-activeline-background {\r\n background: transparent;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-scroll,\r\n .am-engine-view .CodeMirror-scroll {\r\n overflow: scroll !important;\r\n \r\n /* Things will break if this is overridden */\r\n \r\n /* 30px is the magic margin used to hide the element's real scrollbars */\r\n \r\n /* See overflow: hidden in .CodeMirror */\r\n margin-bottom: -50px;\r\n margin-right: -50px;\r\n padding-bottom: 50px;\r\n outline: none;\r\n \r\n /* Prevent dragging from highlighting the element */\r\n position: relative;\r\n z-index: 0;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-sizer,\r\n .am-engine-view .CodeMirror-sizer {\r\n position: relative;\r\n border-right: 50px solid transparent;\r\n min-height: auto !important;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-vscrollbar,\r\n .am-engine-view .CodeMirror-vscrollbar,\r\n .am-engine .CodeMirror-hscrollbar,\r\n .am-engine-view .CodeMirror-hscrollbar,\r\n .am-engine .CodeMirror-scrollbar-filler,\r\n .am-engine-view .CodeMirror-scrollbar-filler,\r\n .am-engine .CodeMirror-gutter-filler,\r\n .am-engine-view .CodeMirror-gutter-filler {\r\n position: absolute;\r\n z-index: 6;\r\n display: none;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-vscrollbar,\r\n .am-engine-view .CodeMirror-vscrollbar {\r\n right: 0;\r\n top: 0;\r\n overflow-x: hidden;\r\n overflow-y: scroll;\r\n display: none;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-hscrollbar,\r\n .am-engine-view .CodeMirror-hscrollbar {\r\n bottom: 0;\r\n left: 0;\r\n overflow-y: hidden;\r\n overflow-x: scroll;\r\n display: none;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-scrollbar-filler,\r\n .am-engine-view .CodeMirror-scrollbar-filler {\r\n right: 0;\r\n bottom: 0;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-filler,\r\n .am-engine-view .CodeMirror-gutter-filler {\r\n left: 0;\r\n bottom: 0;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutters,\r\n .am-engine-view .CodeMirror-gutters {\r\n position: absolute;\r\n left: 0;\r\n top: 0;\r\n min-height: 100%;\r\n background: #f9f9f9;\r\n z-index: 3;\r\n }\r\n \r\n .am-engine .CodeMirror-gutter,\r\n .am-engine-view .CodeMirror-gutter {\r\n white-space: normal;\r\n height: 100%;\r\n display: inline-block;\r\n vertical-align: top;\r\n margin-bottom: -30px;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-wrapper,\r\n .am-engine-view .CodeMirror-gutter-wrapper {\r\n position: absolute;\r\n z-index: 4;\r\n background: none !important;\r\n border: none !important;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-background,\r\n .am-engine-view .CodeMirror-gutter-background {\r\n position: absolute;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 4;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-elt,\r\n .am-engine-view .CodeMirror-gutter-elt {\r\n position: absolute;\r\n cursor: default;\r\n z-index: 4;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-wrapper ::-moz-selection,\r\n .am-engine-view .CodeMirror-gutter-wrapper ::-moz-selection {\r\n background-color: transparent;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-wrapper ::selection,\r\n .am-engine-view .CodeMirror-gutter-wrapper ::selection {\r\n background-color: transparent;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-gutter-wrapper ::-moz-selection,\r\n .am-engine-view .CodeMirror-gutter-wrapper ::-moz-selection {\r\n background-color: transparent;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-lines,\r\n .am-engine-view .CodeMirror-lines {\r\n cursor: text;\r\n min-height: 40px;\r\n \r\n /* prevents collapsing before first draw */\r\n \r\n }\r\n \r\n .am-engine .CodeMirror pre,\r\n .am-engine-view .CodeMirror pre {\r\n \r\n /* Reset some styles that the rest of the page might have set */\r\n border-radius: 0;\r\n border-width: 0;\r\n background: transparent;\r\n font-family: inherit;\r\n font-size: inherit;\r\n margin: 0;\r\n white-space: pre;\r\n word-wrap: normal;\r\n line-height: inherit;\r\n color: inherit;\r\n z-index: 2;\r\n position: relative;\r\n overflow: visible;\r\n -webkit-tap-highlight-color: transparent;\r\n font-variant-ligatures: contextual;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-wrap pre,\r\n .am-engine-view .CodeMirror-wrap pre {\r\n word-wrap: break-word;\r\n white-space: pre-wrap;\r\n word-break: normal;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-linebackground,\r\n .am-engine-view .CodeMirror-linebackground {\r\n position: absolute;\r\n left: 0;\r\n right: 0;\r\n top: 0;\r\n bottom: 0;\r\n z-index: 0;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-linewidget,\r\n .am-engine-view .CodeMirror-linewidget {\r\n position: relative;\r\n z-index: 2;\r\n padding: 0.1px;\r\n \r\n /* Force widget margins to stay inside of the container */\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-rtl pre,\r\n .am-engine-view .CodeMirror-rtl pre {\r\n direction: rtl;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-code,\r\n .am-engine-view .CodeMirror-code {\r\n outline: none;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-scroll,\r\n .am-engine-view .CodeMirror-scroll,\r\n .am-engine .CodeMirror-sizer,\r\n .am-engine-view .CodeMirror-sizer,\r\n .am-engine .CodeMirror-gutter,\r\n .am-engine-view .CodeMirror-gutter,\r\n .am-engine .CodeMirror-gutters,\r\n .am-engine-view .CodeMirror-gutters,\r\n .am-engine .CodeMirror-linenumber,\r\n .am-engine-view .CodeMirror-linenumber {\r\n box-sizing: content-box;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-simplescroll-horizontal, .am-engine-view .CodeMirror-simplescroll-horizontal {\r\n bottom: 4px;\r\n cursor: pointer;\r\n }\r\n \r\n .am-engine .CodeMirror-measure,\r\n .am-engine-view .CodeMirror-measure {\r\n position: absolute;\r\n width: 100%;\r\n height: 0;\r\n overflow: hidden;\r\n visibility: hidden;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-cursor,\r\n .am-engine-view .CodeMirror-cursor {\r\n position: absolute;\r\n pointer-events: none;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-measure pre,\r\n .am-engine-view .CodeMirror-measure pre {\r\n position: static;\r\n \r\n }\r\n \r\n .am-engine div.CodeMirror-cursors,\r\n .am-engine-view div.CodeMirror-cursors {\r\n visibility: hidden;\r\n position: relative;\r\n z-index: 3;\r\n \r\n }\r\n \r\n .am-engine div.CodeMirror-dragcursors,\r\n .am-engine-view div.CodeMirror-dragcursors {\r\n visibility: visible;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-focused div.CodeMirror-cursors,\r\n .am-engine-view .CodeMirror-focused div.CodeMirror-cursors {\r\n visibility: visible;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-selected,\r\n .am-engine-view .CodeMirror-selected {\r\n background: #e8e8e8;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-focused .CodeMirror-selected,\r\n .am-engine-view .CodeMirror-focused .CodeMirror-selected {\r\n background: #b3d7fd;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-crosshair,\r\n .am-engine-view .CodeMirror-crosshair {\r\n cursor: crosshair;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-line::-moz-selection,\r\n .am-engine-view .CodeMirror-line::-moz-selection,\r\n .am-engine .CodeMirror-line>span::-moz-selection,\r\n .am-engine-view .CodeMirror-line>span::-moz-selection,\r\n .am-engine .CodeMirror-line>span>span::-moz-selection,\r\n .am-engine-view .CodeMirror-line>span>span::-moz-selection {\r\n background: #b3d7fd;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-line::selection,\r\n .am-engine-view .CodeMirror-line::selection,\r\n .am-engine .CodeMirror-line>span::selection,\r\n .am-engine-view .CodeMirror-line>span::selection,\r\n .am-engine .CodeMirror-line>span>span::selection,\r\n .am-engine-view .CodeMirror-line>span>span::selection {\r\n background: #b3d7fd;\r\n \r\n }\r\n \r\n .am-engine .CodeMirror-line::-moz-selection,\r\n .am-engine-view .CodeMirror-line::-moz-selection,\r\n .am-engine .CodeMirror-line>span::-moz-selection,\r\n .am-engine-view .CodeMirror-line>span::-moz-selection,\r\n .am-engine .CodeMirror-line>span>span::-moz-selection,\r\n .am-engine-view .CodeMirror-line>span>span::-moz-selection {\r\n background: #b3d7fd;\r\n \r\n }\r\n \r\n .am-engine .cm-searching,\r\n .am-engine-view .cm-searching {\r\n background-color: #ffa;\r\n background-color: rgba(255, 255, 0, 0.4);\r\n \r\n }\r\n \r\n .am-engine .cm-force-border,\r\n .am-engine-view .cm-force-border {\r\n padding-right: 0.1px;\r\n \r\n }\r\n \r\n @media print {\r\n \r\n /* .am-engine,\r\n .am-engine-view { */\r\n \r\n /* Hide the cursor when printing */\r\n \r\n /* } */\r\n \r\n .am-engine .CodeMirror div.CodeMirror-cursors,\r\n .am-engine-view .CodeMirror div.CodeMirror-cursors {\r\n visibility: hidden;\r\n \r\n }\r\n \r\n \r\n }\r\n \r\n .am-engine .cm-tab-wrap-hack:after,\r\n .am-engine-view .cm-tab-wrap-hack:after {\r\n content: '';\r\n \r\n }\r\n \r\n .am-engine span.CodeMirror-selectedtext,\r\n .am-engine-view span.CodeMirror-selectedtext {\r\n background: none;\r\n \r\n }\r\n \r\n .am-engine-view .data-codeblock-container {\r\n margin: 5px 0;\r\n \r\n }\r\n \r\n .am-content-editor .am-engine .data-codeblock-container .CodeMirror-lines {\r\n min-height: 40px;\r\n }"; styleInject(css_248z); var _modeNameMap = /*#__PURE__*/_classPrivateFieldLooseKey("modeNameMap"); var _modeSynatxMap = /*#__PURE__*/_classPrivateFieldLooseKey("modeSynatxMap"); var _viewAutoWrap = /*#__PURE__*/_classPrivateFieldLooseKey("viewAutoWrap"); var CodeBlcok = /*#__PURE__*/function (_Card) { _inherits(CodeBlcok, _Card); var _super = _createSuper(CodeBlcok); function CodeBlcok() { var _this; _classCallCheck(this, CodeBlcok); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _super.call.apply(_super, [this].concat(args)); _this.mirror = void 0; _this.resize = function () { var _this$codeEditor; return (_this$codeEditor = _this.codeEditor) === null || _this$codeEditor === void 0 ? void 0 : _this$codeEditor.container.find('.data-codeblock-content'); }; _this.codeEditor = void 0; Object.defineProperty(_assertThisInitialized(_this), _modeNameMap, { writable: true, value: {} }); Object.defineProperty(_assertThisInitialized(_this), _modeSynatxMap, { writable: true, value: {} }); Object.defineProperty(_assertThisInitialized(_this), _viewAutoWrap, { writable: true, value: undefined }); return _this; } _createClass(CodeBlcok, [{ key: "init", value: function init() { var _this2 = this; if (isServer) return; _get(_getPrototypeOf(CodeBlcok.prototype), "init", this).call(this); if (this.codeEditor) return; datas.forEach(function (item) { _classPrivateFieldLooseBase(_this2, _modeNameMap)[_modeNameMap][item.value] = item.name; _classPrivateFieldLooseBase(_this2, _modeSynatxMap)[_modeSynatxMap][item.value] = item.syntax; if (item.alias) { item.alias.forEach(function (name) { _classPrivateFieldLooseBase(_this2, _modeNameMap)[_modeNameMap][name] = item.name; _classPrivateFieldLooseBase(_this2, _modeSynatxMap)[_modeSynatxMap][name] = item.syntax; }); } }); var editor = this.editor; this.codeEditor = new CodeBlockEditor(editor, { synatxMap: _classPrivateFieldLooseBase(this, _modeSynatxMap)[_modeSynatxMap], onSave: function onSave(mode, value) { var oldValue = _this2.getValue(); if (mode === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.mode) && value === oldValue.code) return; _this2.setValue({ mode: mode, code: value }); }, onMouseDown: function onMouseDown(event) { if (!_this2.activated) setTimeout(function () { editor.card.activate(_this2.root, CardActiveTrigger.MOUSE_DOWN); }, 10); }, onUpFocus: function onUpFocus(event) { var _this2$toolbarModel; if (!isEngine(editor)) return; event.preventDefault(); var change = editor.change, card = editor.card; var range = change.range.get().cloneRange(); var prev = _this2.root.prev(); var cardComponent = prev ? card.find(prev) : undefined; if (cardComponent === null || cardComponent === void 0 ? void 0 : cardComponent.onSelectUp) { cardComponent.onSelectUp(event); } else if (prev) { card.focusPrevBlock(_this2, range, false); change.range.select(range); } else { _this2.focus(range, true); change.range.select(range); return; } _this2.activate(false); (_this2$toolbarModel = _this2.toolbarModel) === null || _this2$toolbarModel === void 0 ? void 0 : _this2$toolbarModel.hide(); }, onDownFocus: function onDownFocus(event) { var _this2$toolbarModel2; if (!isEngine(editor)) return; event.preventDefault(); var change = editor.change, card = editor.card; var range = change.range.get().cloneRange(); var next = _this2.root.next(); var cardComponent = next ? card.find(next) : undefined; if (cardComponent === null || cardComponent === void 0 ? void 0 : cardComponent.onSelectDown) { cardComponent.onSelectDown(event); } else if (next) { card.focusNextBlock(_this2, range, false); change.range.select(range); } else { _this2.focus(range, false); change.range.select(range); return; } _this2.activate(false); (_this2$toolbarModel2 = _this2.toolbarModel) === null || _this2$toolbarModel2 === void 0 ? void 0 : _this2$toolbarModel2.hide(); }, onLeftFocus: function onLeftFocus(event) { var _this2$toolbarModel3; if (!isEngine(editor)) return; event.preventDefault(); var change = editor.change; var range = change.range.get().cloneRange(); _this2.focus(range, true); change.range.select(range); _this2.activate(false); (_this2$toolbarModel3 = _this2.toolbarModel) === null || _this2$toolbarModel3 === void 0 ? void 0 : _this2$toolbarModel3.hide(); }, onRightFocus: function onRightFocus(event) { var _this2$toolbarModel4; if (!isEngine(editor)) return; event.preventDefault(); var change = editor.change; var range = change.range.get().cloneRange(); _this2.focus(range, false); change.range.select(range); _this2.activate(false); (_this2$toolbarModel4 = _this2.toolbarModel) === null || _this2$toolbarModel4 === void 0 ? void 0 : _this2$toolbarModel4.hide(); } }); } }, { key: "toolbar", value: function toolbar() { var _this3 = this, _editor$plugin$findPl; var editor = this.editor; var getItems = function getItems() { if (_this3.loading) return []; if (!isEngine(editor) || editor.readonly) { return [{ key: 'copy', type: 'copy' }, { key: 'autoWrap', type: 'switch', content: editor.language.get(CodeBlcok.cardName, 'autoWrap'), getState: function getState() { if (_classPrivateFieldLooseBase(_this3, _viewAutoWrap)[_viewAutoWrap] === undefined) { var _this3$getValue; _classPrivateFieldLooseBase(_this3, _viewAutoWrap)[_viewAutoWrap] = !!((_this3$getValue = _this3.getValue()) === null || _this3$getValue === void 0 ? void 0 : _this3$getValue.autoWrap); } return _classPrivateFieldLooseBase(_this3, _viewAutoWrap)[_viewAutoWrap]; }, onClick: function onClick() { var _this3$codeEditor; var autoWrap = !_classPrivateFieldLooseBase(_this3, _viewAutoWrap)[_viewAutoWrap]; _classPrivateFieldLooseBase(_this3, _viewAutoWrap)[_viewAutoWrap] = autoWrap; (_this3$codeEditor = _this3.codeEditor) === null || _this3$codeEditor === void 0 ? void 0 : _this3$codeEditor.setAutoWrap(autoWrap); } }]; } return [{ key: 'dnd', type: 'dnd' }, { key: 'copy', type: 'copy' }, { key: 'delete', type: 'delete' }, { key: 'select', type: 'node', node: $('<div />'), didMount: function didMount(node) { // 等待编辑插件渲染成功后才能去到mode setTimeout(function () { renderSelect(node.get(), _this3.constructor.getModes(), _classPrivateFieldLooseBase(_this3, _modeNameMap)[_modeNameMap][_this3.codeEditor.mode] || _this3.codeEditor.mode || 'plain', function (mode) { setTimeout(function () { _this3.focusEditor(); // 解决vue自动给 this.codeEditor 包 Proxy 的问题 if (_this3.codeEditor) { toRaw(_this3.codeEditor).update(mode); } }, 100); }); }, 100); } }, { key: 'autoWrap', type: 'switch', content: editor.language.get(CodeBlcok.cardName, 'autoWrap'), getState: function getState() { var _this3$getValue2; return !!((_this3$getValue2 = _this3.getValue()) === null || _this3$getValue2 === void 0 ? void 0 : _this3$getValue2.autoWrap); }, onClick: function onClick() { var _this3$codeEditor2; var value = _this3.getValue(); var autoWrap = !(value === null || value === void 0 ? void 0 : value.autoWrap); _this3.setValue({ autoWrap: autoWrap }); (_this3$codeEditor2 = _this3.codeEditor) === null || _this3$codeEditor2 === void 0 ? void 0 : _this3$codeEditor2.setAutoWrap(autoWrap); } }]; }; var options = (_editor$plugin$findPl = editor.plugin.findPlugin('codeblock')) === null || _editor$plugin$findPl === void 0 ? void 0 : _editor$plugin$findPl.options; if (options === null || options === void 0 ? void 0 : options.cardToolbars) { return options.cardToolbars(getItems(), this.editor); } return getItems(); } }, { key: "focusEditor", value: function focusEditor() { var _this$codeEditor2; (_this$codeEditor2 = this.codeEditor) === null || _this$codeEditor2 === void 0 ? void 0 : _this$codeEditor2.focus(); this.editor.card.activate(this.root); } }, { key: "onSelectLeft", value: function onSelectLeft(event) { var _this$toolbarModel; if (!this.codeEditor) return; event.preventDefault(); this.codeEditor.select(false); this.activate(true); (_this$toolbarModel = this.toolbarModel) === null || _this$toolbarModel === void 0 ? void 0 : _this$toolbarModel.show(); } }, { key: "onSelectRight", value: function onSelectRight(event) { var _this$toolbarModel2; if (!this.codeEditor) return; event.preventDefault(); this.codeEditor.select(true); this.activate(true); (_this$toolbarModel2 = this.toolbarModel) === null || _this$toolbarModel2 === void 0 ? void 0 : _this$toolbarModel2.show(); } }, { key: "onSelectDown", value: function onSelectDown(event) { var _this$toolbarModel3; if (!this.codeEditor) return; event.preventDefault(); this.codeEditor.select(true); this.activate(true); (_this$toolbarModel3 = this.toolbarModel) === null || _this$toolbarModel3 === void 0 ? void 0 : _this$toolbarModel3.show(); } }, { key: "onSelectUp", value: function onSelectUp(event) { var _this$toolbarModel4; if (!this.codeEditor) return; event.preventDefault(); this.codeEditor.select(false); this.activate(true); (_this$toolbarModel4 = this.toolbarModel) === null || _this$toolbarModel4 === void 0 ? void 0 : _this$toolbarModel4.show(); } }, { key: "render", value: function render() { if (!this.codeEditor) return; if (!this.codeEditor.container.inEditor()) { this.codeEditor.container = $(this.codeEditor.renderTempla