diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..63b42c78 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,5 @@ +FROM nginx +RUN mkdir /app +COPY ./index.html /app/ +COPY ./dist /app/dist/ +COPY nginx.conf /etc/nginx/nginx.conf \ No newline at end of file diff --git a/README.md b/README.md index be4fc059..06bfaa6a 100644 --- a/README.md +++ b/README.md @@ -31,13 +31,26 @@ Github:[releases](https://github.com/wanglin2/mind-map/releases)。百度云 - [x] 支持逻辑结构图、思维导图、组织结构图、目录组织图、时间轴(横向、竖向)、鱼骨图等结构 - [x] 内置多种主题,允许高度自定义样式,支持注册新主题 - [x] 节点内容支持文本(普通文本、富文本)、图片、图标、超链接、备注、标签、概要、数学公式 -- [x] 节点支持拖拽(拖拽移动、自由调整)、多种节点形状,支持使用 DDM 完全自定义节点内容 +- [x] 节点支持拖拽(拖拽移动、自由调整)、多种节点形状;支持扩展节点内容、支持使用 DDM 完全自定义节点内容 - [x] 支持画布拖动、缩放 - [x] 支持鼠标按键拖动选择和 Ctrl+左键两种多选节点方式 -- [x] 支持导出为`json`、`png`、`svg`、`pdf`、`markdown`、`xmind`,支持从`json`、`xmind`、`markdown`导入 -- [x] 支持快捷键、前进后退、关联线、搜索替换、小地图、水印、滚动条 +- [x] 支持导出为`json`、`png`、`svg`、`pdf`、`markdown`、`xmind`、`txt`,支持从`json`、`xmind`、`markdown`导入 +- [x] 支持快捷键、前进后退、关联线、搜索替换、小地图、水印、滚动条、手绘风格、彩虹线条 - [x] 提供丰富的配置,满足各种场景各种使用习惯 - [x] 支持协同编辑 +- [x] 支持演示模式 + +官方提供了如下插件,可根据需求按需引入(某个功能不生效大概率是因为你没有引入对应的插件),具体使用方式请查看文档: + +> RichText(节点富文本插件)、Select(鼠标多选节点插件)、Drag(节点拖拽插件)、AssociativeLine(关联线插件)、Export(导出插件)、KeyboardNavigation(键盘导航插件)、MiniMap(小地图插件)、Watermark(水印插件)、TouchEvent(移动端触摸事件支持插件)、NodeImgAdjust(拖拽调整节点图片大小插件)、Search(搜索插件)、Painter(节点格式刷插件)、Scrollbar(滚动条插件)、Formula(数学公式插件)、Cooperate(协同编辑插件)、RainbowLines(彩虹线条插件)、Demonstrate(演示模式插件)、HandDrawnLikeStyle(手绘风格插件)[收费] + +本项目不会实现的特性: + +> 1.自由节点,即多个根节点; +> +> 2.概要节点后面继续添加节点; +> +> 如果你需要以上特性,那么本库可能无法满足你的需求。 # 安装 @@ -84,15 +97,15 @@ const mindMap = new MindMap({ # License -[MIT](./LICENSE)。保留`mind-map`版权声明的情况下可随意商用。 +[MIT](./LICENSE)。保留`mind-map`版权声明的情况下可随意商用。如不想保留可联系作者。 # 微信交流群 -群聊人数较多,无法通过二维码入群,可以微信添加`wanglinguanfang`拉你入群。 +群聊人数较多,无法通过二维码入群,可以微信添加`wanglinguanfang`拉你入群。思维导图相关问题皆可在群里提问,不必私聊作者。 # star -如果喜欢本项目,欢迎点个star,这对我们很重要。 +如果喜欢本项目,欢迎点个 star,这对我们很重要。 [![Star History Chart](https://api.star-history.com/svg?repos=wanglin2/mind-map&type=Date)](https://star-history.com/#wanglin2/mind-map&Date) @@ -320,4 +333,36 @@ const mindMap = new MindMap({ sunniberg + + + 在下青铜五 + + + + 木星二号 + + + + 阿晨 + + + + + + + + 庆国 + + + + 孟照星 + + + + 子豪 + + + + 宏涛 +

diff --git a/dist/css/app.css b/dist/css/app.css index c30d5dde..7bcea5c5 100644 --- a/dist/css/app.css +++ b/dist/css/app.css @@ -1 +1 @@ -*{margin:0;padding:0;box-sizing:border-box}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50}.headerContainer[data-v-1c36e28e]{height:55px;border-bottom:1px solid rgba(60,60,60,.12);flex-shrink:0;display:flex;justify-content:space-between}.headerContainer .left[data-v-1c36e28e]{width:30%;display:flex;align-items:center;justify-content:flex-end}.headerContainer .left .title[data-v-1c36e28e]{width:200px;font-size:24px;font-weight:700;display:flex;align-items:center;cursor:pointer}.headerContainer .left .title img[data-v-1c36e28e]{width:30px;margin-right:10px}.headerContainer .center[data-v-1c36e28e]{display:flex;align-items:center;flex-grow:1;justify-content:flex-end}.headerContainer .center .btn[data-v-1c36e28e]{color:#213547;cursor:pointer;transition:color .5s;margin-right:15px;font-size:14px}.headerContainer .center .btn.active[data-v-1c36e28e],.headerContainer .center .btn[data-v-1c36e28e]:hover{color:#1ea59a}.headerContainer .center .translateBtn[data-v-1c36e28e]{margin-right:15px;font-size:16px;color:#213547;cursor:pointer;margin-top:1px;display:block;font-size:14px}.headerContainer .center a[data-v-1c36e28e]{text-decoration:none;color:rgba(60,60,60,.7);transition:color .5s;margin-right:15px}.headerContainer .center a[data-v-1c36e28e]:last-of-type{margin-right:0}.headerContainer .center a[data-v-1c36e28e]:hover{color:#3c3c3c}.headerContainer .center a .iconfont[data-v-1c36e28e]{font-size:30px}.headerContainer .right[data-v-1c36e28e]{width:20%}.sideBarContainer[data-v-73f8f4b5]{width:30%;overflow-x:hidden;overflow-y:auto;display:flex;justify-content:flex-end;padding-top:60px;padding-bottom:30px;flex-shrink:0}.sideBarContainer .catalogGroupList[data-v-73f8f4b5]{width:200px}.sideBarContainer .catalogGroupList .catalogGroup[data-v-73f8f4b5]{padding-bottom:16px}.sideBarContainer .catalogGroupList .catalogGroup .catalogGroupName[data-v-73f8f4b5]{line-height:20px;font-size:13px;font-weight:600;color:#213547;transition:color .5s;padding:4px 0}.sideBarContainer .catalogGroupList .catalogGroup .catalogList .catalogItem[data-v-73f8f4b5]{line-height:20px;font-size:13px;font-weight:500;color:rgba(60,60,60,.7);transition:color .5s;cursor:pointer;padding:4px 0}.sideBarContainer .catalogGroupList .catalogGroup .catalogList .catalogItem[data-v-73f8f4b5]:hover{color:#3c3c3c}.sideBarContainer .catalogGroupList .catalogGroup .catalogList .catalogItem.active[data-v-73f8f4b5]{color:#1ea59a}.catalogBarContainer[data-v-3cf0fbd6]{width:20%;flex-shrink:0;overflow-x:hidden;overflow-y:auto;padding-top:60px;padding-bottom:30px;padding-left:20px}.catalogBarContainer .catalogBarTitle[data-v-3cf0fbd6]{font-weight:700;margin-bottom:4px;text-transform:uppercase;font-size:11px;letter-spacing:.4px}.catalogBarContainer .catalogList[data-v-3cf0fbd6]{position:relative}.catalogBarContainer .catalogList .catalogItem[data-v-3cf0fbd6]{color:rgba(60,60,60,.7);transition:color .5s;line-height:28px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;cursor:pointer}.catalogBarContainer .catalogList .catalogItem.active[data-v-3cf0fbd6]{color:#3c3c3c;font-weight:700}.catalogBarContainer .catalogList .activeBar[data-v-3cf0fbd6]{position:absolute;left:-10px;width:4px;height:20px;background-color:#1ea59a;border-radius:4px;transition:top .25s cubic-bezier(0,1,.5,1),opacity .25s,background-color .5s}.docContainer{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;flex-direction:column;font-family:Quotes,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.docContainer .content{display:flex;flex-grow:1;overflow:hidden}.docContainer .content .doc{overflow:auto;flex-grow:1;font-weight:400;color:#213547;font-size:16px;-webkit-font-smoothing:antialiased;line-height:1.7;padding:30px}.docContainer .content .doc h1{margin:30px 0;font-size:38px;line-height:1.4}.docContainer .content .doc h2{margin:20px 0;border-top:1px solid rgba(60,60,60,.12);font-size:24px;padding-top:10px}.docContainer .content .doc h3{font-size:19px;margin:10px 0}.docContainer .content .doc h4{margin-bottom:10px}.docContainer .content .doc p{margin-bottom:20px}.docContainer .content .doc a{font-weight:500;text-decoration:none;color:#1ea59a;transition:color .25s}.docContainer .content .doc a:hover{color:#33a06f}.docContainer .content .doc pre{margin-bottom:20px;border-radius:5px}.docContainer .content .doc pre,.docContainer .content .doc pre code{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.docContainer .content .doc :not(pre)>code{background-color:#f1f1f1;padding:.15em .5em;border-radius:4px;color:#476582;transition:color .5s,background-color .5s;font-family:Quotes,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.docContainer .content .doc input[type=checkbox]{margin-right:5px}.docContainer .content .doc ul{list-style:none;padding-left:1.25rem}.docContainer .content .doc ul>li{position:relative;margin:1px 0}.docContainer .content .doc ul>li:before{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background-color:rgba(60,60,60,.33);transition:background-color .5s;left:-1.25rem;top:.75rem}.docContainer .content .doc table{border-collapse:collapse;border-spacing:0;margin-top:.8rem;margin-bottom:1.4rem}.docContainer .content .doc tr{background-color:#fff;border-top:1px solid #ccc}.docContainer .content .doc td,.docContainer .content .doc th{padding:5px 14px;border:1px solid #ddd}.docContainer .content .doc blockquote{margin:1rem 0;border-left:.2rem solid rgba(60,60,60,.29);padding-left:1rem;transition:border-color .5s}.docContainer .content .doc blockquote>p{margin:0;font-size:16px;color:rgba(60,60,60,.7);transition:color .5s}@font-face{font-family:iconfont;src:url(../fonts/iconfont.woff2) format("woff2"),url(../fonts/iconfont.woff) format("woff"),url(../fonts/iconfont.ttf) format("truetype")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.iconfujian:before{content:"\e88a"}.icongeshihua:before{content:"\e7a3"}.iconyuanma:before{content:"\e658"}.icongundongtiao:before{content:"\e670"}.iconxietongwendang:before{content:"\e60d"}.iconTXT:before{content:"\e6e1"}.iconwenjian1:before{content:"\e69f"}.icondodeparent:before{content:"\e70f"}.icongongshi:before{content:"\e617"}.icontouming:before{content:"\e60c"}.iconlieri:before{content:"\e60b"}.iconmoon_line:before{content:"\e745"}.iconsousuo:before{content:"\e693"}.iconjiantouyou:before{content:"\e62d"}.iconbianji1:before{content:"\e60a"}.icondaohang1:before{content:"\e632"}.iconyanjing:before{content:"\e8bf"}.iconwangzhan:before{content:"\e628"}.iconcsdn:before{content:"\e608"}.iconshejiaotubiao-10:before{content:"\e644"}.iconstar:before{content:"\e7df"}.iconfork:before{content:"\e641"}.iconxiazai:before{content:"\e613"}.iconteamwork:before{content:"\e870"}.iconshuiyin:before{content:"\e67a"}.iconxmind:before{content:"\ea57"}.iconmouseR:before{content:"\e6bd"}.iconmouseL:before{content:"\e6c0"}.iconwenjian:before{content:"\e607"}.iconpdf:before{content:"\e740"}.iconPNG:before{content:"\ec18"}.iconSVG:before{content:"\e621"}.iconmarkdown:before{content:"\ec04"}.iconjson:before{content:"\ea42"}.iconlianjiexian:before{content:"\e75b"}.iconbangzhu:before{content:"\e620"}.iconshezhi:before{content:"\e8b7"}.iconwushuju:before{content:"\e643"}.iconzuijinliulan:before{content:"\e62f"}.icon3zuidahua-3:before{content:"\e692"}.iconzuixiaohua:before{content:"\e650"}.iconzuidahua:before{content:"\e651"}.iconguanbi:before{content:"\e652"}.icondiannao:before{content:"\eac0"}.iconzhuye:before{content:"\e65c"}.iconbendi1x:before{content:"\e606"}.iconbeijingyanse:before{content:"\e6f8"}.iconqingchu:before{content:"\e605"}.iconcase:before{content:"\e6c6"}.iconxingzhuang-wenzi:before{content:"\eb99"}.iconzitijiacu:before{content:"\ec83"}.iconzitixiahuaxian:before{content:"\ec85"}.iconzitixieti:before{content:"\ec86"}.iconshanchuxian:before{content:"\e612"}.iconzitiyanse:before{content:"\e854"}.icongithub:before{content:"\e64f"}.iconchoose1:before{content:"\e6c5"}.iconzhuti:before{content:"\e7aa"}.icondaochu1:before{content:"\e63e"}.iconlingcunwei:before{content:"\e657"}.iconexport:before{content:"\e642"}.icondakai:before{content:"\ebdf"}.iconxinjian:before{content:"\e64e"}.iconjianqie:before{content:"\e601"}.iconzhengli:before{content:"\e83b"}.iconfuzhi:before{content:"\e604"}.iconniantie:before{content:"\e63f"}.iconshangyi:before{content:"\e6be"}.iconxiayi:before{content:"\e6bf"}.icongaikuozonglan:before{content:"\e609"}.iconquanxuan:before{content:"\f199"}.icondaoru:before{content:"\e6a3"}.iconhoutui-shi:before{content:"\e656"}.iconqianjin1:before{content:"\e654"}.iconwithdraw:before{content:"\e603"}.iconqianjin:before{content:"\e600"}.iconhuifumoren:before{content:"\e60e"}.iconhuanhang:before{content:"\e61e"}.iconsuoxiao:before{content:"\ec13"}.iconbianji:before{content:"\e626"}.iconfangda:before{content:"\e663"}.iconquanping1:before{content:"\e664"}.icondingwei:before{content:"\e616"}.icondaohang:before{content:"\e611"}.iconjianpan:before{content:"\e64d"}.iconquanping:before{content:"\e602"}.icondaochu:before{content:"\e63d"}.iconbiaoqian:before{content:"\e63c"}.iconflow-Mark:before{content:"\e65b"}.iconchaolianjie:before{content:"\e6f4"}.iconjingzi:before{content:"\e610"}.iconxiaolian:before{content:"\e60f"}.iconimage:before{content:"\e629"}.iconjiegou:before{content:"\e61d"}.iconyangshi:before{content:"\e631"}.iconfuhao-dagangshu:before{content:"\e71f"}.icontianjiazijiedian:before{content:"\e622"}.iconjiedian:before{content:"\e655"}.iconshanchu:before{content:"\e696"}.iconzhankai:before{content:"\e64c"}.iconzhankai1:before{content:"\e673"} \ No newline at end of file +*{margin:0;padding:0;box-sizing:border-box}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#2c3e50}.headerContainer[data-v-1c36e28e]{height:55px;border-bottom:1px solid rgba(60,60,60,.12);flex-shrink:0;display:flex;justify-content:space-between}.headerContainer .left[data-v-1c36e28e]{width:30%;display:flex;align-items:center;justify-content:flex-end}.headerContainer .left .title[data-v-1c36e28e]{width:200px;font-size:24px;font-weight:700;display:flex;align-items:center;cursor:pointer}.headerContainer .left .title img[data-v-1c36e28e]{width:30px;margin-right:10px}.headerContainer .center[data-v-1c36e28e]{display:flex;align-items:center;flex-grow:1;justify-content:flex-end}.headerContainer .center .btn[data-v-1c36e28e]{color:#213547;cursor:pointer;transition:color .5s;margin-right:15px;font-size:14px}.headerContainer .center .btn.active[data-v-1c36e28e],.headerContainer .center .btn[data-v-1c36e28e]:hover{color:#1ea59a}.headerContainer .center .translateBtn[data-v-1c36e28e]{margin-right:15px;font-size:16px;color:#213547;cursor:pointer;margin-top:1px;display:block;font-size:14px}.headerContainer .center a[data-v-1c36e28e]{text-decoration:none;color:rgba(60,60,60,.7);transition:color .5s;margin-right:15px}.headerContainer .center a[data-v-1c36e28e]:last-of-type{margin-right:0}.headerContainer .center a[data-v-1c36e28e]:hover{color:#3c3c3c}.headerContainer .center a .iconfont[data-v-1c36e28e]{font-size:30px}.headerContainer .right[data-v-1c36e28e]{width:20%}.sideBarContainer[data-v-73f8f4b5]{width:30%;overflow-x:hidden;overflow-y:auto;display:flex;justify-content:flex-end;padding-top:60px;padding-bottom:30px;flex-shrink:0}.sideBarContainer .catalogGroupList[data-v-73f8f4b5]{width:200px}.sideBarContainer .catalogGroupList .catalogGroup[data-v-73f8f4b5]{padding-bottom:16px}.sideBarContainer .catalogGroupList .catalogGroup .catalogGroupName[data-v-73f8f4b5]{line-height:20px;font-size:13px;font-weight:600;color:#213547;transition:color .5s;padding:4px 0}.sideBarContainer .catalogGroupList .catalogGroup .catalogList .catalogItem[data-v-73f8f4b5]{line-height:20px;font-size:13px;font-weight:500;color:rgba(60,60,60,.7);transition:color .5s;cursor:pointer;padding:4px 0}.sideBarContainer .catalogGroupList .catalogGroup .catalogList .catalogItem[data-v-73f8f4b5]:hover{color:#3c3c3c}.sideBarContainer .catalogGroupList .catalogGroup .catalogList .catalogItem.active[data-v-73f8f4b5]{color:#1ea59a}.catalogBarContainer[data-v-3cf0fbd6]{width:20%;flex-shrink:0;overflow-x:hidden;overflow-y:auto;padding-top:60px;padding-bottom:30px;padding-left:20px}.catalogBarContainer .catalogBarTitle[data-v-3cf0fbd6]{font-weight:700;margin-bottom:4px;text-transform:uppercase;font-size:11px;letter-spacing:.4px}.catalogBarContainer .catalogList[data-v-3cf0fbd6]{position:relative}.catalogBarContainer .catalogList .catalogItem[data-v-3cf0fbd6]{color:rgba(60,60,60,.7);transition:color .5s;line-height:28px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;cursor:pointer}.catalogBarContainer .catalogList .catalogItem.active[data-v-3cf0fbd6]{color:#3c3c3c;font-weight:700}.catalogBarContainer .catalogList .activeBar[data-v-3cf0fbd6]{position:absolute;left:-10px;width:4px;height:20px;background-color:#1ea59a;border-radius:4px;transition:top .25s cubic-bezier(0,1,.5,1),opacity .25s,background-color .5s}.docContainer{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;flex-direction:column;font-family:Quotes,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.docContainer .content{display:flex;flex-grow:1;overflow:hidden}.docContainer .content .doc{overflow:auto;flex-grow:1;font-weight:400;color:#213547;font-size:16px;-webkit-font-smoothing:antialiased;line-height:1.7;padding:30px}.docContainer .content .doc h1{margin:30px 0;font-size:38px;line-height:1.4}.docContainer .content .doc h2{margin:20px 0;border-top:1px solid rgba(60,60,60,.12);font-size:24px;padding-top:10px}.docContainer .content .doc h3{font-size:19px;margin:10px 0}.docContainer .content .doc h4{margin-bottom:10px}.docContainer .content .doc p{margin-bottom:20px}.docContainer .content .doc a{font-weight:500;text-decoration:none;color:#1ea59a;transition:color .25s}.docContainer .content .doc a:hover{color:#33a06f}.docContainer .content .doc pre{margin-bottom:20px;border-radius:5px}.docContainer .content .doc pre,.docContainer .content .doc pre code{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.docContainer .content .doc :not(pre)>code{background-color:#f1f1f1;padding:.15em .5em;border-radius:4px;color:#476582;transition:color .5s,background-color .5s;font-family:Quotes,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}.docContainer .content .doc input[type=checkbox]{margin-right:5px}.docContainer .content .doc ul{list-style:none;padding-left:1.25rem}.docContainer .content .doc ul>li{position:relative;margin:1px 0}.docContainer .content .doc ul>li:before{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background-color:rgba(60,60,60,.33);transition:background-color .5s;left:-1.25rem;top:.75rem}.docContainer .content .doc table{border-collapse:collapse;border-spacing:0;margin-top:.8rem;margin-bottom:1.4rem}.docContainer .content .doc tr{background-color:#fff;border-top:1px solid #ccc}.docContainer .content .doc td,.docContainer .content .doc th{padding:5px 14px;border:1px solid #ddd}.docContainer .content .doc blockquote{margin:1rem 0;border-left:.2rem solid rgba(60,60,60,.29);padding-left:1rem;transition:border-color .5s}.docContainer .content .doc blockquote>p{margin:0;font-size:16px;color:rgba(60,60,60,.7);transition:color .5s}@font-face{font-family:iconfont;src:url(../fonts/iconfont.woff2) format("woff2"),url(../fonts/iconfont.woff) format("woff"),url(../fonts/iconfont.ttf) format("truetype")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.iconyanshibofang:before{content:"\e648"}.iconfujian:before{content:"\e88a"}.icongeshihua:before{content:"\e7a3"}.iconyuanma:before{content:"\e658"}.icongundongtiao:before{content:"\e670"}.iconxietongwendang:before{content:"\e60d"}.iconTXT:before{content:"\e6e1"}.iconwenjian1:before{content:"\e69f"}.icondodeparent:before{content:"\e70f"}.icongongshi:before{content:"\e617"}.icontouming:before{content:"\e60c"}.iconlieri:before{content:"\e60b"}.iconmoon_line:before{content:"\e745"}.iconsousuo:before{content:"\e693"}.iconjiantouyou:before{content:"\e62d"}.iconbianji1:before{content:"\e60a"}.icondaohang1:before{content:"\e632"}.iconyanjing:before{content:"\e8bf"}.iconwangzhan:before{content:"\e628"}.iconcsdn:before{content:"\e608"}.iconshejiaotubiao-10:before{content:"\e644"}.iconstar:before{content:"\e7df"}.iconfork:before{content:"\e641"}.iconxiazai:before{content:"\e613"}.iconteamwork:before{content:"\e870"}.iconshuiyin:before{content:"\e67a"}.iconxmind:before{content:"\ea57"}.iconmouseR:before{content:"\e6bd"}.iconmouseL:before{content:"\e6c0"}.iconwenjian:before{content:"\e607"}.iconpdf:before{content:"\e740"}.iconPNG:before{content:"\ec18"}.iconSVG:before{content:"\e621"}.iconmarkdown:before{content:"\ec04"}.iconjson:before{content:"\ea42"}.iconlianjiexian:before{content:"\e75b"}.iconbangzhu:before{content:"\e620"}.iconshezhi:before{content:"\e8b7"}.iconwushuju:before{content:"\e643"}.iconzuijinliulan:before{content:"\e62f"}.icon3zuidahua-3:before{content:"\e692"}.iconzuixiaohua:before{content:"\e650"}.iconzuidahua:before{content:"\e651"}.iconguanbi:before{content:"\e652"}.icondiannao:before{content:"\eac0"}.iconzhuye:before{content:"\e65c"}.iconbendi1x:before{content:"\e606"}.iconbeijingyanse:before{content:"\e6f8"}.iconqingchu:before{content:"\e605"}.iconcase:before{content:"\e6c6"}.iconxingzhuang-wenzi:before{content:"\eb99"}.iconzitijiacu:before{content:"\ec83"}.iconzitixiahuaxian:before{content:"\ec85"}.iconzitixieti:before{content:"\ec86"}.iconshanchuxian:before{content:"\e612"}.iconzitiyanse:before{content:"\e854"}.icongithub:before{content:"\e64f"}.iconchoose1:before{content:"\e6c5"}.iconzhuti:before{content:"\e7aa"}.icondaochu1:before{content:"\e63e"}.iconlingcunwei:before{content:"\e657"}.iconexport:before{content:"\e642"}.icondakai:before{content:"\ebdf"}.iconxinjian:before{content:"\e64e"}.iconjianqie:before{content:"\e601"}.iconzhengli:before{content:"\e83b"}.iconfuzhi:before{content:"\e604"}.iconniantie:before{content:"\e63f"}.iconshangyi:before{content:"\e6be"}.iconxiayi:before{content:"\e6bf"}.icongaikuozonglan:before{content:"\e609"}.iconquanxuan:before{content:"\f199"}.icondaoru:before{content:"\e6a3"}.iconhoutui-shi:before{content:"\e656"}.iconqianjin1:before{content:"\e654"}.iconwithdraw:before{content:"\e603"}.iconqianjin:before{content:"\e600"}.iconhuifumoren:before{content:"\e60e"}.iconhuanhang:before{content:"\e61e"}.iconsuoxiao:before{content:"\ec13"}.iconbianji:before{content:"\e626"}.iconfangda:before{content:"\e663"}.iconquanping1:before{content:"\e664"}.icondingwei:before{content:"\e616"}.icondaohang:before{content:"\e611"}.iconjianpan:before{content:"\e64d"}.iconquanping:before{content:"\e602"}.icondaochu:before{content:"\e63d"}.iconbiaoqian:before{content:"\e63c"}.iconflow-Mark:before{content:"\e65b"}.iconchaolianjie:before{content:"\e6f4"}.iconjingzi:before{content:"\e610"}.iconxiaolian:before{content:"\e60f"}.iconimage:before{content:"\e629"}.iconjiegou:before{content:"\e61d"}.iconyangshi:before{content:"\e631"}.iconfuhao-dagangshu:before{content:"\e71f"}.icontianjiazijiedian:before{content:"\e622"}.iconjiedian:before{content:"\e655"}.iconshanchu:before{content:"\e696"}.iconzhankai:before{content:"\e64c"}.iconzhankai1:before{content:"\e673"} \ No newline at end of file diff --git a/dist/css/chunk-276b078e.css b/dist/css/chunk-8bd0d5d4.css similarity index 97% rename from dist/css/chunk-276b078e.css rename to dist/css/chunk-8bd0d5d4.css index 32ddde51..c998c1f3 100644 --- a/dist/css/chunk-276b078e.css +++ b/dist/css/chunk-8bd0d5d4.css @@ -12,11 +12,11 @@ * https://quilljs.com/ * Copyright (c) 2014, Jason Chen * Copyright (c) 2013, salesforce.com - */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;-o-tab-size:4;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover{color:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.sidebarContainer[data-v-1107d8de]{position:fixed;right:-300px;top:110px;bottom:0;width:300px;background-color:#fff;border-left:1px solid #e8e8e8;display:flex;flex-direction:column;transition:all .3s}.sidebarContainer.isDark[data-v-1107d8de]{background-color:#262a2e;border-left-color:hsla(0,0%,100%,.1)}.sidebarContainer.isDark .sidebarHeader[data-v-1107d8de]{border-bottom-color:hsla(0,0%,100%,.1);color:#fff}.sidebarContainer.isDark .closeBtn[data-v-1107d8de]{color:#fff}.sidebarContainer.show[data-v-1107d8de]{right:0}.sidebarContainer .closeBtn[data-v-1107d8de]{position:absolute;right:20px;top:12px;font-size:20px;cursor:pointer}.sidebarContainer .sidebarHeader[data-v-1107d8de]{width:100%;height:44px;border-bottom:1px solid #e8e8e8;display:flex;justify-content:center;align-items:center;flex-grow:0;flex-shrink:0}.sidebarContainer .sidebarContent[data-v-1107d8de]{width:100%;height:100%;overflow:auto}.customNode[data-v-bdfd8c98]{width:100%;color:rgba(0,0,0,.85);font-weight:700}.customNode .nodeEdit[data-v-bdfd8c98]{outline:none;white-space:normal;padding-right:20px}.outlineTree.isDark[data-v-bdfd8c98]{background-color:#262a2e}.outlineTree.isDark .customNode[data-v-bdfd8c98]{color:#fff}.outlineTree.isDark.el-tree--highlight-current[data-v-bdfd8c98] .el-tree-node.is-current>.el-tree-node__content{background-color:hsla(0,0%,100%,.05)!important}.outlineTree.isDark .el-upload-list__item[data-v-bdfd8c98]:hover,.outlineTree.isDark[data-v-bdfd8c98] .el-tree-node__content:hover{background-color:hsla(0,0%,100%,.02)!important}.outlineTree.isDark[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon{color:#fff}.outlineTree.isDark[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#fff}.outlineTree[data-v-bdfd8c98] .el-tree-node>.el-tree-node__children{overflow:inherit}.outlineTree[data-v-bdfd8c98] .el-tree-node__content{height:auto;margin:5px 0}.outlineTree[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon{color:#262a2e}.outlineTree[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon.is-leaf{color:transparent;position:relative}.outlineTree[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#262a2e;position:absolute;content:"";width:5px;height:5px;border-radius:50%;left:10px;top:50%;transform:translateY(-50%)}.changeBtn[data-v-c20f9926]{position:absolute;right:50px;top:12px;cursor:pointer}.changeBtn.isDark[data-v-c20f9926]{color:#fff}.colorContainer.isDark .moreColor[data-v-7b860447]{color:hsla(0,0%,100%,.6)}.colorList[data-v-7b860447]{width:240px;display:flex;flex-wrap:wrap}.colorList .colorItem[data-v-7b860447]{display:flex;justify-content:center;align-items:center;width:15px;height:15px;margin-right:5px;margin-bottom:5px;cursor:pointer}.moreColor[data-v-7b860447]{display:flex;align-items:center}.moreColor span[data-v-7b860447]{margin-right:5px}.styleBox[data-v-302f00a3]{width:100%;height:100%;display:flex;flex-direction:column}.styleBox.isDark .sidebarContent .title[data-v-302f00a3]{color:#fff}.styleBox.isDark .sidebarContent .row .rowItem .name[data-v-302f00a3]{color:hsla(0,0%,100%,.6)}.styleBox.isDark .sidebarContent .row .styleBtn[data-v-302f00a3]{background-color:#363b3f;color:hsla(0,0%,100%,.6);border-color:hsla(0,0%,100%,.1)}.styleBox .tab[data-v-302f00a3]{flex-grow:0;flex-shrink:0;padding:0 20px}.tipBox[data-v-302f00a3]{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666}.tipBox .tipIcon[data-v-302f00a3]{font-size:100px}.sidebarContent[data-v-302f00a3]{padding:20px;padding-top:10px}.sidebarContent .title[data-v-302f00a3]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:rgba(26,26,26,.9);margin-bottom:10px;margin-top:20px}.sidebarContent .title.noTop[data-v-302f00a3]{margin-top:0}.sidebarContent .row[data-v-302f00a3]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row .btnGroup[data-v-302f00a3]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-302f00a3]{display:flex;align-items:center}.sidebarContent .row .rowItem .name[data-v-302f00a3]{font-size:12px;margin-right:10px}.sidebarContent .row .rowItem .block[data-v-302f00a3]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .block.disabled[data-v-302f00a3]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn[data-v-302f00a3]{position:relative;width:50px;height:30px;background:#fff;border:1px solid #eee;display:flex;justify-content:center;align-items:center;font-weight:700;cursor:pointer;border-radius:4px}.sidebarContent .row .styleBtn.actived[data-v-302f00a3]{background-color:#eee}.sidebarContent .row .styleBtn.disabled[data-v-302f00a3]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn.i[data-v-302f00a3]{font-style:italic}.sidebarContent .row .styleBtn .colorShow[data-v-302f00a3]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-302f00a3]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-302f00a3]{background-color:#fff}.sidebarContent[data-v-568887d0]{padding:20px;padding-top:10px}.sidebarContent.isDark .title[data-v-568887d0]{color:#fff}.sidebarContent.isDark .row .rowItem .curRainbowLine[data-v-568887d0],.sidebarContent.isDark .row .rowItem .name[data-v-568887d0]{color:hsla(0,0%,100%,.6)}.sidebarContent .title[data-v-568887d0]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:rgba(26,26,26,.9);margin-bottom:10px;margin-top:20px}.sidebarContent .title.noTop[data-v-568887d0]{margin-top:0}.sidebarContent .row[data-v-568887d0]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row.column[data-v-568887d0]{flex-direction:column}.sidebarContent .row .tab[data-v-568887d0]{width:100%}.sidebarContent .row .imgUpload[data-v-568887d0]{margin-bottom:5px}.sidebarContent .row .btnGroup[data-v-568887d0]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-568887d0]{display:flex;align-items:center;margin-bottom:5px}.sidebarContent .row .rowItem .name[data-v-568887d0]{font-size:12px;margin-right:10px;white-space:nowrap}.sidebarContent .row .rowItem .block[data-v-568887d0]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .curRainbowLine[data-v-568887d0]{height:24px;border:1px solid #dcdfe6;font-size:12px;width:240px;display:flex;align-items:center;justify-content:center;cursor:pointer}.sidebarContent .row .styleBtn[data-v-568887d0]{position:relative;width:50px;height:30px;background:#fff;border:1px solid #eee;display:flex;justify-content:center;align-items:center;font-weight:700;cursor:pointer;border-radius:4px}.sidebarContent .row .styleBtn.actived[data-v-568887d0]{background-color:#eee}.sidebarContent .row .styleBtn .colorShow[data-v-568887d0]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-568887d0]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-568887d0]{background-color:#fff}.el-select-dropdown__item.selected .borderLine{background-color:#409eff}.lineStyleOption.isDark svg path{stroke:#fff}.lineStyleOption.isSelected svg path{stroke:#409eff}.lineStyleOption svg{margin-top:4px}.lineStyleOption svg path{stroke:#000}.rainbowLinesOptionsBox{width:200px}.rainbowLinesOptionsBox.isDark .optionItem{color:hsla(0,0%,100%,.6)}.rainbowLinesOptionsBox.isDark .optionItem:hover{background-color:hsla(0,0%,100%,.05)}.rainbowLinesOptionsBox .optionItem{width:100%;height:30px;cursor:pointer;display:flex;align-items:center;justify-content:center}.rainbowLinesOptionsBox .optionItem:hover{background-color:#f5f7fa}.colorsBar{display:flex;width:100%;height:100%;align-items:center}.colorsBar .colorItem{flex:1;height:15px}.themeList[data-v-4ed87757]{padding:20px;padding-top:0}.themeList.isDark .name[data-v-4ed87757]{color:#fff}.themeList .themeItem[data-v-4ed87757]{width:100%;cursor:pointer;border-bottom:1px solid #e9e9e9;margin-bottom:20px;padding-bottom:20px;transition:all .2s;border:1px solid transparent}.themeList .themeItem[data-v-4ed87757]:last-of-type{border:none}.themeList .themeItem[data-v-4ed87757]:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.themeList .themeItem.active[data-v-4ed87757]{border:1px solid #67c23a}.themeList .themeItem .imgBox[data-v-4ed87757],.themeList .themeItem .imgBox img[data-v-4ed87757]{width:100%}.themeList .themeItem .name[data-v-4ed87757]{text-align:center;font-size:14px}.layoutList[data-v-3722724b]{padding:20px}.layoutList.isDark .name[data-v-3722724b]{color:#fff}.layoutList .layoutItem[data-v-3722724b]{width:100%;cursor:pointer;border-bottom:1px solid #e9e9e9;margin-bottom:20px;padding-bottom:20px;transition:all .2s;border:1px solid transparent}.layoutList .layoutItem[data-v-3722724b]:last-of-type{border:none}.layoutList .layoutItem[data-v-3722724b]:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.layoutList .layoutItem.active[data-v-3722724b]{border:1px solid #67c23a}.layoutList .layoutItem .imgBox[data-v-3722724b],.layoutList .layoutItem .imgBox img[data-v-3722724b]{width:100%}.layoutList .layoutItem .name[data-v-3722724b]{text-align:center;font-size:14px}.countContainer[data-v-02323109]{padding:0 12px;position:fixed;left:20px;bottom:20px;background:hsla(0,0%,100%,.8);border-radius:2px;opacity:.8;height:22px;line-height:22px;font-size:12px;display:flex}.countContainer.isDark[data-v-02323109]{background:#262a2e}.countContainer.isDark .item[data-v-02323109]{color:hsla(0,0%,100%,.6)}.countContainer .item[data-v-02323109]{color:#555;margin-right:15px}.countContainer .item[data-v-02323109]:last-of-type{margin-right:0}.countContainer .item .name[data-v-02323109]{margin-right:5px}@media screen and (max-width:740px){.countContainer[data-v-02323109]{display:none}}.scaleContainer[data-v-07c47fcc]{display:flex;align-items:center}.scaleContainer.isDark .btn[data-v-07c47fcc],.scaleContainer.isDark .scaleInfo[data-v-07c47fcc],.scaleContainer.isDark .scaleInfo input[data-v-07c47fcc]{color:hsla(0,0%,100%,.6)}.scaleContainer .btn[data-v-07c47fcc]{cursor:pointer}.scaleContainer .scaleInfo[data-v-07c47fcc]{margin:0 20px;display:flex;align-items:center}.scaleContainer .scaleInfo input[data-v-07c47fcc]{width:35px;text-align:center;background-color:transparent;border:none;outline:none}.fullscreenContainer[data-v-1bcbabda]{display:flex;align-items:center}.fullscreenContainer.isDark .btn[data-v-1bcbabda]{color:hsla(0,0%,100%,.6)}.fullscreenContainer .item[data-v-1bcbabda]{margin-right:12px}.fullscreenContainer .item[data-v-1bcbabda]:last-of-type{margin-right:0}.fullscreenContainer .btn[data-v-1bcbabda]{cursor:pointer}.mouseActionContainer[data-v-a1887b1e]{display:flex;align-items:center}.mouseActionContainer.isDark .btn[data-v-a1887b1e]{color:hsla(0,0%,100%,.6)}.mouseActionContainer .item[data-v-a1887b1e]{margin-right:12px}.mouseActionContainer .item[data-v-a1887b1e]:last-of-type{margin-right:0}.mouseActionContainer .btn[data-v-a1887b1e]{cursor:pointer;font-size:18px}.navigatorContainer[data-v-393f0c38]{padding:0 12px;position:fixed;right:20px;bottom:20px;background:hsla(0,0%,100%,.8);border-radius:5px;opacity:.8;height:44px;font-size:12px;display:flex;align-items:center}.navigatorContainer.isDark[data-v-393f0c38]{background:#262a2e}.navigatorContainer.isDark .item .btn[data-v-393f0c38],.navigatorContainer.isDark .item a[data-v-393f0c38]{color:hsla(0,0%,100%,.6)}.navigatorContainer .item[data-v-393f0c38]{margin-right:20px}.navigatorContainer .item[data-v-393f0c38]:last-of-type{margin-right:0}.navigatorContainer .item a[data-v-393f0c38]{color:#303133;text-decoration:none}.navigatorContainer .item .btn[data-v-393f0c38]{cursor:pointer;font-size:18px}@media screen and (max-width:590px){.navigatorContainer[data-v-393f0c38]{left:20px;overflow-x:auto;overflow-y:hidden;height:60px}}.box[data-v-60ee437a]{padding:0 20px}.box.isDark .title[data-v-60ee437a]{color:#fff}.box.isDark .list .item .icon[data-v-60ee437a],.box.isDark .list .item .name[data-v-60ee437a]{color:hsla(0,0%,100%,.6)}.box.isDark .list .item .value[data-v-60ee437a]{color:hsla(0,0%,100%,.3)}.box .title[data-v-60ee437a]{font-size:16px;font-weight:500;color:#333;margin:26px 0 20px}.box .list[data-v-60ee437a]{font-size:14px}.box .list .item[data-v-60ee437a]{display:flex;align-items:center;margin-bottom:15px}.box .list .item .icon[data-v-60ee437a]{font-size:16px;margin-right:16px}.box .list .item .name[data-v-60ee437a]{color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.box .list .item .value[data-v-60ee437a]{color:#909090;margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listBox[data-v-3b666b4c]{width:250px;background:#fff;box-shadow:0 4px 12px 0 hsla(0,0%,69%,.5);border-radius:4px;padding-top:16px;padding-bottom:16px}.listBox.isDark[data-v-3b666b4c]{background:#363b3f}.contextmenuContainer[data-v-3b666b4c]{position:fixed;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#1a1a1a}.contextmenuContainer.isDark[data-v-3b666b4c]{color:#fff}.contextmenuContainer.isDark .item[data-v-3b666b4c]:hover{background:hsla(0,0%,100%,.05)}.contextmenuContainer .item[data-v-3b666b4c]{position:relative;height:28px;line-height:28px;padding:0 16px;cursor:pointer;display:flex;justify-content:space-between}.contextmenuContainer .item.danger[data-v-3b666b4c]{color:#f56c6c}.contextmenuContainer .item[data-v-3b666b4c]:hover{background:#f5f5f5}.contextmenuContainer .item:hover .subItems[data-v-3b666b4c]{visibility:visible}.contextmenuContainer .item.disabled[data-v-3b666b4c]{color:grey;cursor:not-allowed;pointer-events:none}.contextmenuContainer .item.disabled[data-v-3b666b4c]:hover{background:#fff}.contextmenuContainer .item .desc[data-v-3b666b4c],.contextmenuContainer .item .name[data-v-3b666b4c]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contextmenuContainer .item .desc[data-v-3b666b4c]{color:#999}.contextmenuContainer .item .subItems[data-v-3b666b4c]{position:absolute;left:100%;top:0;visibility:hidden}.richTextToolbar[data-v-dffaed3e]{position:fixed;z-index:2000;height:55px;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:8px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);display:flex;align-items:center;transform:translateX(-50%)}.richTextToolbar.isDark[data-v-dffaed3e]{background:#363b3f}.richTextToolbar.isDark .btn[data-v-dffaed3e]{color:#fff}.richTextToolbar.isDark .btn[data-v-dffaed3e]:hover{background:hsla(0,0%,100%,.05)}.richTextToolbar .btn[data-v-dffaed3e]{width:55px;height:55px;display:flex;justify-content:center;align-items:center;cursor:pointer}.richTextToolbar .btn[data-v-dffaed3e]:hover{background-color:#eefbed}.richTextToolbar .btn.active[data-v-dffaed3e]{color:#12bb37}.richTextToolbar .btn .icon[data-v-dffaed3e]{font-size:20px}.richTextToolbar .btn .icon.fontColor[data-v-dffaed3e]{font-size:26px}.fontOptionsList[data-v-dffaed3e]{width:150px}.fontOptionsList.isDark .fontOptionItem[data-v-dffaed3e]{color:#fff}.fontOptionsList.isDark .fontOptionItem[data-v-dffaed3e]:hover{background-color:hsla(0,0%,100%,.05)}.fontOptionsList .fontOptionItem[data-v-dffaed3e]{height:30px;width:100%;display:flex;align-items:center;cursor:pointer}.fontOptionsList .fontOptionItem[data-v-dffaed3e]:hover{background-color:#f7f7f7}.fontOptionsList .fontOptionItem.active[data-v-dffaed3e]{color:#12bb37} + */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;-o-tab-size:4;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li:before,.ql-editor ul[data-checked=true]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover{color:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item:before,.ql-snow .ql-picker.ql-header .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item:before,.ql-snow .ql-picker.ql-font .ql-picker-label:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item:before,.ql-snow .ql-picker.ql-size .ql-picker-label:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:0 2px 8px rgba(0,0,0,.2)}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}.sidebarContainer[data-v-1107d8de]{position:fixed;right:-300px;top:110px;bottom:0;width:300px;background-color:#fff;border-left:1px solid #e8e8e8;display:flex;flex-direction:column;transition:all .3s}.sidebarContainer.isDark[data-v-1107d8de]{background-color:#262a2e;border-left-color:hsla(0,0%,100%,.1)}.sidebarContainer.isDark .sidebarHeader[data-v-1107d8de]{border-bottom-color:hsla(0,0%,100%,.1);color:#fff}.sidebarContainer.isDark .closeBtn[data-v-1107d8de]{color:#fff}.sidebarContainer.show[data-v-1107d8de]{right:0}.sidebarContainer .closeBtn[data-v-1107d8de]{position:absolute;right:20px;top:12px;font-size:20px;cursor:pointer}.sidebarContainer .sidebarHeader[data-v-1107d8de]{width:100%;height:44px;border-bottom:1px solid #e8e8e8;display:flex;justify-content:center;align-items:center;flex-grow:0;flex-shrink:0}.sidebarContainer .sidebarContent[data-v-1107d8de]{width:100%;height:100%;overflow:auto}.customNode[data-v-bdfd8c98]{width:100%;color:rgba(0,0,0,.85);font-weight:700}.customNode .nodeEdit[data-v-bdfd8c98]{outline:none;white-space:normal;padding-right:20px}.outlineTree.isDark[data-v-bdfd8c98]{background-color:#262a2e}.outlineTree.isDark .customNode[data-v-bdfd8c98]{color:#fff}.outlineTree.isDark.el-tree--highlight-current[data-v-bdfd8c98] .el-tree-node.is-current>.el-tree-node__content{background-color:hsla(0,0%,100%,.05)!important}.outlineTree.isDark .el-upload-list__item[data-v-bdfd8c98]:hover,.outlineTree.isDark[data-v-bdfd8c98] .el-tree-node__content:hover{background-color:hsla(0,0%,100%,.02)!important}.outlineTree.isDark[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon{color:#fff}.outlineTree.isDark[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#fff}.outlineTree[data-v-bdfd8c98] .el-tree-node>.el-tree-node__children{overflow:inherit}.outlineTree[data-v-bdfd8c98] .el-tree-node__content{height:auto;margin:5px 0}.outlineTree[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon{color:#262a2e}.outlineTree[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon.is-leaf{color:transparent;position:relative}.outlineTree[data-v-bdfd8c98] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#262a2e;position:absolute;content:"";width:5px;height:5px;border-radius:50%;left:10px;top:50%;transform:translateY(-50%)}.changeBtn[data-v-c20f9926]{position:absolute;right:50px;top:12px;cursor:pointer}.changeBtn.isDark[data-v-c20f9926]{color:#fff}.colorContainer.isDark .moreColor[data-v-7b860447]{color:hsla(0,0%,100%,.6)}.colorList[data-v-7b860447]{width:240px;display:flex;flex-wrap:wrap}.colorList .colorItem[data-v-7b860447]{display:flex;justify-content:center;align-items:center;width:15px;height:15px;margin-right:5px;margin-bottom:5px;cursor:pointer}.moreColor[data-v-7b860447]{display:flex;align-items:center}.moreColor span[data-v-7b860447]{margin-right:5px}.styleBox[data-v-302f00a3]{width:100%;height:100%;display:flex;flex-direction:column}.styleBox.isDark .sidebarContent .title[data-v-302f00a3]{color:#fff}.styleBox.isDark .sidebarContent .row .rowItem .name[data-v-302f00a3]{color:hsla(0,0%,100%,.6)}.styleBox.isDark .sidebarContent .row .styleBtn[data-v-302f00a3]{background-color:#363b3f;color:hsla(0,0%,100%,.6);border-color:hsla(0,0%,100%,.1)}.styleBox .tab[data-v-302f00a3]{flex-grow:0;flex-shrink:0;padding:0 20px}.tipBox[data-v-302f00a3]{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666}.tipBox .tipIcon[data-v-302f00a3]{font-size:100px}.sidebarContent[data-v-302f00a3]{padding:20px;padding-top:10px}.sidebarContent .title[data-v-302f00a3]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:rgba(26,26,26,.9);margin-bottom:10px;margin-top:20px}.sidebarContent .title.noTop[data-v-302f00a3]{margin-top:0}.sidebarContent .row[data-v-302f00a3]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row .btnGroup[data-v-302f00a3]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-302f00a3]{display:flex;align-items:center}.sidebarContent .row .rowItem .name[data-v-302f00a3]{font-size:12px;margin-right:10px}.sidebarContent .row .rowItem .block[data-v-302f00a3]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .block.disabled[data-v-302f00a3]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn[data-v-302f00a3]{position:relative;width:50px;height:30px;background:#fff;border:1px solid #eee;display:flex;justify-content:center;align-items:center;font-weight:700;cursor:pointer;border-radius:4px}.sidebarContent .row .styleBtn.actived[data-v-302f00a3]{background-color:#eee}.sidebarContent .row .styleBtn.disabled[data-v-302f00a3]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn.i[data-v-302f00a3]{font-style:italic}.sidebarContent .row .styleBtn .colorShow[data-v-302f00a3]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-302f00a3]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-302f00a3]{background-color:#fff}.sidebarContent[data-v-568887d0]{padding:20px;padding-top:10px}.sidebarContent.isDark .title[data-v-568887d0]{color:#fff}.sidebarContent.isDark .row .rowItem .curRainbowLine[data-v-568887d0],.sidebarContent.isDark .row .rowItem .name[data-v-568887d0]{color:hsla(0,0%,100%,.6)}.sidebarContent .title[data-v-568887d0]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:rgba(26,26,26,.9);margin-bottom:10px;margin-top:20px}.sidebarContent .title.noTop[data-v-568887d0]{margin-top:0}.sidebarContent .row[data-v-568887d0]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row.column[data-v-568887d0]{flex-direction:column}.sidebarContent .row .tab[data-v-568887d0]{width:100%}.sidebarContent .row .imgUpload[data-v-568887d0]{margin-bottom:5px}.sidebarContent .row .btnGroup[data-v-568887d0]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-568887d0]{display:flex;align-items:center;margin-bottom:5px}.sidebarContent .row .rowItem .name[data-v-568887d0]{font-size:12px;margin-right:10px;white-space:nowrap}.sidebarContent .row .rowItem .block[data-v-568887d0]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .curRainbowLine[data-v-568887d0]{height:24px;border:1px solid #dcdfe6;font-size:12px;width:240px;display:flex;align-items:center;justify-content:center;cursor:pointer}.sidebarContent .row .styleBtn[data-v-568887d0]{position:relative;width:50px;height:30px;background:#fff;border:1px solid #eee;display:flex;justify-content:center;align-items:center;font-weight:700;cursor:pointer;border-radius:4px}.sidebarContent .row .styleBtn.actived[data-v-568887d0]{background-color:#eee}.sidebarContent .row .styleBtn .colorShow[data-v-568887d0]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-568887d0]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-568887d0]{background-color:#fff}.el-select-dropdown__item.selected .borderLine{background-color:#409eff}.lineStyleOption.isDark svg path{stroke:#fff}.lineStyleOption.isSelected svg path{stroke:#409eff}.lineStyleOption svg{margin-top:4px}.lineStyleOption svg path{stroke:#000}.rainbowLinesOptionsBox{width:200px}.rainbowLinesOptionsBox.isDark .optionItem{color:hsla(0,0%,100%,.6)}.rainbowLinesOptionsBox.isDark .optionItem:hover{background-color:hsla(0,0%,100%,.05)}.rainbowLinesOptionsBox .optionItem{width:100%;height:30px;cursor:pointer;display:flex;align-items:center;justify-content:center}.rainbowLinesOptionsBox .optionItem:hover{background-color:#f5f7fa}.colorsBar{display:flex;width:100%;height:100%;align-items:center}.colorsBar .colorItem{flex:1;height:15px}.themeList[data-v-4ed87757]{padding:20px;padding-top:0}.themeList.isDark .name[data-v-4ed87757]{color:#fff}.themeList .themeItem[data-v-4ed87757]{width:100%;cursor:pointer;border-bottom:1px solid #e9e9e9;margin-bottom:20px;padding-bottom:20px;transition:all .2s;border:1px solid transparent}.themeList .themeItem[data-v-4ed87757]:last-of-type{border:none}.themeList .themeItem[data-v-4ed87757]:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.themeList .themeItem.active[data-v-4ed87757]{border:1px solid #67c23a}.themeList .themeItem .imgBox[data-v-4ed87757],.themeList .themeItem .imgBox img[data-v-4ed87757]{width:100%}.themeList .themeItem .name[data-v-4ed87757]{text-align:center;font-size:14px}.layoutList[data-v-3722724b]{padding:20px}.layoutList.isDark .name[data-v-3722724b]{color:#fff}.layoutList .layoutItem[data-v-3722724b]{width:100%;cursor:pointer;border-bottom:1px solid #e9e9e9;margin-bottom:20px;padding-bottom:20px;transition:all .2s;border:1px solid transparent}.layoutList .layoutItem[data-v-3722724b]:last-of-type{border:none}.layoutList .layoutItem[data-v-3722724b]:hover{box-shadow:0 1px 2px -2px rgba(0,0,0,.16),0 3px 6px 0 rgba(0,0,0,.12),0 5px 12px 4px rgba(0,0,0,.09)}.layoutList .layoutItem.active[data-v-3722724b]{border:1px solid #67c23a}.layoutList .layoutItem .imgBox[data-v-3722724b],.layoutList .layoutItem .imgBox img[data-v-3722724b]{width:100%}.layoutList .layoutItem .name[data-v-3722724b]{text-align:center;font-size:14px}.countContainer[data-v-11ef1956]{padding:0 12px;position:fixed;left:20px;bottom:20px;background:hsla(0,0%,100%,.8);border-radius:2px;opacity:.8;height:22px;line-height:22px;font-size:12px;display:flex}.countContainer.isDark[data-v-11ef1956]{background:#262a2e}.countContainer.isDark .item[data-v-11ef1956]{color:hsla(0,0%,100%,.6)}.countContainer .item[data-v-11ef1956]{color:#555;margin-right:15px}.countContainer .item[data-v-11ef1956]:last-of-type{margin-right:0}.countContainer .item .name[data-v-11ef1956]{margin-right:5px}@media screen and (max-width:740px){.countContainer[data-v-11ef1956]{display:none}}.scaleContainer[data-v-07c47fcc]{display:flex;align-items:center}.scaleContainer.isDark .btn[data-v-07c47fcc],.scaleContainer.isDark .scaleInfo[data-v-07c47fcc],.scaleContainer.isDark .scaleInfo input[data-v-07c47fcc]{color:hsla(0,0%,100%,.6)}.scaleContainer .btn[data-v-07c47fcc]{cursor:pointer}.scaleContainer .scaleInfo[data-v-07c47fcc]{margin:0 20px;display:flex;align-items:center}.scaleContainer .scaleInfo input[data-v-07c47fcc]{width:35px;text-align:center;background-color:transparent;border:none;outline:none}.fullscreenContainer[data-v-1bcbabda]{display:flex;align-items:center}.fullscreenContainer.isDark .btn[data-v-1bcbabda]{color:hsla(0,0%,100%,.6)}.fullscreenContainer .item[data-v-1bcbabda]{margin-right:12px}.fullscreenContainer .item[data-v-1bcbabda]:last-of-type{margin-right:0}.fullscreenContainer .btn[data-v-1bcbabda]{cursor:pointer}.mouseActionContainer[data-v-a1887b1e]{display:flex;align-items:center}.mouseActionContainer.isDark .btn[data-v-a1887b1e]{color:hsla(0,0%,100%,.6)}.mouseActionContainer .item[data-v-a1887b1e]{margin-right:12px}.mouseActionContainer .item[data-v-a1887b1e]:last-of-type{margin-right:0}.mouseActionContainer .btn[data-v-a1887b1e]{cursor:pointer;font-size:18px}.demonstrateContainer[data-v-7ff90e9c]{display:flex;align-items:center}.demonstrateContainer.isDark .btn[data-v-7ff90e9c]{color:hsla(0,0%,100%,.6)}.demonstrateContainer .item[data-v-7ff90e9c]{margin-right:12px}.demonstrateContainer .item[data-v-7ff90e9c]:last-of-type{margin-right:0}.demonstrateContainer .btn[data-v-7ff90e9c]{cursor:pointer;font-size:24px}.exitDemonstrateBtn[data-v-7ff90e9c]{position:absolute;right:40px;top:20px;cursor:pointer;z-index:10001;pointer-events:all}.exitDemonstrateBtn .icon[data-v-7ff90e9c]{font-size:28px;color:#fff}.stepBox[data-v-7ff90e9c]{position:absolute;right:40px;bottom:20px;pointer-events:all;z-index:10001;display:flex;align-items:center}.stepBox .step[data-v-7ff90e9c]{color:#fff;margin:0 12px}.stepBox .jump[data-v-7ff90e9c]{color:#fff;cursor:pointer}.stepBox .jump.disabled[data-v-7ff90e9c]{cursor:not-allowed;color:#999}.stepBox .input[data-v-7ff90e9c]{margin-left:12px;display:flex;align-items:center}.stepBox .input input[data-v-7ff90e9c]{width:50px;height:30px;text-align:center;background-color:transparent;border:1px solid #999;outline:none;color:#fff}.navigatorContainer[data-v-54898824]{padding:0 12px;position:fixed;right:20px;bottom:20px;background:hsla(0,0%,100%,.8);border-radius:5px;opacity:.8;height:44px;font-size:12px;display:flex;align-items:center}.navigatorContainer.isDark[data-v-54898824]{background:#262a2e}.navigatorContainer.isDark .item .btn[data-v-54898824],.navigatorContainer.isDark .item a[data-v-54898824]{color:hsla(0,0%,100%,.6)}.navigatorContainer .item[data-v-54898824]{margin-right:20px}.navigatorContainer .item[data-v-54898824]:last-of-type{margin-right:0}.navigatorContainer .item a[data-v-54898824]{color:#303133;text-decoration:none}.navigatorContainer .item .btn[data-v-54898824]{cursor:pointer;font-size:18px}@media screen and (max-width:590px){.navigatorContainer[data-v-54898824]{left:20px;overflow-x:auto;overflow-y:hidden;height:60px}}.box[data-v-60ee437a]{padding:0 20px}.box.isDark .title[data-v-60ee437a]{color:#fff}.box.isDark .list .item .icon[data-v-60ee437a],.box.isDark .list .item .name[data-v-60ee437a]{color:hsla(0,0%,100%,.6)}.box.isDark .list .item .value[data-v-60ee437a]{color:hsla(0,0%,100%,.3)}.box .title[data-v-60ee437a]{font-size:16px;font-weight:500;color:#333;margin:26px 0 20px}.box .list[data-v-60ee437a]{font-size:14px}.box .list .item[data-v-60ee437a]{display:flex;align-items:center;margin-bottom:15px}.box .list .item .icon[data-v-60ee437a]{font-size:16px;margin-right:16px}.box .list .item .name[data-v-60ee437a]{color:#333;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.box .list .item .value[data-v-60ee437a]{color:#909090;margin-left:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.listBox[data-v-5c335ede]{width:250px;background:#fff;box-shadow:0 4px 12px 0 hsla(0,0%,69%,.5);border-radius:4px;padding-top:16px;padding-bottom:16px}.listBox.isDark[data-v-5c335ede]{background:#363b3f}.contextmenuContainer[data-v-5c335ede]{position:fixed;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#1a1a1a}.contextmenuContainer.isDark[data-v-5c335ede]{color:#fff}.contextmenuContainer.isDark .item[data-v-5c335ede]:hover{background:hsla(0,0%,100%,.05)}.contextmenuContainer .item[data-v-5c335ede]{position:relative;height:28px;line-height:28px;padding:0 16px;cursor:pointer;display:flex;justify-content:space-between}.contextmenuContainer .item.danger[data-v-5c335ede]{color:#f56c6c}.contextmenuContainer .item[data-v-5c335ede]:hover{background:#f5f5f5}.contextmenuContainer .item:hover .subItems[data-v-5c335ede]{visibility:visible}.contextmenuContainer .item.disabled[data-v-5c335ede]{color:grey;cursor:not-allowed;pointer-events:none}.contextmenuContainer .item.disabled[data-v-5c335ede]:hover{background:#fff}.contextmenuContainer .item .desc[data-v-5c335ede],.contextmenuContainer .item .name[data-v-5c335ede]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contextmenuContainer .item .desc[data-v-5c335ede]{color:#999}.contextmenuContainer .item .subItems[data-v-5c335ede]{position:absolute;left:100%;top:0;visibility:hidden}.richTextToolbar[data-v-dffaed3e]{position:fixed;z-index:2000;height:55px;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:8px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);display:flex;align-items:center;transform:translateX(-50%)}.richTextToolbar.isDark[data-v-dffaed3e]{background:#363b3f}.richTextToolbar.isDark .btn[data-v-dffaed3e]{color:#fff}.richTextToolbar.isDark .btn[data-v-dffaed3e]:hover{background:hsla(0,0%,100%,.05)}.richTextToolbar .btn[data-v-dffaed3e]{width:55px;height:55px;display:flex;justify-content:center;align-items:center;cursor:pointer}.richTextToolbar .btn[data-v-dffaed3e]:hover{background-color:#eefbed}.richTextToolbar .btn.active[data-v-dffaed3e]{color:#12bb37}.richTextToolbar .btn .icon[data-v-dffaed3e]{font-size:20px}.richTextToolbar .btn .icon.fontColor[data-v-dffaed3e]{font-size:26px}.fontOptionsList[data-v-dffaed3e]{width:150px}.fontOptionsList.isDark .fontOptionItem[data-v-dffaed3e]{color:#fff}.fontOptionsList.isDark .fontOptionItem[data-v-dffaed3e]:hover{background-color:hsla(0,0%,100%,.05)}.fontOptionsList .fontOptionItem[data-v-dffaed3e]{height:30px;width:100%;display:flex;align-items:center;cursor:pointer}.fontOptionsList .fontOptionItem[data-v-dffaed3e]:hover{background-color:#f7f7f7}.fontOptionsList .fontOptionItem.active[data-v-dffaed3e]{color:#12bb37} /*! * @toast-ui/editor * @version 3.2.2 | Fri Feb 17 2023 * @author NHN Cloud FE Development Lab * @license MIT - */.ProseMirror{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;color:#222;font-size:13px;overflow-y:auto;overflow-X:hidden;height:calc(100% - 36px)}.ProseMirror .placeholder{color:#999}.ProseMirror-selectednode,.ProseMirror:focus{outline:none}.html-block.ProseMirror-selectednode,table.ProseMirror-selectednode{border-radius:2px;outline:2px solid #00a9ff}.toastui-editor-contents{margin:0;padding:0;font-size:13px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;z-index:20}.toastui-editor-contents :not(table){line-height:160%;-webkit-box-sizing:content-box;box-sizing:content-box}.toastui-editor-contents address,.toastui-editor-contents cite,.toastui-editor-contents dfn,.toastui-editor-contents em,.toastui-editor-contents i,.toastui-editor-contents var{font-style:italic}.toastui-editor-contents strong{font-weight:700}.toastui-editor-contents p{margin:10px 0;color:#222}.toastui-editor-contents>div>div:first-of-type h1,.toastui-editor-contents>h1:first-of-type{margin-top:14px}.toastui-editor-contents h1,.toastui-editor-contents h2,.toastui-editor-contents h3,.toastui-editor-contents h4,.toastui-editor-contents h5,.toastui-editor-contents h6{font-weight:700;color:#222}.toastui-editor-contents h1{font-size:24px;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px 0;padding-bottom:7px}.toastui-editor-contents h2{font-size:22px;line-height:23px;border-bottom:1px solid #dbdbdb;margin:20px 0 13px 0;padding-bottom:7px}.toastui-editor-contents h3{font-size:20px;margin:18px 0 2px}.toastui-editor-contents h4{font-size:18px;margin:10px 0 2px}.toastui-editor-contents h3,.toastui-editor-contents h4{line-height:18px}.toastui-editor-contents h5{font-size:16px}.toastui-editor-contents h6{font-size:14px}.toastui-editor-contents h5,.toastui-editor-contents h6{line-height:17px;margin:9px 0 -4px}.toastui-editor-contents del{color:#999}.toastui-editor-contents blockquote{margin:14px 0;border-left:4px solid #e5e5e5;padding:0 16px;color:#999}.toastui-editor-contents blockquote ol,.toastui-editor-contents blockquote p,.toastui-editor-contents blockquote ul{color:#999}.toastui-editor-contents blockquote>:first-child{margin-top:0}.toastui-editor-contents blockquote>:last-child{margin-bottom:0}.toastui-editor-contents code,.toastui-editor-contents pre{font-family:Consolas,Courier,Apple SD 산돌고딕 Neo,-apple-system,Lucida Grande,Apple SD Gothic Neo,맑은 고딕,Malgun Gothic,Segoe UI,돋움,dotum,sans-serif;border:0;border-radius:0}.toastui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f4f7f8}.toastui-editor-contents code{color:#c1798b;background-color:#f9f2f4;padding:2px 3px;letter-spacing:-.3px;border-radius:2px}.toastui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.toastui-editor-contents img{margin:4px 0 10px;-webkit-box-sizing:border-box;box-sizing:border-box;vertical-align:top;max-width:100%}.toastui-editor-contents table{border:1px solid rgba(0,0,0,.1);margin:12px 0 14px;color:#222;width:auto;border-collapse:collapse;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-contents table td,.toastui-editor-contents table th{border:1px solid rgba(0,0,0,.1);padding:5px 14px 5px 12px;height:32px}.toastui-editor-contents table th{background-color:#555;font-weight:300;color:#fff;padding-top:6px}.toastui-editor-contents th p{margin:0;color:#fff}.toastui-editor-contents td p{margin:0;padding:0 2px}.toastui-editor-contents td.toastui-editor-cell-selected{background-color:#d8dfec}.toastui-editor-contents th.toastui-editor-cell-selected{background-color:#908f8f}.toastui-editor-contents dir,.toastui-editor-contents menu,.toastui-editor-contents ol,.toastui-editor-contents ul{display:block;list-style-type:none;padding-left:24px;margin:6px 0 10px;color:#222}.toastui-editor-contents ol{list-style-type:none;counter-reset:li}.toastui-editor-contents ol>li{counter-increment:li}.toastui-editor-contents ol>li:before,.toastui-editor-contents ul>li:before{display:inline-block;position:absolute}.toastui-editor-contents ul>li:before{content:"";margin-top:6px;margin-left:-17px;width:5px;height:5px;border-radius:50%;background-color:#ccc}.toastui-editor-contents ol>li:before{content:"." counter(li);margin-left:-28px;width:24px;text-align:right;direction:rtl;color:#aaa}.toastui-editor-contents ol ol,.toastui-editor-contents ol ul,.toastui-editor-contents ul ol,.toastui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.toastui-editor-contents ol li,.toastui-editor-contents ul li{position:relative}.toastui-editor-contents ol p,.toastui-editor-contents ul p{margin:0}.toastui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.toastui-editor-contents a{text-decoration:underline;color:#4b96e6}.toastui-editor-contents a:hover{color:#1f70de}.toastui-editor-contents .image-link{position:relative}.toastui-editor-contents .image-link:hover:before{content:"";position:absolute;width:30px;height:30px;right:0;border-radius:50%;border:1px solid #c9ccd5;background:#fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjNTU1IiBzdHJva2Utd2lkdGg9IjEuNSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxwYXRoIGQ9Ik01LjY4NyAxMC4yOTRsLTEuMjg1IDEuMjg4Yy0xLjA1IDEuMDUtMS4wMzUgMi43NzIuMDM3IDMuODQ0bC4xMzUuMTM1YzEuMDcyIDEuMDcyIDIuNzk0IDEuMDg4IDMuODQ0LjAzN2wyLjcyLTIuNzJjMS4wNTEtMS4wNSAxLjAzNC0yLjc3Mi0uMDM3LTMuODQzbC0uMTM2LS4xMzYiLz48cGF0aCBkPSJNMTQuMzA1IDkuNzEzbDEuMjg3LTEuMjljMS4wNTItMS4wNTEgMS4wMzYtMi43NzMtLjAzNi0zLjg0NGwtLjEzNS0uMTM2Yy0xLjA3Mi0xLjA3Mi0yLjc5NC0xLjA4OC0zLjg0NS0uMDM2TDguODU3IDcuMTI2Yy0xLjA1MSAxLjA1MS0xLjAzNCAyLjc3Mi4wMzcgMy44NDNsLjEzNi4xMzYiLz48L2c+PC9zdmc+) no-repeat;background-position:50%;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);cursor:pointer}.toastui-editor-contents .task-list-item{border:0;list-style:none;padding-left:24px;margin-left:-24px}.toastui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-size:18px 18px;background-position:50%;content:"";margin-left:0;margin-top:0;border-radius:2px;height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiB4PSIuNSIgeT0iLjUiIHJ4PSIyIiBmaWxsPSIjRkZGIiBzdHJva2U9IiNDQ0MiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.toastui-editor-contents .task-list-item.checked:before{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHBhdGggZD0iTTE2IDBhMiAyIDAgMDEyIDJ2MTRhMiAyIDAgMDEtMiAySDJhMiAyIDAgMDEtMi0yVjJhMiAyIDAgMDEyLTJoMTR6bS0xLjc5MyA1LjI5M2ExIDEgMCAwMC0xLjQxNCAwTDcuNSAxMC41ODUgNS4yMDcgOC4yOTNsLS4wOTQtLjA4M2ExIDEgMCAwMC0xLjMyIDEuNDk3bDMgMyAuMDk0LjA4M2ExIDEgMCAwMDEuMzItLjA4M2w2LTYgLjA4My0uMDk0YTEgMSAwIDAwLS4wODMtMS4zMnoiIGZpbGw9IiM0Qjk2RTYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.toastui-editor-custom-block .toastui-editor-custom-block-editor{background:#f9f7fd;color:#452d6b;border:1px solid #dbd4ea}.toastui-editor-custom-block .toastui-editor-custom-block-view{position:relative;padding:9px 13px 8px 12px}.toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view{border:1px solid #dbd4ea;border-radius:2px}.toastui-editor-custom-block .toastui-editor-custom-block-view .tool{position:absolute;right:10px;top:7px;display:none}.toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view .tool{display:block}.toastui-editor-custom-block-view button{vertical-align:middle;width:15px;height:15px;margin-left:8px;padding:3px;border:1px solid #ccc;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAzMCI+PHBhdGggZD0iTTE1LjUgMTIuNWwyIDJMMTIgMjBoLTJ2LTJsNS41LTUuNXpNMTggMTBsMiAyLTEuNSAxLjUtMi0yTDE4IDEweiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM1NTUiLz48L3N2Zz4=) no-repeat;background-position:50%;background-size:30px 30px}.toastui-editor-custom-block-view .info{font-size:13px;font-weight:700;color:#5200d0;vertical-align:middle}.toastui-editor-contents .toastui-editor-ww-code-block{position:relative}.toastui-editor-contents .toastui-editor-ww-code-block:after{content:attr(data-language);position:absolute;display:inline-block;top:10px;right:10px;height:24px;padding:3px 35px 0 10px;font-weight:700;font-size:13px;color:#333;background:#e5e9ea url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAzMCI+PHBhdGggZD0iTTE1LjUgMTIuNWwyIDJMMTIgMjBoLTJ2LTJsNS41LTUuNXpNMTggMTBsMiAyLTEuNSAxLjUtMi0yTDE4IDEweiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM1NTUiLz48L3N2Zz4=) no-repeat;background-position:100%;border-radius:2px;background-size:30px 30px;cursor:pointer}.toastui-editor-ww-code-block-language{position:fixed;display:inline-block;width:100px;height:27px;right:35px;border:1px solid #ccc;border-radius:2px;background-color:#fff;z-index:30}.toastui-editor-ww-code-block-language input{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0 10px;height:100%;width:100%;background-color:transparent;border:none;outline:none}.toastui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.toastui-editor-md-preview .toastui-editor-contents h1{min-height:28px}.toastui-editor-md-preview .toastui-editor-contents h2{min-height:23px}.toastui-editor-md-preview .toastui-editor-contents blockquote{min-height:20px}.toastui-editor-md-preview .toastui-editor-contents li{min-height:22px}.toastui-editor-pseudo-clipboard{position:fixed;opacity:0;width:0;height:0;left:-1000px;top:-1000px;z-index:-1}.noteContentViewer[data-v-83283c22]{position:fixed;background-color:#fff;padding:10px;border-radius:5px;max-height:300px;overflow-y:auto;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.noteContentViewer[data-v-83283c22]::-webkit-scrollbar{width:7px;height:7px}.noteContentViewer[data-v-83283c22]::-webkit-scrollbar-thumb{border-radius:7px;background-color:rgba(0,0,0,.3);cursor:pointer}.noteContentViewer[data-v-83283c22]::-webkit-scrollbar-track{box-shadow:none;background:transparent;display:none}.navigatorBox[data-v-8a96ff3c]{position:absolute;height:220px;background-color:#fff;bottom:80px;right:70px;box-shadow:0 0 16px #989898;border-radius:4px;border:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navigatorBox.isDark[data-v-8a96ff3c]{background-color:#262a2e}.navigatorBox .svgBox[data-v-8a96ff3c]{position:absolute;left:0;transform-origin:left top}.navigatorBox .windowBox[data-v-8a96ff3c]{position:absolute;border:2px solid #ee4545;transition:all .3s}.sidebarTriggerContainer[data-v-03ad7129]{position:fixed;right:-60px;margin-top:110px;transition:all .3s;top:50%;transform:translateY(-50%)}.sidebarTriggerContainer.isDark .trigger[data-v-03ad7129]{background-color:#262a2e}.sidebarTriggerContainer.isDark .trigger .triggerItem[data-v-03ad7129]{color:hsla(0,0%,100%,.6)}.sidebarTriggerContainer.isDark .trigger .triggerItem[data-v-03ad7129]:hover{background-color:hsla(0,0%,100%,.05)}.sidebarTriggerContainer.show[data-v-03ad7129]{right:0}.sidebarTriggerContainer.hasActive[data-v-03ad7129]{right:305px}.sidebarTriggerContainer .toggleShowBtn[data-v-03ad7129]{position:absolute;left:-6px;width:35px;height:60px;background:#409eff;top:50%;transform:translateY(-50%);cursor:pointer;transition:left .1s linear;z-index:0;border-top-left-radius:10px;border-bottom-left-radius:10px;display:flex;align-items:center;padding-left:4px}.sidebarTriggerContainer .toggleShowBtn.hide[data-v-03ad7129]{left:-8px}.sidebarTriggerContainer .toggleShowBtn.hide span[data-v-03ad7129]{transform:rotate(180deg)}.sidebarTriggerContainer .toggleShowBtn[data-v-03ad7129]:hover{left:-18px}.sidebarTriggerContainer .toggleShowBtn span[data-v-03ad7129]{color:#fff;transition:all .1s}.sidebarTriggerContainer .trigger[data-v-03ad7129]{position:relative;width:60px;border-color:#eee;background-color:#fff;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border-radius:6px;overflow:hidden}.sidebarTriggerContainer .trigger .triggerItem[data-v-03ad7129]{height:60px;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;color:#464646;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.sidebarTriggerContainer .trigger .triggerItem[data-v-03ad7129]:hover{background-color:#ededed}.sidebarTriggerContainer .trigger .triggerItem.active[data-v-03ad7129]{color:#409eff;font-weight:700}.sidebarTriggerContainer .trigger .triggerItem .triggerIcon[data-v-03ad7129]{font-size:18px;margin-bottom:5px}.sidebarTriggerContainer .trigger .triggerItem .triggerName[data-v-03ad7129]{font-size:13px}.customNodeContent[data-v-6ef61ceb]{padding:10px;cursor:pointer}.searchContainer[data-v-4c813624]{position:relative;background-color:#fff;padding:16px;width:296px;border-radius:12px;box-shadow:0 4px 16px 0 rgba(0,0,0,.1);position:fixed;top:110px;right:-296px;transition:all .3s}.searchContainer.isDark[data-v-4c813624]{background-color:#363b3f}.searchContainer.isDark .closeBtnBox[data-v-4c813624]{color:#fff;background-color:#363b3f}.searchContainer.show[data-v-4c813624]{right:20px}.searchContainer .btnList[data-v-4c813624]{display:flex;justify-content:flex-end}.searchContainer .closeBtnBox[data-v-4c813624]{position:absolute;right:-5px;top:-5px;width:20px;height:20px;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 4px 16px 0 rgba(0,0,0,.1)}.searchContainer .closeBtnBox .closeBtn[data-v-4c813624]{font-size:16px}.searchContainer .searchInputBox[data-v-4c813624]{position:relative}.searchContainer .searchInputBox .searchInfo[data-v-4c813624]{position:absolute;right:70px;top:50%;transform:translateY(-50%);color:#909090;font-size:14px}.box[data-v-9d4ebae2]{padding:0 20px}.box.isDark .title[data-v-9d4ebae2]{color:#fff}.box .title[data-v-9d4ebae2]{font-size:16px;font-weight:500;color:#333}.box .boxContent .iconBox .item[data-v-9d4ebae2]{margin-bottom:20px;font-weight:700}.box .boxContent .iconBox .item .title[data-v-9d4ebae2]{margin-bottom:10px}.box .boxContent .iconBox .item .list[data-v-9d4ebae2]{display:flex;flex-wrap:wrap}.box .boxContent .iconBox .item .list .icon[data-v-9d4ebae2]{width:24px;height:24px;margin-right:10px;margin-bottom:10px;cursor:pointer;position:relative}.box .boxContent .iconBox .item .list .icon[data-v-9d4ebae2] img,.box .boxContent .iconBox .item .list .icon[data-v-9d4ebae2] svg{width:100%;height:100%}.box .boxContent .iconBox .item .list .icon.selected[data-v-9d4ebae2]:after{content:"";position:absolute;left:-4px;top:-4px;width:28px;height:28px;border-radius:50%;border:2px solid #409eff}.box .boxContent .imageBox[data-v-9d4ebae2]{margin-bottom:20px;font-weight:700}.box .boxContent .imageBox .title[data-v-9d4ebae2]{margin-bottom:10px}.box .boxContent .imageBox .list[data-v-9d4ebae2]{display:flex;flex-wrap:wrap}.box .boxContent .imageBox .list .icon[data-v-9d4ebae2]{width:50px;height:50px;margin-right:10px;margin-bottom:10px;cursor:pointer;position:relative}.box .boxContent .imageBox .list .icon[data-v-9d4ebae2] img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.box .boxContent .imageBox .list .icon.selected[data-v-9d4ebae2]:after{content:"";position:absolute;left:-4px;top:-4px;width:54px;height:54px;border:2px solid #409eff}.nodeIconToolbar[data-v-1321abee]{position:fixed;z-index:2000;width:210px;max-height:170px;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:8px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);display:flex;flex-direction:column;overflow:hidden}.nodeIconToolbar .iconListBox[data-v-1321abee]{width:100%;height:180px;overflow-y:auto;padding:10px}.nodeIconToolbar .iconListBox .icon[data-v-1321abee]{width:24px;height:24px;margin:5px;cursor:pointer;position:relative;float:left}.nodeIconToolbar .iconListBox .icon[data-v-1321abee] img,.nodeIconToolbar .iconListBox .icon[data-v-1321abee] svg{width:100%;height:100%}.nodeIconToolbar .iconListBox .icon.selected[data-v-1321abee]:after{content:"";position:absolute;left:-4px;top:-4px;width:28px;height:28px;border-radius:50%;border:2px solid #409eff}.nodeIconToolbar .btnBox[data-v-1321abee]{width:100%;height:30px;display:flex;justify-content:center;align-items:center;border-top:1px solid #eee;flex-shrink:0}.nodeIconToolbar .btnBox .btn[data-v-1321abee]{cursor:pointer;color:rgba(26,26,26,.8)}.outlineEditContainer[data-v-157fc5ba]{position:fixed;left:0;top:0;width:100%;height:100%;z-index:9999;background-color:#fff;overflow:hidden}.outlineEditContainer.isDark[data-v-157fc5ba]{background-color:#262a2e}.outlineEditContainer.isDark .closeBtn .icon[data-v-157fc5ba]{color:#fff}.outlineEditContainer .closeBtn[data-v-157fc5ba]{position:absolute;right:40px;top:20px;cursor:pointer}.outlineEditContainer .closeBtn .icon[data-v-157fc5ba]{font-size:28px}.outlineEditContainer .outlineEditBox[data-v-157fc5ba]{width:100%;height:100%;overflow-y:auto;padding:50px 0}.outlineEditContainer .outlineEditBox .outlineEdit[data-v-157fc5ba]{width:1000px;height:100%;height:-moz-max-content;height:max-content;margin:0 auto}.outlineEditContainer .outlineEditBox .outlineEdit[data-v-157fc5ba] .customNode .nodeEdit{max-width:800px}.customNode[data-v-157fc5ba]{width:100%;color:rgba(0,0,0,.85);font-weight:700}.customNode .nodeEdit[data-v-157fc5ba]{outline:none;white-space:normal;padding-right:20px}.outlineTree.isDark[data-v-157fc5ba]{background-color:#262a2e}.outlineTree.isDark .customNode[data-v-157fc5ba]{color:#fff}.outlineTree.isDark.el-tree--highlight-current[data-v-157fc5ba] .el-tree-node.is-current>.el-tree-node__content{background-color:hsla(0,0%,100%,.05)!important}.outlineTree.isDark .el-upload-list__item[data-v-157fc5ba]:hover,.outlineTree.isDark[data-v-157fc5ba] .el-tree-node__content:hover{background-color:hsla(0,0%,100%,.02)!important}.outlineTree.isDark[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon{color:#fff}.outlineTree.isDark[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#fff}.outlineTree[data-v-157fc5ba] .el-tree-node>.el-tree-node__children{overflow:inherit}.outlineTree[data-v-157fc5ba] .el-tree-node__content{height:auto;margin:5px 0}.outlineTree[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon{color:#262a2e}.outlineTree[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon.is-leaf{color:transparent;position:relative}.outlineTree[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#262a2e;position:absolute;content:"";width:5px;height:5px;border-radius:50%;left:10px;top:50%;transform:translateY(-50%)}.scrollbarContainer.isDark .scrollbar[data-v-301c5ef9]{background-color:#363b3f}.scrollbarContainer.isDark .scrollbar .scrollbarInner[data-v-301c5ef9]{background-color:rgba(0,0,0,.3)}.scrollbarContainer .scrollbar[data-v-301c5ef9]{position:absolute;background-color:#f5f5f5;border-radius:10px;overflow:hidden}.scrollbarContainer .scrollbar.verticalScrollbar[data-v-301c5ef9]{width:10px;top:100px;bottom:100px;left:20px}.scrollbarContainer .scrollbar.verticalScrollbar .scrollbarInner[data-v-301c5ef9]{width:10px;left:0}.scrollbarContainer .scrollbar.horizontalScrollbar[data-v-301c5ef9]{height:10px;left:100px;right:100px;bottom:70px}.scrollbarContainer .scrollbar.horizontalScrollbar .scrollbarInner[data-v-301c5ef9]{height:10px;top:0}.scrollbarContainer .scrollbar .scrollbarInner[data-v-301c5ef9]{position:absolute;background-color:#ccc;border-radius:10px}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(../fonts/KaTeX_AMS-Regular.woff) format("woff"),url(../fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Main-Bold.woff) format("woff"),url(../fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Main-Italic.woff) format("woff"),url(../fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Main-Regular.woff) format("woff"),url(../fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Math-Italic.woff) format("woff"),url(../fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(../fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Script-Regular.woff) format("woff"),url(../fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size1-Regular.woff) format("woff"),url(../fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size2-Regular.woff) format("woff"),url(../fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(../fonts/KaTeX_Size3-Regular.woff) format("woff"),url(../fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size4-Regular.woff) format("woff"),url(../fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(../fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.9"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.box[data-v-3171f35e]{padding:10px;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.box.isDark .formulaList .formulaItem .overview[data-v-3171f35e],.box.isDark .formulaList .formulaItem .text[data-v-3171f35e],.box.isDark .title[data-v-3171f35e]{color:#fff}.box.isDark .formulaList .formulaItem .text[data-v-3171f35e]{background-color:#363b3f}.box.isDark[data-v-3171f35e] .el-textarea__inner{background-color:transparent;color:#fff}.box .title[data-v-3171f35e]{font-size:16px;font-weight:500;color:#333;margin:10px 0;flex-shrink:0}.box .formulaInputBox[data-v-3171f35e]{flex-shrink:0}.box .formulaList[data-v-3171f35e]{height:100%;overflow-y:auto}.box .formulaList .formulaItem[data-v-3171f35e]{position:relative;display:flex;overflow:hidden;align-items:center;border:1px solid #dcdfe6;border-bottom:none}.box .formulaList .formulaItem[data-v-3171f35e]:last-of-type{border-bottom:1px solid #dcdfe6}.box .formulaList .formulaItem .overview[data-v-3171f35e],.box .formulaList .formulaItem .text[data-v-3171f35e]{width:50%;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0}.box .formulaList .formulaItem .overview[data-v-3171f35e]{padding:10px 0;border-right:none}.box .formulaList .formulaItem .text[data-v-3171f35e]{cursor:pointer;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:100%;position:absolute;right:0;top:0;border-left:1px solid #dcdfe6;background-color:#fafafa}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.sourceCodeEditContainer[data-v-261f5f85]{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1999;background-color:#f5f5f5;overflow:hidden}.sourceCodeEditContainer.isDark[data-v-261f5f85]{background-color:#262a2e}.sourceCodeEditContainer.isDark .closeBtn .icon[data-v-261f5f85]{color:#fff}.sourceCodeEditContainer .closeBtn[data-v-261f5f85]{position:absolute;right:40px;top:20px;cursor:pointer;display:flex;align-items:center}.sourceCodeEditContainer .closeBtn .icon[data-v-261f5f85]{font-size:28px;margin-left:10px}.sourceCodeEditContainer .sourceCodeEditBox[data-v-261f5f85]{width:100%;height:100%;overflow:hidden;padding:50px 0}.sourceCodeEditContainer .sourceCodeEditBox .outlineEdit[data-v-261f5f85]{width:1000px;margin:0 auto;font-size:17px;background-color:#fff;padding:12px;border-radius:5px}.sourceCodeEditContainer .sourceCodeEditBox .outlineEdit[data-v-261f5f85],.sourceCodeEditContainer .sourceCodeEditBox .outlineEdit[data-v-261f5f85] .CodeMirror{height:100%;font-family:Menlo,Monaco,Consolas,Andale Mono,Ubuntu Mono,Courier New,monospace}.nodeAttachmentContextMenu[data-v-49bf43bc]{position:fixed;background-color:#fff;padding:10px;border-radius:5px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.nodeAttachmentContextMenu .menuItem[data-v-49bf43bc]{font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#1a1a1a;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.editContainer[data-v-0678a25b]{position:fixed;left:0;right:0;top:0;bottom:0}.editContainer .dragMask[data-v-0678a25b]{position:absolute;left:0;top:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.8);display:flex;align-items:center;justify-content:center;z-index:3999}.editContainer .dragMask .dragTip[data-v-0678a25b]{pointer-events:none;font-weight:700}.editContainer .mindMapContainer[data-v-0678a25b]{position:absolute;left:0;top:0;width:100%;height:100%}body.isDark .el-button,body.isDark .el-input__inner{background-color:#363b3f;color:hsla(0,0%,100%,.9);border-color:hsla(0,0%,100%,.1)}body.isDark .el-input.is-disabled .el-input__inner{color:hsla(0,0%,100%,.3)}body.isDark .el-input-group__append,body.isDark .el-input-group__prepend,body.isDark .el-input.is-disabled .el-input__inner{background-color:#363b3f;border-color:hsla(0,0%,100%,.1)}body.isDark .el-input-group__append button.el-button{color:hsla(0,0%,100%,.9)}body.isDark .el-select-dropdown{background-color:#36393d;border-color:hsla(0,0%,100%,.1)}body.isDark .el-select-dropdown .el-select-dropdown__item{color:hsla(0,0%,100%,.6)}body.isDark .el-select-dropdown .el-select-dropdown__item.selected{color:#409eff}body.isDark .el-select-dropdown .el-select-dropdown__item.hover,body.isDark .el-select-dropdown .el-select-dropdown__item:hover{background-color:hsla(0,0%,100%,.05)}body.isDark .el-popper,body.isDark .el-select .el-input.is-disabled .el-input__inner:hover{border-color:hsla(0,0%,100%,.1)}body.isDark .el-popper,body.isDark .el-popper[x-placement^=bottom] .popper__arrow{background-color:#36393d}body.isDark .el-popper[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#36393d}body.isDark .el-popper[x-placement^=top] .popper__arrow{background-color:#36393d}body.isDark .el-popper[x-placement^=top] .popper__arrow:after{border-top-color:#36393d}body.isDark .el-tabs__item{color:hsla(0,0%,100%,.6)}body.isDark .el-tabs__item.is-active,body.isDark .el-tabs__item:hover{color:#409eff}body.isDark .el-slider__runway,body.isDark .el-tabs__nav-wrap:after{background-color:hsla(0,0%,100%,.6)}body.isDark .el-radio-group .el-radio-button__inner{background-color:#36393d;color:hsla(0,0%,100%,.6)}body.isDark .el-radio-group .el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff}body.isDark .el-dialog{background-color:#262a2e}body.isDark .el-dialog .el-dialog__header{border-bottom:1px solid hsla(0,0%,100%,.1)}body.isDark .el-dialog .el-dialog__title{color:hsla(0,0%,100%,.9)}body.isDark .el-dialog .el-dialog__body{background-color:#262a2e}body.isDark .el-dialog .el-dialog__footer{border-top:1px solid hsla(0,0%,100%,.1)}body.isDark .el-upload__tip{color:#999}body.isDark .toastui-editor-main-container{background-color:#fff} \ No newline at end of file + */.ProseMirror{font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;color:#222;font-size:13px;overflow-y:auto;overflow-X:hidden;height:calc(100% - 36px)}.ProseMirror .placeholder{color:#999}.ProseMirror-selectednode,.ProseMirror:focus{outline:none}.html-block.ProseMirror-selectednode,table.ProseMirror-selectednode{border-radius:2px;outline:2px solid #00a9ff}.toastui-editor-contents{margin:0;padding:0;font-size:13px;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;z-index:20}.toastui-editor-contents :not(table){line-height:160%;-webkit-box-sizing:content-box;box-sizing:content-box}.toastui-editor-contents address,.toastui-editor-contents cite,.toastui-editor-contents dfn,.toastui-editor-contents em,.toastui-editor-contents i,.toastui-editor-contents var{font-style:italic}.toastui-editor-contents strong{font-weight:700}.toastui-editor-contents p{margin:10px 0;color:#222}.toastui-editor-contents>div>div:first-of-type h1,.toastui-editor-contents>h1:first-of-type{margin-top:14px}.toastui-editor-contents h1,.toastui-editor-contents h2,.toastui-editor-contents h3,.toastui-editor-contents h4,.toastui-editor-contents h5,.toastui-editor-contents h6{font-weight:700;color:#222}.toastui-editor-contents h1{font-size:24px;line-height:28px;border-bottom:3px double #999;margin:52px 0 15px 0;padding-bottom:7px}.toastui-editor-contents h2{font-size:22px;line-height:23px;border-bottom:1px solid #dbdbdb;margin:20px 0 13px 0;padding-bottom:7px}.toastui-editor-contents h3{font-size:20px;margin:18px 0 2px}.toastui-editor-contents h4{font-size:18px;margin:10px 0 2px}.toastui-editor-contents h3,.toastui-editor-contents h4{line-height:18px}.toastui-editor-contents h5{font-size:16px}.toastui-editor-contents h6{font-size:14px}.toastui-editor-contents h5,.toastui-editor-contents h6{line-height:17px;margin:9px 0 -4px}.toastui-editor-contents del{color:#999}.toastui-editor-contents blockquote{margin:14px 0;border-left:4px solid #e5e5e5;padding:0 16px;color:#999}.toastui-editor-contents blockquote ol,.toastui-editor-contents blockquote p,.toastui-editor-contents blockquote ul{color:#999}.toastui-editor-contents blockquote>:first-child{margin-top:0}.toastui-editor-contents blockquote>:last-child{margin-bottom:0}.toastui-editor-contents code,.toastui-editor-contents pre{font-family:Consolas,Courier,Apple SD 산돌고딕 Neo,-apple-system,Lucida Grande,Apple SD Gothic Neo,맑은 고딕,Malgun Gothic,Segoe UI,돋움,dotum,sans-serif;border:0;border-radius:0}.toastui-editor-contents pre{margin:2px 0 8px;padding:18px;background-color:#f4f7f8}.toastui-editor-contents code{color:#c1798b;background-color:#f9f2f4;padding:2px 3px;letter-spacing:-.3px;border-radius:2px}.toastui-editor-contents pre code{padding:0;color:inherit;white-space:pre-wrap;background-color:transparent}.toastui-editor-contents img{margin:4px 0 10px;-webkit-box-sizing:border-box;box-sizing:border-box;vertical-align:top;max-width:100%}.toastui-editor-contents table{border:1px solid rgba(0,0,0,.1);margin:12px 0 14px;color:#222;width:auto;border-collapse:collapse;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-contents table td,.toastui-editor-contents table th{border:1px solid rgba(0,0,0,.1);padding:5px 14px 5px 12px;height:32px}.toastui-editor-contents table th{background-color:#555;font-weight:300;color:#fff;padding-top:6px}.toastui-editor-contents th p{margin:0;color:#fff}.toastui-editor-contents td p{margin:0;padding:0 2px}.toastui-editor-contents td.toastui-editor-cell-selected{background-color:#d8dfec}.toastui-editor-contents th.toastui-editor-cell-selected{background-color:#908f8f}.toastui-editor-contents dir,.toastui-editor-contents menu,.toastui-editor-contents ol,.toastui-editor-contents ul{display:block;list-style-type:none;padding-left:24px;margin:6px 0 10px;color:#222}.toastui-editor-contents ol{list-style-type:none;counter-reset:li}.toastui-editor-contents ol>li{counter-increment:li}.toastui-editor-contents ol>li:before,.toastui-editor-contents ul>li:before{display:inline-block;position:absolute}.toastui-editor-contents ul>li:before{content:"";margin-top:6px;margin-left:-17px;width:5px;height:5px;border-radius:50%;background-color:#ccc}.toastui-editor-contents ol>li:before{content:"." counter(li);margin-left:-28px;width:24px;text-align:right;direction:rtl;color:#aaa}.toastui-editor-contents ol ol,.toastui-editor-contents ol ul,.toastui-editor-contents ul ol,.toastui-editor-contents ul ul{margin-top:0!important;margin-bottom:0!important}.toastui-editor-contents ol li,.toastui-editor-contents ul li{position:relative}.toastui-editor-contents ol p,.toastui-editor-contents ul p{margin:0}.toastui-editor-contents hr{border-top:1px solid #eee;margin:16px 0}.toastui-editor-contents a{text-decoration:underline;color:#4b96e6}.toastui-editor-contents a:hover{color:#1f70de}.toastui-editor-contents .image-link{position:relative}.toastui-editor-contents .image-link:hover:before{content:"";position:absolute;width:30px;height:30px;right:0;border-radius:50%;border:1px solid #c9ccd5;background:#fff url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCI+PGcgc3Ryb2tlPSIjNTU1IiBzdHJva2Utd2lkdGg9IjEuNSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2UtbGluZWNhcD0icm91bmQiPjxwYXRoIGQ9Ik01LjY4NyAxMC4yOTRsLTEuMjg1IDEuMjg4Yy0xLjA1IDEuMDUtMS4wMzUgMi43NzIuMDM3IDMuODQ0bC4xMzUuMTM1YzEuMDcyIDEuMDcyIDIuNzk0IDEuMDg4IDMuODQ0LjAzN2wyLjcyLTIuNzJjMS4wNTEtMS4wNSAxLjAzNC0yLjc3Mi0uMDM3LTMuODQzbC0uMTM2LS4xMzYiLz48cGF0aCBkPSJNMTQuMzA1IDkuNzEzbDEuMjg3LTEuMjljMS4wNTItMS4wNTEgMS4wMzYtMi43NzMtLjAzNi0zLjg0NGwtLjEzNS0uMTM2Yy0xLjA3Mi0xLjA3Mi0yLjc5NC0xLjA4OC0zLjg0NS0uMDM2TDguODU3IDcuMTI2Yy0xLjA1MSAxLjA1MS0xLjAzNCAyLjc3Mi4wMzcgMy44NDNsLjEzNi4xMzYiLz48L2c+PC9zdmc+) no-repeat;background-position:50%;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);cursor:pointer}.toastui-editor-contents .task-list-item{border:0;list-style:none;padding-left:24px;margin-left:-24px}.toastui-editor-contents .task-list-item:before{background-repeat:no-repeat;background-size:18px 18px;background-position:50%;content:"";margin-left:0;margin-top:0;border-radius:2px;height:18px;width:18px;position:absolute;left:0;top:1px;cursor:pointer;background:transparent url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHJlY3Qgd2lkdGg9IjE3IiBoZWlnaHQ9IjE3IiB4PSIuNSIgeT0iLjUiIHJ4PSIyIiBmaWxsPSIjRkZGIiBzdHJva2U9IiNDQ0MiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.toastui-editor-contents .task-list-item.checked:before{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCI+PHBhdGggZD0iTTE2IDBhMiAyIDAgMDEyIDJ2MTRhMiAyIDAgMDEtMiAySDJhMiAyIDAgMDEtMi0yVjJhMiAyIDAgMDEyLTJoMTR6bS0xLjc5MyA1LjI5M2ExIDEgMCAwMC0xLjQxNCAwTDcuNSAxMC41ODUgNS4yMDcgOC4yOTNsLS4wOTQtLjA4M2ExIDEgMCAwMC0xLjMyIDEuNDk3bDMgMyAuMDk0LjA4M2ExIDEgMCAwMDEuMzItLjA4M2w2LTYgLjA4My0uMDk0YTEgMSAwIDAwLS4wODMtMS4zMnoiIGZpbGw9IiM0Qjk2RTYiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvc3ZnPg==)}.toastui-editor-custom-block .toastui-editor-custom-block-editor{background:#f9f7fd;color:#452d6b;border:1px solid #dbd4ea}.toastui-editor-custom-block .toastui-editor-custom-block-view{position:relative;padding:9px 13px 8px 12px}.toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view{border:1px solid #dbd4ea;border-radius:2px}.toastui-editor-custom-block .toastui-editor-custom-block-view .tool{position:absolute;right:10px;top:7px;display:none}.toastui-editor-custom-block.ProseMirror-selectednode .toastui-editor-custom-block-view .tool{display:block}.toastui-editor-custom-block-view button{vertical-align:middle;width:15px;height:15px;margin-left:8px;padding:3px;border:1px solid #ccc;background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAzMCI+PHBhdGggZD0iTTE1LjUgMTIuNWwyIDJMMTIgMjBoLTJ2LTJsNS41LTUuNXpNMTggMTBsMiAyLTEuNSAxLjUtMi0yTDE4IDEweiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM1NTUiLz48L3N2Zz4=) no-repeat;background-position:50%;background-size:30px 30px}.toastui-editor-custom-block-view .info{font-size:13px;font-weight:700;color:#5200d0;vertical-align:middle}.toastui-editor-contents .toastui-editor-ww-code-block{position:relative}.toastui-editor-contents .toastui-editor-ww-code-block:after{content:attr(data-language);position:absolute;display:inline-block;top:10px;right:10px;height:24px;padding:3px 35px 0 10px;font-weight:700;font-size:13px;color:#333;background:#e5e9ea url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMCAzMCI+PHBhdGggZD0iTTE1LjUgMTIuNWwyIDJMMTIgMjBoLTJ2LTJsNS41LTUuNXpNMTggMTBsMiAyLTEuNSAxLjUtMi0yTDE4IDEweiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM1NTUiLz48L3N2Zz4=) no-repeat;background-position:100%;border-radius:2px;background-size:30px 30px;cursor:pointer}.toastui-editor-ww-code-block-language{position:fixed;display:inline-block;width:100px;height:27px;right:35px;border:1px solid #ccc;border-radius:2px;background-color:#fff;z-index:30}.toastui-editor-ww-code-block-language input{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:0 10px;height:100%;width:100%;background-color:transparent;border:none;outline:none}.toastui-editor-contents-placeholder:before{content:attr(data-placeholder);color:grey;line-height:160%;position:absolute}.toastui-editor-md-preview .toastui-editor-contents h1{min-height:28px}.toastui-editor-md-preview .toastui-editor-contents h2{min-height:23px}.toastui-editor-md-preview .toastui-editor-contents blockquote{min-height:20px}.toastui-editor-md-preview .toastui-editor-contents li{min-height:22px}.toastui-editor-pseudo-clipboard{position:fixed;opacity:0;width:0;height:0;left:-1000px;top:-1000px;z-index:-1}.noteContentViewer[data-v-25bce70a]{position:fixed;background-color:#fff;padding:10px;border-radius:5px;max-height:300px;overflow-y:auto;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.noteContentViewer[data-v-25bce70a]::-webkit-scrollbar{width:7px;height:7px}.noteContentViewer[data-v-25bce70a]::-webkit-scrollbar-thumb{border-radius:7px;background-color:rgba(0,0,0,.3);cursor:pointer}.noteContentViewer[data-v-25bce70a]::-webkit-scrollbar-track{box-shadow:none;background:transparent;display:none}.navigatorBox[data-v-8a96ff3c]{position:absolute;height:220px;background-color:#fff;bottom:80px;right:70px;box-shadow:0 0 16px #989898;border-radius:4px;border:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.navigatorBox.isDark[data-v-8a96ff3c]{background-color:#262a2e}.navigatorBox .svgBox[data-v-8a96ff3c]{position:absolute;left:0;transform-origin:left top}.navigatorBox .windowBox[data-v-8a96ff3c]{position:absolute;border:2px solid #ee4545;transition:all .3s}.sidebarTriggerContainer[data-v-03ad7129]{position:fixed;right:-60px;margin-top:110px;transition:all .3s;top:50%;transform:translateY(-50%)}.sidebarTriggerContainer.isDark .trigger[data-v-03ad7129]{background-color:#262a2e}.sidebarTriggerContainer.isDark .trigger .triggerItem[data-v-03ad7129]{color:hsla(0,0%,100%,.6)}.sidebarTriggerContainer.isDark .trigger .triggerItem[data-v-03ad7129]:hover{background-color:hsla(0,0%,100%,.05)}.sidebarTriggerContainer.show[data-v-03ad7129]{right:0}.sidebarTriggerContainer.hasActive[data-v-03ad7129]{right:305px}.sidebarTriggerContainer .toggleShowBtn[data-v-03ad7129]{position:absolute;left:-6px;width:35px;height:60px;background:#409eff;top:50%;transform:translateY(-50%);cursor:pointer;transition:left .1s linear;z-index:0;border-top-left-radius:10px;border-bottom-left-radius:10px;display:flex;align-items:center;padding-left:4px}.sidebarTriggerContainer .toggleShowBtn.hide[data-v-03ad7129]{left:-8px}.sidebarTriggerContainer .toggleShowBtn.hide span[data-v-03ad7129]{transform:rotate(180deg)}.sidebarTriggerContainer .toggleShowBtn[data-v-03ad7129]:hover{left:-18px}.sidebarTriggerContainer .toggleShowBtn span[data-v-03ad7129]{color:#fff;transition:all .1s}.sidebarTriggerContainer .trigger[data-v-03ad7129]{position:relative;width:60px;border-color:#eee;background-color:#fff;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border-radius:6px;overflow:hidden}.sidebarTriggerContainer .trigger .triggerItem[data-v-03ad7129]{height:60px;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer;color:#464646;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.sidebarTriggerContainer .trigger .triggerItem[data-v-03ad7129]:hover{background-color:#ededed}.sidebarTriggerContainer .trigger .triggerItem.active[data-v-03ad7129]{color:#409eff;font-weight:700}.sidebarTriggerContainer .trigger .triggerItem .triggerIcon[data-v-03ad7129]{font-size:18px;margin-bottom:5px}.sidebarTriggerContainer .trigger .triggerItem .triggerName[data-v-03ad7129]{font-size:13px}.customNodeContent[data-v-6ef61ceb]{padding:10px;cursor:pointer}.searchContainer[data-v-4c813624]{position:relative;background-color:#fff;padding:16px;width:296px;border-radius:12px;box-shadow:0 4px 16px 0 rgba(0,0,0,.1);position:fixed;top:110px;right:-296px;transition:all .3s}.searchContainer.isDark[data-v-4c813624]{background-color:#363b3f}.searchContainer.isDark .closeBtnBox[data-v-4c813624]{color:#fff;background-color:#363b3f}.searchContainer.show[data-v-4c813624]{right:20px}.searchContainer .btnList[data-v-4c813624]{display:flex;justify-content:flex-end}.searchContainer .closeBtnBox[data-v-4c813624]{position:absolute;right:-5px;top:-5px;width:20px;height:20px;background-color:#fff;border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;box-shadow:0 4px 16px 0 rgba(0,0,0,.1)}.searchContainer .closeBtnBox .closeBtn[data-v-4c813624]{font-size:16px}.searchContainer .searchInputBox[data-v-4c813624]{position:relative}.searchContainer .searchInputBox .searchInfo[data-v-4c813624]{position:absolute;right:70px;top:50%;transform:translateY(-50%);color:#909090;font-size:14px}.box[data-v-9d4ebae2]{padding:0 20px}.box.isDark .title[data-v-9d4ebae2]{color:#fff}.box .title[data-v-9d4ebae2]{font-size:16px;font-weight:500;color:#333}.box .boxContent .iconBox .item[data-v-9d4ebae2]{margin-bottom:20px;font-weight:700}.box .boxContent .iconBox .item .title[data-v-9d4ebae2]{margin-bottom:10px}.box .boxContent .iconBox .item .list[data-v-9d4ebae2]{display:flex;flex-wrap:wrap}.box .boxContent .iconBox .item .list .icon[data-v-9d4ebae2]{width:24px;height:24px;margin-right:10px;margin-bottom:10px;cursor:pointer;position:relative}.box .boxContent .iconBox .item .list .icon[data-v-9d4ebae2] img,.box .boxContent .iconBox .item .list .icon[data-v-9d4ebae2] svg{width:100%;height:100%}.box .boxContent .iconBox .item .list .icon.selected[data-v-9d4ebae2]:after{content:"";position:absolute;left:-4px;top:-4px;width:28px;height:28px;border-radius:50%;border:2px solid #409eff}.box .boxContent .imageBox[data-v-9d4ebae2]{margin-bottom:20px;font-weight:700}.box .boxContent .imageBox .title[data-v-9d4ebae2]{margin-bottom:10px}.box .boxContent .imageBox .list[data-v-9d4ebae2]{display:flex;flex-wrap:wrap}.box .boxContent .imageBox .list .icon[data-v-9d4ebae2]{width:50px;height:50px;margin-right:10px;margin-bottom:10px;cursor:pointer;position:relative}.box .boxContent .imageBox .list .icon[data-v-9d4ebae2] img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.box .boxContent .imageBox .list .icon.selected[data-v-9d4ebae2]:after{content:"";position:absolute;left:-4px;top:-4px;width:54px;height:54px;border:2px solid #409eff}.nodeIconToolbar[data-v-1321abee]{position:fixed;z-index:2000;width:210px;max-height:170px;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:8px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);display:flex;flex-direction:column;overflow:hidden}.nodeIconToolbar .iconListBox[data-v-1321abee]{width:100%;height:180px;overflow-y:auto;padding:10px}.nodeIconToolbar .iconListBox .icon[data-v-1321abee]{width:24px;height:24px;margin:5px;cursor:pointer;position:relative;float:left}.nodeIconToolbar .iconListBox .icon[data-v-1321abee] img,.nodeIconToolbar .iconListBox .icon[data-v-1321abee] svg{width:100%;height:100%}.nodeIconToolbar .iconListBox .icon.selected[data-v-1321abee]:after{content:"";position:absolute;left:-4px;top:-4px;width:28px;height:28px;border-radius:50%;border:2px solid #409eff}.nodeIconToolbar .btnBox[data-v-1321abee]{width:100%;height:30px;display:flex;justify-content:center;align-items:center;border-top:1px solid #eee;flex-shrink:0}.nodeIconToolbar .btnBox .btn[data-v-1321abee]{cursor:pointer;color:rgba(26,26,26,.8)}.outlineEditContainer[data-v-157fc5ba]{position:fixed;left:0;top:0;width:100%;height:100%;z-index:9999;background-color:#fff;overflow:hidden}.outlineEditContainer.isDark[data-v-157fc5ba]{background-color:#262a2e}.outlineEditContainer.isDark .closeBtn .icon[data-v-157fc5ba]{color:#fff}.outlineEditContainer .closeBtn[data-v-157fc5ba]{position:absolute;right:40px;top:20px;cursor:pointer}.outlineEditContainer .closeBtn .icon[data-v-157fc5ba]{font-size:28px}.outlineEditContainer .outlineEditBox[data-v-157fc5ba]{width:100%;height:100%;overflow-y:auto;padding:50px 0}.outlineEditContainer .outlineEditBox .outlineEdit[data-v-157fc5ba]{width:1000px;height:100%;height:-moz-max-content;height:max-content;margin:0 auto}.outlineEditContainer .outlineEditBox .outlineEdit[data-v-157fc5ba] .customNode .nodeEdit{max-width:800px}.customNode[data-v-157fc5ba]{width:100%;color:rgba(0,0,0,.85);font-weight:700}.customNode .nodeEdit[data-v-157fc5ba]{outline:none;white-space:normal;padding-right:20px}.outlineTree.isDark[data-v-157fc5ba]{background-color:#262a2e}.outlineTree.isDark .customNode[data-v-157fc5ba]{color:#fff}.outlineTree.isDark.el-tree--highlight-current[data-v-157fc5ba] .el-tree-node.is-current>.el-tree-node__content{background-color:hsla(0,0%,100%,.05)!important}.outlineTree.isDark .el-upload-list__item[data-v-157fc5ba]:hover,.outlineTree.isDark[data-v-157fc5ba] .el-tree-node__content:hover{background-color:hsla(0,0%,100%,.02)!important}.outlineTree.isDark[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon{color:#fff}.outlineTree.isDark[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#fff}.outlineTree[data-v-157fc5ba] .el-tree-node>.el-tree-node__children{overflow:inherit}.outlineTree[data-v-157fc5ba] .el-tree-node__content{height:auto;margin:5px 0}.outlineTree[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon{color:#262a2e}.outlineTree[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon.is-leaf{color:transparent;position:relative}.outlineTree[data-v-157fc5ba] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#262a2e;position:absolute;content:"";width:5px;height:5px;border-radius:50%;left:10px;top:50%;transform:translateY(-50%)}.scrollbarContainer.isDark .scrollbar[data-v-301c5ef9]{background-color:#363b3f}.scrollbarContainer.isDark .scrollbar .scrollbarInner[data-v-301c5ef9]{background-color:rgba(0,0,0,.3)}.scrollbarContainer .scrollbar[data-v-301c5ef9]{position:absolute;background-color:#f5f5f5;border-radius:10px;overflow:hidden}.scrollbarContainer .scrollbar.verticalScrollbar[data-v-301c5ef9]{width:10px;top:100px;bottom:100px;left:20px}.scrollbarContainer .scrollbar.verticalScrollbar .scrollbarInner[data-v-301c5ef9]{width:10px;left:0}.scrollbarContainer .scrollbar.horizontalScrollbar[data-v-301c5ef9]{height:10px;left:100px;right:100px;bottom:70px}.scrollbarContainer .scrollbar.horizontalScrollbar .scrollbarInner[data-v-301c5ef9]{height:10px;top:0}.scrollbarContainer .scrollbar .scrollbarInner[data-v-301c5ef9]{position:absolute;background-color:#ccc;border-radius:10px}@font-face{font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(../fonts/KaTeX_AMS-Regular.woff) format("woff"),url(../fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(../fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(../fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(../fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(../fonts/KaTeX_Main-Bold.woff) format("woff"),url(../fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Main-Italic.woff) format("woff"),url(../fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Main-Regular.woff) format("woff"),url(../fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(../fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(../fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(../fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(../fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(../fonts/KaTeX_Math-Italic.woff) format("woff"),url(../fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(../fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(../fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(../fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(../fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Script-Regular.woff) format("woff"),url(../fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size1-Regular.woff) format("woff"),url(../fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size2-Regular.woff) format("woff"),url(../fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(../fonts/KaTeX_Size3-Regular.woff) format("woff"),url(../fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Size4-Regular.woff) format("woff"),url(../fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(../fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(../fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(../fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{text-rendering:auto;font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.9"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.box[data-v-3171f35e]{padding:10px;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.box.isDark .formulaList .formulaItem .overview[data-v-3171f35e],.box.isDark .formulaList .formulaItem .text[data-v-3171f35e],.box.isDark .title[data-v-3171f35e]{color:#fff}.box.isDark .formulaList .formulaItem .text[data-v-3171f35e]{background-color:#363b3f}.box.isDark[data-v-3171f35e] .el-textarea__inner{background-color:transparent;color:#fff}.box .title[data-v-3171f35e]{font-size:16px;font-weight:500;color:#333;margin:10px 0;flex-shrink:0}.box .formulaInputBox[data-v-3171f35e]{flex-shrink:0}.box .formulaList[data-v-3171f35e]{height:100%;overflow-y:auto}.box .formulaList .formulaItem[data-v-3171f35e]{position:relative;display:flex;overflow:hidden;align-items:center;border:1px solid #dcdfe6;border-bottom:none}.box .formulaList .formulaItem[data-v-3171f35e]:last-of-type{border-bottom:1px solid #dcdfe6}.box .formulaList .formulaItem .overview[data-v-3171f35e],.box .formulaList .formulaItem .text[data-v-3171f35e]{width:50%;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0}.box .formulaList .formulaItem .overview[data-v-3171f35e]{padding:10px 0;border-right:none}.box .formulaList .formulaItem .text[data-v-3171f35e]{cursor:pointer;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:100%;position:absolute;right:0;top:0;border-left:1px solid #dcdfe6;background-color:#fafafa}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.sourceCodeEditContainer[data-v-261f5f85]{position:fixed;left:0;top:0;width:100%;height:100%;z-index:1999;background-color:#f5f5f5;overflow:hidden}.sourceCodeEditContainer.isDark[data-v-261f5f85]{background-color:#262a2e}.sourceCodeEditContainer.isDark .closeBtn .icon[data-v-261f5f85]{color:#fff}.sourceCodeEditContainer .closeBtn[data-v-261f5f85]{position:absolute;right:40px;top:20px;cursor:pointer;display:flex;align-items:center}.sourceCodeEditContainer .closeBtn .icon[data-v-261f5f85]{font-size:28px;margin-left:10px}.sourceCodeEditContainer .sourceCodeEditBox[data-v-261f5f85]{width:100%;height:100%;overflow:hidden;padding:50px 0}.sourceCodeEditContainer .sourceCodeEditBox .outlineEdit[data-v-261f5f85]{width:1000px;margin:0 auto;font-size:17px;background-color:#fff;padding:12px;border-radius:5px}.sourceCodeEditContainer .sourceCodeEditBox .outlineEdit[data-v-261f5f85],.sourceCodeEditContainer .sourceCodeEditBox .outlineEdit[data-v-261f5f85] .CodeMirror{height:100%;font-family:Menlo,Monaco,Consolas,Andale Mono,Ubuntu Mono,Courier New,monospace}.nodeAttachmentContextMenu[data-v-49bf43bc]{position:fixed;background-color:#fff;padding:10px;border-radius:5px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.nodeAttachmentContextMenu .menuItem[data-v-49bf43bc]{font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#1a1a1a;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.editContainer[data-v-310a4614]{position:fixed;left:0;right:0;top:0;bottom:0}.editContainer .dragMask[data-v-310a4614]{position:absolute;left:0;top:0;width:100%;height:100%;background-color:hsla(0,0%,100%,.8);display:flex;align-items:center;justify-content:center;z-index:3999}.editContainer .dragMask .dragTip[data-v-310a4614]{pointer-events:none;font-weight:700}.editContainer .mindMapContainer[data-v-310a4614]{position:absolute;left:0;top:0;width:100%;height:100%}body.isDark .el-button,body.isDark .el-input__inner{background-color:#363b3f;color:hsla(0,0%,100%,.9);border-color:hsla(0,0%,100%,.1)}body.isDark .el-input.is-disabled .el-input__inner{color:hsla(0,0%,100%,.3)}body.isDark .el-input-group__append,body.isDark .el-input-group__prepend,body.isDark .el-input.is-disabled .el-input__inner{background-color:#363b3f;border-color:hsla(0,0%,100%,.1)}body.isDark .el-input-group__append button.el-button{color:hsla(0,0%,100%,.9)}body.isDark .el-select-dropdown{background-color:#36393d;border-color:hsla(0,0%,100%,.1)}body.isDark .el-select-dropdown .el-select-dropdown__item{color:hsla(0,0%,100%,.6)}body.isDark .el-select-dropdown .el-select-dropdown__item.selected{color:#409eff}body.isDark .el-select-dropdown .el-select-dropdown__item.hover,body.isDark .el-select-dropdown .el-select-dropdown__item:hover{background-color:hsla(0,0%,100%,.05)}body.isDark .el-popper,body.isDark .el-select .el-input.is-disabled .el-input__inner:hover{border-color:hsla(0,0%,100%,.1)}body.isDark .el-popper,body.isDark .el-popper[x-placement^=bottom] .popper__arrow{background-color:#36393d}body.isDark .el-popper[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#36393d}body.isDark .el-popper[x-placement^=top] .popper__arrow{background-color:#36393d}body.isDark .el-popper[x-placement^=top] .popper__arrow:after{border-top-color:#36393d}body.isDark .el-tabs__item{color:hsla(0,0%,100%,.6)}body.isDark .el-tabs__item.is-active,body.isDark .el-tabs__item:hover{color:#409eff}body.isDark .el-slider__runway,body.isDark .el-tabs__nav-wrap:after{background-color:hsla(0,0%,100%,.6)}body.isDark .el-radio-group .el-radio-button__inner{background-color:#36393d;color:hsla(0,0%,100%,.6)}body.isDark .el-radio-group .el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff}body.isDark .el-dialog{background-color:#262a2e}body.isDark .el-dialog .el-dialog__header{border-bottom:1px solid hsla(0,0%,100%,.1)}body.isDark .el-dialog .el-dialog__title{color:hsla(0,0%,100%,.9)}body.isDark .el-dialog .el-dialog__body{background-color:#262a2e}body.isDark .el-dialog .el-dialog__footer{border-top:1px solid hsla(0,0%,100%,.1)}body.isDark .el-upload__tip{color:#999}body.isDark .toastui-editor-main-container{background-color:#fff} \ No newline at end of file diff --git a/dist/fonts/iconfont.ttf b/dist/fonts/iconfont.ttf index bb0fbedf..4c06d739 100644 Binary files a/dist/fonts/iconfont.ttf and b/dist/fonts/iconfont.ttf differ diff --git a/dist/fonts/iconfont.woff b/dist/fonts/iconfont.woff index fdb5ff4b..398e6416 100644 Binary files a/dist/fonts/iconfont.woff and b/dist/fonts/iconfont.woff differ diff --git a/dist/fonts/iconfont.woff2 b/dist/fonts/iconfont.woff2 index 4225466d..914e4be5 100644 Binary files a/dist/fonts/iconfont.woff2 and b/dist/fonts/iconfont.woff2 differ diff --git a/dist/img/在下青铜五.jpg b/dist/img/在下青铜五.jpg new file mode 100644 index 00000000..05676fa3 Binary files /dev/null and b/dist/img/在下青铜五.jpg differ diff --git a/dist/img/子豪.jpg b/dist/img/子豪.jpg new file mode 100644 index 00000000..10220015 Binary files /dev/null and b/dist/img/子豪.jpg differ diff --git a/dist/img/孟照星.jpg b/dist/img/孟照星.jpg new file mode 100644 index 00000000..64a61fa5 Binary files /dev/null and b/dist/img/孟照星.jpg differ diff --git a/dist/img/宏涛.jpg b/dist/img/宏涛.jpg new file mode 100644 index 00000000..394e41d5 Binary files /dev/null and b/dist/img/宏涛.jpg differ diff --git a/dist/img/庆国.jpg b/dist/img/庆国.jpg new file mode 100644 index 00000000..05c6bd17 Binary files /dev/null and b/dist/img/庆国.jpg differ diff --git a/dist/img/木星二号.jpg b/dist/img/木星二号.jpg new file mode 100644 index 00000000..6c1c65e9 Binary files /dev/null and b/dist/img/木星二号.jpg differ diff --git a/dist/img/阿晨.jpg b/dist/img/阿晨.jpg new file mode 100644 index 00000000..e12fdce5 Binary files /dev/null and b/dist/img/阿晨.jpg differ diff --git a/dist/js/app.js b/dist/js/app.js index f7e47582..a5c521c7 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1 +1 @@ -(function(e){function t(t){for(var i,o,l=t[0],c=t[1],d=t[2],s=0,u=[];s>>0,this.mti=1;this.mti>>30,this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0},a.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n>>1^t[1&e];for(;n>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};var r=n("8a19");const l=(e,t,n,i,o,a=0,r=0)=>{let c=!1;if(n&&(c=n(e,t,o,a,r)),!c&&e.children&&e.children.length>0){let t=a+1;e.children.forEach((o,a)=>{l(o,e,n,i,!1,t,a)})}i&&i(e,t,o,a,r)},c=(e,t)=>{let n=[e],i=!1;"stop"===t(e,null)&&(i=!0);while(n.length){if(i)break;let e=n.shift();e.children&&e.children.length&&e.children.forEach(o=>{i||(n.push(o),"stop"===t(o,e)&&(i=!0))})}},d=(e,t,n,i)=>{let o=[],a=e/t,r=n/i;return o=a>r?[a*i,i]:[n,n/a],o},s=(e,t,n,i)=>{let o=e/t,a=[];if(n&&i)if(e<=n&&t<=i)a=[e,t];else{let e=n/i;a=o>e?[o*i,i]:[n,n/o]}else n?a=e<=n?[e,t]:[n,n/o]:i&&(a=t<=i?[e,t]:[o*i,i]);return a},u=e=>{e=e.replace(/
/gim,"\n");let t=document.createElement("div");return t.innerHTML=e,e=t.textContent,e},h=e=>{try{return JSON.parse(JSON.stringify(e))}catch(t){return null}},p=(e,t,n=!1)=>(e.data=h(t.data),n&&(e.data.isActive=!1,e.data.generalization&&(e.data.generalization.isActive=!1)),e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,i)=>{e.children[i]=p({},t,n)}),e),m=(e,t,n=!1,i=!0)=>(e.data=h(t.nodeData?t.nodeData.data:t.data),i?delete e.data.uid:e.data.uid||(e.data.uid=I()),n&&(e.data.isActive=!1),e.children=[],t.children&&t.children.length>0?t.children.forEach((t,o)=>{e.children[o]=m({},t,n,i)}):t.nodeData&&t.nodeData.children&&t.nodeData.children.length>0&&t.nodeData.children.forEach((t,o)=>{e.children[o]=m({},t,n,i)}),e),f=e=>new Promise((t,n)=>{const i=new Image;i.setAttribute("crossOrigin","anonymous"),i.onload=()=>{try{let e=document.createElement("canvas");e.width=i.width,e.height=i.height;let n=e.getContext("2d");n.drawImage(i,0,0,i.width,i.height),t(e.toDataURL())}catch(e){n(e)}},i.onerror=e=>{n(e)},i.src=e}),g=e=>{if(!/^data:/.test(e))return e;let[t,n]=e.split(","),i=/^data:[^/]+\/([^;]+);/.exec(t),o=i[1];return{type:o,base64:n}},v=(e,t)=>{let n=document.createElement("a");n.href=e,n.download=t,n.click()},T=(e,t=300,n)=>{let i=null;return(...o)=>{i||(i=setTimeout(()=>{e.call(n,...o),i=null},t))}},x=(e,t=(()=>{}))=>{let n=0,i=e.length;if(i<=0)return t();let o=()=>{n>=i?t():(e[n](),setTimeout(()=>{n++,o()},0))};o()},k=e=>e*(Math.PI/180),b=e=>e.replace(/([a-z])([A-Z])/g,(...e)=>e[1]+"-"+e[2].toLowerCase());let y=null;const w=(e,{italic:t,bold:n,fontSize:i,fontFamily:o})=>{const a=A({italic:t,bold:n,fontSize:i,fontFamily:o});if(!y){const e=document.createElement("canvas");y=e.getContext("2d")}y.save(),y.font=a;const{width:r,actualBoundingBoxAscent:l,actualBoundingBoxDescent:c}=y.measureText(e);y.restore();const d=l+c;return{width:r,height:d}},A=({italic:e,bold:t,fontSize:n,fontFamily:i})=>`${e?"italic ":""} ${t?"bold ":""} ${n}px ${i} `,C=function(e,t){let n=!1,i=null,o=()=>{n=!1,t?e.call(t):e()};if("undefined"!==typeof MutationObserver){let e=1,t=new MutationObserver(o),n=document.createTextNode(e);t.observe(n,{characterData:!0}),i=function(){e=(e+1)%2,n.data=e}}else i=setTimeout;return function(){n||(n=!0,i(o,0))}},E=(e,t)=>{let n=e.elRect,{scaleX:i,scaleY:o,translateX:a,translateY:r}=e.draw.transform(),{left:l,top:c,width:d,height:s}=t,u=(l+d)*i+a,h=(c+s)*o+r;l=l*i+a,c=c*o+r;let p=0,m=0;return l<0&&(p=-l),u>n.width&&(p=-(u-n.width)),c<0&&(m=-c),h>n.height&&(m=-(h-n.height)),{isOuter:0!==p||0!==m,offsetLeft:p,offsetTop:m}};let N=null;const O=e=>(N||(N=document.createElement("div")),N.innerHTML=e,N.textContent),L=e=>new Promise((t,n)=>{let i=new FileReader;i.onload=e=>{t(e.target.result)},i.onerror=e=>{n(e)},i.readAsDataURL(e)});const S=e=>new Promise(t=>{let n=new Image;n.src=e,n.onload=()=>{t({width:n.width,height:n.height})},n.onerror=()=>{t({width:0,height:0})}}),I=()=>Object(i["a"])(),R=e=>new Promise((t,n)=>{let i=new FileReader;i.readAsDataURL(e),i.onload=async e=>{let n=e.target.result,i=await S(n);t({url:n,size:i})},i.onerror=e=>{n(e)}}),M=e=>([[" "," "]].forEach(t=>{e=e.replaceAll(t[0],t[1])}),e),_=e=>Object.prototype.toString.call(e).slice(8,-1),z=e=>null===e||void 0===e||""===e,D=e=>e.replaceAll(/(<[^\s]+)\s+style=["'][^'"]+["']\s*(>)/g,"$1$2");let F=null;const P=(e,t,n)=>{F||(F=document.createElement("div")),F.innerHTML=e;let i=e=>{let o=e.childNodes;o.forEach(e=>{1===e.nodeType&&(e.tagName.toLowerCase()===t?e.style.cssText=n:i(e))})};return i(F),F.innerHTML};let B=null;const U=e=>{B||(B=document.createElement("div")),B.innerHTML=e;for(let t=B.childNodes,n=t.length;n--;)if(1==t[n].nodeType)return!0;return!1};let H=null;const j=(e,t,n)=>{H||(H=document.createElement("div")),H.innerHTML=e;let i=e=>{let o=e.childNodes;o.forEach(o=>{1===o.nodeType?i(o):3===o.nodeType&&e.replaceChild(document.createTextNode(o.nodeValue.replaceAll(t,n)),o)})};return i(H),H.innerHTML};let G=null;const Y=(e,t)=>{G||(G=document.createElement("div")),G.innerHTML=e;const n=G.querySelector(t);return n&&n.parentNode.removeChild(n),G.innerHTML},$=e=>(e=String(e).replaceAll(/\s+/g,""),["#fff","#ffffff","#FFF","#FFFFFF","rgb(255,255,255)"].includes(e)||/rgba\(255,255,255,[^)]+\)/.test(e)),W=e=>(e=String(e).replaceAll(/\s+/g,""),["","transparent"].includes(e)||/rgba\(\d+,\d+,\d+,0\)/.test(e)),Z=e=>{let{lineColor:t,root:n,second:i,node:o}=e,a=[t,n.fillColor,n.color,i.fillColor,i.color,o.fillColor,o.color,n.borderColor,i.borderColor,o.borderColor];for(let r=0;r{const t=e=>{const n=e.childNodes;n.forEach(e=>{1===e.nodeType&&(e.classList.contains("ql-formula")?e.parentNode.removeChild(e):t(e))})};t(e)};let Q=null;const J=e=>{Q||(Q=document.createElement("div")),Q.innerHTML=e;const t=Q.childNodes;let n="";for(let i=0;i{q||(q=document.createElement("div")),q.innerHTML=e;const t=q.childNodes;let n=[],i="";for(let o=0;o`

${ge(e)}

`).join("")};let X=null;const ee=e=>{X||(X=document.createElement("div")),X.innerHTML=e;const t=X.querySelectorAll(".ql-formula");Array.from(t).forEach(e=>{const t=document.createTextNode("$smmformula$");e.parentNode.replaceChild(t,e)});const n=X.childNodes;let i=[];for(let o=0;o`

${ge(e)}

`).join(""),t.length>0){e=e.replace(/\$smmformula\$/g,''),X.innerHTML=e;const n=X.querySelectorAll(".smmformula");Array.from(n).forEach((e,n)=>{e.parentNode.replaceChild(t[n],e)}),e=X.innerHTML}return e},te=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),ne=(e,t)=>{const n={};return Object.keys(t).forEach(i=>{const o=e[i],a=t[i];if(_(o)===_(a)){if("Object"===_(o)){if(JSON.stringify(o)!==JSON.stringify(a))return void(n[i]=a)}else if(o!==a)return void(n[i]=a)}else n[i]=a}),n},ie=e=>!/^_/.test(e)&&!o["h"].includes(e),oe=e=>e.reduce((e,t)=>{const n=e.find(e=>e.type===t.type);return n?t.list.forEach(e=>{const t=n.list.find(t=>t.name===e.name);t?t.icon=e.icon:n.list.push(e)}):e.push({...t}),e},[]),ae=e=>{let t=[];return e.forEach(n=>{e.find(e=>e.uid!==n.uid&&e.isAncestor(n))||t.push(n)}),t},re=e=>{const t={},n={};e.forEach(e=>{const i=e.parent;if(i){const o=i.uid;n[o]=i;const a=e.getIndexInBrothers(),r={node:e,index:a};t[o]?t[o].find(e=>e.index===r.index)||t[o].push(r):t[o]=[r]}});const i=[];return Object.keys(t).forEach(e=>{if(t[e].length>1){const o=t[e].map(e=>e.index).sort((e,t)=>e-t);i.push({node:n[e],range:[o[0],o[o.length-1]]})}else i.push({node:t[e][0].node})}),i},le=(e,t,n,i,o,a,r,l)=>t>o&&a>e&&i>r&&l>n,ce=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),n.collapse(),t.removeAllRanges(),t.addRange(n)},de=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)},se=(e,t={})=>{const n=e=>{e.forEach(e=>{e.data={...e.data,...t},e.children&&e.children.length>0&&n(e.children)})};return n(e),e},ue=(e,t=!1)=>{const n=e=>{e.forEach(e=>{e.data||(e.data={}),(t||z(e.data.uid))&&(e.data.uid=I()),e.children&&e.children.length>0&&n(e.children)})};return n(e),e},he=e=>e?Array.isArray(e)?e:[e]:[],pe=e=>e.parent?e.parent.nodeData.children.findIndex(t=>t.data.uid===e.uid):0,me=(e,t)=>t.findIndex(t=>t.uid===e.uid),fe=e=>{let t=0;for(let o=0;o([["&","&"],["<","<"],[">",">"]].forEach(t=>{e=e.replace(new RegExp(t[0],"g"),t[1])}),e),ve=(e,t)=>{const n=_(e);if(n!==_(t))return!1;if("Object"===n){const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(let o=0;o{navigator.clipboard&&navigator.clipboard.writeText(JSON.stringify(e))},xe=async()=>{let e=null,t=null;if(navigator.clipboard){e=await navigator.clipboard.readText();const n=await navigator.clipboard.read();if(n&&n.length>0)for(const e of n)for(const n of e.types)if(/^image\//.test(n)){t=await e.getType(n);break}}return{text:e,img:t}},ke=e=>{if(!e||!e.parent)return;const t=pe(e);-1!==t&&e.parent.nodeData.children.splice(t,1)},be=e=>(o["i"].forEach(t=>{e=e.replaceAll(new RegExp(`<${t}([^>]*)>`,"g"),`<${t} $1 />`)}),e),ye=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;nt.uid===e[n].uid))return!1;return!0},we=()=>{const e=navigator.userAgent.match(/\s+Chrome\/(.*)\s+/);return e&&e[1]?Number.parseFloat(e[1]):""},Ae=e=>({simpleMindMap:!0,data:e}),Ce=e=>{let t=null;if("string"===typeof e)try{const n=JSON.parse(e);"object"===typeof n&&n.simpleMindMap&&(t=n.data)}catch(i){}else"object"===typeof e&&e.simpleMindMap&&(t=e.data);const n=!!t;return{isSmm:n,data:n?t:String(e)}},Ee=(e,t)=>{e.preventDefault();const n=window.getSelection();if(!n.rangeCount)return;n.deleteFromDocument(),t=t||e.clipboardData.getData("text"),t=O(t),t=t.replaceAll(/\n/g,"");const i=document.createTextNode(t);n.getRangeAt(0).insertNode(i),n.collapseToEnd()},Ne=e=>{const t={},n=(e,i)=>{const o=e.data.uid;i&&i.children.push(o),t[o]={isRoot:!i,data:{...e.data},children:[]},e.children&&e.children.length>0&&e.children.forEach(e=>{n(e,t[o])})};return n(e,null),t},Oe=(e,t)=>{const n=e.x+e.width/2,i=e.y+e.height/2,o=t.x+t.width/2,a=t.y+t.height/2;return no&&io&&i>a?"right-bottom":na?"left-bottom":no&&i===a?"right":n===o&&ia?"bottom":"overlap"},Le=({addContentToHeader:e,addContentToFooter:t})=>{const n=[];let i=null,o=0,a=null,l=0;const c=(e,t)=>{if("function"===typeof e){const i=e();if(!i)return;const{el:o,cssText:a,height:l}=i;if(o instanceof HTMLElement){o.setAttribute("xmlns","http://www.w3.org/1999/xhtml");const e=new r["c"];e.height(l),e.add(o),t(e,l)}a&&n.push(a)}};return c(e,(e,t)=>{i=e,o=t}),c(t,(e,t)=>{a=e,l=t}),{cssTextList:n,header:i,headerHeight:o,footer:a,footerHeight:l}}},"2f42":function(e,t,n){"use strict";n("37e6")},3650:function(e,t,n){"use strict";n("59d2")},"365c":function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"e",(function(){return h})),n.d(t,"d",(function(){return p})),n.d(t,"f",(function(){return m})),n.d(t,"b",(function(){return f})),n.d(t,"g",(function(){return g})),n.d(t,"c",(function(){return v}));var i=n("5848"),o=n("1e42"),a=n("2b0e");const r="SIMPLE_MIND_MAP_DATA",l="SIMPLE_MIND_MAP_LANG",c="SIMPLE_MIND_MAP_LOCAL_CONFIG";let d=null;const s=(e,t)=>t?(e.data=Object(o["jb"])(t.data),e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,n)=>{e.children[n]=s({},t)}),e):null,u=()=>{if(window.takeOverApp)return d=window.takeOverAppMethods.getMindMapData(),d;let e=localStorage.getItem(r);if(null===e)return Object(o["jb"])(i["a"]);try{return JSON.parse(e)}catch(t){return Object(o["jb"])(i["a"])}},h=e=>{try{let t=null;if(t=window.takeOverApp?d:u(),t.root=s({},e),window.takeOverApp)return d=t,void window.takeOverAppMethods.saveMindMapData(t);a["default"].prototype.$bus.$emit("write_local_file",t);let n=JSON.stringify(t);localStorage.setItem(r,n)}catch(t){console.log(t)}},p=e=>{try{let t=null;if(t=window.takeOverApp?d:u(),t={...t,...e},window.takeOverApp)return d=t,void window.takeOverAppMethods.saveMindMapData(t);a["default"].prototype.$bus.$emit("write_local_file",t);let n=JSON.stringify(t);localStorage.setItem(r,n)}catch(t){console.log(t)}},m=e=>{window.takeOverApp?window.takeOverAppMethods.saveLanguage(e):localStorage.setItem(l,e)},f=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLanguage()||"zh";let e=localStorage.getItem(l);return e||(m("zh"),"zh")},g=e=>{if(window.takeOverApp)return window.takeOverAppMethods.saveLocalConfig(e);localStorage.setItem(c,JSON.stringify(e))},v=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLocalConfig();let e=localStorage.getItem(c);return e?JSON.parse(e):null}},"36f1":function(e,t,n){"use strict";n("d82e")},"37e6":function(e,t,n){},4013:function(e,t,n){"use strict";n.d(t,"j",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"e",(function(){return a})),n.d(t,"f",(function(){return r})),n.d(t,"g",(function(){return l})),n.d(t,"h",(function(){return c})),n.d(t,"c",(function(){return d})),n.d(t,"b",(function(){return s})),n.d(t,"d",(function(){return u})),n.d(t,"i",(function(){return h}));const i=[{name:"默认",value:"default",dark:!1},{name:"暗色2",value:"dark2",dark:!0},{name:"天清绿",value:"skyGreen",dark:!1},{name:"脑图经典2",value:"classic2",dark:!1},{name:"脑图经典3",value:"classic3",dark:!1},{name:"经典绿",value:"classicGreen",dark:!1},{name:"经典蓝",value:"classicBlue",dark:!1},{name:"天空蓝",value:"blueSky",dark:!1},{name:"脑残粉",value:"brainImpairedPink",dark:!1},{name:"暗色",value:"dark",dark:!0},{name:"泥土黄",value:"earthYellow",dark:!1},{name:"清新绿",value:"freshGreen",dark:!1},{name:"清新红",value:"freshRed",dark:!1},{name:"浪漫紫",value:"romanticPurple",dark:!1},{name:"粉红葡萄",value:"pinkGrape",dark:!1},{name:"薄荷",value:"mint",dark:!1},{name:"金色vip",value:"gold",dark:!1},{name:"活力橙",value:"vitalityOrange",dark:!1},{name:"绿叶",value:"greenLeaf",dark:!1},{name:"脑图经典",value:"classic",dark:!0},{name:"脑图经典4",value:"classic4",dark:!1},{name:"小黄人",value:"minions",dark:!1},{name:"简约黑",value:"simpleBlack",dark:!1},{name:"课程绿",value:"courseGreen",dark:!1},{name:"咖啡",value:"coffee",dark:!1},{name:"红色精神",value:"redSpirit",dark:!1},{name:"黑色幽默",value:"blackHumour",dark:!0},{name:"深夜办公室",value:"lateNightOffice",dark:!0},{name:"黑金",value:"blackGold",dark:!0},{name:"牛油果",value:"avocado",dark:!1},{name:"秋天",value:"autumn",dark:!1},{name:"橙汁",value:"orangeJuice",dark:!0}],o={CHANGE_THEME:"changeTheme",CHANGE_LAYOUT:"changeLayout",SET_DATA:"setData",TRANSFORM_TO_NORMAL_NODE:"transformAllNodesToNormalNode",MODE:{READONLY:"readonly",EDIT:"edit"},LAYOUT:{LOGICAL_STRUCTURE:"logicalStructure",MIND_MAP:"mindMap",ORGANIZATION_STRUCTURE:"organizationStructure",CATALOG_ORGANIZATION:"catalogOrganization",TIMELINE:"timeline",TIMELINE2:"timeline2",FISHBONE:"fishbone",VERTICAL_TIMELINE:"verticalTimeline"},DIR:{UP:"up",LEFT:"left",DOWN:"down",RIGHT:"right"},KEY_DIR:{LEFT:"Left",UP:"Up",RIGHT:"Right",DOWN:"Down"},SHAPE:{RECTANGLE:"rectangle",DIAMOND:"diamond",PARALLELOGRAM:"parallelogram",ROUNDED_RECTANGLE:"roundedRectangle",OCTAGONAL_RECTANGLE:"octagonalRectangle",OUTER_TRIANGULAR_RECTANGLE:"outerTriangularRectangle",INNER_TRIANGULAR_RECTANGLE:"innerTriangularRectangle",ELLIPSE:"ellipse",CIRCLE:"circle"},MOUSE_WHEEL_ACTION:{ZOOM:"zoom",MOVE:"move"},INIT_ROOT_NODE_POSITION:{LEFT:"left",TOP:"top",RIGHT:"right",BOTTOM:"bottom",CENTER:"center"},LAYOUT_GROW_DIR:{LEFT:"left",TOP:"top",RIGHT:"right",BOTTOM:"bottom"},PASTE_TYPE:{CLIP_BOARD:"clipBoard",CANVAS:"canvas"},SCROLL_BAR_DIR:{VERTICAL:"vertical",HORIZONTAL:"horizontal"},CREATE_NEW_NODE_BEHAVIOR:{DEFAULT:"default",NOT_ACTIVE:"notActive",ACTIVE_ONLY:"activeOnly"}},a={[o.INIT_ROOT_NODE_POSITION.LEFT]:0,[o.INIT_ROOT_NODE_POSITION.TOP]:0,[o.INIT_ROOT_NODE_POSITION.RIGHT]:1,[o.INIT_ROOT_NODE_POSITION.BOTTOM]:1,[o.INIT_ROOT_NODE_POSITION.CENTER]:.5},r=[{name:"逻辑结构图",value:o.LAYOUT.LOGICAL_STRUCTURE},{name:"思维导图",value:o.LAYOUT.MIND_MAP},{name:"组织结构图",value:o.LAYOUT.ORGANIZATION_STRUCTURE},{name:"目录组织图",value:o.LAYOUT.CATALOG_ORGANIZATION},{name:"时间轴",value:o.LAYOUT.TIMELINE},{name:"时间轴2",value:o.LAYOUT.TIMELINE2},{name:"竖向时间轴",value:o.LAYOUT.VERTICAL_TIMELINE},{name:"鱼骨图",value:o.LAYOUT.FISHBONE}],l=[o.LAYOUT.LOGICAL_STRUCTURE,o.LAYOUT.MIND_MAP,o.LAYOUT.CATALOG_ORGANIZATION,o.LAYOUT.ORGANIZATION_STRUCTURE,o.LAYOUT.TIMELINE,o.LAYOUT.TIMELINE2,o.LAYOUT.VERTICAL_TIMELINE,o.LAYOUT.FISHBONE],c=["text","image","imageTitle","imageSize","icon","tag","hyperlink","hyperlinkTitle","note","expand","isActive","generalization","richText","resetRichText","uid","activeStyle","associativeLineTargets","associativeLineTargetControlOffsets","associativeLinePoint","associativeLineText","attachmentUrl","attachmentName"],d={measureCustomNodeContentSizeEl:null,measureRichtextNodeTextSizeEl:null},s={READ_CLIPBOARD_ERROR:"read_clipboard_error",PARSE_PASTE_DATA_ERROR:"parse_paste_data_error",CUSTOM_HANDLE_CLIPBOARD_TEXT_ERROR:"custom_handle_clipboard_text_error",LOAD_CLIPBOARD_IMAGE_ERROR:"load_clipboard_image_error",BEFORE_TEXT_EDIT_ERROR:"before_text_edit_error",EXPORT_ERROR:"export_error",EXPORT_LOAD_IMAGE_ERROR:"export_load_image_error",DATA_CHANGE_DETAIL_EVENT_ERROR:"data_change_detail_event_error"},u="\n /* 鼠标hover和激活时渲染的矩形 */\n .smm-hover-node{\n display: none;\n opacity: 0.6;\n stroke-width: 1;\n }\n\n .smm-node:not(.smm-node-dragging):hover .smm-hover-node{\n display: block;\n }\n\n .smm-node.active .smm-hover-node, .smm-node-highlight .smm-hover-node{\n display: block;\n opacity: 1;\n stroke-width: 2;\n }\n",h=["img","br","hr","input","link","meta","area"]},"41cb":function(e,t,n){"use strict";n("14d9");var i=n("2b0e"),o=n("8c4f"),a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"docContainer"},[t("Header"),t("div",{staticClass:"content"},[t("Sidebar"),t("div",{ref:"doc",staticClass:"doc",attrs:{id:"doc"},on:{scroll:e.onScroll}},[t("router-view")],1),t("CatalogBar",{attrs:{scrollTop:e.scrollTop},on:{scroll:e.doScroll}})],1)],1)},r=[],l=function(){var e=this,t=e._self._c;return t("div",{staticClass:"headerContainer"},[t("div",{staticClass:"left"},[t("div",{staticClass:"title",on:{click:e.toIndex}},[t("img",{attrs:{src:n("440d"),alt:""}}),e._v(" SimpleMindMap ")])]),t("div",{staticClass:"center"},[t("div",{staticClass:"btn",on:{click:e.toIndex}},[e._v(e._s(e.index))]),t("div",{staticClass:"btn",on:{click:e.toDemo}},[e._v(e._s(e.demoName))]),t("div",{staticClass:"btn",class:{active:"help"===e.docType},on:{click:e.toHelp}},[e._v(" "+e._s(e.helpDoc)+" ")]),t("div",{staticClass:"btn",class:{active:"doc"===e.docType},on:{click:e.toDev}},[e._v(" "+e._s(e.devDoc)+" ")]),"doc"===e.docType?t("el-dropdown",{attrs:{trigger:"click",placement:"bottom-start"},on:{command:e.handleCommand}},[t("span",{staticClass:"translateBtn"},[e._v(" "+e._s(e.currentLangName)),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},e._l(e.otherLangList,(function(n){return t("el-dropdown-item",{key:n.path,attrs:{command:n.path}},[e._v(e._s(n.name))])})),1)],1):e._e(),e._m(0)],1),t("div",{staticClass:"right"})])},c=[function(){var e=this,t=e._self._c;return t("a",{attrs:{href:"https://github.com/wanglin2/mind-map",target:"_blank"}},[t("span",{staticClass:"iconfont icongithub"})])}],d=[{lang:"zh",children:[{path:"associativeLine",title:"AssociativeLine 插件"},{path:"batchExecution",title:"BatchExecution实例"},{path:"changelog",title:"Changelog"},{path:"command",title:"Command实例"},{path:"constructor",title:"构造函数"},{path:"course1",title:"基本使用"},{path:"course2",title:"操作节点内容"},{path:"course3",title:"插入/删除节点、前进回退"},{path:"course4",title:"设置节点样式"},{path:"course5",title:"设置基础样式"},{path:"course6",title:"显示水印"},{path:"course7",title:"开启节点自由拖拽"},{path:"course8",title:"开启节点富文本编辑"},{path:"course9",title:"修改鼠标滚轮的行为"},{path:"course10",title:"主题"},{path:"course11",title:"结构"},{path:"course12",title:"如何渲染一个大纲"},{path:"course13",title:"快捷键"},{path:"course14",title:"如何渲染一个小地图"},{path:"course15",title:"如何渲染一个右键菜单"},{path:"course16",title:"如何渲染富文本的悬浮工具栏"},{path:"course17",title:"导入和导出"},{path:"course18",title:"如何持久化数据"},{path:"course19",title:"插入和扩展节点图标"},{path:"course20",title:"如何自定义节点内容"},{path:"course21",title:"如何复制、剪切、粘贴"},{path:"course22",title:"如何实现搜索、替换"},{path:"course23",title:"如何渲染滚动条"},{path:"course24",title:"如何开发一个插件"},{path:"course25",title:"关于概要"},{path:"course26",title:"如何实现AI生成节点内容"},{path:"course27",title:"快捷键操作如何传递自定义参数"},{path:"doExport",title:"Export 插件"},{path:"drag",title:"Drag插件"},{path:"introduction",title:"简介"},{path:"keyCommand",title:"KeyCommand实例"},{path:"keyboardNavigation",title:"KeyboardNavigation插件"},{path:"markdown",title:"Markdown解析"},{path:"miniMap",title:"MiniMap插件"},{path:"node",title:"Node实例"},{path:"render",title:"Render实例"},{path:"textEdit",title:"TextEdit实例"},{path:"richText",title:"RichText插件"},{path:"select",title:"Select 插件 "},{path:"start",title:"开始"},{path:"translate",title:"贡献"},{path:"utils",title:"内置工具方法"},{path:"view",title:"View实例"},{path:"watermark",title:"Watermark插件"},{path:"xmind",title:"XMind解析"},{path:"deploy",title:"部署"},{path:"client",title:"客户端"},{path:"touchEvent",title:"TouchEvent插件"},{path:"nodeImgAdjust",title:"NodeImgAdjust插件"},{path:"search",title:"Search插件"},{path:"painter",title:"Painter插件"},{path:"painter",title:"Painter插件"},{path:"scrollbar",title:"Scrollbar插件"},{path:"formula",title:"Formula插件"},{path:"cooperate",title:"Cooperate插件"},{path:"rainbowLines",title:"RainbowLines插件"},{path:"handDrawnLikeStyle",title:"HandDrawnLikeStyle收费插件"},{path:"help1",title:"概要/关联线"},{path:"help2",title:"客户端"},{path:"help3",title:"打开预览在线文件"},{path:"help4",title:"复制粘贴"},{path:"help5",title:"导出"}]},{lang:"en",children:[{path:"associativeLine",title:"AssociativeLine plugin"},{path:"batchExecution",title:"batchExecution instance"},{path:"changelog",title:"Changelog"},{path:"command",title:"command instance"},{path:"constructor",title:"Constructor"},{path:"doExport",title:"Export plugin"},{path:"drag",title:"Drag plugin"},{path:"introduction",title:"Introduction"},{path:"keyCommand",title:"KeyCommand instance"},{path:"keyboardNavigation",title:"KeyboardNavigation plugin"},{path:"markdown",title:"Markdown parse"},{path:"miniMap",title:"MiniMap plugin"},{path:"node",title:"Node instance"},{path:"render",title:"Render instance"},{path:"textEdit",title:"TextEdit instance"},{path:"richText",title:"RichText plugin"},{path:"select",title:"Select plugin"},{path:"start",title:"Start"},{path:"translate",title:"Contribute"},{path:"utils",title:"Utility Methods"},{path:"view",title:"View instance"},{path:"watermark",title:"Watermark plugin"},{path:"xmind",title:"XMind parse"},{path:"deploy",title:"Deploy"},{path:"touchEvent",title:"TouchEvent plugin"},{path:"nodeImgAdjust",title:"NodeImgAdjust plugin"},{path:"search",title:"Search plugin"},{path:"painter",title:"Painter plugin"},{path:"scrollbar",title:"Scrollbar plugin"},{path:"formula",title:"Formula plugin"},{path:"cooperate",title:"Cooperate plugin"},{path:"rainbowLines",title:"RainbowLines plugin"},{path:"handDrawnLikeStyle",title:"HandDrawnLikeStyle chargeable plugin"},{path:"client",title:"Client"}]}];let s=[{name:"中文",path:"zh"},{name:"English",path:"en"}],u=["introduction","start","deploy","client","translate","changelog"],h=new Array(27).fill(0).map((e,t)=>"course"+(t+1)),p=["constructor","node","render","textEdit","view","keyCommand","command","batchExecution","richText","select","drag","keyboardNavigation","doExport","miniMap","watermark","associativeLine","touchEvent","nodeImgAdjust","search","painter","scrollbar","formula","cooperate","rainbowLines","handDrawnLikeStyle","xmind","markdown","utils"],m=new Array(5).fill(0).map((e,t)=>"help"+(t+1));const f=(e,t)=>{let n=d.find(t=>t.lang===e),i=n.children;return t.filter(e=>i.find(t=>t.path===e)).map(e=>({path:e,name:i.find(t=>t.path===e).title}))};var g={zh:[{groupName:"开始",type:"doc",list:f("zh",u)},{groupName:"教程",type:"doc",list:f("zh",h)},{groupName:"API",type:"doc",list:f("zh",p)},{groupName:"使用帮助",type:"help",list:f("zh",m)}],en:[{groupName:"Start",type:"doc",list:f("en",u)},{groupName:"Course",type:"doc",list:f("zh",h)},{groupName:"API",type:"doc",list:f("en",p)}]};const v={pageCatalog:{zh:"本页目录",en:"Page catalog"},demo:{zh:"在线示例",en:"Online Demo"},help:{zh:"帮助文档",en:"Help doc"},dev:{zh:"开发文档",en:"Dev doc"},index:{zh:"首页",en:"Home"}},T=(e,t)=>v[e]?v[e][t]||v[e].zh:"";var x=T,k={data(){return{docType:"",lang:"",currentLangName:"",otherLangList:[]}},computed:{demoName(){return x("demo",this.lang)},helpDoc(){return x("help",this.lang)},devDoc(){return x("dev",this.lang)},index(){return x("index",this.lang)}},watch:{$route(){this.init()}},created(){this.init()},methods:{init(){let e=/^\/([^\/]+)\//.exec(this.$route.path);e&&e[1]&&(this.docType=e[1]);let t=/^\/doc\/([^\/]+)\//.exec(this.$route.path);if(t&&t[1]){this.lang=t[1];let e=s.find(e=>e.path===this.lang);this.currentLangName=e.name,this.otherLangList=s.filter(e=>e.path!==this.lang)}},toIndex(){this.$router.push("/index")},toDemo(){this.$router.push("/")},handleCommand(e){let t=this.$route.path.replace(/^\/doc\/([^\/]+)\//,(...t)=>`/doc/${e}/`);this.$router.push(t)},toHelp(){this.lang="zh",this.$router.replace("/help/zh/")},toDev(){this.$router.replace("/doc/zh/")}}},b=k,y=(n("eca6"),n("2877")),w=Object(y["a"])(b,l,c,!1,null,"1c36e28e",null),A=w.exports,C=function(){var e=this,t=e._self._c;return t("div",{staticClass:"sideBarContainer"},[t("div",{staticClass:"catalogGroupList"},e._l(e.groupList,(function(n,i){return t("div",{key:i,staticClass:"catalogGroup"},[t("div",{staticClass:"catalogGroupName"},[e._v(e._s(n.groupName))]),t("div",{staticClass:"catalogList"},e._l(n.list,(function(n){return t("div",{key:i+n.path,staticClass:"catalogItem",class:{active:n.path===e.currentPath},on:{click:function(t){return e.jump(n)}}},[e._v(" "+e._s(n.name)+" ")])})),0)])})),0)])},E=[],N={data(){return{groupList:[],lang:"",currentPath:"",type:""}},created(){this.initCatalog()},watch:{$route(){this.initCatalog()}},methods:{jump(e){e.path!==this.currentPath&&this.$router.push(`/${this.type}/${this.lang}/${e.path}`)},initCatalog(){let e=/^\/(doc|help)\/([^\/]+)\//.exec(this.$route.path);e&&e[2]&&(this.type=e[1],this.lang=e[2],this.groupList=g[this.lang].filter(e=>e.type===this.type));let t=/^\/(doc|help)\/[^\/]+\/([^\/]+)(\/|$)/.exec(this.$route.path);t&&t[2]&&(this.currentPath=t[2])}}},O=N,L=(n("2f42"),Object(y["a"])(O,C,E,!1,null,"73f8f4b5",null)),S=L.exports,I=function(){var e=this,t=e._self._c;return t("div",{staticClass:"catalogBarContainer"},[t("div",{staticClass:"catalogBarTitle"},[e._v(e._s(e.pageCatalogTitle))]),t("div",{staticClass:"catalogList"},[e._l(e.list,(function(n,i){return t("div",{key:n.title+i,staticClass:"catalogItem",class:{active:n.title===e.activeCatalog},on:{click:function(t){return e.scrollTo(n,i)}}},[e._v(" "+e._s(n.title)+" ")])})),-1!==e.activeCatalogIndex?t("div",{staticClass:"activeBar",style:{top:4+28*e.activeCatalogIndex+"px"}}):e._e()],2)])},R=[],M={props:{scrollTop:{type:Number}},data(){return{lang:"",list:[],activeCatalog:"",activeCatalogIndex:-1,appointCatalog:!0}},computed:{pageCatalogTitle(){return x("pageCatalog",this.lang)}},watch:{$route(e,t){this.initLang(),this.initCatalogList(e.path,t.path)},scrollTop(){this.onScroll()},lang(e,t){t&&this.initCatalogList()}},mounted(){this.initLang(),this.initCatalogList(),this.scrollToCatalog()},methods:{initLang(){let e=/^\/(doc|help)\/([^\/]+)\//.exec(this.$route.path);e&&e[2]&&(this.lang=e[2])},initCatalogList(e,t){let n=/^\/(doc|help)\/[^\/]+\/([^\/]+)/.exec(e),i=/^\/(doc|help)\/[^\/]+\/([^\/]+)/.exec(t);if(!e&&!t||n[2]!==i[2]){this.$emit("scroll",0),this.resetActive();let e=document.getElementById("doc"),t=document.querySelectorAll("#doc h2");this.list=Array.from(t).map(t=>({title:t.textContent,top:t.offsetTop-e.offsetTop}))}},scrollToCatalog(){let e=/^\/(doc|help)\/[^\/]+\/[^\/]+\/([^\/]+)($|\/)/.exec(this.$route.path);if(e&&e[2]){let t=decodeURIComponent(e[2]),n=this.list.find(e=>e.title===t),i=this.list.findIndex(e=>e.title===t);n&&(this.activeCatalog=n.title,this.activeCatalogIndex=i,this.$emit("scroll",n.top))}},scrollTo(e,t){this.appointCatalog=!0,this.routeToNewCatalog(e.title),this.$nextTick(()=>{this.activeCatalog=e.title,this.activeCatalogIndex=t,this.scrollToCatalog()})},routeToNewCatalog(e){let t=this.$route.path,n="";n=e?/^\/(doc|help)\/[^\/]+\/[^\/]+($|\/)$/.test(t)?t.replace(/^(\/(doc|help)\/[^\/]+\/[^\/]+)($|\/)$/,"$1/"+encodeURIComponent(e)):t.replace(/^(\/(doc|help)\/[^\/]+\/[^\/]+\/)([^\/]+)($|\/)/,(...t)=>t[1]+encodeURIComponent(e)):t.replace(/^(\/(doc|help)\/[^\/]+\/[^\/]+)($|\/|.*)$/,"$1"),t!==n&&this.$router.push(n)},onScroll(){if(this.appointCatalog)return void(this.appointCatalog=!1);let e=!1;for(let t=0;t=n.top&&(!i||this.scrollTop{try{this.$refs.doc.scrollTop=e}catch(t){console.log(t)}})},onScroll(){this.scrollTop=this.$refs.doc.scrollTop}}}),P=F,B=(n("3650"),Object(y["a"])(P,a,r,!1,null,null,null)),U=B.exports;const H=()=>{let e=d[0].children;for(let t=1;t{n.find(t=>t.path===e.path)||n.push({...e,lang:"zh"})})}};H();const j=(e,t)=>[...d.map(n=>({path:`/${e}/${n.lang}/`,redirect:`/${e}/${n.lang}/${t}/`})),...d.map(t=>({path:`/${e}/${t.lang}/`,component:U,children:t.children.map(e=>({path:e.path+"/:h?",component:()=>n("b834")(`./${e.lang||t.lang}/${e.path}/index.vue`)}))}))];i["default"].use(o["a"]);const G=[{path:"/index",name:"Index",component:()=>n.e("chunk-66b27c16").then(n.bind(null,"9684"))},{path:"/",name:"Edit",component:()=>n.e("chunk-276b078e").then(n.bind(null,"5fca"))},...j("doc","introduction"),...j("help","help1")],Y=new o["a"]({routes:G});t["a"]=Y},"440d":function(e,t){e.exports="data:image/png;base64,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"},5439:function(e,t,n){},"56d7":function(e,t,n){"use strict";n.r(t);var i=n("2b0e"),o=function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},a=[],r={name:"App",components:{}},l=r,c=(n("36f1"),n("2877")),d=Object(c["a"])(l,o,a,!1,null,null,null),s=d.exports,u=n("41cb"),h=n("c0d6"),p=n("5c96"),m=n.n(p),f=(n("0fae"),n("9c65"),n("0808"),n("c71c")),g=n("9225"),v=n("365c");i["default"].config.productionTip=!1;const T=new i["default"];i["default"].prototype.$bus=T,i["default"].use(m.a),i["default"].use(f["a"]);const x=()=>{g["a"].locale=Object(v["b"])(),new i["default"]({render:e=>e(s),router:u["a"],store:h["a"],i18n:g["a"]}).$mount("#app")};window.takeOverApp?(window.initApp=x,window.$bus=T):x()},5848:function(e,t,n){"use strict";const i=()=>({image:"/enJFNMHnedQTYTESGfDkctCp2.jpeg",imageTitle:"图片名称",imageSize:{width:1e3,height:563},icon:["priority_1"],tag:["标签1","标签2"],hyperlink:"http://lxqnsys.com/",hyperlinkTitle:"理想青年实验室",note:"理想青年实验室\n一个有意思的角落"}),o=(i(),i(),{root:{data:{text:"根节点"},children:[{data:{text:"二级节点",generalization:{text:"概要"}},children:[{data:{text:"分支主题"},children:[]},{data:{text:"分支主题"},children:[]}]}]}});t["a"]={...o,theme:{template:"classic4",config:{}},layout:"logicalStructure",config:{}}},"59d2":function(e,t,n){},"716d":function(e,t,n){},9225:function(e,t,n){"use strict";var i=n("2b0e"),o=n("a925"),a={baseStyle:{title:"BaseStyle",background:"Background",color:"Color",image:"Image",imageRepeat:"Image repeat",imagePosition:"Image position",imageSize:"Image size",line:"Line",width:"Width",style:"Style",lineRadius:"Radius",lineOfOutline:"Line of outline",showArrow:"Is show arrow",nodePadding:"Node padding",nodeMargin:"Node margin",horizontal:"Horizontal",vertical:"Vertical",maximumWidth:"Max width",maximumHeight:"Max height",icon:"Icon",size:"Size",level2Node:"Level2 node",belowLevel2Node:"Below level2 node",nodeBorderType:"Node border style",nodeUseLineStyle:"Use only has bottom border style",otherConfig:"Other config",enableFreeDrag:"Enable node free drag",watermark:"Watermark",showWatermark:"Is show watermark",onlyExport:"Only export",watermarkDefaultText:"Watermark text",watermarkText:"Watermark text",watermarkTextColor:"Text color",watermarkLineSpacing:"Line spacing",watermarkTextSpacing:"Text spacing",watermarkAngle:"Angle",watermarkTextOpacity:"Text opacity",watermarkTextFontSize:"Font size",isEnableNodeRichText:"Enable node rich text editing",mousewheelAction:"Mouse wheel behavior",zoomView:"Zoom view",moveViewUpDown:"Move view up and down",associativeLine:"Associative line",associativeLineWidth:"Width",associativeLineColor:"Color",associativeLineActiveWidth:"Active width",associativeLineActiveColor:"Active color",mousewheelZoomActionReverse:"Mouse Wheel Zoom",mousewheelZoomActionReverse1:"Zoom out forward and zoom in back",mousewheelZoomActionReverse2:"Zoom in forward and zoom out back",createNewNodeBehavior:"Behavior of creating new node",default:"Active new node and editing",notActive:"Not active new node",activeOnly:"Only active new node but not editing",rootStyle:"Root Node",associativeLineText:"Associative line text",fontFamily:"Font family",fontSize:"Font size",isShowScrollbar:"Is show scrollbar",isUseHandDrawnLikeStyle:"Is use hand drawn like style",rootLineStartPos:"Root line start pos",center:"Center",right:"Right",rainbowLines:"Rainbow lines",notUseRainbowLines:"Not use rainbow lines"},color:{moreColor:"More color"},contextmenu:{insertSiblingNode:"Insert sibling node",insertChildNode:"Insert child node",insertParentNode:"Insert parent node",insertSummary:"Insert summary",moveUpNode:"Move up node",moveDownNode:"Move down node",deleteNode:"Delete node",deleteCurrentNode:"Only del cur node",copyNode:"Copy node",cutNode:"Cut node",pasteNode:"Paste node",backCenter:"Back root node",expandAll:"Expand all",unExpandAll:"Un expand all",expandTo:"Expand to",arrangeLayout:"Arrange layout",level1:"Level1",level2:"Level2",level3:"Level3",level4:"Level4",level5:"Level5",level6:"Level6",zenMode:"Zen mode",fitCanvas:"Fit canvas",removeImage:"Remove image",removeHyperlink:"Remove hyperlink",removeNote:"Remove note",removeCustomStyles:"Remove custom styles",removeAllNodeCustomStyles:"Remove all node custom styles"},count:{words:"Words",nodes:"Nodes"},dialog:{cancel:"Cancel",confirm:"Confirm"},export:{title:"Export",filename:"Filename",include:"Is include config like theme and structure",dedicatedFile:"Dedicated file",jsonFile:"json file",imageFile:"Image file",svgFile:"svg file",pdfFile:"pdf file",markdownFile:"markdown file",tips:"tips: .smm and .json file can be import",isTransparent:"Background is transparent",pngTips:"tips: Exporting pictures in rich text mode is time-consuming. It is recommended to export to svg format",svgTips:"tips: Exporting pictures in rich text mode is time-consuming",transformingDomToImages:"Converting nodes: ",notifyTitle:"Info",notifyMessage:"If the download is not triggered, check whether it is blocked by the browser",paddingX:"Padding x",paddingY:"Padding y",useMultiPageExport:"Export multi page",defaultFileName:"Mind map",addFooterTextPlaceholder:"For example: From simple-mind-map",addFooterText:"Add text at the footer"},fullscreen:{fullscreenShow:"Full screen show",fullscreenEdit:"Full screen edit"},import:{title:"Import",selectFile:"Select file",supportFile:"Support .smm、.json、.xmind、.xlsx、.md file",enableFileTip:"Please select .smm、.json、.xmind、.xlsx、.md file",maxFileNum:"At most one file can be selected",notSelectTip:"Please select the file to import",fileContentError:"The file content is incorrect",importSuccess:"Import success",fileParsingFailed:"File parsing failed"},navigatorToolbar:{openMiniMap:"Open mini map",closeMiniMap:"Close mini map",readonly:"Change to eadonly",edit:"Change to edit",backToRoot:"Back to root node",changeSourceCodeEdit:"Switch to source code editing mode"},nodeHyperlink:{title:"Link",link:"Href",name:"Name"},nodeIcon:{title:"Icon"},nodeImage:{title:"Image",imgTitle:"Title"},nodeNote:{title:"Note"},nodeTag:{title:"Tag",addTip:"Press Enter to add"},outline:{title:"Outline",nodeDefaultText:"Branch node"},scale:{zoomIn:"Zoom in",zoomOut:"Zoom out"},shortcutKey:{title:"Shortcut key"},strusture:{title:"Strusture"},style:{title:"Node style",normal:"Normal",active:"Active",text:"Text",fontFamily:"Font family",fontSize:"Font size",lineHeight:"Line height",color:"color",addFontWeight:"add font weight",italic:"Italic",textDecoration:"Text decoration",underline:"Underline",none:"None",lineThrough:"Line through",overline:"Overline",border:"Border",style:"Style",width:"Width",borderRadius:"Border radius",background:"Background",shape:"Shape",line:"Line",nodePadding:"Node padding",horizontal:"Horizontal",vertical:"Vertical",gradientStyle:"Gradient",startColor:"Start",endColor:"End",arrowDir:"Arrow dir",arrowDirStart:"Start",arrowDirEnd:"End"},theme:{title:"Theme",classics:"Classics",dark:"Darkness",simple:"Simple",coverTip:"You have currently customized the basic style, do you want to overwrite it?",tip:"Tip",cover:"Cover",reserve:"Reserve"},toolbar:{undo:"Undo",redo:"Redo",insertSiblingNode:"Sibling node",insertChildNode:"Child node",deleteNode:"Delete node",image:"Image",icon:"Icon",link:"Link",note:"Note",tag:"Tag",summary:"Summary",displayOutline:"Display outline",baseStyle:"Base style",theme:"Theme",strusture:"Strusture",newFile:"New file",openFile:"Open file",saveAs:"Save as",import:"Import",export:"Export",shortcutKey:"Shortcut key",associativeLine:"Associative line",painter:"Painter",formula:"Formula",attachment:"Attachment",more:"More",selectFileTip:"Please select a file",notSupportTip:"Your browser does not support this feature, or the current page is not using the HTTPS protocol",tip:"Tip",editingLocalFileTipFront:"Currently editing your local【",editingLocalFileTipEnd:"】file",fileContentError:"File content error",fileOpenFailed:"File open failed",defaultFileName:"Mind map",creatingTip:"Creating file",directory:"Directory"},edit:{newFeatureNoticeTitle:"New feature reminder",newFeatureNoticeMessage:"This update supports node rich text editing, But there are some defects, The most important impact is that the time to export the image is proportional to the number of nodes, Therefore, if you are more dependent on export requirements, you can use【Base style】-【Other config】-【Enable node rich text editing】Set to turn off rich text editing mode.",root:"Root node",splitByWrap:"Is automatically split nodes based on line breaks?",tip:"Tip",yes:"Yes",no:"No",exportError:"Export failed",dragTip:"Release here to import the file"},mouseAction:{tip1:"Current: Left click to drag the canvas, right click to box select nodes",tip2:"Current: Left click to box select nodes, right click to drag the canvas"},search:{searchPlaceholder:"Please enter the search content",replacePlaceholder:"Please enter replacement content",replace:"Replace",replaceAll:"Replace all",cancel:"Cancel"},nodeIconSidebar:{title:"Icon/Sticker",icon:"Icon",sticker:"Sticker"},formulaSidebar:{title:"Formula",placeholder:"Please enter LaTeX syntax",confirm:"Confirm",common:"Common formulas",tip:"Inserting formulas is not supported in non rich text mode"},richTextToolbar:{bold:"Bold",italic:"Italic",underline:"Underline",strike:"Strike",fontFamily:"Font family",fontSize:"Font size",color:"Color",backgroundColor:"Background color",removeFormat:"Clear Style"},other:{loading:"Loading, please wait..."},sourceCodeEdit:{sourceCodeTip:"It is not recommended to modify the style in rich text mode because it requires synchronous modification of data and HTML structure.",format:"Format",copy:"Copy",confirm:"Complete",close:"Close",formatErrorTip:"The JSON format is incorrect. Please check and try again",copyTip:"Copied to clipboard",formatTip:"Format complete"},attachment:{deleteAttachment:"Delete attachment",tip:"The attachment function is only available on the client side"}},r={baseStyle:{title:"基础样式",background:"背景",color:"颜色",image:"图片",imageRepeat:"图片重复",imagePosition:"图片位置",imageSize:"图片大小",line:"连线",width:"粗细",style:"风格",lineRadius:"圆角大小",lineOfOutline:"概要的连线",showArrow:"是否显示箭头",nodePadding:"节点内边距",nodeMargin:"节点外边距",horizontal:"水平",vertical:"垂直",maximumWidth:"显示的最大宽度",maximumHeight:"显示的最大高度",icon:"图标",size:"大小",level2Node:"二级节点",belowLevel2Node:"三级及以下节点",nodeBorderType:"节点边框风格",nodeUseLineStyle:"是否使用只有底边框的风格",otherConfig:"其他配置",enableFreeDrag:"是否开启节点自由拖拽",watermark:"水印",showWatermark:"是否显示水印",watermarkDefaultText:"水印文字",onlyExport:"是否仅在导出时显示",watermarkText:"水印文字",watermarkTextColor:"文字颜色",watermarkLineSpacing:"水印行间距",watermarkTextSpacing:"水印文字间距",watermarkAngle:"旋转角度",watermarkTextOpacity:"文字透明度",watermarkTextFontSize:"文字字号",isEnableNodeRichText:"是否开启节点富文本编辑",mousewheelAction:"鼠标滚轮行为",zoomView:"缩放视图",moveViewUpDown:"上下移动视图",associativeLine:"关联线",associativeLineWidth:"粗细",associativeLineColor:"颜色",associativeLineActiveWidth:"激活粗细",associativeLineActiveColor:"激活颜色",mousewheelZoomActionReverse:"鼠标滚轮缩放",mousewheelZoomActionReverse1:"向前缩小向后放大",mousewheelZoomActionReverse2:"向前放大向后缩小",createNewNodeBehavior:"创建新节点的行为",default:"激活新节点及进入编辑",notActive:"不激活新节点",activeOnly:"只激活新节点,不进入编辑",rootStyle:"根节点",associativeLineText:"关联线文字",fontFamily:"字体",fontSize:"字号",isShowScrollbar:"是否显示滚动条",isUseHandDrawnLikeStyle:"是否开启手绘风格",rootLineStartPos:"根节点连线起始位置",center:"中心",right:"右侧",rainbowLines:"彩虹线条",notUseRainbowLines:"不使用彩虹线条"},color:{moreColor:"更多颜色"},contextmenu:{insertSiblingNode:"插入同级节点",insertChildNode:"插入子级节点",insertParentNode:"插入父节点",insertSummary:"插入概要",moveUpNode:"上移节点",moveDownNode:"下移节点",deleteNode:"删除节点",deleteCurrentNode:"仅删除当前节点",copyNode:"复制节点",cutNode:"剪切节点",pasteNode:"粘贴节点",backCenter:"回到根节点",expandAll:"展开所有",unExpandAll:"收起所有",expandTo:"展开到",arrangeLayout:"一键整理布局",level1:"一级主题",level2:"二级主题",level3:"三级主题",level4:"四级主题",level5:"五级主题",level6:"六级主题",zenMode:"禅模式",fitCanvas:"适应画布",removeImage:"移除图片",removeHyperlink:"移除超链接",removeNote:"移除备注",removeCustomStyles:"一键去除自定义样式",removeAllNodeCustomStyles:"一键去除所有节点自定义样式"},count:{words:"字数",nodes:"节点"},dialog:{cancel:"取 消",confirm:"确 定"},export:{title:"导出",filename:"导出文件名称",include:"是否包含主题、结构等配置数据",dedicatedFile:"专有文件",jsonFile:"json文件",imageFile:"图片文件",svgFile:"svg文件",pdfFile:"pdf文件",markdownFile:"markdown文件",tips:"tips:.smm和.json文件可用于导入",isTransparent:"背景是否透明",pngTips:"tips:富文本模式导出图片非常耗时,建议导出为svg格式",svgTips:"tips:富文本模式导出图片非常耗时",transformingDomToImages:"正在转换节点:",notifyTitle:"消息",notifyMessage:"如果没有触发下载,请检查是否被浏览器拦截了",paddingX:"水平内边距",paddingY:"垂直内边距",useMultiPageExport:"是否多页导出",defaultFileName:"思维导图",addFooterText:"底部添加文字",addFooterTextPlaceholder:"比如:来自simple-mind-map"},fullscreen:{fullscreenShow:"全屏查看",fullscreenEdit:"全屏编辑"},import:{title:"导入",selectFile:"选取文件",supportFile:"支持.smm、.json、.xmind、.xlsx、.md文件",enableFileTip:"请选择.smm、.json、.xmind、.xlsx、.md文件",maxFileNum:"最多只能选择一个文件",notSelectTip:"请选择要导入的文件",fileContentError:"文件内容有误",importSuccess:"导入成功",fileParsingFailed:"文件解析失败"},navigatorToolbar:{openMiniMap:"开启小地图",closeMiniMap:"关闭小地图",readonly:"切换为只读模式",edit:"切换为编辑模式",backToRoot:"回到根节点",changeSourceCodeEdit:"切换为源码编辑模式"},nodeHyperlink:{title:"超链接",link:"链接",name:"名称"},nodeIcon:{title:"图标"},nodeImage:{title:"图片",imgTitle:"图片标题"},nodeNote:{title:"备注"},nodeTag:{title:"标签",addTip:"请按回车键添加"},outline:{title:"大纲",nodeDefaultText:"分支节点"},scale:{zoomIn:"放大",zoomOut:"缩小"},shortcutKey:{title:"快捷键"},strusture:{title:"结构"},style:{title:"节点样式",normal:"常态",active:"选中状态",text:"文字",fontFamily:"字体",fontSize:"字号",lineHeight:"行高",color:"颜色",addFontWeight:"加粗",italic:"斜体",textDecoration:"划线",none:"无",underline:"下划线",lineThrough:"中划线",overline:"上划线",border:"边框",style:"样式",width:"宽度",borderRadius:"圆角",background:"背景",shape:"形状",line:"线条",nodePadding:"节点内边距",horizontal:"水平",vertical:"垂直",gradientStyle:"渐变",startColor:"起始",endColor:"结束",arrowDir:"箭头位置",arrowDirStart:"头部",arrowDirEnd:"尾部"},theme:{title:"主题",classics:"经典",dark:"深色",simple:"朴素",coverTip:"你当前自定义过基础样式,是否覆盖?",tip:"提示",cover:"覆盖",reserve:"保留"},toolbar:{undo:"回退",redo:"前进",insertSiblingNode:"同级节点",insertChildNode:"子节点",deleteNode:"删除节点",image:"图片",icon:"图标",link:"超链接",note:"备注",tag:"标签",summary:"概要",displayOutline:"显示大纲",baseStyle:"基础样式",theme:"主题",strusture:"结构",newFile:"新建",openFile:"打开",saveAs:"另存为",import:"导入",export:"导出",shortcutKey:"快捷键",associativeLine:"关联线",painter:"格式刷",formula:"公式",attachment:"附件",more:"更多",selectFileTip:"请选择文件",notSupportTip:"你的浏览器不支持该功能,或者当前页面非https协议",tip:"提示",editingLocalFileTipFront:"当前正在编辑你本机的【",editingLocalFileTipEnd:"】文件",fileContentError:"文件内容有误",fileOpenFailed:"文件打开失败",defaultFileName:"思维导图",creatingTip:"正在创建文件",directory:"目录"},edit:{newFeatureNoticeTitle:"新特性提醒",newFeatureNoticeMessage:"本次更新支持了节点富文本编辑,但是存在一定缺陷,最主要的影响是导出为图片的时间和节点数量成正比,所以对导出需求比较依赖的话可以通过【基础样式】-【其他配置】-【是否开启节点富文本编辑】设置关掉富文本编辑模式。",root:"根节点",splitByWrap:"是否按换行自动分割节点?",tip:"提示",yes:"是",no:"否",exportError:"导出失败",dragTip:"在此释放以导入该文件"},mouseAction:{tip1:"当前:左键拖动画布,右键框选节点",tip2:"当前:左键框选节点,右键拖动画布"},search:{searchPlaceholder:"请输入查找内容",replacePlaceholder:"请输入替换内容",replace:"替换",replaceAll:"全部替换",cancel:"取消"},nodeIconSidebar:{title:"图标/贴纸",icon:"图标",sticker:"贴纸"},formulaSidebar:{title:"公式",placeholder:"请输入 LaTeX 语法",confirm:"完成",common:"常用公式",tip:"非富文本模式下不支持插入公式"},richTextToolbar:{bold:"加粗",italic:"斜体",underline:"下划线",strike:"删除线",fontFamily:"字体",fontSize:"字号",color:"字体颜色",backgroundColor:"背景颜色",removeFormat:"清除样式"},other:{loading:"正在加载,请稍后..."},sourceCodeEdit:{sourceCodeTip:"富文本模式下不建议修改样式,因为需要同步修改数据及html结构。",format:"格式化",copy:"复制",confirm:"完成",close:"关闭",formatErrorTip:"JSON格式有误,请检查后再试",copyTip:"已复制到剪贴板",formatTip:"格式化完成"},attachment:{deleteAttachment:"删除附件",tip:"附件功能仅在客户端可用"}},l={zh:r,en:a};i["default"].use(o["a"]);const c=new o["a"]({messages:l});t["a"]=c},"9c65":function(e,t,n){},b1fa:function(e,t,n){"use strict";n("5439")},b834:function(e,t,n){var i={"./en/associativeLine/index.vue":["708b","chunk-2d0d5cb9"],"./en/batchExecution/index.vue":["ed72","chunk-2d2308b0"],"./en/changelog/index.vue":["a6d3","chunk-2d208ffa"],"./en/client/index.vue":["0247","chunk-2d0a34fb"],"./en/command/index.vue":["9381","chunk-2d0e5089"],"./en/constructor/index.vue":["6a50","chunk-2d0d9fbc"],"./en/cooperate/index.vue":["f2be","chunk-2d22c6c5"],"./en/deploy/index.vue":["b1a3","chunk-2d20f137"],"./en/doExport/index.vue":["c6ec","chunk-2d217907"],"./en/drag/index.vue":["ff2d","chunk-2d238428"],"./en/formula/index.vue":["dec3","chunk-2d229d67"],"./en/handDrawnLikeStyle/index.vue":["d763","chunk-9d289278"],"./en/introduction/index.vue":["7f29","chunk-4c82605f"],"./en/keyCommand/index.vue":["2f7a","chunk-2d0be174"],"./en/keyboardNavigation/index.vue":["328f","chunk-2d0b92c3"],"./en/markdown/index.vue":["8102","chunk-2d0dd3b1"],"./en/miniMap/index.vue":["b98e","chunk-2d210a7a"],"./en/node/index.vue":["c133","chunk-2d216004"],"./en/nodeImgAdjust/index.vue":["48a3","chunk-2d0c226c"],"./en/painter/index.vue":["76a5","chunk-2d0d7809"],"./en/rainbowLines/index.vue":["8235","chunk-2d0dd7d2"],"./en/render/index.vue":["8e32","chunk-2d0e9742"],"./en/richText/index.vue":["4947","chunk-2d0c20be"],"./en/scrollbar/index.vue":["a950","chunk-2d209589"],"./en/search/index.vue":["bf42","chunk-2d21b2b8"],"./en/select/index.vue":["ddd1","chunk-2d2299c3"],"./en/start/index.vue":["b407","chunk-2d20f68f"],"./en/textEdit/index.vue":["9d03","chunk-2d0f0784"],"./en/touchEvent/index.vue":["a1cd","chunk-2d207d47"],"./en/translate/index.vue":["479a","chunk-2d0c1a01"],"./en/utils/index.vue":["144f","chunk-2d0ab10b"],"./en/view/index.vue":["16c7","chunk-2d0abe0f"],"./en/watermark/index.vue":["27ad","chunk-2d0b361e"],"./en/xmind/index.vue":["f127","chunk-2d22bd06"],"./zh/associativeLine/index.vue":["20fa","chunk-2d0b1c6f"],"./zh/batchExecution/index.vue":["e9ee","chunk-2d226d0a"],"./zh/changelog/index.vue":["9ac1","chunk-2d0f026c"],"./zh/client/index.vue":["92da","chunk-2d0e524c"],"./zh/command/index.vue":["6df4","chunk-2d0db0f2"],"./zh/constructor/index.vue":["6cfb","chunk-2d0dad5f"],"./zh/cooperate/index.vue":["a1ae","chunk-2d207d0a"],"./zh/course1/index.vue":["8e98","chunk-2d0e9802"],"./zh/course10/index.vue":["3f2a","chunk-2d0c5538"],"./zh/course11/index.vue":["33b0","chunk-2d0b9b64"],"./zh/course12/index.vue":["eb27","chunk-2d230098"],"./zh/course13/index.vue":["c1ec","chunk-2d216642"],"./zh/course14/index.vue":["e487","chunk-2d2254a4"],"./zh/course15/index.vue":["fb9a","chunk-2d2375fa"],"./zh/course16/index.vue":["18dc","chunk-2d0ac5dc"],"./zh/course17/index.vue":["4323","chunk-2d0c09f6"],"./zh/course18/index.vue":["91b3","chunk-2d0e4e1f"],"./zh/course19/index.vue":["ae22","chunk-77915045"],"./zh/course2/index.vue":["c187","chunk-2d2160a3"],"./zh/course20/index.vue":["158d","chunk-2d0ab546"],"./zh/course21/index.vue":["e410","chunk-2d2253c4"],"./zh/course22/index.vue":["d013","chunk-2d21d064"],"./zh/course23/index.vue":["a0a8","chunk-2d20791c"],"./zh/course24/index.vue":["2ad8","chunk-2d0bd3f9"],"./zh/course25/index.vue":["e6dd","chunk-2d2261a7"],"./zh/course26/index.vue":["20c6","chunk-2d0b1be7"],"./zh/course27/index.vue":["0805","chunk-2d0a4b03"],"./zh/course3/index.vue":["0fcd","chunk-2d0afe0d"],"./zh/course4/index.vue":["32a6","chunk-2d0b978a"],"./zh/course5/index.vue":["3c76","chunk-2d0c4a65"],"./zh/course6/index.vue":["8e25","chunk-2d0e9726"],"./zh/course7/index.vue":["c13f","chunk-2d216037"],"./zh/course8/index.vue":["cc99","chunk-2d221c76"],"./zh/course9/index.vue":["b69b","chunk-2d20ff53"],"./zh/deploy/index.vue":["71bb","chunk-2d0d6590"],"./zh/doExport/index.vue":["1256","chunk-2d0aa978"],"./zh/drag/index.vue":["4604","chunk-2d0c14fc"],"./zh/formula/index.vue":["d53e","chunk-2d21e399"],"./zh/handDrawnLikeStyle/index.vue":["d2d5","chunk-1c3bec15"],"./zh/help1/index.vue":["05ec","chunk-2d0a4659"],"./zh/help2/index.vue":["83fa","chunk-2d0de1ec"],"./zh/help3/index.vue":["3de7","chunk-2d0c53b9"],"./zh/help4/index.vue":["f08f","chunk-2d22ba2e"],"./zh/help5/index.vue":["2c65","chunk-2d0bd5e6"],"./zh/introduction/index.vue":["4710","chunk-5ecd9693"],"./zh/keyCommand/index.vue":["a43c","chunk-2d2082b9"],"./zh/keyboardNavigation/index.vue":["2c18","chunk-2d0bd54e"],"./zh/markdown/index.vue":["08d0","chunk-2d0a514a"],"./zh/miniMap/index.vue":["0168","chunk-2d0a3179"],"./zh/node/index.vue":["433b","chunk-2d0c0a44"],"./zh/nodeImgAdjust/index.vue":["1f8f","chunk-2d0b6d39"],"./zh/painter/index.vue":["5b22","chunk-2d0d2ec3"],"./zh/rainbowLines/index.vue":["4987","chunk-2d0c213a"],"./zh/render/index.vue":["6c31","chunk-2d0da701"],"./zh/richText/index.vue":["35c4","chunk-2d0ba309"],"./zh/scrollbar/index.vue":["3def","chunk-2d0c53e8"],"./zh/search/index.vue":["0503","chunk-2d0a3fbe"],"./zh/select/index.vue":["321a","chunk-2d0b91e5"],"./zh/start/index.vue":["7e57","chunk-2d0e2326"],"./zh/textEdit/index.vue":["c576","chunk-2d216f87"],"./zh/touchEvent/index.vue":["e021","chunk-2d2244e0"],"./zh/translate/index.vue":["1136","chunk-2d0aa579"],"./zh/utils/index.vue":["4738","chunk-2d0c191e"],"./zh/view/index.vue":["82ca","chunk-2d0dddce"],"./zh/watermark/index.vue":["848a","chunk-2d0de01b"],"./zh/xmind/index.vue":["8427","chunk-2d0ddf37"]};function o(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(i)},o.id="b834",e.exports=o},c0d6:function(e,t,n){"use strict";var i=n("2b0e"),o=n("2f62"),a=n("5848"),r=n("365c");i["default"].use(o["a"]);const l=new o["a"].Store({state:{mindMapData:null,isHandleLocalFile:!1,localConfig:{isZenMode:!1,openNodeRichText:!0,useLeftKeySelectionRightKeyDrag:!1,isShowScrollbar:!1,isUseHandDrawnLikeStyle:!1,isDark:!1},activeSidebar:"",isOutlineEdit:!1,isReadonly:!1,isSourceCodeEdit:!1,extraTextOnExport:""},mutations:{setMindMapData(e,t){e.mindMapData=t},setIsHandleLocalFile(e,t){e.isHandleLocalFile=t},setLocalConfig(e,t){e.localConfig={...e.localConfig,...t},Object(r["g"])(e.localConfig)},setActiveSidebar(e,t){e.activeSidebar=t},setIsOutlineEdit(e,t){e.isOutlineEdit=t},setIsReadonly(e,t){e.isReadonly=t},setIsSourceCodeEdit(e,t){e.isSourceCodeEdit=t},setExtraTextOnExport(e,t){e.extraTextOnExport=t}},actions:{getUserMindMapData(e){try{let{data:t}={data:{data:{mindMapData:a["a"]}}};e.commit("setMindMapData",t.data)}catch(t){console.log(t)}}}});t["a"]=l},d82e:function(e,t,n){},eca6:function(e,t,n){"use strict";n("716d")}}); \ No newline at end of file +(function(e){function t(t){for(var i,o,l=t[0],c=t[1],d=t[2],s=0,u=[];s>>0,this.mti=1;this.mti>>30,this.mt[this.mti]=(1812433253*((4294901760&e)>>>16)<<16)+1812433253*(65535&e)+this.mti,this.mt[this.mti]>>>=0},a.prototype.genrand_int32=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_genrand(5489),n=0;n>>1^t[1&e];for(;n>>1^t[1&e];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[1&e],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};var r=n("8a19");const l=(e,t,n,i,o,a=0,r=0)=>{let c=!1;if(n&&(c=n(e,t,o,a,r)),!c&&e.children&&e.children.length>0){let t=a+1;e.children.forEach((o,a)=>{l(o,e,n,i,!1,t,a)})}i&&i(e,t,o,a,r)},c=(e,t)=>{let n=[e],i=!1;"stop"===t(e,null)&&(i=!0);while(n.length){if(i)break;let e=n.shift();e.children&&e.children.length&&e.children.forEach(o=>{i||(n.push(o),"stop"===t(o,e)&&(i=!0))})}},d=(e,t,n,i)=>{let o=[],a=e/t,r=n/i;return o=a>r?[a*i,i]:[n,n/a],o},s=(e,t,n,i)=>{let o=e/t,a=[];if(n&&i)if(e<=n&&t<=i)a=[e,t];else{let e=n/i;a=o>e?[o*i,i]:[n,n/o]}else n?a=e<=n?[e,t]:[n,n/o]:i&&(a=t<=i?[e,t]:[o*i,i]);return a},u=e=>{e=e.replace(/
/gim,"\n");let t=document.createElement("div");return t.innerHTML=e,e=t.textContent,e},h=e=>{try{return JSON.parse(JSON.stringify(e))}catch(t){return null}},p=(e,t,n=!1)=>{if(e.data=h(t.data),n){e.data.isActive=!1;const t=De(e.data);t.forEach(e=>{e.isActive=!1})}return e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,i)=>{e.children[i]=p({},t,n)}),e},m=(e,t,n=!1,i=!0)=>(e.data=h(t.nodeData?t.nodeData.data:t.data),i?delete e.data.uid:e.data.uid||(e.data.uid=I()),n&&(e.data.isActive=!1),e.children=[],t.children&&t.children.length>0?t.children.forEach((t,o)=>{e.children[o]=m({},t,n,i)}):t.nodeData&&t.nodeData.children&&t.nodeData.children.length>0&&t.nodeData.children.forEach((t,o)=>{e.children[o]=m({},t,n,i)}),e),f=e=>new Promise((t,n)=>{const i=new Image;i.setAttribute("crossOrigin","anonymous"),i.onload=()=>{try{let e=document.createElement("canvas");e.width=i.width,e.height=i.height;let n=e.getContext("2d");n.drawImage(i,0,0,i.width,i.height),t(e.toDataURL())}catch(e){n(e)}},i.onerror=e=>{n(e)},i.src=e}),g=e=>{if(!/^data:/.test(e))return e;let[t,n]=e.split(","),i=/^data:[^/]+\/([^;]+);/.exec(t),o=i[1];return{type:o,base64:n}},v=(e,t)=>{let n=document.createElement("a");n.href=e,n.download=t,n.click()},T=(e,t=300,n)=>{let i=null;return(...o)=>{i||(i=setTimeout(()=>{e.call(n,...o),i=null},t))}},x=(e,t=(()=>{}))=>{let n=0,i=e.length;if(i<=0)return t();let o=()=>{n>=i?t():(e[n](),setTimeout(()=>{n++,o()},0))};o()},k=e=>e*(Math.PI/180),b=e=>e.replace(/([a-z])([A-Z])/g,(...e)=>e[1]+"-"+e[2].toLowerCase());let y=null;const w=(e,{italic:t,bold:n,fontSize:i,fontFamily:o})=>{const a=A({italic:t,bold:n,fontSize:i,fontFamily:o});if(!y){const e=document.createElement("canvas");y=e.getContext("2d")}y.save(),y.font=a;const{width:r,actualBoundingBoxAscent:l,actualBoundingBoxDescent:c}=y.measureText(e);y.restore();const d=l+c;return{width:r,height:d}},A=({italic:e,bold:t,fontSize:n,fontFamily:i})=>`${e?"italic ":""} ${t?"bold ":""} ${n}px ${i} `,E=function(e,t){let n=!1,i=null,o=()=>{n=!1,t?e.call(t):e()};if("undefined"!==typeof MutationObserver){let e=1,t=new MutationObserver(o),n=document.createTextNode(e);t.observe(n,{characterData:!0}),i=function(){e=(e+1)%2,n.data=e}}else i=setTimeout;return function(){n||(n=!0,i(o,0))}},C=(e,t)=>{let n=e.elRect,{scaleX:i,scaleY:o,translateX:a,translateY:r}=e.draw.transform(),{left:l,top:c,width:d,height:s}=t,u=(l+d)*i+a,h=(c+s)*o+r;l=l*i+a,c=c*o+r;let p=0,m=0;return l<0&&(p=-l),u>n.width&&(p=-(u-n.width)),c<0&&(m=-c),h>n.height&&(m=-(h-n.height)),{isOuter:0!==p||0!==m,offsetLeft:p,offsetTop:m}};let N=null;const O=e=>(N||(N=document.createElement("div")),N.innerHTML=e,N.textContent),L=e=>new Promise((t,n)=>{let i=new FileReader;i.onload=e=>{t(e.target.result)},i.onerror=e=>{n(e)},i.readAsDataURL(e)});const S=e=>new Promise(t=>{let n=new Image;n.src=e,n.onload=()=>{t({width:n.width,height:n.height})},n.onerror=()=>{t({width:0,height:0})}}),I=()=>Object(i["a"])(),R=e=>new Promise((t,n)=>{let i=new FileReader;i.readAsDataURL(e),i.onload=async e=>{let n=e.target.result,i=await S(n);t({url:n,size:i})},i.onerror=e=>{n(e)}}),M=e=>([[" "," "]].forEach(t=>{e=e.replaceAll(t[0],t[1])}),e),_=e=>Object.prototype.toString.call(e).slice(8,-1),z=e=>null===e||void 0===e||""===e,D=e=>e.replaceAll(/(<[^\s]+)\s+style=["'][^'"]+["']\s*(>)/g,"$1$2");let F=null;const P=(e,t,n)=>{F||(F=document.createElement("div")),F.innerHTML=e;let i=e=>{let o=e.childNodes;o.forEach(e=>{1===e.nodeType&&(e.tagName.toLowerCase()===t?e.style.cssText=n:i(e))})};return i(F),F.innerHTML};let B=null;const U=e=>{B||(B=document.createElement("div")),B.innerHTML=e;for(let t=B.childNodes,n=t.length;n--;)if(1==t[n].nodeType)return!0;return!1};let H=null;const j=(e,t,n)=>{H||(H=document.createElement("div")),H.innerHTML=e;let i=e=>{let o=e.childNodes;o.forEach(o=>{1===o.nodeType?i(o):3===o.nodeType&&e.replaceChild(document.createTextNode(o.nodeValue.replaceAll(t,n)),o)})};return i(H),H.innerHTML};let G=null;const Y=(e,t)=>{G||(G=document.createElement("div")),G.innerHTML=e;const n=G.querySelector(t);return n&&n.parentNode.removeChild(n),G.innerHTML},$=e=>(e=String(e).replaceAll(/\s+/g,""),["#fff","#ffffff","#FFF","#FFFFFF","rgb(255,255,255)"].includes(e)||/rgba\(255,255,255,[^)]+\)/.test(e)),W=e=>(e=String(e).replaceAll(/\s+/g,""),["","transparent"].includes(e)||/rgba\(\d+,\d+,\d+,0\)/.test(e)),Z=e=>{let{lineColor:t,root:n,second:i,node:o}=e,a=[t,n.fillColor,n.color,i.fillColor,i.color,o.fillColor,o.color,n.borderColor,i.borderColor,o.borderColor];for(let r=0;r{const t=e=>{const n=e.childNodes;n.forEach(e=>{1===e.nodeType&&(e.classList.contains("ql-formula")?e.parentNode.removeChild(e):t(e))})};t(e)};let K=null;const Q=e=>{K||(K=document.createElement("div")),K.innerHTML=e;const t=K.childNodes;let n="";for(let i=0;i{J||(J=document.createElement("div")),J.innerHTML=e;const t=J.childNodes;let n=[],i="";for(let o=0;o`

${ge(e)}

`).join("")};let X=null;const ee=e=>{X||(X=document.createElement("div")),X.innerHTML=e;const t=X.querySelectorAll(".ql-formula");Array.from(t).forEach(e=>{const t=document.createTextNode("$smmformula$");e.parentNode.replaceChild(t,e)});const n=X.childNodes;let i=[];for(let o=0;o`

${ge(e)}

`).join(""),t.length>0){e=e.replace(/\$smmformula\$/g,''),X.innerHTML=e;const n=X.querySelectorAll(".smmformula");Array.from(n).forEach((e,n)=>{e.parentNode.replaceChild(t[n],e)}),e=X.innerHTML}return e},te=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),ne=(e,t)=>{const n={};return Object.keys(t).forEach(i=>{const o=e[i],a=t[i];if(_(o)===_(a)){if("Object"===_(o)){if(JSON.stringify(o)!==JSON.stringify(a))return void(n[i]=a)}else if(o!==a)return void(n[i]=a)}else n[i]=a}),n},ie=e=>!/^_/.test(e)&&!o["g"].includes(e),oe=e=>e.reduce((e,t)=>{const n=e.find(e=>e.type===t.type);return n?t.list.forEach(e=>{const t=n.list.find(t=>t.name===e.name);t?t.icon=e.icon:n.list.push(e)}):e.push({...t}),e},[]),ae=e=>{let t=[];return e.forEach(n=>{e.find(e=>e.uid!==n.uid&&e.isAncestor(n))||t.push(n)}),t},re=e=>{const t={},n={};e.forEach(e=>{const i=e.parent;if(i){const o=i.uid;n[o]=i;const a=e.getIndexInBrothers(),r={node:e,index:a};t[o]?t[o].find(e=>e.index===r.index)||t[o].push(r):t[o]=[r]}});const i=[];return Object.keys(t).forEach(e=>{if(t[e].length>1){const o=t[e].map(e=>e.index).sort((e,t)=>e-t);i.push({node:n[e],range:[o[0],o[o.length-1]]})}else i.push({node:t[e][0].node})}),i},le=(e,t,n,i,o,a,r,l)=>t>o&&a>e&&i>r&&l>n,ce=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),n.collapse(),t.removeAllRanges(),t.addRange(n)},de=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)},se=(e,t={})=>{const n=e=>{e.forEach(e=>{e.data={...e.data,...t},e.children&&e.children.length>0&&n(e.children)})};return n(e),e},ue=(e,t=!1)=>{const n=e=>{e.forEach(e=>{e.data||(e.data={}),(t||z(e.data.uid))&&(e.data.uid=I()),e.children&&e.children.length>0&&n(e.children)})};return n(e),e},he=e=>e?Array.isArray(e)?e:[e]:[],pe=e=>e.parent?e.parent.nodeData.children.findIndex(t=>t.data.uid===e.uid):0,me=(e,t)=>t.findIndex(t=>t.uid===e.uid),fe=e=>{let t=0;for(let o=0;o([["&","&"],["<","<"],[">",">"]].forEach(t=>{e=e.replace(new RegExp(t[0],"g"),t[1])}),e),ve=(e,t)=>{const n=_(e);if(n!==_(t))return!1;if("Object"===n){const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(let o=0;o{navigator.clipboard&&navigator.clipboard.writeText(JSON.stringify(e))},xe=async()=>{let e=null,t=null;if(navigator.clipboard){e=await navigator.clipboard.readText();const n=await navigator.clipboard.read();if(n&&n.length>0)for(const e of n)for(const n of e.types)if(/^image\//.test(n)){t=await e.getType(n);break}}return{text:e,img:t}},ke=e=>{if(!e||!e.parent)return;const t=pe(e);-1!==t&&e.parent.nodeData.children.splice(t,1)},be=e=>(o["h"].forEach(t=>{e=e.replaceAll(new RegExp(`<${t}([^>]*)>`,"g"),`<${t} $1 />`)}),e),ye=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;nt.uid===e[n].uid))return!1;return!0},we=()=>{const e=navigator.userAgent.match(/\s+Chrome\/(.*)\s+/);return e&&e[1]?Number.parseFloat(e[1]):""},Ae=e=>({simpleMindMap:!0,data:e}),Ee=e=>{let t=null;if("string"===typeof e)try{const n=JSON.parse(e);"object"===typeof n&&n.simpleMindMap&&(t=n.data)}catch(i){}else"object"===typeof e&&e.simpleMindMap&&(t=e.data);const n=!!t;return{isSmm:n,data:n?t:String(e)}},Ce=(e,t)=>{e.preventDefault();const n=window.getSelection();if(!n.rangeCount)return;n.deleteFromDocument(),t=t||e.clipboardData.getData("text"),t=O(t),t=t.replaceAll(/\n/g,"");const i=document.createTextNode(t);n.getRangeAt(0).insertNode(i),n.collapseToEnd()},Ne=e=>{const t={},n=(e,i)=>{const o=e.data.uid;i&&i.children.push(o),t[o]={isRoot:!i,data:{...e.data},children:[]},e.children&&e.children.length>0&&e.children.forEach(e=>{n(e,t[o])})};return n(e,null),t},Oe=(e,t)=>{const n=e.x+e.width/2,i=e.y+e.height/2,o=t.x+t.width/2,a=t.y+t.height/2;return no&&io&&i>a?"right-bottom":na?"left-bottom":no&&i===a?"right":n===o&&ia?"bottom":"overlap"},Le=({addContentToHeader:e,addContentToFooter:t})=>{const n=[];let i=null,o=0,a=null,r=0;const l=(e,t)=>{if("function"===typeof e){const i=e();if(!i)return;const{el:o,cssText:a,height:r}=i;if(o instanceof HTMLElement){o.setAttribute("xmlns","http://www.w3.org/1999/xhtml");const e=ze({el:o,height:r});t(e,r)}a&&n.push(a)}};return l(e,(e,t)=>{i=e,o=t}),l(t,(e,t)=>{a=e,r=t}),{cssTextList:n,header:i,headerHeight:o,footer:a,footerHeight:r}},Se=(e,t=0,n=0,i=0,o=0,a=!1)=>{let r=1/0,l=-1/0,c=1/0,d=-1/0;const s=(e,t)=>{if(!t||!a){const{x:t,y:n,width:i,height:o}=e.group.findOne(".smm-node-shape").rbox();tl&&(l=t+i),nd&&(d=n+o)}e._generalizationList.length>0&&e._generalizationList.forEach(e=>{s(e.generalizationNode)}),e.children&&e.children.forEach(e=>{s(e)})};return s(e,!0),r=r-t+i,c=c-n+o,l=l-t+i,d=d-n+o,{left:r,top:c,width:l-r,height:d-c}},Ie=()=>document.documentElement.requestFullScreen?"fullscreenchange":document.documentElement.webkitRequestFullScreen?"webkitfullscreenchange":document.documentElement.mozRequestFullScreen?"mozfullscreenchange":document.documentElement.msRequestFullscreen?"msfullscreenchange":void 0,Re=Ie(),Me=e=>{e.requestFullScreen?e.requestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.mozRequestFullScreen&&e.mozRequestFullScreen()},_e=()=>{document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen&&document.mozCancelFullScreen()},ze=({el:e,width:t,height:n})=>{const i=new r["c"];return void 0!==t&&i.width(t),void 0!==n&&i.height(n),i.add(e),i},De=e=>{const t=e.generalization;return t?Array.isArray(t)?t:[t]:[]}},"2f42":function(e,t,n){"use strict";n("37e6")},3650:function(e,t,n){"use strict";n("59d2")},"365c":function(e,t,n){"use strict";n.d(t,"a",(function(){return u})),n.d(t,"e",(function(){return h})),n.d(t,"d",(function(){return p})),n.d(t,"f",(function(){return m})),n.d(t,"b",(function(){return f})),n.d(t,"g",(function(){return g})),n.d(t,"c",(function(){return v}));var i=n("5848"),o=n("1e42"),a=n("2b0e");const r="SIMPLE_MIND_MAP_DATA",l="SIMPLE_MIND_MAP_LANG",c="SIMPLE_MIND_MAP_LOCAL_CONFIG";let d=null;const s=(e,t)=>t?(e.data=Object(o["ob"])(t.data),e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,n)=>{e.children[n]=s({},t)}),e):null,u=()=>{if(window.takeOverApp)return d=window.takeOverAppMethods.getMindMapData(),d;let e=localStorage.getItem(r);if(null===e)return Object(o["ob"])(i["a"]);try{return JSON.parse(e)}catch(t){return Object(o["ob"])(i["a"])}},h=e=>{try{let t=null;if(t=window.takeOverApp?d:u(),t.root=s({},e),window.takeOverApp)return d=t,void window.takeOverAppMethods.saveMindMapData(t);a["default"].prototype.$bus.$emit("write_local_file",t);let n=JSON.stringify(t);localStorage.setItem(r,n)}catch(t){console.log(t)}},p=e=>{try{let t=null;if(t=window.takeOverApp?d:u(),t={...t,...e},window.takeOverApp)return d=t,void window.takeOverAppMethods.saveMindMapData(t);a["default"].prototype.$bus.$emit("write_local_file",t);let n=JSON.stringify(t);localStorage.setItem(r,n)}catch(t){console.log(t)}},m=e=>{window.takeOverApp?window.takeOverAppMethods.saveLanguage(e):localStorage.setItem(l,e)},f=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLanguage()||"zh";let e=localStorage.getItem(l);return e||(m("zh"),"zh")},g=e=>{if(window.takeOverApp)return window.takeOverAppMethods.saveLocalConfig(e);localStorage.setItem(c,JSON.stringify(e))},v=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLocalConfig();let e=localStorage.getItem(c);return e?JSON.parse(e):null}},"36f1":function(e,t,n){"use strict";n("d82e")},"37e6":function(e,t,n){},4013:function(e,t,n){"use strict";n.d(t,"i",(function(){return i})),n.d(t,"a",(function(){return o})),n.d(t,"d",(function(){return a})),n.d(t,"e",(function(){return r})),n.d(t,"f",(function(){return l})),n.d(t,"g",(function(){return c})),n.d(t,"b",(function(){return d})),n.d(t,"c",(function(){return s})),n.d(t,"h",(function(){return u}));const i=[{name:"默认",value:"default",dark:!1},{name:"暗色2",value:"dark2",dark:!0},{name:"天清绿",value:"skyGreen",dark:!1},{name:"脑图经典2",value:"classic2",dark:!1},{name:"脑图经典3",value:"classic3",dark:!1},{name:"经典绿",value:"classicGreen",dark:!1},{name:"经典蓝",value:"classicBlue",dark:!1},{name:"天空蓝",value:"blueSky",dark:!1},{name:"脑残粉",value:"brainImpairedPink",dark:!1},{name:"暗色",value:"dark",dark:!0},{name:"泥土黄",value:"earthYellow",dark:!1},{name:"清新绿",value:"freshGreen",dark:!1},{name:"清新红",value:"freshRed",dark:!1},{name:"浪漫紫",value:"romanticPurple",dark:!1},{name:"粉红葡萄",value:"pinkGrape",dark:!1},{name:"薄荷",value:"mint",dark:!1},{name:"金色vip",value:"gold",dark:!1},{name:"活力橙",value:"vitalityOrange",dark:!1},{name:"绿叶",value:"greenLeaf",dark:!1},{name:"脑图经典",value:"classic",dark:!0},{name:"脑图经典4",value:"classic4",dark:!1},{name:"小黄人",value:"minions",dark:!1},{name:"简约黑",value:"simpleBlack",dark:!1},{name:"课程绿",value:"courseGreen",dark:!1},{name:"咖啡",value:"coffee",dark:!1},{name:"红色精神",value:"redSpirit",dark:!1},{name:"黑色幽默",value:"blackHumour",dark:!0},{name:"深夜办公室",value:"lateNightOffice",dark:!0},{name:"黑金",value:"blackGold",dark:!0},{name:"牛油果",value:"avocado",dark:!1},{name:"秋天",value:"autumn",dark:!1},{name:"橙汁",value:"orangeJuice",dark:!0}],o={CHANGE_THEME:"changeTheme",CHANGE_LAYOUT:"changeLayout",SET_DATA:"setData",TRANSFORM_TO_NORMAL_NODE:"transformAllNodesToNormalNode",MODE:{READONLY:"readonly",EDIT:"edit"},LAYOUT:{LOGICAL_STRUCTURE:"logicalStructure",MIND_MAP:"mindMap",ORGANIZATION_STRUCTURE:"organizationStructure",CATALOG_ORGANIZATION:"catalogOrganization",TIMELINE:"timeline",TIMELINE2:"timeline2",FISHBONE:"fishbone",VERTICAL_TIMELINE:"verticalTimeline"},DIR:{UP:"up",LEFT:"left",DOWN:"down",RIGHT:"right"},KEY_DIR:{LEFT:"Left",UP:"Up",RIGHT:"Right",DOWN:"Down"},SHAPE:{RECTANGLE:"rectangle",DIAMOND:"diamond",PARALLELOGRAM:"parallelogram",ROUNDED_RECTANGLE:"roundedRectangle",OCTAGONAL_RECTANGLE:"octagonalRectangle",OUTER_TRIANGULAR_RECTANGLE:"outerTriangularRectangle",INNER_TRIANGULAR_RECTANGLE:"innerTriangularRectangle",ELLIPSE:"ellipse",CIRCLE:"circle"},MOUSE_WHEEL_ACTION:{ZOOM:"zoom",MOVE:"move"},INIT_ROOT_NODE_POSITION:{LEFT:"left",TOP:"top",RIGHT:"right",BOTTOM:"bottom",CENTER:"center"},LAYOUT_GROW_DIR:{LEFT:"left",TOP:"top",RIGHT:"right",BOTTOM:"bottom"},PASTE_TYPE:{CLIP_BOARD:"clipBoard",CANVAS:"canvas"},SCROLL_BAR_DIR:{VERTICAL:"vertical",HORIZONTAL:"horizontal"},CREATE_NEW_NODE_BEHAVIOR:{DEFAULT:"default",NOT_ACTIVE:"notActive",ACTIVE_ONLY:"activeOnly"}},a={[o.INIT_ROOT_NODE_POSITION.LEFT]:0,[o.INIT_ROOT_NODE_POSITION.TOP]:0,[o.INIT_ROOT_NODE_POSITION.RIGHT]:1,[o.INIT_ROOT_NODE_POSITION.BOTTOM]:1,[o.INIT_ROOT_NODE_POSITION.CENTER]:.5},r=[{name:"逻辑结构图",value:o.LAYOUT.LOGICAL_STRUCTURE},{name:"思维导图",value:o.LAYOUT.MIND_MAP},{name:"组织结构图",value:o.LAYOUT.ORGANIZATION_STRUCTURE},{name:"目录组织图",value:o.LAYOUT.CATALOG_ORGANIZATION},{name:"时间轴",value:o.LAYOUT.TIMELINE},{name:"时间轴2",value:o.LAYOUT.TIMELINE2},{name:"竖向时间轴",value:o.LAYOUT.VERTICAL_TIMELINE},{name:"鱼骨图",value:o.LAYOUT.FISHBONE}],l=[o.LAYOUT.LOGICAL_STRUCTURE,o.LAYOUT.MIND_MAP,o.LAYOUT.CATALOG_ORGANIZATION,o.LAYOUT.ORGANIZATION_STRUCTURE,o.LAYOUT.TIMELINE,o.LAYOUT.TIMELINE2,o.LAYOUT.VERTICAL_TIMELINE,o.LAYOUT.FISHBONE],c=["text","image","imageTitle","imageSize","icon","tag","hyperlink","hyperlinkTitle","note","expand","isActive","generalization","richText","resetRichText","uid","activeStyle","associativeLineTargets","associativeLineTargetControlOffsets","associativeLinePoint","associativeLineText","attachmentUrl","attachmentName"],d={READ_CLIPBOARD_ERROR:"read_clipboard_error",PARSE_PASTE_DATA_ERROR:"parse_paste_data_error",CUSTOM_HANDLE_CLIPBOARD_TEXT_ERROR:"custom_handle_clipboard_text_error",LOAD_CLIPBOARD_IMAGE_ERROR:"load_clipboard_image_error",BEFORE_TEXT_EDIT_ERROR:"before_text_edit_error",EXPORT_ERROR:"export_error",EXPORT_LOAD_IMAGE_ERROR:"export_load_image_error",DATA_CHANGE_DETAIL_EVENT_ERROR:"data_change_detail_event_error"},s="\n /* 鼠标hover和激活时渲染的矩形 */\n .smm-hover-node{\n display: none;\n opacity: 0.6;\n stroke-width: 1;\n }\n\n .smm-node:not(.smm-node-dragging):hover .smm-hover-node{\n display: block;\n }\n\n .smm-node.active .smm-hover-node, .smm-node-highlight .smm-hover-node{\n display: block;\n opacity: 1;\n stroke-width: 2;\n }\n",u=["img","br","hr","input","link","meta","area"]},"41cb":function(e,t,n){"use strict";n("14d9");var i=n("2b0e"),o=n("8c4f"),a=function(){var e=this,t=e._self._c;return t("div",{staticClass:"docContainer"},[t("Header"),t("div",{staticClass:"content"},[t("Sidebar"),t("div",{ref:"doc",staticClass:"doc",attrs:{id:"doc"},on:{scroll:e.onScroll}},[t("router-view")],1),t("CatalogBar",{attrs:{scrollTop:e.scrollTop},on:{scroll:e.doScroll}})],1)],1)},r=[],l=function(){var e=this,t=e._self._c;return t("div",{staticClass:"headerContainer"},[t("div",{staticClass:"left"},[t("div",{staticClass:"title",on:{click:e.toIndex}},[t("img",{attrs:{src:n("440d"),alt:""}}),e._v(" SimpleMindMap ")])]),t("div",{staticClass:"center"},[t("div",{staticClass:"btn",on:{click:e.toIndex}},[e._v(e._s(e.index))]),t("div",{staticClass:"btn",on:{click:e.toDemo}},[e._v(e._s(e.demoName))]),t("div",{staticClass:"btn",class:{active:"help"===e.docType},on:{click:e.toHelp}},[e._v(" "+e._s(e.helpDoc)+" ")]),t("div",{staticClass:"btn",class:{active:"doc"===e.docType},on:{click:e.toDev}},[e._v(" "+e._s(e.devDoc)+" ")]),"doc"===e.docType?t("el-dropdown",{attrs:{trigger:"click",placement:"bottom-start"},on:{command:e.handleCommand}},[t("span",{staticClass:"translateBtn"},[e._v(" "+e._s(e.currentLangName)),t("i",{staticClass:"el-icon-arrow-down el-icon--right"})]),t("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},e._l(e.otherLangList,(function(n){return t("el-dropdown-item",{key:n.path,attrs:{command:n.path}},[e._v(e._s(n.name))])})),1)],1):e._e(),e._m(0)],1),t("div",{staticClass:"right"})])},c=[function(){var e=this,t=e._self._c;return t("a",{attrs:{href:"https://github.com/wanglin2/mind-map",target:"_blank"}},[t("span",{staticClass:"iconfont icongithub"})])}],d=[{lang:"zh",children:[{path:"associativeLine",title:"AssociativeLine 插件"},{path:"batchExecution",title:"BatchExecution实例"},{path:"changelog",title:"Changelog"},{path:"command",title:"Command实例"},{path:"constructor",title:"构造函数"},{path:"course1",title:"基本使用"},{path:"course2",title:"操作节点内容"},{path:"course3",title:"插入/删除节点、前进回退"},{path:"course4",title:"设置节点样式"},{path:"course5",title:"设置基础样式"},{path:"course6",title:"显示水印"},{path:"course7",title:"开启节点自由拖拽"},{path:"course8",title:"开启节点富文本编辑"},{path:"course9",title:"修改鼠标滚轮的行为"},{path:"course10",title:"主题"},{path:"course11",title:"结构"},{path:"course12",title:"如何渲染一个大纲"},{path:"course13",title:"快捷键"},{path:"course14",title:"如何渲染一个小地图"},{path:"course15",title:"如何渲染一个右键菜单"},{path:"course16",title:"如何渲染富文本的悬浮工具栏"},{path:"course17",title:"导入和导出"},{path:"course18",title:"如何持久化数据"},{path:"course19",title:"插入和扩展节点图标"},{path:"course20",title:"如何自定义节点内容"},{path:"course21",title:"如何复制、剪切、粘贴"},{path:"course22",title:"如何实现搜索、替换"},{path:"course23",title:"如何渲染滚动条"},{path:"course24",title:"如何开发一个插件"},{path:"course25",title:"关于概要"},{path:"course26",title:"如何实现AI生成节点内容"},{path:"course27",title:"快捷键操作如何传递自定义参数"},{path:"course28",title:"如何动态修改自定义元素的大小"},{path:"doExport",title:"Export 插件"},{path:"drag",title:"Drag插件"},{path:"introduction",title:"简介"},{path:"keyCommand",title:"KeyCommand实例"},{path:"keyboardNavigation",title:"KeyboardNavigation插件"},{path:"markdown",title:"Markdown解析"},{path:"miniMap",title:"MiniMap插件"},{path:"node",title:"Node实例"},{path:"render",title:"Render实例"},{path:"textEdit",title:"TextEdit实例"},{path:"richText",title:"RichText插件"},{path:"select",title:"Select 插件 "},{path:"start",title:"开始"},{path:"translate",title:"贡献"},{path:"utils",title:"内置工具方法"},{path:"view",title:"View实例"},{path:"watermark",title:"Watermark插件"},{path:"xmind",title:"XMind解析"},{path:"deploy",title:"部署"},{path:"client",title:"客户端"},{path:"touchEvent",title:"TouchEvent插件"},{path:"nodeImgAdjust",title:"NodeImgAdjust插件"},{path:"search",title:"Search插件"},{path:"painter",title:"Painter插件"},{path:"scrollbar",title:"Scrollbar插件"},{path:"formula",title:"Formula插件"},{path:"cooperate",title:"Cooperate插件"},{path:"rainbowLines",title:"RainbowLines插件"},{path:"demonstrate",title:"Demonstrate插件"},{path:"handDrawnLikeStyle",title:"HandDrawnLikeStyle收费插件"},{path:"help1",title:"概要/关联线"},{path:"help2",title:"客户端"},{path:"help3",title:"打开预览在线文件"},{path:"help4",title:"复制粘贴"},{path:"help5",title:"导出"}]},{lang:"en",children:[{path:"associativeLine",title:"AssociativeLine plugin"},{path:"batchExecution",title:"batchExecution instance"},{path:"changelog",title:"Changelog"},{path:"command",title:"command instance"},{path:"constructor",title:"Constructor"},{path:"doExport",title:"Export plugin"},{path:"drag",title:"Drag plugin"},{path:"introduction",title:"Introduction"},{path:"keyCommand",title:"KeyCommand instance"},{path:"keyboardNavigation",title:"KeyboardNavigation plugin"},{path:"markdown",title:"Markdown parse"},{path:"miniMap",title:"MiniMap plugin"},{path:"node",title:"Node instance"},{path:"render",title:"Render instance"},{path:"textEdit",title:"TextEdit instance"},{path:"richText",title:"RichText plugin"},{path:"select",title:"Select plugin"},{path:"start",title:"Start"},{path:"translate",title:"Contribute"},{path:"utils",title:"Utility Methods"},{path:"view",title:"View instance"},{path:"watermark",title:"Watermark plugin"},{path:"xmind",title:"XMind parse"},{path:"deploy",title:"Deploy"},{path:"touchEvent",title:"TouchEvent plugin"},{path:"nodeImgAdjust",title:"NodeImgAdjust plugin"},{path:"search",title:"Search plugin"},{path:"painter",title:"Painter plugin"},{path:"scrollbar",title:"Scrollbar plugin"},{path:"formula",title:"Formula plugin"},{path:"cooperate",title:"Cooperate plugin"},{path:"rainbowLines",title:"RainbowLines plugin"},{path:"demonstrate",title:"Demonstrate plugin"},{path:"handDrawnLikeStyle",title:"HandDrawnLikeStyle chargeable plugin"},{path:"client",title:"Client"}]}];let s=[{name:"中文",path:"zh"},{name:"English",path:"en"}],u=["introduction","start","deploy","client","translate","changelog"],h=new Array(28).fill(0).map((e,t)=>"course"+(t+1)),p=["constructor","node","render","textEdit","view","keyCommand","command","batchExecution","richText","select","drag","keyboardNavigation","doExport","miniMap","watermark","associativeLine","touchEvent","nodeImgAdjust","search","painter","scrollbar","formula","cooperate","rainbowLines","handDrawnLikeStyle","demonstrate","xmind","markdown","utils"],m=new Array(5).fill(0).map((e,t)=>"help"+(t+1));const f=(e,t)=>{let n=d.find(t=>t.lang===e),i=n.children;return t.filter(e=>i.find(t=>t.path===e)).map(e=>({path:e,name:i.find(t=>t.path===e).title}))};var g={zh:[{groupName:"开始",type:"doc",list:f("zh",u)},{groupName:"教程",type:"doc",list:f("zh",h)},{groupName:"API",type:"doc",list:f("zh",p)},{groupName:"使用帮助",type:"help",list:f("zh",m)}],en:[{groupName:"Start",type:"doc",list:f("en",u)},{groupName:"Course",type:"doc",list:f("zh",h)},{groupName:"API",type:"doc",list:f("en",p)}]};const v={pageCatalog:{zh:"本页目录",en:"Page catalog"},demo:{zh:"在线示例",en:"Online Demo"},help:{zh:"帮助文档",en:"Help doc"},dev:{zh:"开发文档",en:"Dev doc"},index:{zh:"首页",en:"Home"}},T=(e,t)=>v[e]?v[e][t]||v[e].zh:"";var x=T,k={data(){return{docType:"",lang:"",currentLangName:"",otherLangList:[]}},computed:{demoName(){return x("demo",this.lang)},helpDoc(){return x("help",this.lang)},devDoc(){return x("dev",this.lang)},index(){return x("index",this.lang)}},watch:{$route(){this.init()}},created(){this.init()},methods:{init(){let e=/^\/([^\/]+)\//.exec(this.$route.path);e&&e[1]&&(this.docType=e[1]);let t=/^\/doc\/([^\/]+)\//.exec(this.$route.path);if(t&&t[1]){this.lang=t[1];let e=s.find(e=>e.path===this.lang);this.currentLangName=e.name,this.otherLangList=s.filter(e=>e.path!==this.lang)}},toIndex(){this.$router.push("/index")},toDemo(){this.$router.push("/")},handleCommand(e){let t=this.$route.path.replace(/^\/doc\/([^\/]+)\//,(...t)=>`/doc/${e}/`);this.$router.push(t)},toHelp(){this.lang="zh",this.$router.replace("/help/zh/")},toDev(){this.$router.replace("/doc/zh/")}}},b=k,y=(n("eca6"),n("2877")),w=Object(y["a"])(b,l,c,!1,null,"1c36e28e",null),A=w.exports,E=function(){var e=this,t=e._self._c;return t("div",{staticClass:"sideBarContainer"},[t("div",{staticClass:"catalogGroupList"},e._l(e.groupList,(function(n,i){return t("div",{key:i,staticClass:"catalogGroup"},[t("div",{staticClass:"catalogGroupName"},[e._v(e._s(n.groupName))]),t("div",{staticClass:"catalogList"},e._l(n.list,(function(n){return t("div",{key:i+n.path,staticClass:"catalogItem",class:{active:n.path===e.currentPath},on:{click:function(t){return e.jump(n)}}},[e._v(" "+e._s(n.name)+" ")])})),0)])})),0)])},C=[],N={data(){return{groupList:[],lang:"",currentPath:"",type:""}},created(){this.initCatalog()},watch:{$route(){this.initCatalog()}},methods:{jump(e){e.path!==this.currentPath&&this.$router.push(`/${this.type}/${this.lang}/${e.path}`)},initCatalog(){let e=/^\/(doc|help)\/([^\/]+)\//.exec(this.$route.path);e&&e[2]&&(this.type=e[1],this.lang=e[2],this.groupList=g[this.lang].filter(e=>e.type===this.type));let t=/^\/(doc|help)\/[^\/]+\/([^\/]+)(\/|$)/.exec(this.$route.path);t&&t[2]&&(this.currentPath=t[2])}}},O=N,L=(n("2f42"),Object(y["a"])(O,E,C,!1,null,"73f8f4b5",null)),S=L.exports,I=function(){var e=this,t=e._self._c;return t("div",{staticClass:"catalogBarContainer"},[t("div",{staticClass:"catalogBarTitle"},[e._v(e._s(e.pageCatalogTitle))]),t("div",{staticClass:"catalogList"},[e._l(e.list,(function(n,i){return t("div",{key:n.title+i,staticClass:"catalogItem",class:{active:n.title===e.activeCatalog},on:{click:function(t){return e.scrollTo(n,i)}}},[e._v(" "+e._s(n.title)+" ")])})),-1!==e.activeCatalogIndex?t("div",{staticClass:"activeBar",style:{top:4+28*e.activeCatalogIndex+"px"}}):e._e()],2)])},R=[],M={props:{scrollTop:{type:Number}},data(){return{lang:"",list:[],activeCatalog:"",activeCatalogIndex:-1,appointCatalog:!0}},computed:{pageCatalogTitle(){return x("pageCatalog",this.lang)}},watch:{$route(e,t){this.initLang(),this.initCatalogList(e.path,t.path)},scrollTop(){this.onScroll()},lang(e,t){t&&this.initCatalogList()}},mounted(){this.initLang(),this.initCatalogList(),this.scrollToCatalog()},methods:{initLang(){let e=/^\/(doc|help)\/([^\/]+)\//.exec(this.$route.path);e&&e[2]&&(this.lang=e[2])},initCatalogList(e,t){let n=/^\/(doc|help)\/[^\/]+\/([^\/]+)/.exec(e),i=/^\/(doc|help)\/[^\/]+\/([^\/]+)/.exec(t);if(!e&&!t||n[2]!==i[2]){this.$emit("scroll",0),this.resetActive();let e=document.getElementById("doc"),t=document.querySelectorAll("#doc h2");this.list=Array.from(t).map(t=>({title:t.textContent,top:t.offsetTop-e.offsetTop}))}},scrollToCatalog(){let e=/^\/(doc|help)\/[^\/]+\/[^\/]+\/([^\/]+)($|\/)/.exec(this.$route.path);if(e&&e[2]){let t=decodeURIComponent(e[2]),n=this.list.find(e=>e.title===t),i=this.list.findIndex(e=>e.title===t);n&&(this.activeCatalog=n.title,this.activeCatalogIndex=i,this.$emit("scroll",n.top))}},scrollTo(e,t){this.appointCatalog=!0,this.routeToNewCatalog(e.title),this.$nextTick(()=>{this.activeCatalog=e.title,this.activeCatalogIndex=t,this.scrollToCatalog()})},routeToNewCatalog(e){let t=this.$route.path,n="";n=e?/^\/(doc|help)\/[^\/]+\/[^\/]+($|\/)$/.test(t)?t.replace(/^(\/(doc|help)\/[^\/]+\/[^\/]+)($|\/)$/,"$1/"+encodeURIComponent(e)):t.replace(/^(\/(doc|help)\/[^\/]+\/[^\/]+\/)([^\/]+)($|\/)/,(...t)=>t[1]+encodeURIComponent(e)):t.replace(/^(\/(doc|help)\/[^\/]+\/[^\/]+)($|\/|.*)$/,"$1"),t!==n&&this.$router.push(n)},onScroll(){if(this.appointCatalog)return void(this.appointCatalog=!1);let e=!1;for(let t=0;t=n.top&&(!i||this.scrollTop{try{this.$refs.doc.scrollTop=e}catch(t){console.log(t)}})},onScroll(){this.scrollTop=this.$refs.doc.scrollTop}}}),P=F,B=(n("3650"),Object(y["a"])(P,a,r,!1,null,null,null)),U=B.exports;const H=()=>{let e=d[0].children;for(let t=1;t{n.find(t=>t.path===e.path)||n.push({...e,lang:"zh"})})}};H();const j=(e,t)=>[...d.map(n=>({path:`/${e}/${n.lang}/`,redirect:`/${e}/${n.lang}/${t}/`})),...d.map(t=>({path:`/${e}/${t.lang}/`,component:U,children:t.children.map(e=>({path:e.path+"/:h?",component:()=>n("b834")(`./${e.lang||t.lang}/${e.path}/index.vue`)}))}))];i["default"].use(o["a"]);const G=[{path:"/index",name:"Index",component:()=>n.e("chunk-66b27c16").then(n.bind(null,"9684"))},{path:"/",name:"Edit",component:()=>n.e("chunk-8bd0d5d4").then(n.bind(null,"5fca"))},...j("doc","introduction"),...j("help","help1")],Y=new o["a"]({routes:G});t["a"]=Y},"440d":function(e,t){e.exports="data:image/png;base64,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"},5439:function(e,t,n){},"56d7":function(e,t,n){"use strict";n.r(t);var i=n("2b0e"),o=function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},a=[],r={name:"App",components:{}},l=r,c=(n("36f1"),n("2877")),d=Object(c["a"])(l,o,a,!1,null,null,null),s=d.exports,u=n("41cb"),h=n("c0d6"),p=n("5c96"),m=n.n(p),f=(n("0fae"),n("9c65"),n("0808"),n("c71c")),g=n("9225"),v=n("365c");i["default"].config.productionTip=!1;const T=new i["default"];i["default"].prototype.$bus=T,i["default"].use(m.a),i["default"].use(f["a"]);const x=()=>{g["a"].locale=Object(v["b"])(),new i["default"]({render:e=>e(s),router:u["a"],store:h["a"],i18n:g["a"]}).$mount("#app")};window.takeOverApp?(window.initApp=x,window.$bus=T):x()},5848:function(e,t,n){"use strict";const i=()=>({image:"/enJFNMHnedQTYTESGfDkctCp2.jpeg",imageTitle:"图片名称",imageSize:{width:1e3,height:563},icon:["priority_1"],tag:["标签1","标签2"],hyperlink:"http://lxqnsys.com/",hyperlinkTitle:"理想青年实验室",note:"理想青年实验室\n一个有意思的角落"}),o=(i(),i(),{root:{data:{text:"根节点"},children:[{data:{text:"二级节点",generalization:{text:"概要"}},children:[{data:{text:"分支主题"},children:[]},{data:{text:"分支主题"},children:[]}]}]}});t["a"]={...o,theme:{template:"classic4",config:{}},layout:"logicalStructure",config:{}}},"59d2":function(e,t,n){},"716d":function(e,t,n){},9225:function(e,t,n){"use strict";var i=n("2b0e"),o=n("a925"),a={baseStyle:{title:"BaseStyle",background:"Background",color:"Color",image:"Image",imageRepeat:"Image repeat",imagePosition:"Image position",imageSize:"Image size",line:"Line",width:"Width",style:"Style",lineRadius:"Radius",lineOfOutline:"Line of outline",showArrow:"Is show arrow",nodePadding:"Node padding",nodeMargin:"Node margin",horizontal:"Horizontal",vertical:"Vertical",maximumWidth:"Max width",maximumHeight:"Max height",icon:"Icon",size:"Size",level2Node:"Level2 node",belowLevel2Node:"Below level2 node",nodeBorderType:"Node border style",nodeUseLineStyle:"Use only has bottom border style",otherConfig:"Other config",enableFreeDrag:"Enable node free drag",watermark:"Watermark",showWatermark:"Is show watermark",onlyExport:"Only export",watermarkDefaultText:"Watermark text",watermarkText:"Watermark text",watermarkTextColor:"Text color",watermarkLineSpacing:"Line spacing",watermarkTextSpacing:"Text spacing",watermarkAngle:"Angle",watermarkTextOpacity:"Text opacity",watermarkTextFontSize:"Font size",isEnableNodeRichText:"Enable node rich text editing",mousewheelAction:"Mouse wheel behavior",zoomView:"Zoom view",moveViewUpDown:"Move view up and down",associativeLine:"Associative line",associativeLineWidth:"Width",associativeLineColor:"Color",associativeLineActiveWidth:"Active width",associativeLineActiveColor:"Active color",mousewheelZoomActionReverse:"Mouse Wheel Zoom",mousewheelZoomActionReverse1:"Zoom out forward and zoom in back",mousewheelZoomActionReverse2:"Zoom in forward and zoom out back",createNewNodeBehavior:"Behavior of creating new node",default:"Active new node and editing",notActive:"Not active new node",activeOnly:"Only active new node but not editing",rootStyle:"Root Node",associativeLineText:"Associative line text",fontFamily:"Font family",fontSize:"Font size",isShowScrollbar:"Is show scrollbar",isUseHandDrawnLikeStyle:"Is use hand drawn like style",rootLineStartPos:"Root line start pos",center:"Center",right:"Right",rainbowLines:"Rainbow lines",notUseRainbowLines:"Not use rainbow lines"},color:{moreColor:"More color"},contextmenu:{insertSiblingNode:"Insert sibling node",insertChildNode:"Insert child node",insertParentNode:"Insert parent node",insertSummary:"Insert summary",moveUpNode:"Move up node",moveDownNode:"Move down node",deleteNode:"Delete node",deleteCurrentNode:"Only del cur node",copyNode:"Copy node",cutNode:"Cut node",pasteNode:"Paste node",backCenter:"Back root node",expandAll:"Expand all",unExpandAll:"Un expand all",expandTo:"Expand to",arrangeLayout:"Arrange layout",level1:"Level1",level2:"Level2",level3:"Level3",level4:"Level4",level5:"Level5",level6:"Level6",zenMode:"Zen mode",fitCanvas:"Fit canvas",removeImage:"Remove image",removeHyperlink:"Remove hyperlink",removeNote:"Remove note",removeCustomStyles:"Remove custom styles",removeAllNodeCustomStyles:"Remove all node custom styles",exportNodeToPng:"Export node to png"},count:{words:"Words",nodes:"Nodes"},dialog:{cancel:"Cancel",confirm:"Confirm"},export:{title:"Export",filename:"Filename",include:"Is include config like theme and structure",dedicatedFile:"Dedicated file",jsonFile:"json file",imageFile:"Image file",svgFile:"svg file",pdfFile:"pdf file",markdownFile:"markdown file",tips:"tips: .smm and .json file can be import",isTransparent:"Background is transparent",pngTips:"tips: Exporting pictures in rich text mode is time-consuming. It is recommended to export to svg format",svgTips:"tips: Exporting pictures in rich text mode is time-consuming",transformingDomToImages:"Converting nodes: ",notifyTitle:"Info",notifyMessage:"If the download is not triggered, check whether it is blocked by the browser",paddingX:"Padding x",paddingY:"Padding y",useMultiPageExport:"Export multi page",defaultFileName:"Mind map",addFooterTextPlaceholder:"For example: From simple-mind-map",addFooterText:"Add text at the footer"},fullscreen:{fullscreenShow:"Full screen show",fullscreenEdit:"Full screen edit"},demonstrate:{demonstrate:"Enter demonstration mode"},import:{title:"Import",selectFile:"Select file",supportFile:"Support .smm、.json、.xmind、.xlsx、.md file",enableFileTip:"Please select .smm、.json、.xmind、.xlsx、.md file",maxFileNum:"At most one file can be selected",notSelectTip:"Please select the file to import",fileContentError:"The file content is incorrect",importSuccess:"Import success",fileParsingFailed:"File parsing failed"},navigatorToolbar:{openMiniMap:"Open mini map",closeMiniMap:"Close mini map",readonly:"Change to eadonly",edit:"Change to edit",backToRoot:"Back to root node",changeSourceCodeEdit:"Switch to source code editing mode"},nodeHyperlink:{title:"Link",link:"Href",name:"Name"},nodeIcon:{title:"Icon"},nodeImage:{title:"Image",imgTitle:"Title"},nodeNote:{title:"Note"},nodeTag:{title:"Tag",addTip:"Press Enter to add"},outline:{title:"Outline",nodeDefaultText:"Branch node"},scale:{zoomIn:"Zoom in",zoomOut:"Zoom out"},shortcutKey:{title:"Shortcut key"},strusture:{title:"Strusture"},style:{title:"Node style",normal:"Normal",active:"Active",text:"Text",fontFamily:"Font family",fontSize:"Font size",lineHeight:"Line height",color:"color",addFontWeight:"add font weight",italic:"Italic",textDecoration:"Text decoration",underline:"Underline",none:"None",lineThrough:"Line through",overline:"Overline",border:"Border",style:"Style",width:"Width",borderRadius:"Border radius",background:"Background",shape:"Shape",line:"Line",nodePadding:"Node padding",horizontal:"Horizontal",vertical:"Vertical",gradientStyle:"Gradient",startColor:"Start",endColor:"End",arrowDir:"Arrow dir",arrowDirStart:"Start",arrowDirEnd:"End"},theme:{title:"Theme",classics:"Classics",dark:"Darkness",simple:"Simple",coverTip:"You have currently customized the basic style, do you want to overwrite it?",tip:"Tip",cover:"Cover",reserve:"Reserve"},toolbar:{undo:"Undo",redo:"Redo",insertSiblingNode:"Sibling node",insertChildNode:"Child node",deleteNode:"Delete node",image:"Image",icon:"Icon",link:"Link",note:"Note",tag:"Tag",summary:"Summary",displayOutline:"Display outline",baseStyle:"Base style",theme:"Theme",strusture:"Strusture",newFile:"New file",openFile:"Open file",saveAs:"Save as",import:"Import",export:"Export",shortcutKey:"Shortcut key",associativeLine:"Associative line",painter:"Painter",formula:"Formula",attachment:"Attachment",more:"More",selectFileTip:"Please select a file",notSupportTip:"Your browser does not support this feature, or the current page is not using the HTTPS protocol",tip:"Tip",editingLocalFileTipFront:"Currently editing your local【",editingLocalFileTipEnd:"】file",fileContentError:"File content error",fileOpenFailed:"File open failed",defaultFileName:"Mind map",creatingTip:"Creating file",directory:"Directory"},edit:{newFeatureNoticeTitle:"New feature reminder",newFeatureNoticeMessage:"This update supports node rich text editing, But there are some defects, The most important impact is that the time to export the image is proportional to the number of nodes, Therefore, if you are more dependent on export requirements, you can use【Base style】-【Other config】-【Enable node rich text editing】Set to turn off rich text editing mode.",root:"Root node",splitByWrap:"Is automatically split nodes based on line breaks?",tip:"Tip",yes:"Yes",no:"No",exportError:"Export failed",dragTip:"Release here to import the file"},mouseAction:{tip1:"Current: Left click to drag the canvas, right click to box select nodes",tip2:"Current: Left click to box select nodes, right click to drag the canvas"},search:{searchPlaceholder:"Please enter the search content",replacePlaceholder:"Please enter replacement content",replace:"Replace",replaceAll:"Replace all",cancel:"Cancel"},nodeIconSidebar:{title:"Icon/Sticker",icon:"Icon",sticker:"Sticker"},formulaSidebar:{title:"Formula",placeholder:"Please enter LaTeX syntax",confirm:"Confirm",common:"Common formulas",tip:"Inserting formulas is not supported in non rich text mode"},richTextToolbar:{bold:"Bold",italic:"Italic",underline:"Underline",strike:"Strike",fontFamily:"Font family",fontSize:"Font size",color:"Color",backgroundColor:"Background color",removeFormat:"Clear Style"},other:{loading:"Loading, please wait..."},sourceCodeEdit:{sourceCodeTip:"It is not recommended to modify the style in rich text mode because it requires synchronous modification of data and HTML structure.",format:"Format",copy:"Copy",confirm:"Complete",close:"Close",formatErrorTip:"The JSON format is incorrect. Please check and try again",copyTip:"Copied to clipboard",formatTip:"Format complete"},attachment:{deleteAttachment:"Delete attachment",tip:"The attachment function is only available on the client side"}},r={baseStyle:{title:"基础样式",background:"背景",color:"颜色",image:"图片",imageRepeat:"图片重复",imagePosition:"图片位置",imageSize:"图片大小",line:"连线",width:"粗细",style:"风格",lineRadius:"圆角大小",lineOfOutline:"概要的连线",showArrow:"是否显示箭头",nodePadding:"节点内边距",nodeMargin:"节点外边距",horizontal:"水平",vertical:"垂直",maximumWidth:"显示的最大宽度",maximumHeight:"显示的最大高度",icon:"图标",size:"大小",level2Node:"二级节点",belowLevel2Node:"三级及以下节点",nodeBorderType:"节点边框风格",nodeUseLineStyle:"是否使用只有底边框的风格",otherConfig:"其他配置",enableFreeDrag:"是否开启节点自由拖拽",watermark:"水印",showWatermark:"是否显示水印",watermarkDefaultText:"水印文字",onlyExport:"是否仅在导出时显示",watermarkText:"水印文字",watermarkTextColor:"文字颜色",watermarkLineSpacing:"水印行间距",watermarkTextSpacing:"水印文字间距",watermarkAngle:"旋转角度",watermarkTextOpacity:"文字透明度",watermarkTextFontSize:"文字字号",isEnableNodeRichText:"是否开启节点富文本编辑",mousewheelAction:"鼠标滚轮行为",zoomView:"缩放视图",moveViewUpDown:"上下移动视图",associativeLine:"关联线",associativeLineWidth:"粗细",associativeLineColor:"颜色",associativeLineActiveWidth:"激活粗细",associativeLineActiveColor:"激活颜色",mousewheelZoomActionReverse:"鼠标滚轮缩放",mousewheelZoomActionReverse1:"向前缩小向后放大",mousewheelZoomActionReverse2:"向前放大向后缩小",createNewNodeBehavior:"创建新节点的行为",default:"激活新节点及进入编辑",notActive:"不激活新节点",activeOnly:"只激活新节点,不进入编辑",rootStyle:"根节点",associativeLineText:"关联线文字",fontFamily:"字体",fontSize:"字号",isShowScrollbar:"是否显示滚动条",isUseHandDrawnLikeStyle:"是否开启手绘风格",rootLineStartPos:"根节点连线起始位置",center:"中心",right:"右侧",rainbowLines:"彩虹线条",notUseRainbowLines:"不使用彩虹线条"},color:{moreColor:"更多颜色"},contextmenu:{insertSiblingNode:"插入同级节点",insertChildNode:"插入子级节点",insertParentNode:"插入父节点",insertSummary:"插入概要",moveUpNode:"上移节点",moveDownNode:"下移节点",deleteNode:"删除节点",deleteCurrentNode:"仅删除当前节点",copyNode:"复制节点",cutNode:"剪切节点",pasteNode:"粘贴节点",backCenter:"回到根节点",expandAll:"展开所有",unExpandAll:"收起所有",expandTo:"展开到",arrangeLayout:"一键整理布局",level1:"一级主题",level2:"二级主题",level3:"三级主题",level4:"四级主题",level5:"五级主题",level6:"六级主题",zenMode:"禅模式",fitCanvas:"适应画布",removeImage:"移除图片",removeHyperlink:"移除超链接",removeNote:"移除备注",removeCustomStyles:"一键去除自定义样式",removeAllNodeCustomStyles:"一键去除所有节点自定义样式",exportNodeToPng:"导出该节点为图片"},count:{words:"字数",nodes:"节点"},dialog:{cancel:"取 消",confirm:"确 定"},export:{title:"导出",filename:"导出文件名称",include:"是否包含主题、结构等配置数据",dedicatedFile:"专有文件",jsonFile:"json文件",imageFile:"图片文件",svgFile:"svg文件",pdfFile:"pdf文件",markdownFile:"markdown文件",tips:"tips:.smm和.json文件可用于导入",isTransparent:"背景是否透明",pngTips:"tips:富文本模式导出图片非常耗时,建议导出为svg格式",svgTips:"tips:富文本模式导出图片非常耗时",transformingDomToImages:"正在转换节点:",notifyTitle:"消息",notifyMessage:"如果没有触发下载,请检查是否被浏览器拦截了",paddingX:"水平内边距",paddingY:"垂直内边距",useMultiPageExport:"是否多页导出",defaultFileName:"思维导图",addFooterText:"底部添加文字",addFooterTextPlaceholder:"比如:来自simple-mind-map"},fullscreen:{fullscreenShow:"全屏查看",fullscreenEdit:"全屏编辑"},demonstrate:{demonstrate:"进入演示模式"},import:{title:"导入",selectFile:"选取文件",supportFile:"支持.smm、.json、.xmind、.xlsx、.md文件",enableFileTip:"请选择.smm、.json、.xmind、.xlsx、.md文件",maxFileNum:"最多只能选择一个文件",notSelectTip:"请选择要导入的文件",fileContentError:"文件内容有误",importSuccess:"导入成功",fileParsingFailed:"文件解析失败"},navigatorToolbar:{openMiniMap:"开启小地图",closeMiniMap:"关闭小地图",readonly:"切换为只读模式",edit:"切换为编辑模式",backToRoot:"回到根节点",changeSourceCodeEdit:"切换为源码编辑模式"},nodeHyperlink:{title:"超链接",link:"链接",name:"名称"},nodeIcon:{title:"图标"},nodeImage:{title:"图片",imgTitle:"图片标题"},nodeNote:{title:"备注"},nodeTag:{title:"标签",addTip:"请按回车键添加"},outline:{title:"大纲",nodeDefaultText:"分支节点"},scale:{zoomIn:"放大",zoomOut:"缩小"},shortcutKey:{title:"快捷键"},strusture:{title:"结构"},style:{title:"节点样式",normal:"常态",active:"选中状态",text:"文字",fontFamily:"字体",fontSize:"字号",lineHeight:"行高",color:"颜色",addFontWeight:"加粗",italic:"斜体",textDecoration:"划线",none:"无",underline:"下划线",lineThrough:"中划线",overline:"上划线",border:"边框",style:"样式",width:"宽度",borderRadius:"圆角",background:"背景",shape:"形状",line:"线条",nodePadding:"节点内边距",horizontal:"水平",vertical:"垂直",gradientStyle:"渐变",startColor:"起始",endColor:"结束",arrowDir:"箭头位置",arrowDirStart:"头部",arrowDirEnd:"尾部"},theme:{title:"主题",classics:"经典",dark:"深色",simple:"朴素",coverTip:"你当前自定义过基础样式,是否覆盖?",tip:"提示",cover:"覆盖",reserve:"保留"},toolbar:{undo:"回退",redo:"前进",insertSiblingNode:"同级节点",insertChildNode:"子节点",deleteNode:"删除节点",image:"图片",icon:"图标",link:"超链接",note:"备注",tag:"标签",summary:"概要",displayOutline:"显示大纲",baseStyle:"基础样式",theme:"主题",strusture:"结构",newFile:"新建",openFile:"打开",saveAs:"另存为",import:"导入",export:"导出",shortcutKey:"快捷键",associativeLine:"关联线",painter:"格式刷",formula:"公式",attachment:"附件",more:"更多",selectFileTip:"请选择文件",notSupportTip:"你的浏览器不支持该功能,或者当前页面非https协议",tip:"提示",editingLocalFileTipFront:"当前正在编辑你本机的【",editingLocalFileTipEnd:"】文件",fileContentError:"文件内容有误",fileOpenFailed:"文件打开失败",defaultFileName:"思维导图",creatingTip:"正在创建文件",directory:"目录"},edit:{newFeatureNoticeTitle:"新特性提醒",newFeatureNoticeMessage:"本次更新支持了节点富文本编辑,但是存在一定缺陷,最主要的影响是导出为图片的时间和节点数量成正比,所以对导出需求比较依赖的话可以通过【基础样式】-【其他配置】-【是否开启节点富文本编辑】设置关掉富文本编辑模式。",root:"根节点",splitByWrap:"是否按换行自动分割节点?",tip:"提示",yes:"是",no:"否",exportError:"导出失败",dragTip:"在此释放以导入该文件"},mouseAction:{tip1:"当前:左键拖动画布,右键框选节点",tip2:"当前:左键框选节点,右键拖动画布"},search:{searchPlaceholder:"请输入查找内容",replacePlaceholder:"请输入替换内容",replace:"替换",replaceAll:"全部替换",cancel:"取消"},nodeIconSidebar:{title:"图标/贴纸",icon:"图标",sticker:"贴纸"},formulaSidebar:{title:"公式",placeholder:"请输入 LaTeX 语法",confirm:"完成",common:"常用公式",tip:"非富文本模式下不支持插入公式"},richTextToolbar:{bold:"加粗",italic:"斜体",underline:"下划线",strike:"删除线",fontFamily:"字体",fontSize:"字号",color:"字体颜色",backgroundColor:"背景颜色",removeFormat:"清除样式"},other:{loading:"正在加载,请稍后..."},sourceCodeEdit:{sourceCodeTip:"富文本模式下不建议修改样式,因为需要同步修改数据及html结构。",format:"格式化",copy:"复制",confirm:"完成",close:"关闭",formatErrorTip:"JSON格式有误,请检查后再试",copyTip:"已复制到剪贴板",formatTip:"格式化完成"},attachment:{deleteAttachment:"删除附件",tip:"附件功能仅在客户端可用"}},l={zh:r,en:a};i["default"].use(o["a"]);const c=new o["a"]({messages:l});t["a"]=c},"9c65":function(e,t,n){},b1fa:function(e,t,n){"use strict";n("5439")},b834:function(e,t,n){var i={"./en/associativeLine/index.vue":["708b","chunk-2d0d5cb9"],"./en/batchExecution/index.vue":["ed72","chunk-2d2308b0"],"./en/changelog/index.vue":["a6d3","chunk-2d208ffa"],"./en/client/index.vue":["0247","chunk-2d0a34fb"],"./en/command/index.vue":["9381","chunk-2d0e5089"],"./en/constructor/index.vue":["6a50","chunk-2d0d9fbc"],"./en/cooperate/index.vue":["f2be","chunk-2d22c6c5"],"./en/demonstrate/index.vue":["5d71","chunk-2d0d36df"],"./en/deploy/index.vue":["b1a3","chunk-2d20f137"],"./en/doExport/index.vue":["c6ec","chunk-2d217907"],"./en/drag/index.vue":["ff2d","chunk-2d238428"],"./en/formula/index.vue":["dec3","chunk-2d229d67"],"./en/handDrawnLikeStyle/index.vue":["d763","chunk-9d289278"],"./en/introduction/index.vue":["7f29","chunk-1ba6eabc"],"./en/keyCommand/index.vue":["2f7a","chunk-2d0be174"],"./en/keyboardNavigation/index.vue":["328f","chunk-2d0b92c3"],"./en/markdown/index.vue":["8102","chunk-2d0dd3b1"],"./en/miniMap/index.vue":["b98e","chunk-2d210a7a"],"./en/node/index.vue":["c133","chunk-2d216004"],"./en/nodeImgAdjust/index.vue":["48a3","chunk-2d0c226c"],"./en/painter/index.vue":["76a5","chunk-2d0d7809"],"./en/rainbowLines/index.vue":["8235","chunk-2d0dd7d2"],"./en/render/index.vue":["8e32","chunk-2d0e9742"],"./en/richText/index.vue":["4947","chunk-2d0c20be"],"./en/scrollbar/index.vue":["a950","chunk-2d209589"],"./en/search/index.vue":["bf42","chunk-2d21b2b8"],"./en/select/index.vue":["ddd1","chunk-2d2299c3"],"./en/start/index.vue":["b407","chunk-2d20f68f"],"./en/textEdit/index.vue":["9d03","chunk-2d0f0784"],"./en/touchEvent/index.vue":["a1cd","chunk-2d207d47"],"./en/translate/index.vue":["479a","chunk-2d0c1a01"],"./en/utils/index.vue":["144f","chunk-2d0ab10b"],"./en/view/index.vue":["16c7","chunk-2d0abe0f"],"./en/watermark/index.vue":["27ad","chunk-2d0b361e"],"./en/xmind/index.vue":["f127","chunk-2d22bd06"],"./zh/associativeLine/index.vue":["20fa","chunk-2d0b1c6f"],"./zh/batchExecution/index.vue":["e9ee","chunk-2d226d0a"],"./zh/changelog/index.vue":["9ac1","chunk-2d0f026c"],"./zh/client/index.vue":["92da","chunk-2d0e524c"],"./zh/command/index.vue":["6df4","chunk-2d0db0f2"],"./zh/constructor/index.vue":["6cfb","chunk-2d0dad5f"],"./zh/cooperate/index.vue":["a1ae","chunk-2d207d0a"],"./zh/course1/index.vue":["8e98","chunk-2d0e9802"],"./zh/course10/index.vue":["3f2a","chunk-2d0c5538"],"./zh/course11/index.vue":["33b0","chunk-2d0b9b64"],"./zh/course12/index.vue":["eb27","chunk-2d230098"],"./zh/course13/index.vue":["c1ec","chunk-2d216642"],"./zh/course14/index.vue":["e487","chunk-2d2254a4"],"./zh/course15/index.vue":["fb9a","chunk-2d2375fa"],"./zh/course16/index.vue":["18dc","chunk-2d0ac5dc"],"./zh/course17/index.vue":["4323","chunk-2d0c09f6"],"./zh/course18/index.vue":["91b3","chunk-2d0e4e1f"],"./zh/course19/index.vue":["ae22","chunk-77915045"],"./zh/course2/index.vue":["c187","chunk-2d2160a3"],"./zh/course20/index.vue":["158d","chunk-2d0ab546"],"./zh/course21/index.vue":["e410","chunk-2d2253c4"],"./zh/course22/index.vue":["d013","chunk-2d21d064"],"./zh/course23/index.vue":["a0a8","chunk-2d20791c"],"./zh/course24/index.vue":["2ad8","chunk-2d0bd3f9"],"./zh/course25/index.vue":["e6dd","chunk-2d2261a7"],"./zh/course26/index.vue":["20c6","chunk-2d0b1be7"],"./zh/course27/index.vue":["0805","chunk-2d0a4b03"],"./zh/course28/index.vue":["d920","chunk-2d21f249"],"./zh/course3/index.vue":["0fcd","chunk-2d0afe0d"],"./zh/course4/index.vue":["32a6","chunk-2d0b978a"],"./zh/course5/index.vue":["3c76","chunk-2d0c4a65"],"./zh/course6/index.vue":["8e25","chunk-2d0e9726"],"./zh/course7/index.vue":["c13f","chunk-2d216037"],"./zh/course8/index.vue":["cc99","chunk-2d221c76"],"./zh/course9/index.vue":["b69b","chunk-2d20ff53"],"./zh/demonstrate/index.vue":["8e00","chunk-2d0e96e3"],"./zh/deploy/index.vue":["71bb","chunk-2d0d6590"],"./zh/doExport/index.vue":["1256","chunk-2d0aa978"],"./zh/drag/index.vue":["4604","chunk-2d0c14fc"],"./zh/formula/index.vue":["d53e","chunk-2d21e399"],"./zh/handDrawnLikeStyle/index.vue":["d2d5","chunk-1c3bec15"],"./zh/help1/index.vue":["05ec","chunk-2d0a4659"],"./zh/help2/index.vue":["83fa","chunk-2d0de1ec"],"./zh/help3/index.vue":["3de7","chunk-2d0c53b9"],"./zh/help4/index.vue":["f08f","chunk-2d22ba2e"],"./zh/help5/index.vue":["2c65","chunk-2d0bd5e6"],"./zh/introduction/index.vue":["4710","chunk-16bd07ee"],"./zh/keyCommand/index.vue":["a43c","chunk-2d2082b9"],"./zh/keyboardNavigation/index.vue":["2c18","chunk-2d0bd54e"],"./zh/markdown/index.vue":["08d0","chunk-2d0a514a"],"./zh/miniMap/index.vue":["0168","chunk-2d0a3179"],"./zh/node/index.vue":["433b","chunk-2d0c0a44"],"./zh/nodeImgAdjust/index.vue":["1f8f","chunk-2d0b6d39"],"./zh/painter/index.vue":["5b22","chunk-2d0d2ec3"],"./zh/rainbowLines/index.vue":["4987","chunk-2d0c213a"],"./zh/render/index.vue":["6c31","chunk-2d0da701"],"./zh/richText/index.vue":["35c4","chunk-2d0ba309"],"./zh/scrollbar/index.vue":["3def","chunk-2d0c53e8"],"./zh/search/index.vue":["0503","chunk-2d0a3fbe"],"./zh/select/index.vue":["321a","chunk-2d0b91e5"],"./zh/start/index.vue":["7e57","chunk-2d0e2326"],"./zh/textEdit/index.vue":["c576","chunk-2d216f87"],"./zh/touchEvent/index.vue":["e021","chunk-2d2244e0"],"./zh/translate/index.vue":["1136","chunk-2d0aa579"],"./zh/utils/index.vue":["4738","chunk-2d0c191e"],"./zh/view/index.vue":["82ca","chunk-2d0dddce"],"./zh/watermark/index.vue":["848a","chunk-2d0de01b"],"./zh/xmind/index.vue":["8427","chunk-2d0ddf37"]};function o(e){if(!n.o(i,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],o=t[0];return n.e(t[1]).then((function(){return n(o)}))}o.keys=function(){return Object.keys(i)},o.id="b834",e.exports=o},c0d6:function(e,t,n){"use strict";var i=n("2b0e"),o=n("2f62"),a=n("5848"),r=n("365c");i["default"].use(o["a"]);const l=new o["a"].Store({state:{mindMapData:null,isHandleLocalFile:!1,localConfig:{isZenMode:!1,openNodeRichText:!0,useLeftKeySelectionRightKeyDrag:!1,isShowScrollbar:!1,isUseHandDrawnLikeStyle:!1,isDark:!1},activeSidebar:"",isOutlineEdit:!1,isReadonly:!1,isSourceCodeEdit:!1,extraTextOnExport:""},mutations:{setMindMapData(e,t){e.mindMapData=t},setIsHandleLocalFile(e,t){e.isHandleLocalFile=t},setLocalConfig(e,t){e.localConfig={...e.localConfig,...t},Object(r["g"])(e.localConfig)},setActiveSidebar(e,t){e.activeSidebar=t},setIsOutlineEdit(e,t){e.isOutlineEdit=t},setIsReadonly(e,t){e.isReadonly=t},setIsSourceCodeEdit(e,t){e.isSourceCodeEdit=t},setExtraTextOnExport(e,t){e.extraTextOnExport=t}},actions:{getUserMindMapData(e){try{let{data:t}={data:{data:{mindMapData:a["a"]}}};e.commit("setMindMapData",t.data)}catch(t){console.log(t)}}}});t["a"]=l},d82e:function(e,t,n){},eca6:function(e,t,n){"use strict";n("716d")}}); \ No newline at end of file diff --git a/dist/js/chunk-16bd07ee.js b/dist/js/chunk-16bd07ee.js new file mode 100644 index 00000000..dc6313dc --- /dev/null +++ b/dist/js/chunk-16bd07ee.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-16bd07ee"],{"076b":function(t,i,e){t.exports=e.p+"img/alipay.jpg"},"0b8c":function(t,i,e){t.exports=e.p+"img/南风.jpg"},"118d":function(t,i,e){t.exports=e.p+"img/在下青铜五.jpg"},2707:function(t,i,e){t.exports=e.p+"img/天清如愿.jpg"},"2cd3":function(t,i,e){t.exports=e.p+"img/志斌.jpg"},"2f65":function(t,i,e){t.exports=e.p+"img/橘半.jpg"},"30de":function(t,i,e){t.exports=e.p+"img/达仁科技.jpg"},"331d":function(t,i,e){t.exports=e.p+"img/张扬.png"},3429:function(t,i,e){t.exports=e.p+"img/国发.jpg"},"396b":function(t,i,e){t.exports=e.p+"img/小土渣的宇宙.jpeg"},"3e05":function(t,i,e){t.exports=e.p+"img/HaHN.jpg"},"3f65":function(t,i,e){t.exports=e.p+"img/花儿朵朵.jpg"},4e3:function(t,i,e){t.exports=e.p+"img/樊笼.jpg"},4047:function(t,i,e){t.exports=e.p+"img/俊奇.jpg"},4593:function(t,i,e){t.exports=e.p+"img/qp.jpg"},4623:function(t,i){t.exports="data:image/png;base64,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"},4710:function(t,i,e){"use strict";e.r(i);var c=function(){var t=this;t._self._c;return t._m(0)},r=[function(){var t=this,i=t._self._c;return i("div",[i("h1",[t._v("简介")]),i("p",[i("code",[t._v("simple-mind-map")]),t._v("【中文名:思绪思维导图】是一个简单&强大的Web思维导图库,不依赖任何特定框架。可以帮助你快速开发思维导图产品。")]),i("blockquote",[i("p",[t._v("如果你只是想使用思维导图,你也完全可以把本项目的demo作为一个普通的在线思维导图工具使用。点击右上角的【在线示例】开始使用吧。")]),i("p",[t._v("另外也提供了客户端可供下载,支持"),i("code",[t._v("Windows")]),t._v("、"),i("code",[t._v("Mac")]),t._v("及"),i("code",[t._v("Linux")]),t._v(","),i("a",{attrs:{href:"/mind-map/#/doc/zh/client"}},[t._v("点此了解更多")]),t._v("。")])]),i("h2",[t._v("特性")]),i("ul",[i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox235",checked:"true"}}),i("label",{attrs:{for:"checkbox235"}},[t._v("插件化架构,除核心功能外,其他功能作为插件提供,按需使用,减小打包体积")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox236",checked:"true"}}),i("label",{attrs:{for:"checkbox236"}},[t._v("支持逻辑结构图、思维导图、组织结构图、目录组织图、时间轴(横向、竖向)、鱼骨图等结构")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox237",checked:"true"}}),i("label",{attrs:{for:"checkbox237"}},[t._v("内置多种主题,允许高度自定义样式,支持注册新主题")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox238",checked:"true"}}),i("label",{attrs:{for:"checkbox238"}},[t._v("节点内容支持文本(普通文本、富文本)、图片、图标、超链接、备注、标签、概要、数学公式")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox239",checked:"true"}}),i("label",{attrs:{for:"checkbox239"}},[t._v("节点支持拖拽(拖拽移动、自由调整)、多种节点形状;支持扩展节点内容、支持使用 DDM 完全自定义节点内容")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox240",checked:"true"}}),i("label",{attrs:{for:"checkbox240"}},[t._v("支持画布拖动、缩放")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox241",checked:"true"}}),i("label",{attrs:{for:"checkbox241"}},[t._v("支持鼠标按键拖动选择和 Ctrl+左键两种多选节点方式")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox242",checked:"true"}}),i("label",{attrs:{for:"checkbox242"}},[t._v("支持导出为")]),i("code",[t._v("json")]),t._v("、"),i("code",[t._v("png")]),t._v("、"),i("code",[t._v("svg")]),t._v("、"),i("code",[t._v("pdf")]),t._v("、"),i("code",[t._v("markdown")]),t._v("、"),i("code",[t._v("xmind")]),t._v("、"),i("code",[t._v("txt")]),t._v(",支持从"),i("code",[t._v("json")]),t._v("、"),i("code",[t._v("xmind")]),t._v("、"),i("code",[t._v("markdown")]),t._v("导入")]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox243",checked:"true"}}),i("label",{attrs:{for:"checkbox243"}},[t._v("支持快捷键、前进后退、关联线、搜索替换、小地图、水印、滚动条、手绘风格、彩虹线条")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox244",checked:"true"}}),i("label",{attrs:{for:"checkbox244"}},[t._v("提供丰富的配置,满足各种场景各种使用习惯")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox245",checked:"true"}}),i("label",{attrs:{for:"checkbox245"}},[t._v("支持协同编辑")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox246",checked:"true"}}),i("label",{attrs:{for:"checkbox246"}},[t._v("支持演示模式")])])]),i("p",[t._v("官方提供了如下插件,可根据需求按需引入(某个功能不生效大概率是因为你没有引入对应的插件),具体使用方式请查看文档:")]),i("blockquote",[i("p",[t._v("RichText(节点富文本插件)、Select(鼠标多选节点插件)、Drag(节点拖拽插件)、AssociativeLine(关联线插件)、Export(导出插件)、KeyboardNavigation(键盘导航插件)、MiniMap(小地图插件)、Watermark(水印插件)、TouchEvent(移动端触摸事件支持插件)、NodeImgAdjust(拖拽调整节点图片大小插件)、Search(搜索插件)、Painter(节点格式刷插件)、Scrollbar(滚动条插件)、Formula(数学公式插件)、Cooperate(协同编辑插件)、RainbowLines(彩虹线条插件)、Demonstrate(演示模式插件)、HandDrawnLikeStyle(手绘风格插件)[收费]")])]),i("p",[t._v("本项目不会实现的特性:")]),i("blockquote",[i("p",[t._v("1.自由节点,即多个根节点;")]),i("p",[t._v("2.概要节点后面继续添加节点;")]),i("p",[t._v("如果你需要以上特性,那么本库可能无法满足你的需求。")])]),i("h2",[t._v("仓库目录介绍")]),i("p",[t._v("1."),i("code",[t._v("simple-mind-map")])]),i("p",[t._v("思维导图库,框架无关,"),i("code",[t._v("Vue")]),t._v("、"),i("code",[t._v("React")]),t._v("等框架或无框架都可以使用。")]),i("p",[t._v("2."),i("code",[t._v("web")])]),i("p",[t._v("使用"),i("code",[t._v("simple-mind-map")]),t._v("库,基于"),i("code",[t._v("vue2.x")]),t._v("、"),i("code",[t._v("ElementUI")]),t._v("搭建的在线思维导图。特性:")]),i("ul",[i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox247",checked:"true"}}),i("label",{attrs:{for:"checkbox247"}},[t._v("工具栏,支持插入节点、删除节点;编辑节点图片、图标、超链接、备注、标签、概要")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox248",checked:"true"}}),i("label",{attrs:{for:"checkbox248"}},[t._v("侧边栏,基础样式设置面板、节点样式设置面板、大纲面板、主题选择面板、结构选择面板")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox249",checked:"true"}}),i("label",{attrs:{for:"checkbox249"}},[t._v("导入导出功能;数据默认保存在浏览器本地存储,也支持直接创建、打开、编辑电脑本地文件")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox250",checked:"true"}}),i("label",{attrs:{for:"checkbox250"}},[t._v("右键菜单,支持展开、收起、整理布局等操作")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox251",checked:"true"}}),i("label",{attrs:{for:"checkbox251"}},[t._v("底部栏,支持节点数量、字数统计;支持切换编辑和只读模式;支持放大缩小;支持全屏切换;支持小地图")])])]),i("p",[t._v("提供文档页面服务。")]),i("p",[t._v("3."),i("code",[t._v("dist")])]),i("p",[t._v("打包"),i("code",[t._v("web")]),t._v("后的资源文件夹。")]),i("h2",[t._v("相关文章")]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/6987711560521089061"}},[t._v("Web思维导图实现的技术点分析")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7157681502506090510"}},[t._v("只需百来行代码,为你的Web页面增加本地文件操作能力,确定不试试吗?")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7199666255883927612"}},[t._v("当你按下方向键,电视是如何寻找下一个焦点的")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7204854015463538744"}},[t._v("如何在canvas中模拟css的背景图片样式")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7233012756314701884"}},[t._v("我的第一个Electron应用")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7276712861514170409"}},[t._v("探索如何将html和svg导出为图片")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7287913415803764747"}},[t._v("dom-to-image库是如何将html转换成图片的")])]),i("p",[i("a",{attrs:{href:"https://juejin.cn/post/7295669711533998117"}},[t._v("两天实现思维导图的协同编辑?用Yjs真的可以")])]),i("h2",[t._v("特别说明")]),i("p",[t._v("本项目可用于学习和参考,用于实际项目时请先深度体验一下是否能满足您的需求。")]),i("p",[t._v("本项目可能没有完整测试到每一个功能点,所以可能存在bug,另外,当节点数量非常多的时候,性能也存在一些问题,因为每个人能接受的卡顿程度不一样,所以你可以自行测试节点数量上限。一般来说,500个节点以内比较流畅,1000个节点以上卡顿比较明显。")]),i("p",[t._v("如果有建议或发现了bug,可以在此提交"),i("a",{attrs:{href:"https://github.com/wanglin2/mind-map/issues"}},[t._v("issues")]),t._v("。")]),i("p",[t._v("项目内置的主题和图标部分来自于:")]),i("p",[i("a",{attrs:{href:"https://naotu.baidu.com/"}},[t._v("百度脑图")])]),i("p",[i("a",{attrs:{href:"https://www.zhixi.com/"}},[t._v("知犀思维导图")])]),i("p",[t._v("尊重版权,主题和图标请勿直接用于商业项目。")]),i("h2",[t._v("为什么不是?")]),i("p",[t._v("1."),i("a",{attrs:{href:"https://www.zhixi.com/"}},[t._v("知犀")])]),i("p",[t._v("知犀是一个免费的思维导图产品,支持多端同步,ui设计很漂亮,功能也很齐全,但是它并不开源,所以只能作为一个用户,而无法在你的项目中使用。")]),i("p",[t._v("类似知犀的其他在线思维导图产品还有很多,比如"),i("a",{attrs:{href:"https://gitmind.cn/"}},[t._v("GitMind")]),t._v("、"),i("a",{attrs:{href:"http://www.mindline.cn/"}},[t._v("MindLine")]),t._v("、"),i("a",{attrs:{href:"https://www.mindmeister.com/zh"}},[t._v("MinMeister")]),t._v("、"),i("a",{attrs:{href:"https://mubu.com/"}},[t._v("幕布")]),t._v("等等,搜索引擎上搜索一下非常多,但是这些产品或者是要收费,或者是小公司开发的,稳定性和持续性无法保证,当然最关键的就是它们都不开源。")]),i("p",[t._v("2."),i("a",{attrs:{href:"https://github.com/fex-team/kityminder-core"}},[t._v("kityminder-core")])]),i("p",[i("code",[t._v("kityminder-core")]),t._v("是百度开发的开源的脑图工具,功能很强大,性能也很好,但是它已经不维护了,所以代码比较陈旧,界面美观度也比较一般,另外bug只能自己修,功能只能自己开发,对前端开发能力要求比较高。")]),i("p",[t._v("3."),i("a",{attrs:{href:"https://github.com/hizzgdev/jsmind"}},[t._v("jsmind")]),t._v("、"),i("a",{attrs:{href:"https://github.com/ssshooter/mind-elixir-core"}},[t._v("Mind-elixir")]),t._v("、"),i("a",{attrs:{href:"https://github.com/ondras/my-mind"}},[t._v("my-mind")]),t._v("、"),i("a",{attrs:{href:"https://github.com/awehook/blink-mind"}},[t._v("blink-mind")]),t._v("、"),i("a",{attrs:{href:"https://github.com/luvsic3/remind"}},[t._v("remind")]),t._v("、"),i("a",{attrs:{href:"https://github.com/hellowuxin/vue3-mindmap"}},[t._v("vue3-mindmap")]),t._v("、"),i("a",{attrs:{href:"https://github.com/zyascend/ZMindMap"}},[t._v("ZMindMap")]),t._v("、"),i("a",{attrs:{href:"https://github.com/RockyRen/mindmaptree"}},[t._v("mindmaptree")]),t._v("...")]),i("p",[t._v("这些开源的思维导图也都不错,各有各的特点,但是它们也都有一定缺点,比如停止更新、界面美观度一般、功能比较少、依赖某个框架等等。")]),i("p",[t._v("综上,在开源的思维导图中,你很难找到一个比"),i("code",[t._v("simple-mind-map")]),t._v("更好的选择。当然,"),i("code",[t._v("simple-mind-map")]),t._v("也远远谈不上最好,它也有很多不足,如你在前面的【特别说明】所看到的那样,不过"),i("code",[t._v("simple-mind-map")]),t._v("一直处于快速迭代中,欢迎你加入进来一起完善它。")]),i("h2",[t._v("浏览器兼容性")]),i("p",[t._v("推荐使用最新版"),i("code",[t._v("chrome")]),t._v("浏览器。")]),i("p",[t._v("有限测试情况:")]),i("p",[t._v("正常运行:"),i("code",[t._v("360")]),t._v("极速浏览器(v13.5.2036.0)、"),i("code",[t._v("opera")]),t._v("浏览器(v71.0.3770.284)、"),i("code",[t._v("Firefox")]),t._v("(v98.0.2)。")]),i("p",[t._v("不支持:"),i("code",[t._v("IE")]),t._v("浏览器。")]),i("h2",[t._v("License")]),i("p",[i("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/LICENSE"}},[t._v("MIT")]),t._v("。保留"),i("code",[t._v("mind-map")]),t._v("版权声明的情况下可随意商用。如不想保留可联系作者。")]),i("h1",[t._v("微信交流群")]),i("p",[t._v("群聊人数较多,无法通过二维码入群,可以微信添加"),i("code",[t._v("wanglinguanfang")]),t._v("拉你入群。思维导图相关问题皆可在群里提问,不必私聊作者。")]),i("h2",[t._v("请作者喝杯咖啡")]),i("p",[t._v("开源不易,如果本项目有帮助到你的话,可以考虑请作者喝杯咖啡~")]),i("blockquote",[i("p",[t._v("推荐使用支付宝,微信获取不到头像。转账请备注【思维导图】。")])]),i("img",{staticStyle:{width:"300px"},attrs:{src:e("076b")}}),i("img",{staticStyle:{width:"300px"},attrs:{src:e("4968")}}),i("div",{staticStyle:{display:"flex"}},[i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("f8ce")}}),i("p",[t._v("Think")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("2cd3")}}),i("p",[t._v("志斌")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("396b")}}),i("p",[t._v("小土渣的宇宙")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("4593")}}),i("p",[t._v("qp")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("84dd")}}),i("p",[t._v("ZXR")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("3f65")}}),i("p",[t._v("花儿朵朵")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("bf03")}}),i("p",[t._v("suka")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("654b")}}),i("p",[t._v("Chris")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("80ba")}}),i("p",[t._v("水车")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("a930")}}),i("p",[t._v("仓鼠")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("bcae")}}),i("p",[t._v("千帆")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("bba7")}}),i("p",[t._v("才镇")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("9465")}}),i("p",[t._v("小米bbᯤ²ᴳ")])])]),i("div",{staticStyle:{display:"flex"}},[i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("6ea0")}}),i("p",[t._v("*棐")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("Luke")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("7215")}}),i("p",[t._v("布林")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("0b8c")}}),i("p",[t._v("南风")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("d33b")}}),i("p",[t._v("蜉蝣撼大叔")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("ca5d")}}),i("p",[t._v("乙")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5ea5")}}),i("p",[t._v("敏")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("aaba")}}),i("p",[t._v("沐风牧草")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("eac7")}}),i("p",[t._v("有希")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("4000")}}),i("p",[t._v("樊笼")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("30de")}}),i("p",[t._v("达仁科技")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("8d3e")}}),i("p",[t._v("小逗比")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("2707")}}),i("p",[t._v("天清如愿")])])]),i("div",{staticStyle:{display:"flex"}},[i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("4f23")}}),i("p",[t._v("敬明朗")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("飞箭")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("4623")}}),i("p",[t._v("戚永峰")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("6065")}}),i("p",[t._v("moom")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("331d")}}),i("p",[t._v("张扬")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("a4f7")}}),i("p",[t._v("长沙利奥软件")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("3e05")}}),i("p",[t._v("HaHN")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("7476")}}),i("p",[t._v("继龙")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("767b")}}),i("p",[t._v("欣")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("易空小易")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("3429")}}),i("p",[t._v("国发")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("建明")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("fc4d")}}),i("p",[t._v("汪津合")])])]),i("div",{staticStyle:{display:"flex"}},[i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("博文")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("e4ad")}}),i("p",[t._v("慕智打印-兰兰")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("锦冰")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("953e")}}),i("p",[t._v("旭东")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("4047")}}),i("p",[t._v("俊奇")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("2f65")}}),i("p",[t._v("橘半")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("7966")}}),i("p",[t._v("pluvet")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("e7de")}}),i("p",[t._v("皇登攀")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("9af0")}}),i("p",[t._v("风格")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("SR")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("cebe")}}),i("p",[t._v("逆水行舟")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("LiuJL")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("6d0e")}}),i("p",[t._v("L")])])]),i("div",{staticStyle:{display:"flex"}},[i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("sunniberg")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("118d")}}),i("p",[t._v("在下青铜五")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("e0dd")}}),i("p",[t._v("木星二号")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("deea")}}),i("p",[t._v("阿晨")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("5b80")}}),i("p",[t._v("铁")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("8945")}}),i("p",[t._v("庆国")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("fc82")}}),i("p",[t._v("孟照星")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("497e")}}),i("p",[t._v("子豪")])]),i("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[i("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:e("f1e2")}}),i("p",[t._v("宏涛")])])])])}],A={},n=A,a=e("2877"),o=Object(a["a"])(n,c,r,!1,null,null,null);i["default"]=o.exports},4968:function(t,i,e){t.exports=e.p+"img/wechat.jpg"},"497e":function(t,i,e){t.exports=e.p+"img/子豪.jpg"},"4f23":function(t,i,e){t.exports=e.p+"img/敬明朗.jpg"},"5b80":function(t,i,e){t.exports=e.p+"img/default.png"},"5ea5":function(t,i,e){t.exports=e.p+"img/敏.jpg"},6065:function(t,i,e){t.exports=e.p+"img/moom.jpg"},"654b":function(t,i,e){t.exports=e.p+"img/Chris.jpg"},"6d0e":function(t,i,e){t.exports=e.p+"img/L.jpg"},"6ea0":function(t,i){t.exports="data:image/jpeg;base64,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"},7215:function(t,i,e){t.exports=e.p+"img/布林.jpg"},7476:function(t,i,e){t.exports=e.p+"img/继龙.jpg"},"767b":function(t,i,e){t.exports=e.p+"img/欣.jpg"},7966:function(t,i,e){t.exports=e.p+"img/pluvet.jpg"},"80ba":function(t,i,e){t.exports=e.p+"img/水车.jpg"},"84dd":function(t,i,e){t.exports=e.p+"img/ZXR.jpg"},8945:function(t,i,e){t.exports=e.p+"img/庆国.jpg"},"8d3e":function(t,i){t.exports="data:image/png;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAASqADAAQAAAABAAAASgAAAAD/wAARCABKAEoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwACAgICAgIDAgIDBQMDAwUGBQUFBQYIBgYGBgYICggICAgICAoKCgoKCgoKDAwMDAwMDg4ODg4PDw8PDw8PDw8P/9sAQwECAwMEBAQHBAQHEAsJCxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ/90ABAAF/9oADAMBAAIRAxEAPwD9m54Q2eKyZbf0FdnPae1ZUtvnPFfQxqnjSpnGzwYzisWaHr8v6V281qTlqyprXrkV2QrHHOmzg7m33dqxprfrx0rvLizHPGKxp7QDtXbGuc7ps4We2BOSKyZrYZOFruJrZTnjmsqa1UdRitVXIdI4yS1z2qv9lHpXVTW4qt5H1qvrBSpH/9D9t5db0ZmZVvIiV6guOKxr/X9BtEMk97EoHbcDXyZJ4ispv+PedJQcnKnOcdayG1g3jHyGBUc5B4H0r1o0vM8x1fI+kNX+I/huzVhC7XLAfwDj82wK4+f4t6SyFlspflGDkqMe3WvCbq5cKysRtJxkHPP4dq5e+u7yNCETcsZAJU7gSemMda6YqKMJTk+h7prHxgghjQ2dgSx6+a4AA9gAc1m6H8YtI1G4FnrUQsHkOEkB3Rk+5I+X6968SXSdV1ub7DbkeeFdyrHBIRSxxnvgV59d/ZZDmecoVLq4A4jCAEA89STirUopai9++h98rJbXcYmtpFlRuhUhh+lUJoVwRiviHwt4v1fTbgTaTcSqiSRxlQS0ZMhO3cORyAc554616f8A8LU8Urf3FjIInlgh8wALyxPIPXjIIJqHNrqdMVzLY98kjAPAqtsHp/n864Sb4i2FnpumX+oANFqSIY5IuV3E4IJ6DJyQMk4BFXh400MjPmnn/ZrD25p7I//R9W0nxx4f8J201rfRMZY5XZFOHJB5OMkZ5bP4VX8W+MNU/wCEgtbnQYEgFiiqbeQnypw7HDsBnBHOcdeK8Y8V+LvDMcUmoz2sb27uFWPAd94+UHzOCASMnAIHXB61paV4ifX2tdXlAjNzBGSoOQCkzJx37VtWlO6urBSSV9Lnew/Eu7hvnS20a4kvd7OI4o2kRVAPyggElSMEnGccYrK1n4t6ms2+6ifSy8SsIggGApIJw2CCSD16g5ryS38UfEGYajp3hG8ihktJ5i0scuy48skjBx0UDrjp3rmV+HfxS163n1Gc/a5ncMG84SMRgkknBJ49Bjil9cit2ckqb6H0d4R+MMGj6jPfYimneNwpnnCY81SDhSOpzzjIFU9GM+raVrp1XVdO0vyZIZJGeUNJOrk4RADg7eDkfSvkm+8Ea813BDqenzPcNKVdk+ZlUDqBkZ6dP0qrrNzD4T0qP7dYSxpKSo3n5t3IzjJAAABxmuR4y9vZy3N/YvlXMj6n0a40WOCZDrqA3M6ea8c/lDMAYBkXaSV2scEkZORyKx/EHiWwsLgXfh+9lnlWFxKzODuCDyxzjBBUZ46GvlnQ7HXNXWXU7HT2htFUSNNIGjTA4BUscH6DPrU0l81ncrBcIs8u07VMoIJPTGTjn0I/nTWIkpashr3bJH11oJ8a+JvD1pYrbGbTLYSSwBZY1IUAmPBySQWYkAgHJJB7D2bTrb4uyafayf2PZjdEhw4O7lR156+tfnLb6tqcJEau9m0UgA2ykDIOQAB3VgcEZArvY/jF8Uo41ji8TSbFAC/PngdOamWIbd7FQk0tUf/S+UJbnUP+EfljnckrIAAAF+XnsVj/AFBPrkcV2Hg/xnBpmh2C3WZZ44jGV4B/1zSZznOD0HeuT8Tstu+tWkAO22uSg9cB8dgf1zXjWpQ+JYb6PyEQ2OAWG8DdtJJBG7cTyeoHWuqr7yRx0nZM9EuPG82p3OqW+mIbHUfNm3SKBseJsgBwBnIzjI659q8y0nxN4/8ADOqpd+Gr67trlCVQxO5PAwQACSRjtjoa9X8PeH0j0S9v72xa2ullISdHyksJIcfIMkEKCSc57Yrz2HU5bnxE9tYzmDL7WnEQZoUPAC84A+vOMVyKS52rGzjon1Pqbw9rnxo8TeEbB2aJ9TVsx3LuEuBGTyX3AMDjI65xjBFT+IbLxyL9YvEFzpcccjNuWT92NoXIYnOck5IOMnvmrWi+bG8Fpb6mXuoVX5ivD4A5ypI57j1r0yDw9b+KNUtvtBQXCAgSswCrkcsSeAMZyT0xxXjY2NGD5kjWjzyfKz5o8ZSeJ9RaSxsCiC3gRWjgYCIfLkMCAQSeMnvjiuV8NWNtpGoG68UacdVlSRWiQOSlsyt1OCBJkAEKeAfXpXoPxfsbX4f+L08MC5aNJ2RgoJJJlTJIKZBGScDkDv0rhtOTTdC0hpPtErXTt5amQhiMkhCgBJBJJAIycHBwRWMKycLx2NZ80XZrY2dTfRrq8lWxhYlGMhkklczykAkAgnjgnHU9B0rz37SzfNFpk4Q8qN7cDt3rtbS6sI7mVNXtBdw6jEczSkpJFLGAo8sLnAC5ABJDfxA8YzWu4Nx+z2SiLPyAkZ29v4fSlGpyKyZjJXP/0/iCe+8/Rr+e5nE7vIrMxIYklgTyWfqTnjH581x1xYXuo38OrNqNuFQ7Tal2R8A9SSAmCxBxuzyT0FT6Dc3M+k3HnyvJl0+8xPdPWud1OSQWyYY8kd67+XY4ons/ivxnpc3hm10y6vlsp7SIAJBIspLn5QQQMcKCSM8ZArB8A+C9Iv1fUYtQa+mZgZDG7RhCeSGGcknvzz2r581Jm8695PDDH/fNexfCOaaPUzFHIypKgLqCQGODyR3NeFXg+WUoux2QlzNXPpeTW/DOhRpbaTLaJfgBUDnjpg5bOT0OB7VxWv8AxHa5iFtBcR+bE20mF2RS74AORu4A6ZIOffp8z/ESSQeKrnDEYU459q1PDgH2jR/dwT9QDiuOVBWvJ3C7i9D66u/ilrXijSbfQvFOj2OqvbDy7bUXgBubRQvUOCGIYAqRjnPJyTXJ6Zd3mkaw9/azi1EsLiQyxwlXiKYIEfzAkMAeASDyDkGuELv9gvn3HdsJznnPNZEf77wppM03zyYm+ZuTwxxya8VQtLlRUqkpJSZ2V1qOnsxWyjkBkDAPG4LjcMABSQoAJB4AJGBnOa8xk0vxWZGKahabSTjcF3Y9/n6+tOvby88u5HnyYVVwNx44HStq3jjNvESoJKr29q7IrlVjO1z/2Q=="},9465:function(t,i,e){t.exports=e.p+"img/小米.jpg"},"953e":function(t,i){t.exports="data:image/png;base64,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"},"9af0":function(t,i,e){t.exports=e.p+"img/风格.jpg"},a4f7:function(t,i,e){t.exports=e.p+"img/长沙利奥软件.jpg"},a930:function(t,i,e){t.exports=e.p+"img/仓鼠.jpg"},aaba:function(t,i,e){t.exports=e.p+"img/沐风牧草.jpg"},bba7:function(t,i,e){t.exports=e.p+"img/才镇.jpg"},bcae:function(t,i,e){t.exports=e.p+"img/千帆.jpg"},bf03:function(t,i,e){t.exports=e.p+"img/suka.jpg"},ca5d:function(t,i,e){t.exports=e.p+"img/乙.jpg"},cebe:function(t,i,e){t.exports=e.p+"img/逆水行舟.jpg"},d33b:function(t,i,e){t.exports=e.p+"img/蜉蝣撼大叔.jpg"},deea:function(t,i,e){t.exports=e.p+"img/阿晨.jpg"},e0dd:function(t,i,e){t.exports=e.p+"img/木星二号.jpg"},e4ad:function(t,i,e){t.exports=e.p+"img/慕智打印-兰兰.jpg"},e7de:function(t,i,e){t.exports=e.p+"img/皇登攀.jpg"},eac7:function(t,i,e){t.exports=e.p+"img/有希.jpg"},f1e2:function(t,i,e){t.exports=e.p+"img/宏涛.jpg"},f8ce:function(t,i,e){t.exports=e.p+"img/Think.jpg"},fc4d:function(t,i,e){t.exports=e.p+"img/汪津合.jpg"},fc82:function(t,i,e){t.exports=e.p+"img/孟照星.jpg"}}]); \ No newline at end of file diff --git a/dist/js/chunk-1ba6eabc.js b/dist/js/chunk-1ba6eabc.js new file mode 100644 index 00000000..6c95fb2f --- /dev/null +++ b/dist/js/chunk-1ba6eabc.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1ba6eabc"],{"076b":function(t,e,i){t.exports=i.p+"img/alipay.jpg"},"0b8c":function(t,e,i){t.exports=i.p+"img/南风.jpg"},"118d":function(t,e,i){t.exports=i.p+"img/在下青铜五.jpg"},2707:function(t,e,i){t.exports=i.p+"img/天清如愿.jpg"},"2cd3":function(t,e,i){t.exports=i.p+"img/志斌.jpg"},"2f65":function(t,e,i){t.exports=i.p+"img/橘半.jpg"},"30de":function(t,e,i){t.exports=i.p+"img/达仁科技.jpg"},"331d":function(t,e,i){t.exports=i.p+"img/张扬.png"},3429:function(t,e,i){t.exports=i.p+"img/国发.jpg"},"396b":function(t,e,i){t.exports=i.p+"img/小土渣的宇宙.jpeg"},"3e05":function(t,e,i){t.exports=i.p+"img/HaHN.jpg"},"3f65":function(t,e,i){t.exports=i.p+"img/花儿朵朵.jpg"},4e3:function(t,e,i){t.exports=i.p+"img/樊笼.jpg"},4047:function(t,e,i){t.exports=i.p+"img/俊奇.jpg"},4593:function(t,e,i){t.exports=i.p+"img/qp.jpg"},4623:function(t,e){t.exports="data:image/png;base64,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"},4968:function(t,e,i){t.exports=i.p+"img/wechat.jpg"},"497e":function(t,e,i){t.exports=i.p+"img/子豪.jpg"},"4f23":function(t,e,i){t.exports=i.p+"img/敬明朗.jpg"},"5b80":function(t,e,i){t.exports=i.p+"img/default.png"},"5ea5":function(t,e,i){t.exports=i.p+"img/敏.jpg"},6065:function(t,e,i){t.exports=i.p+"img/moom.jpg"},"654b":function(t,e,i){t.exports=i.p+"img/Chris.jpg"},"6d0e":function(t,e,i){t.exports=i.p+"img/L.jpg"},"6ea0":function(t,e){t.exports="data:image/jpeg;base64,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"},7215:function(t,e,i){t.exports=i.p+"img/布林.jpg"},7476:function(t,e,i){t.exports=i.p+"img/继龙.jpg"},"767b":function(t,e,i){t.exports=i.p+"img/欣.jpg"},7966:function(t,e,i){t.exports=i.p+"img/pluvet.jpg"},"7f29":function(t,e,i){"use strict";i.r(e);var n=function(){var t=this;t._self._c;return t._m(0)},r=[function(){var t=this,e=t._self._c;return e("div",[e("h1",[t._v("Introduction")]),e("p",[e("code",[t._v("simple-mind-map")]),t._v(" 【Chinese name: 思绪 mind map】 is a simple and powerful web mind map library, not dependent on any specific framework. Can help you quickly develop mind mapping products.")]),e("blockquote",[e("p",[t._v("If you just want to use mind mapping, you can also use the demo of this project as a regular online mind mapping tool. Click on the 【Online Demo】 in the upper right corner to start using it.")]),e("p",[t._v("Additionally, a client is provided for download, support "),e("code",[t._v("Windows")]),t._v("、"),e("code",[t._v("Mac")]),t._v(" and "),e("code",[t._v("Linux")]),t._v(", "),e("a",{attrs:{href:"/mind-map/#/doc/zh/client"}},[t._v("Click here to learn more")]),t._v("。")])]),e("h2",[t._v("Features")]),e("ul",[e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox252",checked:"true"}}),e("label",{attrs:{for:"checkbox252"}},[t._v("Pluggable architecture, in addition to core functions, other functions are provided as plugins, which can be used as needed to reduce packaging volume")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox253",checked:"true"}}),e("label",{attrs:{for:"checkbox253"}},[t._v("Support logical structure chart, mind map, Organizational chart, directory organization chart, timeline (horizontal and vertical), fishbone chart and other structures")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox254",checked:"true"}}),e("label",{attrs:{for:"checkbox254"}},[t._v("Built-in multiple themes, allowing for highly customizable styles, and supporting registration of new themes")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox255",checked:"true"}}),e("label",{attrs:{for:"checkbox255"}},[t._v("Node content supports text (regular text, rich text), images, icons, hyperlinks, notes, labels, summaries, and math formulas")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox256",checked:"true"}}),e("label",{attrs:{for:"checkbox256"}},[t._v("Nodes support drag and drop (drag and move, freely adjust), multiple node shapes, Support for expanding node content, and fully customize node content using DDM")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox257",checked:"true"}}),e("label",{attrs:{for:"checkbox257"}},[t._v("Support canvas dragging and scaling")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox258",checked:"true"}}),e("label",{attrs:{for:"checkbox258"}},[t._v("Supports two multi node selection methods: mouse button drag selection and Ctrl+left button selection")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox259",checked:"true"}}),e("label",{attrs:{for:"checkbox259"}},[t._v("Supoorts to export as ")]),e("code",[t._v("json")]),t._v("、"),e("code",[t._v("png")]),t._v("、"),e("code",[t._v("svg")]),t._v("、"),e("code",[t._v("pdf")]),t._v("、"),e("code",[t._v("markdown")]),t._v("、"),e("code",[t._v("xmind")]),t._v("、"),e("code",[t._v("txt")]),t._v(", support import from "),e("code",[t._v("json")]),t._v("、"),e("code",[t._v("xmind")]),t._v("、"),e("code",[t._v("markdown")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox260",checked:"true"}}),e("label",{attrs:{for:"checkbox260"}},[t._v("Support shortcut keys, forward and backward, correlation lines, search and replacement, small maps, watermarks, scrollbar, Hand drawn style, and rainbow lines")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox261",checked:"true"}}),e("label",{attrs:{for:"checkbox261"}},[t._v("Provide rich configurations to meet various scenarios and usage habits")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox262",checked:"true"}}),e("label",{attrs:{for:"checkbox262"}},[t._v("Support collaborative editing")])]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox263",checked:"true"}}),e("label",{attrs:{for:"checkbox263"}},[t._v("Support demonstration mode")])])]),e("p",[t._v("The official provides the following plugins, which can be introduced as needed (a certain function may not be effective because you did not introduce the corresponding plugin). Please refer to the documentation for specific usage methods:")]),e("blockquote",[e("p",[t._v("RichText(Node Rich Text Plugin)、Select(Mouse Multiple Selection Node Plugin)、Drag(Node drag plugin)、AssociativeLine(Associate Line Plugin)、Export(Export plugin)、KeyboardNavigation(Keyboard navigation plugin)、MiniMap(Mini Map Plugin)、Watermark(Watermark plugin)、TouchEvent(Mobile touch event support plugin)、NodeImgAdjust(Drag and adjust node image size plugin)、Search(Search plugin)、Painter(Node Format Brush Plugin)、Scrollbar(Scroll bar plugin)、Formula(Mathematical Formula Plugin)、Cooperate(Collaborative editing plugin)、RainbowLines(Rainbow Line Plugin)、Demonstrate(Demonstration mode plugin)、HandDrawnLikeStyle(Hand drawn style plugin)[收费]")])]),e("p",[t._v("Features that will not be implemented in this project:")]),e("blockquote",[e("p",[t._v("1.Free nodes, i.e. multiple root nodes;")]),e("p",[t._v("2.Continue adding nodes after the summary node;")]),e("p",[t._v("If you need the above features, this library may not meet your needs.")])]),e("h2",[t._v("Repository Catalog Introduction")]),e("p",[t._v("1."),e("code",[t._v("simple-mind-map")])]),e("p",[t._v("This is a mind map library that is framework-agnostic and can be used with frameworks such as Vue and React, or without a framework.")]),e("p",[t._v("2."),e("code",[t._v("web")])]),e("p",[t._v("This is an online mind map built using the "),e("code",[t._v("simple-mind-map")]),t._v(" library and based on "),e("code",[t._v("Vue2.x")]),t._v(" and "),e("code",[t._v("ElementUI")]),t._v(". Features include:")]),e("ul",[e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox264",checked:"true"}}),e("label",{attrs:{for:"checkbox264"}},[t._v("Toolbar, which supports inserting and deleting nodes, and editing node")]),t._v(" images, icons, hyperlinks, notes, tags, and summaries")]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox265",checked:"true"}}),e("label",{attrs:{for:"checkbox265"}},[t._v("Sidebar, with panels for basic style settings, node style settings,")]),t._v(" outline, theme selection, and structure selection")]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox266",checked:"true"}}),e("label",{attrs:{for:"checkbox266"}},[t._v("Import and export functionality; data is saved in the browser's local")]),t._v(" storage by default, but it also supports creating, opening, and editing local files on the computer directly")]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox267",checked:"true"}}),e("label",{attrs:{for:"checkbox267"}},[t._v("Right-click menu, which supports operations such as expanding, collapsing,")]),t._v(" and organizing layout")]),e("li",[e("input",{attrs:{type:"checkbox",id:"checkbox268",checked:"true"}}),e("label",{attrs:{for:"checkbox268"}},[t._v("Bottom bar, which supports node and word count statistics, switching")]),t._v(" between edit and read-only modes, zooming in and out, and switching to full screen, support mini map")])]),e("p",[t._v("Provide document page service.")]),e("p",[t._v("3."),e("code",[t._v("dist")])]),e("p",[t._v("The folder containing the packaged resources for the "),e("code",[t._v("web")]),t._v(" folder.")]),e("h2",[t._v("Related Articles")]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/6987711560521089061"}},[t._v("Technical Analysis of Web Mind Map Implementation (chi)")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7157681502506090510"}},[t._v("Only a hundred lines of code are needed to add local file operation capability to your Web page. Are you sure not to try?")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7199666255883927612"}},[t._v("When you press the direction key, how does the TV find the next focus")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7204854015463538744"}},[t._v("How to simulate the background image style of css in canvas")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7233012756314701884"}},[t._v("My first Electron application")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7276712861514170409"}},[t._v("Explore how to export HTML and SVG as images")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7287913415803764747"}},[t._v("How does the dom-to-image library convert HTML into images")])]),e("p",[e("a",{attrs:{href:"https://juejin.cn/post/7295669711533998117"}},[t._v("Two days to achieve collaborative editing of mind maps? It's really possible to use Yjs")])]),e("h2",[t._v("Special Note")]),e("p",[t._v("This project can be used for learning and reference. Please deeply experience whether it can meet your needs when using it for actual projects.")]),e("p",[t._v("This project may not have fully tested every function point, so there may be bugs. In addition, when the number of nodes is very large, there may be some performance issues. Because everyone can accept different levels of congestion, you can test the maximum number of nodes yourself. Generally speaking, within 500 nodes, it is more smooth, while over 1000 nodes have more noticeable lag.")]),e("p",[t._v("If you have suggestions or find bugs, you can submit "),e("a",{attrs:{href:"https://github.com/wanglin2/mind-map/issues"}},[t._v("issues")]),t._v(" here.")]),e("p",[t._v("The built-in themes and icons in the project part come from:")]),e("p",[e("a",{attrs:{href:"https://naotu.baidu.com/"}},[t._v("Baidu Mind Map")])]),e("p",[e("a",{attrs:{href:"https://www.zhixi.com/"}},[t._v("Zhixi Mind Map")])]),e("p",[t._v("Respect the copyright, and do not use the theme and icons directly for commercial projects.")]),e("h2",[t._v("Why not?")]),e("p",[t._v("1."),e("a",{attrs:{href:"https://www.zhixi.com/"}},[t._v("Zhixi")])]),e("p",[t._v("Zhixi is a free mind mapping product that supports multi end synchronization. The UI design is beautiful and the features are complete, but it is not open source, so it can only be used as a user and cannot be used in your project.")]),e("p",[t._v("There are many other online mind mapping products similar to Zhixi, such as "),e("a",{attrs:{href:"https://gitmind.cn/"}},[t._v("GitMind")]),t._v("、"),e("a",{attrs:{href:"http://www.mindline.cn/"}},[t._v("MindLine")]),t._v("、"),e("a",{attrs:{href:"https://www.mindmeister.com/zh"}},[t._v("MinMeister")]),t._v("、"),e("a",{attrs:{href:"https://mubu.com/"}},[t._v("Mubu")]),t._v(" and so on, There are many searches on search engines, but these products either require fees or are developed by small companies, and their stability and sustainability cannot be guaranteed. Of course, the most crucial thing is that they are not open-source.")]),e("p",[t._v("2."),e("a",{attrs:{href:"https://github.com/fex-team/kityminder-core"}},[t._v("kityminder-core")])]),e("p",[e("code",[t._v("kityminder-core")]),t._v(" is an open source brain mapping tool developed by Baidu. It has powerful functions and good performance, but it is no longer maintained. Therefore, the code is relatively old, and the interface beauty is relatively ordinary. In addition, bugs can only be fixed by yourself, and the functions can only be developed by yourself. It has high requirements for front-end development capabilities.")]),e("p",[t._v("3."),e("a",{attrs:{href:"https://github.com/hizzgdev/jsmind"}},[t._v("jsmind")]),t._v("、"),e("a",{attrs:{href:"https://github.com/ssshooter/mind-elixir-core"}},[t._v("Mind-elixir")]),t._v("、"),e("a",{attrs:{href:"https://github.com/ondras/my-mind"}},[t._v("my-mind")]),t._v("、"),e("a",{attrs:{href:"https://github.com/awehook/blink-mind"}},[t._v("blink-mind")]),t._v("、"),e("a",{attrs:{href:"https://github.com/luvsic3/remind"}},[t._v("remind")]),t._v("、"),e("a",{attrs:{href:"https://github.com/hellowuxin/vue3-mindmap"}},[t._v("vue3-mindmap")]),t._v("、"),e("a",{attrs:{href:"https://github.com/zyascend/ZMindMap"}},[t._v("ZMindMap")]),t._v("、"),e("a",{attrs:{href:"https://github.com/RockyRen/mindmaptree"}},[t._v("mindmaptree")]),t._v("...")]),e("p",[t._v("These open-source mind maps are also good, each with its own characteristics, but they also have certain drawbacks, such as stopping updates, average interface aesthetics, less functionality, relying on a certain framework, and so on.")]),e("p",[t._v("In summary, in open-source mind maps, it is difficult to find a better choice than "),e("code",[t._v("simple-mind-map")]),t._v(". Of course, "),e("code",[t._v("simple-mind-map")]),t._v(" is far from being the best, and it also has many shortcomings, as you saw in the previous [special note]. However, "),e("code",[t._v("simple-mind-map")]),t._v(" has always been in a fast iteration process, and we welcome you to join and improve it together.")]),e("h2",[t._v("Browser Compatibility")]),e("p",[t._v("We recommend using the latest version of the "),e("code",[t._v("Chrome")]),t._v(" browser.")]),e("p",[t._v("Limited testing situation:")]),e("p",[t._v("Normal operation: "),e("code",[t._v("360")]),t._v(" extreme speed browser(v13.5.2036.0)、"),e("code",[t._v("opera")]),t._v(" browser(v71.0.3770.284)、"),e("code",[t._v("Firefox")]),t._v("(v98.0.2).")]),e("p",[t._v("Unsupported: "),e("code",[t._v("IE")]),t._v(" browser.")]),e("h2",[t._v("License")]),e("p",[e("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/LICENSE"}},[t._v("MIT")]),t._v(". You can use it for commercial purposes without retaining the copyright statement of 'mind-map'. If you don't want to keep it, you can contact the author.")]),e("h2",[t._v("Invite the author to a cup of coffee")]),e("p",[t._v("Open source is not easy. If this project is helpful to you, you can invite the author to have a cup of coffee~")]),e("blockquote",[e("p",[t._v("Please note the 【mind map】 for transfer.")])]),e("img",{staticStyle:{width:"300px"},attrs:{src:i("076b")}}),e("img",{staticStyle:{width:"300px"},attrs:{src:i("4968")}}),e("div",{staticStyle:{display:"flex"}},[e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("f8ce")}}),e("p",[t._v("Think")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("2cd3")}}),e("p",[t._v("志斌")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("396b")}}),e("p",[t._v("小土渣的宇宙")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("4593")}}),e("p",[t._v("qp")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("84dd")}}),e("p",[t._v("ZXR")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("3f65")}}),e("p",[t._v("花儿朵朵")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("bf03")}}),e("p",[t._v("suka")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("654b")}}),e("p",[t._v("Chris")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("80ba")}}),e("p",[t._v("水车")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("a930")}}),e("p",[t._v("仓鼠")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("bcae")}}),e("p",[t._v("千帆")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("bba7")}}),e("p",[t._v("才镇")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("9465")}}),e("p",[t._v("小米bbᯤ²ᴳ")])])]),e("div",{staticStyle:{display:"flex"}},[e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("6ea0")}}),e("p",[t._v("*棐")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("Luke")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("7215")}}),e("p",[t._v("布林")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("0b8c")}}),e("p",[t._v("南风")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("d33b")}}),e("p",[t._v("蜉蝣撼大叔")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("ca5d")}}),e("p",[t._v("乙")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5ea5")}}),e("p",[t._v("敏")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("aaba")}}),e("p",[t._v("沐风牧草")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("eac7")}}),e("p",[t._v("有希")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("4000")}}),e("p",[t._v("樊笼")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("30de")}}),e("p",[t._v("达仁科技")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("8d3e")}}),e("p",[t._v("小逗比")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("2707")}}),e("p",[t._v("天清如愿")])])]),e("div",{staticStyle:{display:"flex"}},[e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("4f23")}}),e("p",[t._v("敬明朗")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("飞箭")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("4623")}}),e("p",[t._v("戚永峰")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("6065")}}),e("p",[t._v("moom")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("331d")}}),e("p",[t._v("张扬")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("a4f7")}}),e("p",[t._v("长沙利奥软件")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("3e05")}}),e("p",[t._v("HaHN")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("7476")}}),e("p",[t._v("继龙")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("767b")}}),e("p",[t._v("欣")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("易空小易")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("3429")}}),e("p",[t._v("国发")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("建明")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("fc4d")}}),e("p",[t._v("汪津合")])])]),e("div",{staticStyle:{display:"flex"}},[e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("博文")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("e4ad")}}),e("p",[t._v("慕智打印-兰兰")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("锦冰")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("953e")}}),e("p",[t._v("旭东")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("4047")}}),e("p",[t._v("俊奇")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("2f65")}}),e("p",[t._v("橘半")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("7966")}}),e("p",[t._v("pluvet")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("e7de")}}),e("p",[t._v("皇登攀")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("9af0")}}),e("p",[t._v("风格")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("SR")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("cebe")}}),e("p",[t._v("逆水行舟")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("LiuJL")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("6d0e")}}),e("p",[t._v("L")])])]),e("div",{staticStyle:{display:"flex"}},[e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("sunniberg")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("118d")}}),e("p",[t._v("在下青铜五")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("e0dd")}}),e("p",[t._v("木星二号")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("deea")}}),e("p",[t._v("阿晨")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("5b80")}}),e("p",[t._v("铁")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("8945")}}),e("p",[t._v("庆国")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("fc82")}}),e("p",[t._v("孟照星")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("497e")}}),e("p",[t._v("子豪")])]),e("div",{staticStyle:{display:"flex","flex-direction":"column","align-items":"center",width:"fit-content",margin:"5px"}},[e("img",{staticStyle:{width:"50px",height:"50px","object-fit":"cover","border-radius":"50%"},attrs:{src:i("f1e2")}}),e("p",[t._v("宏涛")])])])])}],o={},a=o,c=i("2877"),s=Object(c["a"])(a,n,r,!1,null,null,null);e["default"]=s.exports},"80ba":function(t,e,i){t.exports=i.p+"img/水车.jpg"},"84dd":function(t,e,i){t.exports=i.p+"img/ZXR.jpg"},8945:function(t,e,i){t.exports=i.p+"img/庆国.jpg"},"8d3e":function(t,e){t.exports="data:image/png;base64,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"},9465:function(t,e,i){t.exports=i.p+"img/小米.jpg"},"953e":function(t,e){t.exports="data:image/png;base64,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"},"9af0":function(t,e,i){t.exports=i.p+"img/风格.jpg"},a4f7:function(t,e,i){t.exports=i.p+"img/长沙利奥软件.jpg"},a930:function(t,e,i){t.exports=i.p+"img/仓鼠.jpg"},aaba:function(t,e,i){t.exports=i.p+"img/沐风牧草.jpg"},bba7:function(t,e,i){t.exports=i.p+"img/才镇.jpg"},bcae:function(t,e,i){t.exports=i.p+"img/千帆.jpg"},bf03:function(t,e,i){t.exports=i.p+"img/suka.jpg"},ca5d:function(t,e,i){t.exports=i.p+"img/乙.jpg"},cebe:function(t,e,i){t.exports=i.p+"img/逆水行舟.jpg"},d33b:function(t,e,i){t.exports=i.p+"img/蜉蝣撼大叔.jpg"},deea:function(t,e,i){t.exports=i.p+"img/阿晨.jpg"},e0dd:function(t,e,i){t.exports=i.p+"img/木星二号.jpg"},e4ad:function(t,e,i){t.exports=i.p+"img/慕智打印-兰兰.jpg"},e7de:function(t,e,i){t.exports=i.p+"img/皇登攀.jpg"},eac7:function(t,e,i){t.exports=i.p+"img/有希.jpg"},f1e2:function(t,e,i){t.exports=i.p+"img/宏涛.jpg"},f8ce:function(t,e,i){t.exports=i.p+"img/Think.jpg"},fc4d:function(t,e,i){t.exports=i.p+"img/汪津合.jpg"},fc82:function(t,e,i){t.exports=i.p+"img/孟照星.jpg"}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0aa978.js b/dist/js/chunk-2d0aa978.js index 3742450c..0514e847 100644 --- a/dist/js/chunk-2d0aa978.js +++ b/dist/js/chunk-2d0aa978.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0aa978"],{1256:function(s,v,a){"use strict";a.r(v);var t=function(){var s=this;s._self._c;return s._m(0)},_=[function(){var s=this,v=s._self._c;return v("div",[v("h1",[s._v("Export 插件")]),v("p",[v("code",[s._v("Export")]),s._v("插件提供导出的功能。")]),v("h2",[s._v("注册")]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Export "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Export.js'")]),s._v("\n"),v("span",{staticClass:"hljs-comment"},[s._v("// import Export from 'simple-mind-map/src/Export.js' v0.6.0以下版本使用该路径")]),s._v("\n\nMindMap.usePlugin(Export)\n")])]),v("p",[s._v("注册完且实例化"),v("code",[s._v("MindMap")]),s._v("后可通过"),v("code",[s._v("mindMap.doExport")]),s._v("获取到该实例。")]),v("h2",[s._v("方法")]),v("p",[s._v("所有导出的方法都是异步方法,返回一个"),v("code",[s._v("Promise")]),s._v("实例,你可以使用"),v("code",[s._v("then")]),s._v("方法获取数据,或者使用"),v("code",[s._v("async await")]),s._v("函数获取:")]),v("pre",{staticClass:"hljs"},[v("code",[s._v("mindMap.doExport.png().then("),v("span",{staticClass:"hljs-function"},[s._v("("),v("span",{staticClass:"hljs-params"},[s._v("data")]),s._v(") =>")]),s._v(" {\n "),v("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n})\n\n"),v("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" "),v("span",{staticClass:"hljs-keyword"},[s._v("export")]),s._v(" = "),v("span",{staticClass:"hljs-keyword"},[s._v("async")]),s._v(" () => {\n "),v("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = "),v("span",{staticClass:"hljs-keyword"},[s._v("await")]),s._v(" mindMap.doExport.png()\n "),v("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n}\n")])]),v("p",[s._v("返回的数据为"),v("code",[s._v("data:url")]),s._v("格式的,你可以创建一个"),v("code",[s._v("a")]),s._v("标签来触发下载:")]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" a = "),v("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),v("span",{staticClass:"hljs-string"},[s._v("'a'")]),s._v(")\na.href = "),v("span",{staticClass:"hljs-string"},[s._v("'xxx.png'")]),v("span",{staticClass:"hljs-comment"},[s._v("// .png、.svg、.pdf、.md、.json、.smm")]),s._v("\na.download = "),v("span",{staticClass:"hljs-string"},[s._v("'xxx'")]),s._v("\na.click()\n")])]),v("h3",[s._v("png(name, transparent = false, checkRotate, compress)")]),v("blockquote",[v("p",[s._v("v0.7.0以下版本为: png(name, transparent = false, rotateWhenWidthLongerThenHeight)")])]),v("ul",[v("li",[v("p",[v("code",[s._v("name")]),s._v(":名称,可不传")])]),v("li",[v("p",[v("code",[s._v("transparent")]),s._v(":v0.5.7+,指定导出图片的背景是否是透明的")])]),v("li",[v("p",[v("code",[s._v("rotateWhenWidthLongerThenHeight")]),s._v(": v0.6.15+,v0.7.0+已废弃,Boolean, false, 是否在图片宽比高长时自动旋转90度")])]),v("li",[v("p",[v("code",[s._v("checkRotate")]),s._v(":v0.7.0+,(v0.9.2+已废弃),Function,可以传递一个函数,接收图片的宽度和高度两个参数,返回true或false,true代表图片需要旋转90度")])]),v("li",[v("p",[v("code",[s._v("compress")]),s._v(":v0.8.1+,(v0.9.2+已废弃),null | { width, height }, 压缩图片的参数,某些情况下导出的图片长宽可能非常大,如果希望减小,那么可以通过该参数来控制,宽或高只提供一个即可,会按比例缩放")])])]),v("p",[s._v("导出为"),v("code",[s._v("png")]),s._v("。")]),v("h3",[s._v("svg(name, plusCssText)")]),v("ul",[v("li",[v("p",[v("code",[s._v("name")]),s._v(":"),v("code",[s._v("svg")]),s._v("标题")])]),v("li",[v("p",[v("code",[s._v("plusCssText")]),s._v(":v0.4.0+,(v0.6.16+已去除该参数,改为在实例化时通过"),v("code",[s._v("resetCss")]),s._v("配置传入),当开启了节点富文本编辑,且"),v("code",[s._v("domToImage")]),s._v("传了"),v("code",[s._v("false")]),s._v("时,可以添加附加的"),v("code",[s._v("css")]),s._v("样式,如果"),v("code",[s._v("svg")]),s._v("中存在"),v("code",[s._v("dom")]),s._v("节点,想要设置一些针对节点的样式可以通过这个参数传入,比如:")])])]),v("pre",{staticClass:"hljs"},[v("code",[s._v("svg(\n "),v("span",{staticClass:"hljs-string"},[s._v("''")]),s._v(", \n "),v("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", \n "),v("span",{staticClass:"hljs-string"},[s._v("`* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }`")]),s._v("\n)\n")])]),v("p",[s._v("导出为"),v("code",[s._v("svg")]),s._v("。")]),v("h3",[s._v("pdf(name, transparent = false)")]),v("blockquote",[v("p",[s._v("v0.8.1:pdf(name, useMultiPageExport, maxImageWidth)")])]),v("blockquote",[v("p",[s._v("v0.2.1+")])]),v("ul",[v("li",[v("p",[v("code",[s._v("name")]),s._v(":文件名称")])]),v("li",[v("p",[v("code",[s._v("useMultiPageExport")]),s._v(": v0.6.15+,(v0.9.2+已废弃),Boolean, false, 是否多页导出,默认为单页")])]),v("li",[v("p",[v("code",[s._v("maxImageWidth")]),s._v(":v0.8.1+,(v0.9.2+已废弃),null | Number,默认为a4纸的宽度的2倍, 压缩图片的参数,某些情况下图片的长宽可能非常大,导致pdf体积也非常大,所以如果希望减小体积,那么可以通过该参数来控制图片的最大宽度")])]),v("li",[v("p",[v("code",[s._v("transparent")]),s._v(":v0.9.2+,Boolean,默认为false,指定导出图片的背景是否是透明的")])])]),v("p",[s._v("导出为"),v("code",[s._v("pdf")]),s._v(",")]),v("blockquote",[v("p",[s._v("v0.9.3之前的版本这个方法不会返回数据,会直接触发下载。")])]),v("blockquote",[v("p",[s._v("v0.6.0版本以后,需要额外注册一个ExportPDF插件")])]),v("blockquote",[v("p",[s._v("内部导出pdf使用的是pdf-lib库将图片转为pdf,目前当节点数量比较大时导出pdf可能会丢失部分内容,所以建议有能力的开发者自行实现pdf的导出功能,如果项目中有后端开发,也可以寻求后端开发人员的支持。")])]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" ExportPDF "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/ExportPDF.js'")]),s._v("\nMindMap.usePlugin(ExportPDF)\n")])]),v("h3",[s._v("json(name, withConfig)")]),v("p",[v("code",[s._v("name")]),s._v(":暂时没有用处,传空字符串即可")]),v("p",[v("code",[s._v("withConfig``:Boolean")]),s._v(", 默认为"),v("code",[s._v("true")]),s._v(",数据中是否包含配置,否则为纯思维导图节点数据")]),v("p",[s._v("返回"),v("code",[s._v("json")]),s._v("数据。")]),v("h3",[s._v("smm(name, withConfig)")]),v("p",[v("code",[s._v("simple-mind-map")]),s._v("自定义的文件格式,其实就是"),v("code",[s._v("json")]),s._v(",和"),v("code",[s._v("json")]),s._v("方法返回的数据一模一样。")]),v("h3",[s._v("md()")]),v("blockquote",[v("p",[s._v("v0.4.7+")])]),v("p",[s._v("导出"),v("code",[s._v("markdown")]),s._v("文件。")]),v("h3",[s._v("getSvgData()")]),v("p",[s._v("获取"),v("code",[s._v("svg")]),s._v("数据,异步方法,返回一个对象:")]),v("pre",{staticClass:"hljs"},[v("code",[s._v("{\n node"),v("span",{staticClass:"hljs-comment"},[s._v("// svg节点")]),s._v("\n str"),v("span",{staticClass:"hljs-comment"},[s._v("// svg字符串")]),s._v("\n}\n")])]),v("h3",[s._v("xmind(name)")]),v("blockquote",[v("p",[s._v("v0.6.6+,需要额外注册一个ExportXMind插件")])]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" ExportXMind "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/ExportXMind.js'")]),s._v("\nMindMap.usePlugin(ExportXMind)\n")])]),v("p",[s._v("导出为"),v("code",[s._v("xmind")]),s._v("文件类型,异步方法,返回一个"),v("code",[s._v("Promise")]),s._v("实例,返回的数据为一个"),v("code",[s._v("zip")]),s._v("压缩包的"),v("code",[s._v("data:url")]),s._v("数据,可以直接下载。")]),v("h3",[s._v("txt()")]),v("blockquote",[v("p",[s._v("v0.9.8+")])]),v("p",[s._v("导出"),v("code",[s._v("txt")]),s._v("文件。")])])}],n={},e=n,o=a("2877"),p=Object(o["a"])(e,t,_,!1,null,null,null);v["default"]=p.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0aa978"],{1256:function(s,v,a){"use strict";a.r(v);var t=function(){var s=this;s._self._c;return s._m(0)},n=[function(){var s=this,v=s._self._c;return v("div",[v("h1",[s._v("Export 插件")]),v("p",[v("code",[s._v("Export")]),s._v("插件提供导出的功能。")]),v("h2",[s._v("注册")]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Export "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Export.js'")]),s._v("\n"),v("span",{staticClass:"hljs-comment"},[s._v("// import Export from 'simple-mind-map/src/Export.js' v0.6.0以下版本使用该路径")]),s._v("\n\nMindMap.usePlugin(Export)\n")])]),v("p",[s._v("注册完且实例化"),v("code",[s._v("MindMap")]),s._v("后可通过"),v("code",[s._v("mindMap.doExport")]),s._v("获取到该实例。")]),v("h2",[s._v("方法")]),v("p",[s._v("所有导出的方法都是异步方法,返回一个"),v("code",[s._v("Promise")]),s._v("实例,你可以使用"),v("code",[s._v("then")]),s._v("方法获取数据,或者使用"),v("code",[s._v("async await")]),s._v("函数获取:")]),v("pre",{staticClass:"hljs"},[v("code",[s._v("mindMap.doExport.png().then("),v("span",{staticClass:"hljs-function"},[s._v("("),v("span",{staticClass:"hljs-params"},[s._v("data")]),s._v(") =>")]),s._v(" {\n "),v("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n})\n\n"),v("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" "),v("span",{staticClass:"hljs-keyword"},[s._v("export")]),s._v(" = "),v("span",{staticClass:"hljs-keyword"},[s._v("async")]),s._v(" () => {\n "),v("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = "),v("span",{staticClass:"hljs-keyword"},[s._v("await")]),s._v(" mindMap.doExport.png()\n "),v("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n}\n")])]),v("p",[s._v("返回的数据为"),v("code",[s._v("data:url")]),s._v("格式的,你可以创建一个"),v("code",[s._v("a")]),s._v("标签来触发下载:")]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" a = "),v("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),v("span",{staticClass:"hljs-string"},[s._v("'a'")]),s._v(")\na.href = "),v("span",{staticClass:"hljs-string"},[s._v("'xxx.png'")]),v("span",{staticClass:"hljs-comment"},[s._v("// .png、.svg、.pdf、.md、.json、.smm")]),s._v("\na.download = "),v("span",{staticClass:"hljs-string"},[s._v("'xxx'")]),s._v("\na.click()\n")])]),v("h3",[s._v("png(name, transparent = false, node = null)")]),v("blockquote",[v("p",[s._v("v0.9.2以下版本为:png(name, transparent = false, checkRotate, compress)")])]),v("blockquote",[v("p",[s._v("v0.7.0以下版本为: png(name, transparent = false, rotateWhenWidthLongerThenHeight)")])]),v("ul",[v("li",[v("p",[v("code",[s._v("name")]),s._v(":名称,可不传")])]),v("li",[v("p",[v("code",[s._v("transparent")]),s._v(":v0.5.7+,指定导出图片的背景是否是透明的")])]),v("li",[v("p",[v("code",[s._v("rotateWhenWidthLongerThenHeight")]),s._v(": v0.6.15+,v0.7.0+已废弃,Boolean, false, 是否在图片宽比高长时自动旋转90度")])]),v("li",[v("p",[v("code",[s._v("checkRotate")]),s._v(":v0.7.0+,(v0.9.2+已废弃),Function,可以传递一个函数,接收图片的宽度和高度两个参数,返回true或false,true代表图片需要旋转90度")])]),v("li",[v("p",[v("code",[s._v("compress")]),s._v(":v0.8.1+,(v0.9.2+已废弃),null | { width, height }, 压缩图片的参数,某些情况下导出的图片长宽可能非常大,如果希望减小,那么可以通过该参数来控制,宽或高只提供一个即可,会按比例缩放")])]),v("li",[v("p",[v("code",[s._v("node")]),s._v(":v0.9.11+,节点实例,如果传了,那么会仅导出该节点的内容;")])])]),v("p",[s._v("导出为"),v("code",[s._v("png")]),s._v("。")]),v("h3",[s._v("svg(name, plusCssText)")]),v("ul",[v("li",[v("p",[v("code",[s._v("name")]),s._v(":"),v("code",[s._v("svg")]),s._v("标题")])]),v("li",[v("p",[v("code",[s._v("plusCssText")]),s._v(":v0.4.0+,(v0.6.16+已去除该参数,改为在实例化时通过"),v("code",[s._v("resetCss")]),s._v("配置传入),当开启了节点富文本编辑,且"),v("code",[s._v("domToImage")]),s._v("传了"),v("code",[s._v("false")]),s._v("时,可以添加附加的"),v("code",[s._v("css")]),s._v("样式,如果"),v("code",[s._v("svg")]),s._v("中存在"),v("code",[s._v("dom")]),s._v("节点,想要设置一些针对节点的样式可以通过这个参数传入,比如:")])])]),v("pre",{staticClass:"hljs"},[v("code",[s._v("svg(\n "),v("span",{staticClass:"hljs-string"},[s._v("''")]),s._v(", \n "),v("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", \n "),v("span",{staticClass:"hljs-string"},[s._v("`* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }`")]),s._v("\n)\n")])]),v("p",[s._v("导出为"),v("code",[s._v("svg")]),s._v("。")]),v("h3",[s._v("pdf(name, transparent = false)")]),v("blockquote",[v("p",[s._v("v0.8.1:pdf(name, useMultiPageExport, maxImageWidth)")])]),v("blockquote",[v("p",[s._v("v0.2.1+")])]),v("ul",[v("li",[v("p",[v("code",[s._v("name")]),s._v(":文件名称")])]),v("li",[v("p",[v("code",[s._v("useMultiPageExport")]),s._v(": v0.6.15+,(v0.9.2+已废弃),Boolean, false, 是否多页导出,默认为单页")])]),v("li",[v("p",[v("code",[s._v("maxImageWidth")]),s._v(":v0.8.1+,(v0.9.2+已废弃),null | Number,默认为a4纸的宽度的2倍, 压缩图片的参数,某些情况下图片的长宽可能非常大,导致pdf体积也非常大,所以如果希望减小体积,那么可以通过该参数来控制图片的最大宽度")])]),v("li",[v("p",[v("code",[s._v("transparent")]),s._v(":v0.9.2+,Boolean,默认为false,指定导出图片的背景是否是透明的")])])]),v("p",[s._v("导出为"),v("code",[s._v("pdf")]),s._v(",")]),v("blockquote",[v("p",[s._v("v0.9.3之前的版本这个方法不会返回数据,会直接触发下载。")])]),v("blockquote",[v("p",[s._v("v0.6.0版本以后,需要额外注册一个ExportPDF插件")])]),v("blockquote",[v("p",[s._v("内部导出pdf使用的是pdf-lib库将图片转为pdf,目前当节点数量比较大时导出pdf可能会丢失部分内容,所以建议有能力的开发者自行实现pdf的导出功能,如果项目中有后端开发,也可以寻求后端开发人员的支持。")])]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" ExportPDF "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/ExportPDF.js'")]),s._v("\nMindMap.usePlugin(ExportPDF)\n")])]),v("h3",[s._v("json(name, withConfig)")]),v("p",[v("code",[s._v("name")]),s._v(":暂时没有用处,传空字符串即可")]),v("p",[v("code",[s._v("withConfig``:Boolean")]),s._v(", 默认为"),v("code",[s._v("true")]),s._v(",数据中是否包含配置,否则为纯思维导图节点数据")]),v("p",[s._v("返回"),v("code",[s._v("json")]),s._v("数据。")]),v("h3",[s._v("smm(name, withConfig)")]),v("p",[v("code",[s._v("simple-mind-map")]),s._v("自定义的文件格式,其实就是"),v("code",[s._v("json")]),s._v(",和"),v("code",[s._v("json")]),s._v("方法返回的数据一模一样。")]),v("h3",[s._v("md()")]),v("blockquote",[v("p",[s._v("v0.4.7+")])]),v("p",[s._v("导出"),v("code",[s._v("markdown")]),s._v("文件。")]),v("h3",[s._v("getSvgData(node)")]),v("p",[v("code",[s._v("node")]),s._v(": v0.9.11+, 节点实例,如果传了,那么会返回一个"),v("code",[s._v("clipData")]),s._v("对象,代表从完整的图片中裁剪出该节点区域的位置坐标数据;")]),v("p",[s._v("获取"),v("code",[s._v("svg")]),s._v("数据,异步方法,返回一个对象:")]),v("pre",{staticClass:"hljs"},[v("code",[s._v("{\n node,"),v("span",{staticClass:"hljs-comment"},[s._v("// svg节点")]),s._v("\n str,"),v("span",{staticClass:"hljs-comment"},[s._v("// svg字符串")]),s._v("\n clipData\n}\n")])]),v("h3",[s._v("xmind(name)")]),v("blockquote",[v("p",[s._v("v0.6.6+,需要额外注册一个ExportXMind插件")])]),v("pre",{staticClass:"hljs"},[v("code",[v("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" ExportXMind "),v("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),v("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/ExportXMind.js'")]),s._v("\nMindMap.usePlugin(ExportXMind)\n")])]),v("p",[s._v("导出为"),v("code",[s._v("xmind")]),s._v("文件类型,异步方法,返回一个"),v("code",[s._v("Promise")]),s._v("实例,返回的数据为一个"),v("code",[s._v("zip")]),s._v("压缩包的"),v("code",[s._v("data:url")]),s._v("数据,可以直接下载。")]),v("h3",[s._v("txt()")]),v("blockquote",[v("p",[s._v("v0.9.8+")])]),v("p",[s._v("导出"),v("code",[s._v("txt")]),s._v("文件。")])])}],_={},e=_,o=a("2877"),p=Object(o["a"])(e,t,n,!1,null,null,null);v["default"]=p.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0ab10b.js b/dist/js/chunk-2d0ab10b.js index 406a607a..ad88ea17 100644 --- a/dist/js/chunk-2d0ab10b.js +++ b/dist/js/chunk-2d0ab10b.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ab10b"],{"144f":function(e,t,a){"use strict";a.r(t);var s=function(){var e=this;e._self._c;return e._m(0)},o=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("Utility Methods")]),t("h2",[e._v("Base utility Methods")]),t("p",[e._v("Reference:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" {walk, ...} "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/utils'")]),e._v("\n")])]),t("h3",[e._v("Methods")]),t("h4",[e._v("resizeImgSizeByOriginRatio(width, height, newWidth, newHeight)")]),t("blockquote",[t("p",[e._v("v0.6.5+")])]),t("p",[t("code",[e._v("width")]),e._v(": The original width of the image")]),t("p",[t("code",[e._v("height")]),e._v(":The original height of the image")]),t("p",[t("code",[e._v("newWidth")]),e._v(":Width to zoom in to")]),t("p",[t("code",[e._v("newHeight")]),e._v(":Height to zoom in to")]),t("p",[e._v("Scale the image proportionally. Zoom to the specified size of "),t("code",[e._v("newWidth")]),e._v(" and "),t("code",[e._v("newHeight")]),e._v(" while maintaining the original aspect ratio of the image.")]),t("h4",[e._v("walk(root, parent, beforeCallback, afterCallback, isRoot, layerIndex = 0, index = 0)")]),t("p",[e._v("Depth-first traversal of a tree")]),t("p",[t("code",[e._v("root")]),e._v(": the root node of the tree to be traversed")]),t("p",[t("code",[e._v("parent")]),e._v(": parent node")]),t("p",[t("code",[e._v("beforeCallback")]),e._v(": preorder traversal callback function, callback parameters are: root, parent, isRoot, layerIndex, index")]),t("p",[t("code",[e._v("afterCallback")]),e._v(": postorder traversal callback function, callback parameters are: root, parent, isRoot, layerIndex, index")]),t("p",[t("code",[e._v("isRoot")]),e._v(": whether it is the root node")]),t("p",[t("code",[e._v("layerIndex")]),e._v(": node level")]),t("p",[t("code",[e._v("index")]),e._v(": index of the node among its siblings")]),t("p",[e._v("Example:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("walk(tree, "),t("span",{staticClass:"hljs-literal"},[e._v("null")]),e._v(", "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {}, "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {}, "),t("span",{staticClass:"hljs-literal"},[e._v("false")]),e._v(", "),t("span",{staticClass:"hljs-number"},[e._v("0")]),e._v(", "),t("span",{staticClass:"hljs-number"},[e._v("0")]),e._v(");\n")])]),t("h4",[e._v("bfsWalk(root, callback)")]),t("p",[e._v("Breadth-first traversal of a tree")]),t("h4",[e._v("resizeImgSize(width, height, maxWidth, maxHeight)")]),t("p",[e._v("Resize image size")]),t("p",[t("code",[e._v("width")]),e._v(": original width of the image")]),t("p",[t("code",[e._v("height")]),e._v(": original height of the image")]),t("p",[t("code",[e._v("maxWidth")]),e._v(": the width to resize to")]),t("p",[t("code",[e._v("maxHeight")]),e._v(": the height to resize to")]),t("p",[t("code",[e._v("maxWidth")]),e._v(" and "),t("code",[e._v("maxHeight")]),e._v(" can both be passed, or only one of them can be passed")]),t("h4",[e._v("resizeImg(imgUrl, maxWidth, maxHeight)")]),t("p",[e._v("Resize image, internally loads the image first, then calls the "),t("code",[e._v("resizeImgSize")]),e._v(" method, and returns a "),t("code",[e._v("promise")])]),t("h4",[e._v("simpleDeepClone(data)")]),t("p",[e._v("Extremely simple deep copy method, can only be used for objects that are all basic data, otherwise it will throw an error")]),t("h4",[e._v("copyRenderTree(tree, root)")]),t("p",[e._v("Copy render tree data, example:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("copyRenderTree({}, "),t("span",{staticClass:"hljs-built_in"},[e._v("this")]),e._v(".mindMap.renderer.renderTree);\n")])]),t("h4",[e._v("copyNodeTree(tree, root, removeActiveState, keepId)")]),t("ul",[t("li",[t("p",[t("code",[e._v("removeActiveState")]),e._v(": "),t("code",[e._v("Boolean")]),e._v(", default is "),t("code",[e._v("false")]),e._v(", Whether to remove the active state of the node")])]),t("li",[t("p",[t("code",[e._v("removeId")]),e._v(":v0.7.3-fix.1+, Is remove the uid from the node data, default is "),t("code",[e._v("true")])])])]),t("blockquote",[t("ul",[t("li",[t("code",[e._v("keepId")]),e._v(": (Original fourth parameter) v0.4.6+, "),t("code",[e._v("Boolean")]),e._v(", default is "),t("code",[e._v("false")]),e._v(", Whether to retain the "),t("code",[e._v("id")]),e._v(" of the replicated node will be deleted by default to prevent duplicate node "),t("code",[e._v("id")]),e._v(". However, for mobile node scenarios, the original "),t("code",[e._v("id")]),e._v(" of the node needs to be retained")])])]),t("p",[e._v("Copy node tree data, mainly eliminating the reference "),t("code",[e._v("node")]),e._v(" instance "),t("code",[e._v("_node")]),e._v(" and copying the "),t("code",[e._v("data")]),e._v(" of the data object, example:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("copyNodeTree({}, node);\n")])]),t("h4",[e._v("imgToDataUrl(src)")]),t("p",[e._v("Convert image to dataURL")]),t("h4",[e._v("downloadFile(file, fileName)")]),t("p",[e._v("Download file")]),t("h4",[e._v("throttle(fn, time = 300, ctx)")]),t("p",[e._v("Throttle function")]),t("h4",[e._v("asyncRun(taskList, callback = () => {})")]),t("p",[e._v("Run tasks in task list asynchronously, tasks are run synchronously without order")]),t("h4",[e._v("degToRad(deg)")]),t("blockquote",[t("p",[e._v("v0.2.24+")])]),t("p",[e._v("Angle to radian")]),t("h4",[e._v("camelCaseToHyphen(str)")]),t("blockquote",[t("p",[e._v("v0.2.24+")])]),t("p",[e._v("CamelCase to hyphen")]),t("h4",[e._v("joinFontStr({ italic, bold, fontSize, fontFamily })")]),t("blockquote",[t("p",[e._v("v0.3.4+")])]),t("p",[e._v("Join the "),t("code",[e._v("font")]),e._v(" attribute value of the "),t("code",[e._v("css")]),e._v(" font")]),t("h4",[e._v("measureText(text, { italic, bold, fontSize, fontFamily })")]),t("blockquote",[t("p",[e._v("v0.3.4+")])]),t("p",[e._v("Measure the width and height of the text, return value:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{ width, height }\n")])]),t("h4",[e._v("getTextFromHtml(html)")]),t("p",[e._v("Extract plain text content from an HTML string.")]),t("h4",[e._v("readBlob(blob)")]),t("blockquote",[t("p",[e._v("v0.5.9+")])]),t("p",[e._v("Convert "),t("code",[e._v("blob")]),e._v(" data to "),t("code",[e._v("data:url")]),e._v(" data.")]),t("h4",[e._v("parseDataUrl(data)")]),t("blockquote",[t("p",[e._v("v0.6.6+")])]),t("p",[e._v("Parse "),t("code",[e._v("data:url")]),e._v(" data, return:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n type,"),t("span",{staticClass:"hljs-comment"},[e._v("// file type of data")]),e._v("\n base64"),t("span",{staticClass:"hljs-comment"},[e._v("// base64 data")]),e._v("\n}\n")])]),t("h4",[e._v("getImageSize(src)")]),t("blockquote",[t("p",[e._v("v0.6.6+")])]),t("ul",[t("li",[t("code",[e._v("src")]),e._v(": The url of img")])]),t("p",[e._v("Get the size of image, return:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n width,\n height\n}\n")])]),t("h4",[e._v("loadImage(imgFile)")]),t("blockquote",[t("p",[e._v("v0.6.8+")])]),t("ul",[t("li",[t("code",[e._v("imgFile")]),e._v(": File object of image type")])]),t("p",[e._v("Load image, return:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n url,"),t("span",{staticClass:"hljs-comment"},[e._v("// DataUrl")]),e._v("\n size"),t("span",{staticClass:"hljs-comment"},[e._v("// { width, height } width and height of image")]),e._v("\n}\n")])]),t("h4",[e._v("getType(data)")]),t("blockquote",[t("p",[e._v("v0.6.9+")])]),t("p",[e._v("Get the type of a data, such as "),t("code",[e._v("Boolean")]),e._v("、"),t("code",[e._v("Array")]),e._v(".")]),t("h4",[e._v("removeHtmlStyle(html)")]),t("blockquote",[t("p",[e._v("v0.6.10+")])]),t("p",[e._v("Remove the inline style of nodes in the HTML string.")]),t("h4",[e._v("addHtmlStyle(html, tag, style)")]),t("blockquote",[t("p",[e._v("v0.6.10+")])]),t("p",[e._v("Add inline styles to the specified tags in the HTML tag.")]),t("h4",[e._v("checkIsRichText(str)")]),t("blockquote",[t("p",[e._v("v0.6.10+")])]),t("p",[e._v("Check if a string is a rich text character.")]),t("h4",[e._v("isWhite(color)")]),t("blockquote",[t("p",[e._v("v0.6.11+")])]),t("p",[e._v("Determine whether a color is white.")]),t("h4",[e._v("isTransparent(color)")]),t("blockquote",[t("p",[e._v("v0.6.11+")])]),t("p",[e._v("Determine whether a color is transparent.")]),t("h4",[e._v("nodeRichTextToTextWithWrap(html)")]),t("blockquote",[t("p",[e._v("v0.6.12+")])]),t("p",[e._v("Convert the rich text content of nodes in the form of "),t("code",[e._v("

")]),e._v(" into text wrapped in "),t("code",[e._v("\\n")]),e._v(".")]),t("h4",[e._v("textToNodeRichTextWithWrap(html)")]),t("blockquote",[t("p",[e._v("v0.6.12+")])]),t("p",[e._v("Convert the wrapped text of "),t("code",[e._v("
")]),e._v(" into node rich text content in the form of "),t("code",[e._v("

")]),e._v(".")]),t("h4",[e._v("isMobile()")]),t("blockquote",[t("p",[e._v("v0.6.13+")])]),t("p",[e._v("Determine if it is a mobile environment.")]),t("h4",[e._v("getTopAncestorsFomNodeList(list)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("list")]),e._v(": Arrray, Node instance list.")])]),t("p",[e._v("Find the top-level node list from the node instance list.")]),t("h4",[e._v("checkTwoRectIsOverlap(minx1, maxx1, miny1, maxy1, minx2, maxx2, miny2, maxy2)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("p",[e._v("The parameter is the position of two rectangles.")]),t("p",[e._v("Determine if two rectangles overlap.")]),t("h4",[e._v("focusInput(el)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("el")]),e._v(": DOM nodes, elements that can be focused, typically input box elements.")])]),t("p",[e._v("Focus on the specified input box.")]),t("h4",[e._v("selectAllInput(el)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("el")]),e._v(": DOM nodes, elements that can be focused, typically input box elements.")])]),t("p",[e._v("Focus and select all specified input boxes.")]),t("h4",[e._v("addDataToAppointNodes(appointNodes, data = {})")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("appointNodes")]),e._v(":Node instance list, array type.")])]),t("li",[t("p",[t("code",[e._v("data")]),e._v(":The data to be attached to all nodes in the specified node instance list tree.")])])]),t("p",[e._v("Adding additional data to the specified node list tree data will modify the original data.")]),t("h4",[e._v("createUidForAppointNodes(appointNodes, createNewId)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("appointNodes")]),e._v(":Node instance list, array type.")])]),t("li",[t("p",[t("code",[e._v("createNewId")]),e._v(":v0.7.3-fix.1+, "),t("code",[e._v("Boolean")]),e._v(", default is "),t("code",[e._v("false")]),e._v(", If the node does not have a 'uid', a new 'uid' will be created. If 'true' is passed, a new 'uid' will be created regardless of whether the node data originally exists or not`")])])]),t("p",[e._v("Adding a uid to the specified node list tree data (if the uid does not exist) will modify the original data.")]),t("h4",[e._v("getNodeIndex(node)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("node")]),e._v(":Node instance.")])]),t("p",[e._v("Gets the position index of a node within its peers.")]),t("h4",[e._v("mergerIconList(list)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("list")]),e._v(":The array of node icons to be merged into the library.")])]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-comment"},[e._v("// const data = [")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'b' }] },")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// { type: 'priority', name: '优先级图标', list: [{ name: '2', icon: 'c' }, { name: 3, icon: 'd' }] },")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// ];")]),e._v("\n\n"),t("span",{staticClass:"hljs-comment"},[e._v("// mergerIconList(data) result:")]),e._v("\n\n"),t("span",{staticClass:"hljs-comment"},[e._v("// [")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'c' }, { name: 3, icon: 'd' }] },")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// ]")]),e._v("\n")])]),t("p",[e._v("Merge icon arrays.")]),t("h4",[e._v("htmlEscape(str)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("str")]),e._v(":String.")])]),t("p",[e._v("Escape the incoming string, currently escaping the following three characters:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("& -> &\n< -> <\n> -> >\n")])]),t("h4",[e._v("generateColorByContent(str)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("str")]),e._v(":String.")])]),t("p",[e._v("Generate colors based on incoming content, and the same content will generate the same color.")]),t("h4",[e._v("isSameObject(a, b)")]),t("blockquote",[t("p",[e._v("v0.7.3+")])]),t("ul",[t("li",[t("code",[e._v("a")]),e._v("、"),t("code",[e._v("b")]),e._v(": Object | Array, Two objects to compare")])]),t("p",[e._v("Determine whether two objects are the same, only handling objects or arrays.")]),t("h4",[e._v("getNodeDataIndex(node)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Gets the position index of a node within its sibling nodes.")]),t("h4",[e._v("getNodeIndexInNodeList(node, nodeList)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Find the index of a node from a list of nodes.")]),t("h4",[e._v("setDataToClipboard(data)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("ul",[t("li",[t("code",[e._v("data")]),e._v(":Object | Array")])]),t("p",[e._v("Set data to the user clipboard.")]),t("h4",[e._v("getDataFromClipboard()")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Reading text and images from the user's clipboard returns:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n text,\n img\n}\n")])]),t("h4",[e._v("removeFromParentNodeData(node)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Remove the data of a node from its parent node's "),t("code",[e._v("nodeData.children")]),e._v(" list.")]),t("h4",[e._v("checkHasSupSubRelation()")]),t("blockquote",[t("p",[e._v("v0.8.1+")])]),t("p",[e._v("Determine whether there is a hierarchical relationship from the given node instance list.")]),t("h4",[e._v("handleSelfCloseTags(str)")]),t("blockquote",[t("p",[e._v("v0.9.1+")])]),t("ul",[t("li",[t("code",[e._v("str")]),e._v(": html string")])]),t("p",[e._v("Add a closed state to HTML self closing tags, "),t("code",[e._v('

')]),e._v(" -> "),t("code",[e._v('
')]),e._v("。")]),t("h4",[e._v("checkNodeListIsEqual(list1, list2)")]),t("blockquote",[t("p",[e._v("v0.9.1+")])]),t("ul",[t("li",[t("code",[e._v("list1/list2")]),e._v(": Node instance list")])]),t("p",[e._v("Check if the two node instance lists contain the same nodes.")]),t("h4",[e._v("getChromeVersion()")]),t("blockquote",[t("p",[e._v("v0.9.3+")])]),t("p",[e._v("Get the current version of the Chrome kernel used by the browser. If the current browser is not using the 'Chrome' kernel, an empty string will be returned.")]),t("h4",[e._v("transformTreeDataToObject(data)")]),t("blockquote",[t("p",[e._v("v0.9.3+")])]),t("ul",[t("li",[t("code",[e._v("data")]),e._v(":Mind map node data.")])]),t("p",[e._v("Convert the mind map tree structure to a level object.")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n "),t("span",{staticClass:"hljs-attr"},[e._v("data")]),e._v(": {\n "),t("span",{staticClass:"hljs-attr"},[e._v("uid")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'xxx'")]),e._v("\n },\n "),t("span",{staticClass:"hljs-attr"},[e._v("children")]),e._v(": [\n {\n "),t("span",{staticClass:"hljs-attr"},[e._v("data")]),e._v(": {\n "),t("span",{staticClass:"hljs-attr"},[e._v("uid")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'xxx'")]),e._v("\n },\n "),t("span",{staticClass:"hljs-attr"},[e._v("children")]),e._v(": []\n }\n ]\n }\n")])]),t("p",[e._v("Convert to:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v(" {\n "),t("span",{staticClass:"hljs-attr"},[e._v("uid")]),e._v(": {\n "),t("span",{staticClass:"hljs-attr"},[e._v("children")]),e._v(": [uid1, uid2],\n "),t("span",{staticClass:"hljs-attr"},[e._v("data")]),e._v(": {}\n }\n }\n")])]),t("h4",[e._v("transformObjectToTreeData(data)")]),t("blockquote",[t("p",[e._v("v0.9.3+")])]),t("p",[e._v("Convert flat objects into a tree structure. Reverse operation of the transformTreeDataToObject method.")]),t("h4",[e._v("removeHtmlNodeByClass(html, selector)")]),t("blockquote",[t("p",[e._v("v0.9.6+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("html")]),e._v(":html string")])]),t("li",[t("p",[t("code",[e._v("selector")]),e._v(":Node selectors, such as class selectors and id selectors")])])]),t("p",[e._v("Remove the node of the specified selector from the specified HTML string, and then return the processed HTML string.")]),t("h2",[e._v("Simulate CSS background in Canvas")]),t("p",[e._v("Import:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" drawBackgroundImageToCanvas "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'")]),e._v("\n")])]),t("p",[e._v("Usage:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" width = "),t("span",{staticClass:"hljs-number"},[e._v("500")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" height = "),t("span",{staticClass:"hljs-number"},[e._v("500")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" img = "),t("span",{staticClass:"hljs-string"},[e._v("'/1.jpg'")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" canvas = "),t("span",{staticClass:"hljs-built_in"},[e._v("document")]),e._v(".createElement("),t("span",{staticClass:"hljs-string"},[e._v("'canvas'")]),e._v(")\ncanvas.width = width\ncanvas.height = height\ndrawBackgroundImageToCanvas(ctx, width, height, img, {\n "),t("span",{staticClass:"hljs-attr"},[e._v("backgroundRepeat")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'repeat-y'")]),e._v(",\n "),t("span",{staticClass:"hljs-attr"},[e._v("backgroundSize")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'60%'")]),e._v(",\n "),t("span",{staticClass:"hljs-attr"},[e._v("backgroundPosition")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'center center'")]),e._v("\n}, "),t("span",{staticClass:"hljs-function"},[e._v("("),t("span",{staticClass:"hljs-params"},[e._v("err")]),e._v(") =>")]),e._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[e._v("if")]),e._v(" (err) {\n "),t("span",{staticClass:"hljs-comment"},[e._v("// fail")]),e._v("\n } "),t("span",{staticClass:"hljs-keyword"},[e._v("else")]),e._v(" {\n "),t("span",{staticClass:"hljs-comment"},[e._v("// success")]),e._v("\n }\n})\n")])]),t("h2",[e._v("LRU cache class")]),t("blockquote",[t("p",[e._v("v0.5.10+")])]),t("p",[e._v("Import:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" Lru "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/utils/Lru.js'")]),e._v("\n")])]),t("h3",[e._v("Constructor")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" lru = "),t("span",{staticClass:"hljs-keyword"},[e._v("new")]),e._v(" Lru(max)\n")])]),t("p",[t("code",[e._v("max")]),e._v(": Specify the maximum number of caches.")]),t("h3",[e._v("Instance properties")]),t("h4",[e._v("size")]),t("p",[e._v("The current number of caches.")]),t("h4",[e._v("pool")]),t("p",[e._v("Get cache pool.")]),t("h3",[e._v("Instance methods")]),t("h4",[e._v("add(key, value)")]),t("p",[e._v("Add cache.")]),t("h4",[e._v("delete(key)")]),t("p",[e._v("Delete cache.")]),t("h4",[e._v("has(key)")]),t("p",[e._v("Check if a cache exists.")]),t("h4",[e._v("get(key)")]),t("p",[e._v("Gets the value of a cache.")]),t("blockquote",[t("p",[e._v("v0.9.2+")])]),t("p",[e._v("Empty the cache pool.")])])}],i={},n=i,v=a("2877"),l=Object(v["a"])(n,s,o,!1,null,null,null);t["default"]=l.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ab10b"],{"144f":function(e,t,s){"use strict";s.r(t);var a=function(){var e=this;e._self._c;return e._m(0)},o=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("Utility Methods")]),t("h2",[e._v("Base utility Methods")]),t("p",[e._v("Reference:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" {walk, ...} "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/utils'")]),e._v("\n")])]),t("h3",[e._v("Methods")]),t("h4",[e._v("resizeImgSizeByOriginRatio(width, height, newWidth, newHeight)")]),t("blockquote",[t("p",[e._v("v0.6.5+")])]),t("p",[t("code",[e._v("width")]),e._v(": The original width of the image")]),t("p",[t("code",[e._v("height")]),e._v(":The original height of the image")]),t("p",[t("code",[e._v("newWidth")]),e._v(":Width to zoom in to")]),t("p",[t("code",[e._v("newHeight")]),e._v(":Height to zoom in to")]),t("p",[e._v("Scale the image proportionally. Zoom to the specified size of "),t("code",[e._v("newWidth")]),e._v(" and "),t("code",[e._v("newHeight")]),e._v(" while maintaining the original aspect ratio of the image.")]),t("h4",[e._v("walk(root, parent, beforeCallback, afterCallback, isRoot, layerIndex = 0, index = 0)")]),t("p",[e._v("Depth-first traversal of a tree")]),t("p",[t("code",[e._v("root")]),e._v(": the root node of the tree to be traversed")]),t("p",[t("code",[e._v("parent")]),e._v(": parent node")]),t("p",[t("code",[e._v("beforeCallback")]),e._v(": preorder traversal callback function, callback parameters are: root, parent, isRoot, layerIndex, index")]),t("p",[t("code",[e._v("afterCallback")]),e._v(": postorder traversal callback function, callback parameters are: root, parent, isRoot, layerIndex, index")]),t("p",[t("code",[e._v("isRoot")]),e._v(": whether it is the root node")]),t("p",[t("code",[e._v("layerIndex")]),e._v(": node level")]),t("p",[t("code",[e._v("index")]),e._v(": index of the node among its siblings")]),t("p",[e._v("Example:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("walk(tree, "),t("span",{staticClass:"hljs-literal"},[e._v("null")]),e._v(", "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {}, "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {}, "),t("span",{staticClass:"hljs-literal"},[e._v("false")]),e._v(", "),t("span",{staticClass:"hljs-number"},[e._v("0")]),e._v(", "),t("span",{staticClass:"hljs-number"},[e._v("0")]),e._v(");\n")])]),t("h4",[e._v("bfsWalk(root, callback)")]),t("p",[e._v("Breadth-first traversal of a tree")]),t("h4",[e._v("resizeImgSize(width, height, maxWidth, maxHeight)")]),t("p",[e._v("Resize image size")]),t("p",[t("code",[e._v("width")]),e._v(": original width of the image")]),t("p",[t("code",[e._v("height")]),e._v(": original height of the image")]),t("p",[t("code",[e._v("maxWidth")]),e._v(": the width to resize to")]),t("p",[t("code",[e._v("maxHeight")]),e._v(": the height to resize to")]),t("p",[t("code",[e._v("maxWidth")]),e._v(" and "),t("code",[e._v("maxHeight")]),e._v(" can both be passed, or only one of them can be passed")]),t("h4",[e._v("resizeImg(imgUrl, maxWidth, maxHeight)")]),t("p",[e._v("Resize image, internally loads the image first, then calls the "),t("code",[e._v("resizeImgSize")]),e._v(" method, and returns a "),t("code",[e._v("promise")])]),t("h4",[e._v("simpleDeepClone(data)")]),t("p",[e._v("Extremely simple deep copy method, can only be used for objects that are all basic data, otherwise it will throw an error")]),t("h4",[e._v("copyRenderTree(tree, root)")]),t("p",[e._v("Copy render tree data, example:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("copyRenderTree({}, "),t("span",{staticClass:"hljs-built_in"},[e._v("this")]),e._v(".mindMap.renderer.renderTree);\n")])]),t("h4",[e._v("copyNodeTree(tree, root, removeActiveState, keepId)")]),t("ul",[t("li",[t("p",[t("code",[e._v("removeActiveState")]),e._v(": "),t("code",[e._v("Boolean")]),e._v(", default is "),t("code",[e._v("false")]),e._v(", Whether to remove the active state of the node")])]),t("li",[t("p",[t("code",[e._v("removeId")]),e._v(":v0.7.3-fix.1+, Is remove the uid from the node data, default is "),t("code",[e._v("true")])])])]),t("blockquote",[t("ul",[t("li",[t("code",[e._v("keepId")]),e._v(": (Original fourth parameter) v0.4.6+, "),t("code",[e._v("Boolean")]),e._v(", default is "),t("code",[e._v("false")]),e._v(", Whether to retain the "),t("code",[e._v("id")]),e._v(" of the replicated node will be deleted by default to prevent duplicate node "),t("code",[e._v("id")]),e._v(". However, for mobile node scenarios, the original "),t("code",[e._v("id")]),e._v(" of the node needs to be retained")])])]),t("p",[e._v("Copy node tree data, mainly eliminating the reference "),t("code",[e._v("node")]),e._v(" instance "),t("code",[e._v("_node")]),e._v(" and copying the "),t("code",[e._v("data")]),e._v(" of the data object, example:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("copyNodeTree({}, node);\n")])]),t("h4",[e._v("imgToDataUrl(src)")]),t("p",[e._v("Convert image to dataURL")]),t("h4",[e._v("downloadFile(file, fileName)")]),t("p",[e._v("Download file")]),t("h4",[e._v("throttle(fn, time = 300, ctx)")]),t("p",[e._v("Throttle function")]),t("h4",[e._v("asyncRun(taskList, callback = () => {})")]),t("p",[e._v("Run tasks in task list asynchronously, tasks are run synchronously without order")]),t("h4",[e._v("degToRad(deg)")]),t("blockquote",[t("p",[e._v("v0.2.24+")])]),t("p",[e._v("Angle to radian")]),t("h4",[e._v("camelCaseToHyphen(str)")]),t("blockquote",[t("p",[e._v("v0.2.24+")])]),t("p",[e._v("CamelCase to hyphen")]),t("h4",[e._v("joinFontStr({ italic, bold, fontSize, fontFamily })")]),t("blockquote",[t("p",[e._v("v0.3.4+")])]),t("p",[e._v("Join the "),t("code",[e._v("font")]),e._v(" attribute value of the "),t("code",[e._v("css")]),e._v(" font")]),t("h4",[e._v("measureText(text, { italic, bold, fontSize, fontFamily })")]),t("blockquote",[t("p",[e._v("v0.3.4+")])]),t("p",[e._v("Measure the width and height of the text, return value:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{ width, height }\n")])]),t("h4",[e._v("getTextFromHtml(html)")]),t("p",[e._v("Extract plain text content from an HTML string.")]),t("h4",[e._v("readBlob(blob)")]),t("blockquote",[t("p",[e._v("v0.5.9+")])]),t("p",[e._v("Convert "),t("code",[e._v("blob")]),e._v(" data to "),t("code",[e._v("data:url")]),e._v(" data.")]),t("h4",[e._v("parseDataUrl(data)")]),t("blockquote",[t("p",[e._v("v0.6.6+")])]),t("p",[e._v("Parse "),t("code",[e._v("data:url")]),e._v(" data, return:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n type,"),t("span",{staticClass:"hljs-comment"},[e._v("// file type of data")]),e._v("\n base64"),t("span",{staticClass:"hljs-comment"},[e._v("// base64 data")]),e._v("\n}\n")])]),t("h4",[e._v("getImageSize(src)")]),t("blockquote",[t("p",[e._v("v0.6.6+")])]),t("ul",[t("li",[t("code",[e._v("src")]),e._v(": The url of img")])]),t("p",[e._v("Get the size of image, return:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n width,\n height\n}\n")])]),t("h4",[e._v("loadImage(imgFile)")]),t("blockquote",[t("p",[e._v("v0.6.8+")])]),t("ul",[t("li",[t("code",[e._v("imgFile")]),e._v(": File object of image type")])]),t("p",[e._v("Load image, return:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n url,"),t("span",{staticClass:"hljs-comment"},[e._v("// DataUrl")]),e._v("\n size"),t("span",{staticClass:"hljs-comment"},[e._v("// { width, height } width and height of image")]),e._v("\n}\n")])]),t("h4",[e._v("getType(data)")]),t("blockquote",[t("p",[e._v("v0.6.9+")])]),t("p",[e._v("Get the type of a data, such as "),t("code",[e._v("Boolean")]),e._v("、"),t("code",[e._v("Array")]),e._v(".")]),t("h4",[e._v("removeHtmlStyle(html)")]),t("blockquote",[t("p",[e._v("v0.6.10+")])]),t("p",[e._v("Remove the inline style of nodes in the HTML string.")]),t("h4",[e._v("addHtmlStyle(html, tag, style)")]),t("blockquote",[t("p",[e._v("v0.6.10+")])]),t("p",[e._v("Add inline styles to the specified tags in the HTML tag.")]),t("h4",[e._v("checkIsRichText(str)")]),t("blockquote",[t("p",[e._v("v0.6.10+")])]),t("p",[e._v("Check if a string is a rich text character.")]),t("h4",[e._v("isWhite(color)")]),t("blockquote",[t("p",[e._v("v0.6.11+")])]),t("p",[e._v("Determine whether a color is white.")]),t("h4",[e._v("isTransparent(color)")]),t("blockquote",[t("p",[e._v("v0.6.11+")])]),t("p",[e._v("Determine whether a color is transparent.")]),t("h4",[e._v("nodeRichTextToTextWithWrap(html)")]),t("blockquote",[t("p",[e._v("v0.6.12+")])]),t("p",[e._v("Convert the rich text content of nodes in the form of "),t("code",[e._v("

")]),e._v(" into text wrapped in "),t("code",[e._v("\\n")]),e._v(".")]),t("h4",[e._v("textToNodeRichTextWithWrap(html)")]),t("blockquote",[t("p",[e._v("v0.6.12+")])]),t("p",[e._v("Convert the wrapped text of "),t("code",[e._v("
")]),e._v(" into node rich text content in the form of "),t("code",[e._v("

")]),e._v(".")]),t("h4",[e._v("isMobile()")]),t("blockquote",[t("p",[e._v("v0.6.13+")])]),t("p",[e._v("Determine if it is a mobile environment.")]),t("h4",[e._v("getTopAncestorsFomNodeList(list)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("list")]),e._v(": Arrray, Node instance list.")])]),t("p",[e._v("Find the top-level node list from the node instance list.")]),t("h4",[e._v("checkTwoRectIsOverlap(minx1, maxx1, miny1, maxy1, minx2, maxx2, miny2, maxy2)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("p",[e._v("The parameter is the position of two rectangles.")]),t("p",[e._v("Determine if two rectangles overlap.")]),t("h4",[e._v("focusInput(el)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("el")]),e._v(": DOM nodes, elements that can be focused, typically input box elements.")])]),t("p",[e._v("Focus on the specified input box.")]),t("h4",[e._v("selectAllInput(el)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("el")]),e._v(": DOM nodes, elements that can be focused, typically input box elements.")])]),t("p",[e._v("Focus and select all specified input boxes.")]),t("h4",[e._v("addDataToAppointNodes(appointNodes, data = {})")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("appointNodes")]),e._v(":Node instance list, array type.")])]),t("li",[t("p",[t("code",[e._v("data")]),e._v(":The data to be attached to all nodes in the specified node instance list tree.")])])]),t("p",[e._v("Adding additional data to the specified node list tree data will modify the original data.")]),t("h4",[e._v("createUidForAppointNodes(appointNodes, createNewId)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("appointNodes")]),e._v(":Node instance list, array type.")])]),t("li",[t("p",[t("code",[e._v("createNewId")]),e._v(":v0.7.3-fix.1+, "),t("code",[e._v("Boolean")]),e._v(", default is "),t("code",[e._v("false")]),e._v(", If the node does not have a 'uid', a new 'uid' will be created. If 'true' is passed, a new 'uid' will be created regardless of whether the node data originally exists or not`")])])]),t("p",[e._v("Adding a uid to the specified node list tree data (if the uid does not exist) will modify the original data.")]),t("h4",[e._v("getNodeIndex(node)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("node")]),e._v(":Node instance.")])]),t("p",[e._v("Gets the position index of a node within its peers.")]),t("h4",[e._v("mergerIconList(list)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("list")]),e._v(":The array of node icons to be merged into the library.")])]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-comment"},[e._v("// const data = [")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'b' }] },")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// { type: 'priority', name: '优先级图标', list: [{ name: '2', icon: 'c' }, { name: 3, icon: 'd' }] },")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// ];")]),e._v("\n\n"),t("span",{staticClass:"hljs-comment"},[e._v("// mergerIconList(data) result:")]),e._v("\n\n"),t("span",{staticClass:"hljs-comment"},[e._v("// [")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'c' }, { name: 3, icon: 'd' }] },")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// ]")]),e._v("\n")])]),t("p",[e._v("Merge icon arrays.")]),t("h4",[e._v("htmlEscape(str)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("str")]),e._v(":String.")])]),t("p",[e._v("Escape the incoming string, currently escaping the following three characters:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("& -> &\n< -> <\n> -> >\n")])]),t("h4",[e._v("generateColorByContent(str)")]),t("blockquote",[t("p",[e._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[e._v("str")]),e._v(":String.")])]),t("p",[e._v("Generate colors based on incoming content, and the same content will generate the same color.")]),t("h4",[e._v("isSameObject(a, b)")]),t("blockquote",[t("p",[e._v("v0.7.3+")])]),t("ul",[t("li",[t("code",[e._v("a")]),e._v("、"),t("code",[e._v("b")]),e._v(": Object | Array, Two objects to compare")])]),t("p",[e._v("Determine whether two objects are the same, only handling objects or arrays.")]),t("h4",[e._v("getNodeDataIndex(node)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Gets the position index of a node within its sibling nodes.")]),t("h4",[e._v("getNodeIndexInNodeList(node, nodeList)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Find the index of a node from a list of nodes.")]),t("h4",[e._v("setDataToClipboard(data)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("ul",[t("li",[t("code",[e._v("data")]),e._v(":Object | Array")])]),t("p",[e._v("Set data to the user clipboard.")]),t("h4",[e._v("getDataFromClipboard()")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Reading text and images from the user's clipboard returns:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n text,\n img\n}\n")])]),t("h4",[e._v("removeFromParentNodeData(node)")]),t("blockquote",[t("p",[e._v("v0.8.0+")])]),t("p",[e._v("Remove the data of a node from its parent node's "),t("code",[e._v("nodeData.children")]),e._v(" list.")]),t("h4",[e._v("checkHasSupSubRelation()")]),t("blockquote",[t("p",[e._v("v0.8.1+")])]),t("p",[e._v("Determine whether there is a hierarchical relationship from the given node instance list.")]),t("h4",[e._v("handleSelfCloseTags(str)")]),t("blockquote",[t("p",[e._v("v0.9.1+")])]),t("ul",[t("li",[t("code",[e._v("str")]),e._v(": html string")])]),t("p",[e._v("Add a closed state to HTML self closing tags, "),t("code",[e._v('

')]),e._v(" -> "),t("code",[e._v('
')]),e._v("。")]),t("h4",[e._v("checkNodeListIsEqual(list1, list2)")]),t("blockquote",[t("p",[e._v("v0.9.1+")])]),t("ul",[t("li",[t("code",[e._v("list1/list2")]),e._v(": Node instance list")])]),t("p",[e._v("Check if the two node instance lists contain the same nodes.")]),t("h4",[e._v("getChromeVersion()")]),t("blockquote",[t("p",[e._v("v0.9.3+")])]),t("p",[e._v("Get the current version of the Chrome kernel used by the browser. If the current browser is not using the 'Chrome' kernel, an empty string will be returned.")]),t("h4",[e._v("transformTreeDataToObject(data)")]),t("blockquote",[t("p",[e._v("v0.9.3+")])]),t("ul",[t("li",[t("code",[e._v("data")]),e._v(":Mind map node data.")])]),t("p",[e._v("Convert the mind map tree structure to a level object.")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n "),t("span",{staticClass:"hljs-attr"},[e._v("data")]),e._v(": {\n "),t("span",{staticClass:"hljs-attr"},[e._v("uid")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'xxx'")]),e._v("\n },\n "),t("span",{staticClass:"hljs-attr"},[e._v("children")]),e._v(": [\n {\n "),t("span",{staticClass:"hljs-attr"},[e._v("data")]),e._v(": {\n "),t("span",{staticClass:"hljs-attr"},[e._v("uid")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'xxx'")]),e._v("\n },\n "),t("span",{staticClass:"hljs-attr"},[e._v("children")]),e._v(": []\n }\n ]\n }\n")])]),t("p",[e._v("Convert to:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v(" {\n "),t("span",{staticClass:"hljs-attr"},[e._v("uid")]),e._v(": {\n "),t("span",{staticClass:"hljs-attr"},[e._v("children")]),e._v(": [uid1, uid2],\n "),t("span",{staticClass:"hljs-attr"},[e._v("data")]),e._v(": {}\n }\n }\n")])]),t("h4",[e._v("transformObjectToTreeData(data)")]),t("blockquote",[t("p",[e._v("v0.9.3+")])]),t("p",[e._v("Convert flat objects into a tree structure. Reverse operation of the transformTreeDataToObject method.")]),t("h4",[e._v("removeHtmlNodeByClass(html, selector)")]),t("blockquote",[t("p",[e._v("v0.9.6+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("html")]),e._v(":html string")])]),t("li",[t("p",[t("code",[e._v("selector")]),e._v(":Node selectors, such as class selectors and id selectors")])])]),t("p",[e._v("Remove the node of the specified selector from the specified HTML string, and then return the processed HTML string.")]),t("h4",[e._v("getOnfullscreEnevt()")]),t("blockquote",[t("p",[e._v("v0.9.11+")])]),t("p",[e._v("Detect full screen events available in the current browser. You can use it this way:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("const")]),e._v(" fullscrrenEvent = getOnfullscreEnevt()\n\n"),t("span",{staticClass:"hljs-comment"},[e._v("// Monitor full screen events")]),e._v("\n"),t("span",{staticClass:"hljs-built_in"},[e._v("document")]),e._v(".addEventListener(fullscrrenEvent, "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {\n "),t("span",{staticClass:"hljs-comment"},[e._v("// Determine whether the current state is full screen based on whether document.fullscreenElement is null")]),e._v("\n})\n")])]),t("h4",[e._v("fullScreen(element)")]),t("blockquote",[t("p",[e._v("v0.9.11+")])]),t("p",[e._v("Put the specified DOM element into full screen mode.")]),t("h4",[e._v("exitFullScreen()")]),t("blockquote",[t("p",[e._v("v0.9.11+")])]),t("p",[e._v("Exit full screen mode.")]),t("h2",[e._v("Simulate CSS background in Canvas")]),t("p",[e._v("Import:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" drawBackgroundImageToCanvas "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'")]),e._v("\n")])]),t("p",[e._v("Usage:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" width = "),t("span",{staticClass:"hljs-number"},[e._v("500")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" height = "),t("span",{staticClass:"hljs-number"},[e._v("500")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" img = "),t("span",{staticClass:"hljs-string"},[e._v("'/1.jpg'")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" canvas = "),t("span",{staticClass:"hljs-built_in"},[e._v("document")]),e._v(".createElement("),t("span",{staticClass:"hljs-string"},[e._v("'canvas'")]),e._v(")\ncanvas.width = width\ncanvas.height = height\ndrawBackgroundImageToCanvas(ctx, width, height, img, {\n "),t("span",{staticClass:"hljs-attr"},[e._v("backgroundRepeat")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'repeat-y'")]),e._v(",\n "),t("span",{staticClass:"hljs-attr"},[e._v("backgroundSize")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'60%'")]),e._v(",\n "),t("span",{staticClass:"hljs-attr"},[e._v("backgroundPosition")]),e._v(": "),t("span",{staticClass:"hljs-string"},[e._v("'center center'")]),e._v("\n}, "),t("span",{staticClass:"hljs-function"},[e._v("("),t("span",{staticClass:"hljs-params"},[e._v("err")]),e._v(") =>")]),e._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[e._v("if")]),e._v(" (err) {\n "),t("span",{staticClass:"hljs-comment"},[e._v("// fail")]),e._v("\n } "),t("span",{staticClass:"hljs-keyword"},[e._v("else")]),e._v(" {\n "),t("span",{staticClass:"hljs-comment"},[e._v("// success")]),e._v("\n }\n})\n")])]),t("h2",[e._v("LRU cache class")]),t("blockquote",[t("p",[e._v("v0.5.10+")])]),t("p",[e._v("Import:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" Lru "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/utils/Lru.js'")]),e._v("\n")])]),t("h3",[e._v("Constructor")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("let")]),e._v(" lru = "),t("span",{staticClass:"hljs-keyword"},[e._v("new")]),e._v(" Lru(max)\n")])]),t("p",[t("code",[e._v("max")]),e._v(": Specify the maximum number of caches.")]),t("h3",[e._v("Instance properties")]),t("h4",[e._v("size")]),t("p",[e._v("The current number of caches.")]),t("h4",[e._v("pool")]),t("p",[e._v("Get cache pool.")]),t("h3",[e._v("Instance methods")]),t("h4",[e._v("add(key, value)")]),t("p",[e._v("Add cache.")]),t("h4",[e._v("delete(key)")]),t("p",[e._v("Delete cache.")]),t("h4",[e._v("has(key)")]),t("p",[e._v("Check if a cache exists.")]),t("h4",[e._v("get(key)")]),t("p",[e._v("Gets the value of a cache.")]),t("blockquote",[t("p",[e._v("v0.9.2+")])]),t("p",[e._v("Empty the cache pool.")])])}],n={},i=n,l=s("2877"),v=Object(l["a"])(i,a,o,!1,null,null,null);t["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0ab546.js b/dist/js/chunk-2d0ab546.js index 45ec6582..79392318 100644 --- a/dist/js/chunk-2d0ab546.js +++ b/dist/js/chunk-2d0ab546.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ab546"],{"158d":function(s,t,a){"use strict";a.r(t);var n=function(){var s=this;s._self._c;return s._m(0)},e=[function(){var s=this,t=s._self._c;return t("div",[t("h1",[s._v("如何自定义节点内容")]),t("blockquote",[t("p",[s._v("该特性v0.6.3+版本支持")])]),t("p",[s._v("如果你想自定义节点的内容,那么可以在实例化"),t("code",[s._v("simple-mind-map")]),s._v("时传入以下选项:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" MindMap({\n "),t("span",{staticClass:"hljs-attr"},[s._v("isUseCustomNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(",\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-comment"},[s._v("// return你的自定义DOM节点")]),s._v("\n }\n})\n")])]),t("p",[t("code",[s._v("customCreateNodeContent")]),s._v("方法会接收当前遍历到的节点实例作为参数,一般而言你会需要该节点的数据,这可以通过如下方式获取:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("node.nodeData.data\n")])]),t("p",[s._v("其他节点实例属性你可以自行打印出来看看。")]),t("p",[t("code",[s._v("customCreateNodeContent")]),s._v("方法需要返回"),t("code",[s._v("DOM")]),s._v("节点,如果某个节点你不想自定义,那么可以返回"),t("code",[s._v("null")]),s._v(",那么还是会走内置的节点渲染逻辑。")]),t("p",[s._v("返回的"),t("code",[s._v("DOM")]),s._v("节点的宽高需要是确定的,如果是动态的那么会导致宽高获取错误,最终导致节点定位错误和发生重叠等问题。")]),t("p",[s._v("如果使用了自定义节点内容,那么内置的插入节点内容的相关方法你都不应该再使用,因为相当于整个节点内容都由你自己控制,另外,节点样式设置也不会再生效,切换主题也只会切换非节点内容的样式,最后,双击节点也不会再进入编辑,所以这个功能一般用于展示性的需求。")]),t("h2",[s._v("示例1:渲染自定义DOM节点")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" div = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n div.className = "),t("span",{staticClass:"hljs-string"},[s._v("'xxx'")]),s._v("\n div.style.cssText = "),t("span",{staticClass:"hljs-string"},[s._v("`xxx`")]),s._v("\n div.innerHTML = "),t("span",{staticClass:"hljs-string"},[s._v("`\n

我是自定义节点

\n "),t("span",{staticClass:"hljs-subst"},[s._v("${ node.nodeData.text }")]),s._v("\n `")]),s._v("\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" div\n }\n}\n")])]),t("h2",[s._v("示例2:渲染Vue2组件")]),t("p",[s._v("如果想要使用一个相对简单的"),t("code",[s._v("Vue")]),s._v("组件,那么可以通过如下方式:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" CustomNodeContent "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'CustomNodeContent.vue'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Vue "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'vue'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" Comp = Vue.extend(CustomNodeContent)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" comp = "),t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" Comp({\n "),t("span",{staticClass:"hljs-comment"},[s._v("// props")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("propsData")]),s._v(": {\n "),t("span",{staticClass:"hljs-attr"},[s._v("html")]),s._v(": node.nodeData.data.text\n }\n })\n comp.$mount(el)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" comp.$el\n }\n}\n")])]),t("p",[s._v("如果你的"),t("code",[s._v("Vue")]),s._v("组件比较复杂,里面用到了"),t("code",[s._v("vueRouter")]),s._v("、"),t("code",[s._v("vuex")]),s._v("、"),t("code",[s._v("i18n")]),s._v("等,那么要和你项目的入口组件一样,在实例化时要把这些内容也加载到组件内,不然会报错。")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" CustomNodeContent "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'CustomNodeContent.vue'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Vue "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'vue'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" router "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./router'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" store "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./store'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" i18n "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./i18n'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" Comp = Vue.extend(CustomNodeContent)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" comp = "),t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" Comp({\n "),t("span",{staticClass:"hljs-comment"},[s._v("// props")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("propsData")]),s._v(": {\n "),t("span",{staticClass:"hljs-attr"},[s._v("html")]),s._v(": node.nodeData.data.text\n },\n router,\n store,\n i18n\n })\n comp.$mount(el)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" comp.$el\n }\n}\n")])]),t("h2",[s._v("示例3:渲染Vue3组件")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { createApp } "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v('"vue"')]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" CustomNodeContent "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./CustomNodeContent.vue'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" app = createApp(CustomNodeContent, {"),t("span",{staticClass:"hljs-comment"},[s._v("// props")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("html")]),s._v(": node.nodeData.data.text\n })\n app.mount(el)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" el\n }\n}\n")])]),t("h2",[s._v("示例4:渲染react组件")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { createRoot } "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'react-dom/client'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n el.style.width = "),t("span",{staticClass:"hljs-string"},[s._v("'227px'")]),s._v("\n el.style.height = "),t("span",{staticClass:"hljs-string"},[s._v("'60px'")]),s._v("\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" currentNode = node.nodeData.data\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" root = createRoot(el)\n root.render({currentNode.text})\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" el\n }\n}\n")])]),t("blockquote",[t("p",[s._v("感谢"),t("a",{attrs:{href:"https://github.com/h5chenhang"}},[s._v("h5chenhang")]),s._v("贡献的"),t("a",{attrs:{href:"https://github.com/wanglin2/mind-map/issues/192"}},[s._v("示例代码")]),s._v("。")])])])}],l={},v=l,_=a("2877"),o=Object(_["a"])(v,n,e,!1,null,null,null);t["default"]=o.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ab546"],{"158d":function(s,t,a){"use strict";a.r(t);var n=function(){var s=this;s._self._c;return s._m(0)},e=[function(){var s=this,t=s._self._c;return t("div",[t("h1",[s._v("如何自定义节点内容")]),t("blockquote",[t("p",[s._v("该特性v0.6.3+版本支持")])]),t("p",[s._v("如果你想自定义节点的内容,那么可以在实例化"),t("code",[s._v("simple-mind-map")]),s._v("时传入以下选项:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" MindMap({\n "),t("span",{staticClass:"hljs-attr"},[s._v("isUseCustomNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(",\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-comment"},[s._v("// return你的自定义DOM节点")]),s._v("\n }\n})\n")])]),t("p",[t("code",[s._v("customCreateNodeContent")]),s._v("方法会接收当前遍历到的节点实例作为参数,一般而言你会需要该节点的数据,这可以通过如下方式获取:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("node.nodeData.data\n")])]),t("p",[s._v("其他节点实例属性你可以自行打印出来看看。")]),t("p",[t("code",[s._v("customCreateNodeContent")]),s._v("方法需要返回"),t("code",[s._v("DOM")]),s._v("节点,如果某个节点你不想自定义,那么可以返回"),t("code",[s._v("null")]),s._v(",那么还是会走内置的节点渲染逻辑。")]),t("p",[s._v("返回的"),t("code",[s._v("DOM")]),s._v("节点的宽高需要是确定的,如果是动态的那么会导致宽高获取错误,最终导致节点定位错误和发生重叠等问题。")]),t("p",[s._v("如果使用了自定义节点内容,那么内置的插入节点内容的相关方法你都不应该再使用,因为相当于整个节点内容都由你自己控制,另外,节点样式设置也不会再生效,切换主题也只会切换非节点内容的样式,最后,双击节点也不会再进入编辑,所以这个功能一般用于展示性的需求。")]),t("h2",[s._v("示例1:渲染自定义DOM节点")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" div = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n div.className = "),t("span",{staticClass:"hljs-string"},[s._v("'xxx'")]),s._v("\n div.style.cssText = "),t("span",{staticClass:"hljs-string"},[s._v("`xxx`")]),s._v("\n div.innerHTML = "),t("span",{staticClass:"hljs-string"},[s._v("`\n

我是自定义节点

\n "),t("span",{staticClass:"hljs-subst"},[s._v("${ node.nodeData.text }")]),s._v("\n `")]),s._v("\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" div\n }\n}\n")])]),t("h2",[s._v("示例2:渲染Vue2组件")]),t("p",[s._v("如果想要使用一个相对简单的"),t("code",[s._v("Vue")]),s._v("组件,那么可以通过如下方式:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" CustomNodeContent "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'CustomNodeContent.vue'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Vue "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'vue'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" Comp = Vue.extend(CustomNodeContent)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" comp = "),t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" Comp({\n "),t("span",{staticClass:"hljs-comment"},[s._v("// props")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("propsData")]),s._v(": {\n "),t("span",{staticClass:"hljs-attr"},[s._v("html")]),s._v(": node.nodeData.data.text\n }\n })\n comp.$mount(el)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" comp.$el\n }\n}\n")])]),t("p",[s._v("如果你的"),t("code",[s._v("Vue")]),s._v("组件比较复杂,里面用到了"),t("code",[s._v("vueRouter")]),s._v("、"),t("code",[s._v("vuex")]),s._v("、"),t("code",[s._v("i18n")]),s._v("等,那么要和你项目的入口组件一样,在实例化时要把这些内容也加载到组件内,不然会报错。")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" CustomNodeContent "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'CustomNodeContent.vue'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Vue "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'vue'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" router "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./router'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" store "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./store'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" i18n "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./i18n'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" Comp = Vue.extend(CustomNodeContent)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" comp = "),t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" Comp({\n "),t("span",{staticClass:"hljs-comment"},[s._v("// props")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("propsData")]),s._v(": {\n "),t("span",{staticClass:"hljs-attr"},[s._v("html")]),s._v(": node.nodeData.data.text\n },\n router,\n store,\n i18n\n })\n comp.$mount(el)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" comp.$el\n }\n}\n")])]),t("h2",[s._v("示例3:渲染Vue3组件")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { createApp } "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v('"vue"')]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" CustomNodeContent "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'./CustomNodeContent.vue'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" app = createApp(CustomNodeContent, {"),t("span",{staticClass:"hljs-comment"},[s._v("// props")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("html")]),s._v(": node.nodeData.data.text\n })\n app.mount(el)\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" el\n }\n}\n")])]),t("h2",[s._v("示例4:渲染react组件")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { createRoot } "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'react-dom/client'")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("customCreateNodeContent")]),s._v(": "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" el = "),t("span",{staticClass:"hljs-built_in"},[s._v("document")]),s._v(".createElement("),t("span",{staticClass:"hljs-string"},[s._v("'div'")]),s._v(")\n el.style.width = "),t("span",{staticClass:"hljs-string"},[s._v("'227px'")]),s._v("\n el.style.height = "),t("span",{staticClass:"hljs-string"},[s._v("'60px'")]),s._v("\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" currentNode = node.nodeData.data\n "),t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" root = createRoot(el)\n root.render({currentNode.text})\n "),t("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" el\n }\n}\n")])]),t("blockquote",[t("p",[s._v("感谢"),t("a",{attrs:{href:"https://github.com/h5chenhang"}},[s._v("h5chenhang")]),s._v("贡献的"),t("a",{attrs:{href:"https://github.com/wanglin2/mind-map/issues/192"}},[s._v("示例代码")]),s._v("。")])]),t("h2",[s._v("常见问题")]),t("p",[s._v("1.点击自定义内容中的输入框无法获取焦点和输入")]),t("p",[s._v("解决方法:阻止输入框的"),t("code",[s._v("mousedown")]),s._v("事件的冒泡。")])])}],l={},v=l,_=a("2877"),o=Object(_["a"])(v,n,e,!1,null,null,null);t["default"]=o.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0afe0d.js b/dist/js/chunk-2d0afe0d.js index 194fbc96..bd123546 100644 --- a/dist/js/chunk-2d0afe0d.js +++ b/dist/js/chunk-2d0afe0d.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0afe0d"],{"0fcd":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},_=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("插入/删除节点、前进回退")]),a("p",[s._v("首先和操作节点内容一样,也需要监听节点的激活事件,然后禁用相关按钮。")]),a("p",[s._v("以下命令都支持传递一些参数,详情请参考【API】-【构造函数】-【execCommand方法】小节中该命令的介绍。")]),a("h2",[s._v("插入子节点")]),a("p",[s._v("插入子节点很简单,执行"),a("code",[s._v("INSERT_CHILD_NODE")]),s._v("命令即可:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(")\n")])]),a("p",[s._v("这样就会在当前激活节点(如果存在多个激活节点,默认会操作第一个激活节点)下添加一个子节点。")]),a("p",[s._v("如果你想获取插入节点的实例,可以这样操作:")]),a("p",[s._v("1.需要指定新插入节点的"),a("code",[s._v("id")]),s._v(",比如:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { createUid } "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/utils'")]),s._v("\n\n"),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" uid = createUid()\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", [], {\n uid\n})\n")])]),a("p",[s._v("2.然后在"),a("code",[s._v("node_tree_render_end")]),s._v("事件里通过该"),a("code",[s._v("id")]),s._v("来获取实例:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'node_tree_render_end'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("() =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 调用renderer实例的findNodeByUid方法获取到节点的实例对象")]),s._v("\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" node = mindMap.renderer.findNodeByUid(uid)\n})\n")])]),a("h2",[s._v("插入多个子节点")]),a("p",[s._v("如果你要同时插入多个子节点,那么可以执行"),a("code",[s._v("INSERT_MULTI_CHILD_NODE")]),s._v("命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_MULTI_CHILD_NODE'")]),s._v(", [], childList)\n")])]),a("p",[a("code",[s._v("childList")]),s._v("是要插入的子节点数据的数组,必传。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("[\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("data")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'自定义节点1'")]),s._v("\n }\n }\n]\n")])]),a("h2",[s._v("插入同级节点")]),a("p",[s._v("插入同级节点和插入子节点方式完全一致:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_NODE'")]),s._v(")\n")])]),a("h2",[s._v("插入多个同级节点")]),a("p",[s._v("插入多个同级节点可以执行"),a("code",[s._v("INSERT_MULTI_NODE")]),s._v("命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_NODE'")]),s._v(". [], nodeList)\n")])]),a("p",[a("code",[s._v("nodeList")]),s._v("是要插入的同级节点数据的数组,必传。")]),a("h2",[s._v("插入父节点")]),a("p",[s._v("要插入父节点可以调用"),a("code",[s._v("INSERT_PARENT_NODE")]),s._v("命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_PARENT_NODE'")]),s._v(")\n")])]),a("h2",[s._v("删除节点")]),a("p",[s._v("删除节点也是执行命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'REMOVE_NODE'")]),s._v(")\n")])]),a("p",[s._v("会删除当前激活的所有节点。")]),a("h2",[s._v("仅删除当前节点")]),a("p",[a("code",[s._v("REMOVE_CURRENT_NODE")]),s._v("命令可以仅删除激活的节点,子节点不会被删除。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'REMOVE_CURRENT_NODE'")]),s._v(")\n")])]),a("h2",[s._v("前进回退")]),a("p",[s._v("首先需要监听"),a("code",[s._v("back_forward")]),s._v("事件,事件回调中可以获取当前的历史记录总数,以及当前所在的历史记录索引,那么就可以判断当前是否处于历史记录的最开始,还是最后,然后对前进回退按钮进行禁用。")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" isStart = ref("),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n"),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" isEnd = ref("),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\nmindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'back_forward'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("index, len")]),s._v(") =>")]),s._v(" {\n isStart.value = index <= "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("\n isEnd.value = index >= len - "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v("\n})\n")])]),a("p",[s._v("然后前进回退调用相关命令即可:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 回退一次")]),s._v("\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'BACK'")]),s._v(")\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 前进一次")]),s._v("\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'FORWARD'")]),s._v(")\n")])]),a("h2",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFVt1qG0cUfpXTLUVykVYy9EqVRBxZpaaxXZTSXmSCWe2OpGl2Z5bdkeRgBCYkkP7RtKWU1tCm0NJetKUXpRCnIS/jtZ236Jmd/dMPWLmKYMXOnHO+78ycM9/OkbHl++ZkTI2G0QztgPkSQirHfptw5vkikHAEAR1UQPBdMeaSOhUIR5brimmPDmAGg0B4UEKEUhaxy7iza/naRIwQp11a9XC26lk+MQgHINylEtSc8mwBH7su4YTXanD519/Rs2+jT764fH4Snfz44viYcFvwUAILb0oLCVoqpbIMxnQjN3W5M29QJAgXPfsGsc6fH5//8/Tih/uXn967uPckevjd5c+/p8GWLdmE7gmHhgiRL6986zbiaJS5RPqWfQc9yxvQasORokpWYtJDaneE51ncKZeub3XeKyHCLAWJ15SCDEQwtQKV9FU47+z3PtrqbRehzr/8Onrwa/TgfvTfT3pJ2U7wkAZSLWYN5J29m93eBwd7+9vdFeh/PloF3Rkx13k5/M67Oze2l1iih49ffP/LPIVDsS/iUqyB3uvu7n/YncfN+rS8HK36jE7T/izHJgDqNsAR9tijXJpDKrsuVa/X7+4gRRLZEVxajNOgtFHRUY4lrYZGVz9iqAliFKb0tKSHUk0T4/zxk2St8QlQv1kCphxtta0B5cr5Vo6xALeSZZHp7PTzi9PfFsnmCVeQ3s5tRb9XlEH6msylcYwz2RMibvD3RcgkExwjSy4dyFIFSjaWDssUR8023tYyAIDtdnHyVfToD52TloOz08/Onv5bbC/ByyWOyAdaEhCwrIYVUP83WCjznoKibJgTyx2rlk39NH3CTmR2+LWOrCZWqnKQqIJiRhM9rIBLeZEVt0DLYMYZ+0GzBfXcA9Vwwd5uKSSowmaam3qaNa36qPc4kBSl2pIURwBNh03Adq0wbBEjyXObeoIYsTlxYE5uzU4JujRraC06pkhSCLdvKRdtJLLZH0spOFyzXWbfQRe1EcSASZUNcPRasl6M0LvXrOmABADxFwGSTZzDwB1RCHEVrkbIVTQHKdYbt3IoR9DGPTfay2K8LkGmpeuzpKJ8NUWupWugF8V4ATovZfrWrBU6BYehvOvqprmW3AGIYdb0hz9RW5OGnmmHITGyM2kWmirt7ilz5KgBm/X6G7EfgJ8d8oAiI2YfG2J9UM/ri82XQuWBVj8U7ljqQMBjMJANqCcjKfx8sEw/omw4Qve36nX/MGVezftmyuxZwZAhb4rqW47D+DCdyFI3k7OwZsabaQZJ0tkYAfEcxzUwKoaugLpqmR+HguPNLobHlosNWIFMvImBFzet2GYNX80AP53Mo6pY1X4gptijCEKMRHxXXOZ07HKpVVSS28yY/Q8ZbqFI"}})])}],e={},v=e,i=t("2877"),l=Object(i["a"])(v,n,_,!1,null,null,null);a["default"]=l.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0afe0d"],{"0fcd":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},_=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("插入/删除节点、前进回退")]),a("p",[s._v("首先和操作节点内容一样,也需要监听节点的激活事件,然后禁用相关按钮。")]),a("p",[s._v("以下命令都支持传递一些参数,详情请参考【API】-【构造函数】-【execCommand方法】小节中该命令的介绍。")]),a("h2",[s._v("插入子节点")]),a("p",[s._v("插入子节点很简单,执行"),a("code",[s._v("INSERT_CHILD_NODE")]),s._v("命令即可:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(")\n")])]),a("p",[s._v("这样就会在当前激活节点(如果存在多个激活节点,默认会操作第一个激活节点)下添加一个子节点。")]),a("p",[s._v("如果你想获取插入节点的实例,可以这样操作:")]),a("p",[s._v("1.需要指定新插入节点的"),a("code",[s._v("id")]),s._v(",比如:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { createUid } "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/utils'")]),s._v("\n\n"),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" uid = createUid()\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", [], {\n uid\n})\n")])]),a("p",[s._v("2.然后在"),a("code",[s._v("node_tree_render_end")]),s._v("事件里通过该"),a("code",[s._v("id")]),s._v("来获取实例:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'node_tree_render_end'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("() =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 调用renderer实例的findNodeByUid方法获取到节点的实例对象")]),s._v("\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" node = mindMap.renderer.findNodeByUid(uid)\n})\n")])]),a("p",[s._v("插入节点的命令也可以传入一定参数,比如创建新节点不想直接进入新节点的编辑模式,那么可以这样调用:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(")\n")])]),a("p",[s._v("如果想给指定的节点插入新节点,而不是当前激活的节点,那么就可以通过第二个参数:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", [node])\n")])]),a("p",[s._v("参数是通过平铺的列表方式传递的,所以前面的参数都不能省略。")]),a("p",[s._v("如果要指定创建的新节点的一些数据,那么可以通过第三个参数:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", [], {\n "),a("span",{staticClass:"hljs-attr"},[s._v("uid")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'指定uid'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'指定初始文本'")]),s._v("\n})\n")])]),a("p",[s._v("最后一个参数可以指定创建新节点的子节点:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_CHILD_NODE'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", [], {\n "),a("span",{staticClass:"hljs-attr"},[s._v("uid")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'指定uid'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'指定初始文本'")]),s._v("\n}, [\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("data")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'下级节点'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-attr"},[s._v("children")]),s._v(": []\n }\n])\n")])]),a("p",[s._v("注意传递的是完整的节点结构数据。")]),a("p",[s._v("其他命令也是类似的,详细可以参考api文档。")]),a("h2",[s._v("插入多个子节点")]),a("p",[s._v("如果你要同时插入多个子节点,那么可以执行"),a("code",[s._v("INSERT_MULTI_CHILD_NODE")]),s._v("命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_MULTI_CHILD_NODE'")]),s._v(", [], childList)\n")])]),a("p",[a("code",[s._v("childList")]),s._v("是要插入的子节点数据的数组,必传。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("[\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("data")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'自定义节点1'")]),s._v("\n }\n }\n]\n")])]),a("h2",[s._v("插入同级节点")]),a("p",[s._v("插入同级节点和插入子节点方式完全一致:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_NODE'")]),s._v(")\n")])]),a("h2",[s._v("插入多个同级节点")]),a("p",[s._v("插入多个同级节点可以执行"),a("code",[s._v("INSERT_MULTI_NODE")]),s._v("命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_NODE'")]),s._v(". [], nodeList)\n")])]),a("p",[a("code",[s._v("nodeList")]),s._v("是要插入的同级节点数据的数组,必传。")]),a("h2",[s._v("插入父节点")]),a("p",[s._v("要插入父节点可以调用"),a("code",[s._v("INSERT_PARENT_NODE")]),s._v("命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_PARENT_NODE'")]),s._v(")\n")])]),a("h2",[s._v("删除节点")]),a("p",[s._v("删除节点也是执行命令:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'REMOVE_NODE'")]),s._v(")\n")])]),a("p",[s._v("会删除当前激活的所有节点。")]),a("h2",[s._v("仅删除当前节点")]),a("p",[a("code",[s._v("REMOVE_CURRENT_NODE")]),s._v("命令可以仅删除激活的节点,子节点不会被删除。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'REMOVE_CURRENT_NODE'")]),s._v(")\n")])]),a("h2",[s._v("前进回退")]),a("p",[s._v("首先需要监听"),a("code",[s._v("back_forward")]),s._v("事件,事件回调中可以获取当前的历史记录总数,以及当前所在的历史记录索引,那么就可以判断当前是否处于历史记录的最开始,还是最后,然后对前进回退按钮进行禁用。")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" isStart = ref("),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n"),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" isEnd = ref("),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\nmindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'back_forward'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("index, len")]),s._v(") =>")]),s._v(" {\n isStart.value = index <= "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("\n isEnd.value = index >= len - "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v("\n})\n")])]),a("p",[s._v("然后前进回退调用相关命令即可:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 回退一次")]),s._v("\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'BACK'")]),s._v(")\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 前进一次")]),s._v("\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'FORWARD'")]),s._v(")\n")])]),a("h2",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFVt1qG0cUfpXTLUVykVYy9EqVRBxZpaaxXZTSXmSCWe2OpGl2Z5bdkeRgBCYkkP7RtKWU1tCm0NJetKUXpRCnIS/jtZ236Jmd/dMPWLmKYMXOnHO+78ycM9/OkbHl++ZkTI2G0QztgPkSQirHfptw5vkikHAEAR1UQPBdMeaSOhUIR5brimmPDmAGg0B4UEKEUhaxy7iza/naRIwQp11a9XC26lk+MQgHINylEtSc8mwBH7su4YTXanD519/Rs2+jT764fH4Snfz44viYcFvwUAILb0oLCVoqpbIMxnQjN3W5M29QJAgXPfsGsc6fH5//8/Tih/uXn967uPckevjd5c+/p8GWLdmE7gmHhgiRL6986zbiaJS5RPqWfQc9yxvQasORokpWYtJDaneE51ncKZeub3XeKyHCLAWJ15SCDEQwtQKV9FU47+z3PtrqbRehzr/8Onrwa/TgfvTfT3pJ2U7wkAZSLWYN5J29m93eBwd7+9vdFeh/PloF3Rkx13k5/M67Oze2l1iih49ffP/LPIVDsS/iUqyB3uvu7n/YncfN+rS8HK36jE7T/izHJgDqNsAR9tijXJpDKrsuVa/X7+4gRRLZEVxajNOgtFHRUY4lrYZGVz9iqAliFKb0tKSHUk0T4/zxk2St8QlQv1kCphxtta0B5cr5Vo6xALeSZZHp7PTzi9PfFsnmCVeQ3s5tRb9XlEH6msylcYwz2RMibvD3RcgkExwjSy4dyFIFSjaWDssUR8023tYyAIDtdnHyVfToD52TloOz08/Onv5bbC/ByyWOyAdaEhCwrIYVUP83WCjznoKibJgTyx2rlk39NH3CTmR2+LWOrCZWqnKQqIJiRhM9rIBLeZEVt0DLYMYZ+0GzBfXcA9Vwwd5uKSSowmaam3qaNa36qPc4kBSl2pIURwBNh03Adq0wbBEjyXObeoIYsTlxYE5uzU4JujRraC06pkhSCLdvKRdtJLLZH0spOFyzXWbfQRe1EcSASZUNcPRasl6M0LvXrOmABADxFwGSTZzDwB1RCHEVrkbIVTQHKdYbt3IoR9DGPTfay2K8LkGmpeuzpKJ8NUWupWugF8V4ATovZfrWrBU6BYehvOvqprmW3AGIYdb0hz9RW5OGnmmHITGyM2kWmirt7ilz5KgBm/X6G7EfgJ8d8oAiI2YfG2J9UM/ri82XQuWBVj8U7ljqQMBjMJANqCcjKfx8sEw/omw4Qve36nX/MGVezftmyuxZwZAhb4rqW47D+DCdyFI3k7OwZsabaQZJ0tkYAfEcxzUwKoaugLpqmR+HguPNLobHlosNWIFMvImBFzet2GYNX80AP53Mo6pY1X4gptijCEKMRHxXXOZ07HKpVVSS28yY/Q8ZbqFI"}})])}],l={},v=l,i=t("2877"),e=Object(i["a"])(v,n,_,!1,null,null,null);a["default"]=e.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c0a44.js b/dist/js/chunk-2d0c0a44.js index f629ef78..139b9617 100644 --- a/dist/js/chunk-2d0c0a44.js +++ b/dist/js/chunk-2d0c0a44.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c0a44"],{"433b":function(v,_,e){"use strict";e.r(_);var o=function(){var v=this;v._self._c;return v._m(0)},t=[function(){var v=this,_=v._self._c;return _("div",[_("h1",[v._v("Node实例")]),_("p",[v._v("每个节点都会实例化一个"),_("code",[v._v("node")]),v._v("实例")]),_("h2",[v._v("属性")]),_("h3",[v._v("nodeData")]),_("p",[v._v("该节点对应的真实数据")]),_("h3",[v._v("uid")]),_("p",[v._v("该节点唯一的标识")]),_("h3",[v._v("isRoot")]),_("p",[v._v("是否是根节点")]),_("h3",[v._v("layerIndex")]),_("p",[v._v("节点层级")]),_("h3",[v._v("width")]),_("p",[v._v("节点的宽")]),_("h3",[v._v("height")]),_("p",[v._v("节点的高")]),_("h3",[v._v("left")]),_("p",[v._v("节点的"),_("code",[v._v("left")]),v._v("位置")]),_("h3",[v._v("top")]),_("p",[v._v("节点的"),_("code",[v._v("top")]),v._v("位置")]),_("h3",[v._v("parent")]),_("p",[v._v("节点的父节点")]),_("h3",[v._v("children")]),_("p",[v._v("节点的子节点列表")]),_("h3",[v._v("group")]),_("p",[v._v("节点是内容容器,"),_("code",[v._v("svg")]),v._v("对象")]),_("h3",[v._v("isDrag")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("节点是否正在拖拽中")]),_("h2",[v._v("方法")]),_("h3",[v._v("getAncestorNodes()")]),_("blockquote",[_("p",[v._v("v0.9.9+")])]),_("p",[v._v("获取祖先节点实例列表。")]),_("h3",[v._v("highlight()")]),_("blockquote",[_("p",[v._v("v0.9.8+")])]),_("p",[v._v("高亮节点。")]),_("h3",[v._v("closeHighlight()")]),_("blockquote",[_("p",[v._v("v0.9.8+")])]),_("p",[v._v("取消高亮节点。")]),_("h3",[v._v("getPureData(removeActiveState = true, removeId = false)")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("ul",[_("li",[_("p",[_("code",[v._v("removeActiveState")]),v._v(":是否移除节点的激活状态")])]),_("li",[_("p",[_("code",[v._v("removeId")]),v._v(":是否移除节点的uid字段")])])]),_("p",[v._v("序列化节点,获取该节点的纯数据,不包含对节点实例的引用。")]),_("h3",[v._v("setGeneralizationOpacity(val)")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("ul",[_("li",[_("code",[v._v("val")]),v._v(":Number, 0-1,透明度")])]),_("p",[v._v("设置概要节点及曲线的透明度。")]),_("h3",[v._v("formatGetGeneralization()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("获取节点概要数据。")]),_("h3",[v._v("getIndexInBrothers()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("获取该节点在兄弟节点列表中的索引。")]),_("h3",[v._v("getRectInSvg()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("获取节点的尺寸和位置信息,宽高是应用了缩放效果后的实际宽高,位置信息相对于画布。")]),_("h3",[v._v("getRect()")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("获取节点的尺寸和位置信息,宽高是应用了缩放效果后的实际宽高,位置是相对于浏览器窗口左上角的位置。")]),_("h3",[v._v("ancestorHasGeneralization()")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("检查是否存在有概要的祖先节点。")]),_("h3",[v._v("getNoteContentPosition()")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("获取节点备注显示位置。当节点存在备注且正在显示状态时,如果拖动或缩放会导致备注浮层和节点脱离,那么可以通过该方法获取新位置更新备注浮层。")]),_("h3",[v._v("updateNodeByActive(active)")]),_("blockquote",[_("p",[v._v("v0.8.0+")])]),_("ul",[_("li",[_("code",[v._v("active")]),v._v(":Boolean,激活状态。")])]),_("p",[v._v("根据是否激活更新节点。主要是更新节点的展开收起按钮的显示隐藏。")]),_("h3",[v._v("setOpacity(val)")]),_("blockquote",[_("p",[v._v("v0.7.2+")])]),_("ul",[_("li",[_("code",[v._v("val")]),v._v(":透明度,0-1")])]),_("p",[v._v("设置节点透明度,包括连接线和下级节点。")]),_("h3",[v._v("hideChildren()")]),_("blockquote",[_("p",[v._v("v0.7.2+")])]),_("p",[v._v("隐藏下级节点。")]),_("h3",[v._v("showChildren()")]),_("blockquote",[_("p",[v._v("v0.7.2+")])]),_("p",[v._v("显示下级节点。")]),_("h3",[v._v("hasCustomStyle()")]),_("blockquote",[_("p",[v._v("v0.6.2+")])]),_("p",[v._v("获取是否设置了自定义样式。")]),_("h3",[v._v("getSize()")]),_("p",[v._v("通过重新创建节点内容更新节点的宽高,返回一个布尔值,代表是否宽高发生了变化")]),_("h3",[v._v("render()")]),_("p",[v._v("递归渲染该节点及其所有子节点")]),_("h3",[v._v("updateNodeShape()")]),_("blockquote",[_("p",[v._v("v0.5.0+")])]),_("p",[v._v("更新节点形状节点。比如当节点状态改变后,调用该方法显示或取消激活样式。")]),_("h3",[v._v("remove()")]),_("p",[v._v("递归删除,只是从画布删除,节点容器还在,后续还可以重新插回画布")]),_("h3",[v._v("destroy()")]),_("blockquote",[_("p",[v._v("v0.5.0+")])]),_("p",[v._v("销毁节点,不但会从画布删除,而且原节点直接置空,后续无法再插回画布")]),_("h3",[v._v("renderLine()")]),_("p",[v._v("重新渲染该节点到其子节点之间的连线")]),_("h3",[v._v("removeLine()")]),_("p",[v._v("移除该节点到其子节点之间的连线")]),_("h3",[v._v("renderExpandBtn()")]),_("p",[v._v("渲染展开收缩按钮的内容")]),_("h3",[v._v("removeExpandBtn()")]),_("p",[v._v("移除展开收缩按钮")]),_("h3",[v._v("getStyle(prop, root, isActive)")]),_("p",[v._v("获取某个最终应用到该节点的样式值")]),_("p",[_("code",[v._v("prop")]),v._v(":要获取的样式属性")]),_("p",[_("code",[v._v("root")]),v._v(":是否是根节点,默认"),_("code",[v._v("false")])]),_("p",[_("code",[v._v("isActive")]),v._v(":v0.7.0+已废弃,获取的是否是激活状态的样式值,默认"),_("code",[v._v("false")])]),_("h3",[v._v("setStyle(prop, value, isActive)")]),_("p",[_("code",[v._v("isActive")]),v._v(":v0.7.0+已废弃")]),_("p",[v._v("修改节点的某个样式,"),_("code",[v._v("SET_NODE_STYLE")]),v._v("命令的快捷方法")]),_("h3",[v._v("setStyles(style, isActive)")]),_("blockquote",[_("p",[v._v("v0.6.12+")])]),_("p",[_("code",[v._v("isActive")]),v._v(":v0.7.0+已废弃")]),_("p",[v._v("修改节点多个样式,"),_("code",[v._v("SET_NODE_STYLES")]),v._v("命令的快捷方法")]),_("h3",[v._v("getData(key)")]),_("p",[v._v("获取该节点真实数据"),_("code",[v._v("nodeData")]),v._v("的"),_("code",[v._v("data")]),v._v("对象里的指定值,"),_("code",[v._v("key")]),v._v("不传返回这个"),_("code",[v._v("data")]),v._v("对象")]),_("h3",[v._v("setData(data)")]),_("p",[v._v("设置节点数据,"),_("code",[v._v("SET_NODE_DATA")]),v._v("命令的快捷方法,这个方法和命令不会更新视图,所以如果你要修改文本,就使用"),_("code",[v._v("setText")]),v._v("方法,或者用手指文本的命令。")]),_("h3",[v._v("setText(text, richText, resetRichText)")]),_("ul",[_("li",[_("p",[_("code",[v._v("richText")]),v._v(":v0.4.2+,"),_("code",[v._v("Boolean")]),v._v(",如果要设置的是富文本内容,也就是"),_("code",[v._v("html")]),v._v("字符,"),_("code",[v._v("richText")]),v._v("需要传"),_("code",[v._v("true")]),v._v("。在v0.9.3+版本后该参数不传会默认使用之前的值。")])]),_("li",[_("p",[_("code",[v._v("resetRichText")]),v._v(":v0.6.10+,"),_("code",[v._v("Boolean")]),v._v(",是否要复位富文本,默认为"),_("code",[v._v("false")]),v._v(",如果传"),_("code",[v._v("true")]),v._v("那么会重置富文本节点的样式")])])]),_("p",[v._v("设置节点文本,"),_("code",[v._v("SET_NODE_TEXT")]),v._v("命令的快捷方法")]),_("h3",[v._v("setImage(imgData)")]),_("p",[v._v("设置节点图片,"),_("code",[v._v("SET_NODE_IMAGE")]),v._v("命令的快捷方法")]),_("h3",[v._v("setIcon(icons)")]),_("p",[v._v("设置节点图标,"),_("code",[v._v("SET_NODE_ICON")]),v._v("命令的快捷方法")]),_("h3",[v._v("setHyperlink(link, title)")]),_("p",[v._v("设置节点超链接,"),_("code",[v._v("SET_NODE_HYPERLINK")]),v._v("命令的快捷方法")]),_("h3",[v._v("setNote(note)")]),_("p",[v._v("设置节点备注,"),_("code",[v._v("SET_NODE_NOTE")]),v._v("命令的快捷方法")]),_("h3",[v._v("setAttachment(url, name)")]),_("blockquote",[_("p",[v._v("v0.9.10+")])]),_("ul",[_("li",[_("p",[_("code",[v._v("url")]),v._v(":附件的url;")])]),_("li",[_("p",[_("code",[v._v("name")]),v._v(":附件的名称,可选")])])]),_("p",[v._v("设置节点附件,"),_("code",[v._v("SET_NODE_ATTACHMENT")]),v._v("命令的快捷方法")]),_("h3",[v._v("setTag(tag)")]),_("p",[v._v("设置节点标签,"),_("code",[v._v("SET_NODE_TAG")]),v._v("的快捷方法")]),_("h3",[v._v("hide()")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("隐藏节点及其下级节点")]),_("h3",[v._v("show()")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("显示节点及其下级节点")]),_("h3",[v._v("isParent(node)")]),_("blockquote",[_("p",[v._v("v0.1.5+:检测当前节点是否是某个节点的祖先节点")])]),_("blockquote",[_("p",[v._v("v0.8.1+:检测当前节点是否是某个节点的父节点")])]),_("h3",[v._v("isAncestor(node)")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("检测当前节点是否是某个节点的祖先节点")]),_("h3",[v._v("isBrother(node)")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("检测当前节点是否是某个节点的兄弟节点")]),_("h3",[v._v("checkHasGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("检查是否存在概要")]),_("h3",[v._v("checkHasSelfGeneralization()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("检查是否存在自身的概要,非子节点区间概要")]),_("h3",[v._v("hideGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("隐藏概要节点")]),_("h3",[v._v("showGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("显示概要节点")]),_("h3",[v._v("updateGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("更新概要节点")]),_("h3",[v._v("hasCustomPosition()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("检查节点是否存在自定义数据")]),_("h3",[v._v("ancestorHasCustomPosition()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("检查节点是否存在自定义位置的祖先节点")]),_("h3",[v._v("getShape()")]),_("blockquote",[_("p",[v._v("v0.2.4+")])]),_("p",[v._v("获取节点形状")]),_("h3",[v._v("setShape(shape)")]),_("blockquote",[_("p",[v._v("v0.2.4+")])]),_("p",[v._v("设置节点形状,"),_("code",[v._v("SET_NODE_SHAPE")]),v._v("命令的快捷方法")]),_("h3",[v._v("getSelfStyle(prop)")]),_("blockquote",[_("p",[v._v("v0.2.5+")])]),_("p",[v._v("获取节点自身的自定义样式")]),_("h3",[v._v("getParentSelfStyle(prop)")]),_("blockquote",[_("p",[v._v("v0.2.5+")])]),_("p",[v._v("获取最近一个存在自身自定义样式的祖先节点的自定义样式")]),_("h3",[v._v("getSelfInhertStyle(prop)")]),_("blockquote",[_("p",[v._v("v0.2.5+")])]),_("p",[v._v("获取自身可继承的自定义样式")])])}],p={},c=p,l=e("2877"),h=Object(l["a"])(c,o,t,!1,null,null,null);_["default"]=h.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c0a44"],{"433b":function(v,_,e){"use strict";e.r(_);var o=function(){var v=this;v._self._c;return v._m(0)},t=[function(){var v=this,_=v._self._c;return _("div",[_("h1",[v._v("Node实例")]),_("p",[v._v("每个节点都会实例化一个"),_("code",[v._v("node")]),v._v("实例")]),_("h2",[v._v("属性")]),_("h3",[v._v("nodeData")]),_("p",[v._v("该节点对应的真实数据")]),_("h3",[v._v("uid")]),_("p",[v._v("该节点唯一的标识")]),_("h3",[v._v("isRoot")]),_("p",[v._v("是否是根节点")]),_("h3",[v._v("layerIndex")]),_("p",[v._v("节点层级")]),_("h3",[v._v("width")]),_("p",[v._v("节点的宽")]),_("h3",[v._v("height")]),_("p",[v._v("节点的高")]),_("h3",[v._v("left")]),_("p",[v._v("节点的"),_("code",[v._v("left")]),v._v("位置")]),_("h3",[v._v("top")]),_("p",[v._v("节点的"),_("code",[v._v("top")]),v._v("位置")]),_("h3",[v._v("parent")]),_("p",[v._v("节点的父节点")]),_("h3",[v._v("children")]),_("p",[v._v("节点的子节点列表")]),_("h3",[v._v("group")]),_("p",[v._v("节点是内容容器,"),_("code",[v._v("svg")]),v._v("对象")]),_("h3",[v._v("isDrag")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("节点是否正在拖拽中")]),_("h2",[v._v("方法")]),_("h3",[v._v("deactivate()")]),_("blockquote",[_("p",[v._v("0.9.11+")])]),_("p",[v._v("取消激活该节点。")]),_("h3",[v._v("getAncestorNodes()")]),_("blockquote",[_("p",[v._v("v0.9.9+")])]),_("p",[v._v("获取祖先节点实例列表。")]),_("h3",[v._v("highlight()")]),_("blockquote",[_("p",[v._v("v0.9.8+")])]),_("p",[v._v("高亮节点。")]),_("h3",[v._v("closeHighlight()")]),_("blockquote",[_("p",[v._v("v0.9.8+")])]),_("p",[v._v("取消高亮节点。")]),_("h3",[v._v("getPureData(removeActiveState = true, removeId = false)")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("ul",[_("li",[_("p",[_("code",[v._v("removeActiveState")]),v._v(":是否移除节点的激活状态")])]),_("li",[_("p",[_("code",[v._v("removeId")]),v._v(":是否移除节点的uid字段")])])]),_("p",[v._v("序列化节点,获取该节点的纯数据,不包含对节点实例的引用。")]),_("h3",[v._v("setGeneralizationOpacity(val)")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("ul",[_("li",[_("code",[v._v("val")]),v._v(":Number, 0-1,透明度")])]),_("p",[v._v("设置概要节点及曲线的透明度。")]),_("h3",[v._v("formatGetGeneralization()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("获取节点概要数据。")]),_("h3",[v._v("getIndexInBrothers()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("获取该节点在兄弟节点列表中的索引。")]),_("h3",[v._v("getRectInSvg()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("获取节点的尺寸和位置信息,宽高是应用了缩放效果后的实际宽高,位置信息相对于画布。")]),_("h3",[v._v("getRect()")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("获取节点的尺寸和位置信息,宽高是应用了缩放效果后的实际宽高,位置是相对于浏览器窗口左上角的位置。")]),_("h3",[v._v("ancestorHasGeneralization()")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("检查是否存在有概要的祖先节点。")]),_("h3",[v._v("getNoteContentPosition()")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("获取节点备注显示位置。当节点存在备注且正在显示状态时,如果拖动或缩放会导致备注浮层和节点脱离,那么可以通过该方法获取新位置更新备注浮层。")]),_("h3",[v._v("updateNodeByActive(active)")]),_("blockquote",[_("p",[v._v("v0.8.0+")])]),_("ul",[_("li",[_("code",[v._v("active")]),v._v(":Boolean,激活状态。")])]),_("p",[v._v("根据是否激活更新节点。主要是更新节点的展开收起按钮的显示隐藏。")]),_("h3",[v._v("setOpacity(val)")]),_("blockquote",[_("p",[v._v("v0.7.2+")])]),_("ul",[_("li",[_("code",[v._v("val")]),v._v(":透明度,0-1")])]),_("p",[v._v("设置节点透明度,包括连接线和下级节点。")]),_("h3",[v._v("hideChildren()")]),_("blockquote",[_("p",[v._v("v0.7.2+")])]),_("p",[v._v("隐藏下级节点。")]),_("h3",[v._v("showChildren()")]),_("blockquote",[_("p",[v._v("v0.7.2+")])]),_("p",[v._v("显示下级节点。")]),_("h3",[v._v("hasCustomStyle()")]),_("blockquote",[_("p",[v._v("v0.6.2+")])]),_("p",[v._v("获取是否设置了自定义样式。")]),_("h3",[v._v("getSize()")]),_("p",[v._v("通过重新创建节点内容更新节点的宽高,返回一个布尔值,代表是否宽高发生了变化")]),_("h3",[v._v("render()")]),_("p",[v._v("递归渲染该节点及其所有子节点")]),_("h3",[v._v("updateNodeShape()")]),_("blockquote",[_("p",[v._v("v0.5.0+")])]),_("p",[v._v("更新节点形状节点。比如当节点状态改变后,调用该方法显示或取消激活样式。")]),_("h3",[v._v("remove()")]),_("p",[v._v("递归删除,只是从画布删除,节点容器还在,后续还可以重新插回画布")]),_("h3",[v._v("destroy()")]),_("blockquote",[_("p",[v._v("v0.5.0+")])]),_("p",[v._v("销毁节点,不但会从画布删除,而且原节点直接置空,后续无法再插回画布")]),_("h3",[v._v("renderLine()")]),_("p",[v._v("重新渲染该节点到其子节点之间的连线")]),_("h3",[v._v("removeLine()")]),_("p",[v._v("移除该节点到其子节点之间的连线")]),_("h3",[v._v("renderExpandBtn()")]),_("p",[v._v("渲染展开收缩按钮的内容")]),_("h3",[v._v("removeExpandBtn()")]),_("p",[v._v("移除展开收缩按钮")]),_("h3",[v._v("getStyle(prop, root, isActive)")]),_("p",[v._v("获取某个最终应用到该节点的样式值")]),_("p",[_("code",[v._v("prop")]),v._v(":要获取的样式属性")]),_("p",[_("code",[v._v("root")]),v._v(":是否是根节点,默认"),_("code",[v._v("false")])]),_("p",[_("code",[v._v("isActive")]),v._v(":v0.7.0+已废弃,获取的是否是激活状态的样式值,默认"),_("code",[v._v("false")])]),_("h3",[v._v("setStyle(prop, value, isActive)")]),_("p",[_("code",[v._v("isActive")]),v._v(":v0.7.0+已废弃")]),_("p",[v._v("修改节点的某个样式,"),_("code",[v._v("SET_NODE_STYLE")]),v._v("命令的快捷方法")]),_("h3",[v._v("setStyles(style, isActive)")]),_("blockquote",[_("p",[v._v("v0.6.12+")])]),_("p",[_("code",[v._v("isActive")]),v._v(":v0.7.0+已废弃")]),_("p",[v._v("修改节点多个样式,"),_("code",[v._v("SET_NODE_STYLES")]),v._v("命令的快捷方法")]),_("h3",[v._v("getData(key)")]),_("p",[v._v("获取该节点真实数据"),_("code",[v._v("nodeData")]),v._v("的"),_("code",[v._v("data")]),v._v("对象里的指定值,"),_("code",[v._v("key")]),v._v("不传返回这个"),_("code",[v._v("data")]),v._v("对象")]),_("h3",[v._v("setData(data)")]),_("p",[v._v("设置节点数据,"),_("code",[v._v("SET_NODE_DATA")]),v._v("命令的快捷方法,这个方法和命令不会更新视图,所以如果你要修改文本,就使用"),_("code",[v._v("setText")]),v._v("方法,或者用手指文本的命令。")]),_("h3",[v._v("setText(text, richText, resetRichText)")]),_("ul",[_("li",[_("p",[_("code",[v._v("richText")]),v._v(":v0.4.2+,"),_("code",[v._v("Boolean")]),v._v(",如果要设置的是富文本内容,也就是"),_("code",[v._v("html")]),v._v("字符,"),_("code",[v._v("richText")]),v._v("需要传"),_("code",[v._v("true")]),v._v("。在v0.9.3+版本后该参数不传会默认使用之前的值。")])]),_("li",[_("p",[_("code",[v._v("resetRichText")]),v._v(":v0.6.10+,"),_("code",[v._v("Boolean")]),v._v(",是否要复位富文本,默认为"),_("code",[v._v("false")]),v._v(",如果传"),_("code",[v._v("true")]),v._v("那么会重置富文本节点的样式")])])]),_("p",[v._v("设置节点文本,"),_("code",[v._v("SET_NODE_TEXT")]),v._v("命令的快捷方法")]),_("h3",[v._v("setImage(imgData)")]),_("p",[v._v("设置节点图片,"),_("code",[v._v("SET_NODE_IMAGE")]),v._v("命令的快捷方法")]),_("h3",[v._v("setIcon(icons)")]),_("p",[v._v("设置节点图标,"),_("code",[v._v("SET_NODE_ICON")]),v._v("命令的快捷方法")]),_("h3",[v._v("setHyperlink(link, title)")]),_("p",[v._v("设置节点超链接,"),_("code",[v._v("SET_NODE_HYPERLINK")]),v._v("命令的快捷方法")]),_("h3",[v._v("setNote(note)")]),_("p",[v._v("设置节点备注,"),_("code",[v._v("SET_NODE_NOTE")]),v._v("命令的快捷方法")]),_("h3",[v._v("setAttachment(url, name)")]),_("blockquote",[_("p",[v._v("v0.9.10+")])]),_("ul",[_("li",[_("p",[_("code",[v._v("url")]),v._v(":附件的url;")])]),_("li",[_("p",[_("code",[v._v("name")]),v._v(":附件的名称,可选")])])]),_("p",[v._v("设置节点附件,"),_("code",[v._v("SET_NODE_ATTACHMENT")]),v._v("命令的快捷方法")]),_("h3",[v._v("setTag(tag)")]),_("p",[v._v("设置节点标签,"),_("code",[v._v("SET_NODE_TAG")]),v._v("的快捷方法")]),_("h3",[v._v("hide()")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("隐藏节点及其下级节点")]),_("h3",[v._v("show()")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("显示节点及其下级节点")]),_("h3",[v._v("isParent(node)")]),_("blockquote",[_("p",[v._v("v0.1.5+:检测当前节点是否是某个节点的祖先节点")])]),_("blockquote",[_("p",[v._v("v0.8.1+:检测当前节点是否是某个节点的父节点")])]),_("h3",[v._v("isAncestor(node)")]),_("blockquote",[_("p",[v._v("v0.8.1+")])]),_("p",[v._v("检测当前节点是否是某个节点的祖先节点")]),_("h3",[v._v("isBrother(node)")]),_("blockquote",[_("p",[v._v("v0.1.5+")])]),_("p",[v._v("检测当前节点是否是某个节点的兄弟节点")]),_("h3",[v._v("checkHasGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("检查是否存在概要")]),_("h3",[v._v("checkHasSelfGeneralization()")]),_("blockquote",[_("p",[v._v("v0.9.0+")])]),_("p",[v._v("检查是否存在自身的概要,非子节点区间概要")]),_("h3",[v._v("hideGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("隐藏概要节点")]),_("h3",[v._v("showGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("显示概要节点")]),_("h3",[v._v("updateGeneralization()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("更新概要节点")]),_("h3",[v._v("hasCustomPosition()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("检查节点是否存在自定义数据")]),_("h3",[v._v("ancestorHasCustomPosition()")]),_("blockquote",[_("p",[v._v("v0.2.0+")])]),_("p",[v._v("检查节点是否存在自定义位置的祖先节点")]),_("h3",[v._v("getShape()")]),_("blockquote",[_("p",[v._v("v0.2.4+")])]),_("p",[v._v("获取节点形状")]),_("h3",[v._v("setShape(shape)")]),_("blockquote",[_("p",[v._v("v0.2.4+")])]),_("p",[v._v("设置节点形状,"),_("code",[v._v("SET_NODE_SHAPE")]),v._v("命令的快捷方法")]),_("h3",[v._v("getSelfStyle(prop)")]),_("blockquote",[_("p",[v._v("v0.2.5+")])]),_("p",[v._v("获取节点自身的自定义样式")]),_("h3",[v._v("getParentSelfStyle(prop)")]),_("blockquote",[_("p",[v._v("v0.2.5+")])]),_("p",[v._v("获取最近一个存在自身自定义样式的祖先节点的自定义样式")]),_("h3",[v._v("getSelfInhertStyle(prop)")]),_("blockquote",[_("p",[v._v("v0.2.5+")])]),_("p",[v._v("获取自身可继承的自定义样式")])])}],p={},c=p,l=e("2877"),h=Object(l["a"])(c,o,t,!1,null,null,null);_["default"]=h.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c191e.js b/dist/js/chunk-2d0c191e.js index 12a85e43..c9e606c8 100644 --- a/dist/js/chunk-2d0c191e.js +++ b/dist/js/chunk-2d0c191e.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c191e"],{4738:function(v,t,e){"use strict";e.r(t);var s=function(){var v=this;v._self._c;return v._m(0)},_=[function(){var v=this,t=v._self._c;return t("div",[t("h1",[v._v("内置工具方法")]),t("h2",[v._v("基础工具方法")]),t("p",[v._v("引用:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" {walk, ...} "),t("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),t("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/utils'")]),v._v("\n")])]),t("h3",[v._v("方法")]),t("h4",[v._v("resizeImgSizeByOriginRatio(width, height, newWidth, newHeight)")]),t("blockquote",[t("p",[v._v("v0.6.5+")])]),t("p",[t("code",[v._v("width")]),v._v(": 图片原始的宽度")]),t("p",[t("code",[v._v("height")]),v._v(":图片原始的高度")]),t("p",[t("code",[v._v("newWidth")]),v._v(":要缩放到的宽度")]),t("p",[t("code",[v._v("newHeight")]),v._v(":要缩放到的高度")]),t("p",[v._v("按比例缩放图片。在保持图片原始宽高比的情况下缩放到指定的"),t("code",[v._v("newWidth")]),v._v("、"),t("code",[v._v("newHeight")]),v._v("大小。")]),t("h4",[v._v("walk(root, parent, beforeCallback, afterCallback, isRoot, layerIndex = 0, index = 0)")]),t("p",[v._v("深度优先遍历树")]),t("p",[t("code",[v._v("root")]),v._v(":要遍历的树的根节点")]),t("p",[t("code",[v._v("parent")]),v._v(":父节点")]),t("p",[t("code",[v._v("beforeCallback")]),v._v(":前序遍历回调函数,回调参数为:root, parent, isRoot, layerIndex, index")]),t("p",[t("code",[v._v("afterCallback")]),v._v(":后序遍历回调函数,回调参数为:root, parent, isRoot, layerIndex, index")]),t("p",[t("code",[v._v("isRoot")]),v._v(":是否是根节点")]),t("p",[t("code",[v._v("layerIndex")]),v._v(":节点层级")]),t("p",[t("code",[v._v("index")]),v._v(":节点在同级节点里的索引")]),t("p",[v._v("示例:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("walk(\n tree,\n "),t("span",{staticClass:"hljs-literal"},[v._v("null")]),v._v(",\n "),t("span",{staticClass:"hljs-function"},[v._v("() =>")]),v._v(" {},\n "),t("span",{staticClass:"hljs-function"},[v._v("() =>")]),v._v(" {},\n "),t("span",{staticClass:"hljs-literal"},[v._v("false")]),v._v(",\n "),t("span",{staticClass:"hljs-number"},[v._v("0")]),v._v(",\n "),t("span",{staticClass:"hljs-number"},[v._v("0")]),v._v("\n)\n")])]),t("h4",[v._v("bfsWalk(root, callback)")]),t("p",[v._v("广度优先遍历树")]),t("h4",[v._v("resizeImgSize(width, height, maxWidth, maxHeight)")]),t("p",[v._v("缩放图片的尺寸")]),t("p",[t("code",[v._v("width")]),v._v(":图片原本的宽")]),t("p",[t("code",[v._v("height")]),v._v(":图片原本的高")]),t("p",[t("code",[v._v("maxWidth")]),v._v(":要缩放到的宽")]),t("p",[t("code",[v._v("maxHeight")]),v._v(":要缩放到的高")]),t("p",[t("code",[v._v("maxWidth")]),v._v("和"),t("code",[v._v("maxHeight")]),v._v("可以同时都传,也可以只传一个")]),t("h4",[v._v("resizeImg(imgUrl, maxWidth, maxHeight)")]),t("p",[v._v("缩放图片,内部先加载图片,然后调用"),t("code",[v._v("resizeImgSize")]),v._v("方法,返回一个"),t("code",[v._v("promise")])]),t("h4",[v._v("simpleDeepClone(data)")]),t("p",[v._v("极简的深拷贝方法,只能针对全是基本数据的对象,否则会报错")]),t("h4",[v._v("copyRenderTree(tree, root)")]),t("p",[v._v("复制渲染树数据,示例:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("copyRenderTree({}, "),t("span",{staticClass:"hljs-built_in"},[v._v("this")]),v._v(".mindMap.renderer.renderTree)\n")])]),t("h4",[v._v("copyNodeTree(tree, root, removeActiveState, removeId)")]),t("ul",[t("li",[t("p",[t("code",[v._v("removeActiveState")]),v._v(":"),t("code",[v._v("Boolean")]),v._v(",默认为"),t("code",[v._v("false")]),v._v(",是否移除节点的激活状态")])]),t("li",[t("p",[t("code",[v._v("removeId")]),v._v(":v0.7.3-fix.1+,是否移除节点数据中的 uid,默认为"),t("code",[v._v("true")])])])]),t("blockquote",[t("ul",[t("li",[t("code",[v._v("keepId")]),v._v(": (原第四个参数)"),t("code",[v._v("Boolean")]),v._v(",默认为"),t("code",[v._v("false")]),v._v(",是否保留被复制节点的"),t("code",[v._v("id")]),v._v(",默认会删除"),t("code",[v._v("id")]),v._v("防止节点"),t("code",[v._v("id")]),v._v("重复,但是对于移动节点的场景,节点原"),t("code",[v._v("id")]),v._v("需要保留。")])])]),t("p",[v._v("复制节点树数据,主要是剔除其中的引用"),t("code",[v._v("node")]),v._v("实例的"),t("code",[v._v("_node")]),v._v(",然后复制"),t("code",[v._v("data")]),v._v("对象的数据,示例:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("copyNodeTree({}, node)\n")])]),t("h4",[v._v("imgToDataUrl(src)")]),t("p",[v._v("图片转成 dataURL")]),t("h4",[v._v("downloadFile(file, fileName)")]),t("p",[v._v("下载文件")]),t("h4",[v._v("throttle(fn, time = 300, ctx)")]),t("p",[v._v("节流函数")]),t("h4",[v._v("asyncRun(taskList, callback = () => {})")]),t("p",[v._v("异步执行任务队列,多个任务是同步执行的,没有先后顺序")]),t("h4",[v._v("degToRad(deg)")]),t("blockquote",[t("p",[v._v("v0.2.24+")])]),t("p",[v._v("角度转弧度")]),t("h4",[v._v("camelCaseToHyphen(str)")]),t("blockquote",[t("p",[v._v("v0.2.24+")])]),t("p",[v._v("驼峰转连字符")]),t("h4",[v._v("joinFontStr({ italic, bold, fontSize, fontFamily })")]),t("blockquote",[t("p",[v._v("v0.3.4+")])]),t("p",[v._v("拼接"),t("code",[v._v("css")]),v._v("字体的"),t("code",[v._v("font")]),v._v("属性值")]),t("h4",[v._v("measureText(text, { italic, bold, fontSize, fontFamily })")]),t("blockquote",[t("p",[v._v("v0.3.4+")])]),t("p",[v._v("测量文本的宽高,返回值:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("{\n width, height\n}\n")])]),t("h4",[v._v("getTextFromHtml(html)")]),t("p",[v._v("提取 html 字符串里的纯文本内容。")]),t("h4",[v._v("readBlob(blob)")]),t("blockquote",[t("p",[v._v("v0.5.9+")])]),t("p",[v._v("将"),t("code",[v._v("blob")]),v._v("数据转成"),t("code",[v._v("data:url")]),v._v("数据。")]),t("h4",[v._v("parseDataUrl(data)")]),t("blockquote",[t("p",[v._v("v0.6.6+")])]),t("p",[v._v("解析"),t("code",[v._v("data:url")]),v._v("数据,返回:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("{\n type, "),t("span",{staticClass:"hljs-comment"},[v._v("// 数据的文件类型")]),v._v("\n base64 "),t("span",{staticClass:"hljs-comment"},[v._v("// base64数据")]),v._v("\n}\n")])]),t("h4",[v._v("getImageSize(src)")]),t("blockquote",[t("p",[v._v("v0.6.6+")])]),t("ul",[t("li",[t("code",[v._v("src")]),v._v(":图片的 url")])]),t("p",[v._v("获取图片的大小。返回:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("{\n width, height\n}\n")])]),t("h4",[v._v("loadImage(imgFile)")]),t("blockquote",[t("p",[v._v("v0.6.8+")])]),t("ul",[t("li",[t("code",[v._v("imgFile")]),v._v(":图片类型的 File 对象")])]),t("p",[v._v("加载图片,返回:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("{\n url, "),t("span",{staticClass:"hljs-comment"},[v._v("// DataUrl")]),v._v("\n size "),t("span",{staticClass:"hljs-comment"},[v._v("// { width, height } 图片宽高")]),v._v("\n}\n")])]),t("h4",[v._v("getType(data)")]),t("blockquote",[t("p",[v._v("v0.6.9+")])]),t("p",[v._v("获取一个数据的类型,比如"),t("code",[v._v("Boolean")]),v._v("、"),t("code",[v._v("Array")]),v._v("等。")]),t("h4",[v._v("removeHtmlStyle(html)")]),t("blockquote",[t("p",[v._v("v0.6.10+")])]),t("p",[v._v("移除 html 字符串中节点的内联样式。")]),t("h4",[v._v("addHtmlStyle(html, tag, style)")]),t("blockquote",[t("p",[v._v("v0.6.10+")])]),t("p",[v._v("给 html 标签中指定的标签添加内联样式。")]),t("h4",[v._v("checkIsRichText(str)")]),t("blockquote",[t("p",[v._v("v0.6.10+")])]),t("p",[v._v("检查一个字符串是否是富文本字符。")]),t("h4",[v._v("isWhite(color)")]),t("blockquote",[t("p",[v._v("v0.6.11+")])]),t("p",[v._v("判断一个颜色是否是白色。")]),t("h4",[v._v("isTransparent(color)")]),t("blockquote",[t("p",[v._v("v0.6.11+")])]),t("p",[v._v("判断一个颜色是否是透明。")]),t("h4",[v._v("nodeRichTextToTextWithWrap(html)")]),t("blockquote",[t("p",[v._v("v0.6.12+")])]),t("p",[v._v("将"),t("code",[v._v("

")]),v._v("形式的节点富文本内容转换成"),t("code",[v._v("\\n")]),v._v("换行的文本。")]),t("h4",[v._v("textToNodeRichTextWithWrap(html)")]),t("blockquote",[t("p",[v._v("v0.6.12+")])]),t("p",[v._v("将"),t("code",[v._v("
")]),v._v("换行的文本转换成"),t("code",[v._v("

")]),v._v("形式的节点富文本内容。")]),t("h4",[v._v("isMobile()")]),t("blockquote",[t("p",[v._v("v0.6.13+")])]),t("p",[v._v("判断是否是移动端环境。")]),t("h4",[v._v("getTopAncestorsFomNodeList(list)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("list")]),v._v(":Arrray,节点实例列表。")])]),t("p",[v._v("从节点实例列表里找出最顶层的节点列表。")]),t("h4",[v._v("checkTwoRectIsOverlap(minx1, maxx1, miny1, maxy1, minx2, maxx2, miny2, maxy2)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("p",[v._v("参数为两个矩形的位置。")]),t("p",[v._v("判断两个矩形是否重叠。")]),t("h4",[v._v("focusInput(el)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("el")]),v._v(":DOM 节点,可聚焦的元素,一般为输入框元素。")])]),t("p",[v._v("聚焦指定输入框。")]),t("h4",[v._v("selectAllInput(el)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("el")]),v._v(":DOM 节点,可聚焦的元素,一般为输入框元素。")])]),t("p",[v._v("聚焦并全选指定输入框。")]),t("h4",[v._v("addDataToAppointNodes(appointNodes, data = {})")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("p",[t("code",[v._v("appointNodes")]),v._v(":节点实例列表,数组类型。")])]),t("li",[t("p",[t("code",[v._v("data")]),v._v(":要附加到指定节点实例列表树中所有节点的数据中的数据。")])])]),t("p",[v._v("给指定的节点列表树数据添加附加数据,会修改原数据。")]),t("h4",[v._v("createUidForAppointNodes(appointNodes, createNewId)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("p",[t("code",[v._v("appointNodes")]),v._v(":节点实例列表,数组类型。")])]),t("li",[t("p",[t("code",[v._v("createNewId")]),v._v(":v0.7.3-fix.1+,"),t("code",[v._v("Boolean")]),v._v(",默认为"),t("code",[v._v("false")]),v._v(",即如果节点不存在"),t("code",[v._v("uid")]),v._v("的话,会创建新的"),t("code",[v._v("uid")]),v._v("。如果传"),t("code",[v._v("true")]),v._v(",那么无论节点数据原来是否存在"),t("code",[v._v("uid")]),v._v(",都会创建新的"),t("code",[v._v("uid")])])])]),t("p",[v._v("给指定的节点列表树数据添加 uid(如果 uid 不存在的话),会修改原数据。")]),t("h4",[v._v("getNodeIndex(node)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("node")]),v._v(":节点实例。")])]),t("p",[v._v("获取节点在同级里的位置索引。")]),t("h4",[v._v("mergerIconList(list)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("list")]),v._v(":要合并到库内部的节点图标数组。")])]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-comment"},[v._v("// const data = [")]),v._v("\n"),t("span",{staticClass:"hljs-comment"},[v._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'b' }] },")]),v._v("\n"),t("span",{staticClass:"hljs-comment"},[v._v("// { type: 'priority', name: '优先级图标', list: [{ name: '2', icon: 'c' }, { name: 3, icon: 'd' }] },")]),v._v("\n"),t("span",{staticClass:"hljs-comment"},[v._v("// ];")]),v._v("\n\n"),t("span",{staticClass:"hljs-comment"},[v._v("// mergerIconList(data) 结果")]),v._v("\n\n"),t("span",{staticClass:"hljs-comment"},[v._v("// [")]),v._v("\n"),t("span",{staticClass:"hljs-comment"},[v._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'c' }, { name: 3, icon: 'd' }] },")]),v._v("\n"),t("span",{staticClass:"hljs-comment"},[v._v("// ]")]),v._v("\n")])]),t("p",[v._v("合并图标数组。")]),t("h4",[v._v("generateColorByContent(str)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("str")]),v._v(":字符串。")])]),t("p",[v._v("根据传入的内容生成颜色,同样的内容会生成同样的颜色。")]),t("h4",[v._v("htmlEscape(str)")]),t("blockquote",[t("p",[v._v("v0.7.2+")])]),t("ul",[t("li",[t("code",[v._v("str")]),v._v(":字符串。")])]),t("p",[v._v("转义传入的字符串,目前会转义如下三个字符:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("& -> &\n< -> <\n> -> >\n")])]),t("h4",[v._v("isSameObject(a, b)")]),t("blockquote",[t("p",[v._v("v0.7.3+")])]),t("ul",[t("li",[t("code",[v._v("a")]),v._v("、"),t("code",[v._v("b")]),v._v(":Object | Array, 要进行对比的两个对象")])]),t("p",[v._v("判断两个对象是否相同,只处理对象或数组。")]),t("h4",[v._v("getNodeDataIndex(node)")]),t("blockquote",[t("p",[v._v("v0.8.0+")])]),t("p",[v._v("获取节点在兄弟节点中的位置索引。")]),t("h4",[v._v("getNodeIndexInNodeList(node, nodeList)")]),t("blockquote",[t("p",[v._v("v0.8.0+")])]),t("p",[v._v("从一个节点列表里找出某个节点的索引。")]),t("h4",[v._v("setDataToClipboard(data)")]),t("blockquote",[t("p",[v._v("v0.8.0+")])]),t("ul",[t("li",[t("code",[v._v("data")]),v._v(":Object | Array")])]),t("p",[v._v("将数据设置到用户剪切板中。")]),t("h4",[v._v("getDataFromClipboard()")]),t("blockquote",[t("p",[v._v("v0.8.0+")])]),t("p",[v._v("从用户剪贴板中读取文字和图片,返回:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("{\n text, img\n}\n")])]),t("h4",[v._v("removeFromParentNodeData(node)")]),t("blockquote",[t("p",[v._v("v0.8.0+")])]),t("p",[v._v("从节点的父节点的"),t("code",[v._v("nodeData.children")]),v._v("列表中移除该节点的数据。")]),t("h4",[v._v("checkHasSupSubRelation()")]),t("blockquote",[t("p",[v._v("v0.8.1+")])]),t("p",[v._v("从给定的节点实例列表里判断是否存在上下级关系。")]),t("h4",[v._v("handleSelfCloseTags(str)")]),t("blockquote",[t("p",[v._v("v0.9.1+")])]),t("ul",[t("li",[t("code",[v._v("str")]),v._v(":html 字符串")])]),t("p",[v._v("给 html 自闭合标签添加闭合状态,"),t("code",[v._v('

')]),v._v(" -> "),t("code",[v._v('
')]),v._v("。")]),t("h4",[v._v("checkNodeListIsEqual(list1, list2)")]),t("blockquote",[t("p",[v._v("v0.9.1+")])]),t("ul",[t("li",[t("code",[v._v("list1/list2")]),v._v(":节点实例列表")])]),t("p",[v._v("检查两个节点实例列表包含的节点是否是一样的。")]),t("h4",[v._v("getChromeVersion()")]),t("blockquote",[t("p",[v._v("v0.9.3+")])]),t("p",[v._v("获取当前浏览器使用的"),t("code",[v._v("Chrome")]),v._v("内核版本。如果当前浏览器使用的不是 "),t("code",[v._v("Chrome")]),v._v("内核,那么会返回空字符串。")]),t("h4",[v._v("transformTreeDataToObject(data)")]),t("blockquote",[t("p",[v._v("v0.9.3+")])]),t("ul",[t("li",[t("code",[v._v("data")]),v._v(":思维导图节点数据。")])]),t("p",[v._v("将思维导图树结构转平级对象。")]),t("pre",{staticClass:"hljs"},[t("code",[v._v("{\n "),t("span",{staticClass:"hljs-attr"},[v._v("data")]),v._v(": {\n "),t("span",{staticClass:"hljs-attr"},[v._v("uid")]),v._v(": "),t("span",{staticClass:"hljs-string"},[v._v("'xxx'")]),v._v("\n },\n "),t("span",{staticClass:"hljs-attr"},[v._v("children")]),v._v(": [\n {\n "),t("span",{staticClass:"hljs-attr"},[v._v("data")]),v._v(": {\n "),t("span",{staticClass:"hljs-attr"},[v._v("uid")]),v._v(": "),t("span",{staticClass:"hljs-string"},[v._v("'xxx'")]),v._v("\n },\n "),t("span",{staticClass:"hljs-attr"},[v._v("children")]),v._v(": []\n }\n ]\n }\n")])]),t("p",[v._v("转为:")]),t("pre",{staticClass:"hljs"},[t("code",[v._v(" {\n "),t("span",{staticClass:"hljs-attr"},[v._v("uid")]),v._v(": {\n "),t("span",{staticClass:"hljs-attr"},[v._v("children")]),v._v(": [uid1, uid2],\n "),t("span",{staticClass:"hljs-attr"},[v._v("data")]),v._v(": {}\n }\n }\n")])]),t("h4",[v._v("transformObjectToTreeData(data)")]),t("blockquote",[t("p",[v._v("v0.9.3+")])]),t("p",[v._v("将平级对象转树结构。transformTreeDataToObject 方法的反向操作。")]),t("h4",[v._v("removeHtmlNodeByClass(html, selector)")]),t("blockquote",[t("p",[v._v("v0.9.6+")])]),t("ul",[t("li",[t("p",[t("code",[v._v("html")]),v._v(":html 字符串")])]),t("li",[t("p",[t("code",[v._v("selector")]),v._v(":节点选择器,比如类选择器,id 选择器")])])]),t("p",[v._v("去除指定 html 字符串中指定选择器的节点,然后返回处理后的 html 字符串。")]),t("h2",[v._v("在 canvas 中模拟 css 的背景属性")]),t("p",[v._v("引入:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" drawBackgroundImageToCanvas "),t("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),t("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'")]),v._v("\n")])]),t("p",[v._v("使用:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" width = "),t("span",{staticClass:"hljs-number"},[v._v("500")]),v._v("\n"),t("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" height = "),t("span",{staticClass:"hljs-number"},[v._v("500")]),v._v("\n"),t("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" img = "),t("span",{staticClass:"hljs-string"},[v._v("'/1.jpg'")]),v._v("\n"),t("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" canvas = "),t("span",{staticClass:"hljs-built_in"},[v._v("document")]),v._v(".createElement("),t("span",{staticClass:"hljs-string"},[v._v("'canvas'")]),v._v(")\ncanvas.width = width\ncanvas.height = height\ndrawBackgroundImageToCanvas(\n ctx,\n width,\n height,\n img,\n {\n "),t("span",{staticClass:"hljs-attr"},[v._v("backgroundRepeat")]),v._v(": "),t("span",{staticClass:"hljs-string"},[v._v("'repeat-y'")]),v._v(",\n "),t("span",{staticClass:"hljs-attr"},[v._v("backgroundSize")]),v._v(": "),t("span",{staticClass:"hljs-string"},[v._v("'60%'")]),v._v(",\n "),t("span",{staticClass:"hljs-attr"},[v._v("backgroundPosition")]),v._v(": "),t("span",{staticClass:"hljs-string"},[v._v("'center center'")]),v._v("\n },\n "),t("span",{staticClass:"hljs-function"},[t("span",{staticClass:"hljs-params"},[v._v("err")]),v._v(" =>")]),v._v(" {\n "),t("span",{staticClass:"hljs-keyword"},[v._v("if")]),v._v(" (err) {\n "),t("span",{staticClass:"hljs-comment"},[v._v("// 失败")]),v._v("\n } "),t("span",{staticClass:"hljs-keyword"},[v._v("else")]),v._v(" {\n "),t("span",{staticClass:"hljs-comment"},[v._v("// 成功")]),v._v("\n }\n }\n)\n")])]),t("h2",[v._v("LRU 缓存类")]),t("blockquote",[t("p",[v._v("v0.5.10+")])]),t("p",[v._v("引入:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" Lru "),t("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),t("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/utils/Lru.js'")]),v._v("\n")])]),t("h3",[v._v("构造函数")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" lru = "),t("span",{staticClass:"hljs-keyword"},[v._v("new")]),v._v(" Lru(max)\n")])]),t("p",[t("code",[v._v("max")]),v._v(":指定最大缓存数量。")]),t("h3",[v._v("实例属性")]),t("h4",[v._v("size")]),t("p",[v._v("当前缓存的数量。")]),t("h4",[v._v("pool")]),t("p",[v._v("获取缓存池。")]),t("h3",[v._v("实例方法")]),t("h4",[v._v("add(key, value)")]),t("p",[v._v("添加缓存。")]),t("h4",[v._v("delete(key)")]),t("p",[v._v("删除指定缓存。")]),t("h4",[v._v("has(key)")]),t("p",[v._v("检查某个缓存是否存在。")]),t("h4",[v._v("get(key)")]),t("p",[v._v("获取某个缓存的值。")]),t("h4",[v._v("clear()")]),t("blockquote",[t("p",[v._v("v0.9.2+")])]),t("p",[v._v("清空缓存池。")])])}],a={},l=a,o=e("2877"),c=Object(o["a"])(l,s,_,!1,null,null,null);t["default"]=c.exports}}]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c191e"],{4738:function(v,e,s){"use strict";s.r(e);var t=function(){var v=this;v._self._c;return v._m(0)},_=[function(){var v=this,e=v._self._c;return e("div",[e("h1",[v._v("内置工具方法")]),e("h2",[v._v("基础工具方法")]),e("p",[v._v("引用:")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" {walk, ...} "),e("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),e("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/utils'")]),v._v("\n")])]),e("h3",[v._v("方法")]),e("h4",[v._v("resizeImgSizeByOriginRatio(width, height, newWidth, newHeight)")]),e("blockquote",[e("p",[v._v("v0.6.5+")])]),e("p",[e("code",[v._v("width")]),v._v(": 图片原始的宽度")]),e("p",[e("code",[v._v("height")]),v._v(":图片原始的高度")]),e("p",[e("code",[v._v("newWidth")]),v._v(":要缩放到的宽度")]),e("p",[e("code",[v._v("newHeight")]),v._v(":要缩放到的高度")]),e("p",[v._v("按比例缩放图片。在保持图片原始宽高比的情况下缩放到指定的"),e("code",[v._v("newWidth")]),v._v("、"),e("code",[v._v("newHeight")]),v._v("大小。")]),e("h4",[v._v("walk(root, parent, beforeCallback, afterCallback, isRoot, layerIndex = 0, index = 0)")]),e("p",[v._v("深度优先遍历树")]),e("p",[e("code",[v._v("root")]),v._v(":要遍历的树的根节点")]),e("p",[e("code",[v._v("parent")]),v._v(":父节点")]),e("p",[e("code",[v._v("beforeCallback")]),v._v(":前序遍历回调函数,回调参数为:root, parent, isRoot, layerIndex, index")]),e("p",[e("code",[v._v("afterCallback")]),v._v(":后序遍历回调函数,回调参数为:root, parent, isRoot, layerIndex, index")]),e("p",[e("code",[v._v("isRoot")]),v._v(":是否是根节点")]),e("p",[e("code",[v._v("layerIndex")]),v._v(":节点层级")]),e("p",[e("code",[v._v("index")]),v._v(":节点在同级节点里的索引")]),e("p",[v._v("示例:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("walk(\n tree,\n "),e("span",{staticClass:"hljs-literal"},[v._v("null")]),v._v(",\n "),e("span",{staticClass:"hljs-function"},[v._v("() =>")]),v._v(" {},\n "),e("span",{staticClass:"hljs-function"},[v._v("() =>")]),v._v(" {},\n "),e("span",{staticClass:"hljs-literal"},[v._v("false")]),v._v(",\n "),e("span",{staticClass:"hljs-number"},[v._v("0")]),v._v(",\n "),e("span",{staticClass:"hljs-number"},[v._v("0")]),v._v("\n)\n")])]),e("h4",[v._v("bfsWalk(root, callback)")]),e("p",[v._v("广度优先遍历树")]),e("h4",[v._v("resizeImgSize(width, height, maxWidth, maxHeight)")]),e("p",[v._v("缩放图片的尺寸")]),e("p",[e("code",[v._v("width")]),v._v(":图片原本的宽")]),e("p",[e("code",[v._v("height")]),v._v(":图片原本的高")]),e("p",[e("code",[v._v("maxWidth")]),v._v(":要缩放到的宽")]),e("p",[e("code",[v._v("maxHeight")]),v._v(":要缩放到的高")]),e("p",[e("code",[v._v("maxWidth")]),v._v("和"),e("code",[v._v("maxHeight")]),v._v("可以同时都传,也可以只传一个")]),e("h4",[v._v("resizeImg(imgUrl, maxWidth, maxHeight)")]),e("p",[v._v("缩放图片,内部先加载图片,然后调用"),e("code",[v._v("resizeImgSize")]),v._v("方法,返回一个"),e("code",[v._v("promise")])]),e("h4",[v._v("simpleDeepClone(data)")]),e("p",[v._v("极简的深拷贝方法,只能针对全是基本数据的对象,否则会报错")]),e("h4",[v._v("copyRenderTree(tree, root)")]),e("p",[v._v("复制渲染树数据,示例:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("copyRenderTree({}, "),e("span",{staticClass:"hljs-built_in"},[v._v("this")]),v._v(".mindMap.renderer.renderTree)\n")])]),e("h4",[v._v("copyNodeTree(tree, root, removeActiveState, removeId)")]),e("ul",[e("li",[e("p",[e("code",[v._v("removeActiveState")]),v._v(":"),e("code",[v._v("Boolean")]),v._v(",默认为"),e("code",[v._v("false")]),v._v(",是否移除节点的激活状态")])]),e("li",[e("p",[e("code",[v._v("removeId")]),v._v(":v0.7.3-fix.1+,是否移除节点数据中的 uid,默认为"),e("code",[v._v("true")])])])]),e("blockquote",[e("ul",[e("li",[e("code",[v._v("keepId")]),v._v(": (原第四个参数)"),e("code",[v._v("Boolean")]),v._v(",默认为"),e("code",[v._v("false")]),v._v(",是否保留被复制节点的"),e("code",[v._v("id")]),v._v(",默认会删除"),e("code",[v._v("id")]),v._v("防止节点"),e("code",[v._v("id")]),v._v("重复,但是对于移动节点的场景,节点原"),e("code",[v._v("id")]),v._v("需要保留。")])])]),e("p",[v._v("复制节点树数据,主要是剔除其中的引用"),e("code",[v._v("node")]),v._v("实例的"),e("code",[v._v("_node")]),v._v(",然后复制"),e("code",[v._v("data")]),v._v("对象的数据,示例:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("copyNodeTree({}, node)\n")])]),e("h4",[v._v("imgToDataUrl(src)")]),e("p",[v._v("图片转成 dataURL")]),e("h4",[v._v("downloadFile(file, fileName)")]),e("p",[v._v("下载文件")]),e("h4",[v._v("throttle(fn, time = 300, ctx)")]),e("p",[v._v("节流函数")]),e("h4",[v._v("asyncRun(taskList, callback = () => {})")]),e("p",[v._v("异步执行任务队列,多个任务是同步执行的,没有先后顺序")]),e("h4",[v._v("degToRad(deg)")]),e("blockquote",[e("p",[v._v("v0.2.24+")])]),e("p",[v._v("角度转弧度")]),e("h4",[v._v("camelCaseToHyphen(str)")]),e("blockquote",[e("p",[v._v("v0.2.24+")])]),e("p",[v._v("驼峰转连字符")]),e("h4",[v._v("joinFontStr({ italic, bold, fontSize, fontFamily })")]),e("blockquote",[e("p",[v._v("v0.3.4+")])]),e("p",[v._v("拼接"),e("code",[v._v("css")]),v._v("字体的"),e("code",[v._v("font")]),v._v("属性值")]),e("h4",[v._v("measureText(text, { italic, bold, fontSize, fontFamily })")]),e("blockquote",[e("p",[v._v("v0.3.4+")])]),e("p",[v._v("测量文本的宽高,返回值:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("{\n width, height\n}\n")])]),e("h4",[v._v("getTextFromHtml(html)")]),e("p",[v._v("提取 html 字符串里的纯文本内容。")]),e("h4",[v._v("readBlob(blob)")]),e("blockquote",[e("p",[v._v("v0.5.9+")])]),e("p",[v._v("将"),e("code",[v._v("blob")]),v._v("数据转成"),e("code",[v._v("data:url")]),v._v("数据。")]),e("h4",[v._v("parseDataUrl(data)")]),e("blockquote",[e("p",[v._v("v0.6.6+")])]),e("p",[v._v("解析"),e("code",[v._v("data:url")]),v._v("数据,返回:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("{\n type, "),e("span",{staticClass:"hljs-comment"},[v._v("// 数据的文件类型")]),v._v("\n base64 "),e("span",{staticClass:"hljs-comment"},[v._v("// base64数据")]),v._v("\n}\n")])]),e("h4",[v._v("getImageSize(src)")]),e("blockquote",[e("p",[v._v("v0.6.6+")])]),e("ul",[e("li",[e("code",[v._v("src")]),v._v(":图片的 url")])]),e("p",[v._v("获取图片的大小。返回:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("{\n width, height\n}\n")])]),e("h4",[v._v("loadImage(imgFile)")]),e("blockquote",[e("p",[v._v("v0.6.8+")])]),e("ul",[e("li",[e("code",[v._v("imgFile")]),v._v(":图片类型的 File 对象")])]),e("p",[v._v("加载图片,返回:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("{\n url, "),e("span",{staticClass:"hljs-comment"},[v._v("// DataUrl")]),v._v("\n size "),e("span",{staticClass:"hljs-comment"},[v._v("// { width, height } 图片宽高")]),v._v("\n}\n")])]),e("h4",[v._v("getType(data)")]),e("blockquote",[e("p",[v._v("v0.6.9+")])]),e("p",[v._v("获取一个数据的类型,比如"),e("code",[v._v("Boolean")]),v._v("、"),e("code",[v._v("Array")]),v._v("等。")]),e("h4",[v._v("removeHtmlStyle(html)")]),e("blockquote",[e("p",[v._v("v0.6.10+")])]),e("p",[v._v("移除 html 字符串中节点的内联样式。")]),e("h4",[v._v("addHtmlStyle(html, tag, style)")]),e("blockquote",[e("p",[v._v("v0.6.10+")])]),e("p",[v._v("给 html 标签中指定的标签添加内联样式。")]),e("h4",[v._v("checkIsRichText(str)")]),e("blockquote",[e("p",[v._v("v0.6.10+")])]),e("p",[v._v("检查一个字符串是否是富文本字符。")]),e("h4",[v._v("isWhite(color)")]),e("blockquote",[e("p",[v._v("v0.6.11+")])]),e("p",[v._v("判断一个颜色是否是白色。")]),e("h4",[v._v("isTransparent(color)")]),e("blockquote",[e("p",[v._v("v0.6.11+")])]),e("p",[v._v("判断一个颜色是否是透明。")]),e("h4",[v._v("nodeRichTextToTextWithWrap(html)")]),e("blockquote",[e("p",[v._v("v0.6.12+")])]),e("p",[v._v("将"),e("code",[v._v("

")]),v._v("形式的节点富文本内容转换成"),e("code",[v._v("\\n")]),v._v("换行的文本。")]),e("h4",[v._v("textToNodeRichTextWithWrap(html)")]),e("blockquote",[e("p",[v._v("v0.6.12+")])]),e("p",[v._v("将"),e("code",[v._v("
")]),v._v("换行的文本转换成"),e("code",[v._v("

")]),v._v("形式的节点富文本内容。")]),e("h4",[v._v("isMobile()")]),e("blockquote",[e("p",[v._v("v0.6.13+")])]),e("p",[v._v("判断是否是移动端环境。")]),e("h4",[v._v("getTopAncestorsFomNodeList(list)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("list")]),v._v(":Arrray,节点实例列表。")])]),e("p",[v._v("从节点实例列表里找出最顶层的节点列表。")]),e("h4",[v._v("checkTwoRectIsOverlap(minx1, maxx1, miny1, maxy1, minx2, maxx2, miny2, maxy2)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("p",[v._v("参数为两个矩形的位置。")]),e("p",[v._v("判断两个矩形是否重叠。")]),e("h4",[v._v("focusInput(el)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("el")]),v._v(":DOM 节点,可聚焦的元素,一般为输入框元素。")])]),e("p",[v._v("聚焦指定输入框。")]),e("h4",[v._v("selectAllInput(el)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("el")]),v._v(":DOM 节点,可聚焦的元素,一般为输入框元素。")])]),e("p",[v._v("聚焦并全选指定输入框。")]),e("h4",[v._v("addDataToAppointNodes(appointNodes, data = {})")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("p",[e("code",[v._v("appointNodes")]),v._v(":节点实例列表,数组类型。")])]),e("li",[e("p",[e("code",[v._v("data")]),v._v(":要附加到指定节点实例列表树中所有节点的数据中的数据。")])])]),e("p",[v._v("给指定的节点列表树数据添加附加数据,会修改原数据。")]),e("h4",[v._v("createUidForAppointNodes(appointNodes, createNewId)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("p",[e("code",[v._v("appointNodes")]),v._v(":节点实例列表,数组类型。")])]),e("li",[e("p",[e("code",[v._v("createNewId")]),v._v(":v0.7.3-fix.1+,"),e("code",[v._v("Boolean")]),v._v(",默认为"),e("code",[v._v("false")]),v._v(",即如果节点不存在"),e("code",[v._v("uid")]),v._v("的话,会创建新的"),e("code",[v._v("uid")]),v._v("。如果传"),e("code",[v._v("true")]),v._v(",那么无论节点数据原来是否存在"),e("code",[v._v("uid")]),v._v(",都会创建新的"),e("code",[v._v("uid")])])])]),e("p",[v._v("给指定的节点列表树数据添加 uid(如果 uid 不存在的话),会修改原数据。")]),e("h4",[v._v("getNodeIndex(node)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("node")]),v._v(":节点实例。")])]),e("p",[v._v("获取节点在同级里的位置索引。")]),e("h4",[v._v("mergerIconList(list)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("list")]),v._v(":要合并到库内部的节点图标数组。")])]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-comment"},[v._v("// const data = [")]),v._v("\n"),e("span",{staticClass:"hljs-comment"},[v._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'b' }] },")]),v._v("\n"),e("span",{staticClass:"hljs-comment"},[v._v("// { type: 'priority', name: '优先级图标', list: [{ name: '2', icon: 'c' }, { name: 3, icon: 'd' }] },")]),v._v("\n"),e("span",{staticClass:"hljs-comment"},[v._v("// ];")]),v._v("\n\n"),e("span",{staticClass:"hljs-comment"},[v._v("// mergerIconList(data) 结果")]),v._v("\n\n"),e("span",{staticClass:"hljs-comment"},[v._v("// [")]),v._v("\n"),e("span",{staticClass:"hljs-comment"},[v._v("// { type: 'priority', name: '优先级图标', list: [{ name: '1', icon: 'a' }, { name: 2, icon: 'c' }, { name: 3, icon: 'd' }] },")]),v._v("\n"),e("span",{staticClass:"hljs-comment"},[v._v("// ]")]),v._v("\n")])]),e("p",[v._v("合并图标数组。")]),e("h4",[v._v("generateColorByContent(str)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("str")]),v._v(":字符串。")])]),e("p",[v._v("根据传入的内容生成颜色,同样的内容会生成同样的颜色。")]),e("h4",[v._v("htmlEscape(str)")]),e("blockquote",[e("p",[v._v("v0.7.2+")])]),e("ul",[e("li",[e("code",[v._v("str")]),v._v(":字符串。")])]),e("p",[v._v("转义传入的字符串,目前会转义如下三个字符:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("& -> &\n< -> <\n> -> >\n")])]),e("h4",[v._v("isSameObject(a, b)")]),e("blockquote",[e("p",[v._v("v0.7.3+")])]),e("ul",[e("li",[e("code",[v._v("a")]),v._v("、"),e("code",[v._v("b")]),v._v(":Object | Array, 要进行对比的两个对象")])]),e("p",[v._v("判断两个对象是否相同,只处理对象或数组。")]),e("h4",[v._v("getNodeDataIndex(node)")]),e("blockquote",[e("p",[v._v("v0.8.0+")])]),e("p",[v._v("获取节点在兄弟节点中的位置索引。")]),e("h4",[v._v("getNodeIndexInNodeList(node, nodeList)")]),e("blockquote",[e("p",[v._v("v0.8.0+")])]),e("p",[v._v("从一个节点列表里找出某个节点的索引。")]),e("h4",[v._v("setDataToClipboard(data)")]),e("blockquote",[e("p",[v._v("v0.8.0+")])]),e("ul",[e("li",[e("code",[v._v("data")]),v._v(":Object | Array")])]),e("p",[v._v("将数据设置到用户剪切板中。")]),e("h4",[v._v("getDataFromClipboard()")]),e("blockquote",[e("p",[v._v("v0.8.0+")])]),e("p",[v._v("从用户剪贴板中读取文字和图片,返回:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("{\n text, img\n}\n")])]),e("h4",[v._v("removeFromParentNodeData(node)")]),e("blockquote",[e("p",[v._v("v0.8.0+")])]),e("p",[v._v("从节点的父节点的"),e("code",[v._v("nodeData.children")]),v._v("列表中移除该节点的数据。")]),e("h4",[v._v("checkHasSupSubRelation()")]),e("blockquote",[e("p",[v._v("v0.8.1+")])]),e("p",[v._v("从给定的节点实例列表里判断是否存在上下级关系。")]),e("h4",[v._v("handleSelfCloseTags(str)")]),e("blockquote",[e("p",[v._v("v0.9.1+")])]),e("ul",[e("li",[e("code",[v._v("str")]),v._v(":html 字符串")])]),e("p",[v._v("给 html 自闭合标签添加闭合状态,"),e("code",[v._v('

')]),v._v(" -> "),e("code",[v._v('
')]),v._v("。")]),e("h4",[v._v("checkNodeListIsEqual(list1, list2)")]),e("blockquote",[e("p",[v._v("v0.9.1+")])]),e("ul",[e("li",[e("code",[v._v("list1/list2")]),v._v(":节点实例列表")])]),e("p",[v._v("检查两个节点实例列表包含的节点是否是一样的。")]),e("h4",[v._v("getChromeVersion()")]),e("blockquote",[e("p",[v._v("v0.9.3+")])]),e("p",[v._v("获取当前浏览器使用的"),e("code",[v._v("Chrome")]),v._v("内核版本。如果当前浏览器使用的不是 "),e("code",[v._v("Chrome")]),v._v("内核,那么会返回空字符串。")]),e("h4",[v._v("transformTreeDataToObject(data)")]),e("blockquote",[e("p",[v._v("v0.9.3+")])]),e("ul",[e("li",[e("code",[v._v("data")]),v._v(":思维导图节点数据。")])]),e("p",[v._v("将思维导图树结构转平级对象。")]),e("pre",{staticClass:"hljs"},[e("code",[v._v("{\n "),e("span",{staticClass:"hljs-attr"},[v._v("data")]),v._v(": {\n "),e("span",{staticClass:"hljs-attr"},[v._v("uid")]),v._v(": "),e("span",{staticClass:"hljs-string"},[v._v("'xxx'")]),v._v("\n },\n "),e("span",{staticClass:"hljs-attr"},[v._v("children")]),v._v(": [\n {\n "),e("span",{staticClass:"hljs-attr"},[v._v("data")]),v._v(": {\n "),e("span",{staticClass:"hljs-attr"},[v._v("uid")]),v._v(": "),e("span",{staticClass:"hljs-string"},[v._v("'xxx'")]),v._v("\n },\n "),e("span",{staticClass:"hljs-attr"},[v._v("children")]),v._v(": []\n }\n ]\n }\n")])]),e("p",[v._v("转为:")]),e("pre",{staticClass:"hljs"},[e("code",[v._v(" {\n "),e("span",{staticClass:"hljs-attr"},[v._v("uid")]),v._v(": {\n "),e("span",{staticClass:"hljs-attr"},[v._v("children")]),v._v(": [uid1, uid2],\n "),e("span",{staticClass:"hljs-attr"},[v._v("data")]),v._v(": {}\n }\n }\n")])]),e("h4",[v._v("transformObjectToTreeData(data)")]),e("blockquote",[e("p",[v._v("v0.9.3+")])]),e("p",[v._v("将平级对象转树结构。transformTreeDataToObject 方法的反向操作。")]),e("h4",[v._v("removeHtmlNodeByClass(html, selector)")]),e("blockquote",[e("p",[v._v("v0.9.6+")])]),e("ul",[e("li",[e("p",[e("code",[v._v("html")]),v._v(":html 字符串")])]),e("li",[e("p",[e("code",[v._v("selector")]),v._v(":节点选择器,比如类选择器,id 选择器")])])]),e("p",[v._v("去除指定 html 字符串中指定选择器的节点,然后返回处理后的 html 字符串。")]),e("h4",[v._v("getOnfullscreEnevt()")]),e("blockquote",[e("p",[v._v("v0.9.11+")])]),e("p",[v._v("检测当前浏览器可用的全屏事件。可以这样使用:")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[v._v("const")]),v._v(" fullscrrenEvent = getOnfullscreEnevt()\n\n"),e("span",{staticClass:"hljs-comment"},[v._v("// 监听全屏事件")]),v._v("\n"),e("span",{staticClass:"hljs-built_in"},[v._v("document")]),v._v(".addEventListener(fullscrrenEvent, "),e("span",{staticClass:"hljs-function"},[v._v("() =>")]),v._v(" {\n "),e("span",{staticClass:"hljs-comment"},[v._v("// 根据document.fullscreenElement是否为null判断当前是否处于全屏状态")]),v._v("\n})\n")])]),e("h4",[v._v("fullScreen(element)")]),e("blockquote",[e("p",[v._v("v0.9.11+")])]),e("p",[v._v("让指定的DOM元素进入全屏状态。")]),e("h4",[v._v("exitFullScreen()")]),e("blockquote",[e("p",[v._v("v0.9.11+")])]),e("p",[v._v("退出全屏状态。")]),e("h2",[v._v("在 canvas 中模拟 css 的背景属性")]),e("p",[v._v("引入:")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" drawBackgroundImageToCanvas "),e("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),e("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'")]),v._v("\n")])]),e("p",[v._v("使用:")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" width = "),e("span",{staticClass:"hljs-number"},[v._v("500")]),v._v("\n"),e("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" height = "),e("span",{staticClass:"hljs-number"},[v._v("500")]),v._v("\n"),e("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" img = "),e("span",{staticClass:"hljs-string"},[v._v("'/1.jpg'")]),v._v("\n"),e("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" canvas = "),e("span",{staticClass:"hljs-built_in"},[v._v("document")]),v._v(".createElement("),e("span",{staticClass:"hljs-string"},[v._v("'canvas'")]),v._v(")\ncanvas.width = width\ncanvas.height = height\ndrawBackgroundImageToCanvas(\n ctx,\n width,\n height,\n img,\n {\n "),e("span",{staticClass:"hljs-attr"},[v._v("backgroundRepeat")]),v._v(": "),e("span",{staticClass:"hljs-string"},[v._v("'repeat-y'")]),v._v(",\n "),e("span",{staticClass:"hljs-attr"},[v._v("backgroundSize")]),v._v(": "),e("span",{staticClass:"hljs-string"},[v._v("'60%'")]),v._v(",\n "),e("span",{staticClass:"hljs-attr"},[v._v("backgroundPosition")]),v._v(": "),e("span",{staticClass:"hljs-string"},[v._v("'center center'")]),v._v("\n },\n "),e("span",{staticClass:"hljs-function"},[e("span",{staticClass:"hljs-params"},[v._v("err")]),v._v(" =>")]),v._v(" {\n "),e("span",{staticClass:"hljs-keyword"},[v._v("if")]),v._v(" (err) {\n "),e("span",{staticClass:"hljs-comment"},[v._v("// 失败")]),v._v("\n } "),e("span",{staticClass:"hljs-keyword"},[v._v("else")]),v._v(" {\n "),e("span",{staticClass:"hljs-comment"},[v._v("// 成功")]),v._v("\n }\n }\n)\n")])]),e("h2",[v._v("LRU 缓存类")]),e("blockquote",[e("p",[v._v("v0.5.10+")])]),e("p",[v._v("引入:")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" Lru "),e("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),e("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/utils/Lru.js'")]),v._v("\n")])]),e("h3",[v._v("构造函数")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[v._v("let")]),v._v(" lru = "),e("span",{staticClass:"hljs-keyword"},[v._v("new")]),v._v(" Lru(max)\n")])]),e("p",[e("code",[v._v("max")]),v._v(":指定最大缓存数量。")]),e("h3",[v._v("实例属性")]),e("h4",[v._v("size")]),e("p",[v._v("当前缓存的数量。")]),e("h4",[v._v("pool")]),e("p",[v._v("获取缓存池。")]),e("h3",[v._v("实例方法")]),e("h4",[v._v("add(key, value)")]),e("p",[v._v("添加缓存。")]),e("h4",[v._v("delete(key)")]),e("p",[v._v("删除指定缓存。")]),e("h4",[v._v("has(key)")]),e("p",[v._v("检查某个缓存是否存在。")]),e("h4",[v._v("get(key)")]),e("p",[v._v("获取某个缓存的值。")]),e("h4",[v._v("clear()")]),e("blockquote",[e("p",[v._v("v0.9.2+")])]),e("p",[v._v("清空缓存池。")])])}],a={},l=a,o=s("2877"),n=Object(o["a"])(l,t,_,!1,null,null,null);e["default"]=n.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0d36df.js b/dist/js/chunk-2d0d36df.js new file mode 100644 index 00000000..9dc6bf74 --- /dev/null +++ b/dist/js/chunk-2d0d36df.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d36df"],{"5d71":function(e,t,n){"use strict";n.r(t);var i=function(){var e=this;e._self._c;return e._m(0)},o=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("Demonstrate plugin")]),t("blockquote",[t("p",[e._v("v0.9.11+")])]),t("p",[e._v("The "),t("code",[e._v("Demonstrate")]),e._v(" plugin provides demonstration functionality.")]),t("p",[e._v("When entering demonstration mode, the container elements will be automatically displayed in full screen, and then default to the root node. You can switch between the previous and next steps by pressing the left and right arrow keys on the keyboard, and exit demonstration mode by pressing the 'Esc' key.")]),t("p",[e._v("After entering demonstration mode, all shortcut keys on the mind map will be unavailable, and the mouse will not be able to operate the mind map.")]),t("h2",[e._v("Register")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" MindMap "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map'")]),e._v("\n"),t("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" Demonstrate "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/plugins/Demonstrate.js'")]),e._v("\n\nMindMap.usePlugin(Demonstrate)\n")])]),t("p",[e._v("After registration and instantiation of "),t("code",[e._v("MindMap")]),e._v(", the instance can be obtained through "),t("code",[e._v("mindMap.demonstrate")]),e._v(".")]),t("h3",[e._v("Config")]),t("p",[e._v("This plugin provides some configuration items for configuration, which can be configured through the instantiation option 'demonstrateConfig'. Please refer to the 【Instantiation options】 section in the 【Constructor】 section for details.")]),t("h3",[e._v("Event")]),t("p",[e._v("The plugin will dispatch the following events:")]),t("p",[t("code",[e._v("exit_demonstrate")]),e._v(":Triggered when exiting the demonstration.")]),t("p",[t("code",[e._v("demonstrate_jump")]),e._v(":Triggered when jumping.")]),t("p",[e._v("Please refer to the 'on' function in the 【Instance methods】 section of the 【Constructor】 chapter for details.")]),t("h2",[e._v("Props")]),t("h3",[e._v("stepList")]),t("p",[e._v("List of all steps demonstrated. Available when the 'enter' method is called.")]),t("h3",[e._v("currentStepIndex")]),t("p",[e._v("The index of the steps currently played, counting from 0.")]),t("h3",[e._v("config")]),t("p",[e._v("The current configuration of the plugin.")]),t("h2",[e._v("Methods")]),t("h3",[e._v("enter()")]),t("p",[e._v("Entering demonstration mode will automatically display the container elements in full screen.")]),t("h3",[e._v("exit()")]),t("p",[e._v("Exit demonstration mode, which can also be exited by pressing the 'Esc' key.")]),t("h3",[e._v("prev()")]),t("p",[e._v("Previous step.")]),t("h3",[e._v("next()")]),t("p",[e._v("Next step.")]),t("h3",[e._v("jump(index)")]),t("ul",[t("li",[t("code",[e._v("index")]),e._v(":Number,To jump to a certain step, count from 0.")])]),t("p",[e._v("Jump to a certain step.")])])}],s={},a=s,r=n("2877"),l=Object(r["a"])(a,i,o,!1,null,null,null);t["default"]=l.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0d6590.js b/dist/js/chunk-2d0d6590.js index 8852ee1d..9f6f12e6 100644 --- a/dist/js/chunk-2d0d6590.js +++ b/dist/js/chunk-2d0d6590.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d6590"],{"71bb":function(s,t,a){"use strict";a.r(t);var n=function(){var s=this;s._self._c;return s._m(0)},_=[function(){var s=this,t=s._self._c;return t("div",[t("h1",[s._v("部署")]),t("p",[s._v("本项目的"),t("code",[s._v("web")]),s._v("目录下提供了一个基于"),t("code",[s._v("simple-mind-map")]),s._v("库、"),t("code",[s._v("Vue2.x")]),s._v("、"),t("code",[s._v("ElementUI")]),s._v("开发的完整项目,数据默认存储在电脑本地,此外可以操作电脑本地文件,原意是作为一个线上"),t("code",[s._v("demo")]),s._v(",但是也完全可以直接把它当做一个在线版思维导图应用使用,在线地址:"),t("a",{attrs:{href:"https://wanglin2.github.io/mind-map/"}},[s._v("https://wanglin2.github.io/mind-map/")]),s._v("。")]),t("p",[s._v("如果你的网络环境访问"),t("code",[s._v("GitHub")]),s._v("服务很慢,你也可以部署到你的服务器上。")]),t("h2",[s._v("部署到静态文件服务器")]),t("p",[s._v("项目本身不依赖后端,所以完全可以部署到一个静态文件服务器上,可以依次执行如下命令:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("git "),t("span",{staticClass:"hljs-built_in"},[s._v("clone")]),s._v(" https://github.com/wanglin2/mind-map.git\n"),t("span",{staticClass:"hljs-built_in"},[s._v("cd")]),s._v(" mind-map\n"),t("span",{staticClass:"hljs-built_in"},[s._v("cd")]),s._v(" simple-mind-map\nnpm i\nnpm link\n"),t("span",{staticClass:"hljs-built_in"},[s._v("cd")]),s._v(" ..\n"),t("span",{staticClass:"hljs-built_in"},[s._v("cd")]),s._v(" web\nnpm i\nnpm link simple-mind-map\n")])]),t("p",[s._v("然后你可以选择启动本地服务:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("npm run serve\n")])]),t("p",[s._v("也可以直接打包生成构建产物:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("npm run build\n")])]),t("p",[s._v("打包完后的入口页面"),t("code",[s._v("index.html")]),s._v("可以在项目根目录找到,对应的静态资源在根目录下的"),t("code",[s._v("dist")]),s._v("目录,"),t("code",[s._v("html")]),s._v("文件中会通过相对路径访问"),t("code",[s._v("dist")]),s._v("目录的资源,比如"),t("code",[s._v("dist/xxx")]),s._v("。你可以直接把这两个文件或目录上传到你的静态文件服务器,事实上,本项目就是这样部署到"),t("code",[s._v("GitHub Pages")]),s._v("上的。")]),t("p",[s._v("如果你没有代码修改需求的话,直接从本仓库复制这些文件也是可以的。")]),t("p",[s._v("如果你想把"),t("code",[s._v("index.html")]),s._v("也打包进"),t("code",[s._v("dist")]),s._v("目录,可以修改"),t("code",[s._v("web/package.json")]),s._v("文件的"),t("code",[s._v("scripts.build")]),s._v("命令,把"),t("code",[s._v("vue-cli-service build && node ../copy.js")]),s._v("中的"),t("code",[s._v(" && node ../copy.js")]),s._v("删除即可。")]),t("p",[s._v("如果你想修改打包输出的目录,可以修改"),t("code",[s._v("web/vue.config.js")]),s._v("文件的"),t("code",[s._v("outputDir")]),s._v("配置,改成你想要输出的路径即可。")]),t("p",[s._v("如果你想修改"),t("code",[s._v("index.html")]),s._v("文件引用静态资源的路径的话可以修改"),t("code",[s._v("web/vue.config.js")]),s._v("文件的"),t("code",[s._v("publicPath")]),s._v("配置。以及"),t("code",[s._v("web/public/index.html")]),s._v("文件的"),t("code",[s._v("window.externalPublicPath")]),s._v("配置。")]),t("p",[s._v("另外默认使用的是"),t("code",[s._v("hash")]),s._v("路由,也就是路径中会在"),t("code",[s._v("#")]),s._v(",如果你想使用"),t("code",[s._v("history")]),s._v("路由,可以修改"),t("code",[s._v("web/src/router.js")]),s._v("文件,将:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" router = "),t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" VueRouter({\n routes\n})\n")])]),t("p",[s._v("改成:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" router = "),t("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" VueRouter({\n "),t("span",{staticClass:"hljs-attr"},[s._v("mode")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'history'")]),s._v(",\n routes\n})\n")])]),t("p",[s._v("不过这需要后台支持,因为我们的应用是个单页客户端应用,如果后台没有正确的配置,当用户在浏览器直接访问子路由时会返回404,所以呢你要在服务端增加一个覆盖所有情况的候选资源:如果"),t("code",[s._v("URL")]),s._v("匹配不到任何静态资源,则应该返回同一个"),t("code",[s._v("index.html")]),s._v("页面。")]),t("h2",[s._v("Docker")]),t("blockquote",[t("p",[s._v("非常感谢"),t("a",{attrs:{href:"https://github.com/shuiche-it"}},[s._v("水车")]),s._v(",本小节由他编写,对应的 Docker 包也由他维护。")])]),t("p",[s._v("直接从 Docker hup 中安装:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("docker run -d -p 8081:8080 shuiche/mind-map:latest\n")])]),t("p",[s._v("mind-map在容器中启动了8080端口作为web服务入口,通过docker运行容器时,需要指定本地映射端口,上面案例中,我们通过本地的8081端口映射到容器端口8080。")]),t("p",[s._v("安装完成后,通过 "),t("code",[s._v("docker ps")]),s._v(" 查看容器运行状态。")]),t("p",[s._v("浏览器打开 127.0.0.1:8081 即可使用Web 思维导图功能。")]),t("p",[t("a",{attrs:{href:"https://laosu.gq/2023/09/02/%E5%BC%BA%E5%A4%A7%E7%9A%84%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E5%BA%93SimpleMindMap/"}},[s._v("在群晖上以 Docker 方式安装")])]),t("h2",[s._v("对接自己的存储服务")]),t("p",[s._v("应用数据默认存储在浏览器本地,浏览器本地存储容量是比较小的,所以当在思维导图中插入更多图片后很容易触发限制,所以更好的选择是对接你自己的存储服务,这通常有两种方式:")]),t("h3",[s._v("第一种")]),t("p",[s._v("直接clone本仓库代码,然后修改"),t("code",[s._v("web/src/api/index.js")]),s._v("内的相关方法即可实现从你的数据库里获取数据,以及存储到你的数据中。")]),t("h3",[s._v("第二种")]),t("p",[s._v("很多时候,你可能想始终使用本仓库的最新代码,那么第一种方式就不太方便,因为你要手动去合并代码,所以提供了第二种方式。")]),t("p",[s._v("具体操作步骤:")]),t("p",[s._v("1.复制web应用打包后的资源")]),t("p",[s._v("包括:"),t("code",[s._v("dist")]),s._v("目录和"),t("code",[s._v("index.html")]),s._v("文件。")]),t("p",[s._v("2.修改复制后的"),t("code",[s._v("index.html")]),s._v("文件")]),t("p",[s._v("首先在"),t("code",[s._v("head")]),s._v("标签里插入如下代码:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("
+ } diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 00000000..385df250 --- /dev/null +++ b/nginx.conf @@ -0,0 +1,30 @@ +user nginx; +worker_processes 1; +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx.pid; +events { + worker_connections 1024; +} +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + access_log /var/log/nginx/access.log main; + sendfile on; + keepalive_timeout 65; + server { + listen 80; + server_name localhost; + location / { + root /app; + index index.html; + try_files $uri $uri/ /index.html; + } + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } + } +} \ No newline at end of file diff --git a/simple-mind-map/full.js b/simple-mind-map/full.js index aaa15795..d31889ec 100644 --- a/simple-mind-map/full.js +++ b/simple-mind-map/full.js @@ -29,7 +29,7 @@ MindMap.iconList = icons.nodeIconList MindMap.constants = constants MindMap.themes = themes MindMap.defaultTheme = defaultTheme -MindMap.version = '0.9.10' +MindMap.version = '0.9.12' MindMap.usePlugin(MiniMap) .usePlugin(Watermark) diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index 23db2ceb..705a45d7 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -10,17 +10,16 @@ import BatchExecution from './src/utils/BatchExecution' import { layoutValueList, CONSTANTS, - commonCaches, ERROR_TYPES, cssContent } from './src/constants/constant' import { SVG } from '@svgdotjs/svg.js' import { simpleDeepClone, - getType, getObjectChangedProps, isUndef, - handleGetSvgDataExtraContent + handleGetSvgDataExtraContent, + getNodeTreeBoundingRect } from './src/utils' import defaultTheme, { checkIsNodeSizeIndependenceConfig @@ -129,13 +128,18 @@ class MindMap { // 创建容器元素 initContainer() { const { associativeLineIsAlwaysAboveNode } = this.opt + // 给容器元素添加一个类名 + this.el.classList.add('smm-mind-map-container') // 节点关联线容器 const createAssociativeLineDraw = () => { this.associativeLineDraw = this.draw.group() this.associativeLineDraw.addClass('smm-associative-line-container') } // 画布 - this.svg = SVG().addTo(this.el).size(this.width, this.height) + this.svg = SVG() + .addTo(this.el) + .size(this.width, this.height) + // 容器 this.draw = this.svg.group() this.draw.addClass('smm-container') @@ -228,19 +232,10 @@ class MindMap { // 初始化缓存数据 initCache() { - Object.keys(commonCaches).forEach(key => { - let type = getType(commonCaches[key]) - let value = '' - switch (type) { - case 'Boolean': - value = false - break - default: - value = null - break - } - commonCaches[key] = value - }) + this.commonCaches = { + measureCustomNodeContentSizeEl: null, + measureRichtextNodeTextSizeEl: null + } } // 设置主题 @@ -420,7 +415,8 @@ class MindMap { paddingY = 0, ignoreWatermark = false, addContentToHeader, - addContentToFooter + addContentToFooter, + node } = {}) { const { cssTextList, header, headerHeight, footer, footerHeight } = handleGetSvgDataExtraContent({ @@ -438,6 +434,17 @@ class MindMap { draw.scale(1 / origTransform.scaleX, 1 / origTransform.scaleY) // 获取变换后的位置尺寸信息,其实是getBoundingClientRect方法的包装方法 const rect = draw.rbox() + // 需要裁减的区域 + let clipData = null + if (node) { + clipData = getNodeTreeBoundingRect( + node, + rect.x, + rect.y, + paddingX, + paddingY + ) + } // 内边距 const fixHeight = 0 rect.width += paddingX * 2 @@ -517,6 +524,7 @@ class MindMap { return { svg: clone, // 思维导图图形的整体svg元素,包括:svg(画布容器)、g(实际的思维导图组) svgHTML: clone.svg(), // svg字符串 + clipData, rect: { ...rect, // 思维导图图形未缩放时的位置尺寸等信息 ratio: rect.width / rect.height // 思维导图图形的宽高比 @@ -584,6 +592,8 @@ class MindMap { this.svg.remove() // 去除给容器元素设置的背景样式 Style.removeBackgroundStyle(this.el) + // 移除给容器元素添加的类名 + this.el.classList.remove('smm-mind-map-container') this.el.innerHTML = '' this.el = null this.removeCss() diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json index bea4b59a..09f3466c 100644 --- a/simple-mind-map/package.json +++ b/simple-mind-map/package.json @@ -1,6 +1,6 @@ { "name": "simple-mind-map", - "version": "0.9.10", + "version": "0.9.12", "description": "一个简单的web在线思维导图", "authors": [ { diff --git a/simple-mind-map/src/constants/constant.js b/simple-mind-map/src/constants/constant.js index 6778376e..b4b227d3 100644 --- a/simple-mind-map/src/constants/constant.js +++ b/simple-mind-map/src/constants/constant.js @@ -317,12 +317,6 @@ export const nodeDataNoStylePropList = [ 'attachmentName' ] -// 数据缓存 -export const commonCaches = { - measureCustomNodeContentSizeEl: null, - measureRichtextNodeTextSizeEl: null -} - // 错误类型 export const ERROR_TYPES = { READ_CLIPBOARD_ERROR: 'read_clipboard_error', diff --git a/simple-mind-map/src/constants/defaultOptions.js b/simple-mind-map/src/constants/defaultOptions.js index 7e8d6346..ee9417ce 100644 --- a/simple-mind-map/src/constants/defaultOptions.js +++ b/simple-mind-map/src/constants/defaultOptions.js @@ -318,5 +318,13 @@ export const defaultOpt = { } */ addContentToHeader: null, - addContentToFooter: null + addContentToFooter: null, + // 演示插件配置 + demonstrateConfig: null, + // 移动节点到画布中心、回到根节点等操作时是否将缩放层级复位为100% + resetScaleOnMoveNodeToCenter: false, + // 添加附加的节点前置内容,前置内容指和文本同一行的区域中的前置内容,不包括节点图片部分 + createNodePrefixContent: null, + // 添加附加的节点后置内容,后置内容指和文本同一行的区域中的后置内容,不包括节点图片部分 + createNodePostfixContent: null } diff --git a/simple-mind-map/src/core/command/Command.js b/simple-mind-map/src/core/command/Command.js index 5c51b4d8..eddc24d2 100644 --- a/simple-mind-map/src/core/command/Command.js +++ b/simple-mind-map/src/core/command/Command.js @@ -23,6 +23,18 @@ class Command { this.mindMap.opt.addHistoryTime, this ) + // 是否暂停收集历史数据 + this.isPause = false + } + + // 暂停收集历史数据 + pause() { + this.isPause = true + } + + // 恢复收集历史数据 + recovery() { + this.isPause = false } // 清空历史数据 @@ -88,7 +100,7 @@ class Command { // 添加回退数据 addHistory() { - if (this.mindMap.opt.readonly) { + if (this.mindMap.opt.readonly || this.isPause) { return } const lastData = diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 4369036f..83fa8116 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -30,7 +30,8 @@ import { createSmmFormatData, checkSmmFormatData, checkIsNodeStyleDataKey, - removeRichTextStyes + removeRichTextStyes, + formatGetNodeGeneralization } from '../../utils' import { shapeList } from './node/Shape' import { lineStyleProps } from '../../themes/default' @@ -520,7 +521,7 @@ class Render { } // 添加节点到激活列表里 - addNodeToActiveList(node) { + addNodeToActiveList(node, notEmitBeforeNodeActiveEvent = false) { if ( this.mindMap.opt.onlyOneEnableActiveNodeOnCooperate && node.userList.length > 0 @@ -528,6 +529,9 @@ class Render { return const index = this.findActiveNodeIndex(node) if (index === -1) { + if (!notEmitBeforeNodeActiveEvent) { + this.mindMap.emit('before_node_active', node, this.activeNodeList) + } this.mindMap.execCommand('SET_NODE_ACTIVE', node, true) this.activeNodeList.push(node) } @@ -989,8 +993,9 @@ class Render { const _hasCustomStyles = this._handleRemoveCustomStyles(node.data) if (_hasCustomStyles) hasCustomStyles = true // 不要忘记概要节点 - if (node.data.generalization && node.data.generalization.length > 0) { - node.data.generalization.forEach(generalizationData => { + const generalizationList = formatGetNodeGeneralization(node.data) + if (generalizationList.length > 0) { + generalizationList.forEach(generalizationData => { const _hasCustomStyles = this._handleRemoveCustomStyles(generalizationData) if (_hasCustomStyles) hasCustomStyles = true @@ -1236,7 +1241,7 @@ class Render { root.nodeData.children = [] } else { // 如果只选中了一个节点,删除后激活其兄弟节点或者父节点 - needActiveNode = this.getNextActiveNode() + needActiveNode = this.getNextActiveNode(list) for (let i = 0; i < list.length; i++) { const node = list[i] const currentEditNode = this.textEdit.getCurrentEditNode() @@ -1291,13 +1296,13 @@ class Render { if (this.activeNodeList.length <= 0 && appointNodes.length <= 0) { return } - // 删除节点后需要激活的节点,如果只选中了一个节点,删除后激活其兄弟节点或者父节点 - let needActiveNode = this.getNextActiveNode() let isAppointNodes = appointNodes.length > 0 let list = isAppointNodes ? appointNodes : this.activeNodeList list = list.filter(node => { return !node.isRoot }) + // 删除节点后需要激活的节点,如果只选中了一个节点,删除后激活其兄弟节点或者父节点 + let needActiveNode = this.getNextActiveNode(list) for (let i = 0; i < list.length; i++) { let node = list[i] if (node.isGeneralization) { @@ -1323,7 +1328,11 @@ class Render { } // 计算下一个可激活的节点 - getNextActiveNode() { + getNextActiveNode(deleteList) { + // 删除多个节点不自动激活相邻节点 + if (deleteList.length !== 1) return null + // 被删除的节点不在当前激活的节点列表里,不激活相邻节点 + if (this.findActiveNodeIndex(deleteList[0]) === -1) return null let needActiveNode = null if ( this.activeNodeList.length === 1 && @@ -1496,7 +1505,7 @@ class Render { } // 收起所有 - unexpandAllNode() { + unexpandAllNode(isSetRootNodeCenter = true) { if (!this.renderTree) return walk( this.renderTree, @@ -1512,7 +1521,9 @@ class Render { 0 ) this.mindMap.render(() => { - this.setRootNodeCenter() + if (isSetRootNodeCenter) { + this.setRootNodeCenter() + } }) } @@ -1632,7 +1643,7 @@ class Render { } // 添加节点概要 - addGeneralization(data) { + addGeneralization(data, openEdit = true) { if (this.activeNodeList.length <= 0) { return } @@ -1644,13 +1655,22 @@ class Render { ) }) const list = parseAddGeneralizationNodeList(nodeList) + const isRichText = !!this.mindMap.richText + const { focusNewNode, inserting } = this.getNewNodeBehavior( + openEdit, + list.length > 1 + ) list.forEach(item => { const newData = { + inserting, ...(data || { text: this.mindMap.opt.defaultGeneralizationText }), range: item.range || null, - uid: createUid() + uid: createUid(), + richText: isRichText, + resetRichText: isRichText, + isActive: focusNewNode } let generalization = item.node.getData('generalization') if (generalization) { @@ -1670,6 +1690,10 @@ class Render { expand: true }) }) + // 需要清除原来激活的节点 + if (focusNewNode) { + this.clearActiveNodeList() + } this.mindMap.render(() => { // 修复祖先节点存在概要时位置未更新的问题 // 修复同时给存在上下级关系的节点添加概要时重叠的问题 @@ -1776,19 +1800,28 @@ class Render { // 移动节点到画布中心 moveNodeToCenter(node) { + const { resetScaleOnMoveNodeToCenter } = this.mindMap.opt + let { transform, state } = this.mindMap.view.getTransformData() + let { left, top, width, height } = node + if (!resetScaleOnMoveNodeToCenter) { + left *= transform.scaleX + top *= transform.scaleY + width *= transform.scaleX + height *= transform.scaleY + } let halfWidth = this.mindMap.width / 2 let halfHeight = this.mindMap.height / 2 - let { left, top, width, height } = node let nodeCenterX = left + width / 2 let nodeCenterY = top + height / 2 - let { state } = this.mindMap.view.getTransformData() let targetX = halfWidth - state.x let targetY = halfHeight - state.y let offsetX = targetX - nodeCenterX let offsetY = targetY - nodeCenterY this.mindMap.view.translateX(offsetX) this.mindMap.view.translateY(offsetY) - this.mindMap.view.setScale(1) + if (resetScaleOnMoveNodeToCenter) { + this.mindMap.view.setScale(1) + } } // 回到中心主题,即设置根节点到画布中心 @@ -1803,14 +1836,24 @@ class Render { return } let parentsList = [] + let isGeneralization = false const cache = {} bfsWalk(this.renderTree, (node, parent) => { if (node.data.uid === uid) { parentsList = parent ? [...cache[parent.data.uid], parent] : [] return 'stop' - } else { - cache[node.data.uid] = parent ? [...cache[parent.data.uid], parent] : [] } + const generalizationList = formatGetNodeGeneralization(node.data) + generalizationList.forEach(item => { + if (item.uid === uid) { + parentsList = parent ? [...cache[parent.data.uid], parent] : [] + isGeneralization = true + } + }) + if (isGeneralization) { + return 'stop' + } + cache[node.data.uid] = parent ? [...cache[parent.data.uid], parent] : [] }) let needRender = false parentsList.forEach(node => { @@ -1819,6 +1862,18 @@ class Render { node.data.expand = true } }) + // 如果是展开到概要节点,那么父节点下的所有节点都需要开 + if (isGeneralization) { + const lastNode = parentsList[parentsList.length - 1] + if (lastNode) { + walk(lastNode, null, node => { + if (!node.data.expand) { + needRender = true + node.data.expand = true + } + }) + } + } if (needRender) { this.mindMap.render(callback) } else { @@ -1834,12 +1889,25 @@ class Render { res = node return true } + // 概要节点 + let isGeneralization = false + ;(node._generalizationList || []).forEach(item => { + if (item.generalizationNode.getData('uid') === uid) { + res = item.generalizationNode + isGeneralization = true + } + }) + if (isGeneralization) { + return true + } }) return res } // 高亮节点或子节点 highlightNode(node, range) { + // 如果当前正在渲染,那么不进行高亮,因为节点位置可能不正确 + if (this.isRendering) return const { highlightNodeBoxStyle = {} } = this.mindMap.opt if (!this.highlightBoxNode) { this.highlightBoxNode = new Polygon() diff --git a/simple-mind-map/src/core/render/node/Node.js b/simple-mind-map/src/core/render/node/Node.js index 8a1cad17..ff471177 100644 --- a/simple-mind-map/src/core/render/node/Node.js +++ b/simple-mind-map/src/core/render/node/Node.js @@ -1,6 +1,6 @@ import Style from './Style' import Shape from './Shape' -import { G, ForeignObject, Rect } from '@svgdotjs/svg.js' +import { G, Rect } from '@svgdotjs/svg.js' import nodeGeneralizationMethods from './nodeGeneralization' import nodeExpandBtnMethods from './nodeExpandBtn' import nodeCommandWrapsMethods from './nodeCommandWraps' @@ -8,7 +8,7 @@ import nodeCreateContentsMethods from './nodeCreateContents' import nodeExpandBtnPlaceholderRectMethods from './nodeExpandBtnPlaceholderRect' import nodeCooperateMethods from './nodeCooperate' import { CONSTANTS } from '../../../constants/constant' -import { copyNodeTree } from '../../../utils/index' +import { copyNodeTree, createForeignObjectNode } from '../../../utils/index' // 节点类 class Node { @@ -76,6 +76,8 @@ class Node { this.noteEl = null this.noteContentIsShow = false this._attachmentData = null + this._prefixData = null + this._postfixData = null this._expandBtn = null this._lastExpandBtnType = null this._showExpandBtn = false @@ -182,7 +184,12 @@ class Node { // 创建节点的各个内容对象数据 createNodeData() { // 自定义节点内容 - let { isUseCustomNodeContent, customCreateNodeContent } = this.mindMap.opt + let { + isUseCustomNodeContent, + customCreateNodeContent, + createNodePrefixContent, + createNodePostfixContent + } = this.mindMap.opt if (isUseCustomNodeContent && customCreateNodeContent) { this._customNodeContent = customCreateNodeContent(this) } @@ -201,6 +208,12 @@ class Node { this._tagData = this.createTagNode() this._noteData = this.createNoteNode() this._attachmentData = this.createAttachmentNode() + this._prefixData = createNodePrefixContent + ? createNodePrefixContent(this) + : null + this._postfixData = createNodePostfixContent + ? createNodePostfixContent(this) + : null } // 计算节点的宽高 @@ -237,6 +250,11 @@ class Node { this._rectInfo.imgContentWidth = imgContentWidth = this._imgData.width this._rectInfo.imgContentHeight = imgContentHeight = this._imgData.height } + // 自定义前置内容 + if (this._prefixData) { + textContentWidth += this._prefixData.width + textContentHeight = Math.max(textContentHeight, this._prefixData.height) + } // 图标 if (this._iconData.length > 0) { textContentWidth += this._iconData.reduce((sum, cur) => { @@ -272,7 +290,15 @@ class Node { // 附件 if (this._attachmentData) { textContentWidth += this._attachmentData.width - textContentHeight = Math.max(textContentHeight, this._attachmentData.height) + textContentHeight = Math.max( + textContentHeight, + this._attachmentData.height + ) + } + // 自定义后置内容 + if (this._postfixData) { + textContentWidth += this._postfixData.width + textContentHeight = Math.max(textContentHeight, this._postfixData.height) } // 文字内容部分的尺寸 this._rectInfo.textContentWidth = textContentWidth @@ -334,10 +360,11 @@ class Node { } // 如果存在自定义节点内容,那么使用自定义节点内容 if (this.isUseCustomNodeContent()) { - let foreignObject = new ForeignObject() - foreignObject.width(width) - foreignObject.height(height) - foreignObject.add(this._customNodeContent) + const foreignObject = createForeignObjectNode({ + el: this._customNodeContent, + width, + height + }) this.group.add(foreignObject) addHoverNode() return @@ -352,6 +379,19 @@ class Node { // 内容节点 let textContentNested = new G() let textContentOffsetX = 0 + // 自定义前置内容 + if (this._prefixData) { + const foreignObject = createForeignObjectNode({ + el: this._prefixData.el, + width: this._prefixData.width, + height: this._prefixData.height + }) + foreignObject + .x(textContentOffsetX) + .y((this._rectInfo.textContentHeight - this._prefixData.height) / 2) + textContentNested.add(foreignObject) + textContentOffsetX += this._prefixData.width + textContentItemMargin + } // icon let iconNested = new G() if (this._iconData && this._iconData.length > 0) { @@ -368,9 +408,11 @@ class Node { } // 文字 if (this._textData) { + const oldX = this._textData.node.attr('data-offsetx') || 0 this._textData.node.attr('data-offsetx', textContentOffsetX) // 修复safari浏览器节点存在图标时文字位置不正确的问题 ;(this._textData.nodeContent || this._textData.node) + .x(-oldX) // 修复非富文本模式下同时存在图标和换行的文本时,被收起和展开时图标与文字距离会逐渐拉大的问题 .x(textContentOffsetX) .y(0) textContentNested.add(this._textData.node) @@ -414,6 +456,19 @@ class Node { textContentNested.add(this._attachmentData.node) textContentOffsetX += this._attachmentData.width } + // 自定义后置内容 + if (this._postfixData) { + const foreignObject = createForeignObjectNode({ + el: this._postfixData.el, + width: this._postfixData.width, + height: this._postfixData.height + }) + foreignObject + .x(textContentOffsetX) + .y((this._rectInfo.textContentHeight - this._postfixData.height) / 2) + textContentNested.add(foreignObject) + textContentOffsetX += this._postfixData.width + } // 文字内容整体 textContentNested.translate( width / 2 - textContentNested.bbox().width / 2, @@ -466,7 +521,7 @@ class Node { } } // 多选和取消多选 - if (e.ctrlKey && enableCtrlKeyNodeSelection) { + if ((e.ctrlKey || e.metaKey) && enableCtrlKeyNodeSelection) { this.isMultipleChoice = true let isActive = this.getData('isActive') if (!isActive) @@ -477,7 +532,7 @@ class Node { ) this.mindMap.renderer[ isActive ? 'removeNodeFromActiveList' : 'addNodeToActiveList' - ](this) + ](this, true) this.renderer.emitNodeActiveEvent(isActive ? null : this) } this.mindMap.emit('node_mousedown', this, e) @@ -510,7 +565,7 @@ class Node { // 双击事件 this.group.on('dblclick', e => { const { readonly, onlyOneEnableActiveNodeOnCooperate } = this.mindMap.opt - if (readonly || e.ctrlKey) { + if (readonly || e.ctrlKey || e.metaKey) { return } e.stopPropagation() @@ -558,10 +613,16 @@ class Node { } this.mindMap.emit('before_node_active', this, this.renderer.activeNodeList) this.renderer.clearActiveNodeList() - this.renderer.addNodeToActiveList(this) + this.renderer.addNodeToActiveList(this, true) this.renderer.emitNodeActiveEvent(this) } + // 取消激活该节点 + deactivate() { + this.mindMap.renderer.removeNodeFromActiveList(this) + this.mindMap.renderer.emitNodeActiveEvent() + } + // 更新节点 update() { if (!this.group) { @@ -569,9 +630,10 @@ class Node { } this.updateNodeActiveClass() let { alwaysShowExpandBtn } = this.mindMap.opt + const childrenLength = this.nodeData.children.length if (alwaysShowExpandBtn) { // 需要移除展开收缩按钮 - if (this._expandBtn && this.nodeData.children.length <= 0) { + if (this._expandBtn && childrenLength <= 0) { this.removeExpandBtn() } else { // 更新展开收起按钮 @@ -580,7 +642,9 @@ class Node { } else { let { isActive, expand } = this.getData() // 展开状态且非激活状态,且当前鼠标不在它上面,才隐藏 - if (expand && !isActive && !this._isMouseenter) { + if (childrenLength <= 0) { + this.removeExpandBtn() + } else if (expand && !isActive && !this._isMouseenter) { this.hideExpandBtn() } else { this.showExpandBtn() diff --git a/simple-mind-map/src/core/render/node/nodeCreateContents.js b/simple-mind-map/src/core/render/node/nodeCreateContents.js index 20fda808..4dc4dcf9 100644 --- a/simple-mind-map/src/core/render/node/nodeCreateContents.js +++ b/simple-mind-map/src/core/render/node/nodeCreateContents.js @@ -4,19 +4,13 @@ import { removeHtmlStyle, addHtmlStyle, checkIsRichText, - isUndef + isUndef, + createForeignObjectNode } from '../../../utils' -import { - Image as SVGImage, - SVG, - A, - G, - Rect, - Text, - ForeignObject -} from '@svgdotjs/svg.js' +import { Image as SVGImage, SVG, A, G, Rect, Text } from '@svgdotjs/svg.js' import iconsSvg from '../../../svg/icons' -import { CONSTANTS, commonCaches } from '../../../constants/constant' +import { CONSTANTS } from '../../../constants/constant' +import { defenseXSS } from '../../../utils/xss' // 创建图片节点 function createImgNode() { @@ -148,14 +142,19 @@ function createRichTextNode() { text: text }) } - let html = `
${this.getData('text')}
` - if (!commonCaches.measureRichtextNodeTextSizeEl) { - commonCaches.measureRichtextNodeTextSizeEl = document.createElement('div') - commonCaches.measureRichtextNodeTextSizeEl.style.position = 'fixed' - commonCaches.measureRichtextNodeTextSizeEl.style.left = '-999999px' - this.mindMap.el.appendChild(commonCaches.measureRichtextNodeTextSizeEl) + let html = `
${defenseXSS(this.getData('text'))}
` + if (!this.mindMap.commonCaches.measureRichtextNodeTextSizeEl) { + this.mindMap.commonCaches.measureRichtextNodeTextSizeEl = + document.createElement('div') + this.mindMap.commonCaches.measureRichtextNodeTextSizeEl.style.position = + 'fixed' + this.mindMap.commonCaches.measureRichtextNodeTextSizeEl.style.left = + '-999999px' + this.mindMap.el.appendChild( + this.mindMap.commonCaches.measureRichtextNodeTextSizeEl + ) } - let div = commonCaches.measureRichtextNodeTextSizeEl + let div = this.mindMap.commonCaches.measureRichtextNodeTextSizeEl div.innerHTML = html let el = div.children[0] el.classList.add('smm-richtext-node-wrap') @@ -174,10 +173,11 @@ function createRichTextNode() { height = Math.ceil(height) g.attr('data-width', width) g.attr('data-height', height) - let foreignObject = new ForeignObject() - foreignObject.width(width) - foreignObject.height(height) - foreignObject.add(div.children[0]) + const foreignObject = createForeignObjectNode({ + el: div.children[0], + width, + height + }) g.add(foreignObject) return { node: g, @@ -287,6 +287,9 @@ function createTagNode() { let nodes = [] tagData.slice(0, this.mindMap.opt.maxTag).forEach((item, index) => { let tag = new G() + tag.on('click', () => { + this.mindMap.emit('node_tag_click', this, item) + }) // 标签文本 let text = new Text().text(item).x(8).cy(8) this.style.tagText(text, index) @@ -313,7 +316,10 @@ function createNoteNode() { return null } let iconSize = this.mindMap.themeConfig.iconSize - let node = new SVG().attr('cursor', 'pointer').size(iconSize, iconSize) + let node = new SVG() + .attr('cursor', 'pointer') + .addClass('smm-node-note') + .size(iconSize, iconSize) // 透明的层,用来作为鼠标区域 node.add(new Rect().size(iconSize, iconSize).fill({ color: 'transparent' })) // 备注图标 @@ -413,18 +419,22 @@ function getNoteContentPosition() { // 测量自定义节点内容元素的宽高 function measureCustomNodeContentSize(content) { - if (!commonCaches.measureCustomNodeContentSizeEl) { - commonCaches.measureCustomNodeContentSizeEl = document.createElement('div') - commonCaches.measureCustomNodeContentSizeEl.style.cssText = ` + if (!this.mindMap.commonCaches.measureCustomNodeContentSizeEl) { + this.mindMap.commonCaches.measureCustomNodeContentSizeEl = + document.createElement('div') + this.mindMap.commonCaches.measureCustomNodeContentSizeEl.style.cssText = ` position: fixed; left: -99999px; top: -99999px; ` - this.mindMap.el.appendChild(commonCaches.measureCustomNodeContentSizeEl) + this.mindMap.el.appendChild( + this.mindMap.commonCaches.measureCustomNodeContentSizeEl + ) } - commonCaches.measureCustomNodeContentSizeEl.innerHTML = '' - commonCaches.measureCustomNodeContentSizeEl.appendChild(content) - let rect = commonCaches.measureCustomNodeContentSizeEl.getBoundingClientRect() + this.mindMap.commonCaches.measureCustomNodeContentSizeEl.innerHTML = '' + this.mindMap.commonCaches.measureCustomNodeContentSizeEl.appendChild(content) + let rect = + this.mindMap.commonCaches.measureCustomNodeContentSizeEl.getBoundingClientRect() return { width: rect.width, height: rect.height diff --git a/simple-mind-map/src/core/render/node/nodeGeneralization.js b/simple-mind-map/src/core/render/node/nodeGeneralization.js index 597f6454..24dd7793 100644 --- a/simple-mind-map/src/core/render/node/nodeGeneralization.js +++ b/simple-mind-map/src/core/render/node/nodeGeneralization.js @@ -51,6 +51,7 @@ function createGeneralizationNode() { if (!cur.generalizationNode) { cur.generalizationNode = new Node({ data: { + inserting: item.inserting, data: item }, uid: createUid(), @@ -59,6 +60,7 @@ function createGeneralizationNode() { isGeneralization: true }) } + delete item.inserting // 关联所属节点 cur.generalizationNode.generalizationBelongNode = this // 大小 diff --git a/simple-mind-map/src/core/view/View.js b/simple-mind-map/src/core/view/View.js index 41ee92ba..93875b6f 100644 --- a/simple-mind-map/src/core/view/View.js +++ b/simple-mind-map/src/core/view/View.js @@ -37,7 +37,7 @@ class View { this.mindMap.event.on('drag', (e, event) => { // 按住ctrl键拖动为多选 // 禁用拖拽 - if (e.ctrlKey || this.mindMap.opt.isDisableDrag) { + if (e.ctrlKey || e.metaKey || this.mindMap.opt.isDisableDrag) { return } if (this.firstDrag) { @@ -72,7 +72,11 @@ class View { return customHandleMousewheel(e) } // 1.鼠标滚轮事件控制缩放 - if (mousewheelAction === CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM || e.ctrlKey) { + if ( + mousewheelAction === CONSTANTS.MOUSE_WHEEL_ACTION.ZOOM || + e.ctrlKey || + e.metaKey + ) { if (disableMouseWheelZoom) return const { x: clientX, y: clientY } = this.mindMap.toPos( e.clientX, @@ -276,11 +280,12 @@ class View { } // 适应画布大小 - fit() { - const { fitPadding } = this.mindMap.opt + fit(getRbox = () => {}, enlarge = false, fitPadding) { + fitPadding = + fitPadding === undefined ? this.mindMap.opt.fitPadding : fitPadding const draw = this.mindMap.draw const origTransform = draw.transform() - const rect = draw.rbox() + const rect = getRbox() || draw.rbox() const drawWidth = rect.width / origTransform.scaleX const drawHeight = rect.height / origTransform.scaleY const drawRatio = drawWidth / drawHeight @@ -290,7 +295,7 @@ class View { const elRatio = elWidth / elHeight let newScale = 0 let flag = '' - if (drawWidth <= elWidth && drawHeight <= elHeight) { + if (drawWidth <= elWidth && drawHeight <= elHeight && !enlarge) { newScale = 1 flag = 1 } else { @@ -308,7 +313,7 @@ class View { newScale = newWidth / drawWidth } this.setScale(newScale) - const newRect = draw.rbox() + const newRect = getRbox() || draw.rbox() // 需要考虑画布容器距浏览器窗口左上角的距离 newRect.x -= this.mindMap.elRect.left newRect.y -= this.mindMap.elRect.top diff --git a/simple-mind-map/src/layouts/Base.js b/simple-mind-map/src/layouts/Base.js index f06b0549..a2caa07a 100644 --- a/simple-mind-map/src/layouts/Base.js +++ b/simple-mind-map/src/layouts/Base.js @@ -144,9 +144,10 @@ class Base { this.cacheNode(newUid, newNode) // 数据关联实际节点 data._node = newNode - if (data.data.isActive) { - this.renderer.addNodeToActiveList(newNode) - } + } + // 如果该节点数据是已激活状态,那么添加到激活节点列表里 + if (data.data.isActive) { + this.renderer.addNodeToActiveList(newNode) } // 如果当前节点在激活节点列表里,那么添加上激活的状态 if (this.mindMap.renderer.findActiveNodeIndex(newNode) !== -1) { diff --git a/simple-mind-map/src/parse/markdownTo.js b/simple-mind-map/src/parse/markdownTo.js index e399bf22..a7407025 100644 --- a/simple-mind-map/src/parse/markdownTo.js +++ b/simple-mind-map/src/parse/markdownTo.js @@ -1,5 +1,21 @@ import { fromMarkdown } from 'mdast-util-from-markdown' +const getNodeText = node => { + // 优先找出其中的text类型的子节点 + let textChild = (node.children || []).find(item => { + return item.type === 'text' + }) + // 没有找到,那么直接使用第一个子节点 + textChild = textChild || node.children[0] + if (textChild) { + if (textChild.value !== undefined) { + return textChild.value + } + return getNodeText(textChild) + } + return '' +} + // 处理list的情况 const handleList = node => { let list = [] @@ -9,7 +25,7 @@ const handleList = node => { let node = {} node.data = { // 节点内容 - text: cur.children[0].children[0].value + text: getNodeText(cur) } node.children = [] newArr.push(node) @@ -45,7 +61,7 @@ export const transformMarkdownTo = md => { let node = {} node.data = { // 节点内容 - text: cur.children[0].value + text: getNodeText(cur) } node.children = [] // 如果当前的层级大于上一个节点的层级,那么是其子节点 diff --git a/simple-mind-map/src/plugins/Demonstrate.js b/simple-mind-map/src/plugins/Demonstrate.js new file mode 100644 index 00000000..ec2965e2 --- /dev/null +++ b/simple-mind-map/src/plugins/Demonstrate.js @@ -0,0 +1,397 @@ +import { + walk, + getNodeTreeBoundingRect, + fullscrrenEvent, + fullScreen, + exitFullScreen, + formatGetNodeGeneralization +} from '../utils/index' +import { keyMap } from '../core/command/keyMap' + +const defaultConfig = { + boxShadowColor: 'rgba(0, 0, 0, 0.8)', // 高亮框四周的区域颜色 + borderRadius: '5px', // 高亮框的圆角大小 + transition: 'all 0.3s ease-out', // 高亮框动画的过渡 + zIndex: 9999, // 高亮框元素的层级 + padding: 20, // 高亮框的内边距 + margin: 50, // 高亮框的外边距 + openBlankMode: true // 是否开启填空模式,即带下划线的文本默认不显示,按回车键才依次显示 +} + +// 演示插件 +class Demonstrate { + constructor(opt) { + this.mindMap = opt.mindMap + // 演示的步骤列表 + this.stepList = [] + // 当前所在步骤 + this.currentStepIndex = 0 + // 当前所在步骤对应的节点实例 + this.currentStepNode = null + // 当前所在步骤节点的下划线文本数据 + this.currentUnderlineTextData = null + // 临时的样式剩余 + this.tmpStyleEl = null + // 高亮样式元素 + this.highlightEl = null + this.transformState = null + this.renderTree = null + this.config = Object.assign( + { ...defaultConfig }, + this.mindMap.opt.demonstrateConfig || {} + ) + } + + // 进入演示模式 + enter() { + // 全屏 + this.bindFullscreenEvent() + // 如果已经全屏了 + if (document.fullscreenElement === this.mindMap.el) { + this._enter() + } else { + // 否则申请全屏 + fullScreen(this.mindMap.el) + } + } + + _enter() { + // 添加演示用的临时的样式 + this.addTmpStyles() + // 记录演示前的画布状态 + this.transformState = this.mindMap.view.getTransformData() + // 记录演示前的画布数据 + this.renderTree = this.mindMap.getData() + // 暂停收集历史记录 + this.mindMap.command.pause() + // 暂停思维导图快捷键响应 + this.mindMap.keyCommand.pause() + // 创建高亮元素 + this.createHighlightEl() + // 计算步骤数据 + this.getStepList() + // 收起所有节点 + this.mindMap.execCommand('UNEXPAND_ALL', false) + const onRenderEnd = () => { + this.mindMap.off('node_tree_render_end', onRenderEnd) + // 聚焦到第一步 + this.jump(this.currentStepIndex) + this.bindEvent() + } + this.mindMap.on('node_tree_render_end', onRenderEnd) + } + + // 退出演示模式 + exit() { + exitFullScreen(this.mindMap.el) + this.mindMap.updateData(this.renderTree) + this.mindMap.view.setTransformData(this.transformState) + this.renderTree = null + this.transformState = null + this.stepList = [] + this.currentStepIndex = 0 + this.currentStepNode = null + this.currentUnderlineTextData = null + this.unBindEvent() + this.removeTmpStyles() + this.removeHighlightEl() + this.mindMap.command.recovery() + this.mindMap.keyCommand.recovery() + this.mindMap.emit('exit_demonstrate') + } + + // 添加临时的样式 + addTmpStyles() { + this.tmpStyleEl = document.createElement('style') + let cssText = ` + /* 画布所有元素禁止响应鼠标事件 */ + .smm-mind-map-container { + pointer-events: none; + } + /* 超链接图标允许响应鼠标事件 */ + .smm-node a { + pointer-events: all; + } + /* 备注图标允许响应鼠标事件 */ + .smm-node .smm-node-note { + pointer-events: all; + } + ` + if (this.config.openBlankMode) { + cssText += ` + /* 带下划线的文本内容全部隐藏 */ + .smm-richtext-node-wrap u { + opacity: 0; + } + ` + } + this.tmpStyleEl.innerText = cssText + document.head.appendChild(this.tmpStyleEl) + } + + // 移除临时的样式 + removeTmpStyles() { + if (this.tmpStyleEl) document.head.removeChild(this.tmpStyleEl) + } + + // 创建高亮元素 + createHighlightEl() { + if (!this.highlightEl) { + // 高亮元素 + this.highlightEl = document.createElement('div') + this.highlightEl.style.cssText = ` + position: absolute; + box-shadow: 0 0 0 5000px ${this.config.boxShadowColor}; + border-radius: ${this.config.borderRadius}; + transition: ${this.config.transition}; + z-index: ${this.config.zIndex + 1}; + pointer-events: none; + ` + this.mindMap.el.appendChild(this.highlightEl) + } + } + + // 移除高亮元素 + removeHighlightEl() { + if (this.highlightEl) { + this.mindMap.el.removeChild(this.highlightEl) + this.highlightEl = null + } + } + + // 更新高亮元素的位置和大小 + updateHighlightEl({ left, top, width, height }) { + const padding = this.config.padding + if (left) { + this.highlightEl.style.left = left - padding + 'px' + } + if (top) { + this.highlightEl.style.top = top - padding + 'px' + } + if (width) { + this.highlightEl.style.width = width + padding * 2 + 'px' + } + if (height) { + this.highlightEl.style.height = height + padding * 2 + 'px' + } + } + + // 绑定事件 + bindEvent() { + this.onKeydown = this.onKeydown.bind(this) + window.addEventListener('keydown', this.onKeydown) + } + + // 绑定全屏事件 + bindFullscreenEvent() { + this.onFullscreenChange = this.onFullscreenChange.bind(this) + document.addEventListener(fullscrrenEvent, this.onFullscreenChange) + } + + // 解绑事件 + unBindEvent() { + window.removeEventListener('keydown', this.onKeydown) + document.removeEventListener(fullscrrenEvent, this.onFullscreenChange) + } + + // 全屏状态改变 + onFullscreenChange() { + if (!document.fullscreenElement) { + this.exit() + } else if (document.fullscreenElement === this.mindMap.el) { + this._enter() + } + } + + // 按键事件 + onKeydown(e) { + // 上一个 + if (e.keyCode === keyMap.Left) { + this.prev() + } else if (e.keyCode === keyMap.Right) { + // 下一个 + this.next() + } else if (e.keyCode === keyMap.Esc) { + // 退出演示 + this.exit() + } else if (e.keyCode === keyMap.Enter) { + // 回车键显示隐藏的下划线文本 + this.showNextUnderlineText() + } + } + + // 上一张 + prev() { + if (this.currentStepIndex > 0) { + this.jump(this.currentStepIndex - 1) + } + } + + // 下一张 + next() { + const stepLength = this.stepList.length + if (this.currentStepIndex < stepLength - 1) { + this.jump(this.currentStepIndex + 1) + } + } + + // 显示隐藏的下划线文本 + showNextUnderlineText() { + if ( + !this.config.openBlankMode || + !this.currentStepNode || + !this.currentUnderlineTextData + ) + return + const { index, list, length } = this.currentUnderlineTextData + if (index >= length) return + const node = list[index] + this.currentUnderlineTextData.index++ + node.node.style.opacity = 1 + } + + // 跳转到某一张 + jump(index) { + // 移除该当前下划线元素设置的样式 + if (this.currentUnderlineTextData) { + this.currentUnderlineTextData.list.forEach(item => { + item.node.style.opacity = '' + }) + this.currentUnderlineTextData = null + } + this.currentStepNode = null + this.currentStepIndex = index + this.mindMap.emit( + 'demonstrate_jump', + this.currentStepIndex, + this.stepList.length + ) + const step = this.stepList[index] + // 这一步的节点数据 + const nodeData = step.node + // 该节点的uid + const uid = nodeData.data.uid + // 根据uid在画布上找到该节点实例 + const node = this.mindMap.renderer.findNodeByUid(uid) + // 如果该节点实例不存在,那么先展开到该节点 + if (!node) { + this.mindMap.renderer.expandToNodeUid(uid, () => { + const node = this.mindMap.renderer.findNodeByUid(uid) + // 展开后还是没找到,那么就别进入了,否则会死循环 + if (node) { + this.jump(index) + } + }) + return + } + // 1.聚焦到某个节点 + if (step.type === 'node') { + this.currentStepNode = node + // 当前节点存在带下划线的文本内容 + const uNodeList = this.config.openBlankMode ? node.group.find('u') : null + if (uNodeList && uNodeList.length > 0) { + this.currentUnderlineTextData = { + index: 0, + list: uNodeList, + length: uNodeList.length + } + } + // 适应画布大小 + this.mindMap.view.fit( + () => { + return node.group.rbox() + }, + true, + this.config.padding + this.config.margin + ) + const rect = node.group.rbox() + this.updateHighlightEl({ + left: rect.x, + top: rect.y, + width: rect.width, + height: rect.height + }) + } else { + // 2.聚焦到某个节点的所有子节点 + // 聚焦该节点的所有子节点 + const task = () => { + // 先收起该节点所有子节点的子节点 + nodeData.children.forEach(item => { + item.data.expand = false + }) + this.mindMap.render(() => { + // 适应画布大小 + this.mindMap.view.fit( + () => { + const res = getNodeTreeBoundingRect(node, 0, 0, 0, 0, true) + return { + ...res, + x: res.left, + y: res.top + } + }, + true, + this.config.padding + this.config.margin + ) + const res = getNodeTreeBoundingRect(node, 0, 0, 0, 0, true) + this.updateHighlightEl(res) + }) + } + // 如果该节点是收起状态,那么需要先展开 + if (!nodeData.data.expand) { + this.mindMap.execCommand('SET_NODE_EXPAND', node, true) + const onRenderEnd = () => { + this.mindMap.off('node_tree_render_end', onRenderEnd) + task() + } + this.mindMap.on('node_tree_render_end', onRenderEnd) + } else { + // 否则直接聚焦 + task() + } + } + } + + // 深度度优先遍历所有节点,返回步骤列表 + getStepList() { + walk(this.mindMap.renderer.renderTree, null, node => { + this.stepList.push({ + type: 'node', + node + }) + // 添加概要步骤 + const generalizationList = formatGetNodeGeneralization(node.data) + generalizationList.forEach(item => { + // 没有uid的直接过滤掉,否则会死循环 + if (item.uid) { + this.stepList.push({ + type: 'node', + node: { + data: item + } + }) + } + }) + if (node.children.length > 1) { + this.stepList.push({ + type: 'children', + node + }) + } + }) + } + + // 插件被移除前做的事情 + beforePluginRemove() { + this.unBindEvent() + } + + // 插件被卸载前做的事情 + beforePluginDestroy() { + this.unBindEvent() + } +} + +Demonstrate.instanceName = 'demonstrate' + +export default Demonstrate diff --git a/simple-mind-map/src/plugins/Drag.js b/simple-mind-map/src/plugins/Drag.js index 544776e1..ef3aa466 100644 --- a/simple-mind-map/src/plugins/Drag.js +++ b/simple-mind-map/src/plugins/Drag.js @@ -122,6 +122,10 @@ class Drag extends Base { if (!this.isMousedown) { return } + // 停止自动移动 + if (this.mindMap.opt.autoMoveWhenMouseInEdgeOnDrag && this.mindMap.select) { + this.mindMap.select.clearAutoMoveTimer() + } this.isMousedown = false // 恢复被拖拽节点的临时设置 this.beingDragNodeList.forEach(node => { diff --git a/simple-mind-map/src/plugins/Export.js b/simple-mind-map/src/plugins/Export.js index 589ff89a..64f7faef 100644 --- a/simple-mind-map/src/plugins/Export.js +++ b/simple-mind-map/src/plugins/Export.js @@ -47,15 +47,26 @@ class Export { } // 获取svg数据 - async getSvgData() { - let { exportPaddingX, exportPaddingY, errorHandler, resetCss, addContentToHeader, addContentToFooter } = - this.mindMap.opt - let { svg, svgHTML } = this.mindMap.getSvgData({ + async getSvgData(node) { + let { + exportPaddingX, + exportPaddingY, + errorHandler, + resetCss, + addContentToHeader, + addContentToFooter + } = this.mindMap.opt + let { svg, svgHTML, clipData } = this.mindMap.getSvgData({ paddingX: exportPaddingX, paddingY: exportPaddingY, addContentToHeader, - addContentToFooter + addContentToFooter, + node }) + if (clipData) { + clipData.paddingX = exportPaddingX + clipData.paddingY = exportPaddingY + } // svg的image标签,把图片的url转换成data:url类型,否则导出会丢失图片 const task1 = this.createTransformImgTaskList( svg, @@ -90,12 +101,13 @@ class Export { } return { node: svg, - str: svgHTML + str: svgHTML, + clipData } } // svg转png - svgToPng(svgSrc, transparent) { + svgToPng(svgSrc, transparent, clipData = null) { return new Promise((resolve, reject) => { const img = new Image() // 跨域图片需要添加这个属性,否则画布被污染了无法导出图片 @@ -109,6 +121,15 @@ class Export { ) let imgWidth = img.width let imgHeight = img.height + // 如果是裁减操作的话,那么需要手动添加内边距,及调整图片大小为实际的裁减区域的大小,不要忘了内边距哦 + let paddingX = 0 + let paddingY = 0 + if (clipData) { + paddingX = clipData.paddingX + paddingY = clipData.paddingY + imgWidth = clipData.width + paddingX * 2 + imgHeight = clipData.height + paddingY * 2 + } // 检查是否超出canvas支持的像素上限 const maxSize = 16384 / dpr const maxArea = maxSize * maxSize @@ -135,7 +156,22 @@ class Export { await this.drawBackgroundToCanvas(ctx, imgWidth, imgHeight) } // 图片绘制到canvas里 - ctx.drawImage(img, 0, 0, imgWidth, imgHeight) + // 如果有裁减数据,那么需要进行裁减 + if (clipData) { + ctx.drawImage( + img, + clipData.left, + clipData.top, + clipData.width, + clipData.height, + paddingX, + paddingY, + clipData.width, + clipData.height + ) + } else { + ctx.drawImage(img, 0, 0, imgWidth, imgHeight) + } resolve(canvas.toDataURL()) } catch (error) { reject(error) @@ -219,13 +255,24 @@ class Export { * 方法1.把svg的图片都转化成data:url格式,再转换 * 方法2.把svg的图片提取出来再挨个绘制到canvas里,最后一起转换 */ - async png(name, transparent = false) { - const { str } = await this.getSvgData() + async png(name, transparent = false, node = null) { + this.handleNodeExport(node) + const { str, clipData } = await this.getSvgData(node) const svgUrl = await this.fixSvgStrAndToBlob(str) - const res = await this.svgToPng(svgUrl, transparent) + const res = await this.svgToPng(svgUrl, transparent, clipData) return res } + // 导出指定节点,如果该节点是激活状态,那么取消激活和隐藏展开收起按钮 + handleNodeExport(node) { + if (node && node.getData('isActive')) { + node.deactivate() + if (!this.mindMap.opt.alwaysShowExpandBtn && node.getData('expand')) { + node.removeExpandBtn() + } + } + } + // 导出为pdf async pdf(name, transparent = false) { if (!this.mindMap.doExportPDF) { diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 9fdd8e6f..aee60138 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -8,7 +8,8 @@ import { getVisibleColorFromTheme, isUndef, checkSmmFormatData, - removeHtmlNodeByClass + removeHtmlNodeByClass, + formatGetNodeGeneralization } from '../utils' import { CONSTANTS } from '../constants/constant' @@ -327,8 +328,8 @@ class RichText { list.forEach(node => { this.mindMap.execCommand('SET_NODE_TEXT', node, html, true) // if (node.isGeneralization) { - // 概要节点 - // node.generalizationBelongNode.updateGeneralization() + // 概要节点 + // node.generalizationBelongNode.updateGeneralization() // } this.mindMap.render() }) @@ -649,7 +650,14 @@ class RichText { if (node.data.richText) { node.data.richText = false node.data.text = getTextFromHtml(node.data.text) - // delete node.data.uid + } + // 概要 + if (node.data) { + const generalizationList = formatGetNodeGeneralization(node.data) + generalizationList.forEach(item => { + item.richText = false + item.text = getTextFromHtml(item.text) + }) } }, null, @@ -670,6 +678,14 @@ class RichText { root.data.richText = true root.data.resetRichText = true } + // 概要 + if (root.data) { + const generalizationList = formatGetNodeGeneralization(root.data) + generalizationList.forEach(item => { + item.richText = true + item.resetRichText = true + }) + } if (root.children && root.children.length > 0) { Array.from(root.children).forEach(item => { walk(item) diff --git a/simple-mind-map/src/plugins/Select.js b/simple-mind-map/src/plugins/Select.js index b66a9d78..2892d08f 100644 --- a/simple-mind-map/src/plugins/Select.js +++ b/simple-mind-map/src/plugins/Select.js @@ -44,7 +44,7 @@ class Select { } let { useLeftKeySelectionRightKeyDrag } = this.mindMap.opt if ( - !e.ctrlKey && + !(e.ctrlKey || e.metaKey) && (useLeftKeySelectionRightKeyDrag ? e.which !== 1 : e.which !== 3) ) { return @@ -237,11 +237,13 @@ class Select { return } this.mindMap.renderer.addNodeToActiveList(node) + this.mindMap.renderer.emitNodeActiveEvent() } else if (node.getData('isActive')) { if (!node.getData('isActive')) { return } this.mindMap.renderer.removeNodeFromActiveList(node) + this.mindMap.renderer.emitNodeActiveEvent() } }) } diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index 3066d477..b192b932 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -157,9 +157,10 @@ export const copyRenderTree = (tree, root, removeActiveState = false) => { tree.data = simpleDeepClone(root.data) if (removeActiveState) { tree.data.isActive = false - if (tree.data.generalization) { - tree.data.generalization.isActive = false - } + const generalizationList = formatGetNodeGeneralization(tree.data) + generalizationList.forEach(item => { + item.isActive = false + }) } tree.children = [] if (root.children && root.children.length > 0) { @@ -1335,9 +1336,7 @@ export const handleGetSvgDataExtraContent = ({ const { el, cssText, height } = res if (el instanceof HTMLElement) { el.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml') - const foreignObject = new ForeignObject() - foreignObject.height(height) - foreignObject.add(el) + const foreignObject = createForeignObjectNode({ el, height }) callback(foreignObject, height) } if (cssText) { @@ -1361,3 +1360,119 @@ export const handleGetSvgDataExtraContent = ({ footerHeight } } + +// 获取指定节点的包围框信息 +export const getNodeTreeBoundingRect = ( + node, + x = 0, + y = 0, + paddingX = 0, + paddingY = 0, + excludeSelf = false +) => { + let minX = Infinity + let maxX = -Infinity + let minY = Infinity + let maxY = -Infinity + const walk = (root, isRoot) => { + if (!(isRoot && excludeSelf)) { + const { x, y, width, height } = root.group + .findOne('.smm-node-shape') + .rbox() + if (x < minX) { + minX = x + } + if (x + width > maxX) { + maxX = x + width + } + if (y < minY) { + minY = y + } + if (y + height > maxY) { + maxY = y + height + } + } + if (root._generalizationList.length > 0) { + root._generalizationList.forEach(item => { + walk(item.generalizationNode) + }) + } + if (root.children) { + root.children.forEach(item => { + walk(item) + }) + } + } + walk(node, true) + + minX = minX - x + paddingX + minY = minY - y + paddingY + maxX = maxX - x + paddingX + maxY = maxY - y + paddingY + + return { + left: minX, + top: minY, + width: maxX - minX, + height: maxY - minY + } +} + +// 全屏事件检测 +const getOnfullscreEnevt = () => { + if (document.documentElement.requestFullScreen) { + return 'fullscreenchange' + } else if (document.documentElement.webkitRequestFullScreen) { + return 'webkitfullscreenchange' + } else if (document.documentElement.mozRequestFullScreen) { + return 'mozfullscreenchange' + } else if (document.documentElement.msRequestFullscreen) { + return 'msfullscreenchange' + } +} +export const fullscrrenEvent = getOnfullscreEnevt() + +// 全屏 +export const fullScreen = element => { + if (element.requestFullScreen) { + element.requestFullScreen() + } else if (element.webkitRequestFullScreen) { + element.webkitRequestFullScreen() + } else if (element.mozRequestFullScreen) { + element.mozRequestFullScreen() + } +} + +// 退出全屏 +export const exitFullScreen = () => { + if (document.exitFullscreen) { + document.exitFullscreen() + } else if (document.webkitExitFullscreen) { + document.webkitExitFullscreen() + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen() + } +} + +// 创建foreignObject节点 +export const createForeignObjectNode = ({ el, width, height }) => { + const foreignObject = new ForeignObject() + if (width !== undefined) { + foreignObject.width(width) + } + if (height !== undefined) { + foreignObject.height(height) + } + foreignObject.add(el) + return foreignObject +} + +// 格式化获取节点的概要数据 +export const formatGetNodeGeneralization = data => { + const generalization = data.generalization + if (generalization) { + return Array.isArray(generalization) ? generalization : [generalization] + } else { + return [] + } +} diff --git a/simple-mind-map/src/utils/xmind.js b/simple-mind-map/src/utils/xmind.js index 43948d02..4d0c1316 100644 --- a/simple-mind-map/src/utils/xmind.js +++ b/simple-mind-map/src/utils/xmind.js @@ -5,6 +5,7 @@ import { getTextFromHtml, createUid } from './index' +import { formatGetNodeGeneralization } from '../utils/index' // 解析出新xmind的概要文本 export const getSummaryText = (node, topicId) => { @@ -182,19 +183,9 @@ export const getXmindContentXmlData = () => { return ` Warning 警告 Attention Warnung 경고 This file can not be opened normally, please do not modify and save, otherwise the contents will be permanently lost! You can try using XMind 8 Update 3 or later version to open 该文件无法正常打开,请勿修改并保存,否则文件内容将会永久性丢失! 你可以尝试使用 XMind 8 Update 3 或更新版本打开 該文件無法正常打開,請勿修改並保存,否則文件內容將會永久性丟失! 你可以嘗試使用 XMind 8 Update 3 或更新版本打開 この文書は正常に開かないので、修正して保存しないようにしてください。そうでないと、書類の内容が永久に失われます。! XMind 8 Update 3 や更新版を使って開くこともできます Datei kann nicht richtig geöffnet werden. Bitte ändern Sie diese Datei nicht und speichern Sie sie, sonst wird die Datei endgültig gelöscht werden. Bitte versuchen Sie, diese Datei mit XMind 8 Update 3 oder später zu öffnen. Ce fichier ne peut pas ouvert normalement, veuillez le rédiger et sauvegarder, sinon le fichier sera perdu en permanence. Vous pouvez essayer d'ouvrir avec XMind 8 Update 3 ou avec une version plus récente. 파일을 정상적으로 열 수 없으며, 수정 및 저장하지 마십시오. 그렇지 않으면 파일의 내용이 영구적으로 손실됩니다! XMind 8 Update 3 또는 이후 버전을 사용하여 -1 Sheet 1 ` } -// 获取节点的概要列表 -const formatGetGeneralization = data => { - const generalization = data.generalization - return Array.isArray(generalization) - ? generalization - : generalization - ? [generalization] - : [] -} - // 获取节点自身的概要,非子节点区间 const getSelfGeneralization = data => { - const list = formatGetGeneralization(data) + const list = formatGetNodeGeneralization(data) return list.filter(item => { return !item.range || item.range.length <= 0 }) @@ -202,7 +193,7 @@ const getSelfGeneralization = data => { // 获取节点区间概要 const getRangeGeneralization = data => { - const list = formatGetGeneralization(data) + const list = formatGetNodeGeneralization(data) return list.filter(item => { return item.range && item.range.length > 0 }) diff --git a/simple-mind-map/src/utils/xss.js b/simple-mind-map/src/utils/xss.js new file mode 100644 index 00000000..91064208 --- /dev/null +++ b/simple-mind-map/src/utils/xss.js @@ -0,0 +1,48 @@ +/** + * 防御 XSS 攻击,过滤恶意 HTML 标签和属性 + * @param {string} text 需要过滤的文本 + * @returns {string} 过滤后的文本 + */ +export function defenseXSS(text) { + text = String(text) + + // 初始化结果变量 + let result = text; + + // 使用正则表达式匹配 HTML 标签 + const match = text.match(/<(\S*?)[^>]*>.*?|<.*? \/>/g); + if (match == null) { + // 如果没有匹配到任何标签,则直接返回原始文本 + return text; + } + + // 遍历匹配到的标签 + for (let value of match) { + // 定义白名单属性正则表达式(style、target、href) + const whiteAttrRegex = new RegExp(/(style|target|href)=["'][^"']*["']/g); + + // 定义黑名单href正则表达式(javascript:) + const aHrefBlackRegex = new RegExp(/href=["']javascript:/g); + + // 过滤 HTML 标签 + const filterHtml = value.replace( + // 匹配属性键值对(如:key="value") + /([a-zA-Z-]+)\s*=\s*["']([^"']*)["']/g, + (text) => { + // 如果属性值包含黑名单href或不在白名单中,则删除该属性 + if (aHrefBlackRegex.test(text) || !whiteAttrRegex.test(text)) { + return ""; + } + + // 否则,保留该属性 + return text; + } + ); + + // 将过滤后的标签替换回原始文本 + result = result.replace(value, filterHtml); + } + + // 返回最终结果 + return result; +} \ No newline at end of file diff --git a/web/package.json b/web/package.json index ecf77b07..a2032e63 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "thoughts", - "version": "0.9.10", + "version": "0.9.12", "private": true, "description": "一个简洁的思维导图", "author": "街角小林<1013335014@qq.com>", diff --git a/web/src/assets/avatar/在下青铜五.jpg b/web/src/assets/avatar/在下青铜五.jpg new file mode 100644 index 00000000..05676fa3 Binary files /dev/null and b/web/src/assets/avatar/在下青铜五.jpg differ diff --git a/web/src/assets/avatar/子豪.jpg b/web/src/assets/avatar/子豪.jpg new file mode 100644 index 00000000..10220015 Binary files /dev/null and b/web/src/assets/avatar/子豪.jpg differ diff --git a/web/src/assets/avatar/孟照星.jpg b/web/src/assets/avatar/孟照星.jpg new file mode 100644 index 00000000..64a61fa5 Binary files /dev/null and b/web/src/assets/avatar/孟照星.jpg differ diff --git a/web/src/assets/avatar/宏涛.jpg b/web/src/assets/avatar/宏涛.jpg new file mode 100644 index 00000000..394e41d5 Binary files /dev/null and b/web/src/assets/avatar/宏涛.jpg differ diff --git a/web/src/assets/avatar/庆国.jpg b/web/src/assets/avatar/庆国.jpg new file mode 100644 index 00000000..05c6bd17 Binary files /dev/null and b/web/src/assets/avatar/庆国.jpg differ diff --git a/web/src/assets/avatar/木星二号.jpg b/web/src/assets/avatar/木星二号.jpg new file mode 100644 index 00000000..6c1c65e9 Binary files /dev/null and b/web/src/assets/avatar/木星二号.jpg differ diff --git a/web/src/assets/avatar/阿晨.jpg b/web/src/assets/avatar/阿晨.jpg new file mode 100644 index 00000000..e12fdce5 Binary files /dev/null and b/web/src/assets/avatar/阿晨.jpg differ diff --git a/web/src/assets/icon-font/iconfont.css b/web/src/assets/icon-font/iconfont.css index 063864fb..6065bfef 100644 --- a/web/src/assets/icon-font/iconfont.css +++ b/web/src/assets/icon-font/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* Project id 2479351 */ - src: url('iconfont.woff2?t=1711935414521') format('woff2'), - url('iconfont.woff?t=1711935414521') format('woff'), - url('iconfont.ttf?t=1711935414521') format('truetype'); + src: url('iconfont.woff2?t=1713438156457') format('woff2'), + url('iconfont.woff?t=1713438156457') format('woff'), + url('iconfont.ttf?t=1713438156457') format('truetype'); } .iconfont { @@ -13,6 +13,10 @@ -moz-osx-font-smoothing: grayscale; } +.iconyanshibofang:before { + content: "\e648"; +} + .iconfujian:before { content: "\e88a"; } diff --git a/web/src/assets/icon-font/iconfont.ttf b/web/src/assets/icon-font/iconfont.ttf index bb0fbedf..4c06d739 100644 Binary files a/web/src/assets/icon-font/iconfont.ttf and b/web/src/assets/icon-font/iconfont.ttf differ diff --git a/web/src/assets/icon-font/iconfont.woff b/web/src/assets/icon-font/iconfont.woff index fdb5ff4b..398e6416 100644 Binary files a/web/src/assets/icon-font/iconfont.woff and b/web/src/assets/icon-font/iconfont.woff differ diff --git a/web/src/assets/icon-font/iconfont.woff2 b/web/src/assets/icon-font/iconfont.woff2 index 4225466d..914e4be5 100644 Binary files a/web/src/assets/icon-font/iconfont.woff2 and b/web/src/assets/icon-font/iconfont.woff2 differ diff --git a/web/src/lang/en_us.js b/web/src/lang/en_us.js index 175f6b2c..fd4d961d 100644 --- a/web/src/lang/en_us.js +++ b/web/src/lang/en_us.js @@ -99,7 +99,8 @@ export default { removeHyperlink: 'Remove hyperlink', removeNote: 'Remove note', removeCustomStyles: 'Remove custom styles', - removeAllNodeCustomStyles: 'Remove all node custom styles' + removeAllNodeCustomStyles: 'Remove all node custom styles', + exportNodeToPng: 'Export node to png' }, count: { words: 'Words', @@ -139,6 +140,9 @@ export default { fullscreenShow: 'Full screen show', fullscreenEdit: 'Full screen edit' }, + demonstrate: { + demonstrate: 'Enter demonstration mode' + }, import: { title: 'Import', selectFile: 'Select file', diff --git a/web/src/lang/zh_cn.js b/web/src/lang/zh_cn.js index e97bab1e..faa6ba62 100644 --- a/web/src/lang/zh_cn.js +++ b/web/src/lang/zh_cn.js @@ -99,7 +99,8 @@ export default { removeHyperlink: '移除超链接', removeNote: '移除备注', removeCustomStyles: '一键去除自定义样式', - removeAllNodeCustomStyles: '一键去除所有节点自定义样式' + removeAllNodeCustomStyles: '一键去除所有节点自定义样式', + exportNodeToPng: '导出该节点为图片' }, count: { words: '字数', @@ -137,6 +138,9 @@ export default { fullscreenShow: '全屏查看', fullscreenEdit: '全屏编辑' }, + demonstrate: { + demonstrate: '进入演示模式' + }, import: { title: '导入', selectFile: '选取文件', diff --git a/web/src/pages/Doc/catalogList.js b/web/src/pages/Doc/catalogList.js index d3257bb9..947e1529 100644 --- a/web/src/pages/Doc/catalogList.js +++ b/web/src/pages/Doc/catalogList.js @@ -11,7 +11,7 @@ let langList = [ } ] let StartList = ['introduction', 'start', 'deploy', 'client', 'translate', 'changelog'] -let CourseList = new Array(27).fill(0).map((_, index) => { +let CourseList = new Array(28).fill(0).map((_, index) => { return 'course' + (index + 1) }) let APIList = [ @@ -40,6 +40,7 @@ let APIList = [ 'cooperate', 'rainbowLines', 'handDrawnLikeStyle', + 'demonstrate', 'xmind', 'markdown', 'utils' diff --git a/web/src/pages/Doc/en/changelog/index.md b/web/src/pages/Doc/en/changelog/index.md index 3db14dd0..ed3f7c63 100644 --- a/web/src/pages/Doc/en/changelog/index.md +++ b/web/src/pages/Doc/en/changelog/index.md @@ -1,5 +1,85 @@ # Changelog +## 0.9.12 + +Fix: + +> Fix the issue of bold title text being parsed as undefined when importing MD files; +> +> Select all, delete nodes, activate adjacent nodes, select multiple nodes, and other operations to increase the distribution of beforeynode-active events; +> +> Change the selection of multiple nodes to real-time distribution of node activation events; +> +> Fix the issue where the distance between icons and text gradually widens when both icons and line breaks are present in non rich text mode and are folded and unfolded; +> +> Fix xss vulnerability when displaying rich text content on nodes; + +New: + +> Support parsing of HTML formatted title text in MD files; +> +> Prohibit all contents of the canvas (except for hyperlinks and note icons of nodes) from responding to mouse events in demonstration mode; +> +> The demonstration mode supports fill in the blank mode, which means that underlined text is not displayed by default and will only be displayed sequentially by pressing the enter key; +> +> Demonstration mode supports summary content; +> +> The expandToNodeUid method of the render class supports summary nodes; +> +> The findNodeByUid (find the specified node instance on the canvas based on the uid) method of the render class supports summary nodes; +> +> Add instantiation options for adding pre - and post content to nodes, allowing custom content to be added before or after node text; +> +> Click event for adding distribution node labels; +> +> When using the moveNodeToCenter method of the render class to move a specified node to the center of the canvas, scaling is not restored by default; + +Demo: + +> Fix the issue of node note floating layer not being displayed in full screen view mode; +> +> Fix the issue where the note floating layer does not disappear after clicking the collapse button to collapse the node when displaying the note floating layer; + +## 0.9.11 + +Fix + +> 1.Fix the issue where clicking on the summary will trigger the data_change_detail event; +> +> 2.Fix the issue where the custom style command for removing all nodes with one click does not support summaries that are not arrays; +> +> 3.Fix the issue where summary nodes created in rich text mode are not rich text; +> +> 4.Fix the issue where the rich text plugin did not process node summaries when converting node data; +> +> 5.Fix the issue where the highlighted box of the corresponding node will be displayed incorrectly when pressing enter to end in summary node text editing; +> +> 6.Fix the issue of node width and height loss after text editing when creating multiple instances simultaneously; +> +> 7.Fix the issue where the expand/collapse button does not disappear after deleting all child nodes of the currently activated node; +> +> 8.Fix the issue where the canvas automatically moves and cannot stop when dragging nodes to the edge; + +New: + +> 1.Support default focus and entering editing mode when inserting summaries; +> +> 2.Support holding down the Command and Win keys to select multiple nodes; +> +> 3.Support exporting a node as an image; +> +> 4.Add demonstration plugin; + +Demo: + +> 1.Add the Export as Image button in the right-click menu of the node; +> +> 2.Optimize the issue of incomplete menu display when clicking the right mouse button at the window edge; +> +> 3.Add demonstration mode; +> +> 4.When copying Zhixi data, create summary data in array form; + ## 0.9.10 Fix: diff --git a/web/src/pages/Doc/en/changelog/index.vue b/web/src/pages/Doc/en/changelog/index.vue index d66f740b..c6956d75 100644 --- a/web/src/pages/Doc/en/changelog/index.vue +++ b/web/src/pages/Doc/en/changelog/index.vue @@ -1,6 +1,58 @@ diff --git a/web/src/pages/Doc/en/node/index.md b/web/src/pages/Doc/en/node/index.md index fb4091eb..ccae293c 100644 --- a/web/src/pages/Doc/en/node/index.md +++ b/web/src/pages/Doc/en/node/index.md @@ -56,6 +56,12 @@ Whether the node is currently being dragged ## Methods +### deactivate() + +> 0.9.11+ + +Deactivate the node. + ### getAncestorNodes() > v0.9.9+ diff --git a/web/src/pages/Doc/en/node/index.vue b/web/src/pages/Doc/en/node/index.vue index 41bad2f5..4ffabefc 100644 --- a/web/src/pages/Doc/en/node/index.vue +++ b/web/src/pages/Doc/en/node/index.vue @@ -31,6 +31,11 @@

Whether the node is currently being dragged

Methods

+

deactivate()

+
+

0.9.11+

+
+

Deactivate the node.

getAncestorNodes()

v0.9.9+

diff --git a/web/src/pages/Doc/en/render/index.md b/web/src/pages/Doc/en/render/index.md index ecde568d..7e037d95 100644 --- a/web/src/pages/Doc/en/render/index.md +++ b/web/src/pages/Doc/en/render/index.md @@ -94,10 +94,12 @@ End text editing, restore enter key and delete key related shortcuts. Add a node to the active list. -### addNodeToActiveList(node) +### addNodeToActiveList(node, notEmitBeforeNodeActiveEvent = false) > v0.8.0+ +- `notEmitBeforeNodeActiveEvent`:v0.9.12+,is not distribute the 'before_node_active' event, which defaults to 'false' and will be distributed; + Add a node to the active list. ### removeActiveNode(node) diff --git a/web/src/pages/Doc/en/render/index.vue b/web/src/pages/Doc/en/render/index.vue index 95e38351..baac675f 100644 --- a/web/src/pages/Doc/en/render/index.vue +++ b/web/src/pages/Doc/en/render/index.vue @@ -77,10 +77,13 @@ disable the enter key and delete key related shortcuts to prevent conflicts.

v0.8.0+ abandoned

Add a node to the active list.

-

addNodeToActiveList(node)

+

addNodeToActiveList(node, notEmitBeforeNodeActiveEvent = false)

v0.8.0+

+
    +
  • notEmitBeforeNodeActiveEvent:v0.9.12+,is not distribute the 'before_node_active' event, which defaults to 'false' and will be distributed;
  • +

Add a node to the active list.

removeActiveNode(node)

diff --git a/web/src/pages/Doc/en/utils/index.md b/web/src/pages/Doc/en/utils/index.md index 4dd624f6..c45ea2b6 100644 --- a/web/src/pages/Doc/en/utils/index.md +++ b/web/src/pages/Doc/en/utils/index.md @@ -479,6 +479,33 @@ Convert flat objects into a tree structure. Reverse operation of the transformTr Remove the node of the specified selector from the specified HTML string, and then return the processed HTML string. +#### getOnfullscreEnevt() + +> v0.9.11+ + +Detect full screen events available in the current browser. You can use it this way: + +```js +const fullscrrenEvent = getOnfullscreEnevt() + +// Monitor full screen events +document.addEventListener(fullscrrenEvent, () => { + // Determine whether the current state is full screen based on whether document.fullscreenElement is null +}) +``` + +#### fullScreen(element) + +> v0.9.11+ + +Put the specified DOM element into full screen mode. + +#### exitFullScreen() + +> v0.9.11+ + +Exit full screen mode. + ## Simulate CSS background in Canvas Import: diff --git a/web/src/pages/Doc/en/utils/index.vue b/web/src/pages/Doc/en/utils/index.vue index 8a63c7c6..bbcee800 100644 --- a/web/src/pages/Doc/en/utils/index.vue +++ b/web/src/pages/Doc/en/utils/index.vue @@ -402,6 +402,28 @@ and copying the data of the data object, example:

Remove the node of the specified selector from the specified HTML string, and then return the processed HTML string.

+

getOnfullscreEnevt()

+
+

v0.9.11+

+
+

Detect full screen events available in the current browser. You can use it this way:

+
const fullscrrenEvent = getOnfullscreEnevt()
+
+// Monitor full screen events
+document.addEventListener(fullscrrenEvent, () => {
+  // Determine whether the current state is full screen based on whether document.fullscreenElement is null
+})
+
+

fullScreen(element)

+
+

v0.9.11+

+
+

Put the specified DOM element into full screen mode.

+

exitFullScreen()

+
+

v0.9.11+

+
+

Exit full screen mode.

Simulate CSS background in Canvas

Import:

import drawBackgroundImageToCanvas from 'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas'
diff --git a/web/src/pages/Doc/routerList.js b/web/src/pages/Doc/routerList.js
index 3ba03bf5..c696148e 100644
--- a/web/src/pages/Doc/routerList.js
+++ b/web/src/pages/Doc/routerList.js
@@ -34,6 +34,7 @@ export default [
       { path: 'course25', title: '关于概要' },
       { path: 'course26', title: '如何实现AI生成节点内容' },
       { path: 'course27', title: '快捷键操作如何传递自定义参数' },
+      { path: 'course28', title: '如何动态修改自定义元素的大小' },
       { path: 'doExport', title: 'Export 插件' },
       { path: 'drag', title: 'Drag插件' },
       { path: 'introduction', title: '简介' },
@@ -58,11 +59,11 @@ export default [
       { path: 'nodeImgAdjust', title: 'NodeImgAdjust插件' },
       { path: 'search', title: 'Search插件' },
       { path: 'painter', title: 'Painter插件' },
-      { path: 'painter', title: 'Painter插件' },
       { path: 'scrollbar', title: 'Scrollbar插件' },
       { path: 'formula', title: 'Formula插件' },
       { path: 'cooperate', title: 'Cooperate插件' },
       { path: 'rainbowLines', title: 'RainbowLines插件' },
+      { path: 'demonstrate', title: 'Demonstrate插件' },
       { path: 'handDrawnLikeStyle', title: 'HandDrawnLikeStyle收费插件' },
       { path: 'help1', title: '概要/关联线' },
       { path: 'help2', title: '客户端' },
@@ -106,7 +107,11 @@ export default [
       { path: 'formula', title: 'Formula plugin' },
       { path: 'cooperate', title: 'Cooperate plugin' },
       { path: 'rainbowLines', title: 'RainbowLines plugin' },
-      { path: 'handDrawnLikeStyle', title: 'HandDrawnLikeStyle chargeable plugin' },
+      { path: 'demonstrate', title: 'Demonstrate plugin' },
+      {
+        path: 'handDrawnLikeStyle',
+        title: 'HandDrawnLikeStyle chargeable plugin'
+      },
       { path: 'client', title: 'Client' }
     ]
   }
diff --git a/web/src/pages/Doc/zh/changelog/index.md b/web/src/pages/Doc/zh/changelog/index.md
index 271ddd64..7f0ce95d 100644
--- a/web/src/pages/Doc/zh/changelog/index.md
+++ b/web/src/pages/Doc/zh/changelog/index.md
@@ -1,5 +1,85 @@
 # Changelog
 
+## 0.9.12
+
+修复:
+
+> 修复导入md文件时存在加粗的标题文本会解析为undefined的问题;
+>
+> 全选、删除节点激活相邻节点、多选节点等操作增加派发before_node_active事件;
+>
+> 多选节点改为实时派发节点激活事件;
+>
+> 修复非富文本模式下同时存在图标和换行的文本时,被收起和展开时图标与文字距离会逐渐拉大的问题;
+>
+> 修复节点富文本内容显示时的xss漏洞;
+
+新增:
+
+> 支持解析md文件中带html格式的标题文本;
+>
+> 演示模式中禁止画布的所有内容(除了节点的超链接和备注图标)响应鼠标事件;
+>
+> 演示模式支持填空模式,即带下划线的文本默认不显示,按回车键才会依次显示;
+>
+> 演示模式支持概要内容;
+>
+> render类的expandToNodeUid(展开到指定节点)方法支持概要节点;
+>
+> render类的findNodeByUid(根据uid找到画布指定节点实例)方法支持概要节点;
+>
+> 新增添加节点附加的前置和后置内容的实例化选项,即允许在节点文本前面或后面添加自定义的内容;
+>
+> 新增派发节点标签的点击事件;
+>
+> 通过render类的moveNodeToCenter方法移动指定节点到画布中心时默认不恢复缩放;
+
+Demo:
+
+> 修复全屏查看模式下节点备注浮层无法显示的问题;
+>
+> 修复备注浮层显示时点击收起按钮收起节点后,备注浮层未消失的问题;
+
+## 0.9.11
+
+修复:
+
+> 1.修复点击概要会触发data_change_detail事件的问题;
+>
+> 2.修复一键去除所有节点自定义样式命令不支持不为数组的概要的问题;
+>
+> 3.修复富文本模式下创建的概要节点不是富文本的问题;
+>
+> 4.修复富文本插件转换节点数据时没有处理节点概要的问题;
+>
+> 5.修复概要节点文本编辑中按回车结束时,相应的节点高亮框会错位显示的问题;
+>
+> 6.修复同时创建多个实例时,文本编辑后节点宽高丢失的问题;
+>
+> 7.修复删除当前激活的节点的所有子节点后,展开收起按钮没有消失的问题;
+>
+> 8.修复拖拽节点到边缘时画布自动移动无法停止的问题;
+
+新增:
+
+> 1.插入概要时支持默认聚焦和进入编辑状态;
+>
+> 2.支持按住Command键和Win键多选节点;
+>
+> 3.支持导出某个节点为图片;
+>
+> 4.新增演示插件;
+
+Demo:
+
+> 1.节点右键菜单新增导出为图片按钮;
+>
+> 2.优化鼠标在窗口边缘点击右键时菜单显示不全的问题;
+>
+> 3.新增演示模式;
+>
+> 4.复制知犀数据时,概要数据创建为数组形式;
+
 ## 0.9.10
 
 修复:
diff --git a/web/src/pages/Doc/zh/changelog/index.vue b/web/src/pages/Doc/zh/changelog/index.vue
index 74f5e4f8..0236ae3f 100644
--- a/web/src/pages/Doc/zh/changelog/index.vue
+++ b/web/src/pages/Doc/zh/changelog/index.vue
@@ -1,6 +1,58 @@