diff --git a/index.html b/index.html index f61691d..c9e02cb 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -微信 Markdown 编辑器 | Doocs 开源社区
\ No newline at end of file +微信 Markdown 编辑器 | Doocs 开源社区
\ No newline at end of file diff --git a/js/app.74263e49.js b/js/app.74263e49.js deleted file mode 100644 index c208b17..0000000 --- a/js/app.74263e49.js +++ /dev/null @@ -1,4 +0,0 @@ -(function(e){function t(t){for(var n,a,s=t[0],c=t[1],l=t[2],d=0,_=[];d=1&&r<=127?t+=e.charAt(o):r>2047?(t+=String.fromCharCode(224|r>>12&15),t+=String.fromCharCode(128|r>>6&63),t+=String.fromCharCode(128|r>>0&63)):(t+=String.fromCharCode(192|r>>6&31),t+=String.fromCharCode(128|r>>0&63));return t}function r(e){var t,o,n,r,i,a;t="",n=e.length,o=0;while(o>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=e.charAt(o-1);break;case 12:case 13:i=e.charCodeAt(o++),t+=String.fromCharCode((31&r)<<6|63&i);break;case 14:i=e.charCodeAt(o++),a=e.charCodeAt(o++),t+=String.fromCharCode((15&r)<<12|(63&i)<<6|(63&a)<<0);break}return t}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",a=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function s(e){var t,o,n,r,a,s;n=e.length,o=0,t="";while(o>2),t+=i.charAt((3&r)<<4),t+="==";break}if(a=e.charCodeAt(o++),o==n){t+=i.charAt(r>>2),t+=i.charAt((3&r)<<4|(240&a)>>4),t+=i.charAt((15&a)<<2),t+="=";break}s=e.charCodeAt(o++),t+=i.charAt(r>>2),t+=i.charAt((3&r)<<4|(240&a)>>4),t+=i.charAt((15&a)<<2|(192&s)>>6),t+=i.charAt(63&s)}return t}function c(e){var t,o,n,r,i,s,c;s=e.length,i=0,c="";while(i>4);do{if(n=255&e.charCodeAt(i++),61==n)return c;n=a[n]}while(i>2);do{if(r=255&e.charCodeAt(i++),61==r)return c;r=a[r]}while(i['.concat(e[0],"]: ").concat(e[1],"
"):'['.concat(e[0],"] ").concat(e[1],": ").concat(e[2],"
")}));return"

引用链接

").concat(e.join("\n"),"

")},this.buildAddition=function(){return"\n \n "},this.setOptions=function(e){o.opts=c(o.opts,e)},this.hasFootnotes=function(){return 0!==r.length},this.getRenderer=function(e){r=[],i=0,a=o.buildTheme(o.opts.theme);var t=new f["Renderer"];return t.heading=function(e,t){switch(t){case 1:return"

").concat(e,"

");case 2:return"

").concat(e,"

");case 3:return"

").concat(e,"

");default:return"

").concat(e,"

")}},t.paragraph=function(e){return-1!=e.indexOf("").concat(e,"

")},t.blockquote=function(e){return e=e.replace(//g,"

")),"

").concat(e,"
")},t.code=function(e,t){e=e.replace(//g,">");var o=e.split("\n").map((function(e){return''.concat(e||" ","")})),n="github";return'\n
\n
\n                        ').concat(o.join(""),"\n                    
\n
\n ")},t.codespan=function(e,t){return"").concat(e,"")},t.listitem=function(e){return"<%s/>').concat(e,"")},t.list=function(e,t,o){e=e.replace(/<\/*p.*?>/g,"");var n=e.split("<%s/>");if(!t)return e=n.join("•"),"

").concat(e,"

");e=n[0];for(var r=1;r").concat(e,"

")},t.image=function(e,t,o){var r="";o&&(r="
").concat(o,"
"));var i=l("figure"),a=l(n?"image":"image_org");return"
').concat(o,'').concat(r,"
")},t.link=function(t,o,n){if(t.startsWith("https://mp.weixin.qq.com"))return'").concat(n,"");if(t===n)return n;if(e){var r=u(o||n,t);return"").concat(n,"[").concat(r,"]")}return"").concat(n,"")},t.strong=function(e){return"").concat(e,"")},t.em=function(e){return''.concat(e,"")},t.table=function(e,t){return'
").concat(e,"").concat(t,"
")},t.tablecell=function(e,t){return"").concat(e,"")},t.hr=function(){return'
'},t}},g=p,h=o("56b3"),b=o.n(h),C='# 示例文章:Google 搜索的即时自动补全功能究竟是如何“工作”的?\r\n\r\n> Google 搜索**自动补全功能**的强大,相信不少朋友都能感受到,它帮助我们更快地“补全”我们所要输入的搜索关键字。那么,它怎么知道我们要输入什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。\r\n\r\n## 使用自动补全\r\n\r\nGoogle 搜索的自动补全功能可以在 Google 搜索应用的大多数位置使用,包括 [Google](https://www.google.com/) 主页、适用于 IOS 和 Android 的 Google 应用,我们只需要在 Google 搜索框上开始键入关键字,就可以看到联想词了。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juejin.gif)\r\n\r\n在上图示例中,我们可以看到,输入关键字 `juej`,Google 搜索会联想到“掘金”、“掘金小册”、“绝句”等等,好处就是,我们无须输入完整的关键字即可轻松完成针对这些 topics 的搜索。\r\n\r\n谷歌搜索的自动补全功能对于使用移动设备的用户来说特别有用,用户可以轻松在难以键入的小屏幕上完成搜索。当然,对于移动设备用户和台式机用户而言,这都节省了大量的时间。根据 Google 官方报告,自动补全功能可以减少大约 25% 的打字,累积起来,预计每天可以节省 200 多年的打字时间。是的,每天!\r\n\r\n> 注意,本文所提到的“**联想词**”与“**预测**”,是同一个意思。\r\n\r\n## 基于“预测”而非“建议”\r\n\r\nGoogle 官方将自动补全功能称之为“预测”,而不是“建议”,为什么呢?其实是有充分理由的。自动补全功能是为了**帮助用户完成他们打算进行的搜索**,而不是建议用户要执行什么搜索。\r\n\r\n那么,Google 是如何确定这些“预测”的?其实,Google 会根据趋势搜索 [trends](https://trends.google.com/trends/?geo=US) 给到我们这些“预测”。简单来说,哪个热门、哪个搜索频率高,就更可能推给我们。当然,这也与我们当前所处的位置以及我们的搜索历史相关。\r\n\r\n另外,这些“预测”也会随着我们键入的关键字的变更而更改。例如,当我们把键入的关键字从 `juej` 更改为 `juex` 时,与“掘金”相关的预测会“消失”,同时,与“觉醒”、“决心”相关联的词会出现。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juex.gif)\r\n\r\n## 为什么看不到某些联想词?\r\n\r\n如果我们在输入某个关键字时看不到联想词,那么表明 Google 的算法可能检测到:\r\n\r\n- 这个关键字不是热门字词;\r\n- 搜索的字词太新了,我们可能需要等待几天或几周才能看到联想词;\r\n- 这是一个侮辱性或敏感字词,这个搜索字词违反了 Google 的相关政策。更加详细的情况,可以了解 [Google 搜索自动补全政策](https://support.google.com/websearch/answer/7368877)。\r\n\r\n## 为什么会看到某些不当的联想词?\r\n\r\nGoogle 拥有专门设计的系统,可以自动捕获不适当的预测结果而不显示出来。然而,Google 每天需要处理数十亿次搜索,这意味着 Google 每天会显示数十亿甚至上百亿条预测。再好的系统,也可能存在缺陷,不正确的预测也可能随时会出现。\r\n\r\n我们作为 Google 搜索的用户,如果认定某条预测违反了相关的搜索自动补全政策,可以进行举报反馈,点击右下角“**举报不当的联想查询**”并勾选相关选项即可。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/report.gif)\r\n\r\n## 如何实现自动补全算法?\r\n\r\n目前,Google 官方似乎并没有公开搜索自动补全的算法实现,但是业界在这方面已经有了不少研究。\r\n\r\n一个好的自动补全器必须是快速的,并且在用户键入下一个字符后立即更新联想词列表。**自动补全器的核心是一个函数,它接受输入的前缀,并搜索以给定前缀开头的词汇或语句列表**。通常来说,只需要返回少量的数目即可。\r\n\r\n接下来,我们先从一个简单且低效的实现开始,并在此基础上逐步构建更高效的方法。\r\n\r\n### 词汇表实现\r\n\r\n一个**简单粗暴的实现方式**是:顺序查找词汇表,依次检查每个词汇,看它是否以给定的前缀开头。\r\n\r\n但是,此方法需要将前缀与每个词汇进行匹配检查,若词汇量较少,这种方式可能勉强行得通。但是,如果词汇量规模较大,效率就太低了。\r\n\r\n一个**更好的实现方式是**:让词汇按字典顺序排序。借助二分搜索算法,可以快速搜索有序词汇表中的前缀。由于二分搜索的每一步都会将搜索的范围减半,因此,总的搜索时间与词汇表中单词数量的对数成正比,即时间复杂度是 `O(log N)`。二分搜索的性能很好,但有没有更好的实现呢?当然有,往下看。\r\n\r\n### 前缀树实现\r\n\r\n通常来说,许多词汇都以相同的前缀开头,比如 `need`、`nested` 都以 `ne` 开头,`seed`、`speed` 都以 `s` 开头。要是为每个单词分别存储公共前缀似乎很浪费。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/pretree.png)\r\n\r\n前缀树是一种利用公共前缀来加速补全速度的数据结构。前缀树在节点树中排列一组单词,单词沿着从根节点到叶子节点的路径存储,树的层次对应于前缀的字母位置。\r\n\r\n前缀的补全是顺着前缀定义的路径来查找的。例如,在上图的前缀树中,前缀 `ne` 对应于从子节点取左边缘 `N` 和唯一边缘 `E` 的路径。然后可以通过继续遍历从 `E` 节点可以达到的所有叶节点来生成补全列表。在图中,`ne` 的补全可以是两个分支:`-ed` 和 `-sted`。如果在数中找不到由前缀定义的路径,则说明词汇表中不包含以该前缀开头的单词。\r\n\r\n### 有限状态自动机(DFA)实现\r\n\r\n前缀树可以有效处理公共前缀,但是,对于其他共享词部分,仍会分别存储在每个分支中。比如,后缀 `ed`、`ing`、`tion` 在英文单词中特别常见。在上一个例子中,`e`、`d` 分别存放在了每一个分支上。\r\n\r\n有没有一种方法可以更加节省存储空间呢?有的,那就是 DFA。\r\n\r\n
\r\n
\r\n\r\n在上面的例子中,单词 `need`、`nested`、`seed` 和 `speed` 仅由 9 个节点组成,而上一张图中的前缀树包含了 17 个节点。\r\n\r\n可以看出,最小化前缀树 DFA 可以在很大程度上减少数据结构的大小。即使词汇量很大,最小化 DFA 通常也适合在内存中存储,避免昂贵的磁盘访问是实现快速自动补全的关键。\r\n\r\n### 一些扩展\r\n\r\n上面介绍了如何利用合理的数据结构实现基本的自动补全功能。这些数据结构可以通过多种方式进行扩展,从而改善用户体验。\r\n\r\n通常,满足特定前缀的词汇可能很多,而用户界面上能够显示的却不多,我们更希望能显示最常搜索或者最有价值的词汇。这通常可以通过为词汇表中的每个单词增加一个代表单词值的**权重** `weight`,并且按照权重高低来排序自动补全列表。\r\n\r\n- 对于排序后的词汇表来说,在词汇表每个元素上增加 `weight` 属性并不难;\r\n- 对于前缀树来说,将 `weight` 存储在叶子节点中,也是很简单的一个实现;\r\n- 对于 `DFA` 来说,则较为复杂。因为一个叶子节点可以通过多条路径到达。一种解决方案是将权重关联到路径而不是叶子节点。\r\n\r\n目前有不少开源库都提供了这个功能,比如主流的搜索引擎框架 [Elasticsearch](https://www.elastic.co/products/elasticsearch)、[Solr](https://lucene.apache.org/solr/) 等,基于此,我们可以实现高效而强大的自动补全功能。\r\n\r\n#### 推荐阅读\r\n\r\n- [阿里又一个 20k+ stars 开源项目诞生,恭喜 fastjson!](https://mp.weixin.qq.com/s/RNKDCK2KoyeuMeEs6GUrow)\r\n- [刷掉 90% 候选人的互联网大厂海量数据面试题(附题解 + 方法总结)](https://mp.weixin.qq.com/s/rjGqxUvrEqJNlo09GrT1Dw)\r\n- [好用!期待已久的文本块功能究竟如何在 Java 13 中发挥作用?](https://mp.weixin.qq.com/s/kalGv5T8AZGxTnLHr2wDsA)\r\n- [2019 GitHub 开源贡献排行榜新鲜出炉!微软谷歌领头,阿里跻身前 12!](https://mp.weixin.qq.com/s/_q812aGD1b9QvZ2WFI0Qgw)\r\n\r\n---\r\n\r\n欢迎关注我的公众号“**Doocs 开源社区**”,原创技术文章第一时间推送。\r\n\r\n
\r\n \r\n
\r\n',v="/*\r\n 按Ctrl+F可格式化\r\n*/\r\n/* 一级标题样式 */\r\nh1 {\r\n}\r\n/* 二级标题样式 */\r\nh2 {\r\n}\r\n/* 三级标题样式 */\r\nh3 {\r\n}\r\n/* 四级标题样式 */\r\nh4 {\r\n}\r\n/* 图片样式 */\r\nimage {\r\n}\r\n/* 引用样式 */\r\nblockquote {\r\n}\r\n/* 引用段落样式 */\r\nblockquote_p {\r\n}\r\n/* 段落样式 */\r\np {\r\n}\r\n/* 行内代码样式 */\r\ncodespan {\r\n}\r\n/* 粗体样式 */\r\nstrong {\r\n}\r\n/* 链接样式 */\r\nlink {\r\n}\r\n/* 微信链接样式 */\r\nwx_link {\r\n}\r\n/* 有序列表样式 */\r\nol {\r\n}\r\n/* 无序列表样式 */\r\nul {\r\n}\r\n/* 列表项样式 */\r\nli {\r\n}",O=o("3835"),k=(o("e9c4"),o("4160"),o("d3b7"),o("159b"),o("498a"),o("4de4"),o("b64b"),o("fb6a"),o("3ca3"),o("ddb0"),o("2b3d"),o("9861"),o("a630"),o("caad"),o("2532"),o("00b4"),o("b0c0"),o("4fad"),o("4e82"),o("466d"),{BASE:{"text-align":"left",color:"#3f3f3f","line-height":"1.75"},BASE_BLOCK:{margin:"1em 8px"},block:{h1:{"font-size":"1.2em","text-align":"center","font-weight":"bold",display:"table",margin:"2em auto 1em",padding:"0 1em","border-bottom":"2px solid rgba(0, 152, 116, 0.9)"},h2:{"font-size":"1.2em","text-align":"center","font-weight":"bold",display:"table",margin:"4em auto 2em",padding:"0 0.2em",background:"rgba(0, 152, 116, 0.9)",color:"#fff"},h3:{"font-weight":"bold","font-size":"1.1em",margin:"2em 8px 0.75em 0","line-height":"1.2","padding-left":"8px","border-left":"3px solid rgba(0, 152, 116, 0.9)"},h4:{"font-weight":"bold","font-size":"1em",margin:"2em 8px 0.5em",color:"rgba(66, 185, 131, 0.9)"},p:{margin:"1.5em 8px","letter-spacing":"0.1em"},blockquote:{"font-style":"normal","border-left":"none",padding:"1em","border-radius":"8px",color:"rgba(0,0,0,0.5)",background:"#f7f7f7",margin:"2em 8px"},blockquote_p:{"letter-spacing":"0.1em",color:"rgb(80, 80, 80)","font-size":"1em",display:"block"},code:{"font-size":"80%",overflow:"auto",color:"#333","white-space":"pre",background:"rgb(247, 247, 247)","border-radius":"8px",padding:"10px","line-height":"1.5",border:"1px solid rgb(236,236,236)",margin:"20px 0"},image:{"border-radius":"4px",display:"block",margin:"0.1em auto 0.5em",width:"100% !important"},image_org:{"border-radius":"4px",display:"block"},ol:{"margin-left":"0","padding-left":"1em"},ul:{"margin-left":"0","padding-left":"1em","list-style":"circle"},footnotes:{margin:"0.5em 8px","font-size":"80%"},figure:{margin:"1.5em 8px"}},inline:{listitem:{"text-indent":"-1em",display:"block",margin:"0.2em 8px"},codespan:{"font-size":"90%","white-space":"pre",color:"#d14",background:"rgba(27,31,35,.05)",padding:"3px 5px","border-radius":"4px"},link:{color:"#576b95"},wx_link:{color:"#576b95","text-decoration":"none"},strong:{color:"rgba(15, 76, 129, 0.9)","font-weight":"bold"},table:{"border-collapse":"collapse","text-align":"center",margin:"1em 8px"},thead:{background:"rgba(0, 0, 0, 0.05)","font-weight":"bold"},td:{border:"1px solid #dfdfdf",padding:"0.25em 0.5em"},footnote:{"font-size":"12px"},figcaption:{"text-align":"center",color:"#888","font-size":"0.8em"}}}),E=o("325b"),S=o.n(E),y=o("4fc3"),w=o.n(y),x=o("d238"),M=o.n(x);function T(e){return function(t){var o=JSON.parse(JSON.stringify(e));return o.block.h1["border-bottom"]="2px solid ".concat(t),o.block.h2["background"]=t,o.block.h3["border-left"]="3px solid ".concat(t),o.block.h4["color"]=t,o.inline.strong["color"]=t,o}}var D=function(e,t){var o=JSON.parse(JSON.stringify(e));return o.block.h1["border-bottom"]="2px solid ".concat(t),o.block.h2["background"]=t,o.block.h3["border-left"]="3px solid ".concat(t),o.block.h4["color"]=t,o.inline.strong["color"]=t,o};function P(e){return function(t){var o=JSON.parse(JSON.stringify(e));return o.block.h1["font-size"]="".concat(1.14*t,"px"),o.block.h2["font-size"]="".concat(1.1*t,"px"),o.block.h3["font-size"]="".concat(t,"px"),o.block.h4["font-size"]="".concat(t,"px"),o}}var j=T(k),I=P(k);function A(e,t,o){var n=JSON.parse(JSON.stringify(o));return n.block.h1["border-bottom"]="2px solid ".concat(t),n.block.h2["background"]=t,n.block.h3["border-left"]="3px solid ".concat(t),n.block.h4["color"]=t,n.inline.strong["color"]=t,n.block.h1=Object.assign(n.block.h1,e.h1),n.block.h2=Object.assign(n.block.h2,e.h2),n.block.h3=Object.assign(n.block.h3,e.h3),n.block.h4=Object.assign(n.block.h4,e.h4),n.block.p=Object.assign(n.block.p,e.p),n.block.blockquote=Object.assign(n.block.blockquote,e.blockquote),n.block.blockquote_p=Object.assign(n.block.blockquote_p,e.blockquote_p),n.block.image=Object.assign(n.block.image,e.image),n.inline.strong=Object.assign(n.inline.strong,e.strong),n.inline.codespan=Object.assign(n.inline.codespan,e.codespan),n.inline.link=Object.assign(n.inline.link,e.link),n.inline.wx_link=Object.assign(n.inline.wx_link,e.wx_link),n.block.ul=Object.assign(n.block.ul,e.ul),n.block.ol=Object.assign(n.block.ol,e.ol),n.inline.listitem=Object.assign(n.inline.listitem,e.li),n}function R(e){var t,o;while(-1!==(t=e.indexOf("/*"))&&-1!==(o=e.indexOf("*/")))e=e.substring(0,t)+e.substring(o+2);var n={},r=function(){var t=e.indexOf("{"),o=e.indexOf("}");function r(e){var t={};return e.forEach((function(e){var o=e.indexOf(":"),n=e.substring(0,o).trim(),r=e.substring(o+1).trim();t[n]=r})),t}var i=e.substring(t+1,o).split(";").map((function(e){return e.trim()})).filter((function(e){return e.length>0}));i=r(i);var a=e.substring(0,t).split(",").map((function(e){return e.trim()}));a.forEach((function(e){n[e]||(n[e]={}),Object.keys(i).forEach((function(t){n[e][t]=i[t]}))})),e=e.slice(o+1).trim()};while(e.length>0&&-1!==e.indexOf("{")&&-1!==e.indexOf("}"))r();return n}function U(e,t){var o=e.getValue(0);o?localStorage.setItem(t,o):localStorage.removeItem(t)}function K(e){var t=S.a.format(e,{parser:"markdown",plugins:[w.a]});return t}function L(e){var t=S.a.format(e,{parser:"css",plugins:[M.a]});return t}function B(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"pre",t=document.getElementsByClassName("code__pre");t.length>0&&t.forEach((function(t){t.style.whiteSpace=e}))}function $(e){var t=document.createElement("a");t.download="content.md",t.style.display="none";var o=new Blob([e]);t.href=URL.createObjectURL(o),document.body.appendChild(t),t.click(),document.body.removeChild(t)}function q(){var e=document.querySelector("#output");r(e);var t=e.innerHTML,o=document.createElement("a");o.download="content.html",o.style.display="none";var n=new Blob(['
'.concat(t,"
")]);function r(e){switch(!0){case t(e):case o(e):case n(e):case i(e):e.setAttribute("style",H(e));default:}function t(e){return"SECTION"===e.tagName&&Array.from(e.classList).includes("code-snippet__github")}function o(e){return"PRE"===e.tagName&&Array.from(e.classList).includes("code__pre")}function n(e){return"CODE"===e.tagName&&Array.from(e.classList).includes("prettyprint")}function i(e){return"SPAN"===e.tagName&&(n(e.parentElement)||n(e.parentElement.parentElement))}e.children.length&&Array.from(e.children).forEach((function(e){return r(e)}))}o.href=URL.createObjectURL(n),document.body.appendChild(o),o.click(),document.body.removeChild(o)}function W(e){for(var t=e.data,o=e.rows,n=e.cols,r="",i=[],a=0;a1?a-1:a;1===a?i.push("---\t"):i.push(t["k_".concat(c,"_").concat(s)]||"")}r+=i.join("\t|\t"),r+="\t|\n"}return r}var G=function(e){return new Promise((function(t,o){var n=new FileReader;n.readAsDataURL(e),n.onload=function(){return t(n.result.split(",").pop())},n.onerror=function(e){return o(e)}}))};function F(e){var t=/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(e.name);if(!t)return{ok:!1,msg:"请上传 JPG/PNG/GIF 格式的图片"};var o=10,n=e.size/1024/1024<=o;return n?{ok:!0}:{ok:!1,msg:"由于公众号限制,图片大小不能超过 ".concat(o,"M")}}function H(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["width","height"],o=getComputedStyle(e,null);return Object.entries(o).filter((function(e){var n=Object(O["a"])(e,1),r=n[0];return o.getPropertyValue(r)&&!t.includes(r)})).map((function(e){var t=Object(O["a"])(e,2),o=t[0],n=t[1];return"".concat(o,":").concat(n,";")})).join("")}function z(e){var t=e.split("\n"),o=t.filter((function(e){return e.trim()})).map((function(e){return e.match(/(^\s+)?/)[0].length})).sort((function(e,t){return e-t}))[0],n=t.map((function(e){return e.slice(o)})).join("\n");return n}r["default"].use(d["a"]);var N={wxRenderer:null,output:"",html:"",editor:null,cssEditor:null,currentFont:"",currentSize:"",currentColor:"",citeStatus:0,nightMode:!1,codeTheme:"github",rightClickMenuVisible:!1},V={setEditorValue:function(e,t){e.editor.setValue(t)},setCssEditorValue:function(e,t){e.cssEditor.setValue(t)},setWxRendererOptions:function(e,t){e.wxRenderer.setOptions(t)},setCiteStatus:function(e,t){e.citeStatus=t,localStorage.setItem("citeStatus",t)},setCurrentFont:function(e,t){e.currentFont=t,localStorage.setItem("fonts",t)},setCurrentSize:function(e,t){e.currentSize=t,localStorage.setItem("size",t)},setCurrentColor:function(e,t){e.currentColor=t,localStorage.setItem("color",t)},setCurrentCodeTheme:function(e,t){e.codeTheme=t,localStorage.setItem("codeTheme",t)},setRightClickMenuVisible:function(e,t){e.rightClickMenuVisible=t},themeChanged:function(e){e.nightMode=!e.nightMode,localStorage.setItem("nightMode",e.nightMode)},initEditorState:function(e){e.currentFont=localStorage.getItem("fonts")||_.builtinFonts[0].value,e.currentColor=localStorage.getItem("color")||_.colorOption[0].value,e.currentSize=localStorage.getItem("size")||_.sizeOption[2].value,e.codeTheme=localStorage.getItem("codeTheme")||_.codeThemeOption[0].value,e.citeStatus="true"===localStorage.getItem("citeStatus"),e.nightMode="true"===localStorage.getItem("nightMode"),e.wxRenderer=new g({theme:j(e.currentColor),fonts:e.currentFont,size:e.currentSize})},initEditorEntity:function(e){var t=document.getElementById("editor");t.value||(t.value=localStorage.getItem("__editor_content")||K(C)),e.editor=b.a.fromTextArea(t,{mode:"text/x-markdown",theme:"xq-light",lineNumbers:!1,lineWrapping:!0,styleActiveLine:!0,autoCloseBrackets:!0,extraKeys:{"Ctrl-F":function(e){var t=K(e.getValue(0));localStorage.setItem("__editor_content",t),e.setValue(t)},"Ctrl-S":function(e){},"Ctrl-B":function(e){var t=e.getSelection();e.replaceSelection("**".concat(t,"**"))},"Ctrl-D":function(e){var t=e.getSelection();e.replaceSelection("~~".concat(t,"~~"))},"Ctrl-I":function(e){var t=e.getSelection();e.replaceSelection("*".concat(t,"*"))}}})},initCssEditorEntity:function(e){var t=document.getElementById("cssEditor");t.value||(t.value=localStorage.getItem("__css_content")||v),e.cssEditor=b.a.fromTextArea(t,{mode:"css",theme:"style-mirror",lineNumbers:!1,lineWrapping:!0,matchBrackets:!0,autofocus:!0,extraKeys:{"Ctrl-F":function(e){var t=L(e.getValue(0));localStorage.setItem("__css_content",t),e.setValue(t)},"Ctrl-S":function(e){}}})},editorRefresh:function(e){var t=e.wxRenderer.getRenderer(e.citeStatus);f["marked"].setOptions({renderer:t});var o=f["marked"].parse(e.editor.getValue(0));o=o.replace(/(style=".*?)"/,'$1;margin-top: 0"'),e.citeStatus&&(o+=e.wxRenderer.buildFootnotes(),o+=e.wxRenderer.buildAddition()),e.output=o}},Q=new d["a"].Store({state:N,mutations:V,actions:{}}),J=o("5c96"),Y=o.n(J);o("0fae");r["default"].component(J["Message"].name,J["Message"]),r["default"].prototype.$loading=J["Loading"].service,r["default"].prototype.$message=J["Message"];o("a7be"),o("8d7e"),o("7b00"),o("959b"),o("10b2"),o("8c33"),o("31c5"),o("9b74"),o("111b");var Z=o("8c4f"),X=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loading?o("transition",{attrs:{name:"fade"}},[o("loading")],1):o("codemirror-editor")},ee=[],te=(o("4795"),o("3a5e")),oe=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"container",class:{container_night:e.nightMode}},[o("el-container",[o("el-header",{staticClass:"editor__header"},[o("editor-header",{ref:"header",on:{refresh:e.onEditorRefresh,cssChanged:e.cssChanged,download:e.downloadEditorContent,export:e.exportEditorContent,showCssEditor:function(t){e.showCssEditor=!e.showCssEditor},"show-about-dialog":function(t){e.aboutDialogVisible=!0},"show-dialog-form":function(t){e.dialogFormVisible=!0},"show-dialog-upload-img":function(t){e.dialogUploadImgVisible=!0},startCopy:function(t){e.isCoping=!0,e.backLight=!0},endCopy:e.endCopy}})],1),o("el-main",{staticClass:"main-body"},[o("el-row",{staticClass:"main-section"},[o("el-col",{staticClass:"codeMirror-wrapper",attrs:{span:12},nativeOn:{contextmenu:function(t){return t.preventDefault(),e.openMenu(t)}}},[o("textarea",{directives:[{name:"model",rawName:"v-model",value:e.source,expression:"source"}],attrs:{id:"editor",type:"textarea",placeholder:"Your markdown text here."},domProps:{value:e.source},on:{input:function(t){t.target.composing||(e.source=t.target.value)}}})]),o("el-col",{ref:"preview",staticClass:"preview-wrapper",class:{"preview-wrapper_night":e.nightMode&&e.isCoping},attrs:{span:12,id:"preview"}},[o("section",{class:{output_night:e.nightMode&&!e.backLight},attrs:{id:"output-wrapper"}},[o("div",{staticClass:"preview"},[o("section",{attrs:{id:"output"},domProps:{innerHTML:e._s(e.output)}}),e.nightMode&&e.isCoping?o("div",{staticClass:"loading-mask"},[o("div",{staticClass:"loading__img"}),o("span",[e._v("正在生成")])]):e._e()])])]),o("transition",{attrs:{name:"custom-classes-transition","enter-active-class":"bounceInRight"}},[o("el-col",{directives:[{name:"show",rawName:"v-show",value:e.showCssEditor,expression:"showCssEditor"}],staticClass:"cssEditor-wrapper",attrs:{id:"cssBox",span:12}},[o("textarea",{attrs:{id:"cssEditor",type:"textarea",placeholder:"Your custom css here."}})])],1)],1)],1)],1),o("upload-img-dialog",{on:{close:function(t){e.dialogUploadImgVisible=!1},beforeUpload:e.beforeUpload,uploadImage:e.uploadImage,uploaded:e.uploaded},model:{value:e.dialogUploadImgVisible,callback:function(t){e.dialogUploadImgVisible=t},expression:"dialogUploadImgVisible"}}),o("about-dialog",{model:{value:e.aboutDialogVisible,callback:function(t){e.aboutDialogVisible=t},expression:"aboutDialogVisible"}}),o("insert-form-dialog",{model:{value:e.dialogFormVisible,callback:function(t){e.dialogFormVisible=t},expression:"dialogFormVisible"}}),o("right-click-menu",{attrs:{left:e.mouseLeft,top:e.mouseTop},on:{menuTick:e.onMenuEvent,closeMenu:e.closeRightClickMenu},model:{value:e.rightClickMenuVisible,callback:function(t){e.rightClickMenuVisible=t},expression:"rightClickMenuVisible"}})],1)},ne=[],re=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("el-container",{staticClass:"top is-dark"},[o("div",{staticClass:"left-side"},[o("el-tooltip",{attrs:{effect:e.effect,content:"上传图片",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-upload",attrs:{size:"medium"},on:{click:function(t){return e.$emit("show-dialog-upload-img")}}})]),o("el-tooltip",{staticClass:"header__item",attrs:{effect:e.effect,content:"导出 Markdown 文档",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-download",attrs:{size:"medium"},on:{click:function(t){return e.$emit("download")}}})]),o("el-tooltip",{staticClass:"header__item",attrs:{effect:e.effect,content:"导出 HTML 页面",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-document",attrs:{size:"medium"},on:{click:function(t){return e.$emit("export")}}})]),o("el-tooltip",{staticClass:"header__item",attrs:{effect:e.effect,content:"重置样式",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-refresh",attrs:{size:"medium"},on:{click:function(t){e.showResetConfirm=!0}}})]),o("el-tooltip",{staticClass:"header__item header__item_last",attrs:{effect:e.effect,content:"插入表格",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-s-grid",attrs:{size:"medium"},on:{click:function(t){return e.$emit("show-dialog-form")}}})]),o("el-select",{attrs:{size:"mini",placeholder:"选择字体",clearable:""},on:{change:e.fontChanged},model:{value:e.selectFont,callback:function(t){e.selectFont=t},expression:"selectFont"}},e._l(e.config.builtinFonts,(function(t){return o("el-option",{key:t.value,style:{fontFamily:t.value},attrs:{label:t.label,value:t.value}},[o("span",{staticClass:"select-item-left"},[e._v(e._s(t.label))]),o("span",{staticClass:"select-item-right"},[e._v("Abc")])])})),1),o("el-select",{attrs:{size:"mini",placeholder:"选择段落字号",clearable:""},on:{change:e.sizeChanged},model:{value:e.selectSize,callback:function(t){e.selectSize=t},expression:"selectSize"}},e._l(e.config.sizeOption,(function(t){return o("el-option",{key:t.value,attrs:{label:t.label,value:t.value}},[o("span",{staticClass:"select-item-left"},[e._v(e._s(t.label))]),o("span",{staticClass:"select-item-right"},[e._v(e._s(t.desc))])])})),1),o("el-select",{attrs:{size:"mini",placeholder:"选择颜色",clearable:""},on:{change:e.colorChanged},model:{value:e.selectColor,callback:function(t){e.selectColor=t},expression:"selectColor"}},e._l(e.config.colorOption,(function(t){return o("el-option",{key:t.value,attrs:{label:t.label,value:t.value}},[o("span",{staticClass:"select-item-left"},[e._v(e._s(t.label))]),o("span",{staticClass:"select-item-right"},[e._v(e._s(t.desc))])])})),1),o("el-tooltip",{attrs:{content:"自定义颜色",effect:e.effect,placement:"top"}},[o("el-color-picker",{attrs:{size:"mini","show-alpha":""},on:{change:e.colorChanged},model:{value:e.selectColor,callback:function(t){e.selectColor=t},expression:"selectColor"}})],1),o("el-tooltip",{attrs:{content:"微信外链自动转为文末引用",effect:e.effect,placement:"top"}},[o("el-switch",{staticClass:"header__switch",attrs:{"active-color":"#67c23a","inactive-color":"#dcdfe6"},on:{change:e.statusChanged},model:{value:e.citeStatus,callback:function(t){e.citeStatus=t},expression:"citeStatus"}})],1)],1),o("div",{staticClass:"right-side"},[o("el-tooltip",{staticClass:"item",attrs:{effect:e.effect,content:"自定义CSS样式",placement:"left"}},[o("el-button",{attrs:{type:e.btnType,plain:"",size:"medium",icon:"el-icon-setting"},on:{click:e.customStyle}})],1),o("el-button",{attrs:{type:e.btnType,plain:"",size:"medium",placement:"bottom-start"},on:{click:e.copy}},[e._v("复制")]),o("el-button",{staticClass:"about",attrs:{type:e.btnType,plain:"",size:"medium"},on:{click:function(t){return e.$emit("show-about-dialog")}}},[e._v("关于")]),o("el-tooltip",{attrs:{content:e.btnContent,effect:e.effect,placement:"bottom-start"}},[e.nightMode?o("div",{staticClass:"mode__switch mode__switch_black",on:{click:e.themeChanged}}):o("div",{staticClass:"mode__switch",on:{click:e.themeChanged}})])],1),o("resetDialog",{attrs:{showResetConfirm:e.showResetConfirm},on:{confirm:e.confirmReset,close:e.cancelReset}})],1)},ie=[],ae=o("1da1"),se=(o("96cf"),o("466b")),ce=o.n(se);function le(){for(var e=document.getElementById("output"),t=e.getElementsByTagName("img"),o=0;o安全设置->私人令牌」中生成")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveGiteeConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"GitHub 图床",name:"github"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formGitHub,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"GitHub 仓库",required:!0}},[o("el-input",{attrs:{placeholder:"如:github.com/yanglbme/resource"},model:{value:e.formGitHub.repo,callback:function(t){e.$set(e.formGitHub,"repo","string"===typeof t?t.trim():t)},expression:"formGitHub.repo"}})],1),o("el-form-item",{attrs:{label:"分支"}},[o("el-input",{attrs:{placeholder:"如:release,可不填,默认 master"},model:{value:e.formGitHub.branch,callback:function(t){e.$set(e.formGitHub,"branch","string"===typeof t?t.trim():t)},expression:"formGitHub.branch"}})],1),o("el-form-item",{attrs:{label:"Token",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:cc1d0c1426d0fd0902bd2d7184b14da61b8abc46"},model:{value:e.formGitHub.accessToken,callback:function(t){e.$set(e.formGitHub,"accessToken","string"===typeof t?t.trim():t)},expression:"formGitHub.accessToken"}}),o("el-link",{attrs:{type:"primary",href:"https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token",target:"_blank"}},[e._v("如何获取 GitHub Token?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveGitHubConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"阿里云 OSS",name:"aliOSS"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formAliOSS,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"AccessKey ID",required:!0}},[o("el-input",{attrs:{placeholder:"如:LTAI4GdoocsmdoxUf13ylbaNHk"},model:{value:e.formAliOSS.accessKeyId,callback:function(t){e.$set(e.formAliOSS,"accessKeyId","string"===typeof t?t.trim():t)},expression:"formAliOSS.accessKeyId"}})],1),o("el-form-item",{attrs:{label:"AccessKey Secret",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:cc1d0c142doocs0902bd2d7md4b14da6ylbabc46"},model:{value:e.formAliOSS.accessKeySecret,callback:function(t){e.$set(e.formAliOSS,"accessKeySecret","string"===typeof t?t.trim():t)},expression:"formAliOSS.accessKeySecret"}})],1),o("el-form-item",{attrs:{label:"Bucket",required:!0}},[o("el-input",{attrs:{placeholder:"如:doocs"},model:{value:e.formAliOSS.bucket,callback:function(t){e.$set(e.formAliOSS,"bucket","string"===typeof t?t.trim():t)},expression:"formAliOSS.bucket"}})],1),o("el-form-item",{attrs:{label:"Bucket 所在区域",required:!0}},[o("el-input",{attrs:{placeholder:"如:oss-cn-shenzhen"},model:{value:e.formAliOSS.region,callback:function(t){e.$set(e.formAliOSS,"region","string"===typeof t?t.trim():t)},expression:"formAliOSS.region"}})],1),o("el-form-item",{attrs:{label:"自定义 CDN 域名",required:!1}},[o("el-input",{attrs:{placeholder:"如:https://imagecdn.alidaodao.com,可不填"},model:{value:e.formAliOSS.cdnHost,callback:function(t){e.$set(e.formAliOSS,"cdnHost","string"===typeof t?t.trim():t)},expression:"formAliOSS.cdnHost"}})],1),o("el-form-item",{attrs:{label:"存储路径"}},[o("el-input",{attrs:{placeholder:"如:img,可不填,默认为根目录"},model:{value:e.formAliOSS.path,callback:function(t){e.$set(e.formAliOSS,"path","string"===typeof t?t.trim():t)},expression:"formAliOSS.path"}}),o("el-link",{attrs:{type:"primary",href:"https://help.aliyun.com/document_detail/31883.html",target:"_blank"}},[e._v("如何使用阿里云 OSS?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveAliOSSConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"腾讯云 COS",name:"txCOS"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formTxCOS,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"SecretId",required:!0}},[o("el-input",{attrs:{placeholder:"如:AKIDnQp1w3DOOCSs8F5MDp9tdoocsmdUPonW3"},model:{value:e.formTxCOS.secretId,callback:function(t){e.$set(e.formTxCOS,"secretId","string"===typeof t?t.trim():t)},expression:"formTxCOS.secretId"}})],1),o("el-form-item",{attrs:{label:"SecretKey",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:ukLmdtEJ9271f3DOocsMDsCXdS3YlbW0"},model:{value:e.formTxCOS.secretKey,callback:function(t){e.$set(e.formTxCOS,"secretKey","string"===typeof t?t.trim():t)},expression:"formTxCOS.secretKey"}})],1),o("el-form-item",{attrs:{label:"Bucket",required:!0}},[o("el-input",{attrs:{placeholder:"如:doocs-3212520134"},model:{value:e.formTxCOS.bucket,callback:function(t){e.$set(e.formTxCOS,"bucket","string"===typeof t?t.trim():t)},expression:"formTxCOS.bucket"}})],1),o("el-form-item",{attrs:{label:"Bucket 所在区域",required:!0}},[o("el-input",{attrs:{placeholder:"如:ap-guangzhou"},model:{value:e.formTxCOS.region,callback:function(t){e.$set(e.formTxCOS,"region","string"===typeof t?t.trim():t)},expression:"formTxCOS.region"}})],1),o("el-form-item",{attrs:{label:"自定义 CDN 域名",required:!1}},[o("el-input",{attrs:{placeholder:"如:https://imagecdn.alidaodao.com,可不填"},model:{value:e.formTxCOS.cdnHost,callback:function(t){e.$set(e.formTxCOS,"cdnHost","string"===typeof t?t.trim():t)},expression:"formTxCOS.cdnHost"}})],1),o("el-form-item",{attrs:{label:"存储路径"}},[o("el-input",{attrs:{placeholder:"如:img,可不填,默认根目录"},model:{value:e.formTxCOS.path,callback:function(t){e.$set(e.formTxCOS,"path","string"===typeof t?t.trim():t)},expression:"formTxCOS.path"}}),o("el-link",{attrs:{type:"primary",href:"https://cloud.tencent.com/document/product/436/38484",target:"_blank"}},[e._v("如何使用腾讯云 COS?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveTxCOSConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"七牛云 Kodo",name:"qiniu"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formQiniu,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"AccessKey",required:!0}},[o("el-input",{attrs:{placeholder:"如:6DD3VaLJ_SQgOdoocsyTV_YWaDmdnL2n8EGx7kG"},model:{value:e.formQiniu.accessKey,callback:function(t){e.$set(e.formQiniu,"accessKey","string"===typeof t?t.trim():t)},expression:"formQiniu.accessKey"}})],1),o("el-form-item",{attrs:{label:"SecretKey",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:qgZa5qrvDOOcsmdKStD1oCjZ9nB7MDvJUs_34SIm"},model:{value:e.formQiniu.secretKey,callback:function(t){e.$set(e.formQiniu,"secretKey","string"===typeof t?t.trim():t)},expression:"formQiniu.secretKey"}})],1),o("el-form-item",{attrs:{label:"Bucket",required:!0}},[o("el-input",{attrs:{placeholder:"如:md"},model:{value:e.formQiniu.bucket,callback:function(t){e.$set(e.formQiniu,"bucket","string"===typeof t?t.trim():t)},expression:"formQiniu.bucket"}})],1),o("el-form-item",{attrs:{label:"Bucket 对应域名",required:!0}},[o("el-input",{attrs:{placeholder:"如:https://images.123ylb.cn"},model:{value:e.formQiniu.domain,callback:function(t){e.$set(e.formQiniu,"domain","string"===typeof t?t.trim():t)},expression:"formQiniu.domain"}})],1),o("el-form-item",{attrs:{label:"存储区域",required:!0}},[o("el-input",{attrs:{placeholder:"如:z2"},model:{value:e.formQiniu.region,callback:function(t){e.$set(e.formQiniu,"region","string"===typeof t?t.trim():t)},expression:"formQiniu.region"}})],1),o("el-form-item",{attrs:{label:"存储路径",required:!1}},[o("el-input",{attrs:{placeholder:"如:img,可不填,默认为根目录"},model:{value:e.formQiniu.path,callback:function(t){e.$set(e.formQiniu,"path","string"===typeof t?t.trim():t)},expression:"formQiniu.path"}}),o("el-link",{attrs:{type:"primary",href:"https://developer.qiniu.com/kodo",target:"_blank"}},[e._v("如何使用七牛云 Kodo?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveQiniuConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel formCustom",attrs:{label:"自定义代码",name:"formCustom"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formCustom,"label-position":"right"}},[o("el-form-item",{attrs:{label:"",required:!0}},[o("el-input",{ref:"formCustomElInput",staticClass:"formCustomElInput",attrs:{type:"textarea",resize:"none",placeholder:"Your custom code here."},model:{value:e.formCustom.code,callback:function(t){e.$set(e.formCustom,"code",t)},expression:"formCustom.code"}}),o("el-link",{attrs:{type:"primary",href:"https://github.com/doocs/md#自定义上传逻辑",target:"_blank"}},[e._v("参数详情?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.formCustomSave}},[e._v("保存配置")])],1)],1)],1)],1)],1)},$e=[],qe={props:{value:{type:Boolean,default:!1}},data:function(){return{activeName:"upload",formGitHub:{repo:"",branch:"",accessToken:""},formGitee:{repo:"",branch:"",accessToken:""},formAliOSS:{accessKeyId:"",accessKeySecret:"",bucket:"",region:"",path:"",cdnHost:""},formTxCOS:{secretId:"",secretKey:"",bucket:"",region:"",path:"",cdnHost:""},formQiniu:{accessKey:"",secretKey:"",bucket:"",domain:"",region:""},formCustom:{code:localStorage.getItem("formCustomConfig")||z("\n const {file, util, okCb, errCb} = CUSTOM_ARG\n const param = new FormData()\n param.append('file', file)\n util.axios.post('http://127.0.0.1:9000/upload', param, {\n headers: { 'Content-Type': 'multipart/form-data' }\n }).then(res => {\n okCb(res.url)\n }).catch(err => {\n errCb(err)\n })\n ").trim(),editor:void 0},options:[{value:"default",label:"默认"},{value:"gitee",label:"Gitee"},{value:"github",label:"GitHub"},{value:"aliOSS",label:"阿里云"},{value:"txCOS",label:"腾讯云"},{value:"qiniu",label:"七牛云"},{value:"formCustom",label:"自定义代码"}],imgHost:"default"}},created:function(){localStorage.getItem("githubConfig")&&(this.formGitHub=JSON.parse(localStorage.getItem("githubConfig"))),localStorage.getItem("giteeConfig")&&(this.formGitee=JSON.parse(localStorage.getItem("giteeConfig"))),localStorage.getItem("aliOSSConfig")&&(this.formAliOSS=JSON.parse(localStorage.getItem("aliOSSConfig"))),localStorage.getItem("txCOSConfig")&&(this.formTxCOS=JSON.parse(localStorage.getItem("txCOSConfig"))),localStorage.getItem("imgHost")&&(this.imgHost=localStorage.getItem("imgHost"))},methods:{changeImgHost:function(){localStorage.setItem("imgHost",this.imgHost),this.$message.success("已成功切换图床")},saveGitHubConfiguration:function(){if(this.formGitHub.repo&&this.formGitHub.accessToken)localStorage.setItem("githubConfig",JSON.stringify(this.formGitHub)),this.$message.success("保存成功");else{var e=this.formGitHub.repo?"token":"GitHub 仓库";this.$message.error("参数「​".concat(e,"」不能为空"))}},saveGiteeConfiguration:function(){if(this.formGitee.repo&&this.formGitee.accessToken)localStorage.setItem("giteeConfig",JSON.stringify(this.formGitee)),this.$message.success("保存成功");else{var e=this.formGitee.repo?"私人令牌":"Gitee 仓库";this.$message.error("参数「​".concat(e,"」不能为空"))}},saveAliOSSConfiguration:function(){this.formAliOSS.accessKeyId&&this.formAliOSS.accessKeySecret&&this.formAliOSS.bucket&&this.formAliOSS.region?(localStorage.setItem("aliOSSConfig",JSON.stringify(this.formAliOSS)),this.$message.success("保存成功")):this.$message.error("阿里云 OSS 参数配置不全")},saveTxCOSConfiguration:function(){this.formTxCOS.secretId&&this.formTxCOS.secretKey&&this.formTxCOS.bucket&&this.formTxCOS.region?(localStorage.setItem("txCOSConfig",JSON.stringify(this.formTxCOS)),this.$message.success("保存成功")):this.$message.error("腾讯云 COS 参数配置不全")},saveQiniuConfiguration:function(){this.formQiniu.accessKey&&this.formQiniu.secretKey&&this.formQiniu.bucket&&this.formQiniu.domain&&this.formQiniu.region?(localStorage.setItem("qiniuConfig",JSON.stringify(this.formQiniu)),this.$message.success("保存成功")):this.$message.error("七牛云 Kodo 参数配置不全")},formCustomSave:function(){var e=this.formCustom.editor.getValue();localStorage.setItem("formCustomConfig",e),this.$message.success("保存成功")},beforeImageUpload:function(e){var t=F(e);if(!t.ok)return this.$message.error(t.msg),!1;var o=localStorage.getItem("imgHost");o=o||"default",localStorage.setItem("imgHost",o);var n=localStorage.getItem("".concat(o,"Config")),r="default"==o||n;return!!r||(this.$message.error("请先配置 ".concat(o," 图床参数")),!1)},uploadImage:function(e){this.$emit("uploadImage",e.file)}},watch:{activeName:{immediate:!0,handler:function(e){var t=this;"formCustom"===e&&this.$nextTick((function(){var e=t.$refs.formCustomElInput.$el.querySelector("textarea");t.formCustom.editor=t.formCustom.editor||b.a.fromTextArea(e,{mode:"javascript"}),t.formCustom.editor.setValue(t.formCustom.code)}))}}},mounted:function(){}},We=qe,Ge=(o("aaca"),Object(s["a"])(We,Be,$e,!1,null,"6b7f927f",null)),Fe=Ge.exports,He=o("3f5e");o("f9d4");var ze={data:function(){return{showCssEditor:!1,aboutDialogVisible:!1,dialogUploadImgVisible:!1,dialogFormVisible:!1,isCoping:!1,isImgLoading:!1,backLight:!1,timeout:null,changeTimer:null,source:"",mouseLeft:0,mouseTop:0}},components:{editorHeader:ve,aboutDialog:we,insertFormDialog:je,rightClickMenu:Le,uploadImgDialog:Fe},computed:Object(n["a"])({},Object(d["c"])({wxRenderer:function(e){return e.wxRenderer},output:function(e){return e.output},editor:function(e){return e.editor},cssEditor:function(e){return e.cssEditor},currentSize:function(e){return e.currentSize},currentColor:function(e){return e.currentColor},nightMode:function(e){return e.nightMode},rightClickMenuVisible:function(e){return e.rightClickMenuVisible}})),created:function(){var e=this;this.initEditorState(),this.$nextTick((function(){e.initEditor(),e.initCssEditor(),e.onEditorRefresh()}))},methods:Object(n["a"])({initEditor:function(){var e=this;this.initEditorEntity(),this.editor.on("change",(function(t,o){e.changeTimer&&clearTimeout(e.changeTimer),e.changeTimer=setTimeout((function(){e.onEditorRefresh(),U(e.editor,"__editor_content")}),300)})),this.editor.on("paste",(function(t,o){if(o.clipboardData&&o.clipboardData.items&&!e.isImgLoading)for(var n=0,r=o.clipboardData.items.length;n=65&&t.keyCode<=90||189===t.keyCode)&&e.showHint(t)})),this.cssEditor.on("update",(function(t){e.cssChanged(),U(e.cssEditor,"__css_content")}))},cssChanged:function(){var e=R(this.cssEditor.getValue(0)),t=I(this.currentSize.replace("px",""));t=A(e,this.currentColor,t),this.setWxRendererOptions({theme:t}),this.onEditorRefresh()},beforeUpload:function(e){var t=F(e);if(!t.ok)return this.$message.error(t.msg),!1;var o=localStorage.getItem("imgHost");o=o||"default",localStorage.setItem("imgHost",o);var n=localStorage.getItem("".concat(o,"Config")),r="default"==o||n;return!!r||(this.$message.error("请先配置 ".concat(o," 图床参数")),!1)},uploadImage:function(e){var t=this;this.isImgLoading=!0,G(e).then((function(o){He["a"].fileUpload(o,e).then((function(e){t.uploaded(e)}))["catch"]((function(e){t.$message.error(e.message)}))}))["catch"]((function(e){t.$message.error(e.message)})),this.isImgLoading=!1},uploaded:function(e){if(e){this.dialogUploadImgVisible=!1;var t=this.editor.getCursor(),o=e,n="![](".concat(o,")");this.editor.replaceSelection("\n".concat(n,"\n"),t),this.$message.success("图片上传成功"),this.onEditorRefresh()}else this.$message.error("上传图片未知异常")},leftAndRightScroll:function(){var e=this,t=function(t){var r,i;clearTimeout(e.timeout),"preview"===t?(r=e.$refs.preview.$el,i=document.getElementsByClassName("CodeMirror-scroll")[0],e.editor.off("scroll",o),e.timeout=setTimeout((function(){e.editor.on("scroll",o)}),300)):"editor"===t&&(r=document.getElementsByClassName("CodeMirror-scroll")[0],i=e.$refs.preview.$el,i.removeEventListener("scroll",n,!1),e.timeout=setTimeout((function(){i.addEventListener("scroll",n,!1)}),300));var a=r.scrollTop/(r.scrollHeight-r.offsetHeight),s=a*(i.scrollHeight-i.offsetHeight);i.scrollTo(0,s)},o=function(){t("editor")},n=function(){t("preview")};this.$refs.preview.$el.addEventListener("scroll",n,!1),this.editor.on("scroll",o)},onEditorRefresh:function(){this.editorRefresh(),setTimeout((function(){return PR.prettyPrint()}),0)},endCopy:function(){var e=this;this.backLight=!1,setTimeout((function(){e.isCoping=!1}),800)},downloadEditorContent:function(){$(this.editor.getValue(0))},exportEditorContent:function(){this.$nextTick((function(){q()}))},importMarkdownContent:function(){var e=this,t=document.getElementById("menu"),o=document.createElement("input");o.type="file",o.name="filename",o.accept=".txt,.md",t.appendChild(o),o.onchange=function(){if(o.files){var t=o.files[0];if(/\.(txt|TXT|MD|md)$/.test(t.name)){var n=new FileReader;n.readAsText(t),n.onload=function(t){var o=t.target.result;o=K(o),o&&(localStorage.setItem("__editor_content",o),e.editor.setValue(o),e.$message.success("文档导入成功"))}}else e.$message.error("不支持的文档格式")}},o.click(),t.removeChild(o)},formatContent:function(){var e=K(this.editor.getValue(0));localStorage.setItem("__editor_content",e),this.editor.setValue(e)},openMenu:function(e){var t=105,o=this.$el.getBoundingClientRect().left,n=this.$el.offsetWidth,r=n-t,i=e.clientX-o;this.mouseLeft=Math.min(r,i),this.mouseTop=e.clientY+10,this.$store.commit("setRightClickMenuVisible",!0)},closeRightClickMenu:function(){this.$store.commit("setRightClickMenuVisible",!1)},onMenuEvent:function(e){switch(e){case"resetStyle":this.$refs.header.showResetConfirm=!0;break;case"insertPic":this.dialogUploadImgVisible=!0;break;case"download":this.downloadEditorContent();break;case"export":this.exportEditorContent();break;case"insertTable":this.dialogFormVisible=!0;break;case"importMarkdown":this.importMarkdownContent();break;case"formatMarkdown":this.formatContent();break;default:break}}},Object(d["b"])(["initEditorState","initEditorEntity","setWxRendererOptions","editorRefresh","initCssEditorEntity"])),mounted:function(){var e=this;setTimeout((function(){e.leftAndRightScroll(),PR.prettyPrint()}),300)}},Ne=ze,Ve=(o("205d"),o("657b"),o("6a51"),Object(s["a"])(Ne,oe,ne,!1,null,"741a46cf",null)),Qe=Ve.exports,Je={name:"App",components:{Loading:te["default"],CodemirrorEditor:Qe},data:function(){return{loading:!0}},mounted:function(){var e=this;setTimeout((function(){e.loading=!1}),100)}},Ye=Je,Ze=(o("537d"),Object(s["a"])(Ye,X,ee,!1,null,"8e90ad4c",null)),Xe=Ze.exports;r["default"].use(Z["a"]);var et=[{path:"/",name:"index",component:Xe}],tt=new Z["a"]({mode:"history",base:"/md/",routes:et}),ot=tt;r["default"].use(Y.a),r["default"].config.productionTip=!1,u.mpType="app";var nt=new r["default"](Object(n["a"])({router:ot,store:Q},u));nt.$mount("#app")},6052:function(e,t,o){},"64e1":function(e,t,o){"use strict";o("7321")},"657b":function(e,t,o){"use strict";o("837e")},"6a51":function(e,t,o){"use strict";o("ffa6")},7321:function(e,t,o){},"798d":function(e,t,o){},"7c55":function(e,t,o){"use strict";o("2395")},8166:function(e,t,o){"use strict";o("6052")},"837e":function(e,t,o){},"8c0a":function(e,t,o){},9254:function(e,t,o){"use strict";o("798d")},"94fb":function(e,t,o){"use strict";o("3ea0")},"9ae8":function(e,t,o){},aaca:function(e,t,o){"use strict";o("9ae8")},aae9:function(e,t,o){"use strict";o.d(t,"a",(function(){return n})),o.d(t,"b",(function(){return r}));var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},r=[function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"loading",attrs:{id:"loading"}},[o("div",{staticClass:"loading-wrapper"},[o("div",{staticClass:"loading-anim"}),o("div",{staticClass:"loading-text"},[e._v("致力于让 Markdown 编辑更简单")])])])}]},b43f:function(e,t,o){},c081:function(e,t,o){"use strict";o("4549")},cb57:function(e,t,o){"use strict";var n=o("eff7"),r=o.n(n);t["default"]=r.a},da71:function(e,t,o){"use strict";o.d(t,"b",(function(){return n})),o.d(t,"a",(function(){return r}));o("a630"),o("3ca3");var n={username:"filess",repoList:Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],(function(e){return"img".concat(e)})),branch:"main",accessTokenList:["7715d7ca67b5d3837cfdoocsmde8c38421815aa423510af","c411415bf95dbe39625doocsmd5047ba9b7a2a6c9642abe","2821cd8819fa345c053doocsmdca86ac653f8bc20db1f1b","445f0dae46ef1f2a4d6doocsmdc797301e94797b4750a4c","cc1d0c1426d0fd0902bdoocsmdd2d7184b14da61b86ec46","b67e9d15cb6f910492fdoocsmdac6b44d379c953bb19eff","618c4dc2244ccbbc088doocsmd125d17fd31b7d06a50cf3","a4b581732e1c1507458doocsmdc5b223b27dae5e2e16a55","77904db41aee57ad79bdoocsmd760f848201dac9c96fd5e","02f251cb14ac62ab100doocsmdddbfc8527d773f1f04ce1","eb321079a95ba7028d9doocsmde2e84c502dac70de7cf08","22f74fcfb071a961fa2doocsmde28dabc746f0503a15e5d","85124c2bfe7abba0938doocsmd0af7f67918b99d085a5fd","0a561b4d4bbecb2de7edoocsmdd9ba3833d11dbc5e430f5","e8a01491188d8d5a097doocsmd03ede0aad1fe9e3af24e9","36e1f420d7e5bdebd67doocsmd65463562f5f25b20b8377"]},r={username:"filesss",repoList:Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],(function(e){return"img".concat(e)})),branch:"main",accessTokenList:["ed5fc9866bd6c2fdoocsmddd433f806fd2f399c","5448ffebbbf1151doocsmdc4e337cf814fc8a62","25b05efd2557ca2doocsmd75b5c0835e3395911","11628c7a5aef015doocsmd2eeff9fb9566f0458","cb2f5145ed938dedoocsmdbd063b4ed244eecf8","d8c0b57500672c1doocsmd55f48b866b5ebcd98","78c56eadb88e453doocsmd43ddd95753351771a","03e1a688003948fdoocsmda16fcf41e6f03f1f0","c49121cf4d191fbdoocsmdd6a7877ed537e474a","adfeb2fadcdc4aadoocsmdfe1ee869ac9c968ff","116c94549ca4a0ddoocsmd192653af5c0694616","ecf30ed7f2eb184doocsmd51ea4ec8300371d9e","5837cf2bd5afd93doocsmd73904bed31934949e","b5b7e1c7d57e01fdoocsmd5266f552574297d78","684d55564ffbd0bdoocsmd7d747e5cc23aed6d6","3fc04a9d272ab71doocsmd010c56cb57d88d2ba"]}},e1d2:function(e,t,o){"use strict";o("ac1f"),o("00b4"),o("d3b7");var n=o("bc3a"),r=o.n(n),i=r.a.create({baseURL:"",timeout:3e4});i.interceptors.request.use((function(e){return/^(post)|(put)|(delete)$/i.test(e.method)&&e.data&&e.data.upload&&(e.headers["Content-Type"]="multipart/form-data"),e}),(function(e){Promise.reject(e)})),i.interceptors.response.use((function(e){return e.data?e.data:Promise.reject(e)}),(function(e){return Promise.reject(e)})),t["a"]=i},eff7:function(e,t){},ffa6:function(e,t,o){}}); -//# sourceMappingURL=app.74263e49.js.map \ No newline at end of file diff --git a/js/app.74263e49.js.map b/js/app.74263e49.js.map deleted file mode 100644 index 93aee34..0000000 --- a/js/app.74263e49.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Loading.vue?0913","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?fb03","webpack:///./src/pages/index/view/CodemirrorEditor.vue?1860","webpack:///./src/components/Loading.vue?2551","webpack:///./src/api/file.js","webpack:///./src/assets/scripts/tokenTools.js","webpack:///./src/pages/index/index.vue?ee46","webpack:///./src/App.vue?2812","webpack:///./src/App.vue?3746","webpack:///./src/assets/scripts/config.js","webpack:///./src/assets/scripts/renderers/wx-renderer.js","webpack:///./src/assets/example/markdown.md","webpack:///./src/assets/example/theme-css.txt","webpack:///./src/assets/scripts/themes/default-theme.js","webpack:///./src/assets/scripts/util.js","webpack:///./src/store/index.js","webpack:///./src/plugins/element/index.js","webpack:///./src/pages/index/index.vue?4e23","webpack:///./src/pages/index/view/CodemirrorEditor.vue?404b","webpack:///./src/components/CodemirrorEditor/header.vue?9c73","webpack:///./src/assets/scripts/converter.js","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?e4f8","webpack:///src/components/CodemirrorEditor/resetDialog.vue","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?0219","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?6e21","webpack:///src/components/CodemirrorEditor/header.vue","webpack:///./src/components/CodemirrorEditor/header.vue?83e2","webpack:///./src/components/CodemirrorEditor/header.vue?6ddc","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?2889","webpack:///src/components/CodemirrorEditor/aboutDialog.vue","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?7264","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?7dab","webpack:///./src/components/CodemirrorEditor/insertForm.vue?9845","webpack:///src/components/CodemirrorEditor/insertForm.vue","webpack:///./src/components/CodemirrorEditor/insertForm.vue?e68a","webpack:///./src/components/CodemirrorEditor/insertForm.vue?c5f2","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?85fe","webpack:///src/components/CodemirrorEditor/rightClickMenu.vue","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?2c4f","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?5080","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?d2e1","webpack:///src/components/CodemirrorEditor/uploadImgDialog.vue","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?4a87","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?aaa9","webpack:///src/pages/index/view/CodemirrorEditor.vue","webpack:///./src/pages/index/view/CodemirrorEditor.vue?c7ca","webpack:///./src/pages/index/view/CodemirrorEditor.vue?2e04","webpack:///src/pages/index/index.vue","webpack:///./src/pages/index/index.vue?58f0","webpack:///./src/pages/index/index.vue","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/components/CodemirrorEditor/insertForm.vue?cc49","webpack:///./src/pages/index/view/CodemirrorEditor.vue?c3cf","webpack:///./src/pages/index/view/CodemirrorEditor.vue?b3e6","webpack:///./src/App.vue?3c62","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?f9e8","webpack:///./src/components/CodemirrorEditor/header.vue?6afc","webpack:///./src/App.vue?c018","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?c6de","webpack:///./src/components/Loading.vue?069f","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?6534","webpack:///./src/components/Loading.vue?969b","webpack:///./src/api/config.js","webpack:///./src/api/fetch.js"],"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","getConfig","useDefault","platform","config","githubConfig","giteeConfig","username","repoList","branch","accessTokenList","tokenIndex","Math","floor","random","accessToken","replace","repoIndex","repo","customConfig","JSON","parse","localStorage","getItem","repoUrl","split","getDir","date","Date","year","getFullYear","month","getMonth","toString","padStart","day","getDate","getDateFilename","filename","currentTimestamp","getTime","fileSuffix","uuidv4","ghFileUpload","content","dir","url","dateFilename","fetch","method","headers","Authorization","message","location","href","res","githubResourceUrl","cdnResourceUrl","download_url","giteeUpload","access_token","encodeURI","getQiniuToken","accessKey","secretKey","putPolicy","policy","stringify","encoded","base64encode","utf16to8","hash","CryptoJS","HmacSHA1","encodedSigned","enc","Base64","safe64","qiniuUpload","file","bucket","region","path","domain","token","scope","deadline","trunc","observable","qiniu","Promise","resolve","reject","subscribe","next","console","log","error","err","complete","aliOSSFileUpload","accessKeyId","accessKeySecret","cdnHost","buffer","Buffer","client","OSS","put","txCOSFileUpload","secretId","cos","COS","SecretId","SecretKey","putObject","Bucket","Region","Key","Body","Location","formCustomUpload","str","exportObj","util","axios","tokenTools","okCb","errCb","eval","fileUpload","imgHost","setItem","out","len","charCodeAt","charAt","String","fromCharCode","utf8to16","char2","char3","base64EncodeChars","base64DecodeChars","Array","c1","c2","c3","base64decode","c4","base64","render","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","script","builtinFonts","label","sizeOption","desc","colorOption","codeThemeOption","form","rows","cols","WxRenderer","opts","ENV_STRETCH_IMAGE","footnotes","footnoteIndex","styleMapping","CODE_FONT_FAMILY","merge","base","extend","assign","buildTheme","themeTpl","mapping","BASE","fonts","size","ele","inline","style","base_block","block","getStyles","tokenName","addition","arr","dict","join","addFootnote","title","link","buildFootnotes","footnoteArray","map","x","buildAddition","setOptions","newOpts","hasFootnotes","getRenderer","status","theme","renderer","Renderer","heading","text","level","paragraph","indexOf","blockquote","code","lang","codeLines","line","codeTheme","codespan","listitem","list","ordered","start","segments","image","subText","figureStyles","imgStyles","startsWith","ref","strong","em","table","header","body","tablecell","flags","hr","color","BASE_BLOCK","margin","h1","display","padding","h2","background","h3","h4","blockquote_p","overflow","border","width","image_org","ol","ul","figure","wx_link","thead","td","footnote","figcaption","setColorWithTemplate","template","custom_theme","setColorWithCustomTemplate","setFontSizeWithTemplate","fontSize","setColor","default_theme","setFontSize","customCssWithTemplate","jsonString","li","css2json","css","open","close","substring","json","lbracket","rbracket","toObject","array","ret","forEach","e","index","trim","declarations","filter","selectors","selector","keys","saveEditorContent","editor","getValue","removeItem","formatDoc","doc","prettier","format","parser","plugins","prettierMarkdown","formatCss","prettierCss","fixCodeWhiteSpace","preDomList","document","getElementsByClassName","pre","whiteSpace","downloadMD","downLink","createElement","download","blob","Blob","URL","createObjectURL","appendChild","click","removeChild","exportHTML","element","querySelector","setStyles","htmlStr","innerHTML","isSection","isPre","isCode","isSpan","setAttribute","getElementStyles","tagName","from","classList","includes","parentElement","children","child","createTable","currRow","rowIdx","toBase64","reader","FileReader","readAsDataURL","onload","pop","onerror","checkImage","isValidSuffix","test","ok","msg","maxSize","valid","excludes","styles","getComputedStyle","entries","getPropertyValue","removeLeft","lines","minSpaceNum","item","match","sort","a","b","newStr","Vue","use","Vuex","state","wxRenderer","output","html","cssEditor","currentFont","currentSize","currentColor","citeStatus","nightMode","rightClickMenuVisible","mutations","setEditorValue","setValue","setCssEditorValue","setWxRendererOptions","setCiteStatus","setCurrentFont","setCurrentSize","setCurrentColor","setCurrentCodeTheme","setRightClickMenuVisible","themeChanged","initEditorState","initEditorEntity","editorDom","getElementById","DEFAULT_CONTENT","CodeMirror","fromTextArea","lineNumbers","lineWrapping","styleActiveLine","autoCloseBrackets","extraKeys","selected","getSelection","replaceSelection","initCssEditorEntity","cssEditorDom","DEFAULT_CSS_CONTENT","matchBrackets","autofocus","editorRefresh","marked","Store","actions","Message","$loading","Loading","service","$message","staticClass","class","container_night","on","onEditorRefresh","cssChanged","downloadEditorContent","exportEditorContent","$event","showCssEditor","aboutDialogVisible","dialogFormVisible","dialogUploadImgVisible","isCoping","backLight","endCopy","nativeOn","preventDefault","openMenu","directives","rawName","expression","domProps","target","composing","source","output_night","_s","_v","_e","beforeUpload","uploadImage","uploaded","model","callback","$$v","mouseLeft","mouseTop","onMenuEvent","closeRightClickMenu","effect","$emit","showResetConfirm","fontChanged","selectFont","_l","font","fontFamily","sizeChanged","selectSize","colorChanged","selectColor","statusChanged","btnType","customStyle","copy","btnContent","confirmReset","cancelReset","solveWeChatImage","clipboardDiv","images","getElementsByTagName","getAttribute","height","removeAttribute","solveHtml","juice","inlineContent","inlinePseudoElements","preserveImportant","slot","props","type","Boolean","default","computed","selectCodeTheme","components","resetDialog","methods","codeThemeChanged","val","setTimeout","focus","removeAllRanges","range","setStartBefore","firstChild","setEndAfter","lastChild","addRange","execCommand","showClose","offset","duration","clear","mounted","currentCiteStatus","staticStyle","onRedirect","rowNum","colNum","row","col","tableData","$set","insertTable","left","top","menuItem","onMouseDown","Number","menu","closeCB","activeName","changeImgHost","beforeImageUpload","formGitee","saveGiteeConfiguration","formGitHub","saveGitHubConfiguration","formAliOSS","saveAliOSSConfiguration","formTxCOS","saveTxCOSConfiguration","formQiniu","saveQiniuConfiguration","formCustom","formCustomSave","undefined","options","created","success","checkResult","isValidHost","params","watch","immediate","handler","$nextTick","isImgLoading","timeout","changeTimer","editorHeader","aboutDialog","insertFormDialog","rightClickMenu","uploadImgDialog","initEditor","clipboardData","items","kind","isValid","initCssEditor","cm","showHint","response","leftAndRightScroll","clearTimeout","removeEventListener","previewScrollCB","addEventListener","scrollTo","scrollCB","$refs","preview","$el","editorScrollCB","importMarkdownContent","input","accept","onchange","files","readAsText","txt","formatContent","min","maxLeft","clientY","$store","commit","PR","prettyPrint","CodemirrorEditor","loading","VueRouter","routes","router","process","ElementUI","productionTip","App","mpType","app","store","$mount","_m","baseURL","interceptors","request","upload"],"mappings":"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C,aAAa,IAASrK,GAAK,GAAM,IAC/CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,IAC9CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,MAE9CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,IAC9CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,KAGlD,OAAOgK,EAGF,SAASM,EAASjB,GACvB,IAAIW,EAAK5L,EAAG6L,EAAKjK,EACbuK,EAAOC,EACXR,EAAM,GACNC,EAAMZ,EAAI/K,OACVF,EAAI,EACJ,MAAOA,EAAI6L,EAET,OADAjK,EAAIqJ,EAAIa,WAAW9L,KACX4B,GAAK,GACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EAEHgK,GAAOX,EAAIc,OAAO/L,EAAI,GACtB,MACF,KAAK,GACL,KAAK,GAEHmM,EAAQlB,EAAIa,WAAW9L,KACvB4L,GAAOI,OAAOC,cAAmB,GAAJrK,IAAa,EAAc,GAARuK,GAChD,MACF,KAAK,GAEHA,EAAQlB,EAAIa,WAAW9L,KACvBoM,EAAQnB,EAAIa,WAAW9L,KACvB4L,GAAOI,OAAOC,cACN,GAAJrK,IAAa,IAAgB,GAARuK,IAAiB,GAAe,GAARC,IAAiB,GAElE,MAGN,OAAOR,EAGT,IAAMS,EACJ,mEACIC,EAAoB,IAAIC,OAC3B,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,GAC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","file":"js/app.74263e49.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--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=style&index=0&id=a205efe8&lang=less&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resetDialog.vue?vue&type=style&index=0&id=0e0dc0ee&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=0&id=741a46cf&lang=less&scoped=true&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=a205efe8&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=a205efe8&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 \"a205efe8\",\n null\n \n)\n\nexport default component.exports","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\";\nimport * as tokenTools 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\n/**\n * 获取 `年/月/日` 形式的目录\n * @returns string\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\n/**\n * 根据文件名获取它以 `时间戳+uuid` 的形式\n * @param {string} filename 文件名\n * @returns\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 const githubResourceUrl = `raw.githubusercontent.com/${username}/${repo}/${branch}/`;\n const cdnResourceUrl = `cdn.jsdelivr.net/gh/${username}/${repo}@${branch}/`;\n res.content = res.data?.content || res.content;\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 res.content = res.data?.content || res.content;\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 { region, bucket, accessKeyId, accessKeySecret, cdnHost, 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\n//-----------------------------------------------------------------------\n// formCustom File Upload\n//-----------------------------------------------------------------------\n\nasync function formCustomUpload(content, file) {\n const str = `\n async (CUSTOM_ARG) => {\n ${localStorage.getItem(`formCustomConfig`)}\n }\n `;\n return new Promise((resolve, reject) => {\n const exportObj = {\n content, // 待上传图片的 base64\n file, // 待上传图片的 file 对象\n util: {\n axios: fetch, // axios 实例\n CryptoJS, // 加密库\n OSS, // ali-oss\n COS, // cos-js-sdk-v5\n Buffer, // buffer-from\n uuidv4, // uuid\n qiniu, // qiniu-js\n tokenTools, // 一些编码转换函数\n getDir, // 获取 年/月/日 形式的目录\n getDateFilename, // 根据文件名获取它以 时间戳+uuid 的形式\n },\n okCb: resolve, // 重要: 上传成功后给此回调传 url 即可\n errCb: reject, // 上传失败调用的函数\n };\n eval(str)(exportObj).catch((err) => {\n console.error(err);\n reject(err);\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 case \"formCustom\":\n return formCustomUpload(content, file);\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","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) | ((char2 & 0x3f) << 6) | ((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(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));\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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=8e90ad4c&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=41a4af61&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./App.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 null,\n null\n \n)\n\nexport default component.exports","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","import { Renderer } from \"marked\";\n\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 for (let ele in themeTpl.inline) {\n if (themeTpl.inline.hasOwnProperty(ele)) {\n let style = themeTpl.inline[ele];\n mapping[ele] = merge(themeTpl.BASE, style);\n }\n }\n\n let base_block = merge(base, {});\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 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 (text.indexOf(\"${text}

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

