mirror of
https://github.com/doocs/md.git
synced 2024-11-24 19:10:34 +08:00
1 line
175 KiB
Plaintext
1 line
175 KiB
Plaintext
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/App.vue?9d88","webpack:///./src/components/Loading.vue?1ecf","webpack:///src/components/Loading.vue","webpack:///./src/components/Loading.vue?f931","webpack:///./src/components/Loading.vue","webpack:///./src/view/CodemirrorEditor.vue?d302","webpack:///./src/scripts/format.js","webpack:///./src/api/fetch.js","webpack:///./src/api/file.js","webpack:///./src/components/codeMirror/header.vue?1bcb","webpack:///./src/scripts/themes/default-theme.js","webpack:///./src/scripts/util.js","webpack:///./src/scripts/converter.js","webpack:///./src/scripts/config.js","webpack:///./src/scripts/themes/default-theme-css.js","webpack:///./src/components/codeMirror/resetDialog.vue?879b","webpack:///src/components/codeMirror/resetDialog.vue","webpack:///./src/components/codeMirror/resetDialog.vue?27e1","webpack:///./src/components/codeMirror/resetDialog.vue","webpack:///src/components/codeMirror/header.vue","webpack:///./src/components/codeMirror/header.vue?0e27","webpack:///./src/components/codeMirror/header.vue","webpack:///./src/components/codeMirror/aboutDialog.vue?a259","webpack:///src/components/codeMirror/aboutDialog.vue","webpack:///./src/components/codeMirror/aboutDialog.vue?bdaa","webpack:///./src/components/codeMirror/aboutDialog.vue","webpack:///./src/components/codeMirror/insertForm.vue?7d48","webpack:///src/components/codeMirror/insertForm.vue","webpack:///./src/components/codeMirror/insertForm.vue?c4e5","webpack:///./src/components/codeMirror/insertForm.vue","webpack:///./src/scripts/closebrackets.js","webpack:///src/view/CodemirrorEditor.vue","webpack:///./src/view/CodemirrorEditor.vue?e829","webpack:///./src/view/CodemirrorEditor.vue","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/scripts/renderers/wx-renderer.js","webpack:///./src/scripts/default-content.js","webpack:///./src/store/index.js","webpack:///./src/element/index.js","webpack:///./src/main.js","webpack:///./src/components/codeMirror/header.vue?a260","webpack:///./src/scripts/google-code-prettify/prettify.js","webpack:///./src/components/codeMirror/resetDialog.vue?ecf6","webpack:///./src/view/CodemirrorEditor.vue?bcbe"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","_vm","this","_h","$createElement","_c","_self","staticRenderFns","_m","staticClass","attrs","_v","component","class","nightMode","on","onEditorRefresh","uploaded","cssChanged","$event","showBox","aboutDialogVisible","dialogFormVisible","isCoping","backLight","endCopy","directives","rawName","expression","domProps","target","composing","source","_s","output","_e","CodeMirror","extendMode","commentStart","commentEnd","newlineAfterToken","type","content","test","defineExtension","isComment","from","to","cm","curMode","innerMode","getMode","getTokenAt","state","operation","replaceRange","line","ch","setCursor","selText","getRange","startIndex","indexOf","endIndex","lastIndexOf","substr","substring","cmInstance","indentLine","outer","text","split","copyState","tabSize","getOption","out","lines","atSol","newline","stream","StringStream","eol","inner","style","token","cur","current","start","pos","string","blankLine","end","setSelection","getCursor","service","axios","baseURL","timeout","interceptors","request","use","config","method","upload","headers","error","Promise","reject","response","res","success","console","log","fileUpload","fetch","url","beforeUpload","effect","downloadEditorContent","reset","$emit","fontChanged","model","callback","$$v","selectFont","_l","font","fontFamily","label","sizeChanged","selectSize","size","desc","colorChanged","selectColor","color","hex","statusChanged","citeStatus","btnType","customStyle","copy","themeChanged","showResetConfirm","confirmReset","cancelReset","BASE","BASE_BLOCK","block","h1","h2","h3","h4","blockquote","blockquote_p","code","image","image_org","ol","ul","footnotes","figure","inline","listitem","codespan","link","wx_link","strong","table","thead","td","footnote","figcaption","setColorWithTemplate","template","custom_theme","JSON","parse","stringify","setColorWithCustomTemplate","setFontSizeWithTemplate","fontSize","setColor","default_theme","setFontSize","customCssWithTemplate","jsonString","theme","assign","css2json","css","open","close","json","lbracket","rbracket","toObject","array","ret","forEach","e","index","trim","declarations","map","filter","selectors","selector","keys","saveEditorContent","editor","getValue","localStorage","setItem","removeItem","isImageIllegal","file","solveWeChatImage","clipboardDiv","document","getElementById","images","getElementsByTagName","width","getAttribute","height","removeAttribute","solveHtml","element","html","innerHTML","juice","inlineContent","inlinePseudoElements","preserveImportant","builtinFonts","sizeOption","colorOption","form","rows","cols","DEFAULT_CSS_CONTENT","slot","staticStyle","onRedirect","$set","insertTable","defaults","pairs","closeBefore","triples","explode","Pos","conf","defineOption","val","old","Init","removeKeyMap","keyMap","closeBrackets","ensureBound","addKeyMap","Backspace","handleBackspace","Enter","handleEnter","chars","charAt","handler","handleChar","getConfig","deflt","override","getModeAt","Pass","ranges","listSelections","empty","around","charsAround","head","linesep","lineSeparator","replaceSelection","execCommand","contractSelection","sel","inverted","cmpPos","anchor","identical","opening","curType","range","next","getTokenTypeAt","prev","isWordChar","stringStartsAfter","left","right","sels","getSelections","replaceSelections","setSelections","triggerElectric","str","WxRenderer","opts","ENV_STRETCH_IMAGE","footnoteIndex","styleMapping","CODE_FONT_FAMILY","merge","base","extend","buildTheme","themeTpl","mapping","fonts","base_block","ele","getStyles","tokenName","addition","arr","dict","join","addFootnote","title","buildFootnotes","footnoteArray","x","buildAddition","setOptions","newOpts","hasFootnotes","getRenderer","status","renderer","marked","Renderer","heading","level","paragraph","replace","infoString","codeLines","numbers","lang","list","ordered","segments","href","subText","figureStyles","imgStyles","ref","em","header","body","tablecell","flags","hr","DEFAULT_CONTENT","Vue","Vuex","wxRenderer","cssEditor","currentFont","currentSize","currentColor","mutations","setHtml","setEditorValue","setValue","setCssEditorValue","setWxRendererOptions","setCiteStatus","setCurrentFont","setCurrentSize","setCurrentColor","initEditorState","getItem","initEditorEntity","fromTextArea","lineNumbers","lineWrapping","styleActiveLine","autoCloseBrackets","extraKeys","doc","prettier","format","parser","plugins","prettierMarkdown","initCssEditorEntity","matchBrackets","autofocus","totalLines","lineCount","autoFormatRange","editorRefresh","clearEditorToDefault","Store","actions","Container","Header","Upload","Tooltip","Form","FormItem","Select","Option","ColorPicker","Switch","Button","Main","Col","Row","Dialog","Loading","Message","$loading","$message","ElementUI","productionTip","store","render","h","App","$mount","PR_SHOULD_USE_CONTINUATION","T","a","charCodeAt","w","parseInt","f","toString","String","fromCharCode","match","RegExp","b","g","k","Math","max","min","sort","E","ignoreCase","q","v","global","multiline","Error","U","nodeType","className","firstChild","nextSibling","nodeName","toLowerCase","nodeValue","J","V","W","G","z","A","C","K","concat","tripleQuotedStrings","multiLineStrings","verbatimStrings","hashComments","cStyleComments","regexLiterals","types","keywords","L","parentNode","insertBefore","createTextNode","removeChild","cloneNode","appendChild","ownerDocument","createElement","setAttribute","I","D","warn","M","exec","navigator","userAgent","display","N","u","B","replaceChild","y","stack","F","H","O","P","Q","R","S","X","multilineStrings","Y","PR","createSimpleLexer","registerLangHandler","sourceDecorator","PR_ATTRIB_NAME","PR_ATTRIB_VALUE","PR_COMMENT","PR_DECLARATION","PR_KEYWORD","PR_LITERAL","PR_NOCODE","PR_PLAIN","PR_PUNCTUATION","PR_SOURCE","PR_STRING","PR_TAG","PR_TYPE","prettyPrintOne","prettyPrint","now","Infinity","previousSibling","tagName","currentStyle","defaultView","whiteSpace","getComputedStyle","getPropertyValue","linenums","setTimeout","Date","define","amd"],"mappings":"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","file":"js/app.a9ffaa84.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/md/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loading)?_c('loading'):_c('codemirror-editor')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"loading\",attrs:{\"id\":\"loading\"}},[_c('div',{staticClass:\"loading-wrapper\"},[_c('div',{staticClass:\"loading-text\"},[_vm._v(\"Loading...\")]),_c('div',{staticClass:\"loading-anim\"})])])}]\n\nexport { render, staticRenderFns }","<template>\n <div class=\"loading\" id=\"loading\">\n <div class=\"loading-wrapper\">\n <div class=\"loading-text\">Loading...</div>\n <div class=\"loading-anim\"></div>\n </div>\n </div>\n</template>\n\n<script>\nexport default {\n\n}\n</script>\n\n<style scoped>\n\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=71788ed8&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"71788ed8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\",class:{'container_night': _vm.nightMode}},[_c('el-container',[_c('el-header',{staticClass:\"editor__header\"},[_c('editor-header',{on:{\"refresh\":_vm.onEditorRefresh,\"uploaded\":_vm.uploaded,\"cssChanged\":_vm.cssChanged,\"showBox\":function($event){_vm.showBox = !_vm.showBox},\"showAboutDialog\":function($event){_vm.aboutDialogVisible = true},\"showDialogForm\":function($event){_vm.dialogFormVisible = true},\"startCopy\":function($event){_vm.isCoping = true, _vm.backLight = true},\"endCopy\":_vm.endCopy}})],1),_c('el-main',{staticClass:\"main-body\"},[_c('el-row',{staticClass:\"main-section\",attrs:{\"gutter\":10}},[_c('el-col',{attrs:{\"span\":12}},[_c('textarea',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.source),expression:\"source\"}],attrs:{\"id\":\"editor\",\"type\":\"textarea\",\"placeholder\":\"Your markdown text here.\"},domProps:{\"value\":(_vm.source)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.source=$event.target.value}}})]),_c('el-col',{staticClass:\"preview-wrapper\",class:{'preview-wrapper_night': _vm.nightMode && _vm.isCoping},attrs:{\"span\":12,\"id\":\"preview\"}},[_c('section',{class:{'output_night': _vm.nightMode && !_vm.backLight},attrs:{\"id\":\"output-wrapper\"}},[_c('div',{staticClass:\"preview\"},[_c('section',{attrs:{\"id\":\"output\"},domProps:{\"innerHTML\":_vm._s(_vm.output)}}),(_vm.nightMode && _vm.isCoping)?_c('div',{staticClass:\"loading-mask\"},[_c('div',{staticClass:\"loading__img\"}),_c('span',[_vm._v(\"正在生成\")])]):_vm._e()])])]),_c('transition',{attrs:{\"name\":\"custom-classes-transition\",\"enter-active-class\":\"animated bounceInRight\"}},[_c('el-col',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showBox),expression:\"showBox\"}],attrs:{\"id\":\"cssBox\",\"span\":12}},[_c('textarea',{attrs:{\"id\":\"cssEditor\",\"type\":\"textarea\",\"placeholder\":\"Your custom css here.\"}})])],1)],1)],1)],1),_c('about-dialog',{attrs:{\"aboutDialogVisible\":_vm.aboutDialogVisible},on:{\"close\":function($event){_vm.aboutDialogVisible = false}}}),_c('insert-form-dialog',{attrs:{\"dialogFormVisible\":_vm.dialogFormVisible},on:{\"close\":function($event){_vm.dialogFormVisible = false}}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import CodeMirror from \"codemirror/lib/codemirror\";\n(function () {\n CodeMirror.extendMode('css', {\n commentStart: '/*',\n commentEnd: '*/',\n newlineAfterToken: function (type, content) {\n return /^[;{}]$/.test(content)\n }\n })\n\n // Comment/uncomment the specified range\n CodeMirror.defineExtension('commentRange', function (isComment, from, to) {\n var cm = this; var curMode = CodeMirror.innerMode(cm.getMode(), cm.getTokenAt(from).state).mode\n cm.operation(function () {\n if (isComment) { // Comment range\n cm.replaceRange(curMode.commentEnd, to)\n cm.replaceRange(curMode.commentStart, from)\n if (from.line == to.line && from.ch == to.ch) // An empty comment inserted - put cursor inside\n { cm.setCursor(from.line, from.ch + curMode.commentStart.length) }\n } else { // Uncomment range\n var selText = cm.getRange(from, to)\n var startIndex = selText.indexOf(curMode.commentStart)\n var endIndex = selText.lastIndexOf(curMode.commentEnd)\n if (startIndex > -1 && endIndex > -1 && endIndex > startIndex) {\n // Take string till comment start\n selText = selText.substr(0, startIndex) +\n // From comment start till comment end\n selText.substring(startIndex + curMode.commentStart.length, endIndex) +\n // From comment end till string end\n selText.substr(endIndex + curMode.commentEnd.length)\n }\n cm.replaceRange(selText, from, to)\n }\n })\n })\n\n // Applies automatic mode-aware indentation to the specified range\n CodeMirror.defineExtension('autoIndentRange', function (from, to) {\n var cmInstance = this\n this.operation(function () {\n for (var i = from.line; i <= to.line; i++) {\n cmInstance.indentLine(i, 'smart')\n }\n })\n })\n\n // Applies automatic formatting to the specified range\n CodeMirror.defineExtension('autoFormatRange', function (from, to) {\n var cm = this\n var outer = cm.getMode(); var text = cm.getRange(from, to).split('\\n')\n var state = CodeMirror.copyState(outer, cm.getTokenAt(from).state)\n var tabSize = cm.getOption('tabSize')\n\n var out = ''; var lines = 0; var atSol = from.ch == 0\n function newline () {\n out += '\\n'\n atSol = true\n ++lines\n }\n\n for (var i = 0; i < text.length; ++i) {\n var stream = new CodeMirror.StringStream(text[i], tabSize)\n while (!stream.eol()) {\n var inner = CodeMirror.innerMode(outer, state)\n var style = outer.token(stream, state); var cur = stream.current()\n stream.start = stream.pos\n if (!atSol || /\\S/.test(cur)) {\n out += cur\n atSol = false\n }\n if (!atSol && inner.mode.newlineAfterToken &&\n inner.mode.newlineAfterToken(style, cur, stream.string.slice(stream.pos) || text[i + 1] || '', inner.state)) { newline() }\n }\n if (!stream.pos && outer.blankLine) outer.blankLine(state)\n if (!atSol) newline()\n }\n\n cm.operation(function () {\n cm.replaceRange(out, from, to)\n for (var cur = from.line + 1, end = from.line + lines; cur <= end; ++cur) { cm.indentLine(cur, 'smart') }\n cm.setSelection(from, cm.getCursor(false))\n })\n })\n})()\n","import axios from 'axios';\n\n// 创建axios实例\nconst service = axios.create({\n baseURL: '',\n timeout: 10 * 1000 // 请求超时时间\n});\n\nservice.interceptors.request.use(\n config => {\n if (/^(post)|(put)|(delete)$/i.test(config.method)) {\n if (config.data && config.data.upload) {\n config.headers['Content-Type'] = 'multipart/form-data';\n }\n }\n return config;\n }, error => {\n Promise.reject(error);\n }\n);\n\nservice.interceptors.response.use(res => {\n if (res.data.success) {\n return res.data;\n }\n console.log(res);\n return Promise.reject(res.data);\n}, error => Promise.reject(error));\n\nexport default service;","import fetch from './fetch';\n\n\nfunction fileUpload(data) {\n return fetch({\n url: 'https://imgkr.com/api/files/upload',\n method: 'post',\n data: data\n })\n}\n\n\nexport default {\n fileUpload\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-container',{staticClass:\"top is-dark\"},[_c('el-upload',{staticClass:\"header__item\",attrs:{\"action\":\"https://imgkr.com/api/files/upload\",\"headers\":{'Content-Type': 'multipart/form-data'},\"show-file-list\":false,\"multiple\":true,\"accept\":\".jpg,.jpeg,.png,.gif\",\"name\":\"file\",\"before-upload\":_vm.beforeUpload}},[_c('el-tooltip',{attrs:{\"effect\":_vm.effect,\"content\":\"上传图片\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-upload\",attrs:{\"size\":\"medium\"}})])],1),_c('el-tooltip',{staticClass:\"header__item\",attrs:{\"effect\":_vm.effect,\"content\":\"下载编辑框Markdown文档\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-download\",attrs:{\"size\":\"medium\"},on:{\"click\":_vm.downloadEditorContent}})]),_c('el-tooltip',{staticClass:\"header__item\",attrs:{\"effect\":_vm.effect,\"content\":\"重置页面\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-refresh\",attrs:{\"size\":\"medium\"},on:{\"click\":_vm.reset}})]),_c('el-tooltip',{staticClass:\"header__item header__item_last\",attrs:{\"effect\":_vm.effect,\"content\":\"插入表格\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-s-grid\",attrs:{\"size\":\"medium\"},on:{\"click\":function($event){return _vm.$emit('showDialogForm')}}})]),_c('el-form',{staticClass:\"ctrl\",attrs:{\"size\":\"mini\",\"inline\":true}},[_c('el-form-item',[_c('el-select',{attrs:{\"size\":\"mini\",\"placeholder\":\"选择字体\",\"clearable\":\"\"},on:{\"change\":_vm.fontChanged},model:{value:(_vm.selectFont),callback:function ($$v) {_vm.selectFont=$$v},expression:\"selectFont\"}},_vm._l((_vm.config.builtinFonts),function(font){return _c('el-option',{key:font.value,style:({fontFamily: font.value}),attrs:{\"label\":font.label,\"value\":font.value}},[_c('span',{staticClass:\"select-item-left\"},[_vm._v(_vm._s(font.label))]),_c('span',{staticClass:\"select-item-right\"},[_vm._v(\"Abc\")])])}),1)],1),_c('el-form-item',[_c('el-select',{attrs:{\"size\":\"mini\",\"placeholder\":\"选择段落字号\",\"clearable\":\"\"},on:{\"change\":_vm.sizeChanged},model:{value:(_vm.selectSize),callback:function ($$v) {_vm.selectSize=$$v},expression:\"selectSize\"}},_vm._l((_vm.config.sizeOption),function(size){return _c('el-option',{key:size.value,attrs:{\"label\":size.label,\"value\":size.value}},[_c('span',{staticClass:\"select-item-left\"},[_vm._v(_vm._s(size.label))]),_c('span',{staticClass:\"select-item-right\"},[_vm._v(_vm._s(size.desc))])])}),1)],1),_c('el-form-item',[_c('el-select',{attrs:{\"size\":\"mini\",\"placeholder\":\"选择颜色\",\"clearable\":\"\"},on:{\"change\":_vm.colorChanged},model:{value:(_vm.selectColor),callback:function ($$v) {_vm.selectColor=$$v},expression:\"selectColor\"}},_vm._l((_vm.config.colorOption),function(color){return _c('el-option',{key:color.value,attrs:{\"label\":color.label,\"value\":color.value}},[_c('span',{staticClass:\"select-item-left\"},[_vm._v(_vm._s(color.label))]),_c('span',{staticClass:\"select-item-right\"},[_vm._v(_vm._s(color.hex))])])}),1)],1),_c('el-tooltip',{attrs:{\"content\":\"自定义颜色\",\"effect\":_vm.effect,\"placement\":\"top\"}},[_c('el-color-picker',{attrs:{\"size\":\"mini\",\"show-alpha\":\"\"},on:{\"change\":_vm.colorChanged},model:{value:(_vm.selectColor),callback:function ($$v) {_vm.selectColor=$$v},expression:\"selectColor\"}})],1),_c('el-tooltip',{attrs:{\"content\":\"微信外链自动转为文末引用\",\"effect\":_vm.effect,\"placement\":\"top\"}},[_c('el-switch',{staticClass:\"header__switch\",attrs:{\"active-color\":\"#67c23a\",\"inactive-color\":\"#dcdfe6\"},on:{\"change\":_vm.statusChanged},model:{value:(_vm.citeStatus),callback:function ($$v) {_vm.citeStatus=$$v},expression:\"citeStatus\"}})],1)],1),_c('el-tooltip',{staticClass:\"item\",attrs:{\"effect\":_vm.effect,\"content\":\"自定义CSS样式\",\"placement\":\"left\"}},[_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\",\"size\":\"medium\",\"icon\":\"el-icon-setting\"},on:{\"click\":_vm.customStyle}})],1),_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\",\"size\":\"medium\"},on:{\"click\":_vm.copy}},[_vm._v(\"复制\")]),_c('el-button',{staticClass:\"about\",attrs:{\"type\":_vm.btnType,\"plain\":\"\",\"size\":\"medium\"},on:{\"click\":function($event){return _vm.$emit('showAboutDialog')}}},[_vm._v(\"关于\")]),_c('el-tooltip',{attrs:{\"content\":\"夜间模式\",\"placement\":\"bottom-start\"}},[(!_vm.nightMode)?_c('div',{staticClass:\"mode__switch\",on:{\"click\":_vm.themeChanged}}):_c('div',{staticClass:\"mode__switch mode__switch_black\",on:{\"click\":_vm.themeChanged}})]),_c('resetDialog',{attrs:{\"showResetConfirm\":_vm.showResetConfirm},on:{\"confirm\":_vm.confirmReset,\"close\":_vm.cancelReset}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export default {\n BASE: {\n 'text-align': 'left',\n 'color': '#3f3f3f',\n 'line-height': '1.75',\n },\n BASE_BLOCK: {\n 'margin': '1em 8px'\n },\n block: {\n // 一级标题样式\n h1: {\n 'font-size': '1.2em',\n 'text-align': 'center',\n 'font-weight': 'bold',\n 'display': 'table',\n 'margin': '2em auto 1em',\n 'padding': '0 1em',\n 'border-bottom': '2px solid rgba(0, 152, 116, 0.9)'\n },\n\n // 二级标题样式\n h2: {\n 'font-size': '1.2em',\n 'text-align': 'center',\n 'font-weight': 'bold',\n 'display': 'table',\n 'margin': '4em auto 2em',\n 'padding': '0 0.2em',\n 'background': 'rgba(0, 152, 116, 0.9)',\n 'color': '#fff'\n },\n\n // 三级标题样式\n h3: {\n 'font-weight': 'bold',\n 'font-size': '1.1em',\n 'margin': '2em 8px 0.75em 0',\n 'line-height': '1.2',\n 'padding-left': '8px',\n 'border-left': '3px solid rgba(0, 152, 116, 0.9)'\n },\n\n // 四级标题样式\n h4: {\n 'font-weight': 'bold',\n 'font-size': '1em',\n 'margin': '2em 8px 0.5em',\n 'color': 'rgba(66, 185, 131, 0.9)'\n },\n\n // 段落样式\n p: {\n 'margin': '1.5em 8px',\n 'letter-spacing': '0.1em'\n },\n\n // 引用样式\n blockquote: {\n 'font-style': 'normal',\n 'border-left': 'none',\n 'padding': '1em',\n 'border-radius': '4px',\n 'color': '#FEEEED',\n 'background': 'rgba(27,31,35,.05)',\n 'margin': '2em 8px'\n },\n\n blockquote_p: {\n 'letter-spacing': '0.1em',\n 'color': 'rgb(80, 80, 80)',\n 'font-family': 'PingFangSC-light, PingFangTC-light, Open Sans, Helvetica Neue, sans-serif',\n 'font-size': '1em',\n 'display': 'inline',\n },\n\n code: {\n 'font-size': '80%',\n 'overflow': 'auto',\n 'color': '#333',\n 'background': 'rgb(247, 247, 247)',\n 'border-radius': '2px',\n 'padding': '10px',\n 'line-height': '1.5',\n 'border': '1px solid rgb(236,236,236)',\n 'margin': '20px 0',\n },\n\n image: {\n 'border-radius': '4px',\n 'display': 'block',\n 'margin': '0.1em auto 0.5em',\n 'width': '100% !important',\n },\n\n image_org: {\n 'border-radius': '4px',\n 'display': 'block'\n },\n\n ol: {\n 'margin-left': '0',\n 'padding-left': '1em'\n },\n\n ul: {\n 'margin-left': '0',\n 'padding-left': '1em',\n 'list-style': 'circle'\n },\n\n footnotes: {\n 'margin': '0.5em 8px',\n 'font-size': '80%'\n },\n\n figure: {\n 'margin': '1.5em 8px',\n }\n },\n inline: {\n listitem: {\n 'text-indent': '-1em',\n 'display': 'block',\n 'margin': '0.2em 8px'\n },\n\n codespan: {\n 'font-size': '90%',\n 'color': '#d14',\n 'background': 'rgba(27,31,35,.05)',\n 'padding': '3px 5px',\n 'border-radius': '4px',\n },\n\n link: {\n 'color': '#576b95'\n },\n\n wx_link: {\n 'color': '#576b95',\n 'text-decoration': 'none',\n },\n\n // 字体加粗样式\n strong: {\n 'color': 'rgba(15, 76, 129, 0.9)',\n 'font-weight': 'bold',\n },\n\n table: {\n 'border-collapse': 'collapse',\n 'text-align': 'center',\n 'margin': '1em 8px'\n },\n\n thead: {\n 'background': 'rgba(0, 0, 0, 0.05)',\n 'font-weight': 'bold'\n },\n\n td: {\n 'border': '1px solid #dfdfdf',\n 'padding': '0.25em 0.5em'\n },\n\n footnote: {\n 'font-size': '12px'\n },\n\n figcaption: {\n 'text-align': 'center',\n 'color': '#888',\n 'font-size': '0.8em'\n }\n }\n};\n","import default_theme from \"./themes/default-theme\";\n\n\n// 设置自定义颜色\nexport function setColorWithTemplate (template) {\n return function (color) {\n let custom_theme = JSON.parse(JSON.stringify(template))\n custom_theme.block.h1['border-bottom'] = `2px solid ${color}`\n custom_theme.block.h2['background'] = color\n custom_theme.block.h3['border-left'] = `3px solid ${color}`\n custom_theme.block.h4['color'] = color\n custom_theme.inline.strong['color'] = color\n return custom_theme\n }\n}\n\nexport const setColorWithCustomTemplate = function setColorWithCustomTemplate (\n template,\n color\n) {\n let custom_theme = JSON.parse(JSON.stringify(template))\n custom_theme.block.h1['border-bottom'] = `2px solid ${color}`\n custom_theme.block.h2['background'] = color\n custom_theme.block.h3['border-left'] = `3px solid ${color}`\n custom_theme.block.h4['color'] = color\n custom_theme.inline.strong['color'] = color\n return custom_theme\n}\n\n// 设置自定义字体大小\nexport function setFontSizeWithTemplate (template) {\n return function (fontSize) {\n let custom_theme = JSON.parse(JSON.stringify(template))\n custom_theme.block.h1['font-size'] = `${fontSize * 1.14}px`\n custom_theme.block.h2['font-size'] = `${fontSize * 1.1}px`\n custom_theme.block.h3['font-size'] = `${fontSize}px`\n custom_theme.block.h4['font-size'] = `${fontSize}px`\n return custom_theme\n }\n}\n\nexport const setColor = setColorWithTemplate(default_theme)\nexport const setFontSize = setFontSizeWithTemplate(default_theme)\n\nexport function customCssWithTemplate (jsonString, color, theme) {\n let custom_theme = JSON.parse(JSON.stringify(theme))\n // block\n custom_theme.block.h1['border-bottom'] = `2px solid ${color}`\n custom_theme.block.h2['background'] = color\n custom_theme.block.h3['border-left'] = `3px solid ${color}`\n custom_theme.block.h4['color'] = color\n custom_theme.inline.strong['color'] = color\n\n custom_theme.block.h1 = Object.assign(custom_theme.block.h1, jsonString.h1)\n custom_theme.block.h2 = Object.assign(custom_theme.block.h2, jsonString.h2)\n custom_theme.block.h3 = Object.assign(custom_theme.block.h3, jsonString.h3)\n custom_theme.block.h4 = Object.assign(custom_theme.block.h4, jsonString.h4)\n custom_theme.block.p = Object.assign(custom_theme.block.p, jsonString.p)\n custom_theme.block.blockquote = Object.assign(\n custom_theme.block.blockquote,\n jsonString.blockquote\n )\n custom_theme.block.blockquote_p = Object.assign(\n custom_theme.block.blockquote_p,\n jsonString.blockquote_p\n )\n custom_theme.block.image = Object.assign(\n custom_theme.block.image,\n jsonString.image\n )\n\n // inline\n custom_theme.inline.strong = Object.assign(\n custom_theme.inline.strong,\n jsonString.strong\n )\n custom_theme.inline.codespan = Object.assign(\n custom_theme.inline.codespan,\n jsonString.codespan\n )\n custom_theme.inline.link = Object.assign(\n custom_theme.inline.link,\n jsonString.link\n )\n custom_theme.inline.wx_link = Object.assign(\n custom_theme.inline.wx_link,\n jsonString.wx_link\n )\n\n return custom_theme\n}\n\n/**\n * 将CSS形式的字符串转换为JSON\n *\n * @param {css字符串} css\n */\nexport function css2json (css) {\n // 移除CSS所有注释\n while (\n (open = css.indexOf('/*')) !== -1 &&\n (close = css.indexOf('*/')) !== -1\n ) {\n css = css.substring(0, open) + css.substring(close + 2)\n }\n\n // 初始化返回值\n let json = {}\n\n while (css.length > 0 && css.indexOf('{') !== -1 && css.indexOf('}') !== -1) {\n // 存储第一个左/右花括号的下标\n const lbracket = css.indexOf('{')\n const rbracket = css.indexOf('}')\n\n // 第一步:将声明转换为Object,如:\n // `font: 'Times New Roman' 1em; color: #ff0000; margin-top: 1em;`\n // ==>\n // `{\"font\": \"'Times New Roman' 1em\", \"color\": \"#ff0000\", \"margin-top\": \"1em\"}`\n\n // 辅助方法:将array转为object\n function toObject (array) {\n let ret = {}\n array.forEach(e => {\n const index = e.indexOf(':')\n const property = e.substring(0, index).trim()\n const value = e.substring(index + 1).trim()\n ret[property] = value\n })\n return ret\n }\n\n // 切割声明块并移除空白符,然后放入数组中\n let declarations = css\n .substring(lbracket + 1, rbracket)\n .split(';')\n .map(e => e.trim())\n .filter(e => e.length > 0) // 移除所有\"\"空值\n\n // 转为Object对象\n declarations = toObject(declarations)\n\n // 第二步:选择器处理,每个选择器会与它对应的声明相关联,如:\n // `h1, p#bar {color: red}`\n // ==>\n // {\"h1\": {color: red}, \"p#bar\": {color: red}}\n\n let selectors = css\n .substring(0, lbracket)\n // 以,切割,并移除空格:`\"h1, p#bar, span.foo\"` => [\"h1\", \"p#bar\", \"span.foo\"]\n .split(',')\n .map(selector => selector.trim())\n\n // 迭代赋值\n selectors.forEach(selector => {\n // 若不存在,则先初始化\n if (!json[selector]) json[selector] = {}\n // 赋值到JSON\n Object.keys(declarations).forEach(key => {\n json[selector][key] = declarations[key]\n })\n })\n\n // 继续下个声明块\n css = css.slice(rbracket + 1).trim()\n }\n\n // 返回JSON形式的结果串\n return json\n}\n\n\n/**\n * 将编辑器内容保存到 LocalStorage\n * @param {*} editor \n * @param {*} name \n */\nexport function saveEditorContent(editor, name) {\n const content = editor.getValue(0)\n\n if (content) {\n localStorage.setItem(name, content)\n } else {\n localStorage.removeItem(name)\n }\n}\n\nexport function isImageIllegal(file) {\n if (!/\\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(file.name)) {\n return '请上传 JPG/PNG/GIF 格式的图片';\n }\n if (file.size > 5 * 1024 * 1024) {\n return '由于公众号限制,图片大小不能超过 5.0M';\n }\n return false;\n}","import juice from 'juice'\n\nexport function solveWeChatImage() {\n const clipboardDiv = document.getElementById('output');\n const images = clipboardDiv.getElementsByTagName(\"img\");\n for (let i = 0; i < images.length; i++) {\n const image = images[i];\n const width = image.getAttribute(\"width\");\n const height = image.getAttribute(\"height\");\n image.removeAttribute(\"width\");\n image.removeAttribute(\"height\");\n image.style.width = width;\n image.style.height = height;\n }\n}\nexport function solveHtml(nightMode = false) {\n const element = document.getElementById(\"output-wrapper\");\n let html = element.innerHTML\n let res = \"\";\n res = juice.inlineContent(\n html,\n {\n inlinePseudoElements: true,\n preserveImportant: true\n }\n );\n return res;\n}","export default {\n builtinFonts: [\n {\n label: '无衬线',\n value: '-apple-system-font,BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB , Microsoft YaHei UI , Microsoft YaHei ,Arial,sans-serif'\n },\n {\n label: '衬线',\n value: \"Optima-Regular, Optima, PingFangSC-light, PingFangTC-light, 'PingFang SC', Cambria, Cochin, Georgia, Times, 'Times New Roman', serif\"\n }\n ],\n sizeOption: [\n {\n label: '12px',\n value: '12px',\n desc: '更小'\n },\n {\n label: '13px',\n value: '13px',\n desc: '稍小'\n },\n {\n label: '14px',\n value: '14px',\n desc: '推荐'\n },\n {\n label: '15px',\n value: '15px',\n desc: '稍大'\n },\n {\n label: '16px',\n value: '16px',\n desc: '更大'\n }\n ],\n colorOption: [\n {\n label: '经典蓝',\n value: 'rgba(15, 76, 129, 1)',\n hex: '最新流行'\n },\n {\n label: '翡翠绿',\n value: 'rgba(0, 152, 116, 1)',\n hex: '优雅清新'\n },\n {\n label: '活力橘',\n value: 'rgba(250, 81, 81, 1)',\n hex: '热情活泼'\n }\n ],\n form: {\n rows: 1,\n cols: 1\n }\n};","const DEFAULT_CSS_CONTENT =\n`/*\n 按Ctrl+F可格式化\n*/\n/* 一级标题样式 */\nh1 {\n}\n/* 二级标题样式 */\nh2 {\n}\n/* 三级标题样式 */\nh3 {\n}\n/* 四级标题样式 */\nh4 {\n}\n/* 图片样式 */\nimage {\n}\n/* 引用样式 */\nblockquote {\n}\n/* 引用段落样式 */\nblockquote_p {\n}\n/* 段落样式 */\np {\n}\n/* 行内代码样式 */\ncodespan {\n}\n/* 粗体样式 */\nstrong {\n}\n/* 链接样式 */\nlink {\n}\n/* 微信链接样式 */\nwx_link {\n}\n`\nexport default DEFAULT_CSS_CONTENT\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"reset__dialog\",attrs:{\"title\":\"提示\",\"visible\":_vm.showResetConfirm},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticClass:\"text\"},[_vm._v(\" 此操作将丢失本地缓存的文本和自定义样式,是否继续? \")]),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\"},on:{\"click\":function($event){return _vm.$emit('confirm')}}},[_vm._v(\"确 定\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <el-dialog title=\"提示\" class=\"reset__dialog\" :visible=\"showResetConfirm\" @close=\"$emit('close')\">\n <div class=\"text\">\n 此操作将丢失本地缓存的文本和自定义样式,是否继续?\n </div>\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button :type=\"btnType\" plain @click=\"$emit('close')\">取 消</el-button>\n <el-button :type=\"btnType\" @click=\"$emit('confirm')\" plain>确 定</el-button>\n </div>\n </el-dialog>\n</template>\n\n<script>\nimport {mapState} from 'vuex';\nexport default {\n props: {\n showResetConfirm: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n btnType() {\n return !this.nightMode ? 'success' : 'default';\n },\n ...mapState({\n nightMode: state=> state.nightMode\n })\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.reset__dialog {\n text-align: center;\n}\n.text {\n text-align: center;\n}\n.dialog-footer {\n text-align: center;\n}\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resetDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resetDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./resetDialog.vue?vue&type=template&id=7fbc8ba6&scoped=true&\"\nimport script from \"./resetDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./resetDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./resetDialog.vue?vue&type=style&index=0&id=7fbc8ba6&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7fbc8ba6\",\n null\n \n)\n\nexport default component.exports","<template>\n <el-container class=\"top is-dark\">\n <!-- 图片上传 -->\n <el-upload class=\"header__item\" action=\"https://imgkr.com/api/files/upload\"\n :headers=\"{'Content-Type': 'multipart/form-data'}\"\n :show-file-list=\"false\" :multiple=\"true\" accept=\".jpg,.jpeg,.png,.gif\" name=\"file\"\n :before-upload=\"beforeUpload\">\n <el-tooltip :effect=\"effect\" content=\"上传图片\" placement=\"bottom-start\">\n <i class=\"el-icon-upload\" size=\"medium\"></i>\n </el-tooltip>\n </el-upload>\n <!-- 下载文本文档 -->\n <el-tooltip class=\"header__item\" :effect=\"effect\" content=\"下载编辑框Markdown文档\" placement=\"bottom-start\">\n <i class=\"el-icon-download\" size=\"medium\" @click=\"downloadEditorContent\"></i>\n </el-tooltip>\n <!-- 页面重置 -->\n <el-tooltip class=\"header__item\" :effect=\"effect\" content=\"重置页面\" placement=\"bottom-start\">\n <i class=\"el-icon-refresh\" size=\"medium\" @click=\"reset\"></i>\n </el-tooltip>\n <!-- 插入表格 -->\n <el-tooltip class=\"header__item header__item_last\" :effect=\"effect\" content=\"插入表格\" placement=\"bottom-start\">\n <i class=\"el-icon-s-grid\" size=\"medium\" @click=\"$emit('showDialogForm')\"></i>\n </el-tooltip>\n <el-form size=\"mini\" class=\"ctrl\" :inline=true>\n <el-form-item>\n <el-select v-model=\"selectFont\" size=\"mini\" placeholder=\"选择字体\" clearable @change=\"fontChanged\">\n <el-option v-for=\"font in config.builtinFonts\" :style=\"{fontFamily: font.value}\" :key=\"font.value\"\n :label=\"font.label\" :value=\"font.value\">\n <span class=\"select-item-left\">{{ font.label }}</span>\n <span class=\"select-item-right\">Abc</span>\n </el-option>\n </el-select>\n </el-form-item>\n <el-form-item>\n <el-select v-model=\"selectSize\" size=\"mini\" placeholder=\"选择段落字号\" clearable @change=\"sizeChanged\">\n <el-option v-for=\"size in config.sizeOption\" :key=\"size.value\" :label=\"size.label\" :value=\"size.value\">\n <span class=\"select-item-left\">{{ size.label }}</span>\n <span class=\"select-item-right\">{{ size.desc }}</span>\n </el-option>\n </el-select>\n </el-form-item>\n <el-form-item>\n <el-select v-model=\"selectColor\" size=\"mini\" placeholder=\"选择颜色\" clearable @change=\"colorChanged\">\n <el-option v-for=\"color in config.colorOption\" :key=\"color.value\" :label=\"color.label\" :value=\"color.value\">\n <span class=\"select-item-left\">{{ color.label }}</span>\n <span class=\"select-item-right\">{{ color.hex }}</span>\n </el-option>\n </el-select>\n </el-form-item>\n <el-tooltip content=\"自定义颜色\" :effect=\"effect\" placement=\"top\">\n <el-color-picker v-model=\"selectColor\" size=\"mini\" show-alpha @change=\"colorChanged\"></el-color-picker>\n </el-tooltip>\n <el-tooltip content=\"微信外链自动转为文末引用\" :effect=\"effect\" placement=\"top\">\n <el-switch class=\"header__switch\" v-model=\"citeStatus\" active-color=\"#67c23a\" inactive-color=\"#dcdfe6\" @change=\"statusChanged\">\n </el-switch>\n </el-tooltip>\n </el-form>\n <el-tooltip class=\"item\" :effect=\"effect\" content=\"自定义CSS样式\" placement=\"left\">\n <el-button :type=\"btnType\" plain size=\"medium\" icon=\"el-icon-setting\" @click=\"customStyle\"></el-button>\n </el-tooltip>\n <el-button :type=\"btnType\" plain size=\"medium\" @click=\"copy\">复制</el-button>\n <el-button :type=\"btnType\" plain size=\"medium\" class=\"about\" @click=\"$emit('showAboutDialog')\">关于</el-button>\n <el-tooltip content=\"夜间模式\" placement=\"bottom-start\">\n <div class=\"mode__switch\" v-if=\"!nightMode\" @click=\"themeChanged\"></div>\n <div class=\"mode__switch mode__switch_black\" v-else @click=\"themeChanged\"></div>\n </el-tooltip>\n <resetDialog :showResetConfirm=\"showResetConfirm\" @confirm=\"confirmReset\" @close=\"cancelReset\"/>\n </el-container>\n</template>\n\n<script>\n\nimport {\n setColorWithCustomTemplate,\n setFontSize,\n isImageIllegal\n} from '../../scripts/util'\nimport fileApi from '../../api/file';\nimport {\n solveWeChatImage,\n solveHtml\n} from '../../scripts/converter'\nimport config from '../../scripts/config'\nimport DEFAULT_CSS_CONTENT from '../../scripts/themes/default-theme-css'\nimport resetDialog from '../codeMirror/resetDialog'\nimport {mapState, mapMutations} from 'vuex'\nexport default {\n name: 'editor-header',\n data() {\n return {\n config: config,\n citeStatus: false,\n showResetConfirm: false,\n selectFont: '',\n selectSize: '',\n selectColor: ''\n };\n },\n components: {\n resetDialog\n },\n computed: {\n effect() {\n return this.nightMode ? 'dark' : 'light'\n },\n btnType() {\n return !this.nightMode ? 'success' : 'default';\n },\n ...mapState({\n output: state=> state.output,\n editor: state=> state.editor,\n cssEditor: state=> state.cssEditor,\n currentFont: state=> state.currentFont,\n currentSize: state=> state.currentSize,\n currentColor: state=> state.currentColor,\n nightMode: state=> state.nightMode\n })\n },\n methods: {\n fontChanged(fonts) {\n this.setWxRendererOptions({\n fonts: fonts\n })\n this.setCurrentFont(fonts);\n this.$emit('refresh')\n },\n sizeChanged(size) {\n let theme = setFontSize(size.replace('px', ''))\n theme = setColorWithCustomTemplate(theme, this.currentColor)\n this.setWxRendererOptions({\n size: size,\n theme: theme\n })\n this.setCurrentSize(size);\n this.$emit('refresh')\n },\n colorChanged(color) {\n let theme = setFontSize(this.currentSize.replace('px', ''))\n theme = setColorWithCustomTemplate(theme, color)\n this.setWxRendererOptions({\n theme: theme\n })\n this.setCurrentColor(color);\n this.$emit('refresh')\n },\n statusChanged(val) {\n this.setCiteStatus(val)\n this.$emit('refresh')\n },\n // 图片上传前的处理\n beforeUpload(file) {\n const checkImageResult = isImageIllegal(file);\n\n if (checkImageResult) {\n this.$message({\n showClose: true,\n message: checkImageResult,\n type: 'error'\n });\n return false;\n }\n let fd = new FormData();\n\n fd.append('file', file);\n fileApi.fileUpload(fd).then(res => {\n this.$emit('uploaded', res)\n }).catch(err => {\n console.log(err.message)\n })\n return false;\n },\n // 复制到微信公众号\n copy() {\n this.$emit('startCopy');\n setTimeout(() => {\n let clipboardDiv = document.getElementById('output')\n solveWeChatImage()\n this.setHtml(solveHtml(this.nightMode))\n\n clipboardDiv.focus()\n window.getSelection().removeAllRanges()\n let range = document.createRange()\n\n range.setStartBefore(clipboardDiv.firstChild)\n range.setEndAfter(clipboardDiv.lastChild)\n window.getSelection().addRange(range)\n document.execCommand('copy')\n // 输出提示\n this.$notify({\n showClose: true,\n message: '已复制渲染后的文章到剪贴板,可直接到公众号后台粘贴',\n offset: 80,\n duration: 1600,\n type: 'success'\n })\n clipboardDiv.innerHTML = this.output; // 恢复现场\n this.$emit('refresh');\n this.$emit('endCopy');\n }, 350);\n },\n // 自定义CSS样式\n async customStyle () {\n this.$emit('showBox');\n this.$nextTick(() => {\n if(!this.cssEditor) {\n this.cssEditor.refresh()\n }\n })\n setTimeout(() => {\n this.cssEditor.refresh()\n },50)\n let flag = await localStorage.getItem('__css_content')\n\n if (!flag) {\n this.setCssEditorValue(DEFAULT_CSS_CONTENT)\n }\n },\n // 重置页面\n reset() {\n this.showResetConfirm = true;\n },\n confirmReset() {\n localStorage.clear()\n this.clearEditorToDefault();\n this.editor.focus()\n this.citeStatus = false;\n this.statusChanged(false);\n this.fontChanged(this.config.builtinFonts[0].value)\n this.colorChanged(this.config.colorOption[1].value)\n this.sizeChanged(this.config.sizeOption[2].value)\n this.$emit('cssChanged')\n },\n cancelReset() {\n this.showResetConfirm = false;\n this.editor.focus()\n },\n // 下载编辑器内容到本地\n downloadEditorContent () {\n let downLink = document.createElement('a')\n downLink.download = 'content.md'\n downLink.style.display = 'none'\n let blob = new Blob([this.editor.getValue(0)])\n downLink.href = URL.createObjectURL(blob)\n document.body.appendChild(downLink)\n downLink.click()\n document.body.removeChild(downLink)\n },\n ...mapMutations(['clearEditorToDefault','setCurrentColor', 'setCiteStatus', 'themeChanged',\n 'setHtml', 'setCurrentFont', 'setCurrentSize', 'setCssEditorValue', 'setWxRendererOptions'])\n },\n mounted() {\n this.selectFont = this.currentFont\n this.selectSize = this.currentSize\n this.selectColor = this.currentColor\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.editor__header {\n width: 100%;\n}\n.header__item {\n margin: 0 3px;\n}\n.header__item_last {\n margin-right: 8px;\n}\n.header__switch {\n margin-left: 8px;\n}\n.mode__switch {\n margin-left: 24px;\n width: 24px;\n height: 24px;\n background: url('../../assets/images/night.png') no-repeat;\n background-size: cover;\n transition: all .3s;\n}\n.mode__switch_black {\n background: url('../../assets/images/light.png') no-repeat;\n background-size: cover;\n}\n.top {\n margin-right: 0;\n}\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./header.vue?vue&type=template&id=7db86454&scoped=true&\"\nimport script from \"./header.vue?vue&type=script&lang=js&\"\nexport * from \"./header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./header.vue?vue&type=style&index=0&id=7db86454&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7db86454\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"about__dialog\",attrs:{\"title\":\"关于\",\"visible\":_vm.aboutDialogVisible,\"width\":\"30%\",\"center\":\"\"},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('div',{staticStyle:{\"text-align\":\"center\"}},[_c('h3',[_vm._v(\"一款高度简洁的微信 Markdown 编辑器\")])]),_c('div',{staticStyle:{\"text-align\":\"center\",\"margin-top\":\"10px\"}},[_c('p',[_vm._v(\"扫码关注我的公众号,原创技术文章第一时间推送!\")]),_c('img',{staticStyle:{\"width\":\"40%\",\"display\":\"block\",\"margin\":\"20px auto 10px\"},attrs:{\"src\":\"https://imgkr.cn-bj.ufileos.com/09f8e662-42ed-4731-a0d7-419deb74dfb6.png\"}})]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"success\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.onRedirect('https://github.com/doocs/md')}}},[_vm._v(\"GitHub 仓库\")]),_c('el-button',{attrs:{\"type\":\"success\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.onRedirect('https://gitee.com/doocs/md')}}},[_vm._v(\"Gitee 仓库\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <el-dialog title=\"关于\" class=\"about__dialog\" :visible=\"aboutDialogVisible\" @close=\"$emit('close')\" width=\"30%\" center>\n <div style=\"text-align: center;\">\n <h3>一款高度简洁的微信 Markdown 编辑器</h3>\n </div>\n <div style=\"text-align: center;margin-top:10px;\">\n <p>扫码关注我的公众号,原创技术文章第一时间推送!</p>\n <img src=\"https://imgkr.cn-bj.ufileos.com/09f8e662-42ed-4731-a0d7-419deb74dfb6.png\" style=\"width: 40%; display: block; margin: 20px auto 10px;\">\n </div>\n <span slot=\"footer\" class=\"dialog-footer\">\n <el-button type=\"success\" @click=\"onRedirect('https://github.com/doocs/md')\" plain>GitHub 仓库</el-button>\n <el-button type=\"success\" @click=\"onRedirect('https://gitee.com/doocs/md')\" plain>Gitee 仓库</el-button>\n </span>\n </el-dialog>\n</template>\n\n<script>\nexport default {\n props: {\n aboutDialogVisible: {\n type: Boolean,\n default: false\n }\n },\n methods: {\n onRedirect(url) {\n window.open(url)\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./aboutDialog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./aboutDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./aboutDialog.vue?vue&type=template&id=362063c8&scoped=true&\"\nimport script from \"./aboutDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./aboutDialog.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"362063c8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{staticClass:\"insert__dialog\",attrs:{\"title\":\"插入表格\",\"visible\":_vm.dialogFormVisible},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('el-form',{staticClass:\"insert__form\",attrs:{\"model\":_vm.config.form}},[_c('el-form-item',{attrs:{\"label\":\"行数(表头不计入行数)\"}},[_c('el-input',{model:{value:(_vm.config.form.rows),callback:function ($$v) {_vm.$set(_vm.config.form, \"rows\", $$v)},expression:\"config.form.rows\"}})],1),_c('el-form-item',{attrs:{\"label\":\"列数\"}},[_c('el-input',{model:{value:(_vm.config.form.cols),callback:function ($$v) {_vm.$set(_vm.config.form, \"cols\", $$v)},expression:\"config.form.cols\"}})],1)],1),_c('div',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\"},on:{\"click\":_vm.insertTable}},[_vm._v(\"确 定\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <el-dialog title=\"插入表格\" class=\"insert__dialog\" :visible=\"dialogFormVisible\" @close=\"$emit('close')\">\n <el-form class=\"insert__form\" :model=\"config.form\">\n <el-form-item label=\"行数(表头不计入行数)\">\n <el-input v-model=\"config.form.rows\"></el-input>\n </el-form-item>\n <el-form-item label=\"列数\">\n <el-input v-model=\"config.form.cols\"></el-input>\n </el-form-item>\n </el-form>\n <div slot=\"footer\" class=\"dialog-footer\">\n <el-button :type=\"btnType\" plain @click=\"$emit('close')\">取 消</el-button>\n <el-button :type=\"btnType\" @click=\"insertTable\" plain>确 定</el-button>\n </div>\n </el-dialog>\n</template>\n\n<script>\nimport config from '../../scripts/config'\nimport {mapState, mapMutations} from 'vuex';\nexport default {\n props: {\n dialogFormVisible: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n config: config\n }\n },\n computed: {\n btnType() {\n return !this.nightMode ? 'success' : 'default';\n },\n ...mapState({\n nightMode: state=> state.nightMode,\n editor: state=> state.editor\n })\n },\n methods: {\n // 插入表格\n insertTable() {\n const cursor = this.editor.getCursor()\n const rows = parseInt(this.config.form.rows)\n const cols = parseInt(this.config.form.cols)\n if (isNaN(rows) || isNaN(cols) || rows < 1 || cols < 1) {\n this.$message({\n showClose: true,\n message: '输入的行/列数无效,请重新输入',\n type: 'error'\n })\n return\n }\n\n let table = ''\n for (let i = 0; i < rows + 2; ++i) {\n for (let j = 0; j < cols + 1; ++j) {\n table += (j === 0 ? '|' : (i !== 1 ? ' |' : ' --- |'))\n }\n table += '\\n'\n }\n\n this.editor.replaceSelection(`\\n${table}\\n`, cursor)\n this.$emit('close')\n this.editorRefresh()\n },\n ...mapMutations(['editorRefresh'])\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n</style>","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insertForm.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insertForm.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./insertForm.vue?vue&type=template&id=0bb71b82&scoped=true&\"\nimport script from \"./insertForm.vue?vue&type=script&lang=js&\"\nexport * from \"./insertForm.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0bb71b82\",\n null\n \n)\n\nexport default component.exports","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\nimport CodeMirror from \"codemirror/lib/codemirror\";\n(function(CodeMirror) {\n var defaults = {\n pairs: \"()[]{}''\\\"\\\"\",\n closeBefore: \")]}'\\\":;>\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"));\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = { Backspace: handleBackspace, Enter: handleEnter };\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i),\n key = \"'\" + ch + \"'\";\n if (!keyMap[key]) keyMap[key] = handler(ch);\n }\n }\n ensureBound(defaults.pairs + \"`\");\n\n function handler(ch) {\n return function(cm) {\n return handleChar(cm, ch);\n };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\n \"\",\n Pos(cur.line, cur.ch - 1),\n Pos(cur.line, cur.ch + 1),\n \"+delete\"\n );\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n cm.execCommand(\"goCharLeft\");\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {\n anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))\n };\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf, \"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i],\n cur = range.head,\n curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur)) curType = \"both\";\n else if (\n triples.indexOf(ch) >= 0 &&\n cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch\n )\n curType = \"skipThree\";\n else curType = \"skip\";\n } else if (\n identical &&\n cur.ch > 1 &&\n triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch\n ) {\n if (\n cur.ch > 2 &&\n /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))\n )\n return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev =\n cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur);\n if (\n !CodeMirror.isWordChar(next) &&\n prev != ch &&\n !CodeMirror.isWordChar(prev)\n )\n curType = \"both\";\n else return CodeMirror.Pass;\n } else if (\n opening &&\n (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)\n ) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n cm.execCommand(\"goCharRight\");\n } else if (type == \"skipThree\") {\n for (var i = 0; i < 3; i++) cm.execCommand(\"goCharRight\");\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++) sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n cm.execCommand(\"goCharLeft\");\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n cm.execCommand(\"goCharRight\");\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1), Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1));\n return (\n /\\bstring/.test(token.type) &&\n token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n );\n }\n})(CodeMirror);\n","<template>\n <div class=\"container\" :class=\"{'container_night': nightMode}\">\n <el-container>\n <el-header class=\"editor__header\">\n <editor-header\n @refresh=\"onEditorRefresh\"\n @uploaded=\"uploaded\"\n @cssChanged=\"cssChanged\"\n @showBox=\"showBox = !showBox\"\n @showAboutDialog=\"aboutDialogVisible = true\"\n @showDialogForm=\"dialogFormVisible = true\"\n @startCopy=\"isCoping = true, backLight = true\"\n @endCopy=\"endCopy\"\n />\n </el-header>\n <el-main class=\"main-body\">\n <el-row :gutter=\"10\" class=\"main-section\">\n <el-col :span=\"12\">\n <textarea id=\"editor\" type=\"textarea\" placeholder=\"Your markdown text here.\" v-model=\"source\">\n </textarea>\n </el-col>\n <el-col :span=\"12\" class=\"preview-wrapper\" id=\"preview\" :class=\"{'preview-wrapper_night': nightMode && isCoping}\">\n <section id=\"output-wrapper\" :class=\"{'output_night': nightMode && !backLight}\">\n <div class=\"preview\">\n <section id=\"output\" v-html=\"output\">\n </section>\n <div class=\"loading-mask\" v-if=\"nightMode && isCoping\">\n <div class=\"loading__img\"></div>\n <span>正在生成</span>\n </div>\n </div>\n </section>\n </el-col>\n <transition name=\"custom-classes-transition\" enter-active-class=\"animated bounceInRight\">\n <el-col id=\"cssBox\" :span=\"12\" v-show=\"showBox\">\n <textarea id=\"cssEditor\" type=\"textarea\" placeholder=\"Your custom css here.\">\n </textarea>\n </el-col>\n </transition>\n </el-row>\n </el-main>\n </el-container>\n <about-dialog :aboutDialogVisible=\"aboutDialogVisible\"\n @close=\"aboutDialogVisible = false\" />\n <insert-form-dialog :dialogFormVisible=\"dialogFormVisible\"\n @close=\"dialogFormVisible = false\" />\n </div>\n</template>\n<script>\nimport CodeMirror from 'codemirror/lib/codemirror'\n\nimport 'codemirror/mode/css/css'\nimport 'codemirror/mode/markdown/markdown'\nimport 'codemirror/addon/edit/matchbrackets'\nimport 'codemirror/addon/selection/active-line'\n\nimport 'codemirror/addon/hint/show-hint.js'\nimport 'codemirror/addon/hint/css-hint.js'\nimport '../scripts/format.js'\n\nimport fileApi from '../api/file';\nimport editorHeader from '../components/codeMirror/header';\nimport aboutDialog from '../components/codeMirror/aboutDialog';\nimport insertFormDialog from '../components/codeMirror/insertForm';\nimport {\n setFontSize,\n css2json,\n customCssWithTemplate,\n saveEditorContent,\n isImageIllegal\n} from '../scripts/util'\n\nrequire('codemirror/mode/javascript/javascript')\nimport '../scripts/closebrackets'\nimport $ from 'jquery'\nrequire('../scripts/google-code-prettify/prettify.js')\nimport config from '../scripts/config'\nimport {mapState, mapMutations} from 'vuex';\nexport default {\n data() {\n return {\n config: config,\n showBox: false,\n aboutDialogVisible: false,\n dialogFormVisible: false,\n isCoping: false,\n backLight: false,\n timeout: null,\n changeTimer: null,\n source: ''\n }\n },\n components: {\n editorHeader, aboutDialog, insertFormDialog\n },\n computed: {\n ...mapState({\n wxRenderer: state=> state.wxRenderer,\n output: state=> state.output,\n editor: state=> state.editor,\n cssEditor: state=> state.cssEditor,\n currentSize: state=> state.currentSize,\n currentColor: state=> state.currentColor,\n html: state=> state.html,\n nightMode: state=> state.nightMode\n })\n },\n created() {\n this.initEditorState()\n this.$nextTick(() => {\n this.initEditor()\n this.initCssEditor()\n this.onEditorRefresh()\n })\n },\n methods: {\n initEditor() {\n this.initEditorEntity();\n this.editor.on('change', (cm, e) => {\n if (this.changeTimer) clearTimeout(this.changeTimer);\n this.changeTimer = setTimeout(() => {\n this.onEditorRefresh()\n console.log('tick');\n saveEditorContent(this.editor, '__editor_content')\n }, 300);\n });\n\n // 粘贴上传图片并插入\n this.editor.on('paste', (cm, e) => {\n if (!(e.clipboardData && e.clipboardData.items)) {\n return\n }\n for (let i = 0, len = e.clipboardData.items.length; i < len; ++i) {\n let item = e.clipboardData.items[i]\n if (item.kind === 'file') {\n const pasteFile = item.getAsFile()\n const checkImageResult = isImageIllegal(pasteFile);\n\n if (checkImageResult) {\n this.$message({\n showClose: true,\n message: checkImageResult,\n type: 'error'\n });\n return;\n }\n let data = new FormData()\n data.append('file', pasteFile)\n\n fileApi.fileUpload(data).then(res => {\n this.uploaded(res)\n }).catch(err => {\n console.log(err.message)\n })\n }\n }\n });\n },\n initCssEditor() {\n this.initCssEditorEntity();\n // 自动提示\n this.cssEditor.on('keyup', (cm, e) => {\n if ((e.keyCode >= 65 && e.keyCode <= 90) || e.keyCode === 189) {\n cm.showHint(e)\n }\n });\n this.cssEditor.on('update', (instance) => {\n this.cssChanged()\n saveEditorContent(this.cssEditor, '__css_content')\n })\n },\n cssChanged() {\n let json = css2json(this.cssEditor.getValue(0))\n let theme = setFontSize(this.currentSize.replace('px', ''))\n\n theme = customCssWithTemplate(json, this.currentColor, theme)\n this.setWxRendererOptions({\n theme: theme\n });\n this.onEditorRefresh()\n },\n onTextareaChange() {\n console.log('change');\n },\n // 图片上传结束\n uploaded(response, file, fileList) {\n if (response) {\n if (response.success) {\n // 上传成功,获取光标\n const cursor = this.editor.getCursor()\n const imageUrl = response.data\n const markdownImage = `![](${imageUrl})`\n // 将 Markdown 形式的 URL 插入编辑框光标所在位置\n this.editor.replaceSelection(`\\n${markdownImage}\\n`, cursor)\n this.$message({\n showClose: true,\n message: '图片插入成功',\n type: 'success'\n })\n this.onEditorRefresh()\n } else {\n // 上传失败\n this.$message({\n showClose: true,\n message: response.message,\n type: 'error'\n })\n }\n } else {\n this.$message({\n showClose: true,\n message: '上传图片未知异常',\n type: 'error'\n })\n }\n },\n // 左右栏同步滚动\n leftAndRightScroll() {\n $('#preview').on('scroll', function callback() {\n clearTimeout(this.timeout)\n\n let source = $(this)\n let target = $(source.is('#preview') ? 'div.CodeMirror-scroll' : '#preview')\n\n target.off('scroll')\n\n let source0 = source[0]\n let target0 = target[0]\n\n let percentage = source0.scrollTop / (source0.scrollHeight - source0.offsetHeight)\n let height = percentage * (target0.scrollHeight - target0.offsetHeight)\n target0.scrollTo(0, height)\n\n this.timeout = setTimeout(() => {\n target.on('scroll', callback)\n }, 100)\n })\n },\n onEditorRefresh() {\n this.editorRefresh();\n setTimeout(()=> PR.prettyPrint(), 0);\n },\n endCopy() {\n this.backLight = false;\n setTimeout(()=> {\n this.isCoping = false;\n }, 800);\n },\n ...mapMutations(['initEditorState', 'initEditorEntity', 'setWxRendererOptions',\n 'editorRefresh', 'initCssEditorEntity'])\n },\n mounted() {\n this.leftAndRightScroll()\n setTimeout(() => {\n PR.prettyPrint()\n }, 300);\n }\n}\n\n</script>\n<style lang=\"less\" scoped>\n@import url('../scripts/google-code-prettify/prettify.css');\n.main-body {\n padding-top: 12px;\n overflow: hidden;\n}\n.el-main {\n transition: all .3s;\n padding: 0;\n margin: 20px;\n margin-top: 0;\n}\n.container {\n transition: all .3s;\n}\n.preview {\n transition: background 0s;\n transition-delay: .2s;\n}\n.preview-wrapper_night {\n overflow-y: inherit;\n position: relative;\n left: -3px;\n .preview {\n background-color: #fff;\n }\n}\n#output-wrapper {\n position: relative;\n}\n.loading-mask {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 376px;\n height: 101%;\n padding-top: 1px;\n font-size: 15px;\n color: gray;\n background-color: #1e1e1e;\n .loading__img {\n position: absolute;\n left: 50%;\n top: 330px;\n width: 50px;\n height: 50px;\n transform: translate(-50%, -50%);\n background: url('../assets/images/favicon.png') no-repeat;\n background-size: cover;\n }\n span {\n position: absolute;\n left: 50%;\n top: 390px;\n transform: translate(-50%, -50%);\n }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CodemirrorEditor.vue?vue&type=template&id=181c3614&scoped=true&\"\nimport script from \"./CodemirrorEditor.vue?vue&type=script&lang=js&\"\nexport * from \"./CodemirrorEditor.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CodemirrorEditor.vue?vue&type=style&index=0&id=181c3614&lang=less&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"181c3614\",\n null\n \n)\n\nexport default component.exports","<template>\n <loading v-if=\"loading\" />\n <codemirror-editor v-else />\n</template>\n\n<script>\nimport Loading from './components/Loading'\nimport CodemirrorEditor from './view/CodemirrorEditor'\nexport default {\n name: 'App',\n components: {\n Loading,\n CodemirrorEditor\n },\n data() {\n return {\n loading: true\n }\n },\n mounted() {\n setTimeout(() => {\n this.loading = false\n }, 200)\n window.console &&\n window.console.log &&\n (console.log(\"Think big, train fast, learn deep. See https://github.com/yanglbme\"))\n }\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1407684e&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1407684e\",\n null\n \n)\n\nexport default component.exports","import marked from 'marked'\nconst WxRenderer = function (opts) {\n this.opts = opts\n let ENV_STRETCH_IMAGE = true\n\n let footnotes = []\n let footnoteIndex = 0\n let styleMapping = null\n\n const CODE_FONT_FAMILY = 'Menlo, Operator Mono, Consolas, Monaco, monospace'\n\n let merge = (base, extend) => Object.assign({}, base, extend)\n\n this.buildTheme = themeTpl => {\n let mapping = {}\n let base = merge(themeTpl.BASE, {\n 'font-family': this.opts.fonts,\n 'font-size': this.opts.size\n })\n let base_block = merge(base, {})\n for (let ele in themeTpl.inline) {\n if (themeTpl.inline.hasOwnProperty(ele)) {\n let style = themeTpl.inline[ele]\n if (ele === 'codespan') {\n style['font-family'] = CODE_FONT_FAMILY\n style['white-space'] = 'normal'\n }\n mapping[ele] = merge(base, style)\n }\n }\n\n for (let ele in themeTpl.block) {\n if (themeTpl.block.hasOwnProperty(ele)) {\n let style = themeTpl.block[ele]\n if (ele === 'code') {\n style['font-family'] = CODE_FONT_FAMILY\n }\n mapping[ele] = merge(base_block, style)\n }\n }\n return mapping\n }\n\n let getStyles = (tokenName, addition) => {\n let arr = []\n let dict = styleMapping[tokenName]\n if (!dict) return ''\n for (const key in dict) {\n arr.push(key + ':' + dict[key])\n }\n return `style=\"${arr.join(';') + (addition || '')}\"`\n }\n\n let addFootnote = (title, link) => {\n footnotes.push([++footnoteIndex, title, link])\n return footnoteIndex\n }\n\n this.buildFootnotes = () => {\n let footnoteArray = footnotes.map(x => {\n if (x[1] === x[2]) {\n return `<code style=\"font-size: 90%; opacity: 0.6;\">[${x[0]}]</code>: <i>${x[1]}</i><br/>`\n }\n return `<code style=\"font-size: 90%; opacity: 0.6;\">[${x[0]}]</code> ${x[1]}: <i>${x[2]}</i><br/>`\n })\n return `<h4 ${getStyles('h4')}>引用链接</h4><p ${getStyles('footnotes')}>${footnoteArray.join('\\n')}</p>`\n }\n\n this.buildAddition = () => {\n return `\n <style>\n .preview-wrapper pre::before {\n font-family: \"SourceSansPro\", \"HelveticaNeue\", Arial, sans-serif;\n position: absolute;\n top: 0;\n right: 0;\n color: #ccc;\n text-align: center;\n font-size: 0.8em;\n padding: 5px 10px 0;\n line-height: 15px;\n height: 15px;\n font-weight: 600;\n }\n </style>\n `\n }\n\n this.setOptions = newOpts => {\n this.opts = merge(this.opts, newOpts)\n }\n\n this.hasFootnotes = () => footnotes.length !== 0\n\n this.getRenderer = (status) => {\n footnotes = []\n footnoteIndex = 0\n\n styleMapping = this.buildTheme(this.opts.theme)\n let renderer = new marked.Renderer()\n\n renderer.heading = (text, level) => {\n switch (level) {\n case 1:\n return `<h1 ${getStyles('h1')}>${text}</h1>`\n case 2:\n return `<h2 ${getStyles('h2')}>${text}</h2>`\n case 3:\n return `<h3 ${getStyles('h3')}>${text}</h3>`\n default:\n return `<h4 ${getStyles('h4')}>${text}</h4>`\n }\n }\n renderer.paragraph = text => `<p ${getStyles('p')}>${text}</p>`\n\n renderer.blockquote = text => {\n text = text.replace(/<p.*?>/, `<p ${getStyles('blockquote_p')}>`)\n return `<blockquote ${getStyles('blockquote')}>${text}</blockquote>`\n }\n renderer.code = (text, infoString) => {\n text = text.replace(/</g, '<')\n text = text.replace(/>/g, '>')\n\n let lines = text.split('\\n')\n let codeLines = []\n let numbers = []\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n codeLines.push(`<code class=\"prettyprint\"><span class=\"code-snippet_outer\">${(line || '<br>')}</span></code>`)\n numbers.push('<li></li>')\n }\n let lang = infoString || ''\n\n return `\n <section class=\"code-snippet__fix code-snippet__js\">\n <ul class=\"code-snippet__line-index code-snippet__js\">${numbers.join('')}</ul>\n <pre class=\"code-snippet__js\" data-lang=\"${lang}\">\n ${codeLines.join('')}\n </pre>\n </section>\n `\n }\n renderer.codespan = (text, infoString) => `<code ${getStyles('codespan')}>${text}</code>`\n renderer.listitem = text => `<span ${getStyles('listitem')}><span style=\"margin-right: 10px;\"><%s/></span>${text}</span>`\n\n renderer.list = (text, ordered, start) => {\n text = text.replace(/<\\/*p.*?>/g, '')\n let segments = text.split(`<%s/>`)\n if (!ordered) {\n text = segments.join('•')\n return `<p ${getStyles('ul')}>${text}</p>`\n }\n text = segments[0]\n for (let i = 1; i < segments.length; i++) {\n text = text + i + '.' + segments[i]\n }\n return `<p ${getStyles('ol')}>${text}</p>`\n }\n renderer.image = (href, title, text) => {\n let subText = ''\n if (text) {\n subText = `<figcaption ${getStyles('figcaption')}>${text}</figcaption>`\n }\n let figureStyles = getStyles('figure')\n let imgStyles = getStyles(ENV_STRETCH_IMAGE ? 'image' : 'image_org')\n return `<figure ${figureStyles}><img ${imgStyles} src=\"${href}\" title=\"${title}\" alt=\"${text}\"/>${subText}</figure>`\n }\n renderer.link = (href, title, text) => {\n if (href.indexOf('https://mp.weixin.qq.com') === 0) {\n return `<a href=\"${href}\" title=\"${(title || text)}\" ${getStyles('wx_link')}>${text}</a>`\n } else if (href === text) {\n return text\n } else {\n if (status) {\n let ref = addFootnote(title || text, href)\n return `<span ${getStyles('link')}>${text}<sup>[${ref}]</sup></span>`\n } else {\n return text\n }\n }\n }\n renderer.strong = text => `<strong ${getStyles('strong')}>${text}</strong>`\n renderer.em = text => `<p ${getStyles('p', ';font-style: italic;')}>${text}</p>`\n renderer.table = (header, body) => `<section style=\"padding:0 8px;\"><table class=\"preview-table\"><thead ${getStyles('thead')}>${header}</thead><tbody>${body}</tbody></table></section>`\n // renderer.tablerow = (text) => `<tr style=\"\">${text}</tr>`;\n renderer.tablecell = (text, flags) => `<td ${getStyles('td')}>${text}</td>`\n renderer.hr = () => `<hr style=\"border-style: solid;border-width: 1px 0 0;border-color: rgba(0,0,0,0.1);-webkit-transform-origin: 0 0;-webkit-transform: scale(1, 0.5);transform-origin: 0 0;transform: scale(1, 0.5);\">`\n return renderer\n }\n}\nexport default WxRenderer\n","const DEFAULT_CONTENT =\n`# 示例文章:Google 搜索的即时自动补全功能究竟是如何“工作”的?\n> Google 搜索**自动补全功能**的强大,相信不少朋友都能感受到,它帮助我们更快地“补全”我们所要输入的搜索关键字。那么,它怎么知道我们要输入什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。\n\n## 使用自动补全\nGoogle 搜索的自动补全功能可以在 Google 搜索应用的大多数位置使用,包括 [Google](https://www.google.com/) 主页、适用于 IOS 和 Android 的 Google 应用,我们只需要在 Google 搜索框上开始键入关键字,就可以看到联想词了。\n\n![](https://imgkr.cn-bj.ufileos.com/17ed83bf-e028-4db2-9503-5a3b4e64deee.gif)\n\n在上图示例中,我们可以看到,输入关键字 \\`juej\\`,Google 搜索会联想到“掘金”、“掘金小册”、“绝句”等等,好处就是,我们无须输入完整的关键字即可轻松完成针对这些 topics 的搜索。\n\n谷歌搜索的自动补全功能对于使用移动设备的用户来说特别有用,用户可以轻松在难以键入的小屏幕上完成搜索。当然,对于移动设备用户和台式机用户而言,这都节省了大量的时间。根据 Google 官方报告,自动补全功能可以减少大约 25% 的打字,累积起来,预计每天可以节省 200 多年的打字时间。是的,每天!\n\n> 注意,本文所提到的“**联想词**”与“**预测**”,是同一个意思。\n\n## 基于“预测”而非“建议”\nGoogle 官方将自动补全功能称之为“预测”,而不是“建议”,为什么呢?其实是有充分理由的。自动补全功能是为了**帮助用户完成他们打算进行的搜索**,而不是建议用户要执行什么搜索。\n\n那么,Google 是如何确定这些“预测”的?其实,Google 会根据趋势搜索 [trends](https://trends.google.com/trends/?geo=US) 给到我们这些“预测”。简单来说,哪个热门、哪个搜索频率高,就更可能推给我们。当然,这也与我们当前所处的位置以及我们的搜索历史相关。\n\n另外,这些“预测”也会随着我们键入的关键字的变更而更改。例如,当我们把键入的关键字从 \\`juej\\` 更改为 \\`juex\\` 时,与“掘金”相关的预测会“消失”,同时,与“觉醒”、“决心”相关联的词会出现。\n\n![](https://imgkr.cn-bj.ufileos.com/5b17dc99-606d-42c1-9f86-e09e88aaa822.gif)\n\n## 为什么看不到某些联想词?\n如果我们在输入某个关键字时看不到联想词,那么表明 Google 的算法可能检测到:\n\n- 这个关键字不是热门字词;\n- 搜索的字词太新了,我们可能需要等待几天或几周才能看到联想词;\n- 这是一个侮辱性或敏感字词,这个搜索字词违反了 Google 的相关政策。更加详细的情况,可以了解 [Google 搜索自动补全政策](https://support.google.com/websearch/answer/7368877)。\n\n## 为什么会看到某些不当的联想词?\nGoogle 拥有专门设计的系统,可以自动捕获不适当的预测结果而不显示出来。然而,Google 每天需要处理数十亿次搜索,这意味着 Google 每天会显示数十亿甚至上百亿条预测。再好的系统,也可能存在缺陷,不正确的预测也可能随时会出现。\n\n我们作为 Google 搜索的用户,如果认定某条预测违反了相关的搜索自动补全政策,可以进行举报反馈,点击右下角“**举报不当的联想查询**”并勾选相关选项即可。\n\n![](https://imgkr.cn-bj.ufileos.com/6ca8185d-12c6-4550-bb4e-e49cfbf56db7.gif)\n\n## 如何实现自动补全算法?\n目前,Google 官方似乎并没有公开搜索自动补全的算法实现,但是业界在这方面已经有了不少研究。\n\n一个好的自动补全器必须是快速的,并且在用户键入下一个字符后立即更新联想词列表。**自动补全器的核心是一个函数,它接受输入的前缀,并搜索以给定前缀开头的词汇或语句列表**。通常来说,只需要返回少量的数目即可。\n\n接下来,我们先从一个简单且低效的实现开始,并在此基础上逐步构建更高效的方法。\n\n### 词汇表实现\n一个**简单粗暴的实现方式**是:顺序查找词汇表,依次检查每个词汇,看它是否以给定的前缀开头。\n\n但是,此方法需要将前缀与每个词汇进行匹配检查,若词汇量较少,这种方式可能勉强行得通。但是,如果词汇量规模较大,效率就太低了。\n\n一个**更好的实现方式是**:让词汇按字典顺序排序。借助二分搜索算法,可以快速搜索有序词汇表中的前缀。由于二分搜索的每一步都会将搜索的范围减半,因此,总的搜索时间与词汇表中单词数量的对数成正比,即时间复杂度是 \\`O(log N)\\`。二分搜索的性能很好,但有没有更好的实现呢?当然有,往下看。\n\n### 前缀树实现\n通常来说,许多词汇都以相同的前缀开头,比如 \\`need\\`、\\`nested\\` 都以 \\`ne\\` 开头,\\`seed\\`、\\`speed\\` 都以 \\`s\\` 开头。要是为每个单词分别存储公共前缀似乎很浪费。\n\n![](https://imgkr.cn-bj.ufileos.com/7cc3cf37-040a-420e-8ef9-d05e92c82cfd.png)\n\n前缀树是一种利用公共前缀来加速补全速度的数据结构。前缀树在节点树中排列一组单词,单词沿着从根节点到叶子节点的路径存储,树的层次对应于前缀的字母位置。\n\n前缀的补全是顺着前缀定义的路径来查找的。例如,在上图的前缀树中,前缀 \\`ne\\` 对应于从子节点取左边缘 \\`N\\` 和唯一边缘 \\`E\\` 的路径。然后可以通过继续遍历从 \\`E\\` 节点可以达到的所有叶节点来生成补全列表。在图中,\\`ne\\` 的补全可以是两个分支:\\`-ed\\` 和 \\`-sted\\`。如果在数中找不到由前缀定义的路径,则说明词汇表中不包含以该前缀开头的单词。\n\n### 有限状态自动机(DFA)实现\n前缀树可以有效处理公共前缀,但是,对于其他共享词部分,仍会分别存储在每个分支中。比如,后缀 \\`ed\\`、\\`ing\\`、\\`tion\\` 在英文单词中特别常见。在上一个例子中,\\`e\\`、\\`d\\` 分别存放在了每一个分支上。\n\n有没有一种方法可以更加节省存储空间呢?有的,那就是 DFA。\n\n<center>\n<img src=\"https://imgkr.cn-bj.ufileos.com/02bc143e-e1a7-4b3c-bd5d-8d6d39139f0a.png\" style=\"width: 50%;\"></center>\n\n在上面的例子中,单词 \\`need\\`、\\`nested\\`、\\`seed\\` 和 \\`speed\\` 仅由 9 个节点组成,而上一张图中的前缀树包含了 17 个节点。\n\n可以看出,最小化前缀树 DFA 可以在很大程度上减少数据结构的大小。即使词汇量很大,最小化 DFA 通常也适合在内存中存储,避免昂贵的磁盘访问是实现快速自动补全的关键。\n\n### 一些扩展\n上面介绍了如何利用合理的数据结构实现基本的自动补全功能。这些数据结构可以通过多种方式进行扩展,从而改善用户体验。\n\n通常,满足特定前缀的词汇可能很多,而用户界面上能够显示的却不多,我们更希望能显示最常搜索或者最有价值的词汇。这通常可以通过为词汇表中的每个单词增加一个代表单词值的**权重** \\`weight\\`,并且按照权重高低来排序自动补全列表。\n\n- 对于排序后的词汇表来说,在词汇表每个元素上增加 \\`weight\\` 属性并不难;\n- 对于前缀树来说,将 \\`weight\\` 存储在叶子节点中,也是很简单的一个实现;\n- 对于 \\`DFA\\` 来说,则较为复杂。因为一个叶子节点可以通过多条路径到达。一种解决方案是将权重关联到路径而不是叶子节点。\n\n目前有不少开源库都提供了这个功能,比如主流的搜索引擎框架 [Elasticsearch](https://www.elastic.co/products/elasticsearch)、[Solr](https://lucene.apache.org/solr/) 等,基于此,我们可以实现高效而强大的自动补全功能。\n\n#### 推荐阅读\n- [阿里又一个 20k+ stars 开源项目诞生,恭喜 fastjson!](https://mp.weixin.qq.com/s/RNKDCK2KoyeuMeEs6GUrow)\n- [刷掉 90% 候选人的互联网大厂海量数据面试题(附题解 + 方法总结)](https://mp.weixin.qq.com/s/rjGqxUvrEqJNlo09GrT1Dw)\n- [好用!期待已久的文本块功能究竟如何在 Java 13 中发挥作用?](https://mp.weixin.qq.com/s/kalGv5T8AZGxTnLHr2wDsA)\n- [2019 GitHub 开源贡献排行榜新鲜出炉!微软谷歌领头,阿里跻身前 12!](https://mp.weixin.qq.com/s/_q812aGD1b9QvZ2WFI0Qgw)\n\n---\n\n欢迎关注我的公众号“**Doocs开源社区**”,原创技术文章第一时间推送。\n\n<center>\n <img src=\"https://imgkr.cn-bj.ufileos.com/1092dc45-e817-4bb0-82b0-2b2b4826ccf2.gif\" style=\"width: 100px;\">\n</center>\n\n`\nexport default DEFAULT_CONTENT\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport config from '../scripts/config';\nimport WxRenderer from '../scripts/renderers/wx-renderer'\nimport marked from 'marked'\nimport prettier from 'prettier/standalone'\nimport prettierMarkdown from 'prettier/parser-markdown'\nimport CodeMirror from 'codemirror/lib/codemirror'\nimport DEFAULT_CONTENT from '../scripts/default-content'\nimport DEFAULT_CSS_CONTENT from '../scripts/themes/default-theme-css'\nimport {\n setColor\n} from '../scripts/util'\n\nVue.use(Vuex)\n\nconst state = {\n wxRenderer: null,\n output: '',\n editor: null,\n cssEditor: null,\n html: '',\n currentFont: '',\n currentSize: '',\n currentColor: '',\n citeStatus: 0,\n nightMode: false\n};\nconst mutations = {\n setHtml(state, data) {\n state.html = data;\n },\n setEditorValue(state, data) {\n state.editor.setValue(data)\n },\n setCssEditorValue(state, data) {\n state.cssEditor.setValue(data)\n },\n setWxRendererOptions(state, data) {\n state.wxRenderer.setOptions(data);\n },\n setCiteStatus(state, data) {\n state.citeStatus = data;\n localStorage.setItem('citeStatus', data)\n },\n setCurrentFont(state, data) {\n state.currentFont = data;\n localStorage.setItem('fonts', data)\n },\n setCurrentSize(state, data) {\n state.currentSize = data;\n localStorage.setItem('size', data)\n },\n setCurrentColor(state, data) {\n state.currentColor = data;\n localStorage.setItem('color', data)\n },\n themeChanged(state) {\n state.nightMode = !state.nightMode;\n },\n initEditorState(state) {\n state.currentFont = localStorage.getItem('fonts') || config.builtinFonts[0].value\n state.currentColor = localStorage.getItem('color') || config.colorOption[1].value\n state.currentSize = localStorage.getItem('size') || config.sizeOption[2].value\n state.citeStatus = localStorage.getItem('citeStatus') === 'true'\n state.wxRenderer = new WxRenderer({\n theme: setColor(state.currentColor),\n fonts: state.currentFont,\n size: state.currentSize,\n status: state.citeStatus\n })\n },\n initEditorEntity(state) {\n state.editor = CodeMirror.fromTextArea(\n document.getElementById('editor'),\n {\n value: '',\n mode: 'text/x-markdown',\n theme: 'xq-light',\n lineNumbers: false,\n lineWrapping: true,\n styleActiveLine: true,\n autoCloseBrackets: true,\n extraKeys: {\n 'Ctrl-F': function autoFormat(editor) {\n const doc = prettier.format(editor.getValue(0), {\n parser: 'markdown',\n plugins: [prettierMarkdown]\n })\n localStorage.setItem('__editor_content', doc)\n editor.setValue(doc)\n }\n }\n }\n )\n // 如果有编辑器内容被保存则读取,否则加载默认内容\n if (localStorage.getItem('__editor_content')) {\n state.editor.setValue(localStorage.getItem('__editor_content'))\n } else {\n state.editor.setValue(DEFAULT_CONTENT)\n }\n },\n initCssEditorEntity(state) {\n state.cssEditor = CodeMirror.fromTextArea(\n document.getElementById('cssEditor'),\n {\n value: '',\n mode: 'css',\n theme: 'style-mirror',\n lineNumbers: false,\n lineWrapping: true,\n matchBrackets: true,\n autofocus: true,\n extraKeys: {\n 'Ctrl-F': function autoFormat(editor) {\n const totalLines = editor.lineCount()\n\n editor.autoFormatRange({\n line: 0,\n ch: 0\n }, {\n line: totalLines\n })\n }\n }\n }\n )\n\n // 如果有编辑器内容被保存则读取,否则加载默认内容\n if (localStorage.getItem('__css_content')) {\n state.cssEditor.setValue(localStorage.getItem('__css_content'))\n } else {\n state.cssEditor.setValue(DEFAULT_CSS_CONTENT)\n }\n },\n editorRefresh(state) {\n let output = marked(state.editor.getValue(0), {\n renderer: state.wxRenderer.getRenderer(state.citeStatus)\n })\n // 去除第一行的 margin-top\n output = output.replace(/(style=\".*?)\"/, '$1;margin-top: 0\"')\n if (state.citeStatus) {\n // 引用脚注\n output += state.wxRenderer.buildFootnotes()\n // 附加的一些 style\n output += state.wxRenderer.buildAddition()\n }\n state.output = output\n },\n clearEditorToDefault(state) {\n state.editor.setValue(DEFAULT_CONTENT)\n state.cssEditor.setValue(DEFAULT_CSS_CONTENT)\n }\n}\n\nexport default new Vuex.Store({\n state,\n mutations,\n actions: {},\n modules: {}\n})\n","import Vue from 'vue'\nimport {\n Container,\n Header,\n Upload,\n Tooltip,\n Form,\n FormItem,\n Select,\n Option,\n ColorPicker,\n Switch,\n Button,\n Main,\n Col,\n Row,\n Dialog,\n Loading,\n Message\n} from 'element-ui'\n\nVue.use(Container)\nVue.use(Header)\nVue.use(Upload)\nVue.use(Tooltip)\nVue.use(Form)\nVue.use(FormItem)\nVue.use(Select)\nVue.use(Option)\nVue.use(ColorPicker)\nVue.use(Switch)\nVue.use(Button)\nVue.use(Main)\nVue.use(Col)\nVue.use(Row)\nVue.use(Dialog)\nVue.use(Loading)\nVue.component(Message.name, Message)\n\nVue.prototype.$loading = Loading.service\nVue.prototype.$message = Message\n","import Vue from 'vue'\nimport App from './App.vue'\nimport store from './store'\nimport ElementUI from 'element-ui'\nimport 'element-ui/lib/theme-chalk/index.css'\nimport './element'\nimport 'codemirror/lib/codemirror.css';\nimport \"codemirror/theme/ambiance.css\";\nimport \"codemirror/addon/hint/show-hint.css\";\nimport \"codemirror/theme/xq-light.css\";\nimport \"./assets/less/theme.less\";\nVue.use(ElementUI)\n\nVue.config.productionTip = false\n\nnew Vue({\n store,\n render: h => h(App)\n}).$mount('#app')\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&id=7db86454&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&id=7db86454&lang=less&scoped=true&\"","!function(){/*\n\n Copyright (C) 2006 Google Inc.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\n\"undefined\"!==typeof window&&(window.PR_SHOULD_USE_CONTINUATION=!0);\n(function(){function T(a){function d(e){var a=e.charCodeAt(0);if(92!==a)return a;var c=e.charAt(1);return(a=w[c])?a:\"0\"<=c&&\"7\">=c?parseInt(e.substring(1),8):\"u\"===c||\"x\"===c?parseInt(e.substring(2),16):e.charCodeAt(1)}function f(e){if(32>e)return(16>e?\"\\\\x0\":\"\\\\x\")+e.toString(16);e=String.fromCharCode(e);return\"\\\\\"===e||\"-\"===e||\"]\"===e||\"^\"===e?\"\\\\\"+e:e}function c(e){var c=e.substring(1,e.length-1).match(RegExp(\"\\\\\\\\u[0-9A-Fa-f]{4}|\\\\\\\\x[0-9A-Fa-f]{2}|\\\\\\\\[0-3][0-7]{0,2}|\\\\\\\\[0-7]{1,2}|\\\\\\\\[\\\\s\\\\S]|-|[^-\\\\\\\\]\",\"g\"));\ne=[];var a=\"^\"===c[0],b=[\"[\"];a&&b.push(\"^\");for(var a=a?1:0,g=c.length;a<g;++a){var h=c[a];if(/\\\\[bdsw]/i.test(h))b.push(h);else{var h=d(h),k;a+2<g&&\"-\"===c[a+1]?(k=d(c[a+2]),a+=2):k=h;e.push([h,k]);65>k||122<h||(65>k||90<h||e.push([Math.max(65,h)|32,Math.min(k,90)|32]),97>k||122<h||e.push([Math.max(97,h)&-33,Math.min(k,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});c=[];g=[];for(a=0;a<e.length;++a)h=e[a],h[0]<=g[1]+1?g[1]=Math.max(g[1],h[1]):c.push(g=h);for(a=0;a<c.length;++a)h=\nc[a],b.push(f(h[0])),h[1]>h[0]&&(h[1]+1>h[0]&&b.push(\"-\"),b.push(f(h[1])));b.push(\"]\");return b.join(\"\")}function m(e){for(var a=e.source.match(RegExp(\"(?:\\\\[(?:[^\\\\x5C\\\\x5D]|\\\\\\\\[\\\\s\\\\S])*\\\\]|\\\\\\\\u[A-Fa-f0-9]{4}|\\\\\\\\x[A-Fa-f0-9]{2}|\\\\\\\\[0-9]+|\\\\\\\\[^ux0-9]|\\\\(\\\\?[:!=]|[\\\\(\\\\)\\\\^]|[^\\\\x5B\\\\x5C\\\\(\\\\)\\\\^]+)\",\"g\")),b=a.length,d=[],g=0,h=0;g<b;++g){var k=a[g];\"(\"===k?++h:\"\\\\\"===k.charAt(0)&&(k=+k.substring(1))&&(k<=h?d[k]=-1:a[g]=f(k))}for(g=1;g<d.length;++g)-1===d[g]&&(d[g]=++E);for(h=g=0;g<b;++g)k=a[g],\n\"(\"===k?(++h,d[h]||(a[g]=\"(?:\")):\"\\\\\"===k.charAt(0)&&(k=+k.substring(1))&&k<=h&&(a[g]=\"\\\\\"+d[k]);for(g=0;g<b;++g)\"^\"===a[g]&&\"^\"!==a[g+1]&&(a[g]=\"\");if(e.ignoreCase&&q)for(g=0;g<b;++g)k=a[g],e=k.charAt(0),2<=k.length&&\"[\"===e?a[g]=c(k):\"\\\\\"!==e&&(a[g]=k.replace(/[a-zA-Z]/g,function(a){a=a.charCodeAt(0);return\"[\"+String.fromCharCode(a&-33,a|32)+\"]\"}));return a.join(\"\")}for(var E=0,q=!1,l=!1,n=0,b=a.length;n<b;++n){var p=a[n];if(p.ignoreCase)l=!0;else if(/[a-z]/i.test(p.source.replace(/\\\\u[0-9a-f]{4}|\\\\x[0-9a-f]{2}|\\\\[^ux]/gi,\n\"\"))){q=!0;l=!1;break}}for(var w={b:8,t:9,n:10,v:11,f:12,r:13},r=[],n=0,b=a.length;n<b;++n){p=a[n];if(p.global||p.multiline)throw Error(\"\"+p);r.push(\"(?:\"+m(p)+\")\")}return new RegExp(r.join(\"|\"),l?\"gi\":\"g\")}function U(a,d){function f(a){var b=a.nodeType;if(1==b){if(!c.test(a.className)){for(b=a.firstChild;b;b=b.nextSibling)f(b);b=a.nodeName.toLowerCase();if(\"br\"===b||\"li\"===b)m[l]=\"\\n\",q[l<<1]=E++,q[l++<<1|1]=a}}else if(3==b||4==b)b=a.nodeValue,b.length&&(b=d?b.replace(/\\r\\n?/g,\"\\n\"):b.replace(/[ \\t\\r\\n]+/g,\n\" \"),m[l]=b,q[l<<1]=E,E+=b.length,q[l++<<1|1]=a)}var c=/(?:^|\\s)nocode(?:\\s|$)/,m=[],E=0,q=[],l=0;f(a);return{a:m.join(\"\").replace(/\\n$/,\"\"),c:q}}function J(a,d,f,c,m){f&&(a={h:a,l:1,j:null,m:null,a:f,c:null,i:d,g:null},c(a),m.push.apply(m,a.g))}function V(a){for(var d=void 0,f=a.firstChild;f;f=f.nextSibling)var c=f.nodeType,d=1===c?d?a:f:3===c?W.test(f.nodeValue)?a:d:d;return d===a?void 0:d}function G(a,d){function f(a){for(var l=a.i,n=a.h,b=[l,\"pln\"],p=0,q=a.a.match(m)||[],r={},e=0,t=q.length;e<\nt;++e){var z=q[e],v=r[z],g=void 0,h;if(\"string\"===typeof v)h=!1;else{var k=c[z.charAt(0)];if(k)g=z.match(k[1]),v=k[0];else{for(h=0;h<E;++h)if(k=d[h],g=z.match(k[1])){v=k[0];break}g||(v=\"pln\")}!(h=5<=v.length&&\"lang-\"===v.substring(0,5))||g&&\"string\"===typeof g[1]||(h=!1,v=\"src\");h||(r[z]=v)}k=p;p+=z.length;if(h){h=g[1];var A=z.indexOf(h),C=A+h.length;g[2]&&(C=z.length-g[2].length,A=C-h.length);v=v.substring(5);J(n,l+k,z.substring(0,A),f,b);J(n,l+k+A,h,K(v,h),b);J(n,l+k+C,z.substring(C),f,b)}else b.push(l+\nk,v)}a.g=b}var c={},m;(function(){for(var f=a.concat(d),l=[],n={},b=0,p=f.length;b<p;++b){var w=f[b],r=w[3];if(r)for(var e=r.length;0<=--e;)c[r.charAt(e)]=w;w=w[1];r=\"\"+w;n.hasOwnProperty(r)||(l.push(w),n[r]=null)}l.push(/[\\0-\\uffff]/);m=T(l)})();var E=d.length;return f}function x(a){var d=[],f=[];a.tripleQuotedStrings?d.push([\"str\",/^(?:\\'\\'\\'(?:[^\\'\\\\]|\\\\[\\s\\S]|\\'{1,2}(?=[^\\']))*(?:\\'\\'\\'|$)|\\\"\\\"\\\"(?:[^\\\"\\\\]|\\\\[\\s\\S]|\\\"{1,2}(?=[^\\\"]))*(?:\\\"\\\"\\\"|$)|\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$))/,\nnull,\"'\\\"\"]):a.multiLineStrings?d.push([\"str\",/^(?:\\'(?:[^\\\\\\']|\\\\[\\s\\S])*(?:\\'|$)|\\\"(?:[^\\\\\\\"]|\\\\[\\s\\S])*(?:\\\"|$)|\\`(?:[^\\\\\\`]|\\\\[\\s\\S])*(?:\\`|$))/,null,\"'\\\"`\"]):d.push([\"str\",/^(?:\\'(?:[^\\\\\\'\\r\\n]|\\\\.)*(?:\\'|$)|\\\"(?:[^\\\\\\\"\\r\\n]|\\\\.)*(?:\\\"|$))/,null,\"\\\"'\"]);a.verbatimStrings&&f.push([\"str\",/^@\\\"(?:[^\\\"]|\\\"\\\")*(?:\\\"|$)/,null]);var c=a.hashComments;c&&(a.cStyleComments?(1<c?d.push([\"com\",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,\"#\"]):d.push([\"com\",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\\b|[^\\r\\n]*)/,\nnull,\"#\"]),f.push([\"str\",/^<(?:(?:(?:\\.\\.\\/)*|\\/?)(?:[\\w-]+(?:\\/[\\w-]+)+)?[\\w-]+\\.h(?:h|pp|\\+\\+)?|[a-z]\\w*)>/,null])):d.push([\"com\",/^#[^\\r\\n]*/,null,\"#\"]));a.cStyleComments&&(f.push([\"com\",/^\\/\\/[^\\r\\n]*/,null]),f.push([\"com\",/^\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,null]));if(c=a.regexLiterals){var m=(c=1<c?\"\":\"\\n\\r\")?\".\":\"[\\\\S\\\\s]\";f.push([\"lang-regex\",RegExp(\"^(?:^^\\\\.?|[+-]|[!=]=?=?|\\\\#|%=?|&&?=?|\\\\(|\\\\*=?|[+\\\\-]=|->|\\\\/=?|::?|<<?=?|>>?>?=?|,|;|\\\\?|@|\\\\[|~|{|\\\\^\\\\^?=?|\\\\|\\\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\\\s*(\"+\n(\"/(?=[^/*\"+c+\"])(?:[^/\\\\x5B\\\\x5C\"+c+\"]|\\\\x5C\"+m+\"|\\\\x5B(?:[^\\\\x5C\\\\x5D\"+c+\"]|\\\\x5C\"+m+\")*(?:\\\\x5D|$))+/\")+\")\")])}(c=a.types)&&f.push([\"typ\",c]);c=(\"\"+a.keywords).replace(/^ | $/g,\"\");c.length&&f.push([\"kwd\",new RegExp(\"^(?:\"+c.replace(/[\\s,]+/g,\"|\")+\")\\\\b\"),null]);d.push([\"pln\",/^\\s+/,null,\" \\r\\n\\t\\u00a0\"]);c=\"^.[^\\\\s\\\\w.$@'\\\"`/\\\\\\\\]*\";a.regexLiterals&&(c+=\"(?!s*/)\");f.push([\"lit\",/^@[a-z_$][a-z_$@0-9]*/i,null],[\"typ\",/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\\w+_t\\b)/,null],[\"pln\",/^[a-z_$][a-z_$@0-9]*/i,\nnull],[\"lit\",/^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*/i,null,\"0123456789\"],[\"pln\",/^\\\\[\\s\\S]?/,null],[\"pun\",new RegExp(c),null]);return G(d,f)}function L(a,d,f){function c(a){var b=a.nodeType;if(1==b&&!t.test(a.className))if(\"br\"===a.nodeName.toLowerCase())m(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)c(a);else if((3==b||4==b)&&f){var e=a.nodeValue,d=e.match(q);d&&(b=e.substring(0,d.index),a.nodeValue=b,(e=e.substring(d.index+\nd[0].length))&&a.parentNode.insertBefore(l.createTextNode(e),a.nextSibling),m(a),b||a.parentNode.removeChild(a))}}function m(a){function c(a,b){var e=b?a.cloneNode(!1):a,k=a.parentNode;if(k){var k=c(k,1),d=a.nextSibling;k.appendChild(e);for(var f=d;f;f=d)d=f.nextSibling,k.appendChild(f)}return e}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;a=c(a.nextSibling,0);for(var e;(e=a.parentNode)&&1===e.nodeType;)a=e;b.push(a)}for(var t=/(?:^|\\s)nocode(?:\\s|$)/,q=/\\r\\n?|\\n/,l=a.ownerDocument,n=l.createElement(\"li\");a.firstChild;)n.appendChild(a.firstChild);\nfor(var b=[n],p=0;p<b.length;++p)c(b[p]);d===(d|0)&&b[0].setAttribute(\"value\",d);var w=l.createElement(\"ol\");w.className=\"linenums\";d=Math.max(0,d-1|0)||0;for(var p=0,r=b.length;p<r;++p)n=b[p],n.className=\"L\"+(p+d)%10,n.firstChild||n.appendChild(l.createTextNode(\"\\u00a0\")),w.appendChild(n);a.appendChild(w)}function t(a,d){for(var f=d.length;0<=--f;){var c=d[f];I.hasOwnProperty(c)?D.console&&console.warn(\"cannot override language handler %s\",c):I[c]=a}}function K(a,d){a&&I.hasOwnProperty(a)||(a=/^\\s*</.test(d)?\n\"default-markup\":\"default-code\");return I[a]}function M(a){var d=a.j;try{var f=U(a.h,a.l),c=f.a;a.a=c;a.c=f.c;a.i=0;K(d,c)(a);var m=/\\bMSIE\\s(\\d+)/.exec(navigator.userAgent),m=m&&8>=+m[1],d=/\\n/g,t=a.a,q=t.length,f=0,l=a.c,n=l.length,c=0,b=a.g,p=b.length,w=0;b[p]=q;var r,e;for(e=r=0;e<p;)b[e]!==b[e+2]?(b[r++]=b[e++],b[r++]=b[e++]):e+=2;p=r;for(e=r=0;e<p;){for(var x=b[e],z=b[e+1],v=e+2;v+2<=p&&b[v+1]===z;)v+=2;b[r++]=x;b[r++]=z;e=v}b.length=r;var g=a.h;a=\"\";g&&(a=g.style.display,g.style.display=\"none\");\ntry{for(;c<n;){var h=l[c+2]||q,k=b[w+2]||q,v=Math.min(h,k),A=l[c+1],C;if(1!==A.nodeType&&(C=t.substring(f,v))){m&&(C=C.replace(d,\"\\r\"));A.nodeValue=C;var N=A.ownerDocument,u=N.createElement(\"span\");u.className=b[w+1];var B=A.parentNode;B.replaceChild(u,A);u.appendChild(A);f<h&&(l[c+1]=A=N.createTextNode(t.substring(v,h)),B.insertBefore(A,u.nextSibling))}f=v;f>=h&&(c+=2);f>=k&&(w+=2)}}finally{g&&(g.style.display=a)}}catch(y){D.console&&console.log(y&&y.stack||y)}}var D=\"undefined\"!==typeof window?\nwindow:{},B=[\"break,continue,do,else,for,if,return,while\"],F=[[B,\"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,restrict,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile\"],\"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof\"],H=[F,\"alignas,alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,noexcept,noreturn,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where\"],\nO=[F,\"abstract,assert,boolean,byte,extends,finally,final,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient\"],P=[F,\"abstract,add,alias,as,ascending,async,await,base,bool,by,byte,checked,decimal,delegate,descending,dynamic,event,finally,fixed,foreach,from,get,global,group,implicit,in,interface,internal,into,is,join,let,lock,null,object,out,override,orderby,params,partial,readonly,ref,remove,sbyte,sealed,select,set,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,value,var,virtual,where,yield\"],\nF=[F,\"abstract,async,await,constructor,debugger,enum,eval,export,from,function,get,import,implements,instanceof,interface,let,null,of,set,undefined,var,with,yield,Infinity,NaN\"],Q=[B,\"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None\"],R=[B,\"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END\"],\nB=[B,\"case,done,elif,esac,eval,fi,function,in,local,set,then,until\"],S=/^(DIR|FILE|array|vector|(de|priority_)?queue|(forward_)?list|stack|(const_)?(reverse_)?iterator|(unordered_)?(multi)?(set|map)|bitset|u?(int|float)\\d*)\\b/,W=/\\S/,X=x({keywords:[H,P,O,F,\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",Q,R,B],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),\nI={};t(X,[\"default-code\"]);t(G([],[[\"pln\",/^[^<?]+/],[\"dec\",/^<!\\w[^>]*(?:>|$)/],[\"com\",/^<\\!--[\\s\\S]*?(?:-\\->|$)/],[\"lang-\",/^<\\?([\\s\\S]+?)(?:\\?>|$)/],[\"lang-\",/^<%([\\s\\S]+?)(?:%>|$)/],[\"pun\",/^(?:<[%?]|[%?]>)/],[\"lang-\",/^<xmp\\b[^>]*>([\\s\\S]+?)<\\/xmp\\b[^>]*>/i],[\"lang-js\",/^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],[\"lang-css\",/^<style\\b[^>]*>([\\s\\S]*?)(<\\/style\\b[^>]*>)/i],[\"lang-in.tag\",/^(<\\/?[a-z][^<>]*>)/i]]),\"default-markup htm html mxml xhtml xml xsl\".split(\" \"));t(G([[\"pln\",/^[\\s]+/,\nnull,\" \\t\\r\\n\"],[\"atv\",/^(?:\\\"[^\\\"]*\\\"?|\\'[^\\']*\\'?)/,null,\"\\\"'\"]],[[\"tag\",/^^<\\/?[a-z](?:[\\w.:-]*\\w)?|\\/?>$/i],[\"atn\",/^(?!style[\\s=]|on)[a-z](?:[\\w:-]*\\w)?/i],[\"lang-uq.val\",/^=\\s*([^>\\'\\\"\\s]*(?:[^>\\'\\\"\\s\\/]|\\/(?=\\s)))/],[\"pun\",/^[=<>\\/]+/],[\"lang-js\",/^on\\w+\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-js\",/^on\\w+\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-js\",/^on\\w+\\s*=\\s*([^\\\"\\'>\\s]+)/i],[\"lang-css\",/^style\\s*=\\s*\\\"([^\\\"]+)\\\"/i],[\"lang-css\",/^style\\s*=\\s*\\'([^\\']+)\\'/i],[\"lang-css\",/^style\\s*=\\s*([^\\\"\\'>\\s]+)/i]]),[\"in.tag\"]);\nt(G([],[[\"atv\",/^[\\s\\S]+/]]),[\"uq.val\"]);t(x({keywords:H,hashComments:!0,cStyleComments:!0,types:S}),\"c cc cpp cxx cyc m\".split(\" \"));t(x({keywords:\"null,true,false\"}),[\"json\"]);t(x({keywords:P,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:S}),[\"cs\"]);t(x({keywords:O,cStyleComments:!0}),[\"java\"]);t(x({keywords:B,hashComments:!0,multiLineStrings:!0}),[\"bash\",\"bsh\",\"csh\",\"sh\"]);t(x({keywords:Q,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),[\"cv\",\"py\",\"python\"]);t(x({keywords:\"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END\",\nhashComments:!0,multiLineStrings:!0,regexLiterals:2}),[\"perl\",\"pl\",\"pm\"]);t(x({keywords:R,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),[\"rb\",\"ruby\"]);t(x({keywords:F,cStyleComments:!0,regexLiterals:!0}),[\"javascript\",\"js\",\"ts\",\"typescript\"]);t(x({keywords:\"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes\",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,\nregexLiterals:!0}),[\"coffee\"]);t(G([],[[\"str\",/^[\\s\\S]+/]]),[\"regex\"]);var Y=D.PR={createSimpleLexer:G,registerLangHandler:t,sourceDecorator:x,PR_ATTRIB_NAME:\"atn\",PR_ATTRIB_VALUE:\"atv\",PR_COMMENT:\"com\",PR_DECLARATION:\"dec\",PR_KEYWORD:\"kwd\",PR_LITERAL:\"lit\",PR_NOCODE:\"nocode\",PR_PLAIN:\"pln\",PR_PUNCTUATION:\"pun\",PR_SOURCE:\"src\",PR_STRING:\"str\",PR_TAG:\"tag\",PR_TYPE:\"typ\",prettyPrintOne:D.prettyPrintOne=function(a,d,f){f=f||!1;d=d||null;var c=document.createElement(\"div\");c.innerHTML=\"<pre>\"+a+\"</pre>\";\nc=c.firstChild;f&&L(c,f,!0);M({j:d,m:f,h:c,l:1,a:null,i:null,c:null,g:null});return c.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function f(){for(var c=D.PR_SHOULD_USE_CONTINUATION?b.now()+250:Infinity;p<x.length&&b.now()<c;p++){for(var d=x[p],l=g,n=d;n=n.previousSibling;){var m=n.nodeType,u=(7===m||8===m)&&n.nodeValue;if(u?!/^\\??prettify\\b/.test(u):3!==m||/\\S/.test(n.nodeValue))break;if(u){l={};u.replace(/\\b(\\w+)=([\\w:.%+-]+)/g,function(a,b,c){l[b]=c});break}}n=d.className;if((l!==g||r.test(n))&&\n!e.test(n)){m=!1;for(u=d.parentNode;u;u=u.parentNode)if(v.test(u.tagName)&&u.className&&r.test(u.className)){m=!0;break}if(!m){d.className+=\" prettyprinted\";m=l.lang;if(!m){var m=n.match(w),q;!m&&(q=V(d))&&z.test(q.tagName)&&(m=q.className.match(w));m&&(m=m[1])}if(B.test(d.tagName))u=1;else var u=d.currentStyle,y=t.defaultView,u=(u=u?u.whiteSpace:y&&y.getComputedStyle?y.getComputedStyle(d,null).getPropertyValue(\"white-space\"):0)&&\"pre\"===u.substring(0,3);y=l.linenums;(y=\"true\"===y||+y)||(y=(y=n.match(/\\blinenums\\b(?::(\\d+))?/))?\ny[1]&&y[1].length?+y[1]:!0:!1);y&&L(d,y,u);M({j:m,h:d,m:y,l:u,a:null,i:null,c:null,g:null})}}}p<x.length?D.setTimeout(f,250):\"function\"===typeof a&&a()}for(var c=d||document.body,t=c.ownerDocument||document,c=[c.getElementsByTagName(\"pre\"),c.getElementsByTagName(\"code\"),c.getElementsByTagName(\"xmp\")],x=[],q=0;q<c.length;++q)for(var l=0,n=c[q].length;l<n;++l)x.push(c[q][l]);var c=null,b=Date;b.now||(b={now:function(){return+new Date}});var p=0,w=/\\blang(?:uage)?-([\\w.]+)(?!\\S)/,r=/\\bprettyprint\\b/,\ne=/\\bprettyprinted\\b/,B=/pre|xmp/i,z=/^code$/i,v=/^(?:pre|code|xmp)$/i,g={};f()}},H=D.define;\"function\"===typeof H&&H.amd&&H(\"google-code-prettify\",[],function(){return Y})})();}()\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resetDialog.vue?vue&type=style&index=0&id=7fbc8ba6&lang=less&scoped=true&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resetDialog.vue?vue&type=style&index=0&id=7fbc8ba6&lang=less&scoped=true&\"","import mod from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=0&id=181c3614&lang=less&scoped=true&\"; export default mod; export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--10-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--10-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--10-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--10-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=0&id=181c3614&lang=less&scoped=true&\""],"sourceRoot":""} |