diff --git a/.gitignore b/.gitignore
index 41f92bf1..9a85439c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,7 @@ node_modules/
research/
test/
backup/
-examples/uploads/
+examples/uploads/**/*
*.bat
*.sh
.project
diff --git a/CHANGE.md b/CHANGE.md
index b78fa61d..29383923 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -346,4 +346,75 @@ v1.2.0 主要更新:
- 新增配置项`atLink`,默认为`true`;
- 修复无法输入`/`的问题 [#42](https://github.com/pandao/editor.md/issues/42);
- 修改使用帮助说明的错误 [#43](https://github.com/pandao/editor.md/issues/43);
-- 新增配置项`pluginPath`,默认为空时,等于`settings.path + "../plugins/"`;
\ No newline at end of file
+- 新增配置项`pluginPath`,默认为空时,等于`settings.path + "../plugins/"`;
+
+### v1.4
+
+#### v1.4.0
+
+主要更新:
+
+- 新增延迟解析机制,预览更即时;
+- 新增跳转到指定行的功能和对话框;
+- 新增ToC下拉菜单、自定义ToC容器的功能;
+- 新增跳转到行、搜索的工具栏按钮;
+- 新增支持插入和解析(打印)分页符;
+- 改进快捷键功能和自动高度模式等;
+- 改进:将锚点链接改名为引用链接;
+- 改进编辑器重建和重配置功能;
+- 修复多个Bug;
+
+具体更新:
+
+- 新增延迟解析预览的机制,解决输入太多太快出现的 “延迟卡顿” 问题;
+ - 新增配置项`delay`,默认值为 `300`;
+ - 修复当输入速度太快时,解析Flowchart会抛出错误的问题;
+- 修改iPad等移动终端的浏览器无法上传图片的问题[#48](https://github.com/pandao/editor.md/issues/48);
+- 修复单独引用`editormd.preview.css`时无法显示Font Awesome和Editor.md logo字体的问题;
+- 更新和修改Gulp构建;
+ - 修改了`Gulpfile.js`,并且`gulp-ruby-sass`升级到最新版本`1.0.0-alpha.3`;
+ - 编辑SCSS时,不再生成CSS的Source map文件;
+- 执行jshint和更正一些JS写法的不规范,精简了代码;
+- 新增配置项`appendMarkdown`和`appendMarkdown()`方法,用于(初始化前后)追加Markdown到Textarea;
+- 改进部分预设快捷键功能,包括F9(watch)、F10(preview)、F11(fullscreen)等;
+- 修复自动高度模式下出现的几个问题;
+ - 全屏退出时高度不正确的问题:修改了`fullscreenExit()`方法的内部实现;
+ - 当解析预览后的HTML内容高度高于Markdown源码编辑器高度时,无法正确预览的问题[#49](https://github.com/pandao/editor.md/issues/49);
+- 修改`onscroll`和`onpreviewscroll`无法访问`this`的问题;
+- 修改`init()`方法,可以只设置一个参数;
+- 新增插入TeX(KaTeX)公式的快捷键`Ctrl + Shift + K`和插入方法`tex()`;
+- 将锚点链接改为引用链接,引用的链接改为插入到页尾;
+ - 工具栏的名称`anchor`改为`reference-link`;
+ - 工具栏的名称`htmlEntities`改名为`html-entities`;
+- 改进编辑器重建和重配置功能;
+ - 修改了`loadedDisplay()`方法;
+ - 修改了`config()`和`recreate()`方法;
+- 新增跳转到指定行的功能;
+ - 新增方法`gotoLine()`;
+ - 新增跳转到行对话框插件`goto-line-dialog`;
+ - 新增快捷键`Ctrl + Alt + G`;
+ - 改进`executePlugin()`方法;
+ - 修改了`help-dialog/help.md`;
+- 新增搜索工具栏按钮;
+ - 新增方法`search()`、`searchReplace()`和`searchReplaceAll()`;
+ - 原全屏预览HTML按钮的图标改为`fa-desktop`;
+ - 改为默认开启搜索替换功能;
+- 更换了关于Editor.md的标语(slogan);
+- 标题按钮`h`改为大写的`H`;
+- `saveToTextareas()`方法更名为`save()`;
+- 新增ToC下拉菜单、自定义ToC容器的功能;
+ - 新增Markdown扩展语法`[TOCM]`,自动生成ToC下拉菜单;
+ - 新增配置项`tocm`,默认为`true`,即可以使用`[TOCM]`;
+ - 新增配置项`tocDropdown`和`tocTitle`;
+ - 新增方法`editormd.tocDropdownMenu()`;
+ - 新增配置项`tocContainer`,值为jQuery选择器,默认为空;
+- 修改了配置项`placeholder`的默认值;
+- 改进对IE8的兼容支持;
+- 修复Firefox下因为`Object.watch()`而出现的问题;
+- 新增支持插入和解析(打印)分页符;
+ - 新增配置项`pageBreak`,默认值为`true`;
+ - 新增语法`[========]`,即括号内至少8个等号;
+ - 新增插入分页符的工具栏图标和方法`pagebreak()`;
+ - 新增插入分页符的快捷键`Shift + Alt + P`;
+- 修复一些Bug,包括[#51](https://github.com/pandao/editor.md/issues/51)等;
+- 新增和修改以上更新的相关示例;
\ No newline at end of file
diff --git a/Gulpfile.js b/Gulpfile.js
index c6f5b01c..a5aa4b19 100644
--- a/Gulpfile.js
+++ b/Gulpfile.js
@@ -41,24 +41,23 @@ var scssTask = function(fileName, path) {
var distPath = "css";
- return gulp.src(path + fileName + ".scss")
- .pipe(sass({ style: "expanded" })) //nested,compact,expanded,compressed
- .pipe(gulp.dest(distPath))
- .pipe(header(headerComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base);
- return name[1].replace("\\", "");
- }}))
- .pipe(gulp.dest(distPath))
- .pipe(rename({ suffix: ".min" }))
- .pipe(gulp.dest(distPath))
- .pipe(minifycss())
- .pipe(gulp.dest(distPath))
- .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base);
- return name[1].replace("\\", "");
- }}))
- .pipe(gulp.dest(distPath))
- .pipe(notify({ message: fileName + ".scss task completed!" }));
+ return sass(path + fileName + ".scss", { style: "expanded", sourcemap: false, noCache : true })
+ .pipe(gulp.dest(distPath))
+ .pipe(header(headerComment, {pkg : pkg, fileName : function(file) {
+ var name = file.path.split(file.base);
+ return name[1].replace("\\", "");
+ }}))
+ .pipe(gulp.dest(distPath))
+ .pipe(rename({ suffix: ".min" }))
+ .pipe(gulp.dest(distPath))
+ .pipe(minifycss())
+ .pipe(gulp.dest(distPath))
+ .pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
+ var name = file.path.split(file.base);
+ return name[1].replace("\\", "");
+ }}))
+ .pipe(gulp.dest(distPath))
+ .pipe(notify({ message: fileName + ".scss task completed!" }));
};
gulp.task("scss", function() {
@@ -83,7 +82,7 @@ gulp.task("js", function() {
}}))
.pipe(gulp.dest("./"))
.pipe(rename({ suffix: ".min" }))
- .pipe(uglify({outSourceMap: true, sourceRoot: './'}))
+ .pipe(uglify()) // {outSourceMap: true, sourceRoot: './'}
.pipe(gulp.dest("./"))
.pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
var name = file.path.split(file.base + ( (os.platform() === "win32") ? "\\" : "/") );
@@ -185,7 +184,7 @@ gulp.task("amd", function() {
.pipe(replace("/* Require.js assignment replace */", replaceText2))
.pipe(gulp.dest('./'))
.pipe(rename({ suffix: ".min" }))
- .pipe(uglify({outSourceMap: true, sourceRoot: './'}))
+ .pipe(uglify()) //{outSourceMap: true, sourceRoot: './'}
.pipe(gulp.dest("./"))
.pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
var name = file.path.split(file.base + ( (os.platform() === "win32") ? "\\" : "/") );
@@ -275,11 +274,11 @@ gulp.task("cm-mode", function() {
return gulp.src(modes)
.pipe(concat("modes.min.js"))
.pipe(gulp.dest(codeMirror.path.dist))
- .pipe(uglify({outSourceMap: true, sourceRoot: codeMirror.path.dist}))
+ .pipe(uglify()) // {outSourceMap: true, sourceRoot: codeMirror.path.dist}
.pipe(gulp.dest(codeMirror.path.dist))
.pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
- var name = file.path.split(file.base + "\\");
- return name[1].replace("\\", "");
+ var name = file.path.split(file.base + "\\");
+ return (name[1]?name[1]:name[0]).replace(/\\/g, "");
}}))
.pipe(gulp.dest(codeMirror.path.dist))
.pipe(notify({ message: "codemirror-mode task complete!" }));
@@ -297,11 +296,11 @@ gulp.task("cm-addon", function() {
return gulp.src(addons)
.pipe(concat("addons.min.js"))
.pipe(gulp.dest(codeMirror.path.dist))
- .pipe(uglify({outSourceMap: true, sourceRoot: codeMirror.path.dist}))
+ .pipe(uglify()) //{outSourceMap: true, sourceRoot: codeMirror.path.dist}
.pipe(gulp.dest(codeMirror.path.dist))
.pipe(header(headerMiniComment, {pkg : pkg, fileName : function(file) {
var name = file.path.split(file.base + "\\");
- return name[1].replace("\\", "");
+ return (name[1]?name[1]:name[0]).replace(/\\/g, "");
}}))
.pipe(gulp.dest(codeMirror.path.dist))
.pipe(notify({ message: "codemirror-addon.js task complete" }));
diff --git a/README.md b/README.md
index e9380a68..217da680 100644
--- a/README.md
+++ b/README.md
@@ -9,9 +9,9 @@
![](https://img.shields.io/github/issues/pandao/editor.md.svg)
![](https://img.shields.io/bower/v/editor.md.svg)
-**Editor.md** is an online markdown editor, based on CodeMirror & jQuery & Marked.
+**Editor.md** is the open source online markdown editor, based on CodeMirror & jQuery & Marked.
-###Features
+### Features
- Support Standard Markdown and GFM(GitHub Flavored Markdown);
- Full-featured: Real-time Preview, Image (cross-domain) upload, Preformatted text/Code blocks/Tables insert, Code fold, Search replace, Read only, Themes, Multi-languages, L18n, HTML entities, Code syntax highlighting...;
@@ -22,14 +22,16 @@
- Support AMD/CMD (Require.js & Sea.js) Module Loader, and Custom/define editor plugins;
[README & Examples (English)](https://pandao.github.io/editor.md/en.html)
+
--------
+
**Editor.md** 是一个基于CodeMirror、jQuery 和 Marked 构建的 Markdown 在线编辑器。
![editormd-screenshot](https://pandao.github.io/editor.md/examples/images/editormd-screenshot.png "editormd-screenshot")
-####主要特性
+#### 主要特性
- 支持“标准”Markdown和Github风格的语法,也可[变身为代码编辑器](https://pandao.github.io/editor.md/examples/change-mode.html);
- 支持实时预览、图片(跨域)上传、预格式文本/代码/表格插入、代码折叠、搜索替换、只读模式、自定义样式主题和多语言语法高亮等功能;
@@ -39,36 +41,44 @@
- 支持 AMD / CMD 模块化加载(支持 [Require.js](https://pandao.github.io/editor.md/examples/use-requirejs.html) & [Sea.js](https://pandao.github.io/editor.md/examples/use-seajs.html)),并且支持[自定义扩展插件](https://pandao.github.io/editor.md/examples/define-plugin.html);
- 兼容主流的浏览器(IE8+)和[Zepto.js](https://pandao.github.io/editor.md/examples/use-zepto.html),且支持iPad等平板设备;
-####在线演示 (Examples)
+#### 在线演示 (Examples)
[https://pandao.github.io/editor.md/examples/index.html](https://pandao.github.io/editor.md/examples/index.html)
-####下载和安装 (Download & install)
+#### 下载和安装 (Download & install)
通过 [Github下载安装](https://github.com/pandao/editor.md/archive/master.zip),或者通过 Bower 安装:
bower install editor.md
-####使用方法 (Usage)
+#### 使用方法 (Usage)
HTML:
-
-
-
+
+
+
> 提示1:如果没有Markdown源内容或者通过Ajax异步加载Markdown源文档等,可以不添加`
"
@@ -1219,9 +1352,8 @@
var _this = this;
var editor = this.editor;
- var settings = this.settings;
- var classPrefix = this.classPrefix;
- var infoDialog = this.infoDialog = editor.children("." + classPrefix + "dialog-info");
+ var settings = this.settings;
+ var infoDialog = this.infoDialog = editor.children("." + this.classPrefix + "dialog-info");
if (infoDialog.length < 1)
{
@@ -1283,22 +1415,13 @@
var _this = this;
var editor = this.editor;
var settings = this.settings;
- var toolbarIcons = settings.toolbarIcons();
this.codeMirror.remove();
this.setCodeMirror();
-
- if (typeof this.infoDialog !== "undefined") {
- this.infoDialog.remove();
- }
-
- if (typeof toolbarIcons["info"] !== "undefined") {
- createInfoDialog();
- }
if (!settings.readOnly)
- {
+ {
if (editor.find(".editormd-dialog").length > 0) {
editor.find(".editormd-dialog").remove();
}
@@ -1310,9 +1433,7 @@
}
}
- this.saveToTextareas();
- this.resize();
- this.registerKeyMaps();
+ this.loadedDisplay(true);
return this;
},
@@ -1350,9 +1471,12 @@
katexRender : function() {
- var previewContainer = this.previewContainer;
+ if (timer === null)
+ {
+ return this;
+ }
- previewContainer.find("." + editormd.classNames.tex).each(function(){
+ this.previewContainer.find("." + editormd.classNames.tex).each(function(){
var tex = $(this);
editormd.$katex.render(tex.html(), tex[0]);
});
@@ -1372,9 +1496,15 @@
var settings = this.settings;
var previewContainer = this.previewContainer;
- if (editormd.isIE8) return ;
+ if (editormd.isIE8) {
+ return this;
+ }
if (settings.flowChart) {
+ if (flowchartTimer === null) {
+ return this;
+ }
+
previewContainer.find(".flowchart").flowChart();
}
@@ -1394,17 +1524,20 @@
*/
registerKeyMaps : function(keyMap) {
- keyMap = keyMap || null;
- var _this = this;
- var cm = this.cm;
- var settings = this.settings;
+ 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, settings.disabledKeyMaps) < 0)
+ if ($.inArray(i, disabledKeyMaps) < 0)
{
var map = {};
map[i] = keyMap[i];
@@ -1415,17 +1548,17 @@
}
else
{
- for (var i in editormd.keyMaps)
+ for (var k in editormd.keyMaps)
{
- var keyMap = editormd.keyMaps[i];
- var handle = (typeof keyMap === "string") ? $.proxy(editormd.toolbarHandlers[keyMap], _this) : $.proxy(keyMap, _this);
+ var _keyMap = editormd.keyMaps[k];
+ var handle = (typeof _keyMap === "string") ? $.proxy(toolbarHandlers[_keyMap], _this) : $.proxy(_keyMap, _this);
- if ($.inArray(i, ["F9", "F10", "F11"]) < 0 && $.inArray(i, settings.disabledKeyMaps) < 0)
+ if ($.inArray(k, ["F9", "F10", "F11"]) < 0 && $.inArray(k, disabledKeyMaps) < 0)
{
- var map = {};
- map[i] = handle;
+ var _map = {};
+ _map[k] = handle;
- cm.addKeyMap(map);
+ cm.addKeyMap(_map);
}
}
@@ -1437,22 +1570,23 @@
"122" : "F11"
};
- if ( $.inArray(keymaps[event.keyCode], settings.disabledKeyMaps) < 0 )
+ if ( $.inArray(keymaps[event.keyCode], disabledKeyMaps) < 0 )
{
switch (event.keyCode)
{
case 120:
- $.proxy(editormd.toolbarHandlers["watch"], _this)();
+ $.proxy(toolbarHandlers["watch"], _this)();
return false;
break;
case 121:
- $.proxy(editormd.toolbarHandlers["preview"], _this)();
+ $.proxy(toolbarHandlers["preview"], _this)();
return false;
break;
case 122:
- $.proxy(editormd.toolbarHandlers["fullscreen"], _this)();
+ $.proxy(toolbarHandlers["fullscreen"], _this)();
+ return false;
break;
default:
@@ -1465,42 +1599,15 @@
return this;
},
- /**
- * 加载队列完成之后的显示处理
- * Display handle of the module queues loaded after.
- *
- * @returns {editormd} 返回editormd的实例对象
- */
-
- loadedDisplay : function() {
+ bindScrollEvent : function() {
var _this = this;
- var editor = this.editor;
var preview = this.preview;
var settings = this.settings;
- var codeEditor = this.codeEditor;
var codeMirror = this.codeMirror;
- var previewContainer = this.previewContainer;
var mouseOrTouch = editormd.mouseOrTouch;
-
- editor.children("." + this.classPrefix + "container-mask").hide();
-
- this.saveToTextareas();
-
- if(settings.watch) {
- preview.show();
- }
-
- editor.data("oldWidth", editor.width()).data("oldHeight", editor.height()); // 为了兼容Zepto
-
- this.resize();
- this.registerKeyMaps();
-
- $(window).resize(function(){
- _this.resize();
- });
- var codeEditorBindScroll = function() {
+ var cmBindScroll = function() {
codeMirror.find(".CodeMirror-scroll").bind(mouseOrTouch("scroll", "touchmove"), function(event) {
var height = $(this).height();
var scrollTop = $(this).scrollTop();
@@ -1519,36 +1626,38 @@
preview.scrollTop(preview[0].scrollHeight * percent);
}
- $.proxy(settings.onscroll, this)(event);
+ $.proxy(settings.onscroll, _this)(event);
});
};
- var codeEditorUnbindScroll = function() {
+ var cmUnbindScroll = function() {
codeMirror.find(".CodeMirror-scroll").unbind(mouseOrTouch("scroll", "touchmove"));
};
var previewBindScroll = function() {
- preview.bind(mouseOrTouch("scroll", "touchmove"), function() {
+
+ preview.bind(mouseOrTouch("scroll", "touchmove"), function(event) {
var height = $(this).height();
- var scrollTop = $(this).scrollTop();
+ 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);
+ $.proxy(settings.onpreviewscroll, _this)(event);
});
+
};
var previewUnbindScroll = function() {
@@ -1556,10 +1665,10 @@
};
codeMirror.bind({
- mouseover : codeEditorBindScroll,
- mouseout : codeEditorUnbindScroll,
- touchstart : codeEditorBindScroll,
- touchend : codeEditorUnbindScroll
+ mouseover : cmBindScroll,
+ mouseout : cmUnbindScroll,
+ touchstart : cmBindScroll,
+ touchend : cmUnbindScroll
});
preview.bind({
@@ -1569,12 +1678,72 @@
touchend : previewUnbindScroll
});
- codeEditor.on("change", function(cm, changeObj) {
- _this.previewContainer.css("padding-left", settings.autoHeight && $("body").height() > $(window).height() ? "30px" : "20px");
- _this.saveToTextareas();
+ return this;
+ },
+
+ bindChangeEvent : function() {
+
+ var _this = this;
+ var cm = this.cm;
+ var settings = this.settings;
+
+ 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;
+ },
+
+ /**
+ * 加载队列完成之后的显示处理
+ * Display handle of the module queues loaded after.
+ *
+ * @param {Boolean} recreate 是否为重建编辑器
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
+ loadedDisplay : function(recreate) {
+
+ recreate = recreate || false;
+
+ var _this = this;
+ var editor = this.editor;
+ var preview = this.preview;
+ var settings = this.settings;
- $.proxy(settings.onload, this)();
+ this.containerMask.hide();
+
+ this.save();
+
+ if (settings.watch) {
+ preview.show();
+ }
+
+ editor.data("oldWidth", editor.width()).data("oldHeight", editor.height()); // 为了兼容Zepto
+
+ this.resize();
+ this.registerKeyMaps();
+
+ $(window).resize(function(){
+ _this.resize();
+ });
+
+ this.bindScrollEvent().bindChangeEvent();
+
+ if (!recreate)
+ {
+ $.proxy(settings.onload, this)();
+ }
this.state.loaded = true;
@@ -1632,14 +1801,11 @@
var preview = this.preview;
var toolbar = this.toolbar;
var settings = this.settings;
- var codeEditor = this.codeEditor;
var codeMirror = this.codeMirror;
- if(width)
- {
- editor.css({
- width : (typeof width === "number") ? width + "px" : width
- });
+ if (width)
+ {
+ editor.css("width", (typeof width === "number") ? width + "px" : width);
}
if (settings.autoHeight && !state.fullscreen && !state.preview)
@@ -1648,12 +1814,10 @@
codeMirror.css("height", "auto");
}
else
- {
- if(height)
- {
- editor.css({
- height : (typeof height === "number") ? height + "px" : height
- });
+ {
+ if (height)
+ {
+ editor.css("height", (typeof height === "number") ? height + "px" : height);
}
if (state.fullscreen)
@@ -1661,20 +1825,23 @@
editor.height($(window).height());
}
- if (settings.toolbar && !settings.readOnly) {
+ if (settings.toolbar && !settings.readOnly)
+ {
codeMirror.css("margin-top", toolbar.height() + 1).height(editor.height() - toolbar.height());
- } else {
+ }
+ else
+ {
codeMirror.css("margin-top", 0).height(editor.height());
}
}
- codeMirror.find(".CodeMirror-gutters").height(codeMirror.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());
@@ -1686,18 +1853,11 @@
if (settings.autoHeight && !state.fullscreen && !state.preview)
{
- preview.height("auto");
+ preview.height("");
}
else
{
- if (settings.toolbar && !settings.readOnly)
- {
- preview.height(editor.height() - toolbar.height());
- }
- else
- {
- preview.height(editor.height());
- }
+ preview.height((settings.toolbar && !settings.readOnly) ? editor.height() - toolbar.height() : editor.height());
}
}
else
@@ -1715,24 +1875,29 @@
},
/**
- * 分别将Markdown源码和解析的HTML源码保存到对应的textarea
- * Saving Markdown and HTML source code to Textarea
+ * 解析和保存Markdown代码
+ * Parse & Saving Markdown source code
*
- * @returns {editormd} 返回editormd的实例对象
+ * @returns {editormd} 返回editormd的实例对象
*/
- saveToTextareas : function() {
+ save : function() {
+
+ if (timer === null)
+ {
+ return this;
+ }
+
var _this = this;
var state = this.state;
var settings = this.settings;
- var codeEditor = this.codeEditor;
+ var cm = this.cm;
+ var cmValue = cm.getValue();
var previewContainer = this.previewContainer;
-
- var codeMirrorValue = codeEditor.getValue();
if (settings.mode !== "gfm" && settings.mode !== "markdown")
{
- this.markdownTextarea[0].innerText = codeMirrorValue;
+ this.markdownTextarea.val(cmValue);
return this;
}
@@ -1741,7 +1906,9 @@
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,
@@ -1765,13 +1932,13 @@
marked.setOptions(markedOptions);
- codeMirrorValue = editormd.filterHTMLTags(codeMirrorValue, settings.htmlDecode);
+ cmValue = editormd.filterHTMLTags(cmValue, settings.htmlDecode);
- var newMarkdownDoc = editormd.$marked(codeMirrorValue, markedOptions);
+ var newMarkdownDoc = editormd.$marked(cmValue, markedOptions);
- this.markdownTextarea[0].innerText = codeMirrorValue;
+ this.markdownTextarea.val(cmValue);
- codeEditor.save();
+ cm.save();
if (settings.saveHTMLToTextarea)
{
@@ -1783,9 +1950,30 @@
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.toc) {
- editormd.markdownToCRenderer(markdownToC, previewContainer, settings.tocStartLevel);
+ if (settings.tocContainer !== "")
+ {
+ previewContainer.find(".markdown-toc").css("border", "none");
+ }
}
if (settings.tex)
@@ -1807,9 +1995,10 @@
if (settings.flowChart || settings.sequenceDiagram)
{
- var timer = setTimeout(function(){
- clearTimeout(timer);
+ flowchartTimer = setTimeout(function(){
+ clearTimeout(flowchartTimer);
_this.flowChartAndSequenceDiagramRender();
+ flowchartTimer = null;
}, 10);
}
@@ -1830,7 +2019,7 @@
*/
focus : function() {
- this.codeEditor.focus();
+ this.cm.focus();
return this;
},
@@ -1844,7 +2033,7 @@
*/
setCursor : function(cursor) {
- this.codeEditor.setCursor(cursor);
+ this.cm.setCursor(cursor);
return this;
},
@@ -1857,7 +2046,7 @@
*/
getCursor : function() {
- return this.codeEditor.getCursor();
+ return this.cm.getCursor();
},
/**
@@ -1871,7 +2060,7 @@
setSelection : function(from, to) {
- this.codeEditor.setSelection(from, to);
+ this.cm.setSelection(from, to);
return this;
},
@@ -1884,7 +2073,7 @@
*/
getSelection : function() {
- return this.codeEditor.getSelection();
+ return this.cm.getSelection();
},
/**
@@ -1921,7 +2110,7 @@
*/
replaceSelection : function(value) {
- this.codeEditor.replaceSelection(value);
+ this.cm.replaceSelection(value);
return this;
},
@@ -1943,6 +2132,23 @@
return this;
},
+ /**
+ * 追加markdown
+ * append Markdown to editor
+ *
+ * @param {String} md 要追加的markdown源文档
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
+ appendMarkdown : function(md) {
+ var settings = this.settings;
+ var cm = this.cm;
+
+ cm.setValue(cm.getValue() + md);
+
+ return this;
+ },
+
/**
* 设置和传入编辑器的markdown源文档
* Set Markdown source document
@@ -1951,10 +2157,8 @@
* @returns {editormd} 返回editormd的实例对象
*/
- setMarkdown : function(md) {
- var settings = this.settings;
-
- this.codeEditor.setValue(md || settings.markdown);
+ setMarkdown : function(md) {
+ this.cm.setValue(md || this.settings.markdown);
return this;
},
@@ -1967,7 +2171,7 @@
*/
getMarkdown : function() {
- return this.codeEditor.getValue();
+ return this.cm.getValue();
},
/**
@@ -1978,7 +2182,7 @@
*/
getValue : function() {
- return this.codeEditor.getValue();
+ return this.cm.getValue();
},
/**
@@ -1990,7 +2194,7 @@
*/
setValue : function(value) {
- this.codeEditor.setValue(value);
+ this.cm.setValue(value);
return this;
},
@@ -2003,7 +2207,7 @@
*/
clear : function() {
- this.codeEditor.setValue("");
+ this.cm.setValue("");
return this;
},
@@ -2063,19 +2267,31 @@
*/
watch : function(callback) {
- var settings = this.settings;
+ var settings = this.settings;
+
+ if ($.inArray(settings.mode, ["gfm", "markdown"]) < 0)
+ {
+ return this;
+ }
+
this.state.watching = settings.watch = true;
this.preview.show();
- 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);
+ 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);
- this.saveToTextareas().resize();
+ timer = 0;
+
+ this.save().resize();
if (!settings.onwatch)
{
@@ -2099,11 +2315,11 @@
this.state.watching = settings.watch = false;
this.preview.hide();
- var watchIcon = settings.toolbarIconsClass.watch;
- var unWatchIcon = settings.toolbarIconsClass.unwatch;
-
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);
@@ -2177,7 +2393,11 @@
var settings = this.settings;
var codeMirror = this.codeMirror;
- if (settings.toolbar) {
+ if ($.inArray(settings.mode, ["gfm", "markdown"]) < 0) {
+ return this;
+ }
+
+ if (settings.toolbar && toolbar) {
toolbar.toggle();
toolbar.find(".fa[name=preview]").toggleClass("active");
}
@@ -2190,11 +2410,11 @@
}
};
- if(codeMirror.css("display") === "none") // 为了兼容Zepto,而不使用codeMirror.is(":hidden")
+ if (codeMirror.css("display") === "none") // 为了兼容Zepto,而不使用codeMirror.is(":hidden")
{
this.state.preview = true;
- if(this.state.fullscreen) {
+ if (this.state.fullscreen) {
preview.css("background", "#fff");
}
@@ -2202,9 +2422,9 @@
_this.previewed();
});
- if(!settings.watch)
+ if (!settings.watch)
{
- this.saveToTextareas();
+ this.save();
}
preview.show().css({
@@ -2241,22 +2461,17 @@
var preview = this.preview;
var toolbar = this.toolbar;
var settings = this.settings;
- var codeMirror = this.codeMirror;
var previewCloseBtn = editor.find("." + this.classPrefix + "preview-close-btn");
this.state.preview = false;
- codeMirror.show();
+ this.codeMirror.show();
if (settings.toolbar) {
toolbar.show();
}
-
- if(this.settings.watch) {
- preview.show();
- } else {
- preview.hide();
- }
+
+ preview[(settings.watch) ? "show" : "hide"]();
previewCloseBtn.hide().unbind(editormd.mouseOrTouch("click", "touchend"));
@@ -2286,9 +2501,11 @@
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) {
@@ -2298,7 +2515,7 @@
var escHandle = function(event) {
if (!event.shiftKey && event.keyCode === 27)
{
- if (_this.state.fullscreen)
+ if (state.fullscreen)
{
_this.fullscreenExit();
}
@@ -2307,7 +2524,7 @@
if (!editor.hasClass(fullscreenClass))
{
- this.state.fullscreen = true;
+ state.fullscreen = true;
$("html,body").css("overflow", "hidden");
@@ -2323,7 +2540,7 @@
this.resize();
- $.proxy(this.settings.onfullscreen, this)();
+ $.proxy(settings.onfullscreen, this)();
$(window).bind("keyup", escHandle);
}
@@ -2346,9 +2563,11 @@
fullscreenExit : function() {
var editor = this.editor;
+ var settings = this.settings;
var toolbar = this.toolbar;
- var fullscreenClass = this.classPrefix + "fullscreen";
- this.state.fullscreen = true;
+ var fullscreenClass = this.classPrefix + "fullscreen";
+
+ this.state.fullscreen = false;
if (toolbar) {
toolbar.find(".fa[name=fullscreen]").parent().removeClass("active");
@@ -2368,26 +2587,42 @@
this.resize();
- $.proxy(this.settings.onfullscreenExit, this)();
+ $.proxy(settings.onfullscreenExit, this)();
return this;
},
+ /**
+ * 加载并执行插件
+ * Load and execute the plugin
+ *
+ * @param {String} name plugin name / function name
+ * @param {String} path plugin load path
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
executePlugin : function(name, path) {
var _this = this;
var cm = this.cm;
var settings = this.settings;
- if (typeof define == "function") {
+ 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 ;
+ return this;
}
- path = settings.pluginPath + path;
-
if ($.inArray(path, editormd.loadFiles.plugin) < 0)
{
editormd.loadPlugin(path, function() {
@@ -2399,23 +2634,77 @@
{
$.proxy(editormd.loadPlugins[name], this)(cm);
}
+
+ return this;
+ },
+
+ /**
+ * 搜索替换
+ * Search & replace
+ *
+ * @param {String} command CodeMirror serach commands, "find, fintNext, fintPrev, clearSearch, replace, replaceAll"
+ * @returns {editormd} 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;
-
+
+ /**
+ * 锁屏
+ * lock screen when dialog opening
+ *
+ * @returns {void}
+ */
+
editormd.dialogLockScreen = function() {
- var settings = this.settings;
+ var settings = this.settings || {dialogLockScreen : true};
if (settings.dialogLockScreen)
{
$("html,body").css("overflow", "hidden");
}
};
-
+
+ /**
+ * 显示透明背景层
+ * Display mask layer when dialog opening
+ *
+ * @param {Object} dialog dialog jQuery object
+ * @returns {void}
+ */
+
editormd.dialogShowMask = function(dialog) {
var editor = this.editor;
- var settings = this.settings;
+ var settings = this.settings || {dialogShowMask : true};
dialog.css({
top : ($(window).height() - dialog.height()) / 2 + "px",
@@ -2426,7 +2715,7 @@
editor.children("." + this.classPrefix + "mask").css("z-index", parseInt(dialog.css("z-index")) - 1).show();
}
};
-
+
editormd.toolbarHandlers = {
undo : function() {
this.cm.undo();
@@ -2612,12 +2901,43 @@
cm.replaceSelection("------------");
},
+ tex : function() {
+ if (!this.settings.tex)
+ {
+ alert("settings.tex === false");
+ return this;
+ }
+
+ var cm = this.cm;
+ var cursor = cm.getCursor();
+ var selection = cm.getSelection();
+
+ cm.replaceSelection("$$" + selection + "$$");
+
+ if(selection === "") {
+ cm.setCursor(cursor.line, cursor.ch + 2);
+ }
+ },
+
link : function() {
this.executePlugin("linkDialog", "link-dialog/link-dialog");
},
- anchor : function() {
- this.executePlugin("anchorLinkDialog", "anchor-link-dialog/anchor-link-dialog");
+ "reference-link" : function() {
+ this.executePlugin("referenceLinkDialog", "reference-link-dialog/reference-link-dialog");
+ },
+
+ pagebreak : function() {
+ if (!this.settings.pageBreak)
+ {
+ alert("settings.pageBreak === false");
+ return this;
+ }
+
+ var cm = this.cm;
+ var selection = cm.getSelection();
+
+ cm.replaceSelection("\r\n[========]\r\n");
},
image : function() {
@@ -2662,9 +2982,13 @@
this.executePlugin("emojiDialog", "emoji-dialog/emoji-dialog");
},
- htmlEntities : function() {
+ "html-entities" : function() {
this.executePlugin("htmlEntitiesDialog", "html-entities-dialog/html-entities-dialog");
},
+
+ "goto-line" : function() {
+ this.executePlugin("gotoLineDialog", "goto-line-dialog/goto-line-dialog");
+ },
watch : function() {
this[this.settings.watch ? "unwatch" : "watch"]();
@@ -2681,6 +3005,10 @@
clear : function() {
this.clear();
},
+
+ search : function() {
+ this.search();
+ },
help : function() {
this.executePlugin("helpDialog", "help-dialog/help-dialog");
@@ -2692,25 +3020,25 @@
};
editormd.keyMaps = {
- "Ctrl-B" : "bold", // if this is string == editormd.toolbarHandlers.xxxx
- "Ctrl-I" : "italic",
- "Ctrl-K" : "code",
- "Shift-Ctrl-C" : "code",
- "Shift-Ctrl-Q" : "quote",
- "Shift-Ctrl-S" : "del",
- "Ctrl-H" : "hr",
"Ctrl-1" : "h1",
"Ctrl-2" : "h2",
"Ctrl-3" : "h3",
"Ctrl-4" : "h4",
"Ctrl-5" : "h5",
"Ctrl-6" : "h6",
+ "Ctrl-B" : "bold", // if this is string == editormd.toolbarHandlers.xxxx
"Ctrl-D" : "datetime",
"Ctrl-E" : function() { // emoji
var cm = this.cm;
var cursor = cm.getCursor();
var selection = cm.getSelection();
+
+ if (!this.settings.emoji)
+ {
+ alert("Error: settings.emoji == false");
+ return ;
+ }
cm.replaceSelection(":" + selection + ":");
@@ -2718,6 +3046,10 @@
cm.setCursor(cursor.line, cursor.ch + 1);
}
},
+ "Ctrl-Alt-G" : "goto-line",
+ "Ctrl-H" : "hr",
+ "Ctrl-I" : "italic",
+ "Ctrl-K" : "code",
"Ctrl-L" : function() {
var cm = this.cm;
@@ -2738,6 +3070,12 @@
var cm = this.cm;
var cursor = cm.getCursor();
var selection = cm.getSelection();
+
+ if (!this.settings.atLink)
+ {
+ alert("Error: settings.atLink == false");
+ return ;
+ }
cm.replaceSelection("@" + selection);
@@ -2746,6 +3084,11 @@
}
},
+ "Shift-Ctrl-C" : "code",
+ "Shift-Ctrl-Q" : "quote",
+ "Shift-Ctrl-S" : "del",
+ "Shift-Ctrl-K" : "tex", // KaTeX
+
"Shift-Alt-C" : function() {
var cm = this.cm;
var cursor = cm.getCursor();
@@ -2759,7 +3102,7 @@
},
"Shift-Ctrl-Alt-C" : "code-block",
- "Shift-Ctrl-H" : "htmlEntities",
+ "Shift-Ctrl-H" : "html-entities",
"Shift-Alt-H" : "help",
"Shift-Ctrl-E" : "emoji",
"Shift-Ctrl-U" : "uppercase",
@@ -2786,6 +3129,7 @@
"Shift-Ctrl-O" : "list-ol",
"Shift-Ctrl-P" : "preformatted-text",
"Shift-Ctrl-T" : "table",
+ "Shift-Alt-P" : "pagebreak",
"F9" : "watch",
"F10" : "preview",
"F11" : "fullscreen",
@@ -2800,7 +3144,7 @@
*/
var trim = function(str) {
- return (!String.prototype.trim) ? str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '') : str.trim();
+ return (!String.prototype.trim) ? str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") : str.trim();
};
editormd.trim = trim;
@@ -2851,7 +3195,8 @@
emojiDatetime : /(\d{2}:\d{2}:\d{2})/g,
twemoji : /:(tw-([\w]+)-?(\w+)?):/g,
fontAwesome : /:(fa-([\w]+)(-(\w+)){0,}):/g,
- editormdLogo : /:(editormd-logo-?(\w+)?):/g
+ editormdLogo : /:(editormd-logo-?(\w+)?):/g,
+ pageBreak : /^\[[=]{8,}\]$/
};
// Emoji graphics files url path
@@ -2877,7 +3222,9 @@
editormd.markedRenderer = function(markdownToC, options) {
var defaults = {
toc : true, // Table of contents
+ tocm : false,
tocStartLevel : 1, // Said from H1 to create ToC
+ pageBreak : true,
atLink : true, // for @link
emailLink : true, // for mail address auto link
taskList : false, // Enable Github Flavored Markdown task lists
@@ -2891,14 +3238,16 @@
var marked = editormd.$marked;
var markedRenderer = new marked.Renderer();
markdownToC = markdownToC || [];
-
- var atLinkReg = editormd.regexs.atLink;
- var emojiReg = editormd.regexs.emoji;
- var emailReg = editormd.regexs.email;
- var emailLinkReg = editormd.regexs.emailLink;
- var twemojiReg = editormd.regexs.twemoji;
- var faIconReg = editormd.regexs.fontAwesome;
- var editormdLogoReg = editormd.regexs.editormdLogo;
+
+ var regexs = editormd.regexs;
+ var atLinkReg = regexs.atLink;
+ var emojiReg = regexs.emoji;
+ var emailReg = regexs.email;
+ var emailLinkReg = regexs.emailLink;
+ var twemojiReg = regexs.twemoji;
+ var faIconReg = regexs.fontAwesome;
+ var editormdLogoReg = regexs.editormdLogo;
+ var pageBreakReg = regexs.pageBreak;
markedRenderer.emoji = function(text) {
@@ -2976,8 +3325,8 @@
if (settings.emailLink)
{
- text = text.replace(emailLinkReg, function($1, $2) {
- return (!$2) ? ""+$1+"" : $1;
+ 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;
});
}
@@ -3020,7 +3369,7 @@
out += ">" + text + "";
return out;
- }
+ };
markedRenderer.heading = function(text, level, raw) {
@@ -3057,19 +3406,29 @@
var headingHTML = "";
- headingHTML += "";
+ 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 = /^\[TOC\]$/.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)
{
@@ -3082,8 +3441,10 @@
text = (isTeXLine) ? text.replace(/\$/g, "") : text;
}
- return (isToC) ? ""
- : "" + this.atLink(this.emoji(text)) + "
\n";
+ var tocHTML = "" + text + "
";
+
+ return (isToC) ? ( (isToCMenu) ? "
" : tocHTML )
+ : ( (pageBreakReg.test(text)) ? this.pageBreak(text) : "" + this.atLink(this.emoji(text)) + "
\n" );
};
markedRenderer.code = function (code, lang, escaped) {
@@ -3138,11 +3499,13 @@
* @returns {Object} tocContainer 返回ToC列表容器层的jQuery对象元素
*/
- editormd.markdownToCRenderer = function(toc, container, startLevel) {
+ editormd.markdownToCRenderer = function(toc, container, tocDropdown, startLevel) {
+
+ var html = "";
+ var lastLevel = 0;
+ var classPrefix = this.classPrefix;
- var html = "";
- var lastLevel = 0;
- startLevel = startLevel || 1;
+ startLevel = startLevel || 1;
for (var i = 0, len = toc.length; i < len; i++)
{
@@ -3170,13 +3533,95 @@
lastLevel = level;
}
- var tocContainer = container.find('.markdown-toc');
+ var tocContainer = container.find(".markdown-toc");
- tocContainer.children('.markdown-toc-list').html("").html(html);
+ 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;
};
+ /**
+ *
+ * 生成TOC下拉菜单
+ * Creating ToC dropdown menu
+ *
+ * @param {Object} container 插入TOC的容器jQuery对象元素
+ * @param {String} tocTitle ToC title
+ * @returns {Object} return toc-menu object
+ */
+
+ 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 = "";
+ 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;
+ };
+
/**
* 简单地过滤指定的HTML标签
* Filter custom html tags
@@ -3212,14 +3657,18 @@
* @returns {Object} div 返回jQuery对象元素
*/
- editormd.markdownToHTML = function(id, options) {
+ editormd.markdownToHTML = function(id, options) {
var defaults = {
gfm : true,
toc : true,
+ tocm : false,
tocStartLevel : 1,
+ tocTitle : "目录",
+ tocDropdown : false,
markdown : "",
htmlDecode : false,
autoLoadKaTeX : true,
+ pageBreak : true,
atLink : true, // for @link
emailLink : true, // for mail address auto link
tex : false,
@@ -3235,15 +3684,24 @@
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, // for @link
emailLink : settings.emailLink, // for mail address auto link
flowChart : settings.flowChart,
@@ -3264,21 +3722,20 @@
markdownDoc = editormd.filterHTMLTags(markdownDoc, settings.htmlDecode);
- var markdownParsed = marked(markdownDoc, markedOptions);
+ var markdownParsed = marked(markdownDoc, markedOptions);
- if (editormd.isIE8)
- {
- saveTo.val(markdownDoc);
- }
- else
- {
- saveTo.html(markdownDoc);
- }
+ saveTo.val(markdownDoc);
div.addClass("markdown-body " + this.classPrefix + "html-preview").append(markdownParsed);
- if (settings.toc) {
- div.tocContainer = this.markdownToCRenderer(markdownToC, div, settings.tocStartLevel);
+ if (settings.toc)
+ {
+ div.tocContainer = this.markdownToCRenderer(markdownToC, div, settings.tocDropdown, settings.tocStartLevel);
+
+ if (settings.tocDropdown || div.find("." + this.classPrefix + "toc-menu").length > 0)
+ {
+ this.tocDropdownMenu(div, settings.tocTitle);
+ }
}
if (settings.previewCodeHighlight)
@@ -3321,16 +3778,15 @@
}
}
- div.getMarkdown = function() {
- return (editormd.isIE8) ? saveTo.val() : saveTo.html();
+ div.getMarkdown = function() {
+ return saveTo.val();
};
return div;
};
editormd.themes = [
- "default",
- "3024-day", "3024-night",
+ "default", "3024-day", "3024-night",
"ambiance", "ambiance-mobile",
"base16-dark", "base16-light", "blackboard",
"cobalt",
@@ -3425,8 +3881,8 @@
script.type = "text/javascript";
script.src = fileName + ".js";
- if (editormd.isIE8) {
-
+ if (editormd.isIE8)
+ {
script.onreadystatechange = function() {
if(script.readyState)
{
@@ -3519,7 +3975,7 @@
var editor = this.editor;
var classPrefix = editormd.classPrefix;
- var guid = (new Date).getTime();
+ var guid = (new Date()).getTime();
var dialogName = ( (options.name === "") ? classPrefix + "dialog-" + guid : options.name);
var mouseOrTouch = editormd.mouseOrTouch;
@@ -3611,7 +4067,7 @@
dialog.hide().lockScreen(false).hideMask();
});
- if (typeof options.buttons == "object")
+ if (typeof options.buttons === "object")
{
var footer = dialog.footer = dialog.find("." + classPrefix + "dialog-footer");
@@ -3648,13 +4104,13 @@
var userCanSelect = function (obj) {
obj.removeClass(classPrefix + "user-unselect").off("selectstart");
- }
+ };
var userUnselect = function (obj) {
obj.addClass(classPrefix + "user-unselect").on("selectstart", function(event) { // selectstart for IE
return false;
});
- }
+ };
var moveAction = function (e) {
e = e || window.event; //IE
@@ -3689,7 +4145,7 @@
userUnselect(dialog);
dialog[0].style.left = left + "px";
dialog[0].style.top = top + "px";
- }
+ };
document.onmouseup = function() {
userCanSelect($("body"));
@@ -3747,13 +4203,10 @@
var eventType = mouseEventType;
- try
- {
+ try {
document.createEvent("TouchEvent");
eventType = touchEventType;
- }
- catch(e) {
- }
+ } catch(e) {}
return eventType;
};
@@ -3773,7 +4226,7 @@
return (d < 10) ? "0" + d : d;
};
- var date = new Date;
+ var date = new Date();
var year = date.getFullYear();
var year2 = year.toString().slice(2, 4);
var month = addZero(date.getMonth() + 1);
@@ -3847,7 +4300,7 @@
case "ms" :
datefmt = ms;
- break;
+ break;
case "yy-mm-dd" :
datefmt = ymd;
@@ -3860,18 +4313,18 @@
case "yyyy-mm-dd h:i:s ms" :
case "full + ms" :
datefmt = fymd + " " + hms + " " + ms;
- break;
+ break;
case "full" :
case "yyyy-mm-dd h:i:s" :
default:
datefmt = fymd + " " + hms;
- break;
- };
+ break;
+ }
return datefmt;
};
-
+
return editormd;
-
+
}));
diff --git a/editormd.amd.min.js b/editormd.amd.min.js
index 49d0833b..8cf7abb4 100644
--- a/editormd.amd.min.js
+++ b/editormd.amd.min.js
@@ -1,5 +1,4 @@
-/*! Editor.md v1.3.0 | editormd.amd.min.js | A simple online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-03-12 */
-!function(e){"use strict";if("function"==typeof require&&"object"==typeof exports&&"object"==typeof module)module.exports=e;else if("function"==typeof define)if(define.amd){var t="codemirror/mode/",i="codemirror/addon/",o=["jquery","marked","prettify","katex","raphael","underscore","flowchart","jqueryflowchart","sequenceDiagram","codemirror/lib/codemirror",t+"css/css",t+"sass/sass",t+"shell/shell",t+"sql/sql",t+"clike/clike",t+"php/php",t+"xml/xml",t+"markdown/markdown",t+"javascript/javascript",t+"htmlmixed/htmlmixed",t+"gfm/gfm",t+"http/http",t+"go/go",t+"dart/dart",t+"coffeescript/coffeescript",t+"nginx/nginx",t+"python/python",t+"perl/perl",t+"lua/lua",t+"r/r",t+"ruby/ruby",t+"rst/rst",t+"smartymixed/smartymixed",t+"vb/vb",t+"vbscript/vbscript",t+"velocity/velocity",t+"xquery/xquery",t+"yaml/yaml",t+"erlang/erlang",t+"jade/jade",i+"edit/trailingspace",i+"dialog/dialog",i+"search/searchcursor",i+"search/search",i+"scroll/annotatescrollbar",i+"search/matchesonscrollbar",i+"display/placeholder",i+"edit/closetag",i+"fold/foldcode",i+"fold/foldgutter",i+"fold/indent-fold",i+"fold/brace-fold",i+"fold/xml-fold",i+"fold/markdown-fold",i+"fold/comment-fold",i+"mode/overlay",i+"selection/active-line",i+"edit/closebrackets",i+"display/fullscreen",i+"search/match-highlighter"];define(o,e)}else define(["jquery"],e);else window.editormd=e()}(function(){"function"==typeof define&&define.amd&&(e=arguments[0],marked=arguments[1],prettify=arguments[2],katex=arguments[3],Raphael=arguments[4],_=arguments[5],flowchart=arguments[6],CodeMirror=arguments[9]);var e="undefined"!=typeof jQuery?jQuery:Zepto;if("undefined"!=typeof e){var t=function(e,i){return new t.fn.init(e,i)};t.title=t.$name="Editor.md",t.version="1.3.0",t.homePage="https://pandao.github.io/editor.md/",t.classPrefix="editormd-",t.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","anchor","image","code","preformatted-text","code-block","table","datetime","emoji","htmlEntities","|","watch","preview","fullscreen","clear","|","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"]},t.defaults={mode:"gfm",theme:"default",value:"",markdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",autoLoadModules:!0,watch:!0,placeholder:"now coding markdown...",codeFold:!1,autoHeight:!1,autoCloseTags:!0,searchReplace:!1,readOnly:!1,lineNumbers:!0,matchWordHighlight:!0,styleActiveLine:!0,dialogLockScreen:!0,dialogShowMask:!0,dialogDraggable:!0,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:!1,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:!1,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:!1,uploadCallbackURL:"",toc:!0,tocStartLevel:1,htmlDecode:!1,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0,toolbar:!0,toolbarAutoFixed:!0,toolbarIcons:function(){return t.toolbarModes.full},toolbarTitles:{},toolbarHandlers:{ucwords:function(){return t.toolbarHandlers.ucwords},lowercase:function(){return t.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:t.classPrefix+"bold",h2:t.classPrefix+"bold",h3:t.classPrefix+"bold",h4:t.classPrefix+"bold",h5:t.classPrefix+"bold",h6:t.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link",anchor:"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",htmlEntities:"fa-copyright",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},lang:{name:"zh-cn",description:"开源在线Markdown编辑器
A simple markdown doucment online editor.",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:"链接",anchor:"锚点",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情",htmlEntities:"HTML实体字符",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(可按ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",help:"使用帮助",info:"关于"+t.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},anchor:{title:"添加锚点链接",name:"锚点名称",url:"链接地址",urlTitle:"链接标题",nameEmpty:"错误:锚点名称不能为空。",titleEmpty:"错误:请填写锚点链接标题。",urlEmpty:"错误:请填写锚点链接地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}},t.classNames={tex:t.classPrefix+"tex"},t.dialogZindex=99999,t.$katex=null,t.$marked=null,t.$CodeMirror=null,t.$prettyPrint=null,t.prototype=t.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(i,o){o=o||{};var r=this,a=this.classPrefix=t.classPrefix,n=this.editor=e("#"+i),s=this.settings=e.extend(!0,t.defaults,o);this.id=i,this.lang=s.lang;var l=this.classNames={textarea:{html:this.classPrefix+"html-textarea",markdown:this.classPrefix+"markdown-textarea"}};s.pluginPath=""===s.pluginPath?this.settings.path+"../plugins/":s.pluginPath,this.state.watching=s.watch?!0:!1,n.hasClass("editormd")||n.addClass("editormd"),n.css({width:"number"==typeof s.width?s.width+"px":s.width,height:"number"==typeof s.height?s.height+"px":s.height}),s.autoHeight&&n.css("height","auto");var c=this.markdownTextarea=n.children("textarea");c.length<1&&(n.append(""),c=this.markdownTextarea=n.children("textarea")),c.addClass(l.textarea.markdown).attr("name",i+"-markdown-doc").attr("placeholder",s.placeholder);var d=[s.readOnly?"":'',s.saveHTMLToTextarea?'':"",'','',''].join("\n");return n.append(d).addClass(a+"vertical"),this.mask=n.children("."+a+"mask"),""!==s.markdown&&c.val(s.markdown),this.htmlTextarea=n.children("."+l.textarea.html),this.preview=n.children("."+a+"preview"),this.previewContainer=this.preview.children("."+a+"preview-container"),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(t.$katex=katex),s.searchReplace&&(t.loadCSS(s.path+"codemirror/addon/dialog/dialog"),t.loadCSS(s.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!s.autoLoadModules?("undefined"!=typeof CodeMirror&&(t.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(t.$marked=marked),r.setCodeMirror(),r.setToolbar(),r.loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,i=this.settings,o=i.path,r=function(){return t.isIE8?void e.loadedDisplay():void(i.flowChart||i.sequenceDiagram?t.loadScript(o+"raphael.min",function(){t.loadScript(o+"underscore.min",function(){!i.flowChart&&i.sequenceDiagram?t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()}):i.flowChart&&!i.sequenceDiagram?t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){e.loadedDisplay()})}):i.flowChart&&i.sequenceDiagram&&t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay())};return t.loadCSS(o+"codemirror/codemirror.min"),i.searchReplace&&(t.loadCSS(o+"codemirror/addon/dialog/dialog"),t.loadCSS(o+"codemirror/addon/search/matchesonscrollbar")),i.codeFold&&t.loadCSS(o+"codemirror/addon/fold/foldgutter"),t.loadScript(o+"codemirror/codemirror.min",function(){t.$CodeMirror=CodeMirror,t.loadScript(o+"codemirror/modes.min",function(){t.loadScript(o+"codemirror/addons.min",function(){return e.setCodeMirror(),"gfm"!==i.mode&&"markdown"!==i.mode?(e.loadedDisplay(),!1):(e.setToolbar(),void t.loadScript(o+"marked.min",function(){t.$marked=marked,i.previewCodeHighlight?t.loadScript(o+"prettify.min",function(){r()}):r()}))})})}),this},setTheme:function(e){var i=this.settings;return i.theme=e,"default"!==e&&t.loadCSS(i.path+"codemirror/theme/"+i.theme),this.cm.setOption("theme",e),this},setCodeMirror:function(){var e=this.settings,i=this.editor;"default"!==e.theme&&t.loadCSS(e.path+"codemirror/theme/"+e.theme);var o={mode:e.mode,theme:e.theme,tabSize:4,dragDrop:!1,autofocus:!0,autoCloseTags:e.autoCloseTags,readOnly:e.readOnly?"nocursor":!1,indentUnit:4,lineNumbers:e.lineNumbers,lineWrapping:!0,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,indentWithTabs:!0,styleActiveLine:e.styleActiveLine,styleSelectedText:!0,autoCloseBrackets:!0,showTrailingSpace:!0,highlightSelectionMatches:e.matchWordHighlight?{showToken:"onselected"==e.matchWordHighlight?!1:/\w/}:!1};return this.codeEditor=this.cm=t.$CodeMirror.fromTextArea(this.markdownTextarea[0],o),this.codeMirror=this.cmElement=i.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},"extends":function(){return"undefined"!=typeof arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&"undefined"==typeof arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return"undefined"!=typeof i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var o=this.settings;return"object"==typeof t&&(o=e.extend(!0,o,t)),"string"==typeof t&&(o[t]=i),this.settings=o,this.recreate(),this},on:function(t,i){var o=this.settings;return"undefined"!=typeof o["on"+t]&&(o["on"+t]=e.proxy(i,this)),this},off:function(e){var t=this.settings;return"undefined"!=typeof t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=this.settings;if(!i.readOnly)return i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this},hideToolbar:function(t){var i=this.settings;return i.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,o=this.editor,r=this.toolbar,a=this.settings;"undefined"!=typeof t&&(a.toolbarAutoFixed=t);var n=function(){var t=e(window).scrollTop();return a.toolbarAutoFixed?void r.css(t-o.offset().top>10&&t'),r=this.toolbar=i.children("."+o+"toolbar")),!e.toolbar)return void r.hide();r.show();for(var a="function"==typeof e.toolbarIcons?e.toolbarIcons():"string"==typeof e.toolbarIcons?t.toolbarModes[e.toolbarIcons]:e.toolbarIcons,n=r.find("."+this.classPrefix+"menu"),s="",l=0,c=a.length;c>l;l++){var d=a[l];if("|"!==d){var h=/h(\d)/.test(d),u=d;"watch"!==d||e.watch||(u="unwatch");var f=e.lang.toolbar[u],g=e.toolbarIconTexts[u],p=e.toolbarIconsClass[u];f="undefined"==typeof f?"":f,g="undefined"==typeof g?"":g,p="undefined"==typeof p?"":p,s+="- ",s+="undefined"!=typeof e.toolbarCustomIcons[d]?e.toolbarCustomIcons[d]:''+(h?d:""===p?g:"")+"",s+="
"}else s+='- |
'}return n.html(s),n.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),n.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this}},dialogLockScreen:function(){return e.proxy(t.dialogLockScreen,this)(),this},dialogShowMask:function(i){return e.proxy(t.dialogShowMask,this)(i),this},getToolbarHandles:function(e){var i=this.toolbarHandlers=t.toolbarHandlers;return e&&"undefined"!=typeof toolbarIconHandlers[e]?i[e]:i},setToolbarHandler:function(){var i=this,o=this.settings;if(o.toolbar&&!o.readOnly){var r=(this.editor,this.preview,this.toolbar),a=this.codeEditor,n=(this.codeMirror,this.classPrefix),s=(this.previewContainer,this.toolbarIcons=r.find("."+n+"menu > li > a")),l=this.getToolbarHandles();return s.bind(t.mouseOrTouch("click","touchend"),function(){var t=e(this).children(".fa"),r=t.attr("name"),n=a.getCursor(),s=a.getSelection();return""!==r?(i.activeIcon=t,"undefined"!=typeof l[r]?e.proxy(l[r],i)(a):"undefined"!=typeof o.toolbarHandlers[r]&&e.proxy(o.toolbarHandlers[r],i)(a,t,n,s),"link"!==r&&"anchor"!==r&&"image"!==r&&"code-block"!==r&&"preformatted-text"!==r&&"watch"!==r&&"preview"!==r&&"fullscreen"!==r&&"info"!==r&&a.focus(),!1):void 0}),this}},createDialog:function(i){return e.proxy(t.createDialog,this)(i)},createInfoDialog:function(){var e=this,i=this.editor,o=this.classPrefix,r=['','
','
'+t.title+"v"+t.version+"
","
"+this.lang.description+"
",'
Home page: '+t.homePage+"
","
License: MIT
","
",'
',"
"].join("\n");i.append(r);var a=this.infoDialog=i.children("."+o+"dialog-info");return a.find("."+o+"dialog-close").bind(t.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),a.css("border",t.isIE8?"1px solid #ddd":"").css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var i=this.editor,o=this.settings,r=this.classPrefix,a=this.infoDialog=i.children("."+r+"dialog-info");return a.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:o.dialogMaskOpacity,backgroundColor:o.dialogMaskBgColor}).show(),a.css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return t.lockScreen(e),this},recreate:function(){var e=this.editor,t=this.settings,i=t.toolbarIcons();return this.codeMirror.remove(),this.setCodeMirror(),"undefined"!=typeof this.infoDialog&&this.infoDialog.remove(),"undefined"!=typeof i.info&&createInfoDialog(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.saveToTextareas(),this.resize(),this.registerKeyMaps(),this},previewCodeHighlight:function(){var e=this.settings,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){var i=this.previewContainer;return i.find("."+t.classNames.tex).each(function(){var i=e(this);t.$katex.render(i.html(),i[0])}),this},flowChartAndSequenceDiagramRender:function(){var e=this.settings,i=this.previewContainer;return t.isIE8?void 0:(e.flowChart&&i.find(".flowchart").flowChart(),e.sequenceDiagram&&i.find(".sequence-diagram").sequenceDiagram({theme:"simple"}),this)},registerKeyMaps:function(i){i=i||null;var o=this,r=this.cm,a=this.settings;if(i){for(var n in i)if(e.inArray(n,a.disabledKeyMaps)<0){var s={};s[n]=i[n],r.addKeyMap(i)}}else{for(var n in t.keyMaps){var i=t.keyMaps[n],l="string"==typeof i?e.proxy(t.toolbarHandlers[i],o):e.proxy(i,o);if(e.inArray(n,["F9","F10","F11"])<0&&e.inArray(n,a.disabledKeyMaps)<0){var s={};s[n]=l,r.addKeyMap(s)}}e(window).keydown(function(i){var r={120:"F9",121:"F10",122:"F11"};if(e.inArray(r[i.keyCode],a.disabledKeyMaps)<0)switch(i.keyCode){case 120:return e.proxy(t.toolbarHandlers.watch,o)(),!1;case 121:return e.proxy(t.toolbarHandlers.preview,o)(),!1;case 122:e.proxy(t.toolbarHandlers.fullscreen,o)()}})}return this},loadedDisplay:function(){var i=this,o=this.editor,r=this.preview,a=this.settings,n=this.codeEditor,s=this.codeMirror,l=(this.previewContainer,t.mouseOrTouch);o.children("."+this.classPrefix+"container-mask").hide(),this.saveToTextareas(),a.watch&&r.show(),o.data("oldWidth",o.width()).data("oldHeight",o.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()});var c=function(){s.find(".CodeMirror-scroll").bind(l("scroll","touchmove"),function(t){var i=e(this).height(),o=e(this).scrollTop(),n=o/e(this)[0].scrollHeight;r.scrollTop(0===o?0:o+i>=e(this)[0].scrollHeight?r[0].scrollHeight:r[0].scrollHeight*n),e.proxy(a.onscroll,this)(t)})},d=function(){s.find(".CodeMirror-scroll").unbind(l("scroll","touchmove"))},h=function(){r.bind(l("scroll","touchmove"),function(){var t=e(this).height(),i=e(this).scrollTop(),o=i/e(this)[0].scrollHeight,r=s.find(".CodeMirror-scroll");r.scrollTop(0===i?0:i+t>=e(this)[0].scrollHeight?r[0].scrollHeight:r[0].scrollHeight*o),e.proxy(a.onpreviewscroll,this)(event)})},u=function(){r.unbind(l("scroll","touchmove"))};return s.bind({mouseover:c,mouseout:d,touchstart:c,touchend:d}),r.bind({mouseover:h,mouseout:u,touchstart:h,touchend:u}),n.on("change",function(){i.previewContainer.css("padding-left",a.autoHeight&&e("body").height()>e(window).height()?"30px":"20px"),i.saveToTextareas()}),e.proxy(a.onload,this)(),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var o=this.state,r=this.editor,a=this.preview,n=this.toolbar,s=this.settings,l=(this.codeEditor,this.codeMirror);return t&&r.css({width:"number"==typeof t?t+"px":t}),!s.autoHeight||o.fullscreen||o.preview?(i&&r.css({height:"number"==typeof i?i+"px":i}),o.fullscreen&&r.height(e(window).height()),s.toolbar&&!s.readOnly?l.css("margin-top",n.height()+1).height(r.height()-n.height()):l.css("margin-top",0).height(r.height())):(r.css("height","auto"),l.css("height","auto")),l.find(".CodeMirror-gutters").height(l.height()),s.watch?(l.width(r.width()/2),a.width(o.preview?r.width():r.width()/2),s.toolbar&&!s.readOnly?a.css("top",n.height()):a.css("top",0),a.height(!s.autoHeight||o.fullscreen||o.preview?s.toolbar&&!s.readOnly?r.height()-n.height():r.height():"auto")):(l.width(r.width()),a.hide()),o.loaded&&e.proxy(s.onresize,this)(),this},saveToTextareas:function(){var i=this,o=this.state,r=this.settings,a=this.codeEditor,n=this.previewContainer,s=a.getValue();if("gfm"!==r.mode&&"markdown"!==r.mode)return this.markdownTextarea[0].innerText=s,this;var l=t.$marked,c=this.markdownToC=[],d=this.markedRendererOptions={toc:r.toc,tocStartLevel:r.tocStartLevel,taskList:r.taskList,emoji:r.emoji,tex:r.tex,atLink:r.atLink,emailLink:r.emailLink,flowChart:r.flowChart,sequenceDiagram:r.sequenceDiagram,previewCodeHighlight:r.previewCodeHighlight},h=this.markedOptions={renderer:t.markedRenderer(c,d),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:r.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};l.setOptions(h),s=t.filterHTMLTags(s,r.htmlDecode);var u=t.$marked(s,h);if(this.markdownTextarea[0].innerText=s,a.save(),r.saveHTMLToTextarea&&this.htmlTextarea.html(u),r.watch||!r.watch&&o.preview){if(n.html(u),this.previewCodeHighlight(),r.toc&&t.markdownToCRenderer(c,n,r.tocStartLevel),r.tex&&(!t.kaTeXLoaded&&r.autoLoadModules?t.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,i.katexRender()}):(t.$katex=katex,this.katexRender())),r.flowChart||r.sequenceDiagram)var f=setTimeout(function(){clearTimeout(f),i.flowChartAndSequenceDiagramRender()},10);o.loaded&&e.proxy(r.onchange,this)()}return this},focus:function(){return this.codeEditor.focus(),this},setCursor:function(e){return this.codeEditor.setCursor(e),this},getCursor:function(){return this.codeEditor.getCursor()},setSelection:function(e,t){return this.codeEditor.setSelection(e,t),this},getSelection:function(){return this.codeEditor.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.codeEditor.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},setMarkdown:function(e){var t=this.settings;return this.codeEditor.setValue(e||t.markdown),this},getMarkdown:function(){return this.codeEditor.getValue()},getValue:function(){return this.codeEditor.getValue()},setValue:function(e){return this.codeEditor.setValue(e),this},clear:function(){return this.codeEditor.setValue(""),this},getHTML:function(){return this.settings.saveHTMLToTextarea?this.htmlTextarea.html():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return this.settings.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(t){var i=this.settings;this.state.watching=i.watch=!0,this.preview.show();var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch,a=this.toolbar.find(".fa[name=watch]");return a.parent().attr("title",i.lang.toolbar.watch),a.removeClass(r).addClass(o),this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),this.saveToTextareas().resize(),i.onwatch||(i.onwatch=t||function(){}),e.proxy(i.onwatch,this)(),this},unwatch:function(t){var i=this.settings;this.state.watching=i.watch=!1,this.preview.hide();var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch;if(this.toolbar){var a=this.toolbar.find(".fa[name=watch]");a.parent().attr("title",i.lang.toolbar.unwatch),a.removeClass(o).addClass(r)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var i=this,o=this.editor,r=this.preview,a=this.toolbar,n=this.settings,s=this.codeMirror;n.toolbar&&(a.toggle(),a.find(".fa[name=preview]").toggleClass("active")),s.toggle();var l=function(e){e.shiftKey&&27===e.keyCode&&i.previewed()};"none"===s.css("display")?(this.state.preview=!0,this.state.fullscreen&&r.css("background","#fff"),o.find("."+this.classPrefix+"preview-close-btn").show().bind(t.mouseOrTouch("click","touchend"),function(){i.previewed()}),n.watch||this.saveToTextareas(),r.show().css({position:"static",top:0,width:o.width(),height:n.autoHeight&&!this.state.fullscreen?"auto":o.height()}),this.state.loaded&&e.proxy(n.onpreviewing,this)(),e(window).bind("keyup",l)):(e(window).unbind("keyup",l),this.previewed())},previewed:function(){var i=this.editor,o=this.preview,r=this.toolbar,a=this.settings,n=this.codeMirror,s=i.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,n.show(),a.toolbar&&r.show(),this.settings.watch?o.show():o.hide(),s.hide().unbind(t.mouseOrTouch("click","touchend")),o.css({background:null,position:"absolute",width:i.width()/2,height:a.autoHeight&&!this.state.fullscreen?"auto":i.height()-r.height(),top:a.toolbar?r.height():0}),this.state.loaded&&e.proxy(a.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.editor,o=(this.preview,this.toolbar),r=this.classPrefix+"fullscreen";o&&o.find(".fa[name=fullscreen]").parent().toggleClass("active");var a=function(e){e.shiftKey||27!==e.keyCode||t.state.fullscreen&&t.fullscreenExit()};return i.hasClass(r)?(e(window).unbind("keyup",a),this.fullscreenExit()):(this.state.fullscreen=!0,e("html,body").css("overflow","hidden"),i.css({position:"fixed",top:0,left:0,margin:0,border:"none",width:e(window).width(),height:e(window).height()}).addClass(r),this.resize(),e.proxy(this.settings.onfullscreen,this)(),e(window).bind("keyup",a)),this},fullscreenExit:function(){var t=this.editor,i=this.toolbar,o=this.classPrefix+"fullscreen";return this.state.fullscreen=!0,i&&i.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({position:"",top:"",left:"",margin:"0 auto 15px",width:t.data("oldWidth"),height:t.data("oldHeight"),border:"1px solid #ddd"}).removeClass(o),this.resize(),e.proxy(this.settings.onfullscreenExit,this)(),this},executePlugin:function(i,o){var r=this,a=this.cm,n=this.settings;return"function"==typeof define?void this[i](a):(o=n.pluginPath+o,void(e.inArray(o,t.loadFiles.plugin)<0?t.loadPlugin(o,function(){t.loadPlugins[i]=r[i],r[i](a)}):e.proxy(t.loadPlugins[i],this)(a)))}},t.fn.init.prototype=t.fn,t.dialogLockScreen=function(){var t=this.settings;t.dialogLockScreen&&e("html,body").css("overflow","hidden")},t.dialogShowMask=function(t){var i=this.editor,o=this.settings;t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),o.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},t.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("> "+i),e.setCursor(t.line,""===i?t.ch+2:t.ch+i.length+2)},ucfirst:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.firstUpperCase(i)),e.setSelections(o)},ucwords:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.wordsFirstUpperCase(i)),e.setSelections(o)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("# "+t)},h2:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("## "+t)},h3:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("### "+t)},h4:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("#### "+t)},h5:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("##### "+t)},h6:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("###### "+t)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":"- "+i[o];e.replaceSelection(i.join("\n"))}},"list-ol":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("1. "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":o+1+". "+i[o];e.replaceSelection(i.join("\n"))}},hr:function(){{var e=this.cm;e.getCursor(),e.getSelection()}e.replaceSelection("------------")},link:function(){this.executePlugin("linkDialog","link-dialog/link-dialog")},anchor:function(){this.executePlugin("anchorLinkDialog","anchor-link-dialog/anchor-link-dialog")},image:function(){this.executePlugin("imageDialog","image-dialog/image-dialog")},code:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("`"+i+"`"),""===i&&e.setCursor(t.line,t.ch+1)},"code-block":function(){this.executePlugin("codeBlockDialog","code-block-dialog/code-block-dialog")},"preformatted-text":function(){this.executePlugin("preformattedTextDialog","preformatted-text-dialog/preformatted-text-dialog")},table:function(){this.executePlugin("tableDialog","table-dialog/table-dialog")},datetime:function(){var e=this.cm,i=(e.getSelection(),new Date,this.settings.lang.name),o=t.dateFormat()+" "+t.dateFormat("zh-cn"===i||"zh-tw"===i?"cn-week-day":"week-day");e.replaceSelection(o)},emoji:function(){this.executePlugin("emojiDialog","emoji-dialog/emoji-dialog")},htmlEntities:function(){this.executePlugin("htmlEntitiesDialog","html-entities-dialog/html-entities-dialog")},watch:function(){this[this.settings.watch?"unwatch":"watch"]()},preview:function(){this.previewing()},fullscreen:function(){this.fullscreen()},clear:function(){this.clear()},help:function(){this.executePlugin("helpDialog","help-dialog/help-dialog")},info:function(){this.showInfoDialog()}},t.keyMaps={"Ctrl-B":"bold","Ctrl-I":"italic","Ctrl-K":"code","Shift-Ctrl-C":"code","Shift-Ctrl-Q":"quote","Shift-Ctrl-S":"del","Ctrl-H":"hr","Ctrl-1":"h1","Ctrl-2":"h2","Ctrl-3":"h3","Ctrl-4":"h4","Ctrl-5":"h5","Ctrl-6":"h6","Ctrl-D":"datetime","Ctrl-E":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(":"+i+":"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-L":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-U":"list-ul","Shift-Ctrl-A":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("@"+i),""===i&&e.setCursor(t.line,t.ch+1)},"Shift-Alt-C":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(["```",i,"```"].join("\n")),""===i&&e.setCursor(t.line,t.ch+3);
+/*! Editor.md v1.4.0 | editormd.amd.min.js | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-03-23 */
+!function(e){"use strict";if("function"==typeof require&&"object"==typeof exports&&"object"==typeof module)module.exports=e;else if("function"==typeof define)if(define.amd){var t="codemirror/mode/",i="codemirror/addon/",o=["jquery","marked","prettify","katex","raphael","underscore","flowchart","jqueryflowchart","sequenceDiagram","codemirror/lib/codemirror",t+"css/css",t+"sass/sass",t+"shell/shell",t+"sql/sql",t+"clike/clike",t+"php/php",t+"xml/xml",t+"markdown/markdown",t+"javascript/javascript",t+"htmlmixed/htmlmixed",t+"gfm/gfm",t+"http/http",t+"go/go",t+"dart/dart",t+"coffeescript/coffeescript",t+"nginx/nginx",t+"python/python",t+"perl/perl",t+"lua/lua",t+"r/r",t+"ruby/ruby",t+"rst/rst",t+"smartymixed/smartymixed",t+"vb/vb",t+"vbscript/vbscript",t+"velocity/velocity",t+"xquery/xquery",t+"yaml/yaml",t+"erlang/erlang",t+"jade/jade",i+"edit/trailingspace",i+"dialog/dialog",i+"search/searchcursor",i+"search/search",i+"scroll/annotatescrollbar",i+"search/matchesonscrollbar",i+"display/placeholder",i+"edit/closetag",i+"fold/foldcode",i+"fold/foldgutter",i+"fold/indent-fold",i+"fold/brace-fold",i+"fold/xml-fold",i+"fold/markdown-fold",i+"fold/comment-fold",i+"mode/overlay",i+"selection/active-line",i+"edit/closebrackets",i+"display/fullscreen",i+"search/match-highlighter"];define(o,e)}else define(["jquery"],e);else window.editormd=e()}(function(){"function"==typeof define&&define.amd&&(e=arguments[0],marked=arguments[1],prettify=arguments[2],katex=arguments[3],Raphael=arguments[4],_=arguments[5],flowchart=arguments[6],CodeMirror=arguments[9]);var e="undefined"!=typeof jQuery?jQuery:Zepto;if("undefined"!=typeof e){var t=function(e,i){return new t.fn.init(e,i)};t.title=t.$name="Editor.md",t.version="1.4.0",t.homePage="https://pandao.github.io/editor.md/",t.classPrefix="editormd-",t.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"]},t.defaults={mode:"gfm",theme:"default",value:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:!0,watch:!0,placeholder:"Enjoy Markdown! coding now...",gotoLine:!0,codeFold:!1,autoHeight:!1,autoCloseTags:!0,searchReplace:!0,readOnly:!1,lineNumbers:!0,matchWordHighlight:!0,styleActiveLine:!0,dialogLockScreen:!0,dialogShowMask:!0,dialogDraggable:!0,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:!1,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:!1,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:!1,uploadCallbackURL:"",toc:!0,tocm:!1,tocTitle:"",tocDropdown:!1,tocContainer:"",tocStartLevel:1,htmlDecode:!1,pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0,toolbar:!0,toolbarAutoFixed:!0,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return t.toolbarHandlers.ucwords},lowercase:function(){return t.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:t.classPrefix+"bold",h2:t.classPrefix+"bold",h3:t.classPrefix+"bold",h4:t.classPrefix+"bold",h5:t.classPrefix+"bold",h6:t.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:{},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:"关于"+t.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:"使用帮助"}}}},t.classNames={tex:t.classPrefix+"tex"},t.dialogZindex=99999,t.$katex=null,t.$marked=null,t.$CodeMirror=null,t.$prettyPrint=null;var i,o;t.prototype=t.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(i,o){o=o||{},"object"==typeof i&&(o=i);var r=this.classPrefix=t.classPrefix,a=this.settings=e.extend(!0,t.defaults,o);i="object"==typeof i?a.id:i;var n=this.editor=e("#"+i);this.id=i,this.lang=a.lang;var s=this.classNames={textarea:{html:r+"html-textarea",markdown:r+"markdown-textarea"}};a.pluginPath=""===a.pluginPath?a.path+"../plugins/":a.pluginPath,this.state.watching=a.watch?!0:!1,n.hasClass("editormd")||n.addClass("editormd"),n.css({width:"number"==typeof a.width?a.width+"px":a.width,height:"number"==typeof a.height?a.height+"px":a.height}),a.autoHeight&&n.css("height","auto");var l=this.markdownTextarea=n.children("textarea");l.length<1&&(n.append(""),l=this.markdownTextarea=n.children("textarea")),l.addClass(s.textarea.markdown).attr("name",i+"-markdown-doc").attr("placeholder",a.placeholder);var c=[a.readOnly?"":'',a.saveHTMLToTextarea?'':"",'','',''].join("\n");return n.append(c).addClass(r+"vertical"),this.mask=n.children("."+r+"mask"),this.containerMask=n.children("."+r+"container-mask"),""!==a.markdown&&l.val(a.markdown),""!==a.appendMarkdown&&l.val(l.val()+a.appendMarkdown),this.htmlTextarea=n.children("."+s.textarea.html),this.preview=n.children("."+r+"preview"),this.previewContainer=this.preview.children("."+r+"preview-container"),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(t.$katex=katex),a.searchReplace&&!a.readOnly&&(t.loadCSS(a.path+"codemirror/addon/dialog/dialog"),t.loadCSS(a.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!a.autoLoadModules?("undefined"!=typeof CodeMirror&&(t.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(t.$marked=marked),this.setCodeMirror().setToolbar().loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,i=this.settings,o=i.path,r=function(){return t.isIE8?void e.loadedDisplay():void(i.flowChart||i.sequenceDiagram?t.loadScript(o+"raphael.min",function(){t.loadScript(o+"underscore.min",function(){!i.flowChart&&i.sequenceDiagram?t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()}):i.flowChart&&!i.sequenceDiagram?t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){e.loadedDisplay()})}):i.flowChart&&i.sequenceDiagram&&t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay())};return t.loadCSS(o+"codemirror/codemirror.min"),i.searchReplace&&!i.readOnly&&(t.loadCSS(o+"codemirror/addon/dialog/dialog"),t.loadCSS(o+"codemirror/addon/search/matchesonscrollbar")),i.codeFold&&t.loadCSS(o+"codemirror/addon/fold/foldgutter"),t.loadScript(o+"codemirror/codemirror.min",function(){t.$CodeMirror=CodeMirror,t.loadScript(o+"codemirror/modes.min",function(){t.loadScript(o+"codemirror/addons.min",function(){return e.setCodeMirror(),"gfm"!==i.mode&&"markdown"!==i.mode?(e.loadedDisplay(),!1):(e.setToolbar(),void t.loadScript(o+"marked.min",function(){t.$marked=marked,i.previewCodeHighlight?t.loadScript(o+"prettify.min",function(){r()}):r()}))})})}),this},setTheme:function(e){var i=this.settings;return i.theme=e,"default"!==e&&t.loadCSS(i.path+"codemirror/theme/"+i.theme),this.cm.setOption("theme",e),this},setCodeMirror:function(){var e=this.settings,i=this.editor;"default"!==e.theme&&t.loadCSS(e.path+"codemirror/theme/"+e.theme);var o={mode:e.mode,theme:e.theme,tabSize:4,dragDrop:!1,autofocus:!0,autoCloseTags:e.autoCloseTags,readOnly:e.readOnly?"nocursor":!1,indentUnit:4,lineNumbers:e.lineNumbers,lineWrapping:!0,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,indentWithTabs:!0,styleActiveLine:e.styleActiveLine,styleSelectedText:!0,autoCloseBrackets:!0,showTrailingSpace:!0,highlightSelectionMatches:e.matchWordHighlight?{showToken:"onselected"===e.matchWordHighlight?!1:/\w/}:!1};return this.codeEditor=this.cm=t.$CodeMirror.fromTextArea(this.markdownTextarea[0],o),this.codeMirror=this.cmElement=i.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},gotoLine:function(t){var i=this.settings;if(!i.gotoLine)return this;var o=this.cm,r=(this.editor,o.lineCount()),a=this.preview;if("string"==typeof t&&("last"===t&&(t=r),"first"===t&&(t=1)),"number"!=typeof t)return alert("Error: The line number must be an integer."),this;if(t=parseInt(t)-1,t>r)return alert("Error: The line number range 1-"+r),this;o.setCursor({line:t,ch:0});var n=o.getScrollInfo(),s=n.clientHeight,l=o.charCoords({line:t,ch:0},"local");if(o.scrollTo(null,(l.top+l.bottom-s)/2),i.watch){var c=this.codeMirror.find(".CodeMirror-scroll")[0],h=e(c).height(),d=c.scrollTop,u=d/c.scrollHeight;a.scrollTop(0===d?0:d+h>=a[0].scrollHeight?a[0].scrollHeight:a[0].scrollHeight*u)}return o.focus(),this},extend:function(){return"undefined"!=typeof arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&"undefined"==typeof arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return"undefined"!=typeof i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var o=this.settings;return"object"==typeof t&&(o=e.extend(!0,o,t)),"string"==typeof t&&(o[t]=i),this.settings=o,this.recreate(),this},on:function(t,i){var o=this.settings;return"undefined"!=typeof o["on"+t]&&(o["on"+t]=e.proxy(i,this)),this},off:function(e){var t=this.settings;return"undefined"!=typeof t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=this.settings;return i.readOnly?this:(i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this)},hideToolbar:function(t){var i=this.settings;return i.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,o=this.editor,r=this.toolbar,a=this.settings;"undefined"!=typeof t&&(a.toolbarAutoFixed=t);var n=function(){var t=e(window),i=t.scrollTop();return a.toolbarAutoFixed?void r.css(i-o.offset().top>10&&i';i.append(a),r=this.toolbar=i.children("."+o+"toolbar")}if(!e.toolbar)return r.hide(),this;r.show();for(var n="function"==typeof e.toolbarIcons?e.toolbarIcons():"string"==typeof e.toolbarIcons?t.toolbarModes[e.toolbarIcons]:e.toolbarIcons,s=r.find("."+this.classPrefix+"menu"),l="",c=0,h=n.length;h>c;c++){var d=n[c];if("|"!==d){var u=/h(\d)/.test(d),f=d;"watch"!==d||e.watch||(f="unwatch");var g=e.lang.toolbar[f],p=e.toolbarIconTexts[f],m=e.toolbarIconsClass[f];g="undefined"==typeof g?"":g,p="undefined"==typeof p?"":p,m="undefined"==typeof m?"":m,l+="- ",l+="undefined"!=typeof e.toolbarCustomIcons[d]&&"function"!=typeof e.toolbarCustomIcons[d]?e.toolbarCustomIcons[d]:''+(u?d.toUpperCase():""===m?p:"")+"",l+="
"}else l+='- |
'}return s.html(l),s.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),s.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this},dialogLockScreen:function(){return e.proxy(t.dialogLockScreen,this)(),this},dialogShowMask:function(i){return e.proxy(t.dialogShowMask,this)(i),this},getToolbarHandles:function(e){var i=this.toolbarHandlers=t.toolbarHandlers;return e&&"undefined"!=typeof toolbarIconHandlers[e]?i[e]:i},setToolbarHandler:function(){var i=this,o=this.settings;if(!o.toolbar||o.readOnly)return this;var r=this.toolbar,a=this.cm,n=this.classPrefix,s=this.toolbarIcons=r.find("."+n+"menu > li > a"),l=this.getToolbarHandles();return s.bind(t.mouseOrTouch("click","touchend"),function(){var t=e(this).children(".fa"),r=t.attr("name"),n=a.getCursor(),s=a.getSelection();return""!==r?(i.activeIcon=t,"undefined"!=typeof l[r]?e.proxy(l[r],i)(a):"undefined"!=typeof o.toolbarHandlers[r]&&e.proxy(o.toolbarHandlers[r],i)(a,t,n,s),"link"!==r&&"reference-link"!==r&&"image"!==r&&"code-block"!==r&&"preformatted-text"!==r&&"watch"!==r&&"preview"!==r&&"search"!==r&&"fullscreen"!==r&&"info"!==r&&a.focus(),!1):void 0}),this},createDialog:function(i){return e.proxy(t.createDialog,this)(i)},createInfoDialog:function(){var e=this,i=this.editor,o=this.classPrefix,r=['','
','
'+t.title+"v"+t.version+"
","
"+this.lang.description+"
",'
'+t.homePage+'
','
Copyright © 2015 Pandao, The MIT License.
',"
",'
',"
"].join("\n");i.append(r);var a=this.infoDialog=i.children("."+o+"dialog-info");return a.find("."+o+"dialog-close").bind(t.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),a.css("border",t.isIE8?"1px solid #ddd":"").css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var i=this.editor,o=this.settings,r=this.infoDialog=i.children("."+this.classPrefix+"dialog-info");return r.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:o.dialogMaskOpacity,backgroundColor:o.dialogMaskBgColor}).show(),r.css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return t.lockScreen(e),this},recreate:function(){var e=this.editor,t=this.settings;return this.codeMirror.remove(),this.setCodeMirror(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.loadedDisplay(!0),this},previewCodeHighlight:function(){var e=this.settings,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){return null===i?this:(this.previewContainer.find("."+t.classNames.tex).each(function(){var i=e(this);t.$katex.render(i.html(),i[0])}),this)},flowChartAndSequenceDiagramRender:function(){var e=this.settings,i=this.previewContainer;if(t.isIE8)return this;if(e.flowChart){if(null===o)return this;i.find(".flowchart").flowChart()}return e.sequenceDiagram&&i.find(".sequence-diagram").sequenceDiagram({theme:"simple"}),this},registerKeyMaps:function(i){var o=this,r=this.cm,a=this.settings,n=t.toolbarHandlers,s=a.disabledKeyMaps;if(i=i||null){for(var l in i)if(e.inArray(l,s)<0){var c={};c[l]=i[l],r.addKeyMap(i)}}else{for(var h in t.keyMaps){var d=t.keyMaps[h],u="string"==typeof d?e.proxy(n[d],o):e.proxy(d,o);if(e.inArray(h,["F9","F10","F11"])<0&&e.inArray(h,s)<0){var f={};f[h]=u,r.addKeyMap(f)}}e(window).keydown(function(t){var i={120:"F9",121:"F10",122:"F11"};if(e.inArray(i[t.keyCode],s)<0)switch(t.keyCode){case 120:return e.proxy(n.watch,o)(),!1;case 121:return e.proxy(n.preview,o)(),!1;case 122:return e.proxy(n.fullscreen,o)(),!1}})}return this},bindScrollEvent:function(){var i=this,o=this.preview,r=this.settings,a=this.codeMirror,n=t.mouseOrTouch,s=function(){a.find(".CodeMirror-scroll").bind(n("scroll","touchmove"),function(t){var a=e(this).height(),n=e(this).scrollTop(),s=n/e(this)[0].scrollHeight;o.scrollTop(0===n?0:n+a>=e(this)[0].scrollHeight?o[0].scrollHeight:o[0].scrollHeight*s),e.proxy(r.onscroll,i)(t)})},l=function(){a.find(".CodeMirror-scroll").unbind(n("scroll","touchmove"))},c=function(){o.bind(n("scroll","touchmove"),function(t){var o=e(this).height(),n=e(this).scrollTop(),s=n/e(this)[0].scrollHeight,l=a.find(".CodeMirror-scroll");l.scrollTop(0===n?0:n+o>=e(this)[0].scrollHeight?l[0].scrollHeight:l[0].scrollHeight*s),e.proxy(r.onpreviewscroll,i)(t)})},h=function(){o.unbind(n("scroll","touchmove"))};return a.bind({mouseover:s,mouseout:l,touchstart:s,touchend:l}),o.bind({mouseover:c,mouseout:h,touchstart:c,touchend:h}),this},bindChangeEvent:function(){var e=this,t=this.cm,o=this.settings;return t.on("change",function(){o.watch&&e.previewContainer.css("padding",o.autoHeight?"20px 20px 50px 40px":"20px"),i=setTimeout(function(){clearTimeout(i),e.save(),i=null},o.delay)}),this},loadedDisplay:function(t){t=t||!1;var i=this,o=this.editor,r=this.preview,a=this.settings;return this.containerMask.hide(),this.save(),a.watch&&r.show(),o.data("oldWidth",o.width()).data("oldHeight",o.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()}),this.bindScrollEvent().bindChangeEvent(),t||e.proxy(a.onload,this)(),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var o=this.state,r=this.editor,a=this.preview,n=this.toolbar,s=this.settings,l=this.codeMirror;return t&&r.css("width","number"==typeof t?t+"px":t),!s.autoHeight||o.fullscreen||o.preview?(i&&r.css("height","number"==typeof i?i+"px":i),o.fullscreen&&r.height(e(window).height()),s.toolbar&&!s.readOnly?l.css("margin-top",n.height()+1).height(r.height()-n.height()):l.css("margin-top",0).height(r.height())):(r.css("height","auto"),l.css("height","auto")),s.watch?(l.width(r.width()/2),a.width(o.preview?r.width():r.width()/2),this.previewContainer.css("padding",s.autoHeight?"20px 20px 50px 40px":"20px"),s.toolbar&&!s.readOnly?a.css("top",n.height()):a.css("top",0),a.height(!s.autoHeight||o.fullscreen||o.preview?s.toolbar&&!s.readOnly?r.height()-n.height():r.height():"")):(l.width(r.width()),a.hide()),o.loaded&&e.proxy(s.onresize,this)(),this},save:function(){if(null===i)return this;var r=this,a=this.state,n=this.settings,s=this.cm,l=s.getValue(),c=this.previewContainer;if("gfm"!==n.mode&&"markdown"!==n.mode)return this.markdownTextarea.val(l),this;var h=t.$marked,d=this.markdownToC=[],u=this.markedRendererOptions={toc:n.toc,tocm:n.tocm,tocStartLevel:n.tocStartLevel,pageBreak:n.pageBreak,taskList:n.taskList,emoji:n.emoji,tex:n.tex,atLink:n.atLink,emailLink:n.emailLink,flowChart:n.flowChart,sequenceDiagram:n.sequenceDiagram,previewCodeHighlight:n.previewCodeHighlight},f=this.markedOptions={renderer:t.markedRenderer(d,u),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:n.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};h.setOptions(f),l=t.filterHTMLTags(l,n.htmlDecode);var g=t.$marked(l,f);if(this.markdownTextarea.val(l),s.save(),n.saveHTMLToTextarea&&this.htmlTextarea.html(g),n.watch||!n.watch&&a.preview){if(c.html(g),this.previewCodeHighlight(),n.toc){var p=""===n.tocContainer?c:e(n.tocContainer),m=p.find("."+this.classPrefix+"toc-menu");p.attr("previewContainer",""===n.tocContainer?"true":"false"),""!==n.tocContainer&&m.length>0&&m.remove(),t.markdownToCRenderer(d,p,n.tocDropdown,n.tocStartLevel),(n.tocDropdown||p.find("."+this.classPrefix+"toc-menu").length>0)&&t.tocDropdownMenu(p,""!==n.tocTitle?n.tocTitle:this.lang.tocTitle),""!==n.tocContainer&&c.find(".markdown-toc").css("border","none")}n.tex&&(!t.kaTeXLoaded&&n.autoLoadModules?t.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,r.katexRender()}):(t.$katex=katex,this.katexRender())),(n.flowChart||n.sequenceDiagram)&&(o=setTimeout(function(){clearTimeout(o),r.flowChartAndSequenceDiagramRender(),o=null},10)),a.loaded&&e.proxy(n.onchange,this)()}return this},focus:function(){return this.cm.focus(),this},setCursor:function(e){return this.cm.setCursor(e),this},getCursor:function(){return this.cm.getCursor()},setSelection:function(e,t){return this.cm.setSelection(e,t),this},getSelection:function(){return this.cm.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.cm.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},appendMarkdown:function(e){var t=(this.settings,this.cm);return t.setValue(t.getValue()+e),this},setMarkdown:function(e){return this.cm.setValue(e||this.settings.markdown),this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(e){return this.cm.setValue(e),this},clear:function(){return this.cm.setValue(""),this},getHTML:function(){return this.settings.saveHTMLToTextarea?this.htmlTextarea.html():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return this.settings.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(t){var o=this.settings;if(e.inArray(o.mode,["gfm","markdown"])<0)return this;if(this.state.watching=o.watch=!0,this.preview.show(),this.toolbar){var r=o.toolbarIconsClass.watch,a=o.toolbarIconsClass.unwatch,n=this.toolbar.find(".fa[name=watch]");n.parent().attr("title",o.lang.toolbar.watch),n.removeClass(a).addClass(r)}return this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),i=0,this.save().resize(),o.onwatch||(o.onwatch=t||function(){}),e.proxy(o.onwatch,this)(),this},unwatch:function(t){var i=this.settings;if(this.state.watching=i.watch=!1,this.preview.hide(),this.toolbar){var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch,a=this.toolbar.find(".fa[name=watch]");a.parent().attr("title",i.lang.toolbar.unwatch),a.removeClass(o).addClass(r)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var i=this,o=this.editor,r=this.preview,a=this.toolbar,n=this.settings,s=this.codeMirror;if(e.inArray(n.mode,["gfm","markdown"])<0)return this;n.toolbar&&a&&(a.toggle(),a.find(".fa[name=preview]").toggleClass("active")),s.toggle();var l=function(e){e.shiftKey&&27===e.keyCode&&i.previewed()};"none"===s.css("display")?(this.state.preview=!0,this.state.fullscreen&&r.css("background","#fff"),o.find("."+this.classPrefix+"preview-close-btn").show().bind(t.mouseOrTouch("click","touchend"),function(){i.previewed()}),n.watch||this.save(),r.show().css({position:"static",top:0,width:o.width(),height:n.autoHeight&&!this.state.fullscreen?"auto":o.height()}),this.state.loaded&&e.proxy(n.onpreviewing,this)(),e(window).bind("keyup",l)):(e(window).unbind("keyup",l),this.previewed())},previewed:function(){var i=this.editor,o=this.preview,r=this.toolbar,a=this.settings,n=i.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,this.codeMirror.show(),a.toolbar&&r.show(),o[a.watch?"show":"hide"](),n.hide().unbind(t.mouseOrTouch("click","touchend")),o.css({background:null,position:"absolute",width:i.width()/2,height:a.autoHeight&&!this.state.fullscreen?"auto":i.height()-r.height(),top:a.toolbar?r.height():0}),this.state.loaded&&e.proxy(a.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.state,o=this.editor,r=(this.preview,this.toolbar),a=this.settings,n=this.classPrefix+"fullscreen";r&&r.find(".fa[name=fullscreen]").parent().toggleClass("active");var s=function(e){e.shiftKey||27!==e.keyCode||i.fullscreen&&t.fullscreenExit()};return o.hasClass(n)?(e(window).unbind("keyup",s),this.fullscreenExit()):(i.fullscreen=!0,e("html,body").css("overflow","hidden"),o.css({position:"fixed",top:0,left:0,margin:0,border:"none",width:e(window).width(),height:e(window).height()}).addClass(n),this.resize(),e.proxy(a.onfullscreen,this)(),e(window).bind("keyup",s)),this},fullscreenExit:function(){var t=this.editor,i=this.settings,o=this.toolbar,r=this.classPrefix+"fullscreen";return this.state.fullscreen=!1,o&&o.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({position:"",top:"",left:"",margin:"0 auto 15px",width:t.data("oldWidth"),height:t.data("oldHeight"),border:"1px solid #ddd"}).removeClass(r),this.resize(),e.proxy(i.onfullscreenExit,this)(),this},executePlugin:function(i,o){var r=this,a=this.cm,n=this.settings;return o=n.pluginPath+o,"function"==typeof define?"undefined"==typeof this[i]?(alert("Error: "+i+" plugin is not found, you are not load this plugin."),this):(this[i](a),this):(e.inArray(o,t.loadFiles.plugin)<0?t.loadPlugin(o,function(){t.loadPlugins[i]=r[i],r[i](a)}):e.proxy(t.loadPlugins[i],this)(a),this)},search:function(e){var t=this.settings;return t.searchReplace?(t.readOnly||this.cm.execCommand(e||"find"),this):(alert("Error: settings.searchReplace == false"),this)},searchReplace:function(){return this.search("replace"),this},searchReplaceAll:function(){return this.search("replaceAll"),this}},t.fn.init.prototype=t.fn,t.dialogLockScreen=function(){var t=this.settings||{dialogLockScreen:!0};t.dialogLockScreen&&e("html,body").css("overflow","hidden")},t.dialogShowMask=function(t){var i=this.editor,o=this.settings||{dialogShowMask:!0};t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),o.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},t.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("> "+i),e.setCursor(t.line,""===i?t.ch+2:t.ch+i.length+2)},ucfirst:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.firstUpperCase(i)),e.setSelections(o)},ucwords:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.wordsFirstUpperCase(i)),e.setSelections(o)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("# "+t)},h2:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("## "+t)},h3:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("### "+t)},h4:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("#### "+t)},h5:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("##### "+t)},h6:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("###### "+t)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":"- "+i[o];e.replaceSelection(i.join("\n"))}},"list-ol":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("1. "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":o+1+". "+i[o];
-},"Shift-Ctrl-Alt-C":"code-block","Shift-Ctrl-H":"htmlEntities","Shift-Alt-H":"help","Shift-Ctrl-E":"emoji","Shift-Ctrl-U":"uppercase","Shift-Alt-U":"ucwords","Shift-Ctrl-Alt-U":"ucfirst","Shift-Alt-L":"lowercase","Shift-Ctrl-I":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("!["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+4)},"Shift-Ctrl-Alt-I":"image","Shift-Ctrl-L":"link","Shift-Ctrl-O":"list-ol","Shift-Ctrl-P":"preformatted-text","Shift-Ctrl-T":"table",F9:"watch",F10:"preview",F11:"fullscreen"};var i=function(e){return String.prototype.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};t.trim=i;var o=function(e){return e.toLowerCase().replace(/\b(\w)|\s(\w)/g,function(e){return e.toUpperCase()})};t.ucwords=t.wordsFirstUpperCase=o;var r=function(e){return e.toLowerCase().replace(/\b(\w)/,function(e){return e.toUpperCase()})};return t.firstUpperCase=t.ucfirst=r,t.urls={atLinkBase:"https://github.com/"},t.regexs={atLink:/@(\w+)/g,email:/(\w+)@(\w+)\.(\w+)\.?(\w+)?/g,emailLink:/(mailto:)?([\w\.\_]+)@(\w+)\.(\w+)\.?(\w+)?/g,emoji:/:([\-\w]+):/g,emojiDatetime:/(\d{2}:\d{2}:\d{2})/g,twemoji:/:(tw-([\w]+)-?(\w+)?):/g,fontAwesome:/:(fa-([\w]+)(-(\w+)){0,}):/g,editormdLogo:/:(editormd-logo-?(\w+)?):/g},t.emoji={path:"http://www.emoji-cheat-sheet.com/graphics/emojis/",ext:".png"},t.twemoji={path:"http://twemoji.maxcdn.com/36x36/",ext:".png"},t.markedRenderer=function(o,r){var a={toc:!0,tocStartLevel:1,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1},n=e.extend(a,r||{}),s=t.$marked,l=new s.Renderer;o=o||[];var c=t.regexs.atLink,d=t.regexs.emoji,h=t.regexs.email,u=t.regexs.emailLink,f=t.regexs.twemoji,g=t.regexs.fontAwesome,p=t.regexs.editormdLogo;return l.emoji=function(e){e=e.replace(t.regexs.emojiDatetime,function(e){return e.replace(/:/g,":")});var i=e.match(d);if(!i||!n.emoji)return e;for(var o=0,r=i.length;r>o;o++)e=e.replace(new RegExp(i[o]),function(e){var i=e.match(g),o=e.replace(/:/g,"");if(i)for(var r=0,a=i.length;a>r;r++){var n=i[r].replace(/:/g,"");return''}else{var s=e.match(p),l=e.match(f);if(s)for(var c=0,d=s.length;d>c;c++){var h=s[c].replace(/:/g,"");return''}else{if(!l)return'';for(var u=0,m=l.length;m>u;u++){var w=l[u].replace(/:/g,"").replace("tw-","");return''}}}});return e},l.atLink=function(e){return c.test(e)?(n.atLink&&(e=e.replace(h,function(e){return e.replace(/@/g,"_#_@_#_")}),e=e.replace(c,function(e,i){return''+e+""}).replace(/_#_@_#_/g,"@")),n.emailLink&&(e=e.replace(u,function(e,t){return t?e:''+e+""})),e):e},l.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(r){return""}if(0===o.indexOf("javascript:"))return""}var a=''+i.replace(/@/g,"@")+""):(t&&(a+=' title="'+t+'"'),a+=">"+i+"")},l.heading=function(e,t){var r=e,a=/\s*\]*)\>(.*)\<\/a\>\s*/;if(a.test(e)){var n=[];e=e.split(/\]+)\>([^\>]*)\<\/a\>/);for(var s=0,l=e.length;l>s;s++)n.push(e[s].replace(/\s*href\=\"(.*)\"\s*/g,""));e=n.join(" ")}e=i(e);var c=e.toLowerCase().replace(/[^\w]+/g,"-"),d={text:e,level:t,slug:c},h=/^[\u4e00-\u9fa5]+$/.test(e),u=h?escape(e).replace(/\%/g,""):e.toLowerCase().replace(/[^\w]+/g,"-");o.push(d);var f="';return f+='',f+='',f+=this.atLink(a?this.emoji(r):this.emoji(e)),f+=""},l.paragraph=function(e){var i=/\$\$(.*)\$\$/g.test(e),o=/^\$\$(.*)\$\$$/.test(e),r=o?' class="'+t.classNames.tex+'"':"",a=/^\[TOC\]$/.test(e);return e=!o&&i?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,i){return''+i.replace(/\$/g,"")+""}):o?e.replace(/\$/g,""):e,a?'":""+this.atLink(this.emoji(e))+"
\n"},l.code=function(e,t){return"seq"===t||"sequence"===t?''+e+"
":"flow"===t?''+e+"
":s.Renderer.prototype.code.apply(this,arguments)},l.tablecell=function(e,t){var i=t.header?"th":"td",o=t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">";return o+this.atLink(this.emoji(e))+""+i+">\n"},l.listitem=function(e){return n.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'- '+this.atLink(this.emoji(e))+"
"):"- "+this.atLink(this.emoji(e))+"
"},l},t.markdownToCRenderer=function(e,t,i){var o="",r=0;i=i||1;for(var a=0,n=e.length;n>a;a++){var s=e[a].text,l=e[a].level;i>l||(o+=l>r?"":r>l?new Array(r-l+2).join("
"):"",o+=''+s+"",r=l)}var c=t.find(".markdown-toc");return c.children(".markdown-toc-list").html("").html(o),c},t.filterHTMLTags=function(e,t){if("string"==typeof t)for(var i=t.split(","),o=0,r=i.length;r>o;o++){var a=i[o];e=e.replace(new RegExp("]*)>","igm"),"").replace(new RegExp("","igm"),"")}return e},t.markdownToHTML=function(i,o){var r={gfm:!0,toc:!0,tocStartLevel:1,markdown:"",htmlDecode:!1,autoLoadKaTeX:!0,atLink:!0,emailLink:!0,tex:!1,taskList:!1,emoji:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0};t.$marked=marked;var a=e("#"+i),n=a.settings=e.extend(!0,r,o||{}),s=a.find("textarea"),l=""===n.markdown?s.val():n.markdown,c=[],d={toc:n.toc,tocStartLevel:n.tocStartLevel,taskList:n.taskList,emoji:n.emoji,tex:n.tex,atLink:n.atLink,emailLink:n.emailLink,flowChart:n.flowChart,sequenceDiagram:n.sequenceDiagram,previewCodeHighlight:n.previewCodeHighlight},h={renderer:t.markedRenderer(c,d),gfm:n.gfm,tables:!0,breaks:!0,pedantic:!1,sanitize:n.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};l=t.filterHTMLTags(l,n.htmlDecode);var u=marked(l,h);if(t.isIE8?s.val(l):s.html(l),a.addClass("markdown-body "+this.classPrefix+"html-preview").append(u),n.toc&&(a.tocContainer=this.markdownToCRenderer(c,a,n.tocStartLevel)),n.previewCodeHighlight&&(a.find("pre").addClass("prettyprint linenums"),prettyPrint()),t.isIE8||(n.flowChart&&a.find(".flowchart").flowChart(),n.sequenceDiagram&&a.find(".sequence-diagram").sequenceDiagram({theme:"simple"})),n.tex){var f=function(){a.find("."+t.classNames.tex).each(function(){var t=e(this);katex.render(t.html(),t[0])})};!n.autoLoadKaTeX||t.$katex||t.kaTeXLoaded?f():this.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,f()})}return a.getMarkdown=function(){return t.isIE8?s.val():s.html()},a},t.themes=["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"],t.loadPlugins={},t.loadFiles={js:[],css:[],plugin:[]},t.loadPlugin=function(e,i,o){i=i||function(){},this.loadScript(e,function(){t.loadFiles.plugin.push(e),i()},o)},t.loadCSS=function(e,i,o){o=o||"head",i=i||function(){};var r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.onload=r.onreadystatechange=function(){t.loadFiles.css.push(e),i()},r.href=e+".css","head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.isIE="Microsoft Internet Explorer"==navigator.appName,t.isIE8=t.isIE&&"8."==navigator.appVersion.match(/8./i),t.loadScript=function(e,i,o){o=o||"head",i=i||function(){};var r=null;r=document.createElement("script"),r.id=e.replace(/[\./]+/g,"-"),r.type="text/javascript",r.src=e+".js",t.isIE8?r.onreadystatechange=function(){r.readyState&&("loaded"===r.readyState||"complete"===r.readyState)&&(r.onreadystatechange=null,t.loadFiles.js.push(e),i())}:r.onload=function(){t.loadFiles.js.push(e),i()},"head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.katexURL={css:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min",js:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min"},t.kaTeXLoaded=!1,t.loadKaTeX=function(e){t.loadCSS(t.katexURL.css,function(){t.loadScript(t.katexURL.js,e||function(){})})},t.lockScreen=function(t){e("html,body").css("overflow",t?"hidden":"")},t.createDialog=function(i){var o={name:"",width:420,height:240,title:"",drag:!0,closed:!0,content:"",mask:!0,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:!0,footer:!0,buttons:!1};i=e.extend(!0,o,i);var r=this.editor,a=t.classPrefix,n=(new Date).getTime(),s=""===i.name?a+"dialog-"+n:i.name,l=t.mouseOrTouch,c='';""!==i.title&&(c+='"),i.closed&&(c+='
'),c+='
'+i.content,(i.footer||"string"==typeof i.footer)&&(c+='"),c+="
",c+='
',c+='
',c+="
",r.append(c);var d=r.find("."+s);d.lockScreen=function(t){return i.lockScreen&&e("html,body").css("overflow",t?"hidden":""),d},d.showMask=function(){return i.mask&&r.find("."+a+"mask").css(i.maskStyle).css("z-index",t.dialogZindex-1).show(),d},d.hideMask=function(){return i.mask&&r.find("."+a+"mask").hide(),d},d.loading=function(e){var t=d.find("."+a+"dialog-mask");return t[e?"show":"hide"](),d},d.lockScreen(!0).showMask(),d.show().css({zIndex:t.dialogZindex,border:t.isIE8?"1px solid #ddd":"",width:"number"==typeof i.width?i.width+"px":i.width,height:"number"==typeof i.height?i.height+"px":i.height});var h=function(){d.css({top:(e(window).height()-d.height())/2+"px",left:(e(window).width()-d.width())/2+"px"})};if(h(),e(window).resize(h),d.children("."+a+"dialog-close").bind(l("click","touchend"),function(){d.hide().lockScreen(!1).hideMask()}),"object"==typeof i.buttons){var u=d.footer=d.find("."+a+"dialog-footer");for(var f in i.buttons){var g=i.buttons[f],p=a+f+"-btn";u.append('"),g[1]=e.proxy(g[1],d),u.children("."+p).bind(l("click","touchend"),g[1])}}if(""!==i.title&&i.drag){var m,w,v=d.children("."+a+"dialog-header");i.mask||v.bind(l("click","touchend"),function(){t.dialogZindex+=2,d.css("z-index",t.dialogZindex)}),v.mousedown(function(e){e=e||window.event,m=e.clientX-parseInt(d[0].style.left),w=e.clientY-parseInt(d[0].style.top),document.onmousemove=k});var b=function(e){e.removeClass(a+"user-unselect").off("selectstart")},x=function(e){e.addClass(a+"user-unselect").on("selectstart",function(){return!1})},k=function(t){t=t||window.event;var i,o,r=parseInt(d[0].style.left),a=parseInt(d[0].style.top);r>=0?r+d.width()<=e(window).width()?i=t.clientX-m:(i=e(window).width()-d.width(),document.onmousemove=null):(i=0,document.onmousemove=null),a>=0?o=t.clientY-w:(o=0,document.onmousemove=null),document.onselectstart=function(){return!1},x(e("body")),x(d),d[0].style.left=i+"px",d[0].style.top=o+"px"};document.onmouseup=function(){b(e("body")),b(d),document.onselectstart=null,document.onmousemove=null},v.touchDraggable=function(){var t=null,i=function(i){var o=i.originalEvent,r=e(this).parent().position();t={x:o.changedTouches[0].pageX-r.left,y:o.changedTouches[0].pageY-r.top}},o=function(i){i.preventDefault();var o=i.originalEvent;e(this).parent().css({top:o.changedTouches[0].pageY-t.y,left:o.changedTouches[0].pageX-t.x})};this.bind("touchstart",i).bind("touchmove",o)},v.touchDraggable()}return t.dialogZindex+=2,d},t.mouseOrTouch=function(e,t){e=e||"click",t=t||"touchend";var i=e;try{document.createEvent("TouchEvent"),i=t}catch(o){}return i},t.dateFormat=function(e){e=e||"";var t=function(e){return 10>e?"0"+e:e},i=new Date,o=i.getFullYear(),r=o.toString().slice(2,4),a=t(i.getMonth()+1),n=t(i.getDate()),s=i.getDay(),l=t(i.getHours()),c=t(i.getMinutes()),d=t(i.getSeconds()),h=t(i.getMilliseconds()),u="",f=r+"-"+a+"-"+n,g=o+"-"+a+"-"+n,p=l+":"+c+":"+d;switch(e){case"UNIX Time":u=i.getTime();break;case"UTC":u=i.toUTCString();break;case"yy":u=r;break;case"year":case"yyyy":u=o;break;case"month":case"mm":u=a;break;case"cn-week-day":case"cn-wd":var m=["日","一","二","三","四","五","六"];u="星期"+m[s];break;case"week-day":case"wd":var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];u=w[s];break;case"day":case"dd":u=n;break;case"hour":case"hh":u=l;break;case"min":case"ii":u=c;break;case"second":case"ss":u=d;break;case"ms":u=h;break;case"yy-mm-dd":u=f;break;case"yyyy-mm-dd":u=g;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":u=g+" "+p+" "+h;break;case"full":case"yyyy-mm-dd h:i:s":default:u=g+" "+p}return u},t}});
-//# sourceMappingURL=editormd.amd.min.js.map
\ No newline at end of file
+e.replaceSelection(i.join("\n"))}},hr:function(){{var e=this.cm;e.getCursor(),e.getSelection()}e.replaceSelection("------------")},tex:function(){if(!this.settings.tex)return alert("settings.tex === false"),this;var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("$$"+i+"$$"),""===i&&e.setCursor(t.line,t.ch+2)},link:function(){this.executePlugin("linkDialog","link-dialog/link-dialog")},"reference-link":function(){this.executePlugin("referenceLinkDialog","reference-link-dialog/reference-link-dialog")},pagebreak:function(){if(!this.settings.pageBreak)return alert("settings.pageBreak === false"),this;{var e=this.cm;e.getSelection()}e.replaceSelection("\r\n[========]\r\n")},image:function(){this.executePlugin("imageDialog","image-dialog/image-dialog")},code:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("`"+i+"`"),""===i&&e.setCursor(t.line,t.ch+1)},"code-block":function(){this.executePlugin("codeBlockDialog","code-block-dialog/code-block-dialog")},"preformatted-text":function(){this.executePlugin("preformattedTextDialog","preformatted-text-dialog/preformatted-text-dialog")},table:function(){this.executePlugin("tableDialog","table-dialog/table-dialog")},datetime:function(){var e=this.cm,i=(e.getSelection(),new Date,this.settings.lang.name),o=t.dateFormat()+" "+t.dateFormat("zh-cn"===i||"zh-tw"===i?"cn-week-day":"week-day");e.replaceSelection(o)},emoji:function(){this.executePlugin("emojiDialog","emoji-dialog/emoji-dialog")},"html-entities":function(){this.executePlugin("htmlEntitiesDialog","html-entities-dialog/html-entities-dialog")},"goto-line":function(){this.executePlugin("gotoLineDialog","goto-line-dialog/goto-line-dialog")},watch:function(){this[this.settings.watch?"unwatch":"watch"]()},preview:function(){this.previewing()},fullscreen:function(){this.fullscreen()},clear:function(){this.clear()},search:function(){this.search()},help:function(){this.executePlugin("helpDialog","help-dialog/help-dialog")},info:function(){this.showInfoDialog()}},t.keyMaps={"Ctrl-1":"h1","Ctrl-2":"h2","Ctrl-3":"h3","Ctrl-4":"h4","Ctrl-5":"h5","Ctrl-6":"h6","Ctrl-B":"bold","Ctrl-D":"datetime","Ctrl-E":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();return this.settings.emoji?(e.replaceSelection(":"+i+":"),void(""===i&&e.setCursor(t.line,t.ch+1))):void alert("Error: settings.emoji == false")},"Ctrl-Alt-G":"goto-line","Ctrl-H":"hr","Ctrl-I":"italic","Ctrl-K":"code","Ctrl-L":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-U":"list-ul","Shift-Ctrl-A":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();return this.settings.atLink?(e.replaceSelection("@"+i),void(""===i&&e.setCursor(t.line,t.ch+1))):void alert("Error: settings.atLink == false")},"Shift-Ctrl-C":"code","Shift-Ctrl-Q":"quote","Shift-Ctrl-S":"del","Shift-Ctrl-K":"tex","Shift-Alt-C":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(["```",i,"```"].join("\n")),""===i&&e.setCursor(t.line,t.ch+3)},"Shift-Ctrl-Alt-C":"code-block","Shift-Ctrl-H":"html-entities","Shift-Alt-H":"help","Shift-Ctrl-E":"emoji","Shift-Ctrl-U":"uppercase","Shift-Alt-U":"ucwords","Shift-Ctrl-Alt-U":"ucfirst","Shift-Alt-L":"lowercase","Shift-Ctrl-I":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("!["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+4)},"Shift-Ctrl-Alt-I":"image","Shift-Ctrl-L":"link","Shift-Ctrl-O":"list-ol","Shift-Ctrl-P":"preformatted-text","Shift-Ctrl-T":"table","Shift-Alt-P":"pagebreak",F9:"watch",F10:"preview",F11:"fullscreen"};var r=function(e){return String.prototype.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};t.trim=r;var a=function(e){return e.toLowerCase().replace(/\b(\w)|\s(\w)/g,function(e){return e.toUpperCase()})};t.ucwords=t.wordsFirstUpperCase=a;var n=function(e){return e.toLowerCase().replace(/\b(\w)/,function(e){return e.toUpperCase()})};return t.firstUpperCase=t.ucfirst=n,t.urls={atLinkBase:"https://github.com/"},t.regexs={atLink:/@(\w+)/g,email:/(\w+)@(\w+)\.(\w+)\.?(\w+)?/g,emailLink:/(mailto:)?([\w\.\_]+)@(\w+)\.(\w+)\.?(\w+)?/g,emoji:/:([\-\w]+):/g,emojiDatetime:/(\d{2}:\d{2}:\d{2})/g,twemoji:/:(tw-([\w]+)-?(\w+)?):/g,fontAwesome:/:(fa-([\w]+)(-(\w+)){0,}):/g,editormdLogo:/:(editormd-logo-?(\w+)?):/g,pageBreak:/^\[[=]{8,}\]$/},t.emoji={path:"http://www.emoji-cheat-sheet.com/graphics/emojis/",ext:".png"},t.twemoji={path:"http://twemoji.maxcdn.com/36x36/",ext:".png"},t.markedRenderer=function(i,o){var a={toc:!0,tocm:!1,tocStartLevel:1,pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1},n=e.extend(a,o||{}),s=t.$marked,l=new s.Renderer;i=i||[];var c=t.regexs,h=c.atLink,d=c.emoji,u=c.email,f=c.emailLink,g=c.twemoji,p=c.fontAwesome,m=c.editormdLogo,w=c.pageBreak;return l.emoji=function(e){e=e.replace(t.regexs.emojiDatetime,function(e){return e.replace(/:/g,":")});var i=e.match(d);if(!i||!n.emoji)return e;for(var o=0,r=i.length;r>o;o++)e=e.replace(new RegExp(i[o]),function(e){var i=e.match(p),o=e.replace(/:/g,"");if(i)for(var r=0,a=i.length;a>r;r++){var n=i[r].replace(/:/g,"");return''}else{var s=e.match(m),l=e.match(g);if(s)for(var c=0,h=s.length;h>c;c++){var d=s[c].replace(/:/g,"");return''}else{if(!l)return'';for(var u=0,f=l.length;f>u;u++){var w=l[u].replace(/:/g,"").replace("tw-","");return''}}}});return e},l.atLink=function(i){return h.test(i)?(n.atLink&&(i=i.replace(u,function(e){return e.replace(/@/g,"_#_@_#_")}),i=i.replace(h,function(e,i){return''+e+""}).replace(/_#_@_#_/g,"@")),n.emailLink&&(i=i.replace(f,function(t,i,o,r,a){return!i&&e.inArray(a,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+t+"":t})),i):i},l.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(r){return""}if(0===o.indexOf("javascript:"))return""}var a=''+i.replace(/@/g,"@")+""):(t&&(a+=' title="'+t+'"'),a+=">"+i+"")},l.heading=function(e,t){var o=e,a=/\s*\]*)\>(.*)\<\/a\>\s*/;if(a.test(e)){var n=[];e=e.split(/\]+)\>([^\>]*)\<\/a\>/);for(var s=0,l=e.length;l>s;s++)n.push(e[s].replace(/\s*href\=\"(.*)\"\s*/g,""));e=n.join(" ")}e=r(e);var c=e.toLowerCase().replace(/[^\w]+/g,"-"),h={text:e,level:t,slug:c},d=/^[\u4e00-\u9fa5]+$/.test(e),u=d?escape(e).replace(/\%/g,""):e.toLowerCase().replace(/[^\w]+/g,"-");i.push(h);var f="';return f+='',f+='',f+=this.atLink(a?this.emoji(o):this.emoji(e)),f+=""},l.pageBreak=function(e){return w.test(e)&&n.pageBreak&&(e='
'),e},l.paragraph=function(e){var i=/\$\$(.*)\$\$/g.test(e),o=/^\$\$(.*)\$\$$/.test(e),r=o?' class="'+t.classNames.tex+'"':"",a=n.tocm?/^(\[TOC\]|\[TOCM\])$/.test(e):/^\[TOC\]$/.test(e),s=/^\[TOCM\]$/.test(e);e=!o&&i?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,i){return''+i.replace(/\$/g,"")+""}):o?e.replace(/\$/g,""):e;var l=''+e+"
";return a?s?'
":l:w.test(e)?this.pageBreak(e):""+this.atLink(this.emoji(e))+"
\n"},l.code=function(e,t){return"seq"===t||"sequence"===t?''+e+"
":"flow"===t?''+e+"
":s.Renderer.prototype.code.apply(this,arguments)},l.tablecell=function(e,t){var i=t.header?"th":"td",o=t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">";return o+this.atLink(this.emoji(e))+""+i+">\n"},l.listitem=function(e){return n.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'- '+this.atLink(this.emoji(e))+"
"):"- "+this.atLink(this.emoji(e))+"
"},l},t.markdownToCRenderer=function(e,t,i,o){var r="",a=0,n=this.classPrefix;o=o||1;for(var s=0,l=e.length;l>s;s++){var c=e[s].text,h=e[s].level;o>h||(r+=h>a?"":a>h?new Array(a-h+2).join("
"):"",r+=''+c+"",a=h)}var d=t.find(".markdown-toc");if(d.length<1&&"false"===t.attr("previewContainer")){var u='';u=i?'":u,t.html(u),d=t.find(".markdown-toc")}return i&&d.wrap('
'),d.html('').children(".markdown-toc-list").html(r.replace(/\r?\n?\\<\/ul\>/g,"")),d},t.tocDropdownMenu=function(t,i){i=i||"Table of Contents";var o=400,r=t.find("."+this.classPrefix+"toc-menu");return r.each(function(){var t=e(this),r=t.children(".markdown-toc"),a='',n='",s=r.children("ul"),l=s.find("li");r.append(n),l.first().before(""+i+" "+a+"
"),t.mouseover(function(){s.show(),l.each(function(){var t=e(this),i=t.children("ul");if(""===i.html()&&i.remove(),i.length>0&&""!==i.html()){var r=t.children("a").first();r.children(".fa").length<1&&r.append(e(a).css({"float":"right",paddingTop:"4px"}))}t.mouseover(function(){i.css("z-index",o).show(),o+=1}).mouseleave(function(){i.hide()})})}).mouseleave(function(){s.hide()})}),r},t.filterHTMLTags=function(e,t){if("string"==typeof t)for(var i=t.split(","),o=0,r=i.length;r>o;o++){var a=i[o];e=e.replace(new RegExp("]*)>","igm"),"").replace(new RegExp("","igm"),"")}return e},t.markdownToHTML=function(i,o){var r={gfm:!0,toc:!0,tocm:!1,tocStartLevel:1,tocTitle:"目录",tocDropdown:!1,markdown:"",htmlDecode:!1,autoLoadKaTeX:!0,pageBreak:!0,atLink:!0,emailLink:!0,tex:!1,taskList:!1,emoji:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0};t.$marked=marked;var a=e("#"+i),n=a.settings=e.extend(!0,r,o||{}),s=a.find("textarea");s.length<1&&(a.append(""),s=a.find("textarea"));var l=""===n.markdown?s.val():n.markdown,c=[],h={toc:n.toc,tocm:n.tocm,tocStartLevel:n.tocStartLevel,taskList:n.taskList,emoji:n.emoji,tex:n.tex,pageBreak:n.pageBreak,atLink:n.atLink,emailLink:n.emailLink,flowChart:n.flowChart,sequenceDiagram:n.sequenceDiagram,previewCodeHighlight:n.previewCodeHighlight},d={renderer:t.markedRenderer(c,h),gfm:n.gfm,tables:!0,breaks:!0,pedantic:!1,sanitize:n.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};l=t.filterHTMLTags(l,n.htmlDecode);var u=marked(l,d);if(s.val(l),a.addClass("markdown-body "+this.classPrefix+"html-preview").append(u),n.toc&&(a.tocContainer=this.markdownToCRenderer(c,a,n.tocDropdown,n.tocStartLevel),(n.tocDropdown||a.find("."+this.classPrefix+"toc-menu").length>0)&&this.tocDropdownMenu(a,n.tocTitle)),n.previewCodeHighlight&&(a.find("pre").addClass("prettyprint linenums"),prettyPrint()),t.isIE8||(n.flowChart&&a.find(".flowchart").flowChart(),n.sequenceDiagram&&a.find(".sequence-diagram").sequenceDiagram({theme:"simple"})),n.tex){var f=function(){a.find("."+t.classNames.tex).each(function(){var t=e(this);katex.render(t.html(),t[0])})};!n.autoLoadKaTeX||t.$katex||t.kaTeXLoaded?f():this.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,f()})}return a.getMarkdown=function(){return s.val()},a},t.themes=["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"],t.loadPlugins={},t.loadFiles={js:[],css:[],plugin:[]},t.loadPlugin=function(e,i,o){i=i||function(){},this.loadScript(e,function(){t.loadFiles.plugin.push(e),i()},o)},t.loadCSS=function(e,i,o){o=o||"head",i=i||function(){};var r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.onload=r.onreadystatechange=function(){t.loadFiles.css.push(e),i()},r.href=e+".css","head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.isIE="Microsoft Internet Explorer"==navigator.appName,t.isIE8=t.isIE&&"8."==navigator.appVersion.match(/8./i),t.loadScript=function(e,i,o){o=o||"head",i=i||function(){};var r=null;r=document.createElement("script"),r.id=e.replace(/[\./]+/g,"-"),r.type="text/javascript",r.src=e+".js",t.isIE8?r.onreadystatechange=function(){r.readyState&&("loaded"===r.readyState||"complete"===r.readyState)&&(r.onreadystatechange=null,t.loadFiles.js.push(e),i())}:r.onload=function(){t.loadFiles.js.push(e),i()},"head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.katexURL={css:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min",js:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min"},t.kaTeXLoaded=!1,t.loadKaTeX=function(e){t.loadCSS(t.katexURL.css,function(){t.loadScript(t.katexURL.js,e||function(){})})},t.lockScreen=function(t){e("html,body").css("overflow",t?"hidden":"")},t.createDialog=function(i){var o={name:"",width:420,height:240,title:"",drag:!0,closed:!0,content:"",mask:!0,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:!0,footer:!0,buttons:!1};i=e.extend(!0,o,i);var r=this.editor,a=t.classPrefix,n=(new Date).getTime(),s=""===i.name?a+"dialog-"+n:i.name,l=t.mouseOrTouch,c='';""!==i.title&&(c+='"),i.closed&&(c+='
'),c+='
'+i.content,(i.footer||"string"==typeof i.footer)&&(c+='"),c+="
",c+='
',c+='
',c+="
",r.append(c);var h=r.find("."+s);h.lockScreen=function(t){return i.lockScreen&&e("html,body").css("overflow",t?"hidden":""),h},h.showMask=function(){return i.mask&&r.find("."+a+"mask").css(i.maskStyle).css("z-index",t.dialogZindex-1).show(),h},h.hideMask=function(){return i.mask&&r.find("."+a+"mask").hide(),h},h.loading=function(e){var t=h.find("."+a+"dialog-mask");return t[e?"show":"hide"](),h},h.lockScreen(!0).showMask(),h.show().css({zIndex:t.dialogZindex,border:t.isIE8?"1px solid #ddd":"",width:"number"==typeof i.width?i.width+"px":i.width,height:"number"==typeof i.height?i.height+"px":i.height});var d=function(){h.css({top:(e(window).height()-h.height())/2+"px",left:(e(window).width()-h.width())/2+"px"})};if(d(),e(window).resize(d),h.children("."+a+"dialog-close").bind(l("click","touchend"),function(){h.hide().lockScreen(!1).hideMask()}),"object"==typeof i.buttons){var u=h.footer=h.find("."+a+"dialog-footer");for(var f in i.buttons){var g=i.buttons[f],p=a+f+"-btn";u.append('"),g[1]=e.proxy(g[1],h),u.children("."+p).bind(l("click","touchend"),g[1])}}if(""!==i.title&&i.drag){var m,w,v=h.children("."+a+"dialog-header");i.mask||v.bind(l("click","touchend"),function(){t.dialogZindex+=2,h.css("z-index",t.dialogZindex)}),v.mousedown(function(e){e=e||window.event,m=e.clientX-parseInt(h[0].style.left),w=e.clientY-parseInt(h[0].style.top),document.onmousemove=y});var k=function(e){e.removeClass(a+"user-unselect").off("selectstart")},b=function(e){e.addClass(a+"user-unselect").on("selectstart",function(){return!1})},y=function(t){t=t||window.event;var i,o,r=parseInt(h[0].style.left),a=parseInt(h[0].style.top);r>=0?r+h.width()<=e(window).width()?i=t.clientX-m:(i=e(window).width()-h.width(),document.onmousemove=null):(i=0,document.onmousemove=null),a>=0?o=t.clientY-w:(o=0,document.onmousemove=null),document.onselectstart=function(){return!1},b(e("body")),b(h),h[0].style.left=i+"px",h[0].style.top=o+"px"};document.onmouseup=function(){k(e("body")),k(h),document.onselectstart=null,document.onmousemove=null},v.touchDraggable=function(){var t=null,i=function(i){var o=i.originalEvent,r=e(this).parent().position();t={x:o.changedTouches[0].pageX-r.left,y:o.changedTouches[0].pageY-r.top}},o=function(i){i.preventDefault();var o=i.originalEvent;e(this).parent().css({top:o.changedTouches[0].pageY-t.y,left:o.changedTouches[0].pageX-t.x})};this.bind("touchstart",i).bind("touchmove",o)},v.touchDraggable()}return t.dialogZindex+=2,h},t.mouseOrTouch=function(e,t){e=e||"click",t=t||"touchend";var i=e;try{document.createEvent("TouchEvent"),i=t}catch(o){}return i},t.dateFormat=function(e){e=e||"";var t=function(e){return 10>e?"0"+e:e},i=new Date,o=i.getFullYear(),r=o.toString().slice(2,4),a=t(i.getMonth()+1),n=t(i.getDate()),s=i.getDay(),l=t(i.getHours()),c=t(i.getMinutes()),h=t(i.getSeconds()),d=t(i.getMilliseconds()),u="",f=r+"-"+a+"-"+n,g=o+"-"+a+"-"+n,p=l+":"+c+":"+h;switch(e){case"UNIX Time":u=i.getTime();break;case"UTC":u=i.toUTCString();break;case"yy":u=r;break;case"year":case"yyyy":u=o;break;case"month":case"mm":u=a;break;case"cn-week-day":case"cn-wd":var m=["日","一","二","三","四","五","六"];u="星期"+m[s];break;case"week-day":case"wd":var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];u=w[s];break;case"day":case"dd":u=n;break;case"hour":case"hh":u=l;break;case"min":case"ii":u=c;break;case"second":case"ss":u=h;break;case"ms":u=d;break;case"yy-mm-dd":u=f;break;case"yyyy-mm-dd":u=g;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":u=g+" "+p+" "+d;break;case"full":case"yyyy-mm-dd h:i:s":default:u=g+" "+p}return u},t}});
\ No newline at end of file
diff --git a/editormd.amd.min.js.map b/editormd.amd.min.js.map
deleted file mode 100644
index 9c670523..00000000
--- a/editormd.amd.min.js.map
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! Editor.md v1.3.0 | editormd.amd.min.js.map | A simple online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-03-12 */
-{"version":3,"file":"editormd.amd.min.js","sources":["editormd.amd.min.js"],"names":["factory","require","exports","module","define","amd","cmModePath","cmAddonPath","codeMirrorModules","window","editormd","$","arguments","marked","prettify","katex","Raphael","_","flowchart","CodeMirror","jQuery","Zepto","id","options","fn","init","title","$name","version","homePage","classPrefix","toolbarModes","full","simple","mini","defaults","mode","theme","value","markdown","width","height","path","pluginPath","autoLoadModules","watch","placeholder","codeFold","autoHeight","autoCloseTags","searchReplace","readOnly","lineNumbers","matchWordHighlight","styleActiveLine","dialogLockScreen","dialogShowMask","dialogDraggable","dialogMaskBgColor","dialogMaskOpacity","fontSize","saveHTMLToTextarea","disabledKeyMaps","onload","onresize","onchange","onwatch","onunwatch","onpreviewing","onpreviewed","onfullscreen","onfullscreenExit","onscroll","onpreviewscroll","imageUpload","imageFormats","imageUploadURL","crossDomainUpload","uploadCallbackURL","toc","tocStartLevel","htmlDecode","atLink","emailLink","taskList","emoji","tex","flowChart","sequenceDiagram","previewCodeHighlight","toolbar","toolbarAutoFixed","toolbarIcons","toolbarTitles","toolbarHandlers","ucwords","lowercase","toolbarCustomIcons","toolbarIconsClass","undo","redo","bold","del","italic","quote","uppercase","h1","h2","h3","h4","h5","h6","list-ul","list-ol","hr","link","anchor","image","code","preformatted-text","code-block","table","datetime","htmlEntities","unwatch","preview","fullscreen","clear","help","info","toolbarIconTexts","lang","name","description","buttons","enter","cancel","close","dialog","url","urlTitle","urlEmpty","nameEmpty","titleEmpty","alt","uploadButton","imageURLEmpty","uploadFileEmpty","formatNotAllowed","preformattedText","emptyAlert","codeBlock","selectLabel","selectDefaultText","otherLanguage","unselectedLanguageAlert","codeEmptyAlert","classNames","dialogZindex","$katex","$marked","$CodeMirror","$prettyPrint","prototype","state","watching","loaded","_this","this","editor","settings","extend","textarea","html","hasClass","addClass","css","markdownTextarea","children","length","append","attr","appendElements","join","mask","val","htmlTextarea","previewContainer","loadCSS","setCodeMirror","setToolbar","loadedDisplay","loadQueues","loadPath","loadFlowChartOrSequenceDiagram","isIE8","loadScript","setTheme","cm","setOption","codeMirrorConfig","tabSize","dragDrop","autofocus","indentUnit","lineWrapping","extraKeys","Ctrl-Q","foldCode","getCursor","foldGutter","gutters","matchBrackets","indentWithTabs","styleSelectedText","autoCloseBrackets","showTrailingSpace","highlightSelectionMatches","showToken","codeEditor","fromTextArea","codeMirror","cmElement","setValue","getCodeMirrorOption","key","getOption","setCodeMirrorOption","addKeyMap","map","bottom","removeKeyMap","extends","proxy","set","config","recreate","on","eventType","callback","off","showToolbar","find","show","resize","hideToolbar","hide","setToolbarAutoFixed","fixed","autoFixedHandle","top","scrollTop","offset","position","left","bind","unbind","icons","toolbarMenu","menu","i","len","isHeader","test","index","iconTexts","iconClass","setToolbarHandler","getToolbarHandles","toolbarIconHandlers","mouseOrTouch","icon","cursor","selection","getSelection","activeIcon","focus","createDialog","createInfoDialog","infoDialogHTML","infoDialog","hideInfoDialog","infoDialogPosition","_infoDialogPosition","showInfoDialog","lockScreen","opacity","backgroundColor","lock","remove","saveToTextareas","registerKeyMaps","prettyPrint","katexRender","each","render","flowChartAndSequenceDiagramRender","keyMap","inArray","keyMaps","handle","keydown","event","keymaps","120","121","122","keyCode","data","codeEditorBindScroll","percent","scrollHeight","codeEditorUnbindScroll","previewBindScroll","codeView","previewUnbindScroll","mouseover","mouseout","touchstart","touchend","codeMirrorValue","getValue","innerText","markdownToC","rendererOptions","markedRendererOptions","markedOptions","renderer","markedRenderer","gfm","tables","breaks","pedantic","sanitize","smartLists","smartypants","setOptions","filterHTMLTags","newMarkdownDoc","save","markdownToCRenderer","kaTeXLoaded","loadKaTeX","timer","setTimeout","clearTimeout","setCursor","setSelection","from","to","setSelections","ranges","getSelections","replaceSelection","insertValue","setMarkdown","md","getMarkdown","getHTML","alert","getTextareaSavedHTML","getPreviewedHTML","watchIcon","unWatchIcon","parent","removeClass","previewing","toggle","toggleClass","escHandle","shiftKey","previewed","previewCloseBtn","background","fullscreenClass","fullscreenExit","margin","border","executePlugin","loadFiles","plugin","loadPlugin","loadPlugins","parseInt","line","ch","ucfirst","selections","listSelections","firstUpperCase","wordsFirstUpperCase","toUpperCase","toLowerCase","selectionText","split","langName","Date","datefmt","dateFormat","Ctrl-B","Ctrl-I","Ctrl-K","Shift-Ctrl-C","Shift-Ctrl-Q","Shift-Ctrl-S","Ctrl-H","Ctrl-1","Ctrl-2","Ctrl-3","Ctrl-4","Ctrl-5","Ctrl-6","Ctrl-D","Ctrl-E","Ctrl-L","Ctrl-U","Shift-Ctrl-A","Shift-Alt-C","Shift-Ctrl-Alt-C","Shift-Ctrl-H","Shift-Alt-H","Shift-Ctrl-E","Shift-Ctrl-U","Shift-Alt-U","Shift-Ctrl-Alt-U","Shift-Alt-L","Shift-Ctrl-I","Shift-Ctrl-Alt-I","Shift-Ctrl-L","Shift-Ctrl-O","Shift-Ctrl-P","Shift-Ctrl-T","F9","F10","F11","trim","str","String","replace","$1","urls","atLinkBase","regexs","email","emojiDatetime","twemoji","fontAwesome","editormdLogo","ext","Renderer","atLinkReg","emojiReg","emailReg","emailLinkReg","twemojiReg","faIconReg","editormdLogoReg","text","matchs","match","RegExp","faMatchs","fa","len1","faName","emdlogoMathcs","twemojiMatchs","x","len2","logoName","t","len3","twe","$2","href","prot","decodeURIComponent","unescape","e","indexOf","out","heading","level","linkText","hasLinkReg","tempText","push","escapedText","slug","isChinese","escape","headingHTML","headerPrefix","paragraph","isTeXInline","isTeXLine","isTeXAddClass","isToC","apply","tablecell","content","flags","type","tag","align","listitem","container","startLevel","lastLevel","Array","tocContainer","filters","filterTags","markdownToHTML","autoLoadKaTeX","div","saveTo","markdownDoc","markdownParsed","katexHandle","themes","js","fileName","into","document","createElement","rel","onreadystatechange","getElementsByTagName","appendChild","body","isIE","navigator","appName","appVersion","script","src","readyState","katexURL","drag","closed","maskStyle","footer","guid","getTime","dialogName","showMask","hideMask","loading","zIndex","dialogPosition","btn","btnClassName","posX","posY","dialogHeader","mousedown","clientX","style","clientY","onmousemove","moveAction","userCanSelect","obj","userUnselect","nowLeft","nowTop","onselectstart","onmouseup","touchDraggable","start","orig","originalEvent","pos","changedTouches","pageX","y","pageY","move","preventDefault","mouseEventType","touchEventType","createEvent","format","addZero","d","date","year","getFullYear","year2","toString","slice","month","getMonth","day","getDate","weekDay","getDay","hour","getHours","min","getMinutes","second","getSeconds","ms","getMilliseconds","ymd","fymd","hms","toUTCString","cnWeekDays","weekDays"],"mappings":"CAYE,SAASA,GACP,YAGH,IAAuB,kBAAZC,UAA6C,gBAAZC,UAA0C,gBAAXC,QAEpEA,OAAOD,QAAUF,MAEnB,IAAsB,kBAAXI,QAET,GAAIA,OAAOC,IACX,CACI,GAAIC,GAAc,mBACdC,EAAc,oBAEdC,GACA,SAAU,SAAU,WACpB,QAAS,UAAW,aAAc,YAAc,kBAAoB,kBAEpE,4BACAF,EAAa,UACbA,EAAa,YACbA,EAAa,cACbA,EAAa,UACbA,EAAa,cACbA,EAAa,UACbA,EAAa,UACbA,EAAa,oBACbA,EAAa,wBACbA,EAAa,sBACbA,EAAa,UACbA,EAAa,YACbA,EAAa,QACbA,EAAa,YACbA,EAAa,4BACbA,EAAa,cACbA,EAAa,gBACbA,EAAa,YACbA,EAAa,UACbA,EAAa,MACbA,EAAa,YACbA,EAAa,UACbA,EAAa,0BACbA,EAAa,QACbA,EAAa,oBACbA,EAAa,oBACbA,EAAa,gBACbA,EAAa,YACbA,EAAa,gBACbA,EAAa,YAEbC,EAAc,qBACdA,EAAc,gBACdA,EAAc,sBACdA,EAAc,gBACdA,EAAc,2BACdA,EAAc,4BACdA,EAAc,sBACdA,EAAc,gBACdA,EAAc,gBACdA,EAAc,kBACdA,EAAc,mBACdA,EAAc,kBACdA,EAAc,gBACdA,EAAc,qBACdA,EAAc,oBACdA,EAAc,eACdA,EAAc,wBACdA,EAAc,qBACdA,EAAc,qBACdA,EAAc,2BAGlBH,QAAOI,EAAmBR,OAIhCI,SAAQ,UAAWJ,OAKjBS,QAAOC,SAAWV,KAGxB,WAUuB,kBAAVI,SAAwBA,OAAOC,MACvCM,EAAaC,UAAU,GACvBC,OAAaD,UAAU,GACvBE,SAAaF,UAAU,GACvBG,MAAaH,UAAU,GACvBI,QAAaJ,UAAU,GACvBK,EAAaL,UAAU,GACvBM,UAAaN,UAAU,GACvBO,WAAaP,UAAU,GAK1B,IAAID,GAAyB,mBAAb,QAA4BS,OAASC,KAExD,IAAmB,mBAAR,GAAX,CAIG,GAAIX,GAAmB,SAAUY,EAAIC,GACjC,MAAO,IAAIb,GAASc,GAAGC,KAAKH,EAAIC,GAGpCb,GAASgB,MAAehB,EAASiB,MAAQ,YACzCjB,EAASkB,QAAe,QACxBlB,EAASmB,SAAe,sCACxBnB,EAASoB,YAAe,YAExBpB,EAASqB,cACLC,MACI,OAAQ,OAAQ,IAChB,OAAQ,MAAO,SAAU,QAAS,UAAW,YAAa,YAAa,IACvE,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IACpC,UAAW,UAAW,KAAM,IAC5B,OAAQ,SAAU,QAAS,OAAQ,oBAAqB,aAAc,QAAS,WAAY,QAAS,eAAgB,IACpH,QAAS,UAAW,aAAc,QAAS,IAC3C,OAAQ,QAEZC,QACI,OAAQ,OAAQ,IAChB,OAAQ,MAAO,SAAU,QAAS,YAAa,YAAa,IAC5D,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,IACpC,UAAW,UAAW,KAAM,IAC5B,QAAS,UAAW,aAAc,IAClC,OAAQ,QAEZC,MACI,OAAQ,OAAQ,IAChB,QAAS,UAAW,IACpB,OAAQ,SAIhBxB,EAASyB,UACLC,KAAuB,MACvBC,MAAuB,UACvBC,MAAuB,GACvBC,SAAuB,GACvBC,MAAuB,OACvBC,OAAuB,OACvBC,KAAuB,SACvBC,WAAuB,GACvBC,iBAAuB,EACvBC,OAAuB,EACvBC,YAAuB,yBACvBC,UAAuB,EACvBC,YAAuB,EACvBC,eAAuB,EACvBC,eAAuB,EACvBC,UAAuB,EACvBC,aAAuB,EACvBC,oBAAuB,EACvBC,iBAAuB,EACvBC,kBAAuB,EACvBC,gBAAuB,EACvBC,iBAAuB,EACvBC,kBAAuB,OACvBC,kBAAuB,GACvBC,SAAuB,OACvBC,oBAAuB,EACvBC,mBAEAC,OAAuB,aACvBC,SAAuB,aACvBC,SAAuB,aACvBC,QAAuB,KACvBC,UAAuB,KACvBC,aAAuB,aACvBC,YAAuB,aACvBC,aAAuB,aACvBC,iBAAuB,aACvBC,SAAuB,aACvBC,gBAAuB,aAEvBC,aAAuB,EACvBC,cAAwB,MAAO,OAAQ,MAAO,MAAO,MAAO,QAC5DC,eAAuB,GACvBC,mBAAuB,EACvBC,kBAAuB,GAEvBC,KAAuB,EACvBC,cAAuB,EACvBC,YAAuB,EACvBC,QAAuB,EACvBC,WAAuB,EACvBC,UAAuB,EACvBC,OAAuB,EAGvBC,KAAuB,EACvBC,WAAuB,EACvBC,iBAAuB,EACvBC,sBAAuB,EAEvBC,SAAuB,EACvBC,kBAAuB,EACvBC,aAAuB,WACnB,MAAOlF,GAASqB,aAAaC,MAEjC6D,iBACAC,iBACIC,QAAU,WACN,MAAOrF,GAASoF,gBAAgBC,SAEpCC,UAAY,WACR,MAAOtF,GAASoF,gBAAgBE,YAGxCC,oBACID,UAAmB,gJACnBD,QAAmB,6IAEvBG,mBACIC,KAAmB,UACnBC,KAAmB,YACnBC,KAAmB,UACnBC,IAAmB,mBACnBC,OAAmB,YACnBC,MAAmB,gBACnBC,UAAmB,UACnBC,GAAmBhG,EAASoB,YAAc,OAC1C6E,GAAmBjG,EAASoB,YAAc,OAC1C8E,GAAmBlG,EAASoB,YAAc,OAC1C+E,GAAmBnG,EAASoB,YAAc,OAC1CgF,GAAmBpG,EAASoB,YAAc,OAC1CiF,GAAmBrG,EAASoB,YAAc,OAC1CkF,UAAmB,aACnBC,UAAmB,aACnBC,GAAmB,WACnBC,KAAmB,UACnBC,OAAmB,YACnBC,MAAmB,eACnBC,KAAmB,UACnBC,oBAAsB,iBACtBC,aAAmB,iBACnBC,MAAmB,WACnBC,SAAmB,aACnBrC,MAAmB,aACnBsC,aAAmB,eACnB9E,MAAmB,eACnB+E,QAAmB,SACnBC,QAAmB,YACnBC,WAAmB,gBACnBC,MAAmB,YACnBC,KAAmB,qBACnBC,KAAmB,kBAEvBC,oBAEAC,MACIC,KAAc,QACdC,YAAc,gEACd3C,SACIS,KAAmB,aACnBC,KAAmB,aACnBC,KAAmB,KACnBC,IAAmB,MACnBC,OAAmB,KACnBC,MAAmB,KACnBT,QAAmB,eACnBU,UAAmB,WACnBT,UAAmB,WACnBU,GAAmB,MACnBC,GAAmB,MACnBC,GAAmB,MACnBC,GAAmB,MACnBC,GAAmB,MACnBC,GAAmB,MACnBC,UAAmB,OACnBC,UAAmB,OACnBC,GAAmB,KACnBC,KAAmB,KACnBC,OAAmB,KACnBC,MAAmB,OACnBC,KAAmB,OACnBC,oBAAsB,oBACtBC,aAAmB,aACnBC,MAAmB,OACnBC,SAAmB,OACnBrC,MAAmB,UACnBsC,aAAmB,WACnB9E,MAAmB,SACnB+E,QAAmB,SACnBC,QAAmB,qBACnBC,WAAmB,aACnBC,MAAmB,KACnBC,KAAmB,OACnBC,KAAmB,KAAOvH,EAASgB,OAEvC4G,SACIC,MAAS,KACTC,OAAS,KACTC,MAAS,MAEbC,QACIvB,MACIzF,MAAW,OACXiH,IAAW,OACXC,SAAW,OACXC,SAAW,eAEfzB,QACI1F,MAAW,SACX0G,KAAW,OACXO,IAAW,OACXC,SAAW,OACXE,UAAW,eACXC,WAAa,gBACbF,SAAW,iBAEfxB,OACI3F,MAAW,OACXiH,IAAW,OACXxB,KAAW,OACX6B,IAAW,OACXC,aAAmB,OACnBC,cAAmB,eACnBC,gBAAmB,gBACnBC,iBAAmB,8BAEvBC,kBACI3H,MAAoB,cACpB4H,WAAoB,sBAExBC,WACI7H,MAAoB,QACpB8H,YAAoB,QACpBC,kBAAoB,UACpBC,cAAoB,OACpBC,wBAA0B,mBAC1BC,eAAoB,eAExBjC,cACIjG,MAAQ,aAEZsG,MACItG,MAAQ,WAMxBhB,EAASmJ,YACLvE,IAAM5E,EAASoB,YAAc,OAGjCpB,EAASoJ,aAAe,MAExBpJ,EAASqJ,OAAe,KACxBrJ,EAASsJ,QAAe,KACxBtJ,EAASuJ,YAAe,KACxBvJ,EAASwJ,aAAe,KAExBxJ,EAASyJ,UAAezJ,EAASc,IAC7B4I,OACIC,UAAa,EACbC,QAAa,EACbzC,SAAa,EACbC,YAAa,GAYjBrG,KAAO,SAAUH,EAAIC,GAEjBA,EAAuBA,KAEvB,IAAIgJ,GAAmBC,KACnB1I,EAAmB0I,KAAK1I,YAAepB,EAASoB,YAChD2I,EAAmBD,KAAKC,OAAe9J,EAAE,IAAMW,GAC/CoJ,EAAmBF,KAAKE,SAAe/J,EAAEgK,QAAO,EAAMjK,EAASyB,SAAUZ,EAE7EiJ,MAAKlJ,GAAkBA,EACvBkJ,KAAKrC,KAAkBuC,EAASvC,IAEhC,IAAI0B,GAAmBW,KAAKX,YACxBe,UACIC,KAAWL,KAAK1I,YAAc,gBAC9BS,SAAWiI,KAAK1I,YAAc,qBAItC4I,GAAS/H,WAAsC,KAAxB+H,EAAS/H,WAAqB6H,KAAKE,SAAShI,KAAO,cAAgBgI,EAAS/H,WAEnG6H,KAAKJ,MAAMC,SAAYK,EAAc,OAAI,GAAO,EAE3CD,EAAOK,SAAS,aACjBL,EAAOM,SAAS,YAGpBN,EAAOO,KACHxI,MAAqC,gBAApBkI,GAASlI,MAAuBkI,EAASlI,MAAS,KAAOkI,EAASlI,MACnFC,OAAqC,gBAApBiI,GAASjI,OAAuBiI,EAASjI,OAAS,KAAOiI,EAASjI,SAGnFiI,EAAS1H,YAETyH,EAAOO,IAAI,SAAU,OAGzB,IAAIC,GAAmBT,KAAKS,iBAAmBR,EAAOS,SAAS,WAE3DD,GAAiBE,OAAS,IAE1BV,EAAOW,OAAO,yBACdH,EAAmBT,KAAKS,iBAAmBR,EAAOS,SAAS,aAG/DD,EAAiBF,SAASlB,EAAWe,SAASrI,UAAU8I,KAAK,OAAQ/J,EAAK,iBAAiB+J,KAAK,cAAeX,EAAS5H,YAExH,IAAIwI,IACEZ,EAASvH,SAAyG,GAA7F,6CAAkDrB,EAAc,0BACpF4I,EAA2B,mBAAI,oBAAuBb,EAAWe,SAASC,KAAO,WAAevJ,EAAK,0BAA6B,GACrI,eAAkBQ,EAAc,sCAA0CA,EAAc,kCACxF,eAAkBA,EAAc,gDAChC,eAAkBA,EAAc,gBAClCyJ,KAAK,KA2CP,OAzCAd,GAAOW,OAAOE,GAAgBP,SAASjJ,EAAc,YAErD0I,KAAKgB,KAAOf,EAAOS,SAAS,IAAMpJ,EAAc,QAEtB,KAAtB4I,EAASnI,UAET0I,EAAiBQ,IAAIf,EAASnI,UAGlCiI,KAAKkB,aAAuBjB,EAAOS,SAAS,IAAMrB,EAAWe,SAASC,MACtEL,KAAK3C,QAAuB4C,EAAOS,SAAS,IAAMpJ,EAAc,WAChE0I,KAAKmB,iBAAuBnB,KAAK3C,QAAQqD,SAAS,IAAMpJ,EAAc,qBAEhD,kBAAX1B,SAAyBA,OAAOC,MAElB,mBAAVU,SAEPL,EAASqJ,OAAShJ,OAGlB2J,EAASxH,gBAETxC,EAASkL,QAAQlB,EAAShI,KAAO,kCACjChC,EAASkL,QAAQlB,EAAShI,KAAO,gDAIlB,kBAAXtC,SAAyBA,OAAOC,MAASqK,EAAS9H,iBAEhC,mBAAfzB,cAA4BT,EAASuJ,YAAc9I,YACpC,mBAAfN,UAA4BH,EAASsJ,QAAcnJ,QAE9D0J,EAAMsB,gBACNtB,EAAMuB,aACNvB,EAAMwB,iBAINvB,KAAKwB,aAGFxB,MAUXwB,WAAa,WACT,GAAIzB,GAAeC,KACfE,EAAeF,KAAKE,SACpBuB,EAAevB,EAAShI,KAExBwJ,EAAiC,WAEjC,MAAIxL,GAASyL,UAET5B,GAAMwB,qBAKNrB,EAASnF,WAAamF,EAASlF,gBAE/B9E,EAAS0L,WAAWH,EAAW,cAAe,WAE1CvL,EAAS0L,WAAWH,EAAW,iBAAkB,YAExCvB,EAASnF,WAAamF,EAASlF,gBAEhC9E,EAAS0L,WAAWH,EAAW,uBAAwB,WACnD1B,EAAMwB,kBAGLrB,EAASnF,YAAcmF,EAASlF,gBAErC9E,EAAS0L,WAAWH,EAAW,gBAAiB,WAC5CvL,EAAS0L,WAAWH,EAAW,uBAAwB,WACnD1B,EAAMwB,oBAITrB,EAASnF,WAAamF,EAASlF,iBAEpC9E,EAAS0L,WAAWH,EAAW,gBAAiB,WAC5CvL,EAAS0L,WAAWH,EAAW,uBAAwB,WACnDvL,EAAS0L,WAAWH,EAAW,uBAAwB,WACnD1B,EAAMwB,0BAW9BxB,EAAMwB,iBAyDd,OArDArL,GAASkL,QAAQK,EAAW,6BAExBvB,EAASxH,gBAETxC,EAASkL,QAAQK,EAAW,kCAC5BvL,EAASkL,QAAQK,EAAW,+CAG5BvB,EAAS3H,UAETrC,EAASkL,QAAQK,EAAW,oCAGhCvL,EAAS0L,WAAWH,EAAW,4BAA6B,WACxDvL,EAASuJ,YAAc9I,WAEvBT,EAAS0L,WAAWH,EAAW,uBAAwB,WAEnDvL,EAAS0L,WAAWH,EAAW,wBAAyB,WAIpD,MAFA1B,GAAMsB,gBAEgB,QAAlBnB,EAAStI,MAAoC,aAAlBsI,EAAStI,MAEpCmI,EAAMwB,iBAEC,IAGXxB,EAAMuB,iBAENpL,GAAS0L,WAAWH,EAAW,aAAc,WAEzCvL,EAASsJ,QAAUnJ,OAEf6J,EAASjF,qBAET/E,EAAS0L,WAAWH,EAAW,eAAgB,WAC3CC,MAKJA,aAUb1B,MAUX6B,SAAW,SAAShK,GAChB,GAAIqI,GAAaF,KAAKE,QAUtB,OATAA,GAASrI,MAAQA,EAEH,YAAVA,GAEA3B,EAASkL,QAAQlB,EAAShI,KAAO,oBAAsBgI,EAASrI,OAGpEmI,KAAK8B,GAAGC,UAAU,QAASlK,GAEpBmI,MAUXqB,cAAgB,WACZ,GAAInB,GAAmBF,KAAKE,SACxBD,EAAmBD,KAAKC,MAEL,aAAnBC,EAASrI,OAET3B,EAASkL,QAAQlB,EAAShI,KAAO,oBAAsBgI,EAASrI,MAGpE,IAAImK,IACApK,KAA4BsI,EAAStI,KACrCC,MAA4BqI,EAASrI,MACrCoK,QAA4B,EAC5BC,UAA4B,EAC5BC,WAA4B,EAC5B1J,cAA4ByH,EAASzH,cACrCE,SAA6BuH,EAAiB,SAAI,YAAa,EAC/DkC,WAA4B,EAC5BxJ,YAA4BsH,EAAStH,YACrCyJ,cAA4B,EAC5BC,WAA6BC,SAAU,SAAST,GAAKA,EAAGU,SAASV,EAAGW,eACpEC,WAA4BxC,EAAS3H,SACrCoK,SAA6B,yBAA0B,yBACvDC,eAA4B,EAC5BC,gBAA4B,EAC5B/J,gBAA4BoH,EAASpH,gBACrCgK,mBAA4B,EAC5BC,mBAA4B,EAC5BC,mBAA4B,EAC5BC,0BAAgC/C,EAASrH,oBAAgCqK,UAA2C,cAA/BhD,EAASrH,oBAAsC,EAAQ,OAA7E,EAsBnE,OAnBAmH,MAAKmD,WAAanD,KAAK8B,GAAY5L,EAASuJ,YAAY2D,aAAapD,KAAKS,iBAAiB,GAAIuB,GAC/FhC,KAAKqD,WAAarD,KAAKsD,UAAYrD,EAAOS,SAAS,eAE5B,KAAnBR,EAASpI,OAETkI,KAAK8B,GAAGyB,SAASrD,EAASpI,OAG9BkI,KAAKqD,WAAW7C,KACZpH,SAAW8G,EAAS9G,SACpBpB,MAAakI,EAAS7H,MAAkB,MAAT,SAG/B6H,EAAS1H,aAETwH,KAAKqD,WAAW7C,IAAI,SAAU,QAC9BR,KAAK8B,GAAGC,UAAU,uBAGf/B,MAUXwD,oBAAsB,SAASC,GAC3B,MAAOzD,MAAK8B,GAAG4B,UAAUD,IAU7BE,oBAAsB,SAASF,EAAK3L,GAIhC,MAFAkI,MAAK8B,GAAGC,UAAU0B,EAAK3L,GAEhBkI,MAGX4D,UAAY,SAASC,EAAKC,GAGtB,MAFA9D,MAAK8B,GAAG8B,UAAUC,EAAKC,GAEhB9D,MAGX+D,aAAe,SAASF,GAGpB,MAFA7D,MAAK8B,GAAGiC,aAAaF,GAEd7D,MAUXgE,UAAU,WAgBN,MAf4B,mBAAjB5N,WAAU,KAEU,kBAAhBA,WAAU,KAEjBA,UAAU,GAAKD,EAAE8N,MAAM7N,UAAU,GAAI4J,OAGzCA,KAAK5J,UAAU,IAAMA,UAAU,IAGP,gBAAjBA,WAAU,IAAkD,mBAAxBA,WAAU,GAAGuK,QAExDxK,EAAEgK,QAAO,EAAMH,KAAM5J,UAAU,IAG5B4J,MAYXkE,IAAM,SAAUT,EAAK3L,GASjB,MAPqB,mBAAVA,IAAyC,kBAATA,KAEvCA,EAAQ3B,EAAE8N,MAAMnM,EAAOkI,OAG3BA,KAAKyD,GAAO3L,EAELkI,MAYXmE,OAAS,SAASV,EAAK3L,GACnB,GAAIoI,GAAWF,KAAKE,QAepB,OAbkB,gBAAPuD,KAEPvD,EAAW/J,EAAEgK,QAAO,EAAMD,EAAUuD,IAGtB,gBAAPA,KAEPvD,EAASuD,GAAO3L,GAGpBkI,KAAKE,SAAWA,EAChBF,KAAKoE,WAEEpE,MAYXqE,GAAK,SAASC,EAAWC,GACrB,GAAIrE,GAAWF,KAAKE,QAOpB,OAL0C,mBAA/BA,GAAS,KAAOoE,KAEvBpE,EAAS,KAAOoE,GAAanO,EAAE8N,MAAMM,EAAUvE,OAG5CA,MAWXwE,IAAM,SAASF,GACX,GAAIpE,GAAWF,KAAKE,QAOpB,OAL0C,mBAA/BA,GAAS,KAAOoE,KAEvBpE,EAAS,KAAOoE,GAAa,cAG1BtE,MAWXyE,YAAc,SAASF,GACnB,GAAIrE,GAAWF,KAAKE,QAEpB,KAAGA,EAASvH,SAcZ,MAZIuH,GAAShF,UAAY8E,KAAK9E,QAAQyF,OAAS,GAAmE,KAA9DX,KAAK9E,QAAQwJ,KAAK,IAAM1E,KAAK1I,YAAc,QAAQ+I,SAEnGL,KAAKsB,aAGTpB,EAAShF,SAAU,EAEnB8E,KAAK9E,QAAQyJ,OACb3E,KAAK4E,SAELzO,EAAE8N,MAAMM,GAAY,aAAcvE,QAE3BA,MAWX6E,YAAc,SAASN,GACnB,GAAIrE,GAAWF,KAAKE,QAQpB,OANAA,GAAShF,SAAU,EACnB8E,KAAK9E,QAAQ4J,OACb9E,KAAK4E,SAELzO,EAAE8N,MAAMM,GAAY,aAAcvE,QAE3BA,MAUX+E,oBAAsB,SAASC,GAE3B,GAAIpF,GAAWI,KAAKJ,MAChBK,EAAWD,KAAKC,OAChB/E,EAAW8E,KAAK9E,QAChBgF,EAAWF,KAAKE,QAEC,oBAAV8E,KAEP9E,EAAS/E,iBAAmB6J,EAGhC,IAAIC,GAAkB,WAClB,GAAIC,GAAM/O,EAAEF,QAAQkP,WAEpB,OAAKjF,GAAS/E,qBAOVD,GAAQsF,IAFR0E,EAAMjF,EAAOmF,SAASF,IAAM,IAAMA,EAAMjF,EAAOhI,UAG3CoN,SAAW,QACXrN,MAAWiI,EAAOjI,QAAU,KAC5BsN,MAAYnP,EAAEF,QAAQ+B,QAAUiI,EAAOjI,SAAW,EAAI,OAMtDqN,SAAW,WACXrN,MAAW,OACXsN,KAAW,KAhBR,EA+Bf,QAVK1F,EAAMtC,aAAesC,EAAMvC,SAAW6C,EAAShF,SAAWgF,EAAS/E,kBAEpEhF,EAAEF,QAAQsP,KAAK,SAAUN,GAGxB/E,EAAS/E,kBAEVhF,EAAEF,QAAQuP,OAAO,SAAUP,GAGxBjF,MAUXsB,WAAa,WACT,GAAIpB,GAAcF,KAAKE,QAEvB,KAAGA,EAASvH,SAAZ,CAEA,GAAIsH,GAAcD,KAAKC,OAEnB3I,GADc0I,KAAK3C,QACL2C,KAAK1I,aAEnB4D,EAAc8E,KAAK9E,QAAU+E,EAAOS,SAAS,IAAMpJ,EAAc,UAQrE,IANI4I,EAAShF,SAAWA,EAAQyF,OAAS,IAErCV,EAAOW,OAAO,eAAetJ,EAAY,wBAAwBA,EAAY,iCAAiCA,EAAY,2BAC1H4D,EAAc8E,KAAK9E,QAAU+E,EAAOS,SAAS,IAAMpJ,EAAc,aAGhE4I,EAAShF,QAIV,WAFAA,GAAQ4J,MAKZ5J,GAAQyJ,MAOR,KAAK,GALDc,GAAgD,kBAA1BvF,GAAS9E,aAA+B8E,EAAS9E,eACtB,gBAA1B8E,GAAS9E,aAA8BlF,EAASqB,aAAa2I,EAAS9E,cAAgB8E,EAAS9E,aAEtHsK,EAAcxK,EAAQwJ,KAAK,IAAM1E,KAAK1I,YAAc,QAASqO,EAAO,GAE/DC,EAAI,EAAGC,EAAMJ,EAAM9E,OAAYkF,EAAJD,EAASA,IAC7C,CACI,GAAIhI,GAAO6H,EAAMG,EAEjB,IAAa,MAAThI,EACJ,CACI,GAAIkI,GAAY,QAAQC,KAAKnI,GACzBoI,EAAWpI,CAEF,WAATA,GAAqBsC,EAAS7H,QAC9B2N,EAAQ,UAGZ,IAAI9O,GAAYgJ,EAASvC,KAAKzC,QAAQ8K,GAClCC,EAAY/F,EAASxC,iBAAiBsI,GACtCE,EAAYhG,EAASxE,kBAAkBsK,EAE3C9O,GAAkC,mBAAdA,GAA6B,GAAKA,EACtD+O,EAAkC,mBAAdA,GAA6B,GAAKA,EACtDC,EAAkC,mBAAdA,GAA6B,GAAKA,EAEtDP,GAAQ,OAIJA,GAF6C,mBAAtCzF,GAASzE,mBAAmBmC,GAE3BsC,EAASzE,mBAAmBmC,GAI5B,iCAAsC1G,EAAQ,oCAC3BgP,EAAY,WAAatI,EAAK,wBAA2B,EAAaA,EAAwB,KAAdsI,EAAoBD,EAAY,IAAQ,WAIvJN,GAAQ,YAIRA,IAAQ,+CAYhB,MARAD,GAAYrF,KAAKsF,GAEjBD,EAAYhB,KAAK,uBAAyB7D,KAAK,QAASX,EAASvC,KAAKzC,QAAQM,WAC9EkK,EAAYhB,KAAK,qBAAuB7D,KAAK,QAASX,EAASvC,KAAKzC,QAAQK,SAE5EyE,KAAKmG,oBACLnG,KAAK+E,sBAEE/E,OAYXjH,iBAAmB,WAGf,MAFA5C,GAAE8N,MAAM/N,EAAS6C,iBAAkBiH,QAE5BA,MAGXhH,eAAiB,SAASkF,GAGtB,MAFA/H,GAAE8N,MAAM/N,EAAS8C,eAAgBgH,MAAM9B,GAEhC8B,MAGXoG,kBAAoB,SAASxI,GACzB,GAAItC,GAAkB0E,KAAK1E,gBAAkBpF,EAASoF,eAEtD,OAAQsC,IAA6C,mBAA9ByI,qBAAoBzI,GAAyBtC,EAAgBsC,GAAQtC,GAUhG6K,kBAAoB,WAChB,GAAIpG,GAAsBC,KACtBE,EAAsBF,KAAKE,QAE/B,IAAKA,EAAShF,UAAWgF,EAASvH,SAAlC,CAIA,GAEIuC,IAFsB8E,KAAKC,OACLD,KAAK3C,QACL2C,KAAK9E,SAC3BiI,EAAsBnD,KAAKmD,WAE3B7L,GADsB0I,KAAKqD,WACLrD,KAAK1I,aAE3B8D,GADsB4E,KAAKmB,iBACLnB,KAAK5E,aAAeF,EAAQwJ,KAAK,IAAMpN,EAAc,kBAC3E+O,EAAsBrG,KAAKoG,mBAqC/B,OAnCAhL,GAAamK,KAAKrP,EAASoQ,aAAa,QAAS,YAAa,WAE1D,GAAIC,GAAsBpQ,EAAE6J,MAAMU,SAAS,OACvC9C,EAAsB2I,EAAK1F,KAAK,QAChC2F,EAAsBrD,EAAWV,YACjCgE,EAAsBtD,EAAWuD,cAErC,OAAa,KAAT9I,GAIJmC,EAAM4G,WAAaJ,EAEsB,mBAA9BF,GAAoBzI,GAE3BzH,EAAE8N,MAAMoC,EAAoBzI,GAAOmC,GAAOoD,GAII,mBAAnCjD,GAAS5E,gBAAgBsC,IAEhCzH,EAAE8N,MAAM/D,EAAS5E,gBAAgBsC,GAAOmC,GAAOoD,EAAYoD,EAAMC,EAAQC,GAIpE,SAAT7I,GAA4B,WAATA,GAA8B,UAATA,GAA6B,eAATA,GACnD,sBAATA,GAAyC,UAATA,GAA6B,YAATA,GAA+B,eAATA,GAAkC,SAATA,GAEnGuF,EAAWyD,SAGR,GAxBP,SA4BG5G,OAWX6G,aAAe,SAAS9P,GACpB,MAAOZ,GAAE8N,MAAM/N,EAAS2Q,aAAc7G,MAAMjJ,IAUhD+P,iBAAmB,WACf,GAAI/G,GAAeC,KACxBC,EAAeD,KAAKC,OACX3I,EAAe0I,KAAK1I,YAEpByP,GACA,eAAkBzP,EAAc,UAAYA,EAAc,yBAC1D,eAAkBA,EAAc,qBAChC,0EAA8EpB,EAASgB,MAAQ,WAAahB,EAASkB,QAAU,gBAC/H,MAAQ4I,KAAKrC,KAAKE,YAAc,OAChC,0BAA6B3H,EAASmB,SAAW,qBAA0BnB,EAASmB,SAAW,WAC/F,sBACA,SACA,6CAAkDC,EAAc,qBAChE,UACFyJ,KAAK,KAEPd,GAAOW,OAAOmG,EAEd,IAAIC,GAAchH,KAAKgH,WAAa/G,EAAOS,SAAS,IAAMpJ,EAAc,cAUxE,OARA0P,GAAWtC,KAAK,IAAMpN,EAAc,gBAAgBiO,KAAKrP,EAASoQ,aAAa,QAAS,YAAa,WACjGvG,EAAMkH,mBAGVD,EAAWxG,IAAI,SAAWtK,EAAc,MAAI,iBAAmB,IAAIsK,IAAI,UAAWtK,EAASoJ,cAAcqF,OAEzG3E,KAAKkH,qBAEElH,MAUXkH,mBAAqB,WACjB,GAAIF,GAAahH,KAAKgH,WAE3BG,EAAsB,WACzBH,EAAWxG,KACV0E,KAAQ/O,EAAEF,QAAQgC,SAAW+O,EAAW/O,UAAY,EAAI,KACxDqN,MAAQnP,EAAEF,QAAQ+B,QAAWgP,EAAWhP,SAAW,EAAK,OAQjD,OAJTmP,KAEAhR,EAAEF,QAAQ2O,OAAOuC,GAEDnH,MAUXoH,eAAiB,WAEbjR,EAAE,aAAaqK,IAAI,aAAc,SAEjC,IACLP,GAAcD,KAAKC,OACVC,EAAcF,KAAKE,SACnB5I,EAAc0I,KAAK1I,YAC5B0P,EAAchH,KAAKgH,WAAa/G,EAAOS,SAAS,IAAMpJ,EAAc,cAkB/D,OAhBI0P,GAAWrG,OAAS,GAEpBX,KAAK8G,mBAGT9G,KAAKqH,YAAW,GAEhBrH,KAAKgB,KAAKR,KAChB8G,QAAkBpH,EAAS/G,kBAC3BoO,gBAAkBrH,EAAShH,oBACzByL,OAELqC,EAAWxG,IAAI,UAAWtK,EAASoJ,cAAcqF,OAEjD3E,KAAKkH,qBAEWlH,MAUXiH,eAAiB,WAMb,MALA9Q,GAAE,aAAaqK,IAAI,aAAc,IACjCR,KAAKgH,WAAWlC,OAChB9E,KAAKgB,KAAK8D,OACV9E,KAAKqH,YAAW,GAETrH,MAWXqH,WAAa,SAASG,GAGlB,MAFAtR,GAASmR,WAAWG,GAEbxH,MAUXoE,SAAW,WACP,GACInE,GAAmBD,KAAKC,OACxBC,EAAmBF,KAAKE,SACxB9E,EAAmB8E,EAAS9E,cA+BhC,OA7BA4E,MAAKqD,WAAWoE,SAEhBzH,KAAKqB,gBAE0B,mBAApBrB,MAAKgH,YACZhH,KAAKgH,WAAWS,SAGgB,mBAAzBrM,GAAmB,MAC1B0L,mBAGC5G,EAASvH,WAENsH,EAAOyE,KAAK,oBAAoB/D,OAAS,GACzCV,EAAOyE,KAAK,oBAAoB+C,SAGhCvH,EAAShF,UAET8E,KAAKoG,oBACLpG,KAAKsB,eAIbtB,KAAK0H,kBACL1H,KAAK4E,SACL5E,KAAK2H,kBAEE3H,MAUX/E,qBAAuB,WACnB,GAAIiF,GAAmBF,KAAKE,SACxBiB,EAAmBnB,KAAKmB,gBAY5B,OAVIjB,GAASjF,uBAETkG,EAAiBuD,KAAK,OAAOnE,SAAS,wBAEX,mBAAhBqH,cAEPA,eAID5H,MAUX6H,YAAc,WAEV,GAAI1G,GAAmBnB,KAAKmB,gBAO5B,OALAA,GAAiBuD,KAAK,IAAMxO,EAASmJ,WAAWvE,KAAKgN,KAAK,WACtD,GAAIhN,GAAO3E,EAAE6J,KACb9J,GAASqJ,OAAOwI,OAAOjN,EAAIuF,OAAQvF,EAAI,MAGpCkF,MAUXgI,kCAAoC,WAEhC,GAAI9H,GAAmBF,KAAKE,SACxBiB,EAAmBnB,KAAKmB,gBAE5B,OAAIjL,GAASyL,MAAb,QAEIzB,EAASnF,WACToG,EAAiBuD,KAAK,cAAc3J,YAGpCmF,EAASlF,iBACTmG,EAAiBuD,KAAK,qBAAqB1J,iBAAiBnD,MAAO,WAGhEmI,OAWX2H,gBAAkB,SAASM,GACvBA,EAASA,GAAU,IAEnB,IAAIlI,GAAWC,KACX8B,EAAW9B,KAAK8B,GAChB5B,EAAWF,KAAKE,QAEpB,IAAI+H,GAEA,IAAK,GAAIrC,KAAKqC,GAEV,GAAI9R,EAAE+R,QAAQtC,EAAG1F,EAAS5G,iBAAmB,EAC7C,CACI,GAAIuK,KACJA,GAAI+B,GAAMqC,EAAOrC,GAEjB9D,EAAG8B,UAAUqE,QAKzB,CACI,IAAK,GAAIrC,KAAK1P,GAASiS,QACvB,CACI,GAAIF,GAAS/R,EAASiS,QAAQvC,GAC1BwC,EAA4B,gBAAXH,GAAuB9R,EAAE8N,MAAM/N,EAASoF,gBAAgB2M,GAASlI,GAAS5J,EAAE8N,MAAMgE,EAAQlI,EAE/G,IAAI5J,EAAE+R,QAAQtC,GAAI,KAAM,MAAO,QAAU,GAAKzP,EAAE+R,QAAQtC,EAAG1F,EAAS5G,iBAAmB,EACvF,CACI,GAAIuK,KACJA,GAAI+B,GAAKwC,EAETtG,EAAG8B,UAAUC,IAIrB1N,EAAEF,QAAQoS,QAAQ,SAASC,GAEvB,GAAIC,IACAC,IAAQ,KACRC,IAAQ,MACRC,IAAQ,MAGZ,IAAKvS,EAAE+R,QAAQK,EAAQD,EAAMK,SAAUzI,EAAS5G,iBAAmB,EAE/D,OAAQgP,EAAMK,SAEV,IAAK,KAEG,MADAxS,GAAE8N,MAAM/N,EAASoF,gBAAuB,MAAGyE,MACpC,CAGf,KAAK,KAEG,MADA5J,GAAE8N,MAAM/N,EAASoF,gBAAyB,QAAGyE,MACtC,CAGf,KAAK,KACG5J,EAAE8N,MAAM/N,EAASoF,gBAA4B,WAAGyE,QAUxE,MAAOC,OAUXuB,cAAgB,WAEZ,GAAIxB,GAAmBC,KACnBC,EAAmBD,KAAKC,OACxB5C,EAAmB2C,KAAK3C,QACxB6C,EAAmBF,KAAKE,SACxBiD,EAAmBnD,KAAKmD,WACxBE,EAAmBrD,KAAKqD,WAExBiD,GADmBtG,KAAKmB,iBACLjL,EAASoQ,aAEhCrG,GAAOS,SAAS,IAAMV,KAAK1I,YAAe,kBAAkBwN,OAE5D9E,KAAK0H,kBAEFxH,EAAS7H,OACRgF,EAAQsH,OAGZ1E,EAAO2I,KAAK,WAAY3I,EAAOjI,SAAS4Q,KAAK,YAAa3I,EAAOhI,UAEjE+H,KAAK4E,SACL5E,KAAK2H,kBAELxR,EAAEF,QAAQ2O,OAAO,WACb7E,EAAM6E,UAGV,IAAIiE,GAAuB,WACvBxF,EAAWqB,KAAK,sBAAsBa,KAAKe,EAAa,SAAU,aAAc,SAASgC,GACrF,GAAIrQ,GAAY9B,EAAE6J,MAAM/H,SACpBkN,EAAYhP,EAAE6J,MAAMmF,YACpB2D,EAAa3D,EAAYhP,EAAE6J,MAAM,GAAG+I,YAIpC1L,GAAQ8H,UAFM,IAAdA,EAEkB,EAEbA,EAAYlN,GAAU9B,EAAE6J,MAAM,GAAG+I,aAEpB1L,EAAQ,GAAG0L,aAIX1L,EAAQ,GAAG0L,aAAeD,GAGhD3S,EAAE8N,MAAM/D,EAASlG,SAAUgG,MAAMsI,MAIrCU,EAAyB,WACzB3F,EAAWqB,KAAK,sBAAsBc,OAAOc,EAAa,SAAU,eAGpE2C,EAAoB,WACpB5L,EAAQkI,KAAKe,EAAa,SAAU,aAAc,WAC9C,GAAIrO,GAAY9B,EAAE6J,MAAM/H,SACpBkN,EAAYhP,EAAE6J,MAAMmF,YACpB2D,EAAa3D,EAAYhP,EAAE6J,MAAM,GAAG+I,aACpCG,EAAY7F,EAAWqB,KAAK,qBAI5BwE,GAAS/D,UAFI,IAAdA,EAEoB,EAEdA,EAAYlN,GAAU9B,EAAE6J,MAAM,GAAG+I,aAEnBG,EAAS,GAAGH,aAIZG,EAAS,GAAGH,aAAeD,GAGlD3S,EAAE8N,MAAM/D,EAASjG,gBAAiB+F,MAAMsI,UAI5Ca,EAAsB,WACtB9L,EAAQmI,OAAOc,EAAa,SAAU,cA0B1C,OAvBTjD,GAAWkC,MACV6D,UAAaP,EACbQ,SAAaL,EACbM,WAAaT,EACbU,SAAaP,IAGd3L,EAAQkI,MACP6D,UAAaH,EACbI,SAAaF,EACbG,WAAaL,EACbM,SAAaJ,IAGLhG,EAAWkB,GAAG,SAAU,WACpBtE,EAAMoB,iBAAiBX,IAAI,eAAgBN,EAAS1H,YAAcrC,EAAE,QAAQ8B,SAAW9B,EAAEF,QAAQgC,SAAW,OAAS,QACrH8H,EAAM2H,oBAGVvR,EAAE8N,MAAM/D,EAAS3G,OAAQyG,QAEzBA,KAAKJ,MAAME,QAAS,EAEbE,MAWXhI,MAAQ,SAASA,GAKb,MAHAgI,MAAKC,OAAOO,IAAI,QAA2B,gBAAVxI,GAAsBA,EAAS,KAAOA,GACvEgI,KAAK4E,SAEE5E,MAWX/H,OAAS,SAASA,GAKd,MAHA+H,MAAKC,OAAOO,IAAI,SAA6B,gBAAXvI,GAAwBA,EAAU,KAAOA,GAC3E+H,KAAK4E,SAEE5E,MAYX4E,OAAS,SAAS5M,EAAOC,GAErBD,EAASA,GAAU,KACnBC,EAASA,GAAU,IAEnB,IAAI2H,GAAaI,KAAKJ,MAClBK,EAAaD,KAAKC,OAClB5C,EAAa2C,KAAK3C,QAClBnC,EAAa8E,KAAK9E,QAClBgF,EAAaF,KAAKE,SAElBmD,GADarD,KAAKmD,WACLnD,KAAKqD,WA8EtB,OA5EGrL,IAECiI,EAAOO,KACHxI,MAA4B,gBAAXA,GAAuBA,EAAS,KAAOA,KAI5DkI,EAAS1H,YAAeoH,EAAMtC,YAAesC,EAAMvC,SAOhDpF,GAECgI,EAAOO,KACHvI,OAA4B,gBAAXA,GAAuBA,EAAS,KAAOA,IAI5D2H,EAAMtC,YAEN2C,EAAOhI,OAAO9B,EAAEF,QAAQgC,UAGxBiI,EAAShF,UAAYgF,EAASvH,SAC9B0K,EAAW7C,IAAI,aAActF,EAAQjD,SAAW,GAAGA,OAAOgI,EAAOhI,SAAWiD,EAAQjD,UAEpFoL,EAAW7C,IAAI,aAAc,GAAGvI,OAAOgI,EAAOhI,YApBlDgI,EAAOO,IAAI,SAAU,QACrB6C,EAAW7C,IAAI,SAAU,SAuB7B6C,EAAWqB,KAAK,uBAAuBzM,OAAOoL,EAAWpL,UAEtDiI,EAAS7H,OAERgL,EAAWrL,MAAMiI,EAAOjI,QAAU,GAClCqF,EAAQrF,MAAQ4H,EAAMvC,QAAgC4C,EAAOjI,QAA5BiI,EAAOjI,QAAU,GAE9CkI,EAAShF,UAAYgF,EAASvH,SAE9B0E,EAAQmD,IAAI,MAAOtF,EAAQjD,UAI3BoF,EAAQmD,IAAI,MAAO,GAWfnD,EAAQpF,QARZiI,EAAS1H,YAAeoH,EAAMtC,YAAesC,EAAMvC,QAM/C6C,EAAShF,UAAYgF,EAASvH,SAEfsH,EAAOhI,SAAWiD,EAAQjD,SAI1BgI,EAAOhI,SAVX,UAgBnBoL,EAAWrL,MAAMiI,EAAOjI,SACxBqF,EAAQyH,QAGRlF,EAAME,QAEN3J,EAAE8N,MAAM/D,EAAS1G,SAAUwG,QAGxBA,MAUX0H,gBAAkB,WACd,GAAI3H,GAAmBC,KACnBJ,EAAmBI,KAAKJ,MACxBM,EAAmBF,KAAKE,SACxBiD,EAAmBnD,KAAKmD,WACxBhC,EAAmBnB,KAAKmB,iBAExBqI,EAAmBrG,EAAWsG,UAElC,IAAsB,QAAlBvJ,EAAStI,MAAoC,aAAlBsI,EAAStI,KAIpC,MAFAoI,MAAKS,iBAAiB,GAAGiJ,UAAYF,EAE9BxJ,IAGX,IAAI3J,GAAkBH,EAASsJ,QAC3BmK,EAAkB3J,KAAK2J,eACvBC,EAAkB5J,KAAK6J,uBACvBtP,IAAuB2F,EAAS3F,IAChCC,cAAuB0F,EAAS1F,cAChCI,SAAuBsF,EAAStF,SAChCC,MAAuBqF,EAASrF,MAChCC,IAAuBoF,EAASpF,IAChCJ,OAAuBwF,EAASxF,OAChCC,UAAuBuF,EAASvF,UAChCI,UAAuBmF,EAASnF,UAChCC,gBAAuBkF,EAASlF,gBAChCC,qBAAuBiF,EAASjF,sBAGhC6O,EAAgB9J,KAAK8J,eACrBC,SAAc7T,EAAS8T,eAAeL,EAAaC,GACnDK,KAAc,EACdC,QAAc,EACdC,QAAc,EACdC,UAAc,EACdC,SAAenK,EAAmB,YAAI,GAAQ,EAC9CoK,YAAc,EACdC,aAAc,EAGlBlU,GAAOmU,WAAWV,GAElBN,EAAqBtT,EAASuU,eAAejB,EAAiBtJ,EAASzF,WAEvE,IAAIiQ,GAAiBxU,EAASsJ,QAAQgK,EAAiBM,EAWvD,IATA9J,KAAKS,iBAAiB,GAAGiJ,UAAYF,EAErCrG,EAAWwH,OAEPzK,EAAS7G,oBAET2G,KAAKkB,aAAab,KAAKqK,GAGxBxK,EAAS7H,QAAW6H,EAAS7H,OAASuH,EAAMvC,QAC/C,CA0BI,GAzBA8D,EAAiBd,KAAKqK,GAEtB1K,KAAK/E,uBAEDiF,EAAS3F,KACTrE,EAAS0U,oBAAoBjB,EAAaxI,EAAkBjB,EAAS1F,eAGrE0F,EAASpF,OAEJ5E,EAAS2U,aAAe3K,EAAS9H,gBAElClC,EAAS4U,UAAU,WACf5U,EAASqJ,OAAShJ,MAClBL,EAAS2U,aAAc,EACvB9K,EAAM8H,iBAKV3R,EAASqJ,OAAShJ,MAClByJ,KAAK6H,gBAIT3H,EAASnF,WAAamF,EAASlF,gBAE/B,GAAI+P,GAAQC,WAAW,WACnBC,aAAaF,GACbhL,EAAMiI,qCACP,GAGHpI,GAAME,QAEN3J,EAAE8N,MAAM/D,EAASzG,SAAUuG,QAInC,MAAOA,OAUX4G,MAAQ,WAGJ,MAFA5G,MAAKmD,WAAWyD,QAET5G,MAWXkL,UAAY,SAAS1E,GAGjB,MAFAxG,MAAKmD,WAAW+H,UAAU1E,GAEnBxG,MAUXyC,UAAY,WACR,MAAOzC,MAAKmD,WAAWV,aAY3B0I,aAAe,SAASC,EAAMC,GAI1B,MAFArL,MAAKmD,WAAWgI,aAAaC,EAAMC,GAE5BrL,MAUX0G,aAAe,WACX,MAAO1G,MAAKmD,WAAWuD,gBAW3B4E,cAAgB,SAASC,GAGrB,MAFAvL,MAAK8B,GAAGwJ,cAAcC,GAEfvL,MAUXwL,cAAgB,WACZ,MAAOxL,MAAK8B,GAAG0J,iBAWnBC,iBAAmB,SAAS3T,GAGxB,MAFAkI,MAAKmD,WAAWsI,iBAAiB3T,GAE1BkI,MAcX0L,YAAc,SAAS5T,GAGnB,MAFAkI,MAAKyL,iBAAiB3T,GAEfkI,MAWX2L,YAAc,SAASC,GACnB,GAAI1L,GAAWF,KAAKE,QAIpB,OAFAF,MAAKmD,WAAWI,SAASqI,GAAM1L,EAASnI,UAEjCiI,MAUX6L,YAAc,WACV,MAAO7L,MAAKmD,WAAWsG,YAU3BA,SAAW,WACP,MAAOzJ,MAAKmD,WAAWsG,YAW3BlG,SAAW,SAASzL,GAGhB,MAFAkI,MAAKmD,WAAWI,SAASzL,GAElBkI,MAUXzC,MAAQ,WAGJ,MAFAyC,MAAKmD,WAAWI,SAAS,IAElBvD,MAUX8L,QAAU,WACN,MAAK9L,MAAKE,SAAS7G,mBAOZ2G,KAAKkB,aAAab,QALrB0L,MAAM,gDAEC,IAafC,qBAAuB,WACnB,MAAOhM,MAAK8L,WAUhBG,iBAAmB,WACf,MAAKjM,MAAKE,SAAS7H,MAOZ2H,KAAKmB,iBAAiBd,QALzB0L,MAAM,mCAEC,IAaf1T,MAAQ,SAASkM,GACb,GAAIrE,GAAkBF,KAAKE,QAC3BF,MAAKJ,MAAMC,SAAWK,EAAS7H,OAAQ,EACvC2H,KAAK3C,QAAQsH,MAEb,IAAIuH,GAAchM,EAASxE,kBAAkBrD,MACzC8T,EAAcjM,EAASxE,kBAAkB0B,QACzCmJ,EAAcvG,KAAK9E,QAAQwJ,KAAK,kBAepC,OAdA6B,GAAK6F,SAASvL,KAAK,QAASX,EAASvC,KAAKzC,QAAQ7C,OAClDkO,EAAK8F,YAAYF,GAAa5L,SAAS2L,GAEvClM,KAAKqD,WAAW7C,IAAI,eAAgB,kBAAkBxI,MAAMgI,KAAKC,OAAOjI,QAAU,GAElFgI,KAAK0H,kBAAkB9C,SAElB1E,EAASxG,UAEVwG,EAASxG,QAAU6K,GAAY,cAGnCpO,EAAE8N,MAAM/D,EAASxG,QAASsG,QAEnBA,MAUX5C,QAAU,SAASmH,GACf,GAAIrE,GAAkBF,KAAKE,QAC3BF,MAAKJ,MAAMC,SAAWK,EAAS7H,OAAQ,EACvC2H,KAAK3C,QAAQyH,MAEb,IAAIoH,GAAchM,EAASxE,kBAAkBrD,MACzC8T,EAAcjM,EAASxE,kBAAkB0B,OAE7C,IAAI4C,KAAK9E,QACT,CACI,GAAIqL,GAAUvG,KAAK9E,QAAQwJ,KAAK,kBAChC6B,GAAK6F,SAASvL,KAAK,QAASX,EAASvC,KAAKzC,QAAQkC,SAClDmJ,EAAK8F,YAAYH,GAAW3L,SAAS4L,GAczC,MAXAnM,MAAKqD,WAAW7C,IAAI,eAAgB,QAAQxI,MAAMgI,KAAKC,OAAOjI,SAE9DgI,KAAK4E,SAEA1E,EAASvG,YAEVuG,EAASvG,UAAY4K,GAAY,cAGrCpO,EAAE8N,MAAM/D,EAASvG,UAAWqG,QAErBA,MAWX2E,KAAO,SAASJ,GACZA,EAAYA,GAAY,YAExB,IAAIxE,GAAQC,IAKZ,OAJAA,MAAKC,OAAO0E,KAAK,EAAG,WAChBxO,EAAE8N,MAAMM,EAAUxE,OAGfC,MAWX8E,KAAO,SAASP,GACZA,EAAYA,GAAY,YAExB,IAAIxE,GAAQC,IAKZ,OAJAA,MAAKC,OAAO6E,KAAK,EAAG,WAChB3O,EAAE8N,MAAMM,EAAUxE,OAGfC,MAUXsM,WAAa,WAET,GAAIvM,GAAmBC,KACnBC,EAAmBD,KAAKC,OACxB5C,EAAmB2C,KAAK3C,QACxBnC,EAAmB8E,KAAK9E,QACxBgF,EAAmBF,KAAKE,SACxBmD,EAAmBrD,KAAKqD,UAExBnD,GAAShF,UACTA,EAAQqR,SACRrR,EAAQwJ,KAAK,qBAAqB8H,YAAY,WAGlDnJ,EAAWkJ,QAEX,IAAIE,GAAY,SAASnE,GACjBA,EAAMoE,UAA8B,KAAlBpE,EAAMK,SACxB5I,EAAM4M,YAImB,UAA9BtJ,EAAW7C,IAAI,YAEdR,KAAKJ,MAAMvC,SAAU,EAElB2C,KAAKJ,MAAMtC,YACVD,EAAQmD,IAAI,aAAc,QAG9BP,EAAOyE,KAAK,IAAM1E,KAAK1I,YAAc,qBAAqBqN,OAAOY,KAAKrP,EAASoQ,aAAa,QAAS,YAAa,WAC9GvG,EAAM4M,cAGNzM,EAAS7H,OAET2H,KAAK0H,kBAGTrK,EAAQsH,OAAOnE,KACX6E,SAAY,SACZH,IAAY,EACZlN,MAAYiI,EAAOjI,QACnBC,OAAaiI,EAAS1H,aAAewH,KAAKJ,MAAMtC,WAAc,OAAS2C,EAAOhI,WAG9E+H,KAAKJ,MAAME,QAEX3J,EAAE8N,MAAM/D,EAAStG,aAAcoG,QAGnC7J,EAAEF,QAAQsP,KAAK,QAASkH,KAIxBtW,EAAEF,QAAQuP,OAAO,QAASiH,GAC1BzM,KAAK2M,cAWbA,UAAY,WAER,GAAI1M,GAAmBD,KAAKC,OACxB5C,EAAmB2C,KAAK3C,QACxBnC,EAAmB8E,KAAK9E,QACxBgF,EAAmBF,KAAKE,SACxBmD,EAAmBrD,KAAKqD,WACxBuJ,EAAmB3M,EAAOyE,KAAK,IAAM1E,KAAK1I,YAAc,oBA+B5D,OA7BA0I,MAAKJ,MAAMvC,SAAY,EAEvBgG,EAAWsB,OAEPzE,EAAShF,SACTA,EAAQyJ,OAGT3E,KAAKE,SAAS7H,MACbgF,EAAQsH,OAERtH,EAAQyH,OAGZ8H,EAAgB9H,OAAOU,OAAOtP,EAASoQ,aAAa,QAAS,aAE7DjJ,EAAQmD,KACJqM,WAAa,KACbxH,SAAa,WACbrN,MAAaiI,EAAOjI,QAAU,EAC9BC,OAAciI,EAAS1H,aAAewH,KAAKJ,MAAMtC,WAAc,OAAS2C,EAAOhI,SAAWiD,EAAQjD,SAClGiN,IAAchF,EAAgB,QAAOhF,EAAQjD,SAAW,IAGxD+H,KAAKJ,MAAME,QAEX3J,EAAE8N,MAAM/D,EAASrG,YAAamG,QAG3BA,MAUX1C,WAAa,WAET,GAAIyC,GAAmBC,KACnBC,EAAmBD,KAAKC,OAExB/E,GADmB8E,KAAK3C,QACL2C,KAAK9E,SACxB4R,EAAmB9M,KAAK1I,YAAc,YAEtC4D,IACAA,EAAQwJ,KAAK,wBAAwB0H,SAASI,YAAY,SAG9D,IAAIC,GAAY,SAASnE,GAChBA,EAAMoE,UAA8B,KAAlBpE,EAAMK,SAErB5I,EAAMH,MAAMtC,YAEZyC,EAAMgN,iBAiClB,OA5BK9M,GAAOK,SAASwM,IAwBjB3W,EAAEF,QAAQuP,OAAO,QAASiH,GAC1BzM,KAAK+M,mBAvBL/M,KAAKJ,MAAMtC,YAAa,EAExBnH,EAAE,aAAaqK,IAAI,WAAY,UAE/BP,EAAOO,KACH6E,SAAW,QACXH,IAAW,EACXI,KAAW,EACX0H,OAAW,EACXC,OAAW,OACXjV,MAAW7B,EAAEF,QAAQ+B,QACrBC,OAAW9B,EAAEF,QAAQgC,WACtBsI,SAASuM,GAEZ9M,KAAK4E,SAELzO,EAAE8N,MAAMjE,KAAKE,SAASpG,aAAckG,QAEpC7J,EAAEF,QAAQsP,KAAK,QAASkH,IAQrBzM,MAUX+M,eAAiB,WAEb,GAAI9M,GAAoBD,KAAKC,OACzB/E,EAAoB8E,KAAK9E,QACzB4R,EAAoB9M,KAAK1I,YAAc,YAuB3C,OAtBA0I,MAAKJ,MAAMtC,YAAa,EAEpBpC,GACAA,EAAQwJ,KAAK,wBAAwB0H,SAASC,YAAY,UAG9DlW,EAAE,aAAaqK,IAAI,WAAY,IAE/BP,EAAOO,KACH6E,SAAW,GACXH,IAAW,GACXI,KAAW,GACX0H,OAAW,cACXhV,MAAWiI,EAAO2I,KAAK,YACvB3Q,OAAWgI,EAAO2I,KAAK,aACvBqE,OAAW,mBACZZ,YAAYS,GAEf9M,KAAK4E,SAELzO,EAAE8N,MAAMjE,KAAKE,SAASnG,iBAAkBiG,QAEjCA,MAGXkN,cAAgB,SAAStP,EAAM1F,GAE3B,GAAI6H,GAAWC,KACX8B,EAAW9B,KAAK8B,GAChB5B,EAAWF,KAAKE,QAEpB,OAAqB,kBAAVtK,YAEPoK,MAAKpC,GAAMkE,IAKf5J,EAAOgI,EAAS/H,WAAaD,OAEzB/B,EAAE+R,QAAQhQ,EAAMhC,EAASiX,UAAUC,QAAU,EAE7ClX,EAASmX,WAAWnV,EAAM,WACtBhC,EAASoX,YAAY1P,GAAQmC,EAAMnC,GACnCmC,EAAMnC,GAAMkE,KAKhB3L,EAAE8N,MAAM/N,EAASoX,YAAY1P,GAAOoC,MAAM8B,OAKtD5L,EAASc,GAAGC,KAAK0I,UAAYzJ,EAASc,GAEtCd,EAAS6C,iBAAmB,WACxB,GAAImH,GAAWF,KAAKE,QAEhBA,GAASnH,kBAET5C,EAAE,aAAaqK,IAAI,WAAY,WAIvCtK,EAAS8C,eAAiB,SAASkF,GAC/B,GAAI+B,GAAWD,KAAKC,OAChBC,EAAWF,KAAKE,QAEpBhC,GAAOsC,KACH0E,KAAQ/O,EAAEF,QAAQgC,SAAWiG,EAAOjG,UAAY,EAAI,KACpDqN,MAAQnP,EAAEF,QAAQ+B,QAAWkG,EAAOlG,SAAY,EAAI,OAGpDkI,EAASlH,gBACTiH,EAAOS,SAAS,IAAMV,KAAK1I,YAAc,QAAQkJ,IAAI,UAAW+M,SAASrP,EAAOsC,IAAI,YAAc,GAAGmE,QAI7GzO,EAASoF,iBACLK,KAAO,WACHqE,KAAK8B,GAAGnG,QAGZC,KAAO,WACHoE,KAAK8B,GAAGlG,QAGZC,KAAO,WACH,GAAIiG,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,KAAOhF,EAAY,MAEtB,KAAdA,GACC3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9C3R,IAAM,WACF,GAAIgG,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,KAAOhF,EAAY,MAEtB,KAAdA,GACC3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9C1R,OAAS,WACL,GAAI+F,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,IAAMhF,EAAY,KAErB,KAAdA,GACC3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9CzR,MAAQ,WACJ,GAAI8F,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,KAAOhF,GAC3B3E,EAAGoJ,UAAU1E,EAAOgH,KAAqB,KAAd/G,EAAoBD,EAAOiH,GAAK,EAAIjH,EAAOiH,GAAKhH,EAAU9F,OAAS,IAGlG+M,QAAU,WACN,GAAI5L,GAAa9B,KAAK8B,GAClB2E,EAAa3E,EAAG4E,eAChBiH,EAAa7L,EAAG8L,gBAEpB9L,GAAG2J,iBAAiBvV,EAAS2X,eAAepH,IAC5C3E,EAAGwJ,cAAcqC,IAGrBpS,QAAU,WACN,GAAIuG,GAAa9B,KAAK8B,GAClB2E,EAAa3E,EAAG4E,eAChBiH,EAAa7L,EAAG8L,gBAEpB9L,GAAG2J,iBAAiBvV,EAAS4X,oBAAoBrH,IACjD3E,EAAGwJ,cAAcqC,IAGrB1R,UAAY,WACR,GAAI6F,GAAa9B,KAAK8B,GAClB2E,EAAa3E,EAAG4E,eAChBiH,EAAa7L,EAAG8L,gBAEpB9L,GAAG2J,iBAAiBhF,EAAUsH,eAC9BjM,EAAGwJ,cAAcqC,IAGrBnS,UAAY,WACR,GAAIsG,GAAa9B,KAAK8B,GAElB2E,GADa3E,EAAGW,YACHX,EAAG4E,gBAChBiH,EAAa7L,EAAG8L,gBAEpB9L,GAAG2J,iBAAiBhF,EAAUuH,eAC9BlM,EAAGwJ,cAAcqC,IAGrBzR,GAAK,WACD,GAAI4F,GAAY9B,KAAK8B,GACjB2E,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,KAAOhF,IAG/BtK,GAAK,WACD,GAAI2F,GAAY9B,KAAK8B,GACjB2E,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,MAAQhF,IAGhCrK,GAAK,WACD,GAAI0F,GAAY9B,KAAK8B,GACjB2E,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,OAAShF,IAGjCpK,GAAK,WACD,GAAIyF,GAAY9B,KAAK8B,GACjB2E,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,QAAUhF,IAGlCnK,GAAK,WACD,GAAIwF,GAAY9B,KAAK8B,GACjB2E,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,SAAWhF,IAGnClK,GAAK,WACD,GAAIuF,GAAY9B,KAAK8B,GACjB2E,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,UAAYhF,IAGpCjK,UAAY,WACR,GAAIsF,GAAY9B,KAAK8B,GAEjB2E,GADY3E,EAAGW,YACHX,EAAG4E,eAEnB,IAAkB,KAAdD,EAEA3E,EAAG2J,iBAAiB,KAAOhF,OAG/B,CAGI,IAAK,GAFDwH,GAAgBxH,EAAUyH,MAAM,MAE3BtI,EAAI,EAAGC,EAAMoI,EAActN,OAAYkF,EAAJD,EAASA,IAEjDqI,EAAcrI,GAA2B,KAArBqI,EAAcrI,GAAa,GAAK,KAAOqI,EAAcrI,EAG7E9D,GAAG2J,iBAAiBwC,EAAclN,KAAK,SAI/CtE,UAAY,WACR,GAAIqF,GAAY9B,KAAK8B,GAEjB2E,GADY3E,EAAGW,YACHX,EAAG4E,eAEnB,IAAiB,KAAdD,EAEC3E,EAAG2J,iBAAiB,MAAQhF,OAGhC,CAGI,IAAK,GAFDwH,GAAgBxH,EAAUyH,MAAM,MAE3BtI,EAAI,EAAGC,EAAMoI,EAActN,OAAYkF,EAAJD,EAASA,IAEjDqI,EAAcrI,GAA2B,KAArBqI,EAAcrI,GAAa,GAAMA,EAAE,EAAK,KAAOqI,EAAcrI,EAGrF9D,GAAG2J,iBAAiBwC,EAAclN,KAAK,SAI/CrE,GAAK,WACD,CAAA,GAAIoF,GAAY9B,KAAK8B,EACLA,GAAGW,YACHX,EAAG4E,eAEnB5E,EAAG2J,iBAAiB,iBAGxB9O,KAAO,WACHqD,KAAKkN,cAAc,aAAc,4BAGrCtQ,OAAS,WACLoD,KAAKkN,cAAc,mBAAoB,0CAG3CrQ,MAAQ,WACJmD,KAAKkN,cAAc,cAAe,8BAGtCpQ,KAAO,WACH,GAAIgF,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,IAAMhF,EAAY,KAEpB,KAAdA,GACA3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9CzQ,aAAe,WACXgD,KAAKkN,cAAc,kBAAmB,wCAG1CnQ,oBAAsB,WAClBiD,KAAKkN,cAAc,yBAA0B,sDAGjDjQ,MAAQ,WACJ+C,KAAKkN,cAAc,cAAe,8BAGtChQ,SAAW,WACP,GAAI4E,GAAY9B,KAAK8B,GAGjBqM,GAFYrM,EAAG4E,eACH,GAAI0H,MACJpO,KAAKE,SAASvC,KAAKC,MAC/ByQ,EAAYnY,EAASoY,aAAe,IAAMpY,EAASoY,WAAyB,UAAbH,GAAqC,UAAbA,EAAwB,cAAgB,WAEnIrM,GAAG2J,iBAAiB4C,IAGxBxT,MAAQ,WACJmF,KAAKkN,cAAc,cAAe,8BAGtC/P,aAAe,WACX6C,KAAKkN,cAAc,qBAAsB,8CAG7C7U,MAAQ,WACJ2H,KAAKA,KAAKE,SAAS7H,MAAQ,UAAY,YAG3CgF,QAAU,WACN2C,KAAKsM,cAGThP,WAAa,WACT0C,KAAK1C,cAGTC,MAAQ,WACJyC,KAAKzC,SAGTC,KAAO,WACHwC,KAAKkN,cAAc,aAAc,4BAGrCzP,KAAO,WACHuC,KAAKoH,mBAIblR,EAASiS,SACLoG,SAAiB,OACjBC,SAAiB,SACjBC,SAAiB,OACjBC,eAAiB,OACjBC,eAAiB,QACjBC,eAAiB,MACjBC,SAAiB,KACjBC,SAAiB,KACjBC,SAAiB,KACjBC,SAAiB,KACjBC,SAAiB,KACjBC,SAAiB,KACjBC,SAAiB,KACjBC,SAAiB,WAEjBC,SAAiB,WACb,GAAIvN,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,IAAMhF,EAAY,KAEpB,KAAdA,GACA3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9C6B,SAAkB,WACd,GAAIxN,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,eAEfxP,EAAuB,KAAduP,EAAoB,GAAK,KAAMA,EAAU,GAEtD3E,GAAG2J,iBAAiB,IAAMhF,EAAY,KAAKvP,EAAM,KAE/B,KAAduP,GACA3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAG9C8B,SAAmB,UAEnBC,eAAmB,WACf,GAAI1N,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,iBAAiB,IAAMhF,GAER,KAAdA,GACA3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9CgC,cAAqB,WACjB,GAAI3N,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,cAEnB5E,GAAG2J,kBAAkB,MAAOhF,EAAW,OAAO1F,KAAK,OAEjC,KAAd0F,GACA3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK;;EAI9CiC,mBAAqB,aACrBC,eAAqB,eACrBC,cAAqB,OACrBC,eAAqB,QACrBC,eAAqB,YACrBC,cAAqB,UACrBC,mBAAqB,UACrBC,cAAqB,YAErBC,eAAqB,WACjB,GAAIpO,GAAY9B,KAAK8B,GACjB0E,EAAY1E,EAAGW,YACfgE,EAAY3E,EAAG4E,eAEfxP,EAAuB,KAAduP,EAAoB,GAAK,KAAMA,EAAU,GAEtD3E,GAAG2J,iBAAiB,KAAOhF,EAAY,KAAKvP,EAAM,KAEhC,KAAduP,GACA3E,EAAGoJ,UAAU1E,EAAOgH,KAAMhH,EAAOiH,GAAK,IAI9C0C,mBAAqB,QACrBC,eAAqB,OACrBC,eAAqB,UACrBC,eAAqB,oBACrBC,eAAqB,QACrBC,GAAqB,QACrBC,IAAqB,UACrBC,IAAqB,aAWzB,IAAIC,GAAO,SAASC,GAChB,MAASC,QAAOlR,UAAUgR,KAAgEC,EAAID,OAA5DC,EAAIE,QAAQ,qCAAsC,IAGxF5a,GAASya,KAAOA,CAUhB,IAAIpV,GAAU,SAAUqV,GACpB,MAAOA,GAAI5C,cAAc8C,QAAQ,iBAAkB,SAASC,GACxD,MAAOA,GAAGhD,gBAIlB7X,GAASqF,QAAUrF,EAAS4X,oBAAsBvS,CAUlD,IAAIsS,GAAiB,SAAS+C,GAC1B,MAAOA,GAAI5C,cAAc8C,QAAQ,SAAU,SAASC,GAChD,MAAOA,GAAGhD,gBAihClB,OA3gCA7X,GAAS2X,eAAiB3X,EAASwX,QAAUG,EAE7C3X,EAAS8a,MACLC,WAAa,uBAGjB/a,EAASgb,QACLxW,OAAgB,UAChByW,MAAgB,+BAChBxW,UAAgB,+CAChBE,MAAgB,eAChBuW,cAAgB,uBAChBC,QAAgB,0BAChBC,YAAgB,8BAChBC,aAAgB,8BAIpBrb,EAAS2E,OACL3C,KAAQ,oDACRsZ,IAAQ,QAIZtb,EAASmb,SACLnZ,KAAO,mCACPsZ,IAAO,QAWXtb,EAAS8T,eAAiB,SAASL,EAAa5S,GAC5C,GAAIY,IACA4C,KAAuB,EACvBC,cAAuB,EACvBE,QAAuB,EACvBC,WAAuB,EACvBC,UAAuB,EACvBC,OAAuB,EACvBC,KAAuB,EACvBC,WAAuB,EACvBC,iBAAuB,GAGvBkF,EAAkB/J,EAAEgK,OAAOxI,EAAUZ,OACrCV,EAAkBH,EAASsJ,QAC3BwK,EAAkB,GAAI3T,GAAOob,QACjC9H,GAAsBA,KAEtB,IAAI+H,GAAkBxb,EAASgb,OAAOxW,OAClCiX,EAAkBzb,EAASgb,OAAOrW,MAClC+W,EAAkB1b,EAASgb,OAAOC,MAClCU,EAAkB3b,EAASgb,OAAOvW,UAClCmX,EAAkB5b,EAASgb,OAAOG,QAClCU,EAAkB7b,EAASgb,OAAOI,YAClCU,EAAkB9b,EAASgb,OAAOK,YAkOtC,OAhOAvH,GAAenP,MAAQ,SAASoX,GAE5BA,EAAOA,EAAKnB,QAAQ5a,EAASgb,OAAOE,cAAe,SAASL,GACxD,MAAOA,GAAGD,QAAQ,KAAM,UAG5B,IAAIoB,GAASD,EAAKE,MAAMR,EAExB,KAAKO,IAAWhS,EAASrF,MACrB,MAAOoX,EAGX,KAAK,GAAIrM,GAAI,EAAGC,EAAMqM,EAAOvR,OAAYkF,EAAJD,EAASA,IAE1CqM,EAAOA,EAAKnB,QAAQ,GAAIsB,QAAOF,EAAOtM,IAAK,SAASmL,GAChD,GAAIsB,GAAWtB,EAAGoB,MAAMJ,GACpBnU,EAAWmT,EAAGD,QAAQ,KAAM,GAEhC,IAAIuB,EAEA,IAAK,GAAIC,GAAK,EAAGC,EAAOF,EAAS1R,OAAa4R,EAALD,EAAWA,IACpD,CACI,GAAIE,GAASH,EAASC,GAAIxB,QAAQ,KAAM,GAExC,OAAO,gBAAmB0B,EAAS,qBAAyBA,EAAO1B,QAAQ,MAAO,IAAM,aAIhG,CACI,GAAI2B,GAAgB1B,EAAGoB,MAAMH,GACzBU,EAAgB3B,EAAGoB,MAAML,EAE7B,IAAIW,EAEA,IAAK,GAAIE,GAAI,EAAGC,EAAOH,EAAc9R,OAAYiS,EAAJD,EAAUA,IACvD,CACI,GAAIE,GAAWJ,EAAcE,GAAG7B,QAAQ,KAAM,GAC9C,OAAO,aAAgB+B,EAAW,4BAAgCA,EAAW,cAGhF,CAAA,IAAIH,EAUL,MAAO,aAAgBxc,EAAS2E,MAAM3C,KAAO0F,EAAO1H,EAAS2E,MAAM2W,IAAM,+BAAqC5T,EAAO,oBAAwBA,EAAO,WARpJ,KAAK,GAAIkV,GAAI,EAAGC,EAAOL,EAAc/R,OAAYoS,EAAJD,EAAUA,IACvD,CACI,GAAIE,GAAMN,EAAcI,GAAGhC,QAAQ,KAAM,IAAIA,QAAQ,MAAO,GAC5D,OAAO,aAAgB5a,EAASmb,QAAQnZ,KAAO8a,EAAM9c,EAASmb,QAAQG,IAAM,oBAAwBwB,EAAM,kBAAsBA,EAAM,iCAW1J,OAAOf,IAGXjI,EAAetP,OAAS,SAASuX,GAE7B,MAAIP,GAAU3L,KAAKkM,IAEX/R,EAASxF,SAETuX,EAAOA,EAAKnB,QAAQc,EAAU,SAASb,GACnC,MAAOA,GAAGD,QAAQ,KAAM,iBAG5BmB,EAAOA,EAAKnB,QAAQY,EAAW,SAASX,EAAIkC,GACxC,MAAO,YAAe/c,EAAS8a,KAAKC,WAAkBgC,EAAK,iBAAqBA,EAAK,qBAA0BlC,EAAK,SACrHD,QAAQ,eAAgB,MAG3B5Q,EAASvF,YAETsX,EAAOA,EAAKnB,QAAQe,EAAc,SAASd,EAAIkC,GAC3C,MAASA,GAA+ClC,EAAzC,mBAAoBA,EAAG,KAAMA,EAAG,UAIhDkB,GAGJA,GAGXjI,EAAerN,KAAO,SAAUuW,EAAMhc,EAAO+a,GAEzC,GAAIjS,KAAKjJ,QAAQsT,SAAU,CACvB,IACI,GAAI8I,GAAOC,mBAAmBC,SAASH,IAAOpC,QAAQ,UAAU,IAAI9C,cACtE,MAAMsF,GACJ,MAAO,GAGX,GAAoC,IAAhCH,EAAKI,QAAQ,eACb,MAAO,GAIf,GAAIC,GAAM,YAAeN,EAAO,GAEhC,OAAIxB,GAAU3L,KAAK7O,IAAUwa,EAAU3L,KAAKkM,IAEpC/a,IAEAsc,GAAO,WAActc,EAAM4Z,QAAQ,KAAM,UAGtC0C,EAAM,KAAQvB,EAAKnB,QAAQ,KAAM,SAAW,SAGnD5Z,IACAsc,GAAO,WAActc,EAAQ,KAGjCsc,GAAO,IAAMvB,EAAO,SAKxBjI,EAAeyJ,QAAU,SAASxB,EAAMyB,GAEpC,GAAIC,GAAiB1B,EACjB2B,EAAiB,oDAGrB,IAAIA,EAAW7N,KAAKkM,GACpB,CACI,GAAI4B,KACJ5B,GAAeA,EAAK/D,MAAM,kCAE1B,KAAK,GAAItI,GAAI,EAAGC,EAAMoM,EAAKtR,OAAYkF,EAAJD,EAASA,IAExCiO,EAASC,KAAK7B,EAAKrM,GAAGkL,QAAQ,wBAAyB,IAG3DmB,GAAO4B,EAAS9S,KAAK,KAGzBkR,EAAOtB,EAAKsB,EAEZ,IAAI8B,GAAiB9B,EAAKjE,cAAc8C,QAAQ,UAAW,KACvDvW,GACA0X,KAAQA,EACRyB,MAAQA,EACRM,KAAQD,GAGRE,EAAY,qBAAqBlO,KAAKkM,GACtCnb,EAAY,EAAcod,OAAOjC,GAAMnB,QAAQ,MAAO,IAAMmB,EAAKjE,cAAc8C,QAAQ,UAAW,IAEtGnH,GAAYmK,KAAKvZ,EAEjB,IAAI4Z,GAAc,KAAOT,EAAQ,SAAWA,EAAQ,IAAM1T,KAAKjJ,QAAQqd,aAAetd,EAAI,IAO1F,OALAqd,IAAkB,YAAelC,EAAO,wBACxCkC,GAAkB,yDAClBA,GAAiCnU,KAAKtF,OAApB,EAA2BsF,KAAKnF,MAAM8Y,GAAyB3T,KAAKnF,MAAMoX,IAC5FkC,GAAkB,MAAQT,EAAQ,KAKtC1J,EAAeqK,UAAY,SAASpC,GAChC,GAAIqC,GAAkB,gBAAgBvO,KAAKkM,GACvCsC,EAAkB,iBAAiBxO,KAAKkM,GACxCuC,EAAkB,EAAc,WAActe,EAASmJ,WAAWvE,IAAM,IAAO,GAC/E2Z,EAAkB,YAAY1O,KAAKkM,EAavC,OATIA,IAFCsC,GAAaD,EAEPrC,EAAKnB,QAAQ,uBAAwB,SAASC,EAAIkC,GACrD,MAAO,gBAAmB/c,EAASmJ,WAAWvE,IAAM,KAAQmY,EAAGnC,QAAQ,MAAO,IAAM,YAKjF,EAAcmB,EAAKnB,QAAQ,MAAO,IAAMmB,EAG5C,EAAU,2DAAiEA,EAAO,cACxE,KAAOuC,EAAgB,IAAMxU,KAAKtF,OAAOsF,KAAKnF,MAAMoX,IAAS,UAGlFjI,EAAelN,KAAO,SAAUA,EAAMa,GAElC,MAAa,QAATA,GAA2B,aAATA,EAEX,iCAAqCb,EAAO,SAEpC,SAATa,EAEC,0BAA8Bb,EAAO,SAKrCzG,EAAOob,SAAS9R,UAAU7C,KAAK4X,MAAM1U,KAAM5J,YAI1D4T,EAAe2K,UAAY,SAASC,EAASC,GACzC,GAAIC,GAAQD,EAAY,OAAI,KAAO,KAC/BE,EAAQF,EAAW,MAAK,IAAMC,EAAM,sBAAyBD,EAAMG,MAAQ,KAAQ,IAAMF,EAAO,GAEpG,OAAOC,GAAM/U,KAAKtF,OAAOsF,KAAKnF,MAAM+Z,IAAY,KAAOE,EAAO,OAGlE9K,EAAeiL,SAAW,SAAShD,GAC/B,MAAI/R,GAAStF,UAAY,mBAAmBmL,KAAKkM,IAE7CA,EAAOA,EAAKnB,QAAQ,gBAAiB,8DACzBA,QAAQ,eAAiB,+EAE9B,iCAAqC9Q,KAAKtF,OAAOsF,KAAKnF,MAAMoX,IAAS,SAIrE,OAASjS,KAAKtF,OAAOsF,KAAKnF,MAAMoX,IAAS,SAIjDjI,GAcX9T,EAAS0U,oBAAsB,SAASrQ,EAAK2a,EAAWC,GAEpD,GAAI9U,GAAa,GACb+U,EAAa,CACjBD,GAAiBA,GAAc,CAE/B,KAAK,GAAIvP,GAAI,EAAGC,EAAMtL,EAAIoG,OAAYkF,EAAJD,EAASA,IAC3C,CACI,GAAIqM,GAAQ1X,EAAIqL,GAAGqM,KACfyB,EAAQnZ,EAAIqL,GAAG8N,KAEPyB,GAARzB,IAMArT,GAFAqT,EAAQ0B,EAEA,GAEKA,EAAR1B,EAEG,GAAK2B,OAAMD,EAAY1B,EAAQ,GAAI3S,KAAK,cAIxC,aAGZV,GAAQ,2BAA8BqT,EAAQ,YAAgBzB,EAAO,YAAgByB,EAAQ,KAAQzB,EAAO,WAC5GmD,EAAY1B,GAGhB,GAAI4B,GAAeJ,EAAUxQ,KAAK,gBAIlC,OAFA4Q,GAAa5U,SAAS,sBAAsBL,KAAK,IAAIA,KAAKA,GAEnDiV,GAYXpf,EAASuU,eAAiB,SAASpK,EAAMkV,GAErC,GAAuB,gBAAZA,GAIP,IAAK,GAFDC,GAAaD,EAAQrH,MAAM,KAEtBtI,EAAI,EAAGC,EAAM2P,EAAW7U,OAAYkF,EAAJD,EAASA,IAClD,CACI,GAAImP,GAAMS,EAAW5P,EAErBvF,GAAOA,EAAKyQ,QAAQ,GAAIsB,QAAO,MAAQ2C,EAAI,aAAiB,OAAQ,IAAIjE,QAAQ,GAAIsB,QAAO,OAAU2C,EAAI,MAAS,OAAQ,IAIlI,MAAO1U,IAYXnK,EAASuf,eAAiB,SAAS3e,EAAIC,GACnC,GAAIY,IACAsS,KAAuB,EACvB1P,KAAuB,EACvBC,cAAuB,EACvBzC,SAAuB,GACvB0C,YAAuB,EACvBib,eAAuB,EACvBhb,QAAuB,EACvBC,WAAuB,EACvBG,KAAuB,EACvBF,UAAuB,EACvBC,OAAuB,EACvBE,WAAuB,EACvBC,iBAAuB,EACvBC,sBAAuB,EAG3B/E,GAASsJ,QAAWnJ,MAEpB,IAAIsf,GAAgBxf,EAAE,IAAMW,GACxBoJ,EAAgByV,EAAIzV,SAAW/J,EAAEgK,QAAO,EAAMxI,EAAUZ,OACxD6e,EAAgBD,EAAIjR,KAAK,YACzBmR,EAAuC,KAAtB3V,EAASnI,SAAmB6d,EAAO3U,MAAQf,EAASnI,SACrE4R,KAEAC,GACArP,IAAuB2F,EAAS3F,IAChCC,cAAuB0F,EAAS1F,cAChCI,SAAuBsF,EAAStF,SAChCC,MAAuBqF,EAASrF,MAChCC,IAAuBoF,EAASpF,IAChCJ,OAAuBwF,EAASxF,OAChCC,UAAuBuF,EAASvF,UAChCI,UAAuBmF,EAASnF,UAChCC,gBAAuBkF,EAASlF,gBAChCC,qBAAuBiF,EAASjF,sBAGhC6O,GACAC,SAAc7T,EAAS8T,eAAeL,EAAaC,GACnDK,IAAc/J,EAAS+J,IACvBC,QAAc,EACdC,QAAc,EACdC,UAAc,EACdC,SAAenK,EAAmB,YAAI,GAAQ,EAC9CoK,YAAc,EACdC,aAAc,EAGlBsL,GAAc3f,EAASuU,eAAeoL,EAAa3V,EAASzF,WAE5D,IAAIqb,GAAmBzf,OAAOwf,EAAa/L,EAkC3C,IAhCI5T,EAASyL,MAETiU,EAAO3U,IAAI4U,GAIXD,EAAOvV,KAAKwV,GAGhBF,EAAIpV,SAAS,iBAAmBP,KAAK1I,YAAc,gBAAgBsJ,OAAOkV,GAEtE5V,EAAS3F,MACTob,EAAIL,aAAetV,KAAK4K,oBAAoBjB,EAAagM,EAAKzV,EAAS1F,gBAGvE0F,EAASjF,uBAET0a,EAAIjR,KAAK,OAAOnE,SAAS,wBACzBqH,eAGC1R,EAASyL,QAENzB,EAASnF,WACT4a,EAAIjR,KAAK,cAAc3J,YAGvBmF,EAASlF,iBACT2a,EAAIjR,KAAK,qBAAqB1J,iBAAiBnD,MAAO,YAI1DqI,EAASpF,IACb,CACI,GAAIib,GAAc,WACdJ,EAAIjR,KAAK,IAAMxO,EAASmJ,WAAWvE,KAAKgN,KAAK,WACzC,GAAIhN,GAAO3E,EAAE6J,KACbzJ,OAAMwR,OAAOjN,EAAIuF,OAAQvF,EAAI,QAIjCoF,EAASwV,eAAkBxf,EAASqJ,QAAWrJ,EAAS2U,YAUxDkL,IARA/V,KAAK8K,UAAU,WACX5U,EAASqJ,OAAchJ,MACvBL,EAAS2U,aAAc,EACvBkL,MAaZ,MAJAJ,GAAI9J,YAAc,WACd,MAAQ3V,GAAc,MAAI0f,EAAO3U,MAAQ2U,EAAOvV,QAG7CsV,GAGXzf,EAAS8f,QACL,UACA,WAAY,aACZ,WAAY,kBACZ,cAAe,eAAgB,aAC/B,SACA,UAAW,UAAW,cACtB,cACA,MAAO,WAAY,WAAY,UAC/B,OAAQ,MAAO,QACf,eAAgB,gBAAiB,iBACjC,WACA,YACA,aAAc,0BAA2B,WACzC,cACA,UAAW,YAGf9f,EAASoX,eAETpX,EAASiX,WACL8I,MACAzV,OACA4M,WAYJlX,EAASmX,WAAa,SAAS6I,EAAU3R,EAAU4R,GAC/C5R,EAAaA,GAAY,aAEzBvE,KAAK4B,WAAWsU,EAAU,WACtBhgB,EAASiX,UAAUC,OAAO0G,KAAKoC,GAC/B3R,KACD4R,IAYPjgB,EAASkL,QAAY,SAAS8U,EAAU3R,EAAU4R,GAC9CA,EAAaA,GAAY,OACzB5R,EAAaA,GAAY,YAEzB,IAAI/D,GAAS4V,SAASC,cAAc,OACpC7V,GAAIsU,KAAS,WACbtU,EAAI8V,IAAS,aACb9V,EAAIjH,OAASiH,EAAI+V,mBAAqB,WAClCrgB,EAASiX,UAAU3M,IAAIsT,KAAKoC,GAC5B3R,KAGJ/D,EAAI0S,KAASgD,EAAW,OAEZ,SAATC,EACCC,SAASI,qBAAqB,QAAQ,GAAGC,YAAYjW,GAErD4V,SAASM,KAAKD,YAAYjW,IAIlCtK,EAASygB,KAAgC,+BAArBC,UAAUC,QAC9B3gB,EAASyL,MAAWzL,EAASygB,MAA6C,MAArCC,UAAUE,WAAW3E,MAAM,OAWhEjc,EAAS0L,WAAa,SAASsU,EAAU3R,EAAU4R,GAE/CA,EAAgBA,GAAY,OAC5B5R,EAAgBA,GAAY,YAE5B,IAAIwS,GAAY,IAChBA,GAAgBX,SAASC,cAAc,UACvCU,EAAOjgB,GAASof,EAASpF,QAAQ,UAAW,KAC5CiG,EAAOjC,KAAS,kBAChBiC,EAAOC,IAASd,EAAW,MAEvBhgB,EAASyL,MAEToV,EAAOR,mBAAqB,WACrBQ,EAAOE,aAEoB,WAAtBF,EAAOE,YAAiD,aAAtBF,EAAOE,cAEzCF,EAAOR,mBAAqB,KAC5BrgB,EAASiX,UAAU8I,GAAGnC,KAAKoC,GAC3B3R,MAOZwS,EAAOxd,OAAS,WACZrD,EAASiX,UAAU8I,GAAGnC,KAAKoC,GAC3B3R,KAIK,SAAT4R,EACAC,SAASI,qBAAqB,QAAQ,GAAGC,YAAYM,GAErDX,SAASM,KAAKD,YAAYM,IAMlC7gB,EAASghB,UACL1W,IAAM,8DACNyV,GAAM,+DAGV/f,EAAS2U,aAAc,EASvB3U,EAAS4U,UAAY,SAAUvG,GAC3BrO,EAASkL,QAAQlL,EAASghB,SAAS1W,IAAK,WACpCtK,EAAS0L,WAAW1L,EAASghB,SAASjB,GAAI1R,GAAY,iBAY9DrO,EAASmR,WAAa,SAASG,GAC3BrR,EAAE,aAAaqK,IAAI,WAAY,EAAS,SAAW,KAWvDtK,EAAS2Q,aAAe,SAAS9P,GAC7B,GAAIY,IACAiG,KAAO,GACP5F,MAAQ,IACRC,OAAQ,IACRf,MAAQ,GACRigB,MAAQ,EACRC,QAAS,EACTxC,QAAU,GACV5T,MAAO,EACPqW,WACI9P,gBAAkB,OAClBD,QAAU,IAEdD,YAAa,EACbiQ,QAAS,EACTxZ,SAAU,EAGd/G,GAAmBZ,EAAEgK,QAAO,EAAMxI,EAAUZ,EAE5C,IAAIkJ,GAAeD,KAAKC,OACpB3I,EAAepB,EAASoB,YACxBigB,GAAe,GAAKnJ,OAAMoJ,UAC1BC,EAAmC,KAAjB1gB,EAAQ6G,KAAetG,EAAc,UAAYigB,EAAOxgB,EAAQ6G,KAClF0I,EAAepQ,EAASoQ,aAExBjG,EAAe,eAAkB/I,EAAc,UAAYmgB,EAAa,IAEtD,MAAlB1gB,EAAQG,QAERmJ,GAAQ,eAAkB/I,EAAc,kBAAuBP,EAAY,KAAI,yBAA6B,IAAO,IACnHsJ,GAAQ,kBAAqB/I,EAAc,iBAAoBP,EAAQG,MAAQ,YAC/EmJ,GAAQ,UAGRtJ,EAAQqgB,SAER/W,GAAQ,6CAAkD/I,EAAc,sBAG5E+I,GAAQ,eAAkB/I,EAAc,qBAAwBP,EAAQ6d,SAEpE7d,EAAQugB,QAAoC,gBAAnBvgB,GAAQugB,UAEjCjX,GAAQ,eAAkB/I,EAAc,mBAAkD,iBAAnBP,GAAQugB,OAAwB,GAAKvgB,EAAQugB,QAAU,UAGlIjX,GAAQ,SAERA,GAAQ,eAAkB/I,EAAc,eAAiBA,EAAc,yBACvE+I,GAAQ,eAAkB/I,EAAc,eAAiBA,EAAc,0BACvE+I,GAAQ,SAERJ,EAAOW,OAAOP,EAEd,IAAInC,GAAS+B,EAAOyE,KAAK,IAAM+S,EAE/BvZ,GAAOmJ,WAAa,SAASG,GAMzB,MALIzQ,GAAQsQ,YAERlR,EAAE,aAAaqK,IAAI,WAAY,EAAS,SAAW,IAGhDtC,GAGXA,EAAOwZ,SAAW,WAKd,MAJI3gB,GAAQiK,MAERf,EAAOyE,KAAK,IAAMpN,EAAc,QAAQkJ,IAAIzJ,EAAQsgB,WAAW7W,IAAI,UAAWtK,EAASoJ,aAAe,GAAGqF,OAEtGzG,GAGXA,EAAOyZ,SAAW,WAMd,MALI5gB,GAAQiK,MAERf,EAAOyE,KAAK,IAAMpN,EAAc,QAAQwN,OAGrC5G,GAGXA,EAAO0Z,QAAU,SAASjT,GACtB,GAAIiT,GAAU1Z,EAAOwG,KAAK,IAAMpN,EAAc,cAG9C,OAFAsgB,GAAQ,EAAS,OAAS,UAEnB1Z,GAGXA,EAAOmJ,YAAW,GAAMqQ,WAExBxZ,EAAOyG,OAAOnE,KACVqX,OAAS3hB,EAASoJ,aAClB2N,OAAU/W,EAAc,MAAI,iBAAmB,GAC/C8B,MAAoC,gBAAnBjB,GAAQiB,MAAuBjB,EAAQiB,MAAQ,KAAQjB,EAAQiB,MAChFC,OAAoC,gBAAnBlB,GAAQkB,OAAuBlB,EAAQkB,OAAS,KAAOlB,EAAQkB,QAGpF,IAAI6f,GAAiB,WACjB5Z,EAAOsC,KACH0E,KAAU/O,EAAEF,QAAQgC,SAAWiG,EAAOjG,UAAY,EAAI,KACtDqN,MAAUnP,EAAEF,QAAQ+B,QAAUkG,EAAOlG,SAAW,EAAI,OAY5D,IARA8f,IAEA3hB,EAAEF,QAAQ2O,OAAOkT,GAEjB5Z,EAAOwC,SAAS,IAAMpJ,EAAc,gBAAgBiO,KAAKe,EAAa,QAAS,YAAa,WACxFpI,EAAO4G,OAAOuC,YAAW,GAAOsQ,aAGN,gBAAnB5gB,GAAQ+G,QACnB,CACI,GAAIwZ,GAASpZ,EAAOoZ,OAASpZ,EAAOwG,KAAK,IAAMpN,EAAc,gBAE7D,KAAK,GAAImM,KAAO1M,GAAQ+G,QACxB,CACI,GAAIia,GAAMhhB,EAAQ+G,QAAQ2F,GACtBuU,EAAe1gB,EAAcmM,EAAM,MAEvC6T,GAAO1W,OAAO,kBAAqBtJ,EAAc,OAAS0gB,EAAe,KAAQD,EAAI,GAAK,aAC1FA,EAAI,GAAK5hB,EAAE8N,MAAM8T,EAAI,GAAI7Z,GACzBoZ,EAAO5W,SAAS,IAAMsX,GAAczS,KAAKe,EAAa,QAAS,YAAayR,EAAI,KAIxF,GAAsB,KAAlBhhB,EAAQG,OAAgBH,EAAQogB,KACpC,CACI,GAAIc,GAAMC,EACNC,EAAeja,EAAOwC,SAAS,IAAMpJ,EAAc,gBAElDP,GAAQiK,MACTmX,EAAa5S,KAAKe,EAAa,QAAS,YAAa,WACjDpQ,EAASoJ,cAAgB,EACzBpB,EAAOsC,IAAI,UAAWtK,EAASoJ,gBAIvC6Y,EAAaC,UAAU,SAAS9E,GAC5BA,EAAIA,GAAKrd,OAAOqS,MAChB2P,EAAO3E,EAAE+E,QAAU9K,SAASrP,EAAO,GAAGoa,MAAMhT,MAC5C4S,EAAO5E,EAAEiF,QAAUhL,SAASrP,EAAO,GAAGoa,MAAMpT,KAE5CkR,SAASoC,YAAcC,GAG3B,IAAIC,GAAgB,SAAUC,GAC1BA,EAAItM,YAAY/U,EAAc,iBAAiBkN,IAAI,gBAGnDoU,EAAe,SAAUD,GACzBA,EAAIpY,SAASjJ,EAAc,iBAAiB+M,GAAG,cAAe,WAC1D,OAAO,KAIXoU,EAAa,SAAUnF,GACvBA,EAAIA,GAAKrd,OAAOqS,KAEhB,IAAIhD,GAAMJ,EAAK2T,EAAUtL,SAASrP,EAAO,GAAGoa,MAAMhT,MAAOwT,EAASvL,SAASrP,EAAO,GAAGoa,MAAMpT,IAEvF2T,IAAW,EACPA,EAAU3a,EAAOlG,SAAW7B,EAAEF,QAAQ+B,QACtCsN,EAAOgO,EAAE+E,QAAUJ,GAEnB3S,EAAOnP,EAAEF,QAAQ+B,QAAUkG,EAAOlG,QAClCoe,SAASoC,YAAc,OAG3BlT,EAAO,EACP8Q,SAASoC,YAAc,MAGvBM,GAAU,EACV5T,EAAMoO,EAAEiF,QAAUL,GAElBhT,EAAM,EACNkR,SAASoC,YAAc,MAI3BpC,SAAS2C,cAAgB,WACrB,OAAO,GAGXH,EAAaziB,EAAE,SACfyiB,EAAa1a,GACbA,EAAO,GAAGoa,MAAMhT,KAAOA,EAAO,KAC9BpH,EAAO,GAAGoa,MAAMpT,IAAOA,EAAM,KAGjCkR,UAAS4C,UAAY,WACjBN,EAAcviB,EAAE,SAChBuiB,EAAcxa,GAEdkY,SAAS2C,cAAgB,KACzB3C,SAASoC,YAAc,MAG3BL,EAAac,eAAiB,WAC1B,GAAI7T,GAAS,KACT8T,EAAS,SAAS5F,GAClB,GAAI6F,GAAO7F,EAAE8F,cACTC,EAAOljB,EAAE6J,MAAMoM,SAAS/G,UAE5BD,IACIuN,EAAIwG,EAAKG,eAAe,GAAGC,MAAQF,EAAI/T,KACvCkU,EAAIL,EAAKG,eAAe,GAAGG,MAAQJ,EAAInU,MAI3CwU,EAAO,SAASpG,GAChBA,EAAEqG,gBACF,IAAIR,GAAO7F,EAAE8F,aAEbjjB,GAAE6J,MAAMoM,SAAS5L,KACb0E,IAAOiU,EAAKG,eAAe,GAAGG,MAAQrU,EAAOoU,EAC7ClU,KAAO6T,EAAKG,eAAe,GAAGC,MAAQnU,EAAOuN,IAIrD3S,MAAKuF,KAAK,aAAc2T,GAAO3T,KAAK,YAAamU,IAGrDvB,EAAac,iBAKjB,MAFA/iB,GAASoJ,cAAgB,EAElBpB,GAYXhI,EAASoQ,aAAe,SAASsT,EAAgBC,GAC7CD,EAAiBA,GAAkB,QACnCC,EAAiBA,GAAkB,UAEnC,IAAIvV,GAAasV,CAEjB,KAEIxD,SAAS0D,YAAY,cACrBxV,EAAYuV,EAEhB,MAAMvG,IAGN,MAAOhP,IAWXpO,EAASoY,WAAa,SAASyL,GAC3BA,EAAcA,GAAU,EAExB,IAAIC,GAAU,SAASC,GACnB,MAAY,IAAJA,EAAU,IAAMA,EAAIA,GAG5BC,EAAU,GAAI9L,MACd+L,EAAUD,EAAKE,cACfC,EAAUF,EAAKG,WAAWC,MAAM,EAAG,GACnCC,EAAUR,EAAQE,EAAKO,WAAa,GACpCC,EAAUV,EAAQE,EAAKS,WACvBC,EAAUV,EAAKW,SACfC,EAAUd,EAAQE,EAAKa,YACvBC,EAAUhB,EAAQE,EAAKe,cACvBC,EAAUlB,EAAQE,EAAKiB,cACvBC,EAAUpB,EAAQE,EAAKmB,mBACvBhN,EAAU,GAEViN,EAAUjB,EAAQ,IAAMG,EAAQ,IAAME,EACtCa,EAAUpB,EAAQ,IAAMK,EAAQ,IAAME,EACtCc,EAAUV,EAAQ,IAAME,EAAQ,IAAME,CAE1C,QAAQnB,GAEJ,IAAK,YACG1L,EAAU6L,EAAK1C,SACnB,MAEJ,KAAK,MACGnJ,EAAU6L,EAAKuB,aACnB,MAEJ,KAAK,KACGpN,EAAUgM,CACd,MAEJ,KAAK,OACL,IAAK,OACGhM,EAAU8L,CACd,MAEJ,KAAK,QACL,IAAK,KACG9L,EAAUmM,CACd,MAEJ,KAAK,cACL,IAAK,QACG,GAAIkB,IAAc,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChDrN,GAAU,KAAOqN,EAAWd,EAChC,MAEJ,KAAK,WACL,IAAK,KACG,GAAIe,IAAY,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,WAClFtN,GAAUsN,EAASf,EACvB,MAEJ,KAAK,MACL,IAAK,KACGvM,EAAUqM,CACd,MAEJ,KAAK,OACL,IAAK,KACGrM,EAAUyM,CACd,MAEJ,KAAK,MACL,IAAK,KACGzM,EAAU2M,CACd,MAEJ,KAAK,SACL,IAAK,KACG3M,EAAU6M,CACd,MAEJ,KAAK,KACG7M,EAAU+M,CACd,MAEJ,KAAK,WACG/M,EAAUiN,CACd,MAEJ,KAAK,aACGjN,EAAUkN,CACd,MAEJ,KAAK,sBACL,IAAK,YACGlN,EAAUkN,EAAO,IAAMC,EAAM,IAAMJ,CACvC,MAEJ,KAAK,OACL,IAAK,mBACD,QACI/M,EAAUkN,EAAO,IAAMC,EAInC,MAAOnN,IAGJnY","sourceRoot":"./"}
\ No newline at end of file
diff --git a/editormd.js b/editormd.js
index eb5e21b1..40fe9c2f 100644
--- a/editormd.js
+++ b/editormd.js
@@ -2,12 +2,12 @@
* Editor.md
*
* @file editormd.js
- * @version v1.3.0
- * @description A simple online markdown editor.
+ * @version v1.4.0
+ * @description Open source online markdown editor.
* @license MIT License
* @author Pandao
* {@link https://github.com/pandao/editor.md}
- * @updateTime 2015-03-12
+ * @updateTime 2015-03-23
*/
;(function(factory) {
@@ -35,14 +35,6 @@
}
}(function() {
-
- /**
- * editormd
- *
- * @param {String} id 编辑器的ID
- * @param {Object} options 配置选项 Key/Value
- * @returns {Object} editormd 返回editormd对象
- */
/* Require.js assignment replace */
@@ -54,12 +46,20 @@
return ;
}
+ /**
+ * editormd
+ *
+ * @param {String} id 编辑器的ID
+ * @param {Object} options 配置选项 Key/Value
+ * @returns {Object} editormd 返回editormd对象
+ */
+
var editormd = function (id, options) {
return new editormd.fn.init(id, options);
};
editormd.title = editormd.$name = "Editor.md";
- editormd.version = "1.3.0";
+ editormd.version = "1.4.0";
editormd.homePage = "https://pandao.github.io/editor.md/";
editormd.classPrefix = "editormd-";
@@ -69,8 +69,8 @@
"bold", "del", "italic", "quote", "ucwords", "uppercase", "lowercase", "|",
"h1", "h2", "h3", "h4", "h5", "h6", "|",
"list-ul", "list-ol", "hr", "|",
- "link", "anchor", "image", "code", "preformatted-text", "code-block", "table", "datetime", "emoji", "htmlEntities", "|",
- "watch", "preview", "fullscreen", "clear", "|",
+ "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 : [
@@ -93,17 +93,20 @@
theme : "default",
value : "", // value for CodeMirror, if mode not gfm/markdown
markdown : "",
+ appendMarkdown : "", // if in init textarea value not empty, append markdown to textarea
width : "100%",
height : "100%",
path : "./lib/", // Dependents module file directory
- pluginPath : "", // If this empty, default use settings.path + "../plugins/"
- autoLoadModules : true, // Automatic load dependent module files
+ pluginPath : "", // If this empty, default use settings.path + "../plugins/"
+ delay : 300,
+ autoLoadModules : true, // Automatic load dependent module files
watch : true,
- placeholder : "now coding markdown...",
+ placeholder : "Enjoy Markdown! coding now...",
+ gotoLine : true,
codeFold : false,
autoHeight : false,
autoCloseTags : true,
- searchReplace : false,
+ searchReplace : true,
readOnly : false,
lineNumbers : true,
matchWordHighlight : true, // options: true, false, "onselected"
@@ -136,8 +139,13 @@
uploadCallbackURL : "",
toc : true, // Table of contents
+ tocm : false, // Using [TOCM], auto create ToC dropdown menu
+ tocTitle : "", // for ToC dropdown menu btn
+ tocDropdown : false,
+ tocContainer : "",
tocStartLevel : 1, // Said from H1 to create ToC
- htmlDecode : false, // Open the HTML tag identification
+ htmlDecode : false, // Open the HTML tag identification
+ pageBreak : true, // Enable parse page break [========]
atLink : true, // for @link
emailLink : true, // for email address auto link
taskList : false, // Enable Github Flavored Markdown task lists
@@ -151,9 +159,7 @@
toolbar : true, // show/hide toolbar
toolbarAutoFixed : true, // on window scroll auto fixed position
- toolbarIcons : function() {
- return editormd.toolbarModes.full; // return array
- },
+ toolbarIcons : "full",
toolbarTitles : {},
toolbarHandlers : {
ucwords : function() {
@@ -185,7 +191,7 @@
"list-ol" : "fa-list-ol",
hr : "fa-minus",
link : "fa-link",
- anchor : "fa-anchor",
+ "reference-link" : "fa-anchor",
image : "fa-picture-o",
code : "fa-code",
"preformatted-text" : "fa-file-code-o",
@@ -193,10 +199,13 @@
table : "fa-table",
datetime : "fa-clock-o",
emoji : "fa-smile-o",
- htmlEntities : "fa-copyright",
+ "html-entities" : "fa-copyright",
+ pagebreak : "fa-newspaper-o",
+ "goto-line" : "fa-terminal", // fa-crosshairs
watch : "fa-eye-slash",
unwatch : "fa-eye",
- preview : "fa-search",
+ preview : "fa-desktop",
+ search : "fa-search",
fullscreen : "fa-arrows-alt",
clear : "fa-eraser",
help : "fa-question-circle",
@@ -206,7 +215,8 @@
lang : {
name : "zh-cn",
- description : "开源在线Markdown编辑器
A simple markdown doucment online editor.",
+ description : "开源在线Markdown编辑器
Open source online Markdown editor.",
+ tocTitle : "目录",
toolbar : {
undo : "撤销(Ctrl+Z)",
redo : "重做(Ctrl+Y)",
@@ -227,7 +237,7 @@
"list-ol" : "有序列表",
hr : "横线",
link : "链接",
- anchor : "锚点",
+ "reference-link" : "引用链接",
image : "添加图片",
code : "行内代码",
"preformatted-text" : "预格式文本 / 代码块(缩进风格)",
@@ -235,12 +245,15 @@
table : "添加表格",
datetime : "日期时间",
emoji : "Emoji表情",
- htmlEntities : "HTML实体字符",
+ "html-entities" : "HTML实体字符",
+ pagebreak : "插入分页符",
+ "goto-line" : "跳转到行",
watch : "关闭实时预览",
unwatch : "开启实时预览",
- preview : "全窗口预览HTML(可按ESC还原)",
+ preview : "全窗口预览HTML(按 Shift + ESC还原)",
fullscreen : "全屏(按ESC还原)",
clear : "清空",
+ search : "搜索",
help : "使用帮助",
info : "关于" + editormd.title
},
@@ -256,14 +269,15 @@
urlTitle : "链接标题",
urlEmpty : "错误:请填写链接地址。"
},
- anchor : {
- title : "添加锚点链接",
- name : "锚点名称",
+ referenceLink : {
+ title : "添加引用链接",
+ name : "引用名称",
url : "链接地址",
+ urlId : "链接ID",
urlTitle : "链接标题",
- nameEmpty: "错误:锚点名称不能为空。",
- titleEmpty : "错误:请填写锚点链接标题。",
- urlEmpty : "错误:请填写锚点链接地址。"
+ nameEmpty: "错误:引用链接的名称不能为空。",
+ idEmpty : "错误:请填写引用链接的ID。",
+ urlEmpty : "错误:请填写引用链接的URL地址。"
},
image : {
title : "添加图片",
@@ -307,6 +321,8 @@
editormd.$marked = null;
editormd.$CodeMirror = null;
editormd.$prettyPrint = null;
+
+ var timer, flowchartTimer;
editormd.prototype = editormd.fn = {
state : {
@@ -329,22 +345,30 @@
options = options || {};
+ if (typeof id === "object")
+ {
+ options = id;
+ }
+
var _this = this;
- var classPrefix = this.classPrefix = editormd.classPrefix;
- var editor = this.editor = $("#" + id);
+ var classPrefix = this.classPrefix = editormd.classPrefix;
var settings = this.settings = $.extend(true, editormd.defaults, options);
+ 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 : this.classPrefix + "html-textarea",
- markdown : this.classPrefix + "markdown-textarea"
+ html : classPrefix + "html-textarea",
+ markdown : classPrefix + "markdown-textarea"
}
};
- settings.pluginPath = (settings.pluginPath === "") ? this.settings.path + "../plugins/" : settings.pluginPath;
+ settings.pluginPath = (settings.pluginPath === "") ? settings.path + "../plugins/" : settings.pluginPath;
this.state.watching = (settings.watch) ? true : false;
@@ -382,16 +406,22 @@
editor.append(appendElements).addClass(classPrefix + "vertical");
- this.mask = editor.children("." + classPrefix + "mask");
+ this.mask = editor.children("." + classPrefix + "mask");
+ this.containerMask = editor.children("." + classPrefix + "container-mask");
if (settings.markdown !== "")
{
markdownTextarea.val(settings.markdown);
}
- this.htmlTextarea = editor.children("." + classNames.textarea.html);
- this.preview = editor.children("." + classPrefix + "preview");
- this.previewContainer = this.preview.children("." + classPrefix + "preview-container");
+ 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 (typeof define === "function" && define.amd)
{
@@ -400,7 +430,7 @@
editormd.$katex = katex;
}
- if (settings.searchReplace)
+ if (settings.searchReplace && !settings.readOnly)
{
editormd.loadCSS(settings.path + "codemirror/addon/dialog/dialog");
editormd.loadCSS(settings.path + "codemirror/addon/search/matchesonscrollbar");
@@ -409,12 +439,15 @@
if ((typeof define === "function" && define.amd) || !settings.autoLoadModules)
{
- if (typeof CodeMirror !== "undefined") editormd.$CodeMirror = CodeMirror;
- if (typeof marked !== "undefined") editormd.$marked = marked;
+ if (typeof CodeMirror !== "undefined") {
+ editormd.$CodeMirror = CodeMirror;
+ }
- _this.setCodeMirror();
- _this.setToolbar();
- _this.loadedDisplay();
+ if (typeof marked !== "undefined") {
+ editormd.$marked = marked;
+ }
+
+ this.setCodeMirror().setToolbar().loadedDisplay();
}
else
{
@@ -487,7 +520,7 @@
editormd.loadCSS(loadPath + "codemirror/codemirror.min");
- if (settings.searchReplace)
+ if (settings.searchReplace && !settings.readOnly)
{
editormd.loadCSS(loadPath + "codemirror/addon/dialog/dialog");
editormd.loadCSS(loadPath + "codemirror/addon/search/matchesonscrollbar");
@@ -589,7 +622,11 @@
indentUnit : 4,
lineNumbers : settings.lineNumbers,
lineWrapping : true,
- extraKeys : {"Ctrl-Q": function(cm){ cm.foldCode(cm.getCursor()); }},
+ extraKeys : {
+ "Ctrl-Q": function(cm) {
+ cm.foldCode(cm.getCursor());
+ }
+ },
foldGutter : settings.codeFold,
gutters : ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
matchBrackets : true,
@@ -598,7 +635,7 @@
styleSelectedText : true,
autoCloseBrackets : true,
showTrailingSpace : true,
- highlightSelectionMatches : ( (!settings.matchWordHighlight) ? false : { showToken: (settings.matchWordHighlight == "onselected") ? false : /\w/ } )
+ highlightSelectionMatches : ( (!settings.matchWordHighlight) ? false : { showToken: (settings.matchWordHighlight === "onselected") ? false : /\w/ } )
};
this.codeEditor = this.cm = editormd.$CodeMirror.fromTextArea(this.markdownTextarea[0], codeMirrorConfig);
@@ -648,18 +685,116 @@
return this;
},
+ /**
+ * 添加 CodeMirror 键盘快捷键
+ * Add CodeMirror keyboard shortcuts key map
+ *
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
addKeyMap : function(map, bottom) {
this.cm.addKeyMap(map, bottom);
return this;
},
+ /**
+ * 移除 CodeMirror 键盘快捷键
+ * Remove CodeMirror keyboard shortcuts key map
+ *
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
removeKeyMap : function(map) {
this.cm.removeKeyMap(map);
return this;
},
+ /**
+ * 跳转到指定的行
+ * Goto CodeMirror line
+ *
+ * @param {String|Intiger} line line number or "first"|"last"
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
+ 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 >= preview[0].scrollHeight)
+ {
+ preview.scrollTop(preview[0].scrollHeight);
+ }
+ else
+ {
+ preview.scrollTop(preview[0].scrollHeight * percent);
+ }
+ }
+
+ cm.focus();
+
+ return this;
+ },
+
/**
* 扩展当前实例对象,可同时设置多个或者只设置一个
* Extend editormd instance object, can mutil setting.
@@ -667,10 +802,10 @@
* @returns {editormd} this(editormd instance object.)
*/
- extends : function() {
+ extend : function() {
if (typeof arguments[1] !== "undefined")
{
- if (typeof arguments[1] == "function")
+ if (typeof arguments[1] === "function")
{
arguments[1] = $.proxy(arguments[1], this);
}
@@ -697,7 +832,7 @@
set : function (key, value) {
- if (typeof value !== "undefined" && typeof value == "function")
+ if (typeof value !== "undefined" && typeof value === "function")
{
value = $.proxy(value, this);
}
@@ -719,12 +854,12 @@
config : function(key, value) {
var settings = this.settings;
- if (typeof key == "object")
+ if (typeof key === "object")
{
settings = $.extend(true, settings, key);
}
- if (typeof key == "string")
+ if (typeof key === "string")
{
settings[key] = value;
}
@@ -785,7 +920,9 @@
showToolbar : function(callback) {
var settings = this.settings;
- if(settings.readOnly) return ;
+ if(settings.readOnly) {
+ return this;
+ }
if (settings.toolbar && (this.toolbar.length < 1 || this.toolbar.find("." + this.classPrefix + "menu").html() === "") )
{
@@ -842,7 +979,8 @@
}
var autoFixedHandle = function(){
- var top = $(window).scrollTop();
+ var $window = $(window);
+ var top = $window.scrollTop();
if (!settings.toolbarAutoFixed)
{
@@ -854,7 +992,7 @@
toolbar.css({
position : "fixed",
width : editor.width() + "px",
- left : ($(window).width() - editor.width()) / 2 + "px"
+ left : ($window.width() - editor.width()) / 2 + "px"
});
}
else
@@ -871,11 +1009,6 @@
{
$(window).bind("scroll", autoFixedHandle);
}
-
- if (!settings.toolbarAutoFixed)
- {
- $(window).unbind("scroll", autoFixedHandle);
- }
return this;
},
@@ -890,7 +1023,9 @@
setToolbar : function() {
var settings = this.settings;
- if(settings.readOnly) return ;
+ if(settings.readOnly) {
+ return this;
+ }
var editor = this.editor;
var preview = this.preview;
@@ -900,15 +1035,17 @@
if (settings.toolbar && toolbar.length < 1)
{
- editor.append('');
- toolbar = this.toolbar = editor.children("." + classPrefix + "toolbar");
+ var toolbarHTML = "";
+
+ editor.append(toolbarHTML);
+ toolbar = this.toolbar = editor.children("." + classPrefix + "toolbar");
}
if (!settings.toolbar)
{
toolbar.hide();
- return ;
+ return this;
}
toolbar.show();
@@ -941,14 +1078,14 @@
menu += "- ";
- if (typeof settings.toolbarCustomIcons[name] !== "undefined")
+ if (typeof settings.toolbarCustomIcons[name] !== "undefined" && typeof settings.toolbarCustomIcons[name] !== "function")
{
menu += settings.toolbarCustomIcons[name];
}
else
{
menu += "" +
- ""+((isHeader) ? name : ( (iconClass === "") ? iconTexts : "") ) + "" +
+ ""+((isHeader) ? name.toUpperCase() : ( (iconClass === "") ? iconTexts : "") ) + "" +
"";
}
@@ -1010,16 +1147,12 @@
var settings = this.settings;
if (!settings.toolbar || settings.readOnly) {
- return ;
+ return this;
}
- var editor = this.editor;
- var preview = this.preview;
var toolbar = this.toolbar;
- var codeEditor = this.codeEditor;
- var codeMirror = this.codeMirror;
- var classPrefix = this.classPrefix;
- var previewContainer = this.previewContainer;
+ var cm = this.cm;
+ var classPrefix = this.classPrefix;
var toolbarIcons = this.toolbarIcons = toolbar.find("." + classPrefix + "menu > li > a");
var toolbarIconHandlers = this.getToolbarHandles();
@@ -1027,8 +1160,8 @@
var icon = $(this).children(".fa");
var name = icon.attr("name");
- var cursor = codeEditor.getCursor();
- var selection = codeEditor.getSelection();
+ var cursor = cm.getCursor();
+ var selection = cm.getSelection();
if (name === "") {
return ;
@@ -1038,20 +1171,20 @@
if (typeof toolbarIconHandlers[name] !== "undefined")
{
- $.proxy(toolbarIconHandlers[name], _this)(codeEditor);
+ $.proxy(toolbarIconHandlers[name], _this)(cm);
}
else
{
if (typeof settings.toolbarHandlers[name] !== "undefined")
{
- $.proxy(settings.toolbarHandlers[name], _this)(codeEditor, icon, cursor, selection);
+ $.proxy(settings.toolbarHandlers[name], _this)(cm, icon, cursor, selection);
}
}
- if (name !== "link" && name !== "anchor" && name !== "image" && name !== "code-block" &&
- name !== "preformatted-text" && name !== "watch" && name !== "preview" && name !== "fullscreen" && name !== "info")
+ if (name !== "link" && name !== "reference-link" && name !== "image" && name !== "code-block" &&
+ name !== "preformatted-text" && name !== "watch" && name !== "preview" && name !== "search" && name !== "fullscreen" && name !== "info")
{
- codeEditor.focus();
+ cm.focus();
}
return false;
@@ -1090,8 +1223,8 @@
"",
"",
""
@@ -1149,9 +1282,8 @@
var _this = this;
var editor = this.editor;
- var settings = this.settings;
- var classPrefix = this.classPrefix;
- var infoDialog = this.infoDialog = editor.children("." + classPrefix + "dialog-info");
+ var settings = this.settings;
+ var infoDialog = this.infoDialog = editor.children("." + this.classPrefix + "dialog-info");
if (infoDialog.length < 1)
{
@@ -1213,22 +1345,13 @@
var _this = this;
var editor = this.editor;
var settings = this.settings;
- var toolbarIcons = settings.toolbarIcons();
this.codeMirror.remove();
this.setCodeMirror();
-
- if (typeof this.infoDialog !== "undefined") {
- this.infoDialog.remove();
- }
-
- if (typeof toolbarIcons["info"] !== "undefined") {
- createInfoDialog();
- }
if (!settings.readOnly)
- {
+ {
if (editor.find(".editormd-dialog").length > 0) {
editor.find(".editormd-dialog").remove();
}
@@ -1240,9 +1363,7 @@
}
}
- this.saveToTextareas();
- this.resize();
- this.registerKeyMaps();
+ this.loadedDisplay(true);
return this;
},
@@ -1280,9 +1401,12 @@
katexRender : function() {
- var previewContainer = this.previewContainer;
+ if (timer === null)
+ {
+ return this;
+ }
- previewContainer.find("." + editormd.classNames.tex).each(function(){
+ this.previewContainer.find("." + editormd.classNames.tex).each(function(){
var tex = $(this);
editormd.$katex.render(tex.html(), tex[0]);
});
@@ -1302,9 +1426,15 @@
var settings = this.settings;
var previewContainer = this.previewContainer;
- if (editormd.isIE8) return ;
+ if (editormd.isIE8) {
+ return this;
+ }
if (settings.flowChart) {
+ if (flowchartTimer === null) {
+ return this;
+ }
+
previewContainer.find(".flowchart").flowChart();
}
@@ -1324,17 +1454,20 @@
*/
registerKeyMaps : function(keyMap) {
- keyMap = keyMap || null;
- var _this = this;
- var cm = this.cm;
- var settings = this.settings;
+ 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, settings.disabledKeyMaps) < 0)
+ if ($.inArray(i, disabledKeyMaps) < 0)
{
var map = {};
map[i] = keyMap[i];
@@ -1345,17 +1478,17 @@
}
else
{
- for (var i in editormd.keyMaps)
+ for (var k in editormd.keyMaps)
{
- var keyMap = editormd.keyMaps[i];
- var handle = (typeof keyMap === "string") ? $.proxy(editormd.toolbarHandlers[keyMap], _this) : $.proxy(keyMap, _this);
+ var _keyMap = editormd.keyMaps[k];
+ var handle = (typeof _keyMap === "string") ? $.proxy(toolbarHandlers[_keyMap], _this) : $.proxy(_keyMap, _this);
- if ($.inArray(i, ["F9", "F10", "F11"]) < 0 && $.inArray(i, settings.disabledKeyMaps) < 0)
+ if ($.inArray(k, ["F9", "F10", "F11"]) < 0 && $.inArray(k, disabledKeyMaps) < 0)
{
- var map = {};
- map[i] = handle;
+ var _map = {};
+ _map[k] = handle;
- cm.addKeyMap(map);
+ cm.addKeyMap(_map);
}
}
@@ -1367,22 +1500,23 @@
"122" : "F11"
};
- if ( $.inArray(keymaps[event.keyCode], settings.disabledKeyMaps) < 0 )
+ if ( $.inArray(keymaps[event.keyCode], disabledKeyMaps) < 0 )
{
switch (event.keyCode)
{
case 120:
- $.proxy(editormd.toolbarHandlers["watch"], _this)();
+ $.proxy(toolbarHandlers["watch"], _this)();
return false;
break;
case 121:
- $.proxy(editormd.toolbarHandlers["preview"], _this)();
+ $.proxy(toolbarHandlers["preview"], _this)();
return false;
break;
case 122:
- $.proxy(editormd.toolbarHandlers["fullscreen"], _this)();
+ $.proxy(toolbarHandlers["fullscreen"], _this)();
+ return false;
break;
default:
@@ -1395,42 +1529,15 @@
return this;
},
- /**
- * 加载队列完成之后的显示处理
- * Display handle of the module queues loaded after.
- *
- * @returns {editormd} 返回editormd的实例对象
- */
-
- loadedDisplay : function() {
+ bindScrollEvent : function() {
var _this = this;
- var editor = this.editor;
var preview = this.preview;
var settings = this.settings;
- var codeEditor = this.codeEditor;
var codeMirror = this.codeMirror;
- var previewContainer = this.previewContainer;
var mouseOrTouch = editormd.mouseOrTouch;
-
- editor.children("." + this.classPrefix + "container-mask").hide();
-
- this.saveToTextareas();
-
- if(settings.watch) {
- preview.show();
- }
-
- editor.data("oldWidth", editor.width()).data("oldHeight", editor.height()); // 为了兼容Zepto
-
- this.resize();
- this.registerKeyMaps();
-
- $(window).resize(function(){
- _this.resize();
- });
- var codeEditorBindScroll = function() {
+ var cmBindScroll = function() {
codeMirror.find(".CodeMirror-scroll").bind(mouseOrTouch("scroll", "touchmove"), function(event) {
var height = $(this).height();
var scrollTop = $(this).scrollTop();
@@ -1449,36 +1556,38 @@
preview.scrollTop(preview[0].scrollHeight * percent);
}
- $.proxy(settings.onscroll, this)(event);
+ $.proxy(settings.onscroll, _this)(event);
});
};
- var codeEditorUnbindScroll = function() {
+ var cmUnbindScroll = function() {
codeMirror.find(".CodeMirror-scroll").unbind(mouseOrTouch("scroll", "touchmove"));
};
var previewBindScroll = function() {
- preview.bind(mouseOrTouch("scroll", "touchmove"), function() {
+
+ preview.bind(mouseOrTouch("scroll", "touchmove"), function(event) {
var height = $(this).height();
- var scrollTop = $(this).scrollTop();
+ 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);
+ $.proxy(settings.onpreviewscroll, _this)(event);
});
+
};
var previewUnbindScroll = function() {
@@ -1486,10 +1595,10 @@
};
codeMirror.bind({
- mouseover : codeEditorBindScroll,
- mouseout : codeEditorUnbindScroll,
- touchstart : codeEditorBindScroll,
- touchend : codeEditorUnbindScroll
+ mouseover : cmBindScroll,
+ mouseout : cmUnbindScroll,
+ touchstart : cmBindScroll,
+ touchend : cmUnbindScroll
});
preview.bind({
@@ -1499,12 +1608,72 @@
touchend : previewUnbindScroll
});
- codeEditor.on("change", function(cm, changeObj) {
- _this.previewContainer.css("padding-left", settings.autoHeight && $("body").height() > $(window).height() ? "30px" : "20px");
- _this.saveToTextareas();
+ return this;
+ },
+
+ bindChangeEvent : function() {
+
+ var _this = this;
+ var cm = this.cm;
+ var settings = this.settings;
+
+ 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;
+ },
+
+ /**
+ * 加载队列完成之后的显示处理
+ * Display handle of the module queues loaded after.
+ *
+ * @param {Boolean} recreate 是否为重建编辑器
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
+ loadedDisplay : function(recreate) {
+
+ recreate = recreate || false;
+
+ var _this = this;
+ var editor = this.editor;
+ var preview = this.preview;
+ var settings = this.settings;
- $.proxy(settings.onload, this)();
+ this.containerMask.hide();
+
+ this.save();
+
+ if (settings.watch) {
+ preview.show();
+ }
+
+ editor.data("oldWidth", editor.width()).data("oldHeight", editor.height()); // 为了兼容Zepto
+
+ this.resize();
+ this.registerKeyMaps();
+
+ $(window).resize(function(){
+ _this.resize();
+ });
+
+ this.bindScrollEvent().bindChangeEvent();
+
+ if (!recreate)
+ {
+ $.proxy(settings.onload, this)();
+ }
this.state.loaded = true;
@@ -1562,14 +1731,11 @@
var preview = this.preview;
var toolbar = this.toolbar;
var settings = this.settings;
- var codeEditor = this.codeEditor;
var codeMirror = this.codeMirror;
- if(width)
- {
- editor.css({
- width : (typeof width === "number") ? width + "px" : width
- });
+ if (width)
+ {
+ editor.css("width", (typeof width === "number") ? width + "px" : width);
}
if (settings.autoHeight && !state.fullscreen && !state.preview)
@@ -1578,12 +1744,10 @@
codeMirror.css("height", "auto");
}
else
- {
- if(height)
- {
- editor.css({
- height : (typeof height === "number") ? height + "px" : height
- });
+ {
+ if (height)
+ {
+ editor.css("height", (typeof height === "number") ? height + "px" : height);
}
if (state.fullscreen)
@@ -1591,20 +1755,23 @@
editor.height($(window).height());
}
- if (settings.toolbar && !settings.readOnly) {
+ if (settings.toolbar && !settings.readOnly)
+ {
codeMirror.css("margin-top", toolbar.height() + 1).height(editor.height() - toolbar.height());
- } else {
+ }
+ else
+ {
codeMirror.css("margin-top", 0).height(editor.height());
}
}
- codeMirror.find(".CodeMirror-gutters").height(codeMirror.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());
@@ -1616,18 +1783,11 @@
if (settings.autoHeight && !state.fullscreen && !state.preview)
{
- preview.height("auto");
+ preview.height("");
}
else
{
- if (settings.toolbar && !settings.readOnly)
- {
- preview.height(editor.height() - toolbar.height());
- }
- else
- {
- preview.height(editor.height());
- }
+ preview.height((settings.toolbar && !settings.readOnly) ? editor.height() - toolbar.height() : editor.height());
}
}
else
@@ -1645,24 +1805,29 @@
},
/**
- * 分别将Markdown源码和解析的HTML源码保存到对应的textarea
- * Saving Markdown and HTML source code to Textarea
+ * 解析和保存Markdown代码
+ * Parse & Saving Markdown source code
*
- * @returns {editormd} 返回editormd的实例对象
+ * @returns {editormd} 返回editormd的实例对象
*/
- saveToTextareas : function() {
+ save : function() {
+
+ if (timer === null)
+ {
+ return this;
+ }
+
var _this = this;
var state = this.state;
var settings = this.settings;
- var codeEditor = this.codeEditor;
+ var cm = this.cm;
+ var cmValue = cm.getValue();
var previewContainer = this.previewContainer;
-
- var codeMirrorValue = codeEditor.getValue();
if (settings.mode !== "gfm" && settings.mode !== "markdown")
{
- this.markdownTextarea[0].innerText = codeMirrorValue;
+ this.markdownTextarea.val(cmValue);
return this;
}
@@ -1671,7 +1836,9 @@
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,
@@ -1695,13 +1862,13 @@
marked.setOptions(markedOptions);
- codeMirrorValue = editormd.filterHTMLTags(codeMirrorValue, settings.htmlDecode);
+ cmValue = editormd.filterHTMLTags(cmValue, settings.htmlDecode);
- var newMarkdownDoc = editormd.$marked(codeMirrorValue, markedOptions);
+ var newMarkdownDoc = editormd.$marked(cmValue, markedOptions);
- this.markdownTextarea[0].innerText = codeMirrorValue;
+ this.markdownTextarea.val(cmValue);
- codeEditor.save();
+ cm.save();
if (settings.saveHTMLToTextarea)
{
@@ -1713,9 +1880,30 @@
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.toc) {
- editormd.markdownToCRenderer(markdownToC, previewContainer, settings.tocStartLevel);
+ if (settings.tocContainer !== "")
+ {
+ previewContainer.find(".markdown-toc").css("border", "none");
+ }
}
if (settings.tex)
@@ -1737,9 +1925,10 @@
if (settings.flowChart || settings.sequenceDiagram)
{
- var timer = setTimeout(function(){
- clearTimeout(timer);
+ flowchartTimer = setTimeout(function(){
+ clearTimeout(flowchartTimer);
_this.flowChartAndSequenceDiagramRender();
+ flowchartTimer = null;
}, 10);
}
@@ -1760,7 +1949,7 @@
*/
focus : function() {
- this.codeEditor.focus();
+ this.cm.focus();
return this;
},
@@ -1774,7 +1963,7 @@
*/
setCursor : function(cursor) {
- this.codeEditor.setCursor(cursor);
+ this.cm.setCursor(cursor);
return this;
},
@@ -1787,7 +1976,7 @@
*/
getCursor : function() {
- return this.codeEditor.getCursor();
+ return this.cm.getCursor();
},
/**
@@ -1801,7 +1990,7 @@
setSelection : function(from, to) {
- this.codeEditor.setSelection(from, to);
+ this.cm.setSelection(from, to);
return this;
},
@@ -1814,7 +2003,7 @@
*/
getSelection : function() {
- return this.codeEditor.getSelection();
+ return this.cm.getSelection();
},
/**
@@ -1851,7 +2040,7 @@
*/
replaceSelection : function(value) {
- this.codeEditor.replaceSelection(value);
+ this.cm.replaceSelection(value);
return this;
},
@@ -1873,6 +2062,23 @@
return this;
},
+ /**
+ * 追加markdown
+ * append Markdown to editor
+ *
+ * @param {String} md 要追加的markdown源文档
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
+ appendMarkdown : function(md) {
+ var settings = this.settings;
+ var cm = this.cm;
+
+ cm.setValue(cm.getValue() + md);
+
+ return this;
+ },
+
/**
* 设置和传入编辑器的markdown源文档
* Set Markdown source document
@@ -1881,10 +2087,8 @@
* @returns {editormd} 返回editormd的实例对象
*/
- setMarkdown : function(md) {
- var settings = this.settings;
-
- this.codeEditor.setValue(md || settings.markdown);
+ setMarkdown : function(md) {
+ this.cm.setValue(md || this.settings.markdown);
return this;
},
@@ -1897,7 +2101,7 @@
*/
getMarkdown : function() {
- return this.codeEditor.getValue();
+ return this.cm.getValue();
},
/**
@@ -1908,7 +2112,7 @@
*/
getValue : function() {
- return this.codeEditor.getValue();
+ return this.cm.getValue();
},
/**
@@ -1920,7 +2124,7 @@
*/
setValue : function(value) {
- this.codeEditor.setValue(value);
+ this.cm.setValue(value);
return this;
},
@@ -1933,7 +2137,7 @@
*/
clear : function() {
- this.codeEditor.setValue("");
+ this.cm.setValue("");
return this;
},
@@ -1993,19 +2197,31 @@
*/
watch : function(callback) {
- var settings = this.settings;
+ var settings = this.settings;
+
+ if ($.inArray(settings.mode, ["gfm", "markdown"]) < 0)
+ {
+ return this;
+ }
+
this.state.watching = settings.watch = true;
this.preview.show();
- 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);
+ 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);
- this.saveToTextareas().resize();
+ timer = 0;
+
+ this.save().resize();
if (!settings.onwatch)
{
@@ -2029,11 +2245,11 @@
this.state.watching = settings.watch = false;
this.preview.hide();
- var watchIcon = settings.toolbarIconsClass.watch;
- var unWatchIcon = settings.toolbarIconsClass.unwatch;
-
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);
@@ -2107,7 +2323,11 @@
var settings = this.settings;
var codeMirror = this.codeMirror;
- if (settings.toolbar) {
+ if ($.inArray(settings.mode, ["gfm", "markdown"]) < 0) {
+ return this;
+ }
+
+ if (settings.toolbar && toolbar) {
toolbar.toggle();
toolbar.find(".fa[name=preview]").toggleClass("active");
}
@@ -2120,11 +2340,11 @@
}
};
- if(codeMirror.css("display") === "none") // 为了兼容Zepto,而不使用codeMirror.is(":hidden")
+ if (codeMirror.css("display") === "none") // 为了兼容Zepto,而不使用codeMirror.is(":hidden")
{
this.state.preview = true;
- if(this.state.fullscreen) {
+ if (this.state.fullscreen) {
preview.css("background", "#fff");
}
@@ -2132,9 +2352,9 @@
_this.previewed();
});
- if(!settings.watch)
+ if (!settings.watch)
{
- this.saveToTextareas();
+ this.save();
}
preview.show().css({
@@ -2171,22 +2391,17 @@
var preview = this.preview;
var toolbar = this.toolbar;
var settings = this.settings;
- var codeMirror = this.codeMirror;
var previewCloseBtn = editor.find("." + this.classPrefix + "preview-close-btn");
this.state.preview = false;
- codeMirror.show();
+ this.codeMirror.show();
if (settings.toolbar) {
toolbar.show();
}
-
- if(this.settings.watch) {
- preview.show();
- } else {
- preview.hide();
- }
+
+ preview[(settings.watch) ? "show" : "hide"]();
previewCloseBtn.hide().unbind(editormd.mouseOrTouch("click", "touchend"));
@@ -2216,9 +2431,11 @@
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) {
@@ -2228,7 +2445,7 @@
var escHandle = function(event) {
if (!event.shiftKey && event.keyCode === 27)
{
- if (_this.state.fullscreen)
+ if (state.fullscreen)
{
_this.fullscreenExit();
}
@@ -2237,7 +2454,7 @@
if (!editor.hasClass(fullscreenClass))
{
- this.state.fullscreen = true;
+ state.fullscreen = true;
$("html,body").css("overflow", "hidden");
@@ -2253,7 +2470,7 @@
this.resize();
- $.proxy(this.settings.onfullscreen, this)();
+ $.proxy(settings.onfullscreen, this)();
$(window).bind("keyup", escHandle);
}
@@ -2276,9 +2493,11 @@
fullscreenExit : function() {
var editor = this.editor;
+ var settings = this.settings;
var toolbar = this.toolbar;
- var fullscreenClass = this.classPrefix + "fullscreen";
- this.state.fullscreen = true;
+ var fullscreenClass = this.classPrefix + "fullscreen";
+
+ this.state.fullscreen = false;
if (toolbar) {
toolbar.find(".fa[name=fullscreen]").parent().removeClass("active");
@@ -2298,26 +2517,42 @@
this.resize();
- $.proxy(this.settings.onfullscreenExit, this)();
+ $.proxy(settings.onfullscreenExit, this)();
return this;
},
+ /**
+ * 加载并执行插件
+ * Load and execute the plugin
+ *
+ * @param {String} name plugin name / function name
+ * @param {String} path plugin load path
+ * @returns {editormd} 返回editormd的实例对象
+ */
+
executePlugin : function(name, path) {
var _this = this;
var cm = this.cm;
var settings = this.settings;
- if (typeof define == "function") {
+ 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 ;
+ return this;
}
- path = settings.pluginPath + path;
-
if ($.inArray(path, editormd.loadFiles.plugin) < 0)
{
editormd.loadPlugin(path, function() {
@@ -2329,23 +2564,77 @@
{
$.proxy(editormd.loadPlugins[name], this)(cm);
}
+
+ return this;
+ },
+
+ /**
+ * 搜索替换
+ * Search & replace
+ *
+ * @param {String} command CodeMirror serach commands, "find, fintNext, fintPrev, clearSearch, replace, replaceAll"
+ * @returns {editormd} 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;
-
+
+ /**
+ * 锁屏
+ * lock screen when dialog opening
+ *
+ * @returns {void}
+ */
+
editormd.dialogLockScreen = function() {
- var settings = this.settings;
+ var settings = this.settings || {dialogLockScreen : true};
if (settings.dialogLockScreen)
{
$("html,body").css("overflow", "hidden");
}
};
-
+
+ /**
+ * 显示透明背景层
+ * Display mask layer when dialog opening
+ *
+ * @param {Object} dialog dialog jQuery object
+ * @returns {void}
+ */
+
editormd.dialogShowMask = function(dialog) {
var editor = this.editor;
- var settings = this.settings;
+ var settings = this.settings || {dialogShowMask : true};
dialog.css({
top : ($(window).height() - dialog.height()) / 2 + "px",
@@ -2356,7 +2645,7 @@
editor.children("." + this.classPrefix + "mask").css("z-index", parseInt(dialog.css("z-index")) - 1).show();
}
};
-
+
editormd.toolbarHandlers = {
undo : function() {
this.cm.undo();
@@ -2542,12 +2831,43 @@
cm.replaceSelection("------------");
},
+ tex : function() {
+ if (!this.settings.tex)
+ {
+ alert("settings.tex === false");
+ return this;
+ }
+
+ var cm = this.cm;
+ var cursor = cm.getCursor();
+ var selection = cm.getSelection();
+
+ cm.replaceSelection("$$" + selection + "$$");
+
+ if(selection === "") {
+ cm.setCursor(cursor.line, cursor.ch + 2);
+ }
+ },
+
link : function() {
this.executePlugin("linkDialog", "link-dialog/link-dialog");
},
- anchor : function() {
- this.executePlugin("anchorLinkDialog", "anchor-link-dialog/anchor-link-dialog");
+ "reference-link" : function() {
+ this.executePlugin("referenceLinkDialog", "reference-link-dialog/reference-link-dialog");
+ },
+
+ pagebreak : function() {
+ if (!this.settings.pageBreak)
+ {
+ alert("settings.pageBreak === false");
+ return this;
+ }
+
+ var cm = this.cm;
+ var selection = cm.getSelection();
+
+ cm.replaceSelection("\r\n[========]\r\n");
},
image : function() {
@@ -2592,9 +2912,13 @@
this.executePlugin("emojiDialog", "emoji-dialog/emoji-dialog");
},
- htmlEntities : function() {
+ "html-entities" : function() {
this.executePlugin("htmlEntitiesDialog", "html-entities-dialog/html-entities-dialog");
},
+
+ "goto-line" : function() {
+ this.executePlugin("gotoLineDialog", "goto-line-dialog/goto-line-dialog");
+ },
watch : function() {
this[this.settings.watch ? "unwatch" : "watch"]();
@@ -2611,6 +2935,10 @@
clear : function() {
this.clear();
},
+
+ search : function() {
+ this.search();
+ },
help : function() {
this.executePlugin("helpDialog", "help-dialog/help-dialog");
@@ -2622,25 +2950,25 @@
};
editormd.keyMaps = {
- "Ctrl-B" : "bold", // if this is string == editormd.toolbarHandlers.xxxx
- "Ctrl-I" : "italic",
- "Ctrl-K" : "code",
- "Shift-Ctrl-C" : "code",
- "Shift-Ctrl-Q" : "quote",
- "Shift-Ctrl-S" : "del",
- "Ctrl-H" : "hr",
"Ctrl-1" : "h1",
"Ctrl-2" : "h2",
"Ctrl-3" : "h3",
"Ctrl-4" : "h4",
"Ctrl-5" : "h5",
"Ctrl-6" : "h6",
+ "Ctrl-B" : "bold", // if this is string == editormd.toolbarHandlers.xxxx
"Ctrl-D" : "datetime",
"Ctrl-E" : function() { // emoji
var cm = this.cm;
var cursor = cm.getCursor();
var selection = cm.getSelection();
+
+ if (!this.settings.emoji)
+ {
+ alert("Error: settings.emoji == false");
+ return ;
+ }
cm.replaceSelection(":" + selection + ":");
@@ -2648,6 +2976,10 @@
cm.setCursor(cursor.line, cursor.ch + 1);
}
},
+ "Ctrl-Alt-G" : "goto-line",
+ "Ctrl-H" : "hr",
+ "Ctrl-I" : "italic",
+ "Ctrl-K" : "code",
"Ctrl-L" : function() {
var cm = this.cm;
@@ -2668,6 +3000,12 @@
var cm = this.cm;
var cursor = cm.getCursor();
var selection = cm.getSelection();
+
+ if (!this.settings.atLink)
+ {
+ alert("Error: settings.atLink == false");
+ return ;
+ }
cm.replaceSelection("@" + selection);
@@ -2676,6 +3014,11 @@
}
},
+ "Shift-Ctrl-C" : "code",
+ "Shift-Ctrl-Q" : "quote",
+ "Shift-Ctrl-S" : "del",
+ "Shift-Ctrl-K" : "tex", // KaTeX
+
"Shift-Alt-C" : function() {
var cm = this.cm;
var cursor = cm.getCursor();
@@ -2689,7 +3032,7 @@
},
"Shift-Ctrl-Alt-C" : "code-block",
- "Shift-Ctrl-H" : "htmlEntities",
+ "Shift-Ctrl-H" : "html-entities",
"Shift-Alt-H" : "help",
"Shift-Ctrl-E" : "emoji",
"Shift-Ctrl-U" : "uppercase",
@@ -2716,6 +3059,7 @@
"Shift-Ctrl-O" : "list-ol",
"Shift-Ctrl-P" : "preformatted-text",
"Shift-Ctrl-T" : "table",
+ "Shift-Alt-P" : "pagebreak",
"F9" : "watch",
"F10" : "preview",
"F11" : "fullscreen",
@@ -2730,7 +3074,7 @@
*/
var trim = function(str) {
- return (!String.prototype.trim) ? str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '') : str.trim();
+ return (!String.prototype.trim) ? str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "") : str.trim();
};
editormd.trim = trim;
@@ -2781,7 +3125,8 @@
emojiDatetime : /(\d{2}:\d{2}:\d{2})/g,
twemoji : /:(tw-([\w]+)-?(\w+)?):/g,
fontAwesome : /:(fa-([\w]+)(-(\w+)){0,}):/g,
- editormdLogo : /:(editormd-logo-?(\w+)?):/g
+ editormdLogo : /:(editormd-logo-?(\w+)?):/g,
+ pageBreak : /^\[[=]{8,}\]$/
};
// Emoji graphics files url path
@@ -2807,7 +3152,9 @@
editormd.markedRenderer = function(markdownToC, options) {
var defaults = {
toc : true, // Table of contents
+ tocm : false,
tocStartLevel : 1, // Said from H1 to create ToC
+ pageBreak : true,
atLink : true, // for @link
emailLink : true, // for mail address auto link
taskList : false, // Enable Github Flavored Markdown task lists
@@ -2821,14 +3168,16 @@
var marked = editormd.$marked;
var markedRenderer = new marked.Renderer();
markdownToC = markdownToC || [];
-
- var atLinkReg = editormd.regexs.atLink;
- var emojiReg = editormd.regexs.emoji;
- var emailReg = editormd.regexs.email;
- var emailLinkReg = editormd.regexs.emailLink;
- var twemojiReg = editormd.regexs.twemoji;
- var faIconReg = editormd.regexs.fontAwesome;
- var editormdLogoReg = editormd.regexs.editormdLogo;
+
+ var regexs = editormd.regexs;
+ var atLinkReg = regexs.atLink;
+ var emojiReg = regexs.emoji;
+ var emailReg = regexs.email;
+ var emailLinkReg = regexs.emailLink;
+ var twemojiReg = regexs.twemoji;
+ var faIconReg = regexs.fontAwesome;
+ var editormdLogoReg = regexs.editormdLogo;
+ var pageBreakReg = regexs.pageBreak;
markedRenderer.emoji = function(text) {
@@ -2906,8 +3255,8 @@
if (settings.emailLink)
{
- text = text.replace(emailLinkReg, function($1, $2) {
- return (!$2) ? ""+$1+"" : $1;
+ 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;
});
}
@@ -2950,7 +3299,7 @@
out += ">" + text + "";
return out;
- }
+ };
markedRenderer.heading = function(text, level, raw) {
@@ -2987,19 +3336,29 @@
var headingHTML = "";
- headingHTML += "";
+ 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 = /^\[TOC\]$/.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)
{
@@ -3012,8 +3371,10 @@
text = (isTeXLine) ? text.replace(/\$/g, "") : text;
}
- return (isToC) ? ""
- : "" + this.atLink(this.emoji(text)) + "
\n";
+ var tocHTML = "" + text + "
";
+
+ return (isToC) ? ( (isToCMenu) ? "
" : tocHTML )
+ : ( (pageBreakReg.test(text)) ? this.pageBreak(text) : "" + this.atLink(this.emoji(text)) + "
\n" );
};
markedRenderer.code = function (code, lang, escaped) {
@@ -3068,11 +3429,13 @@
* @returns {Object} tocContainer 返回ToC列表容器层的jQuery对象元素
*/
- editormd.markdownToCRenderer = function(toc, container, startLevel) {
+ editormd.markdownToCRenderer = function(toc, container, tocDropdown, startLevel) {
+
+ var html = "";
+ var lastLevel = 0;
+ var classPrefix = this.classPrefix;
- var html = "";
- var lastLevel = 0;
- startLevel = startLevel || 1;
+ startLevel = startLevel || 1;
for (var i = 0, len = toc.length; i < len; i++)
{
@@ -3100,13 +3463,95 @@
lastLevel = level;
}
- var tocContainer = container.find('.markdown-toc');
+ var tocContainer = container.find(".markdown-toc");
- tocContainer.children('.markdown-toc-list').html("").html(html);
+ 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;
};
+ /**
+ *
+ * 生成TOC下拉菜单
+ * Creating ToC dropdown menu
+ *
+ * @param {Object} container 插入TOC的容器jQuery对象元素
+ * @param {String} tocTitle ToC title
+ * @returns {Object} return toc-menu object
+ */
+
+ 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 = "";
+ 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;
+ };
+
/**
* 简单地过滤指定的HTML标签
* Filter custom html tags
@@ -3142,14 +3587,18 @@
* @returns {Object} div 返回jQuery对象元素
*/
- editormd.markdownToHTML = function(id, options) {
+ editormd.markdownToHTML = function(id, options) {
var defaults = {
gfm : true,
toc : true,
+ tocm : false,
tocStartLevel : 1,
+ tocTitle : "目录",
+ tocDropdown : false,
markdown : "",
htmlDecode : false,
autoLoadKaTeX : true,
+ pageBreak : true,
atLink : true, // for @link
emailLink : true, // for mail address auto link
tex : false,
@@ -3165,15 +3614,24 @@
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, // for @link
emailLink : settings.emailLink, // for mail address auto link
flowChart : settings.flowChart,
@@ -3194,21 +3652,20 @@
markdownDoc = editormd.filterHTMLTags(markdownDoc, settings.htmlDecode);
- var markdownParsed = marked(markdownDoc, markedOptions);
+ var markdownParsed = marked(markdownDoc, markedOptions);
- if (editormd.isIE8)
- {
- saveTo.val(markdownDoc);
- }
- else
- {
- saveTo.html(markdownDoc);
- }
+ saveTo.val(markdownDoc);
div.addClass("markdown-body " + this.classPrefix + "html-preview").append(markdownParsed);
- if (settings.toc) {
- div.tocContainer = this.markdownToCRenderer(markdownToC, div, settings.tocStartLevel);
+ if (settings.toc)
+ {
+ div.tocContainer = this.markdownToCRenderer(markdownToC, div, settings.tocDropdown, settings.tocStartLevel);
+
+ if (settings.tocDropdown || div.find("." + this.classPrefix + "toc-menu").length > 0)
+ {
+ this.tocDropdownMenu(div, settings.tocTitle);
+ }
}
if (settings.previewCodeHighlight)
@@ -3251,16 +3708,15 @@
}
}
- div.getMarkdown = function() {
- return (editormd.isIE8) ? saveTo.val() : saveTo.html();
+ div.getMarkdown = function() {
+ return saveTo.val();
};
return div;
};
editormd.themes = [
- "default",
- "3024-day", "3024-night",
+ "default", "3024-day", "3024-night",
"ambiance", "ambiance-mobile",
"base16-dark", "base16-light", "blackboard",
"cobalt",
@@ -3355,8 +3811,8 @@
script.type = "text/javascript";
script.src = fileName + ".js";
- if (editormd.isIE8) {
-
+ if (editormd.isIE8)
+ {
script.onreadystatechange = function() {
if(script.readyState)
{
@@ -3449,7 +3905,7 @@
var editor = this.editor;
var classPrefix = editormd.classPrefix;
- var guid = (new Date).getTime();
+ var guid = (new Date()).getTime();
var dialogName = ( (options.name === "") ? classPrefix + "dialog-" + guid : options.name);
var mouseOrTouch = editormd.mouseOrTouch;
@@ -3541,7 +3997,7 @@
dialog.hide().lockScreen(false).hideMask();
});
- if (typeof options.buttons == "object")
+ if (typeof options.buttons === "object")
{
var footer = dialog.footer = dialog.find("." + classPrefix + "dialog-footer");
@@ -3578,13 +4034,13 @@
var userCanSelect = function (obj) {
obj.removeClass(classPrefix + "user-unselect").off("selectstart");
- }
+ };
var userUnselect = function (obj) {
obj.addClass(classPrefix + "user-unselect").on("selectstart", function(event) { // selectstart for IE
return false;
});
- }
+ };
var moveAction = function (e) {
e = e || window.event; //IE
@@ -3619,7 +4075,7 @@
userUnselect(dialog);
dialog[0].style.left = left + "px";
dialog[0].style.top = top + "px";
- }
+ };
document.onmouseup = function() {
userCanSelect($("body"));
@@ -3677,13 +4133,10 @@
var eventType = mouseEventType;
- try
- {
+ try {
document.createEvent("TouchEvent");
eventType = touchEventType;
- }
- catch(e) {
- }
+ } catch(e) {}
return eventType;
};
@@ -3703,7 +4156,7 @@
return (d < 10) ? "0" + d : d;
};
- var date = new Date;
+ var date = new Date();
var year = date.getFullYear();
var year2 = year.toString().slice(2, 4);
var month = addZero(date.getMonth() + 1);
@@ -3777,7 +4230,7 @@
case "ms" :
datefmt = ms;
- break;
+ break;
case "yy-mm-dd" :
datefmt = ymd;
@@ -3790,18 +4243,18 @@
case "yyyy-mm-dd h:i:s ms" :
case "full + ms" :
datefmt = fymd + " " + hms + " " + ms;
- break;
+ break;
case "full" :
case "yyyy-mm-dd h:i:s" :
default:
datefmt = fymd + " " + hms;
- break;
- };
+ break;
+ }
return datefmt;
};
-
+
return editormd;
-
+
}));
diff --git a/editormd.min.js b/editormd.min.js
index 5a8b941d..6bfa97f1 100644
--- a/editormd.min.js
+++ b/editormd.min.js
@@ -1,4 +1,4 @@
-/*! Editor.md v1.3.0 | editormd.min.js | A simple online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-03-12 */
-!function(e){"use strict";"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?module.exports=e:"function"==typeof define?define.amd||define(["jquery"],e):window.editormd=e()}(function(){"use strict";var e="undefined"!=typeof jQuery?jQuery:Zepto;if("undefined"!=typeof e){var t=function(e,i){return new t.fn.init(e,i)};t.title=t.$name="Editor.md",t.version="1.3.0",t.homePage="https://pandao.github.io/editor.md/",t.classPrefix="editormd-",t.toolbarModes={full:["undo","redo","|","bold","del","italic","quote","ucwords","uppercase","lowercase","|","h1","h2","h3","h4","h5","h6","|","list-ul","list-ol","hr","|","link","anchor","image","code","preformatted-text","code-block","table","datetime","emoji","htmlEntities","|","watch","preview","fullscreen","clear","|","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"]},t.defaults={mode:"gfm",theme:"default",value:"",markdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",autoLoadModules:!0,watch:!0,placeholder:"now coding markdown...",codeFold:!1,autoHeight:!1,autoCloseTags:!0,searchReplace:!1,readOnly:!1,lineNumbers:!0,matchWordHighlight:!0,styleActiveLine:!0,dialogLockScreen:!0,dialogShowMask:!0,dialogDraggable:!0,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:!1,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:!1,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:!1,uploadCallbackURL:"",toc:!0,tocStartLevel:1,htmlDecode:!1,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0,toolbar:!0,toolbarAutoFixed:!0,toolbarIcons:function(){return t.toolbarModes.full},toolbarTitles:{},toolbarHandlers:{ucwords:function(){return t.toolbarHandlers.ucwords},lowercase:function(){return t.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:t.classPrefix+"bold",h2:t.classPrefix+"bold",h3:t.classPrefix+"bold",h4:t.classPrefix+"bold",h5:t.classPrefix+"bold",h6:t.classPrefix+"bold","list-ul":"fa-list-ul","list-ol":"fa-list-ol",hr:"fa-minus",link:"fa-link",anchor:"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",htmlEntities:"fa-copyright",watch:"fa-eye-slash",unwatch:"fa-eye",preview:"fa-search",fullscreen:"fa-arrows-alt",clear:"fa-eraser",help:"fa-question-circle",info:"fa-info-circle"},toolbarIconTexts:{},lang:{name:"zh-cn",description:"开源在线Markdown编辑器
A simple markdown doucment online editor.",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:"链接",anchor:"锚点",image:"添加图片",code:"行内代码","preformatted-text":"预格式文本 / 代码块(缩进风格)","code-block":"代码块(多语言风格)",table:"添加表格",datetime:"日期时间",emoji:"Emoji表情",htmlEntities:"HTML实体字符",watch:"关闭实时预览",unwatch:"开启实时预览",preview:"全窗口预览HTML(可按ESC还原)",fullscreen:"全屏(按ESC还原)",clear:"清空",help:"使用帮助",info:"关于"+t.title},buttons:{enter:"确定",cancel:"取消",close:"关闭"},dialog:{link:{title:"添加链接",url:"链接地址",urlTitle:"链接标题",urlEmpty:"错误:请填写链接地址。"},anchor:{title:"添加锚点链接",name:"锚点名称",url:"链接地址",urlTitle:"链接标题",nameEmpty:"错误:锚点名称不能为空。",titleEmpty:"错误:请填写锚点链接标题。",urlEmpty:"错误:请填写锚点链接地址。"},image:{title:"添加图片",url:"图片地址",link:"图片链接",alt:"图片描述",uploadButton:"本地上传",imageURLEmpty:"错误:图片地址不能为空。",uploadFileEmpty:"错误:上传的图片不能为空。",formatNotAllowed:"错误:只允许上传图片文件,允许上传的图片文件格式有:"},preformattedText:{title:"添加预格式文本或代码块",emptyAlert:"错误:请填写预格式文本或代码的内容。"},codeBlock:{title:"添加代码块",selectLabel:"代码语言:",selectDefaultText:"请选择代码语言",otherLanguage:"其他语言",unselectedLanguageAlert:"错误:请选择代码所属的语言类型。",codeEmptyAlert:"错误:请填写代码内容。"},htmlEntities:{title:"HTML 实体字符"},help:{title:"使用帮助"}}}},t.classNames={tex:t.classPrefix+"tex"},t.dialogZindex=99999,t.$katex=null,t.$marked=null,t.$CodeMirror=null,t.$prettyPrint=null,t.prototype=t.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(i,o){o=o||{};var r=this,a=this.classPrefix=t.classPrefix,n=this.editor=e("#"+i),s=this.settings=e.extend(!0,t.defaults,o);this.id=i,this.lang=s.lang;var l=this.classNames={textarea:{html:this.classPrefix+"html-textarea",markdown:this.classPrefix+"markdown-textarea"}};s.pluginPath=""===s.pluginPath?this.settings.path+"../plugins/":s.pluginPath,this.state.watching=s.watch?!0:!1,n.hasClass("editormd")||n.addClass("editormd"),n.css({width:"number"==typeof s.width?s.width+"px":s.width,height:"number"==typeof s.height?s.height+"px":s.height}),s.autoHeight&&n.css("height","auto");var c=this.markdownTextarea=n.children("textarea");c.length<1&&(n.append(""),c=this.markdownTextarea=n.children("textarea")),c.addClass(l.textarea.markdown).attr("name",i+"-markdown-doc").attr("placeholder",s.placeholder);var d=[s.readOnly?"":'',s.saveHTMLToTextarea?'':"",'','',''].join("\n");return n.append(d).addClass(a+"vertical"),this.mask=n.children("."+a+"mask"),""!==s.markdown&&c.val(s.markdown),this.htmlTextarea=n.children("."+l.textarea.html),this.preview=n.children("."+a+"preview"),this.previewContainer=this.preview.children("."+a+"preview-container"),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(t.$katex=katex),s.searchReplace&&(t.loadCSS(s.path+"codemirror/addon/dialog/dialog"),t.loadCSS(s.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!s.autoLoadModules?("undefined"!=typeof CodeMirror&&(t.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(t.$marked=marked),r.setCodeMirror(),r.setToolbar(),r.loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,i=this.settings,o=i.path,r=function(){return t.isIE8?void e.loadedDisplay():void(i.flowChart||i.sequenceDiagram?t.loadScript(o+"raphael.min",function(){t.loadScript(o+"underscore.min",function(){!i.flowChart&&i.sequenceDiagram?t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()}):i.flowChart&&!i.sequenceDiagram?t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){e.loadedDisplay()})}):i.flowChart&&i.sequenceDiagram&&t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay())};return t.loadCSS(o+"codemirror/codemirror.min"),i.searchReplace&&(t.loadCSS(o+"codemirror/addon/dialog/dialog"),t.loadCSS(o+"codemirror/addon/search/matchesonscrollbar")),i.codeFold&&t.loadCSS(o+"codemirror/addon/fold/foldgutter"),t.loadScript(o+"codemirror/codemirror.min",function(){t.$CodeMirror=CodeMirror,t.loadScript(o+"codemirror/modes.min",function(){t.loadScript(o+"codemirror/addons.min",function(){return e.setCodeMirror(),"gfm"!==i.mode&&"markdown"!==i.mode?(e.loadedDisplay(),!1):(e.setToolbar(),void t.loadScript(o+"marked.min",function(){t.$marked=marked,i.previewCodeHighlight?t.loadScript(o+"prettify.min",function(){r()}):r()}))})})}),this},setTheme:function(e){var i=this.settings;return i.theme=e,"default"!==e&&t.loadCSS(i.path+"codemirror/theme/"+i.theme),this.cm.setOption("theme",e),this},setCodeMirror:function(){var e=this.settings,i=this.editor;"default"!==e.theme&&t.loadCSS(e.path+"codemirror/theme/"+e.theme);var o={mode:e.mode,theme:e.theme,tabSize:4,dragDrop:!1,autofocus:!0,autoCloseTags:e.autoCloseTags,readOnly:e.readOnly?"nocursor":!1,indentUnit:4,lineNumbers:e.lineNumbers,lineWrapping:!0,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,indentWithTabs:!0,styleActiveLine:e.styleActiveLine,styleSelectedText:!0,autoCloseBrackets:!0,showTrailingSpace:!0,highlightSelectionMatches:e.matchWordHighlight?{showToken:"onselected"==e.matchWordHighlight?!1:/\w/}:!1};return this.codeEditor=this.cm=t.$CodeMirror.fromTextArea(this.markdownTextarea[0],o),this.codeMirror=this.cmElement=i.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},"extends":function(){return"undefined"!=typeof arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&"undefined"==typeof arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return"undefined"!=typeof i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var o=this.settings;return"object"==typeof t&&(o=e.extend(!0,o,t)),"string"==typeof t&&(o[t]=i),this.settings=o,this.recreate(),this},on:function(t,i){var o=this.settings;return"undefined"!=typeof o["on"+t]&&(o["on"+t]=e.proxy(i,this)),this},off:function(e){var t=this.settings;return"undefined"!=typeof t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=this.settings;if(!i.readOnly)return i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this},hideToolbar:function(t){var i=this.settings;return i.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,o=this.editor,r=this.toolbar,a=this.settings;"undefined"!=typeof t&&(a.toolbarAutoFixed=t);var n=function(){var t=e(window).scrollTop();return a.toolbarAutoFixed?void r.css(t-o.offset().top>10&&t'),r=this.toolbar=i.children("."+o+"toolbar")),!e.toolbar)return void r.hide();r.show();for(var a="function"==typeof e.toolbarIcons?e.toolbarIcons():"string"==typeof e.toolbarIcons?t.toolbarModes[e.toolbarIcons]:e.toolbarIcons,n=r.find("."+this.classPrefix+"menu"),s="",l=0,c=a.length;c>l;l++){var d=a[l];if("|"!==d){var h=/h(\d)/.test(d),u=d;"watch"!==d||e.watch||(u="unwatch");var f=e.lang.toolbar[u],g=e.toolbarIconTexts[u],p=e.toolbarIconsClass[u];f="undefined"==typeof f?"":f,g="undefined"==typeof g?"":g,p="undefined"==typeof p?"":p,s+="- ",s+="undefined"!=typeof e.toolbarCustomIcons[d]?e.toolbarCustomIcons[d]:''+(h?d:""===p?g:"")+"",s+="
"}else s+='- |
'}return n.html(s),n.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),n.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this}},dialogLockScreen:function(){return e.proxy(t.dialogLockScreen,this)(),this},dialogShowMask:function(i){return e.proxy(t.dialogShowMask,this)(i),this},getToolbarHandles:function(e){var i=this.toolbarHandlers=t.toolbarHandlers;return e&&"undefined"!=typeof toolbarIconHandlers[e]?i[e]:i},setToolbarHandler:function(){var i=this,o=this.settings;if(o.toolbar&&!o.readOnly){var r=(this.editor,this.preview,this.toolbar),a=this.codeEditor,n=(this.codeMirror,this.classPrefix),s=(this.previewContainer,this.toolbarIcons=r.find("."+n+"menu > li > a")),l=this.getToolbarHandles();return s.bind(t.mouseOrTouch("click","touchend"),function(){var t=e(this).children(".fa"),r=t.attr("name"),n=a.getCursor(),s=a.getSelection();return""!==r?(i.activeIcon=t,"undefined"!=typeof l[r]?e.proxy(l[r],i)(a):"undefined"!=typeof o.toolbarHandlers[r]&&e.proxy(o.toolbarHandlers[r],i)(a,t,n,s),"link"!==r&&"anchor"!==r&&"image"!==r&&"code-block"!==r&&"preformatted-text"!==r&&"watch"!==r&&"preview"!==r&&"fullscreen"!==r&&"info"!==r&&a.focus(),!1):void 0}),this}},createDialog:function(i){return e.proxy(t.createDialog,this)(i)},createInfoDialog:function(){var e=this,i=this.editor,o=this.classPrefix,r=['','
','
'+t.title+"v"+t.version+"
","
"+this.lang.description+"
",'
Home page: '+t.homePage+"
","
License: MIT
","
",'
',"
"].join("\n");i.append(r);var a=this.infoDialog=i.children("."+o+"dialog-info");return a.find("."+o+"dialog-close").bind(t.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),a.css("border",t.isIE8?"1px solid #ddd":"").css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var i=this.editor,o=this.settings,r=this.classPrefix,a=this.infoDialog=i.children("."+r+"dialog-info");return a.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:o.dialogMaskOpacity,backgroundColor:o.dialogMaskBgColor}).show(),a.css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return t.lockScreen(e),this},recreate:function(){var e=this.editor,t=this.settings,i=t.toolbarIcons();return this.codeMirror.remove(),this.setCodeMirror(),"undefined"!=typeof this.infoDialog&&this.infoDialog.remove(),"undefined"!=typeof i.info&&createInfoDialog(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.saveToTextareas(),this.resize(),this.registerKeyMaps(),this},previewCodeHighlight:function(){var e=this.settings,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){var i=this.previewContainer;return i.find("."+t.classNames.tex).each(function(){var i=e(this);t.$katex.render(i.html(),i[0])}),this},flowChartAndSequenceDiagramRender:function(){var e=this.settings,i=this.previewContainer;return t.isIE8?void 0:(e.flowChart&&i.find(".flowchart").flowChart(),e.sequenceDiagram&&i.find(".sequence-diagram").sequenceDiagram({theme:"simple"}),this)},registerKeyMaps:function(i){i=i||null;var o=this,r=this.cm,a=this.settings;if(i){for(var n in i)if(e.inArray(n,a.disabledKeyMaps)<0){var s={};s[n]=i[n],r.addKeyMap(i)}}else{for(var n in t.keyMaps){var i=t.keyMaps[n],l="string"==typeof i?e.proxy(t.toolbarHandlers[i],o):e.proxy(i,o);if(e.inArray(n,["F9","F10","F11"])<0&&e.inArray(n,a.disabledKeyMaps)<0){var s={};s[n]=l,r.addKeyMap(s)}}e(window).keydown(function(i){var r={120:"F9",121:"F10",122:"F11"};if(e.inArray(r[i.keyCode],a.disabledKeyMaps)<0)switch(i.keyCode){case 120:return e.proxy(t.toolbarHandlers.watch,o)(),!1;case 121:return e.proxy(t.toolbarHandlers.preview,o)(),!1;case 122:e.proxy(t.toolbarHandlers.fullscreen,o)()}})}return this},loadedDisplay:function(){var i=this,o=this.editor,r=this.preview,a=this.settings,n=this.codeEditor,s=this.codeMirror,l=(this.previewContainer,t.mouseOrTouch);o.children("."+this.classPrefix+"container-mask").hide(),this.saveToTextareas(),a.watch&&r.show(),o.data("oldWidth",o.width()).data("oldHeight",o.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()});var c=function(){s.find(".CodeMirror-scroll").bind(l("scroll","touchmove"),function(t){var i=e(this).height(),o=e(this).scrollTop(),n=o/e(this)[0].scrollHeight;r.scrollTop(0===o?0:o+i>=e(this)[0].scrollHeight?r[0].scrollHeight:r[0].scrollHeight*n),e.proxy(a.onscroll,this)(t)})},d=function(){s.find(".CodeMirror-scroll").unbind(l("scroll","touchmove"))},h=function(){r.bind(l("scroll","touchmove"),function(){var t=e(this).height(),i=e(this).scrollTop(),o=i/e(this)[0].scrollHeight,r=s.find(".CodeMirror-scroll");r.scrollTop(0===i?0:i+t>=e(this)[0].scrollHeight?r[0].scrollHeight:r[0].scrollHeight*o),e.proxy(a.onpreviewscroll,this)(event)})},u=function(){r.unbind(l("scroll","touchmove"))};return s.bind({mouseover:c,mouseout:d,touchstart:c,touchend:d}),r.bind({mouseover:h,mouseout:u,touchstart:h,touchend:u}),n.on("change",function(){i.previewContainer.css("padding-left",a.autoHeight&&e("body").height()>e(window).height()?"30px":"20px"),i.saveToTextareas()}),e.proxy(a.onload,this)(),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var o=this.state,r=this.editor,a=this.preview,n=this.toolbar,s=this.settings,l=(this.codeEditor,this.codeMirror);return t&&r.css({width:"number"==typeof t?t+"px":t}),!s.autoHeight||o.fullscreen||o.preview?(i&&r.css({height:"number"==typeof i?i+"px":i}),o.fullscreen&&r.height(e(window).height()),s.toolbar&&!s.readOnly?l.css("margin-top",n.height()+1).height(r.height()-n.height()):l.css("margin-top",0).height(r.height())):(r.css("height","auto"),l.css("height","auto")),l.find(".CodeMirror-gutters").height(l.height()),s.watch?(l.width(r.width()/2),a.width(o.preview?r.width():r.width()/2),s.toolbar&&!s.readOnly?a.css("top",n.height()):a.css("top",0),a.height(!s.autoHeight||o.fullscreen||o.preview?s.toolbar&&!s.readOnly?r.height()-n.height():r.height():"auto")):(l.width(r.width()),a.hide()),o.loaded&&e.proxy(s.onresize,this)(),this},saveToTextareas:function(){var i=this,o=this.state,r=this.settings,a=this.codeEditor,n=this.previewContainer,s=a.getValue();if("gfm"!==r.mode&&"markdown"!==r.mode)return this.markdownTextarea[0].innerText=s,this;var l=t.$marked,c=this.markdownToC=[],d=this.markedRendererOptions={toc:r.toc,tocStartLevel:r.tocStartLevel,taskList:r.taskList,emoji:r.emoji,tex:r.tex,atLink:r.atLink,emailLink:r.emailLink,flowChart:r.flowChart,sequenceDiagram:r.sequenceDiagram,previewCodeHighlight:r.previewCodeHighlight},h=this.markedOptions={renderer:t.markedRenderer(c,d),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:r.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};l.setOptions(h),s=t.filterHTMLTags(s,r.htmlDecode);var u=t.$marked(s,h);if(this.markdownTextarea[0].innerText=s,a.save(),r.saveHTMLToTextarea&&this.htmlTextarea.html(u),r.watch||!r.watch&&o.preview){if(n.html(u),this.previewCodeHighlight(),r.toc&&t.markdownToCRenderer(c,n,r.tocStartLevel),r.tex&&(!t.kaTeXLoaded&&r.autoLoadModules?t.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,i.katexRender()}):(t.$katex=katex,this.katexRender())),r.flowChart||r.sequenceDiagram)var f=setTimeout(function(){clearTimeout(f),i.flowChartAndSequenceDiagramRender()},10);o.loaded&&e.proxy(r.onchange,this)()}return this},focus:function(){return this.codeEditor.focus(),this},setCursor:function(e){return this.codeEditor.setCursor(e),this},getCursor:function(){return this.codeEditor.getCursor()},setSelection:function(e,t){return this.codeEditor.setSelection(e,t),this},getSelection:function(){return this.codeEditor.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.codeEditor.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},setMarkdown:function(e){var t=this.settings;return this.codeEditor.setValue(e||t.markdown),this},getMarkdown:function(){return this.codeEditor.getValue()},getValue:function(){return this.codeEditor.getValue()},setValue:function(e){return this.codeEditor.setValue(e),this},clear:function(){return this.codeEditor.setValue(""),this},getHTML:function(){return this.settings.saveHTMLToTextarea?this.htmlTextarea.html():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return this.settings.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(t){var i=this.settings;this.state.watching=i.watch=!0,this.preview.show();var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch,a=this.toolbar.find(".fa[name=watch]");return a.parent().attr("title",i.lang.toolbar.watch),a.removeClass(r).addClass(o),this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),this.saveToTextareas().resize(),i.onwatch||(i.onwatch=t||function(){}),e.proxy(i.onwatch,this)(),this},unwatch:function(t){var i=this.settings;this.state.watching=i.watch=!1,this.preview.hide();var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch;if(this.toolbar){var a=this.toolbar.find(".fa[name=watch]");a.parent().attr("title",i.lang.toolbar.unwatch),a.removeClass(o).addClass(r)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var i=this,o=this.editor,r=this.preview,a=this.toolbar,n=this.settings,s=this.codeMirror;n.toolbar&&(a.toggle(),a.find(".fa[name=preview]").toggleClass("active")),s.toggle();var l=function(e){e.shiftKey&&27===e.keyCode&&i.previewed()};"none"===s.css("display")?(this.state.preview=!0,this.state.fullscreen&&r.css("background","#fff"),o.find("."+this.classPrefix+"preview-close-btn").show().bind(t.mouseOrTouch("click","touchend"),function(){i.previewed()}),n.watch||this.saveToTextareas(),r.show().css({position:"static",top:0,width:o.width(),height:n.autoHeight&&!this.state.fullscreen?"auto":o.height()}),this.state.loaded&&e.proxy(n.onpreviewing,this)(),e(window).bind("keyup",l)):(e(window).unbind("keyup",l),this.previewed())},previewed:function(){var i=this.editor,o=this.preview,r=this.toolbar,a=this.settings,n=this.codeMirror,s=i.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,n.show(),a.toolbar&&r.show(),this.settings.watch?o.show():o.hide(),s.hide().unbind(t.mouseOrTouch("click","touchend")),o.css({background:null,position:"absolute",width:i.width()/2,height:a.autoHeight&&!this.state.fullscreen?"auto":i.height()-r.height(),top:a.toolbar?r.height():0}),this.state.loaded&&e.proxy(a.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.editor,o=(this.preview,this.toolbar),r=this.classPrefix+"fullscreen";o&&o.find(".fa[name=fullscreen]").parent().toggleClass("active");var a=function(e){e.shiftKey||27!==e.keyCode||t.state.fullscreen&&t.fullscreenExit()};return i.hasClass(r)?(e(window).unbind("keyup",a),this.fullscreenExit()):(this.state.fullscreen=!0,e("html,body").css("overflow","hidden"),i.css({position:"fixed",top:0,left:0,margin:0,border:"none",width:e(window).width(),height:e(window).height()}).addClass(r),this.resize(),e.proxy(this.settings.onfullscreen,this)(),e(window).bind("keyup",a)),this},fullscreenExit:function(){var t=this.editor,i=this.toolbar,o=this.classPrefix+"fullscreen";return this.state.fullscreen=!0,i&&i.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({position:"",top:"",left:"",margin:"0 auto 15px",width:t.data("oldWidth"),height:t.data("oldHeight"),border:"1px solid #ddd"}).removeClass(o),this.resize(),e.proxy(this.settings.onfullscreenExit,this)(),this},executePlugin:function(i,o){var r=this,a=this.cm,n=this.settings;return"function"==typeof define?void this[i](a):(o=n.pluginPath+o,void(e.inArray(o,t.loadFiles.plugin)<0?t.loadPlugin(o,function(){t.loadPlugins[i]=r[i],r[i](a)}):e.proxy(t.loadPlugins[i],this)(a)))}},t.fn.init.prototype=t.fn,t.dialogLockScreen=function(){var t=this.settings;t.dialogLockScreen&&e("html,body").css("overflow","hidden")},t.dialogShowMask=function(t){var i=this.editor,o=this.settings;t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),o.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},t.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("> "+i),e.setCursor(t.line,""===i?t.ch+2:t.ch+i.length+2)},ucfirst:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.firstUpperCase(i)),e.setSelections(o)},ucwords:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.wordsFirstUpperCase(i)),e.setSelections(o)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("# "+t)},h2:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("## "+t)},h3:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("### "+t)},h4:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("#### "+t)},h5:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("##### "+t)},h6:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("###### "+t)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":"- "+i[o];e.replaceSelection(i.join("\n"))}},"list-ol":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("1. "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":o+1+". "+i[o];e.replaceSelection(i.join("\n"))}},hr:function(){{var e=this.cm;e.getCursor(),e.getSelection()}e.replaceSelection("------------")},link:function(){this.executePlugin("linkDialog","link-dialog/link-dialog")},anchor:function(){this.executePlugin("anchorLinkDialog","anchor-link-dialog/anchor-link-dialog")},image:function(){this.executePlugin("imageDialog","image-dialog/image-dialog")},code:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("`"+i+"`"),""===i&&e.setCursor(t.line,t.ch+1)},"code-block":function(){this.executePlugin("codeBlockDialog","code-block-dialog/code-block-dialog")},"preformatted-text":function(){this.executePlugin("preformattedTextDialog","preformatted-text-dialog/preformatted-text-dialog")},table:function(){this.executePlugin("tableDialog","table-dialog/table-dialog")},datetime:function(){var e=this.cm,i=(e.getSelection(),new Date,this.settings.lang.name),o=t.dateFormat()+" "+t.dateFormat("zh-cn"===i||"zh-tw"===i?"cn-week-day":"week-day");e.replaceSelection(o)},emoji:function(){this.executePlugin("emojiDialog","emoji-dialog/emoji-dialog")},htmlEntities:function(){this.executePlugin("htmlEntitiesDialog","html-entities-dialog/html-entities-dialog")},watch:function(){this[this.settings.watch?"unwatch":"watch"]()},preview:function(){this.previewing()},fullscreen:function(){this.fullscreen()},clear:function(){this.clear()},help:function(){this.executePlugin("helpDialog","help-dialog/help-dialog")},info:function(){this.showInfoDialog()}},t.keyMaps={"Ctrl-B":"bold","Ctrl-I":"italic","Ctrl-K":"code","Shift-Ctrl-C":"code","Shift-Ctrl-Q":"quote","Shift-Ctrl-S":"del","Ctrl-H":"hr","Ctrl-1":"h1","Ctrl-2":"h2","Ctrl-3":"h3","Ctrl-4":"h4","Ctrl-5":"h5","Ctrl-6":"h6","Ctrl-D":"datetime","Ctrl-E":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(":"+i+":"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-L":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-U":"list-ul","Shift-Ctrl-A":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("@"+i),""===i&&e.setCursor(t.line,t.ch+1)},"Shift-Alt-C":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(["```",i,"```"].join("\n")),""===i&&e.setCursor(t.line,t.ch+3)},"Shift-Ctrl-Alt-C":"code-block","Shift-Ctrl-H":"htmlEntities","Shift-Alt-H":"help","Shift-Ctrl-E":"emoji","Shift-Ctrl-U":"uppercase","Shift-Alt-U":"ucwords","Shift-Ctrl-Alt-U":"ucfirst","Shift-Alt-L":"lowercase","Shift-Ctrl-I":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("!["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+4)},"Shift-Ctrl-Alt-I":"image","Shift-Ctrl-L":"link","Shift-Ctrl-O":"list-ol","Shift-Ctrl-P":"preformatted-text","Shift-Ctrl-T":"table",F9:"watch",F10:"preview",F11:"fullscreen"};var i=function(e){return String.prototype.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};t.trim=i;var o=function(e){return e.toLowerCase().replace(/\b(\w)|\s(\w)/g,function(e){return e.toUpperCase()})};t.ucwords=t.wordsFirstUpperCase=o;var r=function(e){return e.toLowerCase().replace(/\b(\w)/,function(e){return e.toUpperCase()})};return t.firstUpperCase=t.ucfirst=r,t.urls={atLinkBase:"https://github.com/"},t.regexs={atLink:/@(\w+)/g,email:/(\w+)@(\w+)\.(\w+)\.?(\w+)?/g,emailLink:/(mailto:)?([\w\.\_]+)@(\w+)\.(\w+)\.?(\w+)?/g,emoji:/:([\-\w]+):/g,emojiDatetime:/(\d{2}:\d{2}:\d{2})/g,twemoji:/:(tw-([\w]+)-?(\w+)?):/g,fontAwesome:/:(fa-([\w]+)(-(\w+)){0,}):/g,editormdLogo:/:(editormd-logo-?(\w+)?):/g},t.emoji={path:"http://www.emoji-cheat-sheet.com/graphics/emojis/",
-ext:".png"},t.twemoji={path:"http://twemoji.maxcdn.com/36x36/",ext:".png"},t.markedRenderer=function(o,r){var a={toc:!0,tocStartLevel:1,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1},n=e.extend(a,r||{}),s=t.$marked,l=new s.Renderer;o=o||[];var c=t.regexs.atLink,d=t.regexs.emoji,h=t.regexs.email,u=t.regexs.emailLink,f=t.regexs.twemoji,g=t.regexs.fontAwesome,p=t.regexs.editormdLogo;return l.emoji=function(e){e=e.replace(t.regexs.emojiDatetime,function(e){return e.replace(/:/g,":")});var i=e.match(d);if(!i||!n.emoji)return e;for(var o=0,r=i.length;r>o;o++)e=e.replace(new RegExp(i[o]),function(e){var i=e.match(g),o=e.replace(/:/g,"");if(i)for(var r=0,a=i.length;a>r;r++){var n=i[r].replace(/:/g,"");return''}else{var s=e.match(p),l=e.match(f);if(s)for(var c=0,d=s.length;d>c;c++){var h=s[c].replace(/:/g,"");return''}else{if(!l)return'';for(var u=0,m=l.length;m>u;u++){var w=l[u].replace(/:/g,"").replace("tw-","");return''}}}});return e},l.atLink=function(e){return c.test(e)?(n.atLink&&(e=e.replace(h,function(e){return e.replace(/@/g,"_#_@_#_")}),e=e.replace(c,function(e,i){return''+e+""}).replace(/_#_@_#_/g,"@")),n.emailLink&&(e=e.replace(u,function(e,t){return t?e:''+e+""})),e):e},l.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(r){return""}if(0===o.indexOf("javascript:"))return""}var a=''+i.replace(/@/g,"@")+""):(t&&(a+=' title="'+t+'"'),a+=">"+i+"")},l.heading=function(e,t){var r=e,a=/\s*\]*)\>(.*)\<\/a\>\s*/;if(a.test(e)){var n=[];e=e.split(/\]+)\>([^\>]*)\<\/a\>/);for(var s=0,l=e.length;l>s;s++)n.push(e[s].replace(/\s*href\=\"(.*)\"\s*/g,""));e=n.join(" ")}e=i(e);var c=e.toLowerCase().replace(/[^\w]+/g,"-"),d={text:e,level:t,slug:c},h=/^[\u4e00-\u9fa5]+$/.test(e),u=h?escape(e).replace(/\%/g,""):e.toLowerCase().replace(/[^\w]+/g,"-");o.push(d);var f="';return f+='',f+='',f+=this.atLink(a?this.emoji(r):this.emoji(e)),f+=""},l.paragraph=function(e){var i=/\$\$(.*)\$\$/g.test(e),o=/^\$\$(.*)\$\$$/.test(e),r=o?' class="'+t.classNames.tex+'"':"",a=/^\[TOC\]$/.test(e);return e=!o&&i?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,i){return''+i.replace(/\$/g,"")+""}):o?e.replace(/\$/g,""):e,a?'":""+this.atLink(this.emoji(e))+"
\n"},l.code=function(e,t){return"seq"===t||"sequence"===t?''+e+"
":"flow"===t?''+e+"
":s.Renderer.prototype.code.apply(this,arguments)},l.tablecell=function(e,t){var i=t.header?"th":"td",o=t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">";return o+this.atLink(this.emoji(e))+""+i+">\n"},l.listitem=function(e){return n.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'- '+this.atLink(this.emoji(e))+"
"):"- "+this.atLink(this.emoji(e))+"
"},l},t.markdownToCRenderer=function(e,t,i){var o="",r=0;i=i||1;for(var a=0,n=e.length;n>a;a++){var s=e[a].text,l=e[a].level;i>l||(o+=l>r?"":r>l?new Array(r-l+2).join("
"):"
",o+=''+s+"",r=l)}var c=t.find(".markdown-toc");return c.children(".markdown-toc-list").html("").html(o),c},t.filterHTMLTags=function(e,t){if("string"==typeof t)for(var i=t.split(","),o=0,r=i.length;r>o;o++){var a=i[o];e=e.replace(new RegExp("]*)>","igm"),"").replace(new RegExp("","igm"),"")}return e},t.markdownToHTML=function(i,o){var r={gfm:!0,toc:!0,tocStartLevel:1,markdown:"",htmlDecode:!1,autoLoadKaTeX:!0,atLink:!0,emailLink:!0,tex:!1,taskList:!1,emoji:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0};t.$marked=marked;var a=e("#"+i),n=a.settings=e.extend(!0,r,o||{}),s=a.find("textarea"),l=""===n.markdown?s.val():n.markdown,c=[],d={toc:n.toc,tocStartLevel:n.tocStartLevel,taskList:n.taskList,emoji:n.emoji,tex:n.tex,atLink:n.atLink,emailLink:n.emailLink,flowChart:n.flowChart,sequenceDiagram:n.sequenceDiagram,previewCodeHighlight:n.previewCodeHighlight},h={renderer:t.markedRenderer(c,d),gfm:n.gfm,tables:!0,breaks:!0,pedantic:!1,sanitize:n.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};l=t.filterHTMLTags(l,n.htmlDecode);var u=marked(l,h);if(t.isIE8?s.val(l):s.html(l),a.addClass("markdown-body "+this.classPrefix+"html-preview").append(u),n.toc&&(a.tocContainer=this.markdownToCRenderer(c,a,n.tocStartLevel)),n.previewCodeHighlight&&(a.find("pre").addClass("prettyprint linenums"),prettyPrint()),t.isIE8||(n.flowChart&&a.find(".flowchart").flowChart(),n.sequenceDiagram&&a.find(".sequence-diagram").sequenceDiagram({theme:"simple"})),n.tex){var f=function(){a.find("."+t.classNames.tex).each(function(){var t=e(this);katex.render(t.html(),t[0])})};!n.autoLoadKaTeX||t.$katex||t.kaTeXLoaded?f():this.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,f()})}return a.getMarkdown=function(){return t.isIE8?s.val():s.html()},a},t.themes=["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"],t.loadPlugins={},t.loadFiles={js:[],css:[],plugin:[]},t.loadPlugin=function(e,i,o){i=i||function(){},this.loadScript(e,function(){t.loadFiles.plugin.push(e),i()},o)},t.loadCSS=function(e,i,o){o=o||"head",i=i||function(){};var r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.onload=r.onreadystatechange=function(){t.loadFiles.css.push(e),i()},r.href=e+".css","head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.isIE="Microsoft Internet Explorer"==navigator.appName,t.isIE8=t.isIE&&"8."==navigator.appVersion.match(/8./i),t.loadScript=function(e,i,o){o=o||"head",i=i||function(){};var r=null;r=document.createElement("script"),r.id=e.replace(/[\./]+/g,"-"),r.type="text/javascript",r.src=e+".js",t.isIE8?r.onreadystatechange=function(){r.readyState&&("loaded"===r.readyState||"complete"===r.readyState)&&(r.onreadystatechange=null,t.loadFiles.js.push(e),i())}:r.onload=function(){t.loadFiles.js.push(e),i()},"head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.katexURL={css:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min",js:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min"},t.kaTeXLoaded=!1,t.loadKaTeX=function(e){t.loadCSS(t.katexURL.css,function(){t.loadScript(t.katexURL.js,e||function(){})})},t.lockScreen=function(t){e("html,body").css("overflow",t?"hidden":"")},t.createDialog=function(i){var o={name:"",width:420,height:240,title:"",drag:!0,closed:!0,content:"",mask:!0,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:!0,footer:!0,buttons:!1};i=e.extend(!0,o,i);var r=this.editor,a=t.classPrefix,n=(new Date).getTime(),s=""===i.name?a+"dialog-"+n:i.name,l=t.mouseOrTouch,c='';""!==i.title&&(c+='"),i.closed&&(c+='
'),c+='
'+i.content,(i.footer||"string"==typeof i.footer)&&(c+='"),c+="
",c+='
',c+='
',c+="
",r.append(c);var d=r.find("."+s);d.lockScreen=function(t){return i.lockScreen&&e("html,body").css("overflow",t?"hidden":""),d},d.showMask=function(){return i.mask&&r.find("."+a+"mask").css(i.maskStyle).css("z-index",t.dialogZindex-1).show(),d},d.hideMask=function(){return i.mask&&r.find("."+a+"mask").hide(),d},d.loading=function(e){var t=d.find("."+a+"dialog-mask");return t[e?"show":"hide"](),d},d.lockScreen(!0).showMask(),d.show().css({zIndex:t.dialogZindex,border:t.isIE8?"1px solid #ddd":"",width:"number"==typeof i.width?i.width+"px":i.width,height:"number"==typeof i.height?i.height+"px":i.height});var h=function(){d.css({top:(e(window).height()-d.height())/2+"px",left:(e(window).width()-d.width())/2+"px"})};if(h(),e(window).resize(h),d.children("."+a+"dialog-close").bind(l("click","touchend"),function(){d.hide().lockScreen(!1).hideMask()}),"object"==typeof i.buttons){var u=d.footer=d.find("."+a+"dialog-footer");for(var f in i.buttons){var g=i.buttons[f],p=a+f+"-btn";u.append('"),g[1]=e.proxy(g[1],d),u.children("."+p).bind(l("click","touchend"),g[1])}}if(""!==i.title&&i.drag){var m,w,v=d.children("."+a+"dialog-header");i.mask||v.bind(l("click","touchend"),function(){t.dialogZindex+=2,d.css("z-index",t.dialogZindex)}),v.mousedown(function(e){e=e||window.event,m=e.clientX-parseInt(d[0].style.left),w=e.clientY-parseInt(d[0].style.top),document.onmousemove=k});var b=function(e){e.removeClass(a+"user-unselect").off("selectstart")},x=function(e){e.addClass(a+"user-unselect").on("selectstart",function(){return!1})},k=function(t){t=t||window.event;var i,o,r=parseInt(d[0].style.left),a=parseInt(d[0].style.top);r>=0?r+d.width()<=e(window).width()?i=t.clientX-m:(i=e(window).width()-d.width(),document.onmousemove=null):(i=0,document.onmousemove=null),a>=0?o=t.clientY-w:(o=0,document.onmousemove=null),document.onselectstart=function(){return!1},x(e("body")),x(d),d[0].style.left=i+"px",d[0].style.top=o+"px"};document.onmouseup=function(){b(e("body")),b(d),document.onselectstart=null,document.onmousemove=null},v.touchDraggable=function(){var t=null,i=function(i){var o=i.originalEvent,r=e(this).parent().position();t={x:o.changedTouches[0].pageX-r.left,y:o.changedTouches[0].pageY-r.top}},o=function(i){i.preventDefault();var o=i.originalEvent;e(this).parent().css({top:o.changedTouches[0].pageY-t.y,left:o.changedTouches[0].pageX-t.x})};this.bind("touchstart",i).bind("touchmove",o)},v.touchDraggable()}return t.dialogZindex+=2,d},t.mouseOrTouch=function(e,t){e=e||"click",t=t||"touchend";var i=e;try{document.createEvent("TouchEvent"),i=t}catch(o){}return i},t.dateFormat=function(e){e=e||"";var t=function(e){return 10>e?"0"+e:e},i=new Date,o=i.getFullYear(),r=o.toString().slice(2,4),a=t(i.getMonth()+1),n=t(i.getDate()),s=i.getDay(),l=t(i.getHours()),c=t(i.getMinutes()),d=t(i.getSeconds()),h=t(i.getMilliseconds()),u="",f=r+"-"+a+"-"+n,g=o+"-"+a+"-"+n,p=l+":"+c+":"+d;switch(e){case"UNIX Time":u=i.getTime();break;case"UTC":u=i.toUTCString();break;case"yy":u=r;break;case"year":case"yyyy":u=o;break;case"month":case"mm":u=a;break;case"cn-week-day":case"cn-wd":var m=["日","一","二","三","四","五","六"];u="星期"+m[s];break;case"week-day":case"wd":var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];u=w[s];break;case"day":case"dd":u=n;break;case"hour":case"hh":u=l;break;case"min":case"ii":u=c;break;case"second":case"ss":u=d;break;case"ms":u=h;break;case"yy-mm-dd":u=f;break;case"yyyy-mm-dd":u=g;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":u=g+" "+p+" "+h;break;case"full":case"yyyy-mm-dd h:i:s":default:u=g+" "+p}return u},t}});
-//# sourceMappingURL=editormd.min.js.map
\ No newline at end of file
+/*! Editor.md v1.4.0 | editormd.min.js | Open source online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-03-23 */
+!function(e){"use strict";"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?module.exports=e:"function"==typeof define?define.amd||define(["jquery"],e):window.editormd=e()}(function(){"use strict";var e="undefined"!=typeof jQuery?jQuery:Zepto;if("undefined"!=typeof e){var t=function(e,i){return new t.fn.init(e,i)};t.title=t.$name="Editor.md",t.version="1.4.0",t.homePage="https://pandao.github.io/editor.md/",t.classPrefix="editormd-",t.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"]},t.defaults={mode:"gfm",theme:"default",value:"",markdown:"",appendMarkdown:"",width:"100%",height:"100%",path:"./lib/",pluginPath:"",delay:300,autoLoadModules:!0,watch:!0,placeholder:"Enjoy Markdown! coding now...",gotoLine:!0,codeFold:!1,autoHeight:!1,autoCloseTags:!0,searchReplace:!0,readOnly:!1,lineNumbers:!0,matchWordHighlight:!0,styleActiveLine:!0,dialogLockScreen:!0,dialogShowMask:!0,dialogDraggable:!0,dialogMaskBgColor:"#fff",dialogMaskOpacity:.1,fontSize:"13px",saveHTMLToTextarea:!1,disabledKeyMaps:[],onload:function(){},onresize:function(){},onchange:function(){},onwatch:null,onunwatch:null,onpreviewing:function(){},onpreviewed:function(){},onfullscreen:function(){},onfullscreenExit:function(){},onscroll:function(){},onpreviewscroll:function(){},imageUpload:!1,imageFormats:["jpg","jpeg","gif","png","bmp","webp"],imageUploadURL:"",crossDomainUpload:!1,uploadCallbackURL:"",toc:!0,tocm:!1,tocTitle:"",tocDropdown:!1,tocContainer:"",tocStartLevel:1,htmlDecode:!1,pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0,toolbar:!0,toolbarAutoFixed:!0,toolbarIcons:"full",toolbarTitles:{},toolbarHandlers:{ucwords:function(){return t.toolbarHandlers.ucwords},lowercase:function(){return t.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:t.classPrefix+"bold",h2:t.classPrefix+"bold",h3:t.classPrefix+"bold",h4:t.classPrefix+"bold",h5:t.classPrefix+"bold",h6:t.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:{},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:"关于"+t.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:"使用帮助"}}}},t.classNames={tex:t.classPrefix+"tex"},t.dialogZindex=99999,t.$katex=null,t.$marked=null,t.$CodeMirror=null,t.$prettyPrint=null;var i,o;t.prototype=t.fn={state:{watching:!1,loaded:!1,preview:!1,fullscreen:!1},init:function(i,o){o=o||{},"object"==typeof i&&(o=i);var r=this.classPrefix=t.classPrefix,n=this.settings=e.extend(!0,t.defaults,o);i="object"==typeof i?n.id:i;var a=this.editor=e("#"+i);this.id=i,this.lang=n.lang;var s=this.classNames={textarea:{html:r+"html-textarea",markdown:r+"markdown-textarea"}};n.pluginPath=""===n.pluginPath?n.path+"../plugins/":n.pluginPath,this.state.watching=n.watch?!0:!1,a.hasClass("editormd")||a.addClass("editormd"),a.css({width:"number"==typeof n.width?n.width+"px":n.width,height:"number"==typeof n.height?n.height+"px":n.height}),n.autoHeight&&a.css("height","auto");var l=this.markdownTextarea=a.children("textarea");l.length<1&&(a.append(""),l=this.markdownTextarea=a.children("textarea")),l.addClass(s.textarea.markdown).attr("name",i+"-markdown-doc").attr("placeholder",n.placeholder);var c=[n.readOnly?"":'',n.saveHTMLToTextarea?'':"",'','',''].join("\n");return a.append(c).addClass(r+"vertical"),this.mask=a.children("."+r+"mask"),this.containerMask=a.children("."+r+"container-mask"),""!==n.markdown&&l.val(n.markdown),""!==n.appendMarkdown&&l.val(l.val()+n.appendMarkdown),this.htmlTextarea=a.children("."+s.textarea.html),this.preview=a.children("."+r+"preview"),this.previewContainer=this.preview.children("."+r+"preview-container"),"function"==typeof define&&define.amd&&("undefined"!=typeof katex&&(t.$katex=katex),n.searchReplace&&!n.readOnly&&(t.loadCSS(n.path+"codemirror/addon/dialog/dialog"),t.loadCSS(n.path+"codemirror/addon/search/matchesonscrollbar"))),"function"==typeof define&&define.amd||!n.autoLoadModules?("undefined"!=typeof CodeMirror&&(t.$CodeMirror=CodeMirror),"undefined"!=typeof marked&&(t.$marked=marked),this.setCodeMirror().setToolbar().loadedDisplay()):this.loadQueues(),this},loadQueues:function(){var e=this,i=this.settings,o=i.path,r=function(){return t.isIE8?void e.loadedDisplay():void(i.flowChart||i.sequenceDiagram?t.loadScript(o+"raphael.min",function(){t.loadScript(o+"underscore.min",function(){!i.flowChart&&i.sequenceDiagram?t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()}):i.flowChart&&!i.sequenceDiagram?t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){e.loadedDisplay()})}):i.flowChart&&i.sequenceDiagram&&t.loadScript(o+"flowchart.min",function(){t.loadScript(o+"jquery.flowchart.min",function(){t.loadScript(o+"sequence-diagram.min",function(){e.loadedDisplay()})})})})}):e.loadedDisplay())};return t.loadCSS(o+"codemirror/codemirror.min"),i.searchReplace&&!i.readOnly&&(t.loadCSS(o+"codemirror/addon/dialog/dialog"),t.loadCSS(o+"codemirror/addon/search/matchesonscrollbar")),i.codeFold&&t.loadCSS(o+"codemirror/addon/fold/foldgutter"),t.loadScript(o+"codemirror/codemirror.min",function(){t.$CodeMirror=CodeMirror,t.loadScript(o+"codemirror/modes.min",function(){t.loadScript(o+"codemirror/addons.min",function(){return e.setCodeMirror(),"gfm"!==i.mode&&"markdown"!==i.mode?(e.loadedDisplay(),!1):(e.setToolbar(),void t.loadScript(o+"marked.min",function(){t.$marked=marked,i.previewCodeHighlight?t.loadScript(o+"prettify.min",function(){r()}):r()}))})})}),this},setTheme:function(e){var i=this.settings;return i.theme=e,"default"!==e&&t.loadCSS(i.path+"codemirror/theme/"+i.theme),this.cm.setOption("theme",e),this},setCodeMirror:function(){var e=this.settings,i=this.editor;"default"!==e.theme&&t.loadCSS(e.path+"codemirror/theme/"+e.theme);var o={mode:e.mode,theme:e.theme,tabSize:4,dragDrop:!1,autofocus:!0,autoCloseTags:e.autoCloseTags,readOnly:e.readOnly?"nocursor":!1,indentUnit:4,lineNumbers:e.lineNumbers,lineWrapping:!0,extraKeys:{"Ctrl-Q":function(e){e.foldCode(e.getCursor())}},foldGutter:e.codeFold,gutters:["CodeMirror-linenumbers","CodeMirror-foldgutter"],matchBrackets:!0,indentWithTabs:!0,styleActiveLine:e.styleActiveLine,styleSelectedText:!0,autoCloseBrackets:!0,showTrailingSpace:!0,highlightSelectionMatches:e.matchWordHighlight?{showToken:"onselected"===e.matchWordHighlight?!1:/\w/}:!1};return this.codeEditor=this.cm=t.$CodeMirror.fromTextArea(this.markdownTextarea[0],o),this.codeMirror=this.cmElement=i.children(".CodeMirror"),""!==e.value&&this.cm.setValue(e.value),this.codeMirror.css({fontSize:e.fontSize,width:e.watch?"50%":"100%"}),e.autoHeight&&(this.codeMirror.css("height","auto"),this.cm.setOption("viewportMargin",1/0)),this},getCodeMirrorOption:function(e){return this.cm.getOption(e)},setCodeMirrorOption:function(e,t){return this.cm.setOption(e,t),this},addKeyMap:function(e,t){return this.cm.addKeyMap(e,t),this},removeKeyMap:function(e){return this.cm.removeKeyMap(e),this},gotoLine:function(t){var i=this.settings;if(!i.gotoLine)return this;var o=this.cm,r=(this.editor,o.lineCount()),n=this.preview;if("string"==typeof t&&("last"===t&&(t=r),"first"===t&&(t=1)),"number"!=typeof t)return alert("Error: The line number must be an integer."),this;if(t=parseInt(t)-1,t>r)return alert("Error: The line number range 1-"+r),this;o.setCursor({line:t,ch:0});var a=o.getScrollInfo(),s=a.clientHeight,l=o.charCoords({line:t,ch:0},"local");if(o.scrollTo(null,(l.top+l.bottom-s)/2),i.watch){var c=this.codeMirror.find(".CodeMirror-scroll")[0],h=e(c).height(),d=c.scrollTop,u=d/c.scrollHeight;n.scrollTop(0===d?0:d+h>=n[0].scrollHeight?n[0].scrollHeight:n[0].scrollHeight*u)}return o.focus(),this},extend:function(){return"undefined"!=typeof arguments[1]&&("function"==typeof arguments[1]&&(arguments[1]=e.proxy(arguments[1],this)),this[arguments[0]]=arguments[1]),"object"==typeof arguments[0]&&"undefined"==typeof arguments[0].length&&e.extend(!0,this,arguments[0]),this},set:function(t,i){return"undefined"!=typeof i&&"function"==typeof i&&(i=e.proxy(i,this)),this[t]=i,this},config:function(t,i){var o=this.settings;return"object"==typeof t&&(o=e.extend(!0,o,t)),"string"==typeof t&&(o[t]=i),this.settings=o,this.recreate(),this},on:function(t,i){var o=this.settings;return"undefined"!=typeof o["on"+t]&&(o["on"+t]=e.proxy(i,this)),this},off:function(e){var t=this.settings;return"undefined"!=typeof t["on"+e]&&(t["on"+e]=function(){}),this},showToolbar:function(t){var i=this.settings;return i.readOnly?this:(i.toolbar&&(this.toolbar.length<1||""===this.toolbar.find("."+this.classPrefix+"menu").html())&&this.setToolbar(),i.toolbar=!0,this.toolbar.show(),this.resize(),e.proxy(t||function(){},this)(),this)},hideToolbar:function(t){var i=this.settings;return i.toolbar=!1,this.toolbar.hide(),this.resize(),e.proxy(t||function(){},this)(),this},setToolbarAutoFixed:function(t){var i=this.state,o=this.editor,r=this.toolbar,n=this.settings;"undefined"!=typeof t&&(n.toolbarAutoFixed=t);var a=function(){var t=e(window),i=t.scrollTop();return n.toolbarAutoFixed?void r.css(i-o.offset().top>10&&i';i.append(n),r=this.toolbar=i.children("."+o+"toolbar")}if(!e.toolbar)return r.hide(),this;r.show();for(var a="function"==typeof e.toolbarIcons?e.toolbarIcons():"string"==typeof e.toolbarIcons?t.toolbarModes[e.toolbarIcons]:e.toolbarIcons,s=r.find("."+this.classPrefix+"menu"),l="",c=0,h=a.length;h>c;c++){var d=a[c];if("|"!==d){var u=/h(\d)/.test(d),f=d;"watch"!==d||e.watch||(f="unwatch");var g=e.lang.toolbar[f],p=e.toolbarIconTexts[f],m=e.toolbarIconsClass[f];g="undefined"==typeof g?"":g,p="undefined"==typeof p?"":p,m="undefined"==typeof m?"":m,l+="- ",l+="undefined"!=typeof e.toolbarCustomIcons[d]&&"function"!=typeof e.toolbarCustomIcons[d]?e.toolbarCustomIcons[d]:''+(u?d.toUpperCase():""===m?p:"")+"",l+="
"}else l+='- |
'}return s.html(l),s.find('[title="Lowercase"]').attr("title",e.lang.toolbar.lowercase),s.find('[title="ucwords"]').attr("title",e.lang.toolbar.ucwords),this.setToolbarHandler(),this.setToolbarAutoFixed(),this},dialogLockScreen:function(){return e.proxy(t.dialogLockScreen,this)(),this},dialogShowMask:function(i){return e.proxy(t.dialogShowMask,this)(i),this},getToolbarHandles:function(e){var i=this.toolbarHandlers=t.toolbarHandlers;return e&&"undefined"!=typeof toolbarIconHandlers[e]?i[e]:i},setToolbarHandler:function(){var i=this,o=this.settings;if(!o.toolbar||o.readOnly)return this;var r=this.toolbar,n=this.cm,a=this.classPrefix,s=this.toolbarIcons=r.find("."+a+"menu > li > a"),l=this.getToolbarHandles();return s.bind(t.mouseOrTouch("click","touchend"),function(){var t=e(this).children(".fa"),r=t.attr("name"),a=n.getCursor(),s=n.getSelection();return""!==r?(i.activeIcon=t,"undefined"!=typeof l[r]?e.proxy(l[r],i)(n):"undefined"!=typeof o.toolbarHandlers[r]&&e.proxy(o.toolbarHandlers[r],i)(n,t,a,s),"link"!==r&&"reference-link"!==r&&"image"!==r&&"code-block"!==r&&"preformatted-text"!==r&&"watch"!==r&&"preview"!==r&&"search"!==r&&"fullscreen"!==r&&"info"!==r&&n.focus(),!1):void 0}),this},createDialog:function(i){return e.proxy(t.createDialog,this)(i)},createInfoDialog:function(){var e=this,i=this.editor,o=this.classPrefix,r=['','
','
'+t.title+"v"+t.version+"
","
"+this.lang.description+"
",'
'+t.homePage+'
','
Copyright © 2015 Pandao, The MIT License.
',"
",'
',"
"].join("\n");i.append(r);var n=this.infoDialog=i.children("."+o+"dialog-info");return n.find("."+o+"dialog-close").bind(t.mouseOrTouch("click","touchend"),function(){e.hideInfoDialog()}),n.css("border",t.isIE8?"1px solid #ddd":"").css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},infoDialogPosition:function(){var t=this.infoDialog,i=function(){t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"})};return i(),e(window).resize(i),this},showInfoDialog:function(){e("html,body").css("overflow-x","hidden");var i=this.editor,o=this.settings,r=this.infoDialog=i.children("."+this.classPrefix+"dialog-info");return r.length<1&&this.createInfoDialog(),this.lockScreen(!0),this.mask.css({opacity:o.dialogMaskOpacity,backgroundColor:o.dialogMaskBgColor}).show(),r.css("z-index",t.dialogZindex).show(),this.infoDialogPosition(),this},hideInfoDialog:function(){return e("html,body").css("overflow-x",""),this.infoDialog.hide(),this.mask.hide(),this.lockScreen(!1),this},lockScreen:function(e){return t.lockScreen(e),this},recreate:function(){var e=this.editor,t=this.settings;return this.codeMirror.remove(),this.setCodeMirror(),t.readOnly||(e.find(".editormd-dialog").length>0&&e.find(".editormd-dialog").remove(),t.toolbar&&(this.getToolbarHandles(),this.setToolbar())),this.loadedDisplay(!0),this},previewCodeHighlight:function(){var e=this.settings,t=this.previewContainer;return e.previewCodeHighlight&&(t.find("pre").addClass("prettyprint linenums"),"undefined"!=typeof prettyPrint&&prettyPrint()),this},katexRender:function(){return null===i?this:(this.previewContainer.find("."+t.classNames.tex).each(function(){var i=e(this);t.$katex.render(i.html(),i[0])}),this)},flowChartAndSequenceDiagramRender:function(){var e=this.settings,i=this.previewContainer;if(t.isIE8)return this;if(e.flowChart){if(null===o)return this;i.find(".flowchart").flowChart()}return e.sequenceDiagram&&i.find(".sequence-diagram").sequenceDiagram({theme:"simple"}),this},registerKeyMaps:function(i){var o=this,r=this.cm,n=this.settings,a=t.toolbarHandlers,s=n.disabledKeyMaps;if(i=i||null){for(var l in i)if(e.inArray(l,s)<0){var c={};c[l]=i[l],r.addKeyMap(i)}}else{for(var h in t.keyMaps){var d=t.keyMaps[h],u="string"==typeof d?e.proxy(a[d],o):e.proxy(d,o);if(e.inArray(h,["F9","F10","F11"])<0&&e.inArray(h,s)<0){var f={};f[h]=u,r.addKeyMap(f)}}e(window).keydown(function(t){var i={120:"F9",121:"F10",122:"F11"};if(e.inArray(i[t.keyCode],s)<0)switch(t.keyCode){case 120:return e.proxy(a.watch,o)(),!1;case 121:return e.proxy(a.preview,o)(),!1;case 122:return e.proxy(a.fullscreen,o)(),!1}})}return this},bindScrollEvent:function(){var i=this,o=this.preview,r=this.settings,n=this.codeMirror,a=t.mouseOrTouch,s=function(){n.find(".CodeMirror-scroll").bind(a("scroll","touchmove"),function(t){var n=e(this).height(),a=e(this).scrollTop(),s=a/e(this)[0].scrollHeight;o.scrollTop(0===a?0:a+n>=e(this)[0].scrollHeight?o[0].scrollHeight:o[0].scrollHeight*s),e.proxy(r.onscroll,i)(t)})},l=function(){n.find(".CodeMirror-scroll").unbind(a("scroll","touchmove"))},c=function(){o.bind(a("scroll","touchmove"),function(t){var o=e(this).height(),a=e(this).scrollTop(),s=a/e(this)[0].scrollHeight,l=n.find(".CodeMirror-scroll");l.scrollTop(0===a?0:a+o>=e(this)[0].scrollHeight?l[0].scrollHeight:l[0].scrollHeight*s),e.proxy(r.onpreviewscroll,i)(t)})},h=function(){o.unbind(a("scroll","touchmove"))};return n.bind({mouseover:s,mouseout:l,touchstart:s,touchend:l}),o.bind({mouseover:c,mouseout:h,touchstart:c,touchend:h}),this},bindChangeEvent:function(){var e=this,t=this.cm,o=this.settings;return t.on("change",function(){o.watch&&e.previewContainer.css("padding",o.autoHeight?"20px 20px 50px 40px":"20px"),i=setTimeout(function(){clearTimeout(i),e.save(),i=null},o.delay)}),this},loadedDisplay:function(t){t=t||!1;var i=this,o=this.editor,r=this.preview,n=this.settings;return this.containerMask.hide(),this.save(),n.watch&&r.show(),o.data("oldWidth",o.width()).data("oldHeight",o.height()),this.resize(),this.registerKeyMaps(),e(window).resize(function(){i.resize()}),this.bindScrollEvent().bindChangeEvent(),t||e.proxy(n.onload,this)(),this.state.loaded=!0,this},width:function(e){return this.editor.css("width","number"==typeof e?e+"px":e),this.resize(),this},height:function(e){return this.editor.css("height","number"==typeof e?e+"px":e),this.resize(),this},resize:function(t,i){t=t||null,i=i||null;var o=this.state,r=this.editor,n=this.preview,a=this.toolbar,s=this.settings,l=this.codeMirror;return t&&r.css("width","number"==typeof t?t+"px":t),!s.autoHeight||o.fullscreen||o.preview?(i&&r.css("height","number"==typeof i?i+"px":i),o.fullscreen&&r.height(e(window).height()),s.toolbar&&!s.readOnly?l.css("margin-top",a.height()+1).height(r.height()-a.height()):l.css("margin-top",0).height(r.height())):(r.css("height","auto"),l.css("height","auto")),s.watch?(l.width(r.width()/2),n.width(o.preview?r.width():r.width()/2),this.previewContainer.css("padding",s.autoHeight?"20px 20px 50px 40px":"20px"),s.toolbar&&!s.readOnly?n.css("top",a.height()):n.css("top",0),n.height(!s.autoHeight||o.fullscreen||o.preview?s.toolbar&&!s.readOnly?r.height()-a.height():r.height():"")):(l.width(r.width()),n.hide()),o.loaded&&e.proxy(s.onresize,this)(),this},save:function(){if(null===i)return this;var r=this,n=this.state,a=this.settings,s=this.cm,l=s.getValue(),c=this.previewContainer;if("gfm"!==a.mode&&"markdown"!==a.mode)return this.markdownTextarea.val(l),this;var h=t.$marked,d=this.markdownToC=[],u=this.markedRendererOptions={toc:a.toc,tocm:a.tocm,tocStartLevel:a.tocStartLevel,pageBreak:a.pageBreak,taskList:a.taskList,emoji:a.emoji,tex:a.tex,atLink:a.atLink,emailLink:a.emailLink,flowChart:a.flowChart,sequenceDiagram:a.sequenceDiagram,previewCodeHighlight:a.previewCodeHighlight},f=this.markedOptions={renderer:t.markedRenderer(d,u),gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:a.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};h.setOptions(f),l=t.filterHTMLTags(l,a.htmlDecode);var g=t.$marked(l,f);if(this.markdownTextarea.val(l),s.save(),a.saveHTMLToTextarea&&this.htmlTextarea.html(g),a.watch||!a.watch&&n.preview){if(c.html(g),this.previewCodeHighlight(),a.toc){var p=""===a.tocContainer?c:e(a.tocContainer),m=p.find("."+this.classPrefix+"toc-menu");p.attr("previewContainer",""===a.tocContainer?"true":"false"),""!==a.tocContainer&&m.length>0&&m.remove(),t.markdownToCRenderer(d,p,a.tocDropdown,a.tocStartLevel),(a.tocDropdown||p.find("."+this.classPrefix+"toc-menu").length>0)&&t.tocDropdownMenu(p,""!==a.tocTitle?a.tocTitle:this.lang.tocTitle),""!==a.tocContainer&&c.find(".markdown-toc").css("border","none")}a.tex&&(!t.kaTeXLoaded&&a.autoLoadModules?t.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,r.katexRender()}):(t.$katex=katex,this.katexRender())),(a.flowChart||a.sequenceDiagram)&&(o=setTimeout(function(){clearTimeout(o),r.flowChartAndSequenceDiagramRender(),o=null},10)),n.loaded&&e.proxy(a.onchange,this)()}return this},focus:function(){return this.cm.focus(),this},setCursor:function(e){return this.cm.setCursor(e),this},getCursor:function(){return this.cm.getCursor()},setSelection:function(e,t){return this.cm.setSelection(e,t),this},getSelection:function(){return this.cm.getSelection()},setSelections:function(e){return this.cm.setSelections(e),this},getSelections:function(){return this.cm.getSelections()},replaceSelection:function(e){return this.cm.replaceSelection(e),this},insertValue:function(e){return this.replaceSelection(e),this},appendMarkdown:function(e){var t=(this.settings,this.cm);return t.setValue(t.getValue()+e),this},setMarkdown:function(e){return this.cm.setValue(e||this.settings.markdown),this},getMarkdown:function(){return this.cm.getValue()},getValue:function(){return this.cm.getValue()},setValue:function(e){return this.cm.setValue(e),this},clear:function(){return this.cm.setValue(""),this},getHTML:function(){return this.settings.saveHTMLToTextarea?this.htmlTextarea.html():(alert("Error: settings.saveHTMLToTextarea == false"),!1)},getTextareaSavedHTML:function(){return this.getHTML()},getPreviewedHTML:function(){return this.settings.watch?this.previewContainer.html():(alert("Error: settings.watch == false"),!1)},watch:function(t){var o=this.settings;if(e.inArray(o.mode,["gfm","markdown"])<0)return this;if(this.state.watching=o.watch=!0,this.preview.show(),this.toolbar){var r=o.toolbarIconsClass.watch,n=o.toolbarIconsClass.unwatch,a=this.toolbar.find(".fa[name=watch]");a.parent().attr("title",o.lang.toolbar.watch),a.removeClass(n).addClass(r)}return this.codeMirror.css("border-right","1px solid #ddd").width(this.editor.width()/2),i=0,this.save().resize(),o.onwatch||(o.onwatch=t||function(){}),e.proxy(o.onwatch,this)(),this},unwatch:function(t){var i=this.settings;if(this.state.watching=i.watch=!1,this.preview.hide(),this.toolbar){var o=i.toolbarIconsClass.watch,r=i.toolbarIconsClass.unwatch,n=this.toolbar.find(".fa[name=watch]");n.parent().attr("title",i.lang.toolbar.unwatch),n.removeClass(o).addClass(r)}return this.codeMirror.css("border-right","none").width(this.editor.width()),this.resize(),i.onunwatch||(i.onunwatch=t||function(){}),e.proxy(i.onunwatch,this)(),this},show:function(t){t=t||function(){};var i=this;return this.editor.show(0,function(){e.proxy(t,i)()}),this},hide:function(t){t=t||function(){};var i=this;return this.editor.hide(0,function(){e.proxy(t,i)()}),this},previewing:function(){var i=this,o=this.editor,r=this.preview,n=this.toolbar,a=this.settings,s=this.codeMirror;if(e.inArray(a.mode,["gfm","markdown"])<0)return this;a.toolbar&&n&&(n.toggle(),n.find(".fa[name=preview]").toggleClass("active")),s.toggle();var l=function(e){e.shiftKey&&27===e.keyCode&&i.previewed()};"none"===s.css("display")?(this.state.preview=!0,this.state.fullscreen&&r.css("background","#fff"),o.find("."+this.classPrefix+"preview-close-btn").show().bind(t.mouseOrTouch("click","touchend"),function(){i.previewed()}),a.watch||this.save(),r.show().css({position:"static",top:0,width:o.width(),height:a.autoHeight&&!this.state.fullscreen?"auto":o.height()}),this.state.loaded&&e.proxy(a.onpreviewing,this)(),e(window).bind("keyup",l)):(e(window).unbind("keyup",l),this.previewed())},previewed:function(){var i=this.editor,o=this.preview,r=this.toolbar,n=this.settings,a=i.find("."+this.classPrefix+"preview-close-btn");return this.state.preview=!1,this.codeMirror.show(),n.toolbar&&r.show(),o[n.watch?"show":"hide"](),a.hide().unbind(t.mouseOrTouch("click","touchend")),o.css({background:null,position:"absolute",width:i.width()/2,height:n.autoHeight&&!this.state.fullscreen?"auto":i.height()-r.height(),top:n.toolbar?r.height():0}),this.state.loaded&&e.proxy(n.onpreviewed,this)(),this},fullscreen:function(){var t=this,i=this.state,o=this.editor,r=(this.preview,this.toolbar),n=this.settings,a=this.classPrefix+"fullscreen";r&&r.find(".fa[name=fullscreen]").parent().toggleClass("active");var s=function(e){e.shiftKey||27!==e.keyCode||i.fullscreen&&t.fullscreenExit()};return o.hasClass(a)?(e(window).unbind("keyup",s),this.fullscreenExit()):(i.fullscreen=!0,e("html,body").css("overflow","hidden"),o.css({position:"fixed",top:0,left:0,margin:0,border:"none",width:e(window).width(),height:e(window).height()}).addClass(a),this.resize(),e.proxy(n.onfullscreen,this)(),e(window).bind("keyup",s)),this},fullscreenExit:function(){var t=this.editor,i=this.settings,o=this.toolbar,r=this.classPrefix+"fullscreen";return this.state.fullscreen=!1,o&&o.find(".fa[name=fullscreen]").parent().removeClass("active"),e("html,body").css("overflow",""),t.css({position:"",top:"",left:"",margin:"0 auto 15px",width:t.data("oldWidth"),height:t.data("oldHeight"),border:"1px solid #ddd"}).removeClass(r),this.resize(),e.proxy(i.onfullscreenExit,this)(),this},executePlugin:function(i,o){var r=this,n=this.cm,a=this.settings;return o=a.pluginPath+o,"function"==typeof define?"undefined"==typeof this[i]?(alert("Error: "+i+" plugin is not found, you are not load this plugin."),this):(this[i](n),this):(e.inArray(o,t.loadFiles.plugin)<0?t.loadPlugin(o,function(){t.loadPlugins[i]=r[i],r[i](n)}):e.proxy(t.loadPlugins[i],this)(n),this)},search:function(e){var t=this.settings;return t.searchReplace?(t.readOnly||this.cm.execCommand(e||"find"),this):(alert("Error: settings.searchReplace == false"),this)},searchReplace:function(){return this.search("replace"),this},searchReplaceAll:function(){return this.search("replaceAll"),this}},t.fn.init.prototype=t.fn,t.dialogLockScreen=function(){var t=this.settings||{dialogLockScreen:!0};t.dialogLockScreen&&e("html,body").css("overflow","hidden")},t.dialogShowMask=function(t){var i=this.editor,o=this.settings||{dialogShowMask:!0};t.css({top:(e(window).height()-t.height())/2+"px",left:(e(window).width()-t.width())/2+"px"}),o.dialogShowMask&&i.children("."+this.classPrefix+"mask").css("z-index",parseInt(t.css("z-index"))-1).show()},t.toolbarHandlers={undo:function(){this.cm.undo()},redo:function(){this.cm.redo()},bold:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("**"+i+"**"),""===i&&e.setCursor(t.line,t.ch+2)},del:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("~~"+i+"~~"),""===i&&e.setCursor(t.line,t.ch+2)},italic:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("*"+i+"*"),""===i&&e.setCursor(t.line,t.ch+1)},quote:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("> "+i),e.setCursor(t.line,""===i?t.ch+2:t.ch+i.length+2)},ucfirst:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.firstUpperCase(i)),e.setSelections(o)},ucwords:function(){var e=this.cm,i=e.getSelection(),o=e.listSelections();e.replaceSelection(t.wordsFirstUpperCase(i)),e.setSelections(o)},uppercase:function(){var e=this.cm,t=e.getSelection(),i=e.listSelections();e.replaceSelection(t.toUpperCase()),e.setSelections(i)},lowercase:function(){var e=this.cm,t=(e.getCursor(),e.getSelection()),i=e.listSelections();e.replaceSelection(t.toLowerCase()),e.setSelections(i)},h1:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("# "+t)},h2:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("## "+t)},h3:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("### "+t)},h4:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("#### "+t)},h5:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("##### "+t)},h6:function(){var e=this.cm,t=e.getSelection();e.replaceSelection("###### "+t)},"list-ul":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("- "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":"- "+i[o];e.replaceSelection(i.join("\n"))}},"list-ol":function(){var e=this.cm,t=(e.getCursor(),e.getSelection());if(""===t)e.replaceSelection("1. "+t);else{for(var i=t.split("\n"),o=0,r=i.length;r>o;o++)i[o]=""===i[o]?"":o+1+". "+i[o];e.replaceSelection(i.join("\n"))}},hr:function(){{var e=this.cm;e.getCursor(),e.getSelection()}e.replaceSelection("------------")},tex:function(){if(!this.settings.tex)return alert("settings.tex === false"),this;var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("$$"+i+"$$"),""===i&&e.setCursor(t.line,t.ch+2)},link:function(){this.executePlugin("linkDialog","link-dialog/link-dialog")},"reference-link":function(){this.executePlugin("referenceLinkDialog","reference-link-dialog/reference-link-dialog")},pagebreak:function(){if(!this.settings.pageBreak)return alert("settings.pageBreak === false"),this;{var e=this.cm;e.getSelection()}e.replaceSelection("\r\n[========]\r\n")},image:function(){this.executePlugin("imageDialog","image-dialog/image-dialog")},code:function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection("`"+i+"`"),""===i&&e.setCursor(t.line,t.ch+1)},"code-block":function(){this.executePlugin("codeBlockDialog","code-block-dialog/code-block-dialog")},"preformatted-text":function(){this.executePlugin("preformattedTextDialog","preformatted-text-dialog/preformatted-text-dialog")},table:function(){this.executePlugin("tableDialog","table-dialog/table-dialog")},datetime:function(){var e=this.cm,i=(e.getSelection(),new Date,this.settings.lang.name),o=t.dateFormat()+" "+t.dateFormat("zh-cn"===i||"zh-tw"===i?"cn-week-day":"week-day");
+
+e.replaceSelection(o)},emoji:function(){this.executePlugin("emojiDialog","emoji-dialog/emoji-dialog")},"html-entities":function(){this.executePlugin("htmlEntitiesDialog","html-entities-dialog/html-entities-dialog")},"goto-line":function(){this.executePlugin("gotoLineDialog","goto-line-dialog/goto-line-dialog")},watch:function(){this[this.settings.watch?"unwatch":"watch"]()},preview:function(){this.previewing()},fullscreen:function(){this.fullscreen()},clear:function(){this.clear()},search:function(){this.search()},help:function(){this.executePlugin("helpDialog","help-dialog/help-dialog")},info:function(){this.showInfoDialog()}},t.keyMaps={"Ctrl-1":"h1","Ctrl-2":"h2","Ctrl-3":"h3","Ctrl-4":"h4","Ctrl-5":"h5","Ctrl-6":"h6","Ctrl-B":"bold","Ctrl-D":"datetime","Ctrl-E":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();return this.settings.emoji?(e.replaceSelection(":"+i+":"),void(""===i&&e.setCursor(t.line,t.ch+1))):void alert("Error: settings.emoji == false")},"Ctrl-Alt-G":"goto-line","Ctrl-H":"hr","Ctrl-I":"italic","Ctrl-K":"code","Ctrl-L":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+1)},"Ctrl-U":"list-ul","Shift-Ctrl-A":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();return this.settings.atLink?(e.replaceSelection("@"+i),void(""===i&&e.setCursor(t.line,t.ch+1))):void alert("Error: settings.atLink == false")},"Shift-Ctrl-C":"code","Shift-Ctrl-Q":"quote","Shift-Ctrl-S":"del","Shift-Ctrl-K":"tex","Shift-Alt-C":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection();e.replaceSelection(["```",i,"```"].join("\n")),""===i&&e.setCursor(t.line,t.ch+3)},"Shift-Ctrl-Alt-C":"code-block","Shift-Ctrl-H":"html-entities","Shift-Alt-H":"help","Shift-Ctrl-E":"emoji","Shift-Ctrl-U":"uppercase","Shift-Alt-U":"ucwords","Shift-Ctrl-Alt-U":"ucfirst","Shift-Alt-L":"lowercase","Shift-Ctrl-I":function(){var e=this.cm,t=e.getCursor(),i=e.getSelection(),o=""===i?"":' "'+i+'"';e.replaceSelection("!["+i+"]("+o+")"),""===i&&e.setCursor(t.line,t.ch+4)},"Shift-Ctrl-Alt-I":"image","Shift-Ctrl-L":"link","Shift-Ctrl-O":"list-ol","Shift-Ctrl-P":"preformatted-text","Shift-Ctrl-T":"table","Shift-Alt-P":"pagebreak",F9:"watch",F10:"preview",F11:"fullscreen"};var r=function(e){return String.prototype.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};t.trim=r;var n=function(e){return e.toLowerCase().replace(/\b(\w)|\s(\w)/g,function(e){return e.toUpperCase()})};t.ucwords=t.wordsFirstUpperCase=n;var a=function(e){return e.toLowerCase().replace(/\b(\w)/,function(e){return e.toUpperCase()})};return t.firstUpperCase=t.ucfirst=a,t.urls={atLinkBase:"https://github.com/"},t.regexs={atLink:/@(\w+)/g,email:/(\w+)@(\w+)\.(\w+)\.?(\w+)?/g,emailLink:/(mailto:)?([\w\.\_]+)@(\w+)\.(\w+)\.?(\w+)?/g,emoji:/:([\-\w]+):/g,emojiDatetime:/(\d{2}:\d{2}:\d{2})/g,twemoji:/:(tw-([\w]+)-?(\w+)?):/g,fontAwesome:/:(fa-([\w]+)(-(\w+)){0,}):/g,editormdLogo:/:(editormd-logo-?(\w+)?):/g,pageBreak:/^\[[=]{8,}\]$/},t.emoji={path:"http://www.emoji-cheat-sheet.com/graphics/emojis/",ext:".png"},t.twemoji={path:"http://twemoji.maxcdn.com/36x36/",ext:".png"},t.markedRenderer=function(i,o){var n={toc:!0,tocm:!1,tocStartLevel:1,pageBreak:!0,atLink:!0,emailLink:!0,taskList:!1,emoji:!1,tex:!1,flowChart:!1,sequenceDiagram:!1},a=e.extend(n,o||{}),s=t.$marked,l=new s.Renderer;i=i||[];var c=t.regexs,h=c.atLink,d=c.emoji,u=c.email,f=c.emailLink,g=c.twemoji,p=c.fontAwesome,m=c.editormdLogo,w=c.pageBreak;return l.emoji=function(e){e=e.replace(t.regexs.emojiDatetime,function(e){return e.replace(/:/g,":")});var i=e.match(d);if(!i||!a.emoji)return e;for(var o=0,r=i.length;r>o;o++)e=e.replace(new RegExp(i[o]),function(e){var i=e.match(p),o=e.replace(/:/g,"");if(i)for(var r=0,n=i.length;n>r;r++){var a=i[r].replace(/:/g,"");return''}else{var s=e.match(m),l=e.match(g);if(s)for(var c=0,h=s.length;h>c;c++){var d=s[c].replace(/:/g,"");return''}else{if(!l)return'';for(var u=0,f=l.length;f>u;u++){var w=l[u].replace(/:/g,"").replace("tw-","");return''}}}});return e},l.atLink=function(i){return h.test(i)?(a.atLink&&(i=i.replace(u,function(e){return e.replace(/@/g,"_#_@_#_")}),i=i.replace(h,function(e,i){return''+e+""}).replace(/_#_@_#_/g,"@")),a.emailLink&&(i=i.replace(f,function(t,i,o,r,n){return!i&&e.inArray(n,"jpg|jpeg|png|gif|webp|ico|icon|pdf".split("|"))<0?''+t+"":t})),i):i},l.link=function(e,t,i){if(this.options.sanitize){try{var o=decodeURIComponent(unescape(e)).replace(/[^\w:]/g,"").toLowerCase()}catch(r){return""}if(0===o.indexOf("javascript:"))return""}var n=''+i.replace(/@/g,"@")+""):(t&&(n+=' title="'+t+'"'),n+=">"+i+"")},l.heading=function(e,t){var o=e,n=/\s*\]*)\>(.*)\<\/a\>\s*/;if(n.test(e)){var a=[];e=e.split(/\]+)\>([^\>]*)\<\/a\>/);for(var s=0,l=e.length;l>s;s++)a.push(e[s].replace(/\s*href\=\"(.*)\"\s*/g,""));e=a.join(" ")}e=r(e);var c=e.toLowerCase().replace(/[^\w]+/g,"-"),h={text:e,level:t,slug:c},d=/^[\u4e00-\u9fa5]+$/.test(e),u=d?escape(e).replace(/\%/g,""):e.toLowerCase().replace(/[^\w]+/g,"-");i.push(h);var f="';return f+='',f+='',f+=this.atLink(n?this.emoji(o):this.emoji(e)),f+=""},l.pageBreak=function(e){return w.test(e)&&a.pageBreak&&(e='
'),e},l.paragraph=function(e){var i=/\$\$(.*)\$\$/g.test(e),o=/^\$\$(.*)\$\$$/.test(e),r=o?' class="'+t.classNames.tex+'"':"",n=a.tocm?/^(\[TOC\]|\[TOCM\])$/.test(e):/^\[TOC\]$/.test(e),s=/^\[TOCM\]$/.test(e);e=!o&&i?e.replace(/(\$\$([^\$]*)\$\$)+/g,function(e,i){return''+i.replace(/\$/g,"")+""}):o?e.replace(/\$/g,""):e;var l=''+e+"
";return n?s?'
":l:w.test(e)?this.pageBreak(e):""+this.atLink(this.emoji(e))+"
\n"},l.code=function(e,t){return"seq"===t||"sequence"===t?''+e+"
":"flow"===t?''+e+"
":s.Renderer.prototype.code.apply(this,arguments)},l.tablecell=function(e,t){var i=t.header?"th":"td",o=t.align?"<"+i+' style="text-align:'+t.align+'">':"<"+i+">";return o+this.atLink(this.emoji(e))+""+i+">\n"},l.listitem=function(e){return a.taskList&&/^\s*\[[x\s]\]\s*/.test(e)?(e=e.replace(/^\s*\[\s\]\s*/,' ').replace(/^\s*\[x\]\s*/,' '),'- '+this.atLink(this.emoji(e))+"
"):"- "+this.atLink(this.emoji(e))+"
"},l},t.markdownToCRenderer=function(e,t,i,o){var r="",n=0,a=this.classPrefix;o=o||1;for(var s=0,l=e.length;l>s;s++){var c=e[s].text,h=e[s].level;o>h||(r+=h>n?"":n>h?new Array(n-h+2).join("
"):"",r+=''+c+"",n=h)}var d=t.find(".markdown-toc");if(d.length<1&&"false"===t.attr("previewContainer")){var u='';u=i?'":u,t.html(u),d=t.find(".markdown-toc")}return i&&d.wrap('
'),d.html('').children(".markdown-toc-list").html(r.replace(/\r?\n?\\<\/ul\>/g,"")),d},t.tocDropdownMenu=function(t,i){i=i||"Table of Contents";var o=400,r=t.find("."+this.classPrefix+"toc-menu");return r.each(function(){var t=e(this),r=t.children(".markdown-toc"),n='',a='",s=r.children("ul"),l=s.find("li");r.append(a),l.first().before(""+i+" "+n+"
"),t.mouseover(function(){s.show(),l.each(function(){var t=e(this),i=t.children("ul");if(""===i.html()&&i.remove(),i.length>0&&""!==i.html()){var r=t.children("a").first();r.children(".fa").length<1&&r.append(e(n).css({"float":"right",paddingTop:"4px"}))}t.mouseover(function(){i.css("z-index",o).show(),o+=1}).mouseleave(function(){i.hide()})})}).mouseleave(function(){s.hide()})}),r},t.filterHTMLTags=function(e,t){if("string"==typeof t)for(var i=t.split(","),o=0,r=i.length;r>o;o++){var n=i[o];e=e.replace(new RegExp("]*)>","igm"),"").replace(new RegExp("","igm"),"")}return e},t.markdownToHTML=function(i,o){var r={gfm:!0,toc:!0,tocm:!1,tocStartLevel:1,tocTitle:"目录",tocDropdown:!1,markdown:"",htmlDecode:!1,autoLoadKaTeX:!0,pageBreak:!0,atLink:!0,emailLink:!0,tex:!1,taskList:!1,emoji:!1,flowChart:!1,sequenceDiagram:!1,previewCodeHighlight:!0};t.$marked=marked;var n=e("#"+i),a=n.settings=e.extend(!0,r,o||{}),s=n.find("textarea");s.length<1&&(n.append(""),s=n.find("textarea"));var l=""===a.markdown?s.val():a.markdown,c=[],h={toc:a.toc,tocm:a.tocm,tocStartLevel:a.tocStartLevel,taskList:a.taskList,emoji:a.emoji,tex:a.tex,pageBreak:a.pageBreak,atLink:a.atLink,emailLink:a.emailLink,flowChart:a.flowChart,sequenceDiagram:a.sequenceDiagram,previewCodeHighlight:a.previewCodeHighlight},d={renderer:t.markedRenderer(c,h),gfm:a.gfm,tables:!0,breaks:!0,pedantic:!1,sanitize:a.htmlDecode?!1:!0,smartLists:!0,smartypants:!0};l=t.filterHTMLTags(l,a.htmlDecode);var u=marked(l,d);if(s.val(l),n.addClass("markdown-body "+this.classPrefix+"html-preview").append(u),a.toc&&(n.tocContainer=this.markdownToCRenderer(c,n,a.tocDropdown,a.tocStartLevel),(a.tocDropdown||n.find("."+this.classPrefix+"toc-menu").length>0)&&this.tocDropdownMenu(n,a.tocTitle)),a.previewCodeHighlight&&(n.find("pre").addClass("prettyprint linenums"),prettyPrint()),t.isIE8||(a.flowChart&&n.find(".flowchart").flowChart(),a.sequenceDiagram&&n.find(".sequence-diagram").sequenceDiagram({theme:"simple"})),a.tex){var f=function(){n.find("."+t.classNames.tex).each(function(){var t=e(this);katex.render(t.html(),t[0])})};!a.autoLoadKaTeX||t.$katex||t.kaTeXLoaded?f():this.loadKaTeX(function(){t.$katex=katex,t.kaTeXLoaded=!0,f()})}return n.getMarkdown=function(){return s.val()},n},t.themes=["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"],t.loadPlugins={},t.loadFiles={js:[],css:[],plugin:[]},t.loadPlugin=function(e,i,o){i=i||function(){},this.loadScript(e,function(){t.loadFiles.plugin.push(e),i()},o)},t.loadCSS=function(e,i,o){o=o||"head",i=i||function(){};var r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.onload=r.onreadystatechange=function(){t.loadFiles.css.push(e),i()},r.href=e+".css","head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.isIE="Microsoft Internet Explorer"==navigator.appName,t.isIE8=t.isIE&&"8."==navigator.appVersion.match(/8./i),t.loadScript=function(e,i,o){o=o||"head",i=i||function(){};var r=null;r=document.createElement("script"),r.id=e.replace(/[\./]+/g,"-"),r.type="text/javascript",r.src=e+".js",t.isIE8?r.onreadystatechange=function(){r.readyState&&("loaded"===r.readyState||"complete"===r.readyState)&&(r.onreadystatechange=null,t.loadFiles.js.push(e),i())}:r.onload=function(){t.loadFiles.js.push(e),i()},"head"===o?document.getElementsByTagName("head")[0].appendChild(r):document.body.appendChild(r)},t.katexURL={css:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min",js:"http://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.1.1/katex.min"},t.kaTeXLoaded=!1,t.loadKaTeX=function(e){t.loadCSS(t.katexURL.css,function(){t.loadScript(t.katexURL.js,e||function(){})})},t.lockScreen=function(t){e("html,body").css("overflow",t?"hidden":"")},t.createDialog=function(i){var o={name:"",width:420,height:240,title:"",drag:!0,closed:!0,content:"",mask:!0,maskStyle:{backgroundColor:"#fff",opacity:.1},lockScreen:!0,footer:!0,buttons:!1};i=e.extend(!0,o,i);var r=this.editor,n=t.classPrefix,a=(new Date).getTime(),s=""===i.name?n+"dialog-"+a:i.name,l=t.mouseOrTouch,c='';""!==i.title&&(c+='"),i.closed&&(c+='
'),c+='
'+i.content,(i.footer||"string"==typeof i.footer)&&(c+='"),c+="
",c+='
',c+='
',c+="
",r.append(c);var h=r.find("."+s);h.lockScreen=function(t){return i.lockScreen&&e("html,body").css("overflow",t?"hidden":""),h},h.showMask=function(){return i.mask&&r.find("."+n+"mask").css(i.maskStyle).css("z-index",t.dialogZindex-1).show(),h},h.hideMask=function(){return i.mask&&r.find("."+n+"mask").hide(),h},h.loading=function(e){var t=h.find("."+n+"dialog-mask");return t[e?"show":"hide"](),h},h.lockScreen(!0).showMask(),h.show().css({zIndex:t.dialogZindex,border:t.isIE8?"1px solid #ddd":"",width:"number"==typeof i.width?i.width+"px":i.width,height:"number"==typeof i.height?i.height+"px":i.height});var d=function(){h.css({top:(e(window).height()-h.height())/2+"px",left:(e(window).width()-h.width())/2+"px"})};if(d(),e(window).resize(d),h.children("."+n+"dialog-close").bind(l("click","touchend"),function(){h.hide().lockScreen(!1).hideMask()}),"object"==typeof i.buttons){var u=h.footer=h.find("."+n+"dialog-footer");for(var f in i.buttons){var g=i.buttons[f],p=n+f+"-btn";u.append('"),g[1]=e.proxy(g[1],h),u.children("."+p).bind(l("click","touchend"),g[1])}}if(""!==i.title&&i.drag){var m,w,v=h.children("."+n+"dialog-header");i.mask||v.bind(l("click","touchend"),function(){t.dialogZindex+=2,h.css("z-index",t.dialogZindex)}),v.mousedown(function(e){e=e||window.event,m=e.clientX-parseInt(h[0].style.left),w=e.clientY-parseInt(h[0].style.top),document.onmousemove=x});var k=function(e){e.removeClass(n+"user-unselect").off("selectstart")},b=function(e){e.addClass(n+"user-unselect").on("selectstart",function(){return!1})},x=function(t){t=t||window.event;var i,o,r=parseInt(h[0].style.left),n=parseInt(h[0].style.top);r>=0?r+h.width()<=e(window).width()?i=t.clientX-m:(i=e(window).width()-h.width(),document.onmousemove=null):(i=0,document.onmousemove=null),n>=0?o=t.clientY-w:(o=0,document.onmousemove=null),document.onselectstart=function(){return!1},b(e("body")),b(h),h[0].style.left=i+"px",h[0].style.top=o+"px"};document.onmouseup=function(){k(e("body")),k(h),document.onselectstart=null,document.onmousemove=null},v.touchDraggable=function(){var t=null,i=function(i){var o=i.originalEvent,r=e(this).parent().position();t={x:o.changedTouches[0].pageX-r.left,y:o.changedTouches[0].pageY-r.top}},o=function(i){i.preventDefault();var o=i.originalEvent;e(this).parent().css({top:o.changedTouches[0].pageY-t.y,left:o.changedTouches[0].pageX-t.x})};this.bind("touchstart",i).bind("touchmove",o)},v.touchDraggable()}return t.dialogZindex+=2,h},t.mouseOrTouch=function(e,t){e=e||"click",t=t||"touchend";var i=e;try{document.createEvent("TouchEvent"),i=t}catch(o){}return i},t.dateFormat=function(e){e=e||"";var t=function(e){return 10>e?"0"+e:e},i=new Date,o=i.getFullYear(),r=o.toString().slice(2,4),n=t(i.getMonth()+1),a=t(i.getDate()),s=i.getDay(),l=t(i.getHours()),c=t(i.getMinutes()),h=t(i.getSeconds()),d=t(i.getMilliseconds()),u="",f=r+"-"+n+"-"+a,g=o+"-"+n+"-"+a,p=l+":"+c+":"+h;switch(e){case"UNIX Time":u=i.getTime();break;case"UTC":u=i.toUTCString();break;case"yy":u=r;break;case"year":case"yyyy":u=o;break;case"month":case"mm":u=n;break;case"cn-week-day":case"cn-wd":var m=["日","一","二","三","四","五","六"];u="星期"+m[s];break;case"week-day":case"wd":var w=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];u=w[s];break;case"day":case"dd":u=a;break;case"hour":case"hh":u=l;break;case"min":case"ii":u=c;break;case"second":case"ss":u=h;break;case"ms":u=d;break;case"yy-mm-dd":u=f;break;case"yyyy-mm-dd":u=g;break;case"yyyy-mm-dd h:i:s ms":case"full + ms":u=g+" "+p+" "+d;break;case"full":case"yyyy-mm-dd h:i:s":default:u=g+" "+p}return u},t}});
\ No newline at end of file
diff --git a/editormd.min.js.map b/editormd.min.js.map
deleted file mode 100644
index b0635301..00000000
--- a/editormd.min.js.map
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! Editor.md v1.3.0 | editormd.min.js.map | A simple online markdown editor. | MIT License | By: Pandao | https://github.com/pandao/editor.md | 2015-03-12 */
-{"version":3,"file":"editormd.min.js","sources":["editormd.min.js"],"names":["factory","require","exports","module","define","amd","window","editormd","$","jQuery","Zepto","id","options","fn","init","title","$name","version","homePage","classPrefix","toolbarModes","full","simple","mini","defaults","mode","theme","value","markdown","width","height","path","pluginPath","autoLoadModules","watch","placeholder","codeFold","autoHeight","autoCloseTags","searchReplace","readOnly","lineNumbers","matchWordHighlight","styleActiveLine","dialogLockScreen","dialogShowMask","dialogDraggable","dialogMaskBgColor","dialogMaskOpacity","fontSize","saveHTMLToTextarea","disabledKeyMaps","onload","onresize","onchange","onwatch","onunwatch","onpreviewing","onpreviewed","onfullscreen","onfullscreenExit","onscroll","onpreviewscroll","imageUpload","imageFormats","imageUploadURL","crossDomainUpload","uploadCallbackURL","toc","tocStartLevel","htmlDecode","atLink","emailLink","taskList","emoji","tex","flowChart","sequenceDiagram","previewCodeHighlight","toolbar","toolbarAutoFixed","toolbarIcons","toolbarTitles","toolbarHandlers","ucwords","lowercase","toolbarCustomIcons","toolbarIconsClass","undo","redo","bold","del","italic","quote","uppercase","h1","h2","h3","h4","h5","h6","list-ul","list-ol","hr","link","anchor","image","code","preformatted-text","code-block","table","datetime","htmlEntities","unwatch","preview","fullscreen","clear","help","info","toolbarIconTexts","lang","name","description","buttons","enter","cancel","close","dialog","url","urlTitle","urlEmpty","nameEmpty","titleEmpty","alt","uploadButton","imageURLEmpty","uploadFileEmpty","formatNotAllowed","preformattedText","emptyAlert","codeBlock","selectLabel","selectDefaultText","otherLanguage","unselectedLanguageAlert","codeEmptyAlert","classNames","dialogZindex","$katex","$marked","$CodeMirror","$prettyPrint","prototype","state","watching","loaded","_this","this","editor","settings","extend","textarea","html","hasClass","addClass","css","markdownTextarea","children","length","append","attr","appendElements","join","mask","val","htmlTextarea","previewContainer","katex","loadCSS","CodeMirror","marked","setCodeMirror","setToolbar","loadedDisplay","loadQueues","loadPath","loadFlowChartOrSequenceDiagram","isIE8","loadScript","setTheme","cm","setOption","codeMirrorConfig","tabSize","dragDrop","autofocus","indentUnit","lineWrapping","extraKeys","Ctrl-Q","foldCode","getCursor","foldGutter","gutters","matchBrackets","indentWithTabs","styleSelectedText","autoCloseBrackets","showTrailingSpace","highlightSelectionMatches","showToken","codeEditor","fromTextArea","codeMirror","cmElement","setValue","getCodeMirrorOption","key","getOption","setCodeMirrorOption","addKeyMap","map","bottom","removeKeyMap","extends","arguments","proxy","set","config","recreate","on","eventType","callback","off","showToolbar","find","show","resize","hideToolbar","hide","setToolbarAutoFixed","fixed","autoFixedHandle","top","scrollTop","offset","position","left","bind","unbind","icons","toolbarMenu","menu","i","len","isHeader","test","index","iconTexts","iconClass","setToolbarHandler","getToolbarHandles","toolbarIconHandlers","mouseOrTouch","icon","cursor","selection","getSelection","activeIcon","focus","createDialog","createInfoDialog","infoDialogHTML","infoDialog","hideInfoDialog","infoDialogPosition","_infoDialogPosition","showInfoDialog","lockScreen","opacity","backgroundColor","lock","remove","saveToTextareas","registerKeyMaps","prettyPrint","katexRender","each","render","flowChartAndSequenceDiagramRender","keyMap","inArray","keyMaps","handle","keydown","event","keymaps","120","121","122","keyCode","data","codeEditorBindScroll","percent","scrollHeight","codeEditorUnbindScroll","previewBindScroll","codeView","previewUnbindScroll","mouseover","mouseout","touchstart","touchend","codeMirrorValue","getValue","innerText","markdownToC","rendererOptions","markedRendererOptions","markedOptions","renderer","markedRenderer","gfm","tables","breaks","pedantic","sanitize","smartLists","smartypants","setOptions","filterHTMLTags","newMarkdownDoc","save","markdownToCRenderer","kaTeXLoaded","loadKaTeX","timer","setTimeout","clearTimeout","setCursor","setSelection","from","to","setSelections","ranges","getSelections","replaceSelection","insertValue","setMarkdown","md","getMarkdown","getHTML","alert","getTextareaSavedHTML","getPreviewedHTML","watchIcon","unWatchIcon","parent","removeClass","previewing","toggle","toggleClass","escHandle","shiftKey","previewed","previewCloseBtn","background","fullscreenClass","fullscreenExit","margin","border","executePlugin","loadFiles","plugin","loadPlugin","loadPlugins","parseInt","line","ch","ucfirst","selections","listSelections","firstUpperCase","wordsFirstUpperCase","toUpperCase","toLowerCase","selectionText","split","langName","Date","datefmt","dateFormat","Ctrl-B","Ctrl-I","Ctrl-K","Shift-Ctrl-C","Shift-Ctrl-Q","Shift-Ctrl-S","Ctrl-H","Ctrl-1","Ctrl-2","Ctrl-3","Ctrl-4","Ctrl-5","Ctrl-6","Ctrl-D","Ctrl-E","Ctrl-L","Ctrl-U","Shift-Ctrl-A","Shift-Alt-C","Shift-Ctrl-Alt-C","Shift-Ctrl-H","Shift-Alt-H","Shift-Ctrl-E","Shift-Ctrl-U","Shift-Alt-U","Shift-Ctrl-Alt-U","Shift-Alt-L","Shift-Ctrl-I","Shift-Ctrl-Alt-I","Shift-Ctrl-L","Shift-Ctrl-O","Shift-Ctrl-P","Shift-Ctrl-T","F9","F10","F11","trim","str","String","replace","$1","urls","atLinkBase","regexs","email","emojiDatetime","twemoji","fontAwesome","editormdLogo","ext","Renderer","atLinkReg","emojiReg","emailReg","emailLinkReg","twemojiReg","faIconReg","editormdLogoReg","text","matchs","match","RegExp","faMatchs","fa","len1","faName","emdlogoMathcs","twemojiMatchs","x","len2","logoName","t","len3","twe","$2","href","prot","decodeURIComponent","unescape","e","indexOf","out","heading","level","linkText","hasLinkReg","tempText","push","escapedText","slug","isChinese","escape","headingHTML","headerPrefix","paragraph","isTeXInline","isTeXLine","isTeXAddClass","isToC","apply","tablecell","content","flags","type","tag","align","listitem","container","startLevel","lastLevel","Array","tocContainer","filters","filterTags","markdownToHTML","autoLoadKaTeX","div","saveTo","markdownDoc","markdownParsed","katexHandle","themes","js","fileName","into","document","createElement","rel","onreadystatechange","getElementsByTagName","appendChild","body","isIE","navigator","appName","appVersion","script","src","readyState","katexURL","drag","closed","maskStyle","footer","guid","getTime","dialogName","showMask","hideMask","loading","zIndex","dialogPosition","btn","btnClassName","posX","posY","dialogHeader","mousedown","clientX","style","clientY","onmousemove","moveAction","userCanSelect","obj","userUnselect","nowLeft","nowTop","onselectstart","onmouseup","touchDraggable","start","orig","originalEvent","pos","changedTouches","pageX","y","pageY","move","preventDefault","mouseEventType","touchEventType","createEvent","format","addZero","d","date","year","getFullYear","year2","toString","slice","month","getMonth","day","getDate","weekDay","getDay","hour","getHours","min","getMinutes","second","getSeconds","ms","getMilliseconds","ymd","fymd","hms","toUTCString","cnWeekDays","weekDays"],"mappings":"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","sourceRoot":"./"}
\ No newline at end of file
diff --git a/examples/@links.html b/examples/@links.html
index 91ed77c3..63eadc0c 100644
--- a/examples/@links.html
+++ b/examples/@links.html
@@ -94,6 +94,20 @@ @links
This @pandao an H2 @pandao
-------------
+
+http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png
+
+http://socialpro.demo.ipandao.com/app/images/welcom-logo@3x.png
+
+http://socialpro.demo.ipandao.com/app/images/welcom-logo@4x.png
+
+[![http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png](http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png)](http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png)
+
+
+[http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png](http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png)
+[http://socialpro.demo.ipandao.com/app/images/welcom-logo@3x.png](http://socialpro.demo.ipandao.com/app/images/welcom-logo@3x.png)
+
+![http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png](http://socialpro.demo.ipandao.com/app/images/welcom-logo@2x.png)
diff --git a/examples/auto-height.html b/examples/auto-height.html
index aa372a6d..23469303 100644
--- a/examples/auto-height.html
+++ b/examples/auto-height.html
@@ -10,16 +10,17 @@
- Auto height
+ Auto height test
+
+
+
@@ -32,9 +33,21 @@
Auto height
$(function() {
testEditor = editormd("test-editormd", {
- width : "90%",
- autoHeight : true,
- path : '../lib/'
+ width : "90%",
+ autoHeight : true,
+ path : "../lib/",
+ htmlDecode : "style,script,iframe",
+ tex : true,
+ emoji : true,
+ taskList : true,
+ flowChart : true,
+ sequenceDiagram : true
+ });
+
+ $("#append-btn").click(function(){
+ $.get("./test.md", function(md){
+ testEditor.appendMarkdown(md);
+ });
});
});
diff --git a/examples/delay-renderer-preview.html b/examples/delay-renderer-preview.html
new file mode 100644
index 00000000..8b52ccea
--- /dev/null
+++ b/examples/delay-renderer-preview.html
@@ -0,0 +1,56 @@
+
+
+
+
+
Delay Rerender & Preview - Editor.md examples
+
+
+
+
+
+
+
+ Delay Rerender & Preview
+ P.S. If you input the content too much and too fast, You can setting the delay value.
+ P.S. 适用于输入内容太多太快的情形,但要是一个合理的值,不然会显得预览太慢。打字慢会相对显得慢,打字快时则相对显得快。
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/examples/form-get-value.html b/examples/form-get-value.html
index e61f73ca..e5d97114 100644
--- a/examples/form-get-value.html
+++ b/examples/form-get-value.html
@@ -15,7 +15,7 @@
表单取值