{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Loading.vue?12be","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?8b66","webpack:///./src/components/CodemirrorEditor/insertForm.vue?3032","webpack:///./src/components/Loading.vue","webpack:///./src/components/Loading.vue?140d","webpack:///./src/App.vue?aa7f","webpack:///./src/view/CodemirrorEditor.vue?0da4","webpack:///./src/components/CodemirrorEditor/header.vue?7bf4","webpack:///./src/assets/scripts/themes/default-theme.js","webpack:///./src/assets/scripts/util.js","webpack:///./src/assets/scripts/converter.js","webpack:///./src/assets/scripts/config.js","webpack:///./src/assets/scripts/themes/default-theme-css.js","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?564d","webpack:///src/components/CodemirrorEditor/resetDialog.vue","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?9ca8","webpack:///./src/components/CodemirrorEditor/resetDialog.vue","webpack:///src/components/CodemirrorEditor/header.vue","webpack:///./src/components/CodemirrorEditor/header.vue?ada2","webpack:///./src/components/CodemirrorEditor/header.vue","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?2b92","webpack:///src/components/CodemirrorEditor/aboutDialog.vue","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?d507","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue","webpack:///./src/components/CodemirrorEditor/insertForm.vue?212e","webpack:///src/components/CodemirrorEditor/insertForm.vue","webpack:///./src/components/CodemirrorEditor/insertForm.vue?240a","webpack:///./src/components/CodemirrorEditor/insertForm.vue","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?3800","webpack:///src/components/CodemirrorEditor/rightClickMenu.vue","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?d3c9","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?77e3","webpack:///src/components/CodemirrorEditor/uploadImgDialog.vue","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?b979","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue","webpack:///./src/api/fetch.js","webpack:///./src/api/config.js","webpack:///./src/assets/scripts/tokenTools.js","webpack:///./src/api/file.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/assets/scripts/renderers/wx-renderer.js","webpack:///./src/assets/scripts/default-content.js","webpack:///./src/store/index.js","webpack:///./src/plugins/element/index.js","webpack:///./src/main.js","webpack:///./src/view/CodemirrorEditor.vue?8abc","webpack:///./src/App.vue?cef0","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?2216","webpack:///./src/components/Loading.vue?f931","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?388c","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?5140","webpack:///./src/components/CodemirrorEditor/header.vue?22f9","webpack:///./src/view/CodemirrorEditor.vue?3384"],"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","component","render","_vm","this","_h","$createElement","_self","_c","_m","staticRenderFns","staticClass","attrs","_v","class","container_night","nightMode","ref","on","onEditorRefresh","cssChanged","downloadEditorContent","$event","showCssEditor","aboutDialogVisible","dialogFormVisible","dialogUploadImgVisible","isCoping","backLight","endCopy","nativeOn","preventDefault","openMenu","directives","rawName","expression","domProps","target","composing","source","output_night","_s","output","_e","beforeUpload","uploadImage","uploaded","model","callback","$$v","mouseLeft","mouseTop","onMenuEvent","closeRightClickMenu","rightClickMenuVisible","effect","$emit","showResetConfirm","fontChanged","selectFont","_l","config","font","style","fontFamily","label","sizeChanged","selectSize","size","desc","colorChanged","selectColor","color","statusChanged","citeStatus","btnType","customStyle","copy","btnContent","themeChanged","confirmReset","cancelReset","BASE","BASE_BLOCK","margin","block","h1","display","padding","h2","background","h3","h4","blockquote","blockquote_p","code","overflow","border","image","width","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","indexOf","substring","json","lbracket","rbracket","toObject","array","ret","forEach","e","index","trim","declarations","split","map","filter","selectors","selector","keys","saveEditorContent","editor","content","getValue","localStorage","setItem","removeItem","formatDoc","doc","prettier","format","parser","plugins","prettierMarkdown","formatCss","prettierCss","fixCodeWhiteSpace","preDomList","document","getElementsByClassName","pre","whiteSpace","downloadMD","downLink","createElement","download","blob","Blob","href","URL","createObjectURL","body","appendChild","click","removeChild","createTable","rows","cols","currRow","rowIdx","join","toBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","pop","onerror","error","checkImage","isValidSuffix","test","ok","msg","maxSize","isLt5M","solveWeChatImage","clipboardDiv","getElementById","images","getElementsByTagName","getAttribute","height","removeAttribute","solveHtml","element","html","innerHTML","res","juice","inlineContent","inlinePseudoElements","preserveImportant","builtinFonts","sizeOption","colorOption","codeThemeOption","form","DEFAULT_CSS_CONTENT","slot","staticStyle","onRedirect","rowNum","colNum","row","col","tableData","$set","insertTable","left","top","menuItem","item","onMouseDown","text","changeImgHost","imgHost","beforeImageUpload","formGitee","saveGiteeConfiguration","formGitHub","saveGitHubConfiguration","formAliOSS","saveAliOSSConfiguration","formTxCOS","saveTxCOSConfiguration","formQiniu","saveQiniuConfiguration","service","axios","baseURL","timeout","interceptors","request","use","method","upload","headers","response","githubConfig","username","repoList","Array","from","branch","accessTokenList","giteeConfig","utf16to8","str","out","len","charCodeAt","charAt","String","fromCharCode","base64EncodeChars","base64encode","c1","c2","c3","safe64","base64","replace","getConfig","useDefault","platform","tokenIndex","Math","floor","random","accessToken","repoIndex","repo","customConfig","getItem","repoUrl","getDir","date","Date","year","getFullYear","month","getMonth","toString","padStart","day","getDate","getDateFilename","filename","currentTimestamp","getTime","fileSuffix","uuidv4","ghFileUpload","dir","url","dateFilename","fetch","Authorization","message","location","githubResourceUrl","cdnResourceUrl","download_url","giteeUpload","access_token","encodeURI","getQiniuToken","accessKey","secretKey","putPolicy","policy","encoded","hash","CryptoJS","HmacSHA1","encodedSigned","enc","Base64","qiniuUpload","bucket","region","path","domain","token","scope","deadline","trunc","observable","qiniu","subscribe","next","console","log","err","complete","aliOSSFileUpload","accessKeyId","accessKeySecret","cdnHost","buffer","Buffer","client","OSS","put","txCOSFileUpload","secretId","cos","COS","SecretId","SecretKey","putObject","Bucket","Region","Key","Body","Location","fileUpload","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","addFootnote","title","buildFootnotes","footnoteArray","x","buildAddition","setOptions","newOpts","hasFootnotes","getRenderer","status","renderer","marked","Renderer","heading","level","paragraph","lang","codeLines","line","codeTheme","list","ordered","start","segments","subText","figureStyles","imgStyles","em","header","tablecell","flags","hr","DEFAULT_CONTENT","Vue","Vuex","state","wxRenderer","cssEditor","currentFont","currentSize","currentColor","mutations","setEditorValue","setValue","setCssEditorValue","setWxRendererOptions","setCiteStatus","setCurrentFont","setCurrentSize","setCurrentColor","setCurrentCodeTheme","setRightClickMenuVisible","initEditorState","initEditorEntity","CodeMirror","fromTextArea","lineNumbers","lineWrapping","styleActiveLine","autoCloseBrackets","extraKeys","initCssEditorEntity","matchBrackets","autofocus","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","h","App","$mount"],"mappings":"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CX4B,EAAI,MACX0T,GAAOI,OAAOC,aAAa,IAAS/T,GAAK,GAAM,IAC/C0T,GAAOI,OAAOC,aAAa,IAAS/T,GAAK,EAAK,IAC9C0T,GAAOI,OAAOC,aAAa,IAAS/T,GAAK,EAAK,MAE9C0T,GAAOI,OAAOC,aAAa,IAAS/T,GAAK,EAAK,IAC9C0T,GAAOI,OAAOC,aAAa,IAAS/T,GAAK,EAAK,KAGtD,OAAO0T,EA4CX,IAAMM,GACF,mEACsB,IAAIb,OACzB,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,EACD,IACC,GACA,GACA,EACD,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACC,GACA,GACA,GACA,GACA,GACA,GACA,EACD,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACC,GACA,GACA,GACA,GACA,GACA,EACD,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IACC,GACA,GACA,GACA,GACA,GAEE,SAASc,GAAaR,GACzB,IAAIC,EAAKtV,EAAGuV,EACRO,EAAIC,EAAIC,EACZT,EAAMF,EAAInV,OACVF,EAAI,EACJsV,EAAM,GACN,MAAOtV,EAAIuV,EAAK,CAEZ,GADAO,EAA2B,IAAtBT,EAAIG,WAAWxV,KAChBA,GAAKuV,EAAK,CACVD,GAAOM,GAAkBH,OAAOK,GAAM,GACtCR,GAAOM,GAAkBH,QAAa,EAALK,IAAa,GAC9CR,GAAO,KACP,MAGJ,GADAS,EAAKV,EAAIG,WAAWxV,K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","file":"js/app.d018d6e5.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","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!./Loading.vue?vue&type=style&index=0&id=28c1354c&lang=less&scoped=true&\"","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!./uploadImgDialog.vue?vue&type=style&index=0&id=82e7876a&lang=less&scoped=true&\"","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!./insertForm.vue?vue&type=style&index=0&id=7de51ea0&lang=less&scoped=true&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=28c1354c&scoped=true&\"\nimport script from \"./Loading.vue?vue&type=script&lang=js&\"\nexport * from \"./Loading.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Loading.vue?vue&type=style&index=0&id=28c1354c&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 \"28c1354c\",\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 _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-anim\"}),_c('div',{staticClass:\"loading-text\"},[_vm._v(\"致力于让 Markdown 编辑更简单\")])])])}]\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.loading)?_c('transition',{attrs:{\"name\":\"fade\"}},[_c('loading')],1):_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 _c('div',{staticClass:\"container\",class:{ container_night: _vm.nightMode }},[_c('el-container',[_c('el-header',{staticClass:\"editor__header\"},[_c('editor-header',{ref:\"header\",on:{\"refresh\":_vm.onEditorRefresh,\"cssChanged\":_vm.cssChanged,\"download\":_vm.downloadEditorContent,\"showCssEditor\":function($event){_vm.showCssEditor = !_vm.showCssEditor},\"show-about-dialog\":function($event){_vm.aboutDialogVisible = true},\"show-dialog-form\":function($event){_vm.dialogFormVisible = true},\"show-dialog-upload-img\":function($event){_vm.dialogUploadImgVisible = 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\"},[_c('el-col',{attrs:{\"span\":12},nativeOn:{\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu($event)}}},[_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',{ref:\"preview\",staticClass:\"preview-wrapper\",class:{\n 'preview-wrapper_night': _vm.nightMode && _vm.isCoping,\n },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\":\"bounceInRight\"}},[_c('el-col',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showCssEditor),expression:\"showCssEditor\"}],attrs:{\"id\":\"cssBox\",\"span\":12}},[_c('textarea',{attrs:{\"id\":\"cssEditor\",\"type\":\"textarea\",\"placeholder\":\"Your custom css here.\"}})])],1)],1)],1)],1),_c('upload-img-dialog',{on:{\"close\":function($event){_vm.dialogUploadImgVisible = false},\"beforeUpload\":_vm.beforeUpload,\"uploadImage\":_vm.uploadImage,\"uploaded\":_vm.uploaded},model:{value:(_vm.dialogUploadImgVisible),callback:function ($$v) {_vm.dialogUploadImgVisible=$$v},expression:\"dialogUploadImgVisible\"}}),_c('about-dialog',{model:{value:(_vm.aboutDialogVisible),callback:function ($$v) {_vm.aboutDialogVisible=$$v},expression:\"aboutDialogVisible\"}}),_c('insert-form-dialog',{model:{value:(_vm.dialogFormVisible),callback:function ($$v) {_vm.dialogFormVisible=$$v},expression:\"dialogFormVisible\"}}),_c('right-click-menu',{attrs:{\"left\":_vm.mouseLeft,\"top\":_vm.mouseTop},on:{\"menuTick\":_vm.onMenuEvent,\"closeMenu\":_vm.closeRightClickMenu},model:{value:(_vm.rightClickMenuVisible),callback:function ($$v) {_vm.rightClickMenuVisible=$$v},expression:\"rightClickMenuVisible\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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-tooltip',{attrs:{\"effect\":_vm.effect,\"content\":\"上传图片\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-upload\",attrs:{\"size\":\"medium\"},on:{\"click\":function($event){return _vm.$emit('show-dialog-upload-img')}}})]),_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\":function($event){return _vm.$emit('download')}}})]),_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\":function($event){_vm.showResetConfirm = true}}})]),_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('show-dialog-form')}}})]),_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.desc))])])}),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\",\"placement\":\"bottom-start\"},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('show-about-dialog')}}},[_vm._v(\"关于\")]),_c('el-tooltip',{attrs:{\"content\":_vm.btnContent,\"effect\":_vm.effect,\"placement\":\"bottom-start\"}},[(_vm.nightMode)?_c('div',{staticClass:\"mode__switch mode__switch_black\",on:{\"click\":_vm.themeChanged}}):_c('div',{staticClass:\"mode__switch\",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-size\": \"1em\",\n display: \"block\",\n },\n\n code: {\n \"font-size\": \"80%\",\n overflow: \"auto\",\n color: \"#333\",\n \"white-space\": \"pre\",\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 \"white-space\": \"pre\",\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\";\nimport prettier from \"prettier/standalone\";\nimport prettierMarkdown from \"prettier/parser-markdown\";\nimport prettierCss from \"prettier/parser-postcss\";\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 let open, close;\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 (\n css.length > 0 &&\n css.indexOf(\"{\") !== -1 &&\n css.indexOf(\"}\") !== -1\n ) {\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 * 将编辑器内容保存到 LocalStorage\n * @param {*} editor\n * @param {*} name\n */\nexport function saveEditorContent(editor, name) {\n const content = editor.getValue(0);\n if (content) {\n localStorage.setItem(name, content);\n } else {\n localStorage.removeItem(name);\n }\n}\n\n/**\n * 格式化文档\n * @param {文档内容} content\n */\nexport function formatDoc(content) {\n const doc = prettier.format(content, {\n parser: \"markdown\",\n plugins: [prettierMarkdown],\n });\n return doc;\n}\n\n/**\n * 格式化css\n * @param {css内容}} content\n */\nexport function formatCss(content) {\n const doc = prettier.format(content, {\n parser: \"css\",\n plugins: [prettierCss],\n });\n return doc;\n}\n\nexport function fixCodeWhiteSpace(value = \"pre\") {\n const preDomList = document.getElementsByClassName(\"code__pre\");\n if (preDomList.length > 0) {\n preDomList.forEach((pre) => {\n pre.style.whiteSpace = value;\n });\n }\n}\n\n/**\n * 下载原始 Markdown 文档\n * @param {文档内容} doc\n */\nexport function downloadMD(doc) {\n let downLink = document.createElement(\"a\");\n\n downLink.download = \"content.md\";\n downLink.style.display = \"none\";\n let blob = new Blob([doc]);\n\n downLink.href = URL.createObjectURL(blob);\n document.body.appendChild(downLink);\n downLink.click();\n document.body.removeChild(downLink);\n}\n\n/**\n * 生成列表字符串\n * @param {*} data 对应内容集合\n * @param {*} rows 行\n * @param {*} cols 列\n */\nexport function createTable({ data, rows, cols }) {\n let table = \"\";\n let currRow = [];\n for (let i = 0; i < rows + 2; ++i) {\n table += \"|\\t\";\n currRow = [];\n for (let j = 0; j < cols; ++j) {\n const rowIdx = i > 1 ? i - 1 : i;\n i === 1\n ? currRow.push(\"---\\t\")\n : currRow.push(data[`k_${rowIdx}_${j}`] || \"\");\n }\n table += currRow.join(\"\\t|\\t\");\n table += \"\\t|\\n\";\n }\n\n return table;\n}\n\nexport const toBase64 = (file) =>\n new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result.split(\",\").pop());\n reader.onerror = (error) => reject(error);\n });\n\nexport function checkImage(file) {\n // check filename suffix\n const isValidSuffix = /\\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(file.name);\n if (!isValidSuffix) {\n return {\n ok: false,\n msg: \"请上传 JPG/PNG/GIF 格式的图片\",\n };\n }\n\n // check file size\n const maxSize = 5;\n const isLt5M = file.size / 1024 / 1024 <= maxSize;\n if (!isLt5M) {\n return {\n ok: false,\n msg: `由于公众号限制,图片大小不能超过 ${maxSize}M`,\n };\n }\n return { ok: true };\n}\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() {\n const element = document.getElementById(\"output-wrapper\");\n let html = element.innerHTML;\n let res = \"\";\n res = juice.inlineContent(html, {\n inlinePseudoElements: true,\n preserveImportant: true,\n });\n return res;\n}\n","export default {\n builtinFonts: [\n {\n label: \"无衬线\",\n value:\n \"-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:\n \"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 desc: \"最新流行\",\n },\n {\n label: \"翡翠绿\",\n value: \"rgba(0, 152, 116, 1)\",\n desc: \"优雅清新\",\n },\n {\n label: \"活力橘\",\n value: \"rgba(250, 81, 81, 1)\",\n desc: \"热情活泼\",\n },\n ],\n codeThemeOption: [\n {\n label: \"微信\",\n value: \"wechat\",\n desc: \"默认样式\",\n },\n {\n label: \"GitHub\",\n value: \"github\",\n desc: \"精简风格\",\n },\n ],\n form: {\n rows: 1,\n cols: 1,\n },\n};\n","const DEFAULT_CSS_CONTENT = `/*\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 }","\n\n\n\n\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!./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=e7287bec&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=e7287bec&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 \"e7287bec\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\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!./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=6d46d022&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=6d46d022&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 \"6d46d022\",\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.value,\"width\":\"30%\",\"center\":\"\"},on:{\"close\":function($event){return _vm.$emit('input', false)}}},[_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://gitee.com/yanglbme/resource/raw/master/doocs-md/qrcode.png\"}})]),_c('span',{staticClass:\"dialog-footer\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.onRedirect('https://github.com/doocs/md')}}},[_vm._v(\"GitHub 仓库\")]),_c('el-button',{attrs:{\"type\":\"primary\",\"plain\":\"\"},on:{\"click\":function($event){return _vm.onRedirect('https://gitee.com/doocs/md')}}},[_vm._v(\"Gitee 仓库\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./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=224778f2&scoped=true&\"\nimport script from \"./aboutDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./aboutDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./aboutDialog.vue?vue&type=style&index=0&id=224778f2&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 \"224778f2\",\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.value,\"border\":\"\"},on:{\"close\":function($event){return _vm.$emit('input', false)}}},[_c('el-row',{staticClass:\"tb-options\",attrs:{\"type\":\"flex\",\"align\":\"middle\",\"gutter\":10}},[_c('el-col',[_vm._v(\" 行数: \"),_c('el-input-number',{attrs:{\"controls-position\":\"right\",\"min\":1,\"max\":100,\"size\":\"small\"},model:{value:(_vm.rowNum),callback:function ($$v) {_vm.rowNum=$$v},expression:\"rowNum\"}})],1),_c('el-col',[_vm._v(\" 列数: \"),_c('el-input-number',{attrs:{\"controls-position\":\"right\",\"min\":1,\"max\":100,\"size\":\"small\"},model:{value:(_vm.colNum),callback:function ($$v) {_vm.colNum=$$v},expression:\"colNum\"}})],1)],1),_c('table',{staticClass:\"input-table\",staticStyle:{\"border-collapse\":\"collapse\"}},_vm._l((_vm.rowNum + 1),function(row){return _c('tr',{key:row,class:{ 'head-style': row === 1 }},_vm._l((_vm.colNum),function(col){return _c('td',{key:col},[_c('el-input',{attrs:{\"align\":\"center\",\"placeholder\":row === 1 ? '表头' : ''},model:{value:(_vm.tableData[(\"k_\" + (row - 1) + \"_\" + (col - 1))]),callback:function ($$v) {_vm.$set(_vm.tableData, (\"k_\" + (row - 1) + \"_\" + (col - 1)), $$v)},expression:\"tableData[`k_${row - 1}_${col - 1}`]\"}})],1)}),0)}),0),_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('input', false)}}},[_vm._v(\"取 消\")]),_c('el-button',{attrs:{\"type\":_vm.btnType,\"plain\":\"\"},on:{\"click\":_vm.insertTable}},[_vm._v(\"确 定\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./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=7de51ea0&scoped=true&\"\nimport script from \"./insertForm.vue?vue&type=script&lang=js&\"\nexport * from \"./insertForm.vue?vue&type=script&lang=js&\"\nimport style0 from \"./insertForm.vue?vue&type=style&index=0&id=7de51ea0&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 \"7de51ea0\",\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('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.value),expression:\"value\"}],staticClass:\"menu\",style:((\"left: \" + _vm.left + \"px;top: \" + _vm.top + \"px;\")),attrs:{\"id\":\"menu\"}},_vm._l((_vm.menu),function(menuItem,index){return _c('div',{key:index,staticClass:\"menu__group\"},_vm._l((menuItem),function(item){return _c('li',{key:item.key,staticClass:\"menu_item\",on:{\"mousedown\":function($event){return _vm.onMouseDown(item.key)}}},[_c('span',[_vm._v(_vm._s(item.text))])])}),0)}),0)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./rightClickMenu.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!./rightClickMenu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./rightClickMenu.vue?vue&type=template&id=d4fe4664&scoped=true&\"\nimport script from \"./rightClickMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./rightClickMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./rightClickMenu.vue?vue&type=style&index=0&id=d4fe4664&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 \"d4fe4664\",\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:\"upload__dialog\",attrs:{\"title\":\"本地上传\",\"visible\":_vm.value},on:{\"close\":function($event){return _vm.$emit('close')}}},[_c('el-tabs',{attrs:{\"type\":\"activeName\",\"value\":'upload'}},[_c('el-tab-pane',{staticClass:\"upload-panel\",attrs:{\"label\":\"选择上传\",\"name\":\"upload\"}},[_c('el-select',{attrs:{\"placeholder\":\"请选择\",\"size\":\"small\"},on:{\"change\":_vm.changeImgHost},model:{value:(_vm.imgHost),callback:function ($$v) {_vm.imgHost=$$v},expression:\"imgHost\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.value,attrs:{\"label\":item.label,\"value\":item.value}})}),1),_c('el-upload',{attrs:{\"drag\":\"\",\"action\":\"\",\"headers\":{ 'Content-Type': 'multipart/form-data' },\"show-file-list\":false,\"multiple\":true,\"accept\":\".jpg, .jpeg, .png, .gif\",\"name\":\"file\",\"before-upload\":_vm.beforeImageUpload,\"http-request\":_vm.uploadImage}},[_c('i',{staticClass:\"el-icon-upload\"}),_c('div',{staticClass:\"el-upload__text\"},[_vm._v(\" 将图片拖到此处,或 \"),_c('em',[_vm._v(\"点击上传\")])])])],1),_c('el-tab-pane',{staticClass:\"github-panel\",attrs:{\"label\":\"Gitee 图床\",\"name\":\"gitee\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formGitee,\"label-position\":\"right\",\"label-width\":\"140px\"}},[_c('el-form-item',{attrs:{\"label\":\"Gitee 仓库\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:gitee.com/yanglbme/resource\"},model:{value:(_vm.formGitee.repo),callback:function ($$v) {_vm.$set(_vm.formGitee, \"repo\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formGitee.repo\"}})],1),_c('el-form-item',{attrs:{\"label\":\"分支\"}},[_c('el-input',{attrs:{\"placeholder\":\"如:release,可不填,默认 master\"},model:{value:(_vm.formGitee.branch),callback:function ($$v) {_vm.$set(_vm.formGitee, \"branch\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formGitee.branch\"}})],1),_c('el-form-item',{attrs:{\"label\":\"私人令牌\",\"required\":true}},[_c('el-input',{attrs:{\"show-password\":\"\",\"placeholder\":\"如:cc1d0c1426d0fd0902bd2d7184b14da61b8abc46\"},model:{value:(_vm.formGitee.accessToken),callback:function ($$v) {_vm.$set(_vm.formGitee, \"accessToken\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formGitee.accessToken\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://gitee.com/profile/personal_access_tokens\",\"target\":\"_blank\"}},[_vm._v(\"请在 Gitee「设置->安全设置->私人令牌」中生成\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveGiteeConfiguration}},[_vm._v(\"保存配置\")])],1)],1)],1),_c('el-tab-pane',{staticClass:\"github-panel\",attrs:{\"label\":\"GitHub 图床\",\"name\":\"github\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formGitHub,\"label-position\":\"right\",\"label-width\":\"140px\"}},[_c('el-form-item',{attrs:{\"label\":\"GitHub 仓库\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:github.com/yanglbme/resource\"},model:{value:(_vm.formGitHub.repo),callback:function ($$v) {_vm.$set(_vm.formGitHub, \"repo\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formGitHub.repo\"}})],1),_c('el-form-item',{attrs:{\"label\":\"分支\"}},[_c('el-input',{attrs:{\"placeholder\":\"如:release,可不填,默认 master\"},model:{value:(_vm.formGitHub.branch),callback:function ($$v) {_vm.$set(_vm.formGitHub, \"branch\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formGitHub.branch\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Token\",\"required\":true}},[_c('el-input',{attrs:{\"show-password\":\"\",\"placeholder\":\"如:cc1d0c1426d0fd0902bd2d7184b14da61b8abc46\"},model:{value:(_vm.formGitHub.accessToken),callback:function ($$v) {_vm.$set(_vm.formGitHub, \"accessToken\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formGitHub.accessToken\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token\",\"target\":\"_blank\"}},[_vm._v(\"如何获取 GitHub Token?\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveGitHubConfiguration}},[_vm._v(\"保存配置\")])],1)],1)],1),_c('el-tab-pane',{staticClass:\"github-panel\",attrs:{\"label\":\"阿里云 OSS\",\"name\":\"aliOSS\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formAliOSS,\"label-position\":\"right\",\"label-width\":\"140px\"}},[_c('el-form-item',{attrs:{\"label\":\"AccessKey ID\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:LTAI4GdoocsmdoxUf13ylbaNHk\"},model:{value:(_vm.formAliOSS.accessKeyId),callback:function ($$v) {_vm.$set(_vm.formAliOSS, \"accessKeyId\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formAliOSS.accessKeyId\"}})],1),_c('el-form-item',{attrs:{\"label\":\"AccessKey Secret\",\"required\":true}},[_c('el-input',{attrs:{\"show-password\":\"\",\"placeholder\":\"如:cc1d0c142doocs0902bd2d7md4b14da6ylbabc46\"},model:{value:(_vm.formAliOSS.accessKeySecret),callback:function ($$v) {_vm.$set(_vm.formAliOSS, \"accessKeySecret\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formAliOSS.accessKeySecret\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Bucket\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:doocs\"},model:{value:(_vm.formAliOSS.bucket),callback:function ($$v) {_vm.$set(_vm.formAliOSS, \"bucket\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formAliOSS.bucket\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Bucket 所在区域\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:oss-cn-shenzhen\"},model:{value:(_vm.formAliOSS.region),callback:function ($$v) {_vm.$set(_vm.formAliOSS, \"region\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formAliOSS.region\"}})],1),_c('el-form-item',{attrs:{\"label\":\"自定义 CDN 域名\",\"required\":false}},[_c('el-input',{attrs:{\"placeholder\":\"如:https://imagecdn.alidaodao.com,可不填\"},model:{value:(_vm.formAliOSS.cdnHost),callback:function ($$v) {_vm.$set(_vm.formAliOSS, \"cdnHost\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formAliOSS.cdnHost\"}})],1),_c('el-form-item',{attrs:{\"label\":\"存储路径\"}},[_c('el-input',{attrs:{\"placeholder\":\"如:img,可不填,默认为根目录\"},model:{value:(_vm.formAliOSS.path),callback:function ($$v) {_vm.$set(_vm.formAliOSS, \"path\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formAliOSS.path\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://help.aliyun.com/document_detail/31883.html\",\"target\":\"_blank\"}},[_vm._v(\"如何使用阿里云 OSS?\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveAliOSSConfiguration}},[_vm._v(\"保存配置\")])],1)],1)],1),_c('el-tab-pane',{staticClass:\"github-panel\",attrs:{\"label\":\"腾讯云 COS\",\"name\":\"txCOS\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formTxCOS,\"label-position\":\"right\",\"label-width\":\"140px\"}},[_c('el-form-item',{attrs:{\"label\":\"SecretId\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:AKIDnQp1w3DOOCSs8F5MDp9tdoocsmdUPonW3\"},model:{value:(_vm.formTxCOS.secretId),callback:function ($$v) {_vm.$set(_vm.formTxCOS, \"secretId\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formTxCOS.secretId\"}})],1),_c('el-form-item',{attrs:{\"label\":\"SecretKey\",\"required\":true}},[_c('el-input',{attrs:{\"show-password\":\"\",\"placeholder\":\"如:ukLmdtEJ9271f3DOocsMDsCXdS3YlbW0\"},model:{value:(_vm.formTxCOS.secretKey),callback:function ($$v) {_vm.$set(_vm.formTxCOS, \"secretKey\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formTxCOS.secretKey\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Bucket\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:doocs-3212520134\"},model:{value:(_vm.formTxCOS.bucket),callback:function ($$v) {_vm.$set(_vm.formTxCOS, \"bucket\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formTxCOS.bucket\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Bucket 所在区域\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:ap-guangzhou\"},model:{value:(_vm.formTxCOS.region),callback:function ($$v) {_vm.$set(_vm.formTxCOS, \"region\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formTxCOS.region\"}})],1),_c('el-form-item',{attrs:{\"label\":\"自定义 CDN 域名\",\"required\":false}},[_c('el-input',{attrs:{\"placeholder\":\"如:https://imagecdn.alidaodao.com,可不填\"},model:{value:(_vm.formTxCOS.cdnHost),callback:function ($$v) {_vm.$set(_vm.formTxCOS, \"cdnHost\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formTxCOS.cdnHost\"}})],1),_c('el-form-item',{attrs:{\"label\":\"存储路径\"}},[_c('el-input',{attrs:{\"placeholder\":\"如:img,可不填,默认根目录\"},model:{value:(_vm.formTxCOS.path),callback:function ($$v) {_vm.$set(_vm.formTxCOS, \"path\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formTxCOS.path\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://cloud.tencent.com/document/product/436/38484\",\"target\":\"_blank\"}},[_vm._v(\"如何使用腾讯云 COS?\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveTxCOSConfiguration}},[_vm._v(\"保存配置\")])],1)],1)],1),_c('el-tab-pane',{staticClass:\"github-panel\",attrs:{\"label\":\"七牛云 Kodo\",\"name\":\"qiniu\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formQiniu,\"label-position\":\"right\",\"label-width\":\"140px\"}},[_c('el-form-item',{attrs:{\"label\":\"AccessKey\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:6DD3VaLJ_SQgOdoocsyTV_YWaDmdnL2n8EGx7kG\"},model:{value:(_vm.formQiniu.accessKey),callback:function ($$v) {_vm.$set(_vm.formQiniu, \"accessKey\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formQiniu.accessKey\"}})],1),_c('el-form-item',{attrs:{\"label\":\"SecretKey\",\"required\":true}},[_c('el-input',{attrs:{\"show-password\":\"\",\"placeholder\":\"如:qgZa5qrvDOOcsmdKStD1oCjZ9nB7MDvJUs_34SIm\"},model:{value:(_vm.formQiniu.secretKey),callback:function ($$v) {_vm.$set(_vm.formQiniu, \"secretKey\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formQiniu.secretKey\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Bucket\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:md\"},model:{value:(_vm.formQiniu.bucket),callback:function ($$v) {_vm.$set(_vm.formQiniu, \"bucket\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formQiniu.bucket\"}})],1),_c('el-form-item',{attrs:{\"label\":\"Bucket 对应域名\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:https://images.123ylb.cn\"},model:{value:(_vm.formQiniu.domain),callback:function ($$v) {_vm.$set(_vm.formQiniu, \"domain\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formQiniu.domain\"}})],1),_c('el-form-item',{attrs:{\"label\":\"存储区域\",\"required\":true}},[_c('el-input',{attrs:{\"placeholder\":\"如:z2\"},model:{value:(_vm.formQiniu.region),callback:function ($$v) {_vm.$set(_vm.formQiniu, \"region\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formQiniu.region\"}})],1),_c('el-form-item',{attrs:{\"label\":\"存储路径\",\"required\":false}},[_c('el-input',{attrs:{\"placeholder\":\"如:img,可不填,默认为根目录\"},model:{value:(_vm.formQiniu.path),callback:function ($$v) {_vm.$set(_vm.formQiniu, \"path\", (typeof $$v === 'string'? $$v.trim(): $$v))},expression:\"formQiniu.path\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://developer.qiniu.com/kodo\",\"target\":\"_blank\"}},[_vm._v(\"如何使用七牛云 Kodo?\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveQiniuConfiguration}},[_vm._v(\"保存配置\")])],1)],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\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!./uploadImgDialog.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!./uploadImgDialog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./uploadImgDialog.vue?vue&type=template&id=82e7876a&scoped=true&\"\nimport script from \"./uploadImgDialog.vue?vue&type=script&lang=js&\"\nexport * from \"./uploadImgDialog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./uploadImgDialog.vue?vue&type=style&index=0&id=82e7876a&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 \"82e7876a\",\n null\n \n)\n\nexport default component.exports","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 },\n (error) => {\n Promise.reject(error);\n }\n);\n\nservice.interceptors.response.use(\n (res) => {\n return res.data ? res.data : Promise.reject(res);\n },\n (error) => Promise.reject(error)\n);\n\nexport default service;\n","const githubConfig = {\n username: \"filess\",\n repoList: Array.from(\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n (e) => `img${e}`\n ),\n branch: \"main\",\n accessTokenList: [\n \"7715d7ca67b5d3837cfdoocsmde8c38421815aa423510af\",\n \"c411415bf95dbe39625doocsmd5047ba9b7a2a6c9642abe\",\n \"2821cd8819fa345c053doocsmdca86ac653f8bc20db1f1b\",\n \"445f0dae46ef1f2a4d6doocsmdc797301e94797b4750a4c\",\n \"cc1d0c1426d0fd0902bdoocsmdd2d7184b14da61b86ec46\",\n \"b67e9d15cb6f910492fdoocsmdac6b44d379c953bb19eff\",\n \"618c4dc2244ccbbc088doocsmd125d17fd31b7d06a50cf3\",\n \"a4b581732e1c1507458doocsmdc5b223b27dae5e2e16a55\",\n \"77904db41aee57ad79bdoocsmd760f848201dac9c96fd5e\",\n \"02f251cb14ac62ab100doocsmdddbfc8527d773f1f04ce1\",\n \"eb321079a95ba7028d9doocsmde2e84c502dac70de7cf08\",\n \"22f74fcfb071a961fa2doocsmde28dabc746f0503a15e5d\",\n \"85124c2bfe7abba0938doocsmd0af7f67918b99d085a5fd\",\n \"0a561b4d4bbecb2de7edoocsmdd9ba3833d11dbc5e430f5\",\n \"e8a01491188d8d5a097doocsmd03ede0aad1fe9e3af24e9\",\n \"36e1f420d7e5bdebd67doocsmd65463562f5f25b20b8377\",\n ],\n};\n\nconst giteeConfig = {\n username: \"filesss\",\n repoList: Array.from(\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19],\n (e) => `img${e}`\n ),\n branch: \"main\",\n accessTokenList: [\n \"ed5fc9866bd6c2fdoocsmddd433f806fd2f399c\",\n \"5448ffebbbf1151doocsmdc4e337cf814fc8a62\",\n \"25b05efd2557ca2doocsmd75b5c0835e3395911\",\n \"11628c7a5aef015doocsmd2eeff9fb9566f0458\",\n \"cb2f5145ed938dedoocsmdbd063b4ed244eecf8\",\n \"d8c0b57500672c1doocsmd55f48b866b5ebcd98\",\n \"78c56eadb88e453doocsmd43ddd95753351771a\",\n \"03e1a688003948fdoocsmda16fcf41e6f03f1f0\",\n \"c49121cf4d191fbdoocsmdd6a7877ed537e474a\",\n \"adfeb2fadcdc4aadoocsmdfe1ee869ac9c968ff\",\n \"116c94549ca4a0ddoocsmd192653af5c0694616\",\n \"ecf30ed7f2eb184doocsmd51ea4ec8300371d9e\",\n \"5837cf2bd5afd93doocsmd73904bed31934949e\",\n \"b5b7e1c7d57e01fdoocsmd5266f552574297d78\",\n \"684d55564ffbd0bdoocsmd7d747e5cc23aed6d6\",\n \"3fc04a9d272ab71doocsmd010c56cb57d88d2ba\",\n ],\n};\n\nexport { githubConfig, giteeConfig };\n","export function utf16to8(str) {\n var out, i, len, c;\n out = \"\";\n len = str.length;\n for (i = 0; i < len; i++) {\n c = str.charCodeAt(i);\n if (c >= 0x0001 && c <= 0x007f) {\n out += str.charAt(i);\n } else if (c > 0x07ff) {\n out += String.fromCharCode(0xe0 | ((c >> 12) & 0x0f));\n out += String.fromCharCode(0x80 | ((c >> 6) & 0x3f));\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3f));\n } else {\n out += String.fromCharCode(0xc0 | ((c >> 6) & 0x1f));\n out += String.fromCharCode(0x80 | ((c >> 0) & 0x3f));\n }\n }\n return out;\n}\n\nexport function utf8to16(str) {\n var out, i, len, c;\n var char2, char3;\n out = \"\";\n len = str.length;\n i = 0;\n while (i < len) {\n c = str.charCodeAt(i++);\n switch (c >> 4) {\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n // 0xxxxxxx\n out += str.charAt(i - 1);\n break;\n case 12:\n case 13:\n // 110x xxxx 10xx xxxx\n char2 = str.charCodeAt(i++);\n out += String.fromCharCode(((c & 0x1f) << 6) | (char2 & 0x3f));\n break;\n case 14:\n // 1110 xxxx 10xx xxxx 10xx xxxx\n char2 = str.charCodeAt(i++);\n char3 = str.charCodeAt(i++);\n out += String.fromCharCode(\n ((c & 0x0f) << 12) |\n ((char2 & 0x3f) << 6) |\n ((char3 & 0x3f) << 0)\n );\n break;\n }\n }\n return out;\n}\n\nconst base64EncodeChars =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_\";\nconst base64DecodeChars = new Array(\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 62,\n -1,\n -1,\n -1,\n 63,\n 52,\n 53,\n 54,\n 55,\n 56,\n 57,\n 58,\n 59,\n 60,\n 61,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6,\n 7,\n 8,\n 9,\n 10,\n 11,\n 12,\n 13,\n 14,\n 15,\n 16,\n 17,\n 18,\n 19,\n 20,\n 21,\n 22,\n 23,\n 24,\n 25,\n -1,\n -1,\n -1,\n -1,\n -1,\n -1,\n 26,\n 27,\n 28,\n 29,\n 30,\n 31,\n 32,\n 33,\n 34,\n 35,\n 36,\n 37,\n 38,\n 39,\n 40,\n 41,\n 42,\n 43,\n 44,\n 45,\n 46,\n 47,\n 48,\n 49,\n 50,\n 51,\n -1,\n -1,\n -1,\n -1,\n -1\n);\nexport function base64encode(str) {\n var out, i, len;\n var c1, c2, c3;\n len = str.length;\n i = 0;\n out = \"\";\n while (i < len) {\n c1 = str.charCodeAt(i++) & 0xff;\n if (i == len) {\n out += base64EncodeChars.charAt(c1 >> 2);\n out += base64EncodeChars.charAt((c1 & 0x3) << 4);\n out += \"==\";\n break;\n }\n c2 = str.charCodeAt(i++);\n if (i == len) {\n out += base64EncodeChars.charAt(c1 >> 2);\n out += base64EncodeChars.charAt(\n ((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4)\n );\n out += base64EncodeChars.charAt((c2 & 0xf) << 2);\n out += \"=\";\n break;\n }\n c3 = str.charCodeAt(i++);\n out += base64EncodeChars.charAt(c1 >> 2);\n out += base64EncodeChars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));\n out += base64EncodeChars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6));\n out += base64EncodeChars.charAt(c3 & 0x3f);\n }\n return out;\n}\n\nexport function base64decode(str) {\n var c1, c2, c3, c4;\n var i, len, out;\n len = str.length;\n i = 0;\n out = \"\";\n while (i < len) {\n /* c1 */\n do {\n c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff];\n } while (i < len && c1 == -1);\n if (c1 == -1) break;\n /* c2 */\n do {\n c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff];\n } while (i < len && c2 == -1);\n if (c2 == -1) break;\n out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4));\n /* c3 */\n do {\n c3 = str.charCodeAt(i++) & 0xff;\n if (c3 == 61) return out;\n c3 = base64DecodeChars[c3];\n } while (i < len && c3 == -1);\n if (c3 == -1) break;\n out += String.fromCharCode(((c2 & 0xf) << 4) | ((c3 & 0x3c) >> 2));\n /* c4 */\n do {\n c4 = str.charCodeAt(i++) & 0xff;\n if (c4 == 61) return out;\n c4 = base64DecodeChars[c4];\n } while (i < len && c4 == -1);\n if (c4 == -1) break;\n out += String.fromCharCode(((c3 & 0x03) << 6) | c4);\n }\n return out;\n}\n\nexport function safe64(base64) {\n base64 = base64.replace(/\\+/g, \"-\");\n base64 = base64.replace(/\\//g, \"_\");\n return base64;\n}\n","import fetch from \"./fetch\";\nimport { githubConfig, giteeConfig } from \"./config\";\nimport CryptoJS from \"crypto-js\";\nimport OSS from \"ali-oss\";\nimport COS from \"cos-js-sdk-v5\";\nimport Buffer from \"buffer-from\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport * as qiniu from \"qiniu-js\";\nimport { utf16to8, base64encode, safe64 } from \"../assets/scripts/tokenTools\";\n\nfunction getConfig(useDefault, platform) {\n if (useDefault) {\n // load default config file\n const config = platform === \"github\" ? githubConfig : giteeConfig;\n const { username, repoList, branch, accessTokenList } = config;\n\n // choose random token from access_token list\n const tokenIndex = Math.floor(Math.random() * accessTokenList.length);\n const accessToken = accessTokenList[tokenIndex].replace(\"doocsmd\", \"\");\n\n // choose random repo from repo list\n const repoIndex = Math.floor(Math.random() * repoList.length);\n const repo = repoList[repoIndex];\n\n return { username, repo, branch, accessToken };\n }\n\n // load configuration from localStorage\n const customConfig = JSON.parse(localStorage.getItem(`${platform}Config`));\n\n // split username/repo\n const repoUrl = customConfig.repo\n .replace(`https://${platform}.com/`, \"\")\n .replace(`http://${platform}.com/`, \"\")\n .replace(`${platform}.com/`, \"\")\n .split(\"/\");\n return {\n username: repoUrl[0],\n repo: repoUrl[1],\n branch: customConfig.branch || \"master\",\n accessToken: customConfig.accessToken,\n };\n}\n\nfunction getDir() {\n const date = new Date();\n const year = date.getFullYear();\n const month = (date.getMonth() + 1).toString().padStart(2, \"0\");\n const day = date.getDate().toString().padStart(2, \"0\");\n return `${year}/${month}/${day}`;\n}\n\nfunction getDateFilename(filename) {\n const currentTimestamp = new Date().getTime();\n const fileSuffix = filename.split(\".\")[1];\n return `${currentTimestamp}-${uuidv4()}.${fileSuffix}`;\n}\n\n//-----------------------------------------------------------------------\n// GitHub File Upload\n//-----------------------------------------------------------------------\n\nasync function ghFileUpload(content, filename) {\n const useDefault = localStorage.getItem(\"imgHost\") === \"default\";\n const { username, repo, branch, accessToken } = getConfig(\n useDefault,\n \"github\"\n );\n const dir = getDir();\n const url = `https://api.github.com/repos/${username}/${repo}/contents/${dir}/`;\n const dateFilename = getDateFilename(filename);\n const res = await fetch({\n url: url + dateFilename,\n method: \"put\",\n headers: {\n Authorization: `token ${accessToken}`,\n },\n data: {\n content,\n branch,\n message: `Upload by ${window.location.href}`,\n },\n });\n\n const githubResourceUrl = `raw.githubusercontent.com/${username}/${repo}/${branch}/`;\n const cdnResourceUrl = `cdn.jsdelivr.net/gh/${username}/${repo}@${branch}/`;\n return useDefault\n ? res.content.download_url.replace(githubResourceUrl, cdnResourceUrl)\n : res.content.download_url;\n}\n\n//-----------------------------------------------------------------------\n// Gitee File Upload\n//-----------------------------------------------------------------------\n\nasync function giteeUpload(content, filename) {\n const useDefault = localStorage.getItem(\"imgHost\") === \"default\";\n const { username, repo, branch, accessToken } = getConfig(\n useDefault,\n \"gitee\"\n );\n const dir = getDir();\n const dateFilename = getDateFilename(filename);\n const url = `https://gitee.com/api/v5/repos/${username}/${repo}/contents/${dir}/${dateFilename}`;\n const res = await fetch({\n url,\n method: \"POST\",\n data: {\n content,\n branch,\n access_token: accessToken,\n message: `Upload by ${window.location.href}`,\n },\n });\n return encodeURI(res.content.download_url);\n}\n\n//-----------------------------------------------------------------------\n// Qiniu File Upload\n//-----------------------------------------------------------------------\n\nfunction getQiniuToken(accessKey, secretKey, putPolicy) {\n const policy = JSON.stringify(putPolicy);\n const encoded = base64encode(utf16to8(policy));\n const hash = CryptoJS.HmacSHA1(encoded, secretKey);\n const encodedSigned = hash.toString(CryptoJS.enc.Base64);\n return `${accessKey}:${safe64(encodedSigned)}:${encoded}`;\n}\n\nasync function qiniuUpload(file) {\n const { accessKey, secretKey, bucket, region, path, domain } = JSON.parse(\n localStorage.getItem(\"qiniuConfig\")\n );\n const token = getQiniuToken(accessKey, secretKey, {\n scope: bucket,\n deadline: Math.trunc(new Date().getTime() / 1000) + 3600,\n });\n const dir = path ? `${path}/` : \"\";\n const dateFilename = dir + getDateFilename(file.name);\n const observable = qiniu.upload(file, dateFilename, token, {}, { region });\n return new Promise((resolve, reject) => {\n observable.subscribe({\n next: (result) => {\n console.log(result);\n },\n error: (err) => {\n reject(err.message);\n },\n complete: (result) => {\n resolve(`${domain}/${result.key}`);\n },\n });\n });\n}\n\n//-----------------------------------------------------------------------\n// AliOSS File Upload\n//-----------------------------------------------------------------------\n\nasync function aliOSSFileUpload(content, filename) {\n const dateFilename = getDateFilename(filename);\n const {\n region,\n bucket,\n accessKeyId,\n accessKeySecret,\n cdnHost,\n path,\n } = JSON.parse(localStorage.getItem(\"aliOSSConfig\"));\n const buffer = Buffer(content, \"base64\");\n const dir = `${path}/${dateFilename}`;\n const client = new OSS({\n region,\n bucket,\n accessKeyId,\n accessKeySecret,\n });\n try {\n const res = await client.put(dir, buffer);\n if (cdnHost == \"\") return res.url;\n return `${cdnHost}/${path == \"\" ? dateFilename : dir}`;\n } catch (e) {\n return Promise.reject(e);\n }\n}\n\n//-----------------------------------------------------------------------\n// TxCOS File Upload\n//-----------------------------------------------------------------------\n\nasync function txCOSFileUpload(file) {\n const dateFilename = getDateFilename(file.name);\n const { secretId, secretKey, bucket, region, path, cdnHost } = JSON.parse(\n localStorage.getItem(\"txCOSConfig\")\n );\n const cos = new COS({\n SecretId: secretId,\n SecretKey: secretKey,\n });\n return new Promise((resolve, reject) => {\n cos.putObject(\n {\n Bucket: bucket,\n Region: region,\n Key: `${path}/${dateFilename}`,\n Body: file,\n },\n function (err, data) {\n if (err) {\n reject(err);\n } else if (cdnHost) {\n resolve(\n path == \"\"\n ? `${cdnHost}/${dateFilename}`\n : `${cdnHost}/${path}/${dateFilename}`\n );\n } else {\n resolve(`https://${data.Location}`);\n }\n }\n );\n });\n}\n\nfunction fileUpload(content, file) {\n const imgHost = localStorage.getItem(\"imgHost\");\n !imgHost && localStorage.setItem(\"imgHost\", \"default\");\n switch (imgHost) {\n case \"aliOSS\":\n return aliOSSFileUpload(content, file.name);\n case \"txCOS\":\n return txCOSFileUpload(file);\n case \"qiniu\":\n return qiniuUpload(file);\n case \"gitee\":\n return giteeUpload(content, file.name);\n case \"github\":\n return ghFileUpload(content, file.name);\n default:\n // return file.size / 1024 < 1024\n // ? giteeUpload(content, file.name)\n // : ghFileUpload(content, file.name);\n return ghFileUpload(content, file.name);\n }\n}\n\nexport default {\n fileUpload,\n};\n","\n\n\n\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=769b6398&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=769b6398&lang=less&scoped=true&\"\nimport style1 from \"./CodemirrorEditor.vue?vue&type=style&index=1&lang=less&\"\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 \"769b6398\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\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=f01d475a&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=f01d475a&lang=scss&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 \"f01d475a\",\n null\n \n)\n\nexport default component.exports","import marked from \"marked\";\nclass WxRenderer {\n constructor(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 =\n \"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 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 `[${x[0]}]: ${x[1]}
`;\n }\n return `[${x[0]}] ${x[1]}: ${x[2]}
`;\n });\n return `

引用链接

${footnoteArray.join(\"\\n\")}

`;\n };\n\n this.buildAddition = () => {\n return `\n \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 `

${text}

`;\n case 2:\n return `

${text}

`;\n case 3:\n return `

${text}

`;\n default:\n return `

${text}

`;\n }\n };\n renderer.paragraph = (text) => {\n if (\n text.indexOf(\"${text}

`;\n };\n\n renderer.blockquote = (text) => {\n text = text.replace(\n //g,\n `

`\n );\n return `

${text}
`;\n };\n renderer.code = (text, lang) => {\n text = text.replace(//g, \">\");\n const codeLines = text\n .split(\"\\n\")\n .map(\n (line) =>\n `${\n line || \"
\"\n }
`\n );\n const codeTheme = \"github\";\n return `\n
\n
\n                        ${codeLines.join(\"\")}\n                    
\n
\n `;\n };\n renderer.codespan = (text, lang) =>\n `${text}`;\n renderer.listitem = (text) =>\n `<%s/>${text}`;\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 `

${text}

`;\n }\n text = segments[0];\n for (let i = 1; i < segments.length; i++) {\n text = text + i + \".\" + segments[i];\n }\n return `

${text}

`;\n };\n renderer.image = (href, title, text) => {\n let subText = \"\";\n if (text) {\n subText = `
${text}
`;\n }\n let figureStyles = getStyles(\"figure\");\n let imgStyles = getStyles(\n ENV_STRETCH_IMAGE ? \"image\" : \"image_org\"\n );\n return `
\"${text}\"/${subText}
`;\n };\n renderer.link = (href, title, text) => {\n if (href.indexOf(\"https://mp.weixin.qq.com\") === 0) {\n return `${text}`;\n }\n if (href === text || !status) {\n return text;\n }\n let ref = addFootnote(title || text, href);\n return `${text}[${ref}]`;\n };\n renderer.strong = (text) =>\n `${text}`;\n renderer.em = (text) =>\n `${text}`;\n renderer.table = (header, body) =>\n `
${header}${body}
`;\n // renderer.tablerow = (text) => `${text}`;\n renderer.tablecell = (text, flags) =>\n `${text}`;\n renderer.hr = () =>\n `
`;\n return renderer;\n };\n }\n}\nexport default WxRenderer;\n","const DEFAULT_CONTENT = `# 示例文章:Google 搜索的即时自动补全功能究竟是如何“工作”的?\n> Google 搜索**自动补全功能**的强大,相信不少朋友都能感受到,它帮助我们更快地“补全”我们所要输入的搜索关键字。那么,它怎么知道我们要输入什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。\n\n## 使用自动补全\nGoogle 搜索的自动补全功能可以在 Google 搜索应用的大多数位置使用,包括 [Google](https://www.google.com/) 主页、适用于 IOS 和 Android 的 Google 应用,我们只需要在 Google 搜索框上开始键入关键字,就可以看到联想词了。\n\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juejin.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://gitee.com/yanglbme/resource/raw/master/doocs-md/juex.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://gitee.com/yanglbme/resource/raw/master/doocs-md/report.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://gitee.com/yanglbme/resource/raw/master/doocs-md/pretree.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
\n
\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
\n \n
\n\n`;\nexport default DEFAULT_CONTENT;\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport config from \"../assets/scripts/config\";\nimport WxRenderer from \"../assets/scripts/renderers/wx-renderer\";\nimport marked from \"marked\";\nimport CodeMirror from \"codemirror/lib/codemirror\";\nimport DEFAULT_CONTENT from \"../assets/scripts/default-content\";\nimport DEFAULT_CSS_CONTENT from \"../assets/scripts/themes/default-theme-css\";\nimport { setColor, formatDoc, formatCss } from \"../assets/scripts/util\";\n\nVue.use(Vuex);\n\nconst state = {\n wxRenderer: null,\n output: \"\",\n html: \"\",\n editor: null,\n cssEditor: null,\n currentFont: \"\",\n currentSize: \"\",\n currentColor: \"\",\n citeStatus: 0,\n nightMode: false,\n codeTheme: \"github\",\n rightClickMenuVisible: false,\n};\nconst mutations = {\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 setCurrentCodeTheme(state, data) {\n state.codeTheme = data;\n localStorage.setItem(\"codeTheme\", data);\n },\n setRightClickMenuVisible(state, data) {\n state.rightClickMenuVisible = data;\n },\n themeChanged(state) {\n state.nightMode = !state.nightMode;\n localStorage.setItem(\"nightMode\", state.nightMode);\n },\n initEditorState(state) {\n state.currentFont =\n localStorage.getItem(\"fonts\") || config.builtinFonts[0].value;\n state.currentColor =\n localStorage.getItem(\"color\") || config.colorOption[0].value;\n state.currentSize =\n localStorage.getItem(\"size\") || config.sizeOption[2].value;\n state.codeTheme =\n localStorage.getItem(\"codeTheme\") ||\n config.codeThemeOption[0].value;\n state.citeStatus = localStorage.getItem(\"citeStatus\") === \"true\";\n state.nightMode = localStorage.getItem(\"nightMode\") === \"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 = formatDoc(editor.getValue(0));\n localStorage.setItem(\"__editor_content\", doc);\n editor.setValue(doc);\n },\n \"Ctrl-S\": function save(editor) {},\n },\n }\n );\n\n // 如果有编辑器内容被保存则读取,否则加载默认内容\n state.editor.setValue(\n localStorage.getItem(\"__editor_content\") ||\n formatDoc(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 doc = formatCss(editor.getValue(0));\n localStorage.setItem(\"__css_content\", doc);\n editor.setValue(doc);\n },\n \"Ctrl-S\": function save(editor) {},\n },\n }\n );\n\n // 如果有编辑器内容被保存则读取,否则加载默认内容\n state.cssEditor.setValue(\n localStorage.getItem(\"__css_content\") || 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\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 const doc = formatDoc(DEFAULT_CONTENT);\n state.editor.setValue(doc);\n state.cssEditor.setValue(DEFAULT_CSS_CONTENT);\n },\n};\n\nexport default new Vuex.Store({\n state,\n mutations,\n actions: {},\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 \"./plugins/element\";\nimport \"codemirror/lib/codemirror.css\";\nimport \"codemirror/theme/xq-light.css\";\nimport \"codemirror/mode/css/css\";\nimport \"codemirror/mode/markdown/markdown\";\nimport \"codemirror/addon/edit/closebrackets\";\nimport \"codemirror/addon/edit/matchbrackets\";\nimport \"codemirror/addon/selection/active-line\";\nimport \"codemirror/addon/hint/show-hint.js\";\nimport \"codemirror/addon/hint/css-hint.js\";\nimport \"./assets/less/theme.less\";\n\nVue.use(ElementUI);\n\nVue.config.productionTip = false;\n\nnew Vue({\n store,\n render: (h) => h(App),\n}).$mount(\"#app\");\n","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=1&lang=less&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=f01d475a&lang=scss&scoped=true&\"","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!./aboutDialog.vue?vue&type=style&index=0&id=224778f2&lang=less&scoped=true&\"","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&\"","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=e7287bec&lang=less&scoped=true&\"","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!./rightClickMenu.vue?vue&type=style&index=0&id=d4fe4664&lang=less&scoped=true&\"","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=6d46d022&lang=less&scoped=true&\"","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=769b6398&lang=less&scoped=true&\""],"sourceRoot":""}