"use strict"; (self["webpackChunk"] = self["webpackChunk"] || []).push([[2150],{ /***/ 32150: /*!************************************************************!*\ !*** ./src/components/monaco-editor/index.jsx + 4 modules ***! \************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { // EXPORTS __webpack_require__.d(__webpack_exports__, { SV: function() { return /* binding */ DiffEditor; }, ZP: function() { return /* binding */ monaco_editor; } }); // UNUSED EXPORTS: getLanguageByMirrorName // EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js var _react_17_0_2_react = __webpack_require__(59301); // EXTERNAL MODULE: ./node_modules/_resize-observer-polyfill@1.5.1@resize-observer-polyfill/dist/ResizeObserver.es.js var ResizeObserver_es = __webpack_require__(76374); ;// CONCATENATED MODULE: ./src/components/monaco-editor/keywords.tsx const cLangage = { keywords: ["print", "auto", "break", "case", "char", "const", "continue", "default", "do", "double", "else", "enum", "extern", "float", "for", "goto", "if", "int", "long", "register", "return", "short", "signed", "sizeof", "static", "struct", "switch", "typedef", "union", "unsigned", "void", "volatile", "while"] }; const javaLangage = { quickKey: [{ label: "main", content: [ "public static void main(String[] args) {", " $0", "}" ].join("\n") }, { label: "System.out.println", content: [ "System.out.println($0)" ].join("\n") }, { label: "System.out.print", content: [ "System.out.print($0)" ].join("\n") }], keywords: [ "abstract", "continue", "for", "new", "switch", "assert", "default", "goto", "package", "synchronized", "boolean", "do", "if", "private", "this", "break", "double", "implements", "protected", "throw", "byte", "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", "native", "super", "while", "true", "false" ] }; const cppLangage = { keywords: [ "abstract", "amp", "array", "auto", "bool", "break", "case", "catch", "char", "class", "const", "constexpr", "const_cast", "continue", "cpu", "decltype", "default", "delegate", "delete", "do", "double", "dynamic_cast", "each", "else", "enum", "event", "explicit", "export", "extern", "false", "final", "finally", "float", "friend", "gcnew", "generic", "goto", "in", "initonly", "inline", "int", "interface", "interior_ptr", "internal", "literal", "long", "mutable", "namespace", "new", "noexcept", "nullptr", "__nullptr", "operator", "override", "partial", "pascal", "pin_ptr", "private", "property", "protected", "public", "ref", "register", "reinterpret_cast", "restrict", "return", "safe_cast", "sealed", "short", "signed", "sizeof", "static", "static_assert", "static_cast", "struct", "switch", "template", "this", "thread_local", "throw", "tile_static", "true", "try", "typedef", "typeid", "typename", "union", "unsigned", "using", "virtual", "void", "volatile", "wchar_t", "where", "while", "_asm", "_based", "_cdecl", "_declspec", "_fastcall", "_if_exists", "_if_not_exists", "_inline", "_multiple_inheritance", "_pascal", "_single_inheritance", "_stdcall", "_virtual_inheritance", "_w64", "__abstract", "__alignof", "__asm", "__assume", "__based", "__box", "__builtin_alignof", "__cdecl", "__clrcall", "__declspec", "__delegate", "__event", "__except", "__fastcall", "__finally", "__forceinline", "__gc", "__hook", "__identifier", "__if_exists", "__if_not_exists", "__inline", "__int128", "__int16", "__int32", "__int64", "__int8", "__interface", "__leave", "__m128", "__m128d", "__m128i", "__m256", "__m256d", "__m256i", "__m64", "__multiple_inheritance", "__newslot", "__nogc", "__noop", "__nounwind", "__novtordisp", "__pascal", "__pin", "__pragma", "__property", "__ptr32", "__ptr64", "__raise", "__restrict", "__resume", "__sealed", "__single_inheritance", "__stdcall", "__super", "__thiscall", "__try", "__try_cast", "__typeof", "__unaligned", "__unhook", "__uuidof", "__value", "__virtual_inheritance", "__w64", "__wchar_t" ], operators: [ "=", ">", "<", "!", "~", "?", ":", "==", "<=", ">=", "!=", "&&", "||", "++", "--", "+", "-", "*", "/", "&", "|", "^", "%", "<<", ">>", ">>>", "+=", "-=", "*=", "/=", "&=", "|=", "^=", "%=", "<<=", ">>=", ">>>=" ], quickKey: [ { label: "ifelse", content: [ "if (${1:condition}) {", " $0", "} else {", " ", "}" ].join("\n") }, { label: "include", content: "include<$0>" }, { label: "printf", content: "printf($0)" }, { label: "system", content: 'system("$0")' }, { label: "main", content: [ "int main () {", " $0", "}" ].join("\n") }, { label: "if", content: [ "if () {", " $0", "}" ].join("\n") }, { label: "for", content: [ "for(int j=0 ; j<10; j++){", " $0", "}" ].join("\n") }, { label: "trycatch", content: [ "try{", " $0", "}catch(ExceptionName e){", "}" ].join("\n") }, { label: "using namespace std;", content: [ "using namespace std;" ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") }, { label: "include ", content: [ "#include " ].join("\n") } ] }; const pythonLangage = { keywords: [ "and", "as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "exec", "finally", "for", "from", "global", "if", "import", "in", "is", "lambda", "None", "not", "or", "pass", "raise", "return", "self", "try", "while", "with", "yield", "int", "float", "long", "complex", "hex", "abs", "all", "any", "apply", "basestring", "bin", "bool", "buffer", "bytearray", "callable", "chr", "classmethod", "cmp", "coerce", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "execfile", "file", "filter", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "id", "input", "intern", "isinstance", "issubclass", "iter", "len", "locals", "list", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "print", "property", "reversed", "range", "raw_input", "reduce", "reload", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "unichr", "unicode", "vars", "xrange", "zip", "True", "False", "__dict__", "__methods__", "__members__", "__class__", "__bases__", "__name__", "__mro__", "__subclasses__", "__init__", "__import__" ], quickKey: [ { label: "print", content: [ "print($0)" ].join("\n") } // { label: "#include", content: '#include ""' }, // { label: "printf", content: 'printf("")' }, ] }; const scalaLangage = { keywords: [ "asInstanceOf", "catch", "class", "classOf", "def", "do", "else", "extends", "finally", "for", "foreach", "forSome", "if", "import", "isInstanceOf", "macro", "match", "new", "object", "package", "return", "throw", "trait", "try", "type", "until", "val", "var", "while", "with", "yield", // Dotty-specific: "given", "enum", "then" ], quickKey: [ { label: "println", content: [ "println($0)" ].join("\n") } // { label: "#include", content: '#include ""' }, // { label: "printf", content: 'printf("")' }, ] }; // EXTERNAL MODULE: ./node_modules/_js-beautify@1.15.1@js-beautify/js/index.js var js = __webpack_require__(86061); var js_default = /*#__PURE__*/__webpack_require__.n(js); ;// CONCATENATED MODULE: ./src/components/monaco-editor/monaco-suggest-config.tsx var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; const baseConfig = { languages: ["c", "abap", "apex", "azcli", "bat", "cameligo", "clojure", "coffee", "cpp", "csharp", "csp", "css", "dockerfile", "fsharp", "go", "graphql", "handlebars", "html", "ini", "java", "javascript", "json", "kotlin", "less", "lua", "markdown", "mips", "msdax", "mysql", "objective-c", "pascal", "pascaligo", "perl", "pgsql", "php", "postiats", "powerquery", "powershell", "pug", "python", "r", "razor", "redis", "redshift", "restructuredtext", "ruby", "rust", "sb", "scheme", "scss", "shell", "solidity", "sophia", "sql", "st", "swift", "tcl", "twig", "vb", "xml", "yaml'"], tables: { users: ["name", "id", "email", "phone", "password"], roles: ["id", "name", "order", "created_at", "updated_at", "deleted_at"] } }; const getKeywordsSuggest = (monaco, keywords) => { return keywords.map((key) => ({ label: key, // 显示的名称 kind: monaco.languages.CompletionItemKind.Keyword, insertText: key // 真实补全的值 })); }; const getTableSuggest = (monaco) => { return Object.keys(baseConfig.tables).map((key) => ({ label: key, // 显示的名称 kind: monaco.languages.CompletionItemKind.Variable, insertText: key // 真实补全的值 })); }; const getFieldsSuggest = (tableName, monaco) => { const fields = baseConfig.tables[tableName]; if (!fields) { return []; } return fields.map((name) => ({ label: name, kind: monaco.languages.CompletionItemKind.Field, insertText: name })); }; function getSuggestions(monaco, model, position, keywords, snippts) { let word = model.getWordUntilPosition(position); let range = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn }; let rs = keywords.map((item) => { return { label: item, kind: monaco.languages.CompletionItemKind.Keyword, insertText: item, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range }; }); snippts.map((item) => { rs.push(__spreadProps(__spreadValues({}, item), { range })); }); return rs; } /* harmony default export */ var monaco_suggest_config = ((monaco) => { baseConfig.languages.map((item) => { monaco.languages.registerDocumentFormattingEditProvider(item, { provideDocumentFormattingEdits(model, options, token) { return __async(this, null, function* () { const formattedText = js_default()(model.getValue(), { "indent_size": "2", "indent_char": " ", "max_preserve_newlines": "2", "preserve_newlines": true, "keep_array_indentation": true, "break_chained_methods": false, "indent_scripts": "normal", "brace_style": "collapse", "space_before_conditional": true, "unescape_strings": false, "jslint_happy": false, "end_with_newline": true, "wrap_line_length": "0", "indent_inner_html": false, "comma_first": false, "e4x": false, "indent_empty_lines": false }); return [ { range: model.getFullModelRange(), text: formattedText } ]; }); } }); return item; }); const cppKeyPrompt = cppLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Method, insertText: item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }; }); const pythonKeyPrompt = pythonLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Method, insertText: item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }; }); const javaKeyPrompt = javaLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Method, insertText: item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet }; }); monaco.languages.registerCompletionItemProvider("cpp", { provideCompletionItems: function(model, position) { var word = model.getWordUntilPosition(position); var wordRange = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn }; var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn); return { suggestions: [ ...cppLangage.keywords.map((item) => { return { label: item, kind: monaco.languages.CompletionItemKind.Function, documentation: item, insertText: item, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }), ...cppLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Function, documentation: item.content, insertText: value.startsWith("#") ? item.content.replace(/#/, "") : item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }) ] }; } }); monaco.languages.registerCompletionItemProvider("c", { provideCompletionItems: function(model, position) { var word = model.getWordUntilPosition(position); var wordRange = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn }; return { suggestions: [ ...cLangage.keywords.map((item) => { return { label: item, kind: monaco.languages.CompletionItemKind.Function, documentation: item, insertText: item, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }) ] }; } }); monaco.languages.registerCompletionItemProvider("java", { provideCompletionItems: function(model, position) { var word = model.getWordUntilPosition(position); var wordRange = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn }; var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn); return { suggestions: [ ...javaLangage.keywords.map((item) => { return { label: item, kind: monaco.languages.CompletionItemKind.Function, documentation: item, insertText: item, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }), ...javaLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Function, documentation: item.content, insertText: value.startsWith("#") ? item.content.replace(/#/, "") : item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }) ] }; } }); monaco.languages.registerCompletionItemProvider("scala", { provideCompletionItems: function(model, position) { var word = model.getWordUntilPosition(position); var wordRange = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn }; var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn); return { suggestions: [ ...scalaLangage.keywords.map((item) => { return { label: item, kind: monaco.languages.CompletionItemKind.Function, documentation: item, insertText: item, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }), ...scalaLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Function, documentation: item.content, insertText: value.startsWith("#") ? item.content.replace(/#/, "") : item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }) ] }; } }); monaco.languages.registerCompletionItemProvider("python", { provideCompletionItems: function(model, position) { var word = model.getWordUntilPosition(position); var wordRange = { startLineNumber: position.lineNumber, endLineNumber: position.lineNumber, startColumn: word.startColumn, endColumn: word.endColumn }; var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn); return { suggestions: [ ...pythonLangage.keywords.map((item) => { return { label: item, kind: monaco.languages.CompletionItemKind.Function, documentation: item, insertText: item, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }), ...pythonLangage.quickKey.map((item) => { return { label: item.label, kind: monaco.languages.CompletionItemKind.Function, documentation: item.content, insertText: value.startsWith("#") ? item.content.replace(/#/, "") : item.content, insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet, range: wordRange }; }) ] }; } }); }); const tipTxt = "\u8BE5\u4EFB\u52A1\u5173\u5361\u8BBE\u7F6E\u4E86\u7981\u6B62\u590D\u5236\u7C98\u8D34\uFF0C\u8BF7\u624B\u52A8\u8F93\u5165\u4EE3\u7801\u3002"; ;// CONCATENATED MODULE: ./src/components/monaco-editor/placeholder.js var placeholder_defProp = Object.defineProperty; var placeholder_defNormalProp = (obj, key, value) => key in obj ? placeholder_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { placeholder_defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; const _PlaceholderContentWidget = class { constructor(placeholder, editor, monaco) { this.placeholder = placeholder; this.editor = editor; this.monaco = monaco; editor.onDidChangeModelContent(() => this.onDidChangeModelContent()); this.onDidChangeModelContent(); } onDidChangeModelContent() { if (this.editor.getValue() === "") { this.editor.addContentWidget(this); } else { this.editor.removeContentWidget(this); } } getId() { return _PlaceholderContentWidget.ID; } getDomNode() { if (!this.domNode) { this.domNode = document.createElement("div"); this.domNode.style.width = "max-content"; this.domNode.textContent = this.placeholder; this.domNode.style.fontStyle = "initial"; this.domNode.style.color = "#D7D7D7"; this.domNode.style.pointerEvents = "none"; this.editor.applyFontInfo(this.domNode); } return this.domNode; } getPosition() { return { position: { lineNumber: 1, column: 1 }, preference: [this.monaco.editor.ContentWidgetPositionPreference.EXACT] }; } dispose() { this.editor.removeContentWidget(this); } }; let PlaceholderContentWidget = _PlaceholderContentWidget; __publicField(PlaceholderContentWidget, "ID", "editor.widget.placeholderHint"); /* harmony default export */ var monaco_editor_placeholder = (PlaceholderContentWidget); // EXTERNAL MODULE: ./node_modules/_monaco-editor@0.30.0@monaco-editor/esm/vs/platform/actions/common/actions.js var actions = __webpack_require__(96236); // EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/message/index.js + 4 modules var message = __webpack_require__(8591); // EXTERNAL MODULE: ./node_modules/_lodash@4.17.21@lodash/lodash.js var lodash = __webpack_require__(89392); // EXTERNAL MODULE: ./src/components/mediator.js var mediator = __webpack_require__(88675); ;// CONCATENATED MODULE: ./src/components/monaco-editor/index.css // extracted by mini-css-extract-plugin ;// CONCATENATED MODULE: ./src/components/monaco-editor/index.jsx var monaco_editor_defProp = Object.defineProperty; var monaco_editor_defProps = Object.defineProperties; var monaco_editor_getOwnPropDescs = Object.getOwnPropertyDescriptors; var monaco_editor_getOwnPropSymbols = Object.getOwnPropertySymbols; var monaco_editor_hasOwnProp = Object.prototype.hasOwnProperty; var monaco_editor_propIsEnum = Object.prototype.propertyIsEnumerable; var monaco_editor_defNormalProp = (obj, key, value) => key in obj ? monaco_editor_defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var monaco_editor_spreadValues = (a, b) => { for (var prop in b || (b = {})) if (monaco_editor_hasOwnProp.call(b, prop)) monaco_editor_defNormalProp(a, prop, b[prop]); if (monaco_editor_getOwnPropSymbols) for (var prop of monaco_editor_getOwnPropSymbols(b)) { if (monaco_editor_propIsEnum.call(b, prop)) monaco_editor_defNormalProp(a, prop, b[prop]); } return a; }; var monaco_editor_spreadProps = (a, b) => monaco_editor_defProps(a, monaco_editor_getOwnPropDescs(b)); var __objRest = (source, exclude) => { var target = {}; for (var prop in source) if (monaco_editor_hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) target[prop] = source[prop]; if (source != null && monaco_editor_getOwnPropSymbols) for (var prop of monaco_editor_getOwnPropSymbols(source)) { if (exclude.indexOf(prop) < 0 && monaco_editor_propIsEnum.call(source, prop)) target[prop] = source[prop]; } return target; }; var monaco_editor_async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; function processSize(size) { return !/^\d+$/.test(size) ? size : `${size}px`; } function noop() { } let __prevent_trigger_change_event = false; const DICT = { "Python3.6": "python", "Python2.7": "python", Dynamips: "cpp", Java: "java", Web: "php", Html: "html", Hive: "sql", Hadoop: "java", SDL: "cpp", PHP: "php", Matlab: "python", Git: "python", Python: "python", "C/C++": "cpp", "C++": "cpp", C: "cpp", Ruby: "ruby", Shell: "shell", JavaScript: "javascript", Perl6: "perl", Kotlin: "kotlin", Elixir: "elixir", Android: "java", JavaWeb: "java", Go: "go", Spark: "sql", MachineLearning: "python", Verilog: "xml", "Verilog/VNC": "xml", Docker: "dockerfile", "C#": "csharp", SQLite3: "sql", Oracle: "sql", Vhdl: "vhdl", R: "r", Swift: "swift", SQLServer: "mysql", MySQL: "mysql", Mongo: "sql", PostgreSql: "pgsql", Hbase: "powershell", Sqoop: "sql", Nasm: "cpp", Kafka: "java", Flink: "java", Sml: "javascript", OpenGL: "cpp", Perl5: "perl", Orange: "python", Scala: "scale", solidity: "sol" }; function getLanguageByMirrorName(mirror_name = []) { let lang = mirror_name; if (Array.isArray(mirror_name)) { for (let i = 0; i < mirror_name.length; i++) { let languageVal = DICT[mirror_name[i]]; if (languageVal) { return languageVal; } } return lang[0]; } return DICT[lang] || lang; } let monaco = null; /* harmony default export */ var monaco_editor = ((_a) => { var _b = _a, { width = "100%", height = "100%", value, language = "javascript", style = {}, options = {}, overrideServices = {}, theme = "vs-dark", onEditBlur, onSave, autoHeight = false, forbidCopy = false, onChange = noop, editorDidMount = noop, onFocus = noop, onBreakPoint = noop, breakPointValue = [], filename = "educoder.txt", errorLine, errorContent = "", highlightLine, openBreakPoint = false, placeholder = "" } = _b, props = __objRest(_b, [ "width", "height", "value", "language", "style", "options", "overrideServices", "theme", "onEditBlur", "onSave", "autoHeight", "forbidCopy", "onChange", "editorDidMount", "onFocus", "onBreakPoint", "breakPointValue", "filename", "errorLine", "errorContent", "highlightLine", "openBreakPoint", "placeholder" ]); const editorEl = (0,_react_17_0_2_react.useRef)(); const editor = (0,_react_17_0_2_react.useRef)({}); const optionsRef = (0,_react_17_0_2_react.useRef)(); const timeRef = (0,_react_17_0_2_react.useRef)(); const breakpointsFake = (0,_react_17_0_2_react.useRef)([]); const inputLock = (0,_react_17_0_2_react.useRef)(false); const inputLockTime = (0,_react_17_0_2_react.useRef)(); const noAllowTime = (0,_react_17_0_2_react.useRef)(); const [init, setInit] = (0,_react_17_0_2_react.useState)(false); function onLayout() { let ro; if (editorEl.current) { ro = new ResizeObserver_es/* default */.Z((entries) => { for (let entry of entries) { if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) { editor.current.instance.layout(); } } }); ro.observe(editorEl.current); } return ro; } function tipWarn() { message/* default */.ZP.warning({ content: decodeURIComponent(tipTxt), key: "monaco-editor-tip" }); } const setCodeValue = () => { let instance = editor.current.instance; if (value != null && instance && init) { const model = instance.getModel(); if (model && value !== model.getValue()) { __prevent_trigger_change_event = true; model.setValue(value); instance.layout(); __prevent_trigger_change_event = false; } } }; (0,_react_17_0_2_react.useEffect)(() => { const unSub = mediator/* default */.Z.subscribe("formatDocument", (status) => { var _a2; let instance = editor.current.instance; (_a2 = instance == null ? void 0 : instance.getAction) == null ? void 0 : _a2.call(instance, "editor.action.formatDocument").run(); }); window.updateMonacoValue = (value2) => { onChange(value2); }; return unSub; }, []); (0,_react_17_0_2_react.useEffect)(() => { var _a2; let instance = editor.current.instance; if (timeRef.current) clearTimeout(timeRef.current); timeRef.current = setTimeout(() => { setCodeValue(); }, 500); if (value && !!(value == null ? void 0 : value.length)) { (_a2 = instance == null ? void 0 : instance.updateOptions) == null ? void 0 : _a2.call(instance, { lineNumbersMinChars: Math.max(Math.floor(Math.log10(value.split(/\r\n|\r|\n/g).length)) + 3, 5) }); } }, [value, init, editor.current]); (0,_react_17_0_2_react.useEffect)(() => { if (errorLine && editor.current && editor.current.instance) { let instance = editor.current.instance; instance.changeViewZones(function(changeAccessor) { var domNode = document.createElement("div"); domNode.style.padding = "10px 20px"; domNode.style.width = "calc(100% - 20px)"; domNode.className = "my-error-line-wrp"; domNode.innerHTML = errorContent; changeAccessor.addZone({ afterLineNumber: errorLine || 11, heightInLines: 3, domNode }); }); var overlayWidget = { domNode: null, getId: function() { return "my.overlay.widget"; }, getDomNode: function() { if (!this.domNode) { this.domNode = document.createElement("div"); this.domNode.innerHTML = ""; this.domNode.style.width = "100%"; this.domNode.style.padding = "20px 100px"; this.domNode.style.right = "0px"; this.domNode.style.top = "50px"; this.domNode.style.position = "relative"; this.domNode.style.color = "#333"; } return this.domNode; }, getPosition: function() { return null; } }; instance.addOverlayWidget(overlayWidget); instance.revealPositionInCenter({ lineNumber: 20, column: 1 }); } }, [errorLine, editor.current, init]); const noAllow = (str = "", lineNumber) => { if (!str || str.trim() === "") { return true; } const model = editor.current.instance.getModel(); const lineTokens = model.getLineTokens(lineNumber); let comment = false; for (let i = 0; i < 2; i++) { if (lineTokens.getStandardTokenType(i) === 1) { comment = true; } } return comment; }; (0,_react_17_0_2_react.useEffect)(() => { var _a2; if (((_a2 = editor.current) == null ? void 0 : _a2.instance) && init && openBreakPoint) { let instance = editor.current.instance; let model = instance.getModel(); if (!model) return; const dealHighlightLine = () => { var _a3; let lines = []; let ids = []; const decorations = model.getAllDecorations(); for (let decoration of decorations) { if (decoration.options.className === "highlighted-line") { lines.push((_a3 = decoration == null ? void 0 : decoration.range) == null ? void 0 : _a3.startLineNumber); ids.push(decoration == null ? void 0 : decoration.id); } } if (highlightLine === lines[0]) return; model.deltaDecorations(ids, []); const lineCount = model.getLineCount(); if (!!highlightLine && highlightLine <= lineCount) { instance.deltaDecorations([], [ { range: new monaco.Range(highlightLine, 1, highlightLine, model.getLineMaxColumn(highlightLine)), options: { isWholeLine: true, className: "highlighted-line" } } ]); instance.revealLineInCenter(highlightLine); } }; dealHighlightLine(); const dealBreakPoint = (isReturn = false) => { var _a3; let lines = []; let ids = []; const decorations = model.getAllDecorations(); for (let decoration of decorations) { if (decoration.options.linesDecorationsClassName === "breakpoints-select") { lines.push((_a3 = decoration == null ? void 0 : decoration.range) == null ? void 0 : _a3.startLineNumber); ids.push(decoration == null ? void 0 : decoration.id); } } if (isReturn) return { lines, ids }; onBreakPoint(lines); }; const addBreakPoint = (line) => monaco_editor_async(void 0, null, function* () { let value2 = { range: new monaco.Range(line, 1, line, 1), options: { isWholeLine: false, linesDecorationsClassName: "breakpoints-select" } }; yield model.deltaDecorations([], [value2]); dealBreakPoint(); }); const removeBreakPoint = (line) => monaco_editor_async(void 0, null, function* () { let ids = []; const decorations = instance.getLineDecorations(line); for (let decoration of decorations) { if (decoration.options.linesDecorationsClassName === "breakpoints-select") { ids.push(decoration.id); } } yield model.deltaDecorations(ids, []); dealBreakPoint(); }); const hasBreakPoint = (line) => { let decorations = instance.getLineDecorations(line); for (let decoration of decorations) { if (decoration.options.linesDecorationsClassName === "breakpoints-select") { return true; } } return false; }; if (!(0,lodash.isEqual)(breakPointValue, dealBreakPoint(true).lines)) { model.deltaDecorations(dealBreakPoint(true).ids, []); const values = breakPointValue.map((line) => { return { range: new monaco.Range(line, 1, line, 1), options: { isWholeLine: false, linesDecorationsClassName: "breakpoints-select" } }; }); model.deltaDecorations([], values); } const elModelContent = instance.onDidChangeModelContent((e) => { let pos = instance.getPosition(); if (pos) { let line = pos.lineNumber; clearTimeout(noAllowTime.current); noAllowTime.current = setTimeout(() => { if (noAllow(model.getLineContent(line), line)) { removeBreakPoint(line); } else if (hasBreakPoint(line)) { removeBreakPoint(line); addBreakPoint(line); } else { dealBreakPoint(); } }, 100); } }); const elMouseDown = instance.onMouseDown((e) => { var _a3, _b2, _c; if (e.target.detail && ((_c = (_b2 = (_a3 = e.target) == null ? void 0 : _a3.element) == null ? void 0 : _b2.className) == null ? void 0 : _c.includes("line-numbers"))) { let line = e.target.position.lineNumber; if (noAllow(model.getLineContent(line), line)) { return; } if (!hasBreakPoint(line)) { addBreakPoint(line); } else { removeBreakPoint(line); } } }); const addFakeBreakPoint = (line) => { let value2 = { range: new monaco.Range(line, 1, line, 1), options: { isWholeLine: false, linesDecorationsClassName: "breakpoints-fake" } }; breakpointsFake.current = instance.deltaDecorations(breakpointsFake.current, [value2]); }; const removeFakeBreakPoint = () => { breakpointsFake.current = instance.deltaDecorations(breakpointsFake.current, []); }; const elMouseMove = instance.onMouseMove((e) => { var _a3, _b2, _c; removeFakeBreakPoint(); if (e.target.detail && ((_c = (_b2 = (_a3 = e.target) == null ? void 0 : _a3.element) == null ? void 0 : _b2.className) == null ? void 0 : _c.includes("line-numbers"))) { let line = e.target.position.lineNumber; if (noAllow(model.getLineContent(line), line)) { return; } addFakeBreakPoint(line); } }); const elMouseLeave = instance.onMouseLeave(() => { removeFakeBreakPoint(); }); return () => { elModelContent.dispose(); elMouseDown.dispose(); elMouseMove.dispose(); elMouseLeave.dispose(); }; } }, [editor.current, init, breakPointValue, highlightLine, openBreakPoint, language]); (0,_react_17_0_2_react.useEffect)(() => { var _a2; if (((_a2 = editor.current) == null ? void 0 : _a2.instance) && openBreakPoint) { editor.current.instance.setPosition({ lineNumber: 0, column: 0 }); } }, [highlightLine]); function onPaste() { let instance = editor.current.instance; if (instance) { const selection = instance.getSelection(); const pastePos = editor.current.pastePos || {}; const range = new monaco.Range( pastePos.startLineNumber || selection.endLineNumber, pastePos.startColumn || selection.endColumn, pastePos.endLineNumber || selection.endLineNumber, pastePos.endColumn || selection.endColumn ); setTimeout(() => { instance.executeEdits("", [{ range, text: "" }]); }, 300); } } function onSaveHandler(e) { if ((window.navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey) && e.keyCode == 83) { e.preventDefault(); onSave(); } } const autoCalcHeight = () => { if (autoHeight && editor.current.instance) { const _height = editor.current.instance.getContentHeight(); setFixedHeight(_height < height ? height : _height); } else { setFixedHeight(height); } }; function fakeClick(obj) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent( "click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null ); obj.dispatchEvent(ev); } const checkPaste2 = (event) => { const { keyCode, ctrlKey, metaKey, target, type } = event; if ((type === "paste" || (keyCode === 67 || keyCode === 86) && (metaKey || ctrlKey)) && target.nodeName === "TEXTAREA") { tipWarn(); event.preventDefault(); } return false; }; function exportRaw(name, data) { var urlObject = window.URL || window.webkitURL || window; var export_blob = new Blob([data]); var save_link = document.createElementNS( "http://www.w3.org/1999/xhtml", "a" ); save_link.href = urlObject.createObjectURL(export_blob); save_link.download = name; fakeClick(save_link); } (0,_react_17_0_2_react.useEffect)(() => { autoCalcHeight(); }, [autoCalcHeight]); (0,_react_17_0_2_react.useEffect)(() => { if (editorEl.current && !init) { __webpack_require__.e(/*! import() */ 1216).then(__webpack_require__.bind(__webpack_require__, /*! monaco-editor */ 71448)).then((mod) => { try { monaco = mod; editor.current.instance = monaco.editor.create( editorEl.current, { value, language: getLanguageByMirrorName(language), theme, requireConfig: { "vs/nls": { availableLanguages: { "*": "zh-cn" } } }, wordWrap: true, autoIndent: true, contextmenu: true, // formatOnPaste: true, formatOnType: true }, overrideServices ); const instance = editor.current.instance; let menus = actions/* MenuRegistry */.BH._menuItems; let contextMenuEntry = [...menus].find((entry) => entry[0]._debugName == "EditorContext"); let contextMenuLinks = contextMenuEntry[1]; let removableIds = ["editor.action.clipboardCopyWithSyntaxHighlightingAction", "editor.action.quickCommand", "editor.action.clipboardCopyAction", "editor.action.clipboardPasteAction", "editor.action.clipboardCutAction"]; let removeById = (list, ids) => { var _a2, _b2; let node = list._first; do { let shouldRemove = ids.includes((_b2 = (_a2 = node.element) == null ? void 0 : _a2.command) == null ? void 0 : _b2.id); if (shouldRemove) { list._remove(node); } } while (node = node.next); }; editorDidMount(instance, monaco); setTimeout(() => { autoCalcHeight(); editor.current.instance.addAction({ id: "d123123", label: "Download File", contextMenuGroupId: "9_cutcopypaste", run: () => { exportRaw(filename || "educoder.txt", instance.getValue()); } }); }, 500); editor.current.subscription = instance.onDidChangeModelContent( (event) => { if (!inputLock.current) { autoCalcHeight(); onChange(instance.getValue(), event); } else { clearTimeout(inputLockTime.current); } inputLockTime.current = setTimeout(() => { inputLock.current = false; }, 500); } ); if (!window.Monaco) monaco_suggest_config(monaco, getLanguageByMirrorName(language)); if (forbidCopy) { removeById(contextMenuLinks, removableIds); editorEl.current.classList.add("noCopyPaste"); window.removeEventListener("keydown", checkPaste2); window.removeEventListener("paste", checkPaste2); window.addEventListener("keydown", checkPaste2); window.addEventListener("paste", checkPaste2); } window.Monaco = monaco; if (onEditBlur) { instance.onDidBlurEditorWidget(() => { onEditBlur(instance.getValue()); }); } if (onFocus) { instance.onDidFocusEditorText(() => { onFocus(instance.getValue()); }); } if (forbidCopy) { try { instance.onDidPaste((event) => { const selection = instance.getSelection(); const pastePos = editor.current.pastePos || {}; const range = new monaco.Range( pastePos.startLineNumber || selection.endLineNumber, pastePos.startColumn || selection.endColumn, pastePos.endLineNumber || selection.endLineNumber, pastePos.endColumn || selection.endColumn ); instance.executeEdits("", [{ range: event.range, text: "" }]); }); } catch (e) { } } let ro = onLayout(); if (placeholder && typeof placeholder === "string") { new monaco_editor_placeholder(placeholder, instance, monaco); } setInit(true); return () => { const el = editor.current.instance; el.dispose(); const model = el.getModel(); if (model) { model.dispose(); } if (editor.current.subscription) { editor.current.subscription.dispose(); } ro.unobserve(editorEl.current); }; } catch (e) { } }); } }, []); (0,_react_17_0_2_react.useEffect)(() => { let instance = editor.current.instance; if (instance && init) { document.addEventListener("keydown", onSaveHandler, false); return () => { document.removeEventListener("keydown", onSaveHandler); }; } }, [onSave, init]); (0,_react_17_0_2_react.useEffect)(() => { let instance = editor.current.instance; if (instance && init) { let lang = getLanguageByMirrorName(language); monaco.editor.setModelLanguage(instance.getModel(), lang); } }, [language, init]); (0,_react_17_0_2_react.useEffect)(() => { let instance = editor.current.instance; if (instance && init) { monaco.editor.setTheme(theme); } }, [theme, init]); (0,_react_17_0_2_react.useEffect)(() => { let instance = editor.current.instance; optionsRef.current = options; if (instance && init) { instance.updateOptions(monaco_editor_spreadValues({}, options)); setTimeout(() => { instance.getModel().updateOptions(monaco_editor_spreadValues({}, options)); }, 200); } }, [JSON.stringify(options), init]); (0,_react_17_0_2_react.useEffect)(() => { let instance = editor.current.instance; if (instance && init) { instance.layout(); } }, [width, height, init]); const [fixedWidth, setFixedWidth] = (0,_react_17_0_2_react.useState)(processSize(width)); const [fixedHeight, setFixedHeight] = (0,_react_17_0_2_react.useState)(processSize(height)); const mergeStyle = monaco_editor_spreadProps(monaco_editor_spreadValues({}, style), { width: fixedWidth, height: fixedHeight }); return /* @__PURE__ */ _react_17_0_2_react.createElement("div", { className: "my-monaco-editor", ref: editorEl, style: mergeStyle }); }); function DiffEditor({ width = "100%", height = "100%", original, modified, language, options = {} }) { const editorEl = (0,_react_17_0_2_react.useRef)(); const [instance, setInstance] = (0,_react_17_0_2_react.useState)(null); function onLayout(instance2) { let ro; if (editorEl.current) { ro = new ResizeObserver_es/* default */.Z((entries) => { for (let entry of entries) { if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) { instance2.layout(); } } }); ro.observe(editorEl.current); } return ro; } (0,_react_17_0_2_react.useEffect)(() => { if (editorEl.current) { __webpack_require__.e(/*! import() | monaco-editor */ 1216).then(__webpack_require__.bind(__webpack_require__, /*! monaco-editor/esm/vs/editor/editor.api.js */ 2550)).then((mod) => { monaco = mod; const instance2 = monaco.editor.createDiffEditor(editorEl.current, monaco_editor_spreadProps(monaco_editor_spreadValues({ enableSplitViewResizing: false, scrollBeyondLastLine: false, roundedSelection: false, renderIndicators: false, useShadows: false, horizontal: "hidden", lineNumbers: "off", wordWrap: "off", ignoreTrimWhitespace: false, "semanticHighlighting.enabled": true, followsCaret: true, // resets the navigator state when the user selects something in the editor ignoreCharChanges: true, // jump from line to line, minimap: { enabled: false }, readOnly: true }, options), { wordWrap: true })); setInstance(instance2); let ro = onLayout(instance2); return () => { instance2.dispose(); const model = instance2.getModel(); if (model) { model.dispose(); } ro.unobserve(editorEl.current); }; }); } return () => { window.removeEventListener("keydown", checkPaste); window.removeEventListener("paste", checkPaste); }; }, []); (0,_react_17_0_2_react.useEffect)(() => { if (instance) { instance.setModel({ original: monaco.editor.createModel(original, language), modified: monaco.editor.createModel(modified, language) }); } }, [original, modified, language, instance]); const fixedWidth = processSize(width); const fixedHeight = processSize(height); const style = { width: fixedWidth, height: fixedHeight }; return /* @__PURE__ */ _react_17_0_2_react.createElement("div", { className: "my-diff-editor", ref: editorEl, style }); } /***/ }) }]);