UNPKG

yanzi-monaco-editor

Version:

这是一个基于微软的monaco和vue封装的一个代码编辑器,浏览器可运行。主要功能有:html、javascript、css代码编辑,高亮显示,语法错误提示等,可以帮您的项目很快的拥有一个web端的代码编辑器

409 lines (403 loc) 13.9 kB
((typeof self !== 'undefined' ? self : this)["webpackJsonpyanziMonacoEditor"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpyanziMonacoEditor"] || []).push([[23],{ /***/ "e2c8": /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "conf", function() { return conf; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "language", function() { return language; }); /* harmony import */ var _fillers_monaco_editor_core_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("424e"); /*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ var EMPTY_ELEMENTS = [ 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'keygen', 'link', 'menuitem', 'meta', 'param', 'source', 'track', 'wbr' ]; var conf = { wordPattern: /(-?\d*\.\d\w*)|([^\`\~\!\@\$\^\&\*\(\)\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>\/\s]+)/g, comments: { blockComment: ['{{!--', '--}}'] }, brackets: [ ['<!--', '-->'], ['<', '>'], ['{{', '}}'], ['{', '}'], ['(', ')'] ], autoClosingPairs: [ { open: '{', close: '}' }, { open: '[', close: ']' }, { open: '(', close: ')' }, { open: '"', close: '"' }, { open: "'", close: "'" } ], surroundingPairs: [ { open: '<', close: '>' }, { open: '"', close: '"' }, { open: "'", close: "'" } ], onEnterRules: [ { beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'), afterText: /^<\/(\w[\w\d]*)\s*>$/i, action: { indentAction: _fillers_monaco_editor_core_js__WEBPACK_IMPORTED_MODULE_0__["languages"].IndentAction.IndentOutdent } }, { beforeText: new RegExp("<(?!(?:" + EMPTY_ELEMENTS.join('|') + "))(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$", 'i'), action: { indentAction: _fillers_monaco_editor_core_js__WEBPACK_IMPORTED_MODULE_0__["languages"].IndentAction.Indent } } ] }; var language = { defaultToken: '', tokenPostfix: '', // ignoreCase: true, // The main tokenizer for our languages tokenizer: { root: [ [/\{\{!--/, 'comment.block.start.handlebars', '@commentBlock'], [/\{\{!/, 'comment.start.handlebars', '@comment'], [/\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.root' }], [/<!DOCTYPE/, 'metatag.html', '@doctype'], [/<!--/, 'comment.html', '@commentHtml'], [/(<)(\w+)(\/>)/, ['delimiter.html', 'tag.html', 'delimiter.html']], [/(<)(script)/, ['delimiter.html', { token: 'tag.html', next: '@script' }]], [/(<)(style)/, ['delimiter.html', { token: 'tag.html', next: '@style' }]], [/(<)([:\w]+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]], [/(<\/)(\w+)/, ['delimiter.html', { token: 'tag.html', next: '@otherTag' }]], [/</, 'delimiter.html'], [/\{/, 'delimiter.html'], [/[^<{]+/] // text ], doctype: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.comment' } ], [/[^>]+/, 'metatag.content.html'], [/>/, 'metatag.html', '@pop'] ], comment: [ [/\}\}/, 'comment.end.handlebars', '@pop'], [/./, 'comment.content.handlebars'] ], commentBlock: [ [/--\}\}/, 'comment.block.end.handlebars', '@pop'], [/./, 'comment.content.handlebars'] ], commentHtml: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.comment' } ], [/-->/, 'comment.html', '@pop'], [/[^-]+/, 'comment.content.html'], [/./, 'comment.content.html'] ], otherTag: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.otherTag' } ], [/\/?>/, 'delimiter.html', '@pop'], [/"([^"]*)"/, 'attribute.value'], [/'([^']*)'/, 'attribute.value'], [/[\w\-]+/, 'attribute.name'], [/=/, 'delimiter'], [/[ \t\r\n]+/] // whitespace ], // -- BEGIN <script> tags handling // After <script script: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.script' } ], [/type/, 'attribute.name', '@scriptAfterType'], [/"([^"]*)"/, 'attribute.value'], [/'([^']*)'/, 'attribute.value'], [/[\w\-]+/, 'attribute.name'], [/=/, 'delimiter'], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded.text/javascript', nextEmbedded: 'text/javascript' } ], [/[ \t\r\n]+/], [ /(<\/)(script\s*)(>)/, ['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }] ] ], // After <script ... type scriptAfterType: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.scriptAfterType' } ], [/=/, 'delimiter', '@scriptAfterTypeEquals'], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded.text/javascript', nextEmbedded: 'text/javascript' } ], [/[ \t\r\n]+/], [/<\/script\s*>/, { token: '@rematch', next: '@pop' }] ], // After <script ... type = scriptAfterTypeEquals: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.scriptAfterTypeEquals' } ], [ /"([^"]*)"/, { token: 'attribute.value', switchTo: '@scriptWithCustomType.$1' } ], [ /'([^']*)'/, { token: 'attribute.value', switchTo: '@scriptWithCustomType.$1' } ], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded.text/javascript', nextEmbedded: 'text/javascript' } ], [/[ \t\r\n]+/], [/<\/script\s*>/, { token: '@rematch', next: '@pop' }] ], // After <script ... type = $S2 scriptWithCustomType: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.scriptWithCustomType.$S2' } ], [ />/, { token: 'delimiter.html', next: '@scriptEmbedded.$S2', nextEmbedded: '$S2' } ], [/"([^"]*)"/, 'attribute.value'], [/'([^']*)'/, 'attribute.value'], [/[\w\-]+/, 'attribute.name'], [/=/, 'delimiter'], [/[ \t\r\n]+/], [/<\/script\s*>/, { token: '@rematch', next: '@pop' }] ], scriptEmbedded: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInEmbeddedState.scriptEmbedded.$S2', nextEmbedded: '@pop' } ], [/<\/script/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }] ], // -- END <script> tags handling // -- BEGIN <style> tags handling // After <style style: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.style' } ], [/type/, 'attribute.name', '@styleAfterType'], [/"([^"]*)"/, 'attribute.value'], [/'([^']*)'/, 'attribute.value'], [/[\w\-]+/, 'attribute.name'], [/=/, 'delimiter'], [ />/, { token: 'delimiter.html', next: '@styleEmbedded.text/css', nextEmbedded: 'text/css' } ], [/[ \t\r\n]+/], [ /(<\/)(style\s*)(>)/, ['delimiter.html', 'tag.html', { token: 'delimiter.html', next: '@pop' }] ] ], // After <style ... type styleAfterType: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.styleAfterType' } ], [/=/, 'delimiter', '@styleAfterTypeEquals'], [ />/, { token: 'delimiter.html', next: '@styleEmbedded.text/css', nextEmbedded: 'text/css' } ], [/[ \t\r\n]+/], [/<\/style\s*>/, { token: '@rematch', next: '@pop' }] ], // After <style ... type = styleAfterTypeEquals: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.styleAfterTypeEquals' } ], [ /"([^"]*)"/, { token: 'attribute.value', switchTo: '@styleWithCustomType.$1' } ], [ /'([^']*)'/, { token: 'attribute.value', switchTo: '@styleWithCustomType.$1' } ], [ />/, { token: 'delimiter.html', next: '@styleEmbedded.text/css', nextEmbedded: 'text/css' } ], [/[ \t\r\n]+/], [/<\/style\s*>/, { token: '@rematch', next: '@pop' }] ], // After <style ... type = $S2 styleWithCustomType: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInSimpleState.styleWithCustomType.$S2' } ], [ />/, { token: 'delimiter.html', next: '@styleEmbedded.$S2', nextEmbedded: '$S2' } ], [/"([^"]*)"/, 'attribute.value'], [/'([^']*)'/, 'attribute.value'], [/[\w\-]+/, 'attribute.name'], [/=/, 'delimiter'], [/[ \t\r\n]+/], [/<\/style\s*>/, { token: '@rematch', next: '@pop' }] ], styleEmbedded: [ [ /\{\{/, { token: '@rematch', switchTo: '@handlebarsInEmbeddedState.styleEmbedded.$S2', nextEmbedded: '@pop' } ], [/<\/style/, { token: '@rematch', next: '@pop', nextEmbedded: '@pop' }] ], // -- END <style> tags handling handlebarsInSimpleState: [ [/\{\{\{?/, 'delimiter.handlebars'], [/\}\}\}?/, { token: 'delimiter.handlebars', switchTo: '@$S2.$S3' }], { include: 'handlebarsRoot' } ], handlebarsInEmbeddedState: [ [/\{\{\{?/, 'delimiter.handlebars'], [ /\}\}\}?/, { token: 'delimiter.handlebars', switchTo: '@$S2.$S3', nextEmbedded: '$S3' } ], { include: 'handlebarsRoot' } ], handlebarsRoot: [ [/"[^"]*"/, 'string.handlebars'], [/[#/][^\s}]+/, 'keyword.helper.handlebars'], [/else\b/, 'keyword.helper.handlebars'], [/[\s]+/], [/[^}]/, 'variable.parameter.handlebars'] ] } }; /***/ }) }]);