`);\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(ENV_STRETCH_IMAGE ? \"image\" : \"image_org\");\n return `
\"${text}\"/${subText}
`;\n };\n renderer.link = (href, title, text) => {\n if (href.startsWith(\"https://mp.weixin.qq.com\")) {\n return `${text}`;\n }\n if (href === text) {\n return text;\n }\n if (status) {\n let ref = addFootnote(title || text, href);\n return `${text}[${ref}]`;\n }\n return `${text}`;\n };\n renderer.strong = (text) =>\n `${text}`;\n renderer.em = (text) =>\n `${text}`;\n renderer.table = (header, body) =>\n `
${header}${body}
`;\n renderer.tablecell = (text, flags) =>\n `${text}`;\n renderer.hr = () =>\n `
`;\n return renderer;\n };\n }\n}\nexport default WxRenderer;\n","export default \"# 示例文章:Google 搜索的即时自动补全功能究竟是如何“工作”的?\\r\\n\\r\\n> Google 搜索**自动补全功能**的强大,相信不少朋友都能感受到,它帮助我们更快地“补全”我们所要输入的搜索关键字。那么,它怎么知道我们要输入什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。\\r\\n\\r\\n## 使用自动补全\\r\\n\\r\\nGoogle 搜索的自动补全功能可以在 Google 搜索应用的大多数位置使用,包括 [Google](https://www.google.com/) 主页、适用于 IOS 和 Android 的 Google 应用,我们只需要在 Google 搜索框上开始键入关键字,就可以看到联想词了。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juejin.gif)\\r\\n\\r\\n在上图示例中,我们可以看到,输入关键字 `juej`,Google 搜索会联想到“掘金”、“掘金小册”、“绝句”等等,好处就是,我们无须输入完整的关键字即可轻松完成针对这些 topics 的搜索。\\r\\n\\r\\n谷歌搜索的自动补全功能对于使用移动设备的用户来说特别有用,用户可以轻松在难以键入的小屏幕上完成搜索。当然,对于移动设备用户和台式机用户而言,这都节省了大量的时间。根据 Google 官方报告,自动补全功能可以减少大约 25% 的打字,累积起来,预计每天可以节省 200 多年的打字时间。是的,每天!\\r\\n\\r\\n> 注意,本文所提到的“**联想词**”与“**预测**”,是同一个意思。\\r\\n\\r\\n## 基于“预测”而非“建议”\\r\\n\\r\\nGoogle 官方将自动补全功能称之为“预测”,而不是“建议”,为什么呢?其实是有充分理由的。自动补全功能是为了**帮助用户完成他们打算进行的搜索**,而不是建议用户要执行什么搜索。\\r\\n\\r\\n那么,Google 是如何确定这些“预测”的?其实,Google 会根据趋势搜索 [trends](https://trends.google.com/trends/?geo=US) 给到我们这些“预测”。简单来说,哪个热门、哪个搜索频率高,就更可能推给我们。当然,这也与我们当前所处的位置以及我们的搜索历史相关。\\r\\n\\r\\n另外,这些“预测”也会随着我们键入的关键字的变更而更改。例如,当我们把键入的关键字从 `juej` 更改为 `juex` 时,与“掘金”相关的预测会“消失”,同时,与“觉醒”、“决心”相关联的词会出现。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juex.gif)\\r\\n\\r\\n## 为什么看不到某些联想词?\\r\\n\\r\\n如果我们在输入某个关键字时看不到联想词,那么表明 Google 的算法可能检测到:\\r\\n\\r\\n- 这个关键字不是热门字词;\\r\\n- 搜索的字词太新了,我们可能需要等待几天或几周才能看到联想词;\\r\\n- 这是一个侮辱性或敏感字词,这个搜索字词违反了 Google 的相关政策。更加详细的情况,可以了解 [Google 搜索自动补全政策](https://support.google.com/websearch/answer/7368877)。\\r\\n\\r\\n## 为什么会看到某些不当的联想词?\\r\\n\\r\\nGoogle 拥有专门设计的系统,可以自动捕获不适当的预测结果而不显示出来。然而,Google 每天需要处理数十亿次搜索,这意味着 Google 每天会显示数十亿甚至上百亿条预测。再好的系统,也可能存在缺陷,不正确的预测也可能随时会出现。\\r\\n\\r\\n我们作为 Google 搜索的用户,如果认定某条预测违反了相关的搜索自动补全政策,可以进行举报反馈,点击右下角“**举报不当的联想查询**”并勾选相关选项即可。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/report.gif)\\r\\n\\r\\n## 如何实现自动补全算法?\\r\\n\\r\\n目前,Google 官方似乎并没有公开搜索自动补全的算法实现,但是业界在这方面已经有了不少研究。\\r\\n\\r\\n一个好的自动补全器必须是快速的,并且在用户键入下一个字符后立即更新联想词列表。**自动补全器的核心是一个函数,它接受输入的前缀,并搜索以给定前缀开头的词汇或语句列表**。通常来说,只需要返回少量的数目即可。\\r\\n\\r\\n接下来,我们先从一个简单且低效的实现开始,并在此基础上逐步构建更高效的方法。\\r\\n\\r\\n### 词汇表实现\\r\\n\\r\\n一个**简单粗暴的实现方式**是:顺序查找词汇表,依次检查每个词汇,看它是否以给定的前缀开头。\\r\\n\\r\\n但是,此方法需要将前缀与每个词汇进行匹配检查,若词汇量较少,这种方式可能勉强行得通。但是,如果词汇量规模较大,效率就太低了。\\r\\n\\r\\n一个**更好的实现方式是**:让词汇按字典顺序排序。借助二分搜索算法,可以快速搜索有序词汇表中的前缀。由于二分搜索的每一步都会将搜索的范围减半,因此,总的搜索时间与词汇表中单词数量的对数成正比,即时间复杂度是 `O(log N)`。二分搜索的性能很好,但有没有更好的实现呢?当然有,往下看。\\r\\n\\r\\n### 前缀树实现\\r\\n\\r\\n通常来说,许多词汇都以相同的前缀开头,比如 `need`、`nested` 都以 `ne` 开头,`seed`、`speed` 都以 `s` 开头。要是为每个单词分别存储公共前缀似乎很浪费。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/pretree.png)\\r\\n\\r\\n前缀树是一种利用公共前缀来加速补全速度的数据结构。前缀树在节点树中排列一组单词,单词沿着从根节点到叶子节点的路径存储,树的层次对应于前缀的字母位置。\\r\\n\\r\\n前缀的补全是顺着前缀定义的路径来查找的。例如,在上图的前缀树中,前缀 `ne` 对应于从子节点取左边缘 `N` 和唯一边缘 `E` 的路径。然后可以通过继续遍历从 `E` 节点可以达到的所有叶节点来生成补全列表。在图中,`ne` 的补全可以是两个分支:`-ed` 和 `-sted`。如果在数中找不到由前缀定义的路径,则说明词汇表中不包含以该前缀开头的单词。\\r\\n\\r\\n### 有限状态自动机(DFA)实现\\r\\n\\r\\n前缀树可以有效处理公共前缀,但是,对于其他共享词部分,仍会分别存储在每个分支中。比如,后缀 `ed`、`ing`、`tion` 在英文单词中特别常见。在上一个例子中,`e`、`d` 分别存放在了每一个分支上。\\r\\n\\r\\n有没有一种方法可以更加节省存储空间呢?有的,那就是 DFA。\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n在上面的例子中,单词 `need`、`nested`、`seed` 和 `speed` 仅由 9 个节点组成,而上一张图中的前缀树包含了 17 个节点。\\r\\n\\r\\n可以看出,最小化前缀树 DFA 可以在很大程度上减少数据结构的大小。即使词汇量很大,最小化 DFA 通常也适合在内存中存储,避免昂贵的磁盘访问是实现快速自动补全的关键。\\r\\n\\r\\n### 一些扩展\\r\\n\\r\\n上面介绍了如何利用合理的数据结构实现基本的自动补全功能。这些数据结构可以通过多种方式进行扩展,从而改善用户体验。\\r\\n\\r\\n通常,满足特定前缀的词汇可能很多,而用户界面上能够显示的却不多,我们更希望能显示最常搜索或者最有价值的词汇。这通常可以通过为词汇表中的每个单词增加一个代表单词值的**权重** `weight`,并且按照权重高低来排序自动补全列表。\\r\\n\\r\\n- 对于排序后的词汇表来说,在词汇表每个元素上增加 `weight` 属性并不难;\\r\\n- 对于前缀树来说,将 `weight` 存储在叶子节点中,也是很简单的一个实现;\\r\\n- 对于 `DFA` 来说,则较为复杂。因为一个叶子节点可以通过多条路径到达。一种解决方案是将权重关联到路径而不是叶子节点。\\r\\n\\r\\n目前有不少开源库都提供了这个功能,比如主流的搜索引擎框架 [Elasticsearch](https://www.elastic.co/products/elasticsearch)、[Solr](https://lucene.apache.org/solr/) 等,基于此,我们可以实现高效而强大的自动补全功能。\\r\\n\\r\\n#### 推荐阅读\\r\\n\\r\\n- [阿里又一个 20k+ stars 开源项目诞生,恭喜 fastjson!](https://mp.weixin.qq.com/s/RNKDCK2KoyeuMeEs6GUrow)\\r\\n- [刷掉 90% 候选人的互联网大厂海量数据面试题(附题解 + 方法总结)](https://mp.weixin.qq.com/s/rjGqxUvrEqJNlo09GrT1Dw)\\r\\n- [好用!期待已久的文本块功能究竟如何在 Java 13 中发挥作用?](https://mp.weixin.qq.com/s/kalGv5T8AZGxTnLHr2wDsA)\\r\\n- [2019 GitHub 开源贡献排行榜新鲜出炉!微软谷歌领头,阿里跻身前 12!](https://mp.weixin.qq.com/s/_q812aGD1b9QvZ2WFI0Qgw)\\r\\n\\r\\n---\\r\\n\\r\\n欢迎关注我的公众号“**Doocs 开源社区**”,原创技术文章第一时间推送。\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\";","export default \"/*\\r\\n 按Ctrl+F可格式化\\r\\n*/\\r\\n/* 一级标题样式 */\\r\\nh1 {\\r\\n}\\r\\n/* 二级标题样式 */\\r\\nh2 {\\r\\n}\\r\\n/* 三级标题样式 */\\r\\nh3 {\\r\\n}\\r\\n/* 四级标题样式 */\\r\\nh4 {\\r\\n}\\r\\n/* 图片样式 */\\r\\nimage {\\r\\n}\\r\\n/* 引用样式 */\\r\\nblockquote {\\r\\n}\\r\\n/* 引用段落样式 */\\r\\nblockquote_p {\\r\\n}\\r\\n/* 段落样式 */\\r\\np {\\r\\n}\\r\\n/* 行内代码样式 */\\r\\ncodespan {\\r\\n}\\r\\n/* 粗体样式 */\\r\\nstrong {\\r\\n}\\r\\n/* 链接样式 */\\r\\nlink {\\r\\n}\\r\\n/* 微信链接样式 */\\r\\nwx_link {\\r\\n}\\r\\n/* 有序列表样式 */\\r\\nol {\\r\\n}\\r\\n/* 无序列表样式 */\\r\\nul {\\r\\n}\\r\\n/* 列表项样式 */\\r\\nli {\\r\\n}\";","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\": \"8px\",\n color: \"rgba(0,0,0,0.5)\",\n background: \"#f7f7f7\",\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\": \"8px\",\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 custom_theme.block.ul = Object.assign(custom_theme.block.ul, jsonString.ul);\n custom_theme.block.ol = Object.assign(custom_theme.block.ol, jsonString.ol);\n custom_theme.inline.listitem = Object.assign(\n custom_theme.inline.listitem,\n jsonString.li\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 (css.length > 0 && css.indexOf(\"{\") !== -1 && css.indexOf(\"}\") !== -1) {\n // 存储第一个左/右花括号的下标\n const lbracket = css.indexOf(\"{\");\n const rbracket = css.indexOf(\"}\");\n\n // 第一步:将声明转换为Object,如:\n // `font: 'Times New Roman' 1em; color: #ff0000; margin-top: 1em;`\n // ==>\n // `{\"font\": \"'Times New Roman' 1em\", \"color\": \"#ff0000\", \"margin-top\": \"1em\"}`\n\n // 辅助方法:将array转为object\n function toObject(array) {\n let ret = {};\n array.forEach((e) => {\n const index = e.indexOf(\":\");\n const property = e.substring(0, index).trim();\n const value = e.substring(index + 1).trim();\n ret[property] = value;\n });\n return ret;\n }\n\n // 切割声明块并移除空白符,然后放入数组中\n let declarations = css\n .substring(lbracket + 1, rbracket)\n .split(\";\")\n .map((e) => e.trim())\n .filter((e) => e.length > 0); // 移除所有\"\"空值\n\n // 转为Object对象\n declarations = toObject(declarations);\n\n // 第二步:选择器处理,每个选择器会与它对应的声明相关联,如:\n // `h1, p#bar {color: red}`\n // ==>\n // {\"h1\": {color: red}, \"p#bar\": {color: red}}\n\n let selectors = css\n .substring(0, lbracket)\n // 以,切割,并移除空格:`\"h1, p#bar, span.foo\"` => [\"h1\", \"p#bar\", \"span.foo\"]\n .split(\",\")\n .map((selector) => selector.trim());\n\n // 迭代赋值\n selectors.forEach((selector) => {\n // 若不存在,则先初始化\n if (!json[selector]) json[selector] = {};\n // 赋值到JSON\n Object.keys(declarations).forEach((key) => {\n json[selector][key] = declarations[key];\n });\n });\n\n // 继续下个声明块\n css = css.slice(rbracket + 1).trim();\n }\n\n // 返回JSON形式的结果串\n return json;\n}\n\n/**\n * 将编辑器内容保存到 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 * 导出 HTML 生成内容\n */\nexport function exportHTML() {\n const element = document.querySelector(\"#output\");\n setStyles(element);\n const htmlStr = element.innerHTML;\n\n const downLink = document.createElement(\"a\");\n\n downLink.download = \"content.html\";\n downLink.style.display = \"none\";\n let blob = new Blob([\n `
${htmlStr}
`,\n ]);\n\n downLink.href = URL.createObjectURL(blob);\n document.body.appendChild(downLink);\n downLink.click();\n document.body.removeChild(downLink);\n\n function setStyles(element) {\n switch (true) {\n case isSection(element):\n case isPre(element):\n case isCode(element):\n case isSpan(element):\n element.setAttribute(\"style\", getElementStyles(element));\n default:\n }\n if (element.children.length) {\n Array.from(element.children).forEach((child) => setStyles(child));\n }\n\n // 判断是否是包裹代码块的 section 元素\n function isSection(element) {\n return (\n element.tagName === \"SECTION\" &&\n Array.from(element.classList).includes(\"code-snippet__github\")\n );\n }\n // 判断是否是包裹代码块的 pre 元素\n function isPre(element) {\n return (\n element.tagName === \"PRE\" &&\n Array.from(element.classList).includes(\"code__pre\")\n );\n }\n // 判断是否是包裹代码块的 code 元素\n function isCode(element) {\n return (\n element.tagName === \"CODE\" &&\n Array.from(element.classList).includes(\"prettyprint\")\n );\n }\n // 判断是否是包裹代码字符的 span 元素\n function isSpan(element) {\n return (\n element.tagName === \"SPAN\" &&\n (isCode(element.parentElement) ||\n isCode(element.parentElement.parentElement))\n );\n }\n }\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 = 10;\n const valid = file.size / 1024 / 1024 <= maxSize;\n if (!valid) {\n return {\n ok: false,\n msg: `由于公众号限制,图片大小不能超过 ${maxSize}M`,\n };\n }\n return { ok: true };\n}\n\n/**\n * 获取一个 DOM 元素的所有样式,\n * @param {DOM 元素} element DOM 元素\n * @param {排除的属性} excludes 如果某些属性对结果有不良影响,可以使用这个参数来排除\n * @returns 行内样式拼接结果\n */\nfunction getElementStyles(element, excludes = [\"width\", \"height\"]) {\n const styles = getComputedStyle(element, null);\n return Object.entries(styles)\n .filter(([key]) => styles.getPropertyValue(key) && !excludes.includes(key))\n .map(([key, value]) => `${key}:${value};`)\n .join(\"\");\n}\n\n/**\n * 移除左边多余空格\n * @param {*} str\n * @returns\n */\nexport function removeLeft(str) {\n const lines = str.split('\\n')\n // 获取应该删除的空白符数量\n const minSpaceNum = lines.filter(item => item.trim())\n .map(item => item.match(/(^\\s+)?/)[0].length)\n .sort((a, b) => a - b)[0]\n // 删除空白符\n const newStr = lines\n .map(item => item.slice(minSpaceNum))\n .join('\\n')\n return newStr\n}\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/example/markdown.md\";\nimport DEFAULT_CSS_CONTENT from \"@/assets/example/theme-css.txt\";\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\") || 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 });\n },\n initEditorEntity(state) {\n const editorDom = document.getElementById(\"editor\");\n\n if (!editorDom.value) {\n editorDom.value =\n localStorage.getItem(\"__editor_content\") || formatDoc(DEFAULT_CONTENT);\n }\n state.editor = CodeMirror.fromTextArea(editorDom, {\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 \"Ctrl-B\": function bold(editor) {\n const selected = editor.getSelection();\n editor.replaceSelection(`**${selected}**`);\n },\n \"Ctrl-D\": function del(editor) {\n const selected = editor.getSelection();\n editor.replaceSelection(`~~${selected}~~`);\n },\n \"Ctrl-I\": function italic(editor) {\n const selected = editor.getSelection();\n editor.replaceSelection(`*${selected}*`);\n },\n },\n });\n },\n initCssEditorEntity(state) {\n const cssEditorDom = document.getElementById(\"cssEditor\");\n\n if (!cssEditorDom.value) {\n cssEditorDom.value =\n localStorage.getItem(\"__css_content\") || DEFAULT_CSS_CONTENT;\n }\n state.cssEditor = CodeMirror.fromTextArea(cssEditorDom, {\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 editorRefresh(state) {\n let renderer = state.wxRenderer.getRenderer(state.citeStatus);\n marked.setOptions({ renderer });\n let output = marked.parse(state.editor.getValue(0));\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};\n\nexport default new Vuex.Store({\n state,\n mutations,\n actions: {},\n});\n","import Vue from \"vue\";\nimport {\n Loading,\n Message,\n} from \"element-ui\";\n\nVue.component(Message.name, Message);\n\nVue.prototype.$loading = Loading.service;\nVue.prototype.$message = Message;\n","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,\"export\":_vm.exportEditorContent,\"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',{staticClass:\"codeMirror-wrapper\",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\"}],staticClass:\"cssEditor-wrapper\",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('div',{staticClass:\"left-side\"},[_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\":\"导出 HTML 页面\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-document\",attrs:{\"size\":\"medium\"},on:{\"click\":function($event){return _vm.$emit('export')}}})]),_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-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),_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),_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),_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('div',{staticClass:\"right-side\"},[_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}})])],1),_c('resetDialog',{attrs:{\"showResetConfirm\":_vm.showResetConfirm},on:{\"confirm\":_vm.confirmReset,\"close\":_vm.cancelReset}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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","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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=0e0dc0ee&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=0e0dc0ee&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 \"0e0dc0ee\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=79e3fc90&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=79e3fc90&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 \"79e3fc90\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=70c50907&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=70c50907&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 \"70c50907\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=4dd4e7e2&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=4dd4e7e2&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 \"4dd4e7e2\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=0a3b7c09&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=0a3b7c09&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 \"0a3b7c09\",\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\"},model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_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),_c('el-tab-pane',{staticClass:\"github-panel formCustom\",attrs:{\"label\":\"自定义代码\",\"name\":\"formCustom\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formCustom,\"label-position\":\"right\"}},[_c('el-form-item',{attrs:{\"label\":\"\",\"required\":true}},[_c('el-input',{ref:\"formCustomElInput\",staticClass:\"formCustomElInput\",attrs:{\"type\":\"textarea\",\"resize\":\"none\",\"placeholder\":\"Your custom code here.\"},model:{value:(_vm.formCustom.code),callback:function ($$v) {_vm.$set(_vm.formCustom, \"code\", $$v)},expression:\"formCustom.code\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://github.com/doocs/md#自定义上传逻辑\",\"target\":\"_blank\"}},[_vm._v(\"参数详情?\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.formCustomSave}},[_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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=6b7f927f&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=6b7f927f&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 \"6b7f927f\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=741a46cf&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=741a46cf&lang=less&scoped=true&\"\nimport style1 from \"./CodemirrorEditor.vue?vue&type=style&index=1&id=741a46cf&lang=less&scoped=true&\"\nimport style2 from \"./CodemirrorEditor.vue?vue&type=style&index=2&id=741a46cf&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 \"741a46cf\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=8e90ad4c&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=8e90ad4c&scoped=true&lang=css&\"\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 \"8e90ad4c\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport index from '@/pages/index/index'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: `/`,\n name: `index`,\n component: index,\n }\n]\n\nconst router = new VueRouter({\n mode: `history`,\n base: process.env.BASE_URL,\n routes,\n})\n\nexport default router\n","import Vue from \"vue\";\nimport App from \"./App\";\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 router from './router';\n\nVue.use(ElementUI);\n\nVue.config.productionTip = false;\n\nApp.mpType = \"app\";\n\nconst app = new Vue({\n router,\n store,\n ...App,\n});\napp.$mount(\"#app\");\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insertForm.vue?vue&type=style&index=0&id=4dd4e7e2&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=1&id=741a46cf&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=2&id=741a46cf&lang=less&scoped=true&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rightClickMenu.vue?vue&type=style&index=0&id=0a3b7c09&lang=less&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&id=79e3fc90&lang=less&scoped=true&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgDialog.vue?vue&type=style&index=0&id=6b7f927f&lang=less&scoped=true&\"","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 }","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./aboutDialog.vue?vue&type=style&index=0&id=70c50907&lang=less&scoped=true&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","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","import axios from \"axios\";\n\n// 创建axios实例\nconst service = axios.create({\n baseURL: \"\",\n timeout: 30 * 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"],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.922a39ff.js b/js/app.922a39ff.js new file mode 100644 index 0000000..939aea7 --- /dev/null +++ b/js/app.922a39ff.js @@ -0,0 +1,4 @@ +(function(e){function t(t){for(var n,a,s=t[0],c=t[1],l=t[2],d=0,_=[];d=1&&r<=127?t+=e.charAt(o):r>2047?(t+=String.fromCharCode(224|r>>12&15),t+=String.fromCharCode(128|r>>6&63),t+=String.fromCharCode(128|r>>0&63)):(t+=String.fromCharCode(192|r>>6&31),t+=String.fromCharCode(128|r>>0&63));return t}function r(e){var t,o,n,r,i,a;t="",n=e.length,o=0;while(o>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=e.charAt(o-1);break;case 12:case 13:i=e.charCodeAt(o++),t+=String.fromCharCode((31&r)<<6|63&i);break;case 14:i=e.charCodeAt(o++),a=e.charCodeAt(o++),t+=String.fromCharCode((15&r)<<12|(63&i)<<6|(63&a)<<0);break}return t}var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",a=new Array(-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,-1,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,-1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1);function s(e){var t,o,n,r,a,s;n=e.length,o=0,t="";while(o>2),t+=i.charAt((3&r)<<4),t+="==";break}if(a=e.charCodeAt(o++),o==n){t+=i.charAt(r>>2),t+=i.charAt((3&r)<<4|(240&a)>>4),t+=i.charAt((15&a)<<2),t+="=";break}s=e.charCodeAt(o++),t+=i.charAt(r>>2),t+=i.charAt((3&r)<<4|(240&a)>>4),t+=i.charAt((15&a)<<2|(192&s)>>6),t+=i.charAt(63&s)}return t}function c(e){var t,o,n,r,i,s,c;s=e.length,i=0,c="";while(i>4);do{if(n=255&e.charCodeAt(i++),61==n)return c;n=a[n]}while(i>2);do{if(r=255&e.charCodeAt(i++),61==r)return c;r=a[r]}while(i['.concat(e[0],"]: ").concat(e[1],"
"):'['.concat(e[0],"] ").concat(e[1],": ").concat(e[2],"
")}));return e.length?"

引用链接

").concat(e.join("\n"),"

"):""},this.buildAddition=function(){return"\n \n "},this.setOptions=function(e){o.opts=s(o.opts,e)},this.hasFootnotes=function(){return 0!==n.length},this.getRenderer=function(e){n=[],r=0,i=o.buildTheme(o.opts.theme);var t=new f["Renderer"];return t.heading=function(e,t){switch(t){case 1:return"

").concat(e,"

");case 2:return"

").concat(e,"

");case 3:return"

").concat(e,"

");default:return"

").concat(e,"

")}},t.paragraph=function(e){return-1!=e.indexOf("").concat(e,"

")},t.blockquote=function(e){return e=e.replace(//g,"

")),"

").concat(e,"
")},t.code=function(e,t){e=e.replace(//g,">");var o=e.split("\n").map((function(e){return''.concat(e||" ","")})),n="github";return'\n
\n
\n                        ').concat(o.join(""),"\n                    
\n
\n ")},t.codespan=function(e,t){return"").concat(e,"")},t.listitem=function(e){return"<%s/>').concat(e,"")},t.list=function(e,t,o){e=e.replace(/<\/*p.*?>/g,"");var n=e.split("<%s/>");if(!t)return e=n.join("•"),"

").concat(e,"

");e=n[0];for(var r=1;r").concat(e,"

")},t.image=function(e,t,o){var n="";o&&(n="
").concat(o,"
"));var r=c("figure"),i=c("image");return"
').concat(o,'').concat(n,"
")},t.link=function(t,o,n){if(t.startsWith("https://mp.weixin.qq.com"))return'").concat(n,"");if(t===n)return n;if(e){var r=l(o||n,t);return"").concat(n,"[").concat(r,"]")}return"").concat(n,"")},t.strong=function(e){return"").concat(e,"")},t.em=function(e){return''.concat(e,"")},t.table=function(e,t){return'
").concat(e,"").concat(t,"
")},t.tablecell=function(e,t){return"").concat(e,"")},t.hr=function(){return"
")},t}},g=p,h=o("56b3"),b=o.n(h),C='# 示例文章:Google 搜索的即时自动补全功能究竟是如何“工作”的?\r\n\r\n> Google 搜索**自动补全功能**的强大,相信不少朋友都能感受到,它帮助我们更快地“补全”我们所要输入的搜索关键字。那么,它怎么知道我们要输入什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。\r\n\r\n## 使用自动补全\r\n\r\nGoogle 搜索的自动补全功能可以在 Google 搜索应用的大多数位置使用,包括 [Google](https://www.google.com/) 主页、适用于 IOS 和 Android 的 Google 应用,我们只需要在 Google 搜索框上开始键入关键字,就可以看到联想词了。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juejin.gif)\r\n\r\n在上图示例中,我们可以看到,输入关键字 `juej`,Google 搜索会联想到“掘金”、“掘金小册”、“绝句”等等,好处就是,我们无须输入完整的关键字即可轻松完成针对这些 topics 的搜索。\r\n\r\n谷歌搜索的自动补全功能对于使用移动设备的用户来说特别有用,用户可以轻松在难以键入的小屏幕上完成搜索。当然,对于移动设备用户和台式机用户而言,这都节省了大量的时间。根据 Google 官方报告,自动补全功能可以减少大约 25% 的打字,累积起来,预计每天可以节省 200 多年的打字时间。是的,每天!\r\n\r\n> 注意,本文所提到的“**联想词**”与“**预测**”,是同一个意思。\r\n\r\n## 基于“预测”而非“建议”\r\n\r\nGoogle 官方将自动补全功能称之为“预测”,而不是“建议”,为什么呢?其实是有充分理由的。自动补全功能是为了**帮助用户完成他们打算进行的搜索**,而不是建议用户要执行什么搜索。\r\n\r\n那么,Google 是如何确定这些“预测”的?其实,Google 会根据趋势搜索 [trends](https://trends.google.com/trends/?geo=US) 给到我们这些“预测”。简单来说,哪个热门、哪个搜索频率高,就更可能推给我们。当然,这也与我们当前所处的位置以及我们的搜索历史相关。\r\n\r\n另外,这些“预测”也会随着我们键入的关键字的变更而更改。例如,当我们把键入的关键字从 `juej` 更改为 `juex` 时,与“掘金”相关的预测会“消失”,同时,与“觉醒”、“决心”相关联的词会出现。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juex.gif)\r\n\r\n## 为什么看不到某些联想词?\r\n\r\n如果我们在输入某个关键字时看不到联想词,那么表明 Google 的算法可能检测到:\r\n\r\n- 这个关键字不是热门字词;\r\n- 搜索的字词太新了,我们可能需要等待几天或几周才能看到联想词;\r\n- 这是一个侮辱性或敏感字词,这个搜索字词违反了 Google 的相关政策。更加详细的情况,可以了解 [Google 搜索自动补全政策](https://support.google.com/websearch/answer/7368877)。\r\n\r\n## 为什么会看到某些不当的联想词?\r\n\r\nGoogle 拥有专门设计的系统,可以自动捕获不适当的预测结果而不显示出来。然而,Google 每天需要处理数十亿次搜索,这意味着 Google 每天会显示数十亿甚至上百亿条预测。再好的系统,也可能存在缺陷,不正确的预测也可能随时会出现。\r\n\r\n我们作为 Google 搜索的用户,如果认定某条预测违反了相关的搜索自动补全政策,可以进行举报反馈,点击右下角“**举报不当的联想查询**”并勾选相关选项即可。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/report.gif)\r\n\r\n## 如何实现自动补全算法?\r\n\r\n目前,Google 官方似乎并没有公开搜索自动补全的算法实现,但是业界在这方面已经有了不少研究。\r\n\r\n一个好的自动补全器必须是快速的,并且在用户键入下一个字符后立即更新联想词列表。**自动补全器的核心是一个函数,它接受输入的前缀,并搜索以给定前缀开头的词汇或语句列表**。通常来说,只需要返回少量的数目即可。\r\n\r\n接下来,我们先从一个简单且低效的实现开始,并在此基础上逐步构建更高效的方法。\r\n\r\n### 词汇表实现\r\n\r\n一个**简单粗暴的实现方式**是:顺序查找词汇表,依次检查每个词汇,看它是否以给定的前缀开头。\r\n\r\n但是,此方法需要将前缀与每个词汇进行匹配检查,若词汇量较少,这种方式可能勉强行得通。但是,如果词汇量规模较大,效率就太低了。\r\n\r\n一个**更好的实现方式是**:让词汇按字典顺序排序。借助二分搜索算法,可以快速搜索有序词汇表中的前缀。由于二分搜索的每一步都会将搜索的范围减半,因此,总的搜索时间与词汇表中单词数量的对数成正比,即时间复杂度是 `O(log N)`。二分搜索的性能很好,但有没有更好的实现呢?当然有,往下看。\r\n\r\n### 前缀树实现\r\n\r\n通常来说,许多词汇都以相同的前缀开头,比如 `need`、`nested` 都以 `ne` 开头,`seed`、`speed` 都以 `s` 开头。要是为每个单词分别存储公共前缀似乎很浪费。\r\n\r\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/pretree.png)\r\n\r\n前缀树是一种利用公共前缀来加速补全速度的数据结构。前缀树在节点树中排列一组单词,单词沿着从根节点到叶子节点的路径存储,树的层次对应于前缀的字母位置。\r\n\r\n前缀的补全是顺着前缀定义的路径来查找的。例如,在上图的前缀树中,前缀 `ne` 对应于从子节点取左边缘 `N` 和唯一边缘 `E` 的路径。然后可以通过继续遍历从 `E` 节点可以达到的所有叶节点来生成补全列表。在图中,`ne` 的补全可以是两个分支:`-ed` 和 `-sted`。如果在数中找不到由前缀定义的路径,则说明词汇表中不包含以该前缀开头的单词。\r\n\r\n### 有限状态自动机(DFA)实现\r\n\r\n前缀树可以有效处理公共前缀,但是,对于其他共享词部分,仍会分别存储在每个分支中。比如,后缀 `ed`、`ing`、`tion` 在英文单词中特别常见。在上一个例子中,`e`、`d` 分别存放在了每一个分支上。\r\n\r\n有没有一种方法可以更加节省存储空间呢?有的,那就是 DFA。\r\n\r\n
\r\n
\r\n\r\n在上面的例子中,单词 `need`、`nested`、`seed` 和 `speed` 仅由 9 个节点组成,而上一张图中的前缀树包含了 17 个节点。\r\n\r\n可以看出,最小化前缀树 DFA 可以在很大程度上减少数据结构的大小。即使词汇量很大,最小化 DFA 通常也适合在内存中存储,避免昂贵的磁盘访问是实现快速自动补全的关键。\r\n\r\n### 一些扩展\r\n\r\n上面介绍了如何利用合理的数据结构实现基本的自动补全功能。这些数据结构可以通过多种方式进行扩展,从而改善用户体验。\r\n\r\n通常,满足特定前缀的词汇可能很多,而用户界面上能够显示的却不多,我们更希望能显示最常搜索或者最有价值的词汇。这通常可以通过为词汇表中的每个单词增加一个代表单词值的**权重** `weight`,并且按照权重高低来排序自动补全列表。\r\n\r\n- 对于排序后的词汇表来说,在词汇表每个元素上增加 `weight` 属性并不难;\r\n- 对于前缀树来说,将 `weight` 存储在叶子节点中,也是很简单的一个实现;\r\n- 对于 `DFA` 来说,则较为复杂。因为一个叶子节点可以通过多条路径到达。一种解决方案是将权重关联到路径而不是叶子节点。\r\n\r\n目前有不少开源库都提供了这个功能,比如主流的搜索引擎框架 [Elasticsearch](https://www.elastic.co/products/elasticsearch)、[Solr](https://lucene.apache.org/solr/) 等,基于此,我们可以实现高效而强大的自动补全功能。\r\n\r\n#### 推荐阅读\r\n\r\n- [阿里又一个 20k+ stars 开源项目诞生,恭喜 fastjson!](https://mp.weixin.qq.com/s/RNKDCK2KoyeuMeEs6GUrow)\r\n- [刷掉 90% 候选人的互联网大厂海量数据面试题(附题解 + 方法总结)](https://mp.weixin.qq.com/s/rjGqxUvrEqJNlo09GrT1Dw)\r\n- [好用!期待已久的文本块功能究竟如何在 Java 13 中发挥作用?](https://mp.weixin.qq.com/s/kalGv5T8AZGxTnLHr2wDsA)\r\n- [2019 GitHub 开源贡献排行榜新鲜出炉!微软谷歌领头,阿里跻身前 12!](https://mp.weixin.qq.com/s/_q812aGD1b9QvZ2WFI0Qgw)\r\n\r\n---\r\n\r\n欢迎关注我的公众号“**Doocs 开源社区**”,原创技术文章第一时间推送。\r\n\r\n
\r\n \r\n
\r\n',v="/*\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/* 分割线样式 */\nhr {\n}\n/* 行内代码样式 */\ncodespan {\n}\n/* 粗体样式 */\nstrong {\n}\n/* 链接样式 */\nlink {\n}\n/* 微信链接样式 */\nwx_link {\n}\n/* 有序列表样式 */\nol {\n}\n/* 无序列表样式 */\nul {\n}\n/* 列表项样式 */\nli {\n}\n",O=o("3835"),k=(o("e9c4"),o("4160"),o("159b"),o("498a"),o("4de4"),o("b64b"),o("fb6a"),o("2b3d"),o("9861"),o("a630"),o("caad"),o("2532"),o("00b4"),o("b0c0"),o("4fadc"),o("4e82"),o("466d"),{BASE:{"text-align":"left",color:"#3f3f3f","line-height":"1.75"},BASE_BLOCK:{margin:"1em 8px"},block:{h1:{"font-size":"1.2em","text-align":"center","font-weight":"bold",display:"table",margin:"2em auto 1em",padding:"0 1em","border-bottom":"2px solid rgba(0, 152, 116, 0.9)"},h2:{"font-size":"1.2em","text-align":"center","font-weight":"bold",display:"table",margin:"4em auto 2em",padding:"0 0.2em",background:"rgba(0, 152, 116, 0.9)",color:"#fff"},h3:{"font-weight":"bold","font-size":"1.1em",margin:"2em 8px 0.75em 0","line-height":"1.2","padding-left":"8px","border-left":"3px solid rgba(0, 152, 116, 0.9)"},h4:{"font-weight":"bold","font-size":"1em",margin:"2em 8px 0.5em",color:"rgba(66, 185, 131, 0.9)"},p:{margin:"1.5em 8px","letter-spacing":"0.1em"},blockquote:{"font-style":"normal","border-left":"none",padding:"1em","border-radius":"8px",color:"rgba(0,0,0,0.5)",background:"#f7f7f7",margin:"2em 8px"},blockquote_p:{"letter-spacing":"0.1em",color:"rgb(80, 80, 80)","font-size":"1em",display:"block"},code:{"font-size":"80%",overflow:"auto",color:"#333","white-space":"pre",background:"rgb(247, 247, 247)","border-radius":"8px",padding:"10px","line-height":"1.5",border:"1px solid rgb(236,236,236)",margin:"20px 0"},image:{"border-radius":"4px",display:"block",margin:"0.1em auto 0.5em",width:"100% !important"},ol:{"margin-left":"0","padding-left":"1em"},ul:{"margin-left":"0","padding-left":"1em","list-style":"circle"},footnotes:{margin:"0.5em 8px","font-size":"80%"},figure:{margin:"1.5em 8px"},hr:{"border-style":"solid","border-width":"1px 0 0","border-color":"rgba(0,0,0,0.1)","-webkit-transform-origin":"0 0","-webkit-transform":"scale(1, 0.5)","transform-origin":"0 0",transform:"scale(1, 0.5)"}},inline:{listitem:{"text-indent":"-1em",display:"block",margin:"0.2em 8px"},codespan:{"font-size":"90%","white-space":"pre",color:"#d14",background:"rgba(27,31,35,.05)",padding:"3px 5px","border-radius":"4px"},link:{color:"#576b95"},wx_link:{color:"#576b95","text-decoration":"none"},strong:{color:"rgba(15, 76, 129, 0.9)","font-weight":"bold"},table:{"border-collapse":"collapse","text-align":"center",margin:"1em 8px"},thead:{background:"rgba(0, 0, 0, 0.05)","font-weight":"bold"},td:{border:"1px solid #dfdfdf",padding:"0.25em 0.5em"},footnote:{"font-size":"12px"},figcaption:{"text-align":"center",color:"#888","font-size":"0.8em"}}}),E=o("325b"),S=o.n(E),y=o("4fc3"),w=o.n(y),x=o("d238"),M=o.n(x);function T(e){return function(t){var o=JSON.parse(JSON.stringify(e));return o.block.h1["border-bottom"]="2px solid ".concat(t),o.block.h2["background"]=t,o.block.h3["border-left"]="3px solid ".concat(t),o.block.h4["color"]=t,o.inline.strong["color"]=t,o}}var D=function(e,t){var o=JSON.parse(JSON.stringify(e));return o.block.h1["border-bottom"]="2px solid ".concat(t),o.block.h2["background"]=t,o.block.h3["border-left"]="3px solid ".concat(t),o.block.h4["color"]=t,o.inline.strong["color"]=t,o};function P(e){return function(t){var o=JSON.parse(JSON.stringify(e));return o.block.h1["font-size"]="".concat(1.14*t,"px"),o.block.h2["font-size"]="".concat(1.1*t,"px"),o.block.h3["font-size"]="".concat(t,"px"),o.block.h4["font-size"]="".concat(t,"px"),o}}var j=T(k),I=P(k);function A(e,t,o){var n=JSON.parse(JSON.stringify(o));return n.block.h1["border-bottom"]="2px solid ".concat(t),n.block.h2["background"]=t,n.block.h3["border-left"]="3px solid ".concat(t),n.block.h4["color"]=t,n.inline.strong["color"]=t,n.block.h1=Object.assign(n.block.h1,e.h1),n.block.h2=Object.assign(n.block.h2,e.h2),n.block.h3=Object.assign(n.block.h3,e.h3),n.block.h4=Object.assign(n.block.h4,e.h4),n.block.p=Object.assign(n.block.p,e.p),n.block.hr=Object.assign(n.block.hr,e.hr),n.block.blockquote=Object.assign(n.block.blockquote,e.blockquote),n.block.blockquote_p=Object.assign(n.block.blockquote_p,e.blockquote_p),n.block.image=Object.assign(n.block.image,e.image),n.inline.strong=Object.assign(n.inline.strong,e.strong),n.inline.codespan=Object.assign(n.inline.codespan,e.codespan),n.inline.link=Object.assign(n.inline.link,e.link),n.inline.wx_link=Object.assign(n.inline.wx_link,e.wx_link),n.block.ul=Object.assign(n.block.ul,e.ul),n.block.ol=Object.assign(n.block.ol,e.ol),n.inline.listitem=Object.assign(n.inline.listitem,e.li),n}function R(e){var t,o;while(-1!==(t=e.indexOf("/*"))&&-1!==(o=e.indexOf("*/")))e=e.substring(0,t)+e.substring(o+2);var n={},r=function(){var t=e.indexOf("{"),o=e.indexOf("}");function r(e){var t={};return e.forEach((function(e){var o=e.indexOf(":"),n=e.substring(0,o).trim(),r=e.substring(o+1).trim();t[n]=r})),t}var i=e.substring(t+1,o).split(";").map((function(e){return e.trim()})).filter((function(e){return e.length>0}));i=r(i);var a=e.substring(0,t).split(",").map((function(e){return e.trim()}));a.forEach((function(e){n[e]||(n[e]={}),Object.keys(i).forEach((function(t){n[e][t]=i[t]}))})),e=e.slice(o+1).trim()};while(e.length>0&&-1!==e.indexOf("{")&&-1!==e.indexOf("}"))r();return n}function U(e,t){var o=e.getValue(0);o?localStorage.setItem(t,o):localStorage.removeItem(t)}function K(e){var t=S.a.format(e,{parser:"markdown",plugins:[w.a]});return t}function L(e){var t=S.a.format(e,{parser:"css",plugins:[M.a]});return t}function B(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"pre",t=document.getElementsByClassName("code__pre");t.length>0&&t.forEach((function(t){t.style.whiteSpace=e}))}function $(e){var t=document.createElement("a");t.download="content.md",t.style.display="none";var o=new Blob([e]);t.href=URL.createObjectURL(o),document.body.appendChild(t),t.click(),document.body.removeChild(t)}function q(){var e=document.querySelector("#output");r(e);var t=e.innerHTML,o=document.createElement("a");o.download="content.html",o.style.display="none";var n=new Blob(['
'.concat(t,"
")]);function r(e){switch(!0){case t(e):case o(e):case n(e):case i(e):e.setAttribute("style",H(e));default:}function t(e){return"SECTION"===e.tagName&&Array.from(e.classList).includes("code-snippet__github")}function o(e){return"PRE"===e.tagName&&Array.from(e.classList).includes("code__pre")}function n(e){return"CODE"===e.tagName&&Array.from(e.classList).includes("prettyprint")}function i(e){return"SPAN"===e.tagName&&(n(e.parentElement)||n(e.parentElement.parentElement))}e.children.length&&Array.from(e.children).forEach((function(e){return r(e)}))}o.href=URL.createObjectURL(n),document.body.appendChild(o),o.click(),document.body.removeChild(o)}function W(e){for(var t=e.data,o=e.rows,n=e.cols,r="",i=[],a=0;a1?a-1:a;1===a?i.push("---\t"):i.push(t["k_".concat(c,"_").concat(s)]||"")}r+=i.join("\t|\t"),r+="\t|\n"}return r}var G=function(e){return new Promise((function(t,o){var n=new FileReader;n.readAsDataURL(e),n.onload=function(){return t(n.result.split(",").pop())},n.onerror=function(e){return o(e)}}))};function F(e){var t=/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(e.name);if(!t)return{ok:!1,msg:"请上传 JPG/PNG/GIF 格式的图片"};var o=10,n=e.size/1024/1024<=o;return n?{ok:!0}:{ok:!1,msg:"由于公众号限制,图片大小不能超过 ".concat(o,"M")}}function H(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["width","height"],o=getComputedStyle(e,null);return Object.entries(o).filter((function(e){var n=Object(O["a"])(e,1),r=n[0];return o.getPropertyValue(r)&&!t.includes(r)})).map((function(e){var t=Object(O["a"])(e,2),o=t[0],n=t[1];return"".concat(o,":").concat(n,";")})).join("")}function z(e){var t=e.split("\n"),o=t.filter((function(e){return e.trim()})).map((function(e){return e.match(/(^\s+)?/)[0].length})).sort((function(e,t){return e-t}))[0],n=t.map((function(e){return e.slice(o)})).join("\n");return n}r["default"].use(d["a"]);var N={wxRenderer:null,output:"",html:"",editor:null,cssEditor:null,currentFont:"",currentSize:"",currentColor:"",citeStatus:0,nightMode:!1,codeTheme:"github",rightClickMenuVisible:!1},V={setEditorValue:function(e,t){e.editor.setValue(t)},setCssEditorValue:function(e,t){e.cssEditor.setValue(t)},setWxRendererOptions:function(e,t){e.wxRenderer.setOptions(t)},setCiteStatus:function(e,t){e.citeStatus=t,localStorage.setItem("citeStatus",t)},setCurrentFont:function(e,t){e.currentFont=t,localStorage.setItem("fonts",t)},setCurrentSize:function(e,t){e.currentSize=t,localStorage.setItem("size",t)},setCurrentColor:function(e,t){e.currentColor=t,localStorage.setItem("color",t)},setCurrentCodeTheme:function(e,t){e.codeTheme=t,localStorage.setItem("codeTheme",t)},setRightClickMenuVisible:function(e,t){e.rightClickMenuVisible=t},themeChanged:function(e){e.nightMode=!e.nightMode,localStorage.setItem("nightMode",e.nightMode)},initEditorState:function(e){e.currentFont=localStorage.getItem("fonts")||_.builtinFonts[0].value,e.currentColor=localStorage.getItem("color")||_.colorOption[0].value,e.currentSize=localStorage.getItem("size")||_.sizeOption[2].value,e.codeTheme=localStorage.getItem("codeTheme")||_.codeThemeOption[0].value,e.citeStatus="true"===localStorage.getItem("citeStatus"),e.nightMode="true"===localStorage.getItem("nightMode"),e.wxRenderer=new g({theme:j(e.currentColor),fonts:e.currentFont,size:e.currentSize})},initEditorEntity:function(e){var t=document.getElementById("editor");t.value||(t.value=localStorage.getItem("__editor_content")||K(C)),e.editor=b.a.fromTextArea(t,{mode:"text/x-markdown",theme:"xq-light",lineNumbers:!1,lineWrapping:!0,styleActiveLine:!0,autoCloseBrackets:!0,extraKeys:{"Ctrl-F":function(e){var t=K(e.getValue(0));localStorage.setItem("__editor_content",t),e.setValue(t)},"Ctrl-S":function(e){},"Ctrl-B":function(e){var t=e.getSelection();e.replaceSelection("**".concat(t,"**"))},"Ctrl-D":function(e){var t=e.getSelection();e.replaceSelection("~~".concat(t,"~~"))},"Ctrl-I":function(e){var t=e.getSelection();e.replaceSelection("*".concat(t,"*"))}}})},initCssEditorEntity:function(e){var t=document.getElementById("cssEditor");t.value||(t.value=localStorage.getItem("__css_content")||v),e.cssEditor=b.a.fromTextArea(t,{mode:"css",theme:"style-mirror",lineNumbers:!1,lineWrapping:!0,matchBrackets:!0,autofocus:!0,extraKeys:{"Ctrl-F":function(e){var t=L(e.getValue(0));localStorage.setItem("__css_content",t),e.setValue(t)},"Ctrl-S":function(e){}}})},editorRefresh:function(e){var t=e.wxRenderer.getRenderer(e.citeStatus);f["marked"].setOptions({renderer:t});var o=f["marked"].parse(e.editor.getValue(0));o=o.replace(/(style=".*?)"/,'$1;margin-top: 0"'),e.citeStatus&&(o+=e.wxRenderer.buildFootnotes(),o+=e.wxRenderer.buildAddition()),e.output=o}},Q=new d["a"].Store({state:N,mutations:V,actions:{}}),J=o("5c96"),Y=o.n(J);o("0fae");r["default"].component(J["Message"].name,J["Message"]),r["default"].prototype.$loading=J["Loading"].service,r["default"].prototype.$message=J["Message"];o("a7be"),o("8d7e"),o("7b00"),o("959b"),o("10b2"),o("8c33"),o("31c5"),o("9b74"),o("111b");var Z=o("8c4f"),X=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.loading?o("transition",{attrs:{name:"fade"}},[o("loading")],1):o("codemirror-editor")},ee=[],te=(o("4795"),o("3a5e")),oe=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"container",class:{container_night:e.nightMode}},[o("el-container",[o("el-header",{staticClass:"editor__header"},[o("editor-header",{ref:"header",on:{refresh:e.onEditorRefresh,cssChanged:e.cssChanged,download:e.downloadEditorContent,export:e.exportEditorContent,showCssEditor:function(t){e.showCssEditor=!e.showCssEditor},"show-about-dialog":function(t){e.aboutDialogVisible=!0},"show-dialog-form":function(t){e.dialogFormVisible=!0},"show-dialog-upload-img":function(t){e.dialogUploadImgVisible=!0},startCopy:function(t){e.isCoping=!0,e.backLight=!0},endCopy:e.endCopy}})],1),o("el-main",{staticClass:"main-body"},[o("el-row",{staticClass:"main-section"},[o("el-col",{staticClass:"codeMirror-wrapper",attrs:{span:12},nativeOn:{contextmenu:function(t){return t.preventDefault(),e.openMenu(t)}}},[o("textarea",{directives:[{name:"model",rawName:"v-model",value:e.source,expression:"source"}],attrs:{id:"editor",type:"textarea",placeholder:"Your markdown text here."},domProps:{value:e.source},on:{input:function(t){t.target.composing||(e.source=t.target.value)}}})]),o("el-col",{ref:"preview",staticClass:"preview-wrapper",class:{"preview-wrapper_night":e.nightMode&&e.isCoping},attrs:{span:12,id:"preview"}},[o("section",{class:{output_night:e.nightMode&&!e.backLight},attrs:{id:"output-wrapper"}},[o("div",{staticClass:"preview"},[o("section",{attrs:{id:"output"},domProps:{innerHTML:e._s(e.output)}}),e.nightMode&&e.isCoping?o("div",{staticClass:"loading-mask"},[o("div",{staticClass:"loading__img"}),o("span",[e._v("正在生成")])]):e._e()])])]),o("transition",{attrs:{name:"custom-classes-transition","enter-active-class":"bounceInRight"}},[o("el-col",{directives:[{name:"show",rawName:"v-show",value:e.showCssEditor,expression:"showCssEditor"}],staticClass:"cssEditor-wrapper",attrs:{id:"cssBox",span:12}},[o("textarea",{attrs:{id:"cssEditor",type:"textarea",placeholder:"Your custom css here."}})])],1)],1)],1)],1),o("upload-img-dialog",{on:{close:function(t){e.dialogUploadImgVisible=!1},beforeUpload:e.beforeUpload,uploadImage:e.uploadImage,uploaded:e.uploaded},model:{value:e.dialogUploadImgVisible,callback:function(t){e.dialogUploadImgVisible=t},expression:"dialogUploadImgVisible"}}),o("about-dialog",{model:{value:e.aboutDialogVisible,callback:function(t){e.aboutDialogVisible=t},expression:"aboutDialogVisible"}}),o("insert-form-dialog",{model:{value:e.dialogFormVisible,callback:function(t){e.dialogFormVisible=t},expression:"dialogFormVisible"}}),o("right-click-menu",{attrs:{left:e.mouseLeft,top:e.mouseTop},on:{menuTick:e.onMenuEvent,closeMenu:e.closeRightClickMenu},model:{value:e.rightClickMenuVisible,callback:function(t){e.rightClickMenuVisible=t},expression:"rightClickMenuVisible"}})],1)},ne=[],re=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("el-container",{staticClass:"top is-dark"},[o("div",{staticClass:"left-side"},[o("el-tooltip",{attrs:{effect:e.effect,content:"上传图片",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-upload",attrs:{size:"medium"},on:{click:function(t){return e.$emit("show-dialog-upload-img")}}})]),o("el-tooltip",{staticClass:"header__item",attrs:{effect:e.effect,content:"导出 Markdown 文档",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-download",attrs:{size:"medium"},on:{click:function(t){return e.$emit("download")}}})]),o("el-tooltip",{staticClass:"header__item",attrs:{effect:e.effect,content:"导出 HTML 页面",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-document",attrs:{size:"medium"},on:{click:function(t){return e.$emit("export")}}})]),o("el-tooltip",{staticClass:"header__item",attrs:{effect:e.effect,content:"重置样式",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-refresh",attrs:{size:"medium"},on:{click:function(t){e.showResetConfirm=!0}}})]),o("el-tooltip",{staticClass:"header__item header__item_last",attrs:{effect:e.effect,content:"插入表格",placement:"bottom-start"}},[o("i",{staticClass:"el-icon-s-grid",attrs:{size:"medium"},on:{click:function(t){return e.$emit("show-dialog-form")}}})]),o("el-select",{attrs:{size:"mini",placeholder:"选择字体",clearable:""},on:{change:e.fontChanged},model:{value:e.selectFont,callback:function(t){e.selectFont=t},expression:"selectFont"}},e._l(e.config.builtinFonts,(function(t){return o("el-option",{key:t.value,style:{fontFamily:t.value},attrs:{label:t.label,value:t.value}},[o("span",{staticClass:"select-item-left"},[e._v(e._s(t.label))]),o("span",{staticClass:"select-item-right"},[e._v("Abc")])])})),1),o("el-select",{attrs:{size:"mini",placeholder:"选择段落字号",clearable:""},on:{change:e.sizeChanged},model:{value:e.selectSize,callback:function(t){e.selectSize=t},expression:"selectSize"}},e._l(e.config.sizeOption,(function(t){return o("el-option",{key:t.value,attrs:{label:t.label,value:t.value}},[o("span",{staticClass:"select-item-left"},[e._v(e._s(t.label))]),o("span",{staticClass:"select-item-right"},[e._v(e._s(t.desc))])])})),1),o("el-select",{attrs:{size:"mini",placeholder:"选择颜色",clearable:""},on:{change:e.colorChanged},model:{value:e.selectColor,callback:function(t){e.selectColor=t},expression:"selectColor"}},e._l(e.config.colorOption,(function(t){return o("el-option",{key:t.value,attrs:{label:t.label,value:t.value}},[o("span",{staticClass:"select-item-left"},[e._v(e._s(t.label))]),o("span",{staticClass:"select-item-right"},[e._v(e._s(t.desc))])])})),1),o("el-tooltip",{attrs:{content:"自定义颜色",effect:e.effect,placement:"top"}},[o("el-color-picker",{attrs:{size:"mini","show-alpha":""},on:{change:e.colorChanged},model:{value:e.selectColor,callback:function(t){e.selectColor=t},expression:"selectColor"}})],1),o("el-tooltip",{attrs:{content:"微信外链自动转为文末引用",effect:e.effect,placement:"top"}},[o("el-switch",{staticClass:"header__switch",attrs:{"active-color":"#67c23a","inactive-color":"#dcdfe6"},on:{change:e.statusChanged},model:{value:e.citeStatus,callback:function(t){e.citeStatus=t},expression:"citeStatus"}})],1)],1),o("div",{staticClass:"right-side"},[o("el-tooltip",{staticClass:"item",attrs:{effect:e.effect,content:"自定义CSS样式",placement:"left"}},[o("el-button",{attrs:{type:e.btnType,plain:"",size:"medium",icon:"el-icon-setting"},on:{click:e.customStyle}})],1),o("el-button",{attrs:{type:e.btnType,plain:"",size:"medium",placement:"bottom-start"},on:{click:e.copy}},[e._v("复制")]),o("el-button",{staticClass:"about",attrs:{type:e.btnType,plain:"",size:"medium"},on:{click:function(t){return e.$emit("show-about-dialog")}}},[e._v("关于")]),o("el-tooltip",{attrs:{content:e.btnContent,effect:e.effect,placement:"bottom-start"}},[e.nightMode?o("div",{staticClass:"mode__switch mode__switch_black",on:{click:e.themeChanged}}):o("div",{staticClass:"mode__switch",on:{click:e.themeChanged}})])],1),o("resetDialog",{attrs:{showResetConfirm:e.showResetConfirm},on:{confirm:e.confirmReset,close:e.cancelReset}})],1)},ie=[],ae=o("1da1"),se=(o("96cf"),o("466b")),ce=o.n(se);function le(){for(var e=document.getElementById("output"),t=e.getElementsByTagName("img"),o=0;o安全设置->私人令牌」中生成")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveGiteeConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"GitHub 图床",name:"github"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formGitHub,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"GitHub 仓库",required:!0}},[o("el-input",{attrs:{placeholder:"如:github.com/yanglbme/resource"},model:{value:e.formGitHub.repo,callback:function(t){e.$set(e.formGitHub,"repo","string"===typeof t?t.trim():t)},expression:"formGitHub.repo"}})],1),o("el-form-item",{attrs:{label:"分支"}},[o("el-input",{attrs:{placeholder:"如:release,可不填,默认 master"},model:{value:e.formGitHub.branch,callback:function(t){e.$set(e.formGitHub,"branch","string"===typeof t?t.trim():t)},expression:"formGitHub.branch"}})],1),o("el-form-item",{attrs:{label:"Token",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:cc1d0c1426d0fd0902bd2d7184b14da61b8abc46"},model:{value:e.formGitHub.accessToken,callback:function(t){e.$set(e.formGitHub,"accessToken","string"===typeof t?t.trim():t)},expression:"formGitHub.accessToken"}}),o("el-link",{attrs:{type:"primary",href:"https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token",target:"_blank"}},[e._v("如何获取 GitHub Token?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveGitHubConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"阿里云 OSS",name:"aliOSS"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formAliOSS,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"AccessKey ID",required:!0}},[o("el-input",{attrs:{placeholder:"如:LTAI4GdoocsmdoxUf13ylbaNHk"},model:{value:e.formAliOSS.accessKeyId,callback:function(t){e.$set(e.formAliOSS,"accessKeyId","string"===typeof t?t.trim():t)},expression:"formAliOSS.accessKeyId"}})],1),o("el-form-item",{attrs:{label:"AccessKey Secret",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:cc1d0c142doocs0902bd2d7md4b14da6ylbabc46"},model:{value:e.formAliOSS.accessKeySecret,callback:function(t){e.$set(e.formAliOSS,"accessKeySecret","string"===typeof t?t.trim():t)},expression:"formAliOSS.accessKeySecret"}})],1),o("el-form-item",{attrs:{label:"Bucket",required:!0}},[o("el-input",{attrs:{placeholder:"如:doocs"},model:{value:e.formAliOSS.bucket,callback:function(t){e.$set(e.formAliOSS,"bucket","string"===typeof t?t.trim():t)},expression:"formAliOSS.bucket"}})],1),o("el-form-item",{attrs:{label:"Bucket 所在区域",required:!0}},[o("el-input",{attrs:{placeholder:"如:oss-cn-shenzhen"},model:{value:e.formAliOSS.region,callback:function(t){e.$set(e.formAliOSS,"region","string"===typeof t?t.trim():t)},expression:"formAliOSS.region"}})],1),o("el-form-item",{attrs:{label:"自定义 CDN 域名",required:!1}},[o("el-input",{attrs:{placeholder:"如:https://imagecdn.alidaodao.com,可不填"},model:{value:e.formAliOSS.cdnHost,callback:function(t){e.$set(e.formAliOSS,"cdnHost","string"===typeof t?t.trim():t)},expression:"formAliOSS.cdnHost"}})],1),o("el-form-item",{attrs:{label:"存储路径"}},[o("el-input",{attrs:{placeholder:"如:img,可不填,默认为根目录"},model:{value:e.formAliOSS.path,callback:function(t){e.$set(e.formAliOSS,"path","string"===typeof t?t.trim():t)},expression:"formAliOSS.path"}}),o("el-link",{attrs:{type:"primary",href:"https://help.aliyun.com/document_detail/31883.html",target:"_blank"}},[e._v("如何使用阿里云 OSS?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveAliOSSConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"腾讯云 COS",name:"txCOS"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formTxCOS,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"SecretId",required:!0}},[o("el-input",{attrs:{placeholder:"如:AKIDnQp1w3DOOCSs8F5MDp9tdoocsmdUPonW3"},model:{value:e.formTxCOS.secretId,callback:function(t){e.$set(e.formTxCOS,"secretId","string"===typeof t?t.trim():t)},expression:"formTxCOS.secretId"}})],1),o("el-form-item",{attrs:{label:"SecretKey",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:ukLmdtEJ9271f3DOocsMDsCXdS3YlbW0"},model:{value:e.formTxCOS.secretKey,callback:function(t){e.$set(e.formTxCOS,"secretKey","string"===typeof t?t.trim():t)},expression:"formTxCOS.secretKey"}})],1),o("el-form-item",{attrs:{label:"Bucket",required:!0}},[o("el-input",{attrs:{placeholder:"如:doocs-3212520134"},model:{value:e.formTxCOS.bucket,callback:function(t){e.$set(e.formTxCOS,"bucket","string"===typeof t?t.trim():t)},expression:"formTxCOS.bucket"}})],1),o("el-form-item",{attrs:{label:"Bucket 所在区域",required:!0}},[o("el-input",{attrs:{placeholder:"如:ap-guangzhou"},model:{value:e.formTxCOS.region,callback:function(t){e.$set(e.formTxCOS,"region","string"===typeof t?t.trim():t)},expression:"formTxCOS.region"}})],1),o("el-form-item",{attrs:{label:"自定义 CDN 域名",required:!1}},[o("el-input",{attrs:{placeholder:"如:https://imagecdn.alidaodao.com,可不填"},model:{value:e.formTxCOS.cdnHost,callback:function(t){e.$set(e.formTxCOS,"cdnHost","string"===typeof t?t.trim():t)},expression:"formTxCOS.cdnHost"}})],1),o("el-form-item",{attrs:{label:"存储路径"}},[o("el-input",{attrs:{placeholder:"如:img,可不填,默认根目录"},model:{value:e.formTxCOS.path,callback:function(t){e.$set(e.formTxCOS,"path","string"===typeof t?t.trim():t)},expression:"formTxCOS.path"}}),o("el-link",{attrs:{type:"primary",href:"https://cloud.tencent.com/document/product/436/38484",target:"_blank"}},[e._v("如何使用腾讯云 COS?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveTxCOSConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel",attrs:{label:"七牛云 Kodo",name:"qiniu"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formQiniu,"label-position":"right","label-width":"140px"}},[o("el-form-item",{attrs:{label:"AccessKey",required:!0}},[o("el-input",{attrs:{placeholder:"如:6DD3VaLJ_SQgOdoocsyTV_YWaDmdnL2n8EGx7kG"},model:{value:e.formQiniu.accessKey,callback:function(t){e.$set(e.formQiniu,"accessKey","string"===typeof t?t.trim():t)},expression:"formQiniu.accessKey"}})],1),o("el-form-item",{attrs:{label:"SecretKey",required:!0}},[o("el-input",{attrs:{"show-password":"",placeholder:"如:qgZa5qrvDOOcsmdKStD1oCjZ9nB7MDvJUs_34SIm"},model:{value:e.formQiniu.secretKey,callback:function(t){e.$set(e.formQiniu,"secretKey","string"===typeof t?t.trim():t)},expression:"formQiniu.secretKey"}})],1),o("el-form-item",{attrs:{label:"Bucket",required:!0}},[o("el-input",{attrs:{placeholder:"如:md"},model:{value:e.formQiniu.bucket,callback:function(t){e.$set(e.formQiniu,"bucket","string"===typeof t?t.trim():t)},expression:"formQiniu.bucket"}})],1),o("el-form-item",{attrs:{label:"Bucket 对应域名",required:!0}},[o("el-input",{attrs:{placeholder:"如:https://images.123ylb.cn"},model:{value:e.formQiniu.domain,callback:function(t){e.$set(e.formQiniu,"domain","string"===typeof t?t.trim():t)},expression:"formQiniu.domain"}})],1),o("el-form-item",{attrs:{label:"存储区域",required:!0}},[o("el-input",{attrs:{placeholder:"如:z2"},model:{value:e.formQiniu.region,callback:function(t){e.$set(e.formQiniu,"region","string"===typeof t?t.trim():t)},expression:"formQiniu.region"}})],1),o("el-form-item",{attrs:{label:"存储路径",required:!1}},[o("el-input",{attrs:{placeholder:"如:img,可不填,默认为根目录"},model:{value:e.formQiniu.path,callback:function(t){e.$set(e.formQiniu,"path","string"===typeof t?t.trim():t)},expression:"formQiniu.path"}}),o("el-link",{attrs:{type:"primary",href:"https://developer.qiniu.com/kodo",target:"_blank"}},[e._v("如何使用七牛云 Kodo?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.saveQiniuConfiguration}},[e._v("保存配置")])],1)],1)],1),o("el-tab-pane",{staticClass:"github-panel formCustom",attrs:{label:"自定义代码",name:"formCustom"}},[o("el-form",{staticClass:"setting-form",attrs:{model:e.formCustom,"label-position":"right"}},[o("el-form-item",{attrs:{label:"",required:!0}},[o("el-input",{ref:"formCustomElInput",staticClass:"formCustomElInput",attrs:{type:"textarea",resize:"none",placeholder:"Your custom code here."},model:{value:e.formCustom.code,callback:function(t){e.$set(e.formCustom,"code",t)},expression:"formCustom.code"}}),o("el-link",{attrs:{type:"primary",href:"https://github.com/doocs/md#自定义上传逻辑",target:"_blank"}},[e._v("参数详情?")])],1),o("el-form-item",[o("el-button",{attrs:{type:"primary"},on:{click:e.formCustomSave}},[e._v("保存配置")])],1)],1)],1)],1)],1)},$e=[],qe={props:{value:{type:Boolean,default:!1}},data:function(){return{activeName:"upload",formGitHub:{repo:"",branch:"",accessToken:""},formGitee:{repo:"",branch:"",accessToken:""},formAliOSS:{accessKeyId:"",accessKeySecret:"",bucket:"",region:"",path:"",cdnHost:""},formTxCOS:{secretId:"",secretKey:"",bucket:"",region:"",path:"",cdnHost:""},formQiniu:{accessKey:"",secretKey:"",bucket:"",domain:"",region:""},formCustom:{code:localStorage.getItem("formCustomConfig")||z("\n const {file, util, okCb, errCb} = CUSTOM_ARG\n const param = new FormData()\n param.append('file', file)\n util.axios.post('http://127.0.0.1:9000/upload', param, {\n headers: { 'Content-Type': 'multipart/form-data' }\n }).then(res => {\n okCb(res.url)\n }).catch(err => {\n errCb(err)\n })\n ").trim(),editor:void 0},options:[{value:"default",label:"默认"},{value:"gitee",label:"Gitee"},{value:"github",label:"GitHub"},{value:"aliOSS",label:"阿里云"},{value:"txCOS",label:"腾讯云"},{value:"qiniu",label:"七牛云"},{value:"formCustom",label:"自定义代码"}],imgHost:"default"}},created:function(){localStorage.getItem("githubConfig")&&(this.formGitHub=JSON.parse(localStorage.getItem("githubConfig"))),localStorage.getItem("giteeConfig")&&(this.formGitee=JSON.parse(localStorage.getItem("giteeConfig"))),localStorage.getItem("aliOSSConfig")&&(this.formAliOSS=JSON.parse(localStorage.getItem("aliOSSConfig"))),localStorage.getItem("txCOSConfig")&&(this.formTxCOS=JSON.parse(localStorage.getItem("txCOSConfig"))),localStorage.getItem("imgHost")&&(this.imgHost=localStorage.getItem("imgHost"))},methods:{changeImgHost:function(){localStorage.setItem("imgHost",this.imgHost),this.$message.success("已成功切换图床")},saveGitHubConfiguration:function(){if(this.formGitHub.repo&&this.formGitHub.accessToken)localStorage.setItem("githubConfig",JSON.stringify(this.formGitHub)),this.$message.success("保存成功");else{var e=this.formGitHub.repo?"token":"GitHub 仓库";this.$message.error("参数「​".concat(e,"」不能为空"))}},saveGiteeConfiguration:function(){if(this.formGitee.repo&&this.formGitee.accessToken)localStorage.setItem("giteeConfig",JSON.stringify(this.formGitee)),this.$message.success("保存成功");else{var e=this.formGitee.repo?"私人令牌":"Gitee 仓库";this.$message.error("参数「​".concat(e,"」不能为空"))}},saveAliOSSConfiguration:function(){this.formAliOSS.accessKeyId&&this.formAliOSS.accessKeySecret&&this.formAliOSS.bucket&&this.formAliOSS.region?(localStorage.setItem("aliOSSConfig",JSON.stringify(this.formAliOSS)),this.$message.success("保存成功")):this.$message.error("阿里云 OSS 参数配置不全")},saveTxCOSConfiguration:function(){this.formTxCOS.secretId&&this.formTxCOS.secretKey&&this.formTxCOS.bucket&&this.formTxCOS.region?(localStorage.setItem("txCOSConfig",JSON.stringify(this.formTxCOS)),this.$message.success("保存成功")):this.$message.error("腾讯云 COS 参数配置不全")},saveQiniuConfiguration:function(){this.formQiniu.accessKey&&this.formQiniu.secretKey&&this.formQiniu.bucket&&this.formQiniu.domain&&this.formQiniu.region?(localStorage.setItem("qiniuConfig",JSON.stringify(this.formQiniu)),this.$message.success("保存成功")):this.$message.error("七牛云 Kodo 参数配置不全")},formCustomSave:function(){var e=this.formCustom.editor.getValue();localStorage.setItem("formCustomConfig",e),this.$message.success("保存成功")},beforeImageUpload:function(e){var t=F(e);if(!t.ok)return this.$message.error(t.msg),!1;var o=localStorage.getItem("imgHost");o=o||"default",localStorage.setItem("imgHost",o);var n=localStorage.getItem("".concat(o,"Config")),r="default"==o||n;return!!r||(this.$message.error("请先配置 ".concat(o," 图床参数")),!1)},uploadImage:function(e){this.$emit("uploadImage",e.file)}},watch:{activeName:{immediate:!0,handler:function(e){var t=this;"formCustom"===e&&this.$nextTick((function(){var e=t.$refs.formCustomElInput.$el.querySelector("textarea");t.formCustom.editor=t.formCustom.editor||b.a.fromTextArea(e,{mode:"javascript"}),t.formCustom.editor.setValue(t.formCustom.code)}))}}},mounted:function(){}},We=qe,Ge=(o("aaca"),Object(s["a"])(We,Be,$e,!1,null,"6b7f927f",null)),Fe=Ge.exports,He=o("3f5e");o("f9d4");var ze={data:function(){return{showCssEditor:!1,aboutDialogVisible:!1,dialogUploadImgVisible:!1,dialogFormVisible:!1,isCoping:!1,isImgLoading:!1,backLight:!1,timeout:null,changeTimer:null,source:"",mouseLeft:0,mouseTop:0}},components:{editorHeader:ve,aboutDialog:we,insertFormDialog:je,rightClickMenu:Le,uploadImgDialog:Fe},computed:Object(n["a"])({},Object(d["c"])({wxRenderer:function(e){return e.wxRenderer},output:function(e){return e.output},editor:function(e){return e.editor},cssEditor:function(e){return e.cssEditor},currentSize:function(e){return e.currentSize},currentColor:function(e){return e.currentColor},nightMode:function(e){return e.nightMode},rightClickMenuVisible:function(e){return e.rightClickMenuVisible}})),created:function(){var e=this;this.initEditorState(),this.$nextTick((function(){e.initEditor(),e.initCssEditor(),e.onEditorRefresh()}))},methods:Object(n["a"])({initEditor:function(){var e=this;this.initEditorEntity(),this.editor.on("change",(function(t,o){e.changeTimer&&clearTimeout(e.changeTimer),e.changeTimer=setTimeout((function(){e.onEditorRefresh(),U(e.editor,"__editor_content")}),300)})),this.editor.on("paste",(function(t,o){if(o.clipboardData&&o.clipboardData.items&&!e.isImgLoading)for(var n=0,r=o.clipboardData.items.length;n=65&&t.keyCode<=90||189===t.keyCode)&&e.showHint(t)})),this.cssEditor.on("update",(function(t){e.cssChanged(),U(e.cssEditor,"__css_content")}))},cssChanged:function(){var e=R(this.cssEditor.getValue(0)),t=I(this.currentSize.replace("px",""));t=A(e,this.currentColor,t),this.setWxRendererOptions({theme:t}),this.onEditorRefresh()},beforeUpload:function(e){var t=F(e);if(!t.ok)return this.$message.error(t.msg),!1;var o=localStorage.getItem("imgHost");o=o||"default",localStorage.setItem("imgHost",o);var n=localStorage.getItem("".concat(o,"Config")),r="default"==o||n;return!!r||(this.$message.error("请先配置 ".concat(o," 图床参数")),!1)},uploadImage:function(e){var t=this;this.isImgLoading=!0,G(e).then((function(o){He["a"].fileUpload(o,e).then((function(e){t.uploaded(e)}))["catch"]((function(e){t.$message.error(e.message)}))}))["catch"]((function(e){t.$message.error(e.message)})),this.isImgLoading=!1},uploaded:function(e){if(e){this.dialogUploadImgVisible=!1;var t=this.editor.getCursor(),o=e,n="![](".concat(o,")");this.editor.replaceSelection("\n".concat(n,"\n"),t),this.$message.success("图片上传成功"),this.onEditorRefresh()}else this.$message.error("上传图片未知异常")},leftAndRightScroll:function(){var e=this,t=function(t){var r,i;clearTimeout(e.timeout),"preview"===t?(r=e.$refs.preview.$el,i=document.getElementsByClassName("CodeMirror-scroll")[0],e.editor.off("scroll",o),e.timeout=setTimeout((function(){e.editor.on("scroll",o)}),300)):"editor"===t&&(r=document.getElementsByClassName("CodeMirror-scroll")[0],i=e.$refs.preview.$el,i.removeEventListener("scroll",n,!1),e.timeout=setTimeout((function(){i.addEventListener("scroll",n,!1)}),300));var a=r.scrollTop/(r.scrollHeight-r.offsetHeight),s=a*(i.scrollHeight-i.offsetHeight);i.scrollTo(0,s)},o=function(){t("editor")},n=function(){t("preview")};this.$refs.preview.$el.addEventListener("scroll",n,!1),this.editor.on("scroll",o)},onEditorRefresh:function(){this.editorRefresh(),setTimeout((function(){return PR.prettyPrint()}),0)},endCopy:function(){var e=this;this.backLight=!1,setTimeout((function(){e.isCoping=!1}),800)},downloadEditorContent:function(){$(this.editor.getValue(0))},exportEditorContent:function(){this.$nextTick((function(){q()}))},importMarkdownContent:function(){var e=this,t=document.getElementById("menu"),o=document.createElement("input");o.type="file",o.name="filename",o.accept=".txt,.md",t.appendChild(o),o.onchange=function(){if(o.files){var t=o.files[0];if(/\.(txt|TXT|MD|md)$/.test(t.name)){var n=new FileReader;n.readAsText(t),n.onload=function(t){var o=t.target.result;o=K(o),o&&(localStorage.setItem("__editor_content",o),e.editor.setValue(o),e.$message.success("文档导入成功"))}}else e.$message.error("不支持的文档格式")}},o.click(),t.removeChild(o)},formatContent:function(){var e=K(this.editor.getValue(0));localStorage.setItem("__editor_content",e),this.editor.setValue(e)},openMenu:function(e){var t=105,o=this.$el.getBoundingClientRect().left,n=this.$el.offsetWidth,r=n-t,i=e.clientX-o;this.mouseLeft=Math.min(r,i),this.mouseTop=e.clientY+10,this.$store.commit("setRightClickMenuVisible",!0)},closeRightClickMenu:function(){this.$store.commit("setRightClickMenuVisible",!1)},onMenuEvent:function(e){switch(e){case"resetStyle":this.$refs.header.showResetConfirm=!0;break;case"insertPic":this.dialogUploadImgVisible=!0;break;case"download":this.downloadEditorContent();break;case"export":this.exportEditorContent();break;case"insertTable":this.dialogFormVisible=!0;break;case"importMarkdown":this.importMarkdownContent();break;case"formatMarkdown":this.formatContent();break;default:break}}},Object(d["b"])(["initEditorState","initEditorEntity","setWxRendererOptions","editorRefresh","initCssEditorEntity"])),mounted:function(){var e=this;setTimeout((function(){e.leftAndRightScroll(),PR.prettyPrint()}),300)}},Ne=ze,Ve=(o("205d"),o("657b"),o("6a51"),Object(s["a"])(Ne,oe,ne,!1,null,"741a46cf",null)),Qe=Ve.exports,Je={name:"App",components:{Loading:te["default"],CodemirrorEditor:Qe},data:function(){return{loading:!0}},mounted:function(){var e=this;setTimeout((function(){e.loading=!1}),100)}},Ye=Je,Ze=(o("537d"),Object(s["a"])(Ye,X,ee,!1,null,"8e90ad4c",null)),Xe=Ze.exports;r["default"].use(Z["a"]);var et=[{path:"/",name:"index",component:Xe}],tt=new Z["a"]({mode:"history",base:"/md/",routes:et}),ot=tt;r["default"].use(Y.a),r["default"].config.productionTip=!1,u.mpType="app";var nt=new r["default"](Object(n["a"])({router:ot,store:Q},u));nt.$mount("#app")},6052:function(e,t,o){},"64e1":function(e,t,o){"use strict";o("7321")},"657b":function(e,t,o){"use strict";o("837e")},"6a51":function(e,t,o){"use strict";o("ffa6")},7321:function(e,t,o){},"798d":function(e,t,o){},"7c55":function(e,t,o){"use strict";o("2395")},8166:function(e,t,o){"use strict";o("6052")},"837e":function(e,t,o){},"8c0a":function(e,t,o){},9254:function(e,t,o){"use strict";o("798d")},"94fb":function(e,t,o){"use strict";o("3ea0")},"9ae8":function(e,t,o){},aaca:function(e,t,o){"use strict";o("9ae8")},aae9:function(e,t,o){"use strict";o.d(t,"a",(function(){return n})),o.d(t,"b",(function(){return r}));var n=function(){var e=this,t=e.$createElement;e._self._c;return e._m(0)},r=[function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"loading",attrs:{id:"loading"}},[o("div",{staticClass:"loading-wrapper"},[o("div",{staticClass:"loading-anim"}),o("div",{staticClass:"loading-text"},[e._v("致力于让 Markdown 编辑更简单")])])])}]},b43f:function(e,t,o){},c081:function(e,t,o){"use strict";o("4549")},cb57:function(e,t,o){"use strict";var n=o("eff7"),r=o.n(n);t["default"]=r.a},da71:function(e,t,o){"use strict";o.d(t,"b",(function(){return n})),o.d(t,"a",(function(){return r}));o("a630"),o("3ca3");var n={username:"filess",repoList:Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],(function(e){return"img".concat(e)})),branch:"main",accessTokenList:["7715d7ca67b5d3837cfdoocsmde8c38421815aa423510af","c411415bf95dbe39625doocsmd5047ba9b7a2a6c9642abe","2821cd8819fa345c053doocsmdca86ac653f8bc20db1f1b","445f0dae46ef1f2a4d6doocsmdc797301e94797b4750a4c","cc1d0c1426d0fd0902bdoocsmdd2d7184b14da61b86ec46","b67e9d15cb6f910492fdoocsmdac6b44d379c953bb19eff","618c4dc2244ccbbc088doocsmd125d17fd31b7d06a50cf3","a4b581732e1c1507458doocsmdc5b223b27dae5e2e16a55","77904db41aee57ad79bdoocsmd760f848201dac9c96fd5e","02f251cb14ac62ab100doocsmdddbfc8527d773f1f04ce1","eb321079a95ba7028d9doocsmde2e84c502dac70de7cf08","22f74fcfb071a961fa2doocsmde28dabc746f0503a15e5d","85124c2bfe7abba0938doocsmd0af7f67918b99d085a5fd","0a561b4d4bbecb2de7edoocsmdd9ba3833d11dbc5e430f5","e8a01491188d8d5a097doocsmd03ede0aad1fe9e3af24e9","36e1f420d7e5bdebd67doocsmd65463562f5f25b20b8377"]},r={username:"filesss",repoList:Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],(function(e){return"img".concat(e)})),branch:"main",accessTokenList:["ed5fc9866bd6c2fdoocsmddd433f806fd2f399c","5448ffebbbf1151doocsmdc4e337cf814fc8a62","25b05efd2557ca2doocsmd75b5c0835e3395911","11628c7a5aef015doocsmd2eeff9fb9566f0458","cb2f5145ed938dedoocsmdbd063b4ed244eecf8","d8c0b57500672c1doocsmd55f48b866b5ebcd98","78c56eadb88e453doocsmd43ddd95753351771a","03e1a688003948fdoocsmda16fcf41e6f03f1f0","c49121cf4d191fbdoocsmdd6a7877ed537e474a","adfeb2fadcdc4aadoocsmdfe1ee869ac9c968ff","116c94549ca4a0ddoocsmd192653af5c0694616","ecf30ed7f2eb184doocsmd51ea4ec8300371d9e","5837cf2bd5afd93doocsmd73904bed31934949e","b5b7e1c7d57e01fdoocsmd5266f552574297d78","684d55564ffbd0bdoocsmd7d747e5cc23aed6d6","3fc04a9d272ab71doocsmd010c56cb57d88d2ba"]}},e1d2:function(e,t,o){"use strict";o("ac1f"),o("00b4"),o("d3b7");var n=o("bc3a"),r=o.n(n),i=r.a.create({baseURL:"",timeout:3e4});i.interceptors.request.use((function(e){return/^(post)|(put)|(delete)$/i.test(e.method)&&e.data&&e.data.upload&&(e.headers["Content-Type"]="multipart/form-data"),e}),(function(e){Promise.reject(e)})),i.interceptors.response.use((function(e){return e.data?e.data:Promise.reject(e)}),(function(e){return Promise.reject(e)})),t["a"]=i},eff7:function(e,t){},ffa6:function(e,t,o){}}); +//# sourceMappingURL=app.922a39ff.js.map \ No newline at end of file diff --git a/js/app.922a39ff.js.map b/js/app.922a39ff.js.map new file mode 100644 index 0000000..9684d8f --- /dev/null +++ b/js/app.922a39ff.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/Loading.vue?0913","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?fb03","webpack:///./src/pages/index/view/CodemirrorEditor.vue?1860","webpack:///./src/components/Loading.vue?2551","webpack:///./src/api/file.js","webpack:///./src/assets/scripts/tokenTools.js","webpack:///./src/pages/index/index.vue?ee46","webpack:///./src/App.vue?9c54","webpack:///./src/App.vue?3746","webpack:///./src/assets/scripts/config.js","webpack:///./src/assets/scripts/renderers/wx-renderer.js","webpack:///./src/assets/example/markdown.md","webpack:///./src/assets/example/theme-css.txt","webpack:///./src/assets/scripts/themes/default-theme.js","webpack:///./src/assets/scripts/util.js","webpack:///./src/store/index.js","webpack:///./src/plugins/element/index.js","webpack:///./src/pages/index/index.vue?3766","webpack:///./src/pages/index/view/CodemirrorEditor.vue?57c2","webpack:///./src/components/CodemirrorEditor/header.vue?9ed4","webpack:///./src/assets/scripts/converter.js","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?d033","webpack:///src/components/CodemirrorEditor/resetDialog.vue","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?0219","webpack:///./src/components/CodemirrorEditor/resetDialog.vue?6e21","webpack:///src/components/CodemirrorEditor/header.vue","webpack:///./src/components/CodemirrorEditor/header.vue?83e2","webpack:///./src/components/CodemirrorEditor/header.vue?6ddc","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?9b27","webpack:///src/components/CodemirrorEditor/aboutDialog.vue","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?7264","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?7dab","webpack:///./src/components/CodemirrorEditor/insertForm.vue?6029","webpack:///src/components/CodemirrorEditor/insertForm.vue","webpack:///./src/components/CodemirrorEditor/insertForm.vue?e68a","webpack:///./src/components/CodemirrorEditor/insertForm.vue?c5f2","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?ba97","webpack:///src/components/CodemirrorEditor/rightClickMenu.vue","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?2c4f","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?5080","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?955b","webpack:///src/components/CodemirrorEditor/uploadImgDialog.vue","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?4a87","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?aaa9","webpack:///src/pages/index/view/CodemirrorEditor.vue","webpack:///./src/pages/index/view/CodemirrorEditor.vue?c7ca","webpack:///./src/pages/index/view/CodemirrorEditor.vue?2e04","webpack:///src/pages/index/index.vue","webpack:///./src/pages/index/index.vue?58f0","webpack:///./src/pages/index/index.vue","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/components/CodemirrorEditor/insertForm.vue?cc49","webpack:///./src/pages/index/view/CodemirrorEditor.vue?c3cf","webpack:///./src/pages/index/view/CodemirrorEditor.vue?b3e6","webpack:///./src/App.vue?3c62","webpack:///./src/components/CodemirrorEditor/rightClickMenu.vue?f9e8","webpack:///./src/components/CodemirrorEditor/header.vue?6afc","webpack:///./src/App.vue?c018","webpack:///./src/components/CodemirrorEditor/uploadImgDialog.vue?c6de","webpack:///./src/components/Loading.vue?53ba","webpack:///./src/components/CodemirrorEditor/aboutDialog.vue?6534","webpack:///./src/components/Loading.vue?969b","webpack:///./src/api/config.js","webpack:///./src/api/fetch.js"],"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","getConfig","useDefault","platform","config","githubConfig","giteeConfig","username","repoList","branch","accessTokenList","tokenIndex","Math","floor","random","accessToken","replace","repoIndex","repo","customConfig","JSON","parse","localStorage","getItem","repoUrl","split","getDir","date","Date","year","getFullYear","month","getMonth","toString","padStart","day","getDate","getDateFilename","filename","currentTimestamp","getTime","fileSuffix","uuidv4","ghFileUpload","content","dir","url","dateFilename","fetch","method","headers","Authorization","message","location","href","res","githubResourceUrl","cdnResourceUrl","download_url","giteeUpload","access_token","encodeURI","getQiniuToken","accessKey","secretKey","putPolicy","policy","stringify","encoded","base64encode","utf16to8","hash","CryptoJS","HmacSHA1","encodedSigned","enc","Base64","safe64","qiniuUpload","file","bucket","region","path","domain","token","scope","deadline","trunc","observable","qiniu","Promise","resolve","reject","subscribe","next","console","log","error","err","complete","aliOSSFileUpload","accessKeyId","accessKeySecret","cdnHost","buffer","Buffer","client","OSS","put","txCOSFileUpload","secretId","cos","COS","SecretId","SecretKey","putObject","Bucket","Region","Key","Body","Location","formCustomUpload","str","exportObj","util","axios","tokenTools","okCb","errCb","eval","fileUpload","imgHost","setItem","out","len","charCodeAt","charAt","String","fromCharCode","utf8to16","char2","char3","base64EncodeChars","base64DecodeChars","Array","c1","c2","c3","base64decode","c4","base64","render","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","script","builtinFonts","label","sizeOption","desc","colorOption","codeThemeOption","form","rows","cols","WxRenderer","opts","footnotes","footnoteIndex","styleMapping","Map","CODE_FONT_FAMILY","merge","base","extend","assign","buildTheme","themeTpl","mapping","BASE","fonts","size","ele","inline","style","base_block","block","getStyles","tokenName","addition","arr","dict","join","addFootnote","title","link","buildFootnotes","footnoteArray","map","x","buildAddition","setOptions","newOpts","hasFootnotes","getRenderer","status","theme","renderer","Renderer","heading","text","level","paragraph","indexOf","blockquote","code","lang","codeLines","line","codeTheme","codespan","listitem","list","ordered","start","segments","image","subText","figureStyles","imgStyles","startsWith","ref","strong","em","table","header","body","tablecell","flags","hr","color","BASE_BLOCK","margin","h1","display","padding","h2","background","h3","h4","blockquote_p","overflow","border","width","ol","ul","figure","transform","wx_link","thead","td","footnote","figcaption","setColorWithTemplate","template","customTheme","setColorWithCustomTemplate","setFontSizeWithTemplate","fontSize","setColor","defaultTheme","setFontSize","customCssWithTemplate","jsonString","li","css2json","css","open","close","substring","json","lbracket","rbracket","toObject","array","ret","forEach","e","index","trim","declarations","filter","selectors","selector","keys","saveEditorContent","editor","getValue","removeItem","formatDoc","doc","prettier","format","parser","plugins","prettierMarkdown","formatCss","prettierCss","fixCodeWhiteSpace","preDomList","document","getElementsByClassName","pre","whiteSpace","downloadMD","downLink","createElement","download","blob","Blob","URL","createObjectURL","appendChild","click","removeChild","exportHTML","element","querySelector","setStyles","htmlStr","innerHTML","isSection","isPre","isCode","isSpan","setAttribute","getElementStyles","tagName","from","classList","includes","parentElement","children","child","createTable","currRow","rowIdx","toBase64","reader","FileReader","readAsDataURL","onload","pop","onerror","checkImage","isValidSuffix","test","ok","msg","maxSize","valid","excludes","styles","getComputedStyle","entries","getPropertyValue","removeLeft","lines","minSpaceNum","item","match","sort","a","b","newStr","Vue","use","Vuex","state","wxRenderer","output","html","cssEditor","currentFont","currentSize","currentColor","citeStatus","nightMode","rightClickMenuVisible","mutations","setEditorValue","setValue","setCssEditorValue","setWxRendererOptions","setCiteStatus","setCurrentFont","setCurrentSize","setCurrentColor","setCurrentCodeTheme","setRightClickMenuVisible","themeChanged","initEditorState","initEditorEntity","editorDom","getElementById","DEFAULT_CONTENT","CodeMirror","fromTextArea","lineNumbers","lineWrapping","styleActiveLine","autoCloseBrackets","extraKeys","selected","getSelection","replaceSelection","initCssEditorEntity","cssEditorDom","DEFAULT_CSS_CONTENT","matchBrackets","autofocus","editorRefresh","marked","Store","actions","Message","$loading","Loading","service","$message","staticClass","class","container_night","on","onEditorRefresh","cssChanged","downloadEditorContent","exportEditorContent","$event","showCssEditor","aboutDialogVisible","dialogFormVisible","dialogUploadImgVisible","isCoping","backLight","endCopy","nativeOn","preventDefault","openMenu","directives","rawName","expression","domProps","target","composing","source","output_night","_s","_v","_e","beforeUpload","uploadImage","uploaded","model","callback","$$v","mouseLeft","mouseTop","onMenuEvent","closeRightClickMenu","effect","$emit","showResetConfirm","fontChanged","selectFont","_l","font","fontFamily","sizeChanged","selectSize","colorChanged","selectColor","statusChanged","btnType","customStyle","copy","btnContent","confirmReset","cancelReset","solveWeChatImage","clipboardDiv","images","getElementsByTagName","getAttribute","height","removeAttribute","solveHtml","juice","inlineContent","inlinePseudoElements","preserveImportant","slot","props","type","Boolean","default","computed","selectCodeTheme","components","resetDialog","methods","codeThemeChanged","val","setTimeout","focus","removeAllRanges","range","setStartBefore","firstChild","setEndAfter","lastChild","addRange","execCommand","showClose","offset","duration","clear","mounted","currentCiteStatus","staticStyle","onRedirect","rowNum","colNum","row","col","tableData","$set","insertTable","left","top","menuItem","onMouseDown","Number","menu","closeCB","activeName","changeImgHost","beforeImageUpload","formGitee","saveGiteeConfiguration","formGitHub","saveGitHubConfiguration","formAliOSS","saveAliOSSConfiguration","formTxCOS","saveTxCOSConfiguration","formQiniu","saveQiniuConfiguration","formCustom","formCustomSave","undefined","options","created","success","checkResult","isValidHost","params","watch","immediate","handler","$nextTick","isImgLoading","timeout","changeTimer","editorHeader","aboutDialog","insertFormDialog","rightClickMenu","uploadImgDialog","initEditor","clipboardData","items","kind","isValid","initCssEditor","cm","showHint","response","leftAndRightScroll","clearTimeout","removeEventListener","previewScrollCB","addEventListener","scrollTo","scrollCB","$refs","preview","$el","editorScrollCB","importMarkdownContent","input","accept","onchange","files","readAsText","txt","formatContent","min","maxLeft","clientY","$store","commit","PR","prettyPrint","CodemirrorEditor","loading","VueRouter","routes","router","process","ElementUI","productionTip","App","mpType","app","store","$mount","_m","baseURL","interceptors","request","upload"],"mappings":"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C,aAAa,IAASrK,GAAK,GAAM,IAC/CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,IAC9CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,MAE9CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,IAC9CgK,GAAOI,OAAOC,aAAa,IAASrK,GAAK,EAAK,KAGlD,OAAOgK,EAGF,SAASM,EAASjB,GACvB,IAAIW,EAAK5L,EAAG6L,EAAKjK,EACbuK,EAAOC,EACXR,EAAM,GACNC,EAAMZ,EAAI/K,OACVF,EAAI,EACJ,MAAOA,EAAI6L,EAET,OADAjK,EAAIqJ,EAAIa,WAAW9L,KACX4B,GAAK,GACX,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EAEHgK,GAAOX,EAAIc,OAAO/L,EAAI,GACtB,MACF,KAAK,GACL,KAAK,GAEHmM,EAAQlB,EAAIa,WAAW9L,KACvB4L,GAAOI,OAAOC,cAAmB,GAAJrK,IAAa,EAAc,GAARuK,GAChD,MACF,KAAK,GAEHA,EAAQlB,EAAIa,WAAW9L,KACvBoM,EAAQnB,EAAIa,WAAW9L,KACvB4L,GAAOI,OAAOC,cACN,GAAJrK,IAAa,IAAgB,GAARuK,IAAiB,GAAe,GAARC,IAAiB,GAElE,MAGN,OAAOR,EAGT,IAAMS,EACJ,mEACIC,EAAoB,IAAIC,OAC3B,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,GAC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","file":"js/app.922a39ff.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--11-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=style&index=0&id=a205efe8&lang=less&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./resetDialog.vue?vue&type=style&index=0&id=0e0dc0ee&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=0&id=741a46cf&lang=less&scoped=true&\"","import { render, staticRenderFns } from \"./Loading.vue?vue&type=template&id=a205efe8&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=a205efe8&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 \"a205efe8\",\n null\n \n)\n\nexport default component.exports","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\";\nimport * as tokenTools 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\n/**\n * 获取 `年/月/日` 形式的目录\n * @returns string\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\n/**\n * 根据文件名获取它以 `时间戳+uuid` 的形式\n * @param {string} filename 文件名\n * @returns\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 const githubResourceUrl = `raw.githubusercontent.com/${username}/${repo}/${branch}/`;\n const cdnResourceUrl = `cdn.jsdelivr.net/gh/${username}/${repo}@${branch}/`;\n res.content = res.data?.content || res.content;\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 res.content = res.data?.content || res.content;\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 { region, bucket, accessKeyId, accessKeySecret, cdnHost, 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\n//-----------------------------------------------------------------------\n// formCustom File Upload\n//-----------------------------------------------------------------------\n\nasync function formCustomUpload(content, file) {\n const str = `\n async (CUSTOM_ARG) => {\n ${localStorage.getItem(`formCustomConfig`)}\n }\n `;\n return new Promise((resolve, reject) => {\n const exportObj = {\n content, // 待上传图片的 base64\n file, // 待上传图片的 file 对象\n util: {\n axios: fetch, // axios 实例\n CryptoJS, // 加密库\n OSS, // ali-oss\n COS, // cos-js-sdk-v5\n Buffer, // buffer-from\n uuidv4, // uuid\n qiniu, // qiniu-js\n tokenTools, // 一些编码转换函数\n getDir, // 获取 年/月/日 形式的目录\n getDateFilename, // 根据文件名获取它以 时间戳+uuid 的形式\n },\n okCb: resolve, // 重要: 上传成功后给此回调传 url 即可\n errCb: reject, // 上传失败调用的函数\n };\n eval(str)(exportObj).catch((err) => {\n console.error(err);\n reject(err);\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 case \"formCustom\":\n return formCustomUpload(content, file);\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","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) | ((char2 & 0x3f) << 6) | ((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(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));\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","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=8e90ad4c&scoped=true&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=41a4af61&\"\nvar script = {}\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=less&\"\nimport style1 from \"./App.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 null,\n null\n \n)\n\nexport default component.exports","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","import { Renderer } from \"marked\";\n\nclass WxRenderer {\n constructor(opts) {\n this.opts = opts;\n let footnotes = [];\n let footnoteIndex = 0;\n let styleMapping = new Map();\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 for (let ele in themeTpl.inline) {\n if (themeTpl.inline.hasOwnProperty(ele)) {\n let style = themeTpl.inline[ele];\n mapping[ele] = merge(themeTpl.BASE, style);\n }\n }\n\n let base_block = merge(base, {});\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 if (!footnoteArray.length) {\n return \"\";\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 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 (text.indexOf(\"${text}

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

`);\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(\"image\");\n return `
\"${text}\"/${subText}
`;\n };\n renderer.link = (href, title, text) => {\n if (href.startsWith(\"https://mp.weixin.qq.com\")) {\n return `${text}`;\n }\n if (href === text) {\n return text;\n }\n if (status) {\n let ref = addFootnote(title || text, href);\n return `${text}[${ref}]`;\n }\n return `${text}`;\n };\n renderer.strong = (text) =>\n `${text}`;\n renderer.em = (text) =>\n `${text}`;\n renderer.table = (header, body) =>\n `
${header}${body}
`;\n renderer.tablecell = (text, flags) =>\n `${text}`;\n renderer.hr = () => `
`;\n return renderer;\n };\n }\n}\nexport default WxRenderer;\n","export default \"# 示例文章:Google 搜索的即时自动补全功能究竟是如何“工作”的?\\r\\n\\r\\n> Google 搜索**自动补全功能**的强大,相信不少朋友都能感受到,它帮助我们更快地“补全”我们所要输入的搜索关键字。那么,它怎么知道我们要输入什么内容?它又是如何工作的?在这篇文章里,我们一起来看看。\\r\\n\\r\\n## 使用自动补全\\r\\n\\r\\nGoogle 搜索的自动补全功能可以在 Google 搜索应用的大多数位置使用,包括 [Google](https://www.google.com/) 主页、适用于 IOS 和 Android 的 Google 应用,我们只需要在 Google 搜索框上开始键入关键字,就可以看到联想词了。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juejin.gif)\\r\\n\\r\\n在上图示例中,我们可以看到,输入关键字 `juej`,Google 搜索会联想到“掘金”、“掘金小册”、“绝句”等等,好处就是,我们无须输入完整的关键字即可轻松完成针对这些 topics 的搜索。\\r\\n\\r\\n谷歌搜索的自动补全功能对于使用移动设备的用户来说特别有用,用户可以轻松在难以键入的小屏幕上完成搜索。当然,对于移动设备用户和台式机用户而言,这都节省了大量的时间。根据 Google 官方报告,自动补全功能可以减少大约 25% 的打字,累积起来,预计每天可以节省 200 多年的打字时间。是的,每天!\\r\\n\\r\\n> 注意,本文所提到的“**联想词**”与“**预测**”,是同一个意思。\\r\\n\\r\\n## 基于“预测”而非“建议”\\r\\n\\r\\nGoogle 官方将自动补全功能称之为“预测”,而不是“建议”,为什么呢?其实是有充分理由的。自动补全功能是为了**帮助用户完成他们打算进行的搜索**,而不是建议用户要执行什么搜索。\\r\\n\\r\\n那么,Google 是如何确定这些“预测”的?其实,Google 会根据趋势搜索 [trends](https://trends.google.com/trends/?geo=US) 给到我们这些“预测”。简单来说,哪个热门、哪个搜索频率高,就更可能推给我们。当然,这也与我们当前所处的位置以及我们的搜索历史相关。\\r\\n\\r\\n另外,这些“预测”也会随着我们键入的关键字的变更而更改。例如,当我们把键入的关键字从 `juej` 更改为 `juex` 时,与“掘金”相关的预测会“消失”,同时,与“觉醒”、“决心”相关联的词会出现。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/juex.gif)\\r\\n\\r\\n## 为什么看不到某些联想词?\\r\\n\\r\\n如果我们在输入某个关键字时看不到联想词,那么表明 Google 的算法可能检测到:\\r\\n\\r\\n- 这个关键字不是热门字词;\\r\\n- 搜索的字词太新了,我们可能需要等待几天或几周才能看到联想词;\\r\\n- 这是一个侮辱性或敏感字词,这个搜索字词违反了 Google 的相关政策。更加详细的情况,可以了解 [Google 搜索自动补全政策](https://support.google.com/websearch/answer/7368877)。\\r\\n\\r\\n## 为什么会看到某些不当的联想词?\\r\\n\\r\\nGoogle 拥有专门设计的系统,可以自动捕获不适当的预测结果而不显示出来。然而,Google 每天需要处理数十亿次搜索,这意味着 Google 每天会显示数十亿甚至上百亿条预测。再好的系统,也可能存在缺陷,不正确的预测也可能随时会出现。\\r\\n\\r\\n我们作为 Google 搜索的用户,如果认定某条预测违反了相关的搜索自动补全政策,可以进行举报反馈,点击右下角“**举报不当的联想查询**”并勾选相关选项即可。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/report.gif)\\r\\n\\r\\n## 如何实现自动补全算法?\\r\\n\\r\\n目前,Google 官方似乎并没有公开搜索自动补全的算法实现,但是业界在这方面已经有了不少研究。\\r\\n\\r\\n一个好的自动补全器必须是快速的,并且在用户键入下一个字符后立即更新联想词列表。**自动补全器的核心是一个函数,它接受输入的前缀,并搜索以给定前缀开头的词汇或语句列表**。通常来说,只需要返回少量的数目即可。\\r\\n\\r\\n接下来,我们先从一个简单且低效的实现开始,并在此基础上逐步构建更高效的方法。\\r\\n\\r\\n### 词汇表实现\\r\\n\\r\\n一个**简单粗暴的实现方式**是:顺序查找词汇表,依次检查每个词汇,看它是否以给定的前缀开头。\\r\\n\\r\\n但是,此方法需要将前缀与每个词汇进行匹配检查,若词汇量较少,这种方式可能勉强行得通。但是,如果词汇量规模较大,效率就太低了。\\r\\n\\r\\n一个**更好的实现方式是**:让词汇按字典顺序排序。借助二分搜索算法,可以快速搜索有序词汇表中的前缀。由于二分搜索的每一步都会将搜索的范围减半,因此,总的搜索时间与词汇表中单词数量的对数成正比,即时间复杂度是 `O(log N)`。二分搜索的性能很好,但有没有更好的实现呢?当然有,往下看。\\r\\n\\r\\n### 前缀树实现\\r\\n\\r\\n通常来说,许多词汇都以相同的前缀开头,比如 `need`、`nested` 都以 `ne` 开头,`seed`、`speed` 都以 `s` 开头。要是为每个单词分别存储公共前缀似乎很浪费。\\r\\n\\r\\n![](https://gitee.com/yanglbme/resource/raw/master/doocs-md/pretree.png)\\r\\n\\r\\n前缀树是一种利用公共前缀来加速补全速度的数据结构。前缀树在节点树中排列一组单词,单词沿着从根节点到叶子节点的路径存储,树的层次对应于前缀的字母位置。\\r\\n\\r\\n前缀的补全是顺着前缀定义的路径来查找的。例如,在上图的前缀树中,前缀 `ne` 对应于从子节点取左边缘 `N` 和唯一边缘 `E` 的路径。然后可以通过继续遍历从 `E` 节点可以达到的所有叶节点来生成补全列表。在图中,`ne` 的补全可以是两个分支:`-ed` 和 `-sted`。如果在数中找不到由前缀定义的路径,则说明词汇表中不包含以该前缀开头的单词。\\r\\n\\r\\n### 有限状态自动机(DFA)实现\\r\\n\\r\\n前缀树可以有效处理公共前缀,但是,对于其他共享词部分,仍会分别存储在每个分支中。比如,后缀 `ed`、`ing`、`tion` 在英文单词中特别常见。在上一个例子中,`e`、`d` 分别存放在了每一个分支上。\\r\\n\\r\\n有没有一种方法可以更加节省存储空间呢?有的,那就是 DFA。\\r\\n\\r\\n
\\r\\n
\\r\\n\\r\\n在上面的例子中,单词 `need`、`nested`、`seed` 和 `speed` 仅由 9 个节点组成,而上一张图中的前缀树包含了 17 个节点。\\r\\n\\r\\n可以看出,最小化前缀树 DFA 可以在很大程度上减少数据结构的大小。即使词汇量很大,最小化 DFA 通常也适合在内存中存储,避免昂贵的磁盘访问是实现快速自动补全的关键。\\r\\n\\r\\n### 一些扩展\\r\\n\\r\\n上面介绍了如何利用合理的数据结构实现基本的自动补全功能。这些数据结构可以通过多种方式进行扩展,从而改善用户体验。\\r\\n\\r\\n通常,满足特定前缀的词汇可能很多,而用户界面上能够显示的却不多,我们更希望能显示最常搜索或者最有价值的词汇。这通常可以通过为词汇表中的每个单词增加一个代表单词值的**权重** `weight`,并且按照权重高低来排序自动补全列表。\\r\\n\\r\\n- 对于排序后的词汇表来说,在词汇表每个元素上增加 `weight` 属性并不难;\\r\\n- 对于前缀树来说,将 `weight` 存储在叶子节点中,也是很简单的一个实现;\\r\\n- 对于 `DFA` 来说,则较为复杂。因为一个叶子节点可以通过多条路径到达。一种解决方案是将权重关联到路径而不是叶子节点。\\r\\n\\r\\n目前有不少开源库都提供了这个功能,比如主流的搜索引擎框架 [Elasticsearch](https://www.elastic.co/products/elasticsearch)、[Solr](https://lucene.apache.org/solr/) 等,基于此,我们可以实现高效而强大的自动补全功能。\\r\\n\\r\\n#### 推荐阅读\\r\\n\\r\\n- [阿里又一个 20k+ stars 开源项目诞生,恭喜 fastjson!](https://mp.weixin.qq.com/s/RNKDCK2KoyeuMeEs6GUrow)\\r\\n- [刷掉 90% 候选人的互联网大厂海量数据面试题(附题解 + 方法总结)](https://mp.weixin.qq.com/s/rjGqxUvrEqJNlo09GrT1Dw)\\r\\n- [好用!期待已久的文本块功能究竟如何在 Java 13 中发挥作用?](https://mp.weixin.qq.com/s/kalGv5T8AZGxTnLHr2wDsA)\\r\\n- [2019 GitHub 开源贡献排行榜新鲜出炉!微软谷歌领头,阿里跻身前 12!](https://mp.weixin.qq.com/s/_q812aGD1b9QvZ2WFI0Qgw)\\r\\n\\r\\n---\\r\\n\\r\\n欢迎关注我的公众号“**Doocs 开源社区**”,原创技术文章第一时间推送。\\r\\n\\r\\n
\\r\\n \\r\\n
\\r\\n\";","export default \"/*\\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/* 分割线样式 */\\nhr {\\n}\\n/* 行内代码样式 */\\ncodespan {\\n}\\n/* 粗体样式 */\\nstrong {\\n}\\n/* 链接样式 */\\nlink {\\n}\\n/* 微信链接样式 */\\nwx_link {\\n}\\n/* 有序列表样式 */\\nol {\\n}\\n/* 无序列表样式 */\\nul {\\n}\\n/* 列表项样式 */\\nli {\\n}\\n\";","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\": \"8px\",\n color: \"rgba(0,0,0,0.5)\",\n background: \"#f7f7f7\",\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\": \"8px\",\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 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 hr: {\n \"border-style\": \"solid\",\n \"border-width\": \"1px 0 0\",\n \"border-color\": \"rgba(0,0,0,0.1)\",\n \"-webkit-transform-origin\": \"0 0\",\n \"-webkit-transform\": \"scale(1, 0.5)\",\n \"transform-origin\": \"0 0\",\n transform: \"scale(1, 0.5)\",\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 defaultTheme 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 customTheme = JSON.parse(JSON.stringify(template));\n customTheme.block.h1[\"border-bottom\"] = `2px solid ${color}`;\n customTheme.block.h2[\"background\"] = color;\n customTheme.block.h3[\"border-left\"] = `3px solid ${color}`;\n customTheme.block.h4[\"color\"] = color;\n customTheme.inline.strong[\"color\"] = color;\n return customTheme;\n };\n}\n\nexport const setColorWithCustomTemplate = function setColorWithCustomTemplate(\n template,\n color\n) {\n let customTheme = JSON.parse(JSON.stringify(template));\n customTheme.block.h1[\"border-bottom\"] = `2px solid ${color}`;\n customTheme.block.h2[\"background\"] = color;\n customTheme.block.h3[\"border-left\"] = `3px solid ${color}`;\n customTheme.block.h4[\"color\"] = color;\n customTheme.inline.strong[\"color\"] = color;\n return customTheme;\n};\n\n// 设置自定义字体大小\nexport function setFontSizeWithTemplate(template) {\n return function (fontSize) {\n let customTheme = JSON.parse(JSON.stringify(template));\n customTheme.block.h1[\"font-size\"] = `${fontSize * 1.14}px`;\n customTheme.block.h2[\"font-size\"] = `${fontSize * 1.1}px`;\n customTheme.block.h3[\"font-size\"] = `${fontSize}px`;\n customTheme.block.h4[\"font-size\"] = `${fontSize}px`;\n return customTheme;\n };\n}\n\nexport const setColor = setColorWithTemplate(defaultTheme);\nexport const setFontSize = setFontSizeWithTemplate(defaultTheme);\n\nexport function customCssWithTemplate(jsonString, color, theme) {\n let customTheme = JSON.parse(JSON.stringify(theme));\n // block\n customTheme.block.h1[\"border-bottom\"] = `2px solid ${color}`;\n customTheme.block.h2[\"background\"] = color;\n customTheme.block.h3[\"border-left\"] = `3px solid ${color}`;\n customTheme.block.h4[\"color\"] = color;\n customTheme.inline.strong[\"color\"] = color;\n\n customTheme.block.h1 = Object.assign(customTheme.block.h1, jsonString.h1);\n customTheme.block.h2 = Object.assign(customTheme.block.h2, jsonString.h2);\n customTheme.block.h3 = Object.assign(customTheme.block.h3, jsonString.h3);\n customTheme.block.h4 = Object.assign(customTheme.block.h4, jsonString.h4);\n customTheme.block.p = Object.assign(customTheme.block.p, jsonString.p);\n customTheme.block.hr = Object.assign(customTheme.block.hr, jsonString.hr);\n customTheme.block.blockquote = Object.assign(\n customTheme.block.blockquote,\n jsonString.blockquote\n );\n customTheme.block.blockquote_p = Object.assign(\n customTheme.block.blockquote_p,\n jsonString.blockquote_p\n );\n customTheme.block.image = Object.assign(\n customTheme.block.image,\n jsonString.image\n );\n\n // inline\n customTheme.inline.strong = Object.assign(\n customTheme.inline.strong,\n jsonString.strong\n );\n customTheme.inline.codespan = Object.assign(\n customTheme.inline.codespan,\n jsonString.codespan\n );\n customTheme.inline.link = Object.assign(\n customTheme.inline.link,\n jsonString.link\n );\n customTheme.inline.wx_link = Object.assign(\n customTheme.inline.wx_link,\n jsonString.wx_link\n );\n customTheme.block.ul = Object.assign(customTheme.block.ul, jsonString.ul);\n customTheme.block.ol = Object.assign(customTheme.block.ol, jsonString.ol);\n customTheme.inline.listitem = Object.assign(\n customTheme.inline.listitem,\n jsonString.li\n );\n return customTheme;\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 (css.length > 0 && css.indexOf(\"{\") !== -1 && css.indexOf(\"}\") !== -1) {\n // 存储第一个左/右花括号的下标\n const lbracket = css.indexOf(\"{\");\n const rbracket = css.indexOf(\"}\");\n\n // 第一步:将声明转换为Object,如:\n // `font: 'Times New Roman' 1em; color: #ff0000; margin-top: 1em;`\n // ==>\n // `{\"font\": \"'Times New Roman' 1em\", \"color\": \"#ff0000\", \"margin-top\": \"1em\"}`\n\n // 辅助方法:将array转为object\n function toObject(array) {\n let ret = {};\n array.forEach((e) => {\n const index = e.indexOf(\":\");\n const property = e.substring(0, index).trim();\n const value = e.substring(index + 1).trim();\n ret[property] = value;\n });\n return ret;\n }\n\n // 切割声明块并移除空白符,然后放入数组中\n let declarations = css\n .substring(lbracket + 1, rbracket)\n .split(\";\")\n .map((e) => e.trim())\n .filter((e) => e.length > 0); // 移除所有\"\"空值\n\n // 转为Object对象\n declarations = toObject(declarations);\n\n // 第二步:选择器处理,每个选择器会与它对应的声明相关联,如:\n // `h1, p#bar {color: red}`\n // ==>\n // {\"h1\": {color: red}, \"p#bar\": {color: red}}\n\n let selectors = css\n .substring(0, lbracket)\n // 以,切割,并移除空格:`\"h1, p#bar, span.foo\"` => [\"h1\", \"p#bar\", \"span.foo\"]\n .split(\",\")\n .map((selector) => selector.trim());\n\n // 迭代赋值\n selectors.forEach((selector) => {\n // 若不存在,则先初始化\n if (!json[selector]) json[selector] = {};\n // 赋值到JSON\n Object.keys(declarations).forEach((key) => {\n json[selector][key] = declarations[key];\n });\n });\n\n // 继续下个声明块\n css = css.slice(rbracket + 1).trim();\n }\n\n // 返回JSON形式的结果串\n return json;\n}\n\n/**\n * 将编辑器内容保存到 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 * 导出 HTML 生成内容\n */\nexport function exportHTML() {\n const element = document.querySelector(\"#output\");\n setStyles(element);\n const htmlStr = element.innerHTML;\n\n const downLink = document.createElement(\"a\");\n\n downLink.download = \"content.html\";\n downLink.style.display = \"none\";\n let blob = new Blob([\n `
${htmlStr}
`,\n ]);\n\n downLink.href = URL.createObjectURL(blob);\n document.body.appendChild(downLink);\n downLink.click();\n document.body.removeChild(downLink);\n\n function setStyles(element) {\n switch (true) {\n case isSection(element):\n case isPre(element):\n case isCode(element):\n case isSpan(element):\n element.setAttribute(\"style\", getElementStyles(element));\n default:\n }\n if (element.children.length) {\n Array.from(element.children).forEach((child) => setStyles(child));\n }\n\n // 判断是否是包裹代码块的 section 元素\n function isSection(element) {\n return (\n element.tagName === \"SECTION\" &&\n Array.from(element.classList).includes(\"code-snippet__github\")\n );\n }\n // 判断是否是包裹代码块的 pre 元素\n function isPre(element) {\n return (\n element.tagName === \"PRE\" &&\n Array.from(element.classList).includes(\"code__pre\")\n );\n }\n // 判断是否是包裹代码块的 code 元素\n function isCode(element) {\n return (\n element.tagName === \"CODE\" &&\n Array.from(element.classList).includes(\"prettyprint\")\n );\n }\n // 判断是否是包裹代码字符的 span 元素\n function isSpan(element) {\n return (\n element.tagName === \"SPAN\" &&\n (isCode(element.parentElement) ||\n isCode(element.parentElement.parentElement))\n );\n }\n }\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 = 10;\n const valid = file.size / 1024 / 1024 <= maxSize;\n if (!valid) {\n return {\n ok: false,\n msg: `由于公众号限制,图片大小不能超过 ${maxSize}M`,\n };\n }\n return { ok: true };\n}\n\n/**\n * 获取一个 DOM 元素的所有样式,\n * @param {DOM 元素} element DOM 元素\n * @param {排除的属性} excludes 如果某些属性对结果有不良影响,可以使用这个参数来排除\n * @returns 行内样式拼接结果\n */\nfunction getElementStyles(element, excludes = [\"width\", \"height\"]) {\n const styles = getComputedStyle(element, null);\n return Object.entries(styles)\n .filter(([key]) => styles.getPropertyValue(key) && !excludes.includes(key))\n .map(([key, value]) => `${key}:${value};`)\n .join(\"\");\n}\n\n/**\n * 移除左边多余空格\n * @param {*} str\n * @returns\n */\nexport function removeLeft(str) {\n const lines = str.split('\\n')\n // 获取应该删除的空白符数量\n const minSpaceNum = lines.filter(item => item.trim())\n .map(item => item.match(/(^\\s+)?/)[0].length)\n .sort((a, b) => a - b)[0]\n // 删除空白符\n const newStr = lines\n .map(item => item.slice(minSpaceNum))\n .join('\\n')\n return newStr\n}\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/example/markdown.md\";\nimport DEFAULT_CSS_CONTENT from \"@/assets/example/theme-css.txt\";\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\") || 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 });\n },\n initEditorEntity(state) {\n const editorDom = document.getElementById(\"editor\");\n\n if (!editorDom.value) {\n editorDom.value =\n localStorage.getItem(\"__editor_content\") || formatDoc(DEFAULT_CONTENT);\n }\n state.editor = CodeMirror.fromTextArea(editorDom, {\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 \"Ctrl-B\": function bold(editor) {\n const selected = editor.getSelection();\n editor.replaceSelection(`**${selected}**`);\n },\n \"Ctrl-D\": function del(editor) {\n const selected = editor.getSelection();\n editor.replaceSelection(`~~${selected}~~`);\n },\n \"Ctrl-I\": function italic(editor) {\n const selected = editor.getSelection();\n editor.replaceSelection(`*${selected}*`);\n },\n },\n });\n },\n initCssEditorEntity(state) {\n const cssEditorDom = document.getElementById(\"cssEditor\");\n\n if (!cssEditorDom.value) {\n cssEditorDom.value =\n localStorage.getItem(\"__css_content\") || DEFAULT_CSS_CONTENT;\n }\n state.cssEditor = CodeMirror.fromTextArea(cssEditorDom, {\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 editorRefresh(state) {\n let renderer = state.wxRenderer.getRenderer(state.citeStatus);\n marked.setOptions({ renderer });\n let output = marked.parse(state.editor.getValue(0));\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};\n\nexport default new Vuex.Store({\n state,\n mutations,\n actions: {},\n});\n","import Vue from \"vue\";\nimport {\n Loading,\n Message,\n} from \"element-ui\";\n\nVue.component(Message.name, Message);\n\nVue.prototype.$loading = Loading.service;\nVue.prototype.$message = Message;\n","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,\"export\":_vm.exportEditorContent,\"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',{staticClass:\"codeMirror-wrapper\",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\"}],staticClass:\"cssEditor-wrapper\",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('div',{staticClass:\"left-side\"},[_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\":\"导出 HTML 页面\",\"placement\":\"bottom-start\"}},[_c('i',{staticClass:\"el-icon-document\",attrs:{\"size\":\"medium\"},on:{\"click\":function($event){return _vm.$emit('export')}}})]),_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-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),_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),_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),_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('div',{staticClass:\"right-side\"},[_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}})])],1),_c('resetDialog',{attrs:{\"showResetConfirm\":_vm.showResetConfirm},on:{\"confirm\":_vm.confirmReset,\"close\":_vm.cancelReset}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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","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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=0e0dc0ee&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=0e0dc0ee&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 \"0e0dc0ee\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=79e3fc90&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=79e3fc90&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 \"79e3fc90\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=70c50907&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=70c50907&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 \"70c50907\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=4dd4e7e2&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=4dd4e7e2&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 \"4dd4e7e2\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=0a3b7c09&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=0a3b7c09&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 \"0a3b7c09\",\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\"},model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_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),_c('el-tab-pane',{staticClass:\"github-panel formCustom\",attrs:{\"label\":\"自定义代码\",\"name\":\"formCustom\"}},[_c('el-form',{staticClass:\"setting-form\",attrs:{\"model\":_vm.formCustom,\"label-position\":\"right\"}},[_c('el-form-item',{attrs:{\"label\":\"\",\"required\":true}},[_c('el-input',{ref:\"formCustomElInput\",staticClass:\"formCustomElInput\",attrs:{\"type\":\"textarea\",\"resize\":\"none\",\"placeholder\":\"Your custom code here.\"},model:{value:(_vm.formCustom.code),callback:function ($$v) {_vm.$set(_vm.formCustom, \"code\", $$v)},expression:\"formCustom.code\"}}),_c('el-link',{attrs:{\"type\":\"primary\",\"href\":\"https://github.com/doocs/md#自定义上传逻辑\",\"target\":\"_blank\"}},[_vm._v(\"参数详情?\")])],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.formCustomSave}},[_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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=6b7f927f&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=6b7f927f&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 \"6b7f927f\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-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=741a46cf&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=741a46cf&lang=less&scoped=true&\"\nimport style1 from \"./CodemirrorEditor.vue?vue&type=style&index=1&id=741a46cf&lang=less&scoped=true&\"\nimport style2 from \"./CodemirrorEditor.vue?vue&type=style&index=2&id=741a46cf&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 \"741a46cf\",\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--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=8e90ad4c&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=8e90ad4c&scoped=true&lang=css&\"\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 \"8e90ad4c\",\n null\n \n)\n\nexport default component.exports","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport index from '@/pages/index/index'\n\nVue.use(VueRouter)\n\nconst routes = [\n {\n path: `/`,\n name: `index`,\n component: index,\n }\n]\n\nconst router = new VueRouter({\n mode: `history`,\n base: process.env.BASE_URL,\n routes,\n})\n\nexport default router\n","import Vue from \"vue\";\nimport App from \"./App\";\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 router from './router';\n\nVue.use(ElementUI);\n\nVue.config.productionTip = false;\n\nApp.mpType = \"app\";\n\nconst app = new Vue({\n router,\n store,\n ...App,\n});\napp.$mount(\"#app\");\n","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./insertForm.vue?vue&type=style&index=0&id=4dd4e7e2&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=1&id=741a46cf&lang=less&scoped=true&\"","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CodemirrorEditor.vue?vue&type=style&index=2&id=741a46cf&lang=less&scoped=true&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./rightClickMenu.vue?vue&type=style&index=0&id=0a3b7c09&lang=less&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./header.vue?vue&type=style&index=0&id=79e3fc90&lang=less&scoped=true&\"","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&lang=less&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./uploadImgDialog.vue?vue&type=style&index=0&id=6b7f927f&lang=less&scoped=true&\"","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 }","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--11-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--11-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--11-oneOf-1-2!../../../node_modules/less-loader/dist/cjs.js??ref--11-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./aboutDialog.vue?vue&type=style&index=0&id=70c50907&lang=less&scoped=true&\"","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-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--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Loading.vue?vue&type=script&lang=js&\"","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","import axios from \"axios\";\n\n// 创建axios实例\nconst service = axios.create({\n baseURL: \"\",\n timeout: 30 * 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"],"sourceRoot":""} \ No newline at end of file diff --git a/js/chunk-vendors.824a9072.js b/js/chunk-vendors.245483b1.js similarity index 76% rename from js/chunk-vendors.824a9072.js rename to js/chunk-vendors.245483b1.js index 79461d1..214a02e 100644 --- a/js/chunk-vendors.824a9072.js +++ b/js/chunk-vendors.245483b1.js @@ -66,7 +66,7 @@ const t=dz,n=mz;class r{constructor(e,t,n,r){this.file=e,this.offset=t,this.line * @param {String} selectorText from mensch * @api public */ -t.extract=function(e){for(var t=0,n=[],r="",i=0,o=e.length;i=0;a--)(t.fontFaces&&"font-face"===o[a].type||t.mediaQueries&&"media"===o[a].type||t.keyFrames&&"keyframes"===o[a].type||t.pseudos&&o[a].selectors&&this.matchesPseudo(o[a].selectors[0],n))&&s.unshift(r.stringify({stylesheet:{rules:[o[a]]}},{comments:!1,indentation:" "})),o[a].position.start;return 0!==s.length&&"\n"+s.join("\n")+"\n"},t.normalizeLineEndings=function(e){return e.replace(/\r\n/g,"\n").replace(/\n/g,"\r\n")},t.matchesPseudo=function(e,t){return t.find((function(t){return e.indexOf(t)>-1}))},t.compareFunc=function(e,t){for(var n=Math.min(e.length,t.length),r=0;rt[r]?1:-1;return e.length-t.length},t.compare=function(e,n){return 1==t.compareFunc(e,n)?e:n},t.getDefaultOptions=function(e){var t=Object.assign({extraCss:"",insertPreservedExtraCss:!0,applyStyleTags:!0,removeStyleTags:!0,preserveMediaQueries:!0,preserveFontFaces:!0,preserveKeyFrames:!0,preservePseudos:!0,applyWidthAttributes:!0,applyHeightAttributes:!0,applyAttributesTableElements:!0,url:""},e);return t.webResources=t.webResources||{},t}},"44d2":function(e,t,n){var r=n("b622"),i=n("7c73"),o=n("9bf2"),s=r("unscopables"),a=Array.prototype;void 0==a[s]&&o.f(a,s,{configurable:!0,value:i(null)}),e.exports=function(e){a[s][e]=!0}},"44de":function(e,t,n){var r=n("da84");e.exports=function(e,t){var n=r.console;n&&n.error&&(1==arguments.length?n.error(e):n.error(e,t))}},"44e7":function(e,t,n){var r=n("861d"),i=n("c6b6"),o=n("b622"),s=o("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[s])?!!t:"RegExp"==i(e))}},"466b":function(e,t,n){"use strict";var r=n("33b7"),i=n("492c"),o=i((function(e,t){return r(e,{xmlMode:t&&t.xmlMode},s,[t])})),s=function(e,t){return o.juiceDocument(e,t)};o.inlineContent=function(e,t,n){return r(e,{xmlMode:n&&n.xmlMode},o.inlineDocument,[t,n])},e.exports=o},"466d":function(e,t,n){"use strict";var r=n("c65b"),i=n("d784"),o=n("825a"),s=n("50c4"),a=n("577e"),u=n("1d80"),l=n("dc4a"),c=n("8aa5"),p=n("14c3");i("match",(function(e,t,n){return[function(t){var n=u(this),i=void 0==t?void 0:l(t,e);return i?r(i,t,n):new RegExp(t)[e](a(n))},function(e){var r=o(this),i=a(e),u=n(t,r,i);if(u.done)return u.value;if(!r.global)return p(r,i);var l=r.unicode;r.lastIndex=0;var f,h=[],d=0;while(null!==(f=p(r,i))){var m=a(f[0]);h[d]=m,""===m&&(r.lastIndex=c(i,s(r.lastIndex),l)),d++}return 0===d?null:h}]}))},"467f":function(e,t,n){"use strict";var r=n("2d83");e.exports=function(e,t,n){var i=n.config.validateStatus;n.status&&i&&!i(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},4726:function(e,t,n){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist/",n(n.s=59)}({0:function(e,t,n){"use strict";function r(e,t,n,r,i,o,s,a){var u,l="function"===typeof e?e.options:e;if(t&&(l.render=t,l.staticRenderFns=n,l._compiled=!0),r&&(l.functional=!0),o&&(l._scopeId="data-v-"+o),s?(u=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||"undefined"===typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(s)},l._ssrRegister=u):i&&(u=a?function(){i.call(this,this.$root.$options.shadowRoot)}:i),u)if(l.functional){l._injectStyles=u;var c=l.render;l.render=function(e,t){return u.call(t),c(e,t)}}else{var p=l.beforeCreate;l.beforeCreate=p?[].concat(p,u):[u]}return{exports:e,options:l}}n.d(t,"a",(function(){return r}))},15:function(e,t){e.exports=n("14e9")},19:function(e,t){e.exports=n("dcdc")},21:function(e,t){e.exports=n("d397")},26:function(e,t){e.exports=n("92fa")},3:function(e,t){e.exports=n("8122")},31:function(e,t){e.exports=n("2a5e")},40:function(e,t){e.exports=n("e452")},51:function(e,t){e.exports=n("f494")},59:function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:["el-cascader-panel",e.border&&"is-bordered"],on:{keydown:e.handleKeyDown}},e._l(e.menus,(function(e,t){return n("cascader-menu",{key:t,ref:"menu",refInFor:!0,attrs:{index:t,nodes:e}})})),1)},i=[];r._withStripped=!0;var o,s,a=n(26),u=n.n(a),l=n(15),c=n.n(l),p=n(19),f=n.n(p),h=n(51),d=n.n(h),m=n(3),g=function(e){return e.stopPropagation()},y={inject:["panel"],components:{ElCheckbox:f.a,ElRadio:d.a},props:{node:{required:!0},nodeId:String},computed:{config:function(){return this.panel.config},isLeaf:function(){return this.node.isLeaf},isDisabled:function(){return this.node.isDisabled},checkedValue:function(){return this.panel.checkedValue},isChecked:function(){return this.node.isSameNode(this.checkedValue)},inActivePath:function(){return this.isInPath(this.panel.activePath)},inCheckedPath:function(){var e=this;return!!this.config.checkStrictly&&this.panel.checkedNodePaths.some((function(t){return e.isInPath(t)}))},value:function(){return this.node.getValueByOption()}},methods:{handleExpand:function(){var e=this,t=this.panel,n=this.node,r=this.isDisabled,i=this.config,o=i.multiple,s=i.checkStrictly;!s&&r||n.loading||(i.lazy&&!n.loaded?t.lazyLoad(n,(function(){var t=e.isLeaf;if(t||e.handleExpand(),o){var r=!!t&&n.checked;e.handleMultiCheckChange(r)}})):t.handleExpand(n))},handleCheckChange:function(){var e=this.panel,t=this.value,n=this.node;e.handleCheckChange(t),e.handleExpand(n)},handleMultiCheckChange:function(e){this.node.doCheck(e),this.panel.calculateMultiCheckedValue()},isInPath:function(e){var t=this.node,n=e[t.level-1]||{};return n.uid===t.uid},renderPrefix:function(e){var t=this.isLeaf,n=this.isChecked,r=this.config,i=r.checkStrictly,o=r.multiple;return o?this.renderCheckbox(e):i?this.renderRadio(e):t&&n?this.renderCheckIcon(e):null},renderPostfix:function(e){var t=this.node,n=this.isLeaf;return t.loading?this.renderLoadingIcon(e):n?null:this.renderExpandIcon(e)},renderCheckbox:function(e){var t=this.node,n=this.config,r=this.isDisabled,i={on:{change:this.handleMultiCheckChange},nativeOn:{}};return n.checkStrictly&&(i.nativeOn.click=g),e("el-checkbox",u()([{attrs:{value:t.checked,indeterminate:t.indeterminate,disabled:r}},i]))},renderRadio:function(e){var t=this.checkedValue,n=this.value,r=this.isDisabled;return Object(m["isEqual"])(n,t)&&(n=t),e("el-radio",{attrs:{value:t,label:n,disabled:r},on:{change:this.handleCheckChange},nativeOn:{click:g}},[e("span")])},renderCheckIcon:function(e){return e("i",{class:"el-icon-check el-cascader-node__prefix"})},renderLoadingIcon:function(e){return e("i",{class:"el-icon-loading el-cascader-node__postfix"})},renderExpandIcon:function(e){return e("i",{class:"el-icon-arrow-right el-cascader-node__postfix"})},renderContent:function(e){var t=this.panel,n=this.node,r=t.renderLabelFn,i=r?r({node:n,data:n.data}):null;return e("span",{class:"el-cascader-node__label"},[i||n.label])}},render:function(e){var t=this,n=this.inActivePath,r=this.inCheckedPath,i=this.isChecked,o=this.isLeaf,s=this.isDisabled,a=this.config,l=this.nodeId,c=a.expandTrigger,p=a.checkStrictly,f=a.multiple,h=!p&&s,d={on:{}};return"click"===c?d.on.click=this.handleExpand:(d.on.mouseenter=function(e){t.handleExpand(),t.$emit("expand",e)},d.on.focus=function(e){t.handleExpand(),t.$emit("expand",e)}),!o||s||p||f||(d.on.click=this.handleCheckChange),e("li",u()([{attrs:{role:"menuitem",id:l,"aria-expanded":n,tabindex:h?null:-1},class:{"el-cascader-node":!0,"is-selectable":p,"in-active-path":n,"in-checked-path":r,"is-active":i,"is-disabled":h}},d]),[this.renderPrefix(e),this.renderContent(e),this.renderPostfix(e)])}},v=y,b=n(0),D=Object(b["a"])(v,o,s,!1,null,null,null);D.options.__file="packages/cascader-panel/src/cascader-node.vue";var w,C,x=D.exports,E=n(6),_=n.n(E),k={name:"ElCascaderMenu",mixins:[_.a],inject:["panel"],components:{ElScrollbar:c.a,CascaderNode:x},props:{nodes:{type:Array,required:!0},index:Number},data:function(){return{activeNode:null,hoverTimer:null,id:Object(m["generateId"])()}},computed:{isEmpty:function(){return!this.nodes.length},menuId:function(){return"cascader-menu-"+this.id+"-"+this.index}},methods:{handleExpand:function(e){this.activeNode=e.target},handleMouseMove:function(e){var t=this.activeNode,n=this.hoverTimer,r=this.$refs.hoverZone;if(t&&r)if(t.contains(e.target)){clearTimeout(n);var i=this.$el.getBoundingClientRect(),o=i.left,s=e.clientX-o,a=this.$el,u=a.offsetWidth,l=a.offsetHeight,c=t.offsetTop,p=c+t.offsetHeight;r.innerHTML='\n \n \n '}else n||(this.hoverTimer=setTimeout(this.clearHoverZone,this.panel.config.hoverThreshold))},clearHoverZone:function(){var e=this.$refs.hoverZone;e&&(e.innerHTML="")},renderEmptyText:function(e){return e("div",{class:"el-cascader-menu__empty-text"},[this.t("el.cascader.noData")])},renderNodeList:function(e){var t=this.menuId,n=this.panel.isHoverMenu,r={on:{}};n&&(r.on.expand=this.handleExpand);var i=this.nodes.map((function(n,i){var o=n.hasChildren;return e("cascader-node",u()([{key:n.uid,attrs:{node:n,"node-id":t+"-"+i,"aria-haspopup":o,"aria-owns":o?t:null}},r]))}));return[].concat(i,[n?e("svg",{ref:"hoverZone",class:"el-cascader-menu__hover-zone"}):null])}},render:function(e){var t=this.isEmpty,n=this.menuId,r={nativeOn:{}};return this.panel.isHoverMenu&&(r.nativeOn.mousemove=this.handleMouseMove),e("el-scrollbar",u()([{attrs:{tag:"ul",role:"menu",id:n,"wrap-class":"el-cascader-menu__wrap","view-class":{"el-cascader-menu__list":!0,"is-empty":t}},class:"el-cascader-menu"},r]),[t?this.renderEmptyText(e):this.renderNodeList(e)])}},S=k,T=Object(b["a"])(S,w,C,!1,null,null,null);T.options.__file="packages/cascader-panel/src/cascader-menu.vue";var A=T.exports,O=n(21),F=function(){function e(e,t){for(var n=0;n1?t-1:0),r=1;r1?r-1:0),o=1;o0},e.prototype.syncCheckState=function(e){var t=this.getValueByOption(),n=this.isSameNode(e,t);this.doCheck(n)},e.prototype.doCheck=function(e){this.checked!==e&&(this.config.checkStrictly?this.checked=e:(this.broadcast("check",e),this.setCheckState(e),this.emit("check")))},F(e,[{key:"isDisabled",get:function(){var e=this.data,t=this.parent,n=this.config,r=n.disabled,i=n.checkStrictly;return e[r]||!i&&t&&t.isDisabled}},{key:"isLeaf",get:function(){var e=this.data,t=this.loaded,n=this.hasChildren,r=this.children,i=this.config,o=i.lazy,s=i.leaf;if(o){var a=Object(O["isDef"])(e[s])?e[s]:!!t&&!r.length;return this.hasChildren=!a,a}return!n}}]),e}(),M=P;function L(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var j=function e(t,n){return t.reduce((function(t,r){return r.isLeaf?t.push(r):(!n&&t.push(r),t=t.concat(e(r.children,n))),t}),[])},B=function(){function e(t,n){L(this,e),this.config=n,this.initNodes(t)}return e.prototype.initNodes=function(e){var t=this;e=Object(m["coerceTruthyValueToArray"])(e),this.nodes=e.map((function(e){return new M(e,t.config)})),this.flattedNodes=this.getFlattedNodes(!1,!1),this.leafNodes=this.getFlattedNodes(!0,!1)},e.prototype.appendNode=function(e,t){var n=new M(e,this.config,t),r=t?t.children:this.nodes;r.push(n)},e.prototype.appendNodes=function(e,t){var n=this;e=Object(m["coerceTruthyValueToArray"])(e),e.forEach((function(e){return n.appendNode(e,t)}))},e.prototype.getNodes=function(){return this.nodes},e.prototype.getFlattedNodes=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=e?this.leafNodes:this.flattedNodes;return t?n:j(this.nodes,e)},e.prototype.getNodeByValue=function(e){var t=this.getFlattedNodes(!1,!this.config.lazy).filter((function(t){return Object(m["valueEquals"])(t.path,e)||t.value===e}));return t&&t.length?t[0]:null},e}(),R=B,$=n(9),H=n.n($),U=n(40),z=n.n(U),q=n(31),V=n.n(q),W=Object.assign||function(e){for(var t=1;t0){var u=n.store.getNodeByValue(o);u.data[a]||n.lazyLoad(u,(function(){n.handleExpand(u)})),n.loadCount===n.checkedValue.length&&n.$parent.computePresentText()}}t&&t(r)};r.lazyLoad(e,i)},calculateMultiCheckedValue:function(){this.checkedValue=this.getCheckedNodes(this.leafOnly).map((function(e){return e.getValueByOption()}))},scrollIntoView:function(){if(!this.$isServer){var e=this.$refs.menu||[];e.forEach((function(e){var t=e.$el;if(t){var n=t.querySelector(".el-scrollbar__wrap"),r=t.querySelector(".el-cascader-node.is-active")||t.querySelector(".el-cascader-node.in-active-path");V()(n,r)}}))}},getNodeByValue:function(e){return this.store.getNodeByValue(e)},getFlattedNodes:function(e){var t=!this.config.lazy;return this.store.getFlattedNodes(e,t)},getCheckedNodes:function(e){var t=this.checkedValue,n=this.multiple;if(n){var r=this.getFlattedNodes(e);return r.filter((function(e){return e.checked}))}return this.isEmptyValue(t)?[]:[this.getNodeByValue(t)]},clearCheckedNodes:function(){var e=this.config,t=this.leafOnly,n=e.multiple,r=e.emitPath;n?(this.getCheckedNodes(t).filter((function(e){return!e.isDisabled})).forEach((function(e){return e.doCheck(!1)})),this.calculateMultiCheckedValue()):this.checkedValue=r?[]:null}}},te=ee,ne=Object(b["a"])(te,r,i,!1,null,null,null);ne.options.__file="packages/cascader-panel/src/cascader-panel.vue";var re=ne.exports;re.install=function(e){e.component(re.name,re)};t["default"]=re},6:function(e,t){e.exports=n("6b7c")},9:function(e,t){e.exports=n("7f4d")}})},4795:function(e,t,n){var r=n("23e7"),i=n("da84"),o=n("2ba4"),s=n("1626"),a=n("342f"),u=n("f36a"),l=/MSIE .\./.test(a),c=i.Function,p=function(e){return function(t,n){var r=arguments.length>2,i=r?u(arguments,2):void 0;return e(r?function(){o(s(t)?t:c(t),this,i)}:t,n)}};r({global:!0,bind:!0,forced:l},{setTimeout:p(i.setTimeout),setInterval:p(i.setInterval)})},4840:function(e,t,n){var r=n("825a"),i=n("5087"),o=n("b622"),s=o("species");e.exports=function(e,t){var n,o=r(e).constructor;return void 0===o||void 0==(n=r(o)[s])?t:i(n)}},"485a":function(e,t,n){var r=n("da84"),i=n("c65b"),o=n("1626"),s=n("861d"),a=r.TypeError;e.exports=function(e,t){var n,r;if("string"===t&&o(n=e.toString)&&!s(r=i(n,e)))return r;if(o(n=e.valueOf)&&!s(r=i(n,e)))return r;if("string"!==t&&o(n=e.toString)&&!s(r=i(n,e)))return r;throw a("Can't convert object to primitive value")}},4897:function(e,t,n){"use strict";t.__esModule=!0,t.i18n=t.use=t.t=void 0;var r=n("f0d9"),i=p(r),o=n("2b0e"),s=p(o),a=n("3c4e"),u=p(a),l=n("9d7e"),c=p(l);function p(e){return e&&e.__esModule?e:{default:e}}var f=(0,c.default)(s.default),h=i.default,d=!1,m=function(){var e=Object.getPrototypeOf(this||s.default).$t;if("function"===typeof e&&s.default.locale)return d||(d=!0,s.default.locale(s.default.config.lang,(0,u.default)(h,s.default.locale(s.default.config.lang)||{},{clone:!0}))),e.apply(this,arguments)},g=t.t=function(e,t){var n=m.apply(this,arguments);if(null!==n&&void 0!==n)return n;for(var r=e.split("."),i=h,o=0,s=r.length;o"+h+"")}}function m(i){var s=i[0],a=i[1],h=new r.Selector(s),d=h.parsed();if(d){for(var m,g=u(d),y=0;y=0)return}}if(g){var w=d[d.length-1],C=w.pseudos;w.pseudos=c(w.pseudos),s=d.toString(),w.pseudos=C}try{m=t(s)}catch(x){return}m.each((function(){var i=this;if(!(i.name&&e.nonVisualElements.indexOf(i.name.toUpperCase())>=0)){if(g){var s="pseudo"+g,u=i[s];u||(u=i[s]=t("").get(0),u.pseudoElementType=g,u.pseudoElementParent=i,u.counterProps=i.counterProps,i[s]=u),i=u}if(!i.styleProps){if(i.styleProps={},t(i).attr(p)){var c="* { "+t(i).attr(p)+" } ";y(r.parseCSS(c)[0][1],new r.Selector("")}}function m(i){var s=i[0],a=i[1],h=new r.Selector(s),d=h.parsed();if(d){for(var m,g=u(d),y=0;y=0)return}}if(g){var w=d[d.length-1],C=w.pseudos;w.pseudos=c(w.pseudos),s=d.toString(),w.pseudos=C}try{m=t(s)}catch(x){return}m.each((function(){var i=this;if(!(i.name&&e.nonVisualElements.indexOf(i.name.toUpperCase())>=0)){if(g){var s="pseudo"+g,u=i[s];u||(u=i[s]=t("").get(0),u.pseudoElementType=g,u.pseudoElementParent=i,u.counterProps=i.counterProps,i[s]=u),i=u}if(!i.styleProps){if(i.styleProps={},t(i).attr(p)){var c="* { "+t(i).attr(p)+" } ";y(r.parseCSS(c)[0][1],new r.Selector("');\n }\n }\n\n function handleRule(rule) {\n var sel = rule[0];\n var style = rule[1];\n var selector = new utils.Selector(sel);\n var parsedSelector = selector.parsed();\n\n if (!parsedSelector) {\n return;\n }\n\n var pseudoElementType = getPseudoElementType(parsedSelector);\n\n // skip rule if the selector has any pseudos which are ignored\n for (var i = 0; i < parsedSelector.length; ++i) {\n var subSel = parsedSelector[i];\n if (subSel.pseudos) {\n for (var j = 0; j < subSel.pseudos.length; ++j) {\n var subSelPseudo = subSel.pseudos[j];\n if (juiceClient.ignoredPseudos.indexOf(subSelPseudo.name) >= 0) {\n return;\n }\n }\n }\n }\n\n if (pseudoElementType) {\n var last = parsedSelector[parsedSelector.length - 1];\n var pseudos = last.pseudos;\n last.pseudos = filterElementPseudos(last.pseudos);\n sel = parsedSelector.toString();\n last.pseudos = pseudos;\n }\n\n var els;\n try {\n els = $(sel);\n } catch (err) {\n // skip invalid selector\n return;\n }\n\n els.each(function() {\n var el = this;\n\n if (el.name && juiceClient.nonVisualElements.indexOf(el.name.toUpperCase()) >= 0) {\n return;\n }\n\n if (pseudoElementType) {\n var pseudoElPropName = 'pseudo' + pseudoElementType;\n var pseudoEl = el[pseudoElPropName];\n if (!pseudoEl) {\n pseudoEl = el[pseudoElPropName] = $('').get(0);\n pseudoEl.pseudoElementType = pseudoElementType;\n pseudoEl.pseudoElementParent = el;\n pseudoEl.counterProps = el.counterProps;\n el[pseudoElPropName] = pseudoEl;\n }\n el = pseudoEl;\n }\n\n if (!el.styleProps) {\n el.styleProps = {};\n\n // if the element has inline styles, fake selector with topmost specificity\n if ($(el).attr(styleAttributeName)) {\n var cssText = '* { ' + $(el).attr(styleAttributeName) + ' } ';\n addProps(utils.parseCSS(cssText)[0][1], new utils.Selector('');\n }\n }\n\n function handleRule(rule) {\n var sel = rule[0];\n var style = rule[1];\n var selector = new utils.Selector(sel);\n var parsedSelector = selector.parsed();\n\n if (!parsedSelector) {\n return;\n }\n\n var pseudoElementType = getPseudoElementType(parsedSelector);\n\n // skip rule if the selector has any pseudos which are ignored\n for (var i = 0; i < parsedSelector.length; ++i) {\n var subSel = parsedSelector[i];\n if (subSel.pseudos) {\n for (var j = 0; j < subSel.pseudos.length; ++j) {\n var subSelPseudo = subSel.pseudos[j];\n if (juiceClient.ignoredPseudos.indexOf(subSelPseudo.name) >= 0) {\n return;\n }\n }\n }\n }\n\n if (pseudoElementType) {\n var last = parsedSelector[parsedSelector.length - 1];\n var pseudos = last.pseudos;\n last.pseudos = filterElementPseudos(last.pseudos);\n sel = parsedSelector.toString();\n last.pseudos = pseudos;\n }\n\n var els;\n try {\n els = $(sel);\n } catch (err) {\n // skip invalid selector\n return;\n }\n\n els.each(function() {\n var el = this;\n\n if (el.name && juiceClient.nonVisualElements.indexOf(el.name.toUpperCase()) >= 0) {\n return;\n }\n\n if (pseudoElementType) {\n var pseudoElPropName = 'pseudo' + pseudoElementType;\n var pseudoEl = el[pseudoElPropName];\n if (!pseudoEl) {\n pseudoEl = el[pseudoElPropName] = $('').get(0);\n pseudoEl.pseudoElementType = pseudoElementType;\n pseudoEl.pseudoElementParent = el;\n pseudoEl.counterProps = el.counterProps;\n el[pseudoElPropName] = pseudoEl;\n }\n el = pseudoEl;\n }\n\n if (!el.styleProps) {\n el.styleProps = {};\n\n // if the element has inline styles, fake selector with topmost specificity\n if ($(el).attr(styleAttributeName)) {\n var cssText = '* { ' + $(el).attr(styleAttributeName) + ' } ';\n addProps(utils.parseCSS(cssText)[0][1], new utils.Selector('