From 8803624da311ac81da8d7812cda27816a9667e6c Mon Sep 17 00:00:00 2001 From: Frankie Huang Date: Sun, 20 Apr 2025 01:50:46 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20vue-editormd=20?= =?UTF-8?q?=E6=BA=90=E7=A0=81,=E4=BB=A5=E6=94=AF=E6=8C=81=20PlantUML=20?= =?UTF-8?q?=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/static/editor.md/editormd.amd.js | 15 ++++++++++++++- public/static/editor.md/editormd.amd.min.js | 2 +- public/static/editor.md/editormd.js | 15 ++++++++++++++- public/static/editor.md/editormd.min.js | 2 +- .../static/editor.md/lib/plantuml-encoder.min.js | 6 ++++++ public/static/editor.md/src/editormd.js | 15 ++++++++++++++- src/components/MarkdownEditor.vue | 1 + 7 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 public/static/editor.md/lib/plantuml-encoder.min.js diff --git a/public/static/editor.md/editormd.amd.js b/public/static/editor.md/editormd.amd.js index 411de98..e215913 100644 --- a/public/static/editor.md/editormd.amd.js +++ b/public/static/editor.md/editormd.amd.js @@ -631,6 +631,12 @@ return ; } + if (settings.plantuml) { + editormd.loadScript(loadPath + "plantuml-encoder.min", function() { + editormd.$plantumlEncoder = plantumlEncoder; + }); + } + if (settings.flowChart || settings.sequenceDiagram) { editormd.loadScript(loadPath + "raphael.min", function() { @@ -2121,6 +2127,7 @@ tex : settings.tex, atLink : settings.atLink, // for @link emailLink : settings.emailLink, // for mail address auto link + plantuml : settings.plantuml, flowChart : settings.flowChart, sequenceDiagram : settings.sequenceDiagram, previewCodeHighlight : settings.previewCodeHighlight, @@ -3518,6 +3525,7 @@ taskList : false, // Enable Github Flavored Markdown task lists emoji : false, // :emoji: , Support Twemoji, fontAwesome, Editor.md logo emojis. tex : false, // TeX(LaTeX), based on KaTeX + plantuml : false, flowChart : false, // flowChart.js only support IE9+ sequenceDiagram : false, // sequenceDiagram.js only support IE9+ }; @@ -3756,7 +3764,11 @@ else if ( lang === "math" || lang === "latex" || lang === "katex") { return "

" + code + "

"; - } + } + else if ( lang === "plantuml" && settings.plantuml ) { + const encoded = editormd.$plantumlEncoder.encode(code); + return ``; + } else { @@ -4072,6 +4084,7 @@ pageBreak : settings.pageBreak, atLink : settings.atLink, // for @link emailLink : settings.emailLink, // for mail address auto link + plantuml : settings.plantuml, flowChart : settings.flowChart, sequenceDiagram : settings.sequenceDiagram, previewCodeHighlight : settings.previewCodeHighlight, diff --git a/public/static/editor.md/editormd.amd.min.js b/public/static/editor.md/editormd.amd.min.js index 91163a9..5f0dd8b 100644 --- a/public/static/editor.md/editormd.amd.min.js +++ b/public/static/editor.md/editormd.amd.min.js @@ -1,2 +1,2 @@ /*! Editor.md v1.5.0 | editormd.amd.min.js | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-06-09 */ -(function(factory){"use strict";if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else if(typeof define==="function"){if(define.amd){var cmModePath="./lib/codemirror/mode/";var cmAddonPath="./lib/codemirror/addon/";var codeMirrorModules=["jquery","marked","prettify","katex","raphael","underscore","flowchart","jqueryflowchart","sequenceDiagram","./lib/codemirror/lib/codemirror",cmModePath+"css/css",cmModePath+"sass/sass",cmModePath+"shell/shell",cmModePath+"sql/sql",cmModePath+"clike/clike",cmModePath+"php/php",cmModePath+"xml/xml",cmModePath+"markdown/markdown",cmModePath+"javascript/javascript",cmModePath+"htmlmixed/htmlmixed",cmModePath+"gfm/gfm",cmModePath+"http/http",cmModePath+"go/go",cmModePath+"dart/dart",cmModePath+"coffeescript/coffeescript",cmModePath+"nginx/nginx",cmModePath+"python/python",cmModePath+"perl/perl",cmModePath+"lua/lua",cmModePath+"r/r",cmModePath+"ruby/ruby",cmModePath+"rst/rst",cmModePath+"smartymixed/smartymixed",cmModePath+"vb/vb",cmModePath+"vbscript/vbscript",cmModePath+"velocity/velocity",cmModePath+"xquery/xquery",cmModePath+"yaml/yaml",cmModePath+"erlang/erlang",cmModePath+"jade/jade",cmAddonPath+"edit/trailingspace",cmAddonPath+"dialog/dialog",cmAddonPath+"search/searchcursor",cmAddonPath+"search/search",cmAddonPath+"scroll/annotatescrollbar",cmAddonPath+"search/matchesonscrollbar",cmAddonPath+"display/placeholder",cmAddonPath+"edit/closetag",cmAddonPath+"fold/foldcode",cmAddonPath+"fold/foldgutter",cmAddonPath+"fold/indent-fold",cmAddonPath+"fold/brace-fold",cmAddonPath+"fold/xml-fold",cmAddonPath+"fold/markdown-fold",cmAddonPath+"fold/comment-fold",cmAddonPath+"mode/overlay",cmAddonPath+"selection/active-line",cmAddonPath+"edit/closebrackets",cmAddonPath+"display/fullscreen",cmAddonPath+"search/match-highlighter"];define(codeMirrorModules,factory)}else{define(["jquery"],factory)}}else{window.editormd=factory()}})(function(){if(typeof define=="function"&&define.amd){$=arguments[0];marked=arguments[1];prettify=arguments[2];katex=arguments[3];Raphael=arguments[4];_=arguments[5];flowchart=arguments[6];CodeMirror=arguments[9]}"use strict";var $=typeof jQuery!=="undefined"?jQuery:Zepto;if(typeof $==="undefined"){return}var editormd=function(id,options){return new editormd.fn.init(id,options)};editormd.title=editormd.$name="Editor.md";editormd.version="1.5.0";editormd.homePage="https://pandao.github.io/editor.md/";editormd.classPrefix="editormd-";editormd.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime","emoji","html-entities","pagebreak","|","goto-line","watch","preview","fullscreen","clear","search","|","help","info"],simple:["undo","redo","|","bold","del","italic","quote","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","watch","preview","fullscreen","|","help","info"],mini:["undo","redo","|","watch","preview","|","help","info"]};editormd.defaults={mode:"gfm",name:"",value:"",theme:"",editorTheme:"default",previewTheme:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:true,watch:true,placeholder:"Enjoy Markdown! coding now...",gotoLine:true,codeFold:false,autoHeight:false,autoFocus:true,autoCloseTags:true,searchReplace:true,syncScrolling:true,readOnly:false,tabSize:4,indentUnit:4,lineNumbers:true,lineWrapping:true,autoCloseBrackets:true,showTrailingSpace:true,matchBrackets:true,indentWithTabs:true,styleSelectedText:true,matchWordHighlight:true,styleActiveLine:true,dialogLockScreen:true,dialogShowMask:true,dialogDraggable:true,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:false,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:false,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:false,uploadCallbackURL:"",toc:true,tocm:false,tocTitle:"",tocDropdown:false,tocContainer:"",tocStartLevel:1,htmlDecode:false,pageBreak:true,atLink:true,emailLink:true,taskList:false,emoji:false,tex:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true,toolbar:true,toolbarAutoFixed:true,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return editormd.toolbarHandlers.ucwords},lowercase:function(){return editormd.toolbarHandlers.lowercase}},toolbarCustomIcons:{lowercase:'a',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:editormd.classPrefix+"bold",h2:editormd.classPrefix+"bold",h3:editormd.classPrefix+"bold",h4:editormd.classPrefix+"bold",h5:editormd.classPrefix+"bold",h6:editormd.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},toolbarNoFocus:["link","reference-link","image","code-block","preformatted-text","watch","preview","search","fullscreen","info"],lang:{name:"zh-cn",description:"开源在线Markdown编辑器
Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+editormd.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}};editormd.classNames={tex:editormd.classPrefix+"tex"};editormd.dialogZindex=99999;editormd.$katex=null;editormd.$marked=null;editormd.$CodeMirror=null;editormd.$prettyPrint=null;var timer,flowchartTimer;editormd.prototype=editormd.fn={state:{watching:false,loaded:false,preview:false,fullscreen:false},init:function(id,options){options=options||{};if(typeof id==="object"){options=id}var _this=this;var classPrefix=this.classPrefix=editormd.classPrefix;var settings=this.settings=$.extend(true,editormd.defaults,options);if(settings.appendToolbar&&typeof settings.toolbarIcons==="string"&&settings.toolbarIcons in editormd.toolbarModes){settings.appendToolbar.forEach(toolbar=>{if(!("name"in toolbar)){return}if(toolbar.name==="|"){editormd.toolbarModes[settings.toolbarIcons].push("|");return}if(!editormd.toolbarModes[settings.toolbarIcons].includes(toolbar.name)){editormd.toolbarModes[settings.toolbarIcons].push(toolbar.name)}if("icon"in toolbar){settings.toolbarIconsClass[toolbar.name]=toolbar.icon}if("title"in toolbar){settings.lang.toolbar[toolbar.name]=toolbar.title}if("handler"in toolbar){editormd.toolbarHandlers[toolbar.name]=toolbar.handler;if("shortcut"in toolbar){toolbar.shortcut.forEach(key=>editormd.keyMaps[key]=toolbar.handler)}}if("nofocus"in toolbar&&toolbar.nofocus===true){if(!settings.toolbarNoFocus.includes[toolbar.name]){settings.toolbarNoFocus.push(toolbar.name)}}})}if(settings.shortcutFunction){for(const key in settings.shortcutFunction){editormd.keyMaps[key]=settings.shortcutFunction[key]}}id=typeof id==="object"?settings.id:id;var editor=this.editor=$("#"+id);this.id=id;this.lang=settings.lang;var classNames=this.classNames={textarea:{html:classPrefix+"html-textarea",markdown:classPrefix+"markdown-textarea"}};settings.pluginPath=settings.pluginPath===""?settings.path+"../plugins/":settings.pluginPath;this.state.watching=settings.watch?true:false;if(!editor.hasClass("editormd")){editor.addClass("editormd")}editor.css({width:typeof settings.width==="number"?settings.width+"px":settings.width,height:typeof settings.height==="number"?settings.height+"px":settings.height});if(settings.autoHeight){editor.css("height","auto")}var markdownTextarea=this.markdownTextarea=editor.children("textarea");if(markdownTextarea.length<1){editor.append("");markdownTextarea=this.markdownTextarea=editor.children("textarea")}markdownTextarea.addClass(classNames.textarea.markdown).attr("placeholder",settings.placeholder);if(typeof markdownTextarea.attr("name")==="undefined"||markdownTextarea.attr("name")===""){markdownTextarea.attr("name",settings.name!==""?settings.name:id+"-markdown-doc")}var appendElements=[!settings.readOnly?'':"",settings.saveHTMLToTextarea?'':"",'
','
','
'].join("\n");editor.append(appendElements).addClass(classPrefix+"vertical");if(settings.theme!==""){editor.addClass(classPrefix+"theme-"+settings.theme)}this.mask=editor.children("."+classPrefix+"mask");this.containerMask=editor.children("."+classPrefix+"container-mask");if(settings.markdown!==""){markdownTextarea.val(settings.markdown)}if(settings.appendMarkdown!==""){markdownTextarea.val(markdownTextarea.val()+settings.appendMarkdown)}this.htmlTextarea=editor.children("."+classNames.textarea.html);this.preview=editor.children("."+classPrefix+"preview");this.previewContainer=this.preview.children("."+classPrefix+"preview-container");if(settings.previewTheme!==""){this.preview.addClass(classPrefix+"preview-theme-"+settings.previewTheme)}if(typeof define==="function"&&define.amd){if(typeof katex!=="undefined"){editormd.$katex=katex}if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(settings.path+"codemirror/addon/dialog/dialog");editormd.loadCSS(settings.path+"codemirror/addon/search/matchesonscrollbar")}}if(typeof define==="function"&&define.amd||!settings.autoLoadModules){if(typeof CodeMirror!=="undefined"){editormd.$CodeMirror=CodeMirror}if(typeof marked!=="undefined"){editormd.$marked=marked}this.setCodeMirror().setToolbar().loadedDisplay()}else{this.loadQueues()}return this},loadQueues:function(){var _this=this;var settings=this.settings;var loadPath=settings.path;var loadFlowChartOrSequenceDiagram=function(){if(editormd.isIE8){_this.loadedDisplay();return}if(settings.flowChart||settings.sequenceDiagram){editormd.loadScript(loadPath+"raphael.min",function(){editormd.loadScript(loadPath+"underscore.min",function(){if(!settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})}else if(settings.flowChart&&!settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){_this.loadedDisplay()})})}else if(settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})})})}})})}else{_this.loadedDisplay()}};editormd.loadCSS(loadPath+"codemirror/codemirror.min");if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(loadPath+"codemirror/addon/dialog/dialog");editormd.loadCSS(loadPath+"codemirror/addon/search/matchesonscrollbar")}if(settings.codeFold){editormd.loadCSS(loadPath+"codemirror/addon/fold/foldgutter")}editormd.loadScript(loadPath+"codemirror/codemirror.min",function(){editormd.$CodeMirror=CodeMirror;editormd.loadScript(loadPath+"codemirror/modes.min",function(){editormd.loadScript(loadPath+"codemirror/addons.min",function(){_this.setCodeMirror();if(settings.mode!=="gfm"&&settings.mode!=="markdown"){_this.loadedDisplay();return false}_this.setToolbar();editormd.loadScript(loadPath+"marked.min",function(){editormd.$marked=marked;if(settings.previewCodeHighlight){editormd.loadScript(loadPath+"prettify.min",function(){loadFlowChartOrSequenceDiagram()})}else{loadFlowChartOrSequenceDiagram()}})})})});return this},setTheme:function(theme){var editor=this.editor;var oldTheme=this.settings.theme;var themePrefix=this.classPrefix+"theme-";editor.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.theme=theme;return this},setEditorTheme:function(theme){var settings=this.settings;settings.editorTheme=theme;if(theme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}this.cm.setOption("theme",theme);return this},setCodeMirrorTheme:function(theme){this.setEditorTheme(theme);return this},setPreviewTheme:function(theme){var preview=this.preview;var oldTheme=this.settings.previewTheme;var themePrefix=this.classPrefix+"preview-theme-";preview.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.previewTheme=theme;return this},setCodeMirror:function(){var settings=this.settings;var editor=this.editor;if(settings.editorTheme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}var codeMirrorConfig={mode:settings.mode,theme:settings.editorTheme,tabSize:settings.tabSize,dragDrop:false,autofocus:settings.autoFocus,autoCloseTags:settings.autoCloseTags,readOnly:settings.readOnly?"nocursor":false,indentUnit:settings.indentUnit,lineNumbers:settings.lineNumbers,lineWrapping:settings.lineWrapping,extraKeys:{"Ctrl-Q":function(cm){cm.foldCode(cm.getCursor())}},foldGutter:settings.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:settings.matchBrackets,indentWithTabs:settings.indentWithTabs,styleActiveLine:settings.styleActiveLine,styleSelectedText:settings.styleSelectedText,autoCloseBrackets:settings.autoCloseBrackets,showTrailingSpace:settings.showTrailingSpace,highlightSelectionMatches:!settings.matchWordHighlight?false:{showToken:settings.matchWordHighlight==="onselected"?false:/\w/}};this.codeEditor=this.cm=editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0],codeMirrorConfig);this.codeMirror=this.cmElement=editor.children(".CodeMirror");if(settings.value!==""){this.cm.setValue(settings.value)}this.codeMirror.css({fontSize:settings.fontSize,width:!settings.watch?"100%":"50%"});if(settings.autoHeight){this.codeMirror.css("height","auto");this.cm.setOption("viewportMargin",Infinity)}if(!settings.lineNumbers){this.codeMirror.find(".CodeMirror-gutters").css("border-right","none")}return this},getCodeMirrorOption:function(key){return this.cm.getOption(key)},setCodeMirrorOption:function(key,value){this.cm.setOption(key,value);return this},addKeyMap:function(map,bottom){this.cm.addKeyMap(map,bottom);return this},removeKeyMap:function(map){this.cm.removeKeyMap(map);return this},gotoLine:function(line){var settings=this.settings;if(!settings.gotoLine){return this}var cm=this.cm;var editor=this.editor;var count=cm.lineCount();var preview=this.preview;if(typeof line==="string"){if(line==="last"){line=count}if(line==="first"){line=1}}if(typeof line!=="number"){alert("Error: The line number must be an integer.");return this}line=parseInt(line)-1;if(line>count){alert("Error: The line number range 1-"+count);return this}cm.setCursor({line:line,ch:0});var scrollInfo=cm.getScrollInfo();var clientHeight=scrollInfo.clientHeight;var coords=cm.charCoords({line:line,ch:0},"local");cm.scrollTo(null,(coords.top+coords.bottom-clientHeight)/2);if(settings.watch){var cmScroll=this.codeMirror.find(".CodeMirror-scroll")[0];var height=$(cmScroll).height();var scrollTop=cmScroll.scrollTop;var percent=scrollTop/cmScroll.scrollHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=cmScroll.scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop(preview[0].scrollHeight*percent)}}cm.focus();return this},extend:function(){if(typeof arguments[1]!=="undefined"){if(typeof arguments[1]==="function"){arguments[1]=$.proxy(arguments[1],this)}this[arguments[0]]=arguments[1]}if(typeof arguments[0]==="object"&&typeof arguments[0].length==="undefined"){$.extend(true,this,arguments[0])}return this},set:function(key,value){if(typeof value!=="undefined"&&typeof value==="function"){value=$.proxy(value,this)}this[key]=value;return this},config:function(key,value){var settings=this.settings;if(typeof key==="object"){settings=$.extend(true,settings,key)}if(typeof key==="string"){settings[key]=value}this.settings=settings;this.recreate();return this},on:function(eventType,callback){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=$.proxy(callback,this)}return this},off:function(eventType){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=function(){}}return this},showToolbar:function(callback){var settings=this.settings;if(settings.readOnly){return this}if(settings.toolbar&&(this.toolbar.length<1||this.toolbar.find("."+this.classPrefix+"menu").html()==="")){this.setToolbar()}settings.toolbar=true;this.toolbar.show();this.resize();$.proxy(callback||function(){},this)();return this},hideToolbar:function(callback){var settings=this.settings;settings.toolbar=false;this.toolbar.hide();this.resize();$.proxy(callback||function(){},this)();return this},setToolbarAutoFixed:function(fixed){var state=this.state;var editor=this.editor;var toolbar=this.toolbar;var settings=this.settings;if(typeof fixed!=="undefined"){settings.toolbarAutoFixed=fixed}var autoFixedHandle=function(){var $window=$(window);var top=$window.scrollTop();if(!settings.toolbarAutoFixed){return false}if(top-editor.offset().top>10&&top
    ';editor.append(toolbarHTML);toolbar=this.toolbar=editor.children("."+classPrefix+"toolbar")}if(!settings.toolbar){toolbar.hide();return this}toolbar.show();var icons=typeof settings.toolbarIcons==="function"?settings.toolbarIcons():typeof settings.toolbarIcons==="string"?editormd.toolbarModes[settings.toolbarIcons]:settings.toolbarIcons;var toolbarMenu=toolbar.find("."+this.classPrefix+"menu"),menu="";var pullRight=false;for(var i=0,len=icons.length;i|'}else{var isHeader=/h(\d)/.test(name);var index=name;if(name==="watch"&&!settings.watch){index="unwatch"}var title=settings.lang.toolbar[index];var iconTexts=settings.toolbarIconTexts[index];var iconClass=settings.toolbarIconsClass[index];title=typeof title==="undefined"?"":title;iconTexts=typeof iconTexts==="undefined"?"":iconTexts;iconClass=typeof iconClass==="undefined"?"":iconClass;var menuItem=pullRight?'
  • ':"
  • ";if(typeof settings.toolbarCustomIcons[name]!=="undefined"&&typeof settings.toolbarCustomIcons[name]!=="function"){menuItem+=settings.toolbarCustomIcons[name]}else{menuItem+='';menuItem+=''+(isHeader?name.toUpperCase():iconClass===""?iconTexts:"")+"";menuItem+=""}menuItem+="
  • ";menu=pullRight?menuItem+menu:menu+menuItem}}toolbarMenu.html(menu);toolbarMenu.find('[title="Lowercase"]').attr("title",settings.lang.toolbar.lowercase);toolbarMenu.find('[title="ucwords"]').attr("title",settings.lang.toolbar.ucwords);this.setToolbarHandler();this.setToolbarAutoFixed();return this},dialogLockScreen:function(){$.proxy(editormd.dialogLockScreen,this)();return this},dialogShowMask:function(dialog){$.proxy(editormd.dialogShowMask,this)(dialog);return this},getToolbarHandles:function(name){var toolbarHandlers=this.toolbarHandlers=editormd.toolbarHandlers;return name&&typeof toolbarIconHandlers[name]!=="undefined"?toolbarHandlers[name]:toolbarHandlers},setToolbarHandler:function(){var _this=this;var settings=this.settings;if(!settings.toolbar||settings.readOnly){return this}var toolbar=this.toolbar;var cm=this.cm;var classPrefix=this.classPrefix;var toolbarIcons=this.toolbarIcons=toolbar.find("."+classPrefix+"menu > li > a");var toolbarIconHandlers=this.getToolbarHandles();toolbarIcons.bind(editormd.mouseOrTouch("click","touchend"),function(event){var icon=$(this).children(".fa");var name=icon.attr("name");var cursor=cm.getCursor();var selection=cm.getSelection();if(name===""){return}_this.activeIcon=icon;if(typeof toolbarIconHandlers[name]!=="undefined"){$.proxy(toolbarIconHandlers[name],_this)(cm)}else{if(typeof settings.toolbarHandlers[name]!=="undefined"){$.proxy(settings.toolbarHandlers[name],_this)(cm,icon,cursor,selection)}else{alert("This feature is not yet implemented.")}}if(!settings.toolbarNoFocus.includes(name)){cm.focus()}return false});return this},createDialog:function(options){return $.proxy(editormd.createDialog,this)(options)},createInfoDialog:function(){var _this=this;var editor=this.editor;var classPrefix=this.classPrefix;var infoDialogHTML=['
    ','
    ','

    '+editormd.title+"v"+editormd.version+"

    ","

    "+this.lang.description+"

    ",'

    '+editormd.homePage+'

    ','

    Copyright © 2015 Pandao, The MIT License.

    ',"
    ",'',"
    "].join("\n");editor.append(infoDialogHTML);var infoDialog=this.infoDialog=editor.children("."+classPrefix+"dialog-info");infoDialog.find("."+classPrefix+"dialog-close").bind(editormd.mouseOrTouch("click","touchend"),function(){_this.hideInfoDialog()});infoDialog.css("border",editormd.isIE8?"1px solid #ddd":"").css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},infoDialogPosition:function(){var infoDialog=this.infoDialog;var _infoDialogPosition=function(){infoDialog.css({top:($(window).height()-infoDialog.height())/2+"px",left:($(window).width()-infoDialog.width())/2+"px"})};_infoDialogPosition();$(window).resize(_infoDialogPosition);return this},showInfoDialog:function(){$("html,body").css("overflow-x","hidden");var _this=this;var editor=this.editor;var settings=this.settings;var infoDialog=this.infoDialog=editor.children("."+this.classPrefix+"dialog-info");if(infoDialog.length<1){this.createInfoDialog()}this.lockScreen(true);this.mask.css({opacity:settings.dialogMaskOpacity,backgroundColor:settings.dialogMaskBgColor}).show();infoDialog.css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},hideInfoDialog:function(){$("html,body").css("overflow-x","");this.infoDialog.hide();this.mask.hide();this.lockScreen(false);return this},lockScreen:function(lock){editormd.lockScreen(lock);this.resize();return this},recreate:function(){var _this=this;var editor=this.editor;var settings=this.settings;this.codeMirror.remove();this.setCodeMirror();if(!settings.readOnly){if(editor.find(".editormd-dialog").length>0){editor.find(".editormd-dialog").remove()}if(settings.toolbar){this.getToolbarHandles();this.setToolbar()}}this.loadedDisplay(true);return this},previewCodeHighlight:function(){var settings=this.settings;var previewContainer=this.previewContainer;if(settings.previewCodeHighlight){previewContainer.find("pre").addClass("prettyprint linenums");if(typeof prettyPrint!=="undefined"){prettyPrint()}}return this},katexRender:function(){if(timer===null){return this}this.previewContainer.find("."+editormd.classNames.tex).each(function(){var tex=$(this);editormd.$katex.render(tex.text(),tex[0]);tex.find(".katex").css("font-size","1.6em")});return this},flowChartAndSequenceDiagramRender:function(){var $this=this;var settings=this.settings;var previewContainer=this.previewContainer;if(editormd.isIE8){return this}if(settings.flowChart){if(flowchartTimer===null){return this}previewContainer.find(".flowchart").flowChart()}if(settings.sequenceDiagram){previewContainer.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}var preview=$this.preview;var codeMirror=$this.codeMirror;var codeView=codeMirror.find(".CodeMirror-scroll");var height=codeView.height();var scrollTop=codeView.scrollTop();var percent=scrollTop/codeView[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=codeView[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}return this},registerKeyMaps:function(keyMap){var _this=this;var cm=this.cm;var settings=this.settings;var toolbarHandlers=editormd.toolbarHandlers;var disabledKeyMaps=settings.disabledKeyMaps;keyMap=keyMap||null;if(keyMap){for(var i in keyMap){if($.inArray(i,disabledKeyMaps)<0){var map={};map[i]=keyMap[i];cm.addKeyMap(keyMap)}}}else{for(var k in editormd.keyMaps){var _keyMap=editormd.keyMaps[k];var handle=typeof _keyMap==="string"?$.proxy(toolbarHandlers[_keyMap],_this):$.proxy(_keyMap,_this);if($.inArray(k,["F9","F10","F11"])<0&&$.inArray(k,disabledKeyMaps)<0){var _map={};_map[k]=handle;cm.addKeyMap(_map)}}$(window).keydown(function(event){var keymaps={120:"F9",121:"F10",122:"F11"};if($.inArray(keymaps[event.keyCode],disabledKeyMaps)<0){switch(event.keyCode){case 120:$.proxy(toolbarHandlers["watch"],_this)();return false;break;case 121:$.proxy(toolbarHandlers["preview"],_this)();return false;break;case 122:$.proxy(toolbarHandlers["fullscreen"],_this)();return false;break;default:break}}})}return this},bindScrollEvent:function(){var _this=this;var preview=this.preview;var settings=this.settings;var codeMirror=this.codeMirror;var mouseOrTouch=editormd.mouseOrTouch;if(!settings.syncScrolling){return this}var cmBindScroll=function(){codeMirror.find(".CodeMirror-scroll").bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}$.proxy(settings.onscroll,_this)(event)})};var cmUnbindScroll=function(){codeMirror.find(".CodeMirror-scroll").unbind(mouseOrTouch("scroll","touchmove"))};var previewBindScroll=function(){preview.bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var codeView=codeMirror.find(".CodeMirror-scroll");if(scrollTop===0){codeView.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight){codeView.scrollTop(codeView[0].scrollHeight)}else{codeView.scrollTop(codeView[0].scrollHeight*percent)}$.proxy(settings.onpreviewscroll,_this)(event)})};var previewUnbindScroll=function(){preview.unbind(mouseOrTouch("scroll","touchmove"))};codeMirror.bind({mouseover:cmBindScroll,mouseout:cmUnbindScroll,touchstart:cmBindScroll,touchend:cmUnbindScroll});if(settings.syncScrolling==="single"){return this}preview.bind({mouseover:previewBindScroll,mouseout:previewUnbindScroll,touchstart:previewBindScroll,touchend:previewUnbindScroll});return this},bindChangeEvent:function(){var _this=this;var cm=this.cm;var settings=this.settings;if(!settings.syncScrolling){return this}cm.on("change",function(_cm,changeObj){if(settings.watch){_this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px")}timer=setTimeout(function(){clearTimeout(timer);_this.save();timer=null},settings.delay)});return this},loadedDisplay:function(recreate){recreate=recreate||false;var _this=this;var editor=this.editor;var preview=this.preview;var settings=this.settings;this.containerMask.hide();this.save();if(settings.watch){preview.show()}editor.data("oldWidth",editor.width()).data("oldHeight",editor.height());this.resize();this.registerKeyMaps();$(window).resize(function(){_this.resize()});this.bindScrollEvent().bindChangeEvent();if(!recreate){$.proxy(settings.onload,this)()}this.state.loaded=true;return this},width:function(width){this.editor.css("width",typeof width==="number"?width+"px":width);this.resize();return this},height:function(height){this.editor.css("height",typeof height==="number"?height+"px":height);this.resize();return this},resize:function(width,height){width=width||null;height=height||null;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;if(width){editor.css("width",typeof width==="number"?width+"px":width)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){editor.css("height","auto");codeMirror.css("height","auto")}else{if(height){editor.css("height",typeof height==="number"?height+"px":height)}if(state.fullscreen){editor.height($(window).height())}if(settings.toolbar&&!settings.readOnly){codeMirror.css("margin-top",toolbar.height()+1).height(editor.height()-toolbar.height())}else{codeMirror.css("margin-top",0).height(editor.height())}}if(settings.watch){codeMirror.width(editor.width()/2);preview.width(!state.preview?editor.width()/2:editor.width());this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px");if(settings.toolbar&&!settings.readOnly){preview.css("top",toolbar.height()+1)}else{preview.css("top",0)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){preview.height("")}else{var previewHeight=settings.toolbar&&!settings.readOnly?editor.height()-toolbar.height():editor.height();preview.height(previewHeight)}}else{codeMirror.width(editor.width());preview.hide()}if(state.loaded){$.proxy(settings.onresize,this)()}return this},save:function(){if(timer===null){return this}var _this=this;var state=this.state;var settings=this.settings;var cm=this.cm;var cmValue=cm.getValue();var previewContainer=this.previewContainer;if(settings.mode!=="gfm"&&settings.mode!=="markdown"){this.markdownTextarea.val(cmValue);return this}var marked=editormd.$marked;var markdownToC=this.markdownToC=[];var rendererOptions=this.markedRendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,pageBreak:settings.pageBreak,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,atLink:settings.atLink,emailLink:settings.emailLink,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions=this.markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:true,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};marked.setOptions(markedOptions);var newMarkdownDoc=editormd.$marked(cmValue,markedOptions);newMarkdownDoc=editormd.filterHTMLTags(newMarkdownDoc,settings.htmlDecode);this.markdownTextarea.text(cmValue);cm.save();if(settings.saveHTMLToTextarea){this.htmlTextarea.text(newMarkdownDoc)}if(settings.watch||!settings.watch&&state.preview){previewContainer.html(newMarkdownDoc);this.previewCodeHighlight();if(settings.toc){var tocContainer=settings.tocContainer===""?previewContainer:$(settings.tocContainer);var tocMenu=tocContainer.find("."+this.classPrefix+"toc-menu");tocContainer.attr("previewContainer",settings.tocContainer===""?"true":"false");if(settings.tocContainer!==""&&tocMenu.length>0){tocMenu.remove()}editormd.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||tocContainer.find("."+this.classPrefix+"toc-menu").length>0){editormd.tocDropdownMenu(tocContainer,settings.tocTitle!==""?settings.tocTitle:this.lang.tocTitle)}if(settings.tocContainer!==""){previewContainer.find(".markdown-toc").css("border","none")}}if(settings.tex){if(!editormd.kaTeXLoaded&&settings.autoLoadModules){editormd.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;_this.katexRender()})}else{editormd.$katex=katex;this.katexRender()}}if(settings.flowChart||settings.sequenceDiagram){flowchartTimer=setTimeout(function(){clearTimeout(flowchartTimer);_this.flowChartAndSequenceDiagramRender();flowchartTimer=null},10)}if(state.loaded){$.proxy(settings.onchange,this)()}}return this},focus:function(){this.cm.focus();return this},setCursor:function(cursor){this.cm.setCursor(cursor);return this},getCursor:function(){return this.cm.getCursor()},setSelection:function(from,to){this.cm.setSelection(from,to);return this},getSelection:function(){return this.cm.getSelection()},setSelections:function(ranges){this.cm.setSelections(ranges);return this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(value){this.cm.replaceSelection(value);return this},insertValue:function(value){this.replaceSelection(value);return this},appendMarkdown:function(md){var settings=this.settings;var cm=this.cm;cm.setValue(cm.getValue()+md);return this},setMarkdown:function(md){this.cm.setValue(md||this.settings.markdown);return this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(value){this.cm.setValue(value);return this},clear:function(){this.cm.setValue("");return this},getHTML:function(){if(!this.settings.saveHTMLToTextarea){alert("Error: settings.saveHTMLToTextarea == false");return false}return this.htmlTextarea.val()},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){if(!this.settings.watch){alert("Error: settings.watch == false");return false}return this.previewContainer.html()},watch:function(callback){var settings=this.settings;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}this.state.watching=settings.watch=true;this.preview.show();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.watch);icon.removeClass(unWatchIcon).addClass(watchIcon)}this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2);timer=0;this.save().resize();if(!settings.onwatch){settings.onwatch=callback||function(){}}$.proxy(settings.onwatch,this)();return this},unwatch:function(callback){var settings=this.settings;this.state.watching=settings.watch=false;this.preview.hide();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.unwatch);icon.removeClass(watchIcon).addClass(unWatchIcon)}this.codeMirror.css("border-right","none").width(this.editor.width());this.resize();if(!settings.onunwatch){settings.onunwatch=callback||function(){}}$.proxy(settings.onunwatch,this)();return this},show:function(callback){callback=callback||function(){};var _this=this;this.editor.show(0,function(){$.proxy(callback,_this)()});return this},hide:function(callback){callback=callback||function(){};var _this=this;this.editor.hide(0,function(){$.proxy(callback,_this)()});return this},previewing:function(){var _this=this;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;var previewContainer=this.previewContainer;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}if(settings.toolbar&&toolbar){toolbar.toggle();toolbar.find(".fa[name=preview]").toggleClass("active")}codeMirror.toggle();var escHandle=function(event){if(event.shiftKey&&event.keyCode===27){_this.previewed()}};if(codeMirror.css("display")==="none"){this.state.preview=true;if(this.state.fullscreen){preview.css("background","#fff")}editor.find("."+this.classPrefix+"preview-close-btn").show().bind(editormd.mouseOrTouch("click","touchend"),function(){_this.previewed()});if(!settings.watch){this.save()}else{previewContainer.css("padding","")}previewContainer.addClass(this.classPrefix+"preview-active");preview.show().css({position:"",top:0,width:editor.width(),height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()});if(this.state.loaded){$.proxy(settings.onpreviewing,this)()}$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.previewed()}},previewed:function(){var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var previewContainer=this.previewContainer;var previewCloseBtn=editor.find("."+this.classPrefix+"preview-close-btn");this.state.preview=false;this.codeMirror.show();if(settings.toolbar){toolbar.show()}preview[settings.watch?"show":"hide"]();previewCloseBtn.hide().unbind(editormd.mouseOrTouch("click","touchend"));previewContainer.removeClass(this.classPrefix+"preview-active");if(settings.watch){previewContainer.css("padding","20px")}preview.css({background:null,position:"absolute",width:editor.width()/2,height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()-toolbar.height(),top:settings.toolbar?toolbar.height():0});if(this.state.loaded){$.proxy(settings.onpreviewed,this)()}return this},fullscreen:function(){var _this=this;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var fullscreenClass=this.classPrefix+"fullscreen";if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().toggleClass("active")}var escHandle=function(event){if(!event.shiftKey&&event.keyCode===27){if(state.fullscreen){_this.fullscreenExit()}}};if(!editor.hasClass(fullscreenClass)){state.fullscreen=true;$("html,body").css("overflow","hidden");editor.css({width:$(window).width(),height:$(window).height()}).addClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreen,this)();$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.fullscreenExit()}return this},fullscreenExit:function(){var editor=this.editor;var settings=this.settings;var toolbar=this.toolbar;var fullscreenClass=this.classPrefix+"fullscreen";this.state.fullscreen=false;if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().removeClass("active")}$("html,body").css("overflow","");editor.css({width:editor.data("oldWidth"),height:editor.data("oldHeight")}).removeClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreenExit,this)();return this},executePlugin:function(name,path){var _this=this;var cm=this.cm;var settings=this.settings;path=settings.pluginPath+path;if(typeof define==="function"){if(typeof this[name]==="undefined"){alert("Error: "+name+" plugin is not found, you are not load this plugin.");return this}this[name](cm);return this}if($.inArray(path,editormd.loadFiles.plugin)<0){editormd.loadPlugin(path,function(){editormd.loadPlugins[name]=_this[name];_this[name](cm)})}else{$.proxy(editormd.loadPlugins[name],this)(cm)}return this},search:function(command){var settings=this.settings;if(!settings.searchReplace){alert("Error: settings.searchReplace == false");return this}if(!settings.readOnly){this.cm.execCommand(command||"find")}return this},searchReplace:function(){this.search("replace");return this},searchReplaceAll:function(){this.search("replaceAll");return this}};editormd.fn.init.prototype=editormd.fn;editormd.dialogLockScreen=function(){var settings=this.settings||{dialogLockScreen:true};if(settings.dialogLockScreen){$("html,body").css("overflow","hidden");this.resize()}};editormd.dialogShowMask=function(dialog){var editor=this.editor;var settings=this.settings||{dialogShowMask:true};dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"});if(settings.dialogShowMask){editor.children("."+this.classPrefix+"mask").css("z-index",parseInt(dialog.css("z-index"))-1).show()}};editormd.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("**"+selection+"**");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},del:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("~~"+selection+"~~");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},italic:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("*"+selection+"*");if(selection===""){cm.setCursor(cursor.line,cursor.ch+1)}},quote:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("> "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("> "+selection)}},ucfirst:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.firstUpperCase(selection));cm.setSelections(selections)},ucwords:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.wordsFirstUpperCase(selection));cm.setSelections(selections)},uppercase:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toUpperCase());cm.setSelections(selections)},lowercase:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toLowerCase());cm.setSelections(selections)},h1:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("# "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("# "+selection)}},h2:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("## "+selection);cm.setCursor(cursor.line,cursor.ch+3)}else{cm.replaceSelection("## "+selection)}},h3:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("### "+selection);cm.setCursor(cursor.line,cursor.ch+4)}else{cm.replaceSelection("### "+selection)}},h4:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("#### "+selection);cm.setCursor(cursor.line,cursor.ch+5)}else{cm.replaceSelection("#### "+selection)}},h5:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("##### "+selection);cm.setCursor(cursor.line,cursor.ch+6)}else{cm.replaceSelection("##### "+selection)}},h6:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("###### "+selection);cm.setCursor(cursor.line,cursor.ch+7)}else{cm.replaceSelection("###### "+selection)}},"list-ul":function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(selection===""){cm.replaceSelection("- "+selection)}else{var selectionText=selection.split("\n");for(var i=0,len=selectionText.length;i'}}else{var emdlogoMathcs=$1.match(editormdLogoReg);var twemojiMatchs=$1.match(twemojiReg);if(emdlogoMathcs){for(var x=0,len2=emdlogoMathcs.length;x'}}else if(twemojiMatchs){for(var t=0,len3=twemojiMatchs.length;t'}}else{var src=name==="+1"?"plus1":name;src=src==="black_large_square"?"black_square":src;src=src==="moon"?"waxing_gibbous_moon":src;return':'+name+':'}}})}return text};markedRenderer.atLink=function(text){if(atLinkReg.test(text)){if(settings.atLink){text=text.replace(emailReg,function($1,$2,$3,$4){return $1.replace(/@/g,"_#_@_#_")});text=text.replace(atLinkReg,function($1,$2){return''+$1+""}).replace(/_#_@_#_/g,"@")}if(settings.emailLink){text=text.replace(emailLinkReg,function($1,$2,$3,$4,$5){return!$2&&$.inArray($5,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+$1+"":$1})}return text}return text};markedRenderer.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0){return""}}var out=''+text.replace(/@/g,"@")+""}if(title){out+=' title="'+title+'"'}out+=">"+text+"";return out};markedRenderer.heading=function(text,level,raw){var linkText=text;var hasLinkReg=/\s*\]*)\>(.*)\<\/a\>\s*/;var getLinkTextReg=/\s*\]+)\>([^\>]*)\<\/a\>\s*/g;if(hasLinkReg.test(text)){var tempText=[];text=text.split(/\]+)\>([^\>]*)\<\/a\>/);for(var i=0,len=text.length;i';headingHTML+='';headingHTML+='';headingHTML+=hasLinkReg?this.atLink(this.emoji(linkText)):this.atLink(this.emoji(text));headingHTML+="";return headingHTML};markedRenderer.pageBreak=function(text){if(pageBreakReg.test(text)&&settings.pageBreak){text='
    '}return text};markedRenderer.paragraph=function(text){var isTeXInline=/\$\$(.*)\$\$/g.test(text);var isTeXLine=/^\$\$(.*)\$\$$/.test(text);var isTeXAddClass=isTeXLine?' class="'+editormd.classNames.tex+'"':"";var isToC=settings.tocm?/^(\[TOC\]|\[TOCM\])$/.test(text):/^\[TOC\]$/.test(text);var isToCMenu=/^\[TOCM\]$/.test(text);if(!isTeXLine&&isTeXInline){text=text.replace(/(\$\$([^\$]*)\$\$)+/g,function($1,$2){return''+$2.replace(/\$/g,"")+""})}else{text=isTeXLine?text.replace(/\$/g,""):text}var tocHTML='
    '+text+"
    ";return isToC?isToCMenu?'
    '+tocHTML+"

    ":tocHTML:pageBreakReg.test(text)?this.pageBreak(text):""+this.atLink(this.emoji(text))+"

    \n"};markedRenderer.code=function(code,lang,escaped){if(lang==="seq"||lang==="sequence"){return'
    '+code+"
    "}else if(lang==="flow"){return'
    '+code+"
    "}else if(lang==="math"||lang==="latex"||lang==="katex"){return'

    '+code+"

    "}else{return marked.Renderer.prototype.code.apply(this,arguments)}};markedRenderer.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+this.atLink(this.emoji(content))+"\n"};markedRenderer.listitem=function(text){if(settings.taskList&&/^\s*\[[x\s]\]\s*/.test(text)){text=text.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' ');return'
  • '+this.atLink(this.emoji(text))+"
  • "}else{return"
  • "+this.atLink(this.emoji(text))+"
  • "}};return markedRenderer};editormd.markdownToCRenderer=function(toc,container,tocDropdown,startLevel){var html="";var lastLevel=0;var classPrefix=this.classPrefix;startLevel=startLevel||1;for(var i=0,len=toc.length;ilastLevel){html+=""}else if(level")}else{html+=""}html+='
  • '+text+"
      ";lastLevel=level}var tocContainer=container.find(".markdown-toc");if(tocContainer.length<1&&container.attr("previewContainer")==="false"){var tocHTML='
      ';tocHTML=tocDropdown?'
      '+tocHTML+"
      ":tocHTML;container.html(tocHTML);tocContainer=container.find(".markdown-toc")}if(tocDropdown){tocContainer.wrap('

      ')}tocContainer.html('
        ').children(".markdown-toc-list").html(html.replace(/\r?\n?\\<\/ul\>/g,""));return tocContainer};editormd.tocDropdownMenu=function(container,tocTitle){tocTitle=tocTitle||"Table of Contents";var zindex=400;var tocMenus=container.find("."+this.classPrefix+"toc-menu");tocMenus.each(function(){var $this=$(this);var toc=$this.children(".markdown-toc");var icon='';var btn=''+icon+tocTitle+"";var menu=toc.children("ul");var list=menu.find("li");toc.append(btn);list.first().before("
      • "+tocTitle+" "+icon+"

      • ");$this.mouseover(function(){menu.show();list.each(function(){var li=$(this);var ul=li.children("ul");if(ul.html()===""){ul.remove()}if(ul.length>0&&ul.html()!==""){var firstA=li.children("a").first();if(firstA.children(".fa").length<1){firstA.append($(icon).css({float:"right",paddingTop:"4px"}))}}li.mouseover(function(){ul.css("z-index",zindex).show();zindex+=1}).mouseleave(function(){ul.hide()})})}).mouseleave(function(){menu.hide()})});return tocMenus};editormd.filterHTMLTags=function(html,filters){if(typeof html!=="string"){html=new String(html)}if(typeof filters!=="string"){return html}var expression=filters.split("|");var filterTags=expression[0].split(",");var attrs=expression[1];for(var i=0,len=filterTags.length;i]*)>([^>]*)","igm"),"")}if(typeof attrs!=="undefined"){html=html.replace(/(\w+)="([^"]*)"/g,(match,key,value)=>{const escapedValue=value.replace(//g,">");return`${key}="${escapedValue}"`});var htmlTagRegex=/\<(\w+)\s*([^\>]*)\>([^\>]*)\<\/(\w+)\>/gi;if(attrs==="*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){return"<"+$2+">"+$4+""})}else if(attrs==="on*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){var el=$("<"+$2+">"+$4+"");var _attrs=$($1)[0].attributes;var $attrs={};$.each(_attrs,function(i,e){if(e.nodeName!=='"')$attrs[e.nodeName]=e.nodeValue});$.each($attrs,function(i){if(i.indexOf("on")===0){delete $attrs[i]}});el.attr($attrs);var text=typeof el[1]!=="undefined"?$(el[1]).text():"";return el[0].outerHTML+text})}else{html=html.replace(htmlTagRegex,function($1,$2,$3,$4){var filterAttrs=attrs.split(",");var el=$($1);el.html($4);$.each(filterAttrs,function(i){el.attr(filterAttrs[i],null)});return el[0].outerHTML})}}return html};editormd.markdownToHTML=function(id,options){var defaults={gfm:true,toc:true,tocm:false,tocStartLevel:1,tocTitle:"目录",tocDropdown:false,tocContainer:"",markdown:"",markdownSourceCode:false,htmlDecode:false,autoLoadKaTeX:true,pageBreak:true,atLink:true,emailLink:true,tex:false,taskList:false,emoji:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true};editormd.$marked=marked;var div=$("#"+id);var settings=div.settings=$.extend(true,defaults,options||{});var saveTo=div.find("textarea");if(saveTo.length<1){div.append("");saveTo=div.find("textarea")}var markdownDoc=settings.markdown===""?saveTo.val():settings.markdown;var markdownToC=[];var rendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,pageBreak:settings.pageBreak,atLink:settings.atLink,emailLink:settings.emailLink,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:settings.gfm,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};markdownDoc=new String(markdownDoc);var markdownParsed=marked(markdownDoc,markedOptions);markdownParsed=editormd.filterHTMLTags(markdownParsed,settings.htmlDecode);if(settings.markdownSourceCode){saveTo.text(markdownDoc)}else{saveTo.remove()}div.addClass("markdown-body "+this.classPrefix+"html-preview").append(markdownParsed);var tocContainer=settings.tocContainer!==""?$(settings.tocContainer):div;if(settings.tocContainer!==""){tocContainer.attr("previewContainer",false)}if(settings.toc){div.tocContainer=this.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||div.find("."+this.classPrefix+"toc-menu").length>0){this.tocDropdownMenu(div,settings.tocTitle)}if(settings.tocContainer!==""){div.find(".editormd-toc-menu, .editormd-markdown-toc").remove()}}if(settings.previewCodeHighlight){div.find("pre").addClass("prettyprint linenums");prettyPrint()}if(!editormd.isIE8){if(settings.flowChart){div.find(".flowchart").flowChart()}if(settings.sequenceDiagram){div.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}}if(settings.tex){var katexHandle=function(){div.find("."+editormd.classNames.tex).each(function(){var tex=$(this);katex.render(tex.html().replace(/</g,"<").replace(/>/g,">"),tex[0]);tex.find(".katex").css("font-size","1.6em")})};if(settings.autoLoadKaTeX&&!editormd.$katex&&!editormd.kaTeXLoaded){this.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;katexHandle()})}else{katexHandle()}}div.getMarkdown=function(){return saveTo.val()};return div};editormd.themes=["default","dark"];editormd.previewThemes=["default","dark"];editormd.editorThemes=["default","3024-day","3024-night","ambiance","ambiance-mobile","base16-dark","base16-light","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","mbo","mdn-like","midnight","monokai","neat","neo","night","paraiso-dark","paraiso-light","pastel-on-dark","rubyblue","solarized","the-matrix","tomorrow-night-eighties","twilight","vibrant-ink","xq-dark","xq-light"];editormd.loadPlugins={};editormd.loadFiles={js:[],css:[],plugin:[]};editormd.loadPlugin=function(fileName,callback,into){callback=callback||function(){};this.loadScript(fileName,function(){editormd.loadFiles.plugin.push(fileName);callback()},into)};editormd.loadCSS=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var css=document.createElement("link");css.type="text/css";css.rel="stylesheet";css.onload=css.onreadystatechange=function(){editormd.loadFiles.css.push(fileName);callback()};css.href=fileName+".css";if(into==="head"){document.getElementsByTagName("head")[0].appendChild(css)}else{document.body.appendChild(css)}};editormd.isIE=navigator.appName=="Microsoft Internet Explorer";editormd.isIE8=editormd.isIE&&navigator.appVersion.match(/8./i)=="8.";editormd.loadScript=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var script=null;script=document.createElement("script");script.id=fileName.replace(/[\./]+/g,"-");script.type="text/javascript";script.src=fileName+".js";if(editormd.isIE8){script.onreadystatechange=function(){if(script.readyState){if(script.readyState==="loaded"||script.readyState==="complete"){script.onreadystatechange=null;editormd.loadFiles.js.push(fileName);callback()}}}}else{script.onload=function(){editormd.loadFiles.js.push(fileName);callback()}}if(into==="head"){document.getElementsByTagName("head")[0].appendChild(script)}else{document.body.appendChild(script)}};editormd.katexURL={css:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min",js:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min"};editormd.kaTeXLoaded=false;editormd.loadKaTeX=function(callback){editormd.loadCSS(editormd.katexURL.css,function(){editormd.loadScript(editormd.katexURL.js,callback||function(){})})};editormd.lockScreen=function(lock){$("html,body").css("overflow",lock?"hidden":"")};editormd.createDialog=function(options){var defaults={name:"",width:420,height:240,title:"",drag:true,closed:true,content:"",mask:true,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:true,footer:true,buttons:false};options=$.extend(true,defaults,options);var $this=this;var editor=this.editor;var classPrefix=editormd.classPrefix;var guid=(new Date).getTime();var dialogName=options.name===""?classPrefix+"dialog-"+guid:options.name;var mouseOrTouch=editormd.mouseOrTouch;var html='
        ';if(options.title!==""){html+='
        ";html+=''+options.title+"";html+="
        "}if(options.closed){html+=''}html+='
        '+options.content;if(options.footer||typeof options.footer==="string"){html+='"}html+="
        ";html+='
        ';html+='
        ';html+="
        ";editor.append(html);var dialog=editor.find("."+dialogName);dialog.lockScreen=function(lock){if(options.lockScreen){$("html,body").css("overflow",lock?"hidden":"");$this.resize()}return dialog};dialog.showMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").css(options.maskStyle).css("z-index",editormd.dialogZindex-1).show()}return dialog};dialog.hideMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").hide()}return dialog};dialog.loading=function(show){var loading=dialog.find("."+classPrefix+"dialog-mask");loading[show?"show":"hide"]();return dialog};dialog.lockScreen(true).showMask();dialog.show().css({zIndex:editormd.dialogZindex,border:editormd.isIE8?"1px solid #ddd":"",width:typeof options.width==="number"?options.width+"px":options.width,height:typeof options.height==="number"?options.height+"px":options.height});var dialogPosition=function(){dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"})};dialogPosition();$(window).resize(dialogPosition);dialog.children("."+classPrefix+"dialog-close").bind(mouseOrTouch("click","touchend"),function(){dialog.hide().lockScreen(false).hideMask()});if(typeof options.buttons==="object"){var footer=dialog.footer=dialog.find("."+classPrefix+"dialog-footer");for(var key in options.buttons){var btn=options.buttons[key];var btnClassName=classPrefix+key+"-btn";footer.append('");btn[1]=$.proxy(btn[1],dialog);footer.children("."+btnClassName).bind(mouseOrTouch("click","touchend"),btn[1])}}if(options.title!==""&&options.drag){var posX,posY;var dialogHeader=dialog.children("."+classPrefix+"dialog-header");if(!options.mask){dialogHeader.bind(mouseOrTouch("click","touchend"),function(){editormd.dialogZindex+=2;dialog.css("z-index",editormd.dialogZindex)})}dialogHeader.mousedown(function(e){e=e||window.event;posX=e.clientX-parseInt(dialog[0].style.left);posY=e.clientY-parseInt(dialog[0].style.top);document.onmousemove=moveAction});var userCanSelect=function(obj){obj.removeClass(classPrefix+"user-unselect").off("selectstart")};var userUnselect=function(obj){obj.addClass(classPrefix+"user-unselect").on("selectstart",function(event){return false})};var moveAction=function(e){e=e||window.event;var left,top,nowLeft=parseInt(dialog[0].style.left),nowTop=parseInt(dialog[0].style.top);if(nowLeft>=0){if(nowLeft+dialog.width()<=$(window).width()){left=e.clientX-posX}else{left=$(window).width()-dialog.width();document.onmousemove=null}}else{left=0;document.onmousemove=null}if(nowTop>=0){top=e.clientY-posY}else{top=0;document.onmousemove=null}document.onselectstart=function(){return false};userUnselect($("body"));userUnselect(dialog);dialog[0].style.left=left+"px";dialog[0].style.top=top+"px"};document.onmouseup=function(){userCanSelect($("body"));userCanSelect(dialog);document.onselectstart=null;document.onmousemove=null};dialogHeader.touchDraggable=function(){var offset=null;var start=function(e){var orig=e.originalEvent;var pos=$(this).parent().position();offset={x:orig.changedTouches[0].pageX-pos.left,y:orig.changedTouches[0].pageY-pos.top}};var move=function(e){e.preventDefault();var orig=e.originalEvent;$(this).parent().css({top:orig.changedTouches[0].pageY-offset.y,left:orig.changedTouches[0].pageX-offset.x})};this.bind("touchstart",start).bind("touchmove",move)};dialogHeader.touchDraggable()}editormd.dialogZindex+=2;return dialog};editormd.mouseOrTouch=function(mouseEventType,touchEventType){mouseEventType=mouseEventType||"click";touchEventType=touchEventType||"touchend";var eventType=mouseEventType;try{document.createEvent("TouchEvent");eventType=touchEventType}catch(e){}return eventType};editormd.dateFormat=function(format){format=format||"";var addZero=function(d){return d<10?"0"+d:d};var date=new Date;var year=date.getFullYear();var year2=year.toString().slice(2,4);var month=addZero(date.getMonth()+1);var day=addZero(date.getDate());var weekDay=date.getDay();var hour=addZero(date.getHours());var min=addZero(date.getMinutes());var second=addZero(date.getSeconds());var ms=addZero(date.getMilliseconds());var datefmt="";var ymd=year2+"-"+month+"-"+day;var fymd=year+"-"+month+"-"+day;var hms=hour+":"+min+":"+second;switch(format){case"UNIX Time":datefmt=date.getTime();break;case"UTC":datefmt=date.toUTCString();break;case"yy":datefmt=year2;break;case"year":case"yyyy":datefmt=year;break;case"month":case"mm":datefmt=month;break;case"cn-week-day":case"cn-wd":var cnWeekDays=["日","一","二","三","四","五","六"];datefmt="星期"+cnWeekDays[weekDay];break;case"week-day":case"wd":var weekDays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];datefmt=weekDays[weekDay];break;case"day":case"dd":datefmt=day;break;case"hour":case"hh":datefmt=hour;break;case"min":case"ii":datefmt=min;break;case"second":case"ss":datefmt=second;break;case"ms":datefmt=ms;break;case"yy-mm-dd":datefmt=ymd;break;case"yyyy-mm-dd":datefmt=fymd;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":datefmt=fymd+" "+hms+" "+ms;break;case"full":case"yyyy-mm-dd h:i:s":default:datefmt=fymd+" "+hms;break}return datefmt};return editormd}); \ No newline at end of file +(function(factory){"use strict";if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else if(typeof define==="function"){if(define.amd){var cmModePath="./lib/codemirror/mode/";var cmAddonPath="./lib/codemirror/addon/";var codeMirrorModules=["jquery","marked","prettify","katex","raphael","underscore","flowchart","jqueryflowchart","sequenceDiagram","./lib/codemirror/lib/codemirror",cmModePath+"css/css",cmModePath+"sass/sass",cmModePath+"shell/shell",cmModePath+"sql/sql",cmModePath+"clike/clike",cmModePath+"php/php",cmModePath+"xml/xml",cmModePath+"markdown/markdown",cmModePath+"javascript/javascript",cmModePath+"htmlmixed/htmlmixed",cmModePath+"gfm/gfm",cmModePath+"http/http",cmModePath+"go/go",cmModePath+"dart/dart",cmModePath+"coffeescript/coffeescript",cmModePath+"nginx/nginx",cmModePath+"python/python",cmModePath+"perl/perl",cmModePath+"lua/lua",cmModePath+"r/r",cmModePath+"ruby/ruby",cmModePath+"rst/rst",cmModePath+"smartymixed/smartymixed",cmModePath+"vb/vb",cmModePath+"vbscript/vbscript",cmModePath+"velocity/velocity",cmModePath+"xquery/xquery",cmModePath+"yaml/yaml",cmModePath+"erlang/erlang",cmModePath+"jade/jade",cmAddonPath+"edit/trailingspace",cmAddonPath+"dialog/dialog",cmAddonPath+"search/searchcursor",cmAddonPath+"search/search",cmAddonPath+"scroll/annotatescrollbar",cmAddonPath+"search/matchesonscrollbar",cmAddonPath+"display/placeholder",cmAddonPath+"edit/closetag",cmAddonPath+"fold/foldcode",cmAddonPath+"fold/foldgutter",cmAddonPath+"fold/indent-fold",cmAddonPath+"fold/brace-fold",cmAddonPath+"fold/xml-fold",cmAddonPath+"fold/markdown-fold",cmAddonPath+"fold/comment-fold",cmAddonPath+"mode/overlay",cmAddonPath+"selection/active-line",cmAddonPath+"edit/closebrackets",cmAddonPath+"display/fullscreen",cmAddonPath+"search/match-highlighter"];define(codeMirrorModules,factory)}else{define(["jquery"],factory)}}else{window.editormd=factory()}})(function(){if(typeof define=="function"&&define.amd){$=arguments[0];marked=arguments[1];prettify=arguments[2];katex=arguments[3];Raphael=arguments[4];_=arguments[5];flowchart=arguments[6];CodeMirror=arguments[9]}"use strict";var $=typeof jQuery!=="undefined"?jQuery:Zepto;if(typeof $==="undefined"){return}var editormd=function(id,options){return new editormd.fn.init(id,options)};editormd.title=editormd.$name="Editor.md";editormd.version="1.5.0";editormd.homePage="https://pandao.github.io/editor.md/";editormd.classPrefix="editormd-";editormd.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime","emoji","html-entities","pagebreak","|","goto-line","watch","preview","fullscreen","clear","search","|","help","info"],simple:["undo","redo","|","bold","del","italic","quote","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","watch","preview","fullscreen","|","help","info"],mini:["undo","redo","|","watch","preview","|","help","info"]};editormd.defaults={mode:"gfm",name:"",value:"",theme:"",editorTheme:"default",previewTheme:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:true,watch:true,placeholder:"Enjoy Markdown! coding now...",gotoLine:true,codeFold:false,autoHeight:false,autoFocus:true,autoCloseTags:true,searchReplace:true,syncScrolling:true,readOnly:false,tabSize:4,indentUnit:4,lineNumbers:true,lineWrapping:true,autoCloseBrackets:true,showTrailingSpace:true,matchBrackets:true,indentWithTabs:true,styleSelectedText:true,matchWordHighlight:true,styleActiveLine:true,dialogLockScreen:true,dialogShowMask:true,dialogDraggable:true,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:false,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:false,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:false,uploadCallbackURL:"",toc:true,tocm:false,tocTitle:"",tocDropdown:false,tocContainer:"",tocStartLevel:1,htmlDecode:false,pageBreak:true,atLink:true,emailLink:true,taskList:false,emoji:false,tex:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true,toolbar:true,toolbarAutoFixed:true,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return editormd.toolbarHandlers.ucwords},lowercase:function(){return editormd.toolbarHandlers.lowercase}},toolbarCustomIcons:{lowercase:'a',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:editormd.classPrefix+"bold",h2:editormd.classPrefix+"bold",h3:editormd.classPrefix+"bold",h4:editormd.classPrefix+"bold",h5:editormd.classPrefix+"bold",h6:editormd.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},toolbarNoFocus:["link","reference-link","image","code-block","preformatted-text","watch","preview","search","fullscreen","info"],lang:{name:"zh-cn",description:"开源在线Markdown编辑器
        Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+editormd.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}};editormd.classNames={tex:editormd.classPrefix+"tex"};editormd.dialogZindex=99999;editormd.$katex=null;editormd.$marked=null;editormd.$CodeMirror=null;editormd.$prettyPrint=null;var timer,flowchartTimer;editormd.prototype=editormd.fn={state:{watching:false,loaded:false,preview:false,fullscreen:false},init:function(id,options){options=options||{};if(typeof id==="object"){options=id}var _this=this;var classPrefix=this.classPrefix=editormd.classPrefix;var settings=this.settings=$.extend(true,editormd.defaults,options);if(settings.appendToolbar&&typeof settings.toolbarIcons==="string"&&settings.toolbarIcons in editormd.toolbarModes){settings.appendToolbar.forEach(toolbar=>{if(!("name"in toolbar)){return}if(toolbar.name==="|"){editormd.toolbarModes[settings.toolbarIcons].push("|");return}if(!editormd.toolbarModes[settings.toolbarIcons].includes(toolbar.name)){editormd.toolbarModes[settings.toolbarIcons].push(toolbar.name)}if("icon"in toolbar){settings.toolbarIconsClass[toolbar.name]=toolbar.icon}if("title"in toolbar){settings.lang.toolbar[toolbar.name]=toolbar.title}if("handler"in toolbar){editormd.toolbarHandlers[toolbar.name]=toolbar.handler;if("shortcut"in toolbar){toolbar.shortcut.forEach(key=>editormd.keyMaps[key]=toolbar.handler)}}if("nofocus"in toolbar&&toolbar.nofocus===true){if(!settings.toolbarNoFocus.includes[toolbar.name]){settings.toolbarNoFocus.push(toolbar.name)}}})}if(settings.shortcutFunction){for(const key in settings.shortcutFunction){editormd.keyMaps[key]=settings.shortcutFunction[key]}}id=typeof id==="object"?settings.id:id;var editor=this.editor=$("#"+id);this.id=id;this.lang=settings.lang;var classNames=this.classNames={textarea:{html:classPrefix+"html-textarea",markdown:classPrefix+"markdown-textarea"}};settings.pluginPath=settings.pluginPath===""?settings.path+"../plugins/":settings.pluginPath;this.state.watching=settings.watch?true:false;if(!editor.hasClass("editormd")){editor.addClass("editormd")}editor.css({width:typeof settings.width==="number"?settings.width+"px":settings.width,height:typeof settings.height==="number"?settings.height+"px":settings.height});if(settings.autoHeight){editor.css("height","auto")}var markdownTextarea=this.markdownTextarea=editor.children("textarea");if(markdownTextarea.length<1){editor.append("");markdownTextarea=this.markdownTextarea=editor.children("textarea")}markdownTextarea.addClass(classNames.textarea.markdown).attr("placeholder",settings.placeholder);if(typeof markdownTextarea.attr("name")==="undefined"||markdownTextarea.attr("name")===""){markdownTextarea.attr("name",settings.name!==""?settings.name:id+"-markdown-doc")}var appendElements=[!settings.readOnly?'':"",settings.saveHTMLToTextarea?'':"",'
        ','
        ','
        '].join("\n");editor.append(appendElements).addClass(classPrefix+"vertical");if(settings.theme!==""){editor.addClass(classPrefix+"theme-"+settings.theme)}this.mask=editor.children("."+classPrefix+"mask");this.containerMask=editor.children("."+classPrefix+"container-mask");if(settings.markdown!==""){markdownTextarea.val(settings.markdown)}if(settings.appendMarkdown!==""){markdownTextarea.val(markdownTextarea.val()+settings.appendMarkdown)}this.htmlTextarea=editor.children("."+classNames.textarea.html);this.preview=editor.children("."+classPrefix+"preview");this.previewContainer=this.preview.children("."+classPrefix+"preview-container");if(settings.previewTheme!==""){this.preview.addClass(classPrefix+"preview-theme-"+settings.previewTheme)}if(typeof define==="function"&&define.amd){if(typeof katex!=="undefined"){editormd.$katex=katex}if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(settings.path+"codemirror/addon/dialog/dialog");editormd.loadCSS(settings.path+"codemirror/addon/search/matchesonscrollbar")}}if(typeof define==="function"&&define.amd||!settings.autoLoadModules){if(typeof CodeMirror!=="undefined"){editormd.$CodeMirror=CodeMirror}if(typeof marked!=="undefined"){editormd.$marked=marked}this.setCodeMirror().setToolbar().loadedDisplay()}else{this.loadQueues()}return this},loadQueues:function(){var _this=this;var settings=this.settings;var loadPath=settings.path;var loadFlowChartOrSequenceDiagram=function(){if(editormd.isIE8){_this.loadedDisplay();return}if(settings.plantuml){editormd.loadScript(loadPath+"plantuml-encoder.min",function(){editormd.$plantumlEncoder=plantumlEncoder})}if(settings.flowChart||settings.sequenceDiagram){editormd.loadScript(loadPath+"raphael.min",function(){editormd.loadScript(loadPath+"underscore.min",function(){if(!settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})}else if(settings.flowChart&&!settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){_this.loadedDisplay()})})}else if(settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})})})}})})}else{_this.loadedDisplay()}};editormd.loadCSS(loadPath+"codemirror/codemirror.min");if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(loadPath+"codemirror/addon/dialog/dialog");editormd.loadCSS(loadPath+"codemirror/addon/search/matchesonscrollbar")}if(settings.codeFold){editormd.loadCSS(loadPath+"codemirror/addon/fold/foldgutter")}editormd.loadScript(loadPath+"codemirror/codemirror.min",function(){editormd.$CodeMirror=CodeMirror;editormd.loadScript(loadPath+"codemirror/modes.min",function(){editormd.loadScript(loadPath+"codemirror/addons.min",function(){_this.setCodeMirror();if(settings.mode!=="gfm"&&settings.mode!=="markdown"){_this.loadedDisplay();return false}_this.setToolbar();editormd.loadScript(loadPath+"marked.min",function(){editormd.$marked=marked;if(settings.previewCodeHighlight){editormd.loadScript(loadPath+"prettify.min",function(){loadFlowChartOrSequenceDiagram()})}else{loadFlowChartOrSequenceDiagram()}})})})});return this},setTheme:function(theme){var editor=this.editor;var oldTheme=this.settings.theme;var themePrefix=this.classPrefix+"theme-";editor.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.theme=theme;return this},setEditorTheme:function(theme){var settings=this.settings;settings.editorTheme=theme;if(theme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}this.cm.setOption("theme",theme);return this},setCodeMirrorTheme:function(theme){this.setEditorTheme(theme);return this},setPreviewTheme:function(theme){var preview=this.preview;var oldTheme=this.settings.previewTheme;var themePrefix=this.classPrefix+"preview-theme-";preview.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.previewTheme=theme;return this},setCodeMirror:function(){var settings=this.settings;var editor=this.editor;if(settings.editorTheme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}var codeMirrorConfig={mode:settings.mode,theme:settings.editorTheme,tabSize:settings.tabSize,dragDrop:false,autofocus:settings.autoFocus,autoCloseTags:settings.autoCloseTags,readOnly:settings.readOnly?"nocursor":false,indentUnit:settings.indentUnit,lineNumbers:settings.lineNumbers,lineWrapping:settings.lineWrapping,extraKeys:{"Ctrl-Q":function(cm){cm.foldCode(cm.getCursor())}},foldGutter:settings.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:settings.matchBrackets,indentWithTabs:settings.indentWithTabs,styleActiveLine:settings.styleActiveLine,styleSelectedText:settings.styleSelectedText,autoCloseBrackets:settings.autoCloseBrackets,showTrailingSpace:settings.showTrailingSpace,highlightSelectionMatches:!settings.matchWordHighlight?false:{showToken:settings.matchWordHighlight==="onselected"?false:/\w/}};this.codeEditor=this.cm=editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0],codeMirrorConfig);this.codeMirror=this.cmElement=editor.children(".CodeMirror");if(settings.value!==""){this.cm.setValue(settings.value)}this.codeMirror.css({fontSize:settings.fontSize,width:!settings.watch?"100%":"50%"});if(settings.autoHeight){this.codeMirror.css("height","auto");this.cm.setOption("viewportMargin",Infinity)}if(!settings.lineNumbers){this.codeMirror.find(".CodeMirror-gutters").css("border-right","none")}return this},getCodeMirrorOption:function(key){return this.cm.getOption(key)},setCodeMirrorOption:function(key,value){this.cm.setOption(key,value);return this},addKeyMap:function(map,bottom){this.cm.addKeyMap(map,bottom);return this},removeKeyMap:function(map){this.cm.removeKeyMap(map);return this},gotoLine:function(line){var settings=this.settings;if(!settings.gotoLine){return this}var cm=this.cm;var editor=this.editor;var count=cm.lineCount();var preview=this.preview;if(typeof line==="string"){if(line==="last"){line=count}if(line==="first"){line=1}}if(typeof line!=="number"){alert("Error: The line number must be an integer.");return this}line=parseInt(line)-1;if(line>count){alert("Error: The line number range 1-"+count);return this}cm.setCursor({line:line,ch:0});var scrollInfo=cm.getScrollInfo();var clientHeight=scrollInfo.clientHeight;var coords=cm.charCoords({line:line,ch:0},"local");cm.scrollTo(null,(coords.top+coords.bottom-clientHeight)/2);if(settings.watch){var cmScroll=this.codeMirror.find(".CodeMirror-scroll")[0];var height=$(cmScroll).height();var scrollTop=cmScroll.scrollTop;var percent=scrollTop/cmScroll.scrollHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=cmScroll.scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop(preview[0].scrollHeight*percent)}}cm.focus();return this},extend:function(){if(typeof arguments[1]!=="undefined"){if(typeof arguments[1]==="function"){arguments[1]=$.proxy(arguments[1],this)}this[arguments[0]]=arguments[1]}if(typeof arguments[0]==="object"&&typeof arguments[0].length==="undefined"){$.extend(true,this,arguments[0])}return this},set:function(key,value){if(typeof value!=="undefined"&&typeof value==="function"){value=$.proxy(value,this)}this[key]=value;return this},config:function(key,value){var settings=this.settings;if(typeof key==="object"){settings=$.extend(true,settings,key)}if(typeof key==="string"){settings[key]=value}this.settings=settings;this.recreate();return this},on:function(eventType,callback){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=$.proxy(callback,this)}return this},off:function(eventType){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=function(){}}return this},showToolbar:function(callback){var settings=this.settings;if(settings.readOnly){return this}if(settings.toolbar&&(this.toolbar.length<1||this.toolbar.find("."+this.classPrefix+"menu").html()==="")){this.setToolbar()}settings.toolbar=true;this.toolbar.show();this.resize();$.proxy(callback||function(){},this)();return this},hideToolbar:function(callback){var settings=this.settings;settings.toolbar=false;this.toolbar.hide();this.resize();$.proxy(callback||function(){},this)();return this},setToolbarAutoFixed:function(fixed){var state=this.state;var editor=this.editor;var toolbar=this.toolbar;var settings=this.settings;if(typeof fixed!=="undefined"){settings.toolbarAutoFixed=fixed}var autoFixedHandle=function(){var $window=$(window);var top=$window.scrollTop();if(!settings.toolbarAutoFixed){return false}if(top-editor.offset().top>10&&top
          ';editor.append(toolbarHTML);toolbar=this.toolbar=editor.children("."+classPrefix+"toolbar")}if(!settings.toolbar){toolbar.hide();return this}toolbar.show();var icons=typeof settings.toolbarIcons==="function"?settings.toolbarIcons():typeof settings.toolbarIcons==="string"?editormd.toolbarModes[settings.toolbarIcons]:settings.toolbarIcons;var toolbarMenu=toolbar.find("."+this.classPrefix+"menu"),menu="";var pullRight=false;for(var i=0,len=icons.length;i|'}else{var isHeader=/h(\d)/.test(name);var index=name;if(name==="watch"&&!settings.watch){index="unwatch"}var title=settings.lang.toolbar[index];var iconTexts=settings.toolbarIconTexts[index];var iconClass=settings.toolbarIconsClass[index];title=typeof title==="undefined"?"":title;iconTexts=typeof iconTexts==="undefined"?"":iconTexts;iconClass=typeof iconClass==="undefined"?"":iconClass;var menuItem=pullRight?'
        • ':"
        • ";if(typeof settings.toolbarCustomIcons[name]!=="undefined"&&typeof settings.toolbarCustomIcons[name]!=="function"){menuItem+=settings.toolbarCustomIcons[name]}else{menuItem+='';menuItem+=''+(isHeader?name.toUpperCase():iconClass===""?iconTexts:"")+"";menuItem+=""}menuItem+="
        • ";menu=pullRight?menuItem+menu:menu+menuItem}}toolbarMenu.html(menu);toolbarMenu.find('[title="Lowercase"]').attr("title",settings.lang.toolbar.lowercase);toolbarMenu.find('[title="ucwords"]').attr("title",settings.lang.toolbar.ucwords);this.setToolbarHandler();this.setToolbarAutoFixed();return this},dialogLockScreen:function(){$.proxy(editormd.dialogLockScreen,this)();return this},dialogShowMask:function(dialog){$.proxy(editormd.dialogShowMask,this)(dialog);return this},getToolbarHandles:function(name){var toolbarHandlers=this.toolbarHandlers=editormd.toolbarHandlers;return name&&typeof toolbarIconHandlers[name]!=="undefined"?toolbarHandlers[name]:toolbarHandlers},setToolbarHandler:function(){var _this=this;var settings=this.settings;if(!settings.toolbar||settings.readOnly){return this}var toolbar=this.toolbar;var cm=this.cm;var classPrefix=this.classPrefix;var toolbarIcons=this.toolbarIcons=toolbar.find("."+classPrefix+"menu > li > a");var toolbarIconHandlers=this.getToolbarHandles();toolbarIcons.bind(editormd.mouseOrTouch("click","touchend"),function(event){var icon=$(this).children(".fa");var name=icon.attr("name");var cursor=cm.getCursor();var selection=cm.getSelection();if(name===""){return}_this.activeIcon=icon;if(typeof toolbarIconHandlers[name]!=="undefined"){$.proxy(toolbarIconHandlers[name],_this)(cm)}else{if(typeof settings.toolbarHandlers[name]!=="undefined"){$.proxy(settings.toolbarHandlers[name],_this)(cm,icon,cursor,selection)}else{alert("This feature is not yet implemented.")}}if(!settings.toolbarNoFocus.includes(name)){cm.focus()}return false});return this},createDialog:function(options){return $.proxy(editormd.createDialog,this)(options)},createInfoDialog:function(){var _this=this;var editor=this.editor;var classPrefix=this.classPrefix;var infoDialogHTML=['
          ','
          ','

          '+editormd.title+"v"+editormd.version+"

          ","

          "+this.lang.description+"

          ",'

          '+editormd.homePage+'

          ','

          Copyright © 2015 Pandao, The MIT License.

          ',"
          ",'',"
          "].join("\n");editor.append(infoDialogHTML);var infoDialog=this.infoDialog=editor.children("."+classPrefix+"dialog-info");infoDialog.find("."+classPrefix+"dialog-close").bind(editormd.mouseOrTouch("click","touchend"),function(){_this.hideInfoDialog()});infoDialog.css("border",editormd.isIE8?"1px solid #ddd":"").css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},infoDialogPosition:function(){var infoDialog=this.infoDialog;var _infoDialogPosition=function(){infoDialog.css({top:($(window).height()-infoDialog.height())/2+"px",left:($(window).width()-infoDialog.width())/2+"px"})};_infoDialogPosition();$(window).resize(_infoDialogPosition);return this},showInfoDialog:function(){$("html,body").css("overflow-x","hidden");var _this=this;var editor=this.editor;var settings=this.settings;var infoDialog=this.infoDialog=editor.children("."+this.classPrefix+"dialog-info");if(infoDialog.length<1){this.createInfoDialog()}this.lockScreen(true);this.mask.css({opacity:settings.dialogMaskOpacity,backgroundColor:settings.dialogMaskBgColor}).show();infoDialog.css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},hideInfoDialog:function(){$("html,body").css("overflow-x","");this.infoDialog.hide();this.mask.hide();this.lockScreen(false);return this},lockScreen:function(lock){editormd.lockScreen(lock);this.resize();return this},recreate:function(){var _this=this;var editor=this.editor;var settings=this.settings;this.codeMirror.remove();this.setCodeMirror();if(!settings.readOnly){if(editor.find(".editormd-dialog").length>0){editor.find(".editormd-dialog").remove()}if(settings.toolbar){this.getToolbarHandles();this.setToolbar()}}this.loadedDisplay(true);return this},previewCodeHighlight:function(){var settings=this.settings;var previewContainer=this.previewContainer;if(settings.previewCodeHighlight){previewContainer.find("pre").addClass("prettyprint linenums");if(typeof prettyPrint!=="undefined"){prettyPrint()}}return this},katexRender:function(){if(timer===null){return this}this.previewContainer.find("."+editormd.classNames.tex).each(function(){var tex=$(this);editormd.$katex.render(tex.text(),tex[0]);tex.find(".katex").css("font-size","1.6em")});return this},flowChartAndSequenceDiagramRender:function(){var $this=this;var settings=this.settings;var previewContainer=this.previewContainer;if(editormd.isIE8){return this}if(settings.flowChart){if(flowchartTimer===null){return this}previewContainer.find(".flowchart").flowChart()}if(settings.sequenceDiagram){previewContainer.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}var preview=$this.preview;var codeMirror=$this.codeMirror;var codeView=codeMirror.find(".CodeMirror-scroll");var height=codeView.height();var scrollTop=codeView.scrollTop();var percent=scrollTop/codeView[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=codeView[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}return this},registerKeyMaps:function(keyMap){var _this=this;var cm=this.cm;var settings=this.settings;var toolbarHandlers=editormd.toolbarHandlers;var disabledKeyMaps=settings.disabledKeyMaps;keyMap=keyMap||null;if(keyMap){for(var i in keyMap){if($.inArray(i,disabledKeyMaps)<0){var map={};map[i]=keyMap[i];cm.addKeyMap(keyMap)}}}else{for(var k in editormd.keyMaps){var _keyMap=editormd.keyMaps[k];var handle=typeof _keyMap==="string"?$.proxy(toolbarHandlers[_keyMap],_this):$.proxy(_keyMap,_this);if($.inArray(k,["F9","F10","F11"])<0&&$.inArray(k,disabledKeyMaps)<0){var _map={};_map[k]=handle;cm.addKeyMap(_map)}}$(window).keydown(function(event){var keymaps={120:"F9",121:"F10",122:"F11"};if($.inArray(keymaps[event.keyCode],disabledKeyMaps)<0){switch(event.keyCode){case 120:$.proxy(toolbarHandlers["watch"],_this)();return false;break;case 121:$.proxy(toolbarHandlers["preview"],_this)();return false;break;case 122:$.proxy(toolbarHandlers["fullscreen"],_this)();return false;break;default:break}}})}return this},bindScrollEvent:function(){var _this=this;var preview=this.preview;var settings=this.settings;var codeMirror=this.codeMirror;var mouseOrTouch=editormd.mouseOrTouch;if(!settings.syncScrolling){return this}var cmBindScroll=function(){codeMirror.find(".CodeMirror-scroll").bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}$.proxy(settings.onscroll,_this)(event)})};var cmUnbindScroll=function(){codeMirror.find(".CodeMirror-scroll").unbind(mouseOrTouch("scroll","touchmove"))};var previewBindScroll=function(){preview.bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var codeView=codeMirror.find(".CodeMirror-scroll");if(scrollTop===0){codeView.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight){codeView.scrollTop(codeView[0].scrollHeight)}else{codeView.scrollTop(codeView[0].scrollHeight*percent)}$.proxy(settings.onpreviewscroll,_this)(event)})};var previewUnbindScroll=function(){preview.unbind(mouseOrTouch("scroll","touchmove"))};codeMirror.bind({mouseover:cmBindScroll,mouseout:cmUnbindScroll,touchstart:cmBindScroll,touchend:cmUnbindScroll});if(settings.syncScrolling==="single"){return this}preview.bind({mouseover:previewBindScroll,mouseout:previewUnbindScroll,touchstart:previewBindScroll,touchend:previewUnbindScroll});return this},bindChangeEvent:function(){var _this=this;var cm=this.cm;var settings=this.settings;if(!settings.syncScrolling){return this}cm.on("change",function(_cm,changeObj){if(settings.watch){_this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px")}timer=setTimeout(function(){clearTimeout(timer);_this.save();timer=null},settings.delay)});return this},loadedDisplay:function(recreate){recreate=recreate||false;var _this=this;var editor=this.editor;var preview=this.preview;var settings=this.settings;this.containerMask.hide();this.save();if(settings.watch){preview.show()}editor.data("oldWidth",editor.width()).data("oldHeight",editor.height());this.resize();this.registerKeyMaps();$(window).resize(function(){_this.resize()});this.bindScrollEvent().bindChangeEvent();if(!recreate){$.proxy(settings.onload,this)()}this.state.loaded=true;return this},width:function(width){this.editor.css("width",typeof width==="number"?width+"px":width);this.resize();return this},height:function(height){this.editor.css("height",typeof height==="number"?height+"px":height);this.resize();return this},resize:function(width,height){width=width||null;height=height||null;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;if(width){editor.css("width",typeof width==="number"?width+"px":width)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){editor.css("height","auto");codeMirror.css("height","auto")}else{if(height){editor.css("height",typeof height==="number"?height+"px":height)}if(state.fullscreen){editor.height($(window).height())}if(settings.toolbar&&!settings.readOnly){codeMirror.css("margin-top",toolbar.height()+1).height(editor.height()-toolbar.height())}else{codeMirror.css("margin-top",0).height(editor.height())}}if(settings.watch){codeMirror.width(editor.width()/2);preview.width(!state.preview?editor.width()/2:editor.width());this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px");if(settings.toolbar&&!settings.readOnly){preview.css("top",toolbar.height()+1)}else{preview.css("top",0)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){preview.height("")}else{var previewHeight=settings.toolbar&&!settings.readOnly?editor.height()-toolbar.height():editor.height();preview.height(previewHeight)}}else{codeMirror.width(editor.width());preview.hide()}if(state.loaded){$.proxy(settings.onresize,this)()}return this},save:function(){if(timer===null){return this}var _this=this;var state=this.state;var settings=this.settings;var cm=this.cm;var cmValue=cm.getValue();var previewContainer=this.previewContainer;if(settings.mode!=="gfm"&&settings.mode!=="markdown"){this.markdownTextarea.val(cmValue);return this}var marked=editormd.$marked;var markdownToC=this.markdownToC=[];var rendererOptions=this.markedRendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,pageBreak:settings.pageBreak,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,atLink:settings.atLink,emailLink:settings.emailLink,plantuml:settings.plantuml,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions=this.markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:true,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};marked.setOptions(markedOptions);var newMarkdownDoc=editormd.$marked(cmValue,markedOptions);newMarkdownDoc=editormd.filterHTMLTags(newMarkdownDoc,settings.htmlDecode);this.markdownTextarea.text(cmValue);cm.save();if(settings.saveHTMLToTextarea){this.htmlTextarea.text(newMarkdownDoc)}if(settings.watch||!settings.watch&&state.preview){previewContainer.html(newMarkdownDoc);this.previewCodeHighlight();if(settings.toc){var tocContainer=settings.tocContainer===""?previewContainer:$(settings.tocContainer);var tocMenu=tocContainer.find("."+this.classPrefix+"toc-menu");tocContainer.attr("previewContainer",settings.tocContainer===""?"true":"false");if(settings.tocContainer!==""&&tocMenu.length>0){tocMenu.remove()}editormd.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||tocContainer.find("."+this.classPrefix+"toc-menu").length>0){editormd.tocDropdownMenu(tocContainer,settings.tocTitle!==""?settings.tocTitle:this.lang.tocTitle)}if(settings.tocContainer!==""){previewContainer.find(".markdown-toc").css("border","none")}}if(settings.tex){if(!editormd.kaTeXLoaded&&settings.autoLoadModules){editormd.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;_this.katexRender()})}else{editormd.$katex=katex;this.katexRender()}}if(settings.flowChart||settings.sequenceDiagram){flowchartTimer=setTimeout(function(){clearTimeout(flowchartTimer);_this.flowChartAndSequenceDiagramRender();flowchartTimer=null},10)}if(state.loaded){$.proxy(settings.onchange,this)()}}return this},focus:function(){this.cm.focus();return this},setCursor:function(cursor){this.cm.setCursor(cursor);return this},getCursor:function(){return this.cm.getCursor()},setSelection:function(from,to){this.cm.setSelection(from,to);return this},getSelection:function(){return this.cm.getSelection()},setSelections:function(ranges){this.cm.setSelections(ranges);return this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(value){this.cm.replaceSelection(value);return this},insertValue:function(value){this.replaceSelection(value);return this},appendMarkdown:function(md){var settings=this.settings;var cm=this.cm;cm.setValue(cm.getValue()+md);return this},setMarkdown:function(md){this.cm.setValue(md||this.settings.markdown);return this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(value){this.cm.setValue(value);return this},clear:function(){this.cm.setValue("");return this},getHTML:function(){if(!this.settings.saveHTMLToTextarea){alert("Error: settings.saveHTMLToTextarea == false");return false}return this.htmlTextarea.val()},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){if(!this.settings.watch){alert("Error: settings.watch == false");return false}return this.previewContainer.html()},watch:function(callback){var settings=this.settings;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}this.state.watching=settings.watch=true;this.preview.show();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.watch);icon.removeClass(unWatchIcon).addClass(watchIcon)}this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2);timer=0;this.save().resize();if(!settings.onwatch){settings.onwatch=callback||function(){}}$.proxy(settings.onwatch,this)();return this},unwatch:function(callback){var settings=this.settings;this.state.watching=settings.watch=false;this.preview.hide();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.unwatch);icon.removeClass(watchIcon).addClass(unWatchIcon)}this.codeMirror.css("border-right","none").width(this.editor.width());this.resize();if(!settings.onunwatch){settings.onunwatch=callback||function(){}}$.proxy(settings.onunwatch,this)();return this},show:function(callback){callback=callback||function(){};var _this=this;this.editor.show(0,function(){$.proxy(callback,_this)()});return this},hide:function(callback){callback=callback||function(){};var _this=this;this.editor.hide(0,function(){$.proxy(callback,_this)()});return this},previewing:function(){var _this=this;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;var previewContainer=this.previewContainer;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}if(settings.toolbar&&toolbar){toolbar.toggle();toolbar.find(".fa[name=preview]").toggleClass("active")}codeMirror.toggle();var escHandle=function(event){if(event.shiftKey&&event.keyCode===27){_this.previewed()}};if(codeMirror.css("display")==="none"){this.state.preview=true;if(this.state.fullscreen){preview.css("background","#fff")}editor.find("."+this.classPrefix+"preview-close-btn").show().bind(editormd.mouseOrTouch("click","touchend"),function(){_this.previewed()});if(!settings.watch){this.save()}else{previewContainer.css("padding","")}previewContainer.addClass(this.classPrefix+"preview-active");preview.show().css({position:"",top:0,width:editor.width(),height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()});if(this.state.loaded){$.proxy(settings.onpreviewing,this)()}$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.previewed()}},previewed:function(){var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var previewContainer=this.previewContainer;var previewCloseBtn=editor.find("."+this.classPrefix+"preview-close-btn");this.state.preview=false;this.codeMirror.show();if(settings.toolbar){toolbar.show()}preview[settings.watch?"show":"hide"]();previewCloseBtn.hide().unbind(editormd.mouseOrTouch("click","touchend"));previewContainer.removeClass(this.classPrefix+"preview-active");if(settings.watch){previewContainer.css("padding","20px")}preview.css({background:null,position:"absolute",width:editor.width()/2,height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()-toolbar.height(),top:settings.toolbar?toolbar.height():0});if(this.state.loaded){$.proxy(settings.onpreviewed,this)()}return this},fullscreen:function(){var _this=this;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var fullscreenClass=this.classPrefix+"fullscreen";if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().toggleClass("active")}var escHandle=function(event){if(!event.shiftKey&&event.keyCode===27){if(state.fullscreen){_this.fullscreenExit()}}};if(!editor.hasClass(fullscreenClass)){state.fullscreen=true;$("html,body").css("overflow","hidden");editor.css({width:$(window).width(),height:$(window).height()}).addClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreen,this)();$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.fullscreenExit()}return this},fullscreenExit:function(){var editor=this.editor;var settings=this.settings;var toolbar=this.toolbar;var fullscreenClass=this.classPrefix+"fullscreen";this.state.fullscreen=false;if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().removeClass("active")}$("html,body").css("overflow","");editor.css({width:editor.data("oldWidth"),height:editor.data("oldHeight")}).removeClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreenExit,this)();return this},executePlugin:function(name,path){var _this=this;var cm=this.cm;var settings=this.settings;path=settings.pluginPath+path;if(typeof define==="function"){if(typeof this[name]==="undefined"){alert("Error: "+name+" plugin is not found, you are not load this plugin.");return this}this[name](cm);return this}if($.inArray(path,editormd.loadFiles.plugin)<0){editormd.loadPlugin(path,function(){editormd.loadPlugins[name]=_this[name];_this[name](cm)})}else{$.proxy(editormd.loadPlugins[name],this)(cm)}return this},search:function(command){var settings=this.settings;if(!settings.searchReplace){alert("Error: settings.searchReplace == false");return this}if(!settings.readOnly){this.cm.execCommand(command||"find")}return this},searchReplace:function(){this.search("replace");return this},searchReplaceAll:function(){this.search("replaceAll");return this}};editormd.fn.init.prototype=editormd.fn;editormd.dialogLockScreen=function(){var settings=this.settings||{dialogLockScreen:true};if(settings.dialogLockScreen){$("html,body").css("overflow","hidden");this.resize()}};editormd.dialogShowMask=function(dialog){var editor=this.editor;var settings=this.settings||{dialogShowMask:true};dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"});if(settings.dialogShowMask){editor.children("."+this.classPrefix+"mask").css("z-index",parseInt(dialog.css("z-index"))-1).show()}};editormd.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("**"+selection+"**");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},del:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("~~"+selection+"~~");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},italic:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("*"+selection+"*");if(selection===""){cm.setCursor(cursor.line,cursor.ch+1)}},quote:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("> "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("> "+selection)}},ucfirst:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.firstUpperCase(selection));cm.setSelections(selections)},ucwords:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.wordsFirstUpperCase(selection));cm.setSelections(selections)},uppercase:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toUpperCase());cm.setSelections(selections)},lowercase:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toLowerCase());cm.setSelections(selections)},h1:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("# "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("# "+selection)}},h2:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("## "+selection);cm.setCursor(cursor.line,cursor.ch+3)}else{cm.replaceSelection("## "+selection)}},h3:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("### "+selection);cm.setCursor(cursor.line,cursor.ch+4)}else{cm.replaceSelection("### "+selection)}},h4:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("#### "+selection);cm.setCursor(cursor.line,cursor.ch+5)}else{cm.replaceSelection("#### "+selection)}},h5:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("##### "+selection);cm.setCursor(cursor.line,cursor.ch+6)}else{cm.replaceSelection("##### "+selection)}},h6:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("###### "+selection);cm.setCursor(cursor.line,cursor.ch+7)}else{cm.replaceSelection("###### "+selection)}},"list-ul":function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(selection===""){cm.replaceSelection("- "+selection)}else{var selectionText=selection.split("\n");for(var i=0,len=selectionText.length;i'}}else{var emdlogoMathcs=$1.match(editormdLogoReg);var twemojiMatchs=$1.match(twemojiReg);if(emdlogoMathcs){for(var x=0,len2=emdlogoMathcs.length;x'}}else if(twemojiMatchs){for(var t=0,len3=twemojiMatchs.length;t'}}else{var src=name==="+1"?"plus1":name;src=src==="black_large_square"?"black_square":src;src=src==="moon"?"waxing_gibbous_moon":src;return':'+name+':'}}})}return text};markedRenderer.atLink=function(text){if(atLinkReg.test(text)){if(settings.atLink){text=text.replace(emailReg,function($1,$2,$3,$4){return $1.replace(/@/g,"_#_@_#_")});text=text.replace(atLinkReg,function($1,$2){return''+$1+""}).replace(/_#_@_#_/g,"@")}if(settings.emailLink){text=text.replace(emailLinkReg,function($1,$2,$3,$4,$5){return!$2&&$.inArray($5,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+$1+"":$1})}return text}return text};markedRenderer.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0){return""}}var out=''+text.replace(/@/g,"@")+""}if(title){out+=' title="'+title+'"'}out+=">"+text+"";return out};markedRenderer.heading=function(text,level,raw){var linkText=text;var hasLinkReg=/\s*\]*)\>(.*)\<\/a\>\s*/;var getLinkTextReg=/\s*\]+)\>([^\>]*)\<\/a\>\s*/g;if(hasLinkReg.test(text)){var tempText=[];text=text.split(/\]+)\>([^\>]*)\<\/a\>/);for(var i=0,len=text.length;i';headingHTML+='';headingHTML+='';headingHTML+=hasLinkReg?this.atLink(this.emoji(linkText)):this.atLink(this.emoji(text));headingHTML+="";return headingHTML};markedRenderer.pageBreak=function(text){if(pageBreakReg.test(text)&&settings.pageBreak){text='
          '}return text};markedRenderer.paragraph=function(text){var isTeXInline=/\$\$(.*)\$\$/g.test(text);var isTeXLine=/^\$\$(.*)\$\$$/.test(text);var isTeXAddClass=isTeXLine?' class="'+editormd.classNames.tex+'"':"";var isToC=settings.tocm?/^(\[TOC\]|\[TOCM\])$/.test(text):/^\[TOC\]$/.test(text);var isToCMenu=/^\[TOCM\]$/.test(text);if(!isTeXLine&&isTeXInline){text=text.replace(/(\$\$([^\$]*)\$\$)+/g,function($1,$2){return''+$2.replace(/\$/g,"")+""})}else{text=isTeXLine?text.replace(/\$/g,""):text}var tocHTML='
          '+text+"
          ";return isToC?isToCMenu?'
          '+tocHTML+"

          ":tocHTML:pageBreakReg.test(text)?this.pageBreak(text):""+this.atLink(this.emoji(text))+"

          \n"};markedRenderer.code=function(code,lang,escaped){if(lang==="seq"||lang==="sequence"){return'
          '+code+"
          "}else if(lang==="flow"){return'
          '+code+"
          "}else if(lang==="math"||lang==="latex"||lang==="katex"){return'

          '+code+"

          "}else if(lang==="plantuml"&&settings.plantuml){const encoded=editormd.$plantumlEncoder.encode(code);return``}else{return marked.Renderer.prototype.code.apply(this,arguments)}};markedRenderer.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+this.atLink(this.emoji(content))+"\n"};markedRenderer.listitem=function(text){if(settings.taskList&&/^\s*\[[x\s]\]\s*/.test(text)){text=text.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' ');return'
        • '+this.atLink(this.emoji(text))+"
        • "}else{return"
        • "+this.atLink(this.emoji(text))+"
        • "}};return markedRenderer};editormd.markdownToCRenderer=function(toc,container,tocDropdown,startLevel){var html="";var lastLevel=0;var classPrefix=this.classPrefix;startLevel=startLevel||1;for(var i=0,len=toc.length;ilastLevel){html+=""}else if(level")}else{html+="
      • "}html+='
      • '+text+"
          ";lastLevel=level}var tocContainer=container.find(".markdown-toc");if(tocContainer.length<1&&container.attr("previewContainer")==="false"){var tocHTML='
          ';tocHTML=tocDropdown?'
          '+tocHTML+"
          ":tocHTML;container.html(tocHTML);tocContainer=container.find(".markdown-toc")}if(tocDropdown){tocContainer.wrap('

          ')}tocContainer.html('
            ').children(".markdown-toc-list").html(html.replace(/\r?\n?\\<\/ul\>/g,""));return tocContainer};editormd.tocDropdownMenu=function(container,tocTitle){tocTitle=tocTitle||"Table of Contents";var zindex=400;var tocMenus=container.find("."+this.classPrefix+"toc-menu");tocMenus.each(function(){var $this=$(this);var toc=$this.children(".markdown-toc");var icon='';var btn=''+icon+tocTitle+"";var menu=toc.children("ul");var list=menu.find("li");toc.append(btn);list.first().before("
          • "+tocTitle+" "+icon+"

          • ");$this.mouseover(function(){menu.show();list.each(function(){var li=$(this);var ul=li.children("ul");if(ul.html()===""){ul.remove()}if(ul.length>0&&ul.html()!==""){var firstA=li.children("a").first();if(firstA.children(".fa").length<1){firstA.append($(icon).css({float:"right",paddingTop:"4px"}))}}li.mouseover(function(){ul.css("z-index",zindex).show();zindex+=1}).mouseleave(function(){ul.hide()})})}).mouseleave(function(){menu.hide()})});return tocMenus};editormd.filterHTMLTags=function(html,filters){if(typeof html!=="string"){html=new String(html)}if(typeof filters!=="string"){return html}var expression=filters.split("|");var filterTags=expression[0].split(",");var attrs=expression[1];for(var i=0,len=filterTags.length;i]*)>([^>]*)","igm"),"")}if(typeof attrs!=="undefined"){html=html.replace(/(\w+)="([^"]*)"/g,(match,key,value)=>{const escapedValue=value.replace(//g,">");return`${key}="${escapedValue}"`});var htmlTagRegex=/\<(\w+)\s*([^\>]*)\>([^\>]*)\<\/(\w+)\>/gi;if(attrs==="*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){return"<"+$2+">"+$4+""})}else if(attrs==="on*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){var el=$("<"+$2+">"+$4+"");var _attrs=$($1)[0].attributes;var $attrs={};$.each(_attrs,function(i,e){if(e.nodeName!=='"')$attrs[e.nodeName]=e.nodeValue});$.each($attrs,function(i){if(i.indexOf("on")===0){delete $attrs[i]}});el.attr($attrs);var text=typeof el[1]!=="undefined"?$(el[1]).text():"";return el[0].outerHTML+text})}else{html=html.replace(htmlTagRegex,function($1,$2,$3,$4){var filterAttrs=attrs.split(",");var el=$($1);el.html($4);$.each(filterAttrs,function(i){el.attr(filterAttrs[i],null)});return el[0].outerHTML})}}return html};editormd.markdownToHTML=function(id,options){var defaults={gfm:true,toc:true,tocm:false,tocStartLevel:1,tocTitle:"目录",tocDropdown:false,tocContainer:"",markdown:"",markdownSourceCode:false,htmlDecode:false,autoLoadKaTeX:true,pageBreak:true,atLink:true,emailLink:true,tex:false,taskList:false,emoji:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true};editormd.$marked=marked;var div=$("#"+id);var settings=div.settings=$.extend(true,defaults,options||{});var saveTo=div.find("textarea");if(saveTo.length<1){div.append("");saveTo=div.find("textarea")}var markdownDoc=settings.markdown===""?saveTo.val():settings.markdown;var markdownToC=[];var rendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,pageBreak:settings.pageBreak,atLink:settings.atLink,emailLink:settings.emailLink,plantuml:settings.plantuml,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:settings.gfm,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};markdownDoc=new String(markdownDoc);var markdownParsed=marked(markdownDoc,markedOptions);markdownParsed=editormd.filterHTMLTags(markdownParsed,settings.htmlDecode);if(settings.markdownSourceCode){saveTo.text(markdownDoc)}else{saveTo.remove()}div.addClass("markdown-body "+this.classPrefix+"html-preview").append(markdownParsed);var tocContainer=settings.tocContainer!==""?$(settings.tocContainer):div;if(settings.tocContainer!==""){tocContainer.attr("previewContainer",false)}if(settings.toc){div.tocContainer=this.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||div.find("."+this.classPrefix+"toc-menu").length>0){this.tocDropdownMenu(div,settings.tocTitle)}if(settings.tocContainer!==""){div.find(".editormd-toc-menu, .editormd-markdown-toc").remove()}}if(settings.previewCodeHighlight){div.find("pre").addClass("prettyprint linenums");prettyPrint()}if(!editormd.isIE8){if(settings.flowChart){div.find(".flowchart").flowChart()}if(settings.sequenceDiagram){div.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}}if(settings.tex){var katexHandle=function(){div.find("."+editormd.classNames.tex).each(function(){var tex=$(this);katex.render(tex.html().replace(/</g,"<").replace(/>/g,">"),tex[0]);tex.find(".katex").css("font-size","1.6em")})};if(settings.autoLoadKaTeX&&!editormd.$katex&&!editormd.kaTeXLoaded){this.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;katexHandle()})}else{katexHandle()}}div.getMarkdown=function(){return saveTo.val()};return div};editormd.themes=["default","dark"];editormd.previewThemes=["default","dark"];editormd.editorThemes=["default","3024-day","3024-night","ambiance","ambiance-mobile","base16-dark","base16-light","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","mbo","mdn-like","midnight","monokai","neat","neo","night","paraiso-dark","paraiso-light","pastel-on-dark","rubyblue","solarized","the-matrix","tomorrow-night-eighties","twilight","vibrant-ink","xq-dark","xq-light"];editormd.loadPlugins={};editormd.loadFiles={js:[],css:[],plugin:[]};editormd.loadPlugin=function(fileName,callback,into){callback=callback||function(){};this.loadScript(fileName,function(){editormd.loadFiles.plugin.push(fileName);callback()},into)};editormd.loadCSS=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var css=document.createElement("link");css.type="text/css";css.rel="stylesheet";css.onload=css.onreadystatechange=function(){editormd.loadFiles.css.push(fileName);callback()};css.href=fileName+".css";if(into==="head"){document.getElementsByTagName("head")[0].appendChild(css)}else{document.body.appendChild(css)}};editormd.isIE=navigator.appName=="Microsoft Internet Explorer";editormd.isIE8=editormd.isIE&&navigator.appVersion.match(/8./i)=="8.";editormd.loadScript=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var script=null;script=document.createElement("script");script.id=fileName.replace(/[\./]+/g,"-");script.type="text/javascript";script.src=fileName+".js";if(editormd.isIE8){script.onreadystatechange=function(){if(script.readyState){if(script.readyState==="loaded"||script.readyState==="complete"){script.onreadystatechange=null;editormd.loadFiles.js.push(fileName);callback()}}}}else{script.onload=function(){editormd.loadFiles.js.push(fileName);callback()}}if(into==="head"){document.getElementsByTagName("head")[0].appendChild(script)}else{document.body.appendChild(script)}};editormd.katexURL={css:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min",js:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min"};editormd.kaTeXLoaded=false;editormd.loadKaTeX=function(callback){editormd.loadCSS(editormd.katexURL.css,function(){editormd.loadScript(editormd.katexURL.js,callback||function(){})})};editormd.lockScreen=function(lock){$("html,body").css("overflow",lock?"hidden":"")};editormd.createDialog=function(options){var defaults={name:"",width:420,height:240,title:"",drag:true,closed:true,content:"",mask:true,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:true,footer:true,buttons:false};options=$.extend(true,defaults,options);var $this=this;var editor=this.editor;var classPrefix=editormd.classPrefix;var guid=(new Date).getTime();var dialogName=options.name===""?classPrefix+"dialog-"+guid:options.name;var mouseOrTouch=editormd.mouseOrTouch;var html='
            ';if(options.title!==""){html+='
            ";html+=''+options.title+"";html+="
            "}if(options.closed){html+=''}html+='
            '+options.content;if(options.footer||typeof options.footer==="string"){html+='"}html+="
            ";html+='
            ';html+='
            ';html+="
            ";editor.append(html);var dialog=editor.find("."+dialogName);dialog.lockScreen=function(lock){if(options.lockScreen){$("html,body").css("overflow",lock?"hidden":"");$this.resize()}return dialog};dialog.showMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").css(options.maskStyle).css("z-index",editormd.dialogZindex-1).show()}return dialog};dialog.hideMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").hide()}return dialog};dialog.loading=function(show){var loading=dialog.find("."+classPrefix+"dialog-mask");loading[show?"show":"hide"]();return dialog};dialog.lockScreen(true).showMask();dialog.show().css({zIndex:editormd.dialogZindex,border:editormd.isIE8?"1px solid #ddd":"",width:typeof options.width==="number"?options.width+"px":options.width,height:typeof options.height==="number"?options.height+"px":options.height});var dialogPosition=function(){dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"})};dialogPosition();$(window).resize(dialogPosition);dialog.children("."+classPrefix+"dialog-close").bind(mouseOrTouch("click","touchend"),function(){dialog.hide().lockScreen(false).hideMask()});if(typeof options.buttons==="object"){var footer=dialog.footer=dialog.find("."+classPrefix+"dialog-footer");for(var key in options.buttons){var btn=options.buttons[key];var btnClassName=classPrefix+key+"-btn";footer.append('");btn[1]=$.proxy(btn[1],dialog);footer.children("."+btnClassName).bind(mouseOrTouch("click","touchend"),btn[1])}}if(options.title!==""&&options.drag){var posX,posY;var dialogHeader=dialog.children("."+classPrefix+"dialog-header");if(!options.mask){dialogHeader.bind(mouseOrTouch("click","touchend"),function(){editormd.dialogZindex+=2;dialog.css("z-index",editormd.dialogZindex)})}dialogHeader.mousedown(function(e){e=e||window.event;posX=e.clientX-parseInt(dialog[0].style.left);posY=e.clientY-parseInt(dialog[0].style.top);document.onmousemove=moveAction});var userCanSelect=function(obj){obj.removeClass(classPrefix+"user-unselect").off("selectstart")};var userUnselect=function(obj){obj.addClass(classPrefix+"user-unselect").on("selectstart",function(event){return false})};var moveAction=function(e){e=e||window.event;var left,top,nowLeft=parseInt(dialog[0].style.left),nowTop=parseInt(dialog[0].style.top);if(nowLeft>=0){if(nowLeft+dialog.width()<=$(window).width()){left=e.clientX-posX}else{left=$(window).width()-dialog.width();document.onmousemove=null}}else{left=0;document.onmousemove=null}if(nowTop>=0){top=e.clientY-posY}else{top=0;document.onmousemove=null}document.onselectstart=function(){return false};userUnselect($("body"));userUnselect(dialog);dialog[0].style.left=left+"px";dialog[0].style.top=top+"px"};document.onmouseup=function(){userCanSelect($("body"));userCanSelect(dialog);document.onselectstart=null;document.onmousemove=null};dialogHeader.touchDraggable=function(){var offset=null;var start=function(e){var orig=e.originalEvent;var pos=$(this).parent().position();offset={x:orig.changedTouches[0].pageX-pos.left,y:orig.changedTouches[0].pageY-pos.top}};var move=function(e){e.preventDefault();var orig=e.originalEvent;$(this).parent().css({top:orig.changedTouches[0].pageY-offset.y,left:orig.changedTouches[0].pageX-offset.x})};this.bind("touchstart",start).bind("touchmove",move)};dialogHeader.touchDraggable()}editormd.dialogZindex+=2;return dialog};editormd.mouseOrTouch=function(mouseEventType,touchEventType){mouseEventType=mouseEventType||"click";touchEventType=touchEventType||"touchend";var eventType=mouseEventType;try{document.createEvent("TouchEvent");eventType=touchEventType}catch(e){}return eventType};editormd.dateFormat=function(format){format=format||"";var addZero=function(d){return d<10?"0"+d:d};var date=new Date;var year=date.getFullYear();var year2=year.toString().slice(2,4);var month=addZero(date.getMonth()+1);var day=addZero(date.getDate());var weekDay=date.getDay();var hour=addZero(date.getHours());var min=addZero(date.getMinutes());var second=addZero(date.getSeconds());var ms=addZero(date.getMilliseconds());var datefmt="";var ymd=year2+"-"+month+"-"+day;var fymd=year+"-"+month+"-"+day;var hms=hour+":"+min+":"+second;switch(format){case"UNIX Time":datefmt=date.getTime();break;case"UTC":datefmt=date.toUTCString();break;case"yy":datefmt=year2;break;case"year":case"yyyy":datefmt=year;break;case"month":case"mm":datefmt=month;break;case"cn-week-day":case"cn-wd":var cnWeekDays=["日","一","二","三","四","五","六"];datefmt="星期"+cnWeekDays[weekDay];break;case"week-day":case"wd":var weekDays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];datefmt=weekDays[weekDay];break;case"day":case"dd":datefmt=day;break;case"hour":case"hh":datefmt=hour;break;case"min":case"ii":datefmt=min;break;case"second":case"ss":datefmt=second;break;case"ms":datefmt=ms;break;case"yy-mm-dd":datefmt=ymd;break;case"yyyy-mm-dd":datefmt=fymd;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":datefmt=fymd+" "+hms+" "+ms;break;case"full":case"yyyy-mm-dd h:i:s":default:datefmt=fymd+" "+hms;break}return datefmt};return editormd}); \ No newline at end of file diff --git a/public/static/editor.md/editormd.js b/public/static/editor.md/editormd.js index 55cab2f..68a009a 100644 --- a/public/static/editor.md/editormd.js +++ b/public/static/editor.md/editormd.js @@ -561,6 +561,12 @@ return ; } + if (settings.plantuml) { + editormd.loadScript(loadPath + "plantuml-encoder.min", function() { + editormd.$plantumlEncoder = plantumlEncoder; + }); + } + if (settings.flowChart || settings.sequenceDiagram) { editormd.loadScript(loadPath + "raphael.min", function() { @@ -2052,6 +2058,7 @@ tex : settings.tex, atLink : settings.atLink, // for @link emailLink : settings.emailLink, // for mail address auto link + plantuml : settings.plantuml, flowChart : settings.flowChart, sequenceDiagram : settings.sequenceDiagram, previewCodeHighlight : settings.previewCodeHighlight, @@ -3449,6 +3456,7 @@ taskList : false, // Enable Github Flavored Markdown task lists emoji : false, // :emoji: , Support Twemoji, fontAwesome, Editor.md logo emojis. tex : false, // TeX(LaTeX), based on KaTeX + plantuml : false, flowChart : false, // flowChart.js only support IE9+ sequenceDiagram : false, // sequenceDiagram.js only support IE9+ }; @@ -3687,7 +3695,11 @@ else if ( lang === "math" || lang === "latex" || lang === "katex") { return "

            " + code + "

            "; - } + } + else if ( lang === "plantuml" && settings.plantuml ) { + const encoded = editormd.$plantumlEncoder.encode(code); + return ``; + } else { @@ -4003,6 +4015,7 @@ pageBreak : settings.pageBreak, atLink : settings.atLink, // for @link emailLink : settings.emailLink, // for mail address auto link + plantuml : settings.plantuml, flowChart : settings.flowChart, sequenceDiagram : settings.sequenceDiagram, previewCodeHighlight : settings.previewCodeHighlight, diff --git a/public/static/editor.md/editormd.min.js b/public/static/editor.md/editormd.min.js index c8af221..f95505a 100644 --- a/public/static/editor.md/editormd.min.js +++ b/public/static/editor.md/editormd.min.js @@ -1,2 +1,2 @@ /*! Editor.md v1.5.0 | editormd.min.js | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-06-09 */ -(function(factory){"use strict";if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else if(typeof define==="function"){if(define.amd){}else{define(["jquery"],factory)}}else{window.editormd=factory()}})(function(){"use strict";var $=typeof jQuery!=="undefined"?jQuery:Zepto;if(typeof $==="undefined"){return}var editormd=function(id,options){return new editormd.fn.init(id,options)};editormd.title=editormd.$name="Editor.md";editormd.version="1.5.0";editormd.homePage="https://pandao.github.io/editor.md/";editormd.classPrefix="editormd-";editormd.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime","emoji","html-entities","pagebreak","|","goto-line","watch","preview","fullscreen","clear","search","|","help","info"],simple:["undo","redo","|","bold","del","italic","quote","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","watch","preview","fullscreen","|","help","info"],mini:["undo","redo","|","watch","preview","|","help","info"]};editormd.defaults={mode:"gfm",name:"",value:"",theme:"",editorTheme:"default",previewTheme:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:true,watch:true,placeholder:"Enjoy Markdown! coding now...",gotoLine:true,codeFold:false,autoHeight:false,autoFocus:true,autoCloseTags:true,searchReplace:true,syncScrolling:true,readOnly:false,tabSize:4,indentUnit:4,lineNumbers:true,lineWrapping:true,autoCloseBrackets:true,showTrailingSpace:true,matchBrackets:true,indentWithTabs:true,styleSelectedText:true,matchWordHighlight:true,styleActiveLine:true,dialogLockScreen:true,dialogShowMask:true,dialogDraggable:true,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:false,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:false,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:false,uploadCallbackURL:"",toc:true,tocm:false,tocTitle:"",tocDropdown:false,tocContainer:"",tocStartLevel:1,htmlDecode:false,pageBreak:true,atLink:true,emailLink:true,taskList:false,emoji:false,tex:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true,toolbar:true,toolbarAutoFixed:true,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return editormd.toolbarHandlers.ucwords},lowercase:function(){return editormd.toolbarHandlers.lowercase}},toolbarCustomIcons:{lowercase:'a',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:editormd.classPrefix+"bold",h2:editormd.classPrefix+"bold",h3:editormd.classPrefix+"bold",h4:editormd.classPrefix+"bold",h5:editormd.classPrefix+"bold",h6:editormd.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},toolbarNoFocus:["link","reference-link","image","code-block","preformatted-text","watch","preview","search","fullscreen","info"],lang:{name:"zh-cn",description:"开源在线Markdown编辑器
            Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+editormd.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}};editormd.classNames={tex:editormd.classPrefix+"tex"};editormd.dialogZindex=99999;editormd.$katex=null;editormd.$marked=null;editormd.$CodeMirror=null;editormd.$prettyPrint=null;var timer,flowchartTimer;editormd.prototype=editormd.fn={state:{watching:false,loaded:false,preview:false,fullscreen:false},init:function(id,options){options=options||{};if(typeof id==="object"){options=id}var _this=this;var classPrefix=this.classPrefix=editormd.classPrefix;var settings=this.settings=$.extend(true,{},editormd.defaults,options);if(settings.appendToolbar&&typeof settings.toolbarIcons==="string"&&settings.toolbarIcons in editormd.toolbarModes){settings.appendToolbar.forEach(toolbar=>{if(!("name"in toolbar)){return}if(toolbar.name==="|"){editormd.toolbarModes[settings.toolbarIcons].push("|");return}if(!editormd.toolbarModes[settings.toolbarIcons].includes(toolbar.name)){editormd.toolbarModes[settings.toolbarIcons].push(toolbar.name)}if("icon"in toolbar){settings.toolbarIconsClass[toolbar.name]=toolbar.icon}if("title"in toolbar){settings.lang.toolbar[toolbar.name]=toolbar.title}if("handler"in toolbar){editormd.toolbarHandlers[toolbar.name]=toolbar.handler;if("shortcut"in toolbar){toolbar.shortcut.forEach(key=>editormd.keyMaps[key]=toolbar.handler)}}if("nofocus"in toolbar&&toolbar.nofocus===true){if(!settings.toolbarNoFocus.includes[toolbar.name]){settings.toolbarNoFocus.push(toolbar.name)}}})}if(settings.shortcutFunction){for(const key in settings.shortcutFunction){editormd.keyMaps[key]=settings.shortcutFunction[key]}}id=typeof id==="object"?settings.id:id;var editor=this.editor=$("#"+id);this.id=id;this.lang=settings.lang;var classNames=this.classNames={textarea:{html:classPrefix+"html-textarea",markdown:classPrefix+"markdown-textarea"}};settings.pluginPath=settings.pluginPath===""?settings.path+"../plugins/":settings.pluginPath;this.state.watching=settings.watch?true:false;if(!editor.hasClass("editormd")){editor.addClass("editormd")}editor.css({width:typeof settings.width==="number"?settings.width+"px":settings.width,height:typeof settings.height==="number"?settings.height+"px":settings.height});if(settings.autoHeight){editor.css("height","auto")}var markdownTextarea=this.markdownTextarea=editor.children("textarea");if(markdownTextarea.length<1){editor.append("");markdownTextarea=this.markdownTextarea=editor.children("textarea")}markdownTextarea.addClass(classNames.textarea.markdown).attr("placeholder",settings.placeholder);if(typeof markdownTextarea.attr("name")==="undefined"||markdownTextarea.attr("name")===""){markdownTextarea.attr("name",settings.name!==""?settings.name:id+"-markdown-doc")}var appendElements=[!settings.readOnly?'':"",settings.saveHTMLToTextarea?'':"",'
            ','
            ','
            '].join("\n");editor.append(appendElements).addClass(classPrefix+"vertical");if(settings.theme!==""){editor.addClass(classPrefix+"theme-"+settings.theme)}this.mask=editor.children("."+classPrefix+"mask");this.containerMask=editor.children("."+classPrefix+"container-mask");if(settings.markdown!==""){markdownTextarea.val(settings.markdown)}if(settings.appendMarkdown!==""){markdownTextarea.val(markdownTextarea.val()+settings.appendMarkdown)}this.htmlTextarea=editor.children("."+classNames.textarea.html);this.preview=editor.children("."+classPrefix+"preview");this.previewContainer=this.preview.children("."+classPrefix+"preview-container");if(settings.previewTheme!==""){this.preview.addClass(classPrefix+"preview-theme-"+settings.previewTheme)}if(typeof define==="function"&&define.amd){if(typeof katex!=="undefined"){editormd.$katex=katex}if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(settings.path+"codemirror/addon/dialog/dialog");editormd.loadCSS(settings.path+"codemirror/addon/search/matchesonscrollbar")}}if(typeof define==="function"&&define.amd||!settings.autoLoadModules){if(typeof CodeMirror!=="undefined"){editormd.$CodeMirror=CodeMirror}if(typeof marked!=="undefined"){editormd.$marked=marked}this.setCodeMirror().setToolbar().loadedDisplay()}else{this.loadQueues()}return this},loadQueues:function(){var _this=this;var settings=this.settings;var loadPath=settings.path;var loadFlowChartOrSequenceDiagram=function(){if(editormd.isIE8){_this.loadedDisplay();return}if(settings.flowChart||settings.sequenceDiagram){editormd.loadScript(loadPath+"raphael.min",function(){editormd.loadScript(loadPath+"underscore.min",function(){if(!settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})}else if(settings.flowChart&&!settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){_this.loadedDisplay()})})}else if(settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})})})}})})}else{_this.loadedDisplay()}};editormd.loadCSS(loadPath+"codemirror/codemirror.min");if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(loadPath+"codemirror/addon/dialog/dialog");editormd.loadCSS(loadPath+"codemirror/addon/search/matchesonscrollbar")}if(settings.codeFold){editormd.loadCSS(loadPath+"codemirror/addon/fold/foldgutter")}editormd.loadScript(loadPath+"codemirror/codemirror.min",function(){editormd.$CodeMirror=CodeMirror;editormd.loadScript(loadPath+"codemirror/modes.min",function(){editormd.loadScript(loadPath+"codemirror/addons.min",function(){_this.setCodeMirror();if(settings.mode!=="gfm"&&settings.mode!=="markdown"){_this.loadedDisplay();return false}_this.setToolbar();editormd.loadScript(loadPath+"marked.min",function(){editormd.$marked=marked;if(settings.previewCodeHighlight){editormd.loadScript(loadPath+"prettify.min",function(){loadFlowChartOrSequenceDiagram()})}else{loadFlowChartOrSequenceDiagram()}})})})});return this},setTheme:function(theme){var editor=this.editor;var oldTheme=this.settings.theme;var themePrefix=this.classPrefix+"theme-";editor.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.theme=theme;return this},setEditorTheme:function(theme){var settings=this.settings;settings.editorTheme=theme;if(theme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}this.cm.setOption("theme",theme);return this},setCodeMirrorTheme:function(theme){this.setEditorTheme(theme);return this},setPreviewTheme:function(theme){var preview=this.preview;var oldTheme=this.settings.previewTheme;var themePrefix=this.classPrefix+"preview-theme-";preview.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.previewTheme=theme;return this},setCodeMirror:function(){var settings=this.settings;var editor=this.editor;if(settings.editorTheme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}var codeMirrorConfig={mode:settings.mode,theme:settings.editorTheme,tabSize:settings.tabSize,dragDrop:false,autofocus:settings.autoFocus,autoCloseTags:settings.autoCloseTags,readOnly:settings.readOnly?"nocursor":false,indentUnit:settings.indentUnit,lineNumbers:settings.lineNumbers,lineWrapping:settings.lineWrapping,extraKeys:{"Ctrl-Q":function(cm){cm.foldCode(cm.getCursor())}},foldGutter:settings.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:settings.matchBrackets,indentWithTabs:settings.indentWithTabs,styleActiveLine:settings.styleActiveLine,styleSelectedText:settings.styleSelectedText,autoCloseBrackets:settings.autoCloseBrackets,showTrailingSpace:settings.showTrailingSpace,highlightSelectionMatches:!settings.matchWordHighlight?false:{showToken:settings.matchWordHighlight==="onselected"?false:/\w/}};this.codeEditor=this.cm=editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0],codeMirrorConfig);this.codeMirror=this.cmElement=editor.children(".CodeMirror");if(settings.value!==""){this.cm.setValue(settings.value)}this.codeMirror.css({fontSize:settings.fontSize,width:!settings.watch?"100%":"50%"});if(settings.autoHeight){this.codeMirror.css("height","auto");this.cm.setOption("viewportMargin",Infinity)}if(!settings.lineNumbers){this.codeMirror.find(".CodeMirror-gutters").css("border-right","none")}return this},getCodeMirrorOption:function(key){return this.cm.getOption(key)},setCodeMirrorOption:function(key,value){this.cm.setOption(key,value);return this},addKeyMap:function(map,bottom){this.cm.addKeyMap(map,bottom);return this},removeKeyMap:function(map){this.cm.removeKeyMap(map);return this},gotoLine:function(line){var settings=this.settings;if(!settings.gotoLine){return this}var cm=this.cm;var editor=this.editor;var count=cm.lineCount();var preview=this.preview;if(typeof line==="string"){if(line==="last"){line=count}if(line==="first"){line=1}}if(typeof line!=="number"){alert("Error: The line number must be an integer.");return this}line=parseInt(line)-1;if(line>count){alert("Error: The line number range 1-"+count);return this}cm.setCursor({line:line,ch:0});var scrollInfo=cm.getScrollInfo();var clientHeight=scrollInfo.clientHeight;var coords=cm.charCoords({line:line,ch:0},"local");cm.scrollTo(null,(coords.top+coords.bottom-clientHeight)/2);if(settings.watch){var cmScroll=this.codeMirror.find(".CodeMirror-scroll")[0];var height=$(cmScroll).height();var scrollTop=cmScroll.scrollTop;var percent=scrollTop/cmScroll.scrollHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=cmScroll.scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop(preview[0].scrollHeight*percent)}}cm.focus();return this},extend:function(){if(typeof arguments[1]!=="undefined"){if(typeof arguments[1]==="function"){arguments[1]=$.proxy(arguments[1],this)}this[arguments[0]]=arguments[1]}if(typeof arguments[0]==="object"&&typeof arguments[0].length==="undefined"){$.extend(true,this,arguments[0])}return this},set:function(key,value){if(typeof value!=="undefined"&&typeof value==="function"){value=$.proxy(value,this)}this[key]=value;return this},config:function(key,value){var settings=this.settings;if(typeof key==="object"){settings=$.extend(true,settings,key)}if(typeof key==="string"){settings[key]=value}this.settings=settings;this.recreate();return this},on:function(eventType,callback){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=$.proxy(callback,this)}return this},off:function(eventType){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=function(){}}return this},showToolbar:function(callback){var settings=this.settings;if(settings.readOnly){return this}if(settings.toolbar&&(this.toolbar.length<1||this.toolbar.find("."+this.classPrefix+"menu").html()==="")){this.setToolbar()}settings.toolbar=true;this.toolbar.show();this.resize();$.proxy(callback||function(){},this)();return this},hideToolbar:function(callback){var settings=this.settings;settings.toolbar=false;this.toolbar.hide();this.resize();$.proxy(callback||function(){},this)();return this},setToolbarAutoFixed:function(fixed){var state=this.state;var editor=this.editor;var toolbar=this.toolbar;var settings=this.settings;if(typeof fixed!=="undefined"){settings.toolbarAutoFixed=fixed}var autoFixedHandle=function(){var $window=$(window);var top=$window.scrollTop();if(!settings.toolbarAutoFixed){return false}if(top-editor.offset().top>10&&top
              ';editor.append(toolbarHTML);toolbar=this.toolbar=editor.children("."+classPrefix+"toolbar")}if(!settings.toolbar){toolbar.hide();return this}toolbar.show();var icons=typeof settings.toolbarIcons==="function"?settings.toolbarIcons():typeof settings.toolbarIcons==="string"?editormd.toolbarModes[settings.toolbarIcons]:settings.toolbarIcons;var toolbarMenu=toolbar.find("."+this.classPrefix+"menu"),menu="";var pullRight=false;for(var i=0,len=icons.length;i|'}else{var isHeader=/h(\d)/.test(name);var index=name;if(name==="watch"&&!settings.watch){index="unwatch"}var title=settings.lang.toolbar[index];var iconTexts=settings.toolbarIconTexts[index];var iconClass=settings.toolbarIconsClass[index];title=typeof title==="undefined"?"":title;iconTexts=typeof iconTexts==="undefined"?"":iconTexts;iconClass=typeof iconClass==="undefined"?"":iconClass;var menuItem=pullRight?'
            • ':"
            • ";if(typeof settings.toolbarCustomIcons[name]!=="undefined"&&typeof settings.toolbarCustomIcons[name]!=="function"){menuItem+=settings.toolbarCustomIcons[name]}else{menuItem+='';menuItem+=''+(isHeader?name.toUpperCase():iconClass===""?iconTexts:"")+"";menuItem+=""}menuItem+="
            • ";menu=pullRight?menuItem+menu:menu+menuItem}}toolbarMenu.html(menu);toolbarMenu.find('[title="Lowercase"]').attr("title",settings.lang.toolbar.lowercase);toolbarMenu.find('[title="ucwords"]').attr("title",settings.lang.toolbar.ucwords);this.setToolbarHandler();this.setToolbarAutoFixed();return this},dialogLockScreen:function(){$.proxy(editormd.dialogLockScreen,this)();return this},dialogShowMask:function(dialog){$.proxy(editormd.dialogShowMask,this)(dialog);return this},getToolbarHandles:function(name){var toolbarHandlers=this.toolbarHandlers=editormd.toolbarHandlers;return name&&typeof toolbarIconHandlers[name]!=="undefined"?toolbarHandlers[name]:toolbarHandlers},setToolbarHandler:function(){var _this=this;var settings=this.settings;if(!settings.toolbar||settings.readOnly){return this}var toolbar=this.toolbar;var cm=this.cm;var classPrefix=this.classPrefix;var toolbarIcons=this.toolbarIcons=toolbar.find("."+classPrefix+"menu > li > a");var toolbarIconHandlers=this.getToolbarHandles();toolbarIcons.bind(editormd.mouseOrTouch("click","touchend"),function(event){var icon=$(this).children(".fa");var name=icon.attr("name");var cursor=cm.getCursor();var selection=cm.getSelection();if(name===""){return}_this.activeIcon=icon;if(typeof toolbarIconHandlers[name]!=="undefined"){$.proxy(toolbarIconHandlers[name],_this)(cm)}else{if(typeof settings.toolbarHandlers[name]!=="undefined"){$.proxy(settings.toolbarHandlers[name],_this)(cm,icon,cursor,selection)}else{alert("This feature is not yet implemented.")}}if(!settings.toolbarNoFocus.includes(name)){cm.focus()}return false});return this},createDialog:function(options){return $.proxy(editormd.createDialog,this)(options)},createInfoDialog:function(){var _this=this;var editor=this.editor;var classPrefix=this.classPrefix;var infoDialogHTML=['
              ','
              ','

              '+editormd.title+"v"+editormd.version+"

              ","

              "+this.lang.description+"

              ",'

              '+editormd.homePage+'

              ','

              Copyright © 2015 Pandao, The MIT License.

              ',"
              ",'',"
              "].join("\n");editor.append(infoDialogHTML);var infoDialog=this.infoDialog=editor.children("."+classPrefix+"dialog-info");infoDialog.find("."+classPrefix+"dialog-close").bind(editormd.mouseOrTouch("click","touchend"),function(){_this.hideInfoDialog()});infoDialog.css("border",editormd.isIE8?"1px solid #ddd":"").css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},infoDialogPosition:function(){var infoDialog=this.infoDialog;var _infoDialogPosition=function(){infoDialog.css({top:($(window).height()-infoDialog.height())/2+"px",left:($(window).width()-infoDialog.width())/2+"px"})};_infoDialogPosition();$(window).resize(_infoDialogPosition);return this},showInfoDialog:function(){$("html,body").css("overflow-x","hidden");var _this=this;var editor=this.editor;var settings=this.settings;var infoDialog=this.infoDialog=editor.children("."+this.classPrefix+"dialog-info");if(infoDialog.length<1){this.createInfoDialog()}this.lockScreen(true);this.mask.css({opacity:settings.dialogMaskOpacity,backgroundColor:settings.dialogMaskBgColor}).show();infoDialog.css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},hideInfoDialog:function(){$("html,body").css("overflow-x","");this.infoDialog.hide();this.mask.hide();this.lockScreen(false);return this},lockScreen:function(lock){editormd.lockScreen(lock);this.resize();return this},recreate:function(){var _this=this;var editor=this.editor;var settings=this.settings;this.codeMirror.remove();this.setCodeMirror();if(!settings.readOnly){if(editor.find(".editormd-dialog").length>0){editor.find(".editormd-dialog").remove()}if(settings.toolbar){this.getToolbarHandles();this.setToolbar()}}this.loadedDisplay(true);return this},previewCodeHighlight:function(){var settings=this.settings;var previewContainer=this.previewContainer;if(settings.previewCodeHighlight){previewContainer.find("pre").addClass("prettyprint linenums");if(typeof prettyPrint!=="undefined"){prettyPrint()}}return this},katexRender:function(){if(timer===null){return this}this.previewContainer.find("."+editormd.classNames.tex).each(function(){var tex=$(this);editormd.$katex.render(tex.text(),tex[0]);tex.find(".katex").css("font-size","1.6em")});return this},flowChartAndSequenceDiagramRender:function(){var $this=this;var settings=this.settings;var previewContainer=this.previewContainer;if(editormd.isIE8){return this}if(settings.flowChart){if(flowchartTimer===null){return this}previewContainer.find(".flowchart").flowChart()}if(settings.sequenceDiagram){previewContainer.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}var preview=$this.preview;var codeMirror=$this.codeMirror;var codeView=codeMirror.find(".CodeMirror-scroll");var height=codeView.height();var scrollTop=codeView.scrollTop();var percent=scrollTop/codeView[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=codeView[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}return this},registerKeyMaps:function(keyMap){var _this=this;var cm=this.cm;var settings=this.settings;var toolbarHandlers=editormd.toolbarHandlers;var disabledKeyMaps=settings.disabledKeyMaps;keyMap=keyMap||null;if(keyMap){for(var i in keyMap){if($.inArray(i,disabledKeyMaps)<0){var map={};map[i]=keyMap[i];cm.addKeyMap(keyMap)}}}else{for(var k in editormd.keyMaps){var _keyMap=editormd.keyMaps[k];var handle=typeof _keyMap==="string"?$.proxy(toolbarHandlers[_keyMap],_this):$.proxy(_keyMap,_this);if($.inArray(k,["F9","F10","F11"])<0&&$.inArray(k,disabledKeyMaps)<0){var _map={};_map[k]=handle;cm.addKeyMap(_map)}}$(window).keydown(function(event){var keymaps={120:"F9",121:"F10",122:"F11"};if($.inArray(keymaps[event.keyCode],disabledKeyMaps)<0){switch(event.keyCode){case 120:$.proxy(toolbarHandlers["watch"],_this)();return false;break;case 121:$.proxy(toolbarHandlers["preview"],_this)();return false;break;case 122:$.proxy(toolbarHandlers["fullscreen"],_this)();return false;break;default:break}}})}return this},bindScrollEvent:function(){var _this=this;var preview=this.preview;var settings=this.settings;var codeMirror=this.codeMirror;var mouseOrTouch=editormd.mouseOrTouch;if(!settings.syncScrolling){return this}var cmBindScroll=function(){codeMirror.find(".CodeMirror-scroll").bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}$.proxy(settings.onscroll,_this)(event)})};var cmUnbindScroll=function(){codeMirror.find(".CodeMirror-scroll").unbind(mouseOrTouch("scroll","touchmove"))};var previewBindScroll=function(){preview.bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var codeView=codeMirror.find(".CodeMirror-scroll");if(scrollTop===0){codeView.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight){codeView.scrollTop(codeView[0].scrollHeight)}else{codeView.scrollTop(codeView[0].scrollHeight*percent)}$.proxy(settings.onpreviewscroll,_this)(event)})};var previewUnbindScroll=function(){preview.unbind(mouseOrTouch("scroll","touchmove"))};codeMirror.bind({mouseover:cmBindScroll,mouseout:cmUnbindScroll,touchstart:cmBindScroll,touchend:cmUnbindScroll});if(settings.syncScrolling==="single"){return this}preview.bind({mouseover:previewBindScroll,mouseout:previewUnbindScroll,touchstart:previewBindScroll,touchend:previewUnbindScroll});return this},bindChangeEvent:function(){var _this=this;var cm=this.cm;var settings=this.settings;if(!settings.syncScrolling){return this}cm.on("change",function(_cm,changeObj){if(settings.watch){_this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px")}timer=setTimeout(function(){clearTimeout(timer);_this.save();timer=null},settings.delay)});return this},loadedDisplay:function(recreate){recreate=recreate||false;var _this=this;var editor=this.editor;var preview=this.preview;var settings=this.settings;this.containerMask.hide();this.save();if(settings.watch){preview.show()}editor.data("oldWidth",editor.width()).data("oldHeight",editor.height());this.resize();this.registerKeyMaps();$(window).resize(function(){_this.resize()});this.bindScrollEvent().bindChangeEvent();if(!recreate){$.proxy(settings.onload,this)()}this.state.loaded=true;return this},width:function(width){this.editor.css("width",typeof width==="number"?width+"px":width);this.resize();return this},height:function(height){this.editor.css("height",typeof height==="number"?height+"px":height);this.resize();return this},resize:function(width,height){width=width||null;height=height||null;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;if(width){editor.css("width",typeof width==="number"?width+"px":width)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){editor.css("height","auto");codeMirror.css("height","auto")}else{if(height){editor.css("height",typeof height==="number"?height+"px":height)}if(state.fullscreen){editor.height($(window).height())}if(settings.toolbar&&!settings.readOnly){codeMirror.css("margin-top",toolbar.height()+1).height(editor.height()-toolbar.height())}else{codeMirror.css("margin-top",0).height(editor.height())}}if(settings.watch){codeMirror.width(editor.width()/2);preview.width(!state.preview?editor.width()/2:editor.width());this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px");if(settings.toolbar&&!settings.readOnly){preview.css("top",toolbar.height()+1)}else{preview.css("top",0)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){preview.height("")}else{var previewHeight=settings.toolbar&&!settings.readOnly?editor.height()-toolbar.height():editor.height();preview.height(previewHeight)}}else{codeMirror.width(editor.width());preview.hide()}if(state.loaded){$.proxy(settings.onresize,this)()}return this},save:function(){var _this=this;var state=this.state;var settings=this.settings;if(timer===null&&!(!settings.watch&&state.preview)){return this}var cm=this.cm;var cmValue=cm.getValue();var previewContainer=this.previewContainer;if(settings.mode!=="gfm"&&settings.mode!=="markdown"){this.markdownTextarea.val(cmValue);return this}var marked=editormd.$marked;var markdownToC=this.markdownToC=[];var rendererOptions=this.markedRendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,pageBreak:settings.pageBreak,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,atLink:settings.atLink,emailLink:settings.emailLink,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions=this.markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:true,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};marked.setOptions(markedOptions);var newMarkdownDoc=editormd.$marked(cmValue,markedOptions);newMarkdownDoc=editormd.filterHTMLTags(newMarkdownDoc,settings.htmlDecode);this.markdownTextarea.text(cmValue);cm.save();if(settings.saveHTMLToTextarea){this.htmlTextarea.text(newMarkdownDoc)}if(settings.watch||!settings.watch&&state.preview){previewContainer.html(newMarkdownDoc);this.previewCodeHighlight();if(settings.toc){var tocContainer=settings.tocContainer===""?previewContainer:$(settings.tocContainer);var tocMenu=tocContainer.find("."+this.classPrefix+"toc-menu");tocContainer.attr("previewContainer",settings.tocContainer===""?"true":"false");if(settings.tocContainer!==""&&tocMenu.length>0){tocMenu.remove()}editormd.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||tocContainer.find("."+this.classPrefix+"toc-menu").length>0){editormd.tocDropdownMenu(tocContainer,settings.tocTitle!==""?settings.tocTitle:this.lang.tocTitle)}if(settings.tocContainer!==""){previewContainer.find(".markdown-toc").css("border","none")}}if(settings.tex){if(!editormd.kaTeXLoaded&&settings.autoLoadModules){editormd.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;_this.katexRender()})}else{editormd.$katex=katex;this.katexRender()}}if(settings.flowChart||settings.sequenceDiagram){flowchartTimer=setTimeout(function(){clearTimeout(flowchartTimer);_this.flowChartAndSequenceDiagramRender();flowchartTimer=null},10)}if(state.loaded){$.proxy(settings.onchange,this)()}}return this},focus:function(){this.cm.focus();return this},setCursor:function(cursor){this.cm.setCursor(cursor);return this},getCursor:function(){return this.cm.getCursor()},setSelection:function(from,to){this.cm.setSelection(from,to);return this},getSelection:function(){return this.cm.getSelection()},setSelections:function(ranges){this.cm.setSelections(ranges);return this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(value){this.cm.replaceSelection(value);return this},insertValue:function(value){this.replaceSelection(value);return this},appendMarkdown:function(md){var settings=this.settings;var cm=this.cm;cm.setValue(cm.getValue()+md);return this},setMarkdown:function(md){this.cm.setValue(md||this.settings.markdown);return this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(value){this.cm.setValue(value);return this},clear:function(){this.cm.setValue("");return this},getHTML:function(){if(!this.settings.saveHTMLToTextarea){alert("Error: settings.saveHTMLToTextarea == false");return false}return this.htmlTextarea.val()},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){if(!this.settings.watch){alert("Error: settings.watch == false");return false}return this.previewContainer.html()},watch:function(callback){var settings=this.settings;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}this.state.watching=settings.watch=true;this.preview.show();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.watch);icon.removeClass(unWatchIcon).addClass(watchIcon)}this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2);timer=0;this.save().resize();if(!settings.onwatch){settings.onwatch=callback||function(){}}$.proxy(settings.onwatch,this)();return this},unwatch:function(callback){var settings=this.settings;this.state.watching=settings.watch=false;this.preview.hide();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.unwatch);icon.removeClass(watchIcon).addClass(unWatchIcon)}this.codeMirror.css("border-right","none").width(this.editor.width());this.resize();if(!settings.onunwatch){settings.onunwatch=callback||function(){}}$.proxy(settings.onunwatch,this)();return this},show:function(callback){callback=callback||function(){};var _this=this;this.editor.show(0,function(){$.proxy(callback,_this)()});return this},hide:function(callback){callback=callback||function(){};var _this=this;this.editor.hide(0,function(){$.proxy(callback,_this)()});return this},previewing:function(){var _this=this;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;var previewContainer=this.previewContainer;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}if(settings.toolbar&&toolbar){toolbar.toggle();toolbar.find(".fa[name=preview]").toggleClass("active")}codeMirror.toggle();var escHandle=function(event){if(event.shiftKey&&event.keyCode===27){_this.previewed()}};if(codeMirror.css("display")==="none"){this.state.preview=true;if(this.state.fullscreen){preview.css("background","#fff")}editor.find("."+this.classPrefix+"preview-close-btn").show().bind(editormd.mouseOrTouch("click","touchend"),function(){_this.previewed()});if(!settings.watch){this.save()}else{previewContainer.css("padding","")}previewContainer.addClass(this.classPrefix+"preview-active");preview.show().css({position:"",top:0,width:editor.width(),height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()});if(this.state.loaded){$.proxy(settings.onpreviewing,this)()}$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.previewed()}},previewed:function(){var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var previewContainer=this.previewContainer;var previewCloseBtn=editor.find("."+this.classPrefix+"preview-close-btn");this.state.preview=false;this.codeMirror.show();if(settings.toolbar){toolbar.show()}preview[settings.watch?"show":"hide"]();previewCloseBtn.hide().unbind(editormd.mouseOrTouch("click","touchend"));previewContainer.removeClass(this.classPrefix+"preview-active");if(settings.watch){previewContainer.css("padding","20px")}preview.css({background:null,position:"absolute",width:editor.width()/2,height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()-toolbar.height(),top:settings.toolbar?toolbar.height():0});if(this.state.loaded){$.proxy(settings.onpreviewed,this)()}return this},fullscreen:function(){var _this=this;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var fullscreenClass=this.classPrefix+"fullscreen";if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().toggleClass("active")}var escHandle=function(event){if(!event.shiftKey&&event.keyCode===27){if(state.fullscreen){_this.fullscreenExit()}}};if(!editor.hasClass(fullscreenClass)){state.fullscreen=true;$("html,body").css("overflow","hidden");editor.css({width:$(window).width(),height:$(window).height()}).addClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreen,this)();$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.fullscreenExit()}return this},fullscreenExit:function(){var editor=this.editor;var settings=this.settings;var toolbar=this.toolbar;var fullscreenClass=this.classPrefix+"fullscreen";this.state.fullscreen=false;if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().removeClass("active")}$("html,body").css("overflow","");editor.css({width:editor.data("oldWidth"),height:editor.data("oldHeight")}).removeClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreenExit,this)();return this},executePlugin:function(name,path){var _this=this;var cm=this.cm;var settings=this.settings;path=settings.pluginPath+path;if(typeof define==="function"){if(typeof this[name]==="undefined"){alert("Error: "+name+" plugin is not found, you are not load this plugin.");return this}this[name](cm);return this}if($.inArray(path,editormd.loadFiles.plugin)<0){editormd.loadPlugin(path,function(){editormd.loadPlugins[name]=_this[name];_this[name](cm)})}else{$.proxy(editormd.loadPlugins[name],this)(cm)}return this},search:function(command){var settings=this.settings;if(!settings.searchReplace){alert("Error: settings.searchReplace == false");return this}if(!settings.readOnly){this.cm.execCommand(command||"find")}return this},searchReplace:function(){this.search("replace");return this},searchReplaceAll:function(){this.search("replaceAll");return this}};editormd.fn.init.prototype=editormd.fn;editormd.dialogLockScreen=function(){var settings=this.settings||{dialogLockScreen:true};if(settings.dialogLockScreen){$("html,body").css("overflow","hidden");this.resize()}};editormd.dialogShowMask=function(dialog){var editor=this.editor;var settings=this.settings||{dialogShowMask:true};dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"});if(settings.dialogShowMask){editor.children("."+this.classPrefix+"mask").css("z-index",parseInt(dialog.css("z-index"))-1).show()}};editormd.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("**"+selection+"**");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},del:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("~~"+selection+"~~");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},italic:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("*"+selection+"*");if(selection===""){cm.setCursor(cursor.line,cursor.ch+1)}},quote:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("> "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("> "+selection)}},ucfirst:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.firstUpperCase(selection));cm.setSelections(selections)},ucwords:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.wordsFirstUpperCase(selection));cm.setSelections(selections)},uppercase:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toUpperCase());cm.setSelections(selections)},lowercase:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toLowerCase());cm.setSelections(selections)},h1:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("# "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("# "+selection)}},h2:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("## "+selection);cm.setCursor(cursor.line,cursor.ch+3)}else{cm.replaceSelection("## "+selection)}},h3:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("### "+selection);cm.setCursor(cursor.line,cursor.ch+4)}else{cm.replaceSelection("### "+selection)}},h4:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("#### "+selection);cm.setCursor(cursor.line,cursor.ch+5)}else{cm.replaceSelection("#### "+selection)}},h5:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("##### "+selection);cm.setCursor(cursor.line,cursor.ch+6)}else{cm.replaceSelection("##### "+selection)}},h6:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("###### "+selection);cm.setCursor(cursor.line,cursor.ch+7)}else{cm.replaceSelection("###### "+selection)}},"list-ul":function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(selection===""){cm.replaceSelection("- "+selection)}else{var selectionText=selection.split("\n");for(var i=0,len=selectionText.length;i'}}else{var emdlogoMathcs=$1.match(editormdLogoReg);var twemojiMatchs=$1.match(twemojiReg);if(emdlogoMathcs){for(var x=0,len2=emdlogoMathcs.length;x'}}else if(twemojiMatchs){for(var t=0,len3=twemojiMatchs.length;t'}}else{var src=name==="+1"?"plus1":name;src=src==="black_large_square"?"black_square":src;src=src==="moon"?"waxing_gibbous_moon":src;return':'+name+':'}}})}return text};markedRenderer.atLink=function(text){if(atLinkReg.test(text)){if(settings.atLink){text=text.replace(emailReg,function($1,$2,$3,$4){return $1.replace(/@/g,"_#_@_#_")});text=text.replace(atLinkReg,function($1,$2){return''+$1+""}).replace(/_#_@_#_/g,"@")}if(settings.emailLink){text=text.replace(emailLinkReg,function($1,$2,$3,$4,$5){return!$2&&$.inArray($5,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+$1+"":$1})}return text}return text};markedRenderer.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0){return""}}var out=''+text.replace(/@/g,"@")+""}if(title){out+=' title="'+title+'"'}out+=">"+text+"";return out};markedRenderer.heading=function(text,level,raw){var linkText=text;var hasLinkReg=/\s*\]*)\>(.*)\<\/a\>\s*/;var getLinkTextReg=/\s*\]+)\>([^\>]*)\<\/a\>\s*/g;if(hasLinkReg.test(text)){var tempText=[];text=text.split(/\]+)\>([^\>]*)\<\/a\>/);for(var i=0,len=text.length;i';headingHTML+='';headingHTML+='';headingHTML+=hasLinkReg?this.atLink(this.emoji(linkText)):this.atLink(this.emoji(text));headingHTML+="";return headingHTML};markedRenderer.pageBreak=function(text){if(pageBreakReg.test(text)&&settings.pageBreak){text='
              '}return text};markedRenderer.paragraph=function(text){var isTeXInline=/\$\$(.*)\$\$/g.test(text);var isTeXLine=/^\$\$(.*)\$\$$/.test(text);var isTeXAddClass=isTeXLine?' class="'+editormd.classNames.tex+'"':"";var isToC=settings.tocm?/^(\[TOC\]|\[TOCM\])$/.test(text):/^\[TOC\]$/.test(text);var isToCMenu=/^\[TOCM\]$/.test(text);if(!isTeXLine&&isTeXInline){text=text.replace(/(\$\$([^\$]*)\$\$)+/g,function($1,$2){return''+$2.replace(/\$/g,"")+""})}else{text=isTeXLine?text.replace(/\$/g,""):text}var tocHTML='
              '+text+"
              ";return isToC?isToCMenu?'
              '+tocHTML+"

              ":tocHTML:pageBreakReg.test(text)?this.pageBreak(text):""+this.atLink(this.emoji(text))+"

              \n"};markedRenderer.code=function(code,lang,escaped){if(lang==="seq"||lang==="sequence"){return'
              '+code+"
              "}else if(lang==="flow"){return'
              '+code+"
              "}else if(lang==="math"||lang==="latex"||lang==="katex"){return'

              '+code+"

              "}else{return marked.Renderer.prototype.code.apply(this,arguments)}};markedRenderer.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+this.atLink(this.emoji(content))+"\n"};markedRenderer.listitem=function(text){if(settings.taskList&&/^\s*\[[x\s]\]\s*/.test(text)){text=text.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' ');return'
            • '+this.atLink(this.emoji(text))+"
            • "}else{return"
            • "+this.atLink(this.emoji(text))+"
            • "}};return markedRenderer};editormd.markdownToCRenderer=function(toc,container,tocDropdown,startLevel){var html="";var lastLevel=0;var classPrefix=this.classPrefix;startLevel=startLevel||1;for(var i=0,len=toc.length;ilastLevel){html+=""}else if(level")}else{html+="
          • "}html+='
          • '+text+"
              ";lastLevel=level}var tocContainer=container.find(".markdown-toc");if(tocContainer.length<1&&container.attr("previewContainer")==="false"){var tocHTML='
              ';tocHTML=tocDropdown?'
              '+tocHTML+"
              ":tocHTML;container.html(tocHTML);tocContainer=container.find(".markdown-toc")}if(tocDropdown){tocContainer.wrap('

              ')}tocContainer.html('
                ').children(".markdown-toc-list").html(html.replace(/\r?\n?\\<\/ul\>/g,""));return tocContainer};editormd.tocDropdownMenu=function(container,tocTitle){tocTitle=tocTitle||"Table of Contents";var zindex=400;var tocMenus=container.find("."+this.classPrefix+"toc-menu");tocMenus.each(function(){var $this=$(this);var toc=$this.children(".markdown-toc");var icon='';var btn=''+icon+tocTitle+"";var menu=toc.children("ul");var list=menu.find("li");toc.append(btn);list.first().before("
              • "+tocTitle+" "+icon+"

              • ");$this.mouseover(function(){menu.show();list.each(function(){var li=$(this);var ul=li.children("ul");if(ul.html()===""){ul.remove()}if(ul.length>0&&ul.html()!==""){var firstA=li.children("a").first();if(firstA.children(".fa").length<1){firstA.append($(icon).css({float:"right",paddingTop:"4px"}))}}li.mouseover(function(){ul.css("z-index",zindex).show();zindex+=1}).mouseleave(function(){ul.hide()})})}).mouseleave(function(){menu.hide()})});return tocMenus};editormd.filterHTMLTags=function(html,filters){if(typeof html!=="string"){html=new String(html)}if(typeof filters!=="string"){return html}var expression=filters.split("|");var filterTags=expression[0].split(",");var attrs=expression[1];for(var i=0,len=filterTags.length;i]*)>([^>]*)","igm"),"")}if(typeof attrs!=="undefined"){html=html.replace(/(\w+)="([^"]*)"/g,(match,key,value)=>{const escapedValue=value.replace(//g,">");return`${key}="${escapedValue}"`});var htmlTagRegex=/\<(\w+)\s*([^\>]*)\>([^\>]*)\<\/(\w+)\>/gi;if(attrs==="*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){return"<"+$2+">"+$4+""})}else if(attrs==="on*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){var el=$("<"+$2+">"+$4+"");var _attrs=$($1)[0].attributes;var $attrs={};$.each(_attrs,function(i,e){if(e.nodeName!=='"')$attrs[e.nodeName]=e.nodeValue});$.each($attrs,function(i){if(i.indexOf("on")===0){delete $attrs[i]}});el.attr($attrs);var text=typeof el[1]!=="undefined"?$(el[1]).text():"";return el[0].outerHTML+text})}else{html=html.replace(htmlTagRegex,function($1,$2,$3,$4){var filterAttrs=attrs.split(",");var el=$($1);el.html($4);$.each(filterAttrs,function(i){el.attr(filterAttrs[i],null)});return el[0].outerHTML})}}return html};editormd.markdownToHTML=function(id,options){var defaults={gfm:true,toc:true,tocm:false,tocStartLevel:1,tocTitle:"目录",tocDropdown:false,tocContainer:"",markdown:"",markdownSourceCode:false,htmlDecode:false,autoLoadKaTeX:true,pageBreak:true,atLink:true,emailLink:true,tex:false,taskList:false,emoji:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true};editormd.$marked=marked;var div=$("#"+id);var settings=div.settings=$.extend(true,defaults,options||{});var saveTo=div.find("textarea");if(saveTo.length<1){div.append("");saveTo=div.find("textarea")}var markdownDoc=settings.markdown===""?saveTo.val():settings.markdown;var markdownToC=[];var rendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,pageBreak:settings.pageBreak,atLink:settings.atLink,emailLink:settings.emailLink,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:settings.gfm,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};markdownDoc=new String(markdownDoc);var markdownParsed=marked(markdownDoc,markedOptions);markdownParsed=editormd.filterHTMLTags(markdownParsed,settings.htmlDecode);if(settings.markdownSourceCode){saveTo.text(markdownDoc)}else{saveTo.remove()}div.addClass("markdown-body "+this.classPrefix+"html-preview").append(markdownParsed);var tocContainer=settings.tocContainer!==""?$(settings.tocContainer):div;if(settings.tocContainer!==""){tocContainer.attr("previewContainer",false)}if(settings.toc){div.tocContainer=this.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||div.find("."+this.classPrefix+"toc-menu").length>0){this.tocDropdownMenu(div,settings.tocTitle)}if(settings.tocContainer!==""){div.find(".editormd-toc-menu, .editormd-markdown-toc").remove()}}if(settings.previewCodeHighlight){div.find("pre").addClass("prettyprint linenums");prettyPrint()}if(!editormd.isIE8){if(settings.flowChart){div.find(".flowchart").flowChart()}if(settings.sequenceDiagram){div.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}}if(settings.tex){var katexHandle=function(){div.find("."+editormd.classNames.tex).each(function(){var tex=$(this);katex.render(tex.html().replace(/</g,"<").replace(/>/g,">"),tex[0]);tex.find(".katex").css("font-size","1.6em")})};if(settings.autoLoadKaTeX&&!editormd.$katex&&!editormd.kaTeXLoaded){this.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;katexHandle()})}else{katexHandle()}}div.getMarkdown=function(){return saveTo.val()};return div};editormd.themes=["default","dark"];editormd.previewThemes=["default","dark"];editormd.editorThemes=["default","3024-day","3024-night","ambiance","ambiance-mobile","base16-dark","base16-light","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","mbo","mdn-like","midnight","monokai","neat","neo","night","paraiso-dark","paraiso-light","pastel-on-dark","rubyblue","solarized","the-matrix","tomorrow-night-eighties","twilight","vibrant-ink","xq-dark","xq-light"];editormd.loadPlugins={};editormd.loadFiles={js:[],css:[],plugin:[]};editormd.loadPlugin=function(fileName,callback,into){callback=callback||function(){};this.loadScript(fileName,function(){editormd.loadFiles.plugin.push(fileName);callback()},into)};editormd.loadCSS=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var css=document.createElement("link");css.type="text/css";css.rel="stylesheet";css.onload=css.onreadystatechange=function(){editormd.loadFiles.css.push(fileName);callback()};css.href=fileName+".css";if(into==="head"){document.getElementsByTagName("head")[0].appendChild(css)}else{document.body.appendChild(css)}};editormd.isIE=navigator.appName=="Microsoft Internet Explorer";editormd.isIE8=editormd.isIE&&navigator.appVersion.match(/8./i)=="8.";editormd.loadScript=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var script=null;script=document.createElement("script");script.id=fileName.replace(/[\./]+/g,"-");script.type="text/javascript";script.src=fileName+".js";if(editormd.isIE8){script.onreadystatechange=function(){if(script.readyState){if(script.readyState==="loaded"||script.readyState==="complete"){script.onreadystatechange=null;editormd.loadFiles.js.push(fileName);callback()}}}}else{script.onload=function(){editormd.loadFiles.js.push(fileName);callback()}}if(into==="head"){document.getElementsByTagName("head")[0].appendChild(script)}else{document.body.appendChild(script)}};editormd.katexURL={css:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min",js:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min"};editormd.kaTeXLoaded=false;editormd.loadKaTeX=function(callback){editormd.loadCSS(editormd.katexURL.css,function(){editormd.loadScript(editormd.katexURL.js,callback||function(){})})};editormd.lockScreen=function(lock){$("html,body").css("overflow",lock?"hidden":"")};editormd.createDialog=function(options){var defaults={name:"",width:420,height:240,title:"",drag:true,closed:true,content:"",mask:true,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:true,footer:true,buttons:false};options=$.extend(true,defaults,options);var $this=this;var editor=this.editor;var classPrefix=editormd.classPrefix;var guid=(new Date).getTime();var dialogName=options.name===""?classPrefix+"dialog-"+guid:options.name;var mouseOrTouch=editormd.mouseOrTouch;var html='
                ';if(options.title!==""){html+='
                ";html+=''+options.title+"";html+="
                "}if(options.closed){html+=''}html+='
                '+options.content;if(options.footer||typeof options.footer==="string"){html+='"}html+="
                ";html+='
                ';html+='
                ';html+="
                ";editor.append(html);var dialog=editor.find("."+dialogName);dialog.lockScreen=function(lock){if(options.lockScreen){$("html,body").css("overflow",lock?"hidden":"");$this.resize()}return dialog};dialog.showMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").css(options.maskStyle).css("z-index",editormd.dialogZindex-1).show()}return dialog};dialog.hideMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").hide()}return dialog};dialog.loading=function(show){var loading=dialog.find("."+classPrefix+"dialog-mask");loading[show?"show":"hide"]();return dialog};dialog.lockScreen(true).showMask();dialog.show().css({zIndex:editormd.dialogZindex,border:editormd.isIE8?"1px solid #ddd":"",width:typeof options.width==="number"?options.width+"px":options.width,height:typeof options.height==="number"?options.height+"px":options.height});var dialogPosition=function(){dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"})};dialogPosition();$(window).resize(dialogPosition);dialog.children("."+classPrefix+"dialog-close").bind(mouseOrTouch("click","touchend"),function(){dialog.hide().lockScreen(false).hideMask()});if(typeof options.buttons==="object"){var footer=dialog.footer=dialog.find("."+classPrefix+"dialog-footer");for(var key in options.buttons){var btn=options.buttons[key];var btnClassName=classPrefix+key+"-btn";footer.append('");btn[1]=$.proxy(btn[1],dialog);footer.children("."+btnClassName).bind(mouseOrTouch("click","touchend"),btn[1])}}if(options.title!==""&&options.drag){var posX,posY;var dialogHeader=dialog.children("."+classPrefix+"dialog-header");if(!options.mask){dialogHeader.bind(mouseOrTouch("click","touchend"),function(){editormd.dialogZindex+=2;dialog.css("z-index",editormd.dialogZindex)})}dialogHeader.mousedown(function(e){e=e||window.event;posX=e.clientX-parseInt(dialog[0].style.left);posY=e.clientY-parseInt(dialog[0].style.top);document.onmousemove=moveAction});var userCanSelect=function(obj){obj.removeClass(classPrefix+"user-unselect").off("selectstart")};var userUnselect=function(obj){obj.addClass(classPrefix+"user-unselect").on("selectstart",function(event){return false})};var moveAction=function(e){e=e||window.event;var left,top,nowLeft=parseInt(dialog[0].style.left),nowTop=parseInt(dialog[0].style.top);if(nowLeft>=0){if(nowLeft+dialog.width()<=$(window).width()){left=e.clientX-posX}else{left=$(window).width()-dialog.width();document.onmousemove=null}}else{left=0;document.onmousemove=null}if(nowTop>=0){top=e.clientY-posY}else{top=0;document.onmousemove=null}document.onselectstart=function(){return false};userUnselect($("body"));userUnselect(dialog);dialog[0].style.left=left+"px";dialog[0].style.top=top+"px"};document.onmouseup=function(){userCanSelect($("body"));userCanSelect(dialog);document.onselectstart=null;document.onmousemove=null};dialogHeader.touchDraggable=function(){var offset=null;var start=function(e){var orig=e.originalEvent;var pos=$(this).parent().position();offset={x:orig.changedTouches[0].pageX-pos.left,y:orig.changedTouches[0].pageY-pos.top}};var move=function(e){e.preventDefault();var orig=e.originalEvent;$(this).parent().css({top:orig.changedTouches[0].pageY-offset.y,left:orig.changedTouches[0].pageX-offset.x})};this.bind("touchstart",start).bind("touchmove",move)};dialogHeader.touchDraggable()}editormd.dialogZindex+=2;return dialog};editormd.mouseOrTouch=function(mouseEventType,touchEventType){mouseEventType=mouseEventType||"click";touchEventType=touchEventType||"touchend";var eventType=mouseEventType;try{document.createEvent("TouchEvent");eventType=touchEventType}catch(e){}return eventType};editormd.dateFormat=function(format){format=format||"";var addZero=function(d){return d<10?"0"+d:d};var date=new Date;var year=date.getFullYear();var year2=year.toString().slice(2,4);var month=addZero(date.getMonth()+1);var day=addZero(date.getDate());var weekDay=date.getDay();var hour=addZero(date.getHours());var min=addZero(date.getMinutes());var second=addZero(date.getSeconds());var ms=addZero(date.getMilliseconds());var datefmt="";var ymd=year2+"-"+month+"-"+day;var fymd=year+"-"+month+"-"+day;var hms=hour+":"+min+":"+second;switch(format){case"UNIX Time":datefmt=date.getTime();break;case"UTC":datefmt=date.toUTCString();break;case"yy":datefmt=year2;break;case"year":case"yyyy":datefmt=year;break;case"month":case"mm":datefmt=month;break;case"cn-week-day":case"cn-wd":var cnWeekDays=["日","一","二","三","四","五","六"];datefmt="星期"+cnWeekDays[weekDay];break;case"week-day":case"wd":var weekDays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];datefmt=weekDays[weekDay];break;case"day":case"dd":datefmt=day;break;case"hour":case"hh":datefmt=hour;break;case"min":case"ii":datefmt=min;break;case"second":case"ss":datefmt=second;break;case"ms":datefmt=ms;break;case"yy-mm-dd":datefmt=ymd;break;case"yyyy-mm-dd":datefmt=fymd;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":datefmt=fymd+" "+hms+" "+ms;break;case"full":case"yyyy-mm-dd h:i:s":default:datefmt=fymd+" "+hms;break}return datefmt};return editormd}); \ No newline at end of file +(function(factory){"use strict";if(typeof require==="function"&&typeof exports==="object"&&typeof module==="object"){module.exports=factory}else if(typeof define==="function"){if(define.amd){}else{define(["jquery"],factory)}}else{window.editormd=factory()}})(function(){"use strict";var $=typeof jQuery!=="undefined"?jQuery:Zepto;if(typeof $==="undefined"){return}var editormd=function(id,options){return new editormd.fn.init(id,options)};editormd.title=editormd.$name="Editor.md";editormd.version="1.5.0";editormd.homePage="https://pandao.github.io/editor.md/";editormd.classPrefix="editormd-";editormd.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","reference-link","image","code","preformatted-text","code-block","table","datetime","emoji","html-entities","pagebreak","|","goto-line","watch","preview","fullscreen","clear","search","|","help","info"],simple:["undo","redo","|","bold","del","italic","quote","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","watch","preview","fullscreen","|","help","info"],mini:["undo","redo","|","watch","preview","|","help","info"]};editormd.defaults={mode:"gfm",name:"",value:"",theme:"",editorTheme:"default",previewTheme:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:true,watch:true,placeholder:"Enjoy Markdown! coding now...",gotoLine:true,codeFold:false,autoHeight:false,autoFocus:true,autoCloseTags:true,searchReplace:true,syncScrolling:true,readOnly:false,tabSize:4,indentUnit:4,lineNumbers:true,lineWrapping:true,autoCloseBrackets:true,showTrailingSpace:true,matchBrackets:true,indentWithTabs:true,styleSelectedText:true,matchWordHighlight:true,styleActiveLine:true,dialogLockScreen:true,dialogShowMask:true,dialogDraggable:true,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:false,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:false,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:false,uploadCallbackURL:"",toc:true,tocm:false,tocTitle:"",tocDropdown:false,tocContainer:"",tocStartLevel:1,htmlDecode:false,pageBreak:true,atLink:true,emailLink:true,taskList:false,emoji:false,tex:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true,toolbar:true,toolbarAutoFixed:true,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return editormd.toolbarHandlers.ucwords},lowercase:function(){return editormd.toolbarHandlers.lowercase}},toolbarCustomIcons:{lowercase:'a',ucwords:'Aa'},toolbarIconsClass:{undo:"fa-undo",redo:"fa-repeat",bold:"fa-bold",del:"fa-strikethrough",italic:"fa-italic",quote:"fa-quote-left",uppercase:"fa-font",h1:editormd.classPrefix+"bold",h2:editormd.classPrefix+"bold",h3:editormd.classPrefix+"bold",h4:editormd.classPrefix+"bold",h5:editormd.classPrefix+"bold",h6:editormd.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link","reference-link":"fa-anchor",image:"fa-picture-o",code:"fa-code","preformatted-text":"fa-file-code-o","code-block":"fa-file-code-o",table:"fa-table",datetime:"fa-clock-o",emoji:"fa-smile-o","html-entities":"fa-copyright",pagebreak:"fa-newspaper-o","goto-line":"fa-terminal",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-desktop",search:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},toolbarNoFocus:["link","reference-link","image","code-block","preformatted-text","watch","preview","search","fullscreen","info"],lang:{name:"zh-cn",description:"开源在线Markdown编辑器
                Open source online Markdown editor.",tocTitle:"目录",toolbar:{undo:"撤销(Ctrl+Z)",redo:"重做(Ctrl+Y)",bold:"粗体",del:"删除线",italic:"斜体",quote:"引用",ucwords:"将每个单词首字母转成大写",uppercase:"将所选转换成大写",lowercase:"将所选转换成小写",h1:"标题1",h2:"标题2",h3:"标题3",h4:"标题4",h5:"标题5",h6:"标题6","list-ul":"无序列表","list-ol":"有序列表",hr:"横线",link:"链接","reference-link":"引用链接",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情","html-entities":"HTML实体字符",pagebreak:"插入分页符","goto-line":"跳转到行",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(按 Shift + ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",search:"搜索",help:"使用帮助",info:"关于"+editormd.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},referenceLink:{title:"添加引用链接",name:"引用名称",url:"链接地址",urlId:"链接ID",urlTitle:"链接标题",nameEmpty:"错误:引用链接的名称不能为空。",idEmpty:"错误:请填写引用链接的ID。",urlEmpty:"错误:请填写引用链接的URL地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}};editormd.classNames={tex:editormd.classPrefix+"tex"};editormd.dialogZindex=99999;editormd.$katex=null;editormd.$marked=null;editormd.$CodeMirror=null;editormd.$prettyPrint=null;var timer,flowchartTimer;editormd.prototype=editormd.fn={state:{watching:false,loaded:false,preview:false,fullscreen:false},init:function(id,options){options=options||{};if(typeof id==="object"){options=id}var _this=this;var classPrefix=this.classPrefix=editormd.classPrefix;var settings=this.settings=$.extend(true,{},editormd.defaults,options);if(settings.appendToolbar&&typeof settings.toolbarIcons==="string"&&settings.toolbarIcons in editormd.toolbarModes){settings.appendToolbar.forEach(toolbar=>{if(!("name"in toolbar)){return}if(toolbar.name==="|"){editormd.toolbarModes[settings.toolbarIcons].push("|");return}if(!editormd.toolbarModes[settings.toolbarIcons].includes(toolbar.name)){editormd.toolbarModes[settings.toolbarIcons].push(toolbar.name)}if("icon"in toolbar){settings.toolbarIconsClass[toolbar.name]=toolbar.icon}if("title"in toolbar){settings.lang.toolbar[toolbar.name]=toolbar.title}if("handler"in toolbar){editormd.toolbarHandlers[toolbar.name]=toolbar.handler;if("shortcut"in toolbar){toolbar.shortcut.forEach(key=>editormd.keyMaps[key]=toolbar.handler)}}if("nofocus"in toolbar&&toolbar.nofocus===true){if(!settings.toolbarNoFocus.includes[toolbar.name]){settings.toolbarNoFocus.push(toolbar.name)}}})}if(settings.shortcutFunction){for(const key in settings.shortcutFunction){editormd.keyMaps[key]=settings.shortcutFunction[key]}}id=typeof id==="object"?settings.id:id;var editor=this.editor=$("#"+id);this.id=id;this.lang=settings.lang;var classNames=this.classNames={textarea:{html:classPrefix+"html-textarea",markdown:classPrefix+"markdown-textarea"}};settings.pluginPath=settings.pluginPath===""?settings.path+"../plugins/":settings.pluginPath;this.state.watching=settings.watch?true:false;if(!editor.hasClass("editormd")){editor.addClass("editormd")}editor.css({width:typeof settings.width==="number"?settings.width+"px":settings.width,height:typeof settings.height==="number"?settings.height+"px":settings.height});if(settings.autoHeight){editor.css("height","auto")}var markdownTextarea=this.markdownTextarea=editor.children("textarea");if(markdownTextarea.length<1){editor.append("");markdownTextarea=this.markdownTextarea=editor.children("textarea")}markdownTextarea.addClass(classNames.textarea.markdown).attr("placeholder",settings.placeholder);if(typeof markdownTextarea.attr("name")==="undefined"||markdownTextarea.attr("name")===""){markdownTextarea.attr("name",settings.name!==""?settings.name:id+"-markdown-doc")}var appendElements=[!settings.readOnly?'':"",settings.saveHTMLToTextarea?'':"",'
                ','
                ','
                '].join("\n");editor.append(appendElements).addClass(classPrefix+"vertical");if(settings.theme!==""){editor.addClass(classPrefix+"theme-"+settings.theme)}this.mask=editor.children("."+classPrefix+"mask");this.containerMask=editor.children("."+classPrefix+"container-mask");if(settings.markdown!==""){markdownTextarea.val(settings.markdown)}if(settings.appendMarkdown!==""){markdownTextarea.val(markdownTextarea.val()+settings.appendMarkdown)}this.htmlTextarea=editor.children("."+classNames.textarea.html);this.preview=editor.children("."+classPrefix+"preview");this.previewContainer=this.preview.children("."+classPrefix+"preview-container");if(settings.previewTheme!==""){this.preview.addClass(classPrefix+"preview-theme-"+settings.previewTheme)}if(typeof define==="function"&&define.amd){if(typeof katex!=="undefined"){editormd.$katex=katex}if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(settings.path+"codemirror/addon/dialog/dialog");editormd.loadCSS(settings.path+"codemirror/addon/search/matchesonscrollbar")}}if(typeof define==="function"&&define.amd||!settings.autoLoadModules){if(typeof CodeMirror!=="undefined"){editormd.$CodeMirror=CodeMirror}if(typeof marked!=="undefined"){editormd.$marked=marked}this.setCodeMirror().setToolbar().loadedDisplay()}else{this.loadQueues()}return this},loadQueues:function(){var _this=this;var settings=this.settings;var loadPath=settings.path;var loadFlowChartOrSequenceDiagram=function(){if(editormd.isIE8){_this.loadedDisplay();return}if(settings.plantuml){editormd.loadScript(loadPath+"plantuml-encoder.min",function(){editormd.$plantumlEncoder=plantumlEncoder})}if(settings.flowChart||settings.sequenceDiagram){editormd.loadScript(loadPath+"raphael.min",function(){editormd.loadScript(loadPath+"underscore.min",function(){if(!settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})}else if(settings.flowChart&&!settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){_this.loadedDisplay()})})}else if(settings.flowChart&&settings.sequenceDiagram){editormd.loadScript(loadPath+"flowchart.min",function(){editormd.loadScript(loadPath+"jquery.flowchart.min",function(){editormd.loadScript(loadPath+"sequence-diagram.min",function(){_this.loadedDisplay()})})})}})})}else{_this.loadedDisplay()}};editormd.loadCSS(loadPath+"codemirror/codemirror.min");if(settings.searchReplace&&!settings.readOnly){editormd.loadCSS(loadPath+"codemirror/addon/dialog/dialog");editormd.loadCSS(loadPath+"codemirror/addon/search/matchesonscrollbar")}if(settings.codeFold){editormd.loadCSS(loadPath+"codemirror/addon/fold/foldgutter")}editormd.loadScript(loadPath+"codemirror/codemirror.min",function(){editormd.$CodeMirror=CodeMirror;editormd.loadScript(loadPath+"codemirror/modes.min",function(){editormd.loadScript(loadPath+"codemirror/addons.min",function(){_this.setCodeMirror();if(settings.mode!=="gfm"&&settings.mode!=="markdown"){_this.loadedDisplay();return false}_this.setToolbar();editormd.loadScript(loadPath+"marked.min",function(){editormd.$marked=marked;if(settings.previewCodeHighlight){editormd.loadScript(loadPath+"prettify.min",function(){loadFlowChartOrSequenceDiagram()})}else{loadFlowChartOrSequenceDiagram()}})})})});return this},setTheme:function(theme){var editor=this.editor;var oldTheme=this.settings.theme;var themePrefix=this.classPrefix+"theme-";editor.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.theme=theme;return this},setEditorTheme:function(theme){var settings=this.settings;settings.editorTheme=theme;if(theme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}this.cm.setOption("theme",theme);return this},setCodeMirrorTheme:function(theme){this.setEditorTheme(theme);return this},setPreviewTheme:function(theme){var preview=this.preview;var oldTheme=this.settings.previewTheme;var themePrefix=this.classPrefix+"preview-theme-";preview.removeClass(themePrefix+oldTheme).addClass(themePrefix+theme);this.settings.previewTheme=theme;return this},setCodeMirror:function(){var settings=this.settings;var editor=this.editor;if(settings.editorTheme!=="default"){editormd.loadCSS(settings.path+"codemirror/theme/"+settings.editorTheme)}var codeMirrorConfig={mode:settings.mode,theme:settings.editorTheme,tabSize:settings.tabSize,dragDrop:false,autofocus:settings.autoFocus,autoCloseTags:settings.autoCloseTags,readOnly:settings.readOnly?"nocursor":false,indentUnit:settings.indentUnit,lineNumbers:settings.lineNumbers,lineWrapping:settings.lineWrapping,extraKeys:{"Ctrl-Q":function(cm){cm.foldCode(cm.getCursor())}},foldGutter:settings.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:settings.matchBrackets,indentWithTabs:settings.indentWithTabs,styleActiveLine:settings.styleActiveLine,styleSelectedText:settings.styleSelectedText,autoCloseBrackets:settings.autoCloseBrackets,showTrailingSpace:settings.showTrailingSpace,highlightSelectionMatches:!settings.matchWordHighlight?false:{showToken:settings.matchWordHighlight==="onselected"?false:/\w/}};this.codeEditor=this.cm=editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0],codeMirrorConfig);this.codeMirror=this.cmElement=editor.children(".CodeMirror");if(settings.value!==""){this.cm.setValue(settings.value)}this.codeMirror.css({fontSize:settings.fontSize,width:!settings.watch?"100%":"50%"});if(settings.autoHeight){this.codeMirror.css("height","auto");this.cm.setOption("viewportMargin",Infinity)}if(!settings.lineNumbers){this.codeMirror.find(".CodeMirror-gutters").css("border-right","none")}return this},getCodeMirrorOption:function(key){return this.cm.getOption(key)},setCodeMirrorOption:function(key,value){this.cm.setOption(key,value);return this},addKeyMap:function(map,bottom){this.cm.addKeyMap(map,bottom);return this},removeKeyMap:function(map){this.cm.removeKeyMap(map);return this},gotoLine:function(line){var settings=this.settings;if(!settings.gotoLine){return this}var cm=this.cm;var editor=this.editor;var count=cm.lineCount();var preview=this.preview;if(typeof line==="string"){if(line==="last"){line=count}if(line==="first"){line=1}}if(typeof line!=="number"){alert("Error: The line number must be an integer.");return this}line=parseInt(line)-1;if(line>count){alert("Error: The line number range 1-"+count);return this}cm.setCursor({line:line,ch:0});var scrollInfo=cm.getScrollInfo();var clientHeight=scrollInfo.clientHeight;var coords=cm.charCoords({line:line,ch:0},"local");cm.scrollTo(null,(coords.top+coords.bottom-clientHeight)/2);if(settings.watch){var cmScroll=this.codeMirror.find(".CodeMirror-scroll")[0];var height=$(cmScroll).height();var scrollTop=cmScroll.scrollTop;var percent=scrollTop/cmScroll.scrollHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=cmScroll.scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop(preview[0].scrollHeight*percent)}}cm.focus();return this},extend:function(){if(typeof arguments[1]!=="undefined"){if(typeof arguments[1]==="function"){arguments[1]=$.proxy(arguments[1],this)}this[arguments[0]]=arguments[1]}if(typeof arguments[0]==="object"&&typeof arguments[0].length==="undefined"){$.extend(true,this,arguments[0])}return this},set:function(key,value){if(typeof value!=="undefined"&&typeof value==="function"){value=$.proxy(value,this)}this[key]=value;return this},config:function(key,value){var settings=this.settings;if(typeof key==="object"){settings=$.extend(true,settings,key)}if(typeof key==="string"){settings[key]=value}this.settings=settings;this.recreate();return this},on:function(eventType,callback){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=$.proxy(callback,this)}return this},off:function(eventType){var settings=this.settings;if(typeof settings["on"+eventType]!=="undefined"){settings["on"+eventType]=function(){}}return this},showToolbar:function(callback){var settings=this.settings;if(settings.readOnly){return this}if(settings.toolbar&&(this.toolbar.length<1||this.toolbar.find("."+this.classPrefix+"menu").html()==="")){this.setToolbar()}settings.toolbar=true;this.toolbar.show();this.resize();$.proxy(callback||function(){},this)();return this},hideToolbar:function(callback){var settings=this.settings;settings.toolbar=false;this.toolbar.hide();this.resize();$.proxy(callback||function(){},this)();return this},setToolbarAutoFixed:function(fixed){var state=this.state;var editor=this.editor;var toolbar=this.toolbar;var settings=this.settings;if(typeof fixed!=="undefined"){settings.toolbarAutoFixed=fixed}var autoFixedHandle=function(){var $window=$(window);var top=$window.scrollTop();if(!settings.toolbarAutoFixed){return false}if(top-editor.offset().top>10&&top
                  ';editor.append(toolbarHTML);toolbar=this.toolbar=editor.children("."+classPrefix+"toolbar")}if(!settings.toolbar){toolbar.hide();return this}toolbar.show();var icons=typeof settings.toolbarIcons==="function"?settings.toolbarIcons():typeof settings.toolbarIcons==="string"?editormd.toolbarModes[settings.toolbarIcons]:settings.toolbarIcons;var toolbarMenu=toolbar.find("."+this.classPrefix+"menu"),menu="";var pullRight=false;for(var i=0,len=icons.length;i|'}else{var isHeader=/h(\d)/.test(name);var index=name;if(name==="watch"&&!settings.watch){index="unwatch"}var title=settings.lang.toolbar[index];var iconTexts=settings.toolbarIconTexts[index];var iconClass=settings.toolbarIconsClass[index];title=typeof title==="undefined"?"":title;iconTexts=typeof iconTexts==="undefined"?"":iconTexts;iconClass=typeof iconClass==="undefined"?"":iconClass;var menuItem=pullRight?'
                • ':"
                • ";if(typeof settings.toolbarCustomIcons[name]!=="undefined"&&typeof settings.toolbarCustomIcons[name]!=="function"){menuItem+=settings.toolbarCustomIcons[name]}else{menuItem+='';menuItem+=''+(isHeader?name.toUpperCase():iconClass===""?iconTexts:"")+"";menuItem+=""}menuItem+="
                • ";menu=pullRight?menuItem+menu:menu+menuItem}}toolbarMenu.html(menu);toolbarMenu.find('[title="Lowercase"]').attr("title",settings.lang.toolbar.lowercase);toolbarMenu.find('[title="ucwords"]').attr("title",settings.lang.toolbar.ucwords);this.setToolbarHandler();this.setToolbarAutoFixed();return this},dialogLockScreen:function(){$.proxy(editormd.dialogLockScreen,this)();return this},dialogShowMask:function(dialog){$.proxy(editormd.dialogShowMask,this)(dialog);return this},getToolbarHandles:function(name){var toolbarHandlers=this.toolbarHandlers=editormd.toolbarHandlers;return name&&typeof toolbarIconHandlers[name]!=="undefined"?toolbarHandlers[name]:toolbarHandlers},setToolbarHandler:function(){var _this=this;var settings=this.settings;if(!settings.toolbar||settings.readOnly){return this}var toolbar=this.toolbar;var cm=this.cm;var classPrefix=this.classPrefix;var toolbarIcons=this.toolbarIcons=toolbar.find("."+classPrefix+"menu > li > a");var toolbarIconHandlers=this.getToolbarHandles();toolbarIcons.bind(editormd.mouseOrTouch("click","touchend"),function(event){var icon=$(this).children(".fa");var name=icon.attr("name");var cursor=cm.getCursor();var selection=cm.getSelection();if(name===""){return}_this.activeIcon=icon;if(typeof toolbarIconHandlers[name]!=="undefined"){$.proxy(toolbarIconHandlers[name],_this)(cm)}else{if(typeof settings.toolbarHandlers[name]!=="undefined"){$.proxy(settings.toolbarHandlers[name],_this)(cm,icon,cursor,selection)}else{alert("This feature is not yet implemented.")}}if(!settings.toolbarNoFocus.includes(name)){cm.focus()}return false});return this},createDialog:function(options){return $.proxy(editormd.createDialog,this)(options)},createInfoDialog:function(){var _this=this;var editor=this.editor;var classPrefix=this.classPrefix;var infoDialogHTML=['
                  ','
                  ','

                  '+editormd.title+"v"+editormd.version+"

                  ","

                  "+this.lang.description+"

                  ",'

                  '+editormd.homePage+'

                  ','

                  Copyright © 2015 Pandao, The MIT License.

                  ',"
                  ",'',"
                  "].join("\n");editor.append(infoDialogHTML);var infoDialog=this.infoDialog=editor.children("."+classPrefix+"dialog-info");infoDialog.find("."+classPrefix+"dialog-close").bind(editormd.mouseOrTouch("click","touchend"),function(){_this.hideInfoDialog()});infoDialog.css("border",editormd.isIE8?"1px solid #ddd":"").css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},infoDialogPosition:function(){var infoDialog=this.infoDialog;var _infoDialogPosition=function(){infoDialog.css({top:($(window).height()-infoDialog.height())/2+"px",left:($(window).width()-infoDialog.width())/2+"px"})};_infoDialogPosition();$(window).resize(_infoDialogPosition);return this},showInfoDialog:function(){$("html,body").css("overflow-x","hidden");var _this=this;var editor=this.editor;var settings=this.settings;var infoDialog=this.infoDialog=editor.children("."+this.classPrefix+"dialog-info");if(infoDialog.length<1){this.createInfoDialog()}this.lockScreen(true);this.mask.css({opacity:settings.dialogMaskOpacity,backgroundColor:settings.dialogMaskBgColor}).show();infoDialog.css("z-index",editormd.dialogZindex).show();this.infoDialogPosition();return this},hideInfoDialog:function(){$("html,body").css("overflow-x","");this.infoDialog.hide();this.mask.hide();this.lockScreen(false);return this},lockScreen:function(lock){editormd.lockScreen(lock);this.resize();return this},recreate:function(){var _this=this;var editor=this.editor;var settings=this.settings;this.codeMirror.remove();this.setCodeMirror();if(!settings.readOnly){if(editor.find(".editormd-dialog").length>0){editor.find(".editormd-dialog").remove()}if(settings.toolbar){this.getToolbarHandles();this.setToolbar()}}this.loadedDisplay(true);return this},previewCodeHighlight:function(){var settings=this.settings;var previewContainer=this.previewContainer;if(settings.previewCodeHighlight){previewContainer.find("pre").addClass("prettyprint linenums");if(typeof prettyPrint!=="undefined"){prettyPrint()}}return this},katexRender:function(){if(timer===null){return this}this.previewContainer.find("."+editormd.classNames.tex).each(function(){var tex=$(this);editormd.$katex.render(tex.text(),tex[0]);tex.find(".katex").css("font-size","1.6em")});return this},flowChartAndSequenceDiagramRender:function(){var $this=this;var settings=this.settings;var previewContainer=this.previewContainer;if(editormd.isIE8){return this}if(settings.flowChart){if(flowchartTimer===null){return this}previewContainer.find(".flowchart").flowChart()}if(settings.sequenceDiagram){previewContainer.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}var preview=$this.preview;var codeMirror=$this.codeMirror;var codeView=codeMirror.find(".CodeMirror-scroll");var height=codeView.height();var scrollTop=codeView.scrollTop();var percent=scrollTop/codeView[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=codeView[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}return this},registerKeyMaps:function(keyMap){var _this=this;var cm=this.cm;var settings=this.settings;var toolbarHandlers=editormd.toolbarHandlers;var disabledKeyMaps=settings.disabledKeyMaps;keyMap=keyMap||null;if(keyMap){for(var i in keyMap){if($.inArray(i,disabledKeyMaps)<0){var map={};map[i]=keyMap[i];cm.addKeyMap(keyMap)}}}else{for(var k in editormd.keyMaps){var _keyMap=editormd.keyMaps[k];var handle=typeof _keyMap==="string"?$.proxy(toolbarHandlers[_keyMap],_this):$.proxy(_keyMap,_this);if($.inArray(k,["F9","F10","F11"])<0&&$.inArray(k,disabledKeyMaps)<0){var _map={};_map[k]=handle;cm.addKeyMap(_map)}}$(window).keydown(function(event){var keymaps={120:"F9",121:"F10",122:"F11"};if($.inArray(keymaps[event.keyCode],disabledKeyMaps)<0){switch(event.keyCode){case 120:$.proxy(toolbarHandlers["watch"],_this)();return false;break;case 121:$.proxy(toolbarHandlers["preview"],_this)();return false;break;case 122:$.proxy(toolbarHandlers["fullscreen"],_this)();return false;break;default:break}}})}return this},bindScrollEvent:function(){var _this=this;var preview=this.preview;var settings=this.settings;var codeMirror=this.codeMirror;var mouseOrTouch=editormd.mouseOrTouch;if(!settings.syncScrolling){return this}var cmBindScroll=function(){codeMirror.find(".CodeMirror-scroll").bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var tocHeight=0;preview.find(".markdown-toc-list").each(function(){tocHeight+=$(this).height()});var tocMenuHeight=preview.find(".editormd-toc-menu").height();tocMenuHeight=!tocMenuHeight?0:tocMenuHeight;if(scrollTop===0){preview.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight-16){preview.scrollTop(preview[0].scrollHeight)}else{preview.scrollTop((preview[0].scrollHeight+tocHeight+tocMenuHeight)*percent)}$.proxy(settings.onscroll,_this)(event)})};var cmUnbindScroll=function(){codeMirror.find(".CodeMirror-scroll").unbind(mouseOrTouch("scroll","touchmove"))};var previewBindScroll=function(){preview.bind(mouseOrTouch("scroll","touchmove"),function(event){var height=$(this).height();var scrollTop=$(this).scrollTop();var percent=scrollTop/$(this)[0].scrollHeight;var codeView=codeMirror.find(".CodeMirror-scroll");if(scrollTop===0){codeView.scrollTop(0)}else if(scrollTop+height>=$(this)[0].scrollHeight){codeView.scrollTop(codeView[0].scrollHeight)}else{codeView.scrollTop(codeView[0].scrollHeight*percent)}$.proxy(settings.onpreviewscroll,_this)(event)})};var previewUnbindScroll=function(){preview.unbind(mouseOrTouch("scroll","touchmove"))};codeMirror.bind({mouseover:cmBindScroll,mouseout:cmUnbindScroll,touchstart:cmBindScroll,touchend:cmUnbindScroll});if(settings.syncScrolling==="single"){return this}preview.bind({mouseover:previewBindScroll,mouseout:previewUnbindScroll,touchstart:previewBindScroll,touchend:previewUnbindScroll});return this},bindChangeEvent:function(){var _this=this;var cm=this.cm;var settings=this.settings;if(!settings.syncScrolling){return this}cm.on("change",function(_cm,changeObj){if(settings.watch){_this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px")}timer=setTimeout(function(){clearTimeout(timer);_this.save();timer=null},settings.delay)});return this},loadedDisplay:function(recreate){recreate=recreate||false;var _this=this;var editor=this.editor;var preview=this.preview;var settings=this.settings;this.containerMask.hide();this.save();if(settings.watch){preview.show()}editor.data("oldWidth",editor.width()).data("oldHeight",editor.height());this.resize();this.registerKeyMaps();$(window).resize(function(){_this.resize()});this.bindScrollEvent().bindChangeEvent();if(!recreate){$.proxy(settings.onload,this)()}this.state.loaded=true;return this},width:function(width){this.editor.css("width",typeof width==="number"?width+"px":width);this.resize();return this},height:function(height){this.editor.css("height",typeof height==="number"?height+"px":height);this.resize();return this},resize:function(width,height){width=width||null;height=height||null;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;if(width){editor.css("width",typeof width==="number"?width+"px":width)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){editor.css("height","auto");codeMirror.css("height","auto")}else{if(height){editor.css("height",typeof height==="number"?height+"px":height)}if(state.fullscreen){editor.height($(window).height())}if(settings.toolbar&&!settings.readOnly){codeMirror.css("margin-top",toolbar.height()+1).height(editor.height()-toolbar.height())}else{codeMirror.css("margin-top",0).height(editor.height())}}if(settings.watch){codeMirror.width(editor.width()/2);preview.width(!state.preview?editor.width()/2:editor.width());this.previewContainer.css("padding",settings.autoHeight?"20px 20px 50px 40px":"20px");if(settings.toolbar&&!settings.readOnly){preview.css("top",toolbar.height()+1)}else{preview.css("top",0)}if(settings.autoHeight&&!state.fullscreen&&!state.preview){preview.height("")}else{var previewHeight=settings.toolbar&&!settings.readOnly?editor.height()-toolbar.height():editor.height();preview.height(previewHeight)}}else{codeMirror.width(editor.width());preview.hide()}if(state.loaded){$.proxy(settings.onresize,this)()}return this},save:function(){var _this=this;var state=this.state;var settings=this.settings;if(timer===null&&!(!settings.watch&&state.preview)){return this}var cm=this.cm;var cmValue=cm.getValue();var previewContainer=this.previewContainer;if(settings.mode!=="gfm"&&settings.mode!=="markdown"){this.markdownTextarea.val(cmValue);return this}var marked=editormd.$marked;var markdownToC=this.markdownToC=[];var rendererOptions=this.markedRendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,pageBreak:settings.pageBreak,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,atLink:settings.atLink,emailLink:settings.emailLink,plantuml:settings.plantuml,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions=this.markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:true,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};marked.setOptions(markedOptions);var newMarkdownDoc=editormd.$marked(cmValue,markedOptions);newMarkdownDoc=editormd.filterHTMLTags(newMarkdownDoc,settings.htmlDecode);this.markdownTextarea.text(cmValue);cm.save();if(settings.saveHTMLToTextarea){this.htmlTextarea.text(newMarkdownDoc)}if(settings.watch||!settings.watch&&state.preview){previewContainer.html(newMarkdownDoc);this.previewCodeHighlight();if(settings.toc){var tocContainer=settings.tocContainer===""?previewContainer:$(settings.tocContainer);var tocMenu=tocContainer.find("."+this.classPrefix+"toc-menu");tocContainer.attr("previewContainer",settings.tocContainer===""?"true":"false");if(settings.tocContainer!==""&&tocMenu.length>0){tocMenu.remove()}editormd.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||tocContainer.find("."+this.classPrefix+"toc-menu").length>0){editormd.tocDropdownMenu(tocContainer,settings.tocTitle!==""?settings.tocTitle:this.lang.tocTitle)}if(settings.tocContainer!==""){previewContainer.find(".markdown-toc").css("border","none")}}if(settings.tex){if(!editormd.kaTeXLoaded&&settings.autoLoadModules){editormd.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;_this.katexRender()})}else{editormd.$katex=katex;this.katexRender()}}if(settings.flowChart||settings.sequenceDiagram){flowchartTimer=setTimeout(function(){clearTimeout(flowchartTimer);_this.flowChartAndSequenceDiagramRender();flowchartTimer=null},10)}if(state.loaded){$.proxy(settings.onchange,this)()}}return this},focus:function(){this.cm.focus();return this},setCursor:function(cursor){this.cm.setCursor(cursor);return this},getCursor:function(){return this.cm.getCursor()},setSelection:function(from,to){this.cm.setSelection(from,to);return this},getSelection:function(){return this.cm.getSelection()},setSelections:function(ranges){this.cm.setSelections(ranges);return this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(value){this.cm.replaceSelection(value);return this},insertValue:function(value){this.replaceSelection(value);return this},appendMarkdown:function(md){var settings=this.settings;var cm=this.cm;cm.setValue(cm.getValue()+md);return this},setMarkdown:function(md){this.cm.setValue(md||this.settings.markdown);return this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(value){this.cm.setValue(value);return this},clear:function(){this.cm.setValue("");return this},getHTML:function(){if(!this.settings.saveHTMLToTextarea){alert("Error: settings.saveHTMLToTextarea == false");return false}return this.htmlTextarea.val()},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){if(!this.settings.watch){alert("Error: settings.watch == false");return false}return this.previewContainer.html()},watch:function(callback){var settings=this.settings;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}this.state.watching=settings.watch=true;this.preview.show();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.watch);icon.removeClass(unWatchIcon).addClass(watchIcon)}this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2);timer=0;this.save().resize();if(!settings.onwatch){settings.onwatch=callback||function(){}}$.proxy(settings.onwatch,this)();return this},unwatch:function(callback){var settings=this.settings;this.state.watching=settings.watch=false;this.preview.hide();if(this.toolbar){var watchIcon=settings.toolbarIconsClass.watch;var unWatchIcon=settings.toolbarIconsClass.unwatch;var icon=this.toolbar.find(".fa[name=watch]");icon.parent().attr("title",settings.lang.toolbar.unwatch);icon.removeClass(watchIcon).addClass(unWatchIcon)}this.codeMirror.css("border-right","none").width(this.editor.width());this.resize();if(!settings.onunwatch){settings.onunwatch=callback||function(){}}$.proxy(settings.onunwatch,this)();return this},show:function(callback){callback=callback||function(){};var _this=this;this.editor.show(0,function(){$.proxy(callback,_this)()});return this},hide:function(callback){callback=callback||function(){};var _this=this;this.editor.hide(0,function(){$.proxy(callback,_this)()});return this},previewing:function(){var _this=this;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var codeMirror=this.codeMirror;var previewContainer=this.previewContainer;if($.inArray(settings.mode,["gfm","markdown"])<0){return this}if(settings.toolbar&&toolbar){toolbar.toggle();toolbar.find(".fa[name=preview]").toggleClass("active")}codeMirror.toggle();var escHandle=function(event){if(event.shiftKey&&event.keyCode===27){_this.previewed()}};if(codeMirror.css("display")==="none"){this.state.preview=true;if(this.state.fullscreen){preview.css("background","#fff")}editor.find("."+this.classPrefix+"preview-close-btn").show().bind(editormd.mouseOrTouch("click","touchend"),function(){_this.previewed()});if(!settings.watch){this.save()}else{previewContainer.css("padding","")}previewContainer.addClass(this.classPrefix+"preview-active");preview.show().css({position:"",top:0,width:editor.width(),height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()});if(this.state.loaded){$.proxy(settings.onpreviewing,this)()}$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.previewed()}},previewed:function(){var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var previewContainer=this.previewContainer;var previewCloseBtn=editor.find("."+this.classPrefix+"preview-close-btn");this.state.preview=false;this.codeMirror.show();if(settings.toolbar){toolbar.show()}preview[settings.watch?"show":"hide"]();previewCloseBtn.hide().unbind(editormd.mouseOrTouch("click","touchend"));previewContainer.removeClass(this.classPrefix+"preview-active");if(settings.watch){previewContainer.css("padding","20px")}preview.css({background:null,position:"absolute",width:editor.width()/2,height:settings.autoHeight&&!this.state.fullscreen?"auto":editor.height()-toolbar.height(),top:settings.toolbar?toolbar.height():0});if(this.state.loaded){$.proxy(settings.onpreviewed,this)()}return this},fullscreen:function(){var _this=this;var state=this.state;var editor=this.editor;var preview=this.preview;var toolbar=this.toolbar;var settings=this.settings;var fullscreenClass=this.classPrefix+"fullscreen";if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().toggleClass("active")}var escHandle=function(event){if(!event.shiftKey&&event.keyCode===27){if(state.fullscreen){_this.fullscreenExit()}}};if(!editor.hasClass(fullscreenClass)){state.fullscreen=true;$("html,body").css("overflow","hidden");editor.css({width:$(window).width(),height:$(window).height()}).addClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreen,this)();$(window).bind("keyup",escHandle)}else{$(window).unbind("keyup",escHandle);this.fullscreenExit()}return this},fullscreenExit:function(){var editor=this.editor;var settings=this.settings;var toolbar=this.toolbar;var fullscreenClass=this.classPrefix+"fullscreen";this.state.fullscreen=false;if(toolbar){toolbar.find(".fa[name=fullscreen]").parent().removeClass("active")}$("html,body").css("overflow","");editor.css({width:editor.data("oldWidth"),height:editor.data("oldHeight")}).removeClass(fullscreenClass);this.resize();$.proxy(settings.onfullscreenExit,this)();return this},executePlugin:function(name,path){var _this=this;var cm=this.cm;var settings=this.settings;path=settings.pluginPath+path;if(typeof define==="function"){if(typeof this[name]==="undefined"){alert("Error: "+name+" plugin is not found, you are not load this plugin.");return this}this[name](cm);return this}if($.inArray(path,editormd.loadFiles.plugin)<0){editormd.loadPlugin(path,function(){editormd.loadPlugins[name]=_this[name];_this[name](cm)})}else{$.proxy(editormd.loadPlugins[name],this)(cm)}return this},search:function(command){var settings=this.settings;if(!settings.searchReplace){alert("Error: settings.searchReplace == false");return this}if(!settings.readOnly){this.cm.execCommand(command||"find")}return this},searchReplace:function(){this.search("replace");return this},searchReplaceAll:function(){this.search("replaceAll");return this}};editormd.fn.init.prototype=editormd.fn;editormd.dialogLockScreen=function(){var settings=this.settings||{dialogLockScreen:true};if(settings.dialogLockScreen){$("html,body").css("overflow","hidden");this.resize()}};editormd.dialogShowMask=function(dialog){var editor=this.editor;var settings=this.settings||{dialogShowMask:true};dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"});if(settings.dialogShowMask){editor.children("."+this.classPrefix+"mask").css("z-index",parseInt(dialog.css("z-index"))-1).show()}};editormd.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("**"+selection+"**");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},del:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("~~"+selection+"~~");if(selection===""){cm.setCursor(cursor.line,cursor.ch+2)}},italic:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();cm.replaceSelection("*"+selection+"*");if(selection===""){cm.setCursor(cursor.line,cursor.ch+1)}},quote:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("> "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("> "+selection)}},ucfirst:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.firstUpperCase(selection));cm.setSelections(selections)},ucwords:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(editormd.wordsFirstUpperCase(selection));cm.setSelections(selections)},uppercase:function(){var cm=this.cm;var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toUpperCase());cm.setSelections(selections)},lowercase:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();var selections=cm.listSelections();cm.replaceSelection(selection.toLowerCase());cm.setSelections(selections)},h1:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("# "+selection);cm.setCursor(cursor.line,cursor.ch+2)}else{cm.replaceSelection("# "+selection)}},h2:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("## "+selection);cm.setCursor(cursor.line,cursor.ch+3)}else{cm.replaceSelection("## "+selection)}},h3:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("### "+selection);cm.setCursor(cursor.line,cursor.ch+4)}else{cm.replaceSelection("### "+selection)}},h4:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("#### "+selection);cm.setCursor(cursor.line,cursor.ch+5)}else{cm.replaceSelection("#### "+selection)}},h5:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("##### "+selection);cm.setCursor(cursor.line,cursor.ch+6)}else{cm.replaceSelection("##### "+selection)}},h6:function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(cursor.ch!==0){cm.setCursor(cursor.line,0);cm.replaceSelection("###### "+selection);cm.setCursor(cursor.line,cursor.ch+7)}else{cm.replaceSelection("###### "+selection)}},"list-ul":function(){var cm=this.cm;var cursor=cm.getCursor();var selection=cm.getSelection();if(selection===""){cm.replaceSelection("- "+selection)}else{var selectionText=selection.split("\n");for(var i=0,len=selectionText.length;i'}}else{var emdlogoMathcs=$1.match(editormdLogoReg);var twemojiMatchs=$1.match(twemojiReg);if(emdlogoMathcs){for(var x=0,len2=emdlogoMathcs.length;x'}}else if(twemojiMatchs){for(var t=0,len3=twemojiMatchs.length;t'}}else{var src=name==="+1"?"plus1":name;src=src==="black_large_square"?"black_square":src;src=src==="moon"?"waxing_gibbous_moon":src;return':'+name+':'}}})}return text};markedRenderer.atLink=function(text){if(atLinkReg.test(text)){if(settings.atLink){text=text.replace(emailReg,function($1,$2,$3,$4){return $1.replace(/@/g,"_#_@_#_")});text=text.replace(atLinkReg,function($1,$2){return''+$1+""}).replace(/_#_@_#_/g,"@")}if(settings.emailLink){text=text.replace(emailLinkReg,function($1,$2,$3,$4,$5){return!$2&&$.inArray($5,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+$1+"":$1})}return text}return text};markedRenderer.link=function(href,title,text){if(this.options.sanitize){try{var prot=decodeURIComponent(unescape(href)).replace(/[^\w:]/g,"").toLowerCase()}catch(e){return""}if(prot.indexOf("javascript:")===0){return""}}var out=''+text.replace(/@/g,"@")+""}if(title){out+=' title="'+title+'"'}out+=">"+text+"";return out};markedRenderer.heading=function(text,level,raw){var linkText=text;var hasLinkReg=/\s*\]*)\>(.*)\<\/a\>\s*/;var getLinkTextReg=/\s*\]+)\>([^\>]*)\<\/a\>\s*/g;if(hasLinkReg.test(text)){var tempText=[];text=text.split(/\]+)\>([^\>]*)\<\/a\>/);for(var i=0,len=text.length;i';headingHTML+='';headingHTML+='';headingHTML+=hasLinkReg?this.atLink(this.emoji(linkText)):this.atLink(this.emoji(text));headingHTML+="";return headingHTML};markedRenderer.pageBreak=function(text){if(pageBreakReg.test(text)&&settings.pageBreak){text='
                  '}return text};markedRenderer.paragraph=function(text){var isTeXInline=/\$\$(.*)\$\$/g.test(text);var isTeXLine=/^\$\$(.*)\$\$$/.test(text);var isTeXAddClass=isTeXLine?' class="'+editormd.classNames.tex+'"':"";var isToC=settings.tocm?/^(\[TOC\]|\[TOCM\])$/.test(text):/^\[TOC\]$/.test(text);var isToCMenu=/^\[TOCM\]$/.test(text);if(!isTeXLine&&isTeXInline){text=text.replace(/(\$\$([^\$]*)\$\$)+/g,function($1,$2){return''+$2.replace(/\$/g,"")+""})}else{text=isTeXLine?text.replace(/\$/g,""):text}var tocHTML='
                  '+text+"
                  ";return isToC?isToCMenu?'
                  '+tocHTML+"

                  ":tocHTML:pageBreakReg.test(text)?this.pageBreak(text):""+this.atLink(this.emoji(text))+"

                  \n"};markedRenderer.code=function(code,lang,escaped){if(lang==="seq"||lang==="sequence"){return'
                  '+code+"
                  "}else if(lang==="flow"){return'
                  '+code+"
                  "}else if(lang==="math"||lang==="latex"||lang==="katex"){return'

                  '+code+"

                  "}else if(lang==="plantuml"&&settings.plantuml){const encoded=editormd.$plantumlEncoder.encode(code);return``}else{return marked.Renderer.prototype.code.apply(this,arguments)}};markedRenderer.tablecell=function(content,flags){var type=flags.header?"th":"td";var tag=flags.align?"<"+type+' style="text-align:'+flags.align+'">':"<"+type+">";return tag+this.atLink(this.emoji(content))+"\n"};markedRenderer.listitem=function(text){if(settings.taskList&&/^\s*\[[x\s]\]\s*/.test(text)){text=text.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' ');return'
                • '+this.atLink(this.emoji(text))+"
                • "}else{return"
                • "+this.atLink(this.emoji(text))+"
                • "}};return markedRenderer};editormd.markdownToCRenderer=function(toc,container,tocDropdown,startLevel){var html="";var lastLevel=0;var classPrefix=this.classPrefix;startLevel=startLevel||1;for(var i=0,len=toc.length;ilastLevel){html+=""}else if(level")}else{html+="
              • "}html+='
              • '+text+"
                  ";lastLevel=level}var tocContainer=container.find(".markdown-toc");if(tocContainer.length<1&&container.attr("previewContainer")==="false"){var tocHTML='
                  ';tocHTML=tocDropdown?'
                  '+tocHTML+"
                  ":tocHTML;container.html(tocHTML);tocContainer=container.find(".markdown-toc")}if(tocDropdown){tocContainer.wrap('

                  ')}tocContainer.html('
                    ').children(".markdown-toc-list").html(html.replace(/\r?\n?\\<\/ul\>/g,""));return tocContainer};editormd.tocDropdownMenu=function(container,tocTitle){tocTitle=tocTitle||"Table of Contents";var zindex=400;var tocMenus=container.find("."+this.classPrefix+"toc-menu");tocMenus.each(function(){var $this=$(this);var toc=$this.children(".markdown-toc");var icon='';var btn=''+icon+tocTitle+"";var menu=toc.children("ul");var list=menu.find("li");toc.append(btn);list.first().before("
                  • "+tocTitle+" "+icon+"

                  • ");$this.mouseover(function(){menu.show();list.each(function(){var li=$(this);var ul=li.children("ul");if(ul.html()===""){ul.remove()}if(ul.length>0&&ul.html()!==""){var firstA=li.children("a").first();if(firstA.children(".fa").length<1){firstA.append($(icon).css({float:"right",paddingTop:"4px"}))}}li.mouseover(function(){ul.css("z-index",zindex).show();zindex+=1}).mouseleave(function(){ul.hide()})})}).mouseleave(function(){menu.hide()})});return tocMenus};editormd.filterHTMLTags=function(html,filters){if(typeof html!=="string"){html=new String(html)}if(typeof filters!=="string"){return html}var expression=filters.split("|");var filterTags=expression[0].split(",");var attrs=expression[1];for(var i=0,len=filterTags.length;i]*)>([^>]*)","igm"),"")}if(typeof attrs!=="undefined"){html=html.replace(/(\w+)="([^"]*)"/g,(match,key,value)=>{const escapedValue=value.replace(//g,">");return`${key}="${escapedValue}"`});var htmlTagRegex=/\<(\w+)\s*([^\>]*)\>([^\>]*)\<\/(\w+)\>/gi;if(attrs==="*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){return"<"+$2+">"+$4+""})}else if(attrs==="on*"){html=html.replace(htmlTagRegex,function($1,$2,$3,$4,$5){var el=$("<"+$2+">"+$4+"");var _attrs=$($1)[0].attributes;var $attrs={};$.each(_attrs,function(i,e){if(e.nodeName!=='"')$attrs[e.nodeName]=e.nodeValue});$.each($attrs,function(i){if(i.indexOf("on")===0){delete $attrs[i]}});el.attr($attrs);var text=typeof el[1]!=="undefined"?$(el[1]).text():"";return el[0].outerHTML+text})}else{html=html.replace(htmlTagRegex,function($1,$2,$3,$4){var filterAttrs=attrs.split(",");var el=$($1);el.html($4);$.each(filterAttrs,function(i){el.attr(filterAttrs[i],null)});return el[0].outerHTML})}}return html};editormd.markdownToHTML=function(id,options){var defaults={gfm:true,toc:true,tocm:false,tocStartLevel:1,tocTitle:"目录",tocDropdown:false,tocContainer:"",markdown:"",markdownSourceCode:false,htmlDecode:false,autoLoadKaTeX:true,pageBreak:true,atLink:true,emailLink:true,tex:false,taskList:false,emoji:false,flowChart:false,sequenceDiagram:false,previewCodeHighlight:true};editormd.$marked=marked;var div=$("#"+id);var settings=div.settings=$.extend(true,defaults,options||{});var saveTo=div.find("textarea");if(saveTo.length<1){div.append("");saveTo=div.find("textarea")}var markdownDoc=settings.markdown===""?saveTo.val():settings.markdown;var markdownToC=[];var rendererOptions={toc:settings.toc,tocm:settings.tocm,tocStartLevel:settings.tocStartLevel,taskList:settings.taskList,emoji:settings.emoji,tex:settings.tex,pageBreak:settings.pageBreak,atLink:settings.atLink,emailLink:settings.emailLink,plantuml:settings.plantuml,flowChart:settings.flowChart,sequenceDiagram:settings.sequenceDiagram,previewCodeHighlight:settings.previewCodeHighlight};var markedOptions={renderer:editormd.markedRenderer(markdownToC,rendererOptions),gfm:settings.gfm,tables:true,breaks:true,pedantic:false,sanitize:settings.htmlDecode?false:true,smartLists:true,smartypants:true};markdownDoc=new String(markdownDoc);var markdownParsed=marked(markdownDoc,markedOptions);markdownParsed=editormd.filterHTMLTags(markdownParsed,settings.htmlDecode);if(settings.markdownSourceCode){saveTo.text(markdownDoc)}else{saveTo.remove()}div.addClass("markdown-body "+this.classPrefix+"html-preview").append(markdownParsed);var tocContainer=settings.tocContainer!==""?$(settings.tocContainer):div;if(settings.tocContainer!==""){tocContainer.attr("previewContainer",false)}if(settings.toc){div.tocContainer=this.markdownToCRenderer(markdownToC,tocContainer,settings.tocDropdown,settings.tocStartLevel);if(settings.tocDropdown||div.find("."+this.classPrefix+"toc-menu").length>0){this.tocDropdownMenu(div,settings.tocTitle)}if(settings.tocContainer!==""){div.find(".editormd-toc-menu, .editormd-markdown-toc").remove()}}if(settings.previewCodeHighlight){div.find("pre").addClass("prettyprint linenums");prettyPrint()}if(!editormd.isIE8){if(settings.flowChart){div.find(".flowchart").flowChart()}if(settings.sequenceDiagram){div.find(".sequence-diagram").sequenceDiagram({theme:"simple"})}}if(settings.tex){var katexHandle=function(){div.find("."+editormd.classNames.tex).each(function(){var tex=$(this);katex.render(tex.html().replace(/</g,"<").replace(/>/g,">"),tex[0]);tex.find(".katex").css("font-size","1.6em")})};if(settings.autoLoadKaTeX&&!editormd.$katex&&!editormd.kaTeXLoaded){this.loadKaTeX(function(){editormd.$katex=katex;editormd.kaTeXLoaded=true;katexHandle()})}else{katexHandle()}}div.getMarkdown=function(){return saveTo.val()};return div};editormd.themes=["default","dark"];editormd.previewThemes=["default","dark"];editormd.editorThemes=["default","3024-day","3024-night","ambiance","ambiance-mobile","base16-dark","base16-light","blackboard","cobalt","eclipse","elegant","erlang-dark","lesser-dark","mbo","mdn-like","midnight","monokai","neat","neo","night","paraiso-dark","paraiso-light","pastel-on-dark","rubyblue","solarized","the-matrix","tomorrow-night-eighties","twilight","vibrant-ink","xq-dark","xq-light"];editormd.loadPlugins={};editormd.loadFiles={js:[],css:[],plugin:[]};editormd.loadPlugin=function(fileName,callback,into){callback=callback||function(){};this.loadScript(fileName,function(){editormd.loadFiles.plugin.push(fileName);callback()},into)};editormd.loadCSS=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var css=document.createElement("link");css.type="text/css";css.rel="stylesheet";css.onload=css.onreadystatechange=function(){editormd.loadFiles.css.push(fileName);callback()};css.href=fileName+".css";if(into==="head"){document.getElementsByTagName("head")[0].appendChild(css)}else{document.body.appendChild(css)}};editormd.isIE=navigator.appName=="Microsoft Internet Explorer";editormd.isIE8=editormd.isIE&&navigator.appVersion.match(/8./i)=="8.";editormd.loadScript=function(fileName,callback,into){into=into||"head";callback=callback||function(){};var script=null;script=document.createElement("script");script.id=fileName.replace(/[\./]+/g,"-");script.type="text/javascript";script.src=fileName+".js";if(editormd.isIE8){script.onreadystatechange=function(){if(script.readyState){if(script.readyState==="loaded"||script.readyState==="complete"){script.onreadystatechange=null;editormd.loadFiles.js.push(fileName);callback()}}}}else{script.onload=function(){editormd.loadFiles.js.push(fileName);callback()}}if(into==="head"){document.getElementsByTagName("head")[0].appendChild(script)}else{document.body.appendChild(script)}};editormd.katexURL={css:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min",js:"//cdnjs.cloudflare.com/ajax/libs/KaTeX/0.3.0/katex.min"};editormd.kaTeXLoaded=false;editormd.loadKaTeX=function(callback){editormd.loadCSS(editormd.katexURL.css,function(){editormd.loadScript(editormd.katexURL.js,callback||function(){})})};editormd.lockScreen=function(lock){$("html,body").css("overflow",lock?"hidden":"")};editormd.createDialog=function(options){var defaults={name:"",width:420,height:240,title:"",drag:true,closed:true,content:"",mask:true,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:true,footer:true,buttons:false};options=$.extend(true,defaults,options);var $this=this;var editor=this.editor;var classPrefix=editormd.classPrefix;var guid=(new Date).getTime();var dialogName=options.name===""?classPrefix+"dialog-"+guid:options.name;var mouseOrTouch=editormd.mouseOrTouch;var html='
                    ';if(options.title!==""){html+='
                    ";html+=''+options.title+"";html+="
                    "}if(options.closed){html+=''}html+='
                    '+options.content;if(options.footer||typeof options.footer==="string"){html+='"}html+="
                    ";html+='
                    ';html+='
                    ';html+="
                    ";editor.append(html);var dialog=editor.find("."+dialogName);dialog.lockScreen=function(lock){if(options.lockScreen){$("html,body").css("overflow",lock?"hidden":"");$this.resize()}return dialog};dialog.showMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").css(options.maskStyle).css("z-index",editormd.dialogZindex-1).show()}return dialog};dialog.hideMask=function(){if(options.mask){editor.find("."+classPrefix+"mask").hide()}return dialog};dialog.loading=function(show){var loading=dialog.find("."+classPrefix+"dialog-mask");loading[show?"show":"hide"]();return dialog};dialog.lockScreen(true).showMask();dialog.show().css({zIndex:editormd.dialogZindex,border:editormd.isIE8?"1px solid #ddd":"",width:typeof options.width==="number"?options.width+"px":options.width,height:typeof options.height==="number"?options.height+"px":options.height});var dialogPosition=function(){dialog.css({top:($(window).height()-dialog.height())/2+"px",left:($(window).width()-dialog.width())/2+"px"})};dialogPosition();$(window).resize(dialogPosition);dialog.children("."+classPrefix+"dialog-close").bind(mouseOrTouch("click","touchend"),function(){dialog.hide().lockScreen(false).hideMask()});if(typeof options.buttons==="object"){var footer=dialog.footer=dialog.find("."+classPrefix+"dialog-footer");for(var key in options.buttons){var btn=options.buttons[key];var btnClassName=classPrefix+key+"-btn";footer.append('");btn[1]=$.proxy(btn[1],dialog);footer.children("."+btnClassName).bind(mouseOrTouch("click","touchend"),btn[1])}}if(options.title!==""&&options.drag){var posX,posY;var dialogHeader=dialog.children("."+classPrefix+"dialog-header");if(!options.mask){dialogHeader.bind(mouseOrTouch("click","touchend"),function(){editormd.dialogZindex+=2;dialog.css("z-index",editormd.dialogZindex)})}dialogHeader.mousedown(function(e){e=e||window.event;posX=e.clientX-parseInt(dialog[0].style.left);posY=e.clientY-parseInt(dialog[0].style.top);document.onmousemove=moveAction});var userCanSelect=function(obj){obj.removeClass(classPrefix+"user-unselect").off("selectstart")};var userUnselect=function(obj){obj.addClass(classPrefix+"user-unselect").on("selectstart",function(event){return false})};var moveAction=function(e){e=e||window.event;var left,top,nowLeft=parseInt(dialog[0].style.left),nowTop=parseInt(dialog[0].style.top);if(nowLeft>=0){if(nowLeft+dialog.width()<=$(window).width()){left=e.clientX-posX}else{left=$(window).width()-dialog.width();document.onmousemove=null}}else{left=0;document.onmousemove=null}if(nowTop>=0){top=e.clientY-posY}else{top=0;document.onmousemove=null}document.onselectstart=function(){return false};userUnselect($("body"));userUnselect(dialog);dialog[0].style.left=left+"px";dialog[0].style.top=top+"px"};document.onmouseup=function(){userCanSelect($("body"));userCanSelect(dialog);document.onselectstart=null;document.onmousemove=null};dialogHeader.touchDraggable=function(){var offset=null;var start=function(e){var orig=e.originalEvent;var pos=$(this).parent().position();offset={x:orig.changedTouches[0].pageX-pos.left,y:orig.changedTouches[0].pageY-pos.top}};var move=function(e){e.preventDefault();var orig=e.originalEvent;$(this).parent().css({top:orig.changedTouches[0].pageY-offset.y,left:orig.changedTouches[0].pageX-offset.x})};this.bind("touchstart",start).bind("touchmove",move)};dialogHeader.touchDraggable()}editormd.dialogZindex+=2;return dialog};editormd.mouseOrTouch=function(mouseEventType,touchEventType){mouseEventType=mouseEventType||"click";touchEventType=touchEventType||"touchend";var eventType=mouseEventType;try{document.createEvent("TouchEvent");eventType=touchEventType}catch(e){}return eventType};editormd.dateFormat=function(format){format=format||"";var addZero=function(d){return d<10?"0"+d:d};var date=new Date;var year=date.getFullYear();var year2=year.toString().slice(2,4);var month=addZero(date.getMonth()+1);var day=addZero(date.getDate());var weekDay=date.getDay();var hour=addZero(date.getHours());var min=addZero(date.getMinutes());var second=addZero(date.getSeconds());var ms=addZero(date.getMilliseconds());var datefmt="";var ymd=year2+"-"+month+"-"+day;var fymd=year+"-"+month+"-"+day;var hms=hour+":"+min+":"+second;switch(format){case"UNIX Time":datefmt=date.getTime();break;case"UTC":datefmt=date.toUTCString();break;case"yy":datefmt=year2;break;case"year":case"yyyy":datefmt=year;break;case"month":case"mm":datefmt=month;break;case"cn-week-day":case"cn-wd":var cnWeekDays=["日","一","二","三","四","五","六"];datefmt="星期"+cnWeekDays[weekDay];break;case"week-day":case"wd":var weekDays=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];datefmt=weekDays[weekDay];break;case"day":case"dd":datefmt=day;break;case"hour":case"hh":datefmt=hour;break;case"min":case"ii":datefmt=min;break;case"second":case"ss":datefmt=second;break;case"ms":datefmt=ms;break;case"yy-mm-dd":datefmt=ymd;break;case"yyyy-mm-dd":datefmt=fymd;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":datefmt=fymd+" "+hms+" "+ms;break;case"full":case"yyyy-mm-dd h:i:s":default:datefmt=fymd+" "+hms;break}return datefmt};return editormd}); \ No newline at end of file diff --git a/public/static/editor.md/lib/plantuml-encoder.min.js b/public/static/editor.md/lib/plantuml-encoder.min.js new file mode 100644 index 0000000..ecbffd7 --- /dev/null +++ b/public/static/editor.md/lib/plantuml-encoder.min.js @@ -0,0 +1,6 @@ +/** + * plantuml-encoder 1.4.0 - PlantUML encoder for browsers and Node.js + * author: Markus Hedvall + * https://github.com/markushedvall/plantuml-encoder + */ +!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).plantumlEncoder=t()}}(function(){return function i(s,h,o){function l(e,t){if(!h[e]){if(!s[e]){var a="function"==typeof require&&require;if(!t&&a)return a(e,!0);if(_)return _(e,!0);var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}var r=h[e]={exports:{}};s[e][0].call(r.exports,function(t){return l(s[e][1][t]||t)},r,r.exports,i,s,h,o)}return h[e].exports}for(var _="function"==typeof require&&require,t=0;t>4,r=(15&e)<<2|a>>6,i=63&a,s="";return s+=h(63&t>>2),s+=h(63&n),s+=h(63&r),s+=h(63&i)}e.exports=function(t){for(var e="",a=0;a>>6:(a<65536?e[i++]=224|a>>>12:(e[i++]=240|a>>>18,e[i++]=128|a>>>12&63),e[i++]=128|a>>>6&63),e[i++]=128|63&a);return e},a.buf2binstring=function(t){return _(t,t.length)},a.binstring2buf=function(t){for(var e=new o.Buf8(t.length),a=0,n=e.length;a>10&1023,h[n++]=56320|1023&r)}return _(h,n)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;0<=a&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+l[t[a]]>e?a:e}},{"./common":5}],7:[function(t,e,a){"use strict";e.exports=function(t,e,a,n){for(var r=65535&t|0,i=t>>>16&65535|0,s=0;0!==a;){for(a-=s=2e3>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,n){var r=h,i=n+a;t^=-1;for(var s=n;s>>8^r[255&(t^e[s])];return-1^t}},{}],9:[function(t,e,a){"use strict";var o,u=t("../utils/common"),l=t("./trees"),f=t("./adler32"),c=t("./crc32"),n=t("./messages"),_=0,d=4,p=0,g=-2,m=-1,b=4,r=2,v=8,w=9,i=286,s=30,h=19,y=2*i+1,k=15,z=3,x=258,A=x+z+1,B=42,C=113,S=1,E=2,j=3,U=4;function D(t,e){return t.msg=n[e],e}function I(t){return(t<<1)-(4t.avail_out&&(a=t.avail_out),0!==a&&(u.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function R(t,e){l._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,q(t.strm)}function T(t,e){t.pending_buf[t.pending++]=e}function L(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function N(t,e){var a,n,r=t.max_chain_length,i=t.strstart,s=t.prev_length,h=t.nice_match,o=t.strstart>t.w_size-A?t.strstart-(t.w_size-A):0,l=t.window,_=t.w_mask,d=t.prev,u=t.strstart+x,f=l[i+s-1],c=l[i+s];t.prev_length>=t.good_match&&(r>>=2),h>t.lookahead&&(h=t.lookahead);do{if(l[(a=e)+s]===c&&l[a+s-1]===f&&l[a]===l[i]&&l[++a]===l[i+1]){i+=2,a++;do{}while(l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&io&&0!=--r);return s<=t.lookahead?s:t.lookahead}function H(t){var e,a,n,r,i,s,h,o,l,_,d=t.w_size;do{if(r=t.window_size-t.lookahead-t.strstart,t.strstart>=d+(d-A)){for(u.arraySet(t.window,t.window,d,d,0),t.match_start-=d,t.strstart-=d,t.block_start-=d,e=a=t.hash_size;n=t.head[--e],t.head[e]=d<=n?n-d:0,--a;);for(e=a=d;n=t.prev[--e],t.prev[e]=d<=n?n-d:0,--a;);r+=d}if(0===t.strm.avail_in)break;if(s=t.strm,h=t.window,o=t.strstart+t.lookahead,l=r,_=void 0,_=s.avail_in,l<_&&(_=l),a=0===_?0:(s.avail_in-=_,u.arraySet(h,s.input,s.next_in,_,o),1===s.state.wrap?s.adler=f(s.adler,h,_,o):2===s.state.wrap&&(s.adler=c(s.adler,h,_,o)),s.next_in+=_,s.total_in+=_,_),t.lookahead+=a,t.lookahead+t.insert>=z)for(i=t.strstart-t.insert,t.ins_h=t.window[i],t.ins_h=(t.ins_h<=z&&(t.ins_h=(t.ins_h<=z)if(n=l._tr_tally(t,t.strstart-t.match_start,t.match_length-z),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=z){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<=z&&(t.ins_h=(t.ins_h<=z&&t.match_length<=t.prev_length){for(r=t.strstart+t.lookahead-z,n=l._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-z),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=r&&(t.ins_h=(t.ins_h<t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(H(t),0===t.lookahead&&e===_)return S;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var n=t.block_start+a;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,R(t,!1),0===t.strm.avail_out))return S;if(t.strstart-t.block_start>=t.w_size-A&&(R(t,!1),0===t.strm.avail_out))return S}return t.insert=0,e===d?(R(t,!0),0===t.strm.avail_out?j:U):(t.strstart>t.block_start&&(R(t,!1),t.strm.avail_out),S)}),new M(4,4,8,4,F),new M(4,5,16,8,F),new M(4,6,32,32,F),new M(4,4,16,16,K),new M(8,16,32,32,K),new M(8,16,128,128,K),new M(8,32,128,256,K),new M(32,128,258,1024,K),new M(32,258,258,4096,K)],a.deflateInit=function(t,e){return Q(t,e,v,15,8,0)},a.deflateInit2=Q,a.deflateReset=J,a.deflateResetKeep=G,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,p):g},a.deflate=function(t,e){var a,n,r,i;if(!t||!t.state||5>8&255),T(n,n.gzhead.time>>16&255),T(n,n.gzhead.time>>24&255),T(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),T(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(T(n,255&n.gzhead.extra.length),T(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=c(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(T(n,0),T(n,0),T(n,0),T(n,0),T(n,0),T(n,9===n.level?2:2<=n.strategy||n.level<2?4:0),T(n,3),n.status=C);else{var s=v+(n.w_bits-8<<4)<<8;s|=(2<=n.strategy||n.level<2?0:n.level<6?1:6===n.level?2:3)<<6,0!==n.strstart&&(s|=32),s+=31-s%31,n.status=C,L(n,s),0!==n.strstart&&(L(n,t.adler>>>16),L(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(r=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>r&&(t.adler=c(t.adler,n.pending_buf,n.pending-r,r)),q(t),r=n.pending,n.pending!==n.pending_buf_size));)T(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>r&&(t.adler=c(t.adler,n.pending_buf,n.pending-r,r)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(t.adler=c(t.adler,n.pending_buf,n.pending-r,r)),q(t),r=n.pending,n.pending===n.pending_buf_size)){i=1;break}i=n.gzindexr&&(t.adler=c(t.adler,n.pending_buf,n.pending-r,r)),0===i&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){r=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>r&&(t.adler=c(t.adler,n.pending_buf,n.pending-r,r)),q(t),r=n.pending,n.pending===n.pending_buf_size)){i=1;break}i=n.gzindexr&&(t.adler=c(t.adler,n.pending_buf,n.pending-r,r)),0===i&&(n.status=103)}else n.status=103;if(103===n.status&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&q(t),n.pending+2<=n.pending_buf_size&&(T(n,255&t.adler),T(n,t.adler>>8&255),t.adler=0,n.status=C)):n.status=C),0!==n.pending){if(q(t),0===t.avail_out)return n.last_flush=-1,p}else if(0===t.avail_in&&I(e)<=I(a)&&e!==d)return D(t,-5);if(666===n.status&&0!==t.avail_in)return D(t,-5);if(0!==t.avail_in||0!==n.lookahead||e!==_&&666!==n.status){var h=2===n.strategy?function(t,e){for(var a;;){if(0===t.lookahead&&(H(t),0===t.lookahead)){if(e===_)return S;break}if(t.match_length=0,a=l._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(R(t,!1),0===t.strm.avail_out))return S}return t.insert=0,e===d?(R(t,!0),0===t.strm.avail_out?j:U):t.last_lit&&(R(t,!1),0===t.strm.avail_out)?S:E}(n,e):3===n.strategy?function(t,e){for(var a,n,r,i,s=t.window;;){if(t.lookahead<=x){if(H(t),t.lookahead<=x&&e===_)return S;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=z&&0t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=z?(a=l._tr_tally(t,1,t.match_length-z),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=l._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(R(t,!1),0===t.strm.avail_out))return S}return t.insert=0,e===d?(R(t,!0),0===t.strm.avail_out?j:U):t.last_lit&&(R(t,!1),0===t.strm.avail_out)?S:E}(n,e):o[n.level].func(n,e);if(h!==j&&h!==U||(n.status=666),h===S||h===j)return 0===t.avail_out&&(n.last_flush=-1),p;if(h===E&&(1===e?l._tr_align(n):5!==e&&(l._tr_stored_block(n,0,0,!1),3===e&&(O(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),q(t),0===t.avail_out))return n.last_flush=-1,p}return e!==d?p:n.wrap<=0?1:(2===n.wrap?(T(n,255&t.adler),T(n,t.adler>>8&255),T(n,t.adler>>16&255),T(n,t.adler>>24&255),T(n,255&t.total_in),T(n,t.total_in>>8&255),T(n,t.total_in>>16&255),T(n,t.total_in>>24&255)):(L(n,t.adler>>>16),L(n,65535&t.adler)),q(t),0=a.w_size&&(0===i&&(O(a.head),a.strstart=0,a.block_start=0,a.insert=0),l=new u.Buf8(a.w_size),u.arraySet(l,e,_-a.w_size,a.w_size,0),e=l,_=a.w_size),s=t.avail_in,h=t.next_in,o=t.input,t.avail_in=_,t.next_in=0,t.input=e,H(a);a.lookahead>=z;){for(n=a.strstart,r=a.lookahead-(z-1);a.ins_h=(a.ins_h<>>7)]}function T(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function L(t,e,a){t.bi_valid>f-a?(t.bi_buf|=e<>f-t.bi_valid,t.bi_valid+=a-f):(t.bi_buf|=e<>>=1,a<<=1,0<--e;);return a>>>1}function F(t,e,a){var n,r,i=new Array(m+1),s=0;for(n=1;n<=m;n++)i[n]=s=s+a[n-1]<<1;for(r=0;r<=e;r++){var h=t[2*r+1];0!==h&&(t[2*r]=H(i[h]++,h))}}function K(t){var e;for(e=0;e<_;e++)t.dyn_ltree[2*e]=0;for(e=0;e>1;1<=a;a--)G(t,i,a);for(r=o;a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],G(t,i,1),n=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=n,i[2*r]=i[2*a]+i[2*n],t.depth[r]=(t.depth[a]>=t.depth[n]?t.depth[a]:t.depth[n])+1,i[2*a+1]=i[2*n+1]=r,t.heap[1]=r++,G(t,i,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,n,r,i,s,h,o=e.dyn_tree,l=e.max_code,_=e.stat_desc.static_tree,d=e.stat_desc.has_stree,u=e.stat_desc.extra_bits,f=e.stat_desc.extra_base,c=e.stat_desc.max_length,p=0;for(i=0;i<=m;i++)t.bl_count[i]=0;for(o[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a>=7;n>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return h;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return o;for(e=32;e>>3,(i=t.static_len+3+7>>>3)<=r&&(r=i)):r=i=a+5,a+4<=r&&-1!==e?Y(t,e,a,n):4===t.strategy||i===r?(L(t,2+(n?1:0),3),J(t,A,B)):(L(t,4+(n?1:0),3),function(t,e,a,n){var r;for(L(t,e-257,5),L(t,a-1,5),L(t,n-4,4),r=0;r>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(S[a]+l+1)]++,t.dyn_dtree[2*R(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){L(t,2,3),N(t,p,A),function(t){16===t.bi_valid?(T(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):8<=t.bi_valid&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)}(t)}},{"../utils/common":5}],12:[function(t,e,a){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}]},{},[3])(3)}); \ No newline at end of file diff --git a/public/static/editor.md/src/editormd.js b/public/static/editor.md/src/editormd.js index 8fabc2a..751596f 100644 --- a/public/static/editor.md/src/editormd.js +++ b/public/static/editor.md/src/editormd.js @@ -549,6 +549,12 @@ return ; } + if (settings.plantuml) { + editormd.loadScript(loadPath + "plantuml-encoder.min", function() { + editormd.$plantumlEncoder = plantumlEncoder; + }); + } + if (settings.flowChart || settings.sequenceDiagram) { editormd.loadScript(loadPath + "raphael.min", function() { @@ -2039,6 +2045,7 @@ tex : settings.tex, atLink : settings.atLink, // for @link emailLink : settings.emailLink, // for mail address auto link + plantuml : settings.plantuml, flowChart : settings.flowChart, sequenceDiagram : settings.sequenceDiagram, previewCodeHighlight : settings.previewCodeHighlight, @@ -3439,6 +3446,7 @@ taskList : false, // Enable Github Flavored Markdown task lists emoji : false, // :emoji: , Support Twemoji, fontAwesome, Editor.md logo emojis. tex : false, // TeX(LaTeX), based on KaTeX + plantuml : false, flowChart : false, // flowChart.js only support IE9+ sequenceDiagram : false, // sequenceDiagram.js only support IE9+ }; @@ -3677,7 +3685,11 @@ else if ( lang === "math" || lang === "latex" || lang === "katex") { return "

                    " + code + "

                    "; - } + } + else if ( lang === "plantuml" && settings.plantuml ) { + const encoded = editormd.$plantumlEncoder.encode(code); + return ``; + } else { @@ -3993,6 +4005,7 @@ pageBreak : settings.pageBreak, atLink : settings.atLink, // for @link emailLink : settings.emailLink, // for mail address auto link + plantuml : settings.plantuml, flowChart : settings.flowChart, sequenceDiagram : settings.sequenceDiagram, previewCodeHighlight : settings.previewCodeHighlight, diff --git a/src/components/MarkdownEditor.vue b/src/components/MarkdownEditor.vue index e068bad..0e00e1b 100644 --- a/src/components/MarkdownEditor.vue +++ b/src/components/MarkdownEditor.vue @@ -148,6 +148,7 @@ export default { htmlDecode: 'style,script,iframe|on*', // 开启 HTML 标签解析,为了安全性,默认不开启 tocm: true, // Using [TOCM] tex: true, // 开启科学公式TeX语言支持,默认关闭 + plantuml: true, // 开启 plantuml 解析,默认关闭 flowChart: true, // 开启流程图支持,默认关闭 sequenceDiagram: true, // 开启时序/序列图支持,默认关闭 taskList: true,