diff --git a/README.md b/README.md index 56a2fb42..8f40f711 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ 1.一个 js 思维导图库,不依赖任何框架,可以使用它来快速完成 Web 思维导图产品的开发。 -开发文档:[https://wanglin2.github.io/mind-map/#/doc/zh/](https://wanglin2.github.io/mind-map/#/doc/zh/)。 +开发文档:[https://wanglin2.github.io/mind-map-docs/](https://wanglin2.github.io/mind-map-docs/)。 2.一个 Web 思维导图,基于思维导图库、Vue2.x、ElementUI 开发,可以操作电脑本地文件,可以当做一个在线版思维导图应用使用,也可以自部署和二次开发。 @@ -44,7 +44,7 @@ Github:[releases](https://github.com/wanglin2/mind-map/releases)。百度云 官方提供了如下插件,可根据需求按需引入(某个功能不生效大概率是因为你没有引入对应的插件),具体使用方式请查看文档: -> RichText(节点富文本插件)、Select(鼠标多选节点插件)、Drag(节点拖拽插件)、AssociativeLine(关联线插件)、Export(导出插件)、KeyboardNavigation(键盘导航插件)、MiniMap(小地图插件)、Watermark(水印插件)、TouchEvent(移动端触摸事件支持插件)、NodeImgAdjust(拖拽调整节点图片大小插件)、Search(搜索插件)、Painter(节点格式刷插件)、Scrollbar(滚动条插件)、Formula(数学公式插件)、Cooperate(协同编辑插件)、RainbowLines(彩虹线条插件)、Demonstrate(演示模式插件)、OuterFrame(外框插件)、HandDrawnLikeStyle(手绘风格插件)[收费]、Notation(节点标记插件)[收费] +> RichText(节点富文本插件)、Select(鼠标多选节点插件)、Drag(节点拖拽插件)、AssociativeLine(关联线插件)、Export(导出插件)、KeyboardNavigation(键盘导航插件)、MiniMap(小地图插件)、Watermark(水印插件)、TouchEvent(移动端触摸事件支持插件)、NodeImgAdjust(拖拽调整节点图片大小插件)、Search(搜索插件)、Painter(节点格式刷插件)、Scrollbar(滚动条插件)、Formula(数学公式插件)、Cooperate(协同编辑插件)、RainbowLines(彩虹线条插件)、Demonstrate(演示模式插件)、OuterFrame(外框插件)、HandDrawnLikeStyle(手绘风格插件)[收费]、Notation(节点标记插件)[收费]、Numbers(节点编号插件)[收费] 本项目不会实现的特性: @@ -95,7 +95,7 @@ const mindMap = new MindMap({ 即可得到一个思维导图。 -想要实现更多功能?可以查看[开发文档](https://wanglin2.github.io/mind-map/#/doc/zh/)。 +想要实现更多功能?可以查看[开发文档](https://wanglin2.github.io/mind-map-docs/)。 # License @@ -449,4 +449,12 @@ const mindMap = new MindMap({ Jeffrey + + + 张文建 + + + + +

diff --git a/copy.js b/copy.js index 618df3bb..913096d8 100644 --- a/copy.js +++ b/copy.js @@ -13,4 +13,4 @@ if (fs.existsSync(src)) { fs.unlinkSync(src) } -console.warn('请检查手绘风格、标记插件是否启用!!!') \ No newline at end of file +console.warn('请检查手绘风格、标记插件、编号插件是否启用!!!') \ No newline at end of file diff --git a/dist/css/app.css b/dist/css/app.css index 37060657..ad1361eb 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}.iconwaikuang:before{content:"\e640"}.iconhighlight:before{content:"\e6b8"}.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 +*{margin:0;padding:0;box-sizing:border-box}#app{font-family:Avenir,Helvetica,Arial,sans-serif;color:#2c3e50}@font-face{font-family:iconfont;src:url(../fonts/iconfont.woff2) format("woff2"),url(../fonts/iconfont.woff) format("woff"),url(../fonts/iconfont.ttf) format("truetype")}#app,.iconfont{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal}.iconwaikuang:before{content:"\e640"}.iconhighlight:before{content:"\e6b8"}.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-3222d6ee.css b/dist/css/chunk-3222d6ee.css new file mode 100644 index 00000000..f5a29b4a --- /dev/null +++ b/dist/css/chunk-3222d6ee.css @@ -0,0 +1 @@ +.doc[data-v-d024f2fc]{position:fixed;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px}.doc a[data-v-d024f2fc]{color:#1ea59a} \ No newline at end of file diff --git a/dist/css/chunk-47ab6502.css b/dist/css/chunk-47ab6502.css deleted file mode 100644 index 7c6ef30c..00000000 --- a/dist/css/chunk-47ab6502.css +++ /dev/null @@ -1 +0,0 @@ -.indexHeaderContainer[data-v-b0b3228e]{position:fixed;left:0;top:0;width:100%;height:76px;transition:all .5s;background-color:transparent;z-index:999}.indexHeaderContainer.active[data-v-b0b3228e]{background-color:#fff;box-shadow:0 5px 30px -10px rgba(0,0,0,.1)}.indexHeaderContainer .headerContent[data-v-b0b3228e]{height:100%;max-width:1140px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.indexHeaderContainer .headerContent .logoBox[data-v-b0b3228e]{display:flex;align-items:center}.indexHeaderContainer .headerContent .logoBox .logo[data-v-b0b3228e]{width:22px;height:22px;background-image:url(data:image/png;base64,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);background-size:cover;margin-right:5px}.indexHeaderContainer .headerContent .logoBox .title[data-v-b0b3228e]{color:#000;font-size:20px}.indexHeaderContainer .headerContent .nav[data-v-b0b3228e]{display:flex;align-items:center}.indexHeaderContainer .headerContent .nav .navItem[data-v-b0b3228e]{color:#828f99;font-size:15px;transition:all .5s;margin-right:40px;cursor:pointer}.indexHeaderContainer .headerContent .nav .navItem[data-v-b0b3228e]:last-of-type{margin-right:0}.indexHeaderContainer .headerContent .nav .navItem.active[data-v-b0b3228e],.indexHeaderContainer .headerContent .nav .navItem[data-v-b0b3228e]:hover{color:#1ea59a}.indexHeaderContainer .headerContent .nav .navItem a[data-v-b0b3228e]{text-decoration:none;color:#828f99}.indexHeaderContainer .headerContent .nav .navItem a[data-v-b0b3228e]:hover{color:#1ea59a}.splitContainer[data-v-58208bc0]{width:122px;height:15px;background-image:url(data:image/png;base64,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);background-size:cover}.block1Container[data-v-1775e815]{background-color:#f0f9fa;border-radius:0 0 0 450px;display:flex;justify-content:center;align-items:center}.block1Container .blockContent[data-v-1775e815]{width:100%;max-width:1140px;display:flex;align-items:center;justify-content:space-between}.block1Container .blockContent .infoBox .blockTitle[data-v-1775e815]{font-size:16px;color:#1e3547;margin-bottom:10px}.block1Container .blockContent .infoBox .infoList[data-v-1775e815]{margin-top:20px}.block1Container .blockContent .infoBox .infoList .infoRow[data-v-1775e815]{font-size:45px;color:#1e3547;font-weight:700;margin-bottom:20px}.block1Container .blockContent .infoBox .desc[data-v-1775e815]{color:#828f99;font-size:20px;line-height:1.5}.block1Container .blockContent .infoBox .btnBox[data-v-1775e815]{display:flex;align-items:center;margin-top:20px}.block1Container .blockContent .infoBox .btnBox .btn[data-v-1775e815]{height:44px;padding:0 20px;line-height:44px;cursor:pointer;background:#1ea59a;border-color:#1ea59a;color:#fff;font-weight:600;font-size:15px;border-radius:5px;transition:all .5s;margin-right:10px}.block1Container .blockContent .infoBox .btnBox .btn[data-v-1775e815]:hover{transform:translateY(-4px)}.block1Container .blockContent .infoBox .btnBox .btn.btn2[data-v-1775e815]{background-color:#f5828b}.block1Container .blockContent .picBox[data-v-1775e815]{position:relative}.block1Container .blockContent .picBox .pic[data-v-1775e815]{width:500px;height:500px;background-image:url(../img/block1.png);background-size:cover}.block1Container .blockContent .picBox .animation1[data-v-1775e815]{width:38px;height:38px;border:7px solid #f5828b;border-radius:50%;position:absolute;right:-50px;bottom:86px;animation-name:zoom1-1775e815;animation-duration:3s;animation-iteration-count:infinite;animation-direction:alternate;box-shadow:0 12px 50px 0 rgba(0,0,0,.14)}.block1Container .blockContent .picBox .animation2[data-v-1775e815]{border-radius:50%;background-color:#1ea59a;box-shadow:0 20px 30px 0 rgba(48,61,114,.4);position:absolute;width:25px;height:25px;top:-60px;right:60px;animation:spin-1775e815 2s infinite alternate;bottom:60px}.block1Container .blockContent .picBox .animation3[data-v-1775e815]{border-radius:50%;background-color:#25233a;box-shadow:0 20px 30px 0 rgba(245,130,139,.4);position:absolute;width:25px;height:25px;bottom:50px;left:0;animation:spin-1775e815 3s infinite alternate}@keyframes zoom1-1775e815{0%{transform:scale(.9)}to{transform:scale(1.5)}}@keyframes spin-1775e815{0%{transform:translateY(0)}to{transform:translateY(40px)}}.block2Container[data-v-d6dcc5ca]{display:flex;justify-content:center;align-items:center}.block2Container .blockContent[data-v-d6dcc5ca]{padding:100px 0;width:100%;max-width:1140px}.block2Container .blockContent .dataList[data-v-d6dcc5ca]{display:flex;align-items:center;justify-content:center;margin-bottom:40px}.block2Container .blockContent .dataList .dataItem[data-v-d6dcc5ca]{box-shadow:0 5px 30px -10px rgba(0,0,0,.1);border-radius:20px;margin-right:30px;padding:20px;display:flex;flex-direction:column;align-items:center}.block2Container .blockContent .dataList .dataItem[data-v-d6dcc5ca]:last-of-type{margin-right:0}.block2Container .blockContent .dataList .dataItem .iconBox[data-v-d6dcc5ca]{width:55px;height:55px;border-radius:10px;background-color:rgba(30,165,154,.1);display:flex;align-items:center;justify-content:center;margin-bottom:10px}.block2Container .blockContent .dataList .dataItem .iconBox .icon[data-v-d6dcc5ca]{font-size:30px;color:#1ea59a}.block2Container .blockContent .dataList .dataItem .dataValue[data-v-d6dcc5ca]{color:#1e3547;font-weight:700}.block2Container .blockContent .blockTitle[data-v-d6dcc5ca]{font-size:30px;font-weight:700;color:#1e3547;text-align:center;margin-bottom:40px}.block2Container .blockContent .desc[data-v-d6dcc5ca]{color:#828f99;font-size:17px;line-height:1.7}.block2Container .blockContent .functionList[data-v-d6dcc5ca]{display:flex;justify-content:space-between;flex-wrap:wrap;margin-top:60px}.block2Container .blockContent .functionList .functionItem[data-v-d6dcc5ca]{display:flex;width:30%;margin-bottom:50px}.block2Container .blockContent .functionList .functionItem .icon[data-v-d6dcc5ca]{width:50px;height:50px;display:flex;justify-content:center;align-items:center;font-size:50px;margin-right:24px;color:#1ea59a}.block2Container .blockContent .functionList .functionItem .info .name[data-v-d6dcc5ca]{margin-bottom:5px;color:#1e3547;font-weight:600;font-size:18px}.block2Container .blockContent .functionList .functionItem .info .value[data-v-d6dcc5ca]{font-size:14px;color:#828f99}.block3Container[data-v-179c3001]{background-color:#f0f9fa;border-radius:0 0 350px 0;display:flex;justify-content:center;align-items:center}.block3Container .blockContent[data-v-179c3001]{width:100%;max-width:1140px;height:520px;display:flex;align-items:center}.block3Container .blockContent .picBox[data-v-179c3001]{width:500px;height:500px;background-image:url(../img/block3.png);flex-shrink:0}.block3Container .blockContent .infoBox .infoTitle[data-v-179c3001]{font-weight:700;color:#1e3547;font-size:40px}.block3Container .blockContent .infoBox .info[data-v-179c3001]{color:#828f99;font-size:16px;line-height:1.7;margin-top:20px}.block3Container .blockContent .infoBox .btnList[data-v-179c3001]{display:flex;align-items:center}.block3Container .blockContent .infoBox .btnList .btn[data-v-179c3001]{height:44px;cursor:pointer;background:#1ea59a;border-color:#1ea59a;border-radius:5px;transition:all .5s;margin-right:10px;margin-top:20px}.block3Container .blockContent .infoBox .btnList .btn[data-v-179c3001]:hover{transform:translateY(-4px)}.block3Container .blockContent .infoBox .btnList .btn.btn2[data-v-179c3001]{background-color:#f5828b}.block3Container .blockContent .infoBox .btnList .btn a[data-v-179c3001]{height:100%;padding:0 20px;line-height:44px;color:#fff;font-weight:600;font-size:15px;text-decoration:none}.block4Container[data-v-5eee09a3]{display:flex;justify-content:center;align-items:center}.block4Container .blockContent[data-v-5eee09a3]{width:100%;max-width:1140px;display:flex;align-items:center;padding:50px 0}.block4Container .blockContent .picBox[data-v-5eee09a3]{width:500px;height:500px;background-image:url(../img/block4.png);flex-shrink:0}.block4Container .blockContent .infoBox[data-v-5eee09a3]{margin-right:50px}.block4Container .blockContent .infoBox .infoTitle[data-v-5eee09a3]{font-weight:700;color:#1e3547;font-size:40px}.block4Container .blockContent .infoBox .info[data-v-5eee09a3]{color:#828f99;font-size:16px;line-height:1.7;margin-top:20px}.block4Container .blockContent .infoBox .codeBox[data-v-5eee09a3]{font-size:16px;margin-top:10px}.block4Container .blockContent .infoBox .btnList[data-v-5eee09a3]{display:flex;align-items:center}.block4Container .blockContent .infoBox .btnList .btn[data-v-5eee09a3]{height:44px;cursor:pointer;background:#1ea59a;border-color:#1ea59a;border-radius:5px;transition:all .5s;margin-right:10px;margin-top:20px;height:100%;padding:0 20px;line-height:44px;color:#fff;font-weight:600;font-size:15px}.block4Container .blockContent .infoBox .btnList .btn[data-v-5eee09a3]:hover{transform:translateY(-4px)}.block5Container[data-v-03b86518]{background-color:#f0f9fa;border-radius:450px 0 0 0;display:flex;justify-content:center;align-items:center}.block5Container .blockContent[data-v-03b86518]{width:100%;max-width:1140px;height:350px;display:flex;padding-top:100px}.block5Container .blockContent .infoBox .infoTitle[data-v-03b86518]{font-size:20px;font-weight:700;color:#1e3547;line-height:1.4;margin-bottom:20px}.block5Container .blockContent .infoBox .infoDesc[data-v-03b86518]{color:#828f99;font-size:16px}.block5Container .blockContent .infoBox .linkBtnList[data-v-03b86518]{margin-top:30px;display:flex;align-items:center}.block5Container .blockContent .infoBox .linkBtnList .linkBtn[data-v-03b86518]{width:38px;height:38px;border-radius:50%;overflow:hidden;background-color:#f0f9fa;border:2px solid #dbf1f1;margin-right:10px}.block5Container .blockContent .infoBox .linkBtnList .linkBtn a[data-v-03b86518]{width:100%;height:100%;text-decoration:none;display:flex;justify-content:center;align-items:center;transition:all .5s}.block5Container .blockContent .infoBox .linkBtnList .linkBtn a[data-v-03b86518]:hover{background-color:#1ea59a}.block5Container .blockContent .infoBox .linkBtnList .linkBtn a:hover .linkBtnIcon[data-v-03b86518]{color:#fff}.block5Container .blockContent .infoBox .linkBtnList .linkBtn a .linkBtnIcon[data-v-03b86518]{font-size:20px;color:#1e3547;transition:all .5s}.block5Container .blockContent .infoBox .linkBtnList .linkBtn a .linkBtnIcon.text[data-v-03b86518]{font-size:13px}.block5Container .blockContent .linkBox[data-v-03b86518]{margin-left:150px}.block5Container .blockContent .linkBox .linkTitle[data-v-03b86518]{font-size:20px;font-weight:700;color:#1e3547;line-height:1.4;margin-bottom:20px}.block5Container .blockContent .linkBox .linkList[data-v-03b86518]{display:flex;flex-wrap:wrap}.block5Container .blockContent .linkBox .linkList .linkItem[data-v-03b86518]{margin-right:20px;margin-bottom:10px}.block5Container .blockContent .linkBox .linkList .linkItem a[data-v-03b86518]{color:#828f99;font-size:15px;transition:all .5s;text-decoration:none}.block5Container .blockContent .linkBox .linkList .linkItem a[data-v-03b86518]:hover{color:#1ea59a} \ No newline at end of file diff --git a/dist/css/chunk-392e6b57.css b/dist/css/chunk-7ced27a5.css similarity index 73% rename from dist/css/chunk-392e6b57.css rename to dist/css/chunk-7ced27a5.css index e1f6a9db..edf83ef3 100644 --- a/dist/css/chunk-392e6b57.css +++ b/dist/css/chunk-7ced27a5.css @@ -5,18 +5,19 @@ * @version 3.2.2 | Fri Feb 17 2023 * @author NHN Cloud FE Development Lab * @license MIT - */.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;-webkit-font-feature-settings:"liga" 0;font-feature-settings:"liga" 0}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.auto-height,.auto-height .toastui-editor-defaultUI{height:auto}.auto-height .toastui-editor-md-container{position:relative}:not(.auto-height)>.toastui-editor-defaultUI,:not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}:not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main{-ms-flex:1;-webkit-box-flex:1;flex:1}.toastui-editor-defaultUI-toolbar:after,.toastui-editor-md-container:after{content:"";display:block;height:0;clear:both}.toastui-editor-main{min-height:0;position:relative;height:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-md-container{display:none;overflow:hidden;height:100%}.toastui-editor-md-container .toastui-editor{line-height:1.5;position:relative}.toastui-editor-md-container .toastui-editor,.toastui-editor-md-container .toastui-editor-md-preview{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;height:inherit}.toastui-editor-md-container .toastui-editor-md-preview{overflow:auto;padding:0 25px;height:100%}.toastui-editor-md-container .toastui-editor-md-preview>p:first-child{margin-top:0!important}.toastui-editor-md-container .toastui-editor-md-preview .toastui-editor-contents{padding-top:8px}.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor,.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor-md-preview{width:100%;display:none}.toastui-editor-main .toastui-editor-md-tab-style>.active{display:block}.toastui-editor-main .toastui-editor-md-vertical-style>.toastui-editor-tabs{display:none}.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor-tabs{display:block}.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor,.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor-md-preview{width:50%}.toastui-editor-main .toastui-editor-md-splitter{display:none;height:100%;width:1px;background-color:#ebedf2;position:absolute;left:50%}.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor-md-splitter{display:block}.toastui-editor-ww-container{display:none;overflow:hidden;height:inherit;background-color:#fff}.auto-height .toastui-editor-main-container{position:relative}.toastui-editor-main-container{position:absolute;line-height:1;color:#222;width:100%;height:inherit}.toastui-editor-ww-container>.toastui-editor{height:inherit;position:relative;width:100%}.toastui-editor-ww-container .toastui-editor-contents{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px 25px 0 25px;height:inherit}.toastui-editor-ww-container .toastui-editor-contents p{margin:0}.toastui-editor-md-mode .toastui-editor-md-container,.toastui-editor-ww-mode .toastui-editor-ww-container{display:block;z-index:20}.toastui-editor-md-mode .toastui-editor-md-vertical-style{display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-defaultUI.hidden,.toastui-editor-main.hidden{display:none}.toastui-editor-defaultUI .ProseMirror{padding:18px 25px}.toastui-editor-defaultUI{position:relative;border:1px solid #dadde6;height:100%;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;border-radius:4px}.toastui-editor-defaultUI button{color:#333;height:28px;font-size:13px;cursor:pointer;border:none;border-radius:2px}.toastui-editor-defaultUI .toastui-editor-ok-button{min-width:63px;height:32px;background-color:#00a9ff;color:#fff;outline-color:#009bf2}.toastui-editor-defaultUI .toastui-editor-ok-button:hover{background-color:#009bf2}.toastui-editor-defaultUI .toastui-editor-close-button{min-width:63px;height:32px;background-color:#f7f9fc;border:1px solid #dadde6;margin-right:5px;outline-color:#cbcfdb}.toastui-editor-defaultUI .toastui-editor-close-button:hover{border-color:#cbcfdb}.toastui-editor-mode-switch{background-color:#fff;border-top:1px solid #dadde6;font-size:12px;text-align:right;height:28px;padding-right:10px;border-radius:0 0 3px 3px}.toastui-editor-mode-switch .tab-item{display:inline-block;width:96px;height:24px;line-height:24px;text-align:center;background:#f7f9fc;color:#969aa5;margin-top:-1px;margin-right:-1px;cursor:pointer;border:1px solid #dadde6;border-radius:0 0 4px 4px;font-weight:500;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-mode-switch .tab-item.active{border-top:1px solid #fff;background-color:#fff;color:#555}.toastui-editor-defaultUI .toastui-editor-md-tab-container{float:left;height:45px;font-size:13px;background:#f7f9fc;border-bottom:1px solid #ebedf2;border-top-left-radius:3px}.toastui-editor-md-tab-container .toastui-editor-tabs{margin-left:15px;height:100%}.toastui-editor-md-tab-container .tab-item{display:inline-block;width:70px;height:33px;line-height:33px;font-size:12px;font-weight:500;text-align:center;background:#eaedf1;color:#969aa5;cursor:pointer;border:1px solid #dadde6;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:13px}.toastui-editor-md-tab-container .tab-item.active{border-bottom:1px solid #fff;background-color:#fff;color:#555}.toastui-editor-md-tab-container .tab-item:last-child{margin-left:-1px}.toastui-editor-defaultUI-toolbar{display:-ms-flexbox;display:-webkit-box;display:flex;padding:0 25px;height:45px;background-color:#f7f9fc;border-bottom:1px solid #ebedf2;border-radius:3px 3px 0 0}.toastui-editor-toolbar{height:46px;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-toolbar-divider{display:inline-block;width:1px;height:18px;background-color:#e1e3e9;margin:14px 12px}.toastui-editor-toolbar-group{display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-defaultUI-toolbar button{-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;width:32px;height:32px;padding:0;border-radius:3px;margin:7px 5px;border:1px solid #f7f9fc}.toastui-editor-defaultUI-toolbar button:not(:disabled):hover{border:1px solid #e4e7ee;background-color:#fff}.toastui-editor-defaultUI-toolbar .scroll-sync{display:inline-block;position:relative;width:70px;height:10px;text-align:center;line-height:10px;color:#81858f;cursor:pointer}.toastui-editor-defaultUI-toolbar .scroll-sync:before{content:"Scroll";position:absolute;left:0;font-size:14px}.toastui-editor-defaultUI-toolbar .scroll-sync.active:before{color:#00a9ff}.toastui-editor-defaultUI-toolbar .scroll-sync input{opacity:0;width:0;height:0}.toastui-editor-defaultUI-toolbar .switch{position:absolute;top:0;left:45px;right:0;bottom:0;background-color:#d6d8de;-webkit-transition:.4s;transition:.4s;border-radius:50px}.toastui-editor-defaultUI-toolbar input:checked+.switch{background-color:#acddfa}.toastui-editor-defaultUI-toolbar .switch:before{position:absolute;content:"";height:14px;width:14px;left:0;bottom:-2px;background-color:#94979f;-webkit-transition:.4s;transition:.4s;border-radius:50%}.toastui-editor-defaultUI-toolbar input:checked+.switch:before{background-color:#00a9ff;-webkit-transform:translateX(12px);transform:translateX(12px)}.toastui-editor-dropdown-toolbar .scroll-sync{margin:0 5px}.toastui-editor-dropdown-toolbar{position:absolute;height:46px;z-index:30;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6;background-color:#f7f9fc;display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-toolbar-item-wrapper{margin:7px 5px;height:32px;line-height:32px}.toastui-editor-popup{width:400px;margin-right:auto;background:#fff;z-index:30;position:absolute;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6}.toastui-editor-popup-body{padding:15px;font-size:12px}.toastui-editor-popup-body label{font-weight:600;color:#555;display:block;margin:20px 0 5px}.toastui-editor-popup-body .toastui-editor-button-container{text-align:right;margin-top:20px}.toastui-editor-popup-body input[type=text]{width:calc(100% - 26px);height:30px;padding:0 12px;border-radius:2px;border:1px solid #e1e3e9;color:#333}.toastui-editor-popup-body input[type=text]:focus{outline:1px solid #00a9ff;border-color:transparent}.toastui-editor-popup-body input[type=text].disabled{background-color:#f7f9fc;border-color:#e1e3e9;color:#969aa5}.toastui-editor-popup-body input[type=file]{opacity:0;border:none;width:1px;height:1px;position:absolute;top:0;left:0}.toastui-editor-popup-body input.wrong,.toastui-editor-popup-body span.wrong{border-color:#fa2828}.toastui-editor-popup-add-image .toastui-editor-popup-body,.toastui-editor-popup-add-link .toastui-editor-popup-body{padding:0 20px 20px}.toastui-editor-popup-add-image .toastui-editor-tabs{margin:5px 0 10px}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item{display:inline-block;width:60px;height:40px;line-height:40px;border-bottom:1px solid #dadde6;color:#333;font-size:13px;font-weight:600;text-align:center;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item:hover{border-bottom:1px solid #cbcfdb}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item.active{color:#00a9ff;border-bottom:2px solid #00a9ff}.toastui-editor-popup-add-image .toastui-editor-file-name{width:58%;display:inline-block;border-radius:2px;border:1px solid #e1e3e9;color:#dadde6;height:30px;line-height:30px;padding:0 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.toastui-editor-popup-add-image .toastui-editor-file-name.has-file{color:#333}.toastui-editor-popup-add-image .toastui-editor-file-select-button{width:33%;margin-left:5px;height:32px;border-radius:2px;border:1px solid #dadde6;background-color:#f7f9fc;vertical-align:top}.toastui-editor-popup-add-image .toastui-editor-file-select-button:hover{border-color:#cbcfdb}.toastui-editor-popup-add-table{width:auto}.toastui-editor-popup-add-table .toastui-editor-table-selection{position:relative}.toastui-editor-popup-add-table .toastui-editor-table-cell{display:table-cell;width:20px;height:20px;border:1px solid #e1e3e9;background:#fff;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-popup-add-table .toastui-editor-table-cell.header{background:#f7f9fc}.toastui-editor-popup-add-table .toastui-editor-table-row{display:table-row}.toastui-editor-popup-add-table .toastui-editor-table{display:table;border-collapse:collapse}.toastui-editor-popup-add-table .toastui-editor-table-selection-layer{position:absolute;top:0;left:0;border:1px solid #00a9ff;background:rgba(0,169,255,.1);z-index:30}.toastui-editor-popup-add-table .toastui-editor-table-description{margin:5px 0 0;text-align:center;color:#333}.toastui-editor-popup-add-heading{width:auto}.toastui-editor-popup-add-heading .toastui-editor-popup-body{padding:0}.toastui-editor-popup-add-heading h1,.toastui-editor-popup-add-heading h2,.toastui-editor-popup-add-heading h3,.toastui-editor-popup-add-heading h4,.toastui-editor-popup-add-heading h5,.toastui-editor-popup-add-heading h6,.toastui-editor-popup-add-heading p,.toastui-editor-popup-add-heading ul{padding:0;margin:0}.toastui-editor-popup-add-heading ul{padding:5px 0;list-style:none}.toastui-editor-popup-add-heading ul li{padding:4px 12px;cursor:pointer}.toastui-editor-popup-add-heading ul li:hover{background-color:#dff4ff}.toastui-editor-popup-add-heading h1{font-size:24px}.toastui-editor-popup-add-heading h2{font-size:22px}.toastui-editor-popup-add-heading h3{font-size:20px}.toastui-editor-popup-add-heading h4{font-size:18px}.toastui-editor-popup-add-heading h5{font-size:16px}.toastui-editor-popup-add-heading h6{font-size:14px}.toastui-editor-context-menu{position:absolute;width:auto;min-width:197px;color:#333;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6;z-index:30;padding:5px 0;background-color:#fff}.toastui-editor-context-menu .menu-group{list-style:none;border-bottom:1px solid #ebedf2;padding:0;margin:0;font-size:13px}.toastui-editor-context-menu .menu-group:last-child{border-bottom:none!important}.toastui-editor-context-menu .menu-item{height:32px;line-height:32px;padding:0 14px;cursor:pointer}.toastui-editor-context-menu span{display:inline-block}.toastui-editor-context-menu span:before{background:url(data:image/png;base64,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) no-repeat;background-size:466px 146px;content:"";width:20px;height:20px;display:inline-block;vertical-align:middle;margin-right:10px}.toastui-editor-context-menu .add-row-up:before{background-position:3px -104px}.toastui-editor-context-menu .add-row-down:before{background-position:-19px -104px}.toastui-editor-context-menu .remove-row:before{background-position:-41px -104px}.toastui-editor-context-menu .add-column-left:before{background-position:-63px -104px}.toastui-editor-context-menu .add-column-right:before{background-position:-85px -104px}.toastui-editor-context-menu .remove-column:before{background-position:-111px -104px}.toastui-editor-context-menu .align-column-left:before{background-position:-129px -104px}.toastui-editor-context-menu .align-column-center:before{background-position:-151px -104px}.toastui-editor-context-menu .align-column-right:before{background-position:-173px -104px}.toastui-editor-context-menu .remove-table:before{background-position:-197px -104px}.toastui-editor-context-menu .disabled span:before{opacity:.3}.toastui-editor-context-menu li:not(.disabled):hover{background-color:#dff4ff}.toastui-editor-context-menu li.disabled{color:#c9ccd5}.toastui-editor-tooltip{position:absolute;background-color:#444;z-index:40;padding:4px 7px;font-size:12px;border-radius:3px;color:#fff;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif}.toastui-editor-tooltip .arrow{content:"";display:inline-block;width:10px;height:10px;background-color:#444;-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:-3px;left:6px;z-index:-1}.toastui-editor-toolbar-icons{background:url(data:image/png;base64,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) no-repeat;background-size:466px 146px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.toastui-editor-context-menu span:before,.toastui-editor-toolbar-icons{background:url(data:image/png;base64,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P0A9dgflJJi2Szl5led4F57jlvpECs/6vuTjuhR3dAo961VP9UoRby5eaGBuxz2Zy/3pyiWBlJEiA/s5FHaEnU170tGmBChvV5O1/Zske9dQ3upqiLdbfuL3hTpvY+q8m3ELRkrj1xLs36Md8A17jhOutYwTnYufJw89tLmvbxmhJagIVEmgaoW0yvjlXQREQASakkA77LJL42wfGmdpGiktpZBagaFRfQqNsDNGSykNldFTUQ6+3ZQFWEJlRsA6pVmzZjML1sks0hoiosy9vMoqq2wVjg7VEMNQkHbLTzEI7tOqdCoeTd1nn7dK2tjwf2F5Gsro3cVhdS4CItCcBKSQNud9kVQiIAIikIqAjZLSQNu8lGeujZiyW8pvs7mHI6W2tb/tlF28jigvcRfSmLUpw+doZDQvxM0Xb40zpbLKiE03nWtLiOpVRp1A7ZYfl6+4yTPqo5hO4nndFPt4fi+OHTv2Qb5x/Y+4P9lFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAQ6mYDfyZlX3kVABESgnQgc/WRhlf5F3j6Dvjdw6UT/mnbKm/IiAiIgAiIgAiLQngSkkLbnfVWuREAEOohA7+OFsc8v8w4peN43yfZGlnW/y9t/9kT/2g7CoKyKgAiIgAiIgAi0IIGeFpRZIouACIhA3QSOm1fY4A3f28MiWqXg/fyCyf7CuiMdhQiOmFc4YOEy7zsk/fZhyRe89ww7b8GTI+YXthv0vBO9gjcZ8TdoUBYWer43r8vzzpk1yb+vQWkqmVEmcPQjhY36+rzv0amzI6I0qqy5XC9kdGDumDHeSRdv5T/n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vaXiGC338PM8x9WSftjWO6CWsArTOAKhollR2UwjEc9wdYeNvhHCevQvqneamUs5jzhd3GlMemI2KtUTUyq89dBYDwAArSK8cWt+zbJmtNII6bA8tdAI6TC5wxP7rtbACm97tkR/K+ssVude9DBm+gqV+JM9a3q/rfW7Vklpya19CNCr94HCAFOk3LRd33u1u8vbhSlgLfWJFJ71famHrqt0Z6ivplBf17v2qFIymV1n07LtaITNJW+jus8B3NjU09sxzQZqmWVeETWcACNtV1PespspVUcOKG/XMLpUV0O83fITx3nEo4WNB1d4N+O2Rdw9yc7z+z1GRr/RrCOjSTInuTHq+3naNz3U4dcnXZebCLQDAeo+HSIgAiLQeQTaYZfdI+YV9qGhUrGR0moKqZVGlG2bxnzGaCmloTJ6Ksrotzvv6eisHFunNGvWHiHX64xyzl8eO8bbKhwdqlmUdstPMYjgqwH/9I6mQ/F4OhKYzTvi+F82kzjtksn+3SOuyEEERKApCUghbcrbIqFEQAREIB0BGyXF5+ZlfCdN2S3jvXku2UgpCveJNDxtp+xh64hylNKm/s1jaPYcjYzmSLnJoq5lplSGWVhIY2yuLSGqVxl1MrVbfly+4qZtXnT0Q96kPs/btKvgjUc5fbHH9x6cMdG39Ws6REAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERAACviiIgAiIgAgMJ7DPPvvshMuNoeueN9xww5zhPnQmAiIgAiIgAiIgAiKQBYGeLCJRHCIgAiLQTgR839++UCiMtzyZHUMKaTvd4AzzctBBB627bNmydxDl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UvksxkDZi5yw9xKm1xzi5RjlMLe10HTi3YPCeTZ1ZPD5F2TYieT/wnPzFPb+vr6+zTDdxmA2a0Yjo3aDdIiACIiACIhADgS6ysRpa5gadTQyrUblqSHp0GgyZTTYwCghwWBNqflJuNZop2rucTV+S+Wjmjiq8VsqvbzdU8tIebDNVtxuusEGRjTArcPi2piQ+9Eg3yN2LqsI1EMgdflMmwhK4ADldgr+o3JLXRaN+DMD5GyU1prXQjMKfarF4eQhbp/fppy/FzOujM4kHU3TdaBkioAIiIAIiEDGBEoqpLaGibQyb2QkyD8qa8Ro7Ng60cX2C+0JojW/E0qF7aAbrRslL2faLyb57qGfmFPjrVWUp0zKQ6PTy5toFfmx0ZzbkMfKdqCMWqMdt+LG/XN8f/E3dch9axjWpgW33QGvtqgfKtyYzO5hNeWzgkzDLlu55XcEv1eHXchgLTRxFsJnYwfsd/GL775rQ7j2fHwGpfgorg1bX1oki05FQAREQAREQAREoHMJMBp2s02Rsx/2MxwJs8fctcuuA9MhJpuxbMrvU8XZtZEfysZetkau+JrORaDZCFBex1OP/drVZUXmNfGRzHpl57lYm867iTw32y5atGi9euNTeBEQAREQAREQgXQEgo+Dp/MqX81IgAbUm2iUXYBs8+nJvyguIw2sYzifRO/+cYwEBN8AiV+XXQREQASalYApo9Rh5dZCm+jX2rTe+Ohms+ZHcomACIiACIiACIiACIiACIiACLQIAUZDvx4fEaXz7SwbEcXtmrg7SuueLZIliSkCIiACIiACIpBAoOQa0gS/chIBERABERCBhhBg1LMRa6EbkhclIgIiIAIiIAIiIAIiIAIiIAIi0GIEtBa6xW6YxBUBERABERABERABERABERABERABERABERABERCBViHw/wHIAHUN1iL6RwAAAABJRU5ErkJggg==) no-repeat;background-size:466px 146px}}.toastui-editor-toolbar-icons{background-position-y:3px}.toastui-editor-toolbar-icons:disabled{opacity:.3}.toastui-editor-toolbar-icons.heading{background-position-x:3px}.toastui-editor-toolbar-icons.bold{background-position-x:-23px}.toastui-editor-toolbar-icons.italic{background-position-x:-49px}.toastui-editor-toolbar-icons.strike{background-position-x:-75px}.toastui-editor-toolbar-icons.hrline{background-position-x:-101px}.toastui-editor-toolbar-icons.quote{background-position-x:-127px}.toastui-editor-toolbar-icons.bullet-list{background-position-x:-153px}.toastui-editor-toolbar-icons.ordered-list{background-position-x:-179px}.toastui-editor-toolbar-icons.task-list{background-position-x:-205px}.toastui-editor-toolbar-icons.indent{background-position-x:-231px}.toastui-editor-toolbar-icons.outdent{background-position-x:-257px}.toastui-editor-toolbar-icons.table{background-position-x:-283px}.toastui-editor-toolbar-icons.image{background-position-x:-309px}.toastui-editor-toolbar-icons.link{background-position-x:-334px}.toastui-editor-toolbar-icons.code{background-position-x:-361px}.toastui-editor-toolbar-icons.codeblock{background-position-x:-388px}.toastui-editor-toolbar-icons.more{background-position-x:-412px}.toastui-editor-toolbar-icons:not(:disabled).active{background-position-y:-23px}@media only screen and (max-width:480px){.toastui-editor-popup{max-width:300px;margin-left:-150px}.toastui-editor-dropdown-toolbar{max-width:none}}.toastui-editor-contents .toastui-editor-md-preview-highlight{position:relative;z-index:0}.toastui-editor-contents .toastui-editor-md-preview-highlight:after{content:"";background-color:rgba(255,245,131,.5);border-radius:4px;z-index:-1;position:absolute;top:-4px;right:-4px;left:-4px;bottom:-4px}.toastui-editor-contents h1.toastui-editor-md-preview-highlight:after,.toastui-editor-contents h2.toastui-editor-md-preview-highlight:after{bottom:0}.toastui-editor-contents td.toastui-editor-md-preview-highlight:after,.toastui-editor-contents th.toastui-editor-md-preview-highlight:after{display:none}.toastui-editor-contents td.toastui-editor-md-preview-highlight,.toastui-editor-contents th.toastui-editor-md-preview-highlight{background-color:rgba(255,245,131,.5)}.toastui-editor-contents th.toastui-editor-md-preview-highlight{color:#222}.toastui-editor-md-heading1{font-size:24px}.toastui-editor-md-heading2{font-size:22px}.toastui-editor-md-heading3{font-size:20px}.toastui-editor-md-heading4{font-size:18px}.toastui-editor-md-heading5{font-size:16px}.toastui-editor-md-heading6{font-size:14px}.toastui-editor-md-heading.toastui-editor-md-delimiter.setext{line-height:15px}.toastui-editor-md-heading,.toastui-editor-md-list-item-style,.toastui-editor-md-list-item .toastui-editor-md-meta,.toastui-editor-md-strong{font-weight:700}.toastui-editor-md-emph{font-style:italic}.toastui-editor-md-strike{text-decoration:line-through}.toastui-editor-md-strike.toastui-editor-md-delimiter{text-decoration:none}.toastui-editor-md-block-quote,.toastui-editor-md-delimiter,.toastui-editor-md-link,.toastui-editor-md-table,.toastui-editor-md-thematic-break{color:#ccc}.toastui-editor-md-code.toastui-editor-md-delimiter{color:#aaa}.toastui-editor-md-html,.toastui-editor-md-link.toastui-editor-md-link-url.toastui-editor-md-marked-text,.toastui-editor-md-meta{color:#999}.toastui-editor-md-block-quote .toastui-editor-md-marked-text,.toastui-editor-md-list-item .toastui-editor-md-meta{color:#555}.toastui-editor-md-table .toastui-editor-md-table-cell{color:#222}.toastui-editor-md-link.toastui-editor-md-link-desc.toastui-editor-md-marked-text,.toastui-editor-md-list-item-style.toastui-editor-md-list-item-odd{color:#4b96e6}.toastui-editor-md-list-item-style.toastui-editor-md-list-item-even{color:#cb4848}.toastui-editor-md-code.toastui-editor-md-marked-text{color:#c1798b}.toastui-editor-md-code{background-color:rgba(243,229,233,.5);padding:2px 0;letter-spacing:-.3px}.toastui-editor-md-code.toastui-editor-md-start{padding-left:2px;border-top-left-radius:2px;border-bottom-left-radius:2px}.toastui-editor-md-code.toastui-editor-md-end{padding-right:2px;border-top-right-radius:2px;border-bottom-right-radius:2px}.toastui-editor-md-code-block-line-background{background-color:#f5f7f8}.toastui-editor-md-code-block-line-background.start,.toastui-editor-md-custom-block-line-background.start{margin-top:2px}.toastui-editor-md-code,.toastui-editor-md-code-block{font-family:Consolas,Courier,Lucida Grande,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif}.toastui-editor-md-custom-block{color:#452d6b}.toastui-editor-md-custom-block-line-background{background-color:#f9f7fd}.toastui-editor-md-custom-block .toastui-editor-md-delimiter{color:#b8b3c0}.toastui-editor-md-custom-block .toastui-editor-md-meta{color:#5200d0}.nodeNoteDialog .tip[data-v-118eb5f6]{margin-top:5px;color:#dcdfe6}.nodeTagDialog .tagList[data-v-49b77317]{display:flex;flex-wrap:wrap;margin-top:5px}.nodeTagDialog .tagList .tagItem[data-v-49b77317]{position:relative;padding:3px 5px;margin-right:5px;margin-bottom:5px;color:#fff}.nodeTagDialog .tagList .tagItem .delBtn[data-v-49b77317]{position:absolute;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);color:#fff;display:flex;justify-content:center;align-items:center;cursor:pointer;visibility:hidden}.nodeTagDialog .tagList .tagItem:hover .delBtn[data-v-49b77317]{visibility:visible}.exportContainer.isDark .downloadTypeList .downloadTypeItem[data-v-dcb8586a]{background-color:#363b3f}.exportContainer.isDark .downloadTypeList .downloadTypeItem .info .name[data-v-dcb8586a]{color:hsla(0,0%,100%,.9)}.nodeExportDialog[data-v-dcb8586a] .el-dialog__body{background-color:#f2f4f7}.nodeExportDialog .nameInputBox[data-v-dcb8586a]{margin-bottom:20px}.nodeExportDialog .nameInputBox .name[data-v-dcb8586a]{margin-right:10px}.nodeExportDialog .paddingInputBox[data-v-dcb8586a]{display:flex;align-items:center;flex-wrap:wrap}.nodeExportDialog .paddingInputBox .paddingInputGroup[data-v-dcb8586a]{margin-right:12px;margin-bottom:12px}.nodeExportDialog .paddingInputBox .paddingInputGroup[data-v-dcb8586a]:last-of-type{margin-right:0}.nodeExportDialog .paddingInputBox .name[data-v-dcb8586a]{margin-right:10px}.nodeExportDialog .tip[data-v-dcb8586a]{margin-top:10px}.nodeExportDialog .tip.warning[data-v-dcb8586a]{color:#f56c6c}.nodeExportDialog .downloadTypeList[data-v-dcb8586a]{display:flex;flex-wrap:wrap}.nodeExportDialog .downloadTypeList .downloadTypeItem[data-v-dcb8586a]{width:200px;height:88px;padding:22px;overflow:hidden;margin:10px;border-radius:11px;box-shadow:0 0 20px 0 rgba(0,0,0,.02);background-color:#fff;display:flex;align-items:center;cursor:pointer;border:2px solid transparent}.nodeExportDialog .downloadTypeList .downloadTypeItem.active[data-v-dcb8586a]{border-color:#409eff}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon[data-v-dcb8586a]{font-size:30px;margin-right:10px;flex-shrink:0}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.png[data-v-dcb8586a]{color:#ffc038}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.pdf[data-v-dcb8586a]{color:#ff6c4d}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.md[data-v-dcb8586a]{color:#2b2b2b}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.json[data-v-dcb8586a]{color:#12c87e}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.svg[data-v-dcb8586a]{color:#4380ff}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.smm[data-v-dcb8586a]{color:#409eff}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.xmind[data-v-dcb8586a]{color:#f55e5e}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.txt[data-v-dcb8586a]{color:#70798e}.nodeExportDialog .downloadTypeList .downloadTypeItem .info[data-v-dcb8586a]{width:100%;overflow:hidden}.nodeExportDialog .downloadTypeList .downloadTypeItem .info .name[data-v-dcb8586a]{color:#1a1a1a;font-size:15px;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nodeExportDialog .downloadTypeList .downloadTypeItem .info .desc[data-v-dcb8586a]{color:#999;font-size:12px;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.canvasList[data-v-5b39e1c8]{display:flex;flex-direction:column}.canvasList[data-v-5b39e1c8] .el-radio{margin-bottom:12px}.canvasList[data-v-5b39e1c8] .el-radio:last-of-type{margin-bottom:0}.colorContainer.isDark .moreColor[data-v-db1a0f12]{color:hsla(0,0%,100%,.6)}.colorList[data-v-db1a0f12]{width:240px;display:flex;flex-wrap:wrap}.colorList .colorItem[data-v-db1a0f12]{display:flex;justify-content:center;align-items:center;width:15px;height:15px;margin-right:5px;margin-bottom:5px;cursor:pointer}.moreColor[data-v-db1a0f12]{display:flex;align-items:center}.moreColor span[data-v-db1a0f12]{margin-right:5px}.annotationConfigBox.isDark .annotationConfigItem .name[data-v-58049480]{color:hsla(0,0%,100%,.9)}.annotationConfigBox .annotationConfigItem[data-v-58049480]{display:flex;align-items:center;margin-bottom:12px}.annotationConfigBox .annotationConfigItem[data-v-58049480]:last-of-type{margin-bottom:0}.annotationConfigBox .annotationConfigItem .name[data-v-58049480]{flex-shrink:0;margin-right:10px}.annotationConfigBox .annotationConfigItem .block[data-v-58049480]{width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.borderLine[data-v-58049480]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-58049480]{background-color:#fff}.toolbarNodeBtnList{display:flex}.toolbarNodeBtnList.isDark .toolbarBtn{color:hsla(0,0%,100%,.9)}.toolbarNodeBtnList.isDark .toolbarBtn .icon{background:transparent;border-color:transparent}.toolbarNodeBtnList.isDark .toolbarBtn:hover:not(.disabled) .icon{background:hsla(0,0%,100%,.05)}.toolbarNodeBtnList.isDark .toolbarBtn.disabled{color:#54595f}.toolbarNodeBtnList .toolbarBtn{display:flex;justify-content:center;flex-direction:column;cursor:pointer;margin-right:20px}.toolbarNodeBtnList .toolbarBtn:last-of-type{margin-right:0}.toolbarNodeBtnList .toolbarBtn.active .icon,.toolbarNodeBtnList .toolbarBtn:hover:not(.disabled) .icon{background:#f5f5f5}.toolbarNodeBtnList .toolbarBtn.disabled{color:#bcbcbc;cursor:not-allowed;pointer-events:none}.toolbarNodeBtnList .toolbarBtn .icon{display:flex;height:26px;background:#fff;border-radius:4px;border:1px solid #e9e9e9;justify-content:center;flex-direction:column;text-align:center;padding:0 5px}.toolbarNodeBtnList .toolbarBtn .text{margin-top:3px}.toolbarNodeBtnList.v{display:block;width:120px;flex-wrap:wrap}.toolbarNodeBtnList.v .toolbarBtn{flex-direction:row;justify-content:flex-start;margin-bottom:10px;width:100%;margin-right:0}.toolbarNodeBtnList.v .toolbarBtn:last-of-type{margin-bottom:0}.toolbarNodeBtnList.v .toolbarBtn .icon{margin-right:10px}.toolbarNodeBtnList.v .toolbarBtn .text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbarContainer.isDark .toolbar[data-v-37ee6d9e]{color:hsla(0,0%,100%,.9)}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e],.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree,.toolbarContainer.isDark .toolbar .toolbarBlock[data-v-37ee6d9e]{background-color:#262a2e}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content,.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree .el-tree-node:focus>.el-tree-node__content{background-color:hsla(0,0%,100%,.05)!important}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree .el-tree-node__content:hover,.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree .el-upload-list__item:hover{background-color:hsla(0,0%,100%,.02)!important}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo[data-v-37ee6d9e]{color:#fff}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeBtnList .el-button[data-v-37ee6d9e]{padding:7px 5px}.toolbarContainer.isDark .toolbar .toolbarBtn .icon[data-v-37ee6d9e]{background:transparent;border-color:transparent}.toolbarContainer.isDark .toolbar .toolbarBtn:hover:not(.disabled) .icon[data-v-37ee6d9e]{background:hsla(0,0%,100%,.05)}.toolbarContainer.isDark .toolbar .toolbarBtn.disabled[data-v-37ee6d9e]{color:#54595f}.toolbarContainer .toolbar[data-v-37ee6d9e]{position:fixed;left:50%;transform:translateX(-50%);top:20px;width:-moz-max-content;width:max-content;display:flex;font-size:12px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:rgba(26,26,26,.8);z-index:2}.toolbarContainer .toolbar .toolbarBlock[data-v-37ee6d9e]{display:flex;background-color:#fff;padding:10px 20px;border-radius:6px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06);margin-right:20px;flex-shrink:0;position:relative}.toolbarContainer .toolbar .toolbarBlock[data-v-37ee6d9e]:last-of-type{margin-right:0}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e]{position:absolute;left:0;top:68px;width:100%;height:30px;background-color:#fff;padding:12px 5px;padding-top:0;display:flex;flex-direction:column;overflow:hidden;border-radius:5px;min-width:200px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06)}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox.expand[data-v-37ee6d9e]{height:300px}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox.expand .fileTreeWrap[data-v-37ee6d9e]{visibility:visible}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeToolbar[data-v-37ee6d9e]{width:100%;height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e9e9e9;margin-bottom:12px;padding-left:12px}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeToolbar .fileTreeActionList .btn[data-v-37ee6d9e]{font-size:18px;margin-left:12px;cursor:pointer}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap[data-v-37ee6d9e]{width:100%;height:100%;overflow:auto;visibility:hidden}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode[data-v-37ee6d9e]{flex:1;display:flex;align-items:center;justify-content:space-between;font-size:13px;padding-right:5px}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo[data-v-37ee6d9e]{display:flex;align-items:center}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo .treeNodeIcon[data-v-37ee6d9e]{margin-right:5px;opacity:.7}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo .treeNodeName[data-v-37ee6d9e]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeBtnList[data-v-37ee6d9e]{display:flex;align-items:center}.toolbarContainer .toolbar .toolbarBtn[data-v-37ee6d9e]{display:flex;justify-content:center;flex-direction:column;cursor:pointer;margin-right:20px}.toolbarContainer .toolbar .toolbarBtn[data-v-37ee6d9e]:last-of-type{margin-right:0}.toolbarContainer .toolbar .toolbarBtn.active .icon[data-v-37ee6d9e],.toolbarContainer .toolbar .toolbarBtn:hover:not(.disabled) .icon[data-v-37ee6d9e]{background:#f5f5f5}.toolbarContainer .toolbar .toolbarBtn.disabled[data-v-37ee6d9e]{color:#bcbcbc;cursor:not-allowed;pointer-events:none}.toolbarContainer .toolbar .toolbarBtn .icon[data-v-37ee6d9e]{display:flex;height:26px;background:#fff;border-radius:4px;border:1px solid #e9e9e9;justify-content:center;flex-direction:column;text-align:center;padding:0 5px}.toolbarContainer .toolbar .toolbarBtn .text[data-v-37ee6d9e]{margin-top:3px} + */.ProseMirror{position:relative;word-wrap:break-word;white-space:pre-wrap;white-space:break-spaces;-webkit-font-variant-ligatures:none;font-variant-ligatures:none;-webkit-font-feature-settings:"liga" 0;font-feature-settings:"liga" 0}.ProseMirror pre{white-space:pre-wrap}.ProseMirror li{position:relative}.ProseMirror-hideselection ::selection{background:transparent}.ProseMirror-hideselection ::-moz-selection{background:transparent}.ProseMirror-hideselection{caret-color:transparent}.ProseMirror-selectednode{outline:2px solid #8cf}li.ProseMirror-selectednode{outline:none}li.ProseMirror-selectednode:after{content:"";position:absolute;left:-32px;right:-2px;top:-2px;bottom:-2px;border:2px solid #8cf;pointer-events:none}img.ProseMirror-separator{display:inline!important;border:none!important;margin:0!important}.auto-height,.auto-height .toastui-editor-defaultUI{height:auto}.auto-height .toastui-editor-md-container{position:relative}:not(.auto-height)>.toastui-editor-defaultUI,:not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-direction:column;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}:not(.auto-height)>.toastui-editor-defaultUI>.toastui-editor-main{-ms-flex:1;-webkit-box-flex:1;flex:1}.toastui-editor-defaultUI-toolbar:after,.toastui-editor-md-container:after{content:"";display:block;height:0;clear:both}.toastui-editor-main{min-height:0;position:relative;height:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-md-container{display:none;overflow:hidden;height:100%}.toastui-editor-md-container .toastui-editor{line-height:1.5;position:relative}.toastui-editor-md-container .toastui-editor,.toastui-editor-md-container .toastui-editor-md-preview{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;height:inherit}.toastui-editor-md-container .toastui-editor-md-preview{overflow:auto;padding:0 25px;height:100%}.toastui-editor-md-container .toastui-editor-md-preview>p:first-child{margin-top:0!important}.toastui-editor-md-container .toastui-editor-md-preview .toastui-editor-contents{padding-top:8px}.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor,.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor-md-preview{width:100%;display:none}.toastui-editor-main .toastui-editor-md-tab-style>.active{display:block}.toastui-editor-main .toastui-editor-md-vertical-style>.toastui-editor-tabs{display:none}.toastui-editor-main .toastui-editor-md-tab-style>.toastui-editor-tabs{display:block}.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor,.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor-md-preview{width:50%}.toastui-editor-main .toastui-editor-md-splitter{display:none;height:100%;width:1px;background-color:#ebedf2;position:absolute;left:50%}.toastui-editor-main .toastui-editor-md-vertical-style .toastui-editor-md-splitter{display:block}.toastui-editor-ww-container{display:none;overflow:hidden;height:inherit;background-color:#fff}.auto-height .toastui-editor-main-container{position:relative}.toastui-editor-main-container{position:absolute;line-height:1;color:#222;width:100%;height:inherit}.toastui-editor-ww-container>.toastui-editor{height:inherit;position:relative;width:100%}.toastui-editor-ww-container .toastui-editor-contents{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px 25px 0 25px;height:inherit}.toastui-editor-ww-container .toastui-editor-contents p{margin:0}.toastui-editor-md-mode .toastui-editor-md-container,.toastui-editor-ww-mode .toastui-editor-ww-container{display:block;z-index:20}.toastui-editor-md-mode .toastui-editor-md-vertical-style{display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-defaultUI.hidden,.toastui-editor-main.hidden{display:none}.toastui-editor-defaultUI .ProseMirror{padding:18px 25px}.toastui-editor-defaultUI{position:relative;border:1px solid #dadde6;height:100%;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif;border-radius:4px}.toastui-editor-defaultUI button{color:#333;height:28px;font-size:13px;cursor:pointer;border:none;border-radius:2px}.toastui-editor-defaultUI .toastui-editor-ok-button{min-width:63px;height:32px;background-color:#00a9ff;color:#fff;outline-color:#009bf2}.toastui-editor-defaultUI .toastui-editor-ok-button:hover{background-color:#009bf2}.toastui-editor-defaultUI .toastui-editor-close-button{min-width:63px;height:32px;background-color:#f7f9fc;border:1px solid #dadde6;margin-right:5px;outline-color:#cbcfdb}.toastui-editor-defaultUI .toastui-editor-close-button:hover{border-color:#cbcfdb}.toastui-editor-mode-switch{background-color:#fff;border-top:1px solid #dadde6;font-size:12px;text-align:right;height:28px;padding-right:10px;border-radius:0 0 3px 3px}.toastui-editor-mode-switch .tab-item{display:inline-block;width:96px;height:24px;line-height:24px;text-align:center;background:#f7f9fc;color:#969aa5;margin-top:-1px;margin-right:-1px;cursor:pointer;border:1px solid #dadde6;border-radius:0 0 4px 4px;font-weight:500;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-mode-switch .tab-item.active{border-top:1px solid #fff;background-color:#fff;color:#555}.toastui-editor-defaultUI .toastui-editor-md-tab-container{float:left;height:45px;font-size:13px;background:#f7f9fc;border-bottom:1px solid #ebedf2;border-top-left-radius:3px}.toastui-editor-md-tab-container .toastui-editor-tabs{margin-left:15px;height:100%}.toastui-editor-md-tab-container .tab-item{display:inline-block;width:70px;height:33px;line-height:33px;font-size:12px;font-weight:500;text-align:center;background:#eaedf1;color:#969aa5;cursor:pointer;border:1px solid #dadde6;border-radius:4px 4px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:13px}.toastui-editor-md-tab-container .tab-item.active{border-bottom:1px solid #fff;background-color:#fff;color:#555}.toastui-editor-md-tab-container .tab-item:last-child{margin-left:-1px}.toastui-editor-defaultUI-toolbar{display:-ms-flexbox;display:-webkit-box;display:flex;padding:0 25px;height:45px;background-color:#f7f9fc;border-bottom:1px solid #ebedf2;border-radius:3px 3px 0 0}.toastui-editor-toolbar{height:46px;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-toolbar-divider{display:inline-block;width:1px;height:18px;background-color:#e1e3e9;margin:14px 12px}.toastui-editor-toolbar-group{display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-defaultUI-toolbar button{-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;width:32px;height:32px;padding:0;border-radius:3px;margin:7px 5px;border:1px solid #f7f9fc}.toastui-editor-defaultUI-toolbar button:not(:disabled):hover{border:1px solid #e4e7ee;background-color:#fff}.toastui-editor-defaultUI-toolbar .scroll-sync{display:inline-block;position:relative;width:70px;height:10px;text-align:center;line-height:10px;color:#81858f;cursor:pointer}.toastui-editor-defaultUI-toolbar .scroll-sync:before{content:"Scroll";position:absolute;left:0;font-size:14px}.toastui-editor-defaultUI-toolbar .scroll-sync.active:before{color:#00a9ff}.toastui-editor-defaultUI-toolbar .scroll-sync input{opacity:0;width:0;height:0}.toastui-editor-defaultUI-toolbar .switch{position:absolute;top:0;left:45px;right:0;bottom:0;background-color:#d6d8de;-webkit-transition:.4s;transition:.4s;border-radius:50px}.toastui-editor-defaultUI-toolbar input:checked+.switch{background-color:#acddfa}.toastui-editor-defaultUI-toolbar .switch:before{position:absolute;content:"";height:14px;width:14px;left:0;bottom:-2px;background-color:#94979f;-webkit-transition:.4s;transition:.4s;border-radius:50%}.toastui-editor-defaultUI-toolbar input:checked+.switch:before{background-color:#00a9ff;-webkit-transform:translateX(12px);transform:translateX(12px)}.toastui-editor-dropdown-toolbar .scroll-sync{margin:0 5px}.toastui-editor-dropdown-toolbar{position:absolute;height:46px;z-index:30;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6;background-color:#f7f9fc;display:-ms-flexbox;display:-webkit-box;display:flex}.toastui-editor-toolbar-item-wrapper{margin:7px 5px;height:32px;line-height:32px}.toastui-editor-popup{width:400px;margin-right:auto;background:#fff;z-index:30;position:absolute;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6}.toastui-editor-popup-body{padding:15px;font-size:12px}.toastui-editor-popup-body label{font-weight:600;color:#555;display:block;margin:20px 0 5px}.toastui-editor-popup-body .toastui-editor-button-container{text-align:right;margin-top:20px}.toastui-editor-popup-body input[type=text]{width:calc(100% - 26px);height:30px;padding:0 12px;border-radius:2px;border:1px solid #e1e3e9;color:#333}.toastui-editor-popup-body input[type=text]:focus{outline:1px solid #00a9ff;border-color:transparent}.toastui-editor-popup-body input[type=text].disabled{background-color:#f7f9fc;border-color:#e1e3e9;color:#969aa5}.toastui-editor-popup-body input[type=file]{opacity:0;border:none;width:1px;height:1px;position:absolute;top:0;left:0}.toastui-editor-popup-body input.wrong,.toastui-editor-popup-body span.wrong{border-color:#fa2828}.toastui-editor-popup-add-image .toastui-editor-popup-body,.toastui-editor-popup-add-link .toastui-editor-popup-body{padding:0 20px 20px}.toastui-editor-popup-add-image .toastui-editor-tabs{margin:5px 0 10px}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item{display:inline-block;width:60px;height:40px;line-height:40px;border-bottom:1px solid #dadde6;color:#333;font-size:13px;font-weight:600;text-align:center;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item:hover{border-bottom:1px solid #cbcfdb}.toastui-editor-popup-add-image .toastui-editor-tabs .tab-item.active{color:#00a9ff;border-bottom:2px solid #00a9ff}.toastui-editor-popup-add-image .toastui-editor-file-name{width:58%;display:inline-block;border-radius:2px;border:1px solid #e1e3e9;color:#dadde6;height:30px;line-height:30px;padding:0 12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.toastui-editor-popup-add-image .toastui-editor-file-name.has-file{color:#333}.toastui-editor-popup-add-image .toastui-editor-file-select-button{width:33%;margin-left:5px;height:32px;border-radius:2px;border:1px solid #dadde6;background-color:#f7f9fc;vertical-align:top}.toastui-editor-popup-add-image .toastui-editor-file-select-button:hover{border-color:#cbcfdb}.toastui-editor-popup-add-table{width:auto}.toastui-editor-popup-add-table .toastui-editor-table-selection{position:relative}.toastui-editor-popup-add-table .toastui-editor-table-cell{display:table-cell;width:20px;height:20px;border:1px solid #e1e3e9;background:#fff;-webkit-box-sizing:border-box;box-sizing:border-box}.toastui-editor-popup-add-table .toastui-editor-table-cell.header{background:#f7f9fc}.toastui-editor-popup-add-table .toastui-editor-table-row{display:table-row}.toastui-editor-popup-add-table .toastui-editor-table{display:table;border-collapse:collapse}.toastui-editor-popup-add-table .toastui-editor-table-selection-layer{position:absolute;top:0;left:0;border:1px solid #00a9ff;background:rgba(0,169,255,.1);z-index:30}.toastui-editor-popup-add-table .toastui-editor-table-description{margin:5px 0 0;text-align:center;color:#333}.toastui-editor-popup-add-heading{width:auto}.toastui-editor-popup-add-heading .toastui-editor-popup-body{padding:0}.toastui-editor-popup-add-heading h1,.toastui-editor-popup-add-heading h2,.toastui-editor-popup-add-heading h3,.toastui-editor-popup-add-heading h4,.toastui-editor-popup-add-heading h5,.toastui-editor-popup-add-heading h6,.toastui-editor-popup-add-heading p,.toastui-editor-popup-add-heading ul{padding:0;margin:0}.toastui-editor-popup-add-heading ul{padding:5px 0;list-style:none}.toastui-editor-popup-add-heading ul li{padding:4px 12px;cursor:pointer}.toastui-editor-popup-add-heading ul li:hover{background-color:#dff4ff}.toastui-editor-popup-add-heading h1{font-size:24px}.toastui-editor-popup-add-heading h2{font-size:22px}.toastui-editor-popup-add-heading h3{font-size:20px}.toastui-editor-popup-add-heading h4{font-size:18px}.toastui-editor-popup-add-heading h5{font-size:16px}.toastui-editor-popup-add-heading h6{font-size:14px}.toastui-editor-context-menu{position:absolute;width:auto;min-width:197px;color:#333;border-radius:2px;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.08);box-shadow:0 2px 4px 0 rgba(0,0,0,.08);border:1px solid #dadde6;z-index:30;padding:5px 0;background-color:#fff}.toastui-editor-context-menu .menu-group{list-style:none;border-bottom:1px solid #ebedf2;padding:0;margin:0;font-size:13px}.toastui-editor-context-menu .menu-group:last-child{border-bottom:none!important}.toastui-editor-context-menu .menu-item{height:32px;line-height:32px;padding:0 14px;cursor:pointer}.toastui-editor-context-menu span{display:inline-block}.toastui-editor-context-menu span:before{background:url(data:image/png;base64,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) no-repeat;background-size:466px 146px;content:"";width:20px;height:20px;display:inline-block;vertical-align:middle;margin-right:10px}.toastui-editor-context-menu .add-row-up:before{background-position:3px -104px}.toastui-editor-context-menu .add-row-down:before{background-position:-19px -104px}.toastui-editor-context-menu .remove-row:before{background-position:-41px -104px}.toastui-editor-context-menu .add-column-left:before{background-position:-63px -104px}.toastui-editor-context-menu .add-column-right:before{background-position:-85px -104px}.toastui-editor-context-menu .remove-column:before{background-position:-111px -104px}.toastui-editor-context-menu .align-column-left:before{background-position:-129px -104px}.toastui-editor-context-menu .align-column-center:before{background-position:-151px -104px}.toastui-editor-context-menu .align-column-right:before{background-position:-173px -104px}.toastui-editor-context-menu .remove-table:before{background-position:-197px -104px}.toastui-editor-context-menu .disabled span:before{opacity:.3}.toastui-editor-context-menu li:not(.disabled):hover{background-color:#dff4ff}.toastui-editor-context-menu li.disabled{color:#c9ccd5}.toastui-editor-tooltip{position:absolute;background-color:#444;z-index:40;padding:4px 7px;font-size:12px;border-radius:3px;color:#fff;font-family:Open Sans,Helvetica Neue,Helvetica,Arial,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif}.toastui-editor-tooltip .arrow{content:"";display:inline-block;width:10px;height:10px;background-color:#444;-webkit-transform:rotate(45deg);transform:rotate(45deg);position:absolute;top:-3px;left:6px;z-index:-1}.toastui-editor-toolbar-icons{background:url(data:image/png;base64,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) no-repeat;background-size:466px 146px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2),only screen and (min-resolution:2dppx),only screen and (min-resolution:192dpi){.toastui-editor-context-menu span:before,.toastui-editor-toolbar-icons{background:url(data:image/png;base64,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P0A9dgflJJi2Szl5led4F57jlvpECs/6vuTjuhR3dAo961VP9UoRby5eaGBuxz2Zy/3pyiWBlJEiA/s5FHaEnU170tGmBChvV5O1/Zske9dQ3upqiLdbfuL3hTpvY+q8m3ELRkrj1xLs36Md8A17jhOutYwTnYufJw89tLmvbxmhJagIVEmgaoW0yvjlXQREQASakkA77LJL42wfGmdpGiktpZBagaFRfQqNsDNGSykNldFTUQ6+3ZQFWEJlRsA6pVmzZjML1sks0hoiosy9vMoqq2wVjg7VEMNQkHbLTzEI7tOqdCoeTd1nn7dK2tjwf2F5Gsro3cVhdS4CItCcBKSQNud9kVQiIAIikIqAjZLSQNu8lGeujZiyW8pvs7mHI6W2tb/tlF28jigvcRfSmLUpw+doZDQvxM0Xb40zpbLKiE03nWtLiOpVRp1A7ZYfl6+4yTPqo5hO4nndFPt4fi+OHTv2Qb5x/Y+4P9lFQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAREQAQ6mYDfyZlX3kVABESgnQgc/WRhlf5F3j6Dvjdw6UT/mnbKm/IiAiIgAiIgAiLQngSkkLbnfVWuREAEOohA7+OFsc8v8w4peN43yfZGlnW/y9t/9kT/2g7CoKyKgAiIgAiIgAi0IIGeFpRZIouACIhA3QSOm1fY4A3f28MiWqXg/fyCyf7CuiMdhQiOmFc4YOEy7zsk/fZhyRe89ww7b8GTI+YXthv0vBO9gjcZ8TdoUBYWer43r8vzzpk1yb+vQWkqmVEmcPQjhY36+rzv0amzI6I0qqy5XC9kdGDumDHeSRdv5T/n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vaXiGC338PM8x9WSftjWO6CWsArTOAKhollR2UwjEc9wdYeNvhHCevQvqneamUs5jzhd3GlMemI2KtUTUyq89dBYDwAArSK8cWt+zbJmtNII6bA8tdAI6TC5wxP7rtbACm97tkR/K+ssVude9DBm+gqV+JM9a3q/rfW7Vklpya19CNCr94HCAFOk3LRd33u1u8vbhSlgLfWJFJ71famHrqt0Z6ivplBf17v2qFIymV1n07LtaITNJW+jus8B3NjU09sxzQZqmWVeETWcACNtV1PespspVUcOKG/XMLpUV0O83fITx3nEo4WNB1d4N+O2Rdw9yc7z+z1GRr/RrCOjSTInuTHq+3naNz3U4dcnXZebCLQDAeo+HSIgAiLQeQTaYZfdI+YV9qGhUrGR0moKqZVGlG2bxnzGaCmloTJ6Ksrotzvv6eisHFunNGvWHiHX64xyzl8eO8bbKhwdqlmUdstPMYjgqwH/9I6mQ/F4OhKYzTvi+F82kzjtksn+3SOuyEEERKApCUghbcrbIqFEQAREIB0BGyXF5+ZlfCdN2S3jvXku2UgpCveJNDxtp+xh64hylNKm/s1jaPYcjYzmSLnJoq5lplSGWVhIY2yuLSGqVxl1MrVbfly+4qZtXnT0Q96kPs/btKvgjUc5fbHH9x6cMdG39Ws6REAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAERAACviiIgAiIgAgMJ7DPPvvshMuNoeueN9xww5zhPnQmAiIgAiIgAiIgAiKQBYGeLCJRHCIgAiLQTgR839++UCiMtzyZHUMKaTvd4AzzctBBB627bNmydxDl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UvksxkDZi5yw9xKm1xzi5RjlMLe10HTi3YPCeTZ1ZPD5F2TYieT/wnPzFPb+vr6+zTDdxmA2a0Yjo3aDdIiACIiACIhADgS6ysRpa5gadTQyrUblqSHp0GgyZTTYwCghwWBNqflJuNZop2rucTV+S+Wjmjiq8VsqvbzdU8tIebDNVtxuusEGRjTArcPi2piQ+9Eg3yN2LqsI1EMgdflMmwhK4ADldgr+o3JLXRaN+DMD5GyU1prXQjMKfarF4eQhbp/fppy/FzOujM4kHU3TdaBkioAIiIAIiEDGBEoqpLaGibQyb2QkyD8qa8Ro7Ng60cX2C+0JojW/E0qF7aAbrRslL2faLyb57qGfmFPjrVWUp0zKQ6PTy5toFfmx0ZzbkMfKdqCMWqMdt+LG/XN8f/E3dch9axjWpgW33QGvtqgfKtyYzO5hNeWzgkzDLlu55XcEv1eHXchgLTRxFsJnYwfsd/GL775rQ7j2fHwGpfgorg1bX1oki05FQAREQAREQAREoHMJMBp2s02Rsx/2MxwJs8fctcuuA9MhJpuxbMrvU8XZtZEfysZetkau+JrORaDZCFBex1OP/drVZUXmNfGRzHpl57lYm867iTw32y5atGi9euNTeBEQAREQAREQgXQEgo+Dp/MqX81IgAbUm2iUXYBs8+nJvyguIw2sYzifRO/+cYwEBN8AiV+XXQREQASalYApo9Rh5dZCm+jX2rTe+Ohms+ZHcomACIiACIiACIiACIiACIiACLQIAUZDvx4fEaXz7SwbEcXtmrg7SuueLZIliSkCIiACIiACIpBAoOQa0gS/chIBERABERCBhhBg1LMRa6EbkhclIgIiIAIiIAIiIAIiIAIiIAIi0GIEtBa6xW6YxBUBERABERABERABERABERABERABERABERABERCBViHw/wHIAHUN1iL6RwAAAABJRU5ErkJggg==) no-repeat;background-size:466px 146px}}.toastui-editor-toolbar-icons{background-position-y:3px}.toastui-editor-toolbar-icons:disabled{opacity:.3}.toastui-editor-toolbar-icons.heading{background-position-x:3px}.toastui-editor-toolbar-icons.bold{background-position-x:-23px}.toastui-editor-toolbar-icons.italic{background-position-x:-49px}.toastui-editor-toolbar-icons.strike{background-position-x:-75px}.toastui-editor-toolbar-icons.hrline{background-position-x:-101px}.toastui-editor-toolbar-icons.quote{background-position-x:-127px}.toastui-editor-toolbar-icons.bullet-list{background-position-x:-153px}.toastui-editor-toolbar-icons.ordered-list{background-position-x:-179px}.toastui-editor-toolbar-icons.task-list{background-position-x:-205px}.toastui-editor-toolbar-icons.indent{background-position-x:-231px}.toastui-editor-toolbar-icons.outdent{background-position-x:-257px}.toastui-editor-toolbar-icons.table{background-position-x:-283px}.toastui-editor-toolbar-icons.image{background-position-x:-309px}.toastui-editor-toolbar-icons.link{background-position-x:-334px}.toastui-editor-toolbar-icons.code{background-position-x:-361px}.toastui-editor-toolbar-icons.codeblock{background-position-x:-388px}.toastui-editor-toolbar-icons.more{background-position-x:-412px}.toastui-editor-toolbar-icons:not(:disabled).active{background-position-y:-23px}@media only screen and (max-width:480px){.toastui-editor-popup{max-width:300px;margin-left:-150px}.toastui-editor-dropdown-toolbar{max-width:none}}.toastui-editor-contents .toastui-editor-md-preview-highlight{position:relative;z-index:0}.toastui-editor-contents .toastui-editor-md-preview-highlight:after{content:"";background-color:rgba(255,245,131,.5);border-radius:4px;z-index:-1;position:absolute;top:-4px;right:-4px;left:-4px;bottom:-4px}.toastui-editor-contents h1.toastui-editor-md-preview-highlight:after,.toastui-editor-contents h2.toastui-editor-md-preview-highlight:after{bottom:0}.toastui-editor-contents td.toastui-editor-md-preview-highlight:after,.toastui-editor-contents th.toastui-editor-md-preview-highlight:after{display:none}.toastui-editor-contents td.toastui-editor-md-preview-highlight,.toastui-editor-contents th.toastui-editor-md-preview-highlight{background-color:rgba(255,245,131,.5)}.toastui-editor-contents th.toastui-editor-md-preview-highlight{color:#222}.toastui-editor-md-heading1{font-size:24px}.toastui-editor-md-heading2{font-size:22px}.toastui-editor-md-heading3{font-size:20px}.toastui-editor-md-heading4{font-size:18px}.toastui-editor-md-heading5{font-size:16px}.toastui-editor-md-heading6{font-size:14px}.toastui-editor-md-heading.toastui-editor-md-delimiter.setext{line-height:15px}.toastui-editor-md-heading,.toastui-editor-md-list-item-style,.toastui-editor-md-list-item .toastui-editor-md-meta,.toastui-editor-md-strong{font-weight:700}.toastui-editor-md-emph{font-style:italic}.toastui-editor-md-strike{text-decoration:line-through}.toastui-editor-md-strike.toastui-editor-md-delimiter{text-decoration:none}.toastui-editor-md-block-quote,.toastui-editor-md-delimiter,.toastui-editor-md-link,.toastui-editor-md-table,.toastui-editor-md-thematic-break{color:#ccc}.toastui-editor-md-code.toastui-editor-md-delimiter{color:#aaa}.toastui-editor-md-html,.toastui-editor-md-link.toastui-editor-md-link-url.toastui-editor-md-marked-text,.toastui-editor-md-meta{color:#999}.toastui-editor-md-block-quote .toastui-editor-md-marked-text,.toastui-editor-md-list-item .toastui-editor-md-meta{color:#555}.toastui-editor-md-table .toastui-editor-md-table-cell{color:#222}.toastui-editor-md-link.toastui-editor-md-link-desc.toastui-editor-md-marked-text,.toastui-editor-md-list-item-style.toastui-editor-md-list-item-odd{color:#4b96e6}.toastui-editor-md-list-item-style.toastui-editor-md-list-item-even{color:#cb4848}.toastui-editor-md-code.toastui-editor-md-marked-text{color:#c1798b}.toastui-editor-md-code{background-color:rgba(243,229,233,.5);padding:2px 0;letter-spacing:-.3px}.toastui-editor-md-code.toastui-editor-md-start{padding-left:2px;border-top-left-radius:2px;border-bottom-left-radius:2px}.toastui-editor-md-code.toastui-editor-md-end{padding-right:2px;border-top-right-radius:2px;border-bottom-right-radius:2px}.toastui-editor-md-code-block-line-background{background-color:#f5f7f8}.toastui-editor-md-code-block-line-background.start,.toastui-editor-md-custom-block-line-background.start{margin-top:2px}.toastui-editor-md-code,.toastui-editor-md-code-block{font-family:Consolas,Courier,Lucida Grande,나눔바른고딕,Nanum Barun Gothic,맑은고딕,Malgun Gothic,sans-serif}.toastui-editor-md-custom-block{color:#452d6b}.toastui-editor-md-custom-block-line-background{background-color:#f9f7fd}.toastui-editor-md-custom-block .toastui-editor-md-delimiter{color:#b8b3c0}.toastui-editor-md-custom-block .toastui-editor-md-meta{color:#5200d0}.nodeNoteDialog .tip[data-v-118eb5f6]{margin-top:5px;color:#dcdfe6}.nodeTagDialog .tagList[data-v-b201c0a0]{display:flex;flex-wrap:wrap;margin-top:5px}.nodeTagDialog .tagList .tagItem[data-v-b201c0a0]{position:relative;padding:3px 5px;margin-right:5px;margin-bottom:5px;color:#fff}.nodeTagDialog .tagList .tagItem .delBtn[data-v-b201c0a0]{position:absolute;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.4);color:#fff;display:flex;justify-content:center;align-items:center;cursor:pointer;visibility:hidden}.nodeTagDialog .tagList .tagItem:hover .delBtn[data-v-b201c0a0]{visibility:visible}.exportContainer.isDark .downloadTypeList .downloadTypeItem[data-v-dcb8586a]{background-color:#363b3f}.exportContainer.isDark .downloadTypeList .downloadTypeItem .info .name[data-v-dcb8586a]{color:hsla(0,0%,100%,.9)}.nodeExportDialog[data-v-dcb8586a] .el-dialog__body{background-color:#f2f4f7}.nodeExportDialog .nameInputBox[data-v-dcb8586a]{margin-bottom:20px}.nodeExportDialog .nameInputBox .name[data-v-dcb8586a]{margin-right:10px}.nodeExportDialog .paddingInputBox[data-v-dcb8586a]{display:flex;align-items:center;flex-wrap:wrap}.nodeExportDialog .paddingInputBox .paddingInputGroup[data-v-dcb8586a]{margin-right:12px;margin-bottom:12px}.nodeExportDialog .paddingInputBox .paddingInputGroup[data-v-dcb8586a]:last-of-type{margin-right:0}.nodeExportDialog .paddingInputBox .name[data-v-dcb8586a]{margin-right:10px}.nodeExportDialog .tip[data-v-dcb8586a]{margin-top:10px}.nodeExportDialog .tip.warning[data-v-dcb8586a]{color:#f56c6c}.nodeExportDialog .downloadTypeList[data-v-dcb8586a]{display:flex;flex-wrap:wrap}.nodeExportDialog .downloadTypeList .downloadTypeItem[data-v-dcb8586a]{width:200px;height:88px;padding:22px;overflow:hidden;margin:10px;border-radius:11px;box-shadow:0 0 20px 0 rgba(0,0,0,.02);background-color:#fff;display:flex;align-items:center;cursor:pointer;border:2px solid transparent}.nodeExportDialog .downloadTypeList .downloadTypeItem.active[data-v-dcb8586a]{border-color:#409eff}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon[data-v-dcb8586a]{font-size:30px;margin-right:10px;flex-shrink:0}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.png[data-v-dcb8586a]{color:#ffc038}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.pdf[data-v-dcb8586a]{color:#ff6c4d}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.md[data-v-dcb8586a]{color:#2b2b2b}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.json[data-v-dcb8586a]{color:#12c87e}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.svg[data-v-dcb8586a]{color:#4380ff}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.smm[data-v-dcb8586a]{color:#409eff}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.xmind[data-v-dcb8586a]{color:#f55e5e}.nodeExportDialog .downloadTypeList .downloadTypeItem .icon.txt[data-v-dcb8586a]{color:#70798e}.nodeExportDialog .downloadTypeList .downloadTypeItem .info[data-v-dcb8586a]{width:100%;overflow:hidden}.nodeExportDialog .downloadTypeList .downloadTypeItem .info .name[data-v-dcb8586a]{color:#1a1a1a;font-size:15px;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nodeExportDialog .downloadTypeList .downloadTypeItem .info .desc[data-v-dcb8586a]{color:#999;font-size:12px;display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:2;-webkit-box-orient:vertical}.canvasList[data-v-5b39e1c8]{display:flex;flex-direction:column}.canvasList[data-v-5b39e1c8] .el-radio{margin-bottom:12px}.canvasList[data-v-5b39e1c8] .el-radio:last-of-type{margin-bottom:0}.colorContainer.isDark .moreColor[data-v-db1a0f12]{color:hsla(0,0%,100%,.6)}.colorList[data-v-db1a0f12]{width:240px;display:flex;flex-wrap:wrap}.colorList .colorItem[data-v-db1a0f12]{display:flex;justify-content:center;align-items:center;width:15px;height:15px;margin-right:5px;margin-bottom:5px;cursor:pointer}.moreColor[data-v-db1a0f12]{display:flex;align-items:center}.moreColor span[data-v-db1a0f12]{margin-right:5px}.annotationConfigBox.isDark .annotationConfigItem .name[data-v-58049480]{color:hsla(0,0%,100%,.9)}.annotationConfigBox .annotationConfigItem[data-v-58049480]{display:flex;align-items:center;margin-bottom:12px}.annotationConfigBox .annotationConfigItem[data-v-58049480]:last-of-type{margin-bottom:0}.annotationConfigBox .annotationConfigItem .name[data-v-58049480]{flex-shrink:0;margin-right:10px}.annotationConfigBox .annotationConfigItem .block[data-v-58049480]{width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.borderLine[data-v-58049480]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-58049480]{background-color:#fff}.toolbarNodeBtnList{display:flex}.toolbarNodeBtnList.isDark .toolbarBtn{color:hsla(0,0%,100%,.9)}.toolbarNodeBtnList.isDark .toolbarBtn .icon{background:transparent;border-color:transparent}.toolbarNodeBtnList.isDark .toolbarBtn:hover:not(.disabled) .icon{background:hsla(0,0%,100%,.05)}.toolbarNodeBtnList.isDark .toolbarBtn.disabled{color:#54595f}.toolbarNodeBtnList .toolbarBtn{display:flex;justify-content:center;flex-direction:column;cursor:pointer;margin-right:20px}.toolbarNodeBtnList .toolbarBtn:last-of-type{margin-right:0}.toolbarNodeBtnList .toolbarBtn.active .icon,.toolbarNodeBtnList .toolbarBtn:hover:not(.disabled) .icon{background:#f5f5f5}.toolbarNodeBtnList .toolbarBtn.disabled{color:#bcbcbc;cursor:not-allowed;pointer-events:none}.toolbarNodeBtnList .toolbarBtn .icon{display:flex;height:26px;background:#fff;border-radius:4px;border:1px solid #e9e9e9;justify-content:center;flex-direction:column;text-align:center;padding:0 5px}.toolbarNodeBtnList .toolbarBtn .text{margin-top:3px}.toolbarNodeBtnList.v{display:block;width:120px;flex-wrap:wrap}.toolbarNodeBtnList.v .toolbarBtn{flex-direction:row;justify-content:flex-start;margin-bottom:10px;width:100%;margin-right:0}.toolbarNodeBtnList.v .toolbarBtn:last-of-type{margin-bottom:0}.toolbarNodeBtnList.v .toolbarBtn .icon{margin-right:10px}.toolbarNodeBtnList.v .toolbarBtn .text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbarContainer.isDark .toolbar[data-v-37ee6d9e]{color:hsla(0,0%,100%,.9)}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e],.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree,.toolbarContainer.isDark .toolbar .toolbarBlock[data-v-37ee6d9e]{background-color:#262a2e}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content,.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree .el-tree-node:focus>.el-tree-node__content{background-color:hsla(0,0%,100%,.05)!important}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree .el-tree-node__content:hover,.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e] .el-tree .el-upload-list__item:hover{background-color:hsla(0,0%,100%,.02)!important}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo[data-v-37ee6d9e]{color:#fff}.toolbarContainer.isDark .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeBtnList .el-button[data-v-37ee6d9e]{padding:7px 5px}.toolbarContainer.isDark .toolbar .toolbarBtn .icon[data-v-37ee6d9e]{background:transparent;border-color:transparent}.toolbarContainer.isDark .toolbar .toolbarBtn:hover:not(.disabled) .icon[data-v-37ee6d9e]{background:hsla(0,0%,100%,.05)}.toolbarContainer.isDark .toolbar .toolbarBtn.disabled[data-v-37ee6d9e]{color:#54595f}.toolbarContainer .toolbar[data-v-37ee6d9e]{position:fixed;left:50%;transform:translateX(-50%);top:20px;width:-moz-max-content;width:max-content;display:flex;font-size:12px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:rgba(26,26,26,.8);z-index:2}.toolbarContainer .toolbar .toolbarBlock[data-v-37ee6d9e]{display:flex;background-color:#fff;padding:10px 20px;border-radius:6px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06);margin-right:20px;flex-shrink:0;position:relative}.toolbarContainer .toolbar .toolbarBlock[data-v-37ee6d9e]:last-of-type{margin-right:0}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox[data-v-37ee6d9e]{position:absolute;left:0;top:68px;width:100%;height:30px;background-color:#fff;padding:12px 5px;padding-top:0;display:flex;flex-direction:column;overflow:hidden;border-radius:5px;min-width:200px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06)}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox.expand[data-v-37ee6d9e]{height:300px}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox.expand .fileTreeWrap[data-v-37ee6d9e]{visibility:visible}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeToolbar[data-v-37ee6d9e]{width:100%;height:30px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e9e9e9;margin-bottom:12px;padding-left:12px}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeToolbar .fileTreeActionList .btn[data-v-37ee6d9e]{font-size:18px;margin-left:12px;cursor:pointer}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap[data-v-37ee6d9e]{width:100%;height:100%;overflow:auto;visibility:hidden}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode[data-v-37ee6d9e]{flex:1;display:flex;align-items:center;justify-content:space-between;font-size:13px;padding-right:5px}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo[data-v-37ee6d9e]{display:flex;align-items:center}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo .treeNodeIcon[data-v-37ee6d9e]{margin-right:5px;opacity:.7}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeInfo .treeNodeName[data-v-37ee6d9e]{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.toolbarContainer .toolbar .toolbarBlock .fileTreeBox .fileTreeWrap .customTreeNode .treeNodeBtnList[data-v-37ee6d9e]{display:flex;align-items:center}.toolbarContainer .toolbar .toolbarBtn[data-v-37ee6d9e]{display:flex;justify-content:center;flex-direction:column;cursor:pointer;margin-right:20px}.toolbarContainer .toolbar .toolbarBtn[data-v-37ee6d9e]:last-of-type{margin-right:0}.toolbarContainer .toolbar .toolbarBtn.active .icon[data-v-37ee6d9e],.toolbarContainer .toolbar .toolbarBtn:hover:not(.disabled) .icon[data-v-37ee6d9e]{background:#f5f5f5}.toolbarContainer .toolbar .toolbarBtn.disabled[data-v-37ee6d9e]{color:#bcbcbc;cursor:not-allowed;pointer-events:none}.toolbarContainer .toolbar .toolbarBtn .icon[data-v-37ee6d9e]{display:flex;height:26px;background:#fff;border-radius:4px;border:1px solid #e9e9e9;justify-content:center;flex-direction:column;text-align:center;padding:0 5px}.toolbarContainer .toolbar .toolbarBtn .text[data-v-37ee6d9e]{margin-top:3px} /*! - * Quill Editor v1.3.7 - * https://quilljs.com/ + * Quill Editor v2.0.2 + * https://quilljs.com + * Copyright (c) 2017-2024, Slab * 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-bec7987e]{width:100%;color:rgba(0,0,0,.85);font-weight:700}.customNode .nodeEdit[data-v-bec7987e]{outline:none;white-space:normal;padding-right:20px}.outlineTree.isDark[data-v-bec7987e]{background-color:#262a2e}.outlineTree.isDark .customNode[data-v-bec7987e]{color:#fff}.outlineTree.isDark.el-tree--highlight-current[data-v-bec7987e] .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-bec7987e]:hover,.outlineTree.isDark[data-v-bec7987e] .el-tree-node__content:hover{background-color:hsla(0,0%,100%,.02)!important}.outlineTree.isDark[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon{color:#fff}.outlineTree.isDark[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#fff}.outlineTree[data-v-bec7987e] .el-tree-node>.el-tree-node__children{overflow:inherit}.outlineTree[data-v-bec7987e] .el-tree-node__content{height:auto;margin:5px 0}.outlineTree[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon{color:#262a2e}.outlineTree[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon.is-leaf{color:transparent;position:relative}.outlineTree[data-v-bec7987e] .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}.styleBox[data-v-cb9581b2]{width:100%;height:100%;display:flex;flex-direction:column}.styleBox.isDark .sidebarContent .title[data-v-cb9581b2]{color:#fff}.styleBox.isDark .sidebarContent .row .rowItem .name[data-v-cb9581b2]{color:hsla(0,0%,100%,.6)}.styleBox.isDark .sidebarContent .row .styleBtn[data-v-cb9581b2]{background-color:#363b3f;color:hsla(0,0%,100%,.6);border-color:hsla(0,0%,100%,.1)}.styleBox .tab[data-v-cb9581b2]{flex-grow:0;flex-shrink:0;padding:0 20px}.tipBox[data-v-cb9581b2]{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666}.tipBox .tipIcon[data-v-cb9581b2]{font-size:100px}.sidebarContent[data-v-cb9581b2]{padding:20px;padding-top:10px}.sidebarContent .title[data-v-cb9581b2]{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-cb9581b2]{margin-top:0}.sidebarContent .row[data-v-cb9581b2]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row .btnGroup[data-v-cb9581b2]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-cb9581b2]{display:flex;align-items:center}.sidebarContent .row .rowItem .name[data-v-cb9581b2]{font-size:12px;margin-right:10px}.sidebarContent .row .rowItem .block[data-v-cb9581b2]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .block.disabled[data-v-cb9581b2]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn[data-v-cb9581b2]{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-cb9581b2]{background-color:#eee}.sidebarContent .row .styleBtn.disabled[data-v-cb9581b2]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn.i[data-v-cb9581b2]{font-style:italic}.sidebarContent .row .styleBtn .colorShow[data-v-cb9581b2]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-cb9581b2]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-cb9581b2]{background-color:#fff}.sidebarContent[data-v-410910c0]{padding:20px;padding-top:10px}.sidebarContent.isDark .title[data-v-410910c0]{color:#fff}.sidebarContent.isDark .row .rowItem .curRainbowLine[data-v-410910c0],.sidebarContent.isDark .row .rowItem .name[data-v-410910c0]{color:hsla(0,0%,100%,.6)}.sidebarContent .title[data-v-410910c0]{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-410910c0]{margin-top:0}.sidebarContent .row[data-v-410910c0]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row.column[data-v-410910c0]{flex-direction:column}.sidebarContent .row .tab[data-v-410910c0]{width:100%}.sidebarContent .row .imgUpload[data-v-410910c0]{margin-bottom:5px}.sidebarContent .row .btnGroup[data-v-410910c0]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-410910c0]{display:flex;align-items:center;margin-bottom:5px}.sidebarContent .row .rowItem .name[data-v-410910c0]{font-size:12px;margin-right:10px;white-space:nowrap}.sidebarContent .row .rowItem .block[data-v-410910c0]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .curRainbowLine[data-v-410910c0]{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-410910c0]{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-410910c0]{background-color:#eee}.sidebarContent .row .styleBtn .colorShow[data-v-410910c0]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-410910c0]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-410910c0]{background-color:#fff}.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-69923b2a]{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-69923b2a]{background:#262a2e}.countContainer.isDark .item[data-v-69923b2a]{color:hsla(0,0%,100%,.6)}.countContainer .item[data-v-69923b2a]{color:#555;margin-right:15px}.countContainer .item[data-v-69923b2a]:last-of-type{margin-right:0}.countContainer .item .name[data-v-69923b2a]{margin-right:5px}@media screen and (max-width:740px){.countContainer[data-v-69923b2a]{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-10de3df2]{display:flex;align-items:center}.demonstrateContainer.isDark .btn[data-v-10de3df2]{color:hsla(0,0%,100%,.6)}.demonstrateContainer .item[data-v-10de3df2]{margin-right:12px}.demonstrateContainer .item[data-v-10de3df2]:last-of-type{margin-right:0}.demonstrateContainer .btn[data-v-10de3df2]{cursor:pointer;font-size:24px}.exitDemonstrateBtn[data-v-10de3df2]{position:absolute;right:40px;top:20px;cursor:pointer;z-index:10001;pointer-events:all}.exitDemonstrateBtn .icon[data-v-10de3df2]{font-size:28px;color:#fff}.stepBox[data-v-10de3df2]{position:absolute;right:40px;bottom:20px;pointer-events:all;z-index:10001;display:flex;align-items:center}.stepBox .step[data-v-10de3df2]{color:#fff;margin:0 12px}.stepBox .jump[data-v-10de3df2]{color:#fff;cursor:pointer}.stepBox .jump.disabled[data-v-10de3df2]{cursor:not-allowed;color:#999}.stepBox .input[data-v-10de3df2]{margin-left:12px;display:flex;align-items:center}.stepBox .input input[data-v-10de3df2]{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-668496cf]{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-668496cf]{background:#363b3f}.contextmenuContainer[data-v-668496cf]{position:fixed;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#1a1a1a}.contextmenuContainer.isDark[data-v-668496cf]{color:#fff}.contextmenuContainer.isDark .item[data-v-668496cf]:hover{background:hsla(0,0%,100%,.05)}.contextmenuContainer .item[data-v-668496cf]{position:relative;height:28px;padding:0 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.contextmenuContainer .item.danger[data-v-668496cf]{color:#f56c6c}.contextmenuContainer .item[data-v-668496cf]:hover{background:#f5f5f5}.contextmenuContainer .item:hover .subItems[data-v-668496cf]{visibility:visible}.contextmenuContainer .item.disabled[data-v-668496cf]{color:grey;cursor:not-allowed;pointer-events:none}.contextmenuContainer .item.disabled[data-v-668496cf]:hover{background:#fff}.contextmenuContainer .item .desc[data-v-668496cf],.contextmenuContainer .item .name[data-v-668496cf]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contextmenuContainer .item .desc[data-v-668496cf]{color:#999}.contextmenuContainer .item .subItems[data-v-668496cf]{position:absolute;left:100%;top:0;visibility:hidden;width:150px}.richTextToolbar[data-v-0041a5be]{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-0041a5be]{background:#363b3f}.richTextToolbar.isDark .btn[data-v-0041a5be]{color:#fff}.richTextToolbar.isDark .btn[data-v-0041a5be]:hover{background:hsla(0,0%,100%,.05)}.richTextToolbar .btn[data-v-0041a5be]{width:55px;height:55px;display:flex;justify-content:center;align-items:center;cursor:pointer}.richTextToolbar .btn[data-v-0041a5be]:hover{background-color:#eefbed}.richTextToolbar .btn.active[data-v-0041a5be]{color:#12bb37}.richTextToolbar .btn .icon[data-v-0041a5be]{font-size:20px}.richTextToolbar .btn .icon.fontColor[data-v-0041a5be]{font-size:26px}.fontOptionsList[data-v-0041a5be]{width:150px}.fontOptionsList.isDark .fontOptionItem[data-v-0041a5be]{color:#fff}.fontOptionsList.isDark .fontOptionItem[data-v-0041a5be]:hover{background-color:hsla(0,0%,100%,.05)}.fontOptionsList .fontOptionItem[data-v-0041a5be]{height:30px;width:100%;display:flex;align-items:center;cursor:pointer}.fontOptionsList .fontOptionItem[data-v-0041a5be]:hover{background-color:#f7f7f7}.fontOptionsList .fontOptionItem.active[data-v-0041a5be]{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:not(.ql-disabled) li[data-list=checked]>.ql-ui,.ql-container:not(.ql-disabled) li[data-list=unchecked]>.ql-ui{cursor:pointer}.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;counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;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{margin:0;padding:0}@supports (counter-set:none){.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor p{counter-set:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor p{counter-reset:list-0 list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor table{border-collapse:collapse}.ql-editor td{border:1px solid #000;padding:2px 5px}.ql-editor li,.ql-editor ol{padding-left:1.5em}.ql-editor li{list-style-type:none;position:relative}.ql-editor li>.ql-ui:before{display:inline-block;margin-left:-1.5em;margin-right:.3em;text-align:right;white-space:nowrap;width:1.2em}.ql-editor li[data-list=checked]>.ql-ui,.ql-editor li[data-list=unchecked]>.ql-ui{color:#777}.ql-editor li[data-list=bullet]>.ql-ui:before{content:"\2022"}.ql-editor li[data-list=checked]>.ql-ui:before{content:"\2611"}.ql-editor li[data-list=unchecked]>.ql-ui:before{content:"\2610"}@supports (counter-set:none){.ql-editor li[data-list]{counter-set:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list]{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered]{counter-increment:list-0}.ql-editor li[data-list=ordered]>.ql-ui:before{content:counter(list-0,decimal) ". "}.ql-editor li[data-list=ordered].ql-indent-1{counter-increment:list-1}.ql-editor li[data-list=ordered].ql-indent-1>.ql-ui:before{content:counter(list-1,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-set:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-2{counter-increment:list-2}.ql-editor li[data-list=ordered].ql-indent-2>.ql-ui:before{content:counter(list-2,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-set:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-3{counter-increment:list-3}.ql-editor li[data-list=ordered].ql-indent-3>.ql-ui:before{content:counter(list-3,decimal) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-set:list-4 list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-4{counter-increment:list-4}.ql-editor li[data-list=ordered].ql-indent-4>.ql-ui:before{content:counter(list-4,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-set:list-5 list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-5{counter-increment:list-5}.ql-editor li[data-list=ordered].ql-indent-5>.ql-ui:before{content:counter(list-5,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-set:list-6 list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-6{counter-increment:list-6}.ql-editor li[data-list=ordered].ql-indent-6>.ql-ui:before{content:counter(list-6,decimal) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-set:list-7 list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-6{counter-reset:list-7 list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-7{counter-increment:list-7}.ql-editor li[data-list=ordered].ql-indent-7>.ql-ui:before{content:counter(list-7,lower-alpha) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-set:list-8 list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-7{counter-reset:list-8 list-9}}.ql-editor li[data-list=ordered].ql-indent-8{counter-increment:list-8}.ql-editor li[data-list=ordered].ql-indent-8>.ql-ui:before{content:counter(list-8,lower-roman) ". "}@supports (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-set:list-9}}@supports not (counter-set:none){.ql-editor li[data-list].ql-indent-8{counter-reset:list-9}}.ql-editor li[data-list=ordered].ql-indent-9{counter-increment:list-9}.ql-editor li[data-list=ordered].ql-indent-9>.ql-ui: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 li.ql-direction-rtl{padding-right:1.5em}.ql-editor li.ql-direction-rtl>.ql-ui:before{margin-left:.3em;margin-right:-1.5em;text-align:left}.ql-editor table{table-layout:fixed;width:100%}.ql-editor table td{outline:none}.ql-editor .ql-code-block-container{font-family:monospace}.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-ui{position:absolute}.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 .ql-code-block-container,.ql-snow .ql-editor code{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor .ql-code-block-container{margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor .ql-code-block-container{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-code-block-container{position:relative}.ql-code-block-container .ql-ui{right:5px;top:5px}.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-bec7987e]{width:100%;color:rgba(0,0,0,.85);font-weight:700}.customNode .nodeEdit[data-v-bec7987e]{outline:none;white-space:normal;padding-right:20px}.outlineTree.isDark[data-v-bec7987e]{background-color:#262a2e}.outlineTree.isDark .customNode[data-v-bec7987e]{color:#fff}.outlineTree.isDark.el-tree--highlight-current[data-v-bec7987e] .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-bec7987e]:hover,.outlineTree.isDark[data-v-bec7987e] .el-tree-node__content:hover{background-color:hsla(0,0%,100%,.02)!important}.outlineTree.isDark[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon{color:#fff}.outlineTree.isDark[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon.is-leaf:after{background-color:#fff}.outlineTree[data-v-bec7987e] .el-tree-node>.el-tree-node__children{overflow:inherit}.outlineTree[data-v-bec7987e] .el-tree-node__content{height:auto;margin:5px 0}.outlineTree[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon{color:#262a2e}.outlineTree[data-v-bec7987e] .el-tree-node__content .el-tree-node__expand-icon.is-leaf{color:transparent;position:relative}.outlineTree[data-v-bec7987e] .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}.styleBox[data-v-cb9581b2]{width:100%;height:100%;display:flex;flex-direction:column}.styleBox.isDark .sidebarContent .title[data-v-cb9581b2]{color:#fff}.styleBox.isDark .sidebarContent .row .rowItem .name[data-v-cb9581b2]{color:hsla(0,0%,100%,.6)}.styleBox.isDark .sidebarContent .row .styleBtn[data-v-cb9581b2]{background-color:#363b3f;color:hsla(0,0%,100%,.6);border-color:hsla(0,0%,100%,.1)}.styleBox .tab[data-v-cb9581b2]{flex-grow:0;flex-shrink:0;padding:0 20px}.tipBox[data-v-cb9581b2]{width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;color:#666}.tipBox .tipIcon[data-v-cb9581b2]{font-size:100px}.sidebarContent[data-v-cb9581b2]{padding:20px;padding-top:10px}.sidebarContent .title[data-v-cb9581b2]{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-cb9581b2]{margin-top:0}.sidebarContent .row[data-v-cb9581b2]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row .btnGroup[data-v-cb9581b2]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-cb9581b2]{display:flex;align-items:center}.sidebarContent .row .rowItem .name[data-v-cb9581b2]{font-size:12px;margin-right:10px}.sidebarContent .row .rowItem .block[data-v-cb9581b2]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .block.disabled[data-v-cb9581b2]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn[data-v-cb9581b2]{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-cb9581b2]{background-color:#eee}.sidebarContent .row .styleBtn.disabled[data-v-cb9581b2]{background-color:#f5f7fa!important;border-color:#e4e7ed!important;color:#c0c4cc!important;cursor:not-allowed!important}.sidebarContent .row .styleBtn.i[data-v-cb9581b2]{font-style:italic}.sidebarContent .row .styleBtn .colorShow[data-v-cb9581b2]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-cb9581b2]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-cb9581b2]{background-color:#fff}.sidebarContent[data-v-46e64071]{padding:20px;padding-top:10px}.sidebarContent.isDark .title[data-v-46e64071]{color:#fff}.sidebarContent.isDark .row .rowItem .curRainbowLine[data-v-46e64071],.sidebarContent.isDark .row .rowItem .name[data-v-46e64071]{color:hsla(0,0%,100%,.6)}.sidebarContent .title[data-v-46e64071]{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-46e64071]{margin-top:0}.sidebarContent .row[data-v-46e64071]{display:flex;justify-content:space-between;margin-bottom:10px}.sidebarContent .row.column[data-v-46e64071]{flex-direction:column}.sidebarContent .row .tab[data-v-46e64071]{width:100%}.sidebarContent .row .imgUpload[data-v-46e64071]{margin-bottom:5px}.sidebarContent .row .btnGroup[data-v-46e64071]{width:100%;display:flex;justify-content:space-between}.sidebarContent .row .rowItem[data-v-46e64071]{display:flex;align-items:center;margin-bottom:5px}.sidebarContent .row .rowItem .name[data-v-46e64071]{font-size:12px;margin-right:10px;white-space:nowrap}.sidebarContent .row .rowItem .block[data-v-46e64071]{display:inline-block;width:30px;height:30px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.sidebarContent .row .rowItem .curRainbowLine[data-v-46e64071]{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-46e64071]{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-46e64071]{background-color:#eee}.sidebarContent .row .styleBtn .colorShow[data-v-46e64071]{position:absolute;left:0;right:0;bottom:0;height:2px}.borderLine[data-v-46e64071]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-46e64071]{background-color:#fff}.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-5ea342d7]{padding:20px;padding-top:0}.themeList.isDark .name[data-v-5ea342d7]{color:#fff}.themeList .themeItem[data-v-5ea342d7]{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-5ea342d7]:last-of-type{border:none}.themeList .themeItem[data-v-5ea342d7]: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-5ea342d7]{border:1px solid #67c23a}.themeList .themeItem .imgBox[data-v-5ea342d7],.themeList .themeItem .imgBox img[data-v-5ea342d7]{width:100%}.themeList .themeItem .name[data-v-5ea342d7]{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-69923b2a]{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-69923b2a]{background:#262a2e}.countContainer.isDark .item[data-v-69923b2a]{color:hsla(0,0%,100%,.6)}.countContainer .item[data-v-69923b2a]{color:#555;margin-right:15px}.countContainer .item[data-v-69923b2a]:last-of-type{margin-right:0}.countContainer .item .name[data-v-69923b2a]{margin-right:5px}@media screen and (max-width:740px){.countContainer[data-v-69923b2a]{display:none}}.scaleContainer[data-v-ad6af772]{display:flex;align-items:center}.scaleContainer.isDark .btn[data-v-ad6af772],.scaleContainer.isDark .scaleInfo[data-v-ad6af772],.scaleContainer.isDark .scaleInfo input[data-v-ad6af772]{color:hsla(0,0%,100%,.6)}.scaleContainer .btn[data-v-ad6af772]{cursor:pointer}.scaleContainer .scaleInfo[data-v-ad6af772]{margin:0 20px;display:flex;align-items:center}.scaleContainer .scaleInfo input[data-v-ad6af772]{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-10de3df2]{display:flex;align-items:center}.demonstrateContainer.isDark .btn[data-v-10de3df2]{color:hsla(0,0%,100%,.6)}.demonstrateContainer .item[data-v-10de3df2]{margin-right:12px}.demonstrateContainer .item[data-v-10de3df2]:last-of-type{margin-right:0}.demonstrateContainer .btn[data-v-10de3df2]{cursor:pointer;font-size:24px}.exitDemonstrateBtn[data-v-10de3df2]{position:absolute;right:40px;top:20px;cursor:pointer;z-index:10001;pointer-events:all}.exitDemonstrateBtn .icon[data-v-10de3df2]{font-size:28px;color:#fff}.stepBox[data-v-10de3df2]{position:absolute;right:40px;bottom:20px;pointer-events:all;z-index:10001;display:flex;align-items:center}.stepBox .step[data-v-10de3df2]{color:#fff;margin:0 12px}.stepBox .jump[data-v-10de3df2]{color:#fff;cursor:pointer}.stepBox .jump.disabled[data-v-10de3df2]{cursor:not-allowed;color:#999}.stepBox .input[data-v-10de3df2]{margin-left:12px;display:flex;align-items:center}.stepBox .input input[data-v-10de3df2]{width:50px;height:30px;text-align:center;background-color:transparent;border:1px solid #999;outline:none;color:#fff}.navigatorContainer[data-v-50ed186d]{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-50ed186d]{background:#262a2e}.navigatorContainer.isDark .item .btn[data-v-50ed186d],.navigatorContainer.isDark .item a[data-v-50ed186d]{color:hsla(0,0%,100%,.6)}.navigatorContainer .item[data-v-50ed186d]{margin-right:20px}.navigatorContainer .item[data-v-50ed186d]:last-of-type{margin-right:0}.navigatorContainer .item a[data-v-50ed186d]{color:#303133;text-decoration:none}.navigatorContainer .item .btn[data-v-50ed186d]{cursor:pointer;font-size:18px}@media screen and (max-width:590px){.navigatorContainer[data-v-50ed186d]{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-4c16c9af]{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-4c16c9af]{background:#363b3f}.contextmenuContainer[data-v-4c16c9af]{position:fixed;font-size:14px;font-family:PingFangSC-Regular,PingFang SC;font-weight:400;color:#1a1a1a}.contextmenuContainer.isDark[data-v-4c16c9af]{color:#fff}.contextmenuContainer.isDark .item[data-v-4c16c9af]:hover{background:hsla(0,0%,100%,.05)}.contextmenuContainer .splitLine[data-v-4c16c9af]{width:95%;height:1px;background-color:#e9edf2;margin:2px auto}.contextmenuContainer .item[data-v-4c16c9af]{position:relative;height:28px;padding:0 16px;cursor:pointer;display:flex;justify-content:space-between;align-items:center}.contextmenuContainer .item.danger[data-v-4c16c9af]{color:#f56c6c}.contextmenuContainer .item[data-v-4c16c9af]:hover{background:#f5f5f5}.contextmenuContainer .item:hover .subItems[data-v-4c16c9af]{visibility:visible}.contextmenuContainer .item.disabled[data-v-4c16c9af]{color:grey;cursor:not-allowed;pointer-events:none}.contextmenuContainer .item.disabled[data-v-4c16c9af]:hover{background:#fff}.contextmenuContainer .item .desc[data-v-4c16c9af],.contextmenuContainer .item .name[data-v-4c16c9af]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contextmenuContainer .item .desc[data-v-4c16c9af]{color:#999}.contextmenuContainer .item .subItems[data-v-4c16c9af]{position:absolute;left:100%;visibility:hidden;width:150px;cursor:auto}.contextmenuContainer .item .subItems.showLeft[data-v-4c16c9af]{left:-150px}.richTextToolbar[data-v-0041a5be]{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-0041a5be]{background:#363b3f}.richTextToolbar.isDark .btn[data-v-0041a5be]{color:#fff}.richTextToolbar.isDark .btn[data-v-0041a5be]:hover{background:hsla(0,0%,100%,.05)}.richTextToolbar .btn[data-v-0041a5be]{width:55px;height:55px;display:flex;justify-content:center;align-items:center;cursor:pointer}.richTextToolbar .btn[data-v-0041a5be]:hover{background-color:#eefbed}.richTextToolbar .btn.active[data-v-0041a5be]{color:#12bb37}.richTextToolbar .btn .icon[data-v-0041a5be]{font-size:20px}.richTextToolbar .btn .icon.fontColor[data-v-0041a5be]{font-size:26px}.fontOptionsList[data-v-0041a5be]{width:150px}.fontOptionsList.isDark .fontOptionItem[data-v-0041a5be]{color:#fff}.fontOptionsList.isDark .fontOptionItem[data-v-0041a5be]:hover{background-color:hsla(0,0%,100%,.05)}.fontOptionsList .fontOptionItem[data-v-0041a5be]{height:30px;width:100%;display:flex;align-items:center;cursor:pointer}.fontOptionsList .fontOptionItem[data-v-0041a5be]:hover{background-color:#f7f7f7}.fontOptionsList .fontOptionItem.active[data-v-0041a5be]{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-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-9ad8992e]{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-9ad8992e]{background-color:#262a2e}.navigatorBox .svgBox[data-v-9ad8992e]{position:absolute;left:0;transform-origin:left top}.navigatorBox .windowBox[data-v-9ad8992e]{position:absolute;border:2px solid #ee4545;background-color:rgba(238,69,69,.2)}.navigatorBox .windowBox.withTransition[data-v-9ad8992e]{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}.box[data-v-2896c4df]{padding:10px;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.box.isDark .formulaList .formulaItem .overview[data-v-2896c4df],.box.isDark .formulaList .formulaItem .text[data-v-2896c4df],.box.isDark .title[data-v-2896c4df]{color:#fff}.box.isDark .formulaList .formulaItem .text[data-v-2896c4df]{background-color:#363b3f}.box.isDark[data-v-2896c4df] .el-textarea__inner{background-color:transparent;color:#fff}.box .title[data-v-2896c4df]{font-size:16px;font-weight:500;color:#333;margin:10px 0;flex-shrink:0}.box .formulaInputBox[data-v-2896c4df]{flex-shrink:0}.box .formulaList[data-v-2896c4df]{height:100%;overflow-y:auto}.box .formulaList .formulaItem[data-v-2896c4df]{position:relative;display:flex;overflow:hidden;align-items:center;border:1px solid #dcdfe6;border-bottom:none}.box .formulaList .formulaItem[data-v-2896c4df]:last-of-type{border-bottom:1px solid #dcdfe6}.box .formulaList .formulaItem .overview[data-v-2896c4df],.box .formulaList .formulaItem .text[data-v-2896c4df]{width:50%;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0}.box .formulaList .formulaItem .overview[data-v-2896c4df]{padding:10px 0;border-right:none}.box .formulaList .formulaItem .text[data-v-2896c4df]{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}.el-select-dropdown__item.selected .borderLine{background-color:#409eff}.nodeOuterFrameContainer[data-v-3d37fbd4]{position:fixed;transform:translate(-12px,-12px)}.nodeOuterFrameContainer.isDark .panel[data-v-3d37fbd4]{background-color:#262a2e;border-left-color:hsla(0,0%,100%,.1)}.nodeOuterFrameContainer.isDark .panel .panelHeader .name[data-v-3d37fbd4]{color:#fff}.nodeOuterFrameContainer.isDark .panel .panelBody .row .rowItem .name[data-v-3d37fbd4]{color:hsla(0,0%,100%,.6)}.nodeOuterFrameContainer .btn[data-v-3d37fbd4]{width:24px;height:24px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.nodeOuterFrameContainer .panel[data-v-3d37fbd4]{position:absolute;left:0;top:24px;background-color:#fff;border-radius:5px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06);width:250px;padding:12px}.nodeOuterFrameContainer .panel .panelHeader[data-v-3d37fbd4]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.nodeOuterFrameContainer .panel .panelHeader .name[data-v-3d37fbd4]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:rgba(26,26,26,.9)}.nodeOuterFrameContainer .panel .panelHeader .deleteBtn[data-v-3d37fbd4]{display:flex;align-items:center;color:#909090;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.nodeOuterFrameContainer .panel .panelHeader .deleteBtn .iconfont[data-v-3d37fbd4]{margin-left:2px;font-size:14px}.nodeOuterFrameContainer .panel .panelBody .row[data-v-3d37fbd4]{display:flex;justify-content:space-between;margin-bottom:10px}.nodeOuterFrameContainer .panel .panelBody .row[data-v-3d37fbd4]:last-of-type{margin-bottom:0}.nodeOuterFrameContainer .panel .panelBody .row .rowItem[data-v-3d37fbd4]{display:flex;align-items:center}.nodeOuterFrameContainer .panel .panelBody .row .rowItem .name[data-v-3d37fbd4]{font-size:12px;margin-right:10px;white-space:nowrap}.nodeOuterFrameContainer .panel .panelBody .row .rowItem .block[data-v-3d37fbd4]{display:inline-block;width:20px;height:20px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.borderLine[data-v-3d37fbd4]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-3d37fbd4]{background-color:#fff}.nodeTagStyleContainer[data-v-512d6c78]{position:fixed;width:260px;padding:12px;background-color:#fff;border-radius:5px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.nodeTagStyleContainer.isDark[data-v-512d6c78]{background-color:#262a2e;border-left-color:hsla(0,0%,100%,.1)}.nodeTagStyleContainer .row[data-v-512d6c78]{display:flex;justify-content:space-between;margin-bottom:10px}.nodeTagStyleContainer .row[data-v-512d6c78]:last-of-type{margin-bottom:0}.nodeTagStyleContainer .row .colorItem[data-v-512d6c78]{display:inline-block;width:20px;height:20px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.nodeTagStyleContainer .row .colorItemBox[data-v-512d6c78]{height:20px;cursor:pointer}.nodeTagStyleContainer .row .colorItemBox .colorTriggerBtn[data-v-512d6c78]{display:flex;flex-direction:column;align-items:center;justify-content:center}.nodeTagStyleContainer .row .colorItemBox .colorTriggerBtn .colorItem[data-v-512d6c78]{height:5px}.nodeTagStyleContainer .row .deleteBtn[data-v-512d6c78]{white-space:nowrap;display:flex;align-items:center;margin-left:5px;cursor:pointer;color:#9aa5b8;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.nodeTagStyleContainer .row .deleteBtn[data-v-512d6c78]:hover{color:#eb5555}.nodeTagStyleContainer .row .deleteBtn .iconfont[data-v-512d6c78]{font-size:12px;margin-right:2px}.editContainer[data-v-7b2b849b]{position:fixed;left:0;right:0;top:0;bottom:0}.editContainer .dragMask[data-v-7b2b849b]{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-7b2b849b]{pointer-events:none;font-weight:700}.editContainer .mindMapContainer[data-v-7b2b849b]{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-11f00eda]{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-11f00eda]::-webkit-scrollbar{width:7px;height:7px}.noteContentViewer[data-v-11f00eda]::-webkit-scrollbar-thumb{border-radius:7px;background-color:rgba(0,0,0,.3);cursor:pointer}.noteContentViewer[data-v-11f00eda]::-webkit-scrollbar-track{box-shadow:none;background:transparent;display:none}.navigatorBox[data-v-45acd816]{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-45acd816]{background-color:#262a2e}.navigatorBox .svgBox[data-v-45acd816]{position:absolute;left:0;transform-origin:left top}.navigatorBox .windowBox[data-v-45acd816]{position:absolute;border:2px solid #ee4545;background-color:rgba(238,69,69,.2)}.navigatorBox .windowBox.withTransition[data-v-45acd816]{transition:all .3s}.sidebarTriggerContainer[data-v-5ac1b955]{position:fixed;right:-60px;margin-top:110px;transition:all .3s;top:50%;transform:translateY(-50%)}.sidebarTriggerContainer.isDark .trigger[data-v-5ac1b955]{background-color:#262a2e}.sidebarTriggerContainer.isDark .trigger .triggerItem[data-v-5ac1b955]{color:hsla(0,0%,100%,.6)}.sidebarTriggerContainer.isDark .trigger .triggerItem[data-v-5ac1b955]:hover{background-color:hsla(0,0%,100%,.05)}.sidebarTriggerContainer.show[data-v-5ac1b955]{right:0}.sidebarTriggerContainer.hasActive[data-v-5ac1b955]{right:305px}.sidebarTriggerContainer .toggleShowBtn[data-v-5ac1b955]{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-5ac1b955]{left:-8px}.sidebarTriggerContainer .toggleShowBtn.hide span[data-v-5ac1b955]{transform:rotate(180deg)}.sidebarTriggerContainer .toggleShowBtn[data-v-5ac1b955]:hover{left:-18px}.sidebarTriggerContainer .toggleShowBtn span[data-v-5ac1b955]{color:#fff;transition:all .1s}.sidebarTriggerContainer .trigger[data-v-5ac1b955]{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-5ac1b955]{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-5ac1b955]:hover{background-color:#ededed}.sidebarTriggerContainer .trigger .triggerItem.active[data-v-5ac1b955]{color:#409eff;font-weight:700}.sidebarTriggerContainer .trigger .triggerItem .triggerIcon[data-v-5ac1b955]{font-size:18px;margin-bottom:5px}.sidebarTriggerContainer .trigger .triggerItem .triggerName[data-v-5ac1b955]{font-size:13px}.customNodeContent[data-v-6ef61ceb]{padding:10px;cursor:pointer}.searchContainer[data-v-6a80a287]{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-6a80a287]{background-color:#363b3f}.searchContainer.isDark .closeBtnBox[data-v-6a80a287]{color:#fff;background-color:#363b3f}.searchContainer.show[data-v-6a80a287]{right:20px}.searchContainer .btnList[data-v-6a80a287]{display:flex;justify-content:flex-end}.searchContainer .closeBtnBox[data-v-6a80a287]{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-6a80a287]{font-size:16px}.searchContainer .searchInputBox[data-v-6a80a287]{position:relative}.searchContainer .searchInputBox .searchInfo[data-v-6a80a287]{position:absolute;right:70px;top:50%;transform:translateY(-50%);color:#909090;font-size:14px}.searchContainer .searchResultList[data-v-6a80a287]{position:absolute;left:0;top:100%;width:100%;background-color:#fff;box-shadow:0 4px 16px 0 rgba(0,0,0,.1);border-radius:12px;margin-top:5px;overflow-y:auto;padding:12px 0}.searchContainer .searchResultList .searchResultItem[data-v-6a80a287]{height:30px;line-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 12px;font-size:14px;cursor:pointer;position:relative;padding-left:22px}.searchContainer .searchResultList .searchResultItem[data-v-6a80a287]:before{content:"";position:absolute;left:10px;top:50%;transform:translateY(-50%);width:5px;height:5px;background-color:#606266;border-radius:50%}.searchContainer .searchResultList .searchResultItem[data-v-6a80a287]:hover{background-color:#f2f4f7}.searchContainer .searchResultList .searchResultItem[data-v-6a80a287] .match{color:#409eff;font-weight:700}.searchContainer .searchResultList .empty[data-v-6a80a287]{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.searchContainer .searchResultList .empty .iconfont[data-v-6a80a287]{font-size:50px;margin-bottom:20px}.searchContainer .searchResultList .empty .text[data-v-6a80a287]{font-size:14px;color:rgba(26,26,26,.8)}.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}.box[data-v-0ccdef9a]{padding:10px;width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden}.box.isDark .formulaList .formulaItem .overview[data-v-0ccdef9a],.box.isDark .formulaList .formulaItem .text[data-v-0ccdef9a],.box.isDark .title[data-v-0ccdef9a]{color:#fff}.box.isDark .formulaList .formulaItem .text[data-v-0ccdef9a]{background-color:#363b3f}.box.isDark[data-v-0ccdef9a] .el-textarea__inner{background-color:transparent;color:#fff}.box .title[data-v-0ccdef9a]{font-size:16px;font-weight:500;color:#333;margin:10px 0;flex-shrink:0}.box .formulaInputBox[data-v-0ccdef9a]{flex-shrink:0}.box .formulaList[data-v-0ccdef9a]{height:100%;overflow-y:auto}.box .formulaList .formulaItem[data-v-0ccdef9a]{position:relative;display:flex;overflow:hidden;align-items:center;border:1px solid #dcdfe6;border-bottom:none}.box .formulaList .formulaItem[data-v-0ccdef9a]:last-of-type{border-bottom:1px solid #dcdfe6}.box .formulaList .formulaItem .overview[data-v-0ccdef9a],.box .formulaList .formulaItem .text[data-v-0ccdef9a]{width:50%;overflow:hidden;display:flex;justify-content:center;align-items:center;flex-shrink:0}.box .formulaList .formulaItem .overview[data-v-0ccdef9a]{padding:10px 0;border-right:none}.box .formulaList .formulaItem .text[data-v-0ccdef9a]{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}.el-select-dropdown__item.selected .borderLine{background-color:#409eff}.nodeOuterFrameContainer[data-v-3d37fbd4]{position:fixed;transform:translate(-12px,-12px)}.nodeOuterFrameContainer.isDark .panel[data-v-3d37fbd4]{background-color:#262a2e;border-left-color:hsla(0,0%,100%,.1)}.nodeOuterFrameContainer.isDark .panel .panelHeader .name[data-v-3d37fbd4]{color:#fff}.nodeOuterFrameContainer.isDark .panel .panelBody .row .rowItem .name[data-v-3d37fbd4]{color:hsla(0,0%,100%,.6)}.nodeOuterFrameContainer .btn[data-v-3d37fbd4]{width:24px;height:24px;background-color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.nodeOuterFrameContainer .panel[data-v-3d37fbd4]{position:absolute;left:0;top:24px;background-color:#fff;border-radius:5px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06);width:250px;padding:12px}.nodeOuterFrameContainer .panel .panelHeader[data-v-3d37fbd4]{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.nodeOuterFrameContainer .panel .panelHeader .name[data-v-3d37fbd4]{font-size:16px;font-family:PingFangSC-Medium,PingFang SC;font-weight:500;color:rgba(26,26,26,.9)}.nodeOuterFrameContainer .panel .panelHeader .deleteBtn[data-v-3d37fbd4]{display:flex;align-items:center;color:#909090;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.nodeOuterFrameContainer .panel .panelHeader .deleteBtn .iconfont[data-v-3d37fbd4]{margin-left:2px;font-size:14px}.nodeOuterFrameContainer .panel .panelBody .row[data-v-3d37fbd4]{display:flex;justify-content:space-between;margin-bottom:10px}.nodeOuterFrameContainer .panel .panelBody .row[data-v-3d37fbd4]:last-of-type{margin-bottom:0}.nodeOuterFrameContainer .panel .panelBody .row .rowItem[data-v-3d37fbd4]{display:flex;align-items:center}.nodeOuterFrameContainer .panel .panelBody .row .rowItem .name[data-v-3d37fbd4]{font-size:12px;margin-right:10px;white-space:nowrap}.nodeOuterFrameContainer .panel .panelBody .row .rowItem .block[data-v-3d37fbd4]{display:inline-block;width:20px;height:20px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.borderLine[data-v-3d37fbd4]{display:inline-block;width:100%;background-color:#000}.borderLine.isDark[data-v-3d37fbd4]{background-color:#fff}.nodeTagStyleContainer[data-v-512d6c78]{position:fixed;width:260px;padding:12px;background-color:#fff;border-radius:5px;box-shadow:0 2px 16px 0 rgba(0,0,0,.06);border:1px solid rgba(0,0,0,.06)}.nodeTagStyleContainer.isDark[data-v-512d6c78]{background-color:#262a2e;border-left-color:hsla(0,0%,100%,.1)}.nodeTagStyleContainer .row[data-v-512d6c78]{display:flex;justify-content:space-between;margin-bottom:10px}.nodeTagStyleContainer .row[data-v-512d6c78]:last-of-type{margin-bottom:0}.nodeTagStyleContainer .row .colorItem[data-v-512d6c78]{display:inline-block;width:20px;height:20px;border:1px solid #dcdfe6;border-radius:4px;cursor:pointer}.nodeTagStyleContainer .row .colorItemBox[data-v-512d6c78]{height:20px;cursor:pointer}.nodeTagStyleContainer .row .colorItemBox .colorTriggerBtn[data-v-512d6c78]{display:flex;flex-direction:column;align-items:center;justify-content:center}.nodeTagStyleContainer .row .colorItemBox .colorTriggerBtn .colorItem[data-v-512d6c78]{height:5px}.nodeTagStyleContainer .row .deleteBtn[data-v-512d6c78]{white-space:nowrap;display:flex;align-items:center;margin-left:5px;cursor:pointer;color:#9aa5b8;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.nodeTagStyleContainer .row .deleteBtn[data-v-512d6c78]:hover{color:#eb5555}.nodeTagStyleContainer .row .deleteBtn .iconfont[data-v-512d6c78]{font-size:12px;margin-right:2px}.editContainer[data-v-717ac951]{position:fixed;left:0;right:0;top:0;bottom:0}.editContainer .dragMask[data-v-717ac951]{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-717ac951]{pointer-events:none;font-weight:700}.editContainer .mindMapContainer[data-v-717ac951]{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/css/chunk-vendors.css b/dist/css/chunk-vendors.css index 1ad087f6..45868660 100644 --- a/dist/css/chunk-vendors.css +++ b/dist/css/chunk-vendors.css @@ -1,4 +1,4 @@ -.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@font-face{font-family:element-icons;src:url(../fonts/element-icons.woff) format("woff"),url(../fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-dialog,.el-pager li{-webkit-box-sizing:border-box}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled):before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item,.el-menu-item{font-size:14px;padding:0 20px;cursor:pointer}.el-dropdown-menu__item{list-style:none;line-height:36px;margin:0;color:#606266;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-breadcrumb__item:last-child .el-breadcrumb__separator,.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--collapse .el-submenu,.el-menu-item{position:relative}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;list-style:none}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{color:#303133;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-radio-button__inner,.el-submenu__title{-webkit-box-sizing:border-box;position:relative;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px #409eff}.el-picker-panel,.el-popover,.el-select-dropdown,.el-table-filter,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-input__prefix,.el-input__suffix{-webkit-transition:all .3s;color:#c0c4cc}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;transition:transform .3s;transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;transform:rotate(180deg);border-radius:100%;color:#c0c4cc;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-range-editor.is-active,.el-range-editor.is-active:hover,.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;transform:translateY(-50%);display:flex;align-items:center;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:flex;max-width:100%;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#f5f7fa}.el-table .el-table__cell{padding:12px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#fff}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#409eff}.el-table th.el-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-date-table td,.el-table-filter,.el-table .cell{-webkit-box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th.el-table__cell,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell,.el-table--striped .el-table__body tr.el-table__row--striped.selection-row td.el-table__cell{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.selection-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.selection-row>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#f5f7fa}.el-table__body tr.current-row>td.el-table__cell,.el-table__body tr.selection-row>td.el-table__cell{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:#409eff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409eff}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#409eff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409eff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:inline-flex;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover,.el-cascader__dropdown,.el-color-picker__panel,.el-message-box,.el-notification{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__active-bar,.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-col-offset-0,.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-cascader-menu:last-child .el-cascader-node,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-button-group>.el-button:not(:last-child),.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content:hover,.el-upload-list__item:hover{background-color:#f5f7fa}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active,.el-upload iframe{opacity:0}.el-carousel__arrow--right,.el-notification.right{right:16px}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;overflow:hidden}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;transform:translateX(100%)}.el-notification-fade-enter.left{left:0;transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-button-group:after,.el-button-group:before,.el-color-dropdown__main-wrapper:after,.el-link.is-underline:hover:after,.el-page-header__left:after,.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-transfer-panel .el-transfer-panel__footer:after,.el-upload-cover:after,.el-upload-list--picture-card .el-upload-list__item-actions:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:normal}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;transition:.2s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-12,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row,.el-upload-dragger,.el-upload-list__item{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{justify-content:center}.el-row--flex.is-justify-end{justify-content:flex-end}.el-row--flex.is-justify-space-between{justify-content:space-between}.el-row--flex.is-justify-space-around{justify-content:space-around}.el-row--flex.is-align-top{align-items:flex-start}.el-row--flex.is-align-middle{align-items:center}.el-row--flex.is-align-bottom{align-items:flex-end}[class*=el-col-]{float:left;box-sizing:border-box}.el-col-0{width:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-badge__content,.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-card__header,.el-message,.el-step__icon{-webkit-box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:#edf2fc;transition:opacity .3s,transform .4s,top .4s;overflow:hidden;padding:15px 15px 15px 20px;display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;box-sizing:border-box}.el-card__body,.el-main{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#fff;transition:.15s ease-out}.el-step.is-horizontal,.el-step__icon-inner{display:inline-block}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;position:absolute;top:0;left:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__search-input,.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-cascader,.el-tag{display:inline-block}.el-popper .popper__arrow{border-width:6px;filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409eff;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409eff}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#409eff;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#409eff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409eff}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;transform:scale(.7)}.el-cascader{position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{transition:transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#409eff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__icon,.el-input,.el-textarea{display:inline-block;width:100%}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{font-size:12px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{color:#fff;text-align:center}.el-input__prefix,.el-input__suffix{position:absolute;top:0;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-input__inner,.el-textarea__inner,.el-transfer-panel{-webkit-box-sizing:border-box}.el-textarea{position:relative;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:#909399;font-size:12px}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input,.el-input__inner{font-size:inherit}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;color:#606266;display:inline-block;height:40px;line-height:40px;outline:0;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{height:100%;right:5px;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{height:100%;left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-image-viewer__btn,.el-image__preview,.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-button-group>.el-button+.el-button,.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-divider__text,.el-image__error,.el-link,.el-timeline,.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer,.el-empty,.el-result{-webkit-box-orient:vertical}.el-container.is-vertical{flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{box-sizing:border-box;flex-shrink:0}.el-aside,.el-main{overflow:auto}.el-main{display:block;flex:1;flex-basis:auto}.el-footer,.el-main{box-sizing:border-box}.el-footer{padding:0 20px;flex-shrink:0}.el-timeline{margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:flex;justify-content:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409eff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0;font-weight:500}.el-link.is-underline:hover:after{position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409eff}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409eff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409eff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#409eff}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;justify-content:center;align-items:center;color:#c0c4cc;vertical-align:middle}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-button,.el-checkbox,.el-checkbox-button__inner,.el-empty__image img,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;top:50%}.el-image-viewer__prev{transform:translateY(-50%);left:40px}.el-image-viewer__next{transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in .3s}.viewer-fade-leave-active{animation:viewer-fade-out .3s}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button,.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini{font-size:12px;border-radius:3px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button-group .el-button--danger:last-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:last-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:last-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:last-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:last-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child),.el-button-group>.el-dropdown>.el-button{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:first-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:first-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:first-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:first-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-right-color:hsla(0,0%,100%,.5)}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0}.el-calendar{background-color:#fff}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-ms-flexbox}.el-calendar__title{color:#000;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#409eff}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-avatar,.el-cascader-panel,.el-radio,.el-radio--medium.is-bordered .el-radio__label,.el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;height:40px}.el-cascader-menu,.el-cascader-menu__list,.el-radio__inner{-webkit-box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px #409eff}.el-radio__label{padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:flex;border-radius:4px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409eff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-empty__image img,.el-empty__image svg{vertical-align:top;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rtl-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rtl-drawer-out{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes ltr-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ltr-drawer-out{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes ttb-drawer-in{0%{transform:translateY(-100%)}to{transform:translate(0)}}@keyframes ttb-drawer-out{0%{transform:translate(0)}to{transform:translateY(-100%)}}@keyframes btt-drawer-in{0%{transform:translateY(100%)}to{transform:translate(0)}}@keyframes btt-drawer-out{0%{transform:translate(0)}to{transform:translateY(100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#fff;display:flex;flex-direction:column;box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{width:100%;left:0;right:0}.el-drawer__container{position:relative;top:0;bottom:0;height:100%}.el-drawer-fade-enter-active{animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-statistic{width:100%;box-sizing:border-box;margin:0;padding:0;color:#000;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum";text-align:center}.el-statistic .head{margin-bottom:4px;color:#606266;font-size:13px}.el-statistic .con{font-family:Sans-serif;display:flex;justify-content:center;align-items:center;color:#303133}.el-statistic .con .number{font-size:20px;padding:0 4px}.el-statistic .con span{display:inline-block;margin:0;line-height:100%}.el-popconfirm__main,.el-skeleton__image{display:-ms-flexbox;-webkit-box-align:center;display:-webkit-box}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#dcdde0;width:22%;height:22%}.el-empty{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#dcdde0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom,.el-result__title{margin-top:20px}.el-descriptions{box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#fff}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #ebeef5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:inline-flex;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{flex:1}.el-descriptions-item__label.has-colon:after{content:":";position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67c23a}.el-result .icon-error{fill:#f56c6c}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#e6a23c} +@font-face{font-family:element-icons;src:url(../fonts/element-icons.woff) format("woff"),url(../fonts/element-icons.ttf) format("truetype");font-weight:400;font-display:"auto";font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-ice-cream-round:before{content:"\e6a0"}.el-icon-ice-cream-square:before{content:"\e6a3"}.el-icon-lollipop:before{content:"\e6a4"}.el-icon-potato-strips:before{content:"\e6a5"}.el-icon-milk-tea:before{content:"\e6a6"}.el-icon-ice-drink:before{content:"\e6a7"}.el-icon-ice-tea:before{content:"\e6a9"}.el-icon-coffee:before{content:"\e6aa"}.el-icon-orange:before{content:"\e6ab"}.el-icon-pear:before{content:"\e6ac"}.el-icon-apple:before{content:"\e6ad"}.el-icon-cherry:before{content:"\e6ae"}.el-icon-watermelon:before{content:"\e6af"}.el-icon-grape:before{content:"\e6b0"}.el-icon-refrigerator:before{content:"\e6b1"}.el-icon-goblet-square-full:before{content:"\e6b2"}.el-icon-goblet-square:before{content:"\e6b3"}.el-icon-goblet-full:before{content:"\e6b4"}.el-icon-goblet:before{content:"\e6b5"}.el-icon-cold-drink:before{content:"\e6b6"}.el-icon-coffee-cup:before{content:"\e6b8"}.el-icon-water-cup:before{content:"\e6b9"}.el-icon-hot-water:before{content:"\e6ba"}.el-icon-ice-cream:before{content:"\e6bb"}.el-icon-dessert:before{content:"\e6bc"}.el-icon-sugar:before{content:"\e6bd"}.el-icon-tableware:before{content:"\e6be"}.el-icon-burger:before{content:"\e6bf"}.el-icon-knife-fork:before{content:"\e6c1"}.el-icon-fork-spoon:before{content:"\e6c2"}.el-icon-chicken:before{content:"\e6c3"}.el-icon-food:before{content:"\e6c4"}.el-icon-dish-1:before{content:"\e6c5"}.el-icon-dish:before{content:"\e6c6"}.el-icon-moon-night:before{content:"\e6ee"}.el-icon-moon:before{content:"\e6f0"}.el-icon-cloudy-and-sunny:before{content:"\e6f1"}.el-icon-partly-cloudy:before{content:"\e6f2"}.el-icon-cloudy:before{content:"\e6f3"}.el-icon-sunny:before{content:"\e6f6"}.el-icon-sunset:before{content:"\e6f7"}.el-icon-sunrise-1:before{content:"\e6f8"}.el-icon-sunrise:before{content:"\e6f9"}.el-icon-heavy-rain:before{content:"\e6fa"}.el-icon-lightning:before{content:"\e6fb"}.el-icon-light-rain:before{content:"\e6fc"}.el-icon-wind-power:before{content:"\e6fd"}.el-icon-baseball:before{content:"\e712"}.el-icon-soccer:before{content:"\e713"}.el-icon-football:before{content:"\e715"}.el-icon-basketball:before{content:"\e716"}.el-icon-ship:before{content:"\e73f"}.el-icon-truck:before{content:"\e740"}.el-icon-bicycle:before{content:"\e741"}.el-icon-mobile-phone:before{content:"\e6d3"}.el-icon-service:before{content:"\e6d4"}.el-icon-key:before{content:"\e6e2"}.el-icon-unlock:before{content:"\e6e4"}.el-icon-lock:before{content:"\e6e5"}.el-icon-watch:before{content:"\e6fe"}.el-icon-watch-1:before{content:"\e6ff"}.el-icon-timer:before{content:"\e702"}.el-icon-alarm-clock:before{content:"\e703"}.el-icon-map-location:before{content:"\e704"}.el-icon-delete-location:before{content:"\e705"}.el-icon-add-location:before{content:"\e706"}.el-icon-location-information:before{content:"\e707"}.el-icon-location-outline:before{content:"\e708"}.el-icon-location:before{content:"\e79e"}.el-icon-place:before{content:"\e709"}.el-icon-discover:before{content:"\e70a"}.el-icon-first-aid-kit:before{content:"\e70b"}.el-icon-trophy-1:before{content:"\e70c"}.el-icon-trophy:before{content:"\e70d"}.el-icon-medal:before{content:"\e70e"}.el-icon-medal-1:before{content:"\e70f"}.el-icon-stopwatch:before{content:"\e710"}.el-icon-mic:before{content:"\e711"}.el-icon-copy-document:before{content:"\e718"}.el-icon-full-screen:before{content:"\e719"}.el-icon-switch-button:before{content:"\e71b"}.el-icon-aim:before{content:"\e71c"}.el-icon-crop:before{content:"\e71d"}.el-icon-odometer:before{content:"\e71e"}.el-icon-time:before{content:"\e71f"}.el-icon-bangzhu:before{content:"\e724"}.el-icon-close-notification:before{content:"\e726"}.el-icon-microphone:before{content:"\e727"}.el-icon-turn-off-microphone:before{content:"\e728"}.el-icon-position:before{content:"\e729"}.el-icon-postcard:before{content:"\e72a"}.el-icon-message:before{content:"\e72b"}.el-icon-chat-line-square:before{content:"\e72d"}.el-icon-chat-dot-square:before{content:"\e72e"}.el-icon-chat-dot-round:before{content:"\e72f"}.el-icon-chat-square:before{content:"\e730"}.el-icon-chat-line-round:before{content:"\e731"}.el-icon-chat-round:before{content:"\e732"}.el-icon-set-up:before{content:"\e733"}.el-icon-turn-off:before{content:"\e734"}.el-icon-open:before{content:"\e735"}.el-icon-connection:before{content:"\e736"}.el-icon-link:before{content:"\e737"}.el-icon-cpu:before{content:"\e738"}.el-icon-thumb:before{content:"\e739"}.el-icon-female:before{content:"\e73a"}.el-icon-male:before{content:"\e73b"}.el-icon-guide:before{content:"\e73c"}.el-icon-news:before{content:"\e73e"}.el-icon-price-tag:before{content:"\e744"}.el-icon-discount:before{content:"\e745"}.el-icon-wallet:before{content:"\e747"}.el-icon-coin:before{content:"\e748"}.el-icon-money:before{content:"\e749"}.el-icon-bank-card:before{content:"\e74a"}.el-icon-box:before{content:"\e74b"}.el-icon-present:before{content:"\e74c"}.el-icon-sell:before{content:"\e6d5"}.el-icon-sold-out:before{content:"\e6d6"}.el-icon-shopping-bag-2:before{content:"\e74d"}.el-icon-shopping-bag-1:before{content:"\e74e"}.el-icon-shopping-cart-2:before{content:"\e74f"}.el-icon-shopping-cart-1:before{content:"\e750"}.el-icon-shopping-cart-full:before{content:"\e751"}.el-icon-smoking:before{content:"\e752"}.el-icon-no-smoking:before{content:"\e753"}.el-icon-house:before{content:"\e754"}.el-icon-table-lamp:before{content:"\e755"}.el-icon-school:before{content:"\e756"}.el-icon-office-building:before{content:"\e757"}.el-icon-toilet-paper:before{content:"\e758"}.el-icon-notebook-2:before{content:"\e759"}.el-icon-notebook-1:before{content:"\e75a"}.el-icon-files:before{content:"\e75b"}.el-icon-collection:before{content:"\e75c"}.el-icon-receiving:before{content:"\e75d"}.el-icon-suitcase-1:before{content:"\e760"}.el-icon-suitcase:before{content:"\e761"}.el-icon-film:before{content:"\e763"}.el-icon-collection-tag:before{content:"\e765"}.el-icon-data-analysis:before{content:"\e766"}.el-icon-pie-chart:before{content:"\e767"}.el-icon-data-board:before{content:"\e768"}.el-icon-data-line:before{content:"\e76d"}.el-icon-reading:before{content:"\e769"}.el-icon-magic-stick:before{content:"\e76a"}.el-icon-coordinate:before{content:"\e76b"}.el-icon-mouse:before{content:"\e76c"}.el-icon-brush:before{content:"\e76e"}.el-icon-headset:before{content:"\e76f"}.el-icon-umbrella:before{content:"\e770"}.el-icon-scissors:before{content:"\e771"}.el-icon-mobile:before{content:"\e773"}.el-icon-attract:before{content:"\e774"}.el-icon-monitor:before{content:"\e775"}.el-icon-search:before{content:"\e778"}.el-icon-takeaway-box:before{content:"\e77a"}.el-icon-paperclip:before{content:"\e77d"}.el-icon-printer:before{content:"\e77e"}.el-icon-document-add:before{content:"\e782"}.el-icon-document:before{content:"\e785"}.el-icon-document-checked:before{content:"\e786"}.el-icon-document-copy:before{content:"\e787"}.el-icon-document-delete:before{content:"\e788"}.el-icon-document-remove:before{content:"\e789"}.el-icon-tickets:before{content:"\e78b"}.el-icon-folder-checked:before{content:"\e77f"}.el-icon-folder-delete:before{content:"\e780"}.el-icon-folder-remove:before{content:"\e781"}.el-icon-folder-add:before{content:"\e783"}.el-icon-folder-opened:before{content:"\e784"}.el-icon-folder:before{content:"\e78a"}.el-icon-edit-outline:before{content:"\e764"}.el-icon-edit:before{content:"\e78c"}.el-icon-date:before{content:"\e78e"}.el-icon-c-scale-to-original:before{content:"\e7c6"}.el-icon-view:before{content:"\e6ce"}.el-icon-loading:before{content:"\e6cf"}.el-icon-rank:before{content:"\e6d1"}.el-icon-sort-down:before{content:"\e7c4"}.el-icon-sort-up:before{content:"\e7c5"}.el-icon-sort:before{content:"\e6d2"}.el-icon-finished:before{content:"\e6cd"}.el-icon-refresh-left:before{content:"\e6c7"}.el-icon-refresh-right:before{content:"\e6c8"}.el-icon-refresh:before{content:"\e6d0"}.el-icon-video-play:before{content:"\e7c0"}.el-icon-video-pause:before{content:"\e7c1"}.el-icon-d-arrow-right:before{content:"\e6dc"}.el-icon-d-arrow-left:before{content:"\e6dd"}.el-icon-arrow-up:before{content:"\e6e1"}.el-icon-arrow-down:before{content:"\e6df"}.el-icon-arrow-right:before{content:"\e6e0"}.el-icon-arrow-left:before{content:"\e6de"}.el-icon-top-right:before{content:"\e6e7"}.el-icon-top-left:before{content:"\e6e8"}.el-icon-top:before{content:"\e6e6"}.el-icon-bottom:before{content:"\e6eb"}.el-icon-right:before{content:"\e6e9"}.el-icon-back:before{content:"\e6ea"}.el-icon-bottom-right:before{content:"\e6ec"}.el-icon-bottom-left:before{content:"\e6ed"}.el-icon-caret-top:before{content:"\e78f"}.el-icon-caret-bottom:before{content:"\e790"}.el-icon-caret-right:before{content:"\e791"}.el-icon-caret-left:before{content:"\e792"}.el-icon-d-caret:before{content:"\e79a"}.el-icon-share:before{content:"\e793"}.el-icon-menu:before{content:"\e798"}.el-icon-s-grid:before{content:"\e7a6"}.el-icon-s-check:before{content:"\e7a7"}.el-icon-s-data:before{content:"\e7a8"}.el-icon-s-opportunity:before{content:"\e7aa"}.el-icon-s-custom:before{content:"\e7ab"}.el-icon-s-claim:before{content:"\e7ad"}.el-icon-s-finance:before{content:"\e7ae"}.el-icon-s-comment:before{content:"\e7af"}.el-icon-s-flag:before{content:"\e7b0"}.el-icon-s-marketing:before{content:"\e7b1"}.el-icon-s-shop:before{content:"\e7b4"}.el-icon-s-open:before{content:"\e7b5"}.el-icon-s-management:before{content:"\e7b6"}.el-icon-s-ticket:before{content:"\e7b7"}.el-icon-s-release:before{content:"\e7b8"}.el-icon-s-home:before{content:"\e7b9"}.el-icon-s-promotion:before{content:"\e7ba"}.el-icon-s-operation:before{content:"\e7bb"}.el-icon-s-unfold:before{content:"\e7bc"}.el-icon-s-fold:before{content:"\e7a9"}.el-icon-s-platform:before{content:"\e7bd"}.el-icon-s-order:before{content:"\e7be"}.el-icon-s-cooperation:before{content:"\e7bf"}.el-icon-bell:before{content:"\e725"}.el-icon-message-solid:before{content:"\e799"}.el-icon-video-camera:before{content:"\e772"}.el-icon-video-camera-solid:before{content:"\e796"}.el-icon-camera:before{content:"\e779"}.el-icon-camera-solid:before{content:"\e79b"}.el-icon-download:before{content:"\e77c"}.el-icon-upload2:before{content:"\e77b"}.el-icon-upload:before{content:"\e7c3"}.el-icon-picture-outline-round:before{content:"\e75f"}.el-icon-picture-outline:before{content:"\e75e"}.el-icon-picture:before{content:"\e79f"}.el-icon-close:before{content:"\e6db"}.el-icon-check:before{content:"\e6da"}.el-icon-plus:before{content:"\e6d9"}.el-icon-minus:before{content:"\e6d8"}.el-icon-help:before{content:"\e73d"}.el-icon-s-help:before{content:"\e7b3"}.el-icon-circle-close:before{content:"\e78d"}.el-icon-circle-check:before{content:"\e720"}.el-icon-circle-plus-outline:before{content:"\e723"}.el-icon-remove-outline:before{content:"\e722"}.el-icon-zoom-out:before{content:"\e776"}.el-icon-zoom-in:before{content:"\e777"}.el-icon-error:before{content:"\e79d"}.el-icon-success:before{content:"\e79c"}.el-icon-circle-plus:before{content:"\e7a0"}.el-icon-remove:before{content:"\e7a2"}.el-icon-info:before{content:"\e7a1"}.el-icon-question:before{content:"\e7a4"}.el-icon-warning-outline:before{content:"\e6c9"}.el-icon-warning:before{content:"\e7a3"}.el-icon-goods:before{content:"\e7c2"}.el-icon-s-goods:before{content:"\e7b2"}.el-icon-star-off:before{content:"\e717"}.el-icon-star-on:before{content:"\e797"}.el-icon-more-outline:before{content:"\e6cc"}.el-icon-more:before{content:"\e794"}.el-icon-phone-outline:before{content:"\e6cb"}.el-icon-phone:before{content:"\e795"}.el-icon-user:before{content:"\e6e3"}.el-icon-user-solid:before{content:"\e7a5"}.el-icon-setting:before{content:"\e6ca"}.el-icon-s-tools:before{content:"\e7ac"}.el-icon-delete:before{content:"\e6d7"}.el-icon-delete-solid:before{content:"\e7c9"}.el-icon-eleme:before{content:"\e7c7"}.el-icon-platform-eleme:before{content:"\e7ca"}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-pagination{white-space:nowrap;padding:2px 5px;color:#303133;font-weight:700}.el-pagination:after,.el-pagination:before{display:table;content:""}.el-pagination:after{clear:both}.el-pagination button,.el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;box-sizing:border-box}.el-pagination .el-input__inner{text-align:center;-moz-appearance:textfield;line-height:normal}.el-pagination .el-input__suffix{right:0;transform:scale(.8)}.el-pagination .el-select .el-input{width:100px;margin:0 5px}.el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px}.el-pagination button{border:none;padding:0 6px;background:0 0}.el-pagination button:focus{outline:0}.el-pagination button:hover{color:#409eff}.el-pagination button:disabled{color:#c0c4cc;background-color:#fff;cursor:not-allowed}.el-pagination .btn-next,.el-pagination .btn-prev{background:50% no-repeat #fff;background-size:16px;cursor:pointer;margin:0;color:#303133}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700}.el-pagination .btn-prev{padding-right:12px}.el-pagination .btn-next{padding-left:12px}.el-pagination .el-pager li.disabled{color:#c0c4cc;cursor:not-allowed}.el-pager li,.el-pager li.btn-quicknext:hover,.el-pager li.btn-quickprev:hover{cursor:pointer}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li,.el-pagination--small .el-pager li.btn-quicknext,.el-pagination--small .el-pager li.btn-quickprev,.el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.el-pagination--small .arrow.disabled{visibility:hidden}.el-pagination--small .more:before,.el-pagination--small li.more:before{line-height:24px}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){height:22px;line-height:22px}.el-pagination--small .el-pagination__editor,.el-pagination--small .el-pagination__editor.el-input .el-input__inner{height:22px}.el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#606266}.el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.el-pagination__sizes .el-input .el-input__inner:hover{border-color:#409eff}.el-pagination__total{margin-right:10px;font-weight:400;color:#606266}.el-pagination__jump{margin-left:24px;font-weight:400;color:#606266}.el-pagination__jump .el-input__inner{padding:0 3px}.el-pagination__rightwrapper{float:right}.el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;box-sizing:border-box;border-radius:3px}.el-pager,.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev{padding:0}.el-dialog,.el-pager li{-webkit-box-sizing:border-box}.el-pagination__editor.el-input{width:50px}.el-pagination__editor.el-input .el-input__inner{height:28px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{margin:0 5px;background-color:#f4f4f5;color:#606266;min-width:30px;border-radius:2px}.el-pagination.is-background .btn-next.disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.disabled{color:#c0c4cc}.el-pagination.is-background .el-pager li:not(.disabled):hover{color:#409eff}.el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#409eff;color:#fff}.el-pagination.is-background.el-pagination--small .btn-next,.el-pagination.is-background.el-pagination--small .btn-prev,.el-pagination.is-background.el-pagination--small .el-pager li{margin:0 3px;min-width:22px}.el-pager,.el-pager li{vertical-align:top;margin:0;display:inline-block}.el-pager{-webkit-user-select:none;-moz-user-select:none;user-select:none;list-style:none;font-size:0}.el-pager .more:before{line-height:30px}.el-pager li{padding:0 4px;background:#fff;font-size:13px;min-width:35.5px;height:28px;line-height:28px;box-sizing:border-box;text-align:center}.el-pager li.btn-quicknext,.el-pager li.btn-quickprev{line-height:28px;color:#303133}.el-pager li.btn-quicknext.disabled,.el-pager li.btn-quickprev.disabled{color:#c0c4cc}.el-pager li.active+li{border-left:0}.el-pager li:hover{color:#409eff}.el-pager li.active{color:#409eff;cursor:default}.el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box;width:50%}.el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 10px}.el-dialog__headerbtn{position:absolute;top:20px;right:20px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.el-dialog__headerbtn .el-dialog__close{color:#909399}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:#409eff}.el-dialog__title{line-height:24px;font-size:18px;color:#303133}.el-dialog__body{padding:30px 20px;color:#606266;font-size:14px;word-break:break-all}.el-dialog__footer{padding:10px 20px 20px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px 25px 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-autocomplete{position:relative;display:inline-block}.el-autocomplete-suggestion{margin:5px 0;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px;border:1px solid #e4e7ed;box-sizing:border-box;background-color:#fff}.el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;box-sizing:border-box}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#606266;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.el-autocomplete-suggestion.is-loading li:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-dropdown{display:inline-block;position:relative;color:#606266;font-size:14px}.el-dropdown .el-button-group{display:block}.el-dropdown .el-button-group .el-button{float:none}.el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.el-dropdown .el-dropdown__caret-button:before{content:"";position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:hsla(0,0%,100%,.5)}.el-dropdown .el-dropdown__caret-button.el-button--default:before{background:rgba(220,223,230,.5)}.el-dropdown .el-dropdown__caret-button:hover:not(.is-disabled):before{top:0;bottom:0}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.el-dropdown__icon{font-size:12px;margin:0 3px}.el-dropdown .el-dropdown-selfdefine:focus:active,.el-dropdown .el-dropdown-selfdefine:focus:not(.focusing){outline-width:0}.el-dropdown [disabled]{cursor:not-allowed;color:#bbb}.el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-dropdown-menu__item,.el-menu-item{font-size:14px;padding:0 20px;cursor:pointer}.el-dropdown-menu__item{list-style:none;line-height:36px;margin:0;color:#606266;outline:0}.el-dropdown-menu__item:focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:#ecf5ff;color:#66b1ff}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #ebeef5}.el-dropdown-menu__item--divided:before{content:"";height:6px;display:block;margin:0 -20px;background-color:#fff}.el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.el-dropdown-menu--medium{padding:6px 0}.el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.el-dropdown-menu--small{padding:6px 0}.el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.el-dropdown-menu--mini{padding:3px 0}.el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.el-menu{border-right:1px solid #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0}.el-menu,.el-menu--horizontal>.el-menu-item:not(.is-disabled):focus,.el-menu--horizontal>.el-menu-item:not(.is-disabled):hover,.el-menu--horizontal>.el-submenu .el-submenu__title:hover{background-color:#fff}.el-menu:after,.el-menu:before{display:table;content:""}.el-breadcrumb__item:last-child .el-breadcrumb__separator,.el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.el-menu:after{clear:both}.el-menu.el-menu--horizontal{border-bottom:1px solid #e6e6e6}.el-menu--horizontal{border-right:none}.el-menu--horizontal>.el-menu-item{float:left;height:60px;line-height:60px;margin:0;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-submenu{float:left}.el-menu--horizontal>.el-submenu:focus,.el-menu--horizontal>.el-submenu:hover{outline:0}.el-menu--horizontal>.el-submenu:focus .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{color:#303133}.el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #409eff;color:#303133}.el-menu--horizontal>.el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#909399}.el-menu--horizontal>.el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.el-menu--collapse .el-submenu,.el-menu-item{position:relative}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-submenu__title{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px;color:#909399}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-submenu.is-active>.el-submenu__title{color:#303133}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{outline:0;color:#303133}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid #409eff;color:#303133}.el-menu--collapse{width:64px}.el-menu--collapse>.el-menu-item [class^=el-icon-],.el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.el-menu--collapse>.el-menu-item span,.el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;list-style:none}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-submenu{min-width:200px}.el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #e4e7ed;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:none}.el-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;border-radius:2px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-menu--popup-bottom-start{margin-top:5px}.el-menu--popup-right-start{margin-left:5px;margin-right:5px}.el-menu-item{color:#303133;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-radio-button__inner,.el-submenu__title{-webkit-box-sizing:border-box;position:relative;white-space:nowrap}.el-menu-item *{vertical-align:middle}.el-menu-item i{color:#909399}.el-menu-item:focus,.el-menu-item:hover{outline:0;background-color:#ecf5ff}.el-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px;vertical-align:middle}.el-menu-item.is-active{color:#409eff}.el-menu-item.is-active i{color:inherit}.el-submenu{list-style:none;margin:0;padding-left:0}.el-submenu__title{font-size:14px;color:#303133;padding:0 20px;cursor:pointer;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box}.el-submenu__title *{vertical-align:middle}.el-submenu__title i{color:#909399}.el-submenu__title:focus,.el-submenu__title:hover{outline:0;background-color:#ecf5ff}.el-submenu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu__title:hover{background-color:#ecf5ff}.el-submenu .el-menu{border:none}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-submenu.is-active .el-submenu__title{border-bottom-color:#409eff}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{transform:rotate(180deg)}.el-submenu.is-disabled .el-menu-item,.el-submenu.is-disabled .el-submenu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#909399}.el-radio-button__inner,.el-radio-group{display:inline-block;line-height:1;vertical-align:middle}.horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{transition:.2s;opacity:0}.el-radio-group{font-size:0}.el-radio-button{position:relative;display:inline-block;outline:0}.el-radio-button__inner{background:#fff;border:1px solid #dcdfe6;font-weight:500;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-radio-button__inner.is-round{padding:12px 20px}.el-radio-button__inner:hover{color:#409eff}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #409eff}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#f2f6fc}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.el-radio-button:focus:not(.is-focus):not(:active):not(.is-disabled){box-shadow:0 0 2px 2px #409eff}.el-picker-panel,.el-popover,.el-select-dropdown,.el-table-filter,.el-time-panel{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-switch{display:inline-flex;align-items:center;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.el-switch__core,.el-switch__label{display:inline-block;cursor:pointer}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{transition:.2s;height:20px;font-size:14px;font-weight:500;vertical-align:middle;color:#303133}.el-switch__label.is-active{color:#409eff}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{line-height:1;font-size:14px;display:inline-block}.el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.el-switch__core{margin:0;position:relative;width:40px;height:20px;border:1px solid #dcdfe6;outline:0;border-radius:10px;box-sizing:border-box;background:#dcdfe6;transition:border-color .3s,background-color .3s;vertical-align:middle}.el-input__prefix,.el-input__suffix{-webkit-transition:all .3s;color:#c0c4cc}.el-switch__core:after{content:"";position:absolute;top:1px;left:1px;border-radius:100%;transition:all .3s;width:16px;height:16px;background-color:#fff}.el-switch.is-checked .el-switch__core{border-color:#409eff;background-color:#409eff}.el-switch.is-checked .el-switch__core:after{left:100%;margin-left:-17px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-select-dropdown{position:absolute;z-index:1001;border:1px solid #e4e7ed;border-radius:4px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:5px 0}.el-select-dropdown.is-multiple .el-select-dropdown__item{padding-right:40px}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#409eff;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected:after{position:absolute;right:20px;font-family:element-icons;content:"\e6da";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}.el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#606266;height:34px;line-height:34px;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}.el-select-dropdown__item.hover,.el-select-dropdown__item:hover{background-color:#f5f7fa}.el-select-dropdown__item.selected{color:#409eff;font-weight:700}.el-select-group{margin:0;padding:0}.el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.el-select-group__wrap:not(:last-of-type):after{content:"";position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#e4e7ed}.el-select-group__title{padding-left:20px;font-size:12px;color:#909399;line-height:30px}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{display:inline-block;position:relative}.el-select .el-select__tags>span{display:contents}.el-select:hover .el-input__inner{border-color:#c0c4cc}.el-select .el-input__inner{cursor:pointer;padding-right:35px}.el-select .el-input__inner:focus{border-color:#409eff}.el-select .el-input .el-select__caret{color:#c0c4cc;font-size:14px;transition:transform .3s;transform:rotate(180deg);cursor:pointer}.el-select .el-input .el-select__caret.is-reverse{transform:rotate(0)}.el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;transform:rotate(180deg);border-radius:100%;color:#c0c4cc;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-select .el-input .el-select__caret.is-show-close:hover{color:#909399}.el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.el-select .el-input.is-disabled .el-input__inner:hover{border-color:#e4e7ed}.el-range-editor.is-active,.el-range-editor.is-active:hover,.el-select .el-input.is-focus .el-input__inner{border-color:#409eff}.el-select>.el-input{display:block}.el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.el-select__input.is-mini{height:14px}.el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#c0c4cc;line-height:18px;font-size:14px}.el-select__close:hover{color:#909399}.el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;transform:translateY(-50%);display:flex;align-items:center;flex-wrap:wrap}.el-select__tags-text{overflow:hidden;text-overflow:ellipsis}.el-select .el-tag{box-sizing:border-box;border-color:transparent;margin:2px 0 2px 6px;background-color:#f0f2f5;display:flex;max-width:100%;align-items:center}.el-select .el-tag__close.el-icon-close{background-color:#c0c4cc;top:0;color:#fff;flex-shrink:0}.el-select .el-tag__close.el-icon-close:hover{background-color:#909399}.el-table,.el-table__expanded-cell{background-color:#fff}.el-select .el-tag__close.el-icon-close:before{display:block;transform:translateY(.5px)}.el-table{position:relative;overflow:hidden;box-sizing:border-box;flex:1;width:100%;max-width:100%;font-size:14px;color:#606266}.el-table__empty-block{min-height:60px;text-align:center;width:100%;display:flex;justify-content:center;align-items:center}.el-table__empty-text{line-height:60px;width:50%;color:#909399}.el-table__expand-column .cell{padding:0;text-align:center}.el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;transition:transform .2s ease-in-out;height:20px}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-right:0;border-bottom:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--scrollable-x .el-table__body-wrapper{overflow-x:auto}.el-table--scrollable-y .el-table__body-wrapper{overflow-y:auto}.el-table thead{color:#909399;font-weight:500}.el-table thead.is-group th.el-table__cell{background:#f5f7fa}.el-table .el-table__cell{padding:12px 0;min-width:0;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative;text-align:left}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table--medium .el-table__cell{padding:10px 0}.el-table--small{font-size:12px}.el-table--small .el-table__cell{padding:8px 0}.el-table--mini{font-size:12px}.el-table--mini .el-table__cell{padding:6px 0}.el-table tr{background-color:#fff}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:1px solid #ebeef5}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:#fff}.el-table th.el-table__cell>.cell{display:inline-block;box-sizing:border-box;position:relative;vertical-align:middle;padding-left:10px;padding-right:10px;width:100%}.el-table th.el-table__cell>.cell.highlight{color:#409eff}.el-table th.el-table__cell.required>div:before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.el-table td.el-table__cell div{box-sizing:border-box}.el-date-table td,.el-table-filter,.el-table .cell{-webkit-box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table .cell{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.el-table--border,.el-table--group{border:1px solid #ebeef5}.el-table--border:after,.el-table--group:after,.el-table:before{content:"";position:absolute;background-color:#ebeef5;z-index:1}.el-table--border:after,.el-table--group:after{top:0;right:0;width:1px;height:100%}.el-table:before{left:0;bottom:0;width:100%;height:1px}.el-table--border{border-right:none;border-bottom:none}.el-table--border.el-loading-parent--relative{border-color:transparent}.el-table--border .el-table__cell,.el-table__body-wrapper .el-table--border.is-scrolling-left~.el-table__fixed{border-right:1px solid #ebeef5}.el-table--border .el-table__cell:first-child .cell{padding-left:10px}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:1px solid #ebeef5;border-bottom-width:1px}.el-table--border th.el-table__cell,.el-table__fixed-right-patch{border-bottom:1px solid #ebeef5}.el-table--hidden{visibility:hidden}.el-table__fixed,.el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;overflow-y:hidden;box-shadow:0 0 10px rgba(0,0,0,.12)}.el-table__fixed-right:before,.el-table__fixed:before{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#ebeef5;z-index:4}.el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff}.el-table__fixed-right{top:0;left:auto;right:0}.el-table__fixed-right .el-table__fixed-body-wrapper,.el-table__fixed-right .el-table__fixed-footer-wrapper,.el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.el-table__fixed-footer-wrapper tbody td.el-table__cell{border-top:1px solid #ebeef5;background-color:#f5f7fa;color:#606266}.el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__footer-wrapper{margin-top:-1px}.el-table__footer-wrapper td.el-table__cell{border-top:1px solid #ebeef5}.el-table__body,.el-table__footer,.el-table__header{table-layout:fixed;border-collapse:separate}.el-table__footer-wrapper,.el-table__header-wrapper{overflow:hidden}.el-table__footer-wrapper tbody td.el-table__cell,.el-table__header-wrapper tbody td.el-table__cell{background-color:#f5f7fa;color:#606266}.el-table__body-wrapper{overflow:hidden;position:relative}.el-table__body-wrapper.is-scrolling-left~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed,.el-table__body-wrapper.is-scrolling-none~.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-right~.el-table__fixed-right{box-shadow:none}.el-table__body-wrapper .el-table--border.is-scrolling-right~.el-table__fixed-right{border-left:1px solid #ebeef5}.el-table .caret-wrapper{display:inline-flex;flex-direction:column;align-items:center;height:34px;width:24px;vertical-align:middle;cursor:pointer;overflow:initial;position:relative}.el-table .sort-caret{width:0;height:0;border:5px solid transparent;position:absolute;left:7px}.el-table .sort-caret.ascending{border-bottom-color:#c0c4cc;top:5px}.el-table .sort-caret.descending{border-top-color:#c0c4cc;bottom:7px}.el-table .ascending .sort-caret.ascending{border-bottom-color:#409eff}.el-table .descending .sort-caret.descending{border-top-color:#409eff}.el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:#fafafa}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell,.el-table--striped .el-table__body tr.el-table__row--striped.selection-row td.el-table__cell{background-color:#ecf5ff}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.selection-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row.selection-row>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell{background-color:#f5f7fa}.el-table__body tr.current-row>td.el-table__cell,.el-table__body tr.selection-row>td.el-table__cell{background-color:#ecf5ff}.el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #ebeef5;z-index:10}.el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.el-table__column-filter-trigger i{color:#909399;font-size:12px;transform:scale(.75)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:#f5f7fa}.el-table--fluid-height .el-table__fixed,.el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;width:20px;line-height:20px;height:20px;text-align:center;margin-right:3px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{border:1px solid #ebeef5;border-radius:2px;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-sizing:border-box;margin:2px 0}.el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.el-table-filter__list-item:hover{background-color:#ecf5ff;color:#66b1ff}.el-table-filter__list-item.is-active{background-color:#409eff;color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid #ebeef5;padding:8px}.el-table-filter__bottom button{background:0 0;border:none;color:#606266;cursor:pointer;font-size:13px;padding:0 3px}.el-date-table.is-week-mode .el-date-table__row.current div,.el-date-table.is-week-mode .el-date-table__row:hover div,.el-date-table td.in-range div,.el-date-table td.in-range div:hover{background-color:#f2f6fc}.el-table-filter__bottom button:hover{color:#409eff}.el-table-filter__bottom button:focus{outline:0}.el-table-filter__bottom button.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{display:block;margin-right:5px;margin-bottom:8px;margin-left:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#606266}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td{width:32px;height:30px;padding:4px 0;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.el-date-table td div{height:30px;padding:3px 0;box-sizing:border-box}.el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;transform:translateX(-50%);border-radius:50%}.el-date-table td.next-month,.el-date-table td.prev-month{color:#c0c4cc}.el-date-table td.today{position:relative}.el-date-table td.today span{color:#409eff;font-weight:700}.el-date-table td.today.end-date span,.el-date-table td.today.start-date span{color:#fff}.el-date-table td.available:hover{color:#409eff}.el-date-table td.current:not(.disabled) span{color:#fff;background-color:#409eff}.el-date-table td.end-date div,.el-date-table td.start-date div{color:#fff}.el-date-table td.end-date span,.el-date-table td.start-date span{background-color:#409eff}.el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#c0c4cc}.el-date-table td.selected div{margin-left:5px;margin-right:5px;background-color:#f2f6fc;border-radius:15px}.el-date-table td.selected div:hover{background-color:#f2f6fc}.el-date-table td.selected span{background-color:#409eff;color:#fff;border-radius:15px}.el-date-table td.week{font-size:80%;color:#606266}.el-month-table,.el-year-table{font-size:12px;border-collapse:collapse}.el-date-table th{padding:5px;color:#606266;font-weight:400;border-bottom:1px solid #ebeef5}.el-month-table{margin:-1px}.el-month-table td{text-align:center;padding:8px 0;cursor:pointer}.el-month-table td div{height:48px;padding:6px 0;box-sizing:border-box}.el-month-table td.today .cell{color:#409eff;font-weight:700}.el-month-table td.today.end-date .cell,.el-month-table td.today.start-date .cell{color:#fff}.el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-month-table td.disabled .cell:hover{color:#c0c4cc}.el-month-table td .cell{width:60px;height:36px;display:block;line-height:36px;color:#606266;margin:0 auto;border-radius:18px}.el-month-table td .cell:hover{color:#409eff}.el-month-table td.in-range div,.el-month-table td.in-range div:hover{background-color:#f2f6fc}.el-month-table td.end-date div,.el-month-table td.start-date div{color:#fff}.el-month-table td.end-date .cell,.el-month-table td.start-date .cell{color:#fff;background-color:#409eff}.el-month-table td.start-date div{border-top-left-radius:24px;border-bottom-left-radius:24px}.el-month-table td.end-date div{border-top-right-radius:24px;border-bottom-right-radius:24px}.el-month-table td.current:not(.disabled) .cell{color:#409eff}.el-year-table{margin:-1px}.el-year-table .el-icon{color:#303133}.el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.el-year-table td.today .cell{color:#409eff;font-weight:700}.el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#c0c4cc}.el-year-table td.disabled .cell:hover{color:#c0c4cc}.el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#606266;margin:0 auto}.el-year-table td .cell:hover,.el-year-table td.current:not(.disabled) .cell{color:#409eff}.el-date-range-picker{width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{position:relative;text-align:center;height:28px}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{float:left;width:50%;box-sizing:border-box;margin:0;padding:16px}.el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#303133}.el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.el-date-picker{width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px;display:table;width:100%;box-sizing:border-box}.el-date-picker__header{margin:12px;text-align:center}.el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:1px solid #ebeef5}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#606266}.el-date-picker__header-label.active,.el-date-picker__header-label:hover{color:#409eff}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{max-height:200px;margin:0}.time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.time-select-item.selected:not(.disabled){color:#409eff;font-weight:700}.time-select-item.disabled{color:#e4e7ed;cursor:not-allowed}.time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.el-date-editor{position:relative;display:inline-block;text-align:left}.el-date-editor.el-input,.el-date-editor.el-input__inner{width:220px}.el-date-editor--monthrange.el-input,.el-date-editor--monthrange.el-input__inner{width:300px}.el-date-editor--daterange.el-input,.el-date-editor--daterange.el-input__inner,.el-date-editor--timerange.el-input,.el-date-editor--timerange.el-input__inner{width:350px}.el-date-editor--datetimerange.el-input,.el-date-editor--datetimerange.el-input__inner{width:400px}.el-date-editor--dates .el-input__inner{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .el-icon-circle-close{cursor:pointer}.el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#c0c4cc;float:left;line-height:32px}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#606266}.el-date-editor .el-range-input::-moz-placeholder{color:#c0c4cc}.el-date-editor .el-range-input::placeholder{color:#c0c4cc}.el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#303133}.el-date-editor .el-range__close-icon{font-size:14px;color:#c0c4cc;width:25px;display:inline-block;float:right;line-height:32px}.el-range-editor.el-input__inner{display:inline-flex;align-items:center;padding:3px 10px}.el-range-editor .el-range-input{line-height:1}.el-range-editor--medium.el-input__inner{height:36px}.el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.el-range-editor--medium .el-range-input{font-size:14px}.el-range-editor--medium .el-range__close-icon,.el-range-editor--medium .el-range__icon{line-height:28px}.el-range-editor--small.el-input__inner{height:32px}.el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.el-range-editor--small .el-range-input{font-size:13px}.el-range-editor--small .el-range__close-icon,.el-range-editor--small .el-range__icon{line-height:24px}.el-range-editor--mini.el-input__inner{height:28px}.el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.el-range-editor--mini .el-range-input{font-size:12px}.el-range-editor--mini .el-range__close-icon,.el-range-editor--mini .el-range__icon{line-height:20px}.el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:#e4e7ed}.el-range-editor.is-disabled input{background-color:#f5f7fa;color:#c0c4cc;cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:#c0c4cc}.el-range-editor.is-disabled input::placeholder{color:#c0c4cc}.el-range-editor.is-disabled .el-range-separator{color:#c0c4cc}.el-picker-panel{color:#606266;border:1px solid #e4e7ed;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{content:"";display:table;clear:both}.el-picker-panel__content{position:relative;margin:15px}.el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#606266;padding-left:12px;text-align:left;outline:0;cursor:pointer}.el-picker-panel__shortcut:hover{color:#409eff}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#409eff}.el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.el-picker-panel__icon-btn{font-size:12px;color:#303133;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.el-picker-panel__icon-btn:hover{color:#409eff}.el-picker-panel__icon-btn.is-disabled{color:#bbb}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;text-align:center;overflow:hidden}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.el-time-spinner__arrow{font-size:12px;color:#909399;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.el-time-spinner__arrow:hover{color:#409eff}.el-time-spinner__arrow.el-icon-arrow-up{top:10px}.el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__list{margin:0;list-style:none}.el-time-spinner__list:after,.el-time-spinner__list:before{content:"";display:block;width:100%;height:80px}.el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#606266}.el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.el-time-spinner__item.active:not(.disabled){color:#303133;font-weight:700}.el-time-spinner__item.disabled{color:#c0c4cc;cursor:not-allowed}.el-time-panel{margin:5px 0;border:1px solid #e4e7ed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-sizing:content-box}.el-time-panel__content{font-size:0;position:relative;overflow:hidden}.el-time-panel__content:after,.el-time-panel__content:before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #e4e7ed;border-bottom:1px solid #e4e7ed}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{padding-left:50%;margin-right:12%;margin-left:12%}.el-time-panel__content.has-seconds:after{left:66.66667%}.el-time-panel__content.has-seconds:before{padding-left:33.33333%}.el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;box-sizing:border-box}.el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#303133}.el-time-panel__btn.confirm{font-weight:800;color:#409eff}.el-time-range-picker{width:354px;overflow:visible}.el-time-range-picker__content{position:relative;text-align:center;padding:10px}.el-time-range-picker__cell{box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.el-time-range-picker__body{border-radius:2px;border:1px solid #e4e7ed}.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #ebeef5;padding:12px;z-index:2000;color:#606266;line-height:1.4;text-align:justify;font-size:14px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);word-break:break-all}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover,.el-cascader__dropdown,.el-color-picker__panel,.el-message-box,.el-notification{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-popover--plain{padding:18px 20px}.el-popover__title{color:#303133;font-size:16px;line-height:1;margin-bottom:12px}.el-popover:focus,.el-popover:focus:active,.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-popup-parent--hidden{overflow:hidden}.el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #ebeef5;font-size:18px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;backface-visibility:hidden}.el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.el-message-box__wrapper:after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.el-message-box__header{position:relative;padding:15px 15px 10px}.el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#303133}.el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-input__inner:focus,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner:focus,.el-message-box__input input.invalid,.el-message-box__input input.invalid:focus{border-color:#f56c6c}.el-message-box__headerbtn .el-message-box__close{color:#909399}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:#409eff}.el-message-box__content{padding:10px 15px;color:#606266;font-size:14px}.el-message-box__container{position:relative}.el-message-box__input{padding-top:15px}.el-message-box__status{position:absolute;top:50%;transform:translateY(-50%);font-size:24px!important}.el-message-box__status:before{padding-left:1px}.el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.el-message-box__status.el-icon-success{color:#67c23a}.el-message-box__status.el-icon-info{color:#909399}.el-message-box__status.el-icon-warning{color:#e6a23c}.el-message-box__status.el-icon-error{color:#f56c6c}.el-message-box__message{margin:0}.el-message-box__message p{margin:0;line-height:24px}.el-message-box__errormsg{color:#f56c6c;font-size:12px;min-height:18px;margin-top:2px}.el-message-box__btns{padding:5px 15px 0;text-align:right}.el-message-box__btns button:nth-child(2){margin-left:10px}.el-message-box__btns-reverse{flex-direction:row-reverse}.el-message-box--center{padding-bottom:30px}.el-message-box--center .el-message-box__header{padding-top:30px}.el-message-box--center .el-message-box__title{position:relative;display:flex;align-items:center;justify-content:center}.el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;transform:translateY(-1px)}.el-message-box--center .el-message-box__message{margin-left:0}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__content{text-align:center}.el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.msgbox-fade-enter-active{animation:msgbox-fade-in .3s}.msgbox-fade-leave-active{animation:msgbox-fade-out .3s}@keyframes msgbox-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes msgbox-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#c0c4cc}.el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.el-breadcrumb__item{float:left}.el-breadcrumb__inner{color:#606266}.el-breadcrumb__inner.is-link,.el-breadcrumb__inner a{font-weight:700;text-decoration:none;transition:color .2s cubic-bezier(.645,.045,.355,1);color:#303133}.el-breadcrumb__inner.is-link:hover,.el-breadcrumb__inner a:hover{color:#409eff;cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover{font-weight:400;color:#606266;cursor:text}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px}.el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item:after{clear:both}.el-form-item .el-form-item{margin-bottom:0}.el-form-item--mini.el-form-item,.el-form-item--small.el-form-item{margin-bottom:18px}.el-form-item .el-input__validateIcon{display:none}.el-form-item--medium .el-form-item__content,.el-form-item--medium .el-form-item__label{line-height:36px}.el-form-item--small .el-form-item__content,.el-form-item--small .el-form-item__label{line-height:32px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--mini .el-form-item__content,.el-form-item--mini .el-form-item__label{line-height:28px}.el-form-item--mini .el-form-item__error{padding-top:1px}.el-form-item__label-wrap{float:left}.el-form-item__label-wrap .el-form-item__label{display:inline-block;float:none}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#606266;line-height:40px;padding:0 12px 0 0;box-sizing:border-box}.el-form-item__content{line-height:40px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__content:after{clear:both}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:#f56c6c;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.el-form-item.is-required:not(.is-no-asterisk) .el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk)>.el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__validateIcon{color:#f56c6c}.el-form-item--feedback .el-input__validateIcon{display:inline-block}.el-tabs__header{padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#409eff;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{transform:scale(.8)}.el-tabs__new-tab:hover{color:#409eff}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#e4e7ed;z-index:1}.el-tabs__nav-wrap.is-scrollable{padding:0 20px;box-sizing:border-box}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#909399}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left;z-index:2}.el-tabs__nav.is-stretch{min-width:100%;display:flex}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{padding:0 20px;height:40px;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#303133;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:0}.el-tabs__item:focus.is-active.is-focus:not(:active){box-shadow:inset 0 0 2px 2px #409eff;border-radius:3px}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{transform:scale(.9);display:inline-block}.el-tabs--card>.el-tabs__header .el-tabs__active-bar,.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left,.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs__item .el-icon-close:hover{background-color:#c0c4cc;color:#fff}.el-tabs__item.is-active{color:#409eff}.el-tabs__item:hover{color:#409eff;cursor:pointer}.el-tabs__item.is-disabled{color:#c0c4cc;cursor:default}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header{border-bottom:1px solid #e4e7ed}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #e4e7ed;border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #e4e7ed;transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.el-tabs--border-card{background:#fff;border:1px solid #dcdfe6;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #e4e7ed;margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin-top:-1px;color:#909399}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-col-offset-0,.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#409eff;background-color:#fff;border-right-color:#dcdfe6;border-left-color:#dcdfe6}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:#409eff}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:#c0c4cc}.el-tabs--bottom .el-tabs__item.is-bottom:nth-child(2),.el-tabs--bottom .el-tabs__item.is-top:nth-child(2),.el-tabs--top .el-tabs__item.is-bottom:nth-child(2),.el-tabs--top .el-tabs__item.is-top:nth-child(2){padding-left:0}.el-tabs--bottom .el-tabs__item.is-bottom:last-child,.el-tabs--bottom .el-tabs__item.is-top:last-child,.el-tabs--top .el-tabs__item.is-bottom:last-child,.el-tabs--top .el-tabs__item.is-top:last-child{padding-right:0}.el-cascader-menu:last-child .el-cascader-node,.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--left>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top .el-tabs--right>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid #dcdfe6}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{right:auto;bottom:0}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{right:0;left:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{height:100%;width:2px;bottom:auto;top:0}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{float:none}.el-tabs--left .el-tabs__item.is-left,.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-right{display:block}.el-tabs--left .el-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.el-button-group>.el-button:not(:last-child),.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-left:none;border-right:1px solid #e4e7ed;border-bottom:none;border-top:1px solid #e4e7ed;text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid #e4e7ed;border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid #e4e7ed;border-right-color:#fff;border-left:none;border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #e4e7ed;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid #dfe4ed}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:#d1dbe5 transparent}.el-tabs--right .el-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid #e4e7ed}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid #e4e7ed;border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid #e4e7ed;border-left-color:#fff;border-right:none;border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #e4e7ed;border-left:none}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid #dfe4ed}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:#d1dbe5 transparent}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}to{transform-origin:0 0;transform:translateX(-100%);opacity:0}}.el-tree{position:relative;cursor:default;background:#fff;color:#606266}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#909399;font-size:14px}.el-tree__drop-indicator{position:absolute;left:0;right:0;height:1px;background-color:#409eff}.el-tree-node{white-space:nowrap;outline:0}.el-tree-node:focus>.el-tree-node__content{background-color:#f5f7fa}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:#409eff;color:#fff}.el-tree-node__content:hover,.el-upload-list__item:hover{background-color:#f5f7fa}.el-tree-node__content{display:flex;align-items:center;height:26px;cursor:pointer}.el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{cursor:pointer;color:#c0c4cc;font-size:12px;transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#c0c4cc}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#f0f7ff}.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:flex;align-items:center;transition:opacity .2s}.el-alert.is-light .el-alert__closebtn{color:#c0c4cc}.el-alert.is-dark .el-alert__closebtn,.el-alert.is-dark .el-alert__description{color:#fff}.el-alert.is-center{justify-content:center}.el-alert--success.is-light{background-color:#f0f9eb;color:#67c23a}.el-alert--success.is-light .el-alert__description{color:#67c23a}.el-alert--success.is-dark{background-color:#67c23a;color:#fff}.el-alert--info.is-light{background-color:#f4f4f5;color:#909399}.el-alert--info.is-dark{background-color:#909399;color:#fff}.el-alert--info .el-alert__description{color:#909399}.el-alert--warning.is-light{background-color:#fdf6ec;color:#e6a23c}.el-alert--warning.is-light .el-alert__description{color:#e6a23c}.el-alert--warning.is-dark{background-color:#e6a23c;color:#fff}.el-alert--error.is-light{background-color:#fef0f0;color:#f56c6c}.el-alert--error.is-light .el-alert__description{color:#f56c6c}.el-alert--error.is-dark{background-color:#f56c6c;color:#fff}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert .el-alert__description{font-size:12px;margin:5px 0 0}.el-alert__closebtn{font-size:12px;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.el-alert-fade-enter,.el-alert-fade-leave-active,.el-loading-fade-enter,.el-loading-fade-leave-active,.el-notification-fade-leave-active,.el-upload iframe{opacity:0}.el-carousel__arrow--right,.el-notification.right{right:16px}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-notification{display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;box-sizing:border-box;border:1px solid #ebeef5;position:fixed;background-color:#fff;box-shadow:0 2px 12px 0 rgba(0,0,0,.1);transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;overflow:hidden}.el-notification.left{left:16px}.el-notification__group{margin-left:13px;margin-right:8px}.el-notification__title{font-weight:700;font-size:16px;color:#303133;margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0;color:#606266;text-align:justify}.el-notification__content p{margin:0}.el-notification__icon{height:24px;width:24px;font-size:24px}.el-notification__closeBtn{position:absolute;top:18px;right:15px;cursor:pointer;color:#909399;font-size:16px}.el-notification__closeBtn:hover{color:#606266}.el-notification .el-icon-success{color:#67c23a}.el-notification .el-icon-error{color:#f56c6c}.el-notification .el-icon-info{color:#909399}.el-notification .el-icon-warning{color:#e6a23c}.el-notification-fade-enter.right{right:0;transform:translateX(100%)}.el-notification-fade-enter.left{left:0;transform:translateX(-100%)}.el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.el-input-number .el-input{display:block}.el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.el-input-number__decrease,.el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#606266;cursor:pointer;font-size:13px}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:#409eff}.el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#409eff}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #dcdfe6}.el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #dcdfe6}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:#e4e7ed;color:#e4e7ed}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:#e4e7ed;cursor:not-allowed}.el-input-number--medium{width:200px;line-height:34px}.el-input-number--medium .el-input-number__decrease,.el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.el-input-number--small{width:130px;line-height:30px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.el-input-number--mini{width:130px;line-height:26px}.el-input-number--mini .el-input-number__decrease,.el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.el-input-number--mini .el-input-number__decrease [class*=el-icon],.el-input-number--mini .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #dcdfe6}.el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #dcdfe6;border-radius:0 0 4px}.el-input-number.is-controls-right[class*=medium] [class*=decrease],.el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.el-input-number.is-controls-right[class*=mini] [class*=decrease],.el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.el-tooltip:focus:hover,.el-tooltip:focus:not(.focusing){outline-width:0}.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2;min-width:10px;word-wrap:break-word}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow:after{content:" ";border-width:5px}.el-button-group:after,.el-button-group:before,.el-color-dropdown__main-wrapper:after,.el-link.is-underline:hover:after,.el-page-header__left:after,.el-progress-bar__inner:after,.el-row:after,.el-row:before,.el-slider:after,.el-slider:before,.el-slider__button-wrapper:after,.el-transfer-panel .el-transfer-panel__footer:after,.el-upload-cover:after,.el-upload-list--picture-card .el-upload-list__item-actions:after{content:""}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-5px;border-top-color:#303133;border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#303133}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow:after{bottom:-5px;left:1px;border-right-color:#303133;border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#303133}.el-tooltip__popper.is-dark{background:#303133;color:#fff}.el-tooltip__popper.is-light{background:#fff;border:1px solid #303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#303133}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow:after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#303133}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow:after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#303133}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow:after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#303133}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow:after{border-right-color:#fff}.el-slider:after,.el-slider:before{display:table}.el-slider__button-wrapper .el-tooltip,.el-slider__button-wrapper:after{display:inline-block;vertical-align:middle}.el-slider:after{clear:both}.el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#e4e7ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.el-slider__runway.show-input{margin-right:160px;width:auto}.el-slider__runway.disabled{cursor:default}.el-slider__runway.disabled .el-slider__bar{background-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button{border-color:#c0c4cc}.el-slider__runway.disabled .el-slider__button-wrapper.dragging,.el-slider__runway.disabled .el-slider__button-wrapper.hover,.el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.disabled .el-slider__button.dragging,.el-slider__runway.disabled .el-slider__button.hover,.el-slider__runway.disabled .el-slider__button:hover{transform:scale(1);cursor:not-allowed}.el-slider__button-wrapper,.el-slider__stop{-webkit-transform:translateX(-50%);position:absolute}.el-slider__input{float:right;margin-top:3px;width:130px}.el-slider__input.el-input-number--mini{margin-top:5px}.el-slider__input.el-input-number--medium{margin-top:0}.el-slider__input.el-input-number--large{margin-top:-2px}.el-slider__bar{height:6px;background-color:#409eff;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.el-slider__button-wrapper{height:36px;width:36px;z-index:1001;top:-15px;transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;line-height:normal}.el-image-viewer__btn,.el-slider__button,.el-step__icon-inner{-moz-user-select:none;-ms-user-select:none}.el-slider__button-wrapper:after{height:100%}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{width:16px;height:16px;border:2px solid #409eff;background-color:#fff;border-radius:50%;transition:.2s;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{height:6px;width:6px;border-radius:100%;background-color:#fff;transform:translateX(-50%)}.el-slider__marks{top:0;left:12px;width:18px;height:100%}.el-slider__marks-text{position:absolute;transform:translateX(-50%);font-size:14px;color:#909399;margin-top:15px}.el-slider.is-vertical{position:relative}.el-slider.is-vertical .el-slider__runway{width:6px;height:100%;margin:0 16px}.el-slider.is-vertical .el-slider__bar{width:6px;height:auto;border-radius:0 0 3px 3px}.el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #dcdfe6;line-height:20px;box-sizing:border-box;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#c0c4cc}.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#409eff}.el-slider.is-vertical .el-slider__marks-text{margin-top:0;left:15px;transform:translateY(50%)}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{position:absolute;z-index:2000;background-color:hsla(0,0%,100%,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-col-pull-0,.el-col-pull-1,.el-col-pull-2,.el-col-pull-3,.el-col-pull-4,.el-col-pull-5,.el-col-pull-6,.el-col-pull-7,.el-col-pull-8,.el-col-pull-9,.el-col-pull-10,.el-col-pull-11,.el-col-pull-12,.el-col-pull-13,.el-col-pull-14,.el-col-pull-15,.el-col-pull-16,.el-col-pull-17,.el-col-pull-18,.el-col-pull-19,.el-col-pull-20,.el-col-pull-21,.el-col-pull-22,.el-col-pull-23,.el-col-pull-24,.el-col-push-0,.el-col-push-1,.el-col-push-2,.el-col-push-3,.el-col-push-4,.el-col-push-5,.el-col-push-6,.el-col-push-7,.el-col-push-8,.el-col-push-9,.el-col-push-10,.el-col-push-11,.el-col-push-12,.el-col-push-13,.el-col-push-14,.el-col-push-15,.el-col-push-16,.el-col-push-17,.el-col-push-18,.el-col-push-19,.el-col-push-20,.el-col-push-21,.el-col-push-22,.el-col-push-23,.el-col-push-24,.el-row,.el-upload-dragger,.el-upload-list__item{position:relative}.el-loading-spinner .el-loading-text{color:#409eff;margin:3px 0;font-size:14px}.el-loading-spinner .circular{height:42px;width:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#409eff;stroke-linecap:round}.el-loading-spinner i{color:#409eff}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-row{box-sizing:border-box}.el-row:after,.el-row:before{display:table}.el-row:after{clear:both}.el-row--flex{display:flex}.el-col-0,.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-justify-center{justify-content:center}.el-row--flex.is-justify-end{justify-content:flex-end}.el-row--flex.is-justify-space-between{justify-content:space-between}.el-row--flex.is-justify-space-around{justify-content:space-around}.el-row--flex.is-align-top{align-items:flex-start}.el-row--flex.is-align-middle{align-items:center}.el-row--flex.is-align-bottom{align-items:flex-end}[class*=el-col-]{float:left;box-sizing:border-box}.el-col-0{width:0}.el-col-pull-0{right:0}.el-col-push-0{left:0}.el-col-1{width:4.16667%}.el-col-offset-1{margin-left:4.16667%}.el-col-pull-1{right:4.16667%}.el-col-push-1{left:4.16667%}.el-col-2{width:8.33333%}.el-col-offset-2{margin-left:8.33333%}.el-col-pull-2{right:8.33333%}.el-col-push-2{left:8.33333%}.el-col-3{width:12.5%}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{right:12.5%}.el-col-push-3{left:12.5%}.el-col-4{width:16.66667%}.el-col-offset-4{margin-left:16.66667%}.el-col-pull-4{right:16.66667%}.el-col-push-4{left:16.66667%}.el-col-5{width:20.83333%}.el-col-offset-5{margin-left:20.83333%}.el-col-pull-5{right:20.83333%}.el-col-push-5{left:20.83333%}.el-col-6{width:25%}.el-col-offset-6{margin-left:25%}.el-col-pull-6{right:25%}.el-col-push-6{left:25%}.el-col-7{width:29.16667%}.el-col-offset-7{margin-left:29.16667%}.el-col-pull-7{right:29.16667%}.el-col-push-7{left:29.16667%}.el-col-8{width:33.33333%}.el-col-offset-8{margin-left:33.33333%}.el-col-pull-8{right:33.33333%}.el-col-push-8{left:33.33333%}.el-col-9{width:37.5%}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{right:37.5%}.el-col-push-9{left:37.5%}.el-col-10{width:41.66667%}.el-col-offset-10{margin-left:41.66667%}.el-col-pull-10{right:41.66667%}.el-col-push-10{left:41.66667%}.el-col-11{width:45.83333%}.el-col-offset-11{margin-left:45.83333%}.el-col-pull-11{right:45.83333%}.el-col-push-11{left:45.83333%}.el-col-12{width:50%}.el-col-offset-12{margin-left:50%}.el-col-pull-12{right:50%}.el-col-push-12{left:50%}.el-col-13{width:54.16667%}.el-col-offset-13{margin-left:54.16667%}.el-col-pull-13{right:54.16667%}.el-col-push-13{left:54.16667%}.el-col-14{width:58.33333%}.el-col-offset-14{margin-left:58.33333%}.el-col-pull-14{right:58.33333%}.el-col-push-14{left:58.33333%}.el-col-15{width:62.5%}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{right:62.5%}.el-col-push-15{left:62.5%}.el-col-16{width:66.66667%}.el-col-offset-16{margin-left:66.66667%}.el-col-pull-16{right:66.66667%}.el-col-push-16{left:66.66667%}.el-col-17{width:70.83333%}.el-col-offset-17{margin-left:70.83333%}.el-col-pull-17{right:70.83333%}.el-col-push-17{left:70.83333%}.el-col-18{width:75%}.el-col-offset-18{margin-left:75%}.el-col-pull-18{right:75%}.el-col-push-18{left:75%}.el-col-19{width:79.16667%}.el-col-offset-19{margin-left:79.16667%}.el-col-pull-19{right:79.16667%}.el-col-push-19{left:79.16667%}.el-col-20{width:83.33333%}.el-col-offset-20{margin-left:83.33333%}.el-col-pull-20{right:83.33333%}.el-col-push-20{left:83.33333%}.el-col-21{width:87.5%}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{right:87.5%}.el-col-push-21{left:87.5%}.el-col-22{width:91.66667%}.el-col-offset-22{margin-left:91.66667%}.el-col-pull-22{right:91.66667%}.el-col-push-22{left:91.66667%}.el-col-23{width:95.83333%}.el-col-offset-23{margin-left:95.83333%}.el-col-pull-23{right:95.83333%}.el-col-push-23{left:95.83333%}.el-col-24{width:100%}.el-col-offset-24{margin-left:100%}.el-col-pull-24{right:100%}.el-col-push-24{left:100%}@media only screen and (max-width:767px){.el-col-xs-0{display:none;width:0}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{position:relative;left:0}.el-col-xs-1{width:4.16667%}.el-col-xs-offset-1{margin-left:4.16667%}.el-col-xs-pull-1{position:relative;right:4.16667%}.el-col-xs-push-1{position:relative;left:4.16667%}.el-col-xs-2{width:8.33333%}.el-col-xs-offset-2{margin-left:8.33333%}.el-col-xs-pull-2{position:relative;right:8.33333%}.el-col-xs-push-2{position:relative;left:8.33333%}.el-col-xs-3{width:12.5%}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{position:relative;left:12.5%}.el-col-xs-4{width:16.66667%}.el-col-xs-offset-4{margin-left:16.66667%}.el-col-xs-pull-4{position:relative;right:16.66667%}.el-col-xs-push-4{position:relative;left:16.66667%}.el-col-xs-5{width:20.83333%}.el-col-xs-offset-5{margin-left:20.83333%}.el-col-xs-pull-5{position:relative;right:20.83333%}.el-col-xs-push-5{position:relative;left:20.83333%}.el-col-xs-6{width:25%}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{position:relative;left:25%}.el-col-xs-7{width:29.16667%}.el-col-xs-offset-7{margin-left:29.16667%}.el-col-xs-pull-7{position:relative;right:29.16667%}.el-col-xs-push-7{position:relative;left:29.16667%}.el-col-xs-8{width:33.33333%}.el-col-xs-offset-8{margin-left:33.33333%}.el-col-xs-pull-8{position:relative;right:33.33333%}.el-col-xs-push-8{position:relative;left:33.33333%}.el-col-xs-9{width:37.5%}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{position:relative;left:37.5%}.el-col-xs-10{width:41.66667%}.el-col-xs-offset-10{margin-left:41.66667%}.el-col-xs-pull-10{position:relative;right:41.66667%}.el-col-xs-push-10{position:relative;left:41.66667%}.el-col-xs-11{width:45.83333%}.el-col-xs-offset-11{margin-left:45.83333%}.el-col-xs-pull-11{position:relative;right:45.83333%}.el-col-xs-push-11{position:relative;left:45.83333%}.el-col-xs-12{width:50%}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{position:relative;left:50%}.el-col-xs-13{width:54.16667%}.el-col-xs-offset-13{margin-left:54.16667%}.el-col-xs-pull-13{position:relative;right:54.16667%}.el-col-xs-push-13{position:relative;left:54.16667%}.el-col-xs-14{width:58.33333%}.el-col-xs-offset-14{margin-left:58.33333%}.el-col-xs-pull-14{position:relative;right:58.33333%}.el-col-xs-push-14{position:relative;left:58.33333%}.el-col-xs-15{width:62.5%}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{position:relative;left:62.5%}.el-col-xs-16{width:66.66667%}.el-col-xs-offset-16{margin-left:66.66667%}.el-col-xs-pull-16{position:relative;right:66.66667%}.el-col-xs-push-16{position:relative;left:66.66667%}.el-col-xs-17{width:70.83333%}.el-col-xs-offset-17{margin-left:70.83333%}.el-col-xs-pull-17{position:relative;right:70.83333%}.el-col-xs-push-17{position:relative;left:70.83333%}.el-col-xs-18{width:75%}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{position:relative;left:75%}.el-col-xs-19{width:79.16667%}.el-col-xs-offset-19{margin-left:79.16667%}.el-col-xs-pull-19{position:relative;right:79.16667%}.el-col-xs-push-19{position:relative;left:79.16667%}.el-col-xs-20{width:83.33333%}.el-col-xs-offset-20{margin-left:83.33333%}.el-col-xs-pull-20{position:relative;right:83.33333%}.el-col-xs-push-20{position:relative;left:83.33333%}.el-col-xs-21{width:87.5%}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{position:relative;left:87.5%}.el-col-xs-22{width:91.66667%}.el-col-xs-offset-22{margin-left:91.66667%}.el-col-xs-pull-22{position:relative;right:91.66667%}.el-col-xs-push-22{position:relative;left:91.66667%}.el-col-xs-23{width:95.83333%}.el-col-xs-offset-23{margin-left:95.83333%}.el-col-xs-pull-23{position:relative;right:95.83333%}.el-col-xs-push-23{position:relative;left:95.83333%}.el-col-xs-24{width:100%}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;width:0}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{position:relative;left:0}.el-col-sm-1{width:4.16667%}.el-col-sm-offset-1{margin-left:4.16667%}.el-col-sm-pull-1{position:relative;right:4.16667%}.el-col-sm-push-1{position:relative;left:4.16667%}.el-col-sm-2{width:8.33333%}.el-col-sm-offset-2{margin-left:8.33333%}.el-col-sm-pull-2{position:relative;right:8.33333%}.el-col-sm-push-2{position:relative;left:8.33333%}.el-col-sm-3{width:12.5%}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{position:relative;left:12.5%}.el-col-sm-4{width:16.66667%}.el-col-sm-offset-4{margin-left:16.66667%}.el-col-sm-pull-4{position:relative;right:16.66667%}.el-col-sm-push-4{position:relative;left:16.66667%}.el-col-sm-5{width:20.83333%}.el-col-sm-offset-5{margin-left:20.83333%}.el-col-sm-pull-5{position:relative;right:20.83333%}.el-col-sm-push-5{position:relative;left:20.83333%}.el-col-sm-6{width:25%}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{position:relative;left:25%}.el-col-sm-7{width:29.16667%}.el-col-sm-offset-7{margin-left:29.16667%}.el-col-sm-pull-7{position:relative;right:29.16667%}.el-col-sm-push-7{position:relative;left:29.16667%}.el-col-sm-8{width:33.33333%}.el-col-sm-offset-8{margin-left:33.33333%}.el-col-sm-pull-8{position:relative;right:33.33333%}.el-col-sm-push-8{position:relative;left:33.33333%}.el-col-sm-9{width:37.5%}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{position:relative;left:37.5%}.el-col-sm-10{width:41.66667%}.el-col-sm-offset-10{margin-left:41.66667%}.el-col-sm-pull-10{position:relative;right:41.66667%}.el-col-sm-push-10{position:relative;left:41.66667%}.el-col-sm-11{width:45.83333%}.el-col-sm-offset-11{margin-left:45.83333%}.el-col-sm-pull-11{position:relative;right:45.83333%}.el-col-sm-push-11{position:relative;left:45.83333%}.el-col-sm-12{width:50%}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{position:relative;left:50%}.el-col-sm-13{width:54.16667%}.el-col-sm-offset-13{margin-left:54.16667%}.el-col-sm-pull-13{position:relative;right:54.16667%}.el-col-sm-push-13{position:relative;left:54.16667%}.el-col-sm-14{width:58.33333%}.el-col-sm-offset-14{margin-left:58.33333%}.el-col-sm-pull-14{position:relative;right:58.33333%}.el-col-sm-push-14{position:relative;left:58.33333%}.el-col-sm-15{width:62.5%}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{position:relative;left:62.5%}.el-col-sm-16{width:66.66667%}.el-col-sm-offset-16{margin-left:66.66667%}.el-col-sm-pull-16{position:relative;right:66.66667%}.el-col-sm-push-16{position:relative;left:66.66667%}.el-col-sm-17{width:70.83333%}.el-col-sm-offset-17{margin-left:70.83333%}.el-col-sm-pull-17{position:relative;right:70.83333%}.el-col-sm-push-17{position:relative;left:70.83333%}.el-col-sm-18{width:75%}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{position:relative;left:75%}.el-col-sm-19{width:79.16667%}.el-col-sm-offset-19{margin-left:79.16667%}.el-col-sm-pull-19{position:relative;right:79.16667%}.el-col-sm-push-19{position:relative;left:79.16667%}.el-col-sm-20{width:83.33333%}.el-col-sm-offset-20{margin-left:83.33333%}.el-col-sm-pull-20{position:relative;right:83.33333%}.el-col-sm-push-20{position:relative;left:83.33333%}.el-col-sm-21{width:87.5%}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{position:relative;left:87.5%}.el-col-sm-22{width:91.66667%}.el-col-sm-offset-22{margin-left:91.66667%}.el-col-sm-pull-22{position:relative;right:91.66667%}.el-col-sm-push-22{position:relative;left:91.66667%}.el-col-sm-23{width:95.83333%}.el-col-sm-offset-23{margin-left:95.83333%}.el-col-sm-pull-23{position:relative;right:95.83333%}.el-col-sm-push-23{position:relative;left:95.83333%}.el-col-sm-24{width:100%}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.el-col-md-0{display:none;width:0}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{position:relative;left:0}.el-col-md-1{width:4.16667%}.el-col-md-offset-1{margin-left:4.16667%}.el-col-md-pull-1{position:relative;right:4.16667%}.el-col-md-push-1{position:relative;left:4.16667%}.el-col-md-2{width:8.33333%}.el-col-md-offset-2{margin-left:8.33333%}.el-col-md-pull-2{position:relative;right:8.33333%}.el-col-md-push-2{position:relative;left:8.33333%}.el-col-md-3{width:12.5%}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{position:relative;left:12.5%}.el-col-md-4{width:16.66667%}.el-col-md-offset-4{margin-left:16.66667%}.el-col-md-pull-4{position:relative;right:16.66667%}.el-col-md-push-4{position:relative;left:16.66667%}.el-col-md-5{width:20.83333%}.el-col-md-offset-5{margin-left:20.83333%}.el-col-md-pull-5{position:relative;right:20.83333%}.el-col-md-push-5{position:relative;left:20.83333%}.el-col-md-6{width:25%}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{position:relative;left:25%}.el-col-md-7{width:29.16667%}.el-col-md-offset-7{margin-left:29.16667%}.el-col-md-pull-7{position:relative;right:29.16667%}.el-col-md-push-7{position:relative;left:29.16667%}.el-col-md-8{width:33.33333%}.el-col-md-offset-8{margin-left:33.33333%}.el-col-md-pull-8{position:relative;right:33.33333%}.el-col-md-push-8{position:relative;left:33.33333%}.el-col-md-9{width:37.5%}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{position:relative;left:37.5%}.el-col-md-10{width:41.66667%}.el-col-md-offset-10{margin-left:41.66667%}.el-col-md-pull-10{position:relative;right:41.66667%}.el-col-md-push-10{position:relative;left:41.66667%}.el-col-md-11{width:45.83333%}.el-col-md-offset-11{margin-left:45.83333%}.el-col-md-pull-11{position:relative;right:45.83333%}.el-col-md-push-11{position:relative;left:45.83333%}.el-col-md-12{width:50%}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{position:relative;left:50%}.el-col-md-13{width:54.16667%}.el-col-md-offset-13{margin-left:54.16667%}.el-col-md-pull-13{position:relative;right:54.16667%}.el-col-md-push-13{position:relative;left:54.16667%}.el-col-md-14{width:58.33333%}.el-col-md-offset-14{margin-left:58.33333%}.el-col-md-pull-14{position:relative;right:58.33333%}.el-col-md-push-14{position:relative;left:58.33333%}.el-col-md-15{width:62.5%}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{position:relative;left:62.5%}.el-col-md-16{width:66.66667%}.el-col-md-offset-16{margin-left:66.66667%}.el-col-md-pull-16{position:relative;right:66.66667%}.el-col-md-push-16{position:relative;left:66.66667%}.el-col-md-17{width:70.83333%}.el-col-md-offset-17{margin-left:70.83333%}.el-col-md-pull-17{position:relative;right:70.83333%}.el-col-md-push-17{position:relative;left:70.83333%}.el-col-md-18{width:75%}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{position:relative;left:75%}.el-col-md-19{width:79.16667%}.el-col-md-offset-19{margin-left:79.16667%}.el-col-md-pull-19{position:relative;right:79.16667%}.el-col-md-push-19{position:relative;left:79.16667%}.el-col-md-20{width:83.33333%}.el-col-md-offset-20{margin-left:83.33333%}.el-col-md-pull-20{position:relative;right:83.33333%}.el-col-md-push-20{position:relative;left:83.33333%}.el-col-md-21{width:87.5%}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{position:relative;left:87.5%}.el-col-md-22{width:91.66667%}.el-col-md-offset-22{margin-left:91.66667%}.el-col-md-pull-22{position:relative;right:91.66667%}.el-col-md-push-22{position:relative;left:91.66667%}.el-col-md-23{width:95.83333%}.el-col-md-offset-23{margin-left:95.83333%}.el-col-md-pull-23{position:relative;right:95.83333%}.el-col-md-push-23{position:relative;left:95.83333%}.el-col-md-24{width:100%}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;width:0}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{position:relative;left:0}.el-col-lg-1{width:4.16667%}.el-col-lg-offset-1{margin-left:4.16667%}.el-col-lg-pull-1{position:relative;right:4.16667%}.el-col-lg-push-1{position:relative;left:4.16667%}.el-col-lg-2{width:8.33333%}.el-col-lg-offset-2{margin-left:8.33333%}.el-col-lg-pull-2{position:relative;right:8.33333%}.el-col-lg-push-2{position:relative;left:8.33333%}.el-col-lg-3{width:12.5%}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{position:relative;left:12.5%}.el-col-lg-4{width:16.66667%}.el-col-lg-offset-4{margin-left:16.66667%}.el-col-lg-pull-4{position:relative;right:16.66667%}.el-col-lg-push-4{position:relative;left:16.66667%}.el-col-lg-5{width:20.83333%}.el-col-lg-offset-5{margin-left:20.83333%}.el-col-lg-pull-5{position:relative;right:20.83333%}.el-col-lg-push-5{position:relative;left:20.83333%}.el-col-lg-6{width:25%}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{position:relative;left:25%}.el-col-lg-7{width:29.16667%}.el-col-lg-offset-7{margin-left:29.16667%}.el-col-lg-pull-7{position:relative;right:29.16667%}.el-col-lg-push-7{position:relative;left:29.16667%}.el-col-lg-8{width:33.33333%}.el-col-lg-offset-8{margin-left:33.33333%}.el-col-lg-pull-8{position:relative;right:33.33333%}.el-col-lg-push-8{position:relative;left:33.33333%}.el-col-lg-9{width:37.5%}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{position:relative;left:37.5%}.el-col-lg-10{width:41.66667%}.el-col-lg-offset-10{margin-left:41.66667%}.el-col-lg-pull-10{position:relative;right:41.66667%}.el-col-lg-push-10{position:relative;left:41.66667%}.el-col-lg-11{width:45.83333%}.el-col-lg-offset-11{margin-left:45.83333%}.el-col-lg-pull-11{position:relative;right:45.83333%}.el-col-lg-push-11{position:relative;left:45.83333%}.el-col-lg-12{width:50%}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{position:relative;left:50%}.el-col-lg-13{width:54.16667%}.el-col-lg-offset-13{margin-left:54.16667%}.el-col-lg-pull-13{position:relative;right:54.16667%}.el-col-lg-push-13{position:relative;left:54.16667%}.el-col-lg-14{width:58.33333%}.el-col-lg-offset-14{margin-left:58.33333%}.el-col-lg-pull-14{position:relative;right:58.33333%}.el-col-lg-push-14{position:relative;left:58.33333%}.el-col-lg-15{width:62.5%}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{position:relative;left:62.5%}.el-col-lg-16{width:66.66667%}.el-col-lg-offset-16{margin-left:66.66667%}.el-col-lg-pull-16{position:relative;right:66.66667%}.el-col-lg-push-16{position:relative;left:66.66667%}.el-col-lg-17{width:70.83333%}.el-col-lg-offset-17{margin-left:70.83333%}.el-col-lg-pull-17{position:relative;right:70.83333%}.el-col-lg-push-17{position:relative;left:70.83333%}.el-col-lg-18{width:75%}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{position:relative;left:75%}.el-col-lg-19{width:79.16667%}.el-col-lg-offset-19{margin-left:79.16667%}.el-col-lg-pull-19{position:relative;right:79.16667%}.el-col-lg-push-19{position:relative;left:79.16667%}.el-col-lg-20{width:83.33333%}.el-col-lg-offset-20{margin-left:83.33333%}.el-col-lg-pull-20{position:relative;right:83.33333%}.el-col-lg-push-20{position:relative;left:83.33333%}.el-col-lg-21{width:87.5%}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{position:relative;left:87.5%}.el-col-lg-22{width:91.66667%}.el-col-lg-offset-22{margin-left:91.66667%}.el-col-lg-pull-22{position:relative;right:91.66667%}.el-col-lg-push-22{position:relative;left:91.66667%}.el-col-lg-23{width:95.83333%}.el-col-lg-offset-23{margin-left:95.83333%}.el-col-lg-pull-23{position:relative;right:95.83333%}.el-col-lg-push-23{position:relative;left:95.83333%}.el-col-lg-24{width:100%}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;width:0}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{position:relative;left:0}.el-col-xl-1{width:4.16667%}.el-col-xl-offset-1{margin-left:4.16667%}.el-col-xl-pull-1{position:relative;right:4.16667%}.el-col-xl-push-1{position:relative;left:4.16667%}.el-col-xl-2{width:8.33333%}.el-col-xl-offset-2{margin-left:8.33333%}.el-col-xl-pull-2{position:relative;right:8.33333%}.el-col-xl-push-2{position:relative;left:8.33333%}.el-col-xl-3{width:12.5%}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{position:relative;left:12.5%}.el-col-xl-4{width:16.66667%}.el-col-xl-offset-4{margin-left:16.66667%}.el-col-xl-pull-4{position:relative;right:16.66667%}.el-col-xl-push-4{position:relative;left:16.66667%}.el-col-xl-5{width:20.83333%}.el-col-xl-offset-5{margin-left:20.83333%}.el-col-xl-pull-5{position:relative;right:20.83333%}.el-col-xl-push-5{position:relative;left:20.83333%}.el-col-xl-6{width:25%}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{position:relative;left:25%}.el-col-xl-7{width:29.16667%}.el-col-xl-offset-7{margin-left:29.16667%}.el-col-xl-pull-7{position:relative;right:29.16667%}.el-col-xl-push-7{position:relative;left:29.16667%}.el-col-xl-8{width:33.33333%}.el-col-xl-offset-8{margin-left:33.33333%}.el-col-xl-pull-8{position:relative;right:33.33333%}.el-col-xl-push-8{position:relative;left:33.33333%}.el-col-xl-9{width:37.5%}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{position:relative;left:37.5%}.el-col-xl-10{width:41.66667%}.el-col-xl-offset-10{margin-left:41.66667%}.el-col-xl-pull-10{position:relative;right:41.66667%}.el-col-xl-push-10{position:relative;left:41.66667%}.el-col-xl-11{width:45.83333%}.el-col-xl-offset-11{margin-left:45.83333%}.el-col-xl-pull-11{position:relative;right:45.83333%}.el-col-xl-push-11{position:relative;left:45.83333%}.el-col-xl-12{width:50%}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{position:relative;left:50%}.el-col-xl-13{width:54.16667%}.el-col-xl-offset-13{margin-left:54.16667%}.el-col-xl-pull-13{position:relative;right:54.16667%}.el-col-xl-push-13{position:relative;left:54.16667%}.el-col-xl-14{width:58.33333%}.el-col-xl-offset-14{margin-left:58.33333%}.el-col-xl-pull-14{position:relative;right:58.33333%}.el-col-xl-push-14{position:relative;left:58.33333%}.el-col-xl-15{width:62.5%}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{position:relative;left:62.5%}.el-col-xl-16{width:66.66667%}.el-col-xl-offset-16{margin-left:66.66667%}.el-col-xl-pull-16{position:relative;right:66.66667%}.el-col-xl-push-16{position:relative;left:66.66667%}.el-col-xl-17{width:70.83333%}.el-col-xl-offset-17{margin-left:70.83333%}.el-col-xl-pull-17{position:relative;right:70.83333%}.el-col-xl-push-17{position:relative;left:70.83333%}.el-col-xl-18{width:75%}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{position:relative;left:75%}.el-col-xl-19{width:79.16667%}.el-col-xl-offset-19{margin-left:79.16667%}.el-col-xl-pull-19{position:relative;right:79.16667%}.el-col-xl-push-19{position:relative;left:79.16667%}.el-col-xl-20{width:83.33333%}.el-col-xl-offset-20{margin-left:83.33333%}.el-col-xl-pull-20{position:relative;right:83.33333%}.el-col-xl-push-20{position:relative;left:83.33333%}.el-col-xl-21{width:87.5%}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{position:relative;left:87.5%}.el-col-xl-22{width:91.66667%}.el-col-xl-offset-22{margin-left:91.66667%}.el-col-xl-pull-22{position:relative;right:91.66667%}.el-col-xl-push-22{position:relative;left:91.66667%}.el-col-xl-23{width:95.83333%}.el-col-xl-offset-23{margin-left:95.83333%}.el-col-xl-pull-23{position:relative;right:95.83333%}.el-col-xl-push-23{position:relative;left:95.83333%}.el-col-xl-24{width:100%}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{position:relative;left:100%}}.el-upload{display:inline-block;text-align:center;cursor:pointer;outline:0}.el-upload__input{display:none}.el-upload__tip{font-size:12px;color:#606266;margin-top:7px}.el-upload iframe{position:absolute;z-index:-1;top:0;left:0;filter:alpha(opacity=0)}.el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.el-upload--picture-card i{font-size:28px;color:#8c939d}.el-upload--picture-card:hover,.el-upload:focus{border-color:#409eff;color:#409eff}.el-upload:focus .el-upload-dragger{border-color:#409eff}.el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;overflow:hidden}.el-upload-dragger .el-icon-upload{font-size:67px;color:#c0c4cc;margin:40px 0 16px;line-height:50px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:1px solid #dcdfe6;margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:#606266;font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:#409eff;font-style:normal}.el-upload-dragger:hover{border-color:#409eff}.el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #409eff}.el-upload-list{margin:0;padding:0;list-style:none}.el-upload-list__item{transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#606266;line-height:1.8;margin-top:5px;box-sizing:border-box;border-radius:4px;width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item:first-child{margin-top:10px}.el-upload-list__item .el-icon-upload-success{color:#67c23a}.el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#606266}.el-upload-list__item .el-icon-close:hover{opacity:1}.el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:5px;font-size:12px;cursor:pointer;opacity:1;color:#409eff}.el-upload-list__item:hover .el-icon-close{display:inline-block}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#409eff;cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon-close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon-close-tip,.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label,.el-upload-list__item.is-success:not(.focusing):focus .el-icon-close-tip{display:none}.el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.el-upload-list__item-name{color:#606266;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;transition:color .3s;white-space:nowrap}.el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#909399;line-height:inherit}.el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#606266;display:none}.el-upload-list__item-delete:hover{color:#409eff}.el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.el-upload-list--picture-card .el-upload-list__item .el-icon-check,.el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon-close,.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s}.el-upload-list--picture-card .el-upload-list__item-actions:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.el-upload-list--picture-card .el-progress{top:50%;left:50%;transform:translate(-50%,-50%);bottom:auto;width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{overflow:hidden;z-index:0;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.el-upload-list--picture .el-upload-list__item .el-icon-check,.el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;box-shadow:none;top:-2px;right:-12px}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px;background-color:#fff}.el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 1px 1px #ccc}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.el-upload-cover:after{display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;width:100%;height:100%}.el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;transform:rotate(45deg);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.el-upload-cover__label i{font-size:12px;margin-top:11px;transform:rotate(-45deg);color:#fff}.el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);margin-top:60px}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#303133}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-progress{position:relative;line-height:1}.el-progress__text{font-size:14px;color:#606266;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;transform:translateY(-50%)}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:#67c23a}.el-progress.is-success .el-progress__text{color:#67c23a}.el-progress.is-warning .el-progress-bar__inner{background-color:#e6a23c}.el-badge__content,.el-progress.is-exception .el-progress-bar__inner{background-color:#f56c6c}.el-progress.is-warning .el-progress__text{color:#e6a23c}.el-progress.is-exception .el-progress__text{color:#f56c6c}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-card__header,.el-message,.el-step__icon{-webkit-box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:#ebeef5;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#409eff;text-align:right;border-radius:100px;line-height:1;white-space:nowrap;transition:width .6s ease}.el-progress-bar__inner:after{display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-message{min-width:380px;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#ebeef5;position:fixed;left:50%;top:20px;transform:translateX(-50%);background-color:#edf2fc;transition:opacity .3s,transform .4s,top .4s;overflow:hidden;padding:15px 15px 15px 20px;display:flex;align-items:center}.el-message.is-center{justify-content:center}.el-message.is-closable .el-message__content{padding-right:16px}.el-message p{margin:0}.el-message--info .el-message__content{color:#909399}.el-message--success{background-color:#f0f9eb;border-color:#e1f3d8}.el-message--success .el-message__content{color:#67c23a}.el-message--warning{background-color:#fdf6ec;border-color:#faecd8}.el-message--warning .el-message__content{color:#e6a23c}.el-message--error{background-color:#fef0f0;border-color:#fde2e2}.el-message--error .el-message__content{color:#f56c6c}.el-message__icon{margin-right:10px}.el-message__content{padding:0;font-size:14px;line-height:1}.el-message__content:focus{outline-width:0}.el-message__closeBtn{position:absolute;top:50%;right:15px;transform:translateY(-50%);cursor:pointer;color:#c0c4cc;font-size:16px}.el-message__closeBtn:focus{outline-width:0}.el-message__closeBtn:hover{color:#909399}.el-message .el-icon-success{color:#67c23a}.el-message .el-icon-error{color:#f56c6c}.el-message .el-icon-info{color:#909399}.el-message .el-icon-warning{color:#e6a23c}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;transform:translate(-50%,-100%)}.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-fixed{position:absolute;top:0;right:10px;transform:translateY(-50%) translateX(100%)}.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.el-badge__content--primary{background-color:#409eff}.el-badge__content--success{background-color:#67c23a}.el-badge__content--warning{background-color:#e6a23c}.el-badge__content--info{background-color:#909399}.el-badge__content--danger{background-color:#f56c6c}.el-card{border-radius:4px;border:1px solid #ebeef5;background-color:#fff;overflow:hidden;color:#303133;transition:.3s}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-card__header{padding:18px 20px;border-bottom:1px solid #ebeef5;box-sizing:border-box}.el-card__body,.el-main{padding:20px}.el-rate{height:20px;line-height:1}.el-rate:active,.el-rate:focus{outline-width:0}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:#c0c4cc;transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-step.is-vertical,.el-steps{display:-ms-flexbox}.el-rate__text{font-size:14px;vertical-align:middle}.el-steps{display:flex}.el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{height:100%;flex-flow:column}.el-step{position:relative;flex-shrink:1}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-shrink:0;flex-grow:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{color:#303133;border-color:#303133}.el-step__head.is-wait{color:#c0c4cc;border-color:#c0c4cc}.el-step__head.is-success{color:#67c23a;border-color:#67c23a}.el-step__head.is-error{color:#f56c6c;border-color:#f56c6c}.el-step__head.is-finish{color:#409eff;border-color:#409eff}.el-step__icon{position:relative;z-index:1;display:inline-flex;justify-content:center;align-items:center;width:24px;height:24px;font-size:14px;box-sizing:border-box;background:#fff;transition:.15s ease-out}.el-step.is-horizontal,.el-step__icon-inner{display:inline-block}.el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{-webkit-user-select:none;-moz-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{position:absolute;border-color:inherit;background-color:#c0c4cc}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:.15s ease-out;box-sizing:border-box;width:0;height:0}.el-step__main{white-space:normal;text-align:left}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{font-weight:700;color:#303133}.el-step__title.is-wait{color:#c0c4cc}.el-step__title.is-success{color:#67c23a}.el-step__title.is-error{color:#f56c6c}.el-step__title.is-finish{color:#409eff}.el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.el-step__description.is-process{color:#303133}.el-step__description.is-wait{color:#c0c4cc}.el-step__description.is-success{color:#67c23a}.el-step__description.is-error{color:#f56c6c}.el-step__description.is-finish{color:#409eff}.el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{padding-left:10px;flex-grow:1}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{display:flex;align-items:center}.el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{position:relative;display:flex;align-items:stretch;flex-grow:1}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.el-step.is-simple .el-step__arrow{flex-grow:1;display:flex;align-items:center;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{content:"";display:inline-block;position:absolute;height:15px;width:1px;background:#c0c4cc}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-carousel{position:relative}.el-carousel--horizontal{overflow-x:hidden}.el-carousel--vertical{overflow-y:hidden}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow--left{left:16px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{position:absolute;list-style:none;margin:0;padding:0;z-index:2}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translateX(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:#c0c4cc;opacity:.24}.el-carousel__indicators--labels{left:0;right:0;transform:none;text-align:center}.el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:12px 4px}.el-carousel__indicator--vertical{padding:4px 12px}.el-carousel__indicator--vertical .el-carousel__button{width:2px;height:15px}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;transition:.3s}.el-carousel__item,.el-carousel__mask{height:100%;position:absolute;top:0;left:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{transform:translateY(-50%) translateX(10px);opacity:0}.el-carousel__item{width:100%;display:inline-block;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-linear-enter,.el-fade-in-linear-leave,.el-fade-in-linear-leave-active{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-fade-in-enter,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transition:transform .3s cubic-bezier(.23,1,.32,1),opacity .3s cubic-bezier(.23,1,.32,1);transform-origin:top left}.el-zoom-in-left-enter,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:height .3s ease-in-out,padding-top .3s ease-in-out,padding-bottom .3s ease-in-out}.horizontal-collapse-transition{transition:width .3s ease-in-out,padding-left .3s ease-in-out,padding-right .3s ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter,.el-list-leave-active{opacity:0;transform:translateY(-30px)}.el-opacity-transition{transition:opacity .3s cubic-bezier(.55,0,.1,1)}.el-collapse{border-top:1px solid #ebeef5;border-bottom:1px solid #ebeef5}.el-collapse-item.is-disabled .el-collapse-item__header{color:#bbb;cursor:not-allowed}.el-collapse-item__header{display:flex;align-items:center;height:48px;line-height:48px;background-color:#fff;color:#303133;cursor:pointer;border-bottom:1px solid #ebeef5;font-size:13px;font-weight:500;transition:border-bottom-color .3s;outline:0}.el-collapse-item__arrow{margin:0 8px 0 auto;transition:transform .3s;font-weight:300}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:#409eff}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;box-sizing:border-box;border-bottom:1px solid #ebeef5}.el-cascader__search-input,.el-cascader__tags,.el-tag{-webkit-box-sizing:border-box}.el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#303133;line-height:1.769230769230769}.el-collapse-item:last-child{margin-bottom:-1px}.el-popper .popper__arrow,.el-popper .popper__arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-cascader,.el-tag{display:inline-block}.el-popper .popper__arrow{border-width:6px;filter:drop-shadow(0 2px 12px rgba(0,0,0,.03))}.el-popper .popper__arrow:after{content:" ";border-width:6px}.el-popper[x-placement^=top]{margin-bottom:12px}.el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#ebeef5;border-bottom-width:0}.el-popper[x-placement^=top] .popper__arrow:after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popper[x-placement^=bottom]{margin-top:12px}.el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#ebeef5}.el-popper[x-placement^=bottom] .popper__arrow:after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popper[x-placement^=right]{margin-left:12px}.el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#ebeef5;border-left-width:0}.el-popper[x-placement^=right] .popper__arrow:after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popper[x-placement^=left]{margin-right:12px}.el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#ebeef5}.el-popper[x-placement^=left] .popper__arrow:after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-tag{background-color:#ecf5ff;border-color:#d9ecff;height:32px;padding:0 10px;line-height:30px;font-size:12px;color:#409eff;border-width:1px;border-style:solid;border-radius:4px;box-sizing:border-box;white-space:nowrap}.el-tag.is-hit{border-color:#409eff}.el-tag .el-tag__close{color:#409eff}.el-tag .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag.el-tag--info{background-color:#f4f4f5;border-color:#e9e9eb;color:#909399}.el-tag.el-tag--info.is-hit{border-color:#909399}.el-tag.el-tag--info .el-tag__close{color:#909399}.el-tag.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag.el-tag--success{background-color:#f0f9eb;border-color:#e1f3d8;color:#67c23a}.el-tag.el-tag--success.is-hit{border-color:#67c23a}.el-tag.el-tag--success .el-tag__close{color:#67c23a}.el-tag.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag.el-tag--warning{background-color:#fdf6ec;border-color:#faecd8;color:#e6a23c}.el-tag.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag.el-tag--danger{background-color:#fef0f0;border-color:#fde2e2;color:#f56c6c}.el-tag.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:16px;width:16px;line-height:16px;vertical-align:middle;top:-1px;right:-5px}.el-tag .el-icon-close:before{display:block}.el-tag--dark{background-color:#409eff;color:#fff}.el-tag--dark,.el-tag--dark.is-hit{border-color:#409eff}.el-tag--dark .el-tag__close{color:#fff}.el-tag--dark .el-tag__close:hover{color:#fff;background-color:#66b1ff}.el-tag--dark.el-tag--info{background-color:#909399;border-color:#909399;color:#fff}.el-tag--dark.el-tag--info.is-hit{border-color:#909399}.el-tag--dark.el-tag--info .el-tag__close{color:#fff}.el-tag--dark.el-tag--info .el-tag__close:hover{color:#fff;background-color:#a6a9ad}.el-tag--dark.el-tag--success{background-color:#67c23a;border-color:#67c23a;color:#fff}.el-tag--dark.el-tag--success.is-hit{border-color:#67c23a}.el-tag--dark.el-tag--success .el-tag__close{color:#fff}.el-tag--dark.el-tag--success .el-tag__close:hover{color:#fff;background-color:#85ce61}.el-tag--dark.el-tag--warning{background-color:#e6a23c;border-color:#e6a23c;color:#fff}.el-tag--dark.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--dark.el-tag--warning .el-tag__close{color:#fff}.el-tag--dark.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#ebb563}.el-tag--dark.el-tag--danger{background-color:#f56c6c;border-color:#f56c6c;color:#fff}.el-tag--dark.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--dark.el-tag--danger .el-tag__close{color:#fff}.el-tag--dark.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f78989}.el-tag--plain{background-color:#fff;border-color:#b3d8ff;color:#409eff}.el-tag--plain.is-hit{border-color:#409eff}.el-tag--plain .el-tag__close{color:#409eff}.el-tag--plain .el-tag__close:hover{color:#fff;background-color:#409eff}.el-tag--plain.el-tag--info{background-color:#fff;border-color:#d3d4d6;color:#909399}.el-tag--plain.el-tag--info.is-hit{border-color:#909399}.el-tag--plain.el-tag--info .el-tag__close{color:#909399}.el-tag--plain.el-tag--info .el-tag__close:hover{color:#fff;background-color:#909399}.el-tag--plain.el-tag--success{background-color:#fff;border-color:#c2e7b0;color:#67c23a}.el-tag--plain.el-tag--success.is-hit{border-color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close{color:#67c23a}.el-tag--plain.el-tag--success .el-tag__close:hover{color:#fff;background-color:#67c23a}.el-tag--plain.el-tag--warning{background-color:#fff;border-color:#f5dab1;color:#e6a23c}.el-tag--plain.el-tag--warning.is-hit{border-color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close{color:#e6a23c}.el-tag--plain.el-tag--warning .el-tag__close:hover{color:#fff;background-color:#e6a23c}.el-tag--plain.el-tag--danger{background-color:#fff;border-color:#fbc4c4;color:#f56c6c}.el-tag--plain.el-tag--danger.is-hit{border-color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close{color:#f56c6c}.el-tag--plain.el-tag--danger .el-tag__close:hover{color:#fff;background-color:#f56c6c}.el-tag--medium{height:28px;line-height:26px}.el-tag--medium .el-icon-close{transform:scale(.8)}.el-tag--small{height:24px;padding:0 8px;line-height:22px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag--mini{height:20px;padding:0 5px;line-height:19px}.el-tag--mini .el-icon-close{margin-left:-3px;transform:scale(.7)}.el-cascader{position:relative;font-size:14px;line-height:40px}.el-cascader:not(.is-disabled):hover .el-input__inner{cursor:pointer;border-color:#c0c4cc}.el-cascader .el-input .el-input__inner:focus,.el-cascader .el-input.is-focus .el-input__inner{border-color:#409eff}.el-cascader .el-input{cursor:pointer}.el-cascader .el-input .el-input__inner{text-overflow:ellipsis}.el-cascader .el-input .el-icon-arrow-down{transition:transform .3s;font-size:14px}.el-cascader .el-input .el-icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .el-icon-circle-close:hover{color:#909399}.el-cascader--medium{font-size:14px;line-height:36px}.el-cascader--small{font-size:13px;line-height:32px}.el-cascader--mini{font-size:12px;line-height:28px}.el-cascader.is-disabled .el-cascader__label{z-index:2;color:#c0c4cc}.el-cascader__dropdown{margin:5px 0;font-size:14px;background:#fff;border:1px solid #e4e7ed;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-cascader__tags{position:absolute;left:0;right:30px;top:50%;transform:translateY(-50%);display:flex;flex-wrap:wrap;line-height:normal;text-align:left;box-sizing:border-box}.el-cascader__tags .el-tag{display:inline-flex;align-items:center;max-width:100%;margin:2px 0 2px 6px;text-overflow:ellipsis;background:#f0f2f5}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{flex:none;background-color:#c0c4cc;color:#fff}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:#909399}.el-cascader__suggestion-panel{border-radius:4px}.el-cascader__suggestion-list{max-height:204px;margin:0;padding:6px 0;font-size:14px;color:#606266;text-align:center}.el-cascader__suggestion-item{display:flex;justify-content:space-between;align-items:center;height:34px;padding:0 15px;text-align:left;outline:0;cursor:pointer}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:#f5f7fa}.el-cascader__suggestion-item.is-checked{color:#409eff;font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{margin:10px 0;color:#c0c4cc}.el-cascader__search-input{flex:1;height:24px;min-width:60px;margin:2px 0 2px 15px;padding:0;color:#606266;border:none;outline:0;box-sizing:border-box}.el-cascader__search-input::-moz-placeholder{color:#c0c4cc}.el-cascader__search-input::placeholder{color:#c0c4cc}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px #409eff}.el-color-predefine__color-selector>div{display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.el-color-svpanel__black{background:linear-gradient(0deg,#000,transparent)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(90deg,hsla(0,0%,100%,0) 0,#fff);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,hsla(0,0%,100%,0) 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409eff;border-color:#409eff}.el-color-dropdown__link-btn{cursor:pointer;color:#409eff;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409eff,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:hsla(0,0%,100%,.7)}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__icon,.el-input,.el-textarea{display:inline-block;width:100%}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{color:#999}.el-color-picker__empty,.el-color-picker__icon{font-size:12px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{color:#fff;text-align:center}.el-input__prefix,.el-input__suffix{position:absolute;top:0;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;box-sizing:content-box;background-color:#fff;border:1px solid #ebeef5;border-radius:4px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.el-input__inner,.el-textarea__inner,.el-transfer-panel{-webkit-box-sizing:border-box}.el-textarea{position:relative;vertical-align:bottom;font-size:14px}.el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;box-sizing:border-box;width:100%;font-size:inherit;color:#606266;background-color:#fff;background-image:none;border:1px solid #dcdfe6;border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea__inner:hover{border-color:#c0c4cc}.el-textarea__inner:focus{outline:0;border-color:#409eff}.el-textarea .el-input__count{color:#909399;background:#fff;position:absolute;font-size:12px;bottom:5px;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:#c0c4cc}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:#c0c4cc}.el-textarea.is-exceed .el-textarea__inner{border-color:#f56c6c}.el-textarea.is-exceed .el-input__count{color:#f56c6c}.el-input{position:relative;font-size:14px}.el-input::-webkit-scrollbar{z-index:11;width:6px}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:#fff}.el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.el-input .el-input__clear{color:#c0c4cc;font-size:14px;cursor:pointer;transition:color .2s cubic-bezier(.645,.045,.355,1)}.el-input .el-input__clear:hover{color:#909399}.el-input .el-input__count{height:100%;display:inline-flex;align-items:center;color:#909399;font-size:12px}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input,.el-input__inner{font-size:inherit}.el-input .el-input__count .el-input__count-inner{background:#fff;line-height:normal;display:inline-block;padding:0 5px}.el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;color:#606266;display:inline-block;height:40px;line-height:40px;outline:0;padding:0 15px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-ms-reveal{display:none}.el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input__inner::placeholder{color:#c0c4cc}.el-input__inner:hover{border-color:#c0c4cc}.el-input.is-active .el-input__inner,.el-input__inner:focus{border-color:#409eff;outline:0}.el-input__suffix{height:100%;right:5px;transition:all .3s;pointer-events:none}.el-input__suffix-inner{pointer-events:all}.el-input__prefix{height:100%;left:5px;transition:all .3s}.el-input__icon{height:100%;width:25px;text-align:center;transition:all .3s;line-height:40px}.el-input__icon:after{content:"";height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__validateIcon{pointer-events:none}.el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#e4e7ed;color:#c0c4cc;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__inner::placeholder{color:#c0c4cc}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-image-viewer__btn,.el-image__preview,.el-link,.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-input.is-exceed .el-input__inner{border-color:#f56c6c}.el-input.is-exceed .el-input__suffix .el-input__count{color:#f56c6c}.el-input--suffix .el-input__inner{padding-right:30px}.el-input--prefix .el-input__inner{padding-left:30px}.el-input--medium{font-size:14px}.el-input--medium .el-input__inner{height:36px;line-height:36px}.el-input--medium .el-input__icon{line-height:36px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:32px;line-height:32px}.el-input--small .el-input__icon{line-height:32px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:28px;line-height:28px}.el-input--mini .el-input__icon{line-height:28px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate;border-spacing:0}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:#f5f7fa;color:#909399;vertical-align:middle;display:table-cell;position:relative;border:1px solid #dcdfe6;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:-10px -20px}.el-input-group__append button.el-button,.el-input-group__append div.el-select .el-input__inner,.el-input-group__append div.el-select:hover .el-input__inner,.el-input-group__prepend button.el-button,.el-input-group__prepend div.el-select .el-input__inner,.el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-select .el-input.is-focus .el-input__inner,.el-input-group--prepend .el-select .el-input.is-focus .el-input__inner{border-color:transparent}.el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.el-input__inner::-ms-clear{display:none;width:0;height:0}.el-transfer{font-size:14px}.el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#409eff;font-size:0}.el-button-group>.el-button+.el-button,.el-transfer-panel__item+.el-transfer-panel__item,.el-transfer__button [class*=el-icon-]+span{margin-left:0}.el-divider__text,.el-image__error,.el-link,.el-timeline,.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button.is-with-texts{border-radius:4px}.el-transfer__button.is-disabled,.el-transfer__button.is-disabled:hover{border:1px solid #dcdfe6;background-color:#f5f7fa;color:#c0c4cc}.el-transfer__button:first-child{margin-bottom:10px}.el-transfer__button:nth-child(2){margin:0}.el-transfer-panel{border:1px solid #ebeef5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;max-height:100%;box-sizing:border-box;position:relative}.el-transfer-panel__body{height:246px}.el-transfer-panel__body.is-with-footer{padding-bottom:40px}.el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;box-sizing:border-box}.el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block!important}.el-transfer-panel__item.el-checkbox{color:#606266}.el-transfer-panel__item:hover{color:#409eff}.el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;box-sizing:border-box;padding-left:24px;line-height:30px}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{text-align:center;margin:15px;box-sizing:border-box;display:block;width:auto}.el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.el-transfer-panel__filter .el-input__icon{margin-left:5px}.el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #ebeef5;box-sizing:border-box;color:#000}.el-container,.el-header{-webkit-box-sizing:border-box}.el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#303133;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#909399;font-size:12px;font-weight:400}.el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #ebeef5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.el-transfer-panel .el-transfer-panel__footer:after{display:inline-block;height:100%;vertical-align:middle}.el-container,.el-timeline-item__node{display:-ms-flexbox}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#606266}.el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#909399;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.el-transfer-panel .el-checkbox__inner:after{height:6px;width:3px;left:4px}.el-container{display:flex;flex-direction:row;flex:1;flex-basis:auto;box-sizing:border-box;min-width:0}.el-container.is-vertical,.el-drawer,.el-empty,.el-result{-webkit-box-orient:vertical}.el-container.is-vertical{flex-direction:column}.el-header{padding:0 20px}.el-aside,.el-header{box-sizing:border-box;flex-shrink:0}.el-aside,.el-main{overflow:auto}.el-main{display:block;flex:1;flex-basis:auto}.el-footer,.el-main{box-sizing:border-box}.el-footer{padding:0 20px;flex-shrink:0}.el-timeline{margin:0;list-style:none}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline-item{position:relative;padding-bottom:20px}.el-timeline-item__wrapper{position:relative;padding-left:28px;top:-3px}.el-timeline-item__tail{position:absolute;left:4px;height:100%;border-left:2px solid #e4e7ed}.el-timeline-item__icon{color:#fff;font-size:13px}.el-timeline-item__node{position:absolute;background-color:#e4e7ed;border-radius:50%;display:flex;justify-content:center;align-items:center}.el-image__error,.el-timeline-item__dot{display:-ms-flexbox}.el-timeline-item__node--normal{left:-1px;width:12px;height:12px}.el-timeline-item__node--large{left:-2px;width:14px;height:14px}.el-timeline-item__node--primary{background-color:#409eff}.el-timeline-item__node--success{background-color:#67c23a}.el-timeline-item__node--warning{background-color:#e6a23c}.el-timeline-item__node--danger{background-color:#f56c6c}.el-timeline-item__node--info{background-color:#909399}.el-timeline-item__dot{position:absolute;display:flex;justify-content:center;align-items:center}.el-timeline-item__content{color:#303133}.el-timeline-item__timestamp{color:#909399;line-height:1;font-size:13px}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-link{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;vertical-align:middle;position:relative;text-decoration:none;outline:0;padding:0;font-weight:500}.el-link.is-underline:hover:after{position:absolute;left:0;right:0;height:0;bottom:0;border-bottom:1px solid #409eff}.el-link.el-link--default:after,.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:#409eff}.el-link.is-disabled{cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default{color:#606266}.el-link.el-link--default:hover{color:#409eff}.el-link.el-link--default.is-disabled{color:#c0c4cc}.el-link.el-link--primary{color:#409eff}.el-link.el-link--primary:hover{color:#66b1ff}.el-link.el-link--primary.is-disabled{color:#a0cfff}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:#f56c6c}.el-link.el-link--danger{color:#f56c6c}.el-link.el-link--danger:hover{color:#f78989}.el-link.el-link--danger.is-disabled{color:#fab6b6}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:#67c23a}.el-link.el-link--success{color:#67c23a}.el-link.el-link--success:hover{color:#85ce61}.el-link.el-link--success.is-disabled{color:#b3e19d}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:#e6a23c}.el-link.el-link--warning{color:#e6a23c}.el-link.el-link--warning:hover{color:#ebb563}.el-link.el-link--warning.is-disabled{color:#f3d19e}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:#909399}.el-link.el-link--info{color:#909399}.el-link.el-link--info:hover{color:#a6a9ad}.el-link.el-link--info.is-disabled{color:#c8c9cc}.el-divider{background-color:#dcdfe6;position:relative}.el-divider--horizontal{display:block;height:1px;width:100%;margin:24px 0}.el-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 8px;vertical-align:middle;position:relative}.el-divider__text{position:absolute;background-color:#fff;padding:0 20px;font-weight:500;color:#303133}.el-image__error,.el-image__placeholder{background:#f5f7fa}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-image__error,.el-image__inner,.el-image__placeholder{width:100%;height:100%}.el-image{position:relative;display:inline-block;overflow:hidden}.el-image__inner{vertical-align:top}.el-image__inner--center{position:relative;top:50%;left:50%;transform:translate(-50%,-50%);display:block}.el-image__error{display:flex;justify-content:center;align-items:center;color:#c0c4cc;vertical-align:middle}.el-image-viewer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.el-image-viewer__btn{position:absolute;z-index:1;display:flex;align-items:center;justify-content:center;border-radius:50%;opacity:.8;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-button,.el-checkbox,.el-checkbox-button__inner,.el-empty__image img,.el-radio{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.el-image-viewer__close{top:40px;right:40px;width:40px;height:40px;font-size:24px;color:#fff;background-color:#606266}.el-image-viewer__canvas{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.el-image-viewer__actions{left:50%;bottom:30px;transform:translateX(-50%);width:282px;height:44px;padding:0 23px;background-color:#606266;border-color:#fff;border-radius:22px}.el-image-viewer__actions__inner{width:100%;height:100%;text-align:justify;cursor:default;font-size:23px;color:#fff;display:flex;align-items:center;justify-content:space-around}.el-image-viewer__next,.el-image-viewer__prev{width:44px;height:44px;font-size:24px;color:#fff;background-color:#606266;border-color:#fff;top:50%}.el-image-viewer__prev{transform:translateY(-50%);left:40px}.el-image-viewer__next{transform:translateY(-50%);right:40px;text-indent:2px}.el-image-viewer__mask{position:absolute;width:100%;height:100%;top:0;left:0;opacity:.5;background:#000}.viewer-fade-enter-active{animation:viewer-fade-in .3s}.viewer-fade-leave-active{animation:viewer-fade-out .3s}@keyframes viewer-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes viewer-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}.el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #dcdfe6;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:.1s;font-weight:500;padding:12px 20px;font-size:14px;border-radius:4px}.el-button+.el-button,.el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.el-button:focus,.el-button:hover{color:#409eff;border-color:#c6e2ff;background-color:#ecf5ff}.el-button:active{color:#3a8ee6;border-color:#3a8ee6;outline:0}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon-]+span{margin-left:5px}.el-button.is-plain:focus,.el-button.is-plain:hover{background:#fff;border-color:#409eff;color:#409eff}.el-button.is-active,.el-button.is-plain:active{color:#3a8ee6;border-color:#3a8ee6}.el-button.is-plain:active{background:#fff;outline:0}.el-button.is-disabled,.el-button.is-disabled:focus,.el-button.is-disabled:hover{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5}.el-button.is-disabled.el-button--text{background-color:transparent}.el-button.is-disabled.is-plain,.el-button.is-disabled.is-plain:focus,.el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#ebeef5;color:#c0c4cc}.el-button.is-loading{position:relative;pointer-events:none}.el-button.is-loading:before{pointer-events:none;content:"";position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:hsla(0,0%,100%,.35)}.el-button.is-round{border-radius:20px;padding:12px 23px}.el-button.is-circle{border-radius:50%;padding:12px}.el-button--primary{color:#fff;background-color:#409eff;border-color:#409eff}.el-button--primary:focus,.el-button--primary:hover{background:#66b1ff;border-color:#66b1ff;color:#fff}.el-button--primary.is-active,.el-button--primary:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff}.el-button--primary:active{outline:0}.el-button--primary.is-disabled,.el-button--primary.is-disabled:active,.el-button--primary.is-disabled:focus,.el-button--primary.is-disabled:hover{color:#fff;background-color:#a0cfff;border-color:#a0cfff}.el-button--primary.is-plain{color:#409eff;background:#ecf5ff;border-color:#b3d8ff}.el-button--primary.is-plain:focus,.el-button--primary.is-plain:hover{background:#409eff;border-color:#409eff;color:#fff}.el-button--primary.is-plain:active{background:#3a8ee6;border-color:#3a8ee6;color:#fff;outline:0}.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover{color:#8cc5ff;background-color:#ecf5ff;border-color:#d9ecff}.el-button--success{color:#fff;background-color:#67c23a;border-color:#67c23a}.el-button--success:focus,.el-button--success:hover{background:#85ce61;border-color:#85ce61;color:#fff}.el-button--success.is-active,.el-button--success:active{background:#5daf34;border-color:#5daf34;color:#fff}.el-button--success:active{outline:0}.el-button--success.is-disabled,.el-button--success.is-disabled:active,.el-button--success.is-disabled:focus,.el-button--success.is-disabled:hover{color:#fff;background-color:#b3e19d;border-color:#b3e19d}.el-button--success.is-plain{color:#67c23a;background:#f0f9eb;border-color:#c2e7b0}.el-button--success.is-plain:focus,.el-button--success.is-plain:hover{background:#67c23a;border-color:#67c23a;color:#fff}.el-button--success.is-plain:active{background:#5daf34;border-color:#5daf34;color:#fff;outline:0}.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover{color:#a4da89;background-color:#f0f9eb;border-color:#e1f3d8}.el-button--warning{color:#fff;background-color:#e6a23c;border-color:#e6a23c}.el-button--warning:focus,.el-button--warning:hover{background:#ebb563;border-color:#ebb563;color:#fff}.el-button--warning.is-active,.el-button--warning:active{background:#cf9236;border-color:#cf9236;color:#fff}.el-button--warning:active{outline:0}.el-button--warning.is-disabled,.el-button--warning.is-disabled:active,.el-button--warning.is-disabled:focus,.el-button--warning.is-disabled:hover{color:#fff;background-color:#f3d19e;border-color:#f3d19e}.el-button--warning.is-plain{color:#e6a23c;background:#fdf6ec;border-color:#f5dab1}.el-button--warning.is-plain:focus,.el-button--warning.is-plain:hover{background:#e6a23c;border-color:#e6a23c;color:#fff}.el-button--warning.is-plain:active{background:#cf9236;border-color:#cf9236;color:#fff;outline:0}.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover{color:#f0c78a;background-color:#fdf6ec;border-color:#faecd8}.el-button--danger{color:#fff;background-color:#f56c6c;border-color:#f56c6c}.el-button--danger:focus,.el-button--danger:hover{background:#f78989;border-color:#f78989;color:#fff}.el-button--danger.is-active,.el-button--danger:active{background:#dd6161;border-color:#dd6161;color:#fff}.el-button--danger:active{outline:0}.el-button--danger.is-disabled,.el-button--danger.is-disabled:active,.el-button--danger.is-disabled:focus,.el-button--danger.is-disabled:hover{color:#fff;background-color:#fab6b6;border-color:#fab6b6}.el-button--danger.is-plain{color:#f56c6c;background:#fef0f0;border-color:#fbc4c4}.el-button--danger.is-plain:focus,.el-button--danger.is-plain:hover{background:#f56c6c;border-color:#f56c6c;color:#fff}.el-button--danger.is-plain:active{background:#dd6161;border-color:#dd6161;color:#fff;outline:0}.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover{color:#f9a7a7;background-color:#fef0f0;border-color:#fde2e2}.el-button--info{color:#fff;background-color:#909399;border-color:#909399}.el-button--info:focus,.el-button--info:hover{background:#a6a9ad;border-color:#a6a9ad;color:#fff}.el-button--info.is-active,.el-button--info:active{background:#82848a;border-color:#82848a;color:#fff}.el-button--info:active{outline:0}.el-button--info.is-disabled,.el-button--info.is-disabled:active,.el-button--info.is-disabled:focus,.el-button--info.is-disabled:hover{color:#fff;background-color:#c8c9cc;border-color:#c8c9cc}.el-button--info.is-plain{color:#909399;background:#f4f4f5;border-color:#d3d4d6}.el-button--info.is-plain:focus,.el-button--info.is-plain:hover{background:#909399;border-color:#909399;color:#fff}.el-button--info.is-plain:active{background:#82848a;border-color:#82848a;color:#fff;outline:0}.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover{color:#bcbec2;background-color:#f4f4f5;border-color:#e9e9eb}.el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.el-button--medium.is-round{padding:10px 20px}.el-button--medium.is-circle{padding:10px}.el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.el-button--small.is-round{padding:9px 15px}.el-button--small.is-circle{padding:9px}.el-button--mini,.el-button--mini.is-round{padding:7px 15px}.el-button--mini{font-size:12px;border-radius:3px}.el-button--mini.is-circle{padding:7px}.el-button--text{border-color:transparent;color:#409eff;background:0 0;padding-left:0;padding-right:0}.el-button--text:focus,.el-button--text:hover{color:#66b1ff;border-color:transparent;background-color:transparent}.el-button--text:active{color:#3a8ee6;background-color:transparent}.el-button--text.is-disabled,.el-button--text.is-disabled:focus,.el-button--text.is-disabled:hover,.el-button--text:active{border-color:transparent}.el-button-group .el-button--danger:last-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:last-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:last-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:last-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:last-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child),.el-button-group>.el-dropdown>.el-button{border-left-color:hsla(0,0%,100%,.5)}.el-button-group .el-button--danger:first-child,.el-button-group .el-button--danger:not(:first-child):not(:last-child),.el-button-group .el-button--info:first-child,.el-button-group .el-button--info:not(:first-child):not(:last-child),.el-button-group .el-button--primary:first-child,.el-button-group .el-button--primary:not(:first-child):not(:last-child),.el-button-group .el-button--success:first-child,.el-button-group .el-button--success:not(:first-child):not(:last-child),.el-button-group .el-button--warning:first-child,.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-right-color:hsla(0,0%,100%,.5)}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button.is-disabled{z-index:1}.el-button-group>.el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.el-button-group>.el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-radius:4px}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:20px}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button.is-active,.el-button-group>.el-button:not(.is-disabled):active,.el-button-group>.el-button:not(.is-disabled):focus,.el-button-group>.el-button:not(.is-disabled):hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-top-left-radius:0;border-bottom-left-radius:0}.el-calendar{background-color:#fff}.el-calendar__header{display:flex;justify-content:space-between;padding:12px 20px;border-bottom:1px solid #ebeef5}.el-backtop,.el-page-header{display:-ms-flexbox}.el-calendar__title{color:#000;align-self:center}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{padding:12px 0;color:#606266;font-weight:400}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:#c0c4cc}.el-backtop,.el-calendar-table td.is-today{color:#409eff}.el-calendar-table td{border-bottom:1px solid #ebeef5;border-right:1px solid #ebeef5;vertical-align:top;transition:background-color .2s ease}.el-calendar-table td.is-selected{background-color:#f2f8fe}.el-calendar-table tr:first-child td{border-top:1px solid #ebeef5}.el-calendar-table tr td:first-child{border-left:1px solid #ebeef5}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;padding:8px;height:85px}.el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:#f2f8fe}.el-backtop{position:fixed;background-color:#fff;width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 0 6px rgba(0,0,0,.12);cursor:pointer;z-index:5}.el-backtop:hover{background-color:#f2f6fc}.el-page-header{display:flex;line-height:24px}.el-page-header__left{display:flex;cursor:pointer;margin-right:40px;position:relative}.el-page-header__left:after{position:absolute;width:1px;height:16px;right:-20px;top:50%;transform:translateY(-50%);background-color:#dcdfe6}.el-checkbox,.el-checkbox__input{display:inline-block;position:relative;white-space:nowrap}.el-page-header__left .el-icon-back{font-size:18px;margin-right:6px;align-self:center}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{font-size:18px;color:#303133}.el-checkbox{color:#606266;font-weight:500;font-size:14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-right:30px}.el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;line-height:normal;height:40px}.el-checkbox.is-bordered.is-checked{border-color:#409eff}.el-checkbox.is-bordered.is-disabled{border-color:#ebeef5;cursor:not-allowed}.el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px;height:36px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{padding:5px 15px 5px 10px;border-radius:3px;height:32px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox.is-bordered.el-checkbox--mini{padding:3px 15px 3px 10px;border-radius:3px;height:28px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox__input{cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#dcdfe6;cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{cursor:not-allowed;border-color:#c0c4cc}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:#c0c4cc}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#f2f6fc;border-color:#dcdfe6}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:#c0c4cc;border-color:#c0c4cc}.el-checkbox__input.is-checked .el-checkbox__inner,.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#409eff;border-color:#409eff}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:#c0c4cc;cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner:after{transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:#409eff}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#409eff}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{content:"";position:absolute;display:block;background-color:#fff;height:2px;transform:scale(.5);left:0;right:0;top:5px}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid #dcdfe6;border-radius:2px;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#409eff}.el-checkbox__inner:after{box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);width:3px;transition:transform .15s ease-in .05s;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;z-index:-1}.el-checkbox-button,.el-checkbox-button__inner{display:inline-block;position:relative}.el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.el-checkbox:last-of-type{margin-right:0}.el-checkbox-button__inner{line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #dcdfe6;border-left:0;color:#606266;-webkit-appearance:none;text-align:center;box-sizing:border-box;outline:0;margin:0;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.el-checkbox-button__inner.is-round{padding:12px 20px}.el-checkbox-button__inner:hover{color:#409eff}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;z-index:-1}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#409eff;border-color:#409eff;box-shadow:-1px 0 0 0 #8cc5ff}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:#409eff}.el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#c0c4cc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#ebeef5;box-shadow:none}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:#ebeef5}.el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #dcdfe6;border-radius:4px 0 0 4px;box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#409eff}.el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.el-checkbox-group{font-size:0}.el-avatar,.el-cascader-panel,.el-radio,.el-radio--medium.is-bordered .el-radio__label,.el-radio__label{font-size:14px}.el-radio{color:#606266;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;outline:0;margin-right:30px}.el-cascader-node>.el-radio,.el-radio:last-child{margin-right:0}.el-radio.is-bordered{padding:12px 20px 0 10px;border-radius:4px;border:1px solid #dcdfe6;box-sizing:border-box;height:40px}.el-cascader-menu,.el-cascader-menu__list,.el-radio__inner{-webkit-box-sizing:border-box}.el-radio.is-bordered.is-checked{border-color:#409eff}.el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#ebeef5}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#e4e7ed}.el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.el-radio--medium.is-bordered{padding:10px 20px 0 10px;border-radius:4px;height:36px}.el-radio--mini.is-bordered .el-radio__label,.el-radio--small.is-bordered .el-radio__label{font-size:12px}.el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.el-radio--small.is-bordered{padding:8px 15px 0 10px;border-radius:3px;height:32px}.el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio--mini.is-bordered{padding:6px 15px 0 10px;border-radius:3px;height:28px}.el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.el-radio__input{white-space:nowrap;cursor:pointer;outline:0;line-height:1;vertical-align:middle}.el-radio__input.is-disabled .el-radio__inner{cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner:after{cursor:not-allowed;background-color:#f5f7fa}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:#c0c4cc}.el-radio__input.is-disabled+span.el-radio__label{color:#c0c4cc;cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{border-color:#409eff;background:#409eff}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:#409eff}.el-radio__input.is-focus .el-radio__inner{border-color:#409eff}.el-radio__inner{border:1px solid #dcdfe6;border-radius:100%;width:14px;height:14px;background-color:#fff;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#409eff}.el-radio__inner:after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio:focus:not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px #409eff}.el-radio__label{padding-left:10px}.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active>.el-scrollbar__bar,.el-scrollbar:focus>.el-scrollbar__bar,.el-scrollbar:hover>.el-scrollbar__bar{opacity:1;transition:opacity .34s ease-out}.el-scrollbar__wrap{overflow:scroll;height:100%}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(144,147,153,.3);transition:background-color .3s}.el-scrollbar__thumb:hover{background-color:rgba(144,147,153,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity .12s ease-out}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-cascader-panel{display:flex;border-radius:4px}.el-cascader-panel.is-bordered{border:1px solid #e4e7ed;border-radius:4px}.el-cascader-menu{min-width:180px;box-sizing:border-box;color:#606266;border-right:1px solid #e4e7ed}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu__wrap{height:204px}.el-cascader-menu__list{position:relative;min-height:100%;margin:0;padding:6px 0;list-style:none;box-sizing:border-box}.el-cascader-menu__hover-zone{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.el-cascader-menu__empty-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:#c0c4cc}.el-cascader-node{position:relative;display:flex;align-items:center;padding:0 30px 0 20px;height:34px;line-height:34px;outline:0}.el-cascader-node.is-selectable.in-active-path{color:#606266}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:#409eff;font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:#f5f7fa}.el-cascader-node.is-disabled{color:#c0c4cc;cursor:not-allowed}.el-cascader-node__prefix{position:absolute;left:10px}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;padding:0 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-avatar{display:inline-block;box-sizing:border-box;text-align:center;overflow:hidden;color:#fff;background:#c0c4cc;width:40px;height:40px;line-height:40px}.el-drawer,.el-drawer__body>*{-webkit-box-sizing:border-box}.el-avatar>img{display:block;height:100%;vertical-align:middle}.el-empty__image img,.el-empty__image svg{vertical-align:top;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:4px}.el-avatar--icon{font-size:18px}.el-avatar--large{width:40px;height:40px;line-height:40px}.el-avatar--medium{width:36px;height:36px;line-height:36px}.el-avatar--small{width:28px;height:28px;line-height:28px}@keyframes el-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes rtl-drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rtl-drawer-out{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes ltr-drawer-in{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes ltr-drawer-out{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes ttb-drawer-in{0%{transform:translateY(-100%)}to{transform:translate(0)}}@keyframes ttb-drawer-out{0%{transform:translate(0)}to{transform:translateY(-100%)}}@keyframes btt-drawer-in{0%{transform:translateY(100%)}to{transform:translate(0)}}@keyframes btt-drawer-out{0%{transform:translate(0)}to{transform:translateY(100%)}}.el-drawer{position:absolute;box-sizing:border-box;background-color:#fff;display:flex;flex-direction:column;box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12);overflow:hidden;outline:0}.el-drawer.rtl{animation:rtl-drawer-out .3s;right:0}.el-drawer__open .el-drawer.rtl{animation:rtl-drawer-in .3s 1ms}.el-drawer.ltr{animation:ltr-drawer-out .3s;left:0}.el-drawer__open .el-drawer.ltr{animation:ltr-drawer-in .3s 1ms}.el-drawer.ttb{animation:ttb-drawer-out .3s;top:0}.el-drawer__open .el-drawer.ttb{animation:ttb-drawer-in .3s 1ms}.el-drawer.btt{animation:btt-drawer-out .3s;bottom:0}.el-drawer__open .el-drawer.btt{animation:btt-drawer-in .3s 1ms}.el-drawer__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;margin:0}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:20px 20px 0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{margin:0;flex:1;line-height:inherit;font-size:1rem}.el-drawer__close-btn{border:none;cursor:pointer;font-size:20px;color:inherit;background-color:transparent}.el-drawer__body{flex:1;overflow:auto}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{height:100%;top:0;bottom:0}.el-drawer.btt,.el-drawer.ttb,.el-drawer__container{width:100%;left:0;right:0}.el-drawer__container{position:relative;top:0;bottom:0;height:100%}.el-drawer-fade-enter-active{animation:el-drawer-fade-in .3s}.el-drawer-fade-leave-active{animation:el-drawer-fade-in .3s reverse}.el-statistic{width:100%;box-sizing:border-box;margin:0;padding:0;color:#000;font-variant:tabular-nums;list-style:none;font-feature-settings:"tnum";text-align:center}.el-statistic .head{margin-bottom:4px;color:#606266;font-size:13px}.el-statistic .con{font-family:Sans-serif;display:flex;justify-content:center;align-items:center;color:#303133}.el-statistic .con .number{font-size:20px;padding:0 4px}.el-statistic .con span{display:inline-block;margin:0;line-height:100%}.el-popconfirm__main,.el-skeleton__image{display:-ms-flexbox;-webkit-box-align:center;display:-webkit-box}.el-popconfirm__main{display:flex;align-items:center}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{text-align:right;margin:0}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{height:16px;margin-top:16px;background:#f2f2f2}.el-skeleton.is-animated .el-skeleton__item{background:linear-gradient(90deg,#f2f2f2 25%,#e6e6e6 37%,#f2f2f2 63%);background-size:400% 100%;animation:el-skeleton-loading 1.4s ease infinite}.el-skeleton__item{background:#f2f2f2;display:inline-block;height:16px;border-radius:4px;width:100%}.el-skeleton__circle{border-radius:50%;width:36px;height:36px;line-height:36px}.el-skeleton__circle--lg{width:40px;height:40px;line-height:40px}.el-skeleton__circle--md{width:28px;height:28px;line-height:28px}.el-skeleton__button{height:40px;width:64px;border-radius:4px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{width:100%;height:13px}.el-skeleton__caption{height:12px}.el-skeleton__h1{height:20px}.el-skeleton__h3{height:18px}.el-skeleton__h5{height:16px}.el-skeleton__image{width:unset;display:flex;align-items:center;justify-content:center;border-radius:0}.el-skeleton__image svg{fill:#dcdde0;width:22%;height:22%}.el-empty{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 0}.el-empty__image{width:160px}.el-empty__image img{-webkit-user-select:none;-moz-user-select:none;user-select:none;-o-object-fit:contain;object-fit:contain}.el-empty__image svg{fill:#dcdde0}.el-empty__description{margin-top:20px}.el-empty__description p{margin:0;font-size:14px;color:#909399}.el-empty__bottom,.el-result__title{margin-top:20px}.el-descriptions{box-sizing:border-box;font-size:14px;color:#303133}.el-descriptions__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.el-descriptions__title{font-size:16px;font-weight:700}.el-descriptions--mini,.el-descriptions--small{font-size:12px}.el-descriptions__body{color:#606266;background-color:#fff}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%;table-layout:fixed}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell{box-sizing:border-box;text-align:left;font-weight:400;line-height:1.5}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions-item__cell.is-right{text-align:right}.el-descriptions .is-bordered{table-layout:auto}.el-descriptions .is-bordered .el-descriptions-item__cell{border:1px solid #ebeef5;padding:12px 10px}.el-descriptions :not(.is-bordered) .el-descriptions-item__cell{padding-bottom:12px}.el-descriptions--medium.is-bordered .el-descriptions-item__cell{padding:10px}.el-descriptions--medium:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:10px}.el-descriptions--small.is-bordered .el-descriptions-item__cell{padding:8px 10px}.el-descriptions--small:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:8px}.el-descriptions--mini.is-bordered .el-descriptions-item__cell{padding:6px 10px}.el-descriptions--mini:not(.is-bordered) .el-descriptions-item__cell{padding-bottom:6px}.el-descriptions-item{vertical-align:top}.el-descriptions-item__container{display:flex}.el-descriptions-item__container .el-descriptions-item__content,.el-descriptions-item__container .el-descriptions-item__label{display:inline-flex;align-items:baseline}.el-descriptions-item__container .el-descriptions-item__content{flex:1}.el-descriptions-item__label.has-colon:after{content:":";position:relative;top:-.5px}.el-descriptions-item__label.is-bordered-label{font-weight:700;color:#909399;background:#fafafa}.el-descriptions-item__label:not(.is-bordered-label){margin-right:10px}.el-descriptions-item__content{word-break:break-word;overflow-wrap:break-word}.el-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:40px 30px}.el-result__icon svg{width:64px;height:64px}.el-result__title p{margin:0;font-size:20px;color:#303133;line-height:1.3}.el-result__subtitle{margin-top:10px}.el-result__subtitle p{margin:0;font-size:14px;color:#606266;line-height:1.3}.el-result__extra{margin-top:30px}.el-result .icon-success{fill:#67c23a}.el-result .icon-error{fill:#f56c6c}.el-result .icon-info{fill:#909399}.el-result .icon-warning{fill:#e6a23c} /*! * Viewer.js v1.11.6 * https://fengyuanchen.github.io/viewerjs diff --git a/dist/img/Alex.jpg b/dist/img/Alex.jpg deleted file mode 100644 index 64a61fa5..00000000 Binary files a/dist/img/Alex.jpg and /dev/null differ diff --git a/dist/img/Chris.jpg b/dist/img/Chris.jpg deleted file mode 100644 index c06638b5..00000000 Binary files a/dist/img/Chris.jpg and /dev/null differ diff --git a/dist/img/HaHN.jpg b/dist/img/HaHN.jpg deleted file mode 100644 index 7bd6dce2..00000000 Binary files a/dist/img/HaHN.jpg and /dev/null differ diff --git a/dist/img/Jeffrey.jpg b/dist/img/Jeffrey.jpg deleted file mode 100644 index 3070f155..00000000 Binary files a/dist/img/Jeffrey.jpg and /dev/null differ diff --git a/dist/img/Kyle.jpg b/dist/img/Kyle.jpg deleted file mode 100644 index 5d7e507a..00000000 Binary files a/dist/img/Kyle.jpg and /dev/null differ diff --git a/dist/img/L.jpg b/dist/img/L.jpg deleted file mode 100644 index 91165675..00000000 Binary files a/dist/img/L.jpg and /dev/null differ diff --git a/dist/img/Think.jpg b/dist/img/Think.jpg deleted file mode 100644 index 58ca19ea..00000000 Binary files a/dist/img/Think.jpg and /dev/null differ diff --git a/dist/img/Tobin.jpg b/dist/img/Tobin.jpg deleted file mode 100644 index 9ed63900..00000000 Binary files a/dist/img/Tobin.jpg and /dev/null differ diff --git a/dist/img/ZX.jpg b/dist/img/ZX.jpg deleted file mode 100644 index eca18a9f..00000000 Binary files a/dist/img/ZX.jpg and /dev/null differ diff --git a/dist/img/ZXR.jpg b/dist/img/ZXR.jpg deleted file mode 100644 index a793e421..00000000 Binary files a/dist/img/ZXR.jpg and /dev/null differ diff --git a/dist/img/alipay.jpg b/dist/img/alipay.jpg deleted file mode 100644 index d3924e78..00000000 Binary files a/dist/img/alipay.jpg and /dev/null differ diff --git a/dist/img/block1.png b/dist/img/block1.png deleted file mode 100644 index f1b6326b..00000000 Binary files a/dist/img/block1.png and /dev/null differ diff --git a/dist/img/block3.png b/dist/img/block3.png deleted file mode 100644 index 68d38820..00000000 Binary files a/dist/img/block3.png and /dev/null differ diff --git a/dist/img/block4.png b/dist/img/block4.png deleted file mode 100644 index 5f2ff2d0..00000000 Binary files a/dist/img/block4.png and /dev/null differ diff --git a/dist/img/buddy.jpg b/dist/img/buddy.jpg deleted file mode 100644 index ce898353..00000000 Binary files a/dist/img/buddy.jpg and /dev/null differ diff --git a/dist/img/ccccs.jpg b/dist/img/ccccs.jpg deleted file mode 100644 index e0f13c22..00000000 Binary files a/dist/img/ccccs.jpg and /dev/null differ diff --git a/dist/img/default.png b/dist/img/default.png deleted file mode 100644 index f96d6b11..00000000 Binary files a/dist/img/default.png and /dev/null differ diff --git a/dist/img/iconList.jpg b/dist/img/iconList.jpg deleted file mode 100644 index 69dc7bad..00000000 Binary files a/dist/img/iconList.jpg and /dev/null differ diff --git a/dist/img/moom.jpg b/dist/img/moom.jpg deleted file mode 100644 index d8e42d54..00000000 Binary files a/dist/img/moom.jpg and /dev/null differ diff --git a/dist/img/pluvet.jpg b/dist/img/pluvet.jpg deleted file mode 100644 index cd50c5bc..00000000 Binary files a/dist/img/pluvet.jpg and /dev/null differ diff --git a/dist/img/qp.jpg b/dist/img/qp.jpg deleted file mode 100644 index e9505f35..00000000 Binary files a/dist/img/qp.jpg and /dev/null differ diff --git a/dist/img/qrcode.jpg b/dist/img/qrcode.jpg deleted file mode 100644 index 077aa563..00000000 Binary files a/dist/img/qrcode.jpg and /dev/null differ diff --git a/dist/img/suka.jpg b/dist/img/suka.jpg deleted file mode 100644 index d0b22b2a..00000000 Binary files a/dist/img/suka.jpg and /dev/null differ diff --git a/dist/img/wechat.jpg b/dist/img/wechat.jpg deleted file mode 100644 index 4431fa5c..00000000 Binary files a/dist/img/wechat.jpg and /dev/null differ diff --git a/dist/img/。.png b/dist/img/。.png deleted file mode 100644 index 35bc2999..00000000 Binary files a/dist/img/。.png and /dev/null differ diff --git a/dist/img/乙.jpg b/dist/img/乙.jpg deleted file mode 100644 index d68995ba..00000000 Binary files a/dist/img/乙.jpg and /dev/null differ diff --git a/dist/img/仓鼠.jpg b/dist/img/仓鼠.jpg deleted file mode 100644 index 1eabba76..00000000 Binary files a/dist/img/仓鼠.jpg and /dev/null differ diff --git a/dist/img/俊奇.jpg b/dist/img/俊奇.jpg deleted file mode 100644 index 3edd9be8..00000000 Binary files a/dist/img/俊奇.jpg and /dev/null differ diff --git a/dist/img/千帆.jpg b/dist/img/千帆.jpg deleted file mode 100644 index 652e0d2e..00000000 Binary files a/dist/img/千帆.jpg and /dev/null differ diff --git a/dist/img/南风.jpg b/dist/img/南风.jpg deleted file mode 100644 index 562987e9..00000000 Binary files a/dist/img/南风.jpg and /dev/null differ diff --git a/dist/img/国发.jpg b/dist/img/国发.jpg deleted file mode 100644 index 5e8b6d14..00000000 Binary files a/dist/img/国发.jpg and /dev/null differ diff --git a/dist/img/在下青铜五.jpg b/dist/img/在下青铜五.jpg deleted file mode 100644 index 05676fa3..00000000 Binary files a/dist/img/在下青铜五.jpg and /dev/null differ diff --git a/dist/img/夏虫不语冰.jpg b/dist/img/夏虫不语冰.jpg deleted file mode 100644 index b3d22d01..00000000 Binary files a/dist/img/夏虫不语冰.jpg and /dev/null differ diff --git a/dist/img/天清如愿.jpg b/dist/img/天清如愿.jpg deleted file mode 100644 index f6849963..00000000 Binary files a/dist/img/天清如愿.jpg and /dev/null differ diff --git a/dist/img/好名字.jpg b/dist/img/好名字.jpg deleted file mode 100644 index 9bed8adc..00000000 Binary files a/dist/img/好名字.jpg and /dev/null differ diff --git a/dist/img/子豪.jpg b/dist/img/子豪.jpg deleted file mode 100644 index 10220015..00000000 Binary files a/dist/img/子豪.jpg and /dev/null differ diff --git a/dist/img/宏涛.jpg b/dist/img/宏涛.jpg deleted file mode 100644 index 394e41d5..00000000 Binary files a/dist/img/宏涛.jpg and /dev/null differ diff --git a/dist/img/小土渣的宇宙.jpeg b/dist/img/小土渣的宇宙.jpeg deleted file mode 100644 index 00b51239..00000000 Binary files a/dist/img/小土渣的宇宙.jpeg and /dev/null differ diff --git a/dist/img/小米.jpg b/dist/img/小米.jpg deleted file mode 100644 index eb4ec403..00000000 Binary files a/dist/img/小米.jpg and /dev/null differ diff --git a/dist/img/峰.jpg b/dist/img/峰.jpg deleted file mode 100644 index acf432be..00000000 Binary files a/dist/img/峰.jpg and /dev/null differ diff --git a/dist/img/布林.jpg b/dist/img/布林.jpg deleted file mode 100644 index 742bbc20..00000000 Binary files a/dist/img/布林.jpg and /dev/null differ diff --git a/dist/img/庆国.jpg b/dist/img/庆国.jpg deleted file mode 100644 index 05c6bd17..00000000 Binary files a/dist/img/庆国.jpg and /dev/null differ diff --git a/dist/img/张扬.png b/dist/img/张扬.png deleted file mode 100644 index 6c4602a4..00000000 Binary files a/dist/img/张扬.png and /dev/null differ diff --git a/dist/img/志斌.jpg b/dist/img/志斌.jpg deleted file mode 100644 index a665ada3..00000000 Binary files a/dist/img/志斌.jpg and /dev/null differ diff --git a/dist/img/慕智打印-兰兰.jpg b/dist/img/慕智打印-兰兰.jpg deleted file mode 100644 index 8d6eb61d..00000000 Binary files a/dist/img/慕智打印-兰兰.jpg and /dev/null differ diff --git a/dist/img/手绘风格.png b/dist/img/手绘风格.png deleted file mode 100644 index 4798d2a8..00000000 Binary files a/dist/img/手绘风格.png and /dev/null differ diff --git a/dist/img/才镇.jpg b/dist/img/才镇.jpg deleted file mode 100644 index c442a058..00000000 Binary files a/dist/img/才镇.jpg and /dev/null differ diff --git a/dist/img/敏.jpg b/dist/img/敏.jpg deleted file mode 100644 index 756c3193..00000000 Binary files a/dist/img/敏.jpg and /dev/null differ diff --git a/dist/img/敬明朗.jpg b/dist/img/敬明朗.jpg deleted file mode 100644 index 599b84ca..00000000 Binary files a/dist/img/敬明朗.jpg and /dev/null differ diff --git a/dist/img/晴空.jpg b/dist/img/晴空.jpg deleted file mode 100644 index 465c2c97..00000000 Binary files a/dist/img/晴空.jpg and /dev/null differ diff --git a/dist/img/最多5个字.jpg b/dist/img/最多5个字.jpg deleted file mode 100644 index 3c15791e..00000000 Binary files a/dist/img/最多5个字.jpg and /dev/null differ diff --git a/dist/img/有希.jpg b/dist/img/有希.jpg deleted file mode 100644 index b6e3c85c..00000000 Binary files a/dist/img/有希.jpg and /dev/null differ diff --git a/dist/img/木星二号.jpg b/dist/img/木星二号.jpg deleted file mode 100644 index 6c1c65e9..00000000 Binary files a/dist/img/木星二号.jpg and /dev/null differ diff --git a/dist/img/木木.jpg b/dist/img/木木.jpg deleted file mode 100644 index 479cb04d..00000000 Binary files a/dist/img/木木.jpg and /dev/null differ diff --git a/dist/img/标记.jpg b/dist/img/标记.jpg deleted file mode 100644 index c7146635..00000000 Binary files a/dist/img/标记.jpg and /dev/null differ diff --git a/dist/img/樊笼.jpg b/dist/img/樊笼.jpg deleted file mode 100644 index 07da3739..00000000 Binary files a/dist/img/樊笼.jpg and /dev/null differ diff --git a/dist/img/橘半.jpg b/dist/img/橘半.jpg deleted file mode 100644 index c48b77aa..00000000 Binary files a/dist/img/橘半.jpg and /dev/null differ diff --git a/dist/img/欣.jpg b/dist/img/欣.jpg deleted file mode 100644 index 09dc78bc..00000000 Binary files a/dist/img/欣.jpg and /dev/null differ diff --git a/dist/img/水车.jpg b/dist/img/水车.jpg deleted file mode 100644 index 747178b7..00000000 Binary files a/dist/img/水车.jpg and /dev/null differ diff --git a/dist/img/汪津合.jpg b/dist/img/汪津合.jpg deleted file mode 100644 index 89cce489..00000000 Binary files a/dist/img/汪津合.jpg and /dev/null differ diff --git a/dist/img/沐风牧草.jpg b/dist/img/沐风牧草.jpg deleted file mode 100644 index 201827a1..00000000 Binary files a/dist/img/沐风牧草.jpg and /dev/null differ diff --git a/dist/img/皇登攀.jpg b/dist/img/皇登攀.jpg deleted file mode 100644 index 5132666a..00000000 Binary files a/dist/img/皇登攀.jpg and /dev/null differ diff --git a/dist/img/秀树因馨雨.jpg b/dist/img/秀树因馨雨.jpg deleted file mode 100644 index 636c1fbe..00000000 Binary files a/dist/img/秀树因馨雨.jpg and /dev/null differ diff --git a/dist/img/继龙.jpg b/dist/img/继龙.jpg deleted file mode 100644 index bda4b1b1..00000000 Binary files a/dist/img/继龙.jpg and /dev/null differ diff --git a/dist/img/花儿朵朵.jpg b/dist/img/花儿朵朵.jpg deleted file mode 100644 index f5ec6027..00000000 Binary files a/dist/img/花儿朵朵.jpg and /dev/null differ diff --git a/dist/img/蜉蝣撼大叔.jpg b/dist/img/蜉蝣撼大叔.jpg deleted file mode 100644 index 24ef2f3d..00000000 Binary files a/dist/img/蜉蝣撼大叔.jpg and /dev/null differ diff --git a/dist/img/达仁科技.jpg b/dist/img/达仁科技.jpg deleted file mode 100644 index b898f07e..00000000 Binary files a/dist/img/达仁科技.jpg and /dev/null differ diff --git a/dist/img/逆水行舟.jpg b/dist/img/逆水行舟.jpg deleted file mode 100644 index e8ad08da..00000000 Binary files a/dist/img/逆水行舟.jpg and /dev/null differ diff --git a/dist/img/错误.jpg b/dist/img/错误.jpg deleted file mode 100644 index c36588bd..00000000 Binary files a/dist/img/错误.jpg and /dev/null differ diff --git a/dist/img/长沙利奥软件.jpg b/dist/img/长沙利奥软件.jpg deleted file mode 100644 index 66ba54a2..00000000 Binary files a/dist/img/长沙利奥软件.jpg and /dev/null differ diff --git a/dist/img/阿晨.jpg b/dist/img/阿晨.jpg deleted file mode 100644 index e12fdce5..00000000 Binary files a/dist/img/阿晨.jpg and /dev/null differ diff --git a/dist/img/雨馨.jpg b/dist/img/雨馨.jpg deleted file mode 100644 index 9db35a24..00000000 Binary files a/dist/img/雨馨.jpg and /dev/null differ diff --git a/dist/img/风格.jpg b/dist/img/风格.jpg deleted file mode 100644 index 5536343f..00000000 Binary files a/dist/img/风格.jpg and /dev/null differ diff --git a/dist/js/app.js b/dist/js/app.js index 34712d90..e3305110 100644 --- a/dist/js/app.js +++ b/dist/js/app.js @@ -1 +1 @@ -(function(e){function t(t){for(var o,i,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,o,i,a=0,r=0)=>{let c=!1;if(n&&(c=n(e,t,i,a,r)),!c&&e.children&&e.children.length>0){let t=a+1;e.children.forEach((i,a)=>{l(i,e,n,o,!1,t,a)})}o&&o(e,t,i,a,r)},c=(e,t)=>{let n=[e],o=!1;"stop"===t(e,null)&&(o=!0);while(n.length){if(o)break;let e=n.shift();e.children&&e.children.length&&e.children.forEach(i=>{o||(n.push(i),"stop"===t(i,e)&&(o=!0))})}},d=(e,t,n,o)=>{let i=[],a=e/t,r=n/o;return i=a>r?[a*o,o]:[n,n/a],i},s=(e,t,n,o)=>{let i=e/t,a=[];if(n&&o)if(e<=n&&t<=o)a=[e,t];else{let e=n/o;a=i>e?[i*o,o]:[n,n/i]}else n?a=e<=n?[e,t]:[n,n/i]:o&&(a=t<=o?[e,t]:[i*o,o]);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=ze(e.data);t.forEach(e=>{e.isActive=!1})}return e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,o)=>{e.children[o]=p({},t,n)}),e},m=(e,t,n=!1,o=!0)=>(e.data=h(t.nodeData?t.nodeData.data:t.data),o?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,i)=>{e.children[i]=m({},t,n,o)}):t.nodeData&&t.nodeData.children&&t.nodeData.children.length>0&&t.nodeData.children.forEach((t,i)=>{e.children[i]=m({},t,n,o)}),e),f=(e,t=!1)=>new Promise((n,o)=>{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 o=e.getContext("2d");o.drawImage(i,0,0,i.width,i.height),t?e.toBlob(e=>{n(e)}):n(e.toDataURL())}catch(e){o(e)}},i.onerror=e=>{o(e)},i.src=e}),g=e=>{if(!/^data:/.test(e))return e;let[t,n]=e.split(","),o=/^data:[^/]+\/([^;]+);/.exec(t),i=o[1];return{type:i,base64:n}},v=(e,t)=>{let n=document.createElement("a");n.href=e,n.download=t,n.click()},T=(e,t=300,n)=>{let o=null;return(...i)=>{o||(o=setTimeout(()=>{e.call(n,...i),o=null},t))}},x=(e,t=(()=>{}))=>{let n=0,o=e.length;if(o<=0)return t();let i=()=>{n>=o?t():(e[n](),setTimeout(()=>{n++,i()},0))};i()},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:o,fontFamily:i})=>{const a=A({italic:t,bold:n,fontSize:o,fontFamily:i});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:o})=>`${e?"italic ":""} ${t?"bold ":""} ${n}px ${o} `,C=function(e,t){let n=!1,o=null,i=()=>{n=!1,t?e.call(t):e()};if("undefined"!==typeof MutationObserver){let e=1,t=new MutationObserver(i),n=document.createTextNode(e);t.observe(n,{characterData:!0}),o=function(){e=(e+1)%2,n.data=e}}else o=setTimeout;return function(){n||(n=!0,o(i,0))}},E=(e,t)=>{let n=e.elRect,{scaleX:o,scaleY:i,translateX:a,translateY:r}=e.draw.transform(),{left:l,top:c,width:d,height:s}=t,u=(l+d)*o+a,h=(c+s)*i+r;l=l*o+a,c=c*i+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 O=null;const N=e=>(O||(O=document.createElement("div")),O.innerHTML=e,O.textContent),S=e=>new Promise((t,n)=>{let o=new FileReader;o.onload=e=>{t(e.target.result)},o.onerror=e=>{n(e)},o.readAsDataURL(e)});const L=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(o["a"])(),R=e=>new Promise((t,n)=>{let o=new FileReader;o.readAsDataURL(e),o.onload=async e=>{let n=e.target.result,o=await L(n);t({url:n,size:o})},o.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),F=e=>null===e||void 0===e||""===e,z=e=>e.replaceAll(/(<[^\s]+)\s+style=["'][^'"]+["']\s*(>)/g,"$1$2");let D=null;const P=(e,t,n)=>{D||(D=document.createElement("div")),D.innerHTML=e;let o=e=>{let i=e.childNodes;i.forEach(e=>{1===e.nodeType&&(e.tagName.toLowerCase()===t?e.style.cssText=n:o(e))})};return o(D),D.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 o=e=>{let i=e.childNodes;i.forEach(i=>{1===i.nodeType?o(i):3===i.nodeType&&e.replaceChild(document.createTextNode(i.nodeValue.replaceAll(t,n)),i)})};return o(H),H.innerHTML};const G=e=>(e=String(e).replaceAll(/\s+/g,""),["#fff","#ffffff","#FFF","#FFFFFF","rgb(255,255,255)"].includes(e)||/rgba\(255,255,255,[^)]+\)/.test(e)),Y=e=>(e=String(e).replaceAll(/\s+/g,""),["","transparent"].includes(e)||/rgba\(\d+,\d+,\d+,0\)/.test(e)),$=e=>{let{lineColor:t,root:n,second:o,node:i}=e,a=[t,n.fillColor,n.color,o.fillColor,o.color,i.fillColor,i.color,n.borderColor,o.borderColor,i.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 Z=null;const q=e=>{Z||(Z=document.createElement("div")),Z.innerHTML=e;const t=Z.childNodes;let n="";for(let o=0;o{K||(K=document.createElement("div")),K.innerHTML=e;const t=K.childNodes;let n=[],o="";for(let i=0;i`

${me(e)}

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

${me(e)}

`).join(""),t.length>0){e=e.replace(/\$smmformula\$/g,''),J.innerHTML=e;const n=J.querySelectorAll(".smmformula");Array.from(n).forEach((e,n)=>{e.parentNode.replaceChild(t[n],e)}),e=J.innerHTML}return e},X=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),ee=(e,t)=>{const n={};return Object.keys(t).forEach(o=>{const i=e[o],a=t[o];if(_(i)===_(a)){if("Object"===_(i)){if(JSON.stringify(i)!==JSON.stringify(a))return void(n[o]=a)}else if(i!==a)return void(n[o]=a)}else n[o]=a}),n},te=e=>!/^_/.test(e)&&!i["g"].includes(e),ne=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},[]),oe=e=>{let t=[];return e.forEach(n=>{e.find(e=>e.uid!==n.uid&&e.isAncestor(n))||t.push(n)}),t},ie=e=>{const t={},n={};e.forEach(e=>{const o=e.parent;if(o){const i=o.uid;n[i]=o;const a=e.getIndexInBrothers(),r={node:e,index:a};t[i]?t[i].find(e=>e.index===r.index)||t[i].push(r):t[i]=[r]}});const o=[];return Object.keys(t).forEach(e=>{if(t[e].length>1){const i=t[e].map(e=>e.index).sort((e,t)=>e-t);o.push({node:n[e],range:[i[0],i[i.length-1]]})}else o.push({node:t[e][0].node})}),o},ae=(e,t,n,o,i,a,r,l)=>t>i&&a>e&&o>r&&l>n,re=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),n.collapse(),t.removeAllRanges(),t.addRange(n)},le=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)},ce=(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},de=(e,t=!1,n=null)=>{const o=e=>{e.forEach(e=>{e.data||(e.data={}),(t||F(e.data.uid))&&(e.data.uid=I()),n&&n(e),e.children&&e.children.length>0&&o(e.children)})};return o(e),e},se=e=>e?Array.isArray(e)?e:[e]:[],ue=e=>e.parent?e.parent.nodeData.children.findIndex(t=>t.data.uid===e.uid):0,he=(e,t)=>t.findIndex(t=>t.uid===e.uid),pe=e=>{let t=0;for(let i=0;i([["&","&"],["<","<"],[">",">"]].forEach(t=>{e=e.replace(new RegExp(t[0],"g"),t[1])}),e),fe=(e,t)=>{const n=_(e);if(n!==_(t))return!1;if("Object"===n){const n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(let i=0;i{navigator.clipboard&&navigator.clipboard.writeText(JSON.stringify(e))},ve=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}},Te=e=>{if(!e||!e.parent)return;const t=ue(e);-1!==t&&e.parent.nodeData.children.splice(t,1)},xe=e=>(i["h"].forEach(t=>{e=e.replaceAll(new RegExp(`<${t}([^>]*)>`,"g"),`<${t} $1 />`)}),e),ke=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;nt.uid===e[n].uid))return!1;return!0},be=()=>{const e=navigator.userAgent.match(/\s+Chrome\/(.*)\s+/);return e&&e[1]?Number.parseFloat(e[1]):""},ye=e=>({simpleMindMap:!0,data:e}),we=e=>{let t=null;if("string"===typeof e)try{const n=JSON.parse(e);"object"===typeof n&&n.simpleMindMap&&(t=n.data)}catch(o){}else"object"===typeof e&&e.simpleMindMap&&(t=e.data);const n=!!t;return{isSmm:n,data:n?t:String(e)}},Ae=(e,t)=>{e.preventDefault();const n=window.getSelection();if(!n.rangeCount)return;n.deleteFromDocument(),t=t||e.clipboardData.getData("text"),t=N(t),t=t.replaceAll(/\n/g,"");const o=document.createTextNode(t);n.getRangeAt(0).insertNode(o),n.collapseToEnd()},Ce=e=>{const t={},n=(e,o)=>{const i=e.data.uid;o&&o.children.push(i),t[i]={isRoot:!o,data:{...e.data},children:[]},e.children&&e.children.length>0&&e.children.forEach(e=>{n(e,t[i])})};return n(e,null),t},Ee=(e,t,n,o)=>Math.sqrt(Math.pow(e-n,2)+Math.pow(t-o,2)),Oe=(e,t)=>{const n=e.x+e.width/2,o=e.y+e.height/2,i=t.x+t.width/2,a=t.y+t.height/2;return ni&&oi&&o>a?"right-bottom":na?"left-bottom":ni&&o===a?"right":n===i&&oa?"bottom":"overlap"},Ne=({addContentToHeader:e,addContentToFooter:t})=>{const n=[];let o=null,i=0,a=null,r=0;const l=(e,t)=>{if("function"===typeof e){const o=e();if(!o)return;const{el:i,cssText:a,height:r}=o;if(i instanceof HTMLElement){De(i);const e=Fe({el:i,height:r});t(e,r)}a&&n.push(a)}};return l(e,(e,t)=>{o=e,i=t}),l(t,(e,t)=>{a=e,r=t}),{cssTextList:n,header:o,headerHeight:i,footer:a,footerHeight:r}},Se=(e,t=0,n=0,o=0,i=0,a=!1,r=!1)=>{let l=1/0,c=-1/0,d=1/0,s=-1/0;const u=(e,t)=>{if((!t||!a)&&e.group)try{const{x:t,y:n,width:o,height:i}=e.group.findOne(".smm-node-shape").rbox();tc&&(c=t+o),ns&&(s=n+i)}catch(n){}!r&&e._generalizationList.length>0&&e._generalizationList.forEach(e=>{u(e.generalizationNode)}),e.children&&e.children.forEach(e=>{u(e)})};return u(e,!0),l=l-t+o,d=d-n+i,c=c-t+o,s=s-n+i,{left:l,top:d,width:c-l,height:s-d}},Le=(e,t=0,n=0,o=0,i=0)=>{let a=1/0,r=-1/0,l=1/0,c=-1/0;return e.forEach(e=>{const{left:d,top:s,width:u,height:h}=Se(e,t,n,o,i,!1,!0);dr&&(r=d+u),sc&&(c=s+h)}),{left:a,top:l,width:r-a,height:c-l}},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()},Fe=({el:e,width:t,height:n})=>{const o=new r["c"];return void 0!==t&&o.width(t),void 0!==n&&o.height(n),o.add(e),o},ze=e=>{const t=e.generalization;return t?Array.isArray(t)?t:[t]:[]},De=e=>{e.setAttribute("xmlns","http://www.w3.org/1999/xhtml")},Pe=e=>(e=[...e],e.sort((e,t)=>e.sortIndex-t.sortIndex),e)},"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 h})),n.d(t,"e",(function(){return p})),n.d(t,"d",(function(){return m})),n.d(t,"f",(function(){return f})),n.d(t,"b",(function(){return g})),n.d(t,"g",(function(){return v})),n.d(t,"c",(function(){return T}));var o=n("5848"),i=n("1e42"),a=n("2b0e"),r=n("c0d6");const l="SIMPLE_MIND_MAP_DATA",c="SIMPLE_MIND_MAP_LANG",d="SIMPLE_MIND_MAP_LOCAL_CONFIG";let s=null;const u=(e,t)=>t?(e.data=Object(i["qb"])(t.data),e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,n)=>{e.children[n]=u({},t)}),e):null,h=()=>{if(window.takeOverApp)return s=window.takeOverAppMethods.getMindMapData(),s;if(r["a"].state.isHandleLocalFile)return a["default"].prototype.getCurrentData();let e=localStorage.getItem(l);if(null===e)return Object(i["qb"])(o["a"]);try{return JSON.parse(e)}catch(t){return Object(i["qb"])(o["a"])}},p=e=>{try{let t=null;if(t=window.takeOverApp?s:h(),t.root=u({},e),window.takeOverApp)return s=t,void window.takeOverAppMethods.saveMindMapData(t);if(a["default"].prototype.$bus.$emit("write_local_file",t),r["a"].state.isHandleLocalFile)return;let n=JSON.stringify(t);localStorage.setItem(l,n)}catch(t){console.log(t)}},m=e=>{try{let t=null;if(t=window.takeOverApp?s:h(),t={...t,...e},window.takeOverApp)return s=t,void window.takeOverAppMethods.saveMindMapData(t);if(a["default"].prototype.$bus.$emit("write_local_file",t),r["a"].state.isHandleLocalFile)return;let n=JSON.stringify(t);localStorage.setItem(l,n)}catch(t){console.log(t)}},f=e=>{window.takeOverApp?window.takeOverAppMethods.saveLanguage(e):localStorage.setItem(c,e)},g=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLanguage()||"zh";let e=localStorage.getItem(c);return e||(f("zh"),"zh")},v=e=>{if(window.takeOverApp)return window.takeOverAppMethods.saveLocalConfig(e);localStorage.setItem(d,JSON.stringify(e))},T=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLocalConfig();let e=localStorage.getItem(d);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 o})),n.d(t,"a",(function(){return i})),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 o=[{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}],i={CHANGE_THEME:"changeTheme",CHANGE_LAYOUT:"changeLayout",SET_DATA:"setData",TRANSFORM_TO_NORMAL_NODE:"transformAllNodesToNormalNode",MODE:{READONLY:"readonly",EDIT:"edit"},LAYOUT:{LOGICAL_STRUCTURE:"logicalStructure",LOGICAL_STRUCTURE_LEFT:"logicalStructureLeft",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"},TAG_POSITION:{RIGHT:"right",BOTTOM:"bottom"}},a={[i.INIT_ROOT_NODE_POSITION.LEFT]:0,[i.INIT_ROOT_NODE_POSITION.TOP]:0,[i.INIT_ROOT_NODE_POSITION.RIGHT]:1,[i.INIT_ROOT_NODE_POSITION.BOTTOM]:1,[i.INIT_ROOT_NODE_POSITION.CENTER]:.5},r=[{name:"逻辑结构图",value:i.LAYOUT.LOGICAL_STRUCTURE},{name:"向左逻辑结构图",value:i.LAYOUT.LOGICAL_STRUCTURE_LEFT},{name:"思维导图",value:i.LAYOUT.MIND_MAP},{name:"组织结构图",value:i.LAYOUT.ORGANIZATION_STRUCTURE},{name:"目录组织图",value:i.LAYOUT.CATALOG_ORGANIZATION},{name:"时间轴",value:i.LAYOUT.TIMELINE},{name:"时间轴2",value:i.LAYOUT.TIMELINE2},{name:"竖向时间轴",value:i.LAYOUT.VERTICAL_TIMELINE},{name:"鱼骨图",value:i.LAYOUT.FISHBONE}],l=[i.LAYOUT.LOGICAL_STRUCTURE,i.LAYOUT.LOGICAL_STRUCTURE_LEFT,i.LAYOUT.MIND_MAP,i.LAYOUT.CATALOG_ORGANIZATION,i.LAYOUT.ORGANIZATION_STRUCTURE,i.LAYOUT.TIMELINE,i.LAYOUT.TIMELINE2,i.LAYOUT.VERTICAL_TIMELINE,i.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","notation","outerFrame"],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 o=n("2b0e"),i=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:"course29",title:"局域网docker部署解决HTTPS问题的一种方法"},{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:"outerFrame",title:"OuterFrame插件"},{path:"handDrawnLikeStyle",title:"HandDrawnLikeStyle收费插件"},{path:"notation",title:"Notation收费插件"},{path:"help1",title:"概要/关联线"},{path:"help2",title:"客户端"},{path:"help3",title:"打开预览在线文件"},{path:"help4",title:"复制粘贴"},{path:"help5",title:"导出"},{path:"help6",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:"outerFrame",title:"OuterFrame plugin"},{path:"handDrawnLikeStyle",title:"HandDrawnLikeStyle chargeable plugin"},{path:"notation",title:"Notation 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(29).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","notation","outerFrame","xmind","markdown","utils"],m=new Array(6).fill(0).map((e,t)=>"help"+(t+1));const f=(e,t)=>{let n=d.find(t=>t.lang===e),o=n.children;return t.filter(e=>o.find(t=>t.path===e)).map(e=>({path:e,name:o.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,o){return t("div",{key:o,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:o+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=[],O={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])}}},N=O,S=(n("2f42"),Object(y["a"])(N,C,E,!1,null,"73f8f4b5",null)),L=S.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,o){return t("div",{key:n.title+o,staticClass:"catalogItem",class:{active:n.title===e.activeCatalog},on:{click:function(t){return e.scrollTo(n,o)}}},[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),o=/^\/(doc|help)\/[^\/]+\/([^\/]+)/.exec(t);if(!e&&!t||n[2]!==o[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),o=this.list.findIndex(e=>e.title===t);n&&(this.activeCatalog=n.title,this.activeCatalogIndex=o,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&&(!o||this.scrollTop{try{this.$refs.doc.scrollTop=e}catch(t){console.log(t)}})},onScroll(){this.scrollTop=this.$refs.doc.scrollTop}}}),P=D,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`)}))}))];o["default"].use(i["a"]);const G=[{path:"/index",name:"Index",component:()=>n.e("chunk-47ab6502").then(n.bind(null,"9684"))},{path:"/",name:"Edit",component:()=>n.e("chunk-392e6b57").then(n.bind(null,"5fca"))},...j("doc","introduction"),...j("help","help1")],Y=new i["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 o=n("2b0e"),i=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,i,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");o["default"].config.productionTip=!1;const T=new o["default"];o["default"].prototype.$bus=T,o["default"].use(m.a),o["default"].use(f["a"]);const x=()=>{g["a"].locale=Object(v["b"])(),new o["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 o=()=>({image:"/enJFNMHnedQTYTESGfDkctCp2.jpeg",imageTitle:"图片名称",imageSize:{width:1e3,height:563},icon:["priority_1"],tag:["标签1","标签2"],hyperlink:"http://lxqnsys.com/",hyperlinkTitle:"理想青年实验室",note:"理想青年实验室\n一个有意思的角落"}),i=(o(),o(),{root:{data:{text:"根节点"},children:[{data:{text:"二级节点",generalization:{text:"概要"}},children:[{data:{text:"分支主题"},children:[]},{data:{text:"分支主题"},children:[]}]}]}});t["a"]={...i,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 o=n("2b0e"),i=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(Beta)",openPerformance:"Enable performance mode",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",belowNode:"Display below nodes",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",edge:"Edge",rainbowLines:"Rainbow lines",notUseRainbowLines:"Not use rainbow lines",outerFramePadding:"Outer frame padding"},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",copyToClipboard:"Copy to clipboard",copyToSmm:"SMM",copyToJson:"JSON",copyToMarkdown:"Markdown",copyToTxt:"Txt",copyToPng:"Png",copySuccess:"Copy success",copyFail:"Copy fail"},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",xmindCanvasSelectDialogTitle:"Select the canvas to import"},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",outerFrame:"Outer frame",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",newFileTip:"Please export the currently edited file before creating a new one, Beware of content loss",openFileTip:"Please export the currently edited file before opening it, Beware of content loss"},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"},annotation:{mark:"Mark",show:"Show mark",type:"Type",color:"Color",lineWidth:"Line width",padding:"Padding",animate:"Animate"},nodeOuterFrame:{outerFrameSetting:"Setting",deleteOuterFrame:"Delete outer frame",boxStyle:"Box style",boxColor:"Box color",fillColor:"Fill color"},nodeTagStyle:{placeholder:"Please enter the tag content",delete:"Delete this tag"}},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:"是否开启节点自由拖拽",openPerformance:"开启性能模式(Beta)",watermark:"水印",showWatermark:"是否显示水印",watermarkDefaultText:"水印文字",onlyExport:"是否仅在导出时显示",watermarkText:"水印文字",watermarkTextColor:"文字颜色",watermarkLineSpacing:"水印行间距",watermarkTextSpacing:"水印文字间距",watermarkAngle:"旋转角度",watermarkTextOpacity:"文字透明度",watermarkTextFontSize:"文字字号",belowNode:"显示在节点下方",isEnableNodeRichText:"是否开启节点富文本编辑",mousewheelAction:"鼠标滚轮行为",zoomView:"缩放视图",moveViewUpDown:"上下移动视图",associativeLine:"关联线",associativeLineWidth:"粗细",associativeLineColor:"颜色",associativeLineActiveWidth:"激活粗细",associativeLineActiveColor:"激活颜色",mousewheelZoomActionReverse:"鼠标滚轮缩放",mousewheelZoomActionReverse1:"向前缩小向后放大",mousewheelZoomActionReverse2:"向前放大向后缩小",createNewNodeBehavior:"创建新节点的行为",default:"激活新节点及进入编辑",notActive:"不激活新节点",activeOnly:"只激活新节点,不进入编辑",rootStyle:"根节点",associativeLineText:"关联线文字",fontFamily:"字体",fontSize:"字号",isShowScrollbar:"是否显示滚动条",isUseHandDrawnLikeStyle:"是否开启手绘风格",rootLineStartPos:"根节点连线起始位置",center:"中心",edge:"边缘",rainbowLines:"彩虹线条",notUseRainbowLines:"不使用彩虹线条",outerFramePadding:"外框内边距"},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:"导出该节点为图片",copyToClipboard:"复制到剪贴板",copyToSmm:"SMM",copyToJson:"JSON",copyToMarkdown:"Markdown",copyToTxt:"Txt",copyToPng:"图片",copySuccess:"复制成功",copyFail:"复制失败"},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:"文件解析失败",xmindCanvasSelectDialogTitle:"选择要导入的画布"},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:"附件",outerFrame:"外框",more:"更多",selectFileTip:"请选择文件",notSupportTip:"你的浏览器不支持该功能,或者当前页面非https协议",tip:"提示",editingLocalFileTipFront:"当前正在编辑你本机的【",editingLocalFileTipEnd:"】文件",fileContentError:"文件内容有误",fileOpenFailed:"文件打开失败",defaultFileName:"思维导图",creatingTip:"正在创建文件",directory:"目录",newFileTip:"新建文件前请先导出当前编辑的文件,谨防内容丢失",openFileTip:"打开文件前请先导出当前编辑的文件,谨防内容丢失"},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:"附件功能仅在客户端可用"},annotation:{mark:"标记",show:"显示标记",type:"类型",color:"颜色",lineWidth:"线宽",padding:"内边距",animate:"开启动画"},nodeOuterFrame:{outerFrameSetting:"外框设置",deleteOuterFrame:"删除外框",boxStyle:"边框样式",boxColor:"边框颜色",fillColor:"填充颜色"},nodeTagStyle:{placeholder:"请输入标签内容",delete:"删除此标签"}},l={zh:r,en:a};o["default"].use(i["a"]);const c=new i["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 o={"./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-3324bc8a"],"./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/outerFrame/index.vue":["d68a","chunk-2d21e7f1"],"./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-6f12c8fe"],"./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/course29/index.vue":["dfea","chunk-2d22a194"],"./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/help6/index.vue":["f8f3","chunk-2d22dd95"],"./zh/introduction/index.vue":["4710","chunk-18bcf3fc"],"./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/notation/index.vue":["00fd","chunk-02087b0a"],"./zh/outerFrame/index.vue":["0b4b","chunk-2d0ae956"],"./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-68de956c"],"./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 i(e){if(!n.o(o,e))return Promise.resolve().then((function(){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=o[e],i=t[0];return n.e(t[1]).then((function(){return n(i)}))}i.keys=function(){return Object.keys(o)},i.id="b834",e.exports=i},c0d6:function(e,t,n){"use strict";var o=n("2b0e"),i=n("2f62"),a=n("5848"),r=n("365c");o["default"].use(i["a"]);const l=new i["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:"",supportHandDrawnLikeStyle:!1,supportMark:!1,isDragOutlineTreeNode:!1},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},setSupportHandDrawnLikeStyle(e,t){e.supportHandDrawnLikeStyle=t},setSupportMark(e,t){e.supportMark=t},setIsDragOutlineTreeNode(e,t){e.isDragOutlineTreeNode=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 o,r,l=t[0],d=t[1],c=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},i.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 a=n("8a19");const l=(e,t,n,o,r,i=0,a=0,d=[])=>{let c=!1;if(n&&(c=n(e,t,r,i,a,d)),!c&&e.children&&e.children.length>0){let t=i+1;e.children.forEach((r,i)=>{l(r,e,n,o,!1,t,i,[...d,e])})}o&&o(e,t,r,i,a,d)},d=(e,t)=>{let n=[e],o=!1;"stop"===t(e,null)&&(o=!0);while(n.length){if(o)break;let e=n.shift();e.children&&e.children.length&&e.children.forEach(r=>{o||(n.push(r),"stop"===t(r,e)&&(o=!0))})}},c=(e,t,n,o)=>{let r=[],i=e/t,a=n/o;return r=i>a?[i*o,o]:[n,n/i],r},s=(e,t,n,o)=>{let r=e/t,i=[];if(n&&o)if(e<=n&&t<=o)i=[e,t];else{let e=n/o;i=r>e?[r*o,o]:[n,n/r]}else n?i=e<=n?[e,t]:[n,n/r]:o&&(i=t<=o?[e,t]:[r*o,o]);return i},u=e=>{e=e.replace(/
/gim,"\n");let t=document.createElement("div");return t.innerHTML=e,e=t.textContent,e},m=e=>{try{return JSON.parse(JSON.stringify(e))}catch(t){return null}},p=(e,t,n=!1)=>{if(e.data=m(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,o)=>{e.children[o]=p({},t,n)}),e},h=(e,t,n=!1,o=!0)=>(e.data=m(t.nodeData?t.nodeData.data:t.data),o?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,r)=>{e.children[r]=h({},t,n,o)}):t.nodeData&&t.nodeData.children&&t.nodeData.children.length>0&&t.nodeData.children.forEach((t,r)=>{e.children[r]=h({},t,n,o)}),e),f=(e,t=!1)=>new Promise((n,o)=>{const r=new Image;r.setAttribute("crossOrigin","anonymous"),r.onload=()=>{try{let e=document.createElement("canvas");e.width=r.width,e.height=r.height;let o=e.getContext("2d");o.drawImage(r,0,0,r.width,r.height),t?e.toBlob(e=>{n(e)}):n(e.toDataURL())}catch(e){o(e)}},r.onerror=e=>{o(e)},r.src=e}),g=e=>{if(!/^data:/.test(e))return e;let[t,n]=e.split(","),o=/^data:[^/]+\/([^;]+);/.exec(t),r=o[1];return{type:r,base64:n}},T=(e,t)=>{let n=document.createElement("a");n.href=e,n.download=t,n.click()},v=(e,t=300,n)=>{let o=null;return(...r)=>{o||(o=setTimeout(()=>{e.call(n,...r),o=null},t))}},y=(e,t=(()=>{}))=>{let n=0,o=e.length;if(o<=0)return t();let r=()=>{n>=o?t():(e[n](),setTimeout(()=>{n++,r()},0))};r()},w=e=>e*(Math.PI/180),O=e=>e.replace(/([a-z])([A-Z])/g,(...e)=>e[1]+"-"+e[2].toLowerCase());let E=null;const b=(e,{italic:t,bold:n,fontSize:o,fontFamily:r})=>{const i=A({italic:t,bold:n,fontSize:o,fontFamily:r});if(!E){const e=document.createElement("canvas");E=e.getContext("2d")}E.save(),E.font=i;const{width:a,actualBoundingBoxAscent:l,actualBoundingBoxDescent:d}=E.measureText(e);E.restore();const c=l+d;return{width:a,height:c}},A=({italic:e,bold:t,fontSize:n,fontFamily:o})=>`${e?"italic ":""} ${t?"bold ":""} ${n}px ${o} `,N=function(e,t){let n=!1,o=null,r=()=>{n=!1,t?e.call(t):e()};if("undefined"!==typeof MutationObserver){let e=1,t=new MutationObserver(r),n=document.createTextNode(e);t.observe(n,{characterData:!0}),o=function(){e=(e+1)%2,n.data=e}}else o=setTimeout;return function(){n||(n=!0,o(r,0))}},S=(e,t)=>{let n=e.elRect,{scaleX:o,scaleY:r,translateX:i,translateY:a}=e.draw.transform(),{left:l,top:d,width:c,height:s}=t,u=(l+c)*o+i,m=(d+s)*r+a;l=l*o+i,d=d*r+a;let p=0,h=0;return l<0&&(p=-l),u>n.width&&(p=-(u-n.width)),d<0&&(h=-d),m>n.height&&(h=-(m-n.height)),{isOuter:0!==p||0!==h,offsetLeft:p,offsetTop:h}};let L=null;const x=e=>(L||(L=document.createElement("div")),L.innerHTML=e,L.textContent),k=e=>new Promise((t,n)=>{let o=new FileReader;o.onload=e=>{t(e.target.result)},o.onerror=e=>{n(e)},o.readAsDataURL(e)});const R=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(o["a"])(),C=e=>new Promise((t,n)=>{let o=new FileReader;o.readAsDataURL(e),o.onload=async e=>{let n=e.target.result,o=await R(n);t({url:n,size:o})},o.onerror=e=>{n(e)}}),F=e=>([[" "," "]].forEach(t=>{e=e.replaceAll(t[0],t[1])}),e),_=e=>Object.prototype.toString.call(e).slice(8,-1),M=e=>null===e||void 0===e||""===e,D=e=>e.replaceAll(/(<[^\s]+)\s+style=["'][^'"]+["']\s*(>)/g,"$1$2");let P=null;const U=(e,t,n)=>{P||(P=document.createElement("div")),P.innerHTML=e;let o=e=>{let r=e.childNodes;r.forEach(e=>{1===e.nodeType&&(e.tagName.toLowerCase()===t?e.style.cssText=n:o(e))})};return o(P),P.innerHTML};let z=null;const H=e=>{z||(z=document.createElement("div")),z.innerHTML=e;for(let t=z.childNodes,n=t.length;n--;)if(1==t[n].nodeType)return!0;return!1};let B=null;const G=(e,t,n)=>{B||(B=document.createElement("div")),B.innerHTML=e;let o=e=>{let r=e.childNodes;r.forEach(r=>{1===r.nodeType?o(r):3===r.nodeType&&e.replaceChild(document.createTextNode(r.nodeValue.replaceAll(t,n)),r)})};return o(B),B.innerHTML};const j=e=>(e=String(e).replaceAll(/\s+/g,""),["#fff","#ffffff","#FFF","#FFFFFF","rgb(255,255,255)"].includes(e)||/rgba\(255,255,255,[^)]+\)/.test(e)),Y=e=>(e=String(e).replaceAll(/\s+/g,""),["","transparent"].includes(e)||/rgba\(\d+,\d+,\d+,0\)/.test(e)),W=e=>{let{lineColor:t,root:n,second:o,node:r}=e,i=[t,n.fillColor,n.color,o.fillColor,o.color,r.fillColor,r.color,n.borderColor,o.borderColor,r.borderColor];for(let a=0;a{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 Z=null;const $=e=>{Z||(Z=document.createElement("div")),Z.innerHTML=e;const t=Z.childNodes;let n="";for(let o=0;o{J||(J=document.createElement("div")),J.innerHTML=e;const t=J.childNodes;let n=[],o="";for(let r=0;r`

${he(e)}

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

${he(e)}

`).join(""),t.length>0){e=e.replace(/\$smmformula\$/g,''),K.innerHTML=e;const n=K.querySelectorAll(".smmformula");Array.from(n).forEach((e,n)=>{e.parentNode.replaceChild(t[n],e)}),e=K.innerHTML}return e},Q=()=>/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),ee=(e,t)=>{const n={};return Object.keys(t).forEach(o=>{const r=e[o],i=t[o];if(_(r)===_(i)){if("Object"===_(r)){if(JSON.stringify(r)!==JSON.stringify(i))return void(n[o]=i)}else if(r!==i)return void(n[o]=i)}else n[o]=i}),n},te=e=>!/^_/.test(e)&&!r["g"].includes(e),ne=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},[]),oe=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 o=e.parent;if(o){const r=o.uid;n[r]=o;const i=e.getIndexInBrothers(),a={node:e,index:i};t[r]?t[r].find(e=>e.index===a.index)||t[r].push(a):t[r]=[a]}});const o=[];return Object.keys(t).forEach(e=>{if(t[e].length>1){const r=t[e].map(e=>e.index).sort((e,t)=>e-t);o.push({node:n[e],range:[r[0],r[r.length-1]]})}else o.push({node:t[e][0].node})}),o},ie=(e,t,n,o,r,i,a,l)=>t>r&&i>e&&o>a&&l>n,ae=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),n.collapse(),t.removeAllRanges(),t.addRange(n)},le=e=>{let t=window.getSelection(),n=document.createRange();n.selectNodeContents(e),t.removeAllRanges(),t.addRange(n)},de=(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},ce=(e,t=!1,n=null)=>{const o=e=>{e.forEach(e=>{e.data||(e.data={}),(t||M(e.data.uid))&&(e.data.uid=I()),n&&n(e),e.children&&e.children.length>0&&o(e.children)})};return o(e),e},se=e=>e?Array.isArray(e)?e:[e]:[],ue=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),pe=e=>{let t=0;for(let r=0;r([["&","&"],["<","<"],[">",">"]].forEach(t=>{e=e.replace(new RegExp(t[0],"g"),t[1])}),e),fe=(e,t)=>{const n=_(e);if(n!==_(t))return!1;if("Object"===n){const n=Object.keys(e),o=Object.keys(t);if(n.length!==o.length)return!1;for(let r=0;r{navigator.clipboard&&navigator.clipboard.writeText(JSON.stringify(e))},Te=async()=>{let e=null,t=null;if(navigator.clipboard){const n=await navigator.clipboard.read();if(n&&n.length>0)for(const o of n)for(const n of o.types)if(/^image\//.test(n))t=await o.getType(n);else if("text/plain"===n){const t=await o.getType(n);e=await t.text()}}return{text:e,img:t}},ve=e=>{if(!e||!e.parent)return;const t=ue(e);-1!==t&&e.parent.nodeData.children.splice(t,1)},ye=e=>(r["h"].forEach(t=>{e=e.replaceAll(new RegExp(`<${t}([^>]*)>`,"g"),`<${t} $1 />`)}),e),we=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;nt.uid===e[n].uid))return!1;return!0},Oe=()=>{const e=navigator.userAgent.match(/\s+Chrome\/(.*)\s+/);return e&&e[1]?Number.parseFloat(e[1]):""},Ee=e=>({simpleMindMap:!0,data:e}),be=e=>{let t=null;if("string"===typeof e)try{const n=JSON.parse(e);"object"===typeof n&&n.simpleMindMap&&(t=n.data)}catch(o){}else"object"===typeof e&&e.simpleMindMap&&(t=e.data);const n=!!t;return{isSmm:n,data:n?t:String(e)}},Ae=(e,t)=>{e.preventDefault();const n=window.getSelection();if(!n.rangeCount)return;n.deleteFromDocument(),t=t||e.clipboardData.getData("text"),t=x(t),t=t.replaceAll(/\n/g,"");const o=document.createTextNode(t);n.getRangeAt(0).insertNode(o),n.collapseToEnd()},Ne=e=>{const t={},n=(e,o)=>{const r=e.data.uid;o&&o.children.push(r),t[r]={isRoot:!o,data:{...e.data},children:[]},e.children&&e.children.length>0&&e.children.forEach(e=>{n(e,t[r])})};return n(e,null),t},Se=(e,t,n,o)=>Math.sqrt(Math.pow(e-n,2)+Math.pow(t-o,2)),Le=(e,t)=>{const n=e.x+e.width/2,o=e.y+e.height/2,r=t.x+t.width/2,i=t.y+t.height/2;return nr&&or&&o>i?"right-bottom":ni?"left-bottom":nr&&o===i?"right":n===r&&oi?"bottom":"overlap"},xe=({addContentToHeader:e,addContentToFooter:t})=>{const n=[];let o=null,r=0,i=null,a=0;const l=(e,t)=>{if("function"===typeof e){const o=e();if(!o)return;const{el:r,cssText:i,height:a}=o;if(r instanceof HTMLElement){Pe(r);const e=Me({el:r,height:a});t(e,a)}i&&n.push(i)}};return l(e,(e,t)=>{o=e,r=t}),l(t,(e,t)=>{i=e,a=t}),{cssTextList:n,header:o,headerHeight:r,footer:i,footerHeight:a}},ke=(e,t=0,n=0,o=0,r=0,i=!1,a=!1)=>{let l=1/0,d=-1/0,c=1/0,s=-1/0;const u=(e,t)=>{if((!t||!i)&&e.group)try{const{x:t,y:n,width:o,height:r}=e.group.findOne(".smm-node-shape").rbox();td&&(d=t+o),ns&&(s=n+r)}catch(n){}!a&&e._generalizationList.length>0&&e._generalizationList.forEach(e=>{u(e.generalizationNode)}),e.children&&e.children.forEach(e=>{u(e)})};return u(e,!0),l=l-t+o,c=c-n+r,d=d-t+o,s=s-n+r,{left:l,top:c,width:d-l,height:s-c}},Re=(e,t=0,n=0,o=0,r=0)=>{let i=1/0,a=-1/0,l=1/0,d=-1/0;return e.forEach(e=>{const{left:c,top:s,width:u,height:m}=ke(e,t,n,o,r,!1,!0);ca&&(a=c+u),sd&&(d=s+m)}),{left:i,top:l,width:a-i,height:d-l}},Ie=()=>document.documentElement.requestFullScreen?"fullscreenchange":document.documentElement.webkitRequestFullScreen?"webkitfullscreenchange":document.documentElement.mozRequestFullScreen?"mozfullscreenchange":document.documentElement.msRequestFullscreen?"msfullscreenchange":void 0,Ce=Ie(),Fe=e=>{e.requestFullScreen?e.requestFullScreen():e.webkitRequestFullScreen?e.webkitRequestFullScreen():e.mozRequestFullScreen&&e.mozRequestFullScreen()},_e=()=>{document.fullscreenElement&&(document.exitFullscreen?document.exitFullscreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.mozCancelFullScreen&&document.mozCancelFullScreen())},Me=({el:e,width:t,height:n})=>{const o=new a["c"];return void 0!==t&&o.width(t),void 0!==n&&o.height(n),o.add(e),o},De=e=>{const t=e.generalization;return t?Array.isArray(t)?t:[t]:[]},Pe=e=>{e.setAttribute("xmlns","http://www.w3.org/1999/xhtml")},Ue=e=>(e=[...e],e.sort((e,t)=>e.sortIndex-t.sortIndex),e)},"365c":function(e,t,n){"use strict";n.d(t,"a",(function(){return m})),n.d(t,"e",(function(){return p})),n.d(t,"d",(function(){return h})),n.d(t,"f",(function(){return f})),n.d(t,"b",(function(){return g})),n.d(t,"g",(function(){return T})),n.d(t,"c",(function(){return v}));var o=n("5848"),r=n("1e42"),i=n("2b0e"),a=n("c0d6");const l="SIMPLE_MIND_MAP_DATA",d="SIMPLE_MIND_MAP_LANG",c="SIMPLE_MIND_MAP_LOCAL_CONFIG";let s=null;const u=(e,t)=>t?(e.data=Object(r["qb"])(t.data),e.children=[],t.children&&t.children.length>0&&t.children.forEach((t,n)=>{e.children[n]=u({},t)}),e):null,m=()=>{if(window.takeOverApp)return s=window.takeOverAppMethods.getMindMapData(),s;if(a["a"].state.isHandleLocalFile)return i["default"].prototype.getCurrentData();let e=localStorage.getItem(l);if(null===e)return Object(r["qb"])(o["a"]);try{return JSON.parse(e)}catch(t){return Object(r["qb"])(o["a"])}},p=e=>{try{let t=null;if(t=window.takeOverApp?s:m(),t.root=u({},e),window.takeOverApp)return s=t,void window.takeOverAppMethods.saveMindMapData(t);if(i["default"].prototype.$bus.$emit("write_local_file",t),a["a"].state.isHandleLocalFile)return;let n=JSON.stringify(t);localStorage.setItem(l,n)}catch(t){console.log(t)}},h=e=>{try{let t=null;if(t=window.takeOverApp?s:m(),t={...t,...e},window.takeOverApp)return s=t,void window.takeOverAppMethods.saveMindMapData(t);if(i["default"].prototype.$bus.$emit("write_local_file",t),a["a"].state.isHandleLocalFile)return;let n=JSON.stringify(t);localStorage.setItem(l,n)}catch(t){console.log(t)}},f=e=>{window.takeOverApp?window.takeOverAppMethods.saveLanguage(e):localStorage.setItem(d,e)},g=()=>{if(window.takeOverApp)return window.takeOverAppMethods.getLanguage()||"zh";let e=localStorage.getItem(d);return e||(f("zh"),"zh")},T=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")},4013:function(e,t,n){"use strict";n.d(t,"i",(function(){return o})),n.d(t,"a",(function(){return r})),n.d(t,"d",(function(){return i})),n.d(t,"e",(function(){return a})),n.d(t,"f",(function(){return l})),n.d(t,"g",(function(){return d})),n.d(t,"b",(function(){return c})),n.d(t,"c",(function(){return s})),n.d(t,"h",(function(){return u}));const o=[{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}],r={CHANGE_THEME:"changeTheme",CHANGE_LAYOUT:"changeLayout",SET_DATA:"setData",TRANSFORM_TO_NORMAL_NODE:"transformAllNodesToNormalNode",MODE:{READONLY:"readonly",EDIT:"edit"},LAYOUT:{LOGICAL_STRUCTURE:"logicalStructure",LOGICAL_STRUCTURE_LEFT:"logicalStructureLeft",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"},TAG_POSITION:{RIGHT:"right",BOTTOM:"bottom"}},i={[r.INIT_ROOT_NODE_POSITION.LEFT]:0,[r.INIT_ROOT_NODE_POSITION.TOP]:0,[r.INIT_ROOT_NODE_POSITION.RIGHT]:1,[r.INIT_ROOT_NODE_POSITION.BOTTOM]:1,[r.INIT_ROOT_NODE_POSITION.CENTER]:.5},a=[{name:"逻辑结构图",value:r.LAYOUT.LOGICAL_STRUCTURE},{name:"向左逻辑结构图",value:r.LAYOUT.LOGICAL_STRUCTURE_LEFT},{name:"思维导图",value:r.LAYOUT.MIND_MAP},{name:"组织结构图",value:r.LAYOUT.ORGANIZATION_STRUCTURE},{name:"目录组织图",value:r.LAYOUT.CATALOG_ORGANIZATION},{name:"时间轴",value:r.LAYOUT.TIMELINE},{name:"时间轴2",value:r.LAYOUT.TIMELINE2},{name:"竖向时间轴",value:r.LAYOUT.VERTICAL_TIMELINE},{name:"鱼骨图",value:r.LAYOUT.FISHBONE}],l=[r.LAYOUT.LOGICAL_STRUCTURE,r.LAYOUT.LOGICAL_STRUCTURE_LEFT,r.LAYOUT.MIND_MAP,r.LAYOUT.CATALOG_ORGANIZATION,r.LAYOUT.ORGANIZATION_STRUCTURE,r.LAYOUT.TIMELINE,r.LAYOUT.TIMELINE2,r.LAYOUT.VERTICAL_TIMELINE,r.LAYOUT.FISHBONE],d=["text","image","imageTitle","imageSize","icon","tag","hyperlink","hyperlinkTitle","note","expand","isActive","generalization","richText","resetRichText","uid","activeStyle","associativeLineTargets","associativeLineTargetControlOffsets","associativeLinePoint","associativeLineText","attachmentUrl","attachmentName","notation","outerFrame","number","range"],c={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";var o=n("2b0e"),r=n("8c4f");o["default"].use(r["a"]);const i=[{path:"/",name:"Edit",component:()=>n.e("chunk-7ced27a5").then(n.bind(null,"5fca"))},{path:"/index",redirect:"/"},{path:"/doc/zh",component:()=>n.e("chunk-3222d6ee").then(n.bind(null,"f226"))}],a=new r["a"]({routes:i});t["a"]=a},"56d7":function(e,t,n){"use strict";n.r(t);var o=n("2b0e"),r=function(){var e=this,t=e._self._c;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},i=[],a={name:"App",components:{}},l=a,d=(n("36f1"),n("2877")),c=Object(d["a"])(l,r,i,!1,null,null,null),s=c.exports,u=n("41cb"),m=n("c0d6"),p=n("5c96"),h=n.n(p),f=(n("0fae"),n("9c65"),n("0808"),n("c71c")),g=n("9225"),T=n("365c");o["default"].config.productionTip=!1;const v=new o["default"];o["default"].prototype.$bus=v,o["default"].use(h.a),o["default"].use(f["a"]);const y=()=>{g["a"].locale=Object(T["b"])(),new o["default"]({render:e=>e(s),router:u["a"],store:m["a"],i18n:g["a"]}).$mount("#app")};window.takeOverApp?(window.initApp=y,window.$bus=v):y()},5848:function(e,t,n){"use strict";const o=()=>({image:"/enJFNMHnedQTYTESGfDkctCp2.jpeg",imageTitle:"图片名称",imageSize:{width:1e3,height:563},icon:["priority_1"],tag:["标签1","标签2"],hyperlink:"http://lxqnsys.com/",hyperlinkTitle:"理想青年实验室",note:"理想青年实验室\n一个有意思的角落"}),r=(o(),o(),{root:{data:{text:"根节点"},children:[{data:{text:"二级节点",generalization:{text:"概要"}},children:[{data:{text:"分支主题"},children:[]},{data:{text:"分支主题"},children:[]}]}]}});t["a"]={...r,theme:{template:"classic4",config:{}},layout:"logicalStructure",config:{}}},9225:function(e,t,n){"use strict";var o=n("2b0e"),r=n("a925"),i={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(Beta)",openPerformance:"Enable performance mode",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",belowNode:"Display below nodes",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",edge:"Edge",rainbowLines:"Rainbow lines",notUseRainbowLines:"Not use rainbow lines",outerFramePadding:"Outer frame padding"},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",copyToClipboard:"Copy to clipboard",copyToSmm:"SMM",copyToJson:"JSON",copyToMarkdown:"Markdown",copyToTxt:"Txt",copyToPng:"Png",copySuccess:"Copy success",copyFail:"Copy fail",number:"Number child nodes"},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",xmindCanvasSelectDialogTitle:"Select the canvas to import"},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",outerFrame:"Outer frame",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",newFileTip:"Please export the currently edited file before creating a new one, Beware of content loss",openFileTip:"Please export the currently edited file before opening it, Beware of content loss"},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",noResult:"No result"},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"},annotation:{mark:"Mark",show:"Show mark",type:"Type",color:"Color",lineWidth:"Line width",padding:"Padding",animate:"Animate"},nodeOuterFrame:{outerFrameSetting:"Setting",deleteOuterFrame:"Delete outer frame",boxStyle:"Box style",boxColor:"Box color",fillColor:"Fill color"},nodeTagStyle:{placeholder:"Please enter the tag content",delete:"Delete this tag"}},a={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:"是否开启节点自由拖拽",openPerformance:"开启性能模式(Beta)",watermark:"水印",showWatermark:"是否显示水印",watermarkDefaultText:"水印文字",onlyExport:"是否仅在导出时显示",watermarkText:"水印文字",watermarkTextColor:"文字颜色",watermarkLineSpacing:"水印行间距",watermarkTextSpacing:"水印文字间距",watermarkAngle:"旋转角度",watermarkTextOpacity:"文字透明度",watermarkTextFontSize:"文字字号",belowNode:"显示在节点下方",isEnableNodeRichText:"是否开启节点富文本编辑",mousewheelAction:"鼠标滚轮行为",zoomView:"缩放视图",moveViewUpDown:"上下移动视图",associativeLine:"关联线",associativeLineWidth:"粗细",associativeLineColor:"颜色",associativeLineActiveWidth:"激活粗细",associativeLineActiveColor:"激活颜色",mousewheelZoomActionReverse:"鼠标滚轮缩放",mousewheelZoomActionReverse1:"向前缩小向后放大",mousewheelZoomActionReverse2:"向前放大向后缩小",createNewNodeBehavior:"创建新节点的行为",default:"激活新节点及进入编辑",notActive:"不激活新节点",activeOnly:"只激活新节点,不进入编辑",rootStyle:"根节点",associativeLineText:"关联线文字",fontFamily:"字体",fontSize:"字号",isShowScrollbar:"是否显示滚动条",isUseHandDrawnLikeStyle:"是否开启手绘风格",rootLineStartPos:"根节点连线起始位置",center:"中心",edge:"边缘",rainbowLines:"彩虹线条",notUseRainbowLines:"不使用彩虹线条",outerFramePadding:"外框内边距"},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:"导出该节点为图片",copyToClipboard:"复制到剪贴板",copyToSmm:"SMM",copyToJson:"JSON",copyToMarkdown:"Markdown",copyToTxt:"Txt",copyToPng:"图片",copySuccess:"复制成功",copyFail:"复制失败",number:"编号其子节点"},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:"文件解析失败",xmindCanvasSelectDialogTitle:"选择要导入的画布"},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:"附件",outerFrame:"外框",more:"更多",selectFileTip:"请选择文件",notSupportTip:"你的浏览器不支持该功能,或者当前页面非https协议",tip:"提示",editingLocalFileTipFront:"当前正在编辑你本机的【",editingLocalFileTipEnd:"】文件",fileContentError:"文件内容有误",fileOpenFailed:"文件打开失败",defaultFileName:"思维导图",creatingTip:"正在创建文件",directory:"目录",newFileTip:"新建文件前请先导出当前编辑的文件,谨防内容丢失",openFileTip:"打开文件前请先导出当前编辑的文件,谨防内容丢失"},edit:{newFeatureNoticeTitle:"新特性提醒",newFeatureNoticeMessage:"本次更新支持了节点富文本编辑,但是存在一定缺陷,最主要的影响是导出为图片的时间和节点数量成正比,所以对导出需求比较依赖的话可以通过【基础样式】-【其他配置】-【是否开启节点富文本编辑】设置关掉富文本编辑模式。",root:"根节点",splitByWrap:"是否按换行自动分割节点?",tip:"提示",yes:"是",no:"否",exportError:"导出失败",dragTip:"在此释放以导入该文件"},mouseAction:{tip1:"当前:左键拖动画布,右键框选节点",tip2:"当前:左键框选节点,右键拖动画布"},search:{searchPlaceholder:"请输入查找内容",replacePlaceholder:"请输入替换内容",replace:"替换",replaceAll:"全部替换",cancel:"取消",noResult:"暂无结果"},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:"附件功能仅在客户端可用"},annotation:{mark:"标记",show:"显示标记",type:"类型",color:"颜色",lineWidth:"线宽",padding:"内边距",animate:"开启动画"},nodeOuterFrame:{outerFrameSetting:"外框设置",deleteOuterFrame:"删除外框",boxStyle:"边框样式",boxColor:"边框颜色",fillColor:"填充颜色"},nodeTagStyle:{placeholder:"请输入标签内容",delete:"删除此标签"}},l={zh:a,en:i};o["default"].use(r["a"]);const d=new r["a"]({messages:l});t["a"]=d},"9c65":function(e,t,n){},c0d6:function(e,t,n){"use strict";var o=n("2b0e"),r=n("2f62"),i=n("5848"),a=n("365c");o["default"].use(r["a"]);const l=new r["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:"",supportHandDrawnLikeStyle:!1,supportMark:!1,supportNumbers:!1,isDragOutlineTreeNode:!1},mutations:{setMindMapData(e,t){e.mindMapData=t},setIsHandleLocalFile(e,t){e.isHandleLocalFile=t},setLocalConfig(e,t){e.localConfig={...e.localConfig,...t},Object(a["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},setSupportHandDrawnLikeStyle(e,t){e.supportHandDrawnLikeStyle=t},setSupportMark(e,t){e.supportMark=t},setSupportNumbers(e,t){e.supportNumbers=t},setIsDragOutlineTreeNode(e,t){e.isDragOutlineTreeNode=t}},actions:{getUserMindMapData(e){try{let{data:t}={data:{data:{mindMapData:i["a"]}}};e.commit("setMindMapData",t.data)}catch(t){console.log(t)}}}});t["a"]=l},d82e:function(e,t,n){}}); \ No newline at end of file diff --git a/dist/js/chunk-02087b0a.js b/dist/js/chunk-02087b0a.js deleted file mode 100644 index e0a5c2a7..00000000 --- a/dist/js/chunk-02087b0a.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-02087b0a"],{"00fd":function(t,s,a){"use strict";a.r(s);var n=function(){var t=this;t._self._c;return t._m(0)},i=[function(){var t=this,s=t._self._c;return s("div",[s("h1",[t._v("Notation 收费插件")]),s("blockquote",[s("p",[t._v("关于收费")]),s("p",[t._v("mind-map 是一个 MIT 协议的开源项目,理论上只要保留 mind-map 的版权声明,无论是否商用都不收费,这个协议以后也不会改变。另外无论是在线版,还是客户端都不会考虑收费。但是为了项目的可持续发展,会通过一些方式来获取收益,比如现有的赞助方式。而收费插件是第二个方式,基本原则是基本功能、核心功能、必要功能不收费,而可有可无的附加功能可能会做成收费的。")]),s("p",[t._v("最后,收费仅针对开发者,如果仅是在线版或者客户端的思维导图用户是无需付费的,所有功能均可免费使用。")])]),s("p",[t._v("Notation 是第二个收费插件,功能是提供单个节点的标记功能,也就是可以在单个节点上加个手绘风格的圈、背景、删除线等等,支持动画效果,就像下面这样:")]),s("img",{staticStyle:{width:"900px"},attrs:{src:a("83cc")}}),s("p",[t._v("你也可以在在线版中进行体验,先激活节点,然后点击上方【标记】按钮添加标记。")]),s("p",[t._v("内部实现是通过"),s("a",{attrs:{href:"https://github.com/rough-stuff/rough-notation"}},[t._v("rough-notation")]),t._v("库,所以如果你有精力,也可以自己基于这个库来实现这个插件。")]),s("h2",[t._v("收费")]),s("p",[t._v("现阶段收费方式比较原始,通过扫码转账备注你要购买的插件,以及你的邮箱地址,然后会将插件文件发送到你的邮箱。购买请在充分的使用和考虑后进行,如果你对前端开发不太熟悉,不知道如何使用插件,那么请谨慎考虑购买,没有特殊原因不会退费。如果你发现了 bug,或者有需求,可以提交相关的 issue。")]),s("p",[t._v("价格:")]),s("p",[t._v("1.¥ 19.9,仅包含打包后的文件,即.cjs.min.js、.esm.min.js 两种格式的文件。")]),s("p",[t._v("2.¥ 29.9,包含未打包的源码和打包后的文件。")]),s("img",{staticStyle:{width:"300px"},attrs:{src:a("076b")}}),s("img",{staticStyle:{width:"300px"},attrs:{src:a("4968")}}),s("h2",[t._v("注册")]),s("p",[t._v("1.引用打包后的文件:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" MindMap "),s("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),s("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map'")]),t._v("\n"),s("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" Notation "),s("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),s("span",{staticClass:"hljs-string"},[t._v("'notation.cjs.min.js'")]),t._v("\n"),s("span",{staticClass:"hljs-comment"},[t._v("// 或 import Notation from 'notation.esm.min.js'")]),t._v("\n\nMindMap.usePlugin(Notation)\n")])]),s("p",[t._v("2.引用未打包的源码")]),s("p",[t._v("可以先进入到插件目录执行:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("npm link\n")])]),s("p",[t._v("然后进入到你的项目根目录执行:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("npm link simple-mind-map-plugin-notation\n")])]),s("p",[t._v("然后就可以直接导入进行使用:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" MindMap "),s("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),s("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map'")]),t._v("\n"),s("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" Notation "),s("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),s("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map-plugin-notation'")]),t._v("\n\nMindMap.usePlugin(Notation)\n")])]),s("p",[t._v("注册完且实例化"),s("code",[t._v("MindMap")]),t._v("后可通过"),s("code",[t._v("mindMap.notation")]),t._v("获取到该实例。")]),s("p",[t._v("注册该插件后,无需执行其他方法,手绘风格即可生效。")]),s("p",[t._v("如果你是使用 mindMap.addPlugin 方法来动态注册的组件,那么需要调用一次重新渲染的方法:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.addPlugin(Notation)\nmindMap.reRender()\n")])]),s("h2",[t._v("命令")]),s("p",[t._v("注册了本插件后会在思维导图实例上新增"),s("code",[t._v("SET_NOTATION")]),t._v("命令,给节点添加标记使用该命令:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.execCommand("),s("span",{staticClass:"hljs-string"},[t._v("'SET_NOTATION'")]),t._v(", appointNodes, show, config)\n")])]),s("p",[t._v("该命令可以传递三个参数:")]),s("ul",[s("li",[s("p",[s("code",[t._v("appointNodes")]),t._v(":给指定的节点实例添加标记,可以传单个节点实例,也可以传递一个节点实例数组,如果传空数组,则会给当前激活的节点添加标记;")])]),s("li",[s("p",[s("code",[t._v("show")]),t._v(":Boolean,必传,是否显示编辑;")])]),s("li",[s("p",[s("code",[t._v("config")]),t._v(":Object,可选,标记配置,对象格式,对象的详细字段如下:")])])]),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),s("th",[t._v("类型")]),s("th",[t._v("默认值")]),s("th",[t._v("描述")])])]),s("tbody",[s("tr",[s("td",[t._v("type")]),s("td",[t._v("String")]),s("td",[t._v("circle")]),s("td",[t._v("标记类型,可选值:underline(下划线)、box(边框)、circle(圆)、highlight(高亮)、strike-through(删除线)、crossed-off(叉)")])]),s("tr",[s("td",[t._v("color")]),s("td",[t._v("String")]),s("td",[t._v("思维导图实例化选项中的hoverRectColor配置")]),s("td",[t._v("颜色")])]),s("tr",[s("td",[t._v("strokeWidth")]),s("td",[t._v("Number")]),s("td",[t._v("1")]),s("td",[t._v("线宽")])]),s("tr",[s("td",[t._v("padding")]),s("td",[t._v("Number")]),s("td",[t._v("20")]),s("td",[t._v("内边距")])]),s("tr",[s("td",[t._v("animate")]),s("td",[t._v("Boolean")]),s("td",[t._v("true")]),s("td",[t._v("是否开启动画")])])])]),s("p",[t._v("示例:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-comment"},[t._v("// 给当前激活的节点添加一个圆类型的标记")]),t._v("\nmindMap.execCommand("),s("span",{staticClass:"hljs-string"},[t._v("'SET_NOTATION'")]),t._v(", [], "),s("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", {\n "),s("span",{staticClass:"hljs-attr"},[t._v("type")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'circle'")]),t._v(",\n "),s("span",{staticClass:"hljs-attr"},[t._v("color")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'red'")]),t._v("\n})\n")])]),s("p",[t._v("添加标记后数据会以"),s("code",[t._v("notation")]),t._v("为名称保存到节点的"),s("code",[t._v("data")]),t._v("数据中。")])])}],_={},v=_,o=a("2877"),p=Object(o["a"])(v,n,i,!1,null,null,null);s["default"]=p.exports},"076b":function(t,s,a){t.exports=a.p+"img/alipay.jpg"},4968:function(t,s,a){t.exports=a.p+"img/wechat.jpg"},"83cc":function(t,s,a){t.exports=a.p+"img/标记.jpg"}}]); \ No newline at end of file diff --git a/dist/js/chunk-18bcf3fc.js b/dist/js/chunk-18bcf3fc.js deleted file mode 100644 index 9a200e9d..00000000 --- a/dist/js/chunk-18bcf3fc.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-18bcf3fc"],{"04fd":function(t,i,e){t.exports=e.p+"img/buddy.jpg"},"076b":function(t,i,e){t.exports=e.p+"img/alipay.jpg"},"0b8c":function(t,i,e){t.exports=e.p+"img/南风.jpg"},"0f18":function(t,i,e){t.exports=e.p+"img/Alex.jpg"},"0f68":function(t,i,e){t.exports=e.p+"img/。.png"},"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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"},4669:function(t,i,e){t.exports=e.p+"img/晴空.jpg"},4710:function(t,i,e){"use strict";e.r(i);var c=function(){var t=this;t._self._c;return t._m(0)},A=[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:"checkbox17",checked:"true"}}),i("label",{attrs:{for:"checkbox17"}},[t._v("插件化架构,除核心功能外,其他功能作为插件提供,按需使用,减小打包体积")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox18",checked:"true"}}),i("label",{attrs:{for:"checkbox18"}},[t._v("支持逻辑结构图(向左、向右逻辑结构图)、思维导图、组织结构图、目录组织图、时间轴(横向、竖向)、鱼骨图等结构")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox19",checked:"true"}}),i("label",{attrs:{for:"checkbox19"}},[t._v("内置多种主题,允许高度自定义样式,支持注册新主题")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox20",checked:"true"}}),i("label",{attrs:{for:"checkbox20"}},[t._v("节点内容支持文本(普通文本、富文本)、图片、图标、超链接、备注、标签、概要、数学公式")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox21",checked:"true"}}),i("label",{attrs:{for:"checkbox21"}},[t._v("节点支持拖拽(拖拽移动、自由调整)、多种节点形状;支持扩展节点内容、支持使用 DDM 完全自定义节点内容")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox22",checked:"true"}}),i("label",{attrs:{for:"checkbox22"}},[t._v("支持画布拖动、缩放")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox23",checked:"true"}}),i("label",{attrs:{for:"checkbox23"}},[t._v("支持鼠标按键拖动选择和 Ctrl+左键两种多选节点方式")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox24",checked:"true"}}),i("label",{attrs:{for:"checkbox24"}},[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:"checkbox25",checked:"true"}}),i("label",{attrs:{for:"checkbox25"}},[t._v("支持快捷键、前进后退、关联线、搜索替换、小地图、水印、滚动条、手绘风格、彩虹线条")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox26",checked:"true"}}),i("label",{attrs:{for:"checkbox26"}},[t._v("提供丰富的配置,满足各种场景各种使用习惯")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox27",checked:"true"}}),i("label",{attrs:{for:"checkbox27"}},[t._v("支持协同编辑")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox28",checked:"true"}}),i("label",{attrs:{for:"checkbox28"}},[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(演示模式插件)、OuterFrame(外框插件)、HandDrawnLikeStyle(手绘风格插件)[收费]、Notation(节点标记插件)[收费]")])]),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:"checkbox29",checked:"true"}}),i("label",{attrs:{for:"checkbox29"}},[t._v("工具栏,支持插入节点、删除节点;编辑节点图片、图标、超链接、备注、标签、概要")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox30",checked:"true"}}),i("label",{attrs:{for:"checkbox30"}},[t._v("侧边栏,基础样式设置面板、节点样式设置面板、大纲面板、主题选择面板、结构选择面板")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox31",checked:"true"}}),i("label",{attrs:{for:"checkbox31"}},[t._v("导入导出功能;数据默认保存在浏览器本地存储,也支持直接创建、打开、编辑电脑本地文件")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox32",checked:"true"}}),i("label",{attrs:{for:"checkbox32"}},[t._v("右键菜单,支持展开、收起、整理布局等操作")])]),i("li",[i("input",{attrs:{type:"checkbox",id:"checkbox33",checked:"true"}}),i("label",{attrs:{for:"checkbox33"}},[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("在v0.10.4+版本新增了性能模式,只渲染画布可视区域内的节点,可以提升大数据量下的渲染速度,可以通过开启"),i("code",[t._v("openPerformance")]),t._v("实例化选项进行体验,在线Demo里可以通过打开【基础样式】-【开启性能模式】开关进行体验。")]),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("a",{attrs:{href:"https://naotu.baidu.com/"}},[t._v("百度脑图")]),t._v("、"),i("a",{attrs:{href:"https://www.zhixi.com/"}},[t._v("知犀思维导图")]),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("img",{staticStyle:{width:"300px"},attrs:{src:e("ae88")}}),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("0f18")}}),i("p",[t._v("Alex")])]),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("宏涛")])]),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("fb9af")}}),i("p",[t._v("最多5个字")])]),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("9592")}}),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("ea58")}}),i("p",[t._v("ZX")])]),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("dce9")}}),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("8a72")}}),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("b89c")}}),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("de65")}}),i("p",[t._v("Kyle")])]),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("afb9")}}),i("p",[t._v("lsytyrt")])]),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("c9b8")}}),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("04fd")}}),i("p",[t._v("buddy")])]),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("b68b")}}),i("p",[t._v("Tobin")])]),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("c8dc")}}),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("4669")}}),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("75a9")}}),i("p",[t._v("ccccs")])])]),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("0f68")}}),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("bb41")}}),i("p",[t._v("Jeffrey")])])])])}],r={},o=r,n=e("2877"),a=Object(n["a"])(o,c,A,!1,null,null,null);i["default"]=a.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,/9j/4AAQSkZJRgABAQAASABIAAD/4QBMRXhpZgAATU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAASqADAAQAAAABAAAASgAAAAD/wAARCABKAEoDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9sAQwACAgICAgIDAgIDBQMDAwUGBQUFBQYIBgYGBgYICggICAgICAoKCgoKCgoKDAwMDAwMDg4ODg4PDw8PDw8PDw8P/9sAQwECAwMEBAQHBAQHEAsJCxAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQ/90ABAAF/9oADAMBAAIRAxEAPwD97zDb4P7tfyFeS6F8U/BXiLx5rfw/sZU/tLRPswYEACU3MbSqIz/FhUYnHofSvU9QkhhsbiS5lFtEsbFpWIAQYOWJPAx1zX5Gfs+eFtK/4aPF5c/GXRvEMOn3Ly2llaSkXV08UUsEaMWUKfLjlYEKzkjPrkevhMNCrTqSlpZFJNvQ/WZoIf8Anmv5D/CsG71PTLN72OeMD7BCs8hCg5Rs8j1xtOfTiulYDIryDUr9L/xX4p02In/QdJjRiO7z+YQB6kBeR7ivMhG7Lilq2d4l/pUi2jRlG+3KHhAAy6lQwIGOmCDmqDX+imY24mhLgkFcjORXh3wTbWPFepN8Qri6ZtDgsYNM02BkKnMCKLiUg4+867R06Gu0vvB+v3dnLpjSW8cEpADh2LAAqQduwZOVJxu6sea6/ZqL5W9ilZPsdqdR0Ty/N8+DbnbnI6+lVJr7SCzoZYQYgSwyvAyAfyJA9jx1rhLzwR4ge6e9tp4AzxmJkZ2K7fmyd2zvuAAxwABk1lW3hLW3khsJF2DSpcxSHeqSxJG0Y3MVxukLBiU3AFAzAEharki1uQ+XuegQ6lpVzemxt13uEDBgmUIIBwH6EgEZHUVd2Rf3V/75rltD8N32lalPe3MsbpOd5CsxIYqqEcqAR8uc8EkngV1dZyUb6HG2r6H/0P1l/atsNR174I+IvCmg3y2Wr61A0ForP5ZncDcYVY4ALKCAM89O9fgf8NfhF8T5vG+mWGn6Nd6dfWl1G5nkRoEtjEwJkaQ4ChcZzntxX9Lvinwj4e8baNN4f8TWaXtjPjKPkEEdGUjBVgeQQQQa+f7D9lnwLY6j9q1LV9a1eyQhlsb2/eS1AByAVABYD0Yketfa5TnCwdCdLue1l+IhQnzS3PoG1vEvtPhvLSVbhZowyyLwr5HDD2J5Hsa/EP8Aam+L3jXwF45vtC0XxC90L+5Mt1PbZiETowxCjgksVAAORgc4HNffn7W/xh1H4feCo/DfgOY2ut38YFq0YXywgwoRMdGIwFABGcCvwU8aa419qLRatc3V7doSZY5CEEdy33yDySQevAye/FLKMHztzlseRKooJvoftv8AsbfFzQtc0C48H3msqL+JlkisrgoJQXAL+UwwHUn5iMAgk565r7kfrX82Xw3+I3iHwf4k8NfEi1m3XuhkwSi4MaRPACAVDnnJAwSeeBjpX7b/AAI/aR0f432mu3sWlyaRb6EYt9xI6tBIJFJO1hwCuDkHoCD3rkzHBOEnOOx5dPFxk+Vs+jZTwMH/AOvXgHjz40SeGNdg0Lw14Zv/ABTJbXRg1U2iEf2fHtRhI24ASAqxOFJPBr1nw14r8PeMNPOp+HL1L61SRomkjzgOhwQc45B9K/Nb9qrxr438PfEHwrdG7u/Cz6j4j/s+4gtr6YwXenDasczlGCKzqclQMqOpzSyvBqvW5JI7YuN77o/SbRtd0fxLpkOtaFdpe2U4O2SM5BIOCD6EHIIPIPBq3WB4P8LeF/Bfh630LwbAsGloXlQJIZd7Sku7FySWLMSSSTzWqVbPSvLkopvk2POqNJn/0f31BxWdqAjMEwkGUKHcM4yMHPPbjvWie/FfOn7Q3xj0X4S+DL251GKeS4vYZYoWjQMiSPGxXcSerbSFUZJbA4zmtqcZSdktx3XU/LF/FN7a+Nbv4mzTo/hrwtfvDpdpfTmVXdQVWMAlgyxYJB56j6183L4f8OeNfH1/4n8QwxWMF7cG7KiQBXQsC7EYAUHJ2jqTwKim0zX/ABpNb+HtIspYtF0SOW4Ee4yo0pfyzNJsGcHaCScD6DFeWeIfFKOZtPguQbhGKSyfKAqgbWORkMzdEUZCDuScj9Po0rfC7M+ax+KSPtCL9kTQPHR1HXfDWv6OsEk1yv2R5tk6RqCY2RACRhcE5468171+yjD4HvPhs3h/x7rjGXT76UXNhErqk5U7UllaNdzRuo+UHAIH4V+afh/43W/g/UkvotHjvJrXMa3KSvFcglCpO9ThgQcEEHPOeMV+nX7Cfh/x14shT4r61e2LeHGju7a1giG+7d5JFJSc4AVYCpCrzyxINeTjVVjTfO7o8TDV6dSslTR9w+EfiH4A1nUG8G+EHIawjBEcdtJDAiDjCsVVSR3Ar4D/AGn9M8LaV8QdCvdW0QXMd54mW4lWWcSPHKwUGeQqhCQHAAjZsAZ4GcV+oghgi/1MSpn+6ACfyxX5r/tf+LvEOkfEvwl4f0HVTY22s6nFbX0UGoiV5InKgh7QxjycgnDBiT7V5+U1LYhW0Pp6lR04XZ9xeBvCMXgrw6NIhvDepLNLchgAIlE7F9kQBIEa5woHGOldFWX4Z8MaZ4O0K28N6O9xJZ2YYRm5maeQBiTgu5JIBPA7DitYKMV4tR80m7mEpXZ//9L98pHEaPJgttBOFGScdgPWvz3hvrv9oX9o42Oo2Ri8O+A4LiRreVg6m5bdDAZFGVEhfc4BJwEXuTn69+I1x8QLuzfw78PLaOC8u0xJqNy5WK2RuCUABZ5MZIGAB1JzgVhfCb4SaN8JtKuYlum1DWNYkWW+vZeHuJUXAAX+FVUHAyT1JJJJPfRmoJy6mU9bLofgzqep698JtM+I3gfxBdtDFDqI0ydlJFzJAhaSNEPYS4ViT0Br45tLGBtOvtdvUIiUiO3UkjdLITg5xyFAJODyRiv1W/bY8Ea8fHXilLxBaab4vn0qO0WBgRJLE21ppyVJU4YgAEDgEntXmH7ZXw30DwbdeFvh74YtIzBpVhaSTuoAlCwwyNKcDruzuY4JJxjvn9Aw+KhZd2fnOYQk2+yPzlm+S0hiYYaQmQnvjoM1+x3/AATC+JkE2ieIPhReGNJrWT+0LXLYd0kOJBgnkKQDkc8818xfFH9kzQfCfw28C+LbHV57zXfHN9YQLZMqp9mguUJYADlscEMQOK+mvjj+zN/wpC98NfG74RTPYXOkXVhFfRxHCFHAV5GxyFYjDDOMMOOprjxmIpVYchw4OlVw9T2nY/WCZguPXpX5lftq7IfiT8PbmSO7aWPWYGC+bC8ZTKkeXEMSAnsWOD0Br9A9K8SWuv2Ns8E2w38ZCSxuCQTGCWTI6gtkZHBHINfn98efDfiW61Lw1YaN4cupW0vxYJ5J5w26RESOMTEpDsSGQrvLb3JYkkAnA+ewUnCqm2fTZhXTpXifenhzX77xFa3V9eaNc6IsVw8MUd0VEsqJjEm1SQobsCc4raPWuZ8JeM7Xxnp0upwQG2a3uJbWRS4kQvC20mOQY3oT91sDPTGa6TmvMqb7Howaavc//9P6F1H/AIKYeG3EkVpaOAAGViPmOckgduOma89H/BSKyvriym1K1kj8hZHZU5AlYbRjPPAJ/GvyEm++1VD2/wA9q/V/7Jw0Voj87xWaV09GfXHxu/aS1D4seIdNubm8nFhaGFhGCQVKuS3TqduOvfmvNPGHxXu/GPixtf1O5uJDAPLt2LnfgkAsTznC5AH+NeIr1/GpP4hWvsIQtFI+Nq4mpN3bPubxH+1FpXiLx74S1ie2kbSPCkQEETHnzYohHERjgYAOa991f9ufw34j0C50vUbZ3injVJIHGVkAZQTxjnbn9K/KBfv/AIGn/wAQrw6mHhZaGf16trqfp74e/bS0fStUtr0pIsVik6xIBgAOioo4PYDJ+legaj+3Z4YuYZIPmuYpoQZEmQOrSFl4wcgAKDjjnNfkZ/CKfXC6ML7GSxdePuqZ+r8H7cnhq31RXtka2sNyAQogARQDnaAABggEDpWtcf8ABQTRmuJWhiYRlmKj0GeK/Ik9RUo6VlKlE1w+NrNO7P/Z"},7215:function(t,i,e){t.exports=e.p+"img/布林.jpg"},7476:function(t,i,e){t.exports=e.p+"img/继龙.jpg"},"75a9":function(t,i,e){t.exports=e.p+"img/ccccs.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"},"8a72":function(t,i,e){t.exports=e.p+"img/木木.jpg"},"8d3e":function(t,i){t.exports="data:image/png;base64,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"},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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"},9592:function(t,i,e){t.exports=e.p+"img/雨馨.jpg"},"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"},ae88:function(t,i,e){t.exports=e.p+"img/qrcode.jpg"},afb9:function(t,i){t.exports="data:image/jpeg;base64,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h7ewD3Dntlfu/qK/W7xL4O8L+LNOfTfEmnw3du458xQfxz1H515z8M/gZ4G+GOqalrXhRZC2oqEwz7gq5z8lfa4nj14zL50pxcZ2tpt5nzNLhJ4fFwnTldX1Pco1CrgHNSU1c45p1fiCP19K2gUUUUxhRRRQAUUUUAFFFFAH/9X9/KKKKACiiigAooooAKKKKAPBPi3qOpXeoeG/AOlXkmnHxJdPFPPHxIkEMTTOqHsW2Yz/AHSQOa4rxj4Y+Fvg5VSx8Qy+GdctBHJHcPcSyAgN/wAtUYlWU4Oc4PuK9Y+JPgrUvFNvp2reHZltdd0OY3No0q5jZmXY8b47OhK5HSvPfEafFfx3pF14SuvC9tpf26MwS30kwkRI3+88YA3kjspAB717mHlHkg4tJJ6+tz5uvTleUuXV7BcxP8VviFf+G7+/mHh7w/bW0rJbymI3VzOu5WLJh9iqG4BGcijX/D6fCTXdA1fwlcTppurX8On3llNM0sZ89tscibySrIxyQDyK2tS8FeK/CHiFfGfgWKLUJprSKzvrSVjEZ1h4SVDggOnPBwCDVX+wPiD8Q9e0e/8AF9hFoOj6NOt2tqriWae4RspvI+VUTCtgZ3HINawcbpprltqvOxPJNKV4vmvp6XPokHNLRgUV88fTBRRRQAUUUUAFFFFABRRRQB//1v38ooooAKKKKACiiigAooooAKaDnIwRinUUAFNABx7U6igAooooAKKKKACiiigAooooAKKKKAP/1/38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/0P38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/0f38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/2Q=="},b68b:function(t,i,e){t.exports=e.p+"img/Tobin.jpg"},b89c:function(t,i,e){t.exports=e.p+"img/好名字.jpg"},bb41:function(t,i,e){t.exports=e.p+"img/Jeffrey.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"},c8dc:function(t,i,e){t.exports=e.p+"img/夏虫不语冰.jpg"},c9b8:function(t,i,e){t.exports=e.p+"img/秀树因馨雨.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"},dce9:function(t,i,e){t.exports=e.p+"img/峰.jpg"},de65:function(t,i,e){t.exports=e.p+"img/Kyle.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"},ea58:function(t,i,e){t.exports=e.p+"img/ZX.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"},fb9af:function(t,i,e){t.exports=e.p+"img/最多5个字.jpg"},fc4d:function(t,i,e){t.exports=e.p+"img/汪津合.jpg"}}]); \ No newline at end of file diff --git a/dist/js/chunk-1c3bec15.js b/dist/js/chunk-1c3bec15.js deleted file mode 100644 index 188dd5c3..00000000 --- a/dist/js/chunk-1c3bec15.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-1c3bec15"],{"076b":function(s,a,t){s.exports=t.p+"img/alipay.jpg"},4968:function(s,a,t){s.exports=t.p+"img/wechat.jpg"},d025:function(s,a,t){s.exports=t.p+"img/手绘风格.png"},d2d5:function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},i=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("HandDrawnLikeStyle 收费插件")]),a("blockquote",[a("p",[s._v("关于收费")]),a("p",[s._v("mind-map 是一个 MIT 协议的开源项目,理论上只要保留 mind-map 的版权声明,无论是否商用都不收费,这个协议以后也不会改变。另外无论是在线版,还是客户端都不会考虑收费。但是为了项目的可持续发展,会通过一些方式来获取收益,比如现有的赞助方式。而收费插件是第二个方式,基本原则是基本功能、核心功能、必要功能不收费,而可有可无的附加功能可能会做成收费的。")]),a("p",[s._v("最后,收费仅针对开发者,如果仅是在线版或者客户端的思维导图用户是无需付费的,所有功能均可免费使用。")])]),a("p",[s._v("HandDrawnLikeStyle 是第一个收费插件,功能是提供手绘风格的样式,也就是节点的连线、形状会变成手绘的样式,就像下面这样:")]),a("img",{staticStyle:{width:"800px"},attrs:{src:t("d025")}}),a("p",[s._v("你也可以在在线版中通过【基础样式】-【是否开启手绘风格】设置来开启手绘风格样式进行尝试。")]),a("p",[s._v("内部实现是通过"),a("a",{attrs:{href:"https://github.com/rough-stuff/rough"}},[s._v("rough")]),s._v("库,所以如果你有精力,也可以自己基于这个库来实现这个插件。")]),a("h2",[s._v("收费")]),a("p",[s._v("现阶段收费方式比较原始,通过扫码转账备注你要购买的插件,以及你的邮箱地址,然后会将插件文件发送到你的邮箱。购买请在充分的使用和考虑后进行,如果你对前端开发不太熟悉,不知道如何使用插件,那么请谨慎考虑购买,没有特殊原因不会退费。如果你发现了 bug,或者有需求,可以提交相关的 issue。")]),a("p",[s._v("价格:")]),a("p",[s._v("1.¥ 19.9,仅包含打包后的文件,即.cjs.min.js、.esm.min.js 两种格式的文件。")]),a("p",[s._v("2.¥ 29.9,包含未打包的源码和打包后的文件。")]),a("img",{staticStyle:{width:"300px"},attrs:{src:t("076b")}}),a("img",{staticStyle:{width:"300px"},attrs:{src:t("4968")}}),a("h2",[s._v("注册")]),a("p",[s._v("1.引用打包后的文件:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" HandDrawnLikeStyle "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'handDrawnLikeStyle.cjs.min.js'")]),s._v("\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 或 import HandDrawnLikeStyle from 'handDrawnLikeStyle.esm.min.js'")]),s._v("\n\nMindMap.usePlugin(HandDrawnLikeStyle)\n")])]),a("p",[s._v("2.引用未打包的源码")]),a("p",[s._v("可以先进入到插件目录执行:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("npm link\n")])]),a("p",[s._v("然后进入到你的项目根目录执行:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("npm link simple-mind-map-plugin-handdrawnlikestyle\n")])]),a("p",[s._v("然后就可以直接导入进行使用:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" HandDrawnLikeStyle "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map-plugin-handdrawnlikestyle'")]),s._v("\n\nMindMap.usePlugin(HandDrawnLikeStyle)\n")])]),a("p",[s._v("注册完且实例化"),a("code",[s._v("MindMap")]),s._v("后可通过"),a("code",[s._v("mindMap.handDrawnLikeStyle")]),s._v("获取到该实例。")]),a("p",[s._v("注册该插件后,无需执行其他方法,手绘风格即可生效。")]),a("p",[s._v("如果你是使用 mindMap.addPlugin 方法来动态注册的组件,那么需要调用一次重新渲染的方法:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.addPlugin(HandDrawnLikeStyle)\nmindMap.reRender()\n")])]),a("h2",[s._v("方法")]),a("p",[s._v("以下方法你应该不太会用到。")]),a("h3",[s._v("createPath(svgPathStr)")]),a("ul",[a("li",[a("code",[s._v("svgPathStr")]),s._v(":SVG Path字符串")])]),a("p",[s._v("创建一个手绘风格的路径节点,返回SVG的Path节点。")]),a("h3",[s._v("createPolygon(points)")]),a("ul",[a("li",[a("code",[s._v("points")]),s._v(":点位数组。")])]),a("pre",{staticClass:"hljs"},[a("code",[s._v("points:[\n [x1, y1],\n ...\n]\n")])]),a("p",[s._v("创建一个手绘风格的多边形节点,返回SVG的Path节点。")]),a("h3",[s._v("transformPath(svgPathStr)")]),a("p",[s._v("将SVG Path字符串转换成手绘风格的SVG Path字符串。")])])}],p={},e=p,l=t("2877"),v=Object(l["a"])(e,n,i,!1,null,null,null);a["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0a3179.js b/dist/js/chunk-2d0a3179.js deleted file mode 100644 index 413f95fa..00000000 --- a/dist/js/chunk-2d0a3179.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a3179"],{"0168":function(v,s,_){"use strict";_.r(s);var n=function(){var v=this;v._self._c;return v._m(0)},o=[function(){var v=this,s=v._self._c;return s("div",[s("h1",[v._v("MiniMap插件")]),s("blockquote",[s("p",[v._v("v0.2.11+")])]),s("p",[v._v("用于帮助快速开发小地图功能,小地图由两部分组成,一个是当前的画布内容,一个是视口框,当缩放、移动、元素过多时画布上可能只显示了思维导图的部分内容,可以通过视口框来查看当前视口所在位置,以及可以通过在小地图上拖动来快速定位。")]),s("h2",[v._v("注册")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" MindMap "),s("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),s("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map'")]),v._v("\n"),s("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" MiniMap "),s("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),s("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/plugins/MiniMap.js'")]),v._v("\n"),s("span",{staticClass:"hljs-comment"},[v._v("// import MiniMap from 'simple-mind-map/src/MiniMap.js' v0.6.0以下版本使用该路径")]),v._v("\n\nMindMap.usePlugin(MiniMap)\n")])]),s("p",[v._v("注册完且实例化"),s("code",[v._v("MindMap")]),v._v("后可通过"),s("code",[v._v("mindMap.miniMap")]),v._v("获取到该实例。")]),s("h2",[v._v("方法")]),s("h3",[v._v("calculationMiniMap(boxWidth, boxHeight)")]),s("p",[v._v("计算小地图的渲染数据,该函数内会调用"),s("code",[v._v("getMiniMap()")]),v._v("方法,所以一般使用该函数即可。")]),s("p",[s("code",[v._v("boxWidth")]),v._v(":小地图容器的宽度")]),s("p",[s("code",[v._v("boxHeight")]),v._v(":小地图容器的高度")]),s("p",[v._v("函数返回内容:")]),s("pre",{staticClass:"hljs"},[s("code",[v._v("{\n getImgUrl,"),s("span",{staticClass:"hljs-comment"},[v._v("// v0.8.0+,一个异步函数,你可以调用该函数,传递一个回调函数,回调函数可以接收一个参数,代表图片类型的小地图,你可以通过img标签进行渲染")]),v._v("\n svgHTML, "),s("span",{staticClass:"hljs-comment"},[v._v("// 小地图html,推荐使用getImgUrl方式获取图片类型的小地图,减少页面DOM数量,优化性能")]),v._v("\n viewBoxStyle, "),s("span",{staticClass:"hljs-comment"},[v._v("// 视图框的位置信息")]),v._v("\n miniMapBoxScale, "),s("span",{staticClass:"hljs-comment"},[v._v("// 视图框的缩放值")]),v._v("\n miniMapBoxLeft, "),s("span",{staticClass:"hljs-comment"},[v._v("// 视图框的left值")]),v._v("\n miniMapBoxTop, "),s("span",{staticClass:"hljs-comment"},[v._v("// 视图框的top值")]),v._v("\n}\n")])]),s("p",[v._v("小地图思路:")]),s("p",[v._v("1.准备一个容器元素"),s("code",[v._v("container")]),v._v(",定位不为"),s("code",[v._v("static")])]),s("p",[v._v("如果使用的是富文本编辑模式,那么最好给"),s("code",[v._v("container")]),v._v("内部的元素去除一下默认样式,否则可能会出现节点内文本偏移的问题:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-selector-class"},[v._v(".container")]),v._v(" * {\n "),s("span",{staticClass:"hljs-attribute"},[v._v("margin")]),v._v(": "),s("span",{staticClass:"hljs-number"},[v._v("0")]),v._v(";\n "),s("span",{staticClass:"hljs-attribute"},[v._v("padding")]),v._v(": "),s("span",{staticClass:"hljs-number"},[v._v("0")]),v._v(";\n}\n")])]),s("p",[v._v("2.在"),s("code",[v._v("container")]),v._v("内创建一个小地图容器元素"),s("code",[v._v("miniMapContainer")]),v._v(",绝对定位")]),s("p",[v._v("3.在"),s("code",[v._v("container")]),v._v("内创建一个视口框元素"),s("code",[v._v("viewBoxContainer")]),v._v(",绝对定位,设置边框样式,过渡属性(可选)")]),s("p",[v._v("4.监听"),s("code",[v._v("data_change")]),v._v("和"),s("code",[v._v("view_data_change")]),v._v("事件,在该事件内调用"),s("code",[v._v("calculationMiniMap")]),v._v("方法获取计算数据,然后将"),s("code",[v._v("svgHTML")]),v._v("渲染到"),s("code",[v._v("miniMapContainer")]),v._v("元素内,并且设置"),s("code",[v._v("miniMapContainer")]),v._v("元素的样式:")]),s("pre",{staticClass:"hljs"},[s("code",[v._v(":style="),s("span",{staticClass:"hljs-string"},[v._v("\"{\n transform: `scale(${miniMapBoxScale})`,\n left: miniMapBoxLeft + 'px',\n top: miniMapBoxTop + 'px',\n}\"")]),v._v("\n")])]),s("p",[v._v("5.将"),s("code",[v._v("viewBoxStyle")]),v._v("对象设置为"),s("code",[v._v("viewBoxContainer")]),v._v("元素的样式")]),s("p",[v._v("到这一步,当画布上的思维导图变化了,小地图也会实时更新,并且视口框元素会实时反映视口在思维导图图形上的位置")]),s("p",[v._v("6.监听"),s("code",[v._v("container")]),v._v("元素的"),s("code",[v._v("mousedown")]),v._v("、"),s("code",[v._v("mousemove")]),v._v("事件,并且监听"),s("code",[v._v("window")]),v._v("的"),s("code",[v._v("mouseup")]),v._v("事件(如果将"),s("code",[v._v("mouseup")]),v._v("绑定到"),s("code",[v._v("container")]),v._v("元素上,那么鼠标移出"),s("code",[v._v("container")]),v._v("元素整个拖拽行为无法停止),分别调用下面即将介绍的三个方法即可实现鼠标拖动时画布上的思维导图也随之拖动的效果")]),s("p",[v._v("7.在v0.10.2+版本,支持拖拽小地图内的视口框来实现同步拖拽画布,实现该特性可以监听"),s("code",[v._v("viewBoxContainer")]),v._v("元素的"),s("code",[v._v("mousedown")]),v._v("(需要阻止冒泡,否则会触发"),s("code",[v._v("container")]),v._v("元素的"),s("code",[v._v("mousedown")]),v._v("事件)、"),s("code",[v._v("mousemove")]),v._v("事件,分别调用小地图插件实例的"),s("code",[v._v("onViewBoxMousedown")]),v._v("和"),s("code",[v._v("onViewBoxMousemove")]),v._v("方法,同时需要监听mini_map_view_box_position_change事件来实时更新viewBoxContainer元素。")]),s("p",[v._v("详细教程请参考"),s("a",{attrs:{href:"https://wanglin2.github.io/mind-map/#/doc/zh/course14"}},[v._v("如何渲染一个小地图")]),v._v("。")]),s("h3",[v._v("onMousedown(e)")]),s("p",[v._v("小地图鼠标按下事件执行该函数。")]),s("p",[s("code",[v._v("e")]),v._v(":事件对象")]),s("h3",[v._v("onMousemove(e, sensitivityNum = 5)")]),s("p",[v._v("小地图鼠标移动事件执行该函数。")]),s("p",[s("code",[v._v("e")]),v._v(":事件对象")]),s("p",[s("code",[v._v("sensitivityNum")]),v._v(":拖动灵敏度,灵敏度越大,在小地图上拖动相同距离时实际上的画布拖动距离就越大")]),s("h3",[v._v("onMouseup()")]),s("p",[v._v("小地图鼠标松开事件执行该函数。")]),s("h3",[v._v("onViewBoxMousedown(e)")]),s("blockquote",[s("p",[v._v("v0.10.2+")])]),s("p",[v._v("视口框元素鼠标按下事件调用该方法。")]),s("h3",[v._v("onViewBoxMousemove(e)")]),s("blockquote",[s("p",[v._v("v0.10.2+")])]),s("p",[v._v("视口框元素鼠标移动事件调用该方法。")])])}],e={},i=e,a=_("2877"),t=Object(a["a"])(i,n,o,!1,null,null,null);s["default"]=t.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0a34fb.js b/dist/js/chunk-2d0a34fb.js deleted file mode 100644 index a33e6ec4..00000000 --- a/dist/js/chunk-2d0a34fb.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a34fb"],{"0247":function(n,e,i){"use strict";i.r(e);var t=function(){var n=this;n._self._c;return n._m(0)},s=[function(){var n=this,e=n._self._c;return e("div",[e("h1",[n._v("Client")]),e("p",[n._v("This project also provides a client version using "),e("a",{attrs:{href:"https://www.electronjs.org/"}},[n._v("Electron")]),n._v(" Development. Supports 'Windows', 'Mac', and 'Linux'.")]),e("p",[n._v("Currently, the function is relatively simple:")]),e("ol",[e("li",[e("p",[n._v("Support creating and opening files for editing;")])]),e("li",[e("p",[n._v("Support viewing the list of recently edited files;")])]),e("li",[e("p",[n._v("Support the copying, deletion, and renaming of files;")])])]),e("h2",[n._v("Download")]),e("blockquote",[e("p",[n._v("The client version may lag behind the online version. To try new features, please prioritize using the online version.")])]),e("p",[n._v("You can directly download the corresponding client for installation and use, and two download addresses are provided:")]),e("p",[n._v("Github:"),e("a",{attrs:{href:"https://github.com/wanglin2/mind-map/releases"}},[n._v("releases")]),n._v("。")]),e("p",[n._v("Baidu cloud disk:"),e("a",{attrs:{href:"https://pan.baidu.com/s/1huasEbKsGNH2Af68dvWiOg?pwd=3bp3"}},[n._v("地址")]),n._v("。")]),e("h2",[n._v("Development")]),e("p",[n._v("If necessary, you can also conduct secondary development.")]),e("h3",[n._v("clone")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("git "),e("span",{staticClass:"hljs-built_in"},[n._v("clone")]),n._v(" https://github.com/wanglin2/mind-map.git\n"),e("span",{staticClass:"hljs-built_in"},[n._v("cd")]),n._v(" mind-map\ngit checkout electron\n")])]),e("h3",[n._v("Start serve")]),e("p",[n._v("Execute in the project root directory:")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-built_in"},[n._v("cd")]),n._v(" simple-mind-map\nnpm i\nnpm link\n"),e("span",{staticClass:"hljs-built_in"},[n._v("cd")]),n._v(" ..\n"),e("span",{staticClass:"hljs-built_in"},[n._v("cd")]),n._v(" web\nnpm i\nnpm link simple-mind-map\nnpm run electron:serve\n")])]),e("h3",[n._v("Packaging client")]),e("p",[n._v("You need at least two computers, one 'Windows' and one 'Mac'.")]),e("p",[n._v("Packaging 'Windows' application:")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("npm run electron:build-win\n")])]),e("p",[n._v("Packaging 'Mac' application:")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("npm run electron:build-mac\n")])]),e("p",[n._v("Packaging 'Linux' application:")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("npm run electron:build-linux\n")])]),e("p",[n._v("Packaging all applications:")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("npm run electron:build-all\n")])]),e("p",[n._v("Automatically pack according to your computer system:")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("npm run electron:build\n")])])])}],a={},l=a,o=i("2877"),p=Object(o["a"])(l,t,s,!1,null,null,null);e["default"]=p.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0a3fbe.js b/dist/js/chunk-2d0a3fbe.js deleted file mode 100644 index 2332f2f3..00000000 --- a/dist/js/chunk-2d0a3fbe.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a3fbe"],{"0503":function(e,s,a){"use strict";a.r(s);var _=function(){var e=this;e._self._c;return e._m(0)},c=[function(){var e=this,s=e._self._c;return s("div",[s("h1",[e._v("Search 插件")]),s("blockquote",[s("p",[e._v("v0.6.9+")])]),s("p",[e._v("该插件提供搜索和替换节点内容的功能。")]),s("h2",[e._v("注册")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" MindMap "),s("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),s("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map'")]),e._v("\n"),s("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" Search "),s("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),s("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/plugins/Search.js'")]),e._v("\nMindMap.usePlugin(Search)\n")])]),s("p",[e._v("注册完且实例化"),s("code",[e._v("MindMap")]),e._v("后可通过"),s("code",[e._v("mindMap.search")]),e._v("获取到该实例。")]),s("h2",[e._v("事件")]),s("h3",[e._v("search_info_change")]),s("p",[e._v("可以通过监听"),s("code",[e._v("search_info_change")]),e._v("事件来获取当前搜索结果的数量和当前定位到的索引。")]),s("pre",{staticClass:"hljs"},[s("code",[e._v("mindMap.on("),s("span",{staticClass:"hljs-string"},[e._v("'search_info_change'")]),e._v(", "),s("span",{staticClass:"hljs-function"},[e._v("("),s("span",{staticClass:"hljs-params"},[e._v("data")]),e._v(") =>")]),e._v(" {\n "),s("span",{staticClass:"hljs-comment"},[e._v("/*\n data: {\n currentIndex,// 索引,从0开始\n total\n }\n */")]),e._v("\n})\n")])]),s("h2",[e._v("方法")]),s("h3",[e._v("search(searchText, callback)")]),s("ul",[s("li",[s("p",[s("code",[e._v("searchText")]),e._v(":要进行搜索的文本")])]),s("li",[s("p",[s("code",[e._v("callback")]),e._v(":本次搜索完成的回调函数,会在跳转到节点后触发")])])]),s("p",[e._v("搜索节点内容,可以重复调用,每调一次,会搜索和定位到下一个匹配的节点。如果搜索文本改变了,那么会重新搜索。")]),s("h3",[e._v("endSearch()")]),s("p",[e._v("结束搜索。")]),s("h3",[e._v("replace(replaceText, jumpNext = false)")]),s("ul",[s("li",[s("p",[s("code",[e._v("replaceText")]),e._v(":要进行替换的文本")])]),s("li",[s("p",[s("code",[e._v("jumpNext")]),e._v(":v0.6.12+,是否自动跳转到下一个匹配节点")])])]),s("p",[e._v("替换当前节点内容,要在调用了"),s("code",[e._v("search")]),e._v("方法之后调用,会替换当前定位到的匹配节点内容。")]),s("h3",[e._v("replaceAll(replaceText)")]),s("ul",[s("li",[s("code",[e._v("replaceText")]),e._v(":要进行替换的文本")])]),s("p",[e._v("替换所有匹配的节点内容,要在调用了"),s("code",[e._v("search")]),e._v("方法之后调用。")]),s("h3",[e._v("getReplacedText(node, searchText, replaceText)")]),s("ul",[s("li",[s("p",[s("code",[e._v("node")]),e._v(":节点实例")])]),s("li",[s("p",[s("code",[e._v("searchText")]),e._v(":要进行搜索的文本")])]),s("li",[s("p",[s("code",[e._v("replaceText")]),e._v(":要进行替换的文本")])])]),s("p",[e._v("返回该节点搜索和替换后的文本内容,注意,不会实际改变节点内容,只是用来计算一个节点替换后的内容。")])])}],v={},l=v,n=a("2877"),t=Object(n["a"])(l,_,c,!1,null,null,null);s["default"]=t.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0a4659.js b/dist/js/chunk-2d0a4659.js deleted file mode 100644 index 5a4257e7..00000000 --- a/dist/js/chunk-2d0a4659.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a4659"],{"05ec":function(n,t,u){"use strict";u.r(t);var _=function(){var n=this;n._self._c;return n._m(0)},c=[function(){var n=this,t=n._self._c;return t("div",[t("h1",[n._v("概要/关联线")]),t("h2",[n._v("概要")]),t("p",[n._v("可以选中一个节点添加概要,如果想给多个节点添加一个概要,只能通过给它们的父节点添加来实现。")]),t("p",[n._v("概要节点后面无法再添加节点,后续该特性大概率也不会支持。")]),t("h2",[n._v("关联线")]),t("p",[n._v("添加关联线:先激活某个节点,然后点击上方工具栏的【关联线】按钮,最后点击要关联到的节点即可创建完成。")]),t("p",[n._v("删除关联线:需要先点击选中关联线,然后按删除键即可。")])])}],e={},v=e,p=u("2877"),r=Object(p["a"])(v,_,c,!1,null,null,null);t["default"]=r.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0a4b03.js b/dist/js/chunk-2d0a4b03.js deleted file mode 100644 index 0a343649..00000000 --- a/dist/js/chunk-2d0a4b03.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a4b03"],{"0805":function(t,s,_){"use strict";_.r(s);var a=function(){var t=this;t._self._c;return t._m(0)},v=[function(){var t=this,s=t._self._c;return s("div",[s("h1",[t._v("快捷键操作如何传递自定义参数")]),s("p",[t._v("库提供了很多命令,比如插入子节点的"),s("code",[t._v("INSERT_CHILD_NODE")]),t._v("等,这些命令大多可以接收一定参数,比如在插入节点时我想指定初始文本和节点uid,那么可以这样调用:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.execCommand("),s("span",{staticClass:"hljs-string"},[t._v("'INSERT_CHILD_NODE'")]),t._v(", "),s("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", [], {\n "),s("span",{staticClass:"hljs-attr"},[t._v("text")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'初始文本'")]),t._v(",\n "),s("span",{staticClass:"hljs-attr"},[t._v("uid")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'xxx'")]),t._v("\n})\n")])]),s("p",[t._v("但是同时库内部也默认注册了很多快捷键,比如插入下级节点的"),s("code",[t._v("Tab")]),t._v("快捷键,很遗憾,目前快捷键操作无法让你传入自定义的参数,那么该怎么办呢,可以这样处理,首先确定你要给什么快捷键传入参数,比如"),s("code",[t._v("Tab")]),t._v(",那么首先可以调用如下方法删除库默认注册的快捷键:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[t._v("const")]),t._v(" keyName = "),s("span",{staticClass:"hljs-string"},[t._v("'Tab'")]),t._v("\nmindMap.keyCommand.removeShortcut(keyName)\n")])]),s("p",[t._v("然后再重新注册即可:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.keyCommand.addShortcut(keyName, "),s("span",{staticClass:"hljs-function"},[t._v("() =>")]),t._v(" {\n mindMap.execCommand("),s("span",{staticClass:"hljs-string"},[t._v("'INSERT_CHILD_NODE'")]),t._v(", "),s("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", [], {\n "),s("span",{staticClass:"hljs-attr"},[t._v("text")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'初始文本'")]),t._v(",\n "),s("span",{staticClass:"hljs-attr"},[t._v("uid")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'xxx'")]),t._v("\n })\n})\n")])]),s("p",[t._v("库内部默认注册的快捷键对应的命令一览:")]),s("table",[s("thead",[s("tr",[s("th",[t._v("快捷键")]),s("th",[t._v("命令")])])]),s("tbody",[s("tr",[s("td",[t._v("Control+z")]),s("td",[t._v("BACK")])]),s("tr",[s("td",[t._v("Control+y")]),s("td",[t._v("FORWARD")])]),s("tr",[s("td",[t._v("Tab")]),s("td",[t._v("INSERT_CHILD_NODE")])]),s("tr",[s("td",[t._v("Insert")]),s("td",[t._v("INSERT_CHILD_NODE")])]),s("tr",[s("td",[t._v("Enter")]),s("td",[t._v("INSERT_NODE")])]),s("tr",[s("td",[t._v("Shift+Tab")]),s("td",[t._v("INSERT_PARENT_NODE")])]),s("tr",[s("td",[t._v("Control+g")]),s("td",[t._v("ADD_GENERALIZATION")])]),s("tr",[s("td",[t._v("Del或Backspace")]),s("td",[t._v("REMOVE_NODE")])]),s("tr",[s("td",[t._v("Shift+Backspace")]),s("td",[t._v("REMOVE_CURRENT_NODE")])]),s("tr",[s("td",[t._v("Control+a")]),s("td",[t._v("SELECT_ALL")])]),s("tr",[s("td",[t._v("Control+l")]),s("td",[t._v("RESET_LAYOUT")])]),s("tr",[s("td",[t._v("Control+Up")]),s("td",[t._v("UP_NODE")])]),s("tr",[s("td",[t._v("Control+Down")]),s("td",[t._v("DOWN_NODE")])])])])])}],n={},l=n,r=_("2877"),d=Object(r["a"])(l,a,v,!1,null,null,null);s["default"]=d.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0a514a.js b/dist/js/chunk-2d0a514a.js deleted file mode 100644 index 1abfb7e2..00000000 --- a/dist/js/chunk-2d0a514a.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0a514a"],{"08d0":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},v=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("Markdown解析")]),a("blockquote",[a("p",[s._v("v0.4.7+")])]),a("p",[s._v("提供导入和导出"),a("code",[s._v("Markdown")]),s._v("文件的方法。")]),a("h2",[s._v("引入")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" markdown "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/parse/markdown.js'")]),s._v("\n")])]),a("p",[s._v("如果使用的是"),a("code",[s._v("umd")]),s._v("格式的文件,那么可以通过如下方式获取:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-tag"},[s._v("<"),a("span",{staticClass:"hljs-name"},[s._v("script")]),s._v(" "),a("span",{staticClass:"hljs-attr"},[s._v("src")]),s._v("="),a("span",{staticClass:"hljs-string"},[s._v('"simple-mind-map/dist/simpleMindMap.umd.min.js"')]),s._v(">")]),a("span",{staticClass:"hljs-tag"},[s._v("")]),s._v("\n")])]),a("pre",{staticClass:"hljs"},[a("code",[s._v("simpleMindMap.markdown\n")])]),a("h2",[s._v("方法")]),a("h3",[s._v("transformToMarkdown(data)")]),a("ul",[a("li",[a("code",[s._v("data")]),s._v(":思维导图数据,可以通过"),a("code",[s._v("mindMap.getData()")]),s._v("方法获取。")])]),a("p",[s._v("将思维导图数据转换成"),a("code",[s._v("Markdown")]),s._v("格式数据,返回的是字符串。")]),a("h3",[s._v("transformMarkdownTo(mdContent)")]),a("ul",[a("li",[a("code",[s._v("mdContent")]),s._v(":要转换的"),a("code",[s._v("Markdown")]),s._v("数据,字符串类型。")])]),a("p",[s._v("将"),a("code",[s._v("Markdown")]),s._v("字符串转换成节点树数据,返回一个"),a("code",[s._v("Promise")]),s._v("实例。可以使用"),a("code",[s._v("mindMap.setData()")]),s._v("方法将转换后的数据渲染到画布上。")])])}],_={},d=_,o=t("2877"),l=Object(o["a"])(d,n,v,!1,null,null,null);a["default"]=l.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0aa579.js b/dist/js/chunk-2d0aa579.js deleted file mode 100644 index 7e82a621..00000000 --- a/dist/js/chunk-2d0aa579.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0aa579"],{1136:function(v,_,e){"use strict";e.r(_);var c=function(){var v=this;v._self._c;return v._m(0)},o=[function(){var v=this,_=v._self._c;return _("div",[_("h1",[v._v("贡献")]),_("h2",[v._v("参与开发")]),_("p",[v._v("如果你想贡献代码的话可以"),_("code",[v._v("fork")]),v._v("本项目,然后切换到"),_("code",[v._v("feature")]),v._v("分支下进行开发,开发并测试完后可以提交"),_("code",[v._v("pr")]),v._v("到本项目的"),_("code",[v._v("feature")]),v._v("分支,提交时请尽量提交功能相关的文件,非必要的文件请勿提交。")]),_("p",[v._v("在开发前最好通过新建一个"),_("code",[v._v("issue")]),v._v("来描述你想要新增的功能,我们可以先进行充分的沟通,在提交"),_("code",[v._v("pr")]),v._v("时请详细描述你开发的功能。")]),_("h2",[v._v("参与翻译")]),_("blockquote",[_("p",[v._v("感谢"),_("a",{attrs:{href:"https://github.com/emircanerkul"}},[v._v("Emircan ERKUL")]),v._v("提供的第一版英文翻译。")]),_("p",[v._v("因为精力有限,目前大部分翻译都是使用机翻的,所以准确度难免有问题。")]),_("p",[v._v("目前【教程】部分是没有进行翻译的,如果你有兴趣,欢迎加入我们。")])]),_("p",[v._v("如果你也想参与翻译本文档的话,可以先克隆本仓库。")]),_("p",[v._v("翻译的文档在"),_("code",[v._v("/web/src/pages/Doc/")]),v._v("目录下,目前支持英文("),_("code",[v._v("en")]),v._v(")、简体中文("),_("code",[v._v("zh")]),v._v(")两种语言。")]),_("p",[v._v("如果是新增一种语言类型,那么可以在"),_("code",[v._v("/web/src/pages/Doc/")]),v._v("目录下创建一个新目录,然后给每个章节创建一个文件夹,你也可以直接复制已存在的语言目录下的所有章节目录进行翻译,注意,你只需要编写"),_("code",[v._v("index.md")]),v._v("文件,章节目录下的"),_("code",[v._v("index.vue")]),v._v("文件是脚本根据"),_("code",[v._v("index.md")]),v._v("自动生成的。")]),_("p",[v._v("如果是给已存在的语言类型新增翻译章节,可以在目标语言目录下创建新的章节目录,目录下只需要创建"),_("code",[v._v("index.md")]),v._v("文件即可。")]),_("p",[v._v("当你完成翻译后,可以直接提交"),_("code",[v._v("Pull requests")]),v._v("。")]),_("p",[v._v("如果你是前端程序员,想运行服务,查看文档页面的效果,如果新增章节,需要修改"),_("code",[v._v("/web/src/pages/Doc/catalogList.js")]),v._v("文件,在"),_("code",[v._v("StartList")]),v._v("或者"),_("code",[v._v("APIList")]),v._v("数组里选择合适的位置插入新章节的"),_("code",[v._v("path")]),v._v("。然后需要在"),_("code",[v._v("web")]),v._v("目录下运行"),_("code",[v._v("npm run buildDoc")]),v._v("编译目录和路由,最后"),_("code",[v._v("npm run serve")]),v._v("启动本地服务,打开以下路径即可查看文档:")]),_("p",[_("code",[v._v("ip:port/#/doc/zh/introduction")])])])}],d={},t=d,r=e("2877"),n=Object(r["a"])(t,c,o,!1,null,null,null);_["default"]=n.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0aa978.js b/dist/js/chunk-2d0aa978.js deleted file mode 100644 index 0514e847..00000000 --- a/dist/js/chunk-2d0aa978.js +++ /dev/null @@ -1 +0,0 @@ -(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 deleted file mode 100644 index e0c34b37..00000000 --- a/dist/js/chunk-2d0ab10b.js +++ /dev/null @@ -1 +0,0 @@ -(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, returnBlob = false)")]),t("ul",[t("li",[t("p",[t("code",[e._v("src")]),e._v(":Image url")])]),t("li",[t("p",[t("code",[e._v("returnBlob")]),e._v(":v0.10.2+,Is the result returned in Blob format, defaulting to DataURL format")])])]),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, handle)")]),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("li",[t("p",[t("code",[e._v("handle")]),e._v(":v0.10.5+, "),t("code",[e._v("null、Function")]),e._v(", default is "),t("code",[e._v("null")]),e._v(", You can pass a function that will be called when traversing each node, with the callback parameter being the current node being traversed.")])])]),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("h4",[e._v("defenseXSS(htmlStr)")]),t("blockquote",[t("p",[e._v("v0.10.0+")])]),t("ul",[t("li",[t("code",[e._v("htmlStr")]),e._v(":HTML strings that need to be filtered")])]),t("p",[e._v("Return:Filtered HTML string")]),t("p",[e._v("Defend against XSS attacks, filter malicious HTML tags and attributes. You can recursively traverse the tree data before passing the node data to SimpleMindMap, using this method to process the rich text content of nodes and avoid XSS attacks.")]),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=a("2877"),v=Object(l["a"])(i,s,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 deleted file mode 100644 index 79392318..00000000 --- a/dist/js/chunk-2d0ab546.js +++ /dev/null @@ -1 +0,0 @@ -(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-2d0abe0f.js b/dist/js/chunk-2d0abe0f.js deleted file mode 100644 index bd6ff8d2..00000000 --- a/dist/js/chunk-2d0abe0f.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0abe0f"],{"16c7":function(e,t,o){"use strict";o.r(t);var a=function(){var e=this;e._self._c;return e._m(0)},n=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("View instance")]),t("p",[e._v("The "),t("code",[e._v("view")]),e._v(" instance is responsible for view operations, and can be obtained through "),t("code",[e._v("mindMap.view")])]),t("h2",[e._v("Methods")]),t("h3",[e._v("fit()")]),t("blockquote",[t("p",[e._v("v0.6.0+")])]),t("p",[e._v("Zoom the mind map to fit the canvas.")]),t("p",[e._v("Note that this method cannot be called immediately after calling the 'setData' and 'setFullData' methods, and needs to listen to the 'node_tree_render_end' event calls 'fit'.")]),t("h3",[e._v("translateX(step)")]),t("p",[e._v("Translate in the "),t("code",[e._v("x")]),e._v(" direction, "),t("code",[e._v("step")]),e._v(": number of pixels to translate")]),t("h3",[e._v("translateY(step)")]),t("p",[e._v("Translate in the "),t("code",[e._v("y")]),e._v(" direction, "),t("code",[e._v("step")]),e._v(": number of pixels to translate")]),t("h3",[e._v("translateXTo(x)")]),t("blockquote",[t("p",[e._v("v0.2.11+")])]),t("p",[e._v("Translate the "),t("code",[e._v("x")]),e._v(" direction to a specific position")]),t("h3",[e._v("translateYTo(y)")]),t("blockquote",[t("p",[e._v("v0.2.11+")])]),t("p",[e._v("Translate the "),t("code",[e._v("y")]),e._v(" direction to a specific position")]),t("h3",[e._v("reset()")]),t("p",[e._v("Revert to the default transformation")]),t("h3",[e._v("narrow(cx, cy)")]),t("ul",[t("li",[t("p",[t("code",[e._v("cx")]),e._v(":(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas")])]),t("li",[t("p",[t("code",[e._v("cy")]),e._v(":(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas")])])]),t("p",[e._v("Zoom out")]),t("h3",[e._v("enlarge(cx, cy)")]),t("ul",[t("li",[t("p",[t("code",[e._v("cx")]),e._v(":(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas")])]),t("li",[t("p",[t("code",[e._v("cy")]),e._v(":(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas")])])]),t("p",[e._v("Zoom in")]),t("h3",[e._v("getTransformData()")]),t("blockquote",[t("p",[e._v("v0.1.1+")])]),t("p",[e._v("Get the current transform data, can be used for display")]),t("h3",[e._v("setTransformData(data)")]),t("blockquote",[t("p",[e._v("v0.1.1+")])]),t("p",[e._v('Dynamically set transform data, transform data can be obtained through the getTransformData method"')]),t("h3",[e._v("setScale(scale, cx, cy)")]),t("blockquote",[t("p",[e._v("v0.2.17+")])]),t("ul",[t("li",[t("p",[t("code",[e._v("scale")]),e._v(": Scaling values, not scaled to '1', scaled to '1' for values less than, scaled to '1' for values greater than, scaled to '1' for values greater than")])]),t("li",[t("p",[t("code",[e._v("cx")]),e._v(":(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas")])]),t("li",[t("p",[t("code",[e._v("cy")]),e._v(":(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas")])])]),t("p",[e._v("Setting Zoom")])])}],v={},c=v,s=o("2877"),i=Object(s["a"])(c,a,n,!1,null,null,null);t["default"]=i.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0ac5dc.js b/dist/js/chunk-2d0ac5dc.js deleted file mode 100644 index 0f2b0efd..00000000 --- a/dist/js/chunk-2d0ac5dc.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ac5dc"],{"18dc":function(s,t,a){"use strict";a.r(t);var l=function(){var s=this;s._self._c;return s._m(0)},n=[function(){var s=this,t=s._self._c;return t("div",[t("h1",[s._v("如何渲染富文本的悬浮工具栏")]),t("blockquote",[t("p",[s._v("要支持节点富文本编辑需要使用富文本插件")])]),t("p",[s._v("如果开启了节点富文本编辑,那么可以对节点内的部分文本应用样式,一般当选中文本时上方会出现一个工具栏,有加粗、斜体、改变颜色等等的按钮。")]),t("p",[s._v("首先要监听"),t("code",[s._v("rich_text_selection_change")]),s._v("事件,也就是选中文本的事件:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.on("),t("span",{staticClass:"hljs-string"},[s._v("'rich_text_selection_change'")]),s._v(", "),t("span",{staticClass:"hljs-function"},[s._v("("),t("span",{staticClass:"hljs-params"},[s._v("hasRange, rect, formatInfo")]),s._v(") =>")]),s._v(" {\n "),t("span",{staticClass:"hljs-comment"},[s._v("// hasRange(是否存在选区)")]),s._v("\n "),t("span",{staticClass:"hljs-comment"},[s._v("// rectInfo(选区的尺寸和位置信息)")]),s._v("\n "),t("span",{staticClass:"hljs-comment"},[s._v("// formatInfo(选区的文本格式化信息)")]),s._v("\n "),t("span",{staticClass:"hljs-comment"},[s._v("// 显示你的工具栏")]),s._v("\n})\n")])]),t("p",[s._v("可以通过"),t("code",[s._v("hasRange")]),s._v("来判断是否显示工具栏,工具栏的位置可以通过"),t("code",[s._v("rectInfo")]),s._v("获取,通过"),t("code",[s._v("formatInfo")]),s._v("可以获取当前选中文本的样式信息,比如已经被加粗了,那么你的加粗按钮就可以渲染为激活状态。")]),t("h3",[s._v("工具栏定位")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" left = rect.left + rect.width / "),t("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(" + "),t("span",{staticClass:"hljs-string"},[s._v("'px'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" top = rect.top - "),t("span",{staticClass:"hljs-number"},[s._v("60")]),s._v(" + "),t("span",{staticClass:"hljs-string"},[s._v("'px'")]),s._v("\n")])]),t("p",[s._v("计算出来的是相对于浏览器窗口左上角的位置,所以你的工具栏元素最好是添加在body元素下面,并且使用固定定位或相对定位,另外"),t("code",[s._v("z-index")]),s._v("的属性最好也设置的高一点,否则在弹窗等场景下可能会被挡住。")]),t("h3",[s._v("加粗/取消加粗")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("bold")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v("/"),t("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v("\n})\n")])]),t("h3",[s._v("斜体/取消斜体")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("italic")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v("/"),t("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v("\n})\n")])]),t("h3",[s._v("下划线/取消下划线")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("underline")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v("/"),t("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v("\n})\n")])]),t("h3",[s._v("删除线/取消删除线")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("strike")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v("/"),t("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v("\n})\n")])]),t("h3",[s._v("设置字体")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("font")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'宋体, SimSun, Songti SC'")]),s._v("\n})\n")])]),t("h3",[s._v("设置字号")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("font")]),s._v(": "),t("span",{staticClass:"hljs-number"},[s._v("16")]),s._v(" + "),t("span",{staticClass:"hljs-string"},[s._v("'px'")]),s._v("\n})\n")])]),t("h3",[s._v("设置文字颜色")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v("\n})\n")])]),t("h3",[s._v("设置文字背景颜色")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.formatText({\n "),t("span",{staticClass:"hljs-attr"},[s._v("background")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v("\n})\n")])]),t("h3",[s._v("清除样式")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("mindMap.richText.removeFormat()\n")])]),t("h2",[s._v("完整示例")]),t("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFVk+P20QU/yqDUWUHEiegcjHZUlpA6mERWhUJialWjj2OB8Yzlj1Otkp96akUJCQOcOFQceHeA6J74ct0u+Vb8N6M/202aXMjUaKZN7/3fm/m/ZnZOJ/mub+qmBM48zIqeK5JyXSV36KSZ7kqNNmQgiVjouSxqqRm8ZiUaSiEWp+whNQkKVRGXLDgdhrHXMbHYW6XqFOCWLBJBtJJFubUoZIQKgXTBGWIPCKyEoJKKiMlS3AhVev7SolFWMAa8HtJKEo2atcFS3SzMOuEWqGhq7KoKgom9ReqyEJ9TyaqQWxqgPSKy6Vgd5SIYdUbkaNbZIM+XlP2V6GomL+wyHfetI76ze78gkfpfXam/cQgcegZAkIQGryRCHHobL3t79cyZoXgkh3mdDWA7/W8Ax3ofoffv4crJrc2EqWhXLK7SigM8wGbiBqoW7AY8u0gH41O0Kt0PnQZ7Q2YBxnJ1m0mt6aYCEisoioD3/wl058LhsM7D+/Fntto3lVSh7Ddwh2NrVYc6jCw1vFDHRRQZyCyYg1Oo5g6r569eP308eXjF7ZW8FM3xhAYpVzEcD4I/ra3sWVuJ8s208vzny7P/9wmu0q4g/RBvzbE/U8etMNG1upxyfWJUvpLFbOvVMk1VxI0XWwe7pi4EYQOwvTAwOvRx7Yt9TmlpOdiXp2is6clEyxCE6c2a8GCl4blCY7H0FMiPSY2+TBf+4QCP5IeOeoPA92waW16UqR909Xet+M1j3VKpuRDELj5GWQu1fiFJndVCbvehNycdTg8KwDuKSFQG4TD932vd5o8ekRMY9w6VyxWJZgv1NLbY7ZRalQG7btjbU8AN2JKEH7zqb1y4LKBiWZwT4SawYyQecxXJBJhWR5Rp4nIZyxT1DHLDYDH/WpXeACZT2F1CGwtaesVdchqwhMQDFwFYVDqh4KBeIOxCEyMxnixBPhXd+RgdVFBLCS5HQkefW8st5cIoDabHS3MXBufEPfi519f/fXk4umzy+e/uQQ6UzOs6/nUWn0bS9f691H1zb7je/n3jxdPfrk8/8dQ9rNDWAd9Ghj//eP31z8839LqT7wdzaeDgMLUHK1B3G7eCdTxp/Zx0PRZn5WZH5Uldbpi9AexbzPX1EZAPpjNbhgcIXlX3gUDRr5iZsGkI/7e3c6R1lSvGC4gxyttFW11BmTWzEwGtJPr9CnjyxTgN2ez/Kxl3s37XsuchcWSA29rNQ/jmMtlK+hchwK376C3eayLUJZYzJCrOMST/8abfDS7YVsbWIR6M0Fwxo4NAb7H/O9KJeH5Z+zTZgFC0PVt6sDrzjZrfwpDv4Bbk2cMozVZFGpdsgKMUKfpuztefFb3eqxRq/Gtdur/AJ09jnE="}})])}],e={},c=e,i=a("2877"),v=Object(i["a"])(c,l,n,!1,null,null,null);t["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0ae956.js b/dist/js/chunk-2d0ae956.js deleted file mode 100644 index c78a8b5c..00000000 --- a/dist/js/chunk-2d0ae956.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ae956"],{"0b4b":function(t,s,e){"use strict";e.r(s);var a=function(){var t=this;t._self._c;return t._m(0)},v=[function(){var t=this,s=t._self._c;return s("div",[s("h1",[t._v("OuterFrame 插件")]),s("blockquote",[s("p",[t._v("v0.10.2+")])]),s("p",[t._v("该插件用于实现外框功能。")]),s("h2",[t._v("注册")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" MindMap "),s("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),s("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map'")]),t._v("\n"),s("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" OuterFrame "),s("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),s("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map/src/plugins/OuterFrame.js'")]),t._v("\nMindMap.usePlugin(OuterFrame)\n")])]),s("p",[t._v("注册完且实例化"),s("code",[t._v("MindMap")]),t._v("后可通过"),s("code",[t._v("mindMap.outerFrame")]),t._v("获取到该实例。")]),s("p",[t._v("应用使用可参考Demo该部分的代码:"),s("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/web/src/pages/Edit/components/NodeOuterFrame.vue"}},[t._v("NodeOuterFrame.vue")]),t._v("。")]),s("h2",[t._v("命令")]),s("p",[t._v("该插件会向思维导图注册"),s("code",[t._v("ADD_OUTER_FRAME")]),t._v("命令,用于给节点添加外框:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.execCommand("),s("span",{staticClass:"hljs-string"},[t._v("'ADD_OUTER_FRAME'")]),t._v(", appointNodes, config = {})\n")])]),s("ul",[s("li",[s("p",[s("code",[t._v("appointNodes")]),t._v(":指定要添加外框的节点实例节点,可以是单个节点实例,也可以是节点实例数组,如果传递"),s("code",[t._v("[]")]),t._v("或"),s("code",[t._v("null")]),t._v(",则会向画布当前激活的节点添加外框")])]),s("li",[s("p",[s("code",[t._v("config")]),t._v(":外框配置,对象格式,字段如下:")])])]),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),s("th",[t._v("类型")]),s("th",[t._v("默认值")]),s("th",[t._v("描述")])])]),s("tbody",[s("tr",[s("td",[t._v("radius")]),s("td",[t._v("Number")]),s("td",[t._v("5")]),s("td",[t._v("外框圆角大小")])]),s("tr",[s("td",[t._v("strokeWidth")]),s("td",[t._v("Number")]),s("td",[t._v("2")]),s("td",[t._v("外框边框宽度")])]),s("tr",[s("td",[t._v("strokeColor")]),s("td",[t._v("String")]),s("td",[t._v("#0984e3")]),s("td",[t._v("外框边框颜色")])]),s("tr",[s("td",[t._v("strokeDasharray")]),s("td",[t._v("String")]),s("td",[t._v("5,5")]),s("td",[t._v("外框边框虚线")])]),s("tr",[s("td",[t._v("fill")]),s("td",[t._v("String")]),s("td",[t._v("rgba(9,132,227,0.05)")]),s("td",[t._v("外框填充颜色")])])])]),s("h2",[t._v("事件")]),s("h3",[t._v("outer_frame_active")]),s("p",[t._v("当点击激活某个外框时触发。回调函数接收三个参数:el(外框元素,@svgdotjs/svg.js库的rect元素), node(该范围所属节点的父节点实例), range(范围区间,相对于node)")]),s("p",[t._v("应用可以监听该事件来获取当前激活的外框,获取到其配置回显到页面,因为范围可能包含多个节点,所以通常取第一个节点实例,如果要获取外框在页面上的位置,可以调用"),s("code",[t._v("el.rbox")]),t._v("方法:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.on("),s("span",{staticClass:"hljs-string"},[t._v("'outer_frame_active'")]),t._v(", "),s("span",{staticClass:"hljs-function"},[t._v("("),s("span",{staticClass:"hljs-params"},[t._v("el, parentNode, range")]),t._v(") =>")]),t._v(" {\n "),s("span",{staticClass:"hljs-comment"},[t._v("// 取范围内第一个节点的外框样式")]),t._v("\n "),s("span",{staticClass:"hljs-keyword"},[t._v("const")]),t._v(" firstNode = parentNode.children[range["),s("span",{staticClass:"hljs-number"},[t._v("0")]),t._v("]]\n "),s("span",{staticClass:"hljs-keyword"},[t._v("const")]),t._v(" firstNodeOuterFrame = firstNode.getData("),s("span",{staticClass:"hljs-string"},[t._v("'outerFrame'")]),t._v(")\n "),s("span",{staticClass:"hljs-comment"},[t._v("// 获取外框的位置大小信息,你可以在该位置渲染你的配置浮层")]),t._v("\n "),s("span",{staticClass:"hljs-keyword"},[t._v("const")]),t._v(" { x, y, width, height } = el.rbox()\n})\n")])]),s("h3",[t._v("outer_frame_delete")]),s("p",[t._v("删除画布当前激活的外框时触发。")]),s("h2",[t._v("方法")]),s("h3",[t._v("getActiveOuterFrame()")]),s("p",[t._v("获取当前激活的外框数据。返回一个对象,结构如下:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("{\n el,\n node,\n range\n}\n")])]),s("h3",[t._v("updateActiveOuterFrame(config = {})")]),s("p",[t._v("更新当前激活的外框。执行了该方法后请立即隐藏你的样式面板,因为会清除当前激活的外框。")]),s("h3",[t._v("removeActiveOuterFrame()")]),s("p",[t._v("删除当前激活的外框。")]),s("h3",[t._v("getRangeNodeList(node, range)")]),s("p",[t._v("获取某个节点指定范围的带外框的子节点列表。")]),s("h3",[t._v("clearActiveOuterFrame()")]),s("p",[t._v("清除当前激活的外框。")])])}],_={},r=_,n=e("2877"),i=Object(n["a"])(r,a,v,!1,null,null,null);s["default"]=i.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0afe0d.js b/dist/js/chunk-2d0afe0d.js deleted file mode 100644 index e8e351d3..00000000 --- a/dist/js/chunk-2d0afe0d.js +++ /dev/null @@ -1 +0,0 @@ -(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_MULTI_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-2d0b1be7.js b/dist/js/chunk-2d0b1be7.js deleted file mode 100644 index d07b13f8..00000000 --- a/dist/js/chunk-2d0b1be7.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b1be7"],{"20c6":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},v=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("如何实现AI生成节点内容")]),a("p",[s._v("目前AI能力非常流行,每个应用都给自己加上了AI的能力提高竞争力,那么在使用了"),a("code",[s._v("simple-mind-map")]),s._v("的情况下如何添加AI的能力呢,本教程会详细的教你如何实现。")]),a("p",[s._v("首先要说明的是本教程并不会真的实现一个可用的AI能力,只是在假设你要实现该功能的前提下来教你如何调用对应的API来实现你想要的效果。")]),a("p",[s._v("其次AI返回的数据结构不尽相同,你都需要自行转换成"),a("code",[s._v("simple-mind-map")]),s._v("的结构类型。")]),a("h2",[s._v("自动生成整个思维导图")]),a("h3",[s._v("一次生成")]),a("p",[s._v("通过AI生成整个思维导图并且一次直接生成,这个其实就是普通的回显功能,那么你可以在实例化时通过"),a("code",[s._v("data")]),s._v("传入生成的数据:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" mindMap = "),a("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" MindMap({\n el,\n "),a("span",{staticClass:"hljs-attr"},[s._v("data")]),s._v(": {\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 "),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 }\n})\n")])]),a("p",[s._v("也可以在实例化之后使用"),a("code",[s._v("setData")]),s._v("方法设置:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setData({\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 "),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})\n")])]),a("h3",[s._v("依次生成节点")]),a("p",[s._v("如果你想像ChatGPT一样依次生成节点,那么推荐使用"),a("code",[s._v("updateData")]),s._v("方法增量更新节点数据,而不是手动获取到之前插入的节点实例,再调用命令来插入下级节点,这样会复杂很多,当然,如果你能轻松的知道当前创建到哪里了,并且下一个节点在哪个节点下创建,可以忽略。")]),a("blockquote",[a("p",[s._v("updateData方法是v0.9.9+的方法,之前的版本可以使用下面的方法:")])]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" updateData = "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("data")]),s._v(") =>")]),s._v(" {\n mindMap.renderer.setData(data)\n mindMap.render()\n mindMap.command.addHistory()\n}\n")])]),a("p",[s._v("增量更新的前提是之前生成的节点都存在"),a("code",[s._v("uid")]),s._v(",并且不会变化,这样调用"),a("code",[s._v("updateData")]),s._v("方法渲染时会根据"),a("code",[s._v("uid")]),s._v("来复用之前的节点,只创建新的节点,达到依次生成的目的。")]),a("p",[s._v("比如第一次返回的数据:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" data = {\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 "),a("span",{staticClass:"hljs-attr"},[s._v("uid")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'1'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-attr"},[s._v("children")]),s._v(": []\n}\n\nmindMap.setData(data)\n")])]),a("p",[s._v("第二次返回的数据:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" data = {\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 "),a("span",{staticClass:"hljs-attr"},[s._v("uid")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'1'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-attr"},[s._v("children")]),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("'二级节点'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("uid")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'2'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-attr"},[s._v("children")]),s._v(": []\n }\n ]\n}\n\nmindMap.updateData(data)\n")])]),a("p",[s._v("以此类推,这样虽然是整个数据更新,但是因为复用的原因画布呈现的是依次生成新节点的效果。")]),a("p",[s._v("当生成的节点多了会有个问题,就是新生成的节点在画布外看不见了,所以我们要将新生成的节点移动到画布中心,首先可以监听"),a("code",[s._v("data_change_detail")]),s._v("事件来获取到详细的更新数据,找出其中新创建的节点数据,然后使用"),a("code",[s._v("findNodeByUid")]),s._v("方法找出对应的节点实例,最后调用"),a("code",[s._v("moveNodeToCenter")]),s._v("方法将该节点移动到画布中心即可。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'data_change_detail'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("list")]),s._v(") =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 找出新创建节点中的最后一个")]),s._v("\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" lastCreate = list.filter("),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("item")]),s._v(") =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" item.action === "),a("span",{staticClass:"hljs-string"},[s._v("'create'")]),s._v("\n })["),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("]\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (lastCreate) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" uid = lastCreate.data.data.uid\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" node = mindMap.renderer.findNodeByUid(uid)\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (node) {\n mindMap.renderer.moveNodeToCenter(node)\n }\n }\n})\n")])]),a("p",[s._v("当节点数据多了,可能"),a("code",[s._v("data_change_detail")]),s._v("事件触发时节点树还没渲染完毕,导致获取不到节点,解决这个问题可以通过监听"),a("code",[s._v("node_tree_render_end")]),s._v("事件:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" waitUid = "),a("span",{staticClass:"hljs-string"},[s._v("''")]),s._v("\nmindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'data_change_detail'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("list")]),s._v(") =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (lastCreate) {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (node) {\n mindMap.renderer.moveNodeToCenter(node)\n } "),a("span",{staticClass:"hljs-keyword"},[s._v("else")]),s._v(" {\n waitUid = uid\n }\n }\n})\n\nmindMap.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-keyword"},[s._v("if")]),s._v(" (waitUid) {\n waitUid = "),a("span",{staticClass:"hljs-string"},[s._v("''")]),s._v("\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" node = mindMap.renderer.findNodeByUid(waitUid)\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (node) {\n mindMap.renderer.moveNodeToCenter(node)\n }\n }\n})\n")])]),a("p",[s._v("当在"),a("code",[s._v("data_change_detail")]),s._v("事件中没有获取到节点实例就将该"),a("code",[s._v("uid")]),s._v("保存起来,然后在"),a("code",[s._v("node_tree_render_end")]),s._v("事件里判断是否有保存的"),a("code",[s._v("uid")]),s._v(",是的话就获取该节点实例并移动到画布中心。")]),a("p",[s._v("最后,当自动生成节点中最好禁止用户操作,否则可能会产生异常。")]),a("h3",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrtV19rHDcQ/ypiS9m95rx3bvN0vTOJnUILdVtC+uQNZr2ru1OqlZZdrc+HOQih0DT0IYUWSkto+9QSWvKSByct+TT2XT5GR7uS9t/ZxNBAoTHYXmlmfvObGWkkHVvX49g9zLA1sIZpkJBYoBSLLN7yGIlingh0jBI87iLOdnnGBA67KJ36lPLZTTxGCzROeIRsQLCNxS5h4a4fFyLPSmGa4o0IZjciP/YsjyHkMYoFknNSc4RYRqnHPBZwlgpwFuCdBPsCX6cUpE4HjbbQsTRUJi6wvOEL38knEQrhe1BoyB+Bj8QA2cv73y5/ePLyq8dnD35ffffz8v7D1Y9fvnxwb3XvGdCViotu8T+YEhommA3QnsYwYC30ioezPx/W8KqYDdzberaUX87Fu5fxUXzk40XHYzAuk4u355+y8xJcKEk6HxP4GOmEGGotpjrZvzxTqahwy0gIok3DvOTdZq1lr9FTqV7L9JrkG2enz79ZPf+t7a/0Wa1LvTLra2Oqo+rzv4q8ovMvEnnvTQkujrxu2nB2Docqj5Ovz+VRcrla49Lmc341ahWpVOW/vWTkv/xbnmVwLuEjaJf9sokmGav3VoTIGDmF5tbINFmXYjYR0w6ctCJLoFHnHHKIIEsAQivu5abKfQk1GoHbTpmJ5hkJIHAEFDJJdeYT8TkJAdg2SdA2nDm2dLcfTH02wfshFj6hdhc5FAhUQylJUj8VxWkCkFLNHRMqcOI4ROCoaYNUmEgKXT8QhEOaIAQ7yDGqp1xnr18pgIy49FUJuKQCtZUcjJIrYyn+gKitz3goSevooeYhTnACAbDwE5BtzyFRDpiaBGoi0rJBocyiwYn4IZY4t/gOhttTUpjVVh7CNMVNoLJEDdqVXWI+5QHfrqL0tC8SjPcLNvvwV9ZR1qPiTcaivDXCWbdMLps5jfzasndBOpqZ7fWMhyyGJYFbm6NFoL2DPFFXclrzAY8in4WuH4Yfwl7gyVzrKIYAeotEmGfCqfUGyIzczleu6CH0D2PaRZv9fj8f5TBKlt/rzN28ile5W+OZvpPr6zKmAxTyIIsgre4Eiw8olp/b849Cx1aWO5zB1mc4sTuqOTYarmfJCc9q9GDPkj1YTsNVP7/s1xusZ+n2KnWalz/CiLjJuZBl/4ynRHYH0LIpHgtYvXaQLwT7dq6+6LwPKYA0DHvF4wWeLTCAvhJTqC+MEBqG5BAF0BHSkWep0G7giHtWLlYKJCylJnBQGfZAWlXUSIJzeuBLFR3X8CATAlrZtYCS4AtQqb1iQPH05O7yj1+Ld8jy+6enJ4+Xdx+t/np69uTvs59eDHuF/UV4jYu7xHzx6NUxy2D017BXyRUMUzGnRdquqcecZ7m94gWnlpCL08gN0tSzIPfyIYeQW0mrXgszEorpQC7at3M9hGJTzQSDR3KIc0G+muXvW830a6jS0D9IOc1EYSjPsjGc9X01EjwuB233U0wmU1C/2u/HR9rzer/vaM+Rn0wI+NWoMexpwiZ6wlB31Wp4RcabmoEibcYACCs5r4HVtYoKyDezeyflDJ7oObynBFABs/M8C17gxZZze/DpQnsQ0GNksTYOEj5LoZndAQu1y9a8ygvbdqmlleK2sBb/AOBR7ZA="}}),a("h2",[s._v("在某个节点下自动生成新节点")]),a("p",[s._v("在某个节点下自动生成新节点,如果也要依次生成,那么可以使用前面的增量更新数据的方式。如果一次生成,那么可以简单的调用插入新节点的命令即可。")]),a("h3",[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("'INSERT_CHILD_NODE'")]),s._v(", \n "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n node,\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 {\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)\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 插入多个子节点")]),s._v("\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_MULTI_CHILD_NODE'")]),s._v(", node, [\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("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("h3",[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("'INSERT_NODE'")]),s._v(", \n "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n node,\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 {\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)\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 插入多个兄弟节点")]),s._v("\nmindMap.execCommand("),a("span",{staticClass:"hljs-string"},[s._v("'INSERT_MULTI_NODE'")]),s._v(", node, [\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("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("code",[s._v("createNewNodeBehavior")]),s._v("设置为"),a("code",[s._v("notActive")]),s._v("。")]),a("p",[s._v("当自动生成结束后你又想恢复创建新节点时自动进入编辑状态,那么可以通过"),a("code",[s._v("updateConfig")]),s._v("方法修改"),a("code",[s._v("createNewNodeBehavior")]),s._v(":")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.updateConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("createNewNodeBehavior")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'default'")]),s._v("\n})\n")])]),a("h3",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrtV19rG0cQ/yrLliK5yCcl9EmVQ2LZUEPkFDd5yppwvhtJm97tHnd7lo0RlJDSNu1DoH0KFLdQaAntu/Pn40hWPkZmb3dPfw35Q/ySHBzszs78Zm5+M7t7J/RGkniHOdAmbWVByhNFMlB5co0JHicyVeSEpNCtESk6MhcKwhrJ+n4UycEedMmQdFMZkwoiVEqLDhdhx0/MEqMZiiNYj1G6HvsJo0wQwkQEimiZ1twgIo8iJpgIpMgUOgugnYKv4JaAdp9HYQoCtaprZOMaOdEARlHIEFBucTzUCiGF1OuiYBfXNo/v8LB6dU1bOCU4gqAt49gXYbWys/vt9t7te+2vd25u3du9tbVdqWFsBJ+uH2VQM2Ptxg4L5+YJfeU3ZwX6UXCkmqQyOvt58vyfV48eTB48w8y41aFF0U9gv6tJ7u4bqVu9O1VaQF/p8gK3kycPx/8/XgphMYzVoRRaZogSzB9Oltnp5JHil8FP587N2zvzLBWcuFRdBisf1AcT+xclGVtgM5WqD+mHzPCn2n+X2r8EYkzpfxxFjzmaT6VLTJ6gd2hL0eW9qg0hKGjYhUGRTej7h1ymGEsIXR+5wTCGDr08vKrL2PrwgYE7tBw4RE0SyiCPQSivB2o7Aj3cPN5BZqwlhqN8LiCtrNnvXEgRo1rA6FzWGNU500JGz/98ZnLG6EymGM15qBWuONk0j4y6PGqFi5plpeNF56Pnv5aczfmfi+HqrHy+dxZiWe6eon9m7bjgak9KpRn7RmZccanroRJBV2F1VwJMMaZz36pfxLCQ6kag+KG+cyD42leG6lbd3GDw7oITBXjtQHOcEdIK+SEJIj/LNhi19G1BLBktlq0CD6erJbmo0qrj6qyiQ1JSRge+VnEf3DrIlZKCXA8iHnyHKiuvMmgwOvv+/L+/Jr+fnv/0GMejs6ejs19KPlp1g/MmuHOH8ALy+O8n74E8PXlWBjz+4eH45ek7Brwa2MT7dsC4aSDKqx+fjh/9a1AmL347/+N0wXJKohu16jM1gtNMHUemXK7bmyyjXt1cX+324EEWe0GWMYo1p2+xhHgz5eTabcBD1cf+bTQ+L/QIScpqTwE9Yu0WC0Wj6PezxbJzUFND/yCTUa6MISG6Z5qkYWdKJtPJsvs+8F4f1b9sNJIj53m13y+c59hPexz9OtTED0Muek5Qhu7ZLnjDiK+4CGzQ5RwBsYMLDmiNGgb0D4N3P5MC/08KeGYXkIFyc2MUfz/MnubVceiluNfzGDRZ6wepHGR47N5HC7utrPglMbbLVGsrG9uQDl8Db1FoOA=="}})])}],l={},_=l,i=t("2877"),e=Object(i["a"])(_,n,v,!1,null,null,null);a["default"]=e.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b1c6f.js b/dist/js/chunk-2d0b1c6f.js deleted file mode 100644 index 3c4334df..00000000 --- a/dist/js/chunk-2d0b1c6f.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b1c6f"],{"20fa":function(v,s,e){"use strict";e.r(s);var i=function(){var v=this;v._self._c;return v._m(0)},_=[function(){var v=this,s=v._self._c;return s("div",[s("h1",[v._v("AssociativeLine 插件")]),s("blockquote",[s("p",[v._v("v0.4.5+")])]),s("blockquote",[s("p",[v._v("调整关联线控制点的功能从v0.4.6+开始支持")])]),s("blockquote",[s("p",[v._v("关联性支持文本编辑从v0.5.11+开始支持")])]),s("p",[v._v("该插件用于支持添加关联线。")]),s("h2",[v._v("注册")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" MindMap "),s("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),s("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map'")]),v._v("\n"),s("span",{staticClass:"hljs-keyword"},[v._v("import")]),v._v(" AssociativeLine "),s("span",{staticClass:"hljs-keyword"},[v._v("from")]),v._v(" "),s("span",{staticClass:"hljs-string"},[v._v("'simple-mind-map/src/plugins/AssociativeLine.js'")]),v._v("\n"),s("span",{staticClass:"hljs-comment"},[v._v("// import AssociativeLine from 'simple-mind-map/src/AssociativeLine.js' v0.6.0以下版本使用该路径")]),v._v("\n\nMindMap.usePlugin(AssociativeLine)\n")])]),s("p",[v._v("注册完且实例化"),s("code",[v._v("MindMap")]),v._v("后可通过"),s("code",[v._v("mindMap.associativeLine")]),v._v("获取到该实例。")]),s("h2",[v._v("配置")]),s("p",[v._v("支持修改关联线的粗细和颜色,分为默认状态和激活状态。配置如下:")]),s("ul",[s("li",[s("p",[s("code",[v._v("associativeLineWidth")]),v._v(":关联线默认状态的粗细,默认值为"),s("code",[v._v("2")])])]),s("li",[s("p",[s("code",[v._v("associativeLineColor")]),v._v(":关联线默认状态的颜色,默认值为"),s("code",[v._v("rgb(51, 51, 51)")])])]),s("li",[s("p",[s("code",[v._v("associativeLineActiveWidth")]),v._v(":关联线激活状态的粗细,默认值为"),s("code",[v._v("8")])])]),s("li",[s("p",[s("code",[v._v("associativeLineActiveColor")]),v._v(":关联线激活状态的颜色,默认值为"),s("code",[v._v("rgba(2, 167, 240, 1)")])])])]),s("p",[v._v("配置以主题的方式提供,所以如果想要修改这四个属性,可以通过"),s("code",[v._v("mindMap.setThemeConfig(config)")]),v._v("方法进行修改。")]),s("h2",[v._v("属性")]),s("h3",[v._v("mindMap.associativeLine.lineList")]),s("p",[v._v("当前所有连接线数据,数组类型,数组的每一项也是一个数组:")]),s("pre",{staticClass:"hljs"},[s("code",[v._v("[\n path, "),s("span",{staticClass:"hljs-comment"},[v._v("// 连接线节点")]),v._v("\n clickPath, "),s("span",{staticClass:"hljs-comment"},[v._v("// 不可见的点击线节点")]),v._v("\n node, "),s("span",{staticClass:"hljs-comment"},[v._v("// 起始节点")]),v._v("\n toNode "),s("span",{staticClass:"hljs-comment"},[v._v("// 目标节点")]),v._v("\n]\n")])]),s("h3",[v._v("mindMap.associativeLine.activeLine")]),s("p",[v._v("当前激活的连接线,数组类型,同"),s("code",[v._v("lineList")]),v._v("数组的每一项的结构。")]),s("h2",[v._v("方法")]),s("h3",[v._v("cancelCreateLine()")]),s("blockquote",[s("p",[v._v("v0.10.5+")])]),s("p",[v._v("中途取消创建关联线。")]),s("h3",[v._v("renderAllLines()")]),s("p",[v._v("重新渲染所有关联线。")]),s("h3",[v._v("removeAllLines()")]),s("p",[v._v("移除所有关联线。")]),s("h3",[v._v("createLineFromActiveNode()")]),s("p",[v._v("从当前激活节点开始创建关联线,如果有多个激活节点,默认为第一个节点。")]),s("p",[v._v("调用该方法后,会从第一个激活节点到当前鼠标实时位置渲染一条关联线,当点击某个目标节点后则代表创建完成,会在第一个激活节点和点击节点之间渲染一条关联线。")]),s("h3",[v._v("createLine(fromNode)")]),s("p",[v._v("从指定节点开始创建关联线。")]),s("p",[v._v("调用该方法后,会从指定节点到当前鼠标实时位置渲染一条关联线,当点击某个目标节点后则代表创建完成,会在指定节点和点击节点之间渲染一条关联线。")]),s("h3",[v._v("addLine(fromNode, toNode)")]),s("p",[v._v("直接添加一条关联线。")]),s("p",[v._v("调用该方法,会直接创建一条从"),s("code",[v._v("fromNode")]),v._v("到"),s("code",[v._v("toNode")]),v._v("节点的关联线。")]),s("h3",[v._v("removeLine()")]),s("p",[v._v("删除当前激活的关联线。点击某条关联线则视为激活。")]),s("h3",[v._v("clearActiveLine()")]),s("p",[v._v("清除当前激活的关联线的激活状态。")]),s("h3",[v._v("front()")]),s("blockquote",[s("p",[v._v("v0.8.0+")])]),s("p",[v._v("关联线顶层显示。")]),s("h3",[v._v("back()")]),s("blockquote",[s("p",[v._v("v0.8.0+")])]),s("p",[v._v("关联线回到原有层级。")])])}],o={},n=o,a=e("2877"),t=Object(a["a"])(n,i,_,!1,null,null,null);s["default"]=t.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b361e.js b/dist/js/chunk-2d0b361e.js deleted file mode 100644 index a058d595..00000000 --- a/dist/js/chunk-2d0b361e.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b361e"],{"27ad":function(s,a,t){"use strict";t.r(a);var e=function(){var s=this;s._self._c;return s._m(0)},r=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("Watermark plugin")]),a("blockquote",[a("p",[s._v("0.2.24+")])]),a("p",[a("code",[s._v("Watermark")]),s._v(" instance is responsible for displaying the watermark.")]),a("p",[s._v("Please refer to the "),a("a",{attrs:{href:"/mind-map/#/doc/zh/constructor"}},[s._v("Instantiation Options")]),s._v(" of the "),a("code",[s._v("MindMap")]),s._v(" class for configuration.")]),a("h2",[s._v("Register")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Watermark "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Watermark.js'")]),s._v("\n"),a("span",{staticClass:"hljs-comment"},[s._v("// import Watermark from 'simple-mind-map/src/Watermark.js' Use this path for versions below v0.6.0")]),s._v("\n\nMindMap.usePlugin(Watermark)\n")])]),a("p",[s._v("After registration and instantiation of "),a("code",[s._v("MindMap")]),s._v(", the instance can be obtained through "),a("code",[s._v("mindMap.watermark")]),s._v(".")]),a("h2",[s._v("Methods")]),a("h3",[s._v("draw()")]),a("p",[s._v("Redraw the watermark.")]),a("p",[s._v("Note: For imprecise rendering, some watermarks beyond the visible area will be drawn. If you have extreme performance requirements, it is recommended to develop the watermark function yourself.")]),a("h3",[s._v("updateWatermark(config)")]),a("p",[s._v("Update watermark config. Example:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.watermark.updateWatermark({\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'Watermark text'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineSpacing")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("textSpacing")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("angle")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("50")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("textStyle")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#000'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("opacity")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v("\n }\n})\n")])]),a("h3",[s._v("hasWatermark()")]),a("blockquote",[a("p",[s._v("v0.3.2+")])]),a("p",[s._v("Gets whether the watermark exists.")]),a("h3",[s._v("clear()")]),a("blockquote",[a("p",[s._v("v0.9.2+")])]),a("p",[s._v("Clear watermark.")])])}],n={},i=n,l=t("2877"),v=Object(l["a"])(i,e,r,!1,null,null,null);a["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b6d39.js b/dist/js/chunk-2d0b6d39.js deleted file mode 100644 index 1e23abaf..00000000 --- a/dist/js/chunk-2d0b6d39.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b6d39"],{"1f8f":function(s,n,t){"use strict";t.r(n);var a=function(){var s=this;s._self._c;return s._m(0)},i=[function(){var s=this,n=s._self._c;return n("div",[n("h1",[s._v("NodeImgAdjust插件")]),n("blockquote",[n("p",[s._v("v0.6.5+")])]),n("p",[s._v("该插件提供拖拽调整节点内图片大小的功能。")]),n("h2",[s._v("注册")]),n("pre",{staticClass:"hljs"},[n("code",[n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" NodeImgAdjust "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/NodeImgAdjust.js'")]),s._v("\n\nMindMap.usePlugin(NodeImgAdjust)\n")])]),n("p",[s._v("注册完且实例化"),n("code",[s._v("MindMap")]),s._v("后可通过"),n("code",[s._v("mindMap.nodeImgAdjust")]),s._v("获取到该实例。")])])}],d={},l=d,e=t("2877"),p=Object(e["a"])(l,a,i,!1,null,null,null);n["default"]=p.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b91e5.js b/dist/js/chunk-2d0b91e5.js deleted file mode 100644 index 4cdbb1d4..00000000 --- a/dist/js/chunk-2d0b91e5.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b91e5"],{"321a":function(s,e,t){"use strict";t.r(e);var n=function(){var s=this;s._self._c;return s._m(0)},l=[function(){var s=this,e=s._self._c;return e("div",[e("h1",[s._v("Select 插件")]),e("p",[e("code",[s._v("Select")]),s._v("插件提供鼠标多选节点的功能。")]),e("h2",[s._v("注册")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),e("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),e("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),e("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Select "),e("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),e("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Select.js'")]),s._v("\n"),e("span",{staticClass:"hljs-comment"},[s._v("// import Select from 'simple-mind-map/src/Select.js' v0.6.0以下版本使用该路径")]),s._v("\n\nMindMap.usePlugin(Select)\n")])]),e("p",[s._v("注册完且实例化"),e("code",[s._v("MindMap")]),s._v("后可通过"),e("code",[s._v("mindMap.select")]),s._v("获取到该实例。")]),e("h2",[s._v("方法")]),e("h3",[s._v("toPos(x, y)")]),e("p",[s._v("转换鼠标位置为相对于容器"),e("code",[s._v("el")]),s._v("的位置")])])}],a={},c=a,i=t("2877"),v=Object(i["a"])(c,n,l,!1,null,null,null);e["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b92c3.js b/dist/js/chunk-2d0b92c3.js deleted file mode 100644 index 75b2921f..00000000 --- a/dist/js/chunk-2d0b92c3.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b92c3"],{"328f":function(e,t,o){"use strict";o.r(t);var n=function(){var e=this;e._self._c;return e._m(0)},a=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("KeyboardNavigation plugin")]),t("blockquote",[t("p",[e._v("v0.2.17+")])]),t("p",[t("code",[e._v("KeyboardNavigation")]),e._v(" plugin provides keyboard navigation function, that is, when you press the direction key, it will automatically find the next node and activate it.")]),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(" KeyboardNavigation "),t("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),t("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/plugins/KeyboardNavigation.js'")]),e._v("\n"),t("span",{staticClass:"hljs-comment"},[e._v("// import KeyboardNavigation from 'simple-mind-map/src/KeyboardNavigation.js' Use this path for versions below v0.6.0")]),e._v("\n\nMindMap.usePlugin(KeyboardNavigation)\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.keyboardNavigation")]),e._v(".")]),t("h2",[e._v("Methods")]),t("h3",[e._v("focus(dir)")]),t("p",[t("code",[e._v("dir")]),e._v(":Which direction to find the next node,Optional value:"),t("code",[e._v("Left")]),e._v("、 "),t("code",[e._v("Up")]),e._v("、 "),t("code",[e._v("Right")]),e._v("、 "),t("code",[e._v("Down")])]),t("p",[e._v("Focus on the next node")]),t("h3",[e._v("getNodeRect(node)")]),t("p",[t("code",[e._v("node")]),e._v(":Node")]),t("p",[e._v("Get the location information of the node and return an object:")]),t("pre",{staticClass:"hljs"},[t("code",[e._v("{\n left,\n top,\n right,\n bottom\n}\n")])]),t("h3",[e._v("getDistance(node1Rect, node2Rect)")]),t("p",[t("code",[e._v("node1Rect")]),e._v("、"),t("code",[e._v("node2Rect")]),e._v(":The location data of nodes can be obtained through the "),t("code",[e._v("getNodeRect(node)")])]),t("p",[e._v("Get the distance between two nodes")]),t("h3",[e._v("getCenter(nodeRect)")]),t("p",[t("code",[e._v("nodeRect")]),e._v(":The location data of nodes can be obtained through the "),t("code",[e._v("getNodeRect(node)")])]),t("p",[e._v("Get the center point of the node")])])}],i={},s=i,d=o("2877"),v=Object(d["a"])(s,n,a,!1,null,null,null);t["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b978a.js b/dist/js/chunk-2d0b978a.js deleted file mode 100644 index 1f34522a..00000000 --- a/dist/js/chunk-2d0b978a.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b978a"],{"32a6":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},l=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("设置节点样式")]),a("p",[s._v("本节将介绍如何更新当前激活节点的样式。")]),a("p",[s._v("样式总体上分为两类,一是常态的样式,二是激活的样式。设置的方法都是"),a("code",[s._v("setStyle")]),s._v("方法,通过第三个参数进行指定:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 设置常态样式")]),s._v("\nnode.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'样式属性'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'样式值'")]),s._v(")\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置激活样式")]),s._v("\nnode.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'样式属性'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'样式值'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n")])]),a("h2",[s._v("设置常态样式")]),a("h3",[s._v("设置文字样式")]),a("p",[s._v("文字样式目前支持:"),a("code",[s._v("字体")]),s._v("、"),a("code",[s._v("字号")]),s._v("、"),a("code",[s._v("行高")]),s._v("、"),a("code",[s._v("颜色")]),s._v("、"),a("code",[s._v("加粗")]),s._v("、"),a("code",[s._v("斜体")]),s._v("、"),a("code",[s._v("划线")]),s._v("。")]),a("p",[s._v("这些样式选择的UI界面都需要你自行开发,然后调用节点的"),a("code",[s._v("setStyle")]),s._v("方法更新。")]),a("p",[s._v("同样首先需要监听节点的激活事件来换取当前激活的节点:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" activeNodes = shallowRef([])\nmindMap.on("),a("span",{staticClass:"hljs-string"},[s._v("'node_active'")]),s._v(", "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("node, activeNodeList")]),s._v(") =>")]),s._v(" {\n activeNodes.value = activeNodeList\n})\n")])]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 设置字体")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'fontFamily'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'宋体, SimSun, Songti SC'")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置字号")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'fontSize'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("16")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置行高")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'lineHeight'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("1.5")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置颜色")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'color'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置加粗")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'fontWeight'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'bold'")]),s._v(")"),a("span",{staticClass:"hljs-comment"},[s._v("// node.setStyle('fontWeight', 'normal')")]),s._v("\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置划线")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 下划线")]),s._v("\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'textDecoration'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'underline'")]),s._v(")\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 删除线")]),s._v("\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'textDecoration'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'line-through'")]),s._v(")\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 上划线")]),s._v("\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'textDecoration'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'overline'")]),s._v(")\n})\n")])]),a("h3",[s._v("设置边框样式")]),a("p",[s._v("边框样式支持设置:"),a("code",[s._v("颜色")]),s._v("、"),a("code",[s._v("虚线")]),s._v("、"),a("code",[s._v("线宽")]),s._v("、"),a("code",[s._v("圆角")]),s._v("。")]),a("p",[s._v("设置边框样式前请先检查线宽是否被设置成了0。")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框颜色")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderColor'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'#000'")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框虚线")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderDasharray'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'5,5'")]),s._v(")"),a("span",{staticClass:"hljs-comment"},[s._v("// node.setStyle('borderDasharray', 'none')")]),s._v("\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框宽度")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderWidth'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框圆角")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderRadius'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(")\n})\n")])]),a("h3",[s._v("设置背景样式")]),a("p",[s._v("背景样式也就是背景颜色。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("activeNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'fillColor'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v(")\n})\n")])]),a("h3",[s._v("设置形状样式")]),a("p",[s._v("目前支持以下形状:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("[\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'矩形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rectangle'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'菱形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'diamond'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'平行四边形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'parallelogram'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'圆角矩形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'roundedRectangle'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'八角矩形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'octagonalRectangle'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'外三角矩形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'outerTriangularRectangle'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'内三角矩形'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'innerTriangularRectangle'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'椭圆'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'ellipse'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'圆'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'circle'")]),s._v("\n }\n]\n")])]),a("p",[s._v("设置形状前请先确认边框宽度是否被设置成了0。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("activeNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'shape'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'circle'")]),s._v(")\n})\n")])]),a("h3",[s._v("设置线条样式")]),a("p",[s._v("节点线条支持设置:"),a("code",[s._v("颜色")]),s._v("、"),a("code",[s._v("虚线")]),s._v("、"),a("code",[s._v("线宽")]),s._v("。")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 设置线条颜色")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'lineColor'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'#000'")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置线条虚线")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'lineDasharray'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'5, 5, 1, 5'")]),s._v(")"),a("span",{staticClass:"hljs-comment"},[s._v("// node.setStyle('lineDasharray', 'none')")]),s._v("\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置线条宽度")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'lineWidth'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("3")]),s._v(")\n})\n")])]),a("h3",[s._v("设置节点内边距")]),a("p",[s._v("节点内边距支持设置水平和垂直方向的内边距。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("activeNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'paddingX'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("50")]),s._v(")\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'paddingY'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("50")]),s._v(")\n})\n")])]),a("h2",[s._v("设置激活样式")]),a("p",[s._v("激活样式只支持设置边框相关样式和背景。可以通过如下方式获取支持的属性:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { supportActiveStyle } "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/themes/default'")]),s._v("\n\n"),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" checkIsSupportActive = "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("prop")]),s._v(") =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" supportActiveStyle.includes(prop)\n}\n")])]),a("p",[s._v("其他和数值常态样式是一样的,只需要给"),a("code",[s._v("setStyle")]),s._v("方法传入第三个参数:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框颜色")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderColor'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'#000'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框虚线")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderDasharray'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'5,5'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")"),a("span",{staticClass:"hljs-comment"},[s._v("// node.setStyle('borderDasharray', 'none', true)")]),s._v("\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框宽度")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderWidth'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置边框圆角")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'borderRadius'")]),s._v(", "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 设置背景颜色")]),s._v("\nactiveNodes.value.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("node")]),s._v(" =>")]),s._v(" {\n node.setStyle("),a("span",{staticClass:"hljs-string"},[s._v("'fillColor'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\n})\n")])]),a("h2",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFV91uG0UUfpXRVmgd5KwdIFwYJypNikBqUBUjFdSt0Hh3bA/MzqxmZ52GyBIqUKAtAlSJClClhhu4gHCDqJI27cvEP4/RM/tfex35wlKj2N6Z+b5zzsz55szsgfGu71v9kBgNoxk4kvoKBUSF/qbNqecLqdABkqRTRYLviJAr4lZR0MOMib1d0kED1JHCQyZYMDPGDuXuDvbjIdsIoJuRVQ96Vz3s24bNEbI5IwrpPo3cQDxkzOY2r9XQ8PT+8PsfRs+/HP33ZPzb15M7t8a3joffPZgc/mVzR/BAIewo2icfCpcEwM3jqVy/sZJYmRw9G58ejX75dvjPg9Gjx8OnP6ZkmN9H5KZqqX1GgF1ZQRub6EAHVTBr9TELidUR8jJ2ehUOfRkMId20wE5ko2J2BFfvYY+yfbOKzOHR3bPT+1XUol4r5PAreFdR1NoyIbY57Bb9ggB37e1yCKOcvE9ot6c0yFovRzmCCakjkMQ9x9e11JDZFmweUMEKbRNHSKyo4BqsY1hVPSnCbk+TbDWA78FLyz15djw6vD2z3JeEdIlc4oK3I4Nb6Xwv1Ov1OfOIkdsYNCIljvKzXl0/F3yNuqoHwDfOA+1il4YBoHQuSpfiq3ujX/8tLkJ3SWKjjGUzbwNvXjKGp3+M7/xfiKDVw/6SEgDL6WvBmg6VDpsbwvjk+ejh4YweroCUlqgGrcxFtKBxU0pA8L8G3+cwUjm8OW+Zb38Dsp88fliY4FXsupQvKeF+bOxjLbZ6eZwJ5JMUUogzq9uVQiiFukv20npdSdwT1kCucEKPcGV1ibrMiH68tP+BWzET5hbUEQyLI82VasxyscKNdAZQ3w3dYRuFrrhbFxbdbRujR8dxbY9PBP03SIxpoNOjzJWEa/D13MaUuVIv057OTu6NT/6cdvaywxKnN/KxIu4VRZA+Jn0pj3KqdoVQWldXRUB1uQamyUgnqvEOpA7SFLEGK+/EZy9CIN/x7z8Pf/o7jik+bc9O7p49gYqRCcQSvGJqrX0aixcMRmKtRgK8QgOVa6pE4FpfCS52D5qET7MW3zTgjgENReB6gBWBFkJNl/aRw3AQbNhGEsQ28YRtRMMJgLr5aKZEgDRrMFoEppaUEKyNAYL6q7QDHcVQGYHzuYc2UT3zYqtmO1RKcHTRYdT5HBjFWwPgZq8XzVpMSUxABCUmCidhZqR4aC5mpJtzo1NmIVZU/TNifDgsRMyqdUYulvWFTCT1MPee1swpdp7A9KlZK+gDmoEOJEJcTG6btmHV4itmUscsEniWEwS2kandKkgpVeuerusNtFavvxbhEPKz7SMJeASBRAPRztOfC9OSS03lRNwOBAtVTERIb8IGqictJfy8Meu+F93LGuitet2/mXou9/t66tnDskvBb2o1OQjSjix0K9kBC0a8lkaQBJ21wSDs3igHRtWIM6Av9dZngeDwDhGZt5MByEBWFm0DXhHiWmjV4NGScChRj+hkrbal2AuIBCO2kZS1kteGmDubas1KYhsYgxcal4r4"}})])}],v={},e=v,_=t("2877"),i=Object(_["a"])(e,n,l,!1,null,null,null);a["default"]=i.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0b9b64.js b/dist/js/chunk-2d0b9b64.js deleted file mode 100644 index fc3964b7..00000000 --- a/dist/js/chunk-2d0b9b64.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0b9b64"],{"33b0":function(t,s,a){"use strict";a.r(s);var n=function(){var t=this;t._self._c;return t._m(0)},i=[function(){var t=this,s=t._self._c;return s("div",[s("h1",[t._v("结构")]),s("p",[s("code",[t._v("simple-mind-map")]),t._v("目前支持的结构:logicalStructure(逻辑结构图)、mindMap(思维导图)、organizationStructure(组织结构图)、catalogOrganization(目录组织图)、timeline(时间轴)、timeline2(时间轴2)、fishbone(鱼骨图)、verticalTimeline(v0.6.6+竖向时间轴)。")]),s("p",[t._v("可以在实例化"),s("code",[t._v("simple-mind-map")]),t._v("时通过选项指定使用的结构:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[t._v("new")]),t._v(" MindMap({\n "),s("span",{staticClass:"hljs-comment"},[t._v("// ...")]),t._v("\n "),s("span",{staticClass:"hljs-attr"},[t._v("layout")]),t._v(": "),s("span",{staticClass:"hljs-string"},[t._v("'logicalStructure'")]),t._v("\n})\n")])]),s("p",[t._v("也可以动态切换结构:")]),s("pre",{staticClass:"hljs"},[s("code",[t._v("mindMap.setLayout("),s("span",{staticClass:"hljs-string"},[t._v("'organizationStructure'")]),t._v(")\n")])]),s("p",[t._v("获取当前使用的结构可以使用"),s("code",[t._v("getLayout")]),t._v("方法:")]),s("pre",{staticClass:"hljs"},[s("code",[s("span",{staticClass:"hljs-keyword"},[t._v("const")]),t._v(" layout = mindMap.getLayout()\n")])]),s("h2",[t._v("完整示例")]),s("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFVVtrFDEU/iuHiMxWtrNb8Gndlnp7EFqR+tgUSWfS3WgmGSaZXiwLUgrWS0Hpg6Ag6os++ChCW8Q/0+72Z3iymZkd2z745sIsk3P5vpOc72S2yc00DddzTjqka6JMpBYMt3k6R5VIUp1Z2IaMrzVBq0WdK8vjJpg+k1JvLPE1GMBaphMIECGoMhaFihdZ6l2UGDRLPp2gdTphKSVUAVAluQVnc5GzoHIpvb3VgtNfB6cv9oe/nw1/HI/e75693BntHJ7uvTv7/I2qSCtjgUVWrPP7OuYGsycVNZZXpqjyKHvPh/tfRscHw4+7ZVrUZ6rHF7aYzi3mNaZgdg62HXFRSoi7X2Bb6G4EOusxJZ4yK7R6aLM8snnGA4QfOIbqQBoXUdyG+EZ5EI2xC4DLDsQ6yhOubNjj9q7k7vXW1r24ERSZt7WyTCieBVNNnxUzyzoe3f0ocQZKaiZvtnzTOjMlw0+H/sj8UbvfoABzgVFfyDjjygUvTzDOwV3Kcp7p5Oj16OjrebK/CS8hXZn46nH/qYLytbCVeUIJu6S1dRp7oI1wKsDMQPI1GzQhiLB12KaVIlyORdOBQOqeiJicCMb5B1M3vLoBUJmjD29P33z3RXuVnxy9Ojn+WdehVo1AIfUjr3RkbLhlE9z/gjB2IjqoT0O4zmTOnQCLOE+PosWn2/IzjtONC8txMJnluALoxmIdIsmMmaWkKOIOTzQlY3cRIOKJt5IqhnRb6K0HlkhWa7nKXIh3Uttdza3VCuYjKaInGFKfSYyrj2235YNL5IqlfOu2apvApbFb0u9nvriMKAlb/gYqpjHkJgkjYyipWhLW9lse6YaIbb8DM+321XEcQFqJIOPIiAc+doz1454r58+lhJokslWjZW59ImoGpdSBdrGyOp0sLtL3uej1Mfx6u51ulsyX814rmROW9QTylqgpi2OheqWhKj0s2vSPFc+UFRRFV2sERImNe0CaxHfA3fnhY6MVfmLG8LRwYAeq4aYEvyB+osMWvoYZXq0i4a5Z06uZ3jA8QxBKimm75Kvicy+22mUVtQ3I4A+xm1Zg"}})])}],e={},l=e,o=a("2877"),r=Object(o["a"])(l,n,i,!1,null,null,null);s["default"]=r.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0ba309.js b/dist/js/chunk-2d0ba309.js deleted file mode 100644 index 1ab001f7..00000000 --- a/dist/js/chunk-2d0ba309.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0ba309"],{"35c4":function(s,t,v){"use strict";v.r(t);var a=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("RichText插件")]),t("blockquote",[t("p",[s._v("v0.4.0+")])]),t("p",[s._v("该插件提供节点富文本编辑的能力,注册了即可生效。")]),t("p",[s._v("默认节点编辑只能对节点内所有文本统一应用样式,通过该插件可以支持富文本编辑的效果,目前支持:加粗、斜体、下划线、删除线、字体、字号、颜色、背景颜色。不支持上划线、行高。")]),t("p",[s._v("该插件的原理是使用"),t("a",{attrs:{href:"https://github.com/quilljs/quill"}},[s._v("Quill")]),s._v("编辑器实现富文本编辑,然后把编辑后生成的"),t("code",[s._v("DOM")]),s._v("节点直接作为节点的文本数据,并且在渲染的时候通过"),t("code",[s._v("svg")]),s._v("的"),t("code",[s._v("foreignObject")]),s._v("标签嵌入"),t("code",[s._v("DOM")]),s._v("节点。")]),t("blockquote",[t("p",[s._v("v0.5.6即以前的版本存在以下提示:")]),t("p",[s._v("这样也造成了一个问题,就是导出为图片的功能受到了影响,原本将"),t("code",[s._v("svg")]),s._v("导出为图片的原理很简单,获取到"),t("code",[s._v("svg")]),s._v("字符串,然后创建为"),t("code",[s._v("type=image/svg+xml")]),s._v("类型的"),t("code",[s._v("blob")]),s._v("数据,再使用"),t("code",[s._v("URL.createObjectURL")]),s._v("方法生成"),t("code",[s._v("data:url")]),s._v("数据,再创建一个"),t("code",[s._v("Image")]),s._v("标签,将"),t("code",[s._v("data:url")]),s._v("作为该图片的"),t("code",[s._v("src")]),s._v(",最后再将这个图片绘制到"),t("code",[s._v("canvas")]),s._v("对象上进行导出,但是经过测试,当"),t("code",[s._v("svg")]),s._v("中嵌入了"),t("code",[s._v("DOM")]),s._v("节点,这种方式导出会出错,并且尝试了多种方式后都无法实现完美的导出效果,目前的方式是遍历"),t("code",[s._v("svg")]),s._v("中的"),t("code",[s._v("foreignObject")]),s._v("节点,使用"),t("a",{attrs:{href:"https://github.com/niklasvh/html2canvas"}},[s._v("html2canvas")]),s._v("将"),t("code",[s._v("foreignObject")]),s._v("节点内的"),t("code",[s._v("DOM")]),s._v("节点转换为图片再替换掉"),t("code",[s._v("foreignObject")]),s._v("节点,这种方式可以工作,但是非常耗时,因为"),t("code",[s._v("html2canvas")]),s._v("转换一次的时间很长,导致转换一个节点都需要耗时差不多2秒,这样导致节点越多,转换时间越慢,所以如果无法忍受长时间的导出的话推荐不要使用该插件。")])]),t("blockquote",[t("p",[t("code",[s._v("v0.5.7+")]),s._v("的版本直接使用"),t("code",[s._v("html2canvas")]),s._v("转换整个"),t("code",[s._v("svg")]),s._v(",速度不再是问题,但是目前存在一个"),t("code",[s._v("bug")]),s._v(",就是节点的颜色导出后不生效。")])]),t("p",[t("code",[s._v("v0.6.13+")]),s._v("版本使用"),t("a",{attrs:{href:"https://github.com/1904labs/dom-to-image-more"}},[s._v("dom-to-image-more")]),s._v("替换了"),t("code",[s._v("html2canvas")]),s._v(",解决了节点的颜色导出后不生效的问题。")]),t("blockquote",[t("p",[s._v("dom-to-image-more兼容性比较差,在很多浏览器上导出图片都是空的,所以可以根据你自己的需求替换成html2canvas。")])]),t("p",[s._v("从"),t("code",[s._v("0.6.16+")]),s._v("版本后不再使用"),t("code",[s._v("dom-to-image-more")]),s._v("、"),t("code",[s._v("html2canvas")]),s._v("之类的第三方库实现导出,兼容性及导出都不再有问题。")]),t("h2",[s._v("注册")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" RichText "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/RichText.js'")]),s._v("\n"),t("span",{staticClass:"hljs-comment"},[s._v("// import RichText from 'simple-mind-map/src/RichText.js' v0.6.0以下版本使用该路径")]),s._v("\n\nMindMap.usePlugin(RichText, opt?)\n")])]),t("p",[s._v("注册完且实例化"),t("code",[s._v("MindMap")]),s._v("后可通过"),t("code",[s._v("mindMap.richText")]),s._v("获取到该实例。")]),t("h3",[s._v("注册选项")]),t("p",[t("code",[s._v("opt")]),s._v("选项可以传递以下参数:")]),t("ul",[t("li",[t("code",[s._v("opt.fontFamilyList")])])]),t("p",[s._v("替换富文本编辑时内置字体列表。内置的列表为:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("[\n "),t("span",{staticClass:"hljs-string"},[s._v("'宋体, SimSun, Songti SC'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'微软雅黑, Microsoft YaHei'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'楷体, 楷体_GB2312, SimKai, STKaiti'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'黑体, SimHei, Heiti SC'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'隶书, SimLi'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'andale mono'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'arial, helvetica, sans-serif'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'arial black, avant garde'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'comic sans ms'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'impact, chicago'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'times new roman'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'sans-serif'")]),s._v(",\n "),t("span",{staticClass:"hljs-string"},[s._v("'serif'")]),s._v("\n]\n")])]),t("ul",[t("li",[t("code",[s._v("opt.fontSizeList")])])]),t("p",[s._v("替换富文本编辑时内置字号列表。内置的列表为:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("["),t("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(", "),t("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(", "),t("span",{staticClass:"hljs-number"},[s._v("3")]),s._v(", .."),t("span",{staticClass:"hljs-number"},[s._v(".100")]),s._v("]\n")])]),t("h2",[s._v("方法")]),t("h3",[s._v("setNotActiveNodeStyle(node, style)")]),t("blockquote",[t("p",[s._v("v0.8.0+")])]),t("ul",[t("li",[t("code",[s._v("style")]),s._v(":Object,样式对象。")])]),t("p",[s._v("给未激活的节点设置富文本样式。")]),t("h3",[s._v("selectAll()")]),t("p",[s._v("选中全部。当节点正在编辑中可以通过该方法选中节点内的所有文本。")]),t("h3",[s._v("focus()")]),t("blockquote",[t("p",[s._v("v0.4.7+")])]),t("p",[s._v("聚焦。")]),t("h3",[s._v("formatText(config = {}, clear = false, pure = false)")]),t("ul",[t("li",[t("code",[s._v("config")]),s._v(":对象,键为样式属性,值为样式值,完整的配置如下:")])]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-attr"},[s._v("font")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'字体'")]),s._v(",\n "),t("span",{staticClass:"hljs-attr"},[s._v("size")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'12px,'")]),s._v(" "),t("span",{staticClass:"hljs-comment"},[s._v("// 字号")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("bold")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),t("span",{staticClass:"hljs-comment"},[s._v("// 是否加粗,true/false ")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("italic")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),t("span",{staticClass:"hljs-comment"},[s._v("// 是否斜体,true/false ")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("underline")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),t("span",{staticClass:"hljs-comment"},[s._v("// 是否显示下划线,true/false ")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("strike")]),s._v(": "),t("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),t("span",{staticClass:"hljs-comment"},[s._v("// 是否显示删除线,true/false ")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'#333'")]),s._v(" "),t("span",{staticClass:"hljs-comment"},[s._v("// 颜色")]),s._v("\n}\n")])]),t("ul",[t("li",[t("p",[t("code",[s._v("clear")]),s._v(":是否是清除样式")])]),t("li",[t("p",[t("code",[s._v("pure")]),s._v(":v0.9.4+,如果设为true,那么仅会格式化文本样式,不会同步到节点的数据中")])])]),t("p",[s._v("格式化当前选中的文本。会将样式设置同步到节点的数据中。")]),t("h3",[s._v("formatRangeText(range, config = {})")]),t("ul",[t("li",[t("code",[s._v("range")]),s._v(":"),t("code",[s._v("Quill")]),s._v("的范围对象,格式如下:")])]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n index,\n length\n}\n")])]),t("ul",[t("li",[t("code",[s._v("config")]),s._v(":同"),t("code",[s._v("formatText")]),s._v("方法")])]),t("p",[s._v("格式化指定范围的文本。")]),t("h3",[s._v("formatAllText(config = {})")]),t("ul",[t("li",[t("code",[s._v("config")]),s._v(":同"),t("code",[s._v("formatText")]),s._v("方法")])]),t("p",[s._v("格式化当前编辑节点的所有文本。")]),t("h3",[s._v("removeFormat()")]),t("blockquote",[t("p",[s._v("v0.4.1+")])]),t("p",[s._v("清除当前选中文本的样式。")]),t("h3",[s._v("normalStyleToRichTextStyle(style)")]),t("p",[s._v("将普通节点样式对象转换成富文本样式对象。因为非富文本编辑时的节点样式属性和富文本样式属性是存在差异的,所以需要一个转换操作。比如:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-attr"},[s._v("fontFamily")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'xxx'")]),s._v("\n}\n\n"),t("span",{staticClass:"hljs-comment"},[s._v("// 转换后")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("font")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'xxx'")]),s._v("\n}\n")])]),t("h3",[s._v("richTextStyleToNormalStyle(config)")]),t("p",[s._v("将富文本样式对象转换成普通节点样式对象。比如:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-attr"},[s._v("size")]),s._v(": "),t("span",{staticClass:"hljs-string"},[s._v("'16px'")]),s._v("\n}\n\n"),t("span",{staticClass:"hljs-comment"},[s._v("// 转换后")]),s._v("\n\n{\n "),t("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),t("span",{staticClass:"hljs-number"},[s._v("16")]),s._v("\n}\n")])]),t("h3",[s._v("handleSvgDomElements(svg)")]),t("ul",[t("li",[t("code",[s._v("svg")]),s._v(": "),t("code",[s._v("svg")]),s._v("节点")])]),t("p",[s._v("将"),t("code",[s._v("svg")]),s._v("中嵌入的"),t("code",[s._v("dom")]),s._v("元素转换成图片,返回一个"),t("code",[s._v("Promise")]),s._v("。")]),t("h3",[s._v("transformAllNodesToNormalNode()")]),t("p",[s._v("将所有节点转换成非富文本节点。")])])}],l={},n=l,e=v("2877"),c=Object(e["a"])(n,a,_,!1,null,null,null);t["default"]=c.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0bd3f9.js b/dist/js/chunk-2d0bd3f9.js deleted file mode 100644 index f157b32b..00000000 --- a/dist/js/chunk-2d0bd3f9.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0bd3f9"],{"2ad8":function(s,a,n){"use strict";n.r(a);var t=function(){var s=this;s._self._c;return s._m(0)},l=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("如何开发一个插件")]),a("p",[s._v("库本身提供了一些插件,如果满足不了你的需求,你也可以自己开发一个新插件。")]),a("p",[s._v("想要开发一个插件,你肯定需要对库的实现原理、模块划分、目录结构等等有一定了解,简而言之,需要你对库的源码有一定程度的熟悉,所以如果还没看过,现在就可以先去阅读一下,好消息是,本库的源码并不复杂,相信你一定能看懂。")]),a("p",[s._v("在你决定动手之前,最好先看一下内部插件是如何实现的。")]),a("p",[s._v("一个插件就是一个类:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-class"},[a("span",{staticClass:"hljs-keyword"},[s._v("class")]),s._v(" "),a("span",{staticClass:"hljs-title"},[s._v("YourPlugin")]),s._v(" ")]),s._v("{\n "),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-title"},[s._v("constructor")]),s._v("("),a("span",{staticClass:"hljs-params"},[s._v("{ mindMap }")]),s._v(")")]),s._v(" {\n "),a("span",{staticClass:"hljs-built_in"},[s._v("this")]),s._v(".mindMap = mindMap\n }\n\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 插件被移除前做的事情")]),s._v("\n "),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-title"},[s._v("beforePluginRemove")]),s._v("("),a("span",{staticClass:"hljs-params"}),s._v(")")]),s._v(" {\n \n }\n\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 插件被卸载前做的事情")]),s._v("\n "),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-title"},[s._v("beforePluginDestroy")]),s._v("("),a("span",{staticClass:"hljs-params"}),s._v(")")]),s._v(" {\n \n }\n}\n\nScrollbar.instanceName = "),a("span",{staticClass:"hljs-string"},[s._v("'yourPlugin'")]),s._v("\n")])]),a("p",[s._v("实例化插件时会传入思维导图实例,你可以保存起来,后续可以通过它来监听方法或调用实例的方法,甚至是其他插件的方法。")]),a("p",[s._v("需要给插件类添加一个静态属性"),a("code",[s._v("instanceName")]),s._v(",会将你的插件实例通过该属性保存到思维导图实例上,外部或其他插件想要获取你的插件实例时都需要通过该属性:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.yourPlugin.xxx\n")])]),a("p",[s._v("插件存在两个生命周期函数:")]),a("p",[a("code",[s._v("beforePluginRemove")]),s._v("生命周期会在思维导图实例调用"),a("code",[s._v("removePlugin")]),s._v("方法时调用,代表思维导图实例并没有销毁,只是移除该插件。")]),a("p",[a("code",[s._v("beforePluginDestroy")]),s._v("生命周期会在销毁思维导图时调用,此时思维导图实例也会被销毁。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.removePlugin(YourPlugin)\n")])]),a("p",[s._v("你也可以继承内部的一些插件:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" ScrollbarPlugin "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Scrollbar.js'")]),s._v("\n\n"),a("span",{staticClass:"hljs-class"},[a("span",{staticClass:"hljs-keyword"},[s._v("class")]),s._v(" "),a("span",{staticClass:"hljs-title"},[s._v("YourPlugin")]),s._v(" "),a("span",{staticClass:"hljs-keyword"},[s._v("extends")]),s._v(" "),a("span",{staticClass:"hljs-title"},[s._v("ScrollbarPlugin")]),s._v(" ")]),s._v("{\n "),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-title"},[s._v("constructor")]),s._v("("),a("span",{staticClass:"hljs-params"},[s._v("opt")]),s._v(")")]),s._v(" {\n "),a("span",{staticClass:"hljs-built_in"},[s._v("super")]),s._v("(opt)\n }\n}\n\nScrollbar.instanceName = "),a("span",{staticClass:"hljs-string"},[s._v("'yourPlugin'")]),s._v("\n")])]),a("p",[s._v("插件的原理无非是监听一些你需要的事件,然后调用一些你需要的方法来完成一些功能,其实没啥好多说的,建议看一下内部插件的实现。")]),a("p",[s._v("当你完成了一个插件后,你可以考虑发布到"),a("code",[s._v("npm")]),s._v(",提供给其他开发者使用。")])])}],i={},v=i,_=n("2877"),c=Object(_["a"])(v,t,l,!1,null,null,null);a["default"]=c.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0bd54e.js b/dist/js/chunk-2d0bd54e.js deleted file mode 100644 index 6add80fa..00000000 --- a/dist/js/chunk-2d0bd54e.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0bd54e"],{"2c18":function(e,o,v){"use strict";v.r(o);var t=function(){var e=this;e._self._c;return e._m(0)},n=[function(){var e=this,o=e._self._c;return o("div",[o("h1",[e._v("KeyboardNavigation插件")]),o("blockquote",[o("p",[e._v("v0.2.17+")])]),o("p",[o("code",[e._v("KeyboardNavigation")]),e._v("插件提供键盘导航的功能,也就是当你按下方向键时会自动寻找下一个节点并激活")]),o("h2",[e._v("注册")]),o("pre",{staticClass:"hljs"},[o("code",[o("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" MindMap "),o("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),o("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map'")]),e._v("\n"),o("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" KeyboardNavigation "),o("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),o("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/plugins/KeyboardNavigation.js'")]),e._v("\n"),o("span",{staticClass:"hljs-comment"},[e._v("// import KeyboardNavigation from 'simple-mind-map/src/KeyboardNavigation.js' v0.6.0以下版本使用该路径")]),e._v("\n\nMindMap.usePlugin(KeyboardNavigation)\n")])]),o("p",[e._v("注册完且实例化"),o("code",[e._v("MindMap")]),e._v("后可通过"),o("code",[e._v("mindMap.keyboardNavigation")]),e._v("获取到该实例。")]),o("h2",[e._v("方法")]),o("h3",[e._v("focus(dir)")]),o("p",[o("code",[e._v("dir")]),e._v(":要寻找哪个方向的下一个节点,可选值:"),o("code",[e._v("Left")]),e._v("、 "),o("code",[e._v("Up")]),e._v("、 "),o("code",[e._v("Right")]),e._v("、 "),o("code",[e._v("Down")])]),o("p",[e._v("聚焦到下一个节点")]),o("h3",[e._v("getNodeRect(node)")]),o("p",[o("code",[e._v("node")]),e._v(":节点")]),o("p",[e._v("获取节点的位置信息,返回一个对象:")]),o("pre",{staticClass:"hljs"},[o("code",[e._v("{\n left,\n top,\n right,\n bottom\n}\n")])]),o("h3",[e._v("getDistance(node1Rect, node2Rect)")]),o("p",[o("code",[e._v("node1Rect")]),e._v("、"),o("code",[e._v("node2Rect")]),e._v(":节点的位置数据,可通过"),o("code",[e._v("getNodeRect(node)")]),e._v("方法获取")]),o("p",[e._v("获取两个节点的距离")]),o("h3",[e._v("getCenter(nodeRect)")]),o("p",[o("code",[e._v("nodeRect")]),e._v(":节点的位置数据,可通过"),o("code",[e._v("getNodeRect(node)")]),e._v("方法获取")]),o("p",[e._v("获取节点的中心点")])])}],s={},a=s,_=v("2877"),d=Object(_["a"])(a,t,n,!1,null,null,null);o["default"]=d.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0bd5e6.js b/dist/js/chunk-2d0bd5e6.js deleted file mode 100644 index 423b59e5..00000000 --- a/dist/js/chunk-2d0bd5e6.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0bd5e6"],{"2c65":function(n,i,t){"use strict";t.r(i);var u=function(){var n=this;n._self._c;return n._m(0)},c=[function(){var n=this,i=n._self._c;return i("div",[i("h1",[n._v("导出")]),i("h2",[n._v("导出为xmind")]),i("p",[n._v("导出的xmind文件无法在xmind8及以下版本打开,请使用最新版xmind软件。")])])}],e={},d=e,r=t("2877"),s=Object(r["a"])(d,u,c,!1,null,null,null);i["default"]=s.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0be174.js b/dist/js/chunk-2d0be174.js deleted file mode 100644 index f09bfb53..00000000 --- a/dist/js/chunk-2d0be174.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0be174"],{"2f7a":function(e,t,s){"use strict";s.r(t);var a=function(){var e=this;e._self._c;return e._m(0)},n=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("KeyCommand instance")]),t("p",[e._v("The "),t("code",[e._v("keyCommand")]),e._v(" instance is responsible for adding and triggering shortcuts. It includes some built-in shortcuts and can also be added manually. The "),t("code",[e._v("mindMap.keyCommand")]),e._v(" instance can be obtained through this.")]),t("h2",[e._v("Methods")]),t("h3",[e._v("addShortcut(key, fn)")]),t("p",[e._v("Add a shortcut")]),t("p",[t("code",[e._v("key")]),e._v(": Shortcut key, key values can be viewed at "),t("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/core/command/keyMap.js"}},[e._v("keyMap.js")]),e._v(" Example:")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-comment"},[e._v("// Single key")]),e._v("\nmindMap.keyCommand.addShortcut("),t("span",{staticClass:"hljs-string"},[e._v('"Enter"')]),e._v(", "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {});\n"),t("span",{staticClass:"hljs-comment"},[e._v("// Or")]),e._v("\nmindMap.keyCommand.addShortcut("),t("span",{staticClass:"hljs-string"},[e._v('"Del|Backspace"')]),e._v(", "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {});\n"),t("span",{staticClass:"hljs-comment"},[e._v("// Combination key")]),e._v("\nmindMap.keyCommand.addShortcut("),t("span",{staticClass:"hljs-string"},[e._v('"Control+Enter"')]),e._v(", "),t("span",{staticClass:"hljs-function"},[e._v("() =>")]),e._v(" {});\n")])]),t("p",[t("code",[e._v("fn")]),e._v(": Method to be executed")]),t("h3",[e._v("removeShortcut(key, fn)")]),t("p",[e._v("Remove a shortcut command, if "),t("code",[e._v("fn")]),e._v(" is not specified, all callback methods for the shortcut will be removed")]),t("h3",[e._v("getShortcutFn(key)")]),t("blockquote",[t("p",[e._v("v0.2.2+")])]),t("p",[e._v("Get the processing function for the specified shortcut")]),t("h3",[e._v("pause()")]),t("blockquote",[t("p",[e._v("v0.2.2+")])]),t("p",[e._v("Pause all shortcut responses")]),t("h3",[e._v("recovery()")]),t("blockquote",[t("p",[e._v("v0.2.2+")])]),t("p",[e._v("Restore shortcut responses")]),t("h3",[e._v("save()")]),t("blockquote",[t("p",[e._v("v0.2.3+")])]),t("p",[e._v("Save the current registered shortcut data, then clear the shortcut data")]),t("h3",[e._v("restore()")]),t("blockquote",[t("p",[e._v("v0.2.3+")])]),t("p",[e._v("Restore saved shortcut data, then clear the cache data")]),t("h3",[e._v("hasCombinationKey(e)")]),t("blockquote",[t("p",[e._v("v0.6.13+")])]),t("ul",[t("li",[t("code",[e._v("e")]),e._v(": Event object.")])]),t("p",[e._v("Determine if the combination key has been pressed.")])])}],o={},c=o,v=s("2877"),i=Object(v["a"])(c,a,n,!1,null,null,null);t["default"]=i.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c09f6.js b/dist/js/chunk-2d0c09f6.js deleted file mode 100644 index 7ab5371d..00000000 --- a/dist/js/chunk-2d0c09f6.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c09f6"],{4323:function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},v=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("导入和导出")]),a("h2",[s._v("导出")]),a("blockquote",[a("p",[s._v("要使用导出功能需要使用导出插件。")])]),a("p",[s._v("目前支持导出为"),a("code",[s._v(".smm")]),s._v("、"),a("code",[s._v(".json")]),s._v("、"),a("code",[s._v(".svg")]),s._v("、"),a("code",[s._v(".png")]),s._v("、"),a("code",[s._v(".pdf")]),s._v("、"),a("code",[s._v(".md")]),s._v("、"),a("code",[s._v(".xmind")]),s._v("、"),a("code",[s._v(".txt")]),s._v("文件。")]),a("p",[a("code",[s._v(".smm")]),s._v("是"),a("code",[s._v("simple-mind-map")]),s._v("自己定义的一种文件,其实就是"),a("code",[s._v("json")]),s._v("文件,换了一个扩展名而已。")]),a("p",[s._v("导出直接调用"),a("code",[s._v("export")]),s._v("方法即可:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export(type, isDownload, fileName, ...)\n")])]),a("p",[a("code",[s._v("type")]),s._v(":文件类型")]),a("p",[a("code",[s._v("isDownload")]),s._v(":传"),a("code",[s._v("true")]),s._v("会触发下载,"),a("code",[s._v("false")]),s._v("则不会,函数会返回导出文件的数据,"),a("code",[s._v("data:url")]),s._v("格式,你可以自行下载,(v0.9.2之前的版本,"),a("code",[s._v("pdf")]),s._v("不支持该参数,默认会直接下载)。")]),a("p",[a("code",[s._v("fileName")]),s._v(":下载的文件名称")]),a("h3",[s._v("导出为smm、json")]),a("p",[s._v("这两种文件的导出是一样的:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export(type, isDownload, fileName, withConfig)\n")])]),a("p",[a("code",[s._v("withConfig")]),s._v("指定导出的数据中是否要包含节点数据外的配置数据,比如使用的布局、主题等,传"),a("code",[s._v("true")]),s._v(",导出的结构如下:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("{\n layout,\n root,\n "),a("span",{staticClass:"hljs-attr"},[s._v("theme")]),s._v(": {\n template,\n config\n },\n view\n}\n")])]),a("p",[s._v("如果传"),a("code",[s._v("false")]),s._v(",导出的数据只有"),a("code",[s._v("root")]),s._v("部分,也就是纯节点树。")]),a("p",[s._v("示例:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'smm'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(")\nmindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'json'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(")\n")])]),a("h3",[s._v("导出为png、pdf")]),a("p",[s._v("导出这两种文件很简单:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'png'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(")\nmindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'pdf'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(")\n")])]),a("blockquote",[a("p",[s._v("从v0.6.0+,要导出pdf,需要额外注册一个ExportPDF插件。")])]),a("h3",[s._v("导出为svg")]),a("p",[s._v("导出为"),a("code",[s._v("svg")]),s._v("可以传递的参数如下:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export(type, isDownload, fileName, plusCssText = "),a("span",{staticClass:"hljs-string"},[s._v("''")]),s._v(")\n")])]),a("p",[s._v("如果开启了节点富文本编辑,也就是"),a("code",[s._v("svg")]),s._v("中会存在节点的"),a("code",[s._v("html")]),s._v("结构,这就又存在一个问题,因为浏览器对每个元素默认会设置一些样式,影响最大的就是"),a("code",[s._v("margin")]),s._v("和"),a("code",[s._v("padding")]),s._v(",这就有可能会导致节点中的文字错位,所以可以通过"),a("code",[s._v("plusCssText")]),s._v("参数传入"),a("code",[s._v("css")]),s._v("样式:")]),a("blockquote",[a("p",[s._v("在v0.6.16+版本后,plusCssText参数已被删除,改为在实例化时通过"),a("code",[s._v("resetCss")]),s._v("配置传入。")])]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export(\n "),a("span",{staticClass:"hljs-string"},[s._v("'svg'")]),s._v(", \n "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", \n "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(", \n "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(", \n "),a("span",{staticClass:"hljs-string"},[s._v("`* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }`")]),s._v("\n)\n")])]),a("h3",[s._v("导出为md")]),a("p",[s._v("导出为"),a("code",[s._v("markdown")]),s._v("文件只要传递默认的三个参数即可:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'md'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(")\n")])]),a("h3",[s._v("导出为xmind")]),a("blockquote",[a("p",[s._v("v0.6.6+")])]),a("blockquote",[a("p",[s._v("需要注册"),a("code",[s._v("ExportXMind")]),s._v("插件")])]),a("p",[s._v("导出为"),a("code",[s._v("Xmind")]),s._v("新版文件。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'xmind'")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(")\n")])]),a("h3",[s._v("导出为txt")]),a("blockquote",[a("p",[s._v("v0.9.8+")])]),a("p",[s._v("导出为"),a("code",[s._v("txt")]),s._v("文件只要传递默认的三个参数即可:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.export("),a("span",{staticClass:"hljs-string"},[s._v("'txt'")]),s._v(", "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(", "),a("span",{staticClass:"hljs-string"},[s._v("'文件名'")]),s._v(")\n")])]),a("h2",[s._v("导入")]),a("p",[s._v("目前支持从"),a("code",[s._v(".smm")]),s._v("、"),a("code",[s._v(".json")]),s._v("、"),a("code",[s._v(".xmind")]),s._v("、"),a("code",[s._v(".xlsx")]),s._v("、"),a("code",[s._v(".md")]),s._v("格式的文件导入。")]),a("h3",[s._v("导入smm、json")]),a("p",[s._v("这两个文件导入很简单,直接读取文件内容,转成对象,然后调用相关方法渲染到画布即可。")]),a("p",[s._v("因为导出这两种类型时可以选择是否包含配置数据,所以导入的时候调用的方法也是不一样的:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = "),a("span",{staticClass:"hljs-built_in"},[s._v("JSON")]),s._v(".parse("),a("span",{staticClass:"hljs-string"},[s._v("'json数据'")]),s._v(")\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 如果数据中存在root属性,那么代表是包含配置的完整数据,则使用setFullData方法导入数据")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (data.root) {\n mindMap.setFullData(data)\n} "),a("span",{staticClass:"hljs-keyword"},[s._v("else")]),s._v(" {\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 否则使用setData方法导入")]),s._v("\n mindMap.setData(data)\n}\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 导入数据后有可能新数据渲染在可视区域外了,所以为了更好的体验,可以复位一下视图的变换")]),s._v("\nmindMap.view.reset()\n")])]),a("h3",[s._v("导入xmind")]),a("p",[s._v("要导入"),a("code",[s._v("xmind")]),s._v("文件,需要引入"),a("code",[s._v("xmind")]),s._v("的解析方法:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" xmind "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/parse/xmind.js'")]),s._v("\n")])]),a("p",[s._v("如果使用的是"),a("code",[s._v("umd")]),s._v("文件,可以这样获取:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("MindMap.xmind\n")])]),a("p",[s._v("如果你是通过"),a("code",[s._v("input type=file")]),s._v("等方式获取到的"),a("code",[s._v("File")]),s._v("文件对象,那么可以直接传递给"),a("code",[s._v("parseXmindFile")]),s._v("方法解析,注意返回的是一个"),a("code",[s._v("Promise")]),s._v("实例,会返回解析后的节点树数据,使用"),a("code",[s._v("setData")]),s._v("方法渲染到画布即可。")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = "),a("span",{staticClass:"hljs-keyword"},[s._v("await")]),s._v(" xmind.parseXmindFile(file)\nmindMap.setData(data)\n")])]),a("p",[a("code",[s._v(".xmind")]),s._v("文件本质上是一个压缩包,改成"),a("code",[s._v("zip")]),s._v("后缀可以解压缩,里面存在一个"),a("code",[s._v("content.json")]),s._v("文件,如果你自己解析出了这个文件,那么可以把这个文件内容传递给这个"),a("code",[s._v("transformXmind")]),s._v("方法进行转换:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = "),a("span",{staticClass:"hljs-keyword"},[s._v("await")]),s._v(" xmind.transformXmind(fileContent)\nmindMap.setData(data)\n")])]),a("p",[s._v("另外如果导入的是"),a("code",[s._v("xmind8")]),s._v("版本的数据,需要使用"),a("code",[s._v("transformOldXmind")]),s._v("方法。")]),a("h3",[s._v("导入xlsx")]),a("p",[s._v("这个文件的导入没有内置方法,需要你自己开发,以下是一个使用"),a("code",[s._v("xlsx")]),s._v("库的方式:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { read, utils } "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'xlsx'")]),s._v("\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 文件转buffer")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("export")]),s._v(" "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" fileToBuffer = "),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("file")]),s._v(" =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" "),a("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" "),a("span",{staticClass:"hljs-built_in"},[s._v("Promise")]),s._v("("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("r")]),s._v(" =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" reader = "),a("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" FileReader()\n reader.onload = "),a("span",{staticClass:"hljs-function"},[s._v("() =>")]),s._v(" {\n r(reader.result)\n }\n reader.readAsArrayBuffer(file)\n })\n}\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// File文件对象")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" transformXLSXToJson = "),a("span",{staticClass:"hljs-keyword"},[s._v("async")]),s._v(" (file) => {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" wb = read("),a("span",{staticClass:"hljs-keyword"},[s._v("await")]),s._v(" fileToBuffer(file))\n "),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" data = utils.sheet_to_json(wb.Sheets[wb.SheetNames["),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("]], {\n "),a("span",{staticClass:"hljs-attr"},[s._v("header")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v("\n })\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (data.length <= "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(") {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v("\n }\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" max = "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("\n data.forEach("),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("arr")]),s._v(" =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (arr.length > max) {\n max = arr.length\n }\n })\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" layers = []\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" walk = "),a("span",{staticClass:"hljs-function"},[a("span",{staticClass:"hljs-params"},[s._v("layer")]),s._v(" =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (!layers[layer]) {\n layers[layer] = []\n }\n "),a("span",{staticClass:"hljs-keyword"},[s._v("for")]),s._v(" ("),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" i = "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("; i < data.length; i++) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (data[i][layer]) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" node = {\n "),a("span",{staticClass:"hljs-attr"},[s._v("data")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("text")]),s._v(": data[i][layer]\n },\n "),a("span",{staticClass:"hljs-attr"},[s._v("children")]),s._v(": [],\n "),a("span",{staticClass:"hljs-attr"},[s._v("_row")]),s._v(": i\n }\n layers[layer].push(node)\n }\n }\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (layer < max - "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(") {\n walk(layer + "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(")\n }\n }\n walk("),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(")\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" getParent = "),a("span",{staticClass:"hljs-function"},[s._v("("),a("span",{staticClass:"hljs-params"},[s._v("arr, row")]),s._v(") =>")]),s._v(" {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("for")]),s._v(" ("),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" i = arr.length - "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v("; i >= "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("; i--) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (row >= arr[i]._row) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" arr[i]\n }\n }\n }\n "),a("span",{staticClass:"hljs-keyword"},[s._v("for")]),s._v(" ("),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" i = "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v("; i < layers.length; i++) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" arr = layers[i]\n "),a("span",{staticClass:"hljs-keyword"},[s._v("for")]),s._v(" ("),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" j = "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("; j < arr.length; j++) {\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" item = arr[j]\n "),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" parent = getParent(layers[i - "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v("], item._row)\n "),a("span",{staticClass:"hljs-keyword"},[s._v("if")]),s._v(" (parent) {\n parent.children.push(item)\n }\n }\n }\n\n "),a("span",{staticClass:"hljs-keyword"},[s._v("return")]),s._v(" layers["),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("]["),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v("]\n}\n\n"),a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = transformXLSXToJson("),a("span",{staticClass:"hljs-string"},[s._v("'xlsx文件对象'")]),s._v(")\nmindMap.setData(data)\n")])]),a("h3",[s._v("导入md")]),a("p",[s._v("要导入"),a("code",[s._v("markdown")]),s._v("文件需要引入相应的解析方法:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" markdown "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/parse/markdown.js'")]),s._v("\n")])]),a("p",[s._v("如果使用的是umd格式的文件,那么可以通过如下方式获取:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("MindMap.markdown\n")])]),a("p",[s._v("获取到"),a("code",[s._v("md")]),s._v("文件的内容后调用"),a("code",[s._v("transformMarkdownTo")]),s._v("方法转换即可,返回一个"),a("code",[s._v("Promise")]),s._v("实例:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("let")]),s._v(" data = "),a("span",{staticClass:"hljs-keyword"},[s._v("await")]),s._v(" markdown.transformMarkdownTo("),a("span",{staticClass:"hljs-string"},[s._v("'md文件内容'")]),s._v(")\nmindMap.setData(data)\n")])]),a("h3",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFV81u20YQfpUN24JUoVAK0JMrB3YbB0gApYGTQ4EwhzW5kuiQu8TuypJhC0iDJkHaBsglPfXQQ4Oil7intnb7NvVf36KzfxRNUXUuQQ3bImdnvm925tsf7XnrRRHujIm34vVEzNNCIkHkuLge0TQvGJdoD3EyaCNG+2xMJUnaSIxwlrHJJhmgGRpwliMfEPwyop/SpI8LMxR5AswZuZqD9WqOi8iLKEIRzYhEyqY8VxEdZ1lEI9rpoJODv06evjn9/vnxn79FNGZUSGC/RYuxBMeAtNDqdbSnQBTEIM0ImEkoMR8SGap38aD70I1zMoThThSFgcjz/ami3N8WjO5PMzHdz5PWhx3lmw5QcAWcQ0mEDBRKSHFOWi1DhRDOCJeBf37w+z+PX5x++0sIcH8//ipUWOpTI+sHwFWfeWLm4LcMAIe6cpgiQjNHWKalQCCRpeQjTJOM3MtzPagBZ4hkgpQwmv5ShC+V13IMyPxSiI1pTLKlEPnlOfSrCUQUfk3bf/r67NWzalUvSqAsgRKBBljQwSbBCeFKTWSCbpaGQFPNHUIOH+viPpmaLOvDjGYMJ0pUO6A4y4GQ5Lvu0VAmWGLwun3vizthgbkgAQQ4HXIixpm0rTfdlrsFYQMTdmV1Fflsa5vE0i/ro1lGnE30BDY4ZzzwTRVOnj09eXt4+sOL84MDJygrJPUDa/YGwAYK247OUIxlPIIFo3AqHKqcDHqTsaEdswHNDdHCamqF1hLMH4tdGtdbUilWpVR4gtNyfzDIpnIaS3Vs3pCGSS2ZUvOEGmYC8m6aiFb0solA+NnrN3WsHPNHCZs0SrS/tCjvS6eG7N3UerEFbh6h5JiKAeN531rus/9Q83uRm9n2X/96+vKtK6jlUSteU5XzU8tJWULOmCzJ7HESQthNOE/q4tEb1aJrzU39c6M7KZmouROpelPN9PnR8R9HapNyqZKpOvvWxW2wqXxVrprLYRmHwFdBfhv6MyZt5Fb3q5dgGmBIsImnoMM6zV2qjjXNYqZUp4GYJhYHXx7nwSKGFabVSGArRrIVlLB4nBMqQ9DERkbU42e7t5LAt5GfMypxSgn3W20Tpeq6MhdD5ClD5FVMxixB5Moceac/Hp5/8+TsyaG5KGipWDDlGI/SLOGEKucHc4waXCNLnen46Luzo5/rZBcJG0j11WLR73/KwD1am4tLaSo3YW3cYQm5y0QqU0Yh0s/IQIIu/BhaB216qN1nrU9BFiCNXsfcAeH2By+SwMUNSwJvCPWSdAfFGRZiNfJsu2+QnEWeHrYOaTIfLcUALr0OjFYdHZJkLNvCysUMRrKX6pueOixhXG13kYfWtBHe7UWw9Ae4rbGUsObW4iyNH4FLdSWC34XV2usY78ujYYFVg2E51WLnU3JPvU6lYvAq5G5mirdmb8aRF3bMddhtwETkYSxE5EEH1K0YobBSXKeeSZrI0Qq61u1+pP0QKsqecgKM6Q7RA1oO6u+DehMc1DwQb8G+PJYmUJ0RA7mCuvZNsmL+skg/IulwBO6fdLvF1DE3835cbrlwlKTA61ALnCQpHTpDmXpoNfGOGV9zGdiky3cABD3rHnhtz3RAfQHRd0v4vqPhIzsAHSjXauTB1xmzQMMOPIYcdso0J6pZV7fgeibg8N2GCLvWGr7imNjFVqsod+55s38BRuykJA=="}})])}],l={},_=l,e=t("2877"),i=Object(e["a"])(_,n,v,!1,null,null,null);a["default"]=i.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c0a44.js b/dist/js/chunk-2d0c0a44.js deleted file mode 100644 index 29978b4f..00000000 --- a/dist/js/chunk-2d0c0a44.js +++ /dev/null @@ -1 +0,0 @@ -(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("checkIsInClient(padding = 0)")]),_("blockquote",[_("p",[v._v("v0.10.4+")])]),_("ul",[_("li",[_("code",[v._v("padding")]),v._v(": Number, 向画布四周延伸的区域大小")])]),_("p",[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-2d0c14fc.js b/dist/js/chunk-2d0c14fc.js deleted file mode 100644 index 67868072..00000000 --- a/dist/js/chunk-2d0c14fc.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c14fc"],{4604:function(s,a,n){"use strict";n.r(a);var t=function(){var s=this;s._self._c;return s._m(0)},r=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("Drag插件")]),a("p",[a("code",[s._v("Drag")]),s._v("插件提供节点拖拽的功能,包括:")]),a("p",[s._v("1.拖拽节点进行移动,改变节点在节点树中的位置,即作为其他节点的子节点、兄弟节点等等")]),a("p",[s._v("2.拖拽节点到自定义的画布位置")]),a("p",[s._v("配置请参考"),a("code",[s._v("MindMap")]),s._v("类的"),a("a",{attrs:{href:"/mind-map/#/doc/zh/constructor"}},[s._v("实例化选项")]),s._v("。")]),a("h2",[s._v("注册")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Drag "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Drag.js'")]),s._v("\n"),a("span",{staticClass:"hljs-comment"},[s._v("// import Drag from 'simple-mind-map/src/Drag.js' v0.6.0以下版本使用该路径")]),s._v("\n\nMindMap.usePlugin(Drag)\n")])]),a("p",[s._v("注册完且实例化"),a("code",[s._v("MindMap")]),s._v("后可通过"),a("code",[s._v("mindMap.drag")]),s._v("获取到该实例。")])])}],i={},p=i,v=n("2877"),_=Object(v["a"])(p,t,r,!1,null,null,null);a["default"]=_.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c191e.js b/dist/js/chunk-2d0c191e.js deleted file mode 100644 index 87787ec5..00000000 --- a/dist/js/chunk-2d0c191e.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c191e"],{4738:function(v,e,t){"use strict";t.r(e);var s=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, returnBlob = false)")]),e("ul",[e("li",[e("p",[e("code",[v._v("src")]),v._v(":图片url")])]),e("li",[e("p",[e("code",[v._v("returnBlob")]),v._v(":v0.10.2+,是否以Blob格式返回结果,默认为DataURL格式")])])]),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, handle)")]),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("li",[e("p",[e("code",[v._v("handle")]),v._v(":v0.10.5+,"),e("code",[v._v("null、Function")]),v._v(",默认为"),e("code",[v._v("null")]),v._v(",可以传递一个函数,遍历到每个节点时会调用该函数,回调参数为当前遍历到的节点。")])])]),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("h4",[v._v("defenseXSS(htmlStr)")]),e("blockquote",[e("p",[v._v("v0.10.0+")])]),e("ul",[e("li",[e("code",[v._v("htmlStr")]),v._v(":需要过滤的html字符串")])]),e("p",[v._v("返回:过滤后的html字符串")]),e("p",[v._v("防御 XSS 攻击,过滤恶意 HTML 标签和属性。你可以在将节点数据传递给SimpleMindMap前递归遍历树数据,通过该方法处理节点富文本内容,避免 XSS 攻击。")]),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=t("2877"),n=Object(o["a"])(l,s,_,!1,null,null,null);e["default"]=n.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c1a01.js b/dist/js/chunk-2d0c1a01.js deleted file mode 100644 index 791cb9b2..00000000 --- a/dist/js/chunk-2d0c1a01.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c1a01"],{"479a":function(e,t,o){"use strict";o.r(t);var n=function(){var e=this;e._self._c;return e._m(0)},r=[function(){var e=this,t=e._self._c;return t("div",[t("h1",[e._v("Contribute")]),t("h2",[e._v("Participate in development")]),t("p",[e._v("If you want to contribute code, you can 'fork' this project and switch to the 'feature' branch for development. After development and testing, you can submit the 'pr' to the 'feature' branch of this project. When submitting, please try to submit functional files as much as possible. Do not submit unnecessary files.")]),t("p",[e._v("Before development, it is best to create a new 'issue' to describe the new features you want to add. We can have sufficient communication first, and when submitting a 'pr', please provide a detailed description of the features you are developing.")]),t("h2",[e._v("Participate in translation")]),t("blockquote",[t("p",[e._v("Thanks for the first version English translation provided by "),t("a",{attrs:{href:"https://github.com/emircanerkul"}},[e._v("Emircan ERKUL")]),e._v(".")]),t("p",[e._v("Due to limited energy, most translations currently use machine translation, so accuracy is inevitably problematic.")]),t("p",[e._v("At present, the 【Course】 section is not translated. If you are interested, please join us.")])]),t("p",[e._v("If you want to participate in the translation of this document, you can clone this repository first.")]),t("p",[e._v("The translated documents are in the "),t("code",[e._v("/web/src/pages/Doc/")]),e._v(" directory, and currently support English("),t("code",[e._v("en")]),e._v(") and Simplified Chinese("),t("code",[e._v("zh")]),e._v(").")]),t("p",[e._v("If you are adding a new language type, you can create a new directory under the "),t("code",[e._v("/web/src/pages/Doc/")]),e._v(" directory, Then create a folder for each chapter, You can also directly copy all chapter directories under the existing language directory for translation, Note that you only need to write the "),t("code",[e._v("index.md")]),e._v(" file, The "),t("code",[e._v("index.vue")]),e._v(" file under the chapter directory is automatically generated by the script according to "),t("code",[e._v("index.md")]),e._v(".")]),t("p",[e._v("If you are adding a translation chapter to an existing language type, You can create a new chapter directory under the target language directory, You only need to create a "),t("code",[e._v("index.md")]),e._v(" file under the directory.")]),t("p",[e._v("After you complete the translation, you can directly submit "),t("code",[e._v("Pull requests")]),e._v(".")]),t("p",[e._v("If you are a front-end programmer and want to run the service, check the effect of the document page, If a new chapter is added, the file "),t("code",[e._v("/web/src/pages/Doc/catalogList.js")]),e._v(" needs to be modified, Select the appropriate location in the "),t("code",[e._v("StartList")]),e._v(" or "),t("code",[e._v("APIList")]),e._v(" array to insert the "),t("code",[e._v("path")]),e._v(" of the new chapter. Then you need to run "),t("code",[e._v("npm run buildDoc")]),e._v(" under the "),t("code",[e._v("web")]),e._v(" directory to compile the directory and route. Finally, run "),t("code",[e._v("npm run serve")]),e._v(" starts the local service. Open the following path to view the document:")]),t("p",[t("code",[e._v("ip:port/#/doc/zh/introduction")])])])}],a={},i=a,c=o("2877"),s=Object(c["a"])(i,n,r,!1,null,null,null);t["default"]=s.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c20be.js b/dist/js/chunk-2d0c20be.js deleted file mode 100644 index 93a77358..00000000 --- a/dist/js/chunk-2d0c20be.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c20be"],{4947:function(t,e,s){"use strict";s.r(e);var a=function(){var t=this;t._self._c;return t._m(0)},n=[function(){var t=this,e=t._self._c;return e("div",[e("h1",[t._v("RichText plugin")]),e("blockquote",[e("p",[t._v("v0.4.0+")])]),e("p",[t._v("This plugin provides the ability to edit rich text of nodes, and takes effect after registration.")]),e("p",[t._v("By default, node editing can only uniformly apply styles to all text in the node. This plugin can support rich text editing effects. Currently, it supports bold, italic, underline, strikethrough, font, font size, color, and backgroundColor. Underline and line height are not supported.")]),e("p",[t._v("The principle of this plugin is to use "),e("a",{attrs:{href:"https://github.com/quilljs/quill"}},[t._v("Quill")]),t._v(" editor implements rich text editing, and then uses the edited "),e("code",[t._v("DOM")]),t._v(" node directly as the text data of the node, and embeds the "),e("code",[t._v("DOM")]),t._v(" node through the "),e("code",[t._v("svg")]),t._v(" "),e("code",[t._v("foreignObject")]),t._v(" tag during rendering.")]),e("blockquote",[e("p",[t._v("The following prompts exist in versions prior to v0.5.6:")]),e("p",[t._v("This also caused a problem, that is, the function of exporting as a picture was affected, The original principle of exporting "),e("code",[t._v("svg")]),t._v(" as an image is very simple, Get the "),e("code",[t._v("svg")]),t._v(" string, and then create the "),e("code",[t._v("blob")]),t._v(" data of the "),e("code",[t._v("type=image/svg+xml")]),t._v(" type. Then use the "),e("code",[t._v("URL.createObjectURL")]),t._v(" method to generate the "),e("code",[t._v("data:url")]),t._v(" data. Then create a "),e("code",[t._v("Image")]),t._v(" tag, use the "),e("code",[t._v("data:url")]),t._v(" as the "),e("code",[t._v("src")]),t._v(" of the image, and finally draw the image on the "),e("code",[t._v("canvas")]),t._v(" object for export, However, after testing, when the "),e("code",[t._v("DOM")]),t._v(" node is embedded in the "),e("code",[t._v("svg")]),t._v(", this method of export will cause errors, and after trying many ways, the perfect export effect cannot be achieved, The current method is to traverse the "),e("code",[t._v("foreignObject")]),t._v(" node in "),e("code",[t._v("svg")]),t._v(", using "),e("a",{attrs:{href:"https://github.com/niklasvh/html2canvas"}},[t._v("html2canvas")]),t._v(" Convert the "),e("code",[t._v("DOM")]),t._v(" node in the "),e("code",[t._v("foreignObject")]),t._v(" node into an image and then replace the "),e("code",[t._v("foreignObject")]),t._v(" node. This method can work, but it is very time-consuming. Because the "),e("code",[t._v("html2canvas")]),t._v(" conversion takes a long time, it takes about 2 seconds to convert a node. This leads to the more nodes, the slower the conversion time. Therefore, it is recommended not to use this plugin if you cannot tolerate the long time of export.")])]),e("blockquote",[e("p",[t._v("The version of "),e("code",[t._v("v0.5.7+")]),t._v(" directly uses "),e("code",[t._v("html2canvas")]),t._v(" to convert the entire "),e("code",[t._v("svg")]),t._v(", which is no longer an issue with speed. However, there is currently a bug where the color of the node does not take effect after export.")])]),e("p",[e("code",[t._v("V0.6.13+")]),t._v(" version uses "),e("a",{attrs:{href:"https://github.com/1904labs/dom-to-image-more"}},[t._v("dom-to-image-more")]),t._v(" Replaced 'html2canvas' to address the issue of ineffective color export for nodes.")]),e("blockquote",[e("p",[t._v("The compatibility of dom to image more is relatively poor, and exported images are empty on many browsers, so you can replace them with html2canvas according to your own needs.")])]),e("p",[t._v("After version "),e("code",[t._v("0.6.16+")]),t._v(", third-party libraries such as 'dom-to-image-more' and 'html2canvas' will no longer be used for export, Compatibility and export are no longer issues.")]),e("h2",[t._v("Register")]),e("pre",{staticClass:"hljs"},[e("code",[e("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" MindMap "),e("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),e("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map'")]),t._v("\n"),e("span",{staticClass:"hljs-keyword"},[t._v("import")]),t._v(" RichText "),e("span",{staticClass:"hljs-keyword"},[t._v("from")]),t._v(" "),e("span",{staticClass:"hljs-string"},[t._v("'simple-mind-map/src/plugins/RichText.js'")]),t._v("\n"),e("span",{staticClass:"hljs-comment"},[t._v("// import RichText from 'simple-mind-map/src/RichText.js' Use this path for versions below v0.6.0")]),t._v("\n\nMindMap.usePlugin(RichText, opt?)\n")])]),e("p",[t._v("After registration and instantiation of "),e("code",[t._v("MindMap")]),t._v(", the instance can be obtained through "),e("code",[t._v("mindMap.richText")]),t._v(".")]),e("h3",[t._v("Register options")]),e("p",[t._v("The "),e("code",[t._v("opt")]),t._v(" option can pass the following parameters:")]),e("ul",[e("li",[e("code",[t._v("opt.fontFamilyList")])])]),e("p",[t._v("Replace the built-in font list during rich text editing. The built-in list is:")]),e("pre",{staticClass:"hljs"},[e("code",[t._v("[\n "),e("span",{staticClass:"hljs-string"},[t._v("'宋体, SimSun, Songti SC'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'微软雅黑, Microsoft YaHei'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'楷体, 楷体_GB2312, SimKai, STKaiti'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'黑体, SimHei, Heiti SC'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'隶书, SimLi'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'andale mono'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'arial, helvetica, sans-serif'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'arial black, avant garde'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'comic sans ms'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'impact, chicago'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'times new roman'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'sans-serif'")]),t._v(",\n "),e("span",{staticClass:"hljs-string"},[t._v("'serif'")]),t._v("\n]\n")])]),e("ul",[e("li",[e("code",[t._v("opt.fontSizeList")])])]),e("p",[t._v("Replace the built-in font size list during rich text editing. The built-in list is:")]),e("pre",{staticClass:"hljs"},[e("code",[t._v("["),e("span",{staticClass:"hljs-number"},[t._v("1")]),t._v(", "),e("span",{staticClass:"hljs-number"},[t._v("2")]),t._v(", "),e("span",{staticClass:"hljs-number"},[t._v("3")]),t._v(", .."),e("span",{staticClass:"hljs-number"},[t._v(".100")]),t._v("]\n")])]),e("h2",[t._v("Method")]),e("h3",[t._v("setNotActiveNodeStyle(node, style)")]),e("blockquote",[e("p",[t._v("v0.8.0+")])]),e("ul",[e("li",[e("code",[t._v("style")]),t._v(":Object, style object.")])]),e("p",[t._v("Set rich text style for inactive nodes.")]),e("h3",[t._v("selectAll()")]),e("p",[t._v("Select All. When the node is being edited, you can select all the text in the node through this method.")]),e("h3",[t._v("focus()")]),e("blockquote",[e("p",[t._v("v0.4.7+")])]),e("p",[t._v("Focus.")]),e("h3",[t._v("formatText(config = {}, clear = false, pure = false)")]),e("ul",[e("li",[e("code",[t._v("config")]),t._v(":Object. The key is the style attribute and the value is the style value. The complete configuration is as follows:")])]),e("pre",{staticClass:"hljs"},[e("code",[t._v("{\n "),e("span",{staticClass:"hljs-attr"},[t._v("font")]),t._v(": "),e("span",{staticClass:"hljs-string"},[t._v("'字体'")]),t._v(",\n "),e("span",{staticClass:"hljs-attr"},[t._v("size")]),t._v(": "),e("span",{staticClass:"hljs-string"},[t._v("'12px,'")]),t._v(" "),e("span",{staticClass:"hljs-comment"},[t._v("// font size")]),t._v("\n "),e("span",{staticClass:"hljs-attr"},[t._v("bold")]),t._v(": "),e("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", "),e("span",{staticClass:"hljs-comment"},[t._v("// Bold or not, true/false ")]),t._v("\n "),e("span",{staticClass:"hljs-attr"},[t._v("italic")]),t._v(": "),e("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", "),e("span",{staticClass:"hljs-comment"},[t._v("// Italic or not, true/false ")]),t._v("\n "),e("span",{staticClass:"hljs-attr"},[t._v("underline")]),t._v(": "),e("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", "),e("span",{staticClass:"hljs-comment"},[t._v("// Show underline or not, true/false ")]),t._v("\n "),e("span",{staticClass:"hljs-attr"},[t._v("strike")]),t._v(": "),e("span",{staticClass:"hljs-literal"},[t._v("true")]),t._v(", "),e("span",{staticClass:"hljs-comment"},[t._v("// Whether to display strikethrough, true/false ")]),t._v("\n "),e("span",{staticClass:"hljs-attr"},[t._v("color")]),t._v(": "),e("span",{staticClass:"hljs-string"},[t._v("'#333'")]),t._v(" "),e("span",{staticClass:"hljs-comment"},[t._v("// color")]),t._v("\n}\n")])]),e("ul",[e("li",[e("p",[e("code",[t._v("clear")]),t._v(":Is clear style")])]),e("li",[e("p",[e("code",[t._v("pure")]),t._v(":v0.9.4+, If set to true, only the text style will be formatted and will not be synchronized to the node's data")])])]),e("p",[t._v("Formats the currently selected text. The style settings will be synchronized to the data of the node.")]),e("h3",[t._v("formatRangeText(range, config = {})")]),e("ul",[e("li",[e("code",[t._v("range")]),t._v(":The range object of "),e("code",[t._v("Quill")]),t._v(", has the following format:")])]),e("pre",{staticClass:"hljs"},[e("code",[t._v("{\n index,\n length\n}\n")])]),e("ul",[e("li",[e("code",[t._v("config")]),t._v(":Same as "),e("code",[t._v("formatText")]),t._v(" method")])]),e("p",[t._v("Formats the text of the specified range.")]),e("h3",[t._v("formatAllText(config = {})")]),e("ul",[e("li",[e("code",[t._v("config")]),t._v(":Same as "),e("code",[t._v("formatText")]),t._v(" method")])]),e("p",[t._v("Formats all text of the current edit node.")]),e("h3",[t._v("removeFormat()")]),e("blockquote",[e("p",[t._v("v0.4.1+")])]),e("p",[t._v("Clears the style of the currently selected text.")]),e("h3",[t._v("normalStyleToRichTextStyle(style)")]),e("p",[t._v("Converts a normal node style object to a rich text style object. Because there are differences between node style attributes and rich text style attributes during non-rich text editing, a conversion operation is required. For example:")]),e("pre",{staticClass:"hljs"},[e("code",[t._v("{\n "),e("span",{staticClass:"hljs-attr"},[t._v("fontFamily")]),t._v(": "),e("span",{staticClass:"hljs-string"},[t._v("'xxx'")]),t._v("\n}\n\n"),e("span",{staticClass:"hljs-comment"},[t._v("// After conversion")]),t._v("\n\n{\n "),e("span",{staticClass:"hljs-attr"},[t._v("font")]),t._v(": "),e("span",{staticClass:"hljs-string"},[t._v("'xxx'")]),t._v("\n}\n")])]),e("h3",[t._v("richTextStyleToNormalStyle(config)")]),e("p",[t._v("Converts rich text style objects to normal node style objects. For example:")]),e("pre",{staticClass:"hljs"},[e("code",[t._v("{\n "),e("span",{staticClass:"hljs-attr"},[t._v("size")]),t._v(": "),e("span",{staticClass:"hljs-string"},[t._v("'16px'")]),t._v("\n}\n\n"),e("span",{staticClass:"hljs-comment"},[t._v("// After conversion")]),t._v("\n\n{\n "),e("span",{staticClass:"hljs-attr"},[t._v("fontSize")]),t._v(": "),e("span",{staticClass:"hljs-number"},[t._v("16")]),t._v("\n}\n")])]),e("h3",[t._v("handleSvgDomElements(svg)")]),e("ul",[e("li",[e("code",[t._v("svg")]),t._v(": "),e("code",[t._v("svg")]),t._v(" node")])]),e("p",[t._v("Convert the "),e("code",[t._v("dom")]),t._v(" element embedded in the "),e("code",[t._v("svg")]),t._v(" into a picture and return a "),e("code",[t._v("Promise")]),t._v(".")]),e("h3",[t._v("transformAllNodesToNormalNode()")]),e("p",[t._v("Convert all nodes to non-rich text nodes.")])])}],o={},i=o,l=s("2877"),v=Object(l["a"])(i,a,n,!1,null,null,null);e["default"]=v.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c213a.js b/dist/js/chunk-2d0c213a.js deleted file mode 100644 index 9043a9bd..00000000 --- a/dist/js/chunk-2d0c213a.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c213a"],{4987:function(s,n,a){"use strict";a.r(n);var i=function(){var s=this;s._self._c;return s._m(0)},t=[function(){var s=this,n=s._self._c;return n("div",[n("h1",[s._v("RainbowLines插件")]),n("blockquote",[n("p",[s._v("v0.9.9+")])]),n("p",[s._v("该插件用于实现彩虹线条。")]),n("p",[s._v("开启彩虹线条及自定义颜色可以通过实例化选项"),n("code",[s._v("rainbowLinesConfig")]),s._v("设置。")]),n("p",[s._v("默认的颜色列表如下:")]),n("pre",{staticClass:"hljs"},[n("code",[s._v("[\n 'rgb(255, 213, 73)',\n 'rgb(255, 136, 126)',\n 'rgb(107, 225, 141)',\n 'rgb(151, 171, 255)',\n 'rgb(129, 220, 242)',\n 'rgb(255, 163, 125)',\n 'rgb(152, 132, 234)'\n]\n")])]),n("h2",[s._v("注册")]),n("pre",{staticClass:"hljs"},[n("code",[n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" RainbowLines "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/RainbowLines.js'")]),s._v("\nMindMap.usePlugin(RainbowLines)\n")])]),n("p",[s._v("注册完且实例化"),n("code",[s._v("MindMap")]),s._v("后可通过"),n("code",[s._v("mindMap.rainbowLines")]),s._v("获取到该实例。")]),n("h2",[s._v("方法")]),n("h3",[s._v("updateRainLinesConfig(config = {})")]),n("p",[s._v("如果你在通过实例化选项"),n("code",[s._v("rainbowLinesConfig")]),s._v("设置了彩虹线条后想修改,那么可以使用该方法,参数"),n("code",[s._v("config")]),s._v("同"),n("code",[s._v("rainbowLinesConfig")]),s._v("。")]),n("pre",{staticClass:"hljs"},[n("code",[s._v("{\n "),n("span",{staticClass:"hljs-attr"},[s._v("open")]),s._v(": "),n("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(","),n("span",{staticClass:"hljs-comment"},[s._v("// 是否开启彩虹线条")]),s._v("\n "),n("span",{staticClass:"hljs-attr"},[s._v("colorsList")]),s._v(": []"),n("span",{staticClass:"hljs-comment"},[s._v("// 自定义彩虹线条的颜色列表,如果不设置,会使用默认颜色列表")]),s._v("\n}\n")])]),n("h3",[s._v("getColorsList()")]),n("p",[s._v("获取当前使用的彩虹线条颜色列表。")]),n("h3",[s._v("getNodeColor(node)")]),n("p",[s._v("获取指定的节点实例对应的彩虹线条颜色。")]),n("h3",[s._v("getSecondLayerAncestor(node)")]),n("p",[s._v("获取一个节点实例的第二层级的祖先节点实例。")])])}],v={},_=v,o=a("2877"),e=Object(o["a"])(_,i,t,!1,null,null,null);n["default"]=e.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c226c.js b/dist/js/chunk-2d0c226c.js deleted file mode 100644 index 99ecb76e..00000000 --- a/dist/js/chunk-2d0c226c.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c226c"],{"48a3":function(s,n,t){"use strict";t.r(n);var i=function(){var s=this;s._self._c;return s._m(0)},a=[function(){var s=this,n=s._self._c;return n("div",[n("h1",[s._v("NodeImgAdjust plugin")]),n("blockquote",[n("p",[s._v("v0.6.5+")])]),n("p",[s._v("This plugin provides the function of dragging and adjusting the size of images within nodes.")]),n("h2",[s._v("Register")]),n("pre",{staticClass:"hljs"},[n("code",[n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" NodeImgAdjust "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/NodeImgAdjust.js'")]),s._v("\n\nMindMap.usePlugin(NodeImgAdjust)\n")])]),n("p",[s._v("After registration and instantiation of "),n("code",[s._v("MindMap")]),s._v(", the instance can be obtained through "),n("code",[s._v("mindMap.nodeImgAdjust")]),s._v(".")])])}],e={},o=e,d=t("2877"),l=Object(d["a"])(o,i,a,!1,null,null,null);n["default"]=l.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c4a65.js b/dist/js/chunk-2d0c4a65.js deleted file mode 100644 index 273c301a..00000000 --- a/dist/js/chunk-2d0c4a65.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c4a65"],{"3c76":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},v=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("设置基础样式")]),a("p",[s._v("基础样式修改的其实是主题配置,所以会通过"),a("code",[s._v("setThemeConfig")]),s._v("方法设置。")]),a("h2",[s._v("设置背景")]),a("p",[s._v("画布背景可以设置颜色或图片。")]),a("h3",[s._v("设置画布背景颜色")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#A4DD00'")]),s._v("\n})\n")])]),a("h3",[s._v("设置背景图片")]),a("p",[s._v("背景图片还支持设置三个属性:"),a("code",[s._v("图片重复")]),s._v("、"),a("code",[s._v("图片位置")]),s._v("、"),a("code",[s._v("图片大小")]),s._v("。其实就是"),a("code",[s._v("css")]),s._v("的"),a("code",[s._v("background-repeat")]),s._v("、"),a("code",[s._v("background-position")]),s._v("、"),a("code",[s._v("background-size")]),s._v("三个属性。")]),a("p",[s._v("不过导出为图片的时候背景图片的行为和"),a("code",[s._v("css")]),s._v("并不完全一致,因为导出是通过"),a("code",[s._v("canvas")]),s._v("实现的,而"),a("code",[s._v("canvas")]),s._v("并不存在这三个属性,所以是通过有限模拟"),a("code",[s._v("css")]),s._v("这三个属性行为实现的,详情可以阅读文章"),a("a",{attrs:{href:"https://juejin.cn/post/7204854015463538744"}},[s._v("如何在canvas中模拟css的背景图片样式")]),s._v("。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundImage")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'xxx.png'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundRepeat")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'no-repeat'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundPosition")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'center center'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundSize")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'cover'")]),s._v("\n})\n")])]),a("p",[a("code",[s._v("backgroundRepeat")]),s._v("支持设置的值如下:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("[\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'不重复'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'no-repeat'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'重复'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'repeat'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'水平方向重复'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'repeat-x'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'垂直方向重复'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'repeat-y'")]),s._v("\n }\n]\n")])]),a("p",[a("code",[s._v("backgroundPosition")]),s._v("支持设置的值如下:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("[\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'默认'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'0% 0%'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'左上'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'left top'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'左中'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'left center'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'左下'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'left bottom'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'右上'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'right top'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'右中'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'right center'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'右下'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'right bottom'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'中上'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'center top'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'居中'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'center center'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'中下'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'center bottom'")]),s._v("\n }\n]\n")])]),a("p",[a("code",[s._v("backgroundSize")]),s._v("支持设置的值如下:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("[\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'自动'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'auto'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'覆盖'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'cover'")]),s._v("\n },\n {\n "),a("span",{staticClass:"hljs-attr"},[s._v("name")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'保持'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("value")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'contain'")]),s._v("\n }\n]\n")])]),a("h2",[s._v("设置连线样式")]),a("p",[s._v("设置节点间的连线样式,支持:"),a("code",[s._v("颜色")]),s._v("、"),a("code",[s._v("粗细")]),s._v("、"),a("code",[s._v("虚线")]),s._v("、"),a("code",[s._v("风格")]),s._v("。")]),a("p",[s._v("目前支持三种连线风格,分别是:曲线(curve)、直线(straight)、直连(direct),其中曲线只在"),a("code",[s._v("logicalStructure")]),s._v("逻辑结构图和"),a("code",[s._v("mindMap")]),s._v("思维导图两种结构时生效。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#009CE0'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("3")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineDasharray")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'15, 10, 5, 10, 15'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineStyle")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'curve'")]),s._v("\n})\n")])]),a("h2",[s._v("设置概要的连线样式")]),a("p",[s._v("概要节点前面会有一条弧线,它的颜色和粗细可以修改。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#FA28FF'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("4")]),s._v("\n})\n")])]),a("h2",[s._v("设置关联线的样式")]),a("blockquote",[a("p",[s._v("关联线需要使用关联线插件")])]),a("p",[s._v("关联线支持设置颜色和粗细,因为它还可以被激活选中,所以还可以设置激活时的颜色和粗细。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#FA28FF'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("4")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineActiveColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#9F0500'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineActiveWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("6")]),s._v("\n})\n")])]),a("h2",[s._v("设置节点边框风格")]),a("p",[s._v("默认节点的边框时封闭图形,不过也提供了一种只有底边边框的风格。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("nodeUseLineStyle")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v("\n})\n")])]),a("h2",[s._v("设置节点内边距")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("paddingX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("30")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("paddingY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v("\n})\n")])]),a("h2",[s._v("设置节点内的图片最大的显示宽高")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("imgMaxWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("imgMaxHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("50")]),s._v("\n})\n")])]),a("h2",[s._v("设置节点内图标的显示大小")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("iconSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("30")]),s._v(",\n})\n")])]),a("h2",[s._v("设置节点外边距")]),a("p",[s._v("设置节点外边距稍微麻烦一点,需要针对不同层级的节点进行设置。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 二级节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("second")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("30")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v("\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 三级及以下节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("node")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("40")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("30")]),s._v("\n }\n})\n")])]),a("h2",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#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"}})])}],l={},_=l,i=t("2877"),e=Object(i["a"])(_,n,v,!1,null,null,null);a["default"]=e.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c53b9.js b/dist/js/chunk-2d0c53b9.js deleted file mode 100644 index 5db26828..00000000 --- a/dist/js/chunk-2d0c53b9.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c53b9"],{"3de7":function(n,e,v){"use strict";v.r(e);var _=function(){var n=this;n._self._c;return n._m(0)},c=[function(){var n=this,e=n._self._c;return e("div",[e("h1",[n._v("打开预览在线文件")]),e("p",[n._v("v0.7.0+版本支持打开url中携带的在线文件:")]),e("pre",{staticClass:"hljs"},[e("code",[n._v("https://wanglin2.github.io/mind-map/#/?fileURL=http://xxx.com/xxx.xmind\n")])]),e("p",[n._v("在"),e("code",[n._v("fileURL")]),n._v("参数后带上你的在线文件url即可,目前支持"),e("code",[n._v(".xmind")]),n._v("、"),e("code",[n._v(".smm")]),n._v("、"),e("code",[n._v(".json")]),n._v("、"),e("code",[n._v(".md")]),n._v("后缀的文件url。")]),e("p",[n._v("需要注意的是你在打开在线文件的情况下编辑并不会修改在线文件,改动会保存在你的浏览器本地,你可以选择导出文件。")])])}],t={},i=t,l=v("2877"),o=Object(l["a"])(i,_,c,!1,null,null,null);e["default"]=o.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c53e8.js b/dist/js/chunk-2d0c53e8.js deleted file mode 100644 index df238bc8..00000000 --- a/dist/js/chunk-2d0c53e8.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c53e8"],{"3def":function(s,t,a){"use strict";a.r(t);var l=function(){var s=this;s._self._c;return s._m(0)},n=[function(){var s=this,t=s._self._c;return t("div",[t("h1",[s._v("Scrollbar 插件")]),t("blockquote",[t("p",[s._v("v0.7.0+")]),t("p",[s._v("v0.7.1+进行了重构,下面的文档为新文档。")])]),t("p",[s._v("该插件用于帮助开发水平和垂直滚动条的功能。详细使用方式请参考教程。")]),t("h2",[s._v("注册")]),t("pre",{staticClass:"hljs"},[t("code",[t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),t("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Scrollbar "),t("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),t("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Scrollbar.js'")]),s._v("\nMindMap.usePlugin(Scrollbar)\n")])]),t("p",[s._v("注册完且实例化"),t("code",[s._v("MindMap")]),s._v("后可通过"),t("code",[s._v("mindMap.scrollbar")]),s._v("获取到该实例。")]),t("h2",[s._v("事件")]),t("h4",[s._v("scrollbar_change(data)")]),t("ul",[t("li",[t("code",[s._v("data")]),s._v(":滚动条数据,格式如下:")])]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-comment"},[s._v("// 垂直滚动条")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("vertical")]),s._v(": {\n top,"),t("span",{staticClass:"hljs-comment"},[s._v("// 垂直滚动条的top值,百分比数值")]),s._v("\n height"),t("span",{staticClass:"hljs-comment"},[s._v("// 垂直滚动条的高度,百分比数值")]),s._v("\n },\n "),t("span",{staticClass:"hljs-comment"},[s._v("// 水平滚动条")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("horizontal")]),s._v(": {\n left,"),t("span",{staticClass:"hljs-comment"},[s._v("// 水平滚动条的left值,百分比数值")]),s._v("\n width"),t("span",{staticClass:"hljs-comment"},[s._v("// 水平滚动条的宽度,百分比数值")]),s._v("\n }\n}\n")])]),t("p",[s._v("当滚动条数据发生改变时触发,你可以监听该事件来更新滚动条位置和大小。接收一个参数,代表当前最新的滚动条位置和大小信息,你可以使用它来更新滚动条元素的样式。")]),t("h2",[s._v("方法")]),t("h3",[s._v("setScrollBarWrapSize(width, height)")]),t("ul",[t("li",[t("p",[t("code",[s._v("width")]),s._v(":Number,你的滚动条容器元素的宽度。")])]),t("li",[t("p",[t("code",[s._v("height")]),s._v(": Number,你的滚动条容器元素的高度。")])])]),t("p",[s._v("设置滚动条容器的大小,对于水平滚动条,即容器的宽度,对于垂直滚动条,即容器的高度。当你的滚动条容器尺寸改变时需要再次调用该方法。")]),t("h3",[s._v("calculationScrollbar()")]),t("blockquote",[t("p",[s._v("通常你不需要调用该方法,如果初次渲染滚动条时滚动条没有更新,那么可以手动调用该方法获取滚动条数据。")]),t("p",[s._v("需要先调用setScrollBarWrapSize方法设置滚动条容器元素的宽高。")])]),t("p",[s._v("返回值:")]),t("pre",{staticClass:"hljs"},[t("code",[s._v("{\n "),t("span",{staticClass:"hljs-comment"},[s._v("// 垂直滚动条")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("vertical")]),s._v(": {\n top,\n height\n },\n "),t("span",{staticClass:"hljs-comment"},[s._v("// 水平滚动条")]),s._v("\n "),t("span",{staticClass:"hljs-attr"},[s._v("horizontal")]),s._v(": {\n left,\n width\n }\n}\n")])]),t("p",[s._v("获取滚动条大小和位置。")]),t("h3",[s._v("onMousedown(e, type)")]),t("ul",[t("li",[t("p",[t("code",[s._v("e")]),s._v(":鼠标按下事件的事件对象。")])]),t("li",[t("p",[t("code",[s._v("type")]),s._v(":按下的滚动条类型,vertical(垂直滚动条)、horizontal(水平滚动条)。")])])]),t("p",[s._v("滚动条元素的鼠标按下事件时需要调用该方法。")]),t("h3",[s._v("onClick(e, type)")]),t("ul",[t("li",[t("p",[t("code",[s._v("e")]),s._v(":鼠标点击事件的事件对象。")])]),t("li",[t("p",[t("code",[s._v("type")]),s._v(":鼠标点击的滚动条类型,vertical(垂直滚动条)、horizontal(水平滚动条)。")])])]),t("p",[s._v("滚动条元素的的点击事件时需要调用该方法。")])])}],v={},_=v,c=a("2877"),e=Object(c["a"])(_,l,n,!1,null,null,null);t["default"]=e.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0c5538.js b/dist/js/chunk-2d0c5538.js deleted file mode 100644 index ec08a47b..00000000 --- a/dist/js/chunk-2d0c5538.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0c5538"],{"3f2a":function(s,a,t){"use strict";t.r(a);var n=function(){var s=this;s._self._c;return s._m(0)},l=[function(){var s=this,a=s._self._c;return a("div",[a("h1",[s._v("主题")]),a("h2",[s._v("主题配置属性一览")]),a("p",[s._v("此处的配置可能未及时更新,完整的主题配置可以参考:"),a("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/default.js"}},[s._v("default.js")]),s._v("。")]),a("p",[s._v("如果某个属性的值你不知道如何传,可以去在线demo中设置一下,然后导出json或smm文件查看对应的值。也可以参考demo项目中的配置"),a("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/web/src/config/zh.js"}},[s._v("zh.js")]),s._v("。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("{\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 节点内边距")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("paddingX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("15")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("paddingY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 图片显示的最大宽度")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("imgMaxWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 图片显示的最大高度")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("imgMaxHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// icon的大小")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("iconSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 连线的粗细")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 连线的颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 连线样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineDasharray")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 连线风格,支持三种")]),s._v("\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 1.曲线(curve)。仅logicalStructure、mindMap、verticalTimeline三种结构支持。")]),s._v("\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 2.直线(straight)。")]),s._v("\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 3.直连(direct)。仅logicalStructure、mindMap、organizationStructure、verticalTimeline四种结构支持。")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineStyle")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'straight'")]),s._v(", \n "),a("span",{staticClass:"hljs-comment"},[s._v("// 曲线连接时,根节点和其他节点的连接线样式保持统一,默认根节点为 ( 型,其他节点为 { 型,设为true后,都为 { 型。仅logicalStructure、mindMap两种结构支持。")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("rootLineKeepSameInCurve")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("true")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 直线连接(straight)时,连线的圆角大小,设置为0代表没有圆角,仅支持logicalStructure、mindMap、verticalTimeline三种结构")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineRadius")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 连线尾部是否显示标记,目前只支持箭头")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("showLineMarker")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要连线的粗细")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要连线的颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要曲线距节点的距离")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineMargin")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要节点距节点的距离")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationNodeMargin")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线默认状态的粗细")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线默认状态的颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(51, 51, 51)'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线激活状态的粗细")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineActiveWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("8")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线激活状态的颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineActiveColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgba(2, 167, 240, 1)'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线文字颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineTextColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(51, 51, 51)'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线文字大小")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineTextFontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("14")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线文字行高")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineTextLineHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1.2")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 关联线文字字体")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("associativeLineTextFontFamily")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'微软雅黑, Microsoft YaHei'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 背景颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fafafa'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 背景图片")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundImage")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 背景重复")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundRepeat")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'no-repeat'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 设置背景图像的起始位置")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundPosition")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'center center'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 设置背景图片大小")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundSize")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'cover'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 节点使用只有底边横线的样式,仅logicalStructure、mindMap、catalogOrganization、organizationStructure四种结构支持。")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("nodeUseLineStyle")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 根节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("root")]),s._v(": {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 形状")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("shape")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rectangle'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 背景颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontFamily")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'微软雅黑, Microsoft YaHei'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("16")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontWeight")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'bold'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontStyle")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'normal'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1.5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'transparent'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderDasharray")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderRadius")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("textDecoration")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 是否使用渐变背景,如果设为true,则会忽略fillColor配置")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("gradientStyle")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 如果gradientStyle为true,那么可以通过这两个字段来定义渐变的起止颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("startColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("endColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 二级节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("second")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("shape")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rectangle'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 外边距")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("40")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontFamily")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'微软雅黑, Microsoft YaHei'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#565656'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("16")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontWeight")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'noraml'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontStyle")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'normal'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1.5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderDasharray")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderRadius")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("textDecoration")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("gradientStyle")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("startColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("endColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 三级及以下节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("node")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("shape")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rectangle'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("50")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'transparent'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontFamily")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'微软雅黑, Microsoft YaHei'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#6a6d6c'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("14")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontWeight")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'noraml'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontStyle")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'normal'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1.5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'transparent'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderRadius")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderDasharray")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("textDecoration")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("gradientStyle")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("startColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("endColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v("\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalization")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("shape")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rectangle'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("100")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("marginY")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("40")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontFamily")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'微软雅黑, Microsoft YaHei'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#565656'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("16")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontWeight")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'noraml'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontStyle")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'normal'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineHeight")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1.5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("1")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderDasharray")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderRadius")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("5")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("textDecoration")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'none'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("gradientStyle")]),s._v(": "),a("span",{staticClass:"hljs-literal"},[s._v("false")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("startColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#549688'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("endColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'#fff'")]),s._v("\n }\n}\n")])]),a("h2",[s._v("使用和切换主题")]),a("p",[a("code",[s._v("simple-mind-map")]),s._v("内置了很多主题,可以通过如下方式获取到所有的内置主题列表:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" { themeList } "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/constants/constant'")]),s._v("\n"),a("span",{staticClass:"hljs-comment"},[s._v("// import { themeList } from 'simple-mind-map/src/utils/constant' v0.6.0以下版本使用该路径")]),s._v("\n")])]),a("blockquote",[a("p",[s._v("v0.6.8+,主题列表增加了代表是否是暗黑主题的字段dark,你可以根据这个字段来将界面切换为暗黑模式。")])]),a("p",[s._v("可以在实例化"),a("code",[s._v("simple-mind-map")]),s._v("时指定使用的主题:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" MindMap({\n "),a("span",{staticClass:"hljs-attr"},[s._v("theme")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'minions'")]),s._v("\n})\n")])]),a("p",[s._v("如果想动态切换主题也很简单:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setTheme("),a("span",{staticClass:"hljs-string"},[s._v("'classic'")]),s._v(")\n")])]),a("p",[s._v("如果要获取当前使用的主题名称可以使用:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" theme = mindMap.getTheme()\n")])]),a("h2",[s._v("修改主题的部分配置")]),a("p",[s._v("要修改主题的部分配置,可以在实例化时通过"),a("code",[s._v("themeConfig")]),s._v("选项设置:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" MindMap({\n "),a("span",{staticClass:"hljs-attr"},[s._v("themeConfig")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("paddingX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n }\n})\n")])]),a("p",[s._v("具体的主题属性可以参考前面小节,最终渲染时,"),a("code",[s._v("themeConfig")]),s._v("配置会和当前主题配置进行合并。")]),a("p",[s._v("如果实例化后想动态设置,可以使用"),a("code",[s._v("setThemeConfig")]),s._v("方法:")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("mindMap.setThemeConfig({\n "),a("span",{staticClass:"hljs-attr"},[s._v("paddingX")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("20")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// ...")]),s._v("\n})\n")])]),a("p",[s._v("注意,你传入的这个对象会替换掉配置中的"),a("code",[s._v("themeConfig")]),s._v("原有的值。")]),a("h2",[s._v("定义新主题")]),a("p",[s._v("除了可以使用内置的主题外,你也可以自定义新主题:")]),a("pre",{staticClass:"hljs"},[a("code",[a("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),a("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),a("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 注册新主题")]),s._v("\nMindMap.defineTheme("),a("span",{staticClass:"hljs-string"},[s._v("'主题名称'")]),s._v(", {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 主题配置")]),s._v("\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 1.实例化时使用新注册的主题")]),s._v("\n"),a("span",{staticClass:"hljs-keyword"},[s._v("const")]),s._v(" mindMap = "),a("span",{staticClass:"hljs-keyword"},[s._v("new")]),s._v(" MindMap({\n "),a("span",{staticClass:"hljs-attr"},[s._v("theme")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'主题名称'")]),s._v("\n})\n\n"),a("span",{staticClass:"hljs-comment"},[s._v("// 2.动态切换新主题")]),s._v("\nmindMap.setTheme("),a("span",{staticClass:"hljs-string"},[s._v("'主题名称'")]),s._v(")\n")])]),a("p",[s._v("最好在实例化之前进行注册,这样在实例化时可以直接使用新注册的主题。")]),a("p",[s._v("一个主题其实就是一个普通的对象,完整配置可以参考"),a("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/default.js"}},[s._v("默认主题")]),s._v(","),a("code",[s._v("defineTheme")]),s._v("方法会把你传入的配置和默认配置做合并。大部分主题其实需要自定义的部分不是很多,一个典型的自定义主题配置可以参考"),a("a",{attrs:{href:"https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/blueSky.js"}},[s._v("blueSky")]),s._v("。")]),a("pre",{staticClass:"hljs"},[a("code",[s._v("MindMap.defineTheme("),a("span",{staticClass:"hljs-string"},[s._v("'redSpirit'")]),s._v(", {\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 背景颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("backgroundColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 238, 228)'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 连线的颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(230, 138, 131)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("lineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("3")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要连线的粗细")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("3")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要连线的颜色")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalizationLineColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(222, 101, 85)'")]),s._v(",\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 根节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("root")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(207, 44, 44)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 233, 157)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("''")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("0")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("24")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("active")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 233, 157)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("3")]),s._v(",\n }\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 二级节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("second")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 255, 255)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(211, 58, 21)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(222, 101, 85)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("18")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("active")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 233, 157)'")]),s._v(",\n }\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 三级及以下节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("node")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("14")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(144, 71, 43)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("active")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 233, 157)'")]),s._v("\n }\n },\n "),a("span",{staticClass:"hljs-comment"},[s._v("// 概要节点样式")]),s._v("\n "),a("span",{staticClass:"hljs-attr"},[s._v("generalization")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("fontSize")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("14")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("fillColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 247, 211)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(255, 202, 162)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderWidth")]),s._v(": "),a("span",{staticClass:"hljs-number"},[s._v("2")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("color")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(187, 101, 69)'")]),s._v(",\n "),a("span",{staticClass:"hljs-attr"},[s._v("active")]),s._v(": {\n "),a("span",{staticClass:"hljs-attr"},[s._v("borderColor")]),s._v(": "),a("span",{staticClass:"hljs-string"},[s._v("'rgb(222, 101, 85)'")]),s._v("\n }\n }\n})\n")])]),a("h2",[s._v("完整示例")]),a("iframe",{staticStyle:{width:"100%",height:"455px",border:"none"},attrs:{src:"https://wanglin2.github.io/playground/#eNrFV+tvG0UQ/1dWh9A5yDk/0wTjVIXCB6QGoRaJD7kIne/W9rbn3eN2nUcjSxBQadpUBYEoL6ESiZIPSKCCSh5U+Wf8SP8LZm/vZfuSlqpSP/ixszO/mf3N7Nzcpvam5xmrXazVtDq3feIJxLHoeudNSjoe8wXaRD5u5hGjS6xLBXbyiLct12Vrl3ET9VDTZx2kA4IeWywR6ixZntoyNQ5iF892QDrbsTxTMylCJnWxQFImNRcR7bqukhcKaPD468H2neHxJ8O/j0Y/fH5ya2u0dTC4ee/klz2T2oxygSxbkFX8HnMwB+skotzyyoxJFcrNL4Z3dvv7R092v4vM7LZFW/iDNu5gMMvNoMXzaFP6DSMx4PDBbk63XYtzYusA1wsRh3/tDW7sDA4e9R8fj77ZG3775zi6g5uEZqGHjBgphZzuY+eKR3wi9LzSQgh8nHy2M/z+jye7P51sP1TChmVfa/lAvnORucyvId1vNXLlubk8KlcW4Ku8MKPnE4Djn0eHx0BbGsMFt2PWlWIelaR1qVKKraXWh8QR7RqqJIDDB1snDz6NYUcP742ObqjdFqbYt1xy3RKE0UvPYp6Oatp8LMZyGcIrlvJoYS59wOH9A1URw/v/DP69q+Q+Y6IW0YhQk7juGFZxPo+qVfmJoRCyp/msgMu5+ZROg/kO9iOsSXl43GIsbjIqrpDruIbK1VioijUV3iTsWQFMuIqYRQiqMvhJmOkf7owOf5smh2OoT+csegLf4ddpBJUgE3Oy3pKCyTxHVtomDlHO4Ku08GL4yqBlfxtoGdy91T/6tb9/e5ofCm0kzU4SU5LDNBUlWUnzcMJqJeX4eaI+Pejw2kzFOn5nnhZ1dqKrcBkgnWenMdAsylyeKz89j2P0LAB+UAHnXv/f/IxVzyQ90IdFDxpyVr9O2mnUseNHVm660ctHDl6LGnMujAm7NeQwu9vBVBgtLN5xAZqKtzbedXJ6aHkReLagVfn6THg0xxJW6limJgWmNnZSKRZ4XUixqcUtTD0M06mXinabuI6PqVReTjAm4DK9THpKt4TE2bjDDKcryV5a7yVFEP0NZZEdoURchr4vp4D3GSfqQizrLm7KZ6puQ+ogTSuhupB1AmUGeQRFHhRXb+YNNXUEd27041eDL38P71wwffQPb/ePHqULjtGcLvvFR6qcwU9OLvNBE7lEuEhKLSr5YEoxVi23K8eCSE+5h1KFT72gZi+YumAhMAxMlsCwQqjukFUUzCKLphYG8TbuMFMLtkMF4iS7cYGCSr0Au2nFCEkw5jYsqaI2TVFvdIVgFF2wXWJfA5XUrARq6WmqXlC6oS1AT9qmBh2wPW1umsBJgo3+1QspLmDJxYaraLkQzpqmZhTUgBnNWJh3DJtzU4sza6RoizKzphpYqVh8NdBDyIsryMfgEfIWbATFJz+vTNIbQSWGVoMztyuUIYxTUIcwG4QrwbxkMe2+jUmrDerVYtFbjzxn+30t8tyx/BYBvxGqZzkOoa1IEIduhNl+xohLUQRh0PEaAKFSgxxoeU1lQI70xlXOKLxBBPBmuAEZiDuDqcELgmoHRgH+Gj70ZdLBMlmzDZ+tcewDiKmFVzXjpUHatoXweK1QcNc/pnyDG4zzWZvONjC5Csc24Km40aU2N2zWKUCZY8EzakO6CQ/T03r/AbfdVt0="}})])}],v={},_=v,i=t("2877"),r=Object(i["a"])(_,n,l,!1,null,null,null);a["default"]=r.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0d2ec3.js b/dist/js/chunk-2d0d2ec3.js deleted file mode 100644 index 1fcbff3e..00000000 --- a/dist/js/chunk-2d0d2ec3.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d2ec3"],{"5b22":function(s,n,a){"use strict";a.r(n);var t=function(){var s=this;s._self._c;return s._m(0)},i=[function(){var s=this,n=s._self._c;return n("div",[n("h1",[s._v("Painter 插件")]),n("blockquote",[n("p",[s._v("v0.6.12+")])]),n("p",[s._v("节点格式刷插件。")]),n("h2",[s._v("注册")]),n("pre",{staticClass:"hljs"},[n("code",[n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" MindMap "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map'")]),s._v("\n"),n("span",{staticClass:"hljs-keyword"},[s._v("import")]),s._v(" Painter "),n("span",{staticClass:"hljs-keyword"},[s._v("from")]),s._v(" "),n("span",{staticClass:"hljs-string"},[s._v("'simple-mind-map/src/plugins/Painter.js'")]),s._v("\nMindMap.usePlugin(Painter)\n")])]),n("p",[s._v("注册完且实例化"),n("code",[s._v("MindMap")]),s._v("后可通过"),n("code",[s._v("mindMap.painter")]),s._v("获取到该实例。")]),n("h2",[s._v("事件")]),n("blockquote",[n("p",[s._v("可以通过mindMap.on('事件名称', () => {})来监听事件。")])]),n("h3",[s._v("painter_start")]),n("p",[s._v("开始格式刷事件。")]),n("h3",[s._v("painter_end")]),n("p",[s._v("结束格式刷事件。")]),n("h2",[s._v("方法")]),n("h3",[s._v("startPainter()")]),n("p",[s._v("开始格式刷。")]),n("p",[s._v("当调用了该方法后,如果当前存在激活节点,那么会默认取第一个激活的节点为指定节点,点击其他节点后,会把该节点的样式应用到被点击的其他节点,当点击画布后本次格式刷操作结束。")])])}],_={},p=_,v=a("2877"),e=Object(v["a"])(p,t,i,!1,null,null,null);n["default"]=e.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0d36df.js b/dist/js/chunk-2d0d36df.js deleted file mode 100644 index 9dc6bf74..00000000 --- a/dist/js/chunk-2d0d36df.js +++ /dev/null @@ -1 +0,0 @@ -(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-2d0d5cb9.js b/dist/js/chunk-2d0d5cb9.js deleted file mode 100644 index 0e264d4b..00000000 --- a/dist/js/chunk-2d0d5cb9.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d5cb9"],{"708b":function(e,i,t){"use strict";t.r(i);var s=function(){var e=this;e._self._c;return e._m(0)},a=[function(){var e=this,i=e._self._c;return i("div",[i("h1",[e._v("AssociativeLine plugin")]),i("blockquote",[i("p",[e._v("v0.4.5+")])]),i("blockquote",[i("p",[e._v("The function of adjusting associated line control points is supported from v0.4.6+")])]),i("blockquote",[i("p",[e._v("Relevance support for text editing starting from v0.5.11+")])]),i("p",[e._v("This plugin is used to support the addition of associative lines.")]),i("h2",[e._v("Register")]),i("pre",{staticClass:"hljs"},[i("code",[i("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" MindMap "),i("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),i("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map'")]),e._v("\n"),i("span",{staticClass:"hljs-keyword"},[e._v("import")]),e._v(" AssociativeLine "),i("span",{staticClass:"hljs-keyword"},[e._v("from")]),e._v(" "),i("span",{staticClass:"hljs-string"},[e._v("'simple-mind-map/src/plugins/AssociativeLine.js'")]),e._v("\n"),i("span",{staticClass:"hljs-comment"},[e._v("// import AssociativeLine from 'simple-mind-map/src/AssociativeLine.js' Use this path for versions below v0.6.0")]),e._v("\n\nMindMap.usePlugin(AssociativeLine)\n")])]),i("p",[e._v("After registration and instantiation of "),i("code",[e._v("MindMap")]),e._v(", the instance can be obtained through "),i("code",[e._v("mindMap.associativeLine")]),e._v(".")]),i("h2",[e._v("Config")]),i("p",[e._v("Support for modifying the thickness and color of associated lines, divided into default and active states. The configuration is as follows:")]),i("ul",[i("li",[i("p",[i("code",[e._v("associativeLineWidth")]),e._v(": The thickness of the default state of the associated line. The default value is "),i("code",[e._v("2")])])]),i("li",[i("p",[i("code",[e._v("associativeLineColor")]),e._v(": Color of the default state of associative lines. The default value is "),i("code",[e._v("rgb(51, 51, 51)")])])]),i("li",[i("p",[i("code",[e._v("associativeLineActiveWidth")]),e._v(": The thickness of the active state of the associated line. The default value is "),i("code",[e._v("8")])])]),i("li",[i("p",[i("code",[e._v("associativeLineActiveColor")]),e._v(": The color of the active state of the associated line. The default value is "),i("code",[e._v("rgba(2, 167, 240, 1)")])])])]),i("p",[e._v("The configuration is provided as a theme, so if you want to modify these four properties, you can modify them using the "),i("code",[e._v("mindMap.setThemeConfig(config)")]),e._v(" method.")]),i("h2",[e._v("Props")]),i("h3",[e._v("mindMap.associativeLine.lineList")]),i("p",[e._v("Currently, all connection line data, array types, and each item of the array are also an array:")]),i("pre",{staticClass:"hljs"},[i("code",[e._v("[\n path, "),i("span",{staticClass:"hljs-comment"},[e._v("// Connector node")]),e._v("\n clickPath, "),i("span",{staticClass:"hljs-comment"},[e._v("// Invisible click line node")]),e._v("\n node, "),i("span",{staticClass:"hljs-comment"},[e._v("// Start node")]),e._v("\n toNode "),i("span",{staticClass:"hljs-comment"},[e._v("// Target node")]),e._v("\n]\n")])]),i("h3",[e._v("mindMap.associativeLine.activeLine")]),i("p",[e._v("The currently active connection line and array type are the same as the structure of each item in the "),i("code",[e._v("lineList")]),e._v(" array.")]),i("h2",[e._v("Methods")]),i("h3",[e._v("cancelCreateLine()")]),i("blockquote",[i("p",[e._v("v0.10.5+")])]),i("p",[e._v("Cancel the creation of the associated line midway.")]),i("h3",[e._v("renderAllLines()")]),i("p",[e._v("Re-render all associated lines.")]),i("h3",[e._v("removeAllLines()")]),i("p",[e._v("Remove all associated lines.")]),i("h3",[e._v("createLineFromActiveNode()")]),i("p",[e._v("Create an associated line from the current active node. If there are multiple active nodes, the default is the first node.")]),i("p",[e._v("After calling this method, an association line will be rendered from the first active node to the current mouse real-time position. When a target node is clicked, it represents completion of creation. An association line will be rendered between the first active node and the clicked node.")]),i("h3",[e._v("createLine(fromNode)")]),i("p",[e._v("Creates an associative line starting at the specified node.")]),i("p",[e._v("After calling this method, an association line will be rendered from the specified node to the current mouse real-time position. When a target node is clicked, it represents completion of creation, and an association line will be rendered between the specified node and the clicked node.")]),i("h3",[e._v("addLine(fromNode, toNode)")]),i("p",[e._v("Add an associative line directly.")]),i("p",[e._v("Calling this method will directly create an association line from the "),i("code",[e._v("fromNode")]),e._v(" to the "),i("code",[e._v("toNode")]),e._v(" node.")]),i("h3",[e._v("removeLine()")]),i("p",[e._v("Deletes the currently active associative line. Clicking on an associated line is considered active.")]),i("h3",[e._v("clearActiveLine()")]),i("p",[e._v("Clears the active state of the currently active association line.")]),i("h3",[e._v("front()")]),i("blockquote",[i("p",[e._v("v0.8.0+")])]),i("p",[e._v("The top-level display of the associated line.")]),i("h3",[e._v("back()")]),i("blockquote",[i("p",[e._v("v0.8.0+")])]),i("p",[e._v("The associated line returns to its original level.")])])}],o={},n=o,c=t("2877"),l=Object(c["a"])(n,s,a,!1,null,null,null);i["default"]=l.exports}}]); \ No newline at end of file diff --git a/dist/js/chunk-2d0d6590.js b/dist/js/chunk-2d0d6590.js deleted file mode 100644 index 9f6f12e6..00000000 --- a/dist/js/chunk-2d0d6590.js +++ /dev/null @@ -1 +0,0 @@ -(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("维护的"),t("code",[s._v("Docker")]),s._v("镜像。")])]),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/qrcode.jpg b/qrcode.jpg index 077aa563..b0b6ea73 100644 Binary files a/qrcode.jpg and b/qrcode.jpg differ diff --git a/simple-mind-map/full.js b/simple-mind-map/full.js index 829418b8..563a4696 100644 --- a/simple-mind-map/full.js +++ b/simple-mind-map/full.js @@ -31,7 +31,7 @@ MindMap.iconList = icons.nodeIconList MindMap.constants = constants MindMap.themes = themes MindMap.defaultTheme = defaultTheme -MindMap.version = '0.10.5' +MindMap.version = '0.11.0' MindMap.usePlugin(MiniMap) .usePlugin(Watermark) diff --git a/simple-mind-map/index.js b/simple-mind-map/index.js index 6d2bfceb..69dce84f 100644 --- a/simple-mind-map/index.js +++ b/simple-mind-map/index.js @@ -214,7 +214,14 @@ class MindMap { this.svg.size(this.width, this.height) if (oldWidth !== this.width || oldHeight !== this.height) { // 如果画布宽高改变了需要触发一次渲染 - this.render() + if (this.demonstrate) { + // 如果存在演示插件,并且正在演示中,那么不需要触发重新渲染,否则会冲突 + if (!this.demonstrate.isInDemonstrate) { + this.render() + } + } else { + this.render() + } } this.emit('resize') } @@ -410,7 +417,9 @@ class MindMap { if (![CONSTANTS.MODE.READONLY, CONSTANTS.MODE.EDIT].includes(mode)) { return } - this.opt.readonly = mode === CONSTANTS.MODE.READONLY + const isReadonly = mode === CONSTANTS.MODE.READONLY + if (isReadonly === this.opt.readonly) return + this.opt.readonly = isReadonly if (this.opt.readonly) { // 取消当前激活的元素 this.execCommand('CLEAR_ACTIVE_NODE') @@ -585,10 +594,7 @@ class MindMap { this.emit('beforeDestroy') // 清除节点编辑框 this.renderer.textEdit.hideEditTextBox() - // 清除关联线文字编辑框 - if (this.associativeLine) { - this.associativeLine.hideEditTextBox() - } + this.renderer.textEdit.removeTextEditEl() // 移除插件 ;[...MindMap.pluginList].forEach(plugin => { if ( diff --git a/simple-mind-map/package-lock.json b/simple-mind-map/package-lock.json index c2568b8f..a411be68 100644 --- a/simple-mind-map/package-lock.json +++ b/simple-mind-map/package-lock.json @@ -1,21 +1,21 @@ { "name": "simple-mind-map", - "version": "0.10.4", + "version": "0.11.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "0.10.4", + "version": "0.11.0", "license": "MIT", "dependencies": { - "@svgdotjs/svg.js": "^3.2.0", + "@svgdotjs/svg.js": "3.2.0", "deepmerge": "^1.5.2", "eventemitter3": "^4.0.7", "jszip": "^3.10.1", "katex": "^0.16.8", "mdast-util-from-markdown": "^1.3.0", "pdf-lib": "^1.17.1", - "quill": "^1.3.6", + "quill": "^2.0.2", "tern": "^0.24.3", "uuid": "^9.0.0", "ws": "^7.5.9", @@ -371,24 +371,6 @@ "ieee754": "^1.2.1" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -423,14 +405,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -509,25 +483,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "dependencies": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -542,38 +497,6 @@ "node": ">=0.10.0" } }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -632,25 +555,6 @@ "errno": "cli.js" } }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -810,11 +714,6 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -822,9 +721,9 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -900,45 +799,11 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/get-browser-rtc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -985,17 +850,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -1016,64 +870,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -1146,35 +942,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1205,21 +972,6 @@ "node": ">=8" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1369,6 +1121,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -1878,29 +1645,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -1962,9 +1706,9 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "node_modules/parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==" }, "node_modules/parent-module": { "version": "1.0.1", @@ -2078,35 +1822,36 @@ ] }, "node_modules/quill": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", - "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz", + "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==", "dependencies": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.2", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" + }, + "engines": { + "npm": ">=8.2.3" } }, "node_modules/quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", "dependencies": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" }, "engines": { - "node": ">=0.10" + "node": ">= 12.0.0" } }, "node_modules/quill/node_modules/eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/randombytes": { "version": "2.1.0", @@ -2130,23 +1875,6 @@ "util-deprecate": "~1.0.1" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -2225,36 +1953,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -2887,18 +2585,6 @@ "ieee754": "^1.2.1" } }, - "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - } - }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -2920,11 +2606,6 @@ "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==" }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==" - }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2982,19 +2663,6 @@ "character-entities": "^2.0.0" } }, - "deep-equal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", - "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", - "requires": { - "is-arguments": "^1.1.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.5.1" - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3006,26 +2674,6 @@ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" }, - "define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "requires": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - } - }, - "define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "requires": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, "dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -3069,19 +2717,6 @@ "prr": "~1.0.1" } }, - "es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "requires": { - "get-intrinsic": "^1.2.4" - } - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, "escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -3196,11 +2831,6 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3208,9 +2838,9 @@ "dev": true }, "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" }, "fast-json-stable-stringify": { "version": "2.1.0", @@ -3274,33 +2904,11 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" - }, "get-browser-rtc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" }, - "get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - } - }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -3332,14 +2940,6 @@ "type-fest": "^0.20.2" } }, - "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } - }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3357,40 +2957,6 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "requires": { - "es-define-property": "^1.0.0" - } - }, - "has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -3437,23 +3003,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3475,15 +3024,6 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3595,6 +3135,21 @@ "p-locate": "^5.0.0" } }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==" + }, "lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -3877,20 +3432,6 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" }, - "object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" - } - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -3937,9 +3478,9 @@ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==" }, "parent-module": { "version": "1.0.1", @@ -4012,33 +3553,31 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quill": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", - "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz", + "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==", "requires": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.2", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" + "eventemitter3": "^5.0.1", + "lodash-es": "^4.17.21", + "parchment": "^3.0.0", + "quill-delta": "^5.1.0" }, "dependencies": { "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" } } }, "quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-5.1.0.tgz", + "integrity": "sha512-X74oCeRI4/p0ucjb5Ma8adTXd9Scumz367kkMK5V/IatcX6A0vlgLgKbzXWy5nZmCGeNJm2oQX0d2Eqj+ZIlCA==", "requires": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" + "fast-diff": "^1.3.0", + "lodash.clonedeep": "^4.5.0", + "lodash.isequal": "^4.5.0" } }, "randombytes": { @@ -4063,17 +3602,6 @@ "util-deprecate": "~1.0.1" } }, - "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "requires": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -4122,30 +3650,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" }, - "set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - } - }, - "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", diff --git a/simple-mind-map/package.json b/simple-mind-map/package.json index a06af4ba..9ca1fba6 100644 --- a/simple-mind-map/package.json +++ b/simple-mind-map/package.json @@ -1,6 +1,6 @@ { "name": "simple-mind-map", - "version": "0.10.5", + "version": "0.11.0", "description": "一个简单的web在线思维导图", "authors": [ { @@ -28,14 +28,14 @@ "module": "index.js", "main": "./dist/simpleMindMap.umd.min.js", "dependencies": { - "@svgdotjs/svg.js": "^3.2.0", + "@svgdotjs/svg.js": "3.2.0", "deepmerge": "^1.5.2", "eventemitter3": "^4.0.7", "jszip": "^3.10.1", "katex": "^0.16.8", "mdast-util-from-markdown": "^1.3.0", "pdf-lib": "^1.17.1", - "quill": "^1.3.6", + "quill": "^2.0.2", "tern": "^0.24.3", "uuid": "^9.0.0", "ws": "^7.5.9", diff --git a/simple-mind-map/src/constants/constant.js b/simple-mind-map/src/constants/constant.js index 23f069c3..7acd677d 100644 --- a/simple-mind-map/src/constants/constant.js +++ b/simple-mind-map/src/constants/constant.js @@ -326,7 +326,9 @@ export const nodeDataNoStylePropList = [ 'attachmentUrl', 'attachmentName', 'notation', - 'outerFrame' + 'outerFrame', + 'number', + 'range' ] // 错误类型 diff --git a/simple-mind-map/src/constants/defaultOptions.js b/simple-mind-map/src/constants/defaultOptions.js index 4874af62..5da7c1c6 100644 --- a/simple-mind-map/src/constants/defaultOptions.js +++ b/simple-mind-map/src/constants/defaultOptions.js @@ -86,6 +86,8 @@ export const defaultOpt = { maxHistoryCount: 500, // 是否一直显示节点的展开收起按钮,默认为鼠标移上去和激活时才显示 alwaysShowExpandBtn: false, + // 不显示展开收起按钮,优先级比alwaysShowExpandBtn配置高 + notShowExpandBtn: false, // 扩展节点可插入的图标 iconList: [ // { @@ -232,9 +234,9 @@ export const defaultOpt = { openPerformance: false, // 性能优化模式配置 performanceConfig: { - time: 250,// 当视图改变后多久刷新一次节点,单位:ms, - padding: 100,// 超出画布四周指定范围内依旧渲染节点 - removeNodeWhenOutCanvas: true,// 节点移除画布可视区域后从画布删除 + time: 250, // 当视图改变后多久刷新一次节点,单位:ms, + padding: 100, // 超出画布四周指定范围内依旧渲染节点 + removeNodeWhenOutCanvas: true // 节点移除画布可视区域后从画布删除 }, // 【Select插件】 diff --git a/simple-mind-map/src/core/command/Command.js b/simple-mind-map/src/core/command/Command.js index eddc24d2..6f6c1619 100644 --- a/simple-mind-map/src/core/command/Command.js +++ b/simple-mind-map/src/core/command/Command.js @@ -104,7 +104,7 @@ class Command { return } const lastData = - this.history.length > 0 ? this.history[this.history.length - 1] : null + this.history.length > 0 ? this.history[this.activeHistoryIndex] : null const data = this.getCopyData() // 此次数据和上次一样则不重复添加 if (lastData === data) return @@ -143,7 +143,6 @@ class Command { ) const data = simpleDeepClone(this.history[this.activeHistoryIndex]) this.emitDataUpdatesEvent(lastData, data) - this.mindMap.emit('data_change', data) return data } } @@ -164,7 +163,6 @@ class Command { ) const data = simpleDeepClone(this.history[this.activeHistoryIndex]) this.emitDataUpdatesEvent(lastData, data) - this.mindMap.emit('data_change', data) return data } } diff --git a/simple-mind-map/src/core/command/KeyCommand.js b/simple-mind-map/src/core/command/KeyCommand.js index 95e4440d..13c7783d 100644 --- a/simple-mind-map/src/core/command/KeyCommand.js +++ b/simple-mind-map/src/core/command/KeyCommand.js @@ -27,12 +27,20 @@ export default class KeyCommand { // 保存当前注册的快捷键数据,然后清空快捷键数据 save() { + // 当前已经存在缓存数据了,那么直接返回 + if (Object.keys(this.shortcutMapCache).length > 0) { + return + } this.shortcutMapCache = this.shortcutMap this.shortcutMap = {} } // 恢复保存的快捷键数据,然后清空缓存数据 restore() { + // 当前不存在缓存数据,那么直接返回 + if (Object.keys(this.shortcutMapCache).length <= 0) { + return + } this.shortcutMap = this.shortcutMapCache this.shortcutMapCache = {} } @@ -67,11 +75,9 @@ export default class KeyCommand { // 按键事件 onKeydown(e) { - const { enableShortcutOnlyWhenMouseInSvg, beforeShortcutRun } = this.mindMap.opt - if ( - this.isPause || - (enableShortcutOnlyWhenMouseInSvg && !this.isInSvg) - ) { + const { enableShortcutOnlyWhenMouseInSvg, beforeShortcutRun } = + this.mindMap.opt + if (this.isPause || (enableShortcutOnlyWhenMouseInSvg && !this.isInSvg)) { return } Object.keys(this.shortcutMap).forEach(key => { @@ -82,7 +88,9 @@ export default class KeyCommand { e.preventDefault() } if (typeof beforeShortcutRun === 'function') { - const isStop = beforeShortcutRun(key, [...this.mindMap.renderer.activeNodeList]) + const isStop = beforeShortcutRun(key, [ + ...this.mindMap.renderer.activeNodeList + ]) if (isStop) return } this.shortcutMap[key].forEach(fn => { diff --git a/simple-mind-map/src/core/event/Event.js b/simple-mind-map/src/core/event/Event.js index b81d95e6..0a5f2ad5 100644 --- a/simple-mind-map/src/core/event/Event.js +++ b/simple-mind-map/src/core/event/Event.js @@ -99,7 +99,6 @@ class Event extends EventEmitter { // 鼠标按下事件 onMousedown(e) { - e.preventDefault() // 鼠标左键 if (e.which === 1) { this.isLeftMousedown = true @@ -115,7 +114,6 @@ class Event extends EventEmitter { // 鼠标移动事件 onMousemove(e) { - e.preventDefault() let { useLeftKeySelectionRightKeyDrag } = this.mindMap.opt this.mousemovePos.x = e.clientX this.mousemovePos.y = e.clientY diff --git a/simple-mind-map/src/core/render/Render.js b/simple-mind-map/src/core/render/Render.js index 8ac3bc4b..ec2bf3b8 100644 --- a/simple-mind-map/src/core/render/Render.js +++ b/simple-mind-map/src/core/render/Render.js @@ -594,6 +594,26 @@ class Render { this.activeNodeList.splice(index, 1) } + // 手动激活多个节点,激活单个节点请直接调用节点实例的active()方法 + activeMultiNode(nodeList = []) { + nodeList.forEach(node => { + // 手动派发节点激活前事件 + this.mindMap.emit('before_node_active', node, this.activeNodeList) + // 激活节点,并将该节点添加到激活节点列表里 + this.addNodeToActiveList(node, true) + // 手动派发节点激活事件 + this.emitNodeActiveEvent(node) + }) + } + + // 手动取消激活多个节点 + cancelActiveMultiNode(nodeList = []) { + nodeList.forEach(node => { + this.removeNodeFromActiveList(node) + this.emitNodeActiveEvent(null) + }) + } + // 检索某个节点在激活列表里的索引 findActiveNodeIndex(node) { return getNodeIndexInNodeList(node, this.activeNodeList) @@ -609,6 +629,15 @@ class Render { if (!node.getData('isActive')) { this.addNodeToActiveList(node) } + // 概要节点 + if (node._generalizationList && node._generalizationList.length > 0) { + node._generalizationList.forEach(item => { + const gNode = item.generalizationNode + if (!gNode.getData('isActive')) { + this.addNodeToActiveList(gNode) + } + }) + } }, null, true, @@ -636,6 +665,7 @@ class Render { this.renderTree = data this.mindMap.render() } + this.mindMap.emit('data_change', data) } // 获取创建新节点的行为 @@ -1945,7 +1975,7 @@ class Render { const generalizationList = formatGetNodeGeneralization(node.data) generalizationList.forEach(item => { if (item.uid === uid) { - parentsList = parent ? [...cache[parent.data.uid], parent] : [] + parentsList = parent ? [...cache[parent.data.uid], parent, node] : [] isGeneralization = true } }) @@ -1982,6 +2012,7 @@ class Render { // 根据uid找到对应的节点实例 findNodeByUid(uid) { + if (!this.root) return let res = null walk(this.root, null, node => { if (node.getData('uid') === uid) { @@ -2056,6 +2087,7 @@ class Render { // 关闭高亮 closeHighlightNode() { + if (!this.highlightBoxNode) return this.highlightBoxNode.remove() } } diff --git a/simple-mind-map/src/core/render/TextEdit.js b/simple-mind-map/src/core/render/TextEdit.js index ffa72563..0663ed68 100644 --- a/simple-mind-map/src/core/render/TextEdit.js +++ b/simple-mind-map/src/core/render/TextEdit.js @@ -280,6 +280,17 @@ export default class TextEdit { this.cacheEditingText = '' } + // 删除文本编辑元素 + removeTextEditEl() { + if (this.mindMap.richText) { + this.mindMap.richText.removeTextEditEl() + return + } + if (!this.textEditNode) return + const targetNode = this.mindMap.opt.customInnerElsAppendTo || document.body + targetNode.removeChild(this.textEditNode) + } + // 获取当前正在编辑的内容 getEditText() { return getStrWithBrFromHtml(this.textEditNode.innerHTML) diff --git a/simple-mind-map/src/core/render/node/Node.js b/simple-mind-map/src/core/render/node/MindMapNode.js similarity index 95% rename from simple-mind-map/src/core/render/node/Node.js rename to simple-mind-map/src/core/render/node/MindMapNode.js index e1bd996c..5b3c7174 100644 --- a/simple-mind-map/src/core/render/node/Node.js +++ b/simple-mind-map/src/core/render/node/MindMapNode.js @@ -1,6 +1,6 @@ import Style from './Style' import Shape from './Shape' -import { G, Rect } from '@svgdotjs/svg.js' +import { G, Rect, Text } from '@svgdotjs/svg.js' import nodeGeneralizationMethods from './nodeGeneralization' import nodeExpandBtnMethods from './nodeExpandBtn' import nodeCommandWrapsMethods from './nodeCommandWraps' @@ -16,7 +16,7 @@ import { } from '../../../utils/index' // 节点类 -class Node { +class MindMapNode { // 构造函数 constructor(opt = {}) { this.opt = opt @@ -82,6 +82,7 @@ class Node { this.noteEl = null this.noteContentIsShow = false this._attachmentData = null + this._numberData = null this._prefixData = null this._postfixData = null this._expandBtn = null @@ -105,6 +106,8 @@ class Node { // 概要节点的宽高 this._generalizationNodeWidth = 0 this._generalizationNodeHeight = 0 + // 编号字符 + this.number = opt.number || '' // 各种文字信息的间距 this.textContentItemMargin = this.mindMap.opt.textContentMargin // 图片和文字节点的间距 @@ -215,6 +218,9 @@ class Node { this._tagData = this.createTagNode() this._noteData = this.createNoteNode() this._attachmentData = this.createAttachmentNode() + if (this.mindMap.numbers) { + this._numberData = this.mindMap.numbers.createNumberContent(this) + } this._prefixData = createNodePrefixContent ? createNodePrefixContent(this) : null @@ -233,7 +239,8 @@ class Node { getSize() { this.customLeft = this.getData('customLeft') || undefined this.customTop = this.getData('customTop') || undefined - this.updateGeneralization() + // 这里不要更新概要,不然即使概要没修改,每次也会重新渲染 + // this.updateGeneralization() this.createNodeData() let { width, height } = this.getNodeRect() // 判断节点尺寸是否有变化 @@ -267,6 +274,11 @@ class Node { this._rectInfo.imgContentWidth = imgContentWidth = this._imgData.width this._rectInfo.imgContentHeight = imgContentHeight = this._imgData.height } + // 编号内容 + if (this._numberData) { + textContentWidth += this._numberData.width + textContentHeight = Math.max(textContentHeight, this._numberData.height) + } // 自定义前置内容 if (this._prefixData) { textContentWidth += this._prefixData.width @@ -363,6 +375,7 @@ class Node { // 定位节点内容 layout() { + if (!this.group) return // 清除之前的内容 this.group.clear() const { hoverRectPadding, tagPosition } = this.mindMap.opt @@ -417,6 +430,14 @@ class Node { // 内容节点 let textContentNested = new G() let textContentOffsetX = 0 + // 编号内容 + if (this._numberData) { + this._numberData.node + .x(textContentOffsetX) + .y((textContentHeight - this._numberData.height) / 2) + textContentNested.add(this._numberData.node) + textContentOffsetX += this._numberData.width + textContentItemMargin + } // 自定义前置内容 if (this._prefixData) { const foreignObject = createForeignObjectNode({ @@ -688,25 +709,28 @@ class Node { return } this.updateNodeActiveClass() - let { alwaysShowExpandBtn } = this.mindMap.opt - const childrenLength = this.nodeData.children.length - if (alwaysShowExpandBtn) { - // 需要移除展开收缩按钮 - if (this._expandBtn && childrenLength <= 0) { - this.removeExpandBtn() + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + // 不显示展开收起按钮则不需要处理 + if (!notShowExpandBtn) { + const childrenLength = this.nodeData.children.length + if (alwaysShowExpandBtn) { + // 需要移除展开收缩按钮 + if (this._expandBtn && childrenLength <= 0) { + this.removeExpandBtn() + } else { + // 更新展开收起按钮 + this.renderExpandBtn() + } } else { - // 更新展开收起按钮 - this.renderExpandBtn() - } - } else { - let { isActive, expand } = this.getData() - // 展开状态且非激活状态,且当前鼠标不在它上面,才隐藏 - if (childrenLength <= 0) { - this.removeExpandBtn() - } else if (expand && !isActive && !this._isMouseenter) { - this.hideExpandBtn() - } else { - this.showExpandBtn() + let { isActive, expand } = this.getData() + // 展开状态且非激活状态,且当前鼠标不在它上面,才隐藏 + if (childrenLength <= 0) { + this.removeExpandBtn() + } else if (expand && !isActive && !this._isMouseenter) { + this.hideExpandBtn() + } else { + this.showExpandBtn() + } } } // 更新概要 @@ -1258,7 +1282,7 @@ class Node { // 伪克隆节点 // 克隆出的节点并不能真正当做一个节点使用 fakeClone() { - const newNode = new Node({ + const newNode = new MindMapNode({ ...this.opt, uid: createUid() }) @@ -1267,6 +1291,11 @@ class Node { }) return newNode } + + // 创建SVG文本节点 + createSvgTextNode(text = '') { + return new Text().text(text) + } } -export default Node +export default MindMapNode diff --git a/simple-mind-map/src/core/render/node/nodeCreateContents.js b/simple-mind-map/src/core/render/node/nodeCreateContents.js index 7592086a..a2c0ec6e 100644 --- a/simple-mind-map/src/core/render/node/nodeCreateContents.js +++ b/simple-mind-map/src/core/render/node/nodeCreateContents.js @@ -420,6 +420,9 @@ function createNoteNode() { this.mindMap.opt.customNoteContentShow.hide() } }) + node.on('click', e => { + this.mindMap.emit('node_note_click', this, e, node) + }) return { node, width: iconSize, diff --git a/simple-mind-map/src/core/render/node/nodeExpandBtn.js b/simple-mind-map/src/core/render/node/nodeExpandBtn.js index 16001d15..87941fde 100644 --- a/simple-mind-map/src/core/render/node/nodeExpandBtn.js +++ b/simple-mind-map/src/core/render/node/nodeExpandBtn.js @@ -148,7 +148,8 @@ function removeExpandBtn() { // 显示展开收起按钮 function showExpandBtn() { - if (this.mindMap.opt.alwaysShowExpandBtn) return + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (alwaysShowExpandBtn || notShowExpandBtn) return setTimeout(() => { this.renderExpandBtn() }, 0) @@ -156,7 +157,8 @@ function showExpandBtn() { // 隐藏展开收起按钮 function hideExpandBtn() { - if (this.mindMap.opt.alwaysShowExpandBtn || this._isMouseenter) return + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (alwaysShowExpandBtn || this._isMouseenter || notShowExpandBtn) return // 非激活状态且展开状态鼠标移出才隐藏按钮 let { isActive, expand } = this.getData() if (!isActive && expand) { diff --git a/simple-mind-map/src/core/render/node/nodeExpandBtnPlaceholderRect.js b/simple-mind-map/src/core/render/node/nodeExpandBtnPlaceholderRect.js index 23d51ff4..da6410a5 100644 --- a/simple-mind-map/src/core/render/node/nodeExpandBtnPlaceholderRect.js +++ b/simple-mind-map/src/core/render/node/nodeExpandBtnPlaceholderRect.js @@ -10,8 +10,9 @@ function renderExpandBtnPlaceholderRect() { ) { return } - // 默认显示展开按钮的情况下也不需要渲染 - if (!this.mindMap.opt.alwaysShowExpandBtn) { + // 默认显示展开按钮的情况下或不显示展开收起按钮的情况下不需要渲染 + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn && !notShowExpandBtn) { let { width, height } = this if (!this._unVisibleRectRegionNode) { this._unVisibleRectRegionNode = new Rect() diff --git a/simple-mind-map/src/core/render/node/nodeGeneralization.js b/simple-mind-map/src/core/render/node/nodeGeneralization.js index 59e71a2d..34e6908e 100644 --- a/simple-mind-map/src/core/render/node/nodeGeneralization.js +++ b/simple-mind-map/src/core/render/node/nodeGeneralization.js @@ -1,4 +1,4 @@ -import Node from './Node' +import MindMapNode from './MindMapNode' import { createUid } from '../../../utils/index' // 获取节点概要数据 @@ -49,7 +49,7 @@ function createGeneralizationNode() { cur.generalizationLine = this.lineDraw.path() } if (!cur.generalizationNode) { - cur.generalizationNode = new Node({ + cur.generalizationNode = new MindMapNode({ data: { inserting: item.inserting, data: item diff --git a/simple-mind-map/src/core/view/View.js b/simple-mind-map/src/core/view/View.js index 84848b5c..dd2f276c 100644 --- a/simple-mind-map/src/core/view/View.js +++ b/simple-mind-map/src/core/view/View.js @@ -111,24 +111,32 @@ class View { } } else { // 2.鼠标滚轮事件控制画布移动 - const step = isTouchPad ? 10 : mousewheelMoveStep + let stepX = 0 + let stepY = 0 + if (isTouchPad) { + // 如果是触控板,那么直接使用触控板滑动距离 + stepX = Math.abs(e.wheelDeltaX) + stepY = Math.abs(e.wheelDeltaY) + } else { + stepX = stepY = mousewheelMoveStep + } let mx = 0 let my = 0 // 上移 if (dirs.includes(CONSTANTS.DIR.DOWN)) { - my = -step + my = -stepY } // 下移 if (dirs.includes(CONSTANTS.DIR.UP)) { - my = step + my = stepY } // 右移 if (dirs.includes(CONSTANTS.DIR.LEFT)) { - mx = step + mx = stepX } // 左移 if (dirs.includes(CONSTANTS.DIR.RIGHT)) { - mx = -step + mx = -stepX } this.translateXY(mx, my) } diff --git a/simple-mind-map/src/layouts/Base.js b/simple-mind-map/src/layouts/Base.js index 886daf36..63eb4e48 100644 --- a/simple-mind-map/src/layouts/Base.js +++ b/simple-mind-map/src/layouts/Base.js @@ -1,4 +1,4 @@ -import Node from '../core/render/node/Node' +import MindMapNode from '../core/render/node/MindMapNode' import { CONSTANTS, initRootNodePositionMap } from '../constants/constant' import Lru from '../utils/Lru' import { createUid } from '../utils/index' @@ -69,8 +69,37 @@ class Base { } } + // 获取节点编号信息 + getNumberInfo({ parent, ancestors, layerIndex, index }) { + // 编号 + const hasNumberPlugin = !!this.mindMap.numbers + const parentNumberStr = + hasNumberPlugin && parent && parent._node.number + ? parent._node.number + : '' + const newNumberStr = hasNumberPlugin + ? this.mindMap.numbers.getNodeNumberStr({ + ancestors, + layerIndex, + num: index + 1, + parentNumberStr + }) + : '' + return { + hasNumberPlugin, + newNumberStr + } + } + // 创建节点实例 - createNode(data, parent, isRoot, layerIndex) { + createNode(data, parent, isRoot, layerIndex, index, ancestors) { + // 编号 + const { hasNumberPlugin, newNumberStr } = this.getNumberInfo({ + parent, + ancestors, + layerIndex, + index + }) // 创建节点 const uid = data.data.uid let newNode = null @@ -90,15 +119,25 @@ class Base { } this.cacheNode(data._node.uid, newNode) this.checkIsLayoutChangeRerenderExpandBtnPlaceholderRect(newNode) + // 判断编号是否改变 + let isNumberChange = false + if (hasNumberPlugin) { + isNumberChange = this.mindMap.numbers.updateNumber( + newNode, + newNumberStr + ) + } // 主题或主题配置改变了、节点层级改变了,需要重新渲染节点文本等情况需要重新计算节点大小和布局 if ( this.checkIsNeedResizeSources() || isLayerTypeChange || - newNode.getData('resetRichText') + newNode.getData('resetRichText') || + isNumberChange ) { newNode.getSize() newNode.needLayout = true } + this.checkGetGeneralizationChange(newNode) } else if ( (this.lru.has(uid) || this.renderer.lastNodeCache[uid]) && !this.renderer.reRender @@ -129,19 +168,29 @@ class Base { const isResizeSource = this.checkIsNeedResizeSources() // 主题或主题配置改变了、节点层级改变了,需要重新渲染节点文本,节点数据改变了等情况需要重新计算节点大小和布局 const isNodeDataChange = lastData !== JSON.stringify(data.data) + // 判断编号是否改变 + let isNumberChange = false + if (hasNumberPlugin) { + isNumberChange = this.mindMap.numbers.updateNumber( + newNode, + newNumberStr + ) + } if ( isResizeSource || isNodeDataChange || isLayerTypeChange || - newNode.getData('resetRichText') + newNode.getData('resetRichText') || + isNumberChange ) { newNode.getSize() newNode.needLayout = true } + this.checkGetGeneralizationChange(newNode) } else { // 创建新节点 const newUid = uid || createUid() - newNode = new Node({ + newNode = new MindMapNode({ data, uid: newUid, renderer: this.renderer, @@ -149,7 +198,8 @@ class Base { draw: this.draw, layerIndex, isRoot, - parent: !isRoot ? parent._node : null + parent: !isRoot ? parent._node : null, + number: newNumberStr }) // uid保存到数据上,为了节点复用 data.data.uid = newUid @@ -177,6 +227,27 @@ class Base { return newNode } + // 检查概要节点是否需要更新 + checkGetGeneralizationChange(node) { + const generalizationList = node.getData('generalization') + if ( + generalizationList && + node._generalizationList && + node._generalizationList.length > 0 + ) { + node._generalizationList.forEach((item, index) => { + const gNode = item.generalizationNode + const oldData = gNode.getData() + const newData = generalizationList[index] + if (newData && JSON.stringify(oldData) !== JSON.stringify(newData)) { + gNode.nodeData.data = newData + gNode.getSize() + gNode.needLayout = true + } + }) + } + } + // 格式化节点位置 formatPosition(value, size, nodeSize) { if (typeof value === 'number') { diff --git a/simple-mind-map/src/layouts/CatalogOrganization.js b/simple-mind-map/src/layouts/CatalogOrganization.js index a5150232..bc02bff8 100644 --- a/simple-mind-map/src/layouts/CatalogOrganization.js +++ b/simple-mind-map/src/layouts/CatalogOrganization.js @@ -32,8 +32,8 @@ class CatalogOrganization extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) @@ -204,7 +204,8 @@ class CatalogOrganization extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } let len = node.children.length diff --git a/simple-mind-map/src/layouts/Fishbone.js b/simple-mind-map/src/layouts/Fishbone.js index 3eb38c97..1b986db0 100644 --- a/simple-mind-map/src/layouts/Fishbone.js +++ b/simple-mind-map/src/layouts/Fishbone.js @@ -36,9 +36,9 @@ class Fishbone extends Base { walk( this.renderer.renderTree, null, - (node, parent, isRoot, layerIndex, index) => { + (node, parent, isRoot, layerIndex, index, ancestors) => { // 创建节点 - let newNode = this.createNode(node, parent, isRoot, layerIndex) + let newNode = this.createNode(node, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) @@ -233,7 +233,8 @@ class Fishbone extends Base { return [] } let { top, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } let len = node.children.length diff --git a/simple-mind-map/src/layouts/LogicalStructure.js b/simple-mind-map/src/layouts/LogicalStructure.js index d866f1d0..703cace4 100644 --- a/simple-mind-map/src/layouts/LogicalStructure.js +++ b/simple-mind-map/src/layouts/LogicalStructure.js @@ -35,8 +35,8 @@ class LogicalStructure extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) newNode.sortIndex = sortIndex sortIndex++ // 根节点定位在画布中心位置 @@ -174,7 +174,8 @@ class LogicalStructure extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } let marginX = this.getMarginX(node.layerIndex + 1) @@ -215,7 +216,8 @@ class LogicalStructure extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } const { nodeUseLineStyle } = this.mindMap.themeConfig @@ -246,7 +248,8 @@ class LogicalStructure extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } const { diff --git a/simple-mind-map/src/layouts/MindMap.js b/simple-mind-map/src/layouts/MindMap.js index 8f616bc1..e8c37ba9 100644 --- a/simple-mind-map/src/layouts/MindMap.js +++ b/simple-mind-map/src/layouts/MindMap.js @@ -34,8 +34,8 @@ class MindMap extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex, index) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) @@ -213,7 +213,8 @@ class MindMap extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } let marginX = this.getMarginX(node.layerIndex + 1) @@ -256,7 +257,8 @@ class MindMap extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } const { nodeUseLineStyle } = this.mindMap.themeConfig @@ -296,7 +298,8 @@ class MindMap extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } const { diff --git a/simple-mind-map/src/layouts/OrganizationStructure.js b/simple-mind-map/src/layouts/OrganizationStructure.js index bc8bb12b..475bf7c6 100644 --- a/simple-mind-map/src/layouts/OrganizationStructure.js +++ b/simple-mind-map/src/layouts/OrganizationStructure.js @@ -33,8 +33,8 @@ class OrganizationStructure extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) @@ -182,7 +182,8 @@ class OrganizationStructure extends Base { return [] } let { left, top, width, height, expandBtnSize, isRoot } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } let x1 = left + width / 2 diff --git a/simple-mind-map/src/layouts/Timeline.js b/simple-mind-map/src/layouts/Timeline.js index c0626a71..38daa9ff 100644 --- a/simple-mind-map/src/layouts/Timeline.js +++ b/simple-mind-map/src/layouts/Timeline.js @@ -34,8 +34,8 @@ class Timeline extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex, index) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) @@ -232,7 +232,8 @@ class Timeline extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } let len = node.children.length diff --git a/simple-mind-map/src/layouts/VerticalTimeline.js b/simple-mind-map/src/layouts/VerticalTimeline.js index ac10d581..c11e9dbb 100644 --- a/simple-mind-map/src/layouts/VerticalTimeline.js +++ b/simple-mind-map/src/layouts/VerticalTimeline.js @@ -34,8 +34,8 @@ class VerticalTimeline extends Base { walk( this.renderer.renderTree, null, - (cur, parent, isRoot, layerIndex, index) => { - let newNode = this.createNode(cur, parent, isRoot, layerIndex) + (cur, parent, isRoot, layerIndex, index, ancestors) => { + let newNode = this.createNode(cur, parent, isRoot, layerIndex, index, ancestors) // 根节点定位在画布中心位置 if (isRoot) { this.setNodeCenter(newNode) @@ -234,7 +234,8 @@ class VerticalTimeline extends Base { return [] } let { expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } if (node.isRoot) { @@ -293,7 +294,8 @@ class VerticalTimeline extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } node.children.forEach((item, index) => { @@ -331,7 +333,8 @@ class VerticalTimeline extends Base { return [] } let { left, top, width, height, expandBtnSize } = node - if (!this.mindMap.opt.alwaysShowExpandBtn) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn || notShowExpandBtn) { expandBtnSize = 0 } node.children.forEach((item, index) => { diff --git a/simple-mind-map/src/plugins/AssociativeLine.js b/simple-mind-map/src/plugins/AssociativeLine.js index 51ee8b2f..a65ec273 100644 --- a/simple-mind-map/src/plugins/AssociativeLine.js +++ b/simple-mind-map/src/plugins/AssociativeLine.js @@ -68,7 +68,7 @@ class AssociativeLine { this.onNodeDragging = this.onNodeDragging.bind(this) this.onNodeDragend = this.onNodeDragend.bind(this) this.onControlPointMouseup = this.onControlPointMouseup.bind(this) - this.cancelCreateLine = this.cancelCreateLine.bind(this) + this.onBeforeDestroy = this.onBeforeDestroy.bind(this) // 节点树渲染完毕后渲染连接线 this.mindMap.on('node_tree_render_end', this.renderAllLines) @@ -77,7 +77,7 @@ class AssociativeLine { // 监听画布和节点点击事件,用于清除当前激活的连接线 this.mindMap.on('draw_click', this.onDrawClick) this.mindMap.on('node_click', this.onNodeClick) - this.mindMap.on('contextmenu', this.cancelCreateLine) + this.mindMap.on('contextmenu', this.onDrawClick) // 注册删除快捷键 this.mindMap.keyCommand.addShortcut('Del|Backspace', this.removeLine) // 注册添加连接线的命令 @@ -91,6 +91,8 @@ class AssociativeLine { this.mindMap.on('mouseup', this.onControlPointMouseup) // 缩放事件 this.mindMap.on('scale', this.onScale) + // 实例销毁事件 + this.mindMap.on('beforeDestroy', this.onBeforeDestroy) } // 解绑事件 @@ -99,7 +101,7 @@ class AssociativeLine { this.mindMap.off('data_change', this.renderAllLines) this.mindMap.off('draw_click', this.onDrawClick) this.mindMap.off('node_click', this.onNodeClick) - this.mindMap.off('contextmenu', this.cancelCreateLine) + this.mindMap.off('contextmenu', this.onDrawClick) this.mindMap.keyCommand.removeShortcut('Del|Backspace', this.removeLine) this.mindMap.command.remove('ADD_ASSOCIATIVE_LINE', this.addLine) this.mindMap.off('mousemove', this.onMousemove) @@ -107,6 +109,13 @@ class AssociativeLine { this.mindMap.off('node_dragend', this.onNodeDragend) this.mindMap.off('mouseup', this.onControlPointMouseup) this.mindMap.off('scale', this.onScale) + this.mindMap.off('beforeDestroy', this.onBeforeDestroy) + } + + // 实例销毁时清除关联线文字编辑框 + onBeforeDestroy() { + this.hideEditTextBox() + this.removeTextEditEl() } // 画布点击事件 @@ -116,7 +125,7 @@ class AssociativeLine { this.cancelCreateLine() } // 取消激活关联线 - if (this.isControlPointMousedown) { + if (!this.isControlPointMousedown) { this.clearActiveLine() } } @@ -214,7 +223,8 @@ class AssociativeLine { associativeLineWidth, associativeLineColor, associativeLineActiveWidth, - associativeLineActiveColor + associativeLineActiveColor, + associativeLineDasharray } = this.mindMap.themeConfig // 箭头 this.markerPath @@ -233,7 +243,7 @@ class AssociativeLine { .stroke({ width: associativeLineWidth, color: associativeLineColor, - dasharray: [6, 4] + dasharray: associativeLineDasharray || [6, 4] }) .fill({ color: 'none' }) path.plot(pathStr) @@ -332,8 +342,11 @@ class AssociativeLine { // 创建连接线 createLine(fromNode) { - let { associativeLineWidth, associativeLineColor } = - this.mindMap.themeConfig + let { + associativeLineWidth, + associativeLineColor, + associativeLineDasharray + } = this.mindMap.themeConfig if (this.isCreatingLine || !fromNode) return this.front() this.isCreatingLine = true @@ -343,7 +356,7 @@ class AssociativeLine { .stroke({ width: associativeLineWidth, color: associativeLineColor, - dasharray: [6, 4] + dasharray: associativeLineDasharray || [6, 4] }) .fill({ color: 'none' }) // 箭头 diff --git a/simple-mind-map/src/plugins/Demonstrate.js b/simple-mind-map/src/plugins/Demonstrate.js index b43382f6..7d557d77 100644 --- a/simple-mind-map/src/plugins/Demonstrate.js +++ b/simple-mind-map/src/plugins/Demonstrate.js @@ -22,6 +22,8 @@ const defaultConfig = { class Demonstrate { constructor(opt) { this.mindMap = opt.mindMap + // 是否正在演示中 + this.isInDemonstrate = false // 演示的步骤列表 this.stepList = [] // 当前所在步骤 @@ -57,6 +59,7 @@ class Demonstrate { } _enter() { + this.isInDemonstrate = true // 如果开启了性能模式,那么需要暂停 this.pausePerformanceMode() // 添加演示用的临时的样式 @@ -74,8 +77,16 @@ class Demonstrate { // 计算步骤数据 this.getStepList() // 收起所有节点 + let wait = false + if (this.mindMap.renderer.isRendering) { + wait = true + } this.mindMap.execCommand('UNEXPAND_ALL', false) const onRenderEnd = () => { + if (wait) { + wait = false + return + } this.mindMap.off('node_tree_render_end', onRenderEnd) // 聚焦到第一步 this.jump(this.currentStepIndex) @@ -102,6 +113,7 @@ class Demonstrate { this.mindMap.keyCommand.recovery() this.restorePerformanceMode() this.mindMap.emit('exit_demonstrate') + this.isInDemonstrate = false } // 暂停性能模式 diff --git a/simple-mind-map/src/plugins/Export.js b/simple-mind-map/src/plugins/Export.js index 79667f90..52413970 100644 --- a/simple-mind-map/src/plugins/Export.js +++ b/simple-mind-map/src/plugins/Export.js @@ -288,7 +288,8 @@ class Export { handleNodeExport(node) { if (node && node.getData('isActive')) { node.deactivate() - if (!this.mindMap.opt.alwaysShowExpandBtn && node.getData('expand')) { + const { alwaysShowExpandBtn, notShowExpandBtn } = this.mindMap.opt + if (!alwaysShowExpandBtn && !notShowExpandBtn && node.getData('expand')) { node.removeExpandBtn() } } diff --git a/simple-mind-map/src/plugins/RichText.js b/simple-mind-map/src/plugins/RichText.js index 962d5e58..2388c33f 100644 --- a/simple-mind-map/src/plugins/RichText.js +++ b/simple-mind-map/src/plugins/RichText.js @@ -13,7 +13,8 @@ import { nodeRichTextToTextWithWrap } from '../utils' import { CONSTANTS } from '../constants/constant' -import Node from '../core/render/node/Node' +import MindMapNode from '../core/render/node/MindMapNode' +import { Scope } from 'parchment' let extended = false @@ -143,14 +144,7 @@ class RichText { } extended = true - // 扩展quill的字体列表 - const FontAttributor = Quill.import('attributors/class/font') - FontAttributor.whitelist = fontFamilyList - Quill.register(FontAttributor, true) - - const FontStyle = Quill.import('attributors/style/font') - FontStyle.whitelist = fontFamilyList - Quill.register(FontStyle, true) + this.extendFont([]) // 扩展quill的字号列表 const SizeAttributor = Quill.import('attributors/class/size') @@ -162,6 +156,20 @@ class RichText { Quill.register(SizeStyle, true) } + // 扩展字体列表 + extendFont(list = [], cover = false) { + fontFamilyList = cover ? [...list] : [...fontFamilyList, ...list] + + // 扩展quill的字体列表 + const FontAttributor = Quill.import('attributors/class/font') + FontAttributor.whitelist = fontFamilyList + Quill.register(FontAttributor, true) + + const FontStyle = Quill.import('attributors/style/font') + FontStyle.whitelist = fontFamilyList + Quill.register(FontStyle, true) + } + // 显示文本编辑控件 showEditText({ node, rect, isInserting, isFromKeyDown, isFromScale }) { if (this.showTextEdit) { @@ -279,6 +287,13 @@ class RichText { this.cacheEditingText = '' } + // 删除文本编辑框元素 + removeTextEditEl() { + if (!this.textEditNode) return + const targetNode = this.mindMap.opt.customInnerElsAppendTo || document.body + targetNode.removeChild(this.textEditNode) + } + // 获取编辑区域的背景填充 getBackground(node) { const gradientStyle = node.style.merge('gradientStyle') @@ -361,9 +376,45 @@ class RichText { keyboard: { bindings: { enter: { - key: 13, + key: 'Enter', handler: function () { - // 覆盖默认的回车键换行 + // 覆盖默认的回车键,禁止换行 + } + }, + shiftEnter: { + key: 'Enter', + shiftKey: true, + handler: function (range, context) { + // 覆盖默认的换行,默认情况下新行的样式会丢失 + const lineFormats = Object.keys(context.format).reduce( + (formats, format) => { + if ( + this.quill.scroll.query(format, Scope.BLOCK) && + !Array.isArray(context.format[format]) + ) { + formats[format] = context.format[format] + } + return formats + }, + {} + ) + const delta = new Delta() + .retain(range.index) + .delete(range.length) + .insert('\n', lineFormats) + this.quill.updateContents(delta, Quill.sources.USER) + this.quill.setSelection(range.index + 1, Quill.sources.SILENT) + this.quill.focus() + Object.keys(context.format).forEach(name => { + if (lineFormats[name] != null) return + if (Array.isArray(context.format[name])) return + if (name === 'code' || name === 'link') return + this.quill.format( + name, + context.format[name], + Quill.sources.USER + ) + }) } }, tab: { @@ -377,7 +428,7 @@ class RichText { }, theme: 'snow' }) - // 拦截粘贴事件 + // 拦截复制事件,即Ctrl + c,去除多余的空行 this.quill.root.addEventListener('copy', event => { event.preventDefault() const sel = window.getSelection() @@ -441,16 +492,16 @@ class RichText { } }) // 拦截粘贴,只允许粘贴纯文本 - this.quill.clipboard.addMatcher(Node.TEXT_NODE, node => { - let style = this.getPasteTextStyle() - return new Delta().insert(this.formatPasteText(node.data), style) - }) + // this.quill.clipboard.addMatcher(Node.TEXT_NODE, node => { + // let style = this.getPasteTextStyle() + // return new Delta().insert(this.formatPasteText(node.data), style) + // }) this.quill.clipboard.addMatcher(Node.ELEMENT_NODE, (node, delta) => { let ops = [] let style = this.getPasteTextStyle() delta.ops.forEach(op => { // 过滤出文本内容,过滤掉换行 - if (op.insert && typeof op.insert === 'string' && op.insert !== '\n') { + if (op.insert && typeof op.insert === 'string') { ops.push({ attributes: { ...style }, insert: this.formatPasteText(op.insert) @@ -677,7 +728,7 @@ class RichText { 'textDecoration', 'color' ] - const nodeData = node instanceof Node ? node.getData() : node + const nodeData = node instanceof MindMapNode ? node.getData() : node for (let i = 0; i < list.length; i++) { if (nodeData[list[i]] !== undefined) { return true diff --git a/simple-mind-map/src/plugins/Search.js b/simple-mind-map/src/plugins/Search.js index 8e7727ac..65ba66d8 100644 --- a/simple-mind-map/src/plugins/Search.js +++ b/simple-mind-map/src/plugins/Search.js @@ -2,9 +2,11 @@ import { bfsWalk, getTextFromHtml, isUndef, - replaceHtmlText + replaceHtmlText, + formatGetNodeGeneralization } from '../utils/index' -import Node from '../core/render/node/Node' +import MindMapNode from '../core/render/node/MindMapNode' +import { CONSTANTS } from '../constants/constant' // 搜索插件 class Search { @@ -29,11 +31,14 @@ class Search { bindEvent() { this.onDataChange = this.onDataChange.bind(this) + this.onModeChange = this.onModeChange.bind(this) this.mindMap.on('data_change', this.onDataChange) + this.mindMap.on('mode_change', this.onModeChange) } unBindEvent() { this.mindMap.off('data_change', this.onDataChange) + this.mindMap.off('mode_change', this.onModeChange) } // 节点数据改变了,需要重新搜索 @@ -50,6 +55,19 @@ class Search { this.searchText = '' } + // 监听只读模式切换 + onModeChange(mode) { + const isReadonly = mode === CONSTANTS.MODE.READONLY + // 如果是由只读模式切换为非只读模式,需要清除只读模式下的节点高亮 + if ( + !isReadonly && + this.isSearching && + this.matchNodeList[this.currentIndex] + ) { + this.matchNodeList[this.currentIndex].closeHighlight() + } + } + // 搜索 search(text, callback = () => {}) { if (isUndef(text)) return this.endSearch() @@ -67,6 +85,12 @@ class Search { this.emitEvent() } + // 更新匹配节点列表 + updateMatchNodeList(list) { + this.matchNodeList = list + this.mindMap.emit('search_match_node_list_change', list) + } + // 结束搜索 endSearch() { if (!this.isSearching) return @@ -74,7 +98,7 @@ class Search { this.matchNodeList[this.currentIndex].closeHighlight() } this.searchText = '' - this.matchNodeList = [] + this.updateMatchNodeList([]) this.currentIndex = -1 this.notResetSearchText = false this.isSearching = false @@ -83,7 +107,7 @@ class Search { // 搜索匹配的节点 doSearch() { - this.matchNodeList = [] + this.updateMatchNodeList([]) this.currentIndex = -1 const { isOnlySearchCurrentRenderNodes } = this.mindMap.opt // 如果要搜索收起来的节点,那么要遍历渲染树而不是节点树 @@ -91,31 +115,72 @@ class Search { ? this.mindMap.renderer.root : this.mindMap.renderer.renderTree if (!tree) return + const matchList = [] bfsWalk(tree, node => { - let { richText, text } = isOnlySearchCurrentRenderNodes + let { richText, text, generalization } = isOnlySearchCurrentRenderNodes ? node.getData() : node.data if (richText) { text = getTextFromHtml(text) } if (text.includes(this.searchText)) { - this.matchNodeList.push(node) + matchList.push(node) } + // 概要节点 + const generalizationList = formatGetNodeGeneralization({ + generalization + }) + generalizationList.forEach(gNode => { + let { richText, text, uid } = gNode + if ( + isOnlySearchCurrentRenderNodes && + !this.mindMap.renderer.findNodeByUid(uid) + ) { + return + } + if (richText) { + text = getTextFromHtml(text) + } + if (text.includes(this.searchText)) { + matchList.push({ + data: gNode + }) + } + }) }) + this.updateMatchNodeList(matchList) } // 判断对象是否是节点实例 isNodeInstance(node) { - return node instanceof Node + return node instanceof MindMapNode } - // 搜索下一个,定位到下一个匹配节点 - searchNext(callback) { + // 搜索下一个或指定索引,定位到下一个匹配节点 + searchNext(callback, index) { if (!this.isSearching || this.matchNodeList.length <= 0) return - if (this.currentIndex < this.matchNodeList.length - 1) { - this.currentIndex++ + if ( + index !== undefined && + Number.isInteger(index) && + index >= 0 && + index < this.matchNodeList.length + ) { + this.currentIndex = index } else { - this.currentIndex = 0 + if (this.currentIndex < this.matchNodeList.length - 1) { + this.currentIndex++ + } else { + this.currentIndex = 0 + } + } + const { readonly } = this.mindMap.opt + // 只读模式下需要激活之前节点的高亮 + if (readonly) { + this.matchNodeList.forEach(node => { + if (this.isNodeInstance(node)) { + node.closeHighlight() + } + }) } const currentNode = this.matchNodeList[this.currentIndex] this.notResetSearchText = true @@ -126,10 +191,11 @@ class Search { this.mindMap.execCommand('GO_TARGET_NODE', uid, node => { if (!this.isNodeInstance(currentNode)) { this.matchNodeList[this.currentIndex] = node + this.updateMatchNodeList(this.matchNodeList) } callback() // 只读模式下节点无法激活,所以通过高亮的方式 - if (this.mindMap.opt.readonly) { + if (readonly) { node.highlight() } // 如果当前节点实例已经存在,则不会触发data_change事件,那么需要手动把标志复位 @@ -139,6 +205,11 @@ class Search { }) } + // 定位到指定搜索结果索引的节点 + jump(index, callback = () => {}) { + this.searchNext(callback, index) + } + // 替换当前节点 replace(replaceText, jumpNext = false) { if ( @@ -156,9 +227,10 @@ class Search { let text = this.getReplacedText(currentNode, this.searchText, replaceText) this.notResetSearchText = true currentNode.setText(text, currentNode.getData('richText'), true) - this.matchNodeList = this.matchNodeList.filter(node => { + const newList = this.matchNodeList.filter(node => { return currentNode !== node }) + this.updateMatchNodeList(newList) if (this.currentIndex > this.matchNodeList.length - 1) { this.currentIndex = -1 } else { diff --git a/simple-mind-map/src/plugins/Select.js b/simple-mind-map/src/plugins/Select.js index 30209a8a..d80865f6 100644 --- a/simple-mind-map/src/plugins/Select.js +++ b/simple-mind-map/src/plugins/Select.js @@ -180,7 +180,8 @@ class Select { let miny = Math.min(this.mouseDownY, this.mouseMoveY) let maxx = Math.max(this.mouseDownX, this.mouseMoveX) let maxy = Math.max(this.mouseDownY, this.mouseMoveY) - bfsWalk(this.mindMap.renderer.root, node => { + + const check = node => { let { left, top, width, height } = node let right = (left + width) * scaleX + translateX let bottom = (top + height) * scaleY + translateY @@ -201,6 +202,16 @@ class Select { this.mindMap.renderer.removeNodeFromActiveList(node) this.mindMap.renderer.emitNodeActiveEvent() } + } + + bfsWalk(this.mindMap.renderer.root, node => { + check(node) + // 概要节点 + if (node._generalizationList && node._generalizationList.length > 0) { + node._generalizationList.forEach(item => { + check(item.generalizationNode) + }) + } }) } diff --git a/simple-mind-map/src/plugins/associativeLine/associativeLineText.js b/simple-mind-map/src/plugins/associativeLine/associativeLineText.js index e130dc7a..e5edca8d 100644 --- a/simple-mind-map/src/plugins/associativeLine/associativeLineText.js +++ b/simple-mind-map/src/plugins/associativeLine/associativeLineText.js @@ -82,6 +82,13 @@ function showEditTextBox(g) { } } +// 删除文本编辑框元素 +function removeTextEditEl() { + if (!this.textEditNode) return + const targetNode = this.mindMap.opt.customInnerElsAppendTo || document.body + targetNode.removeChild(this.textEditNode) +} + // 处理画布缩放 function onScale() { this.hideEditTextBox() @@ -178,6 +185,7 @@ export default { styleText, onScale, showEditTextBox, + removeTextEditEl, hideEditTextBox, updateTextEditBoxPos, renderText, diff --git a/simple-mind-map/src/themes/default.js b/simple-mind-map/src/themes/default.js index 3b9edea0..d0baa737 100644 --- a/simple-mind-map/src/themes/default.js +++ b/simple-mind-map/src/themes/default.js @@ -42,6 +42,8 @@ export default { associativeLineActiveWidth: 8, // 关联线激活状态的颜色 associativeLineActiveColor: 'rgba(2, 167, 240, 1)', + // 关联线样式 + associativeLineDasharray: [6, 4], // 关联线文字颜色 associativeLineTextColor: 'rgb(51, 51, 51)', // 关联线文字大小 @@ -150,16 +152,6 @@ export default { } } -// 支持激活样式的属性 -// 简单来说,会改变节点大小的都不支持在激活时设置,为了性能考虑,节点切换激活态时不会重新计算节点大小 -export const supportActiveStyle = [ - 'fillColor', - 'borderColor', - 'borderWidth', - 'borderDasharray', - 'borderRadius' -] - // 检测主题配置是否是节点大小无关的 const nodeSizeIndependenceList = [ 'lineWidth', diff --git a/simple-mind-map/src/utils/index.js b/simple-mind-map/src/utils/index.js index dad28394..5f0cbf8c 100644 --- a/simple-mind-map/src/utils/index.js +++ b/simple-mind-map/src/utils/index.js @@ -14,11 +14,12 @@ export const walk = ( afterCallback, isRoot, layerIndex = 0, - index = 0 + index = 0, + ancestors = [] ) => { let stop = false if (beforeCallback) { - stop = beforeCallback(root, parent, isRoot, layerIndex, index) + stop = beforeCallback(root, parent, isRoot, layerIndex, index, ancestors) } if (!stop && root.children && root.children.length > 0) { let _layerIndex = layerIndex + 1 @@ -30,11 +31,13 @@ export const walk = ( afterCallback, false, _layerIndex, - nodeIndex + nodeIndex, + [...ancestors, root] ) }) } - afterCallback && afterCallback(root, parent, isRoot, layerIndex, index) + afterCallback && + afterCallback(root, parent, isRoot, layerIndex, index, ancestors) } // 广度优先遍历树 @@ -948,7 +951,11 @@ export const addDataToAppointNodes = (appointNodes, data = {}) => { // 给指定的节点列表树数据添加uid,会修改原数据 // createNewId默认为false,即如果节点不存在uid的话,会创建新的uid。如果传true,那么无论节点数据原来是否存在uid,都会创建新的uid -export const createUidForAppointNodes = (appointNodes, createNewId = false, handle = null) => { +export const createUidForAppointNodes = ( + appointNodes, + createNewId = false, + handle = null +) => { const walk = list => { list.forEach(node => { if (!node.data) { @@ -1073,14 +1080,15 @@ export const getDataFromClipboard = async () => { let text = null let img = null if (navigator.clipboard) { - text = await navigator.clipboard.readText() const items = await navigator.clipboard.read() if (items && items.length > 0) { for (const clipboardItem of items) { for (const type of clipboardItem.types) { if (/^image\//.test(type)) { img = await clipboardItem.getType(type) - break + } else if (type === 'text/plain') { + const blob = await clipboardItem.getType(type) + text = await blob.text() } } } @@ -1498,6 +1506,7 @@ export const fullScreen = element => { // 退出全屏 export const exitFullScreen = () => { + if (!document.fullscreenElement) return if (document.exitFullscreen) { document.exitFullscreen() } else if (document.webkitExitFullscreen) { diff --git a/web/package.json b/web/package.json index 6d38c821..38cb1c55 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "thoughts", - "version": "0.10.5", + "version": "0.11.0", "private": true, "description": "一个简洁的思维导图", "author": "街角小林<1013335014@qq.com>", @@ -8,10 +8,7 @@ "serve": "vue-cli-service serve", "build": "vue-cli-service build && node ../copy.js", "lint": "vue-cli-service lint", - "autoBuildDoc": "node ./scripts/autoBuildDoc.js", - "buildDoc": "node ./scripts/buildDoc.js", "buildLibrary": "node ./scripts/updateVersion.js && vue-cli-service build --mode library --target lib --name simpleMindMap ../simple-mind-map/full.js --dest ../simple-mind-map/dist && esbuild ../simple-mind-map/full.js --bundle --external:buffer --format=esm --outfile=../simple-mind-map/dist/simpleMindMap.esm.js && esbuild ../simple-mind-map/full.js --bundle --minify --external:buffer --format=esm --outfile=../simple-mind-map/dist/simpleMindMap.esm.min.js", - "createNodeImageList": "node ./scripts/createNodeImageList.js", "electron:build": "vue-cli-service electron:build", "electron:build-all": "vue-cli-service electron:build -p never -mwl", "electron:build-linux": "vue-cli-service electron:build -p never -l", @@ -20,7 +17,8 @@ "electron:serve": "vue-cli-service electron:serve", "format": "prettier --write src/* src/*/* src/*/*/* src/*/*/*/*", "postinstall": "electron-builder install-app-deps", - "postuninstall": "electron-builder install-app-deps" + "postuninstall": "electron-builder install-app-deps", + "createNodeImageList": "node ./scripts/createNodeImageList.js" }, "main": "background.js", "dependencies": { diff --git a/web/scripts/autoBuildDoc.js b/web/scripts/autoBuildDoc.js deleted file mode 100644 index e1fcc090..00000000 --- a/web/scripts/autoBuildDoc.js +++ /dev/null @@ -1,38 +0,0 @@ -const chokidar = require('chokidar') -const path = require('path') -const fs = require('fs') -const { exec } = require('node:child_process') -const { transformMdToVue } = require('./transformMdToVue') - -const reBuildAll = () => { - exec( - 'node ./buildDoc.js', - { - cwd: path.resolve(__dirname) - }, - (error, msg) => { - console.log(error, msg) - } - ) -} - -const buildOne = file => { - let content = fs.readFileSync(file, 'utf-8') - let doc = transformMdToVue(content) - let destPath = path.join(path.dirname(file), './index.vue') - fs.writeFileSync(destPath, doc) -} - -chokidar - .watch(path.join(__dirname, '../src/pages/Doc/'), { - ignoreInitial: true - }) - .on('all', (event, file) => { - if (/\.md$/.test(file)) { - if (event === 'change') { - buildOne(file) - } else { - reBuildAll() - } - } - }) diff --git a/web/scripts/buildDoc.js b/web/scripts/buildDoc.js deleted file mode 100644 index 91f41cef..00000000 --- a/web/scripts/buildDoc.js +++ /dev/null @@ -1,85 +0,0 @@ -// 编译文档 -const path = require('path') -const fs = require('fs') -const { transformMdToVue } = require('./transformMdToVue') - -// 文档语言种类 -let langList = ['zh', 'en'] - -// 开始转换 -const transform = (dir, routerList) => { - let dirs = fs.readdirSync(dir) - dirs.forEach(item => { - let cur = path.join(dir, item) - if (fs.statSync(cur).isDirectory()) { - compilerDir(cur, item, routerList) - } - }) -} - -// 编译某种语言下的文档 -const compilerDir = (dir, dirName, routerList) => { - let files = fs.readdirSync(dir) - files.forEach(file => { - if (file.endsWith('.md')) { - compilerFile(dir, file, dirName, routerList) - } - }) -} - -// 编译具体的文档 -const compilerFile = (dir, file, dirName, routerList) => { - let filePath = path.join(dir, file) - let destPath = path.join(dir, './index.vue') - let content = fs.readFileSync(filePath, 'utf-8') - let title = /(^|\n\r)\s*#\s+([^\n\r]+)/g.exec(content) - if (title && title[2]) { - addRouter(dirName, routerList, title[2]) - } - let doc = transformMdToVue(content) - fs.writeFileSync(destPath, doc) -} - -// 收集文档路由 -const addRouter = (item, routerList, title) => { - routerList.push({ - path: item, - title - }) -} - -// 创建路由 -const createRouter = () => { - let content = ` - export default ${JSON.stringify( - routerTypeList.map(item => { - return { - lang: item.lang, - children: item.routerList - } - }) - )} - ` - fs.writeFileSync( - path.join(__dirname, '../src/pages/Doc/routerList.js'), - content - ) -} - -// 创建目录列表 -const createCatalogList = () => {} - -// 开始编译 -let routerTypeList = [] -langList.forEach(lang => { - let dir = path.join(__dirname, '../src/pages/Doc/', `./${lang}/`) - let routerList = [] - transform(dir, routerList) - routerTypeList.push({ - lang, - routerList - }) -}) -// 创建路由 -createRouter() -console.log('编译完成') diff --git a/web/src/assets/avatar/张文建.jpg b/web/src/assets/avatar/张文建.jpg new file mode 100644 index 00000000..93ed868d 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..24988937 Binary files /dev/null and b/web/src/assets/avatar/炫.jpg differ diff --git a/web/src/assets/img/docs/iconList.jpg b/web/src/assets/img/docs/iconList.jpg deleted file mode 100644 index 69dc7bad..00000000 Binary files a/web/src/assets/img/docs/iconList.jpg and /dev/null differ diff --git a/web/src/assets/img/docs/手绘风格.png b/web/src/assets/img/docs/手绘风格.png deleted file mode 100644 index 4798d2a8..00000000 Binary files a/web/src/assets/img/docs/手绘风格.png and /dev/null differ diff --git a/web/src/assets/img/docs/标记.jpg b/web/src/assets/img/docs/标记.jpg deleted file mode 100644 index c7146635..00000000 Binary files a/web/src/assets/img/docs/标记.jpg and /dev/null differ diff --git a/web/src/assets/img/docs/错误.jpg b/web/src/assets/img/docs/错误.jpg deleted file mode 100644 index c36588bd..00000000 Binary files a/web/src/assets/img/docs/错误.jpg and /dev/null differ diff --git a/web/src/assets/img/index/block1.png b/web/src/assets/img/index/block1.png deleted file mode 100644 index f1b6326b..00000000 Binary files a/web/src/assets/img/index/block1.png and /dev/null differ diff --git a/web/src/assets/img/index/block3.png b/web/src/assets/img/index/block3.png deleted file mode 100644 index 68d38820..00000000 Binary files a/web/src/assets/img/index/block3.png and /dev/null differ diff --git a/web/src/assets/img/index/block4.png b/web/src/assets/img/index/block4.png deleted file mode 100644 index 5f2ff2d0..00000000 Binary files a/web/src/assets/img/index/block4.png and /dev/null differ diff --git a/web/src/assets/img/index/split.png b/web/src/assets/img/index/split.png deleted file mode 100644 index 55bc2efc..00000000 Binary files a/web/src/assets/img/index/split.png and /dev/null differ diff --git a/web/src/background.js b/web/src/background.js index ff2615a1..691cc092 100644 --- a/web/src/background.js +++ b/web/src/background.js @@ -32,7 +32,7 @@ async function createMainWindow() { enableRemoteModule: true, contextIsolation: true, preload: path.join(__dirname, 'preload.js') - } + } }) if (process.env.WEBPACK_DEV_SERVER_URL) { @@ -40,8 +40,8 @@ async function createMainWindow() { await mainWindow.loadURL( process.env.WEBPACK_DEV_SERVER_URL + '/#/workbenche' ) - // if (!process.env.IS_TEST) mainWindow.webContents.openDevTools() - } else { + if (!process.env.IS_TEST) mainWindow.webContents.openDevTools() + } else { // 非开发环境时加载index.html mainWindow.loadURL('app://./index.html/#/workbenche') } diff --git a/web/src/config/en.js b/web/src/config/en.js index 8ab259f5..5a5f0968 100644 --- a/web/src/config/en.js +++ b/web/src/config/en.js @@ -83,6 +83,10 @@ export const borderDasharrayList = [ { name: 'Dotted6', value: '1, 5' + }, + { + name: 'Dotted7', + value: '6, 4' } ] @@ -493,3 +497,63 @@ export const downTypeList = [ desc: 'Plain text file' } ] + +// 编号类型列表 +export const numberTypeList = [ + { + name: 'None', + value: '' + }, + { + name: '1, 2, 3', + value: 1 + }, + { + name: '1., 2., 3.', + value: 2 + }, + { + name: '(1), (2), (3)', + value: 3 + }, + { + name: 'a., b., c.', + value: 4 + }, + { + name: 'A., B., C.', + value: 5 + }, + { + name: 'i., ii., iii.', + value: 6 + }, + { + name: 'I., II., III.', + value: 7 + }, + { + name: '一、, 二、, 三、', + value: 8 + } +] + +// 编号层级列表 +export const numberLevelList = [ + { + name: '1 level', + value: 1 + }, + { + name: '2 level', + value: 2 + }, + { + name: '3 level', + value: 3 + }, + { + name: 'All level', + value: 0 + } +] diff --git a/web/src/config/index.js b/web/src/config/index.js index 9b8e115d..32affc86 100644 --- a/web/src/config/index.js +++ b/web/src/config/index.js @@ -19,7 +19,9 @@ import { backgroundSizeList as backgroundSizeListZh, downTypeList as downTypeListZh, shapeListMap as shapeListMapZh, - lineStyleMap as lineStyleMapZh + lineStyleMap as lineStyleMapZh, + numberTypeList as numberTypeListZh, + numberLevelList as numberLevelListZh } from './zh' import { fontFamilyList as fontFamilyListEn, @@ -32,7 +34,9 @@ import { shapeList as shapeListEn, sidebarTriggerList as sidebarTriggerListEn, backgroundSizeList as backgroundSizeListEn, - downTypeList as downTypeListEn + downTypeList as downTypeListEn, + numberTypeList as numberTypeListEn, + numberLevelList as numberLevelListEn } from './en' const fontFamilyList = { @@ -100,6 +104,16 @@ const downTypeList = { en: downTypeListEn } +const numberTypeList = { + zh: numberTypeListZh, + en: numberTypeListEn +} + +const numberLevelList = { + zh: numberLevelListZh, + en: numberLevelListEn +} + export { fontSizeList, lineHeightList, @@ -121,5 +135,7 @@ export { shapeList, shapeListMap, sidebarTriggerList, - downTypeList + downTypeList, + numberTypeList, + numberLevelList } diff --git a/web/src/config/zh.js b/web/src/config/zh.js index 756bfe6d..3985d124 100644 --- a/web/src/config/zh.js +++ b/web/src/config/zh.js @@ -133,6 +133,10 @@ export const borderDasharrayList = [ { name: '虚线6', value: '1, 5' + }, + { + name: '虚线7', + value: '6, 4' } ] @@ -587,3 +591,63 @@ export const downTypeList = [ desc: '纯文本文件' } ] + +// 编号类型列表 +export const numberTypeList = [ + { + name: '无编号', + value: '' + }, + { + name: '1, 2, 3', + value: 1 + }, + { + name: '1., 2., 3.', + value: 2 + }, + { + name: '(1), (2), (3)', + value: 3 + }, + { + name: 'a., b., c.', + value: 4 + }, + { + name: 'A., B., C.', + value: 5 + }, + { + name: 'i., ii., iii.', + value: 6 + }, + { + name: 'I., II., III.', + value: 7 + }, + { + name: '一、, 二、, 三、', + value: 8 + } +] + +// 编号层级列表 +export const numberLevelList = [ + { + name: '编号首层', + value: 1 + }, + { + name: '编号前两层', + value: 2 + }, + { + name: '编号前三层', + value: 3 + }, + { + name: '编号所有层', + value: 0 + } +] diff --git a/web/src/electron/fileHandle.js b/web/src/electron/fileHandle.js index 74cb60f1..2001fa7b 100644 --- a/web/src/electron/fileHandle.js +++ b/web/src/electron/fileHandle.js @@ -154,7 +154,7 @@ export const bindFileHandleEvent = ({ mainWindow }) => { fs.readFile(file, { encoding: 'utf-8' }, (err, data) => { resolve({ name: path.parse(file).name, - content: JSON.parse(data) + content: data ? JSON.parse(data) : null }) }) }) diff --git a/web/src/electron/otherHandle.js b/web/src/electron/otherHandle.js index 098fea7b..ffe06437 100644 --- a/web/src/electron/otherHandle.js +++ b/web/src/electron/otherHandle.js @@ -1,4 +1,5 @@ import { BrowserWindow, ipcMain, shell } from 'electron' +import { saveClientConfig, getClientConfig } from './storage' export const bindOtherHandleEvent = () => { // 处理缩放事件 @@ -14,4 +15,15 @@ export const bindOtherHandleEvent = () => { ipcMain.on('openUrl', (event, url) => { shell.openPath(url) }) + + // 保存客户端配置 + ipcMain.handle('saveClientConfig', async (event, config) => { + const res = await saveClientConfig(config) + return res + }) + + // 获取客户端配置 + ipcMain.handle('getClientConfig', () => { + return getClientConfig() + }) } diff --git a/web/src/electron/preload.js b/web/src/electron/preload.js index 044a30dd..1dd5dfb1 100644 --- a/web/src/electron/preload.js +++ b/web/src/electron/preload.js @@ -26,5 +26,7 @@ contextBridge.exposeInMainWorld('electronAPI', { selectOpenFile: () => ipcRenderer.send('selectOpenFile'), copyFile: file => ipcRenderer.invoke('copyFile', file), selectFile: () => ipcRenderer.invoke('selectFile'), - openPath: path => ipcRenderer.invoke('openPath', path) + openPath: path => ipcRenderer.invoke('openPath', path), + saveClientConfig: config => ipcRenderer.invoke('saveClientConfig', config), + getClientConfig: () => ipcRenderer.invoke('getClientConfig') }) diff --git a/web/src/electron/storage.js b/web/src/electron/storage.js index fe42683d..320a3988 100644 --- a/web/src/electron/storage.js +++ b/web/src/electron/storage.js @@ -1,6 +1,7 @@ import storage from 'electron-json-storage' export const RECENT_FILE_LIST = 'recentFileList' +export const CLIENT_CONFIG = 'client_config' // 保存到最近文件 export const saveToRecent = file => { @@ -107,3 +108,22 @@ export const replaceFileInRecent = (oldFile, newFile) => { }) }) } + +// 保存配置 +export const saveClientConfig = config => { + return new Promise((resolve, reject) => { + storage.set(CLIENT_CONFIG, config, err => { + if (err) { + reject(err) + } else { + resolve() + } + }) + }) +} + +// 获取配置 +export const getClientConfig = () => { + const res = storage.getSync(CLIENT_CONFIG) + return res +} diff --git a/web/src/lang/en_us.js b/web/src/lang/en_us.js index 44521c75..e2636fa3 100644 --- a/web/src/lang/en_us.js +++ b/web/src/lang/en_us.js @@ -111,7 +111,8 @@ export default { copyToTxt: 'Txt', copyToPng: 'Png', copySuccess: 'Copy success', - copyFail: 'Copy fail' + copyFail: 'Copy fail', + number: 'Number child nodes' }, count: { words: 'Words', @@ -306,7 +307,8 @@ export default { yes: 'Yes', no: 'No', exportError: 'Export failed', - dragTip: 'Release here to import the file' + dragTip: 'Release here to import the file', + emptyTip: 'The file content is empty, use default data rendering' }, mouseAction: { tip1: @@ -319,7 +321,8 @@ export default { replacePlaceholder: 'Please enter replacement content', replace: 'Replace', replaceAll: 'Replace all', - cancel: 'Cancel' + cancel: 'Cancel', + noResult: 'No result' }, nodeIconSidebar: { title: 'Icon/Sticker', diff --git a/web/src/lang/zh_cn.js b/web/src/lang/zh_cn.js index 971b4fb4..328e4f27 100644 --- a/web/src/lang/zh_cn.js +++ b/web/src/lang/zh_cn.js @@ -111,7 +111,8 @@ export default { copyToTxt: 'Txt', copyToPng: '图片', copySuccess: '复制成功', - copyFail: '复制失败' + copyFail: '复制失败', + number: '编号其子节点' }, count: { words: '字数', @@ -300,7 +301,8 @@ export default { yes: '是', no: '否', exportError: '导出失败', - dragTip: '在此释放以导入该文件' + dragTip: '在此释放以导入该文件', + emptyTip: '文件内容为空,使用默认数据渲染' }, mouseAction: { tip1: '当前:左键拖动画布,右键框选节点', @@ -311,7 +313,8 @@ export default { replacePlaceholder: '请输入替换内容', replace: '替换', replaceAll: '全部替换', - cancel: '取消' + cancel: '取消', + noResult: '暂无结果' }, nodeIconSidebar: { title: '图标/贴纸', diff --git a/web/src/pages/Doc.vue b/web/src/pages/Doc.vue new file mode 100644 index 00000000..b15a6445 --- /dev/null +++ b/web/src/pages/Doc.vue @@ -0,0 +1,24 @@ +T + + diff --git a/web/src/pages/Doc/Index.vue b/web/src/pages/Doc/Index.vue deleted file mode 100644 index 22f74314..00000000 --- a/web/src/pages/Doc/Index.vue +++ /dev/null @@ -1,196 +0,0 @@ - - - - - diff --git a/web/src/pages/Doc/Template.vue b/web/src/pages/Doc/Template.vue deleted file mode 100644 index ffd0af76..00000000 --- a/web/src/pages/Doc/Template.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/catalogList.js b/web/src/pages/Doc/catalogList.js deleted file mode 100644 index df3770e3..00000000 --- a/web/src/pages/Doc/catalogList.js +++ /dev/null @@ -1,119 +0,0 @@ -import routerList from './routerList' - -let langList = [ - { - name: '中文', - path: 'zh' - }, - { - name: 'English', - path: 'en' - } -] -let StartList = ['introduction', 'start', 'deploy', 'client', 'translate', 'changelog'] -let CourseList = new Array(29).fill(0).map((_, index) => { - return 'course' + (index + 1) -}) -let APIList = [ - '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', - 'notation', - 'outerFrame', - 'xmind', - 'markdown', - 'utils' -] -let helpList = new Array(6).fill(0).map((_, index) => { - return 'help' + (index + 1) -}) - -const createList = (lang, list) => { - let langRouter = routerList.find(item => { - return item.lang === lang - }) - let children = langRouter.children - return list - .filter(item => { - return children.find(child => { - return child.path === item - }) - }) - .map(item => { - return { - path: item, - name: children.find(child => { - return child.path === item - }).title - } - }) -} - -export default { - zh: [ - { - groupName: '开始', - type: 'doc', - list: createList('zh', StartList) - }, - { - groupName: '教程', - type: 'doc', - list: createList('zh', CourseList) - }, - { - groupName: 'API', - type: 'doc', - list: createList('zh', APIList) - }, - { - groupName: '使用帮助', - type: 'help', - list: createList('zh', helpList) - } - ], - en: [ - { - groupName: 'Start', - type: 'doc', - list: createList('en', StartList) - }, - { - groupName: 'Course', - type: 'doc', - list: createList('zh', CourseList) - }, - { - groupName: 'API', - type: 'doc', - list: createList('en', APIList) - } - ] -} - -export { - langList -} \ No newline at end of file diff --git a/web/src/pages/Doc/components/CatalogBar.vue b/web/src/pages/Doc/components/CatalogBar.vue deleted file mode 100644 index d6106ade..00000000 --- a/web/src/pages/Doc/components/CatalogBar.vue +++ /dev/null @@ -1,235 +0,0 @@ - - - - - diff --git a/web/src/pages/Doc/components/Header.vue b/web/src/pages/Doc/components/Header.vue deleted file mode 100644 index 251e4bbf..00000000 --- a/web/src/pages/Doc/components/Header.vue +++ /dev/null @@ -1,213 +0,0 @@ - - - - - diff --git a/web/src/pages/Doc/components/Sidebar.vue b/web/src/pages/Doc/components/Sidebar.vue deleted file mode 100644 index c9a16725..00000000 --- a/web/src/pages/Doc/components/Sidebar.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - - - diff --git a/web/src/pages/Doc/en/associativeLine/index.md b/web/src/pages/Doc/en/associativeLine/index.md deleted file mode 100644 index de273adc..00000000 --- a/web/src/pages/Doc/en/associativeLine/index.md +++ /dev/null @@ -1,108 +0,0 @@ -# AssociativeLine plugin - -> v0.4.5+ - -> The function of adjusting associated line control points is supported from v0.4.6+ - -> Relevance support for text editing starting from v0.5.11+ - -This plugin is used to support the addition of associative lines. - -## Register - -```js -import MindMap from 'simple-mind-map' -import AssociativeLine from 'simple-mind-map/src/plugins/AssociativeLine.js' -// import AssociativeLine from 'simple-mind-map/src/AssociativeLine.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(AssociativeLine) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.associativeLine`. - -## Config - -Support for modifying the thickness and color of associated lines, divided into default and active states. The configuration is as follows: - -- `associativeLineWidth`: The thickness of the default state of the associated line. The default value is `2` - -- `associativeLineColor`: Color of the default state of associative lines. The default value is `rgb(51, 51, 51)` - -- `associativeLineActiveWidth`: The thickness of the active state of the associated line. The default value is `8` - -- `associativeLineActiveColor`: The color of the active state of the associated line. The default value is `rgba(2, 167, 240, 1)` - -The configuration is provided as a theme, so if you want to modify these four properties, you can modify them using the `mindMap.setThemeConfig(config)` method. - -## Props - -### mindMap.associativeLine.lineList - -Currently, all connection line data, array types, and each item of the array are also an array: - -```js -[ - path, // Connector node - clickPath, // Invisible click line node - node, // Start node - toNode // Target node -] -``` - -### mindMap.associativeLine.activeLine - -The currently active connection line and array type are the same as the structure of each item in the `lineList` array. - -## Methods - -### cancelCreateLine() - -> v0.10.5+ - -Cancel the creation of the associated line midway. - -### renderAllLines() - -Re-render all associated lines. - -### removeAllLines() - -Remove all associated lines. - -### createLineFromActiveNode() - -Create an associated line from the current active node. If there are multiple active nodes, the default is the first node. - -After calling this method, an association line will be rendered from the first active node to the current mouse real-time position. When a target node is clicked, it represents completion of creation. An association line will be rendered between the first active node and the clicked node. - -### createLine(fromNode) - -Creates an associative line starting at the specified node. - -After calling this method, an association line will be rendered from the specified node to the current mouse real-time position. When a target node is clicked, it represents completion of creation, and an association line will be rendered between the specified node and the clicked node. - -### addLine(fromNode, toNode) - -Add an associative line directly. - -Calling this method will directly create an association line from the `fromNode` to the `toNode` node. - -### removeLine() - -Deletes the currently active associative line. Clicking on an associated line is considered active. - -### clearActiveLine() - -Clears the active state of the currently active association line. - -### front() - -> v0.8.0+ - -The top-level display of the associated line. - -### back() - -> v0.8.0+ - -The associated line returns to its original level. \ No newline at end of file diff --git a/web/src/pages/Doc/en/associativeLine/index.vue b/web/src/pages/Doc/en/associativeLine/index.vue deleted file mode 100644 index 05ba9a43..00000000 --- a/web/src/pages/Doc/en/associativeLine/index.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/batchExecution/index.md b/web/src/pages/Doc/en/batchExecution/index.md deleted file mode 100644 index 750cbfed..00000000 --- a/web/src/pages/Doc/en/batchExecution/index.md +++ /dev/null @@ -1,16 +0,0 @@ -# batchExecution instance - -The `batchExecution` is used to batch asynchronously perform some operations, -and if a certain operation is called multiple times at the same time, it will -only be executed once in the next event loop. Can be obtained through -`mindMap.batchExecution` - -## Method - -### push(name, fn) - -Add task. - -`name`: task name - -`fn`: task \ No newline at end of file diff --git a/web/src/pages/Doc/en/batchExecution/index.vue b/web/src/pages/Doc/en/batchExecution/index.vue deleted file mode 100644 index fb57dd61..00000000 --- a/web/src/pages/Doc/en/batchExecution/index.vue +++ /dev/null @@ -1,25 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/changelog/index.md b/web/src/pages/Doc/en/changelog/index.md deleted file mode 100644 index dd12f00f..00000000 --- a/web/src/pages/Doc/en/changelog/index.md +++ /dev/null @@ -1,1591 +0,0 @@ -# Changelog - -## 0.10.5 - -> 2024.8.2 - -Fix: - -> 1.Fixed the issue of error when dragging the scrollbar after enabling the scrollbar plugin and performance mode; -> -> 2.Fixed the issue where the rich text style of nodes was not updated when copying across levels; -> -> 3.Fixed the issue where the demo plugin did not work properly after enabling performance mode; -> -> 4.Fixed the issue of canvas jumping when the first rendering canvas is triggered after adjusting the canvas size; - -New: - -> 1.Move the node and change the node hierarchy. Nodes that have set custom rich text styles do not need to update the styles; -> -> 2.Support clicking on the canvas to cancel the creation of associated lines; -> -> 3.Automatically expand a node by moving it or copying it to a collapsed node; - -Demo: - -> 1.When the number of subordinate nodes is greater than 100, the collapse button displays ellipsis; -> -> 2.No longer write data to the browser cache when opening local file editing, to avoid the problem of local file data loss caused by triggering storage restrictions; -> -> 3.If the local file is not saved, close the page and add an interception prompt; -> -> 4.Fixed the issue in the outline where clicking and dragging a node would trigger a file drag mask on the page; - -## 0.10.4 - -> 2024.7.25 - -This update mainly adds a performance mode. When enabled, only nodes within the visible area of the canvas will be rendered, and nodes outside the area will be deleted from the canvas, improving usability in the case of large data volumes (1000+nodes). The first rendering time for 2000 nodes has been reduced from 5s+to 0.5s. However, this also brings some problems, such as a slight lag when dragging the animation canvas, as nodes will be rendered in real time, and exporting images will be slower because all nodes need to be rendered first, as well as other temporarily undiscovered issues. - -Fix: - -> 1.Delete useless code and fix the issue where the mouse hover node reports an error and does not display the expand and collapse buttons; - -## 0.10.3 - -> 2024.7.19 - -Updates that require special attention: - -1.Node tag data structure update - -The node tag data has been changed from a string array to an object array, mainly to support setting the style of a single tag. The current node tag data structure is as follows: - -```js -{ - tag: ['tag'] -} -``` - -Change to the following: - -```js -{ - tag: [ - { - text: 'tag', - style: {} - } - ] -} -``` - -2.Related to mathematical formulas - -The mathematical formula plugin Formula defaults to importing styles from the Katex library, so there is no need to manually import them in the application. At the same time, the path of the Katex library font file needs to be configured through the katexFontPath instantiation option. - -Fix: - -> 1.Fix the issue where the isRoot and parent attributes of node instances obtained through methods customCreateNodeContent and createNodePrefixContent are both null; -> -> 2.Fixed the issue where the last edited node would enter editing mode when zooming in and out of the canvas using the scroll wheel or shortcut keys after editing the node text, and the mind map shortcut keys would become invalid; -> -> 3.Fixed the issue where multiple nodes can be selected simultaneously, allowing unlimited insertion of summaries; - -New: - -> 1.Modified the data type of the node tag field tag to support setting a single node tag style; -> -> 2.Add instantiation options for displaying the location (Equivalent to node text) of node labels; -> -> 3.Two callback parameters have been added to the node_tag_click event; -> -> 4.When copying, cutting, or moving multiple nodes, operate them in the order they are on the nodes, rather than in the order they are activated; -> -> 5.If a formula plugin is registered and there are formulas in the node, then when exporting SVG, it is necessary to add styles from the Katex library; -> -> 6.Support instantiation options for custom katex library rendering modes; -> -> 7.The formula plugin defaults to importing styles from the Katex library; -> -> 8.Add instantiation options for custom katex library font file paths; -> -> 9.Add instantiation options for setting the inner margin of the outer frame; - -Demo: - -> 1.Support clicking on node tags to modify text and color; -> -> 2.Remove the logic of introducing formula library styles; -> -> 3.Support configuring the inner margin of the outer frame; - -## 0.10.2 / 0.10.2-fix.1 - -> 2024.7.3 - -Fix: - -> 1.Fix the issue of node text and custom content with the createNodePrefixContent option not being vertically centered; -> -> 2.Fix the issue of selecting node text when dragging the endpoints of associated lines; - -New: - -> 1.Add external frame plugins; -> -> 2.Add a leftward logical structure diagram; -> -> 3.The mini map supports dragging and dropping view boxes to adjust the canvas position; -> -> 4.Add an instantiation option to intercept nodes and start dragging them; -> -> 5.Prevent default behavior for mousedown, mousemove, drag, and node.mousedown events; -> -> 6.The beforeDragEnd option of the drag plugin adds a callback parameter to the list of nodes that are currently being dragged; -> -> 7.Add an instantiation option that prohibits reading and writing to the user's clipboard; -> -> 8.Independently separate the canvas automatic movement function of the Select plugin to solve the problem of the Drag plugin being unable to use the canvas automatic movement function without registering the Select plugin; -> -> 9.Add callback parameters to the edited node for the hide_text_edit event; -> -> 10.Activate the node when clicking on the hyperlink icon; Add instantiation options for custom hyperlink redirection; - -Demo: - -> 1.Color selection supports transparency selection; -> -> 2.Add external frame setting function; -> -> 3.Add copy to clipboard function in the right-click menu; -> -> 4.Add a leftward logical structure diagram; -> -> 5.Fix the issue where the event does not end after the mouse is moved out of the mini map and then released; -> -> 6.The mini map supports dragging and dropping view boxes to adjust the canvas position; - -## 0.10.1 - -Fix: - -> 1.Fix the issue where the TouchEvent plugin triggers node input when clicking twice at different positions; -> -> 2.Fix / shortcut the issue of being able to retrieve child nodes of the root node; - -New: - -> 1.Add instantiation options for handling SVG objects before export; -> -> 2.Add instantiation options for cloned nodes when modifying drag and drop nodes; -> -> 3.Add a content layout completion event for distributing individual nodes; -> -> 4.Add instantiation options for intercepting node drag and drop; -> -> 5.Add instantiation options to restrict the maximum and minimum values of TouchEvent plugin's double finger scaling; -> -> 6.Add node marker plugin; - -Demo: - -> 1.Add node marking function; -> -> 2.Fix the issue where the input box in the bottom right corner cannot be entered in demonstration mode; -> -> 3.Do not display directory, new, or open buttons when opening on the mobile end; - -## 0.10.0 - -Major updates: Upgrade the interaction effect when dragging nodes; - -Fix: - -> 1.Fix the issue where read-only mode can still activate nodes by Ctrl+clicking on them; -> -> 2.Fix the issue of page scaling when setting up scaling in some mobile browsers; -> -> 3.Fix the issue of selecting text when dragging the canvas and adjusting images; -> -> 4.Fix the issue of multiple line breaks when copying node text with line breaks and pasting it; -> -> 5.Fix the issue of displaying blank space when exporting images with custom content before and after nodes; - -New: - -> 1.Add a new rendering start event node.treeRender_start; -> -> 2.Support displaying watermarks below nodes; -> -> 3.Importing xmind files with multiple canvases supports selecting the specified canvas for import; -> -> 4.Canceling the call to the defenseXSS function has a significant impact on performance; The defenseXSS method is provided as a tool method; -> -> 5.Remove the logic of removing nodes with ql cursor class names from rich text content, and fix the issue of ineffective addition of empty lines when text breaks; -> -> 6.Remove the logic of delayed node editing when inserting new nodes; -> -> 7.Support direct editing of mathematical formulas in rich text editing boxes; -> -> 8.Add demonstration plugins to the packaged file; - -Demo: - -> 1.支持配置水印显示在节点下方; -> -> 2.导入存在多个画布的xmind文件支持选择指定的画布进行导入; -> -> 3.优化富文本工具条下拉选项列表高度问题; -> -> 4.新建和打开按钮增加导出的提示,防止内容丢失; -> -> 5.快捷键提示支持区分windows和mac; - -## 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: - -> 1.Fix the issue of all replace operation error during search; -> -> 2.Fix the issue of rendering the mini map with entity characters that are not supported by SVG in node text; - -New: - -> 1.Add an event translate when moving the canvas; -> -> 2.Node content supports setting attachments; - -Demo: - -> 1.Support dragging and dropping files onto the page for import; - -Client: - -> 1.Nodes support adding attachments; - -## 0.9.9-fix.2 - -Fix: - -> 1.Fix the issue of the original node style not being updated during the insertion of the parent node operation; -> -> 2.Fix the issue of errors when switching structures when opening rainbow lines; - -Demo: - -> 1.Fix the issue where the side bar outline opens in source code editing mode when clicking full screen editing; - -## 0.9.9-fix.1 - -Fix the issue where the search plugin was unable to search due to changes in the previous version. - -## 0.9.9 - -Fix: - -> 1.Fix the issue of incorrect arrow color when creating association lines for the first time; - -New: - -> 1.Support inserting child nodes with the insert key; -> -> 2.Add the beforeShortcutRun instantiation option to intercept shortcut key operations; -> -> 3.The method of incrementally updating canvas data by adding root instances, updateData; -> -> 4.Add a rainbow line plugin; -> -> 5.Add mouse in and out events to icons in nodes; -> -> 6.Add the getAncestorNodes method to the node instance to obtain the list of ancestor nodes; -> -> 7.Adding mouse events to personnel avatars during collaborative editing; -> -> 8.Instantiation and setData methods support passing in empty data; -> -> 9.Add an instantiation option for adding custom content when exporting images; - -Demo: - -> 1.Support configuration of rainbow lines; -> -> 2.Add source code editing mode; -> -> 3.Exporting PNG, PDF, and SVG supports setting custom text at the bottom; - -Client: - -> 1.Double click the file to open the application without opening the workbench page; -> -> 2.Fix the issue of multiple editing windows opening when repeatedly opening the same file; -> -> 3.Prompt for modifying and deleting files being edited; - -## 0.9.8 - -Fix: - -> 1.Fix the issue of incorrect calculation function of mind maps within the canvas and scroll bar positions when the canvas size changes; -> -> 2.Fix the issue of errors when importing some old version xmind files; -> -> 3.Fix the issue where the highlight box of the collapsed node does not disappear when searching for highlighted nodes in read-only mode; -> -> 4.Fix the issue where data changes during search and search results are not updated in certain situations; -> -> 5.Fix the issue of deleting adjacent nodes when deleting nodes that are currently being edited; -> -> 6.Fix the issue of rendering only the root node when expand: false is set to the root node in the node data; -> -> 7.Fix the collaborative editing plugin: When a node is selected and then folded, the activation status of the node disappears, but the selected status of the node still exists in other clients; -> -> 8.Optimize the export of markdowns and fix the issue of missing summaries; -> -> 9.Fix the issue of ineffective forward and backward operations on node positions during free drag and drop; - -New: - -> 1.The commands such as INSERTNODE will not overwrite custom UIDs; -> -> 2.Methods for adding and removing highlighting for node instances; Adjust the way read-only mode searches for highlighted nodes; -> -> 3.Add configuration for searching all nodes (including those that have been folded); Search defaults to searching all nodes; -> -> 4.Add configuration options that cannot be selected by multiple people on the same node during collaborative editing; -> -> 5.Add lifecycle function configuration options before synchronizing collaborative editing node operations; -> -> 6.Add UID field to the summary node; -> -> 7.Added support for exporting txt files; - -Demo: - -> 1.Fix the issue where shortcut keys become invalid after opening label pop ups and note pop ups and clicking on the mask to close them; -> -> 2.Modify the association logic between themes and dark colors; -> -> 3.Support reading local directories; -> -> 4.Fix the issue of selecting a file in the import pop-up window and then deleting it without actually deleting it; -> -> 5.Export new txt files; - -## 0.9.7 - -Fix: - -> 1.Fix the issue where the style is not updated when dragging nodes below level 2 to the root node to become level 2 nodes; Fix the issue where the style is not updated when moving nodes with the command to move up one level; -> -> 2.Fix the issue of losing focus when activating summary nodes and then setting text styles for them; - -New: - -> 1.Add two commands to remove custom styles from nodes; - -Demo: - -> 1.Add a right-click menu button to remove custom styles from nodes. - -## 0.9.6 - -Fix: - -> 1.Fix the issue where the style of the collapsed nodes remains unchanged when switching themes; -> -> 2.Fix the issue of losing the new text style when switching themes for text wrapping; -> -> 3.Fix the issue where the style of the newline text remains unchanged when switching themes; -> -> 4.Fixed the issue of adding mathematical formulas to nodes and not changing the text style when switching themes; - -New: - -> 1.Add new fields to the theme, used to set the display position, head or tail, of node line arrows; -> -> 2.New field added to the theme, used to set the starting position of the root node line when connecting curves; -> -> 3.Mac dual finger touch event moves the canvas to increase sensitivity slightly; -> -> 4.Add MOVE_ UP_ ONE_ The LEVEL command is used to move a node up one level; - -Demo: - -> 1.The outline supports pressing Shift+Tab to move nodes up one level; -> -> 2.Support setting the position of node arrow display; -> -> 3.Support setting the starting position of root node connections; -> -> 4.Add two new themes; -> -> 5.Fix the issue of text wrapping not taking effect in the outline and displaying the br tag; - -## 0.9.5 - -Fix: - -> 1.Fix the issue of missing inter zone summaries when expanding and folding nodes. -> -> 2.Fix the issue where the position of the newly created associated line is always on the right side of the node without changing according to its relative position. - -New: - -> 1.Add configuration for the initial positions of the two endpoints when creating associated lines. -> -> 2.Add a configuration that prohibits adjusting the endpoint position of associated lines. -> -> 3.Add a hand drawn style plugin. - -Demo: - -> 1.Optimize interface adaptation on mobile devices. -> -> 2.Supports enabling hand drawn styles. - -## 0.9.4 - -Fix: - -> 1.Fix the issue of inconsistent text wrapping caused by inconsistent text area width during node display and editing in some cases. -> -> 2.Fixed the issue where gradients were not applied to the edit box during rich text editing for nodes with gradient backgrounds. -> -> 3.Fix the issue of text style loss after switching themes for nodes defined in bold by the theme. -> -> 4.Fix the issue on Mac where the useLeftKeySelectionRightKeyDrag option is set to true and cannot hold down the Ctrl key to select multiple nodes. -> -> 5.Fix the issue where text styles are lost after clearing styles during node rich text editing, and switching themes does not restore them. -> -> 6.Fix data issue when deleting nodes with child nodes_ Change_ The issue of error reporting in detail events. - -New: - -> 1.Add the lineRadius property to the theme configuration to set the size of the rounded corners when connecting straight lines. - -Demo: - -> 1.Remove the display of formulas from the outline. -> -> 2.Some configurations in the basic style that only support partial structures are displayed and hidden based on the current structure. -> -> 3.Add configuration for connecting rounded corners. -> -> 4.Automatically hide the sidebar when importing files. - -## 0.9.3 - -Fix - -> 1.Fix the issue of text misalignment when nodes have icons in Safari browser. -> -> 2.Fix the issue of formula rendering in browsers with lower versions of Chrome kernel. -> -> 3.Fix the issue of new MouseEvent code execution errors when used in micro front-end framework applications. -> -> 4.Fix the issue of missing arrows on node connections, arrows on associated lines, and gradient backgrounds when exporting images. - -New: - -> 1.Export PDF from jspdf library to pdf-lib library. -> -> 2.If the second parameter of the set node text command (SETNODE-TEXT) is not passed, the previous value will be used. -> -> 3.There is an issue of incorrect width and height of exported images in Firefox browser when optimizing nodes with hyperlinks and comments. -> -> 4.In node text editing, if the pasted data is in SMM format, the pure text of the first node will be taken out for pasting. -> -> 5.Add interception operations for pasting when editing nodes without rich text. -> -> 6.Add a detailed event (data_change_detail) for updating node data, which can retrieve newly created, updated, or deleted node data. -> -> 7.Theme configuration supports setting node gradient background color. - -Demo: - -1.Support setting the background of node gradients. - -## 0.9.2 - -Fix: - -> 1.Fix the issue of no line breaks when node text contains consecutive numbers or letters. -> -> 2.Fix the issue of duplicate node drawing when importing files with the same UID as existing nodes on the current canvas. -> -> 3.Fix the issue of duplicate rendering of nodes caused by forward and backward when the number of nodes exceeds the maximum number of cache pools. -> -> 4.Fix the issue of the canvas moving in the opposite direction when scrolling horizontally with the mouse or touchpad. -> -> 5.Fix the issue where the mouse in flag is not reset when a node is destroyed. -> -> 6.Fix the issue of incorrect position calculation in the scrollbar plugin when the 'initRootNodePosition' configuration is not set to the default '[center, center]'. -> -> 7.Fix the issue where dragging the canvas cannot stop when the mouse is released on the node. -> -> 8.Fix the issue of errors in the position calculated by the view. fit method when the canvas container is not 0 from the top left corner of the browser window. -> -> 9.Fix the issue where the watermark in the exported image does not fully cover the entire image when there are a large number of nodes. -> -> 10.Fix the issue of inserting formula errors. -> -> 11.Fix the issue of losing the selected text status when the mouse moves out of the editing box while selecting text in the node text editing state. -> -> 12.When repairing node rich text editing, Fix the issue 'rich_text_selection_change' event is not triggered when the text selection range is 'null'. -> -> 13.Fix the issue of no 'node' instance in the 'node_dragging' event callback. -> -> 14.Fix the issue of too many nodes and the canvas size being too large to export PNG. - -New: - -> 1.Modify the mousewheel event, change the dir flag to dirs, support storing multiple directions, and optimize the dual finger movement operation of the touchpad. -> -> 2.The TextEdit class adds the isShowTextEdit method to determine whether the current node is in an editing state. -> -> 3.Change the paste method of the render class to support pasting clipboard data. -> -> 4.Add a configuration option to restrict mind map graphics within the canvas. -> -> 5.When registering the scrollbar plugin, it supports configuring whether to restrict the mind map within the canvas. -> -> 6.Folding all nodes will move the mind map root node to the center of the canvas. -> -> 7.Support the configuration option of displaying watermarks only during export. -> -> 8.When pasting images from the clipboard at a node, custom processing functions are supported to upload the images to your server. -> -> 9.Refactoring the export logic of the PDF, the exported PDF size is no longer a fixed A4, but the size of the mind map, while deleting the configuration for pagination export. -> -> 10.Node connections support displaying arrows as a field for the theme. -> -> 11.The maximum number of historical records is adjusted to 500 by default. - -Demo: - -> 1.Support configuration to display watermarks only during export. -> -> 2.Basic style configuration line supports displaying arrows. - -## 0.9.1-fix.2 - -Fix: - -> 1.Fix the issue where some browsers display default text when node text is empty. -> -> 2.Fix the issue of text style loss when inputting text again when the node text content is empty. -> -> 3.Fix the issue where exporting images also fails when node image loading fails. - -New: - -> 1.Support configuring the default image displayed when node image loading fails. - -## 0.9.1-fix.1 - -Fix: - -1.Fix the issue of custom node methods reporting null errors. - -2.Fix the issue of large volume of exported PDF files. - -## 0.9.1 - -Fix: - -> 1.Fix the issue of exporting images, SVGs, and PDFs with errors when customizing node content. -> -> 2.Optimize the distribution of node activation events, do not distribute events when the activation node has not changed, and skip intermediate events when distributing multiple events in a short period of time. -> -> 3.Fix the issue where the edit box and node detach when scrolling the canvas with the mouse while the node is in editing mode. -> -> 4.Fix the issue of shortcut keys becoming invalid when zooming the canvas with the mouse wheel and then exiting node editing while in node editing mode. -> -> 5.Fix the issue where clicking on a node can also trigger node_dragend event. -> -> 6.Fix that clicking on the canvas and nodes while not in the format brush will also trigger the painter_end event. -> -> 7.Fixed the issue where the mind map text editing box was not destroyed during node text editing and associated line text editing. - -New: - -> 1.When holding down the Ctrl key, disable the node double-click event. -> -> 2.Support configuring the behavior when creating new nodes: focusing and entering editing, not focusing, only focusing. -> -> 3.When searching in read-only mode, add a highlight effect to the currently matched node. -> -> 4.The default behavior of the mouse scroll wheel is to move the canvas up and down; The default is to scroll forward to enlarge the canvas and zoom back. -> -> 5.When the mouse scroll wheel behavior is to move the canvas up and down, it supports holding down the Ctrl key to zoom in and out of the canvas. - -Demo:支持配置创建新节点时的行为。 - -## 0.9.0 - -New: - -1.Support adding summaries to some child nodes of the same node. - -2.Moving the mouse into the summary will highlight its node. - -3.Importing and exporting xmind files supports processing profiles. - -## 0.8.1 - -Fix: - -> 1.Fix the issue where the activation status of the summary node in the history data has not been deleted, which can cause data to be triggered when clicking on the summary node_ Change event. -> -> 2.Fix the issue of blank pages and exceptions thrown by the console when running in Safari browser. -> -> 3.Fixed the issue of icon floating layer and note floating layer detached from nodes when scaling the canvas. -> -> 4.Fixed the issue of selecting all nodes in read-only mode. -> -> 5.Fix the presence of node content has   in rich text mode; Error exporting as image. -> -> 6.Fixed the issue of overlapping profiles when adding profiles to oneself first and then to subordinates; Fix the issue of overlapping profiles when adding profiles to nodes with hierarchical relationships at the same time. -> -> 7.Fix the issue of exporting PDF errors when there are many nodes. - - -New: - -> 1.Add a configuration option that prohibits dragging the canvas. -> -> 2.Add a configuration option to prohibit double finger scaling of the canvas. -> -> 3.Add compression parameters to the method of exporting PNG; Optimize the problem of excessive volume when exporting PDF from nodes with large amounts of data. -> -> 4.Rename the isParent method of the node instance to isAncestor and add the isParent method at the same time. - -Demo: - -> 1.Fixed the issue of being able to search for replacement and edit outlines in read-only mode. -> -> 2.Fix the issue where the outline cannot be displayed and edited when the node content is an HTML tag. -> -> 3.Fix the issue where when multiple nodes are selected and icons are added at the same time, all node icons will be unified as the icon of the first node. -> -> 4.Adding loading to the export operation. - -## 0.8.0-fix.1 - -Fix: Fixed the issue of creating a new node using direct paste if the pasted content contains HTML label symbols such as <> and the newly created node content is empty. - -## 0.8.0 - -Breaking change: Greatly optimize some of the code and slightly improve performance, mainly by using the 'render' class to remove useless logic, adjust unreasonable implementations, and extract duplicate code; Modify function names, functions, etc. - -Fix: - -> 1.Fix the issue of the arrow of the associated line disappearing when exporting images and SVGs. -> -> 2.Fix the issue of abnormal operation returning to the root node after resizing the container. -> -> 3.Fix that the shortcut key operations for inserting summary, moving up, down, and organizing layout with one click did not trigger data_ The issue with the change event. -> -> 4.Fix the issue of each node displaying a border when exporting images, SVGs, and PDFs with watermarks. -> -> 5.Fixed the issue of no watermarks and no redrawing after the container size was changed. -> -> 6.Fix the issue of slow rendering of mini maps with watermarks. -> -> 7.Fixed the issue where the collaboration plugin did not display the creator's avatar when creating a new node. - -New: - -> 1.Optimize the canvas DOM structure and render nodes, lines, and associated lines in layers. -> -> 2.Optimize the watermark plugin. -> -> 3.The setTheme, setThemeConfig, and setLayout functions add parameters that do not trigger re rendering. -> -> 4.Add a command to insert a parent node. -> -> 5.Add a command to only delete the current node. -> -> 6.Automatically expand child nodes when inserting a summary. -> -> 7.Clear the current active node when right-clicking on the canvas. -> -> 8.The folded active nodes are synchronously deleted from the list of active nodes. -> -> 9.Pasting text with line breaks supports controlling whether nodes are split by line breaks. -> -> 10.The mini map plugin supports returning mini maps of image types. -> -> 11.Only one historical record can be added within a specified time period to avoid adding unnecessary intermediate states. - -Demo: - -> 1.Modify the method and copy to return to the root node. -> -> 2.Fix the issue of ineffective first switching when switching themes in overlay mode. -> -> 3.The right-click menu adds the function of inserting parent nodes and deleting only the current node. -> -> 4.The top toolbar supports automatic folding into more according to the window width. -> -> 5.Support manual input of zoom factor. -> -> 6.Improve the English translation of the interface. -> -> 7.Change the mini map to render through images. - -## 0.7.3-fix.2 - -Fix some issues with collaborative editing: - -1.The position of the new node is incorrect when inserting peer nodes; - -2.Moving a position within a peer node did not trigger an update; - -3.The position of the mobile node inserted as a sibling node is incorrect; - -## 0.7.3-fix.1 - -Fix: - -> 1.Fixed some issues where the box selection area did not disappear when multiple nodes were selected. -> -> 2.Fixed an issue where the box selection area does not disappear when releasing the mouse over multiple selected nodes. -> -> 3.Fixed rendering anomalies caused by duplicate node uids when pasting nodes multiple times. - -Demo: - -> 1.Add protocol selection function to the hyperlink input box. - -## 0.7.3 - -New: 1.Add a Cooperate editing plugin. - -Demo: 1.Fix the automatic closing of the sidebar caused by the formula sidebar component. - -## 0.7.2 - -Fix: - -> 1.Fixed the issue of nodes not being selected when the selection area does not include node boundaries when multiple nodes are selected. -> -> 2.Fix the issue of errors when node text is not a string. -> -> 3.Fix the issue of some text disappearing when edited again when there are<>&characters in the text in non rich text mode. - -New: - -> 1.Supports inserting mathematical formulas. -> -> 2.Supports dragging and moving multiple nodes simultaneously. -> -> 3.Supports copying and cutting multiple nodes simultaneously. -> -> 4.The node label color has been changed to be generated based on the label content, meaning that the same label content will generate the same color. -> -> 5.Optimize the insertion of child nodes: 1. When inserting child nodes into multiple nodes simultaneously, do not enter the editing state; 2. The newly inserted child node automatically enters the active state. -> -> 6.Optimize the insertion of sibling nodes: 1. Support the simultaneous insertion of sibling nodes into multiple nodes; 2. When calling the command to insert sibling nodes on the root node, no child nodes will be created. -> -> 7.Add a command to simultaneously insert multiple peers and multiple child nodes. -> -> 8.Changing the unique identifier of nodes from id to uid mainly affects the associated lines, which may not display properly in previous versions. -> -> 9.Optimize the logic of icon merging and support the expansion of icons under the internal classification of the library. -> -> 10.Associate line: 1. Double click the associate line to enter associate line text editing mode; If the associated line text is the default text, it will not be saved; 3. When there are active nodes, clicking on the associated line can directly activate the associated line. - -Demo: - -> 1.Fixed an issue where multiple nodes in the Zhixi mind map cannot be pasted when copying. -> -> 2.Add a sidebar for formula editing. - -## 0.7.1-fix.2 - -Fix: 1.Fix the issue of plugin registration method chain call reporting errors. - -New: - -> 1.Add a configuration option to adapt to the canvas size when the mind map is first loaded. -> -> 2.Add a command to automatically generate dts declaration files. - -## 0.7.1-fix.1 - -Fix: Fixed the issue of dragging nodes without excluding the child nodes of the dragged nodes. - -## 0.7.1 - -Fix: - -> 1.Fix the issue of unsaved associated line endpoints after changes. -> -> 2.Fix the issue of abnormal canvas scrolling when moving the mouse to the edge of multiple selected nodes when the distance from the top left corner of the canvas to the browser window is not 0. -> -> 3.Fix the issue of importing xmind file errors for nodes with empty titles. -> -> 4.Fix the issue where the exported xmind file prompts for corruption when opened on the latest version of xmind software. -> -> 5.Fix the issue where stickers cannot be displayed when exporting data with stickers in xmind format. -> -> 6.Fix the issue of node right-click event reporting errors when the select plugin is not registered. -> -> 7.There is no issue with removing duplicates in the method of registering plugins. - -New: - -> 1.Reconstruct node drag and drop logic: optimize drag and drop difficulties in some situations, adapt to various structures, and automatically move the canvas when the mouse moves to the edge of the canvas during drag and drop. -> -> 2.Reconstruct the scrollbar plugin to optimize the user experience. -> -> 3.Imperfect resolution of conflicts between logical structure diagrams, mind maps, directory organization diagrams, organization chart summaries, and nodes (the summaries should be rewritten or deleted later). -> -> 4.Activate adjacent nodes after deleting them. -> -> 5.In node data_ The starting field is considered a custom field. - -Demo: - -> 1.The page will display the current core library version number. - -## 0.7.0 - -Breaking change: Removed the section of node activation style in the theme file, Setting the activation style of nodes is no longer supported, and the activation effect has been changed to a unified node outer border style, while also supporting the mouse hover effect. - -Fix: - -> 1.Fix rendering anomalies when the node border size is relatively large. -> -> 2.Fixed an issue where the node style of the associated line will not be updated when switching themes. -> -> 3.Fix that selecting all did not trigger node_ The issue with active events. - -新增: - -> 1.When folding nodes, displays the number of collapsed nodes. -> -> 2.Support the position of the endpoint of the associated line to follow mouse drag changes. -> -> 3.Add a scrollbar plugin. -> -> 4.Support opening specified online files through fileURL query parameters in URLs. -> -> 5.The fishbone diagram supports setting node margins. -> -> 6.By default, double-click to reset the canvas. -> -> 7.Modify the parameters of the export image method, and when exporting PDF, if the size of the mind map is smaller than A4 paper, do not rotate the direction. -> -> 8.Improve the clarity of exported images and PDFs on high-definition screens. -> -> 9.Add a pre destruction lifecycle function to the plugin to address the issue of some side effects that were not cleared during the destruction of the mind map. -> -> 10.Optimize the settings of the basic style and do not trigger full rendering when modifying theme attributes that do not affect size. -> -> 11.Prohibit triggering node right-click menu events when multiple node selections are completed, to avoid triggering the right-click menu display. -> -> 12.Optimize the Select plugin so that if multiple selected nodes do not change, the activation event is not triggered. -> -> 13.The activation node list thrown by event node_active no longer directly references the internal activation list. -> -> 14.Optimize the logic of mouse button down node events, and support dragging the canvas by holding down the root node with the right mouse button in the right-click drag and drop canvas mode. - -Demo: - -> 1.Do not directly reference the internal activation node list to optimize performance. -> -> 2.Support configuring whether to display scrollbars. -> -> 3.Delete the active node configuration in the sidebar node style configuration section. - -## 0.6.17 - -Fix: - -> 1.Fix the issue of error reporting in the xmind file exported from Baidu Brain Map. -> -> 2.Fix the mindMap. export method code error. - -New: - -> 1.Create index.d.ts file。 -> -> 2.Support configuration to enable double click reset mind map. -> -> 3.Intercept paste operations during rich text editing, remove formatting, and only allow pasting pure text. - -## 0.6.16 - -Fix: - -> 1.Optimize the logic of rich text measurement elements, remove duplicate settings for styles, and add duplicate nodes -> -> 2.Optimize the export image logic, and when traversing the node to convert the URL of the image, if it is already in the form of data: URL, do not handle it repeatedly. - -New: - -> 1.Remove the second parameter of the exported SVG method and configure it through instantiation instead. -> -> 2.Export images without using external libraries. - -Demo: - -> 1.Fixed a bug where siblings can be added to the root node when editing the outline separately. - -## 0.6.15-fix.2 - -Fix: Fixed an issue where rich text nodes cannot be displayed in Firefox browser. - -## 0.6.15-fix.1 - -New: - -> 1.Export PDF supports pagination export based on image size. -> -> 2.Exporting PDF supports automatic direction adjustment based on aspect ratio. -> -> 3.Optimize the placeholder elements of the expand and collapse buttons: 1. Nodes without child nodes do not render this element; 2. Dynamically update the element based on the existence of child nodes. -> -> 4.Add a configuration that prohibits mouse wheel scaling. -> -> 5.Supports passing error handling functions. - -Fix: - -> 1.Fix the issue of displaying exceptions when node text is empty. -> -> 2.Change the paddingX and paddingY of exported SVG graphics to single sided padding. -> -> 3.Fixed an issue where the mouse is not centered when zooming when the canvas is not 0 from the top left corner of the browser window. -> -> 4.Fix the issue of overlapping node borders. - -Demo: - -> 1.The bottom right corner supports jumping to related links. -> -> 2.Adjust the position of the mini map to solve the problem of being blocked by side buttons. -> -> 3.Fix the issue where the prompt in the upper right corner of the open local file cannot be closed. -> -> 4.Editing the outline separately is no longer linked to the canvas, optimizing the editing experience under large data volume. -> -> 5.The sidebar involves graphical options to increase visualization effects. - -## 0.6.14 - -New: - -> 1.Remove and create hidden input boxes, and copy and paste them through navigator. clipboard; Support cross browser pasting of mind map node data; Support custom processing of text data in the clipboard. - -Demo: - -> 1.Fix the issue of enabling input to automatically enter text editing mode and conflicting with other input boxes. -> -> 2.Fix the issue of not being able to delete node images in the node image pop-up window. -> -> 3.Fixed an issue where the text decoration line style of nodes cannot be removed in the node style sidebar. -> -> 4.The color selector supports selecting transparent colors. -> -> 5.Fix the issue of importing mind map data without updating the sidebar data when the basic style sidebar is open. -> -> 6.Fixed the issue of not focusing when modifying the text of one node in the outline and then clicking on other nodes. -> -> 7.Fixed an issue where the node and word count statistics in the bottom left corner were not updated after exiting Zen mode. -> -> 8.Support deleting hyperlinks and notes of nodes from the right-click menu. -> -> 9.Support pasting node data of Zhixi Mind Map. - -## 0.6.13 - -Fix: - -> 1.Fix the issue of the inability to drag the canvas while holding down the middle mouse button on a node in read-only mode. -> -> 2.Fixed the issue of probabilistic error reporting after quickly dragging nodes several times. -> -> 3.Fix the issue of pulling up the input method during operations such as activating nodes on the mobile end, expanding and collapsing. -> -> 4.Fix the issue where an exception request is initiated when the background image in the theme configuration is none. - -New: - -> 1.Mobile gesture scaling optimization: Scale according to a linear relationship, and adjust the canvas position with double finger displacement. -> -> 2.Remove the logic of asynchronous rendering nodes and improve the speed of creating new nodes. -> -> 3.The export of images has been changed from the html2canvas library to the dom to image more library to address the issue of missing text styles in exporting rich text nodes. -> -> 4.When a non rich text input box enters the editing state, it is deselected by default. -> -> 5.When there is an activation node, it supports automatically entering text editing mode when pressing the Chinese, numeric, or English buttons. - -Demo: - -> 1.Add anti shake operations when saving view data to optimize performance. -> -> 2.Some time-consuming operations add loading effects. -> -> 3.Improve the dark mode of right-click menus and rich text toolbars. - -## 0.6.12 - -Fix: - -> 1.Fix the issue where the indicator in the mini map will also move out of the mini map area when the mind map is completely moved out of the visible area. -> -> 2.Fix the issue of overly sensitive dual finger scaling on the mobile end. -> -> 3.Fix the issue of holding down nodes while dragging the canvas in read-only mode. -> -> 4.Fix the issue of incorrect rendering of the mini map when the distance between the mind map and the top left corner of the browser window is not 0. -> -> 5.Fix the issue of the prompt block being too large for the new location when moving nodes. -> -> 6.Fix the issue where search cannot be replaced with empty characters. -> -> 7.Fixed the issue of missing line breaks after searching and replacing in rich text mode. -> -> 8.Fixed the issue of missing focus in the input box when clicking on text editing in the outline. - -New: - -> 1.Adding a callback parameter to the node move end event (node_drag) can obtain the uid of the move to the node. -> -> 2.Support specifying the location to which internal elements are added through configuration. -> -> 3.Support the format brush function. -> -> 4.Under the curve style, the connection line style of the root node supports consistency with other nodes. -> -> 5.Search supports continuous replacement. -> -> 6.Add and delete button for node image. -> -> 7.Support dragging the canvas while holding down the middle mouse button. - -Demo: - -> 1.Provide an application takeover mode to facilitate docking with one's own storage services; Supports setting static resource paths at runtime. -> -> 2.Refactoring outline: 1. No longer use the text style that comes with the node; 2. Support full screen editing of the outline; 3. The outline supports dragging and moving nodes; 4. The outline supports deleting nodes. -> -> 3.Fix the issue of interface dark mode not updating in the scenario of importing data. - -## 0.6.11-fix.1 - -Fix: 1.Fixed the issue of invisible editing when node text is white. - -## 0.6.11 - -New: 1.Optimize the mini map, remove node content within the mini map, and optimize performance. - -Demo: 1.Add a new topic and add tab differentiation to the topic list. 2.Node image upload supports inputting network image addresses. 3.Node image upload supports inputting network images. - -## 0.6.10 - -Fix: 1.Fix the issue of deleting a node after searching for it and not updating the search results when searching again. 2.Fixed an issue where the button for adjusting image size did not update after node operation. 3.Fix the issue of incorrect internal data deep copy location. 4.Fix the issue of ineffective line wrapping in rich text nodes. 5. Fix the issue of node swapping and loss when switching themes and other scenarios. - -New: 1.Search supports searching for white space characters and replacing them with white space characters. - -Demo: 1.Support calling up search through icon buttons. 2.Support for switching to dark mode through icon buttons. 3.Optimize search: The mouse is not in the search area and not focused, solving the problem of not being able to delete input text when the mouse is not in the search area. 4.Adjust the interface UI for adding node icons and add a series of node icons. 5.Add a sticker list. 6.Fixed the issue of missing focus in the input box after entering the search box. 7.Support clicking on the icon within the node to display an icon for quick replacement and deletion of the floating panel. - -## 0.6.9-fix.1 - -Fix: 1.Fix the issue of incorrect replacement after a single search. - -New: 1.We will no longer directly modify the incoming data object, but will make a deep copy internally. - -## 0.6.9 - -Fix: 1.Fixed an issue where setting styles to summary nodes would cause summary nodes to disappear. 2.Fixed the issue of node content not rendering when creating a root instance again when customizing node content. 3.Fix the issue of losing focus when adding a new node while the node is in editing. 2.Fix the issue of continuously pressing the tab key not being able to continuously create child nodes. - -New: 1.Replace existing ` ` in SVG when exporting Characters to avoid exporting SVG errors. 2.Support for search and replace. - -Demo: 1.When switching themes, it is supported to choose whether to overwrite the set basic style. - -## 0.6.8 - -Fix: 1.Change the shortcut key for inserting a summary to Ctrl+G to avoid conflicts with the save shortcut key. 2.Fix the issue of abnormal switching between rich text editing configuration input boxes while nodes are being edited. - -New: 1.Modify the copy, cut, and paste logic, and support pasting data from the clipboard. - -Demo: 1.Fix the issue of not saving the outer margin of the basic style setting node. 2.Supports automatic switching to dark mode based on the theme. - -## 0.6.7 - -Fix: 1.Fixed the issue of missing placeholder elements for the expand and collapse button after node collapse and expansion. 2.Fixed the issue of being able to scale images in read-only mode. - -New: 1.Support locating to a node based on node instance or node uid. 2.Modify the creation method of node uids and export data to add node uids. - -Remove: 1.Remove the node transition effect. - -Demo: 1.Add website homepage. 2.Fixed the issue of missing node styles when creating new nodes in the outline. 3.Fixed the issue of missing edited text after pressing Enter or Tab after editing nodes in the outline. 4.Optimize the node positioning of the outline, and the collapsed nodes will automatically expand. 5.The sidebar button supports folding. 6.Optimize small screen adaptation. - -## 0.6.6 - -New: 1.Support exporting to Xmind new version files. 2.Importing the new version of Xmind file supports importing images from nodes. 3.Add a vertical timeline structure. - -Fix: 1.The TouchEvent plugin no longer sends click events, solving the problem of two windows opening when clicking on a hyperlink on the mobile end. 2.Fix the issue of dragging and moving a node to become a child node of another node, where the parent node of that node points to not being updated. 3.Fixed an issue where the node border style was not updated when dragging a second level node into a third level node. 4.Fix the issue where the mouse will not trigger the button display when moving into the unfolded or retracted button position, except for the structure growing to the right. - -optimization: 1.The issue of excessive amplitude when optimizing the touchpad to scale the canvas. 2.The newly created node defaults to selecting all for easy deletion of default text. - -## 0.6.5-fix.1 - -Fix: 1.Fix the issue of adjusting the image size incorrectly while zooming. - -## 0.6.5 - -Fix: 1.Fix the issue of xmind file import errors. 2.Fixed a rare issue where line breaks occur when the width of the node text is decimal. - -New: 1.The packaged library supports obtaining built-in constants, themes, and other data. 2.Supports configuring the zoom behavior corresponding to the direction of the mouse wheel. 3.Node images support dragging and resizing. - -## 0.6.4-fix.1 - -New: 1.When zooming with the mouse wheel, the default zoom is centered around the current position of the mouse, which can be turned off by configuring. - -Fix: 1.Fixed an issue where the default value of the zoom center point was not updated after changing the canvas size. - -## 0.6.4 - -New: 1.The default is to scale at the center point of the canvas. 2.Optimize the scaling of both fingers on the mobile end, with the center position of the two fingers as the center point for scaling. - -## 0.6.3 - -Fix: 1.Fix the issue where the summary node will respond to inserting node shortcuts. - -New: 1.Support custom node content. - -## 0.6.2 - -Fix: 1.Fixed the problem that the new node does not change with the theme in rich Text mode. - -## 0.6.1 - -Fix: 1.Fixed the issue of high movement sensitivity when using the touchpad when changing mouse scrolling to moving the canvas behavior. - -## 0.6.0-fix.1 - -Fix: 1.Fixed the issue of destroying mind maps without setting a background style and reporting errors. - -## 0.6.0 - -Breaking change: Adjusted the directory structure of the simple-mind-map source code, Main impact: 1. The introduction path of the plugin needs to be modified. The constant file path needs to be modified. - -New: 1.Supports one click zoom to fit the canvas function. 2.Press and hold the Ctrl key to activate the multi selection function on demand through configuration. 3.Support setting to left click to select multiple nodes and right click to drag the canvas. 4. Support controlling whether nodes are allowed to be edited. 5.Add a method for destroying mind maps. 6.Added touch event support plugin. - -Fix: 1.Fix the issue where holding down the Ctrl key to select multiple nodes does not trigger the click event for the node. 2.Fixed the issue of node style loss when clearing a node and then entering text. - -## 0.5.11 - -New: Supports associative text editing. - -optimization: Optimizing theme configuration updates, changing configurations that do not involve node size does not trigger node recalculation. - -## 0.5.10 - -New: Optimize node reuse logic using LRU caching algorithm. - -## 0.5.10-fix.1 - -Fix: Fix the issue of import errors. - -## 0.5.10-fix.2 - -Fix: Fixed the issue of switching themes and importing data without triggering data changes in rich text mode. - -New: Add three new themes. - -## 0.5.9 - -Change: Unified export method format, using `FileReader` instead of `URL.createObjectURL` to convert `blob` data. - -## 0.5.8 - -optimization: 1.The position setting is not triggered when the node position does not change. 2.The unfolding and folding status does not change and does not trigger button updates. - -New: 1.The default setting is to move the mouse over the node to display the expand and collapse buttons. 2.Support the list of icons that can be inserted into extended nodes. - -## 0.5.7 - -Breaking change:In rich text mode, exporting png has been changed to using html2canvas to convert the entire svg, greatly improving the export speed. However, html2canvas has a bug where the text color inline with the dom node in the foreignObject element cannot be recognized. Therefore, the text color of the exported node is fixed. However, compared to the previously unavailable state of the export, it can at least be exported quickly and smoothly. - -optimization: Optimize the rich text node editing experience. - -New: In rich text mode, importing data, initializing data, and switching theme scene node styles support following theme changes. - -## 0.5.6 - -Fix: 1.Fix the issue of node position disorder during fast and multiple renderings in a short period of time. 2.Fix the issue of dragging the canvas while the node is being edited, causing the edit box and node to separate. - -New: 1.Add a maximum history limit. - -## 0.5.5-fix.1 - -Fix: 1.Fix the issue where the edit box is also outside the canvas when editing nodes outside the canvas. 2.After modifying the structure, reset the transformation to prevent the problem of sudden position changes during the first drag after switching the structure during scaling. - -optimization: 1.When multiple nodes are selected, as long as there is a cross between the node and the selection area, it is considered selected. - -## 0.5.5-fix.2 - -Fix: 1.Fix mini map error. - -## 0.5.5 - -New: 1.Supports configuring the padding when exporting to PNG, SVG, or PDF. 2.Support the configuration of z-index for node text editing boxes and node comment floating layer elements. 3.Support clicking on areas outside the canvas to end node editing status. - -## 0.5.4 - -New: 1.Add new themes. 2.Added timeline and fishbone structure. - -Fix: 1.Fix the conflict issue between node right-click and canvas right-click. 2.Fix the bug that the line segment is not hidden when dragging nodes such as organizational chart and directory organization chart. - -optimization: 1.Optimize the layout of organizational chart. 2.Optimize the layout of the directory organization chart. - -## 0.5.4-fix.1 - -optimization: 1.Optimize fishbone layout. - -## 0.5.3 - -Fix: 1.Fixed the issue of setting the text style when multiple nodes were selected in rich text mode, which would change the text of all selected nodes to the text of the last selected node. - -New: 1.Support setting the position of the initial central node. - -### 0.5.3-fix.1 - -Fix: 1.Fix the issue where setting the position of the initial central node does not take effect. - -### 0.5.3-fix.2 - -Fix: 1.Fix the issue of not displaying images in nodes when exporting as images. - -## 0.5.2 - -Fix: 1.Remove `uid` from exported `JSON` data; 2.Clear the node cache pool when re rendering. - -## 0.5.1 - -optimization: 1.Only respond to shortcut key events when the mouse is inside the canvas - -Fix: 1.Fix the issue of incorrect node position during fast operation - -## 0.5.0 - -This version is mainly about code level changes and optimization, with the core goal of improving rendering performance and reducing stuck issues. - -New: 1.Support custom expansion and collapse node icons and colors; - -optimization: 1.Optimize rendering logic, set the theme, move forward and backward, and other operations no longer require full rendering; - - 2.Optimize node drag logic, and fix the problem of being unable to drag between two nodes; - - 3.Collapse all nodes adds logic to return to the center point; - - 4.Fix the problem of nodes flying and scrambling caused by triggering rendering multiple times in a short time; - - 5.Optimize the experience of node editing; - -Fix: 1.Fix the issue where the setData method does not trigger history; - -modify: Starting from version 0.5.0, considering performance issues, the node activation state can only modify shape related styles: - -```js -[ - 'fillColor', - 'borderColor', - 'borderWidth', - 'borderDasharray', - 'borderRadius' -] -``` - -## 0.4.7 - -optimization: 1.During rich text editing, when initially focusing, all are no longer selected by default; 2.When editing rich text, use the node fill color as the background color to avoid being invisible when the node color is white. 3.Node activation state switching no longer triggers history. 4.Triggering history multiple times in a short time will only add the last data. 5.Optimize the addition of historical records. When there is a rollback, delete the historical data after the current pointer when adding a new record again. - -New: 1.Support for importing and exporting Markdown format files. 2.Support for configuring initial text when inserting nodes. 3.Expand the commands for inserting and deleting nodes to support specifying nodes. - -## 0.4.6 - -New: 1.Associated lines support adjusting control points. - -optimization: 1.When adding historical data, filter data that has not changed compared to the previous time. - -Fix: 1.Fixed a conflict between the direction keys and the navigation function of the direction keys during node editing. 2.Fixed the issue of node id loss when dragging a mobile node, which can cause associated lines to be lost. - -## 0.4.5 - -New: 1.Supports associative lines. 2.You can also drag the canvas by holding down the root node. 3. Hold down the ctrl key to adjust multiple selected nodes. - -## 0.4.4 - -New: Support horizontal scrolling in response to the mouse. - -## 0.4.3 - -Fix: No trigger after forward and backward `data_ Change` event. - -New: Support user-defined mouse wheel events; The mouse wheel is adjusted to support zooming and moving the view up and down. - -## 0.4.2 - -New: The `setText` method of the Node class adds a second parameter to support setting rich text content. - -## 0.4.1 - -New: 1.Add and throw node mouseenter and mouseleave events; 2.Node rich text supports setting background color; 3.Node rich text supports clear style. - -Fix: 1.Mac system touchpad scaling is the opposite problem; 2.When the device window.devicePixelRatio is not 1, the size of the rich text node in the exported image will become larger when there are rich text nodes. - -## 0.4.0 - -New: The node supports rich text editing. - -## 0.3.4 - -New: Automatic line wrapping function is added to node text. - -Fix: 1.Fix the problem of deletion exceptions if there are root nodes in the batch deleted nodes. 2.Fix the problem that high node height will overlap with other nodes in the case of bottom edge style. - -## 0.3.3 - -Fix: The root node text cannot wrap. - -## 0.3.2 - -Fix: 1.Fix the problem that the node style is not updated when the secondary node is dragged to other nodes or other nodes are dragged to the secondary node; 2.Fix the problem that when the actual content of the mind map is larger than the screen width and height, the excess part is not watermarked when exporting. - -## 0.3.1 - -Fix: 1.The problem that deleting the background image does not take effect; 2.The problem that the connector runs above the root node when the node is dragged to the root node. - -New: Add position and size settings for background image display. This setting is also supported for exported pictures. - -## 0.3.0 - -Upgrade to plugin architecture, pull out some non-core functions as plugins, register as needed, and reduce the overall volume. - -## 0.2.24 - -New: Node free drag is changed to configurable, the default is `false`, not open; Support add watermark. - -## 0.2.23 - -New: Support register new theme. - -## 0.2.22 - -optimization:The theme and structure pictures of the built-in `simple-mind-map` package are removed and replaced by user self-maintenance. The original pictures can be found in the `web/assets/img/` directory. - -## 0.2.21 - -New: Support node horizontal line style. - -## 0.2.20 - -fix:When the distance from the canvas to the upper left corner of the window is not 0, the node dragging will have an offset problem. - -## 0.2.19 - -fix:When the node is not activated, pressing any key will trigger the problem of automatic focus. - -## 0.2.18 - -optimization:Keyboard navigation algorithm for finding focus, supporting simple algorithm, region algorithm and shadow algorithm. - -## 0.2.17 - -New:Keyboard navigation, that is, switch the active nodes through the direction keys; The node text content can be edited directly in the outline. - -## 0.2.16 - -optimization:Mini map; drag performance. - -## 0.2.15 - -optimization:Local file editing. - -New:Double-click the image in the node to preview the large image. - -## 0.2.14 - -optimization:Automatically expand when inserting child nodes. - -fix:The error occurred when the mini map was closed. - -## 0.2.13 - -fix:The child node is missing when collapsing state replication. - -## 0.2.11 - -fix:Fix the problem that is lost when the child node collapses state replication. - -New:Support mini map. - -## 0.2.10 - -optimization:Focus immediately when you manually create a node. - -fix:Connection style depth update problem. - -New:Logical structure diagram and mind map add linear connection style and direct connection style. - -## 0.2.9 - -New:Support the creation, opening and saving of local files on the computer. - -## 0.2.8 - -fix:Xmind8 version file import failed. - -New:Expanding to the specified level is supported. - -## 0.2.7 - -fix:The root node adds multiple nodes to burst the stack. - -New:Support import .xmind file. - -## 0.2.6 - -New:The title tag is added when exporting svg. - -## 0.2.5 - -fix:Bugs caused by node expansion and collapse. - -New:Node supports custom line styles. - -## 0.2.4 - -New:Nodes support multiple shapes. - -## 0.2.3 - -fix:Shortcut key conflicts when editing node text; Right-click menu shortcut prompt error; Right-click menu shortcut prompt. - -## 0.2.2 - -fix:The input string '/' conflicts with the shortcut key '/'. - -## 0.2.1 - -New:Support export as pdf. - -## 0.2.0 - -New:Classic4 theme;Support adding summary; Support free drag; Move Node Up, Move Node Down, Copy Node, Cut Node, Paste Node, One-click Organize Cloth Shortcut; Library packaging; Ctrl+left click to select multiple. - -## 0.1.18 - -fix:The problem that the node icon cannot be deleted; The tool button is grayed out and can still be clicked. - -## 0.1.17 - -New:Add read-only mode. - -## 0.1.16 - -New:Node notes support markdown and rich text. - -fix:Can't select text; Node annotations cannot hide problems after node activation; When editing text such as hyperlinks, notes, labels, etc., the return key and return key conflict with the shortcut key of mind map. - -## 0.1.15 - -New:The status data supports saving the active status and view status (drag position, zoom value);Support node drag. - -## 0.1.14 - -fix:There are problems with setting topics when activating nodes. - -## 0.1.13 - -New:Shortcut key function; Support export as json。 - -optimization:Some details. - -## 0.1.12 - -New:Local storage;Right-click menu function, etc. - -## 0.1.0 - -Complete basic functions. \ No newline at end of file diff --git a/web/src/pages/Doc/en/changelog/index.vue b/web/src/pages/Doc/en/changelog/index.vue deleted file mode 100644 index 96c5477d..00000000 --- a/web/src/pages/Doc/en/changelog/index.vue +++ /dev/null @@ -1,1010 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/client/index.md b/web/src/pages/Doc/en/client/index.md deleted file mode 100644 index 406afa6f..00000000 --- a/web/src/pages/Doc/en/client/index.md +++ /dev/null @@ -1,82 +0,0 @@ -# Client - -This project also provides a client version using [Electron](https://www.electronjs.org/) Development. Supports 'Windows', 'Mac', and 'Linux'. - -Currently, the function is relatively simple: - -1. Support creating and opening files for editing; - -2. Support viewing the list of recently edited files; - -3. Support the copying, deletion, and renaming of files; - -## Download - -> The client version may lag behind the online version. To try new features, please prioritize using the online version. - -You can directly download the corresponding client for installation and use, and two download addresses are provided: - -Github:[releases](https://github.com/wanglin2/mind-map/releases)。 - -Baidu cloud disk:[地址](https://pan.baidu.com/s/1huasEbKsGNH2Af68dvWiOg?pwd=3bp3)。 - -## Development - -If necessary, you can also conduct secondary development. - -### clone - -```bash -git clone https://github.com/wanglin2/mind-map.git -cd mind-map -git checkout electron -``` - -### Start serve - -Execute in the project root directory: - -```bash -cd simple-mind-map -npm i -npm link -cd .. -cd web -npm i -npm link simple-mind-map -npm run electron:serve -``` - -### Packaging client - -You need at least two computers, one 'Windows' and one 'Mac'. - -Packaging 'Windows' application: - -```bash -npm run electron:build-win -``` - -Packaging 'Mac' application: - -```bash -npm run electron:build-mac -``` - -Packaging 'Linux' application: - -```bash -npm run electron:build-linux -``` - -Packaging all applications: - -```bash -npm run electron:build-all -``` - -Automatically pack according to your computer system: - -```bash -npm run electron:build -``` \ No newline at end of file diff --git a/web/src/pages/Doc/en/client/index.vue b/web/src/pages/Doc/en/client/index.vue deleted file mode 100644 index c5770804..00000000 --- a/web/src/pages/Doc/en/client/index.vue +++ /dev/null @@ -1,71 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/command/index.md b/web/src/pages/Doc/en/command/index.md deleted file mode 100644 index a3749033..00000000 --- a/web/src/pages/Doc/en/command/index.md +++ /dev/null @@ -1,57 +0,0 @@ -# command instance - -The `command` instance is responsible for adding and executing commands. It -includes many built-in commands and can also be added manually. A command refers -to an operation that needs to add a copy to the history stack data. The -`mindMap.command` instance can be obtained through this." - -## Props - -### history - -The current list of all historical data. Do not manually modify the array. - -### activeHistoryIndex - -The current historical data index. Do not manually modify this property. - -## Methods - -Please use the command 'Back' or 'FORWARD' to move forward or backward. - -### pause() - -> v0.9.11+ - -Pause collecting historical data. - -### recovery() - -> v0.9.11+ - -Restore the collection of historical data. - -### add(name, fn) - -Add a command. - -`name`: Command name - -`fn`: Method to be executed by the command - -### remove(name, fn) - -Remove a command. - -`name`: Name of the command to be removed - -`fn`: Method to be removed, if not provided all methods for the command will be -removed - -### getCopyData() - -Get a copy of the rendering tree data. That is, the data of the current canvas. - -### clearHistory() - -Clear the history stack data \ No newline at end of file diff --git a/web/src/pages/Doc/en/command/index.vue b/web/src/pages/Doc/en/command/index.vue deleted file mode 100644 index 9c663301..00000000 --- a/web/src/pages/Doc/en/command/index.vue +++ /dev/null @@ -1,50 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/constructor/index.md b/web/src/pages/Doc/en/constructor/index.md deleted file mode 100644 index dd5a721e..00000000 --- a/web/src/pages/Doc/en/constructor/index.md +++ /dev/null @@ -1,813 +0,0 @@ -# Constructor - -## Basic use - -```html -
-``` - -```js -import MindMap from "simple-mind-map"; - -const mindMap = new MindMap({ - el: document.getElementById("mindMapContainer"), - data: { - "data": { - "text": "Root Node" - }, - "children": [] - } -}); -``` - -## Instantiation options - -### 1.Base - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| el | Element | | Container element, must be a DOM element(When the position of container elements on the page has changed but the size has not changed, the 'getElRectInfo()' method must be called to update the relevant information inside the library; When the size also changes, the 'resize()' method must be called, otherwise it will cause some functional exceptions) | Yes | -| data | Object 、null | | Mind map data, Please refer to the introduction of 【Data structure】 below. V0.9.9+supports passing empty objects or null, and the canvas will display blank space | | -| layout | String | logicalStructure | Layout type, options: logicalStructure (logical structure diagram), logicalStructureLeft(v0.10.2+, Leftward logical structure diagram), mindMap (mind map), catalogOrganization (catalog organization diagram), organizationStructure (organization structure diagram)、timeline(v0.5.4+, timeline)、timeline2(v0.5.4+, up down alternating timeline)、fishbone(v0.5.4+, fishbone diagram) | | -| fishboneDeg(v0.5.4+) | Number | 45 | Set the diagonal angle of the fishbone structure diagram | | -| theme | String | default | Theme, options: default, classic, minions, pinkGrape, mint, gold, vitalityOrange, greenLeaf, dark2, skyGreen, classic2, classic3, classic4(v0.2.0+), classicGreen, classicBlue, blueSky, brainImpairedPink, dark, earthYellow, freshGreen, freshRed, romanticPurple, simpleBlack(v0.5.4+), courseGreen(v0.5.4+), coffee(v0.5.4+), redSpirit(v0.5.4+), blackHumour(v0.5.4+), lateNightOffice(v0.5.4+), blackGold(v0.5.4+)、、avocado(v.5.10-fix.2+)、autumn(v.5.10-fix.2+)、orangeJuice(v.5.10-fix.2+) | | -| themeConfig | Object | {} | Theme configuration, will be merged with the selected theme, available fields refer to: [default.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/default.js) | | -| scaleRatio | Number | 0.1 | The incremental scaling ratio | | -| maxTag | Number | 5 | The maximum number of tags displayed in the node, any additional tags will be discarded | | -| tagPosition(v0.10.3+) | String | right | The position of the tag display relative to the node text,bottom(Below the text)、right(On the right side of the text) | | -| imgTextMargin | Number | 5 | The spacing between the image and text in the node | | -| textContentMargin | Number | 2 | The spacing between various text information in the node, such as the spacing between the icon and text | | -| customNoteContentShow(v0.1.6+) | Object | null | Custom node note content display, object type, structure: {show: (noteContent, left, top, node) => {// your display node note logic. node is a new parameter added in v0.8.1+ version, representing node instances }, hide: () => {// your hide node note logic }} | | -| readonly(v0.1.7+) | Boolean | false | Whether it is read-only mode | | -| textAutoWrapWidth(v0.3.4+) | Number | 500 | Each line of text in the node will wrap automatically when it reaches the width | | -| customHandleMousewheel(v0.4.3+) | Function | null | User-defined mouse wheel event processing can pass a function, and the callback parameter is the event object | | -| mousewheelAction(v0.4.3+) | String | zoom(v0.9.1+ default is move) | The behavior of the mouse wheel, `zoom`(Zoom in and out)、`move`(Move up and down). If `customHandleMousewheel` passes a custom function, this property will not take effect | | -| mousewheelMoveStep(v0.4.3+) | Number | 100 | When the `mousewheelAction` is set to `move`, you can use this attribute to control the step length of the view movement when the mouse scrolls. The unit is `px` | | -| mousewheelZoomActionReverse(v0.6.5+) | Boolean | false(v0.9.1+ default is true) | When `mousewheelAction` is set to `zoom`, Or when holding down the Ctrl key, the default scrolling forward is to zoom out, and scrolling backward is to zoom in. If this property is set to true, it will be reversed | | -| defaultInsertSecondLevelNodeText(v0.4.7+) | String | 二级节点 | Text of the default inserted secondary node | | -| defaultInsertBelowSecondLevelNodeText(v0.4.7+) | String | 分支主题 | Text for nodes below the second level inserted by default | | -| expandBtnStyle(v0.5.0+) | Object | { color: '#808080', fill: '#fff', fontSize: 13, strokeColor: '#333333' } | Expand the color of the stow button, (The fontSize and strokeColor fields were added in version 0.7.0+to set the text style for displaying the number of nodes when folded) | | -| expandBtnIcon(v0.5.0+) | Object | { open: '', close: '' } | Customize the icon of the expand/collapse button, and you can transfer the svg string of the icon | | -| expandBtnNumHandler(v0.7.0+) | Function | | Used to customize the content of displaying the number of nodes when folding, receiving a parameter that represents the instance of the folding node, and returning a number or string that represents the final displayed content. For example, when the number is greater than 99, 99 can be displayed+ | | -| isShowExpandNum(v0.7.0+) | Boolean | true | Display the number of folded nodes when they are folded up | | -| enableShortcutOnlyWhenMouseInSvg(v0.5.1+) | Boolean | true | Only respond to shortcut key events when the mouse is inside the canvas | | -| enableNodeTransitionMove(v0.5.1+)(v0.6.7+ is remove this feature) | Boolean | true | Whether to enable node animation transition | | -| nodeTransitionMoveDuration(v0.5.1+)(v0.6.7+ is remove this feature) | Number | 300 | If node animation transition is enabled, the transition time can be set using this attribute, in milliseconds | | -| initRootNodePosition(v0.5.3+) | Array | null | The position of the initial root node can be passed as an array, default is `['center', 'center']`, Represents the root node at the center of the canvas, In addition to `center`, keywords can also be set to `left`, `top`, `right`, and `bottom`, In addition to passing keywords, each item in the array can also pass a number representing a specific pixel, Can pass a percentage string, such as `['40%', '60%']`, Represents a horizontal position at `40%` of the canvas width, and a vertical position at `60%` of the canvas height | | -| nodeTextEditZIndex(v0.5.5+) | Number | 3000 | | z-index of node text edit box elements | -| nodeNoteTooltipZIndex(v0.5.5+) | Number | 3000 | z-index of floating layer elements in node comments | | -| isEndNodeTextEditOnClickOuter(v0.5.5+) | Boolean | true | Whether to end the editing status of node text when clicking on an area outside the canvas | | -| maxHistoryCount(v0.5.6+) | Number | 1000(v0.9.2+ changed 500) | | Maximum number of history records | -| alwaysShowExpandBtn(v0.5.8+) | Boolean | false | Whether to always display the expand and collapse buttons of nodes, which are only displayed when the mouse is moved up and activated by default | | -| iconList(v0.5.8+) | Array | [] | The icons that can be inserted into the extension node, and each item in the array is an object. Please refer to the "Icon Configuration" table below for the detailed structure of the object | | -| maxNodeCacheCount(v0.5.10+) | Number | 1000 | The maximum number of cached nodes. To optimize performance, an internal node cache pool is maintained to reuse nodes. This attribute allows you to specify the maximum number of caches in the pool | | -| fitPadding(v0.6.0+) | Number | 50 | The padding of mind mapping when adapting to canvas size, Unit: px | | -| enableCtrlKeyNodeSelection(v0.6.0+) | Boolean | true | Whether to enable the function of holding down the Ctrl key to select multiple nodes | | -| useLeftKeySelectionRightKeyDrag(v0.6.0+) | Boolean | false | Setting to left click to select multiple nodes and right click to drag the canvas. | | -| beforeTextEdit(v0.6.0+) | Function/null | null | The callback method before the node is about to enter editing. If the method returns a value other than true, the editing will be canceled. The function can return a value or a promise, and the callback parameter is the node instance | | -| isUseCustomNodeContent(v0.6.3+) | Boolean | false | Whether to customize node content | | -| customCreateNodeContent(v0.6.3+) | Function/null | null | If `isUseCustomNodeContent` is set to `true`, then this option needs to be used to pass in a method that receives the node instance `node` as a parameter (if you want to obtain data for that node, you can use `node.nodeData.data`). You need to return the custom node content element, which is the DOM node. If a node does not require customization, you can return `null` | | -| mouseScaleCenterUseMousePosition(v0.6.4-fix.1+) | Boolean | true | Is the mouse zoom centered around the current position of the mouse, otherwise centered around the canvas | | -| customInnerElsAppendTo(v0.6.12+) | null/HTMLElement | null | Specify the location where some internal elements (node text editing element, node note display element, associated line text editing element, node image adjustment button element) are added, and default to document.body | | -| enableCreateHiddenInput(v0.6.13+)(v0.6.14+ remove this feature) | Boolean | true | Is it allowed to create a hidden input box that will be focused when the node is activated for pasting data and automatically entering the text editing state | | -| enableAutoEnterTextEditWhenKeydown(v0.6.13+) | Boolean | true | Does it automatically enter text editing mode when pressing the Chinese, English, or numeric buttons when there is an activation node?| | -| customHandleClipboardText(v0.6.14+) | Function | null | Customize the processing of clipboard text. When pressing ctrl+v to paste, it will read the text and images from the user's clipboard. By default, it will only determine whether the text is regular text and node data in simple mind map format. If you want to process data from other mind maps, such as process, zhixi, etc., you can pass a function that takes the text from the current clipboard as a parameter and returns the processed data, which can be of two types: 1.If a pure text is returned, a child node will be directly created with that text; 2.Returns a node object in the following format: { simpleMindMap: true, data: { data: { text: '' }, children: [] } }, The representative is data in simple bind map format, and the node data is in the same format as the simple bind map node data. If your processing logic has asynchronous logic, you can also return a promise | | -| errorHandler(v0.6.15+) | Function | | Custom error handling functions currently only throw some asynchronous logic errors. Can pass a function that takes two parameters, the first being the wrong type and the second being the wrong object | | -| disableMouseWheelZoom(v0.6.15+) | Boolean | false | Prohibit mouse wheel scaling, you can still use the API for scaling | | -| enableDblclickReset(v0.6.17+)(v0.8.0+this attribute has been deleted) | Boolean | true(v0.7.0+changed to false) | Turn on the mouse and double-click to reset the position and zoom of the mind map | | -| enableDblclickBackToRootNode(v0.8.0+) | Boolean | false | Whether to return to the root node when double clicking with the mouse, that is, to center the display of the root node | | -| hoverRectColor(v0.7.0+) | String | rgb(94, 200, 248) | The node mouse hover and the rectangular border color displayed when activated will add a transparency of 0.6 when hovering | | -| hoverRectPadding(v0.7.0+) | Number | 2 | The distance between the node mouse hover and the displayed rectangular border when activated and the node content | | -| selectTextOnEnterEditText(v0.7.0+) | Boolean | true | Is the text selected by default when double-clicking a node to enter node text editing? By default, it will only be selected when creating a new node | | -| deleteNodeActive(v0.7.1+) | Boolean | true | Enable the function of automatically activating adjacent nodes or parent nodes after deleting nodes | | -| fit(v0.7.1-fix.2+) | Boolean | false | Is the first rendering scaled to fit the canvas size | | -| tagsColorMap(v0.7.2+) | Object | {} | The color of a custom node label can be transferred to an object, where key is the label content to be assigned a color, and value is the color of the label content. If not transferred internally, a corresponding color will be generated based on the label content | | -| cooperateStyle(v0.7.3+) | Object | { avatarSize: 22, fontSize: 12 } | The configuration of personnel avatar style during node collaboration editing, with field meanings as follows: avatar size, and if it is a text avatar, the size of the text | | -| onlyOneEnableActiveNodeOnCooperate(v0.9.8+) | Boolean | false | During collaborative editing, the same node cannot be selected by multiple people at the same time | | -| defaultGeneralizationText(v0.8.0+) | String | 概要 | Insert default text for summary | | -| handleIsSplitByWrapOnPasteCreateNewNode(v0.8.0+) | Function / null | null | When creating a new node by pasting text, control whether to automatically split the nodes based on line breaks. If there is a line break, multiple nodes will be created based on the line break. Otherwise, only one node will be created, and a function can be passed to return promise. resolve represents splitting based on line breaks, and reject represents ignoring line breaks | | -| addHistoryTime(v0.8.0+) | Number | 100 | Only one historical record can be added within the specified time to avoid adding unnecessary intermediate states. Unit: ms | | -| isDisableDrag(v0.8.1+) | Boolean | false | Is disable dragging the canvas | | -| highlightNodeBoxStyle(v0.9.0+) | Object | { stroke: 'rgb(94, 200, 248)', fill: 'transparent' } | Highlight box style when the mouse moves into the summary to highlight the node it belongs to | | -| createNewNodeBehavior(v0.9.1+) | String | default | Behavior when creating a new node. default(By default, newly created nodes will be activated and enter editing mode. If multiple new nodes are created simultaneously, they will only be activated and will not enter editing mode)、notActive(Do not activate newly created nodes)、activeOnly(Only activate newly created nodes and do not enter editing mode) | | -| defaultNodeImage(v0.9.1-fix.2+) | String | | Image address, the default image displayed when node image loading fails | | -| handleNodePasteImg(v0.9.2+) | null or Function | null | The processing method for pasting images from the clipboard on a node is to convert them into data:URL data and insert them into the node by default. You can use this method to upload image data to the server and save the URL of the image. An asynchronous method can be passed to receive image data of Blob type, and the specified structure needs to be returned: { url, size: {width, height} } | | -| isLimitMindMapInCanvas(v0.9.2+) | Boolean | false | Whether to limit the mind map within the canvas. For example, when dragging to the right, the leftmost part of the mind map graphic will not be able to continue dragging to the right when it reaches the center of the canvas, and the same applies to other things | | -| beforeShortcutRun(v0.9.9+) | Function、null | null | The lifecycle function before the shortcut operation is about to be executed, returning true can prevent the operation from executing. The function takes two parameters: key(Shortcut key)、activeNodeList(List of currently activated nodes) | | -| resetScaleOnMoveNodeToCenter(v0.9.12+) | Boolean | false | Whether to reset the scaling level to 100% when moving nodes to the canvas center, returning to the root node, and other operations(This option actually affects the render. moveNodeToCenter method, and the moveNodeToCenter method itself also has a second parameter, resetScale, to set whether to reset. If the resetScale parameter is not passed, then use resetScaleOnMoveNodeToCenter configuration; otherwise, use resetScale configuration) | | -| createNodePrefixContent(v0.9.12+) | Function、null | null | Add additional node pre content.Pre content refers to the pre content in the area of the same line as the text, excluding the node image section.You can pass a function that takes the parameters of a node instance, Can return objects in {el, width, height} format, el is a DOM node object, width and height represent the width, height, and numerical type of the content. If custom content is not required, null can also be returned | | -| createNodePostfixContent(v0.9.12+) | Function、null | null | Add additional node post content.Post content refers to the post content in the area of the same line as the text, excluding the node image section. The usage is the same as createNodePrefixContent | | -| disabledClipboard(v0.10.2+) | Boolean | false | Is prohibit pasting data from the user's clipboard and writing copied node data to the user's clipboard. At this time, only node data from the canvas can be copied and pasted | | -| customHyperlinkJump(v0.10.2+) | null、Function | false | Customize the jump of hyperlinks. If not passed, the hyperlink will be opened as a new window by default, and a function can be passed, The function takes two parameters: link(The URL of the hyperlink)、node(Node instance to which it belongs), As long as a function is passed, it will block the default jump | | -| openPerformance(v0.10.4+) | Boolean | false | Whether to enable performance mode or not, by default, all nodes will be rendered directly, regardless of whether they are in the visible area of the canvas. This will cause a lag when there are a large number of nodes (1000+). If your data volume is large, you can enable performance mode through this configuration, that is, only rendering nodes within the visible area of the canvas, and not rendering nodes beyond it. This will greatly improve rendering speed, but of course, it will also bring some other problems, such as: 1. When dragging or scaling the canvas, real-time calculation and rendering of nodes without nodes will be performed, which will bring some lag; When exporting images, SVG, and PDF, all nodes need to be rendered first, so it may be slower; 3. Other currently undiscovered issues | | -| performanceConfig(v0.10.4+) | Object | { time: 250, padding: 100, removeNodeWhenOutCanvas: true } | Performance optimization mode configuration. time(How often do nodes refresh after a view change. Unit:ms)、padding(Still rendering nodes beyond the specified range around the canvas)、removeNodeWhenOutCanvas(Is the node deleted from the canvas after being moved out of the visible area of the canvas) | | - -### 1.1Data structure - -The basic data structure is as follows: - -```js -{ - data: { - text: '', // The text of the node can be rich text, which is in HTML format. In this case, richText should be set to true - richText: false, // Is the text of the node in rich text mode - expand: true, // Whether the node is expanded - uid: '',// The unique ID of the node, which may not be passed, will be generated internally - icon: [], // The format of the icon can be found in the "插入和扩展节点图标" section of the tutorial - image: '', // URL of the image - imageTitle: '', // The title of the image can be blank - imageSize: { // The size of the image - width: 100, // The width of the image, mandatory - height: 100, // The height of the image is mandatory - custom: false // If set to true, the display size of the image is not controlled by the theme, and is based on imageSize.width and imageSize.height - }, - hyperlink: '', // Hyperlink address - hyperlinkTitle: '', // Title of hyperlink - note: '', // Content of remarks - tag: [], // Tag list, Prior to v0.10.3, only string arrays, i.e. ['tag'], were supported. However, v0.10.3+versions support object arrays, i.e. [{text: 'tag', style: {}}]. The specific supported label styles can refer to the "Tag Styles" below - generalization: [{// (Arrays are not supported in versions below 0.9.0, and only a single summary data can be set)The summary of the node, if there is no summary, the generalization can be set to null - text: '', // Summary Text - richText: false, // Is the text of the node in rich text mode - // ...The fields of other ordinary nodes are supported, But it does not support children - }], - associativeLineTargets: [''],// If there are associated lines, then it is the uid list of the target node - associativeLineText: '',// Association Line Text - // ...For other style fields, please refer to the topic - }, - children [// Child nodes, with consistent structure and root nodes - { - data: {}, - children: [] - } - ] -} -``` - -If you want to add custom fields, you can add them to the same level as 'data' and 'children'. If you want to add them to the 'data' object, please use the `_` Name your custom field at the beginning, and it will be used internally to determine whether it is a custom field. - -##### Tag Styles - -The style object of the tag supports the following properties: - -| Field Name | Type | Default Value | Description | -| ----------- | ------ | -------- | ----------- | -| radius | Number | 3 | The corner size of the tag rectangle | -| fontSize | Number | 12 | Font size, it is recommended that the height of the text should not exceed height | -| fill | String | | Background color of tag rectangle | -| height | Number | 20 | Height of tag rectangle | -| paddingX | Number | 8 | Horizontal margin, if width is set, this configuration will be ignored | -| width | Number | | The width of the tag rectangle, if not set, defaults to the width of the text plus paddingX * 2 | - -### 1.2Icon Configuration - -| Field Name | Type | Default Value | Description | -| ----------- | ------ | ------------------------------------------- | ------------------------------------------------------------ | -| name | String | | The name of the icon group | -| type | String | | Values for icon grouping | -| list | Array | | A list of icons under grouping, with each item in the array being an object, `{ name: '', icon: '' }`,`name`represents the name of the icon, `icon`represents the icon, Can be an `svg` icon, such as ``, also can be a image `url`, or `base64` icon, such as `data:image/png;base64,...` | - -### 2.Export plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| exportPadding | Number | 20 | The padding for exporting images | | -| exportPaddingX(v0.5.5+) | Number | 10 | Horizontal padding of graphics when exporting PNG, SVG, and PDF | | -| exportPaddingY(v0.5.5+) | Number | 10 | Vertical padding of graphics when exporting PNG, SVG, and PDF | | -| resetCss(v0.6.16+) | String | * { margin: 0; padding: 0; box-sizing: border-box; } | When exporting images and SVGs, the default style overlay for rich text node content, which is embedded in HTML nodes in SVGs, will occur. If not overlaid, the node content will be offset | | -| minExportImgCanvasScale(v0.7.0+) | Number | 2 | The scaling factor of canvas when exporting images and PDFs, which is set to the maximum value of window.devicePixelRatio to improve image clarity | | -| addContentToHeader(v0.9.9+) | Function、null | null | Add custom content to the header when exporting PNG, SVG, and PDF. Can pass a function that can return null to indicate no content is added, or it can return an object, For a detailed introduction, please refer to section 【How to add custom content when exporting】 below | | -| addContentToFooter(v0.9.9+) | Function、null | null | The basic definition is the same as addContentToHeader, adding custom content at the end | | -| handleBeingExportSvg(v0.10.1+) | Function、null | null | When exporting PNG, SVG, and PDF, the SVG data on the canvas will be obtained for cloning, and then exported through the cloned elements. If you want to do some processing on the cloned elements, such as adding, replacing, or modifying some of them, you can pass a processing function through this parameter to receive the SVG element object. After processing, you need to return the original SVG element object.(It should be noted that the node object refers to the element object of the @ svgdotjs/svg. js library, so you need to read the documentation of the library to operate this object) | | - -#### 2.1How to add custom content when exporting - -The two instantiation options `addContentToHeader` and `addContentToFooter` can be used to add custom content at the beginning and end when exporting `png`、`svg`、`pdf`, The default value is `null`, which means no configuration. A function can be passed and can return `null`, which means no content will be added. If you want to add content, you need to return the following structure: - -``` -{ - el,// Custom DOM node to be added, styles can be inline - cssText,// Optional, if the style does not want to be inlined, you can pass this value as a CSS string - height: 50// The height of the returned DOM node must be passed -} -``` - -A simple example: - -```js -new MindMap({ - addContentToFooter: () => { - const el = document.createElement('div') - el.className = 'footer' - el.innerHTML = 'From: simple-mind-map' - const cssText = ` - .footer { - width: 100%; - height: 30px; - } - ` - return { - el, - cssText, - height: 30 - } - } -}) -``` - -### 3.Select plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| selectTranslateStep | Number | 3 | The canvas offset when mouse moves to the edge during multi-select node | | -| selectTranslateLimit | Number | 20 | The distance from the edge when the canvas begins to offset during multi-select node | | - -### 4.Drag plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| enableFreeDrag(v0.2.4+) | Boolean | false | Enable node free(Free drag means that nodes can be dragged to any position on the canvas. Please note that it is not a function of dragging nodes to become siblings of other nodes. The connection of free drag may have certain problems, so it is best not to use this feature) drag | | -| nodeDragPlaceholderMaxSize(v0.6.12+)(v0.10.0+ has been abolished) | Number | 20 | When dragging an element, the maximum height of the block indicating the new position of the element | | -| autoMoveWhenMouseInEdgeOnDrag(v0.7.1+) | Boolean | true | Whether to enable automatic canvas movement when the mouse moves to the edge of the canvas while dragging nodes | | -| dragMultiNodeRectConfig(v0.7.2+) | Object | { width: 40, height: 20, fill: 'rgb(94, 200, 248)' } | The style configuration of the schematic rectangle that moves with the mouse when dragging multiple nodes, passing an object, and the field meanings are the width, height, and fill color of the rectangle | | -| dragPlaceholderRectFill(v0.7.2+) | String | rgb(94, 200, 248) | The filling color of the schematic rectangle for the new position when dragging nodes. | | -| dragPlaceholderLineConfig(v0.10.0+) | Object | { color: 'rgb(94, 200, 248)', width: 2 } | Style configuration of schematic lines for new positions when dragging nodes | | -| dragOpacityConfig(v0.7.2+) | Object | { cloneNodeOpacity: 0.5, beingDragNodeOpacity: 0.3 } | The transparency configuration during node dragging, passing an object, and the field meanings are: the transparency of the cloned node or rectangle that follows the mouse movement, and the transparency of the dragged node | | -| beforeDragEnd(v0.10.1+) | null、Function | null | This function is called just before the drag is completed. The function receives an object as a parameter: {overlapNodeUid,prevNodeUid,nextNodeUid,beingDragNodeList}, represents drag and drop information. If you want to prevent this drag and drop, you can return true. At this time, the node.drag event will not be triggered again. Functions can be asynchronous and return Promise instances. 'beingDragNodeList' is a newly added callback parameter for v0.10.2+, which is the list of nodes that are currently being dragged | | -| handleDragCloneNode(v0.10.1+) | null、Function | null | When dragging a single node, the dragged node will be cloned. If you want to modify the cloned node, you can provide a processing function through this option, which receives the cloned node object.(It should be noted that the node object refers to the element object of the @svgdotjs/svg.js library, so you need to read the documentation of the library to operate this object) | | -| beforeDragStart(v0.10.2+) | null、Function((nodeList) => {}) | null | This function is called just before the node is dragged. The function receives the list of node instances to be dragged as parameters. If you want to prevent this drag, you can return true. It can be an asynchronous function that returns a Promise instance | | - -### 5.Watermark plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| watermarkConfig(v0.2.4+) | Object | | Watermark config, Please refer to the table 【Watermark config】 below for detailed configuration | | - -#### 5.1Watermark config - -| Field Name | Type | Default Value | Description | -| ----------- | ------ | ------------------------------------------- | ------------------------------------------------------------ | -| text | String | '' | Watermark text. If it is an empty string, the watermark will not be displayed | -| lineSpacing | Number | 100 | Spacing between watermark lines | -| textSpacing | Number | 100 | Spacing between watermarks in the same row | -| angle | Number | 30 | Tilt angle of watermark, range: [0, 90] | -| textStyle | Object | {color: '#999', opacity: 0.5, fontSize: 14} | Watermark text style | -| onlyExport(v0.9.2+) | Boolean | false | Is only add watermarks during export | -| belowNode(v0.10.0+) | Boolean | false | Is the watermark displayed below the node | - -### 6.AssociativeLine plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| defaultAssociativeLineText(v0.5.11+) | String | 关联 | Association Line Default Text | | -| associativeLineIsAlwaysAboveNode(v0.8.0+) | Boolean | true | Is the associated line always displayed above the node? If set to false, it will be at the top level when creating and activating the associated line, and in other cases, it will be below the node | | -| associativeLineInitPointsPosition(v0.9.5+) | null / { from, to } | { from: '', to: '' } | By default, the position of the two endpoints of a newly created association line is calculated based on the relative position of the center points of the two nodes. If you want to fix the position, you can configure it through this option. If neither from nor to is transmitted, they will be automatically calculated. If only one is transmitted, the other will be automatically calculated. from and to optional values -:left、top、bottom、right | | -| enableAdjustAssociativeLinePoints(v0.9.5+) | Boolean | true | Is it allowed to adjust the position of the two endpoints of the associated line | | - -### 7.RichText plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| richTextEditFakeInPlace(v0.6.13+) | Boolean | false | Set the rich text node edit box to match the size of the node, creating a pseudo in place editing effect. It should be noted that only when there is only text within the node and the shape is rectangular, can the effect be better | | -| transformRichTextOnEnterEdit(v0.10.0+) | null、Function | null | To convert rich text content, you can pass a function that will be called when entering rich text editing. The function receives the rich text content that is about to be edited and needs to return the processed rich text content | | -| beforeHideRichTextEdit(v0.10.0+) | null、Function | null | You can pass a function that will be executed before the end of rich text editing. The function receives a richText instance, so you can update the kill document data at this time | | - -### 8.TouchEvent plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| disableTouchZoom(v0.8.1+) | Boolean | false | Prohibit double finger scaling, you can still use the API for scaling, which takes effect on the TouchEvent plugin | | -| minTouchZoomScale(v0.10.1+) | Number | 20 | Allow maximum and minimum scaling values, percentage, pass -1 to indicate no restrictions | | -| maxTouchZoomScale(v0.10.1+) | Number | -1 | Same as minTouchZoomScale | | - -### 9.Scrollbar plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| isLimitMindMapInCanvasWhenHasScrollbar(v0.9.2+) | Boolean | true | When registering the Scrollbar plugin, will the mind map be limited to the canvas and the isLimitMindMapInCanvas configuration no longer work | | - -### 10.Search plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| isOnlySearchCurrentRenderNodes(v0.9.8+) | Boolean | false | Is it necessary to only search for the current rendered node, and nodes that have been collapsed will not be searched for | | - -### 11.Cooperate plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| beforeCooperateUpdate(v0.9.8+) | Function、null | null | During collaborative editing, node operations are about to be updated to the lifecycle functions of other clients. The function takes an object as a parameter:{ type: 【createOrUpdate(Create or update nodes)、delete(Delete node)】, list: 【Array type, 1.When type=createOrUpdate, it represents the node data that has been created or updated, which will be synchronized to other clients, so you can modify the data; 2.When type=delete, represents the deleted node data】 } | | - -### 12.RainbowLines plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| rainbowLinesConfig(v0.9.9+) | Object | { open: false, colorsList: [] } | Rainbow line configuration requires registering the RainbowLines plugin first. Object type, Structure: { open: false【Is turn on rainbow lines】, colorsList: []【Customize the color list for rainbow lines. If not set, the default color list will be used】 } | | - -### 13.Demonstrate plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | -| demonstrateConfig(v0.9.11+) | Object、null | null | Demonstration plugin configuration. If not transmitted, the default configuration will be used. An object can be transmitted. If only a certain property is configured, only that property can be set. Other properties that have not been set will also use the default configuration. For complete configuration, please refer to the 【Demonstration Plugin Configuration】 section below | | - -#### 13.1Demonstration Plugin Configuration - -| Field Name | Type | Default Value | Description | -| ----------- | ------ | ------------------------------------------- | ------------------------------------ | -| boxShadowColor | String | rgba(0, 0, 0, 0.8) | The color of the area around the highlighted box | -| borderRadius | String | 5px | The size of the rounded corners of the highlighted box | -| transition | String | all 0.3s ease-out | Transition properties of highlight box animation and CSS transition properties | -| zIndex | Number | 9999 | The hierarchy of highlighted box elements | -| padding | Number | 20 | The inner margin of the highlighted box | -| margin | Number | 50 | The outer margin of the highlighted box | -| openBlankMode(v0.9.12+) | Boolean | true | Is enable fill in the blank mode, where underlined text is not displayed by default and only displayed sequentially by pressing the enter key | - -#### 14.Formula plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | Do you want to enable direct editing of mathematical formulas in the rich text editing box | -| katexFontPath(v0.10.3+) | String | https://unpkg.com/katex@0.16.11/dist | The request path for font files in the Katex library. Font files will only be requested when Katex's output is configured as html. The current configuration can be obtained through the mindMap.formula.getKatexConfig() method. The font file can be found in node_modules: katex/dist/fonts/. You can upload it to your server or CDN. The final font request path is `${katexFontPath}fonts/KaTeX_AMS-Regular.woff2`, which can be concatenated by oneself to test whether it can be accessed | -| getKatexOutputType(v0.10.3+) | Function、null | null | Customize the output mode of the Katex library. By default, when the Chrome kernel is below 100, html mode will be used. Otherwise, mathml mode will be used. If you have your own rules, you can pass a function that returns either mathml or html | - -#### 15.OuterFrame plugin - -| Field Name | Type | Default Value | Description | Required | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| outerFramePaddingX(v0.10.3+) | Number | 10 | Horizontal inner margin of the outer frame | -| outerFramePaddingY(v0.10.3+) | Number | 10 | Vertical inner margin of the outer frame | - -## Static methods - -### defineTheme(name, config) - -> v0.2.23+ - -Define new theme. - -`name`:New theme name - -`config`:New theme config - -`Simple-mind-map ` Built-in many themes. In addition, you can register new theme. It is recommended to register before instantiation, so that you can directly use the newly registered theme during instantiation. Use example: - -```js -import MindMap from 'simple-mind-map' -// 注册新主题 -MindMap.defineTheme('Theme name', {}) - -// 1.实例化时使用新注册的主题 -const mindMap = new MindMap({ - theme: 'Theme name' -}) - -// 2.动态切换新主题 -mindMap.setTheme('Theme name') -``` - -For all configurations of theme, please refer to [Default Topic](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/default.js). The `defineTheme`method will merge the configuration you passed in with the default configuration. Most of the themes do not need custom many parts. For a typical customized theme configuration, please refer to [blueSky](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/blueSky.js). - -### usePlugin(plugin, opt = {}) - -> v0.3.0+ - -- `opt`:v0.4.0+,Plugin options. If a plugin supports custom options, it can be passed in through this parameter. - -If you need to use some non-core functions, such as mini map, watermark, etc, you can register plugin through this method. Can be called in chain. - -Note: The plugin needs to be registered before instantiating `MindMap`. - -### hasPlugin(plugin) - -> v0.4.0+ - -Get whether a plugin is registered, The index of the plugin in the registered plugin list is returned, If it is `-1`, it means that the plugin is not registered. - - -## Static props - -### pluginList - -> v0.3.0+ - -List of all currently registered plugins. - -## Instance props - -### el - -Container element. - -### opt - -Config options object. - -### svg - -> @svgdotjs/svg.js library calls the node instance returned by the SVG() method - -Canvas SVG element. - -### draw - -> @svgdotjs/svg.js library calls the node instance returned by the group() method -> -> Child node of SVG node - -Container element, used to carry content such as nodes and connections. - -### lineDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js library calls the node instance returned by the group() method -> -> Child node of draw node - -Container for node wiring elements. - -### nodeDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js library calls the node instance returned by the group() method -> -> Child node of draw node - -Container for node elements. - -### associativeLineDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js library calls the node instance returned by the group() method -> -> Available when the associated line plugin is registered -> -> Child node of draw node - -Container for associative line content. - -### otherDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js library calls the node instance returned by the group() method -> -> Child node of draw node - -Container for other content. - -### elRect - -The size and position information of the container element 'el'. The return result of calling the 'getBoundingClientRect()' method. - -### width - -The width of the container element 'el'. - -### height - -The height of the container element 'el'. - -### themeConfig - -Current Theme Configuration. - -## Instance methods - -### getElRectInfo() - -Update the position and size information of container elements. Be sure to call this method to update information when the position of container elements on the page changes. If the size of container elements has also changed, please call the 'resize' method. - -### updateData(data) - -> v0.9.9+ - -Update canvas data. If the new data is formed by adding, deleting, modifying, and querying based on the current canvas node data, this method can be used to update the canvas data. The performance will be better, and not all nodes will be recreated, but rather reused as much as possible. - -### clearDraw() - -> v0.8.0+ - -Clear `lineDraw`、`associativeLineDraw`、`nodeDraw`、`otherDraw` containers. - -### destroy() - -> v0.6.0+ - -Destroy mind maps. It will remove registered plugins, remove listening events, and delete all nodes on the canvas. - -### getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false, addContentToHeader, addContentToFooter, node }) - -> v0.3.0+ - -`paddingX`: Padding x - -`paddingY`: Padding y - -`ignoreWatermark`:v0.8.0+, Do not draw watermarks. If you do not need to draw watermarks, you can pass 'true' because drawing watermarks is very slow - -`addContentToHeader`:v0.9.9+, Function, You can return the custom content to be added to the header, as detailed in the configuration in 【Instantiation options】 - -`addContentToFooter`:v0.9.9+, Function, You can return the custom content to be added to the tail, as detailed in the configuration in 【Instantiation options】 - -`node`: v0.9.11+, Node instance, if passed, only export the content of that node - -Get the `svg` data and return an object. The detailed structure is as follows: - -```js -{ - svg, // Element, the overall svg element of the mind map graphics, including: svg (canvas container), g (actual mind map group) - svgHTML, // String, svg string, i.e. html string, can be directly rendered to the small map container you prepared - rect: // Object, position, size, etc. of mind map graphics before zoom - origWidth, // Number, canvas width - origHeight, // Number, canvas height - scaleX, // Number, horizontal zoom value of mind map graphics - scaleY, // Number, vertical zoom value of mind map graphics - clipData// v0.9.11+,If node is passed, that is, the content of the specified node is exported, then this field will be returned, Represents the position coordinate data of the node region cropped from the complete image -} -``` - -### render(callback) - -- `callback`: `v0.3.2+`, `Function`, Called when the re-rendering is complete - -Triggers a full rendering, which will reuse nodes for better performance. If -only the node positions have changed, this method can be called to `reRender`. - -### reRender(callback) - -- `callback`: `v0.3.2+`, `Function`, Called when the re-rendering is complete - -Performs a full re-render, clearing the canvas and creating new nodes. This has -poor performance and should be used sparingly. - -### resize() - -After the container size has changed, this method should be called to adjust. - -### setMode(mode) - -> v0.1.7+ - -Switches between readonly and edit mode. - -`mode`:readonly、edit - -### on(event, fn) - -Listen to an event. Event list: - -| Event Name | Description | Callback Parameters | -| -------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------- | -| data_change | Tree rendering data change, listen to this method to get the latest data | data (current tree rendering data) | -| view_data_change(v0.1.1+) | View change data, such as when dragging or zooming | data (current view state data) | -| back_forward | Forward or backward | activeHistoryIndex (current index in the history data array), length (current length of the history data array) | -| draw_click | Canvas click event | e (event object) | -| svg_mousedown | svg canvas mouse down event | e (event object) | -| mousedown | el element mouse down event | e (event object), this (Event event class instance) | -| mousemove | el element mouse move event | e (event object), this (Event event class instance) | -| drag | If it is a drag event while holding down the left button | e (event object), this (Event event class instance) | -| mouseup | el element mouse up event | e (event object), this (Event event class instance) | -| mousewheel | Mouse scroll event | e (event object), dir (up or down scroll. v0.9.2+ changed to dirs, array type, which supports saving multiple directions simultaneously), this (Event event class instance) 、isTouchPad(v0.6.1+, Is it an event triggered by the touchpad) | -| contextmenu | svg canvas right mouse button menu event | e (event object) | -| node_click | Node click event | this (node instance), e (event object) | -| node_mousedown | Node mouse down event | this (node instance), e (event object) | -| node_mouseup | node mouseup event | this (node instance), e (event object) | -| node_mouseup | Node mouseup event | this (node instance), e (event object) | -| node_dblclick | Node double-click event | this (node instance), e (event object) | -| node_contextmenu | Node right-click menu event | e (event object), this (node instance) | -| node_mouseenter(v0.4.1+) | Node mouseenter event | this (node instance), e (event object) | -| node_mouseleave(v0.4.1+) | Node mouseleave event | this (node instance), e (event object) | -| before_node_active | Event before node activation | this (node instance), activeNodeList (current list of active nodes) | -| node_active | Node activation event | this (node instance), activeNodeList (current list of active nodes) | -| expand_btn_click | Node expand or collapse event | this (node instance) | -| before_show_text_edit | Event before node text edit box opens | | -| hide_text_edit | Node text edit box close event【The end of text editing for the associated line will also trigger this event, and there are no callback parameters at this time, so defensive programming is necessary】 | textEditNode (text edit box DOM node), activeNodeList (current list of active nodes) 、node(v0.10.2+, Node instance for current text editing) | -| scale | Canvas zoom event | scale (zoom ratio) | -| translate(v0.9.10+) | Canvas movement event | x(translate x)、y(translate y) | -| node_img_dblclick(v0.2.15+) | Node image double-click event | this (node instance), e (event object) | -| node_img_mouseenter(v0.6.5+) | Node image mouseenter event | this(node instance)、imgNode(img node)、e(event object) | -| node_img_mouseleave(v0.6.5+) | Node image mouseleave event | this(node instance)、imgNode(img node)、e(event object) | -| node_img_mousemove(v0.6.5+) | Node image mousemove event | this(node instance)、imgNode(img node)、e(event object) | -| node_tree_render_end(v0.2.16+) | Node tree render end event | | -| node_tree_render_start(v0.10.0+) | Node tree start rendering event | | -| rich_text_selection_change(v0.4.0+) | Available when the `RichText` plugin is registered. Triggered when the text selection area changes when the node is edited | hasRange(Whether there is a selection)、rectInfo(Size and location information of the selected area)、formatInfo(Text formatting information of the selected area) | -| transforming-dom-to-images(v0.4.0+) | Available when the `RichText` plugin is registered. When there is a `DOM` node in `svg`, the `DOM` node will be converted to an image when exporting to an image. This event will be triggered during the conversion process. You can use this event to prompt the user about the node to which you are currently converting | index(Index of the node currently converted to)、len(Total number of nodes to be converted) | -| node_dragging(v0.4.5+) | Triggered when a node is dragged | node(The currently dragged node) | -| node_dragend(v0.4.5+) | Triggered when the node is dragged and ends | { overlapNodeUid, prevNodeUid, nextNodeUid }(v0.6.12+,The node uid to which the node is moved this time, for example, if it is moved to node A, then the overlayNodeUid is the uid of node A. If it is moved to the front of node B, then the nextNodeUid is the uid of node B. You can obtain the node instance through the mindMap. extender.findNodeByUid(uid) method) | -| associative_line_click(v0.4.5+) | Triggered when an associated line is clicked | path(Connector node)、clickPath(Invisible click line node)、node(Start node)、toNode(Target node) | -| svg_mouseenter(v0.5.1+) | Triggered when the mouse moves into the SVG canvas | e(event object) | -| svg_mouseleave(v0.5.1+) | Triggered when the mouse moves out of the SVG canvas | e(event object) | -| node_icon_click(v0.6.10+) | Triggered when clicking on an icon within a node | this(node instance)、item(Click on the icon name)、e(event object)、node(Icon node, v0.9.9+) | -| node_icon_mouseenter(v0.9.9+) | Triggered when the mouse moves into an icon within a node | this(node instance)、item(Click on the icon name)、e(event object)、node(Icon node) | -| node_icon_mouseleave(v0.9.9+) | Triggered when the mouse moves out of the icon within the node | this(node instance)、item(Click on the icon name)、e(event object)、node(Icon node) | -| view_theme_change(v0.6.12+) | Triggered after calling the setTheme method to set the theme | theme(theme name) | -| set_data(v0.7.3+) | Triggered when the setData method is called to dynamically set mind map data | data(New Mind Map Data) | -| resize(v0.8.0+) | Triggered after the container size changes, actually when the 'resize' method of the mind map instance is called | | -| beforeDestroy(v0.9.0+) | Triggered before destroying the mind map, i.e. triggered by calling the destroy method | | -| body_mousedown(v0.9.2+) | Mousedown event of document.body | e(event object) | -| body_click | Click event of document.body | e(event object) | -| data_change_detail(v0.9.3+) | The detailed changes in rendering tree data will return an array, with each item representing an update point and each item being an object, There is a 'type' attribute that represents the type of detail, Including 'create' (create node), 'update' (update node), 'delete' (delete node), There is a 'data' attribute that represents the current updated node data. If it is of the 'update' type, there will also be an 'oldData' attribute that saves the data of the node before the update | arr(Detail data) | -| layout_change(v0.9.4+) | Triggered when modifying the structure, i.e. when the mindMap.setLayout() method is called | layout(New layout) | -| node_cooperate_avatar_click(v0.9.9+) | Triggered when the mouse clicks on a person's avatar during collaborative editing | userInfo(User info)、 this(Current node instance)、 node(Avatar node)、 e(Event Object) | -| node_cooperate_avatar_mouseenter(v0.9.9+) | Triggered when the mouse moves over a person's avatar during collaborative editing | userInfo(User info)、 this(Current node instance)、 node(Avatar node)、 e(Event Object) | -| node_cooperate_avatar_mouseleave(v0.9.9+) | Triggered when removing personnel avatars with the mouse during collaborative editing | userInfo(User info)、 this(Current node instance)、 node(Avatar node)、 e(Event Object) | -| exit_demonstrate(v0.9.11+) | Triggered when exiting demonstration mode | | -| demonstrate_jump(v0.9.11+) | Trigger when switching steps in demonstration mode | currentStepIndex(The index of the steps currently played, counting from 0)、stepLength(Total number of playback steps) | -| node_tag_click(v0.9.12+) | Click events on node labels | this(Current node instance)、item(Content of clicked tags)、index(v0.10.3+,The index of this tag in the tag list)、tagNode(v0.10.3+,Tag node, G instance of @svgdotjs/svg.js library, Can be used to obtain label position and size information) | -| node_layout_end(v0.10.1+) | Event where the content layout of a single node is completed | this(Current node instance) | -| node_attachmentClick(v0.9.10+) | Click event for node attachment icon | this(Current node instance)、e(Event Object)、node(Icon node) | -| node_attachmentContextmenu(v0.9.10+) | Right click event on node attachment icon | this(Current node instance)、e(Event Object)、node(Icon node) | -| before_update_config(v0.10.4+) | Triggered before updating the configuration, that is, when the 'mindMap.updateConfig' method is called to update the configuration | opt(The configuration object before updating refers to an object, not a copy, so when the after_uupdate_comfig event is triggered, the object will also change synchronously. Therefore, it is necessary to cache a certain configuration field that you need) | -| after_update_config(v0.10.4+) | Triggered after updating configuration | opt(Updated configuration object) | - -### emit(event, ...args) - -Trigger an event, which can be one of the events listed above or a custom event. - -### off(event, fn) - -Unbind an event. - -### setTheme(theme, notRender = false) - -- `notRender`: v0.8.0+, Is not call the render method to update the canvas. - -Switches the theme. Available themes can be found in the options table above. - -### getTheme() - -Gets the current theme. - -### setThemeConfig(config, notRender = false) - -- `notRender`: v0.8.0+, Is not call the render method to update the canvas. - -Sets the theme configuration. `config` is the same as the `themeConfig` option -in the options table above. - -### getCustomThemeConfig() - -Gets the custom theme configuration. - -### getThemeConfig(prop) - -Gets the value of a specific theme configuration property. - -### getConfig(*prop*) - -> 0.2.24+ - -`prop`:Get the value of the specified configuration, and return the entire configuration if not passed - -Get config, That is, `opt` of `new MindMap (opt)` - -### updateConfig(*opt* = {}) - -> 0.2.24+ - -`opt`:Configuration to update - -Update config,That is update `opt` of `new MindMap(opt)`,You can only update some data, such as: - -```js -mindMap.updateConfig({ - enableFreeDrag: true// 开启节点自由拖拽 -}) -``` - -This method only updates the configuration and has no other side effects, such as triggering canvas re-rendering - -### getLayout() - -Gets the current layout structure. - -### setLayout(layout, notRender = false) - -- `notRender`: v0.8.0+, Is not call the render method to update the canvas. - -Sets the layout structure. Available values can be found in the `layout` field -in the options table above. - -### execCommand(name, ...args) - -Executes a command, which will add a record to the history stack for undo or -redo. All commands are as follows: - -| Command name | Description | Parameters | -| ---------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| SELECT_ALL | Select all | | -| BACK | Go back a specified number of steps | step (the number of steps to go back, default is 1) | -| FORWARD | Go forward a specified number of steps | step (the number of steps to go forward, default is 1) | -| INSERT_NODE | Insert a sibling node, the active node or appoint node will be the operation node. If there are multiple active nodes, only the first one will be effective(v0.7.2+Supports simultaneous insertion of sibling nodes into multiple active nodes) | openEdit(v0.4.6+, Whether to activate the newly inserted node and enter editing mode, default is `true`) 、 appointNodes(v0.4.7+, Optional, appoint node, Specifying multiple nodes can pass an array)、 appointData(Optional, Specify the data for the newly created node, Such as {text: 'xxx', ...}, Detailed structure can be referred to [exampleData.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exampleData.js) )、 appointChildren(v0.6.14+, Optional, Specify the child nodes of the newly created node, array type) | -| INSERT_CHILD_NODE | Insert a child node, the active node or appoint node will be the operation node | openEdit(v0.4.6+, Whether to activate the newly inserted node and enter editing mode, default is `true`)、 appointNodes(v0.4.7+, Optional, appoint node, Specifying multiple nodes can pass an array)、 appointData(Optional, Specify the data for the newly created node, Such as {text: 'xxx', ...}, Detailed structure can be referred to [exampleData.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exampleData.js) )、 appointChildren(v0.6.14+, Optional, Specify the child nodes of the newly created node, array type) | -| UP_NODE | Move node up, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective. Using this command on the root node or the first node in the list will be invalid | | -| DOWN_NODE | Move node down, the active node will be the operation node. If there are multiple active nodes, only the first one will be effective. Using this command on the root node or the last node in the list will be invalid | | -| REMOVE_NODE | Remove node, the active node or appoint node will be the operation node | appointNodes(v0.4.7+, Optional, appoint node, Specifying multiple nodes can pass an array) | -| PASTE_NODE | Paste node to a node, the active node will be the operation node | data (the node data to paste, usually obtained through the renderer.copyNode() and renderer.cutNode() methods) | -| SET_NODE_STYLE | Modify node single style | node (the node to set the style of), prop (style property), value (style property value), isActive (v0.7.0+has been abandoned, boolean, whether the style being set is for the active state) | -| SET_NODE_STYLEs(v0.6.12+) | Modify multiple styles of nodes | node(the node to set the style of)、style(Style object,key is style prop,value is style value)、isActive(v0.7.0+has been abandoned, boolean, whether the style being set is for the active state) | -| SET_NODE_ACTIVE | Set whether the node is active | node (the node to set), active (boolean, whether to activate) | -| CLEAR_ACTIVE_NODE | Clear the active state of the currently active node(s), the active node will be the operation node | | -| SET_NODE_EXPAND | Set whether the node is expanded | node (the node to set), expand (boolean, whether to expand) | -| EXPAND_ALL | Expand all nodes | | -| UNEXPAND_ALL | Collapse all nodes | isSetRootNodeCenter(v0.9.11+,default is true,Will the root node be moved to the center after retracting all nodes) | -| UNEXPAND_TO_LEVEL (v0.2.8+) | Expand to a specified level | level (the level to expand to, 1, 2, 3...) | -| SET_NODE_DATA | Update node data, that is, update the data in the data object of the node data object. Note that this command will not trigger view updates | node (the node to set), data (object, the data to update, e.g. `{expand: true}`) | -| SET_NODE_TEXT | Set node text | node (the node to set), text (the new text for the node), richText(v0.4.0+, If you want to set a rich text character, you need to set it to `true`)、resetRichText(v0.6.10+Do you want to reset rich text? The default is false. If true is passed, the style of the rich text node will be reset) | -| SET_NODE_IMAGE | Set Node Image | node (node to set), imgData (object, image information, structured as: `{url, title, width, height}`, the width and height of the image must be passed) | -| SET_NODE_ICON | Set Node Icon | node (node to set), icons (array, predefined image names array, available icons can be obtained in the nodeIconList list in the [icons.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/svg/icons.js) file, icon name is type_name, such as ['priority_1']) | -| SET_NODE_HYPERLINK | Set Node Hyperlink | node (node to set), link (hyperlink address), title (hyperlink name, optional) | -| SET_NODE_NOTE | Set Node Note | node (node to set), note (note text) | -| SET_NODE_ATTACHMENT(v0.9.10+) | Set node attachment | node(node to set)、url(attachment url)、name(attachment name, optional) | -| SET_NODE_TAG | Set Node Tag | node (node to set), tag (Previous versions before v0.10.3 only support string arrays, i.e. ['tag'], while v0.10.3+versions support object arrays, i.e. [{text: 'tag', style: {} }]) | -| INSERT_AFTER (v0.1.5+) | Move Node to After Another Node | node (node to move, (v0.7.2+supports passing node arrays to move multiple nodes simultaneously)), exist (target node) | -| INSERT_BEFORE (v0.1.5+) | Move Node to Before Another Node | node (node to move, (v0.7.2+supports passing node arrays to move multiple nodes simultaneously)), exist (target node) | -| MOVE_NODE_TO (v0.1.5+) | Move a node as a child of another node | node (the node to move, (v0.7.2+supports passing node arrays to move multiple nodes simultaneously)), toNode (the target node) | -| ADD_GENERALIZATION (v0.2.0+) | Add a node summary | data (the data for the summary, in object format, all numerical fields of the node are supported, default is `{text: 'summary'}`)、openEdit(v0.9.11+,Default is true,Whether to enter text editing status by default) | -| REMOVE_GENERALIZATION (v0.2.0+) | Remove a node summary | | -| SET_NODE_CUSTOM_POSITION (v0.2.0+) | Set a custom position for a node | node (the node to set), left (custom x coordinate, default is undefined), top (custom y coordinate, default is undefined) | -| RESET_LAYOUT (v0.2.0+) | Arrange layout with one click | | -| SET_NODE_SHAPE (v0.2.4+) | Set the shape of a node | node (the node to set), shape (the shape, all shapes: [Shape.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/core/render/node/Shape.js)) | -| GO_TARGET_NODE(v0.6.7+) | Navigate to a node, and if the node is collapsed, it will automatically expand to that node | node(Node instance or node uid to locate)、callback(v0.6.9+, Callback function after positioning completion, v0.9.8+receives a parameter representing the target node instance) | -| INSERT_MULTI_NODE(v0.7.2+) | Insert multiple sibling nodes into the specified node at the same time, with the operating node being the currently active node or the specified node | appointNodes(Optional, specify nodes, specify multiple nodes to pass an array), nodeList(Data list of newly inserted nodes, array type) | -| INSERT_MULTI_CHILD_NODE(v0.7.2+) | Insert multiple child nodes into the specified node simultaneously, with the operation node being the currently active node or the specified node | appointNodes(Optional, specify nodes, specify multiple nodes to pass an array), childList(Data list of newly inserted nodes, array type) | -| INSERT_FORMULA(v0.7.2+) | Insert mathematical formulas into nodes, operate on the currently active node or specified node | formula(Mathematical formula to insert, LaTeX syntax), appointNodes(Optional, specify the node to insert the formula into. Multiple nodes can be passed as arrays, otherwise it defaults to the currently active node) | -| INSERT_PARENT_NODE(v0.8.0+) | Insert a parent node into the specified node, with the operation node being the currently active node or the specified node | openEdit(Activate the newly inserted node and enter editing mode, default to 'true'`)、 appointNodes(Optional, specify the node to insert into the parent node, and specify that multiple nodes can pass an array)、 appointData(Optional, specify the data for the newly created node, such as {text: 'xxx', ...}, Detailed structure can be referenced [exampleData.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exampleData.js)) | -| REMOVE_CURRENT_NODE(v0.8.0+) | Delete only the current node, operate on the currently active node or specified node | appointNodes(Optional, specify the nodes to be deleted, and multiple nodes can be passed as an array) | -| MOVE_UP_ONE_LEVEL(v0.9.6+) | Move the specified node up one level | node(Optional, specify the node to move up the hierarchy, if not passed, it will be the first node in the current active node) | -| REMOVE_CUSTOM_STYLES(v0.9.7+) | One click removal of custom styles for a node | node(Optional, specify the node to clear the custom style, otherwise it will be the first one in the current active node) | -| REMOVE_ALL_NODE_CUSTOM_STYLES(v0.9.7+) | One click removal of multiple nodes or custom styles for all nodes | appointNodes(Optional, node instance array, specifying multiple nodes to remove custom styles from. If not passed, the custom styles of all nodes on the current canvas will be removed) | - -### setData(data) - -Dynamic setting of mind map data, pure node data - -`data`: mind map structure data. V0.9.9+ supports passing empty objects or null, and the canvas will display blank space. - -### setFullData(_data_) - -> v0.2.7+ - -Dynamic setting of mind map data, including node data, layout, theme, view - -`data`: complete data, structure can refer to -[exportFullData](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exportFullData.json) - -### getData(withConfig) - -> v0.2.9+ - -Gets mind map data - -`withConfig`: `Boolean`, default is `false`, that is, the obtained data only -includes the node tree, if `true` is passed, it will also include theme, layout, -view, etc. data - -### export(type, isDownload, fileName) - -> You need to register the `Export` plugin first - -Export - -`type`: the type to be exported, optional values: png, svg, json, pdf (v0.2.1+), -smm (essentially also json) - -`isDownload`: whether to directly trigger download, Boolean value, default is -`false` - -`fileName`: (v0.1.6+) the name of the exported file, default is `思维导图` (mind -map). - -If it is exported as `png`, the fourth parameter can be passed: - -`transparent`: v0.5.7+, `Boolean`, default is `false`, Specify whether the background of the exported image is transparent - -If it is exported as `svg`, the fourth parameter can be passed: - -`plusCssText`: Additional `CSS` style. If there is a `dom` node in `svg`, you can pass in some styles specific to the node through this parameter - -If it is exported as `json` or `smm`, the fourth parameter can be passed: - -`withConfig`: `Boolean`, default is `true`, Specify whether the exported data includes configuration data, otherwise only pure node tree data will be exported - -### toPos(x, y) - -> v0.1.5+ - -Convert the coordinates of the browser's visible window to coordinates relative -to the canvas. - -### addPlugin(plugin, opt) - -> v0.4.0+ - -Register plugin, Use `MindMap.usePlugin` to register plugin only before instantiation, The registered plugin will not take effect after instantiation, So if you want to register the plugin after instantiation, you can use the `addPlugin` method of the instance. - -### removePlugin(plugin) - -> v0.4.0+ - -Remove registered plugin, Plugins registered through the `usePlugin` or `addPlugin` methods can be removed. diff --git a/web/src/pages/Doc/en/constructor/index.vue b/web/src/pages/Doc/en/constructor/index.vue deleted file mode 100644 index 96c91b00..00000000 --- a/web/src/pages/Doc/en/constructor/index.vue +++ /dev/null @@ -1,2060 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/cooperate/index.md b/web/src/pages/Doc/en/cooperate/index.md deleted file mode 100644 index 1ad6b0c4..00000000 --- a/web/src/pages/Doc/en/cooperate/index.md +++ /dev/null @@ -1,132 +0,0 @@ -# Cooperate plugin beta - -> v0.7.3+ - -This plugin is used to achieve collaborative editing. - -## Introduce - -This plugin implements collaborative editing through [Yjs](https://github.com/yjs/yjs). The basic principle is to convert the tree data of the mind map into flat object data, and then collaborate through shared data of type [Y.Map](https://docs.yjs.dev/api/shared-types/y.map). That is, when certain operations are performed on the canvas, the 'y.map' object will be updated, and other collaborative clients will receive the updated data, convert it back to tree structure data, and update the canvas to achieve real-time updates. - -To achieve collaboration, the backend is indispensable, and 'Yjs' provides some [Connection Providers](https://docs.yjs.dev/ecosystem/connection-provider). At the same time, it also provides examples of the backend, but it is only the simplest implementation. In actual projects, you should need to rewrite or improve it. - -You can choose the 'Provider' that suits you, and the default is [y-webrtc](https://github.com/yjs/y-webrtc). - -## demo - -If you want to try it through demo, you can do the following steps: - -1. Clone project and installation dependencies: - -```bash -git clone https://github.com/wanglin2/mind-map.git -cd mind-map -cd simple-mind-map -npm i -npm link -cd .. -cd web -npm i -npm link simple-mind-map -``` - -2. Modify `web/src/pages/Edit/components/Edit.vue` file - -To register Cooperate plugin, uncomment the line: - -```js -// .usePlugin(Cooperate)// Cooperate plugin -``` - -Change the signaling server address to your local IP: - -```js -// cooperateTest function - -signalingList: ['ws://【your ip】:4444'] -``` - -3. To register a collaborative plugin, uncomment the line: - -```bash -// Execute under web path -npm run serve -``` - -4. Start signaling server: - -```bash -// Execute under simple-mind-map path -npm run wsServe -``` - -The command executes the 'simple mind map/bin/wsServer.mjs' file, which is directly copied from the [y webrtc](https://github.com/yjs/y-webrtc) repository and may not be complete. Please be cautious when using it for actual projects. - -5. Access the service address in two browsers: - -``` -http://【your ip】:8080/#/?userName=userName -``` - -You can set different userNames on different browsers. Then you can edit in one browser and see the automatic update in another browser. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Cooperate from 'simple-mind-map/src/plugins/Cooperate.js' -MindMap.usePlugin(Cooperate) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.cooperate`. - -### Config - -This plugin supports some configurations that can be passed in when instantiating a mind map. The supported configurations are as follows: - -`beforeCooperateUpdate` - -Please refer to the 【Instantiation options】 section in the 【Constructor】 section for details. - -## Methods - -### getDoc() - -Obtain Yjs doc instance. - -### setProvider(provider, webrtcProviderConfig) - -- `provider`: The connection provider for Yjs can refer to the [Connection Provider](https://docs.yjs.dev/ecosystem/connection-provider), default is `null` - -- `webrtcProviderConfig`: the options of webrtc provider, An object needs to be passed in the following format: - -```js -{ - roomName: '', // Mandatory, room name - signalingList: [''],// Mandatory, specify signaling server - ...// The other config of webrtc provider -} -``` - -For detailed configuration, please refer to [y-webrtc](https://github.com/yjs/y-webrtc)。 - -Set the connection provider for Yjs. If 'provider' is not transmitted, 'y webrtc' will be used by default. You can also use other 'providers'. - -If the default 'y webrtc' is used, the necessary configuration needs to be passed in through the second parameter. - -`simple-mind-map/bin/wsServer.mjs` file provides a simple signaling server code for testing and reference. - -### setUserInfo(userInfo) - -- `userInfo`: User information. The format is as follows: - -```js -{ - id: '', // Mandatory, user's unique ID - name: '', // User name. Only one name and avatar can be transmitted. If both are transmitted, avatar will be displayed - avatar: '', // User profile - color: '' // If there is no avatar, the first character of the name will be displayed as a circle, and the color of the text will be white. The color of the circle can be set through this field -} -``` - -Set the current user's information for synchronization and display of perceptual data. If other collaborators activate a node, their avatar will be displayed above that node in your current canvas. \ No newline at end of file diff --git a/web/src/pages/Doc/en/cooperate/index.vue b/web/src/pages/Doc/en/cooperate/index.vue deleted file mode 100644 index 934755e6..00000000 --- a/web/src/pages/Doc/en/cooperate/index.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/demonstrate/index.md b/web/src/pages/Doc/en/demonstrate/index.md deleted file mode 100644 index 32c8ac10..00000000 --- a/web/src/pages/Doc/en/demonstrate/index.md +++ /dev/null @@ -1,71 +0,0 @@ -# Demonstrate plugin - -> v0.9.11+ - -The `Demonstrate` plugin provides demonstration functionality. - -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. - -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. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Demonstrate from 'simple-mind-map/src/plugins/Demonstrate.js' - -MindMap.usePlugin(Demonstrate) -``` -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.demonstrate`. - -### Config - -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. - -### Event - -The plugin will dispatch the following events: - -`exit_demonstrate`:Triggered when exiting the demonstration. - -`demonstrate_jump`:Triggered when jumping. - -Please refer to the 'on' function in the 【Instance methods】 section of the 【Constructor】 chapter for details. - -## Props - -### stepList - -List of all steps demonstrated. Available when the 'enter' method is called. - -### currentStepIndex - -The index of the steps currently played, counting from 0. - -### config - -The current configuration of the plugin. - -## Methods - -### enter() - -Entering demonstration mode will automatically display the container elements in full screen. - -### exit() - -Exit demonstration mode, which can also be exited by pressing the 'Esc' key. - -### prev() - -Previous step. - -### next() - -Next step. - -### jump(index) - -- `index`:Number,To jump to a certain step, count from 0. - -Jump to a certain step. \ No newline at end of file diff --git a/web/src/pages/Doc/en/demonstrate/index.vue b/web/src/pages/Doc/en/demonstrate/index.vue deleted file mode 100644 index ec53a280..00000000 --- a/web/src/pages/Doc/en/demonstrate/index.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/deploy/index.md b/web/src/pages/Doc/en/deploy/index.md deleted file mode 100644 index 9049a853..00000000 --- a/web/src/pages/Doc/en/deploy/index.md +++ /dev/null @@ -1,229 +0,0 @@ -# Deploy - -The 'web' directory of this project provides a complete project developed based on the 'simple mind map' library, 'Vue2. x', and 'ElementUI'. The data is stored locally on the computer by default, and can also be manipulated locally on the computer. Originally intended as an online 'demo', it can also be directly used as an online version of the mind map application, online address: [https://wanglin2.github.io/mind-map/](https://wanglin2.github.io/mind-map/). - -If your network environment is slow to access the 'GitHub' service, you can also deploy it to your server. - -## Deploying to a static file server - -The project itself does not rely on the backend, so it can be deployed to a static file server. The following commands can be executed in sequence: - -```bash -git clone https://github.com/wanglin2/mind-map.git -cd mind-map -cd simple-mind-map -npm i -npm link -cd .. -cd web -npm i -npm link simple-mind-map -``` - -Then you can choose to start the local service: - -```bash -npm run serve -``` - -You can also directly package and generate construction products: - -```bash -npm run build -``` - -The packaged entry page 'index.html' can be found in the project root directory, and the corresponding static resources are located in the 'dist' directory under the root directory. The 'html' file will access the resources in the 'dist' directory through relative paths, such as 'dist/xxx'. You can directly upload these two files or directories to your static file server. In fact, this project is deployed to 'GitHub Pages' in this way. - -If you do not have any code modification requirements, it is also possible to directly copy these files from this repository. - -If you want to package 'index.html' into the 'dist' directory as well, you can modify the 'scripts.build' command in the 'web/package.json' file to delete '&& node ../copy.js' from 'vue-cli-service build && node ../copy.js'. - -If you want to modify the directory for packaging output, you can modify the 'outputDir' configuration of the 'web/vue.config.js' file to the path you want to output. - -If you want to modify the path of the 'index. html' file referencing static resources, you can modify the 'publicPath' configuration of the 'web/vue.config.js' file. And the `window.externalPublicPath` config in `web/public/index.html` file. - -In addition, the default route used is 'hash ', which means that there will be '#'in the path. If you want to use the 'history' route, you can modify the 'web/src/router.js' file to: - -```js -const router = new VueRouter({ - routes -}) -``` - -Change to: - -```js -const router = new VueRouter({ - mode: 'history', - routes -}) -``` - -However, this requires backend support, as our application is a single page client application. If the backend is not properly configured, users will return 404 when accessing sub routes directly in the browser. Therefore, you need to add a candidate resource on the server that covers all situations: if the 'URL' cannot match any static resources, the same 'index. html' page should be returned. - -## Docker - -> Thank you very much [水车](https://github.com/shuiche-it), the corresponding Docker package is maintained by him. - -Install directly from Docker Hub: - -``` -docker run -d -p 8081:8080 shuiche/mind-map:latest -``` - -Mindmap has activated port 8080 as the web service entry point in the container. When running the container through Docker, it is necessary to specify a local mapping port. In the above case, we mapped the local port 8081 to the container port 8080. - -After the installation is completed, check the container's running status through 'Docker PS'. - -Open 127.0.0.1:8081 in the browser to use the Web mind map function. - -[在群晖上以 Docker 方式安装](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/) - -## Docking with one's own storage services - -The application data is stored locally in the browser by default, and the local storage capacity of the browser is relatively small, so it is easy to trigger restrictions when inserting more images in the mind map. Therefore, a better choice is to dock with your own storage service, which usually has two ways: - -### The first - -Simply clone the warehouse code and modify the relevant methods in 'web/src/API/index.js' to obtain data from your database and store it in your data. - -### The second - -Many times, you may want to always use the latest code from this repository, so the first method is not very convenient because you need to manually merge the code, so the second method is provided. - -Specific operating steps: - -1. Copy the packaged resources of the web application - -This includes the 'dist' directory and the 'index.html' file. - -2. Modify the copied 'index.html' file - -Firstly, insert the following code into the 'head' tag: - -```js - -``` - -This line of code will prompt the application not to initialize the application 'i.e.: new Vue()', but to give control to you. Next, insert your own 'js' code at the end of the 'body', either inline or out of chain. The inline example is as follows: - -```js - -``` - -As shown above, when you set the 'window.takeOverApp=true' flag, the application will no longer actively instantiate, but will expose the instantiated methods for you to call. You can first request the data of the mind map from the backend, and then register the relevant methods. The application will call internally at the appropriate time to achieve the purpose of echo and save. - -The advantage of doing this is that whenever the code in this repository is updated, you can simply copy the packaged files to your own server. With a slight modification of the 'index. html' page, you can achieve synchronous updates and use your own storage service. - -## Modifying Static Resource Paths - -If you want to maintain synchronous updates with the code in this repository as in the previous section, but also want to modify the storage location of static resources, for example, the default hierarchical relationship is: - -``` --dist ---css ---fonts ---img ---js --logo.ico - --index.html -``` - -And you want to adjust it to this: - -``` --assets ---dist ----css ----fonts ----img ----js --logo.ico - --index.html -``` - -So you can configure the 'window.externalPublicPath' in 'index.html' as the default `./dist/` is modified to: - -```js -window.externalPublicPath = './assets/dist/' -``` - -At the same time, the paths of the inline '.ico', '.js', and '.css' resources in 'index.html' need to be manually modified by you. - -It should be noted that it is best not to adjust the directory hierarchy within the 'dist' directory, otherwise exceptions may occur. - -If you want to replace some of the static resources, such as the theme image and structure image, with your own designed image, you can directly overwrite it with the same name. \ No newline at end of file diff --git a/web/src/pages/Doc/en/deploy/index.vue b/web/src/pages/Doc/en/deploy/index.vue deleted file mode 100644 index 945f3a63..00000000 --- a/web/src/pages/Doc/en/deploy/index.vue +++ /dev/null @@ -1,186 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/doExport/index.md b/web/src/pages/Doc/en/doExport/index.md deleted file mode 100644 index 26d13872..00000000 --- a/web/src/pages/Doc/en/doExport/index.md +++ /dev/null @@ -1,151 +0,0 @@ -# Export plugin - -The `Export` plugin provides the export function. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Export from 'simple-mind-map/src/plugins/Export.js' -// import Export from 'simple-mind-map/src/Export.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(Export) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.doExport`. - -## Methods - -All exported methods are asynchronous and return an instance of `Promise`. You can use the `then` method to obtain data, or use the `async await` function to obtain: - -```js -mindMap.doExport.png().then((data) => { - // ... -}) - -const export = async () => { - let data = await mindMap.doExport.png() - // ... -} -``` - -The returned data is in the format of `data:URL`. You can create an `a` tag to trigger the download: - -```js -let a = document.createElement('a') -a.href = 'xxx.png'// .png、.svg、.pdf、.md、.json、.smm -a.download = 'xxx' -a.click() -``` - -### png(name, transparent = false, node = null) - -> Versions below v0.9.2 are:png(name, transparent = false, checkRotate, compress) - -> Versions below v0.7.0 are: png(name, transparent = false, rotateWhenWidthLongerThenHeight) - -- `name`: Name, optional - -- `transparent`: v0.5.7+, Specify whether the background of the exported image is transparent - -- `rotateWhenWidthLongerThenHeight`: v0.6.15+, V0.7.0+abandoned, Boolean, false, Automatically rotate 90 degrees when the image has a width to height ratio - -- `checkRotate`: v0.7.0+, (v0.9.2+obsolete), Function, You can pass a function that takes two parameters, the width and height of the image, and returns true or false. True represents that the image needs to be rotated by 90 degrees - -- `compress`:v0.8.1+, (v0.9.2+obsolete),null | { width, height }, The parameter for compressing images. In some cases, the length and width of the exported image may be very large. If you want to reduce it, you can use this parameter to control it. Only one width or height can be provided, and it will be scaled proportionally - -- `node`:v0.9.11+,Node instances, if passed, will only export the content of that node; - -Exports as `png`. - -### svg(name, plusCssText) - -- `name`:`svg` title - -- `plusCssText`:v0.4.0+, (v0.6.16+This parameter has been removed and instead passed in through the `resetCss` configuration during instantiation), When node rich text editing is enabled and `domToImage` passes `false`, additional `css` styles can be added. If there is a `dom` node in `svg`, you can set some styles for the node through this parameter, such as: - -```js -svg( - '', - false, - `* { - margin: 0; - padding: 0; - box-sizing: border-box; - }` -) -``` - -Exports as `svg`. - -### pdf(name, transparent = false) - -> v0.8.1:pdf(name, useMultiPageExport, maxImageWidth) - -> v0.2.1+ - -- `name`:File name - -- `useMultiPageExport`: v0.6.15+, (v0.9.2+obsolete), Boolean, false, Whether to export multiple pages, default to single page - -- `maxImageWidth`:v0.8.1+, (v0.9.2+obsolete),null | Number,The default is twice the width of A4 paper, which is a parameter for compressing images. In some cases, the length and width of the image may be very large, resulting in a very large PDF volume. Therefore, if you want to reduce the volume, you can use this parameter to control the maximum width of the image - -- `transparent`:v0.9.2+,Boolean,default is false,Specify whether the background of the exported image is transparent - -Export as `pdf`. Unlike other export methods, this method does not return data and directly triggers the download. - -> In versions before v0.9.3, this method does not return data and will directly trigger the download. - -> After v0.6.0, an additional ExportPDF plugin needs to be registered - -> The internal export of PDF uses the PDF lib library to convert images into PDF. Currently, when exporting PDF with a large number of nodes, some content may be lost. Therefore, it is recommended that capable developers implement the PDF export function themselves. If there are backend developers in the project, they can also seek support from backend developers. - -```js -import ExportPDF from 'simple-mind-map/src/plugins/ExportPDF.js' -MindMap.usePlugin(ExportPDF) -``` - -### json(name, withConfig) - -`name`:It is temporarily useless, just pass an empty string - -`withConfig``:Boolean`, default `true`, Whether the data contains configuration, otherwise it is pure mind map node data - -Return `json` data. - -### md() - -> v0.4.7+ - -Export as `markdown` file. - -### getSvgData(node) - -`node`: v0.9.11+, Node instance, if passed, will return a 'clipData' object, representing the position coordinate data of the node region cropped from the complete image; - -Gets `svg` data, an async method that returns an object: - -```js -{ - node, // svg node - str, // svg string - clipData -} -``` - -### xmind(name) - -> v0.6.6+, an additional ExportXMind plugin needs to be registered - -```js -import ExportXMind from 'simple-mind-map/src/plugins/ExportXMind.js' -MindMap.usePlugin(ExportXMind) -``` - -Export as an `xmind` file type, asynchronous method, returns a `Promise` instance, and the returned data is the `data:url` data of a `zip` compressed package, which can be directly downloaded. - -### txt() - -> v0.9.8+ - -Export as `txt` file. \ No newline at end of file diff --git a/web/src/pages/Doc/en/doExport/index.vue b/web/src/pages/Doc/en/doExport/index.vue deleted file mode 100644 index ab0e13e6..00000000 --- a/web/src/pages/Doc/en/doExport/index.vue +++ /dev/null @@ -1,155 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/drag/index.md b/web/src/pages/Doc/en/drag/index.md deleted file mode 100644 index 45cc986c..00000000 --- a/web/src/pages/Doc/en/drag/index.md +++ /dev/null @@ -1,22 +0,0 @@ -# Drag plugin - -The `Drag` plugin provides the function of node dragging, including: - -1.Drag the node to move and change its position in the node tree, That is, as a child node, sibling node, etc. of other nodes - -2.Drag the node to the custom canvas location - -Please refer to the [Instantiation Options](/mind-map/#/doc/zh/constructor) of the `MindMap` class for configuration. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Drag from 'simple-mind-map/src/plugins/Drag.js' -// import Drag from 'simple-mind-map/src/Drag.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(Drag) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.drag`. - diff --git a/web/src/pages/Doc/en/drag/index.vue b/web/src/pages/Doc/en/drag/index.vue deleted file mode 100644 index 4d77fba9..00000000 --- a/web/src/pages/Doc/en/drag/index.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/formula/index.md b/web/src/pages/Doc/en/formula/index.md deleted file mode 100644 index 949bc7c1..00000000 --- a/web/src/pages/Doc/en/formula/index.md +++ /dev/null @@ -1,85 +0,0 @@ -# Formula plugin - -> v0.7.2+ - -> This plugin is only supported in rich text mode, so it needs to be used after registering the RichText plugin - -This plugin is used to support inserting formulas into nodes. - -> 注意:公式是通过[KaTeX](https://github.com/KaTeX/KaTeX)库实现的,`KaTeX`提供了一些配置,插件默认的一个配置是: - -> Note: The formula is implemented through the [KaTeX](https://github.com/KaTeX/KaTeX) library, and 'KaTeX' provides some configurations. The default configuration for the plugin is: - -```js -{ - output: 'mathml' -} -``` - -> This formula may not render successfully on a few browsers. If you need to be compatible with these browsers, you can consider changing the configuration to 'HTML'. For detailed documentation, please refer to [Options](https://katex.org/docs/options). Using this configuration may require the introduction of a 'KaTeX' style file, which you can test on your own. - -> v0.9.3+will internally determine whether the current Chrome kernel version of the browser is lower than 100, If so, it will automatically convert 'output' from 'mathml' to 'html', At this point, the style file for 'KaTeX' needs to be imported, but it is not imported within the library, so you need to manually import it in the project. If you introduced 'simple-mind-map' through the 'npm' method, you can introduce it as follows: -> -> ```js -> import 'simple-mind-map/node_modules/katex/dist/katex.min.css' -> ``` -> If you are using packaged files such as '.umd.js' or '.esm.js', you can import them through online CDN services, such as `https://unpkg.com/browse/katex@0.16.9/dist/`, Of course, it is best to upload the 'css' file of the 'katex' and the corresponding font files in the 'fonts' directory to your own server. - -> Version v0.10.3+ will default to importing the style files of 'KaTeX'. So you don't need to manually introduce it anymore. When the rendering mode of the Katex library is html, it depends on some font files, which are not included in the plugin. You need to use the `katexFontPath` instantiation option to set the path of the font files. - -## Problem - -1.On some browsers, the formula source code is displayed - -This is because some browsers do not support the 'mathml' output mode of the 'KaTex' library. You can change the output mode to 'html' by using the 'getKatexOutputType' instantiation option. - -2.Sometimes formulas and text may display line breaks - -This is usually because formula rendering uses the 'html' mode, which depends on the font file. Therefore, when rendering the mind map before the font file is loaded, the calculated formula content size may not match the actual formula size after loading the font file, resulting in a row change. We can find a way to make the font file load before rendering the mind map. - -3.SVG files exported on one browser have inconsistent styles when opened on another browser - -Because the calculation of node size depends on the proxy style of the browser, the default style of different browsers is not consistent, so the calculated node size is also inconsistent. - -4.The smm or json file exported on one browser cannot be rendered properly when imported on another browser - -Because some browsers may render in 'mathml' mode, while others may render in 'html' mode, those that support 'mathml' mode usually support 'html', while the opposite is not possible. - -5.Abnormal formula for exporting images when rendering in `html` mode - -This is caused by not loading the font, and there is currently no solution. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Formula from 'simple-mind-map/src/plugins/Formula.js' - -MindMap.usePlugin(Formula) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.formula`. - -## Usage - -After registering the plugin, you can use the command 'INSERT_FORMULA' to insert the specified formula for the node: - -```js -mindMap.execCommand('INSERT_FORMULA', 'a^2') -``` - -The above command will insert the 'a^2' formula into the currently active node. - -If you want to assign a formula to a node or nodes, you can pass the second parameter: - -```js -mindMap.execCommand('INSERT_FORMULA', 'a^2', [Node]) -``` - -Pass in the specified node instance through the second parameter. - -## Methods - -### getKatexConfig() - -Get the current configuration passed to `Katex`. \ No newline at end of file diff --git a/web/src/pages/Doc/en/formula/index.vue b/web/src/pages/Doc/en/formula/index.vue deleted file mode 100644 index 8ac768c9..00000000 --- a/web/src/pages/Doc/en/formula/index.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/handDrawnLikeStyle/index.md b/web/src/pages/Doc/en/handDrawnLikeStyle/index.md deleted file mode 100644 index ab24ae63..00000000 --- a/web/src/pages/Doc/en/handDrawnLikeStyle/index.md +++ /dev/null @@ -1,102 +0,0 @@ -# HandDrawnLikeStyle chargeable plugin - -> Regarding fees -> -> Mind map is an open-source project under the MIT protocol. In theory, as long as the copyright statement of mind map is retained, there is no charge for commercial use, and this protocol will not be changed in the future. Moreover, neither the online version nor the client will consider charging. However, in order to ensure the sustainable development of the project, revenue will be obtained through various means, such as existing sponsorship methods. The second approach is to use paid plugins, with the basic principle that basic functions, core functions, and necessary functions are not charged, while optional additional functions may be charged. -> -> Finally, the fee is only applicable to developers. If it is only the online version or client version of the mind map, users do not need to pay, and all functions can be used for free. - -HandDrawnLikeStyle is the first paid plugin that provides a hand drawn style, where the connections and shapes of nodes become hand drawn, just like the following: - - - -You can also try to turn on the hand drawn style in the online version through the settings of 【 Basic Style 】 - 【 Enable Hand drawn Style 】. - -The internal implementation is through the [rough](https://github.com/rough-stuff/rough) library, so if you have the energy, you can also implement this plugin based on this library yourself. - -## Charge - -At present, the charging method is relatively primitive. By scanning the code and transferring money, please note the plugin you want to purchase and your email address, and then the plugin file will be sent to your email. Purchase should be made after full use and consideration. If you are not familiar with front-end development and do not know how to use plugins, please consider purchasing carefully. There will be no refund unless there are special reasons. If you find bugs or have requirements, you can submit relevant issues. - -Price: - -1.¥ 19.9, Only includes the packaged files, which are in two formats: .cjs.min.js and .esm.min.js. - -2.¥ 29.9, including unpackaged source code and packaged files. - - - - - -## Register - -1.Referencing packaged files: - -```js -import MindMap from 'simple-mind-map' -import HandDrawnLikeStyle from 'handDrawnLikeStyle.cjs.min.js' -// or import HandDrawnLikeStyle from 'handDrawnLikeStyle.esm.min.js' - -MindMap.usePlugin(HandDrawnLikeStyle) -``` - -2.Referencing Unpackaged Source Code - -You can first enter the plugin directory to execute: - -```bash -npm link -``` - -Then enter your project root directory to execute: - -```bash -npm link simple-mind-map-plugin-handdrawnlikestyle -``` - -Then you can directly import it for use: - -```js -import MindMap from 'simple-mind-map' -import HandDrawnLikeStyle from 'simple-mind-map-plugin-handdrawnlikestyle' - -MindMap.usePlugin(HandDrawnLikeStyle) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.handDrawnLikeStyle`. - -After registering the plugin, there is no need to perform other methods and the hand drawn style can take effect. - -If you are using the mindMap.addPlugin method to dynamically register a component, you need to call the method of re rendering once: - -```js -mindMap.addPlugin(HandDrawnLikeStyle) -mindMap.reRender() -``` - -## Methods - -You may not be familiar with the following methods. - -### createPath(svgPathStr) - -- `svgPathStr`:SVG Path string - -Create a hand drawn style path node and return the path node of SVG. - -### createPolygon(points) - -- `points`:Points array - -```js -points:[ - [x1, y1], - ... -] -``` - -Create a hand drawn polygon node and return the Path node of SVG. - -### transformPath(svgPathStr) - -Convert SVG Path strings to hand drawn SVG Path strings. \ No newline at end of file diff --git a/web/src/pages/Doc/en/handDrawnLikeStyle/index.vue b/web/src/pages/Doc/en/handDrawnLikeStyle/index.vue deleted file mode 100644 index 64927785..00000000 --- a/web/src/pages/Doc/en/handDrawnLikeStyle/index.vue +++ /dev/null @@ -1,78 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/introduction/index.md b/web/src/pages/Doc/en/introduction/index.md deleted file mode 100644 index b94aa85b..00000000 --- a/web/src/pages/Doc/en/introduction/index.md +++ /dev/null @@ -1,473 +0,0 @@ -# Introduction - -`simple-mind-map` 【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. - -> 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. -> -> Additionally, a client is provided for download, support `Windows`、`Mac` and `Linux`, [Click here to learn more](/mind-map/#/doc/zh/client)。 - -## Features - -- [x] Pluggable architecture, in addition to core functions, other functions are provided as plugins, which can be used as needed to reduce packaging volume -- [x] Support logical structure chart(Left and Right Logical Structure Diagram), mind map, Organizational chart, directory organization chart, timeline (horizontal and vertical), fishbone chart and other structures -- [x] Built-in multiple themes, allowing for highly customizable styles, and supporting registration of new themes -- [x] Node content supports text (regular text, rich text), images, icons, hyperlinks, notes, labels, summaries, and math formulas -- [x] 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 -- [x] Support canvas dragging and scaling -- [x] Supports two multi node selection methods: mouse button drag selection and Ctrl+left button selection -- [x] Supoorts to export as `json`、`png`、`svg`、`pdf`、`markdown`、`xmind`、`txt`, support import from `json`、`xmind`、`markdown` -- [x] Support shortcut keys, forward and backward, correlation lines, search and replacement, small maps, watermarks, scrollbar, Hand drawn style, and rainbow lines -- [x] Provide rich configurations to meet various scenarios and usage habits -- [x] Support collaborative editing -- [x] Support demonstration mode - -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: - -> 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)、OuterFrame(Outer frame plugin)、HandDrawnLikeStyle(Hand drawn style plugin)[charge]、Notation(Node marker plugin)[charge] - -Features that will not be implemented in this project: - -> 1.Free nodes, i.e. multiple root nodes; -> -> 2.Continue adding nodes after the summary node; -> -> If you need the above features, this library may not meet your needs. - -## Repository Catalog Introduction - -1.`simple-mind-map` - -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. - -2.`web` - -This is an online mind map built using the `simple-mind-map` library and based -on `Vue2.x` and `ElementUI`. Features include: - -- [x] Toolbar, which supports inserting and deleting nodes, and editing node - images, icons, hyperlinks, notes, tags, and summaries -- [x] Sidebar, with panels for basic style settings, node style settings, - outline, theme selection, and structure selection -- [x] Import and export functionality; data is saved in the browser's local - storage by default, but it also supports creating, opening, and editing - local files on the computer directly -- [x] Right-click menu, which supports operations such as expanding, collapsing, - and organizing layout -- [x] Bottom bar, which supports node and word count statistics, switching - between edit and read-only modes, zooming in and out, and switching to - full screen, support mini map - -Provide document page service. - -3.`dist` - -The folder containing the packaged resources for the `web` folder. - -## Related Articles - -[Technical Analysis of Web Mind Map Implementation (chi)](https://juejin.cn/post/6987711560521089061) - -[Only a hundred lines of code are needed to add local file operation capability to your Web page. Are you sure not to try?](https://juejin.cn/post/7157681502506090510) - -[When you press the direction key, how does the TV find the next focus](https://juejin.cn/post/7199666255883927612) - -[How to simulate the background image style of css in canvas](https://juejin.cn/post/7204854015463538744) - -[My first Electron application](https://juejin.cn/post/7233012756314701884) - -[Explore how to export HTML and SVG as images](https://juejin.cn/post/7276712861514170409) - -[How does the dom-to-image library convert HTML into images](https://juejin.cn/post/7287913415803764747) - -[Two days to achieve collaborative editing of mind maps? It's really possible to use Yjs](https://juejin.cn/post/7295669711533998117) - -## Special Note - -When applying this project to actual projects, please first experience in depth whether it can meet your needs. - -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. - -In v0.10.4+version, a performance mode has been added to only render nodes within the visible area of the canvas, which can improve rendering speed under large data volumes. You can experience it by turning on the 'openPerformance' instantiation option, and in the online demo, you can turn on the 'Basic Styles' - 'Enable Performance Mode' switch. - -If you have suggestions or find bugs, you can submit [issues](https://github.com/wanglin2/mind-map/issues) here. - -The built-in themes and icons in the project part come from:[Baidu Mind Map](https://naotu.baidu.com/)、[Zhixi Mind Map](https://www.zhixi.com/)。Respect the copyright, and do not use the theme and icons directly for commercial projects. - -## Why not? - -1.[Zhixi](https://www.zhixi.com/) - -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. - -There are many other online mind mapping products similar to Zhixi, such as [GitMind](https://gitmind.cn/)、[MindLine](http://www.mindline.cn/)、[MinMeister](https://www.mindmeister.com/zh)、[Mubu](https://mubu.com/) 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. - -2.[kityminder-core](https://github.com/fex-team/kityminder-core) - -`kityminder-core` 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. - -3.[jsmind](https://github.com/hizzgdev/jsmind)、[Mind-elixir](https://github.com/ssshooter/mind-elixir-core)、[my-mind](https://github.com/ondras/my-mind)、[blink-mind](https://github.com/awehook/blink-mind)、[remind](https://github.com/luvsic3/remind)、[vue3-mindmap](https://github.com/hellowuxin/vue3-mindmap)、[ZMindMap](https://github.com/zyascend/ZMindMap)、[mindmaptree](https://github.com/RockyRen/mindmaptree)... - -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. - -In summary, in open-source mind maps, it is difficult to find a better choice than `simple-mind-map`. Of course, `simple-mind-map` is far from being the best, and it also has many shortcomings. However, `simple-mind-map` has always been in a fast iteration process, and we welcome you to join and improve it together. - -## Browser Compatibility - -We recommend using the latest version of the `Chrome` browser. - -Limited testing situation: - -Normal operation: `360` extreme speed browser(v13.5.2036.0)、`opera` browser(v71.0.3770.284)、`Firefox`(v98.0.2). - -Unsupported: `IE` browser. - -## License - -[MIT](https://github.com/wanglin2/mind-map/blob/main/LICENSE). 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. - -## Invite the author to a cup of coffee - -Open source is not easy. If this project is helpful to you, you can invite the author to have a cup of coffee, Your support is the biggest driving force for developers to continuously maintain~ - -> Please note the 【mind map】 for transfer. - - - - - -
-
- -

Think

-
-
- -

志斌

-
-
- -

小土渣的宇宙

-
-
- -

qp

-
-
- -

ZXR

-
-
- -

花儿朵朵

-
-
- -

suka

-
-
- -

Chris

-
-
- -

水车

-
-
- -

仓鼠

-
-
- -

千帆

-
-
- -

才镇

-
-
- -

小米bbᯤ²ᴳ

-
-
- -
-
- -

*棐

-
-
- -

Luke

-
-
- -

布林

-
-
- -

南风

-
-
- -

蜉蝣撼大叔

-
-
- -

-
-
- -

-
-
- -

沐风牧草

-
-
- -

有希

-
-
- -

樊笼

-
-
- -

达仁科技

-
-
- -

小逗比

-
-
- -

天清如愿

-
-
-
-
- -

敬明朗

-
-
- -

飞箭

-
-
- -

戚永峰

-
-
- -

moom

-
-
- -

张扬

-
-
- -

长沙利奥软件

-
-
- -

HaHN

-
-
- -

继龙

-
-
- -

-
-
- -

易空小易

-
-
- -

国发

-
-
- -

建明

-
-
- -

汪津合

-
-
-
-
- -

博文

-
-
- -

慕智打印-兰兰

-
-
- -

锦冰

-
-
- -

旭东

-
-
- -

俊奇

-
-
- -

橘半

-
-
- -

pluvet

-
-
- -

皇登攀

-
-
- -

风格

-
-
- -

SR

-
-
- -

逆水行舟

-
-
- -

LiuJL

-
-
- -

L

-
-
-
-
- -

sunniberg

-
-
- -

在下青铜五

-
-
- -

木星二号

-
-
- -

阿晨

-
-
- -

-
-
- -

庆国

-
-
- -

Alex

-
-
- -

子豪

-
-
- -

宏涛

-
-
- -

最多5个字

-
-
- -

雨馨

-
-
- -

ZX

-
-
- -

-
-
-
-
- -

协成

-
-
- -

木木

-
-
- -

好名字

-
-
- -

Kyle

-
-
- -

lsytyrt

-
-
- -

秀树因馨雨

-
-
- -

buddy

-
-
- -

小川

-
-
- -

Tobin

-
-
- -

夏虫不语冰

-
-
- -

晴空

-
-
- -

黄泳

-
-
- -

ccccs

-
-
-
-
- -

-
-
- -

Jeffrey

-
-
\ No newline at end of file diff --git a/web/src/pages/Doc/en/introduction/index.vue b/web/src/pages/Doc/en/introduction/index.vue deleted file mode 100644 index 8ca11e3f..00000000 --- a/web/src/pages/Doc/en/introduction/index.vue +++ /dev/null @@ -1,441 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/keyCommand/index.md b/web/src/pages/Doc/en/keyCommand/index.md deleted file mode 100644 index fb4b4753..00000000 --- a/web/src/pages/Doc/en/keyCommand/index.md +++ /dev/null @@ -1,69 +0,0 @@ -# KeyCommand instance - -The `keyCommand` instance is responsible for adding and triggering shortcuts. It -includes some built-in shortcuts and can also be added manually. The -`mindMap.keyCommand` instance can be obtained through this. - -## Methods - -### addShortcut(key, fn) - -Add a shortcut - -`key`: Shortcut key, key values can be viewed at -[keyMap.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/core/command/keyMap.js) -Example: - -```js -// Single key -mindMap.keyCommand.addShortcut("Enter", () => {}); -// Or -mindMap.keyCommand.addShortcut("Del|Backspace", () => {}); -// Combination key -mindMap.keyCommand.addShortcut("Control+Enter", () => {}); -``` - -`fn`: Method to be executed - -### removeShortcut(key, fn) - -Remove a shortcut command, if `fn` is not specified, all callback methods for -the shortcut will be removed - -### getShortcutFn(key) - -> v0.2.2+ - -Get the processing function for the specified shortcut - -### pause() - -> v0.2.2+ - -Pause all shortcut responses - -### recovery() - -> v0.2.2+ - -Restore shortcut responses - -### save() - -> v0.2.3+ - -Save the current registered shortcut data, then clear the shortcut data - -### restore() - -> v0.2.3+ - -Restore saved shortcut data, then clear the cache data - -### hasCombinationKey(e) - -> v0.6.13+ - -- `e`: Event object. - -Determine if the combination key has been pressed. \ No newline at end of file diff --git a/web/src/pages/Doc/en/keyCommand/index.vue b/web/src/pages/Doc/en/keyCommand/index.vue deleted file mode 100644 index 748b10f1..00000000 --- a/web/src/pages/Doc/en/keyCommand/index.vue +++ /dev/null @@ -1,69 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/keyboardNavigation/index.md b/web/src/pages/Doc/en/keyboardNavigation/index.md deleted file mode 100644 index dae4cd05..00000000 --- a/web/src/pages/Doc/en/keyboardNavigation/index.md +++ /dev/null @@ -1,52 +0,0 @@ -# KeyboardNavigation plugin - -> v0.2.17+ - -`KeyboardNavigation` plugin provides keyboard navigation function, that is, when you press the direction key, it will automatically find the next node and activate it. - -## Register - -```js -import MindMap from 'simple-mind-map' -import KeyboardNavigation from 'simple-mind-map/src/plugins/KeyboardNavigation.js' -// import KeyboardNavigation from 'simple-mind-map/src/KeyboardNavigation.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(KeyboardNavigation) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.keyboardNavigation`. - -## Methods - -### focus(dir) - -`dir`:Which direction to find the next node,Optional value:`Left`、 `Up`、 `Right`、 `Down` - -Focus on the next node - -### getNodeRect(node) - -`node`:Node - -Get the location information of the node and return an object: - -```js -{ - left, - top, - right, - bottom -} -``` - -### getDistance(node1Rect, node2Rect) - -`node1Rect`、`node2Rect`:The location data of nodes can be obtained through the `getNodeRect(node)` - -Get the distance between two nodes - -### getCenter(nodeRect) - -`nodeRect`:The location data of nodes can be obtained through the `getNodeRect(node)` - -Get the center point of the node \ No newline at end of file diff --git a/web/src/pages/Doc/en/keyboardNavigation/index.vue b/web/src/pages/Doc/en/keyboardNavigation/index.vue deleted file mode 100644 index a3a918bb..00000000 --- a/web/src/pages/Doc/en/keyboardNavigation/index.vue +++ /dev/null @@ -1,48 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/markdown/index.md b/web/src/pages/Doc/en/markdown/index.md deleted file mode 100644 index bdb75890..00000000 --- a/web/src/pages/Doc/en/markdown/index.md +++ /dev/null @@ -1,35 +0,0 @@ -# Markdown parse - -> v0.4.7+ - -Provides methods for importing and exporting `Markdown` files. - -## Import - -```js -import markdown from 'simple-mind-map/src/parse/markdown.js' -``` - -If you are using the file in the format of `umd`, you can obtain it in the following way: - -```html - -``` - -```js -simpleMindMap.markdown -``` - -## Methods - -### transformToMarkdown(data) - -- `data`: Mind map data can be obtained using the `mindMap.getData()` method. - -Convert mind map data into `Markdown` format data, and the returned data is a string. - -### transformMarkdownTo(mdContent) - -- `mdContent`: The `Markdown` data to convert, string type. - -Convert the `Markdown` string into node tree data and return a `Promise` instance. You can use the `mindMap.setData()` method to render the converted data onto the canvas. diff --git a/web/src/pages/Doc/en/markdown/index.vue b/web/src/pages/Doc/en/markdown/index.vue deleted file mode 100644 index d0a53504..00000000 --- a/web/src/pages/Doc/en/markdown/index.vue +++ /dev/null @@ -1,39 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/miniMap/index.md b/web/src/pages/Doc/en/miniMap/index.md deleted file mode 100644 index 786461cb..00000000 --- a/web/src/pages/Doc/en/miniMap/index.md +++ /dev/null @@ -1,121 +0,0 @@ -# MiniMap plugin - -> v0.2.11+ - -Used to help quickly develop a small map feature, the small map consists of two -parts, one is the current canvas content, and the other is the viewport frame. -When zoomed, moved, or there are too many elements, the canvas may only display -part of the mind map content. The viewport frame can be used to view the current -viewport location, and can be quickly positioned by dragging on the small map. - -## Register - -```js -import MindMap from 'simple-mind-map' -import MiniMap from 'simple-mind-map/src/plugins/MiniMap.js' -// import MiniMap from 'simple-mind-map/src/MiniMap.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(MiniMap) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.miniMap`. - -## Methods - -### calculationMiniMap(boxWidth, boxHeight) - -"Calculate the rendering data for the small map, this function will call the -`getMiniMap()` method, so using this function is sufficient. - -`boxWidth`: the width of the small map container - -`boxHeight`: the height of the small map container - -Function return content: - -```js -{ - getImgUrl,// v0.8.0+, An asynchronous function that you can call and pass a callback function. The callback function can receive a parameter representing a small map of the image type, and you can render it through the img tag - svgHTML, // Mini map HTML, it is recommended to use the getImgUrl method to obtain image type mini maps, reduce the number of page DOM, and optimize performance - viewBoxStyle, // view box position information - miniMapBoxScale, // view box zoom value - miniMapBoxLeft, // view box left value - miniMapBoxTop, // view box top value -} -``` - -Small map idea: - -1.Prepare a container element `container`, position is not `static` - -If using rich text editing mode, it is best to remove the default style from the elements inside the 'container', otherwise there may be text offset issues within nodes: - -```css -.container * { - margin: 0; - padding: 0; -} -``` - -2.In `container`, create a small map container element `miniMapContainer`, -absolute positioning - -3.In `container`, create a view box element `viewBoxContainer`, absolute -positioning, set border style, transition property (optional) - -4.Listen for `data_change` and `view_data_change` events, and in this event call -the `calculationMiniMap` method to get calculation data, then render `svgHTML` -to the `miniMapContainer` element and set `miniMapContainer` element style: - -```js -:style="{ - transform: `scale(${miniMapBoxScale})`, - left: miniMapBoxLeft + 'px', - top: miniMapBoxTop + 'px', -}" -``` - -5.Set the `viewBoxStyle` object as the style of the `viewBoxContainer` element - -At this point, when the mind map on the canvas changes, the small map will also -be updated in real time, and the view box element will reflect the position of -the viewport on the mind map graph in real time - -6.Listen for the `mousedown`, `mousemove`events of the -`container` element, And listen for the 'mouseup' event of the 'window' (if 'mouseup' is bound to the 'container' element, the entire dragging behavior of the 'container' element cannot be stopped when the mouse is moved out), and call the three methods that will be introduced below to achieve the effect of the mind map on the canvas being dragged with the mouse - -7.In v0.10.2+version, it supports dragging and dropping viewport boxes within the mini map to achieve synchronized dragging of the canvas, Implementing this feature can listen to the 'mousedown' of the 'viewBoxContainer' element(Need to prevent bubbles, otherwise it will trigger the 'mousedown' event of the 'container' element)、`mousemove` event, Call the 'onViewBoxMousedown' and 'onViewBoxMousemove' methods of the mini map plugin instance separately, At the same time, it is necessary to listen for the 'mini_map_view_box_position_change' event to update the viewBoxContainer element in real-time - -For detailed tutorials, please refer to[How to render a mini map](https://wanglin2.github.io/mind-map/#/doc/zh/course14)。 - -### onMousedown(e) - -Small map mouse down event executes this function. - -`e`: event object - -### onMousemove(e, sensitivityNum = 5) - -This function is executed on the small map mouse move event. - -`e`: event object - -`sensitivityNum`: drag sensitivity, the higher the sensitivity, the greater the -actual canvas dragging distance on the small map when dragging the same distance -on the small map. - -### onMouseup() - -This function is executed on the small map mouse release event. - -### onViewBoxMousedown(e) - -> v0.10.2+ - -Call this method for the viewport box element mouse down event. - -### onViewBoxMousemove(e) - -> v0.10.2+ - -Call this method for the mouse movement event of the viewport box element. \ No newline at end of file diff --git a/web/src/pages/Doc/en/miniMap/index.vue b/web/src/pages/Doc/en/miniMap/index.vue deleted file mode 100644 index 5a62faec..00000000 --- a/web/src/pages/Doc/en/miniMap/index.vue +++ /dev/null @@ -1,98 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/node/index.md b/web/src/pages/Doc/en/node/index.md deleted file mode 100644 index 2a0faccc..00000000 --- a/web/src/pages/Doc/en/node/index.md +++ /dev/null @@ -1,392 +0,0 @@ -# Node instance - -Each node will instantiate a `node` instance - -## Property - -### nodeData - -The real data corresponding to this node - -### uid - -The unique identifier of this node - -### isRoot - -Whether it is the root node - -### layerIndex - -Node level - -### width - -Width of the node - -### height - -Height of the node - -### left - -`left` position of the node - -### top - -`top` position of the node - -### parent - -Parent node of the node - -### children - -List of child nodes of the node - -### group - -Node is the content container, `svg` object - -### isDrag - -> v0.1.5+ - -Whether the node is currently being dragged - -## Methods - -### checkIsInClient(padding = 0) - -> v0.10.4+ - -- `padding`: Number, The size of the area extending around the canvas - -Determine whether the node is within the visible area of the canvas. - -### deactivate() - -> 0.9.11+ - -Deactivate the node. - -### getAncestorNodes() - -> v0.9.9+ - -Obtain a list of ancestor node instances. - -### highlight() - -> v0.9.8+ - -Highlight node. - -### closeHighlight() - -> v0.9.8+ - -Unhighlight node. - -### getPureData(removeActiveState = true, removeId = false) - -> v0.9.0+ - -- `removeActiveState`:Is remove the activation status of the node - -- `removeId`:Is remove the uid of the node - -Serialize a node to obtain its pure data, excluding references to node instances. - -### setGeneralizationOpacity(val) - -> v0.9.0+ - -- `val`:Number, 0-1,Opacity - -Set the transparency of summary nodes and curves. - -### formatGetGeneralization() - -> v0.9.0+ - -Obtain node summary data. - -### getIndexInBrothers() - -> v0.9.0+ - -Gets the index of the node in the sibling node list. - -### getRectInSvg() - -> v0.9.0+ - -Obtain the size and position information of the node. The width and height are the actual width and height after applying the scaling effect, and the position information is relative to the canvas. - -### getRect() - -> v0.8.1+ - -Obtain the size and position information of the node. The width and height are the actual width and height after applying the scaling effect, and the position is relative to the upper left corner of the browser window. - -### ancestorHasGeneralization() - -> v0.8.1+ - -Check if there are ancestor nodes with a summary. - -### getNoteContentPosition() - -> v0.8.1+ - -Obtain the display position of node comments. When a node has comments and is displaying a state, dragging or zooming will cause the comment floating layer to detach from the node. This method can be used to obtain a new position and update the comment floating layer. - -### updateNodeByActive(active) - -> v0.8.0+ - -- `active`:Boolean, active status. - -Update nodes based on whether they are activated or not. The main task is to update the display and hiding of the expand and collapse buttons for nodes. - -### setOpacity(val) - -> v0.7.2+ - -- `val`: Opacity value,0-1 - -Set node transparency, including connecting lines and child nodes. - -### hideChildren() - -> v0.7.2+ - -Hide subordinate nodes. - -### showChildren() - -> v0.7.2+ - -Display subordinate nodes. - -### hasCustomStyle() - -> v0.6.2+ - -Gets whether a custom style has been set. - -### getSize() - -Update the width and height of the node by recreating the node content, and return a Boolean value indicating whether the width and height have changed - -### render() - -Recursively render this node and all its child nodes - -### updateNodeShape() - -> v0.5.0+ - -Update node shape nodes. For example, when the node status changes, call this method to display or deactivate the style. - -### remove() - -Recursive deletion, which is only deleted from the canvas. The node container is still present, and can be reinserted back into the canvas in the future - -### destroy() - -> v0.5.0+ - -Destroying a node will not only delete it from the canvas, but also directly empty the original node, which cannot be inserted back into the canvas in the future - -### renderLine() - -Re-render the line from this node to its child nodes - -### removeLine() - -Remove the line from this node to its child nodes - -### renderExpandBtn() - -Render the content of the expand/collapse button - -### removeExpandBtn() - -Remove the expand/collapse button - -### getStyle(prop, root, isActive) - -Get the final style value applied to this node - -`prop`: the style property to get - -`root`: whether it is the root node, default `false` - -`isActive`: v0.7.0+has been abandoned, whether the value being fetched is the active state style value, -default `false` - -### setStyle(prop, value, isActive) - -- `isActive`: v0.7.0+has been abandoned - -Modify a style of the node, a shortcut method for the `SET_NODE_STYLE` command - -### setStyles(style, isActive) - -> v0.6.12+ - -- `isActive`: v0.7.0+has been abandoned - -Modify multiple styles of nodes, a shortcut method for the `SET_NODE_STYLES` command - -### getData(key) - -Get the specified value in the `data` object of the node's real data `nodeData`, -if `key` is not passed, return the `data` object - -### setData(data) - -Set the value of the specified key in the data object of the node's real data -nodeData, `SET_NODE_DATA` command's shortcut method. This method and command will not update the view, so if you want to modify the text, use the 'setText' method or use the command pointing to the text. - -### setText(text, richText, resetRichText) - -- `richText`: v0.4.2+,`Boolean`, If you want to set rich text content, that is, `html` character, `richText` needs to be passed `true`. After version 0.9.3+, if this parameter is not passed, it will use previous value. - -- `resetRichText`: v0.6.10+, `Boolean`, whether to reset rich text, The default is 'false'. If 'true' is passed, the style of the rich text node will be reset - -Setting the node text, a shortcut for the `SET_NODE_TEXT` command - -### setImage(imgData) - -Setting the node image, a shortcut for the `SET_NODE_IMAGE` command - -### setIcon(icons) - -Setting the node icon, a shortcut for the `SET_NODE_ICON` command - -### setHyperlink(link, title) - -Setting the node hyperlink, a shortcut for the `SET_NODE_HYPERLINK` command - -### setNote(note) - -Setting the node note, a shortcut for the `SET_NODE_NOTE` command - -### setAttachment(url, name) - -> v0.9.10+ - -- `url`:Attachment url; - -- `name`:Attachment name, optional - -Set node attachments, a shortcut for the `SET_NODE_ATTACHMENT` command - -### setTag(tag) - -Setting the node tag, a shortcut for the `SET_NODE_TAG` command - -### hide() - -> v0.1.5+ - -Hide node and its sub-nodes - -### show() - -> v0.1.5+ - -Show node and its sub-nodes - -### isParent(node) - -> v0.1.5+:Detect whether the current node is an ancestor node of a certain node - -> v0.8.1+:Detect whether the current node is the parent node of a certain node - -### isAncestor(node) - -> v0.8.1+ - -Detect whether the current node is an ancestor node of a certain node - -### isBrother(node) - -> v0.1.5+ - -Check if the current node is a sibling of a certain node - -### checkHasGeneralization() - -> v0.2.0+ - -Check if there is a summary - -### checkHasSelfGeneralization() - -> v0.9.0+ - -Check if there is a summary of oneself, not a sub node interval summary - -### hideGeneralization() - -> v0.2.0+ - -Hide summary node - -### showGeneralization() - -> v0.2.0+ - -Show summary node - -### updateGeneralization() - -> v0.2.0+ - -Update summary node - -### hasCustomPosition() - -> v0.2.0+ - -Check if the node has custom data - -### ancestorHasCustomPosition() - -> v0.2.0+ - -Check if there is an ancestor node with custom position - -### getShape() - -> v0.2.4+ - -Get node shape - -### setShape(shape) - -> v0.2.4+ - -Set node shape, a shortcut method for the `SET_NODE_SHAPE` command - -### getSelfStyle(prop) - -> v0.2.5+ - -Get the node's own custom style - -### getParentSelfStyle(prop) - -> v0.2.5+ - -Get the custom style of the nearest ancestor node with its own custom style - -### getSelfInhertStyle(prop) - -> v0.2.5+ - -Get the node's own inheritable custom style \ No newline at end of file diff --git a/web/src/pages/Doc/en/node/index.vue b/web/src/pages/Doc/en/node/index.vue deleted file mode 100644 index 47665e36..00000000 --- a/web/src/pages/Doc/en/node/index.vue +++ /dev/null @@ -1,325 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/nodeImgAdjust/index.md b/web/src/pages/Doc/en/nodeImgAdjust/index.md deleted file mode 100644 index 5527e2a0..00000000 --- a/web/src/pages/Doc/en/nodeImgAdjust/index.md +++ /dev/null @@ -1,16 +0,0 @@ -# NodeImgAdjust plugin - -> v0.6.5+ - -This plugin provides the function of dragging and adjusting the size of images within nodes. - -## Register - -```js -import MindMap from 'simple-mind-map' -import NodeImgAdjust from 'simple-mind-map/src/plugins/NodeImgAdjust.js' - -MindMap.usePlugin(NodeImgAdjust) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.nodeImgAdjust`. \ No newline at end of file diff --git a/web/src/pages/Doc/en/nodeImgAdjust/index.vue b/web/src/pages/Doc/en/nodeImgAdjust/index.vue deleted file mode 100644 index 08e6eb0c..00000000 --- a/web/src/pages/Doc/en/nodeImgAdjust/index.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/outerFrame/index.md b/web/src/pages/Doc/en/outerFrame/index.md deleted file mode 100644 index 1dd77a7c..00000000 --- a/web/src/pages/Doc/en/outerFrame/index.md +++ /dev/null @@ -1,89 +0,0 @@ -# OuterFrame plugin - -> v0.10.2+ - -This plugin is used to implement bounding box functionality. - -## Register - -```js -import MindMap from 'simple-mind-map' -import OuterFrame from 'simple-mind-map/src/plugins/OuterFrame.js' -MindMap.usePlugin(OuterFrame) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.outerFrame`. - -The application can refer to the code in this section of the demo: [NodeOuterFrame.vue](https://github.com/wanglin2/mind-map/blob/main/web/src/pages/Edit/components/NodeOuterFrame.vue)。 - -## Command - -This plugin will register the 'ADD_OUTER_FRAME' command with the mind map to add bounding boxes to nodes: - -```js -mindMap.execCommand('ADD_OUTER_FRAME', appointNodes, config = {}) -``` - -- `appointNodes`:Specify the node instance node to add the bounding box to, which can be a single node instance or an array of node instances. If passing '[]' or 'null', the bounding box will be added to the currently active node on the canvas - -- `config`:Outline configuration, object format, and fields are as follows: - -| Field | Type | Default | Desc | -| ------------------ | ------- | --------------- | ------------| -| radius | Number | 5 | Size of rounded corners on the outer frame | -| strokeWidth | Number | 2 | Outer border width | -| strokeColor | String | #0984e3 | Outer border color | -| strokeDasharray | String | 5,5 | Outer border dashed line | -| fill | String | rgba(9,132,227,0.05) | Outer frame fill color | - -## Event - -### outer_frame_active - -Triggered when clicking to activate a certain bounding box. The callback function takes three parameters: el(Outer frame elements,The rect element of library @svgdotjs/svg.js), node(The parent node instance of the node to which this scope belongs), range(Range interval, relative to node) - -The application can listen to this event to retrieve the currently activated bounding box, retrieve its configuration, and echo it to the page. Since the scope may contain multiple nodes, the first node instance is usually taken. If you want to retrieve the position of the bounding box on the page, you can call the 'el.rbox' method: - -```js -mindMap.on('outer_frame_active', (el, parentNode, range) => { - // Take the bounding box style of the first node within the range - const firstNode = parentNode.children[range[0]] - const firstNodeOuterFrame = firstNode.getData('outerFrame') - // Obtain the position and size information of the bounding box, where you can render your configuration float layer - const { x, y, width, height } = el.rbox() -}) -``` - -### outer_frame_delete - -Triggered when deleting the currently active bounding box on the canvas. - -## Methods - -### getActiveOuterFrame() - -Get the currently activated bounding box data. Return an object with the following structure: - -```js -{ - el, - node, - range -} -``` - -### updateActiveOuterFrame(config = {}) - -Update the currently active bounding box. After executing this method, please immediately hide your style panel as it will clear the currently active bounding box. - -### removeActiveOuterFrame() - -Delete the currently active bounding box. - -### getRangeNodeList(node, range) - -Get a list of boxed child nodes within a specified range of a node. - -### clearActiveOuterFrame() - -Clear the currently active bounding box. \ No newline at end of file diff --git a/web/src/pages/Doc/en/outerFrame/index.vue b/web/src/pages/Doc/en/outerFrame/index.vue deleted file mode 100644 index 620a0924..00000000 --- a/web/src/pages/Doc/en/outerFrame/index.vue +++ /dev/null @@ -1,112 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/painter/index.md b/web/src/pages/Doc/en/painter/index.md deleted file mode 100644 index a5d17b72..00000000 --- a/web/src/pages/Doc/en/painter/index.md +++ /dev/null @@ -1,35 +0,0 @@ -# Painter plugin - -> v0.6.12+ - -Node format brush plugin. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Painter from 'simple-mind-map/src/plugins/Painter.js' -MindMap.usePlugin(Painter) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.painter`. - -## Event - -> You can use mindMap.on('event name', () => {}) method to listen events. - -### painter_start - -The event of painter start. - -### painter_end - -The event of painter end. - -## Method - -### startPainter() - -Start painter. - -After calling this method, if there is currently an active node, the first active node will be taken as the specified node by default. After clicking on other nodes, the style of that node will be applied to the other nodes being clicked. When clicking on the canvas, the format brushing operation ends. \ No newline at end of file diff --git a/web/src/pages/Doc/en/painter/index.vue b/web/src/pages/Doc/en/painter/index.vue deleted file mode 100644 index e5bd963b..00000000 --- a/web/src/pages/Doc/en/painter/index.vue +++ /dev/null @@ -1,38 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/rainbowLines/index.md b/web/src/pages/Doc/en/rainbowLines/index.md deleted file mode 100644 index c9c5d0cb..00000000 --- a/web/src/pages/Doc/en/rainbowLines/index.md +++ /dev/null @@ -1,56 +0,0 @@ -# RainbowLines plugin - -> v0.9.9+ - -This plugin is used to implement rainbow lines. - -Enabling rainbow lines and custom colors can be set through the instantiation option 'rainbowLinesConfig'. - -The default color list is as follows: - -``` -[ - 'rgb(255, 213, 73)', - 'rgb(255, 136, 126)', - 'rgb(107, 225, 141)', - 'rgb(151, 171, 255)', - 'rgb(129, 220, 242)', - 'rgb(255, 163, 125)', - 'rgb(152, 132, 234)' -] -``` - -## Register - -```js -import MindMap from 'simple-mind-map' -import RainbowLines from 'simple-mind-map/src/plugins/RainbowLines.js' -MindMap.usePlugin(RainbowLines) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.rainbowLines`. - -## Method - -### updateRainLinesConfig(config = {}) - -If you want to modify the rainbow lines after setting them through the instantiation option 'rainbowLinesConfig', you can use this method, option `config` is same with `rainbowLinesConfig`。 - -```js -{ - open: false,// Is turn on rainbow lines - colorsList: []// Customize the color list for rainbow lines. If not set, the default color list will be used -} -``` - -### getColorsList() - -Get a list of currently used rainbow line colors. - -### getNodeColor(node) - -Retrieve the rainbow line color corresponding to the specified node instance. - -### getSecondLayerAncestor(node) - -Retrieve the second level ancestor node instance of a node instance. \ No newline at end of file diff --git a/web/src/pages/Doc/en/rainbowLines/index.vue b/web/src/pages/Doc/en/rainbowLines/index.vue deleted file mode 100644 index 1bfe0b3a..00000000 --- a/web/src/pages/Doc/en/rainbowLines/index.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/render/index.md b/web/src/pages/Doc/en/render/index.md deleted file mode 100644 index d5b80778..00000000 --- a/web/src/pages/Doc/en/render/index.md +++ /dev/null @@ -1,213 +0,0 @@ -# Render instance - -The `render` instance is responsible for the entire rendering process and can be -accessed through `mindMap.renderer`. - -## Properties - -### activeNodeList - -Gets the current list of active nodes. - -### root - -Node tree, also known as the mind map node instance tree. - -### renderTree - -The rendering tree, also known as the data tree of the mind map. - -### layout - -## Methods - -### highlightNode(node, range) - -> v0.9.0+ - -- `node`:Target node instance to highlight - -- `range`:Optional, Array, a range array, [0, 1] - -Highlight a node or child node. If the 'range' parameter is not passed, the specified 'node' node is directly highlighted. If the 'range' passes a range of child nodes to be highlighted, the child nodes of that range will be highlighted. - -The highlight effect is wrapped by a rectangular box, and the stroke and fill style of the rectangle can be configured through the 'highlightNodeBoxStyle' instantiation option. - -### closeHighlightNode() - -> v0.9.0+ - -隐藏节点高亮框。 - -### setRootNodeCenter() - -> v0.8.0+ - -Return to the central theme, that is, set the root node to the center of the canvas. - -### setData(data) - -> v0.7.3+ - -Dynamically set mind map data. - -### clearActive() - -> v0.8.0+ abandoned - -Clears the currently active node. - -### clearAllActive() - -> v0.8.0+ abandoned - -Clears all currently active nodes and triggers the `node_active` event. - -### clearActiveNode() - -> v0.8.0+ - -Clears all currently active nodes and triggers the `node_active` event. - -### clearActiveNodeList() - -> v0.8.0+ - -Clears all currently active nodes but not triggers the `node_active` event. - -### startTextEdit() - -> v0.1.6+ - -If there is a text editing requirement, this method can be called to -disable the enter key and delete key related shortcuts to prevent conflicts. - -### endTextEdit() - -> v0.1.6+ - -End text editing, restore enter key and delete key related shortcuts. - -### addActiveNode(node) - -> v0.8.0+ abandoned - -Add a node to the active list. - -### 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) - -> v0.8.0+ abandoned - -Remove a node from the active list. - -### removeNodeFromActiveList(node) - -> v0.8.0+ - -Remove a node from the active list. - -### findActiveNodeIndex(node) - -Search for the index of a node in the active list. - -### getNodeIndex(node) - -Get the position index of a node among its siblings. - -### setNodeDataRender(node, data, notRender) - -- `notRender`: v0.6.9+, `Boolean`, Default is `false`, Do not trigger rendering. - -Set node `data`, i.e. the data in the data field, and will determine whether the -node needs to be re-rendered based on whether the node size has changed, `data` -is an object, e.g. `{text: 'I am new text'}`. - -### moveNodeTo(node, toNode) - -> v0.1.5+ - -Move a node as a child of another node. - -### insertBefore(node, exist) - -> v0.1.5+ - -Move a node in front of another node. - -### insertAfter(node, exist) - -> v0.1.5+ - -Move a node behind another node. - -### moveNodeToCenter(node, resetScale) - -> v0.2.17+ - -- `resetScale`: v0.10.1+, Specify whether to reset the canvas scaling value to 100%. When you do not explicitly pass it, the default value is undefined, because the resetScaleOnMoveNodeToCenter configuration of the instantiation option also determines whether to reset scaling. Therefore, use the resetScaleOnMoveNodeToCenter configuration when you do not explicitly pass it, otherwise use the resetScale configuration - -Move a node to the center of the canvas. - -### expandToNodeUid(uid, callback) - -> v0.6.7+ - -- `uid`: uid of node - -- `callback`: Expand completed callback function - -Expand to the node of the specified uid. - -### findNodeByUid(uid) - -> v0.6.7+ - -- `uid`: uid of node - -Find the corresponding node instance based on the uid. - -### copy() - -> v0.6.8+ - -Copy nodes. After calling this method, the current activated node data will be stored. and subsequent calls to the 'paste()' method can be pasted. - -If the browser and protocol (https) support 'js' to manipulate clipboard data, the copied node data will also be added to the user's clipboard. - -### cut() - -> v0.6.8+ - -Cut a node. After calling this method, the currently active node will be cut and the node data will be stored. and subsequent calls to the 'paste()' method can be pasted. - -If the browser and protocol (https) support 'js' to manipulate clipboard data, the copied node data will also be added to the user's clipboard. - -### paste() - -> v0.6.8+ - -Pasting nodes can be done by calling the 'copy()' or 'cut()' method after calling it. - -If the browser and protocol (https) support 'js' to manipulate clipboard data, data copied from other places can also be pasted. For example, you can paste' simple mind map 'nodes across browsers. If it is non' simple mind map 'node data, the text and images in the clipboard will be extracted and pasted. The text will be pasted as a child node by default, and the images will be added to the current node by default. - -### clearCache() - -> v0.9.2+ - -Empty the node cache pool. - -### emitNodeActiveEvent(node = null, activeNodeList = [...this.activeNodeList]) - -- `node`:The node activated this time - -- `activeNodeList`:All currently activated nodes - -Dispatch node activation event, which triggers `node_active` event. \ No newline at end of file diff --git a/web/src/pages/Doc/en/render/index.vue b/web/src/pages/Doc/en/render/index.vue deleted file mode 100644 index 31ec72af..00000000 --- a/web/src/pages/Doc/en/render/index.vue +++ /dev/null @@ -1,198 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/richText/index.md b/web/src/pages/Doc/en/richText/index.md deleted file mode 100644 index 7a0649d7..00000000 --- a/web/src/pages/Doc/en/richText/index.md +++ /dev/null @@ -1,178 +0,0 @@ -# RichText plugin - -> v0.4.0+ - -This plugin provides the ability to edit rich text of nodes, and takes effect after registration. - -By default, node editing can only uniformly apply styles to all text in the node. This plugin can support rich text editing effects. Currently, it supports bold, italic, underline, strikethrough, font, font size, color, and backgroundColor. Underline and line height are not supported. - -The principle of this plugin is to use [Quill](https://github.com/quilljs/quill) editor implements rich text editing, and then uses the edited `DOM` node directly as the text data of the node, and embeds the `DOM` node through the `svg` `foreignObject` tag during rendering. - -> The following prompts exist in versions prior to v0.5.6: -> -> This also caused a problem, that is, the function of exporting as a picture was affected, The original principle of exporting `svg` as an image is very simple, Get the `svg` string, and then create the `blob` data of the `type=image/svg+xml` type. Then use the `URL.createObjectURL` method to generate the `data:url` data. Then create a `Image` tag, use the `data:url` as the `src` of the image, and finally draw the image on the `canvas` object for export, However, after testing, when the `DOM` node is embedded in the `svg`, this method of export will cause errors, and after trying many ways, the perfect export effect cannot be achieved, The current method is to traverse the `foreignObject` node in `svg`, using [html2canvas](https://github.com/niklasvh/html2canvas) Convert the `DOM` node in the `foreignObject` node into an image and then replace the `foreignObject` node. This method can work, but it is very time-consuming. Because the `html2canvas` conversion takes a long time, it takes about 2 seconds to convert a node. This leads to the more nodes, the slower the conversion time. Therefore, it is recommended not to use this plugin if you cannot tolerate the long time of export. - -> The version of `v0.5.7+` directly uses `html2canvas` to convert the entire `svg`, which is no longer an issue with speed. However, there is currently a bug where the color of the node does not take effect after export. - -`V0.6.13+` version uses [dom-to-image-more](https://github.com/1904labs/dom-to-image-more) Replaced 'html2canvas' to address the issue of ineffective color export for nodes. - -> The compatibility of dom to image more is relatively poor, and exported images are empty on many browsers, so you can replace them with html2canvas according to your own needs. - -After version `0.6.16+`, third-party libraries such as 'dom-to-image-more' and 'html2canvas' will no longer be used for export, Compatibility and export are no longer issues. - -## Register - -```js -import MindMap from 'simple-mind-map' -import RichText from 'simple-mind-map/src/plugins/RichText.js' -// import RichText from 'simple-mind-map/src/RichText.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(RichText, opt?) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.richText`. - -### Register options - -The `opt` option can pass the following parameters: - -- `opt.fontFamilyList` - -Replace the built-in font list during rich text editing. The built-in list is: - -```js -[ - '宋体, SimSun, Songti SC', - '微软雅黑, Microsoft YaHei', - '楷体, 楷体_GB2312, SimKai, STKaiti', - '黑体, SimHei, Heiti SC', - '隶书, SimLi', - 'andale mono', - 'arial, helvetica, sans-serif', - 'arial black, avant garde', - 'comic sans ms', - 'impact, chicago', - 'times new roman', - 'sans-serif', - 'serif' -] -``` - -- `opt.fontSizeList` - -Replace the built-in font size list during rich text editing. The built-in list is: - -```js -[1, 2, 3, ...100] -``` - -## Method - -### setNotActiveNodeStyle(node, style) - -> v0.8.0+ - -- `style`:Object, style object. - -Set rich text style for inactive nodes. - -### selectAll() - -Select All. When the node is being edited, you can select all the text in the node through this method. - -### focus() - -> v0.4.7+ - -Focus. - -### formatText(config = {}, clear = false, pure = false) - -- `config`:Object. The key is the style attribute and the value is the style value. The complete configuration is as follows: - -```js -{ - font: '字体', - size: '12px,' // font size - bold: true, // Bold or not, true/false - italic: true, // Italic or not, true/false - underline: true, // Show underline or not, true/false - strike: true, // Whether to display strikethrough, true/false - color: '#333' // color -} -``` - -- `clear`:Is clear style - -- `pure`:v0.9.4+, If set to true, only the text style will be formatted and will not be synchronized to the node's data - -Formats the currently selected text. The style settings will be synchronized to the data of the node. - -### formatRangeText(range, config = {}) - -- `range`:The range object of `Quill`, has the following format: - -```js -{ - index, - length -} -``` - -- `config`:Same as `formatText` method - -Formats the text of the specified range. - -### formatAllText(config = {}) - -- `config`:Same as `formatText` method - -Formats all text of the current edit node. - -### removeFormat() - -> v0.4.1+ - -Clears the style of the currently selected text. - -### normalStyleToRichTextStyle(style) - -Converts a normal node style object to a rich text style object. Because there are differences between node style attributes and rich text style attributes during non-rich text editing, a conversion operation is required. For example: - -```js -{ - fontFamily: 'xxx' -} - -// After conversion - -{ - font: 'xxx' -} -``` - -### richTextStyleToNormalStyle(config) - -Converts rich text style objects to normal node style objects. For example: - -```js -{ - size: '16px' -} - -// After conversion - -{ - fontSize: 16 -} -``` - -### handleSvgDomElements(svg) - -- `svg`: `svg` node - -Convert the `dom` element embedded in the `svg` into a picture and return a `Promise`. - -### transformAllNodesToNormalNode() - -Convert all nodes to non-rich text nodes. \ No newline at end of file diff --git a/web/src/pages/Doc/en/richText/index.vue b/web/src/pages/Doc/en/richText/index.vue deleted file mode 100644 index 217c8c3d..00000000 --- a/web/src/pages/Doc/en/richText/index.vue +++ /dev/null @@ -1,163 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/scrollbar/index.md b/web/src/pages/Doc/en/scrollbar/index.md deleted file mode 100644 index 6defb81e..00000000 --- a/web/src/pages/Doc/en/scrollbar/index.md +++ /dev/null @@ -1,89 +0,0 @@ -# Scrollbar plugin - -> v0.7.0+ -> -> V0.7.1+has been refactored, and the following document is a new one. - -This plugin is used to help develop the functionality of horizontal and vertical scrollbar. Please refer to the tutorial for detailed usage. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Scrollbar from 'simple-mind-map/src/plugins/Scrollbar.js' -MindMap.usePlugin(Scrollbar) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.scrollbar`. - -## Event - -#### scrollbar_change(data) - -```js -{ - // Vertical scrollbar - vertical: { - top,// Top value, Percentage value - height// Scrollbar height, Percentage value - }, - // Horizontal scrollbar - horizontal: { - left,// Left value, Percentage value - width// Scrollbar width, Percentage value - } -} -``` - -Triggered when the scrollbar data changes, you can listen to this event to update the position and size of the scrollbar. Receive a parameter representing the latest scrollbar position and size information, which you can use to update the style of the scrollbar element. - -## Method - -### setScrollBarWrapSize(width, height) - -- `width`: Number, The width of your scrollbar container element. - -- `height`: Number, The height of your scrollbar container element. - -Set the size of the scroll bar container, which is the width of the container for horizontal scrollbars and the height of the container for vertical scrollbars. When your scrollbar container size changes, you need to call this method again. - -### calculationScrollbar() - -> Usually, you do not need to call this method. If the scroll bar is not updated when rendering for the first time, you can manually call this method to obtain the scroll bar data. -> -> You need to first call the setScrollBarWrapSize method to set the width and height of the scroll bar container element. - -Return value: - -```js -{ - // Vertical scrollbar - vertical: { - top, - height - }, - // Horizontal scrollbar - horizontal: { - left, - width - } -} -``` - -Obtain the size and position of the scrollbar. - -### onMousedown(e, type) - -- `e`: The event object for the mouse down event. - -- `type`: The type of scroll bar pressed, vertical(Vertical scrollbar)、horizontal(Horizontal scrollbar)。 - -This method needs to be called when the mouse press event of the scrollbar element occurs. - -### onClick(e, type) - -- `e`:The event object for the mouse click event. - -- `type`:The type of scroll bar on click, vertical(Vertical scrollbar)、horizontal(Horizontal scrollbar)。 - -This method needs to be called when the click event of the scrollbar element is triggered. \ No newline at end of file diff --git a/web/src/pages/Doc/en/scrollbar/index.vue b/web/src/pages/Doc/en/scrollbar/index.vue deleted file mode 100644 index e40463f6..00000000 --- a/web/src/pages/Doc/en/scrollbar/index.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/search/index.md b/web/src/pages/Doc/en/search/index.md deleted file mode 100644 index 8ba3235b..00000000 --- a/web/src/pages/Doc/en/search/index.md +++ /dev/null @@ -1,70 +0,0 @@ -# Search plugin - -> v0.6.9+ - -This plugin provides the ability to search and replace node content. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Search from 'simple-mind-map/src/plugins/Search.js' -MindMap.usePlugin(Search) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.search`. - -## Event - -### search_info_change - -You can listen to 'search_info_change' event to get the number of current search results and the index currently located. - -```js -mindMap.on('search_info_change', (data) => { - /* - data: { - currentIndex,// Index, from zero - total - } - */ -}) -``` - -## Method - -### search(searchText, callback) - -- `searchText`: Text to search for - -- `callback`: The callback function that completes this search will be triggered after jumping to the node - -Search for node content, which can be called repeatedly. Each call will search and locate to the next matching node. If the search text changes, it will be searched again. - -### endSearch() - -End search. - -### replace(replaceText, jumpNext = false) - -- `replaceText`: Text to be replaced - -- `jumpNext`: v0.6.12+, Whether to automatically jump to the next matching node - -To replace the content of the current node, call the 'search' method after calling it to replace the content of the currently located matching node. - -### replaceAll(replaceText) - -- `replaceText`: Text to be replaced - -Replace all matching node contents, and call it after calling the 'search' method. - -### getReplacedText(node, searchText, replaceText) - -- `node`: Node instance - -- `searchText`: Text to search for - -- `replaceText`: Text to be replaced - -Return the text content of the node after search and replacement. Note that the node content will not be actually changed, but is only used to calculate the content of a node after replacement. \ No newline at end of file diff --git a/web/src/pages/Doc/en/search/index.vue b/web/src/pages/Doc/en/search/index.vue deleted file mode 100644 index 26f7d4e9..00000000 --- a/web/src/pages/Doc/en/search/index.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/select/index.md b/web/src/pages/Doc/en/select/index.md deleted file mode 100644 index add2b4cd..00000000 --- a/web/src/pages/Doc/en/select/index.md +++ /dev/null @@ -1,21 +0,0 @@ -# Select plugin - -The `Select` plugin provides the function of select multiple nodes. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Select from 'simple-mind-map/src/plugins/Select.js' -// import Select from 'simple-mind-map/src/Select.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(Select) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.select`. - -## Method - -### toPos(x, y) - -Convert mouse position to position relative to the container `el` \ No newline at end of file diff --git a/web/src/pages/Doc/en/select/index.vue b/web/src/pages/Doc/en/select/index.vue deleted file mode 100644 index a3a3241e..00000000 --- a/web/src/pages/Doc/en/select/index.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/start/index.md b/web/src/pages/Doc/en/start/index.md deleted file mode 100644 index 7fb417c1..00000000 --- a/web/src/pages/Doc/en/start/index.md +++ /dev/null @@ -1,232 +0,0 @@ -# Start - -## Installation - -> Things to note before version 0.2.0: - -```bash -npm i simple-mind-map -``` - -`0.2.0` Notes for previous versions: - -> Note: This project is directly published in source code form and has not been -> packaged. If compilation fails, a Vue CLI-created project can add the -> following configuration to the vue.config.js file to allow babel-loader to -> compile this dependency: -> -> ```js -> module.exports = { -> transpileDependencies: ["simple-mind-map"], -> }; -> ``` -> -> Other projects should modify the packaging configuration as needed. - -## Usage - -> The `web` directory of this repository provides a complete project based on `Vue2`. If you encounter any doubts about using it, you can refer to the implementation of this project. - -> To learn about its use in other frameworks, you can refer to the following unofficial implementations: -> -> 1.[https://github.com/huangyuanyin/hyy-vue3-mindMap](https://github.com/huangyuanyin/hyy-vue3-mindMap): A mind map based on Vue3.2+ElementPlus. - -Firstly, provide a container element with a width and height not equal to 0: - -```html -
-``` - -Also, set the `CSS` style again: - -```css -#mindMapContainer * { - margin: 0; - padding: 0; -} -``` - -Then introduce the `simple-mind-map` library and create an instance: - -```js -import MindMap from "simple-mind-map"; - -const mindMap = new MindMap({ - el: document.getElementById('mindMapContainer'), - data: { - "data": { - "text": "Root Node" - }, - "children": [] - } -}); -``` - -This will result in a mind map. - -If you want to implement a complete mind map, you usually need to develop some UI interfaces to achieve more functions through the interfaces provided by the `simple-mind-map` library. - -`simple-mind-map` supports rich configurations, events, commands, and some additional plugin extensions. Read the subsequent documentation to learn more. - -The non-packaged 'ES' module is introduced by default, and only contains core functions, not unregistered plugin content, which can effectively reduce the size. However, you need to configure the `babel` compilation `simple mind-map` in your project to prevent some newer `js` syntax some browsers not supporting it. - -If you don't want to load all plugins from the beginning and want to load and register plugins asynchronously after instantiation, you can do this: - -```js -import('simple-mind-map/src/plugins/Export.js').then(res => { - mindMap.addPlugin(res.default) -}) -``` - -If you need a file in the format of `umd` module, such as `CDN` in the browser, So you can first install `npm i simple-mind-map` through npm,, Then you can find the `simpleMindMap.umd.min.js` file and `simpleMindMap.esm.min.css` file in the `node_modules/simple-mind-map/dist/` directory, copy it to your project, and then import it into the page: - -```html - - -``` - -A global variable `window.simpleMindMap` will be created. you can get `MindMap` constructor by `window.simpleMindMap.default`, Then it can be instantiated normally, for more detail info you can log `window.simpleMindMap`. - -If it is inconvenient to install using 'npm', you can also obtain these two files through some online 'CDN' services, such as: - -``` -https://unpkg.com/simple-mind-map@0.10.2/dist/simpleMindMap.esm.css -https://unpkg.com/simple-mind-map@0.10.2/dist/simpleMindMap.umd.min.js -``` - -You can replace the version number in it. - -The disadvantage of this method is that it will contain all the content, including the plugins you have not registered(You can find it here [full.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/full.js#L36) View plugins packaged into files by default), so the overall volume will be relatively large. If you only want to package the specified plugin, you can modify the file and repackage it. If necessary, you can also contact the developer. - -(v0.5.4+)If you want to use the `ES` module directly on the browser side, you can find the `simpleMindMap.esm.js` and `simpleMindMap.esm.css` files in the `/simple-mind-map/dist/` directory. - -Online CDN services can also be used, such as: - -``` -https://unpkg.com/browse/simple-mind-map@0.9.2/dist/ -``` - -You can find all the packaged files for a certain version. - -## Development - -If you only use library, you don't need to read this section. - -### Local Development - -```bash -git clone https://github.com/wanglin2/mind-map.git -cd mind-map -cd simple-mind-map -npm i -npm link -cd .. -cd web -npm i -npm link simple-mind-map -npm run serve -``` - -> If there is an installation dependency error, you can try adjusting the node version. The author is using version 14. x. - -### Packaging the Library - -Since version `0.2.0`, we have added support for packaging the core library -simple-mind-map. This uses the same packaging tool as the sample project web. - -```bash -cd web -npm run buildLibrary -``` - -The packaging entry is `simple-mind-map/full.js`, which will introduce all plugins by default. If you don't need all plugins, you can modify the file to only introduce the plugins you need, which can reduce the size of the packaged file. - -The `package.json` file in the `simple-mind-map` library provides two export -fields: - -```json -{ - "module": "index.js", - "main": "./dist/simpleMindMap.umd.min.js" -} -``` - -Environments that support the `module` field will use `index.js` as the entry -point, otherwise the packed `simpleMindMap.umd.min.js` will be used as the entry -point. - -#### Generate TypeScript type files - -```bash -cd simple-mind-map -npm run types -``` - -You can obtain the type files in the 'simple-mind-map/types/' directory. - -### Compile the doc - -```bash -cd web -npm run buildDoc -``` - -### Packaging the Demo - -```bash -cd web -npm run build -``` - -The `index.html` file will be automatically moved to the root directory. - -## Problems - -### Error when using in Vite, indicating xml-js dependency error - -Solution: use the following import method: - -```js -import MindMap from "simple-mind-map/dist/simpleMindMap.umd.min"; -``` - -The `simple-mind-map` package provides the unpacked entry field `module`, and -the `xml-js` package dependency needs to import the package in the `node` -environment. Therefore, it cannot be obtained in `Vite` and an error will be -reported. Therefore, specify the import of the packed entry, and all relevant -packages are packed into the product, so there will be no error. - -If you need to do further development, that is, you must use the unpacked code, -and if you do not need to parse the `xmind` file, you can remove the `xmind` -module. If you need it, you can try using other libraries to parse `xml` to -`json`. - -### Error `Getting bbox of element "text" is not possible: TypeError: Cannot read properties of undefined (reading 'apply')` - -The reason is that the installed version of `@svgdotjs/svg.js` is too high. You can manually reduce it to the version of `3.0.16`. - -### TypeError: Cannot read properties of undefined (reading 'prototype') at sax.js:222:46 - -The following configurations can be added to the packaging configuration file: - -```js -resolve: { alias: { stream: "stream-browserify" } } -``` - -Different packaging tools may have different specific configurations, with the principle of excluding 'stream' dependencies. - -### When clicking the [New], [Open], or [Save As] buttons, it will prompt that the browser does not support it or is not using the HTTPS protocol. - -The browser uses API [window.showOpenFilePicker](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/showOpenFilePicker) to operate local files on the computer. If it is not supported, either the browser does not support this API or the page is not using the HTTPS protocol, You can press F12, or open the browser console through the right-click menu on the page and enter 'window.showOpenFilePicker' in the 'Console' tab. If it returns 'undefined', it means it is not supported. If it does not return this message and the page still prompts that the browser does not support it or is not using the HTTPS protocol, you can submit an issue or contact the author. - -### 5.Import simple-mind-map error message, the error message is as follows: - - - -This is because your build environment does not support this JavaScript syntax, which comes from the '@svgdotjs/svg.js' library. The solution is as follows: - -1.Manually reduce the version of the '@svgdotjs/svg.js' library. You can manually install the lower version in your project, such as: `npm i @svgdotjs/svg.js@3.2.0` - -2.If you don't reduce the version, you can modify the relevant configuration of your build tool, modify the configuration of 'babel', and have it compile the 'simple-mind-map' library in 'node.modules' or the '@svgdotjs/svg.js' library. If you are using 'vue-cli' or 'vite', they also provide the relevant configuration directly. In addition, it is necessary to install the 'babel' plugin that compiles this syntax and configure it in the 'babel' configuration file: - -`@babel/plugin-proposal-nullish-coalescing-operator`、`@babel/plugin-proposal-optional-chaining`。 \ No newline at end of file diff --git a/web/src/pages/Doc/en/start/index.vue b/web/src/pages/Doc/en/start/index.vue deleted file mode 100644 index 2458dfc2..00000000 --- a/web/src/pages/Doc/en/start/index.vue +++ /dev/null @@ -1,166 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/textEdit/index.md b/web/src/pages/Doc/en/textEdit/index.md deleted file mode 100644 index 71e934c5..00000000 --- a/web/src/pages/Doc/en/textEdit/index.md +++ /dev/null @@ -1,29 +0,0 @@ -# TextEdit instance - -Node text editing instance. It can be obtained through `mindMap.renderer.textEdit`. - -## Methods - -### isShowTextEdit() - -Get whether the current text editing box is in a display state, that is, whether it is in a text editing state. - -### hideEditTextBox() - -Hiding the text editing box will set the content of the current text editing box as node text. - -### registerTmpShortcut() - -Register temporary shortcut keys, which means editing can be completed through the Enter and Tab keys. - -### show({ node}) - -- `node`:Node instance to enter for editing - -Manually enable node editing. By default, it will enter node editing when double clicking or pressing F2 on the node. - -### getCurrentEditNode() - -> v0.9.8+ - -Get the node instance currently being edited. \ No newline at end of file diff --git a/web/src/pages/Doc/en/textEdit/index.vue b/web/src/pages/Doc/en/textEdit/index.vue deleted file mode 100644 index da1d55f8..00000000 --- a/web/src/pages/Doc/en/textEdit/index.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/touchEvent/index.md b/web/src/pages/Doc/en/touchEvent/index.md deleted file mode 100644 index 7b65cd6b..00000000 --- a/web/src/pages/Doc/en/touchEvent/index.md +++ /dev/null @@ -1,18 +0,0 @@ -# TouchEvent plugin - -> v0.6.0+ - -This plugin supports mobile touch events for users. The principle is to listen for 'touchstart', 'touchmove', and 'touchend' events on the mobile end, and then dispatch corresponding mouse events. - -Currently, it supports single finger touch to move the canvas, click to activate nodes, double finger zoom the canvas, single finger double-click to reset and edit nodes. - -## Register - -```js -import MindMap from 'simple-mind-map' -import TouchEvent from 'simple-mind-map/src/plugins/TouchEvent.js' - -MindMap.usePlugin(TouchEvent) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.touchEvent`. \ No newline at end of file diff --git a/web/src/pages/Doc/en/touchEvent/index.vue b/web/src/pages/Doc/en/touchEvent/index.vue deleted file mode 100644 index e1fedd45..00000000 --- a/web/src/pages/Doc/en/touchEvent/index.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/translate/index.md b/web/src/pages/Doc/en/translate/index.md deleted file mode 100644 index 732939a1..00000000 --- a/web/src/pages/Doc/en/translate/index.md +++ /dev/null @@ -1,30 +0,0 @@ -# Contribute - -## Participate in development - -If you want to contribute code, you can 'fork' this project and switch to the 'feature' branch for development. After development and testing, you can submit the 'pr' to the 'feature' branch of this project. When submitting, please try to submit functional files as much as possible. Do not submit unnecessary files. - -Before development, it is best to create a new 'issue' to describe the new features you want to add. We can have sufficient communication first, and when submitting a 'pr', please provide a detailed description of the features you are developing. - -## Participate in translation - -> Thanks for the first version English translation provided by [Emircan ERKUL](https://github.com/emircanerkul). -> -> Due to limited energy, most translations currently use machine translation, so accuracy is inevitably problematic. -> -> At present, the 【Course】 section is not translated. If you are interested, please join us. - -If you want to participate in the translation of this document, you can clone this repository first. - -The translated documents are in the `/web/src/pages/Doc/` directory, and currently support English(`en`) and Simplified Chinese(`zh`). - -If you are adding a new language type, you can create a new directory under the `/web/src/pages/Doc/` directory, Then create a folder for each chapter, You can also directly copy all chapter directories under the existing language directory for translation, Note that you only need to write the `index.md` file, The `index.vue` file under the chapter directory is automatically generated by the script according to `index.md`. - -If you are adding a translation chapter to an existing language type, You can create a new chapter directory under the target language directory, You only need to create a `index.md` file under the directory. - -After you complete the translation, you can directly submit `Pull requests`. - -If you are a front-end programmer and want to run the service, check the effect of the document page, If a new chapter is added, the file `/web/src/pages/Doc/catalogList.js` needs to be modified, Select the appropriate location in the `StartList` or `APIList` array to insert the `path` of the new chapter. Then you need to run `npm run buildDoc` under the `web` directory to compile the directory and route. Finally, run `npm run serve` starts the local service. Open the following path to view the document: - -`ip:port/#/doc/zh/introduction` - diff --git a/web/src/pages/Doc/en/translate/index.vue b/web/src/pages/Doc/en/translate/index.vue deleted file mode 100644 index 9df8cc99..00000000 --- a/web/src/pages/Doc/en/translate/index.vue +++ /dev/null @@ -1,32 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/utils/index.md b/web/src/pages/Doc/en/utils/index.md deleted file mode 100644 index d746c213..00000000 --- a/web/src/pages/Doc/en/utils/index.md +++ /dev/null @@ -1,603 +0,0 @@ -# Utility Methods - -## Base utility Methods - -Reference: - -```js -import {walk, ...} from 'simple-mind-map/src/utils' -``` - -### Methods - -#### resizeImgSizeByOriginRatio(width, height, newWidth, newHeight) - -> v0.6.5+ - -`width`: The original width of the image - -`height`:The original height of the image - -`newWidth`:Width to zoom in to - -`newHeight`:Height to zoom in to - -Scale the image proportionally. Zoom to the specified size of `newWidth` and `newHeight` while maintaining the original aspect ratio of the image. - -#### walk(root, parent, beforeCallback, afterCallback, isRoot, layerIndex = 0, index = 0) - -Depth-first traversal of a tree - -`root`: the root node of the tree to be traversed - -`parent`: parent node - -`beforeCallback`: preorder traversal callback function, callback parameters are: -root, parent, isRoot, layerIndex, index - -`afterCallback`: postorder traversal callback function, callback parameters are: -root, parent, isRoot, layerIndex, index - -`isRoot`: whether it is the root node - -`layerIndex`: node level - -`index`: index of the node among its siblings - -Example: - -```js -walk(tree, null, () => {}, () => {}, false, 0, 0); -``` - -#### bfsWalk(root, callback) - -Breadth-first traversal of a tree - -#### resizeImgSize(width, height, maxWidth, maxHeight) - -Resize image size - -`width`: original width of the image - -`height`: original height of the image - -`maxWidth`: the width to resize to - -`maxHeight`: the height to resize to - -`maxWidth` and `maxHeight` can both be passed, or only one of them can be passed - -#### resizeImg(imgUrl, maxWidth, maxHeight) - -Resize image, internally loads the image first, then calls the `resizeImgSize` -method, and returns a `promise` - -#### simpleDeepClone(data) - -Extremely simple deep copy method, can only be used for objects that are all -basic data, otherwise it will throw an error - -#### copyRenderTree(tree, root) - -Copy render tree data, example: - -```js -copyRenderTree({}, this.mindMap.renderer.renderTree); -``` - -#### copyNodeTree(tree, root, removeActiveState, keepId) - -- `removeActiveState`: `Boolean`, default is `false`, Whether to remove the active state of the node - -- `removeId`:v0.7.3-fix.1+, Is remove the uid from the node data, default is `true` - -> - `keepId`: (Original fourth parameter) v0.4.6+, `Boolean`, default is `false`, Whether to retain the `id` of the replicated node will be deleted by default to prevent duplicate node `id`. However, for mobile node scenarios, the original `id` of the node needs to be retained - -Copy node tree data, mainly eliminating the reference `node` instance `_node` -and copying the `data` of the data object, example: - -```js -copyNodeTree({}, node); -``` - -#### imgToDataUrl(src, returnBlob = false) - -- `src`:Image url - -- `returnBlob`:v0.10.2+,Is the result returned in Blob format, defaulting to DataURL format - -Convert image to dataURL - -#### downloadFile(file, fileName) - -Download file - -#### throttle(fn, time = 300, ctx) - -Throttle function - -#### asyncRun(taskList, callback = () => {}) - -Run tasks in task list asynchronously, tasks are run synchronously without order - -#### degToRad(deg) - -> v0.2.24+ - -Angle to radian - -#### camelCaseToHyphen(str) - -> v0.2.24+ - -CamelCase to hyphen - -#### joinFontStr({ italic, bold, fontSize, fontFamily }) - -> v0.3.4+ - -Join the `font` attribute value of the `css` font - -#### measureText(text, { italic, bold, fontSize, fontFamily }) - -> v0.3.4+ - -Measure the width and height of the text, return value: - -```js -{ width, height } -``` - -#### getTextFromHtml(html) - -Extract plain text content from an HTML string. - -#### readBlob(blob) - -> v0.5.9+ - -Convert `blob` data to `data:url` data. - -#### parseDataUrl(data) - -> v0.6.6+ - -Parse `data:url` data, return: - -```js -{ - type,// file type of data - base64// base64 data -} -``` - -#### getImageSize(src) - -> v0.6.6+ - -- `src`: The url of img - -Get the size of image, return: - -```js -{ - width, - height -} -``` - -#### loadImage(imgFile) - -> v0.6.8+ - -- `imgFile`: File object of image type - -Load image, return: - -```js -{ - url,// DataUrl - size// { width, height } width and height of image -} -``` - -#### getType(data) - -> v0.6.9+ - -Get the type of a data, such as `Boolean`、`Array`. - -#### removeHtmlStyle(html) - -> v0.6.10+ - -Remove the inline style of nodes in the HTML string. - -#### addHtmlStyle(html, tag, style) - -> v0.6.10+ - -Add inline styles to the specified tags in the HTML tag. - -#### checkIsRichText(str) - -> v0.6.10+ - -Check if a string is a rich text character. - -#### isWhite(color) - -> v0.6.11+ - -Determine whether a color is white. - -#### isTransparent(color) - -> v0.6.11+ - -Determine whether a color is transparent. - -#### nodeRichTextToTextWithWrap(html) - -> v0.6.12+ - -Convert the rich text content of nodes in the form of `

` into text wrapped in `\n`. - -#### textToNodeRichTextWithWrap(html) - -> v0.6.12+ - -Convert the wrapped text of `
` into node rich text content in the form of `

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

` -> `
`。 - -#### checkNodeListIsEqual(list1, list2) - -> v0.9.1+ - -- `list1/list2`: Node instance list - -Check if the two node instance lists contain the same nodes. - -#### getChromeVersion() - -> v0.9.3+ - -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. - -#### transformTreeDataToObject(data) - -> v0.9.3+ - -- `data`:Mind map node data. - -Convert the mind map tree structure to a level object. - -```js -{ - data: { - uid: 'xxx' - }, - children: [ - { - data: { - uid: 'xxx' - }, - children: [] - } - ] - } -``` -Convert to: -```js - { - uid: { - children: [uid1, uid2], - data: {} - } - } -``` - -#### transformObjectToTreeData(data) - -> v0.9.3+ - -Convert flat objects into a tree structure. Reverse operation of the transformTreeDataToObject method. - -#### removeHtmlNodeByClass(html, selector) - -> v0.9.6+ - -- `html`:html string - -- `selector`:Node selectors, such as class selectors and id selectors - -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. - -#### defenseXSS(htmlStr) - -> v0.10.0+ - -- `htmlStr`:HTML strings that need to be filtered - -Return:Filtered HTML string - -Defend against XSS attacks, filter malicious HTML tags and attributes. You can recursively traverse the tree data before passing the node data to SimpleMindMap, using this method to process the rich text content of nodes and avoid XSS attacks. - -## Simulate CSS background in Canvas - -Import: - -```js -import drawBackgroundImageToCanvas from 'simple-mind-map/src/utils/simulateCSSBackgroundInCanvas' -``` - -Usage: - -```js -let width = 500 -let height = 500 -let img = '/1.jpg' -let canvas = document.createElement('canvas') -canvas.width = width -canvas.height = height -drawBackgroundImageToCanvas(ctx, width, height, img, { - backgroundRepeat: 'repeat-y', - backgroundSize: '60%', - backgroundPosition: 'center center' -}, (err) => { - if (err) { - // fail - } else { - // success - } -}) -``` - -## LRU cache class - -> v0.5.10+ - -Import: - -```js -import Lru from 'simple-mind-map/src/utils/Lru.js' -``` - -### Constructor - -```js -let lru = new Lru(max) -``` - -`max`: Specify the maximum number of caches. - -### Instance properties - -#### size - -The current number of caches. - -#### pool - -Get cache pool. - -### Instance methods - -#### add(key, value) - -Add cache. - -#### delete(key) - -Delete cache. - -#### has(key) - -Check if a cache exists. - -#### get(key) - -Gets the value of a cache. - -> v0.9.2+ - -Empty the cache pool. \ No newline at end of file diff --git a/web/src/pages/Doc/en/utils/index.vue b/web/src/pages/Doc/en/utils/index.vue deleted file mode 100644 index ada07855..00000000 --- a/web/src/pages/Doc/en/utils/index.vue +++ /dev/null @@ -1,511 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/view/index.md b/web/src/pages/Doc/en/view/index.md deleted file mode 100644 index 5f17bbe4..00000000 --- a/web/src/pages/Doc/en/view/index.md +++ /dev/null @@ -1,79 +0,0 @@ -# View instance - -The `view` instance is responsible for view operations, and can be obtained -through `mindMap.view` - -## Methods - -### fit() - -> v0.6.0+ - -Zoom the mind map to fit the canvas. - -Note that this method cannot be called immediately after calling the 'setData' and 'setFullData' methods, and needs to listen to the 'node_tree_render_end' event calls 'fit'. - -### translateX(step) - -Translate in the `x` direction, `step`: number of pixels to translate - -### translateY(step) - -Translate in the `y` direction, `step`: number of pixels to translate - -### translateXTo(x) - -> v0.2.11+ - -Translate the `x` direction to a specific position - -### translateYTo(y) - -> v0.2.11+ - -Translate the `y` direction to a specific position - -### reset() - -Revert to the default transformation - -### narrow(cx, cy) - -- `cx`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas - -- `cy`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas - -Zoom out - -### enlarge(cx, cy) - -- `cx`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas - -- `cy`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas - -Zoom in - -### getTransformData() - -> v0.1.1+ - -Get the current transform data, can be used for display - -### setTransformData(data) - -> v0.1.1+ - -Dynamically set transform data, transform data can be obtained through the -getTransformData method" - -### setScale(scale, cx, cy) - -> v0.2.17+ - -- `scale`: Scaling values, not scaled to '1', scaled to '1' for values less than, scaled to '1' for values greater than, scaled to '1' for values greater than - -- `cx`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas - -- `cy`:(v0.6.4+)Zoom to the specified position on the canvas, default to the center point of the canvas - -Setting Zoom \ No newline at end of file diff --git a/web/src/pages/Doc/en/view/index.vue b/web/src/pages/Doc/en/view/index.vue deleted file mode 100644 index 27f8769d..00000000 --- a/web/src/pages/Doc/en/view/index.vue +++ /dev/null @@ -1,88 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/watermark/index.md b/web/src/pages/Doc/en/watermark/index.md deleted file mode 100644 index c1f57a25..00000000 --- a/web/src/pages/Doc/en/watermark/index.md +++ /dev/null @@ -1,57 +0,0 @@ -# Watermark plugin - -> 0.2.24+ - -`Watermark` instance is responsible for displaying the watermark. - -Please refer to the [Instantiation Options](/mind-map/#/doc/zh/constructor) of the `MindMap` class for configuration. - -## Register - -```js -import MindMap from 'simple-mind-map' -import Watermark from 'simple-mind-map/src/plugins/Watermark.js' -// import Watermark from 'simple-mind-map/src/Watermark.js' Use this path for versions below v0.6.0 - -MindMap.usePlugin(Watermark) -``` - -After registration and instantiation of `MindMap`, the instance can be obtained through `mindMap.watermark`. - -## Methods - -### draw() - -Redraw the watermark. - -Note: For imprecise rendering, some watermarks beyond the visible area will be drawn. If you have extreme performance requirements, it is recommended to develop the watermark function yourself. - -### updateWatermark(config) - -Update watermark config. Example: - -```js -mindMap.watermark.updateWatermark({ - text: 'Watermark text', - lineSpacing: 100, - textSpacing: 100, - angle: 50, - textStyle: { - color: '#000', - opacity: 1, - fontSize: 20 - } -}) -``` - -### hasWatermark() - -> v0.3.2+ - -Gets whether the watermark exists. - -### clear() - -> v0.9.2+ - -Clear watermark. \ No newline at end of file diff --git a/web/src/pages/Doc/en/watermark/index.vue b/web/src/pages/Doc/en/watermark/index.vue deleted file mode 100644 index 6419a5fd..00000000 --- a/web/src/pages/Doc/en/watermark/index.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/en/xmind/index.md b/web/src/pages/Doc/en/xmind/index.md deleted file mode 100644 index f17b0160..00000000 --- a/web/src/pages/Doc/en/xmind/index.md +++ /dev/null @@ -1,65 +0,0 @@ -# XMind parse - -> v0.2.7+ - -Provides methods for importing and export `XMind` files. - -## Import - -```js -import xmind from 'simple-mind-map/src/parse/xmind.js' -``` - -If you are using the file in the format of `umd`, you can obtain it in the following way: - -```html - -``` - -```js -simpleMindMap.xmind -``` - -## Methods - -### xmind.parseXmindFile(file, handleMultiCanvas) - -Parsing the `.xmind` file and returning the parsed data. You can use -`mindMap.setData(data)` to render the returned data to the canvas. - -`file`: `File` object - -`handleMultiCanvas`:v0.10.0+,Optional, a function can be passed. If there are multiple canvases in the imported xmind file, this function will be called. The function takes the xmind canvas list data as a parameter and needs to return the data of one of the canvases, For example, if the received parameter is 'content', if you want to import data from the second canvas, you will return 'content[1]'. A function can be an asynchronous function that returns a Promise instance. - -### xmind.transformXmind(content) - -> V0.6.6+version changes the method to asynchronous and returns a Promise instance - -Convert `xmind` data. The `.xmind` file is essentially a `zip` file that can be -decompressed by changing the suffix to zip. Inside, there is a `content.json` -file. If you have parsed this file yourself, you can pass the contents of this -file to this method for conversion. You can use -`mindMap.setData(data)` to render the returned data to the canvas. - -`content`: the contents of the `content.json` file within the `.xmind` zip -package - -### xmind.transformOldXmind(content) - -> v0.2.8+ - -For data parsing of the `xmind8` version, because the `.xmind` file in this -version does not have a `content.json`, it corresponds to `content.xml`. - -`content`: the contents of the `content.xml` file within the `.xmind` zip -package - -### transformToXmind(data, name) - -> v0.6.6+ - -- `data`: `simple-mind-map` data, you can get it by `mindMap.getData()` method. - -- `name`: The file name to export. - -Convert the `simple mind map` data to an `xmind` file. This method is asynchronous and returns an instance of `Promise`. The returned data is a `blob` type `zip` compressed package data, which you can download as a file yourself. \ No newline at end of file diff --git a/web/src/pages/Doc/en/xmind/index.vue b/web/src/pages/Doc/en/xmind/index.vue deleted file mode 100644 index d7446033..00000000 --- a/web/src/pages/Doc/en/xmind/index.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/i18n.js b/web/src/pages/Doc/i18n.js deleted file mode 100644 index f302f368..00000000 --- a/web/src/pages/Doc/i18n.js +++ /dev/null @@ -1,27 +0,0 @@ -const data = { - pageCatalog: { - zh: '本页目录', - en: 'Page catalog' - }, - demo: { - zh: '在线示例', - en: 'Online Demo' - }, - help: { - zh: '帮助文档', - en: 'Help doc' - }, - dev: { - zh: '开发文档', - en: 'Dev doc' - }, - index: { - zh: '首页', - en: 'Home' - }, -} - -const t = (str, lang) => { - return data[str] ? data[str][lang] || data[str].zh : '' -} -export default t diff --git a/web/src/pages/Doc/routerList.js b/web/src/pages/Doc/routerList.js deleted file mode 100644 index 9c00f970..00000000 --- a/web/src/pages/Doc/routerList.js +++ /dev/null @@ -1,124 +0,0 @@ -export default [ - { - 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: 'course29', title: '局域网docker部署解决HTTPS问题的一种方法' }, - { 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: 'outerFrame', title: 'OuterFrame插件' }, - { path: 'handDrawnLikeStyle', title: 'HandDrawnLikeStyle收费插件' }, - { path: 'notation', title: 'Notation收费插件' }, - { path: 'help1', title: '概要/关联线' }, - { path: 'help2', title: '客户端' }, - { path: 'help3', title: '打开预览在线文件' }, - { path: 'help4', title: '复制粘贴' }, - { path: 'help5', title: '导出' }, - { path: 'help6', 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: 'outerFrame', title: 'OuterFrame plugin' }, - { - path: 'handDrawnLikeStyle', - title: 'HandDrawnLikeStyle chargeable plugin' - }, - { path: 'notation', title: 'Notation chargeable plugin' }, - { path: 'client', title: 'Client' } - ] - } -] diff --git a/web/src/pages/Doc/zh/associativeLine/index.md b/web/src/pages/Doc/zh/associativeLine/index.md deleted file mode 100644 index a1a0d17a..00000000 --- a/web/src/pages/Doc/zh/associativeLine/index.md +++ /dev/null @@ -1,108 +0,0 @@ -# AssociativeLine 插件 - -> v0.4.5+ - -> 调整关联线控制点的功能从v0.4.6+开始支持 - -> 关联性支持文本编辑从v0.5.11+开始支持 - -该插件用于支持添加关联线。 - -## 注册 - -```js -import MindMap from 'simple-mind-map' -import AssociativeLine from 'simple-mind-map/src/plugins/AssociativeLine.js' -// import AssociativeLine from 'simple-mind-map/src/AssociativeLine.js' v0.6.0以下版本使用该路径 - -MindMap.usePlugin(AssociativeLine) -``` - -注册完且实例化`MindMap`后可通过`mindMap.associativeLine`获取到该实例。 - -## 配置 - -支持修改关联线的粗细和颜色,分为默认状态和激活状态。配置如下: - -- `associativeLineWidth`:关联线默认状态的粗细,默认值为`2` - -- `associativeLineColor`:关联线默认状态的颜色,默认值为`rgb(51, 51, 51)` - -- `associativeLineActiveWidth`:关联线激活状态的粗细,默认值为`8` - -- `associativeLineActiveColor`:关联线激活状态的颜色,默认值为`rgba(2, 167, 240, 1)` - -配置以主题的方式提供,所以如果想要修改这四个属性,可以通过`mindMap.setThemeConfig(config)`方法进行修改。 - -## 属性 - -### mindMap.associativeLine.lineList - -当前所有连接线数据,数组类型,数组的每一项也是一个数组: - -```js -[ - path, // 连接线节点 - clickPath, // 不可见的点击线节点 - node, // 起始节点 - toNode // 目标节点 -] -``` - -### mindMap.associativeLine.activeLine - -当前激活的连接线,数组类型,同`lineList`数组的每一项的结构。 - -## 方法 - -### cancelCreateLine() - -> v0.10.5+ - -中途取消创建关联线。 - -### renderAllLines() - -重新渲染所有关联线。 - -### removeAllLines() - -移除所有关联线。 - -### createLineFromActiveNode() - -从当前激活节点开始创建关联线,如果有多个激活节点,默认为第一个节点。 - -调用该方法后,会从第一个激活节点到当前鼠标实时位置渲染一条关联线,当点击某个目标节点后则代表创建完成,会在第一个激活节点和点击节点之间渲染一条关联线。 - -### createLine(fromNode) - -从指定节点开始创建关联线。 - -调用该方法后,会从指定节点到当前鼠标实时位置渲染一条关联线,当点击某个目标节点后则代表创建完成,会在指定节点和点击节点之间渲染一条关联线。 - -### addLine(fromNode, toNode) - -直接添加一条关联线。 - -调用该方法,会直接创建一条从`fromNode`到`toNode`节点的关联线。 - -### removeLine() - -删除当前激活的关联线。点击某条关联线则视为激活。 - -### clearActiveLine() - -清除当前激活的关联线的激活状态。 - -### front() - -> v0.8.0+ - -关联线顶层显示。 - -### back() - -> v0.8.0+ - -关联线回到原有层级。 \ No newline at end of file diff --git a/web/src/pages/Doc/zh/associativeLine/index.vue b/web/src/pages/Doc/zh/associativeLine/index.vue deleted file mode 100644 index 7f13dfc8..00000000 --- a/web/src/pages/Doc/zh/associativeLine/index.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/batchExecution/index.md b/web/src/pages/Doc/zh/batchExecution/index.md deleted file mode 100644 index 7634496d..00000000 --- a/web/src/pages/Doc/zh/batchExecution/index.md +++ /dev/null @@ -1,13 +0,0 @@ -# BatchExecution实例 - -`batchExecution`用来批量异步的执行一些操作,如果某个操作同时多次调用,那么只会在下一个事件循环里执行一次。可以通过`mindMap.batchExecution`获取到该实例 - -## 方法 - -### push(name, fn) - -添加任务。 - -`name`:任务名称 - -`fn`:任务 \ No newline at end of file diff --git a/web/src/pages/Doc/zh/batchExecution/index.vue b/web/src/pages/Doc/zh/batchExecution/index.vue deleted file mode 100644 index d4f6a501..00000000 --- a/web/src/pages/Doc/zh/batchExecution/index.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/changelog/index.md b/web/src/pages/Doc/zh/changelog/index.md deleted file mode 100644 index 27d0a1a8..00000000 --- a/web/src/pages/Doc/zh/changelog/index.md +++ /dev/null @@ -1,1584 +0,0 @@ -# Changelog - -## 0.10.5 - -> 2024.8.2 - -修复: - -> 1.修复开启滚动条插件和性能模式后拖动滚动条报错的问题; -> -> 2.修复跨层级复制节点时,节点的富文本样式没有更新的问题; -> -> 3.修复开启性能模式后,演示插件无法正常工作的问题; -> -> 4.修复画布尺寸调整后第一次触发渲染画布会发生跳动的问题; - -新增: - -> 1.移动节点且节点层级发生了改变,设置过自定义富文本样式的节点不需要更新样式; -> -> 2.支持点击画布取消创建关联线; -> -> 3.移动节点或复制节点到收起的节点上自动展开该节点; - -Demo: - -> 1.节点下级数量大于100时,收起按钮显示省略号; -> -> 2.打开本地文件编辑的情况下不再将数据写入浏览器缓存,避免因触发存储限制导致本地文件数据丢失的问题; -> -> 3.编辑本地文件时如果未保存关闭页面增加拦截提示; -> -> 4.修复大纲里点击节点进行拖拽会触发页面的文件拖拽蒙层的问题; - -## 0.10.4 - -> 2024.7.25 - -本次更新主要是增加了一个性能模式,开启后只会渲染画布可视区域内的节点,超出区域的节点会从画布删除,提升大数据量(1000+节点)情况下的可用性,2000节点首次渲染时间由5s+减少到0.5s,当然由此也会带来一些问题,比如拖动画布时会有一点卡顿,因为会实时渲染节点,导出图片等会变慢,因为需要先渲染所有节点,以及其他一些暂时未发现的问题。 - -修复: - -> 1.删除无用代码,修复鼠标悬浮节点上报错不显示展开收起按钮的问题; - -## 0.10.3 - -> 2024.7.19 - -需要特别关注的更新: - -1.节点标签数据结构更新 - -节点标签数据由字符串数组,改为对象数组,主要是为了支持设置单个标签的样式,当前节点的标签数据结构如下: - -```js -{ - tag: ['标签'] -} -``` - -改为如下: - -```js -{ - tag: [ - { - text: '标签', - style: {} - } - ] -} -``` - -2.数学公式相关 - -数学公式插件Formula默认会引入Katex库的样式,所以应用中不需要再手动引入,同时需要通过katexFontPath实例化选项来配置Katex库字体文件的路径。 - -修复: - -> 1.修复customCreateNodeContent、createNodePrefixContent等方法里获取到的节点实例的isRoot和parent等属性都为null的问题; -> -> 2.修复编辑过节点文本后,再使用滚轮或快捷键缩放画布时上次被编辑的节点会进入编辑状态,同时思维导图快捷键会失效的问题; -> -> 3.修复同时选中多个节点,可以无限插入概要的问题; - -新增: - -> 1.修改了节点标签字段tag的数据类型,以支持设置节点单个标签样式; -> -> 2.新增节点标签显示位置(相当于节点文本)的实例化选项; -> -> 3.node_tag_click事件新增两个回调参数; -> -> 4.复制、剪切、移动多个节点时,按其在节点上的顺序进行操作,而不是激活的顺序; -> -> 5.如果注册了公式插件并且节点里存在公式,那么导出svg时需要添加katex库的样式; -> -> 6.支持自定义katex库渲染模式的实例化选项; -> -> 7.公式插件默认引入katex库的样式; -> -> 8.增加自定义katex库字体文件路径的实例化选项; -> -> 9.新增设置外框内边距的实例化选项; - -Demo: - -> 1.支持点击节点标签进行文本和颜色的修改; -> -> 2.去除引入公式库样式的逻辑; -> -> 3.支持配置外框内边距; - -## 0.10.2 / 0.10.2-fix.1 - -> 2024.7.3 - -修复: - -> 1.修复节点文本和createNodePrefixContent选项自定义的内容没有垂直居中的问题; -> -> 2.修复拖动关联线端点移动时会选中节点文字的问题; - -新增: - -> 1.新增外框插件; -> -> 2.新增向左逻辑结构图; -> -> 3.小地图支持拖拽视图框调整画布位置; -> -> 4.新增拦截节点开始拖拽的实例化选项; -> -> 5.阻止mousedown、mousemove、drag、node_mousedown事件的默认行为; -> -> 6.drag插件的beforeDragEnd选项新增当前被拖拽的节点列表的回调参数; -> -> 7.新增禁止读取和写入用户剪贴板的实例化选项; -> -> 8.将Select插件的画布自动移动功能独立出来,解决没有注册Select插件的情况下Drag插件无法使用画布自动移动功能的问题; -> -> 9.hide_text_edit事件增加被编辑节点的回调参数; -> -> 10.点击超链接图标时激活节点;新增自定义超链接跳转的实例化选项; - -Demo: - -> 1.颜色选择支持选择透明度; -> -> 2.新增外框设置功能; -> -> 3.右键菜单新增复制到剪贴板功能; -> -> 4.新增向左逻辑结构图; -> -> 5.修复鼠标移出小地图再松开后事件没有结束的问题; -> -> 6.小地图支持拖拽视图框调整画布位置; - -## 0.10.1 - -修复: - -> 1.修复TouchEvent插件两次点击位置不同时也会触发节点输入的问题; -> -> 2.修复/快捷键能收起根节点的子节点的问题; - -新增: - -> 1.新增处理导出前的svg对象的实例化选项; -> -> 2.新增修改拖拽节点时克隆的节点的实例化选项; -> -> 3.新增派发单个节点的内容布局完成事件; -> -> 4.新增拦截节点拖拽的实例化选项; -> -> 5.新增限制TouchEvent插件双指缩放的最大值和最小值的实例化选项; -> -> 6.新增节点标记插件; - -Demo: - -> 1.新增节点标记功能; -> -> 2.修复演示模式中右下角输入框无法输入的问题; -> -> 3.移动端打开时不显示目录、新建、打开按钮; - -## 0.10.0 - -较大更新:升级节点拖拽时的交互效果; - -修复: - -> 1.修复只读模式仍可通过Ctrl+点击节点方式激活节点的问题; -> -> 2.修复移动端部分浏览器设置缩放时会进行页面缩放的问题; -> -> 3.修复拖拽画布和拖拽调整图片时会选中文字的问题; -> -> 4.修复复制带换行符的节点文本粘贴后会出现多行换行的问题; -> -> 5.修复节点前后自定义内容导出图片时显示空白的问题; - -新增: - -> 1.新增渲染开始事件node_tree_render_start; -> -> 2.支持设置水印显示在节点下方; -> -> 3.导入存在多个画布的xmind文件支持选择指定的画布进行导入; -> -> 4.取消调用defenseXSS函数,对性能影响太大;defenseXSS方法作为工具方法提供; -> -> 5.去除移除富文本内容中ql-cursor类名的节点的逻辑,修复文本换行时新增空行不生效的问题; -> -> 6.插入新节点时去除延时开启节点编辑的逻辑; -> -> 7.支持直接在富文本编辑框中编辑数学公式; -> -> 8.打包后的文件中增加演示插件; - -Demo: - -> 1.支持配置水印显示在节点下方; -> -> 2.导入存在多个画布的xmind文件支持选择指定的画布进行导入; -> -> 3.优化富文本工具条下拉选项列表高度问题; -> -> 4.新建和打开按钮增加导出的提示,防止内容丢失; -> -> 5.快捷键提示支持区分windows和mac; - -## 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 - -修复: - -> 1.修复搜索时全部替换操作报错的问题; -> -> 2.修复节点文本存在svg不支持的实体字符时小地图无法渲染的问题; - -新增: - -> 1.新增画布移动时的事件translate; -> -> 2.节点内容支持设置附件; - -Demo: - -> 1.支持拖拽文件到页面进行导入; - -客户端: - -> 1.节点支持添加附件; - -## 0.9.9-fix.2 - -修复: - -> 1.修复插入父节点操作时原节点样式未更新的问题; -> -> 2.修复开启彩虹线条时切换结构会报错的问题; - -Demo: - -> 1.修复侧边栏大纲点击全屏编辑时打开的是源码编辑模式的问题; - -## 0.9.9-fix.1 - -修复上个版本的改动造成搜索插件无法搜索的问题。 - -## 0.9.9 - -修复: - -> 1.修复第一次创建关联线时,箭头颜色不正确的问题; - -新增: - -> 1.支持insert键插入下级节点; -> -> 2.增加beforeShortcutRun实例化选项用于拦截快捷键操作; -> -> 3.根实例增加增量更新画布数据的方法updateData; -> -> 4.新增彩虹线条插件; -> -> 5.节点中的图标添加鼠标移入和移出事件; -> -> 6.节点实例新增getAncestorNodes方法用于获取祖先节点列表; -> -> 7.协同编辑时的人员头像增加鼠标事件; -> -> 8.实例化及setData方法支持传入空的data; -> -> 9.新增导出图片时添加自定义内容的实例化选项; - -Demo: - -> 1.支持配置彩虹线条; -> -> 2.新增源码编辑模式; -> -> 3.导出png、pdf、svg支持设置底部自定义文字; - -客户端: - -> 1.双击文件打开应用时不打开工作台页面; -> -> 2.修复重复打开同一个文件会打开多个编辑窗口的问题; -> -> 3.修改删除正在编辑的文件的提示; - -## 0.9.8 - -修复: - -> 1.修复当画布大小改变后,限制思维导图在画布内和滚动条位置计算功能不正确的问题; -> -> 2.修复导入某些旧版xmind文件时报错的问题; -> -> 3.修复只读模式搜索高亮节点时收起节点高亮框未消失的问题; -> -> 4.修复某些情况下搜索时数据改变,搜索结果没有更新的问题; -> -> 5.修复删除正在编辑中的节点时实际上删除的是相邻节点的问题; -> -> 6.修复节点数据中根节点设置了expand:false时只渲染根节点的问题; -> -> 7.修复协同编辑插件:当选中一个节点时,再将该节点收起,该节点激活状态已消失,但其他客户端该节点的选中状态依旧存在的问题; -> -> 8.优化markdown的导出,修复概要丢失的问题; -> -> 9.修复自由拖拽时,前进后退操作对节点位置不生效的问题; - -新增: - -> 1.INSERT_NODE等命令不会覆盖自定义的uid; -> -> 2.节点实例新增高亮和取消高亮的方法;调整只读模式搜索高亮节点的方式; -> -> 3.新增搜索所有节点(包含被收起的节点)的配置;搜索默认改为搜索所有节点; -> -> 4.增加协同编辑时同一节点不能多人选中的配置选项; -> -> 5.增加协同编辑节点操作同步前的生命周期函数配置选项; -> -> 6.概要节点增加uid字段; -> -> 7.新增支持txt文件的导出; - -Demo: - -> 1.修复打开标签弹窗、备注弹窗后点击遮罩关闭弹窗后快捷键会失效的问题; -> -> 2.修改主题和暗色的关联逻辑; -> -> 3.支持读取本地目录; -> -> 4.修复导入弹窗选择了一个文件后再把它删除实际上并没有删掉的问题; -> -> 5.新增txt文件的导出; - -## 0.9.7 - -修复: - -> 1.修复二级以下节点拖拽到根节点变成二级节点时样式没有更新的问题;修复上移一个层级命令移动节点时样式没有更新的问题; -> -> 2.修复激活概要节点,然后给其设置文本样式时概要节点会失去焦点的问题; - -新增: - -> 1.新增两个去除节点自定义样式的命令; - -Demo: - -> 1.新增去除节点自定义样式的右键菜单按钮。 - -## 0.9.6 - -修复: - -> 1.修复切换主题时,被收起的节点样式没有改变的问题; -> -> 2.修复切换主题后进行文本换行时,新换行的文本样式会丢失的问题; -> -> 3.修复切换主题时,换行的文本样式没有改变的问题; -> -> 4.修复添加了数学公式的节点,切换主题时文本样式没有改变的问题; - -新增: - -> 1.主题新增字段,用于设置节点连线箭头的显示位置,头部或者尾部; -> -> 2.主题新增字段,用于设置曲线连接时,根节点连线的起始位置; -> -> 3.Mac 双指触摸事件移动画布增加一点灵敏度; -> -> 4.新增 MOVE_UP_ONE_LEVEL 命令,用于将节点上移一个层级; - -Demo: - -> 1.大纲支持按 Shift+Tab 键将节点上移一个层级; -> -> 2.支持设置节点箭头显示的位置; -> -> 3.支持设置根节点连线的起始位置; -> -> 4.新增两个主题; -> -> 5.修复大纲中文本换行不生效,显示br标签的问题; - -## 0.9.5 - -修复: - -> 1.修复展开收起节点时区间概要会丢失的问题。 -> -> 2.修复新创建的关联线位置始终在节点的右侧没有根据相对位置变化的问题。 - -新增: - -> 1.增加设置关联线创建时两个端点初始位置的配置。 -> -> 2.增加禁止调整关联线端点位置的配置。 -> -> 3.新增手绘风格插件。 - -Demo: - -> 1.优化界面在移动端的适配。 -> -> 2.支持开启手绘风格。 - -## 0.9.4 - -修复: - -> 1.修复一些情况下,节点显示时的文本区域宽度和编辑时的宽度不一致导致的文本换行不一致的问题。 -> -> 2.修复存在渐变色背景的节点富文本编辑时编辑框没有应用渐变的问题。 -> -> 3.修复被主题定义了加粗的节点切换主题后文本样式丢失的问题。 -> -> 4.修复 mac 上 useLeftKeySelectionRightKeyDrag 选项设为 true 时无法按住 ctrl 键多选节点的问题。 -> -> 5.修复节点富文本编辑时清除样式后文字样式丢失并且切换主题也不会恢复的问题。 -> -> 6.修复删除含有子节点的节点时,data_change_detail 事件报错的问题。 - -新增: - -> 1.主题配置增加 lineRadius 属性设置直线连接时的圆角大小。 - -Demo: - -> 1.大纲里去掉公式的显示。 -> -> 2.基础样式中一些仅支持部分结构的配置根据当前结构进行显示和隐藏。 -> -> 3.新增连线圆角的配置。 -> -> 4.导入文件时自动隐藏侧边栏。 - -## 0.9.3 - -修复: - -> 1.修复 Safari 浏览器上节点存在图标时文字位置错位的问题。 -> -> 2.修复 Chrome 内核版本比较低的浏览器中公式无法渲染的问题。 -> -> 3.修复在微前端框架子应用中使用时,new MouseEvent 代码执行报错的问题。 -> -> 4.修复导出图片时节点连线的箭头、关联线的箭头、渐变背景丢失的问题。 - -新增: - -> 1.导出 pdf 从 jspdf 库改为 pdf-lib 库。 -> -> 2.设置节点文本命令(SET_NODE_TEXT)的第二个参数如果没有传递,会使用之前的值。 -> -> 3.优化节点存在超链接、备注时在 Firefox 浏览器中导出图片的宽高不正确的问题。 -> -> 4.节点文本编辑中,如果粘贴的是 smm 格式的粘贴数据,那么会取出第一个节点的纯文本进行粘贴。 -> -> 5.增加对节点非富文本编辑时的粘贴的拦截操作。 -> -> 6.新增节点数据更新的明细事件(data_change_detail),可以获取新创建、更新、被删除的节点数据。 -> -> 7.主题配置支持设置节点渐变背景色。 - -Demo: - -1.支持设置节点渐变色的背景。 - -## 0.9.2 - -修复: - -> 1.修复节点文本含有连续的数字或字母时没有换行的问题。 -> -> 2.修复导入含有和当前画布已有节点 uid 相同的文件时会重复绘制节点的问题。 -> -> 3.修复当节点数量超出了缓存池的最大数量时,前进回退会导致节点重复渲染的问题。 -> -> 4.修复鼠标或触控板水平滚动时画布移动方向相反的问题。 -> -> 5.修复节点被销毁时鼠标移入标志没有复位的问题。 -> -> 6.修复滚动条插件在 initRootNodePosition 配置不为默认的[center,center]时位置计算错误的问题。 -> -> 7.修复拖拽画布时鼠标在节点上面松开时拖拽无法停止的问题。 -> -> 8.修复当画布容器距浏览器窗口左上角不为 0 时,view.fit 方法计算出来的位置有误差的问题。 -> -> 9.修复当节点数量比较多时,导出的图片中水印没有完全覆盖整个图片的问题。 -> -> 10.修复插入公式报错的问题。 -> -> 11.修复节点文本编辑状态中鼠标选择文本时移出编辑框,文字选中状态会丢失的问题。 -> -> 12.修复节点富文本编辑时,文本选中范围为 null 时没有触发 rich_text_selection_change 事件的问题。 -> -> 13.修复 node_dragging 事件回参里没有 node 实例的问题。 -> -> 14.修复节点数量过多,画布尺寸过大无法导出 png 的问题。 - -新增: - -> 1.修改 mousewheel 事件,dir 标志修改为 dirs,支持存储多个方向,优化触控板的双指移动操作。 -> -> 2.TextEdit 类增加 isShowTextEdit 方法判断当前是否处在节点编辑状态。 -> -> 3.Render 类的 paste 方法改为支持粘贴剪贴板的数据。 -> -> 4.新增将思维导图图形限制在画布内的配置选项。 -> -> 5.注册了滚动条插件的情况下,支持配置是否将思维导图限制在画布内。 -> -> 6.收起所有节点操作会将思维导图根节点移至画布中心。 -> -> 7.支持仅在导出时显示水印的配置选项。 -> -> 8.在节点粘贴剪贴板中的图片时,支持自定义处理函数,可以将图片上传到你的服务器。 -> -> 9.重构 pdf 的导出逻辑,导出的 pdf 尺寸不再是固定的 a4,而是思维导图的尺寸,同时删除分页导出的配置。 -> -> 10.节点连线支持显示箭头,作为主题的一个字段。 -> -> 11.最大历史记录数量默认调整为 500。 - -Demo: - -> 1.支持配置仅在导出时显示水印。 -> -> 2.基础样式配置连线支持显示箭头。 - -## 0.9.1-fix.2 - -修复: - -> 1.修复当节点文本为空时部分浏览器会显示默认文本的问题。 -> -> 2.修复当节点文本内容为空时再次输入文本时文本样式丢失的问题。 -> -> 3.修复节点图片加载失败时导出图片也会失败的问题。 - -新增: - -> 1.支持配置节点图片加载失败时显示的默认图片。 - -## 0.9.1-fix.1 - -修复: - -1.修复自定义节点方法返回 null 时报错的问题。 - -2.修复导出 pdf 文件体积很大的问题。 - -## 0.9.1 - -修复: - -> 1.修复自定义节点内容时导出图片、svg、pdf 报错的问题。 -> -> 2.优化节点激活事件的派发,激活节点未改变时不派发事件,短时间派发多次事件时跳过中间事件。 -> -> 3.修复节点处于编辑状态时,通过鼠标滚动移动画布后编辑框和节点脱离的问题。 -> -> 4.修复在节点编辑状态中通过鼠标滚轮缩放画布再退出节点编辑后快捷键失效的问题。 -> -> 5.修复点击节点也会触发 node_dragend 事件的问题。 -> -> 6.修复不在格式刷时点击画布和节点也会触发 painter_end 事件的问题。 -> -> 7.修复在节点文本编辑中和关联线文本编辑中时销毁思维导图文本编辑框未被销毁的问题。 - -新增: - -> 1.按住 Ctrl 键时禁用节点双击事件。 -> -> 2.支持配置创建新节点时的行为:聚焦且进入编辑、不聚焦、只聚焦。 -> -> 3.只读模式下搜索时给当前匹配到的节点增加高亮效果。 -> -> 4.鼠标滚轮行为默认改为上下移动画布;默认改为向前滚动放大画布,向后缩小。 -> -> 5.在鼠标滚轮行为为上下移动画布时,支持按住 Ctrl 键进行放大缩小画布。 - -Demo:支持配置创建新节点时的行为。 - -## 0.9.0 - -新增: - -1.支持对同一个节点的部分子节点添加概要。 - -2.鼠标移入概要会高亮其所属节点。 - -3.导入和导出 xmind 文件支持处理概要。 - -## 0.8.1 - -修复: - -> 1.修复历史记录数据中概要节点的激活状态未被删除的问题,会导致点击概要节点时触发 data_change 事件。 -> -> 2.修复在 safari 浏览器中运行时,页面空白且控制台抛出异常的问题。 -> -> 3.修复缩放画布时图标浮层和备注浮层和节点脱离的问题。 -> -> 4.修复只读模式下可以全选节点的问题。 -> -> 5.修复富文本模式下节点内容存在 时导出为图片出错的问题。 -> -> 6.修复先给自身添加概要,再给下级添加概要会出现概要重叠的问题;修复同时给存在上下级关系的节点添加概要时概要重叠的问题。 -> -> 7.修复节点数量很多的情况下导出 pdf 报错的问题。 - -新增: - -> 1.新增禁止拖动画布的配置选项。 -> -> 2.新增禁止双指缩放画布的配置选项。 -> -> 3.导出 png 的方法新增压缩参数;优化大数据量节点导出 pdf 时体积过大的问题。 -> -> 4.将节点实例的 isParent 方法改名为 isAncestor,同时新增 isParent 方法。 - -Demo: - -> 1.修复只读模式下仍旧可以搜索替换和编辑大纲的问题。 -> -> 2.修复节点内容为 html 标签时大纲无法显示和编辑的问题。 -> -> 3.修复同时选中多个节点添加图标时,所有节点图标都会统一为第一个节点的图标的问题。 -> -> 4.导出操作增加 loading。 - -## 0.8.0-fix.1 - -修复:修复直接粘贴的方式创建新节点时如果粘贴的内容带有<>等 html 标签符号时新创建的节点内容为空的问题。 - -## 0.8.0 - -破坏性更新:大幅优化部分代码,小幅提升性能,主要是`render`类,删除无用逻辑、调整不合理的实现、提取重复代码;修改函数名称、函数功能等。 - -修复: - -> 1.修复导出图片和 svg 时关联线的箭头消失的问题。 -> -> 2.修复调整容器大小后回到根节点的操作异常的问题。 -> -> 3.修复插入概要、上移、下移、一键整理布局的快捷键操作没有触发 data_change 事件的问题。 -> -> 4.修复存在水印时导出图片、svg、pdf 时每个节点都会显示边框的问题。 -> -> 5.修复容器尺寸改变后没有水印没有重新绘制的问题。 -> -> 6.修复存在水印时小地图渲染非常慢的问题。 -> -> 7.修复协同插件当创建新节点时新节点未显示创建人头像的问题。 - -新增: - -> 1.优化画布 DOM 结构,将节点、连线、关联线分层渲染。 -> -> 2.优化水印插件。 -> -> 3.setTheme、setThemeConfig、setLayout 函数增加不触发重新渲染的参数。 -> -> 4.新增插入父节点的命令。 -> -> 5.新增仅删除当前节点的命令。 -> -> 6.插入概要时自动展开子节点。 -> -> 7.鼠标右键单击画布时清除当前激活节点。 -> -> 8.被收起的激活节点同步从激活节点列表里删除。 -> -> 9.粘贴带换行的文本支持控制是否按换行分割节点。 -> -> 10.小地图插件支持返回图片类型的小地图。 -> -> 11.指定时间内只允许添加一次历史记录,避免添加没有必要的中间状态。 - -Demo: - -> 1.修改回到根节点的方法及文案。 -> -> 2.修复覆盖方式切换主题时第一次切换不生效的问题。 -> -> 3.右键菜单新增插入父节点和仅删除当前节点的功能。 -> -> 4.顶部工具栏支持根据窗口宽度自动收起到更多中。 -> -> 5.支持手动输入缩放倍数。 -> -> 6.完善界面英文翻译。 -> -> 7.小地图改为通过图片渲染。 - -## 0.7.3-fix.2 - -修复协同编辑的一些问题: - -1.插入同级节点时新节点位置不正确; - -2.在同级节点中移动位置没有触发更新; - -3.移动节点作为兄弟节点插入时位置不正确; - -## 0.7.3-fix.1 - -修复: - -> 1.修复一些情况下多选节点时的框选区域没有消失的问题。 -> -> 2.修复多选节点时在节点上松开鼠标时框选区域不会消失的问题。 -> -> 3.修复多次粘贴节点时由于节点 uid 重复造成的渲染异常问题。 - -Demo: - -> 1.超链接输入框增加协议选择功能。 - -## 0.7.3 - -新增:1.新增协同编辑插件。 - -Demo:1.修复公式侧边栏组件导致的侧边栏自动关闭问题。 - -## 0.7.2 - -修复: - -> 1.修复多选节点时选区未包含节点边界时节点不会被选中的问题。 -> -> 2.修复节点文本不为字符串时报错的问题。 -> -> 3.修复非富文本模式下文本中存在<>&字符时再次编辑时部分文本会消失的问题。 - -新增: - -> 1.支持插入数学公式。 -> -> 2.支持同时拖拽移动多个节点。 -> -> 3.支持同时复制、剪切多个节点。 -> -> 4.节点标签颜色改为根据标签内容生成,即同样的标签内容会生成相同的颜色。 -> -> 5.优化子节点的插入:1.同时对多个节点插入子节点时,不进入编辑状态;2.新插入的子节点自动进入激活状态。 -> -> 6.优化兄弟节点的插入:1.支持同时对多个节点插入兄弟节点;2.对根节点调用插入兄弟节点的命令时不再创建子节点。 -> -> 7.新增同时插入多个同级节点、多个子节点的命令。 -> -> 8.将节点唯一标识由 id 全部改为 uid,主要影响关联线,之前版本的关联线可能无法正常显示。 -> -> 9.优化图标合并逻辑,支持扩展库内部分类下的图标。 -> -> 10.关联线:1.双击关联线进入关联线文本编辑模式;2.关联线文本为默认文本的话不保存;3.存在激活节点时点击关联线可直接激活关联线。 - -Demo: - -> 1.修复复制知犀思维导图多个节点时无法粘贴的问题。 -> -> 2.新增公式编辑的侧边栏。 - -## 0.7.1-fix.2 - -修复:1.修复插件注册方法链式调用报错的问题。 - -新增: - -> 1.新增思维导图初次加载时适应画布大小的配置选项。 -> -> 2.新增自动生成 dts 声明文件的命令。 - -## 0.7.1-fix.1 - -修复:修复拖拽节点时没有排除被拖拽节点的下级节点的问题。 - -## 0.7.1 - -修复: - -> 1.修复关联线端点改变后未保存的问题。 -> -> 2.修复画布左上角距浏览器窗口不为 0 时多选节点鼠标移动到边缘时画布滚动异常的问题。 -> -> 3.修复导入存在为标题为空的节点的 xmind 文件报错的问题。 -> -> 4.修复导出的 xmind 文件在最新版 xmind 软件上打开时提示已损坏的问题。 -> -> 5.修复导出带有贴纸的数据为 xmind 格式时贴纸无法显示的问题。 -> -> 6.修复没有注册 select 插件时节点右键事件报错的问题。 -> -> 7.修复注册插件的方法没有去重的问题。 - -新增: - -> 1.重构节点拖拽逻辑:优化一些情况下的拖拽难问题、适配各种结构、拖拽时鼠标移动到画布边缘时画布自动移动。 -> -> 2.重构滚动条插件,优化使用体验。 -> -> 3.不完美的解决逻辑结构图、思维导图、目录组织图、组织结构图概要和节点的冲突问题(概要后面应该会重写或删除)。 -> -> 4.删除节点后激活相邻节点。 -> -> 5.节点数据 data 中以\_开头的字段被认为是自定义字段。 - -Demo: - -> 1.页面增加显示当前核心库版本号。 - -## 0.7.0 - -破坏性更新:删除了主题文件中节点激活样式的部分,不再支持设置节点的激活样式,激活效果改为统一的节点外边框样式,同时支持鼠标 hover 效果。 - -修复: - -> 1.修复节点边框尺寸比较大的情况下的的渲染异常问题。 -> -> 2.修复切换主题时存在关联线的节点样式不会更新的问题。 -> -> 3.修复全选没有触发 node_active 事件的问题。 - -新增: - -> 1.收起节点时,显示折叠的节点数量。 -> -> 2.支持关联线端点的位置跟随鼠标拖拽变化。 -> -> 3.新增滚动条插件。 -> -> 4.支持在 url 中通过 fileURL 查询参数打开指定的在线文件。 -> -> 5.鱼骨图支持设置节点 margin。 -> -> 6.默认关闭双击复位画布。 -> -> 7.修改导出图片方法的参数,导出 pdf 时如果思维导图尺寸小于 a4 纸那么不旋转方向。 -> -> 8.提升导出的图片和 pdf 在高清屏的清晰度。 -> -> 9.插件新增销毁前生命周期函数,解决销毁思维导图时插件的一些副作用没有清除的问题。 -> -> 10.优化基础样式的设置,修改不影响大小的主题属性时不触发全量渲染。 -> -> 11.右键多选节点结束时禁止触发节点右键菜单事件,避免触发右键菜单显示。 -> -> 12.优化 Select 插件,如果多选节点没有变化,那么不触发激活激活事件。 -> -> 13.node_active 事件抛出的激活节点列表不再直接引用内部激活列表。 -> -> 14.优化鼠标按下节点事件逻辑,在右键拖拽画布模式下支持右键按住根节点拖拽画布。 - -Demo: - -> 1.不直接引用内部激活节点列表,优化性能。 -> -> 2.支持配置是否显示滚动条。 -> -> 3.删除侧边栏节点样式配置部分的激活节点配置。 - -## 0.6.17 - -修复: - -> 1.修复导入百度脑图导出的 xmind 文件报错的问题。 -> -> 2.修复 mindMap.export 方法代码错误。 - -新增: - -> 1.新增 index.d.ts。 -> -> 2.支持配置是否开启双击复位思维导图。 -> -> 3.拦截富文本编辑时的粘贴操作,去掉格式,只允许粘贴纯文本。 - -## 0.6.16 - -修复: - -> 1.优化富文本测量元素的逻辑,删除样式的重复设置和节点的重复添加。 -> -> 2.优化导出图片逻辑,遍历节点转换图片的 url 时,如果已经是 data:URL 形式不重复处理。 - -新增: - -> 1.去除导出 svg 方法的第二个参数,改为通过实例化配置。 -> -> 2.导出图片不再使用外部库。 - -Demo: - -> 1.修复单独编辑大纲时能给根节点添加兄弟节点的 bug。 - -## 0.6.15-fix.2 - -修复:修复在 Firefox 浏览器中富文本节点无法显示的问题。 - -## 0.6.15-fix.1 - -新增: - -> 1.导出 pdf 支持根据图片大小分页导出。 -> -> 2.导出 pdf 支持根据长宽比自动调整方向。 -> -> 3.优化展开收起按钮的占位元素:1.没有子节点的节点不渲染该元素;2.根据是否存在子节点动态更新该元素。 -> -> 4.新增禁止鼠标滚轮缩放的配置。 -> -> 5.支持传递错误处理函数。 - -修复: - -> 1.修复节点文本为空时显示异常问题。 -> -> 2.导出 svg 的图形的 paddingX 和 paddingY 改为单侧 padding。 -> -> 3.修复画布距浏览器窗口左上角不为 0 时鼠标缩放时不以鼠标为中心的问题。 -> -> 4.修复节点边框会重合的问题。 - -Demo: - -> 1.右下角支持跳转相关链接。 -> -> 2.调整小地图位置,解决被侧边按钮遮挡的问题。 -> -> 3.修复打开本地文件右上角的提示无法关闭的问题。 -> -> 4.单独编辑大纲不再和画布联动,优化大数据量下的编辑体验。 -> -> 5.侧边栏涉及图形的选项增加可视化效果。 - -## 0.6.14 - -新增: - -> 1.去除创建隐藏输入框,通过 navigator.clipboard 实现复制粘贴;支持跨浏览器粘贴思维导图节点数据;支持自定义处理剪贴板中的文本数据。 - -Demo: - -> 1.修复开启输入自动进入文本编辑模式和其他输入框冲突的问题。 -> -> 2.修复无法在节点图片弹窗里删除节点图片的问题。 -> -> 3.修复在节点样式侧边栏里无法去除节点的文本修饰线样式的问题。 -> -> 4.颜色选择器支持选择透明颜色。 -> -> 5.修复基础样式侧边栏打开状态下,导入思维导图数据后侧边栏数据未更新的问题。 -> -> 6.修复大纲修改一个节点的文本后再点击其他节点时不聚焦的问题。 -> -> 7.修复退出禅模式后左下角的节点和字数统计未更新的问题。 -> -> 8.支持从右键菜单删除节点的超链接、备注。 -> -> 9.支持粘贴知犀思维导图的节点数据。 - -## 0.6.13 - -修复: - -> 1.修复只读模式下鼠标中键按住节点无法拖动画布的问题。 -> -> 2.修复快速拖动节点几次后会概率性报错的问题。 -> -> 3.修复在移动端激活节点、展开收起时等操作时会拉起输入法的问题。 -> -> 4.修复主题配置中背景图片为 none 时会发起一个异常请求的问题。 - -新增: - -> 1.移动端手势缩放优化: 按线性关系进行缩放、双指位移可以调整画布位置。 -> -> 2.去掉异步渲染节点的逻辑,提升创建新节点的速度。 -> -> 3.导出图片由 html2canvas 库改为使用 dom-to-image-more 库,解决导出富文本节点文字样式丢失的问题。 -> -> 4.非富文本输入框进入编辑状态时取消默认全选。 -> -> 5.存在一个激活节点时,支持按下中文、数字、英文按键时自动进入文本编辑模式。 - -Demo: - -> 1.保存视图数据时增加防抖操作,优化性能。 -> -> 2.一些耗时的操作添加 loading 效果。 -> -> 3.完善右键菜单和富文本工具条的暗黑模式。 - -## 0.6.12 - -修复: - -> 1.修复当思维导图全部移出可视区域后小地图中的指示器也会移出小地图区域的问题。 -> -> 2.修复移动端双指缩放过于灵敏的问题。 -> -> 3.修复只读模式下按住节点无法拖动画布的问题。 -> -> 4.修复当思维导图距浏览器窗口左上角不为 0 时,小地图渲染不正确的问题。 -> -> 5.修复移动节点时新位置的提示块过大的问题。 -> -> 6.修复搜索不能替换为空字符的问题。 -> -> 7.修复富文本模式下,搜索替换后换行会丢失的问题。 -> -> 8.修复大纲里点击文字编辑时输入框焦点丢失的问题。 - -新增: - -> 1.节点移动结束事件(node_dragend)增加回调参数,可以获取到移动到节点的 uid。 -> -> 2.支持通过配置指定内部一些元素添加到的位置。 -> -> 3.支持格式刷功能。 -> -> 4.曲线风格下,根节点的连接线样式支持和其他节点保持一致。 -> -> 5.搜索支持连续替换。 -> -> 6.节点图片新增删除按钮。 -> -> 7.支持按住鼠标中键拖动画布。 - -Demo: - -> 1.提供应用接管模式,方便对接自己的存储服务;支持运行时设置静态资源路径。 -> -> 2.重构大纲:1.不再使用节点自带的文本样式;2.支持全屏编辑大纲;3.大纲支持拖拽移动节点;4.大纲支持删除节点。 -> -> 3.修复导入数据场景下界面暗黑模式没有更新的问题。 - -## 0.6.11-fix.1 - -修复:1.修复节点文字为白色时编辑的时候看不见的问题。 - -## 0.6.11 - -新增:1.优化小地图,去除小地图内的节点内容,优化性能。 - -Demo:1.新增主题、主题列表新增 tab 区分。 2.节点图片上传支持输入网络图片地址。 3.节点图片上传支持输入网络图片。 - -## 0.6.10 - -修复:1.修复搜索定位到某个节点后删除该节点,再次搜索时搜索结果未更新的问题。 2.修复调整图片大小的按钮在节点操作后没有更新的问题。 3.修复内部数据深拷贝位置不正确的问题。 4.修复富文本节点换行不生效的问题。 5.修复切换主题等场景时节点换行会丢失的问题。 - -新增:1.搜索支持搜索空白字符和替换为空白字符。 - -Demo:1.支持通过图标按钮调出搜索。 2.支持通过图标按钮切换暗黑模式。 3.优化搜索:鼠标不在搜索区域内不聚焦,解决鼠标不在搜索区域内无法删除输入的文字的问题。 4.调整添加节点图标的界面 UI,新增系列节点图标。 5.新增贴纸列表。 6.修复在搜索框回车后输入框焦点丢失的问题。 7.支持点击节点内的图标显示一个图标快捷替换和删除悬浮面板。 - -## 0.6.9-fix.1 - -修复:1.修复搜索进行一次单个替换后再全部替换不正确的问题。 - -新增:1.不会再直接修改传入的 data 对象,内部会深拷贝一份。 - -## 0.6.9 - -修复:1.修复给概要节点设置样式概要节点会消失的问题。2.修复自定义节点内容时,二次创建根实例时节点内容不渲染的问题。3.修复节点处于编辑中时添加新节点时新节点的焦点丢失问题。 2.修复连续按 tab 键无法连续创建子节点的问题。 - -新增:1.导出 svg 时替换 svg 中存在的` `字符,避免导出的 svg 报错。 2.支持搜索和替换。 - -Demo:1.切换主题时支持选择是否覆盖设置过的基础样式。 - -## 0.6.8 - -修复:1.修改插入概要的快捷键为 Ctrl+G,避免和保存快捷键冲突。 2.修复节点正在编辑时切换富文本编辑配置输入框出现异常的问题。 - -新增:1.修改复制、剪切、粘贴逻辑,支持粘贴剪切板中的数据。 - -Demo:1.修复基础样式-设置节点外边距未保存的问题。 2.支持根据主题自动切换为暗黑模式。 - -## 0.6.7 - -修复:1.修复节点收起再展开后展开收起按钮占位元素丢失的问题。 2.修复只读模式下可以缩放图片的问题。 - -新增:1.支持根据节点实例或节点 uid 定位到某个节点。 2.修改节点 uid 的创建方式,导出数据添加节点的 uid。 - -移除:1.移除节点过渡效果。 - -Demo:1.添加网站首页。 2.修复大纲里创建新节点时节点样式丢失的问题。 3.修复大纲里编辑节点后按回车或 Tab 键后编辑文本丢失的问题。 4.优化大纲的节点定位,被收起的节点会自动展开。 5.侧边栏按钮支持收起。 6.优化小屏适配。 - -## 0.6.6 - -新增:1.支持导出为 Xmind 新版文件。2.导入 Xmind 新版文件支持导入节点中的图片。 3.新增竖向时间轴结构。 - -修复:1.TouchEvent 插件不再派发 click 事件,解决移动端点击超链接会打开两个窗口的问题。 2.修复拖拽移动一个节点成为另一个节点的子节点时该节点的父节点指向未更新的问题。 3.修复二级节点拖拽成三级节点时节点边框样式未更新的问题。 4.修复向右生长的结构外其他结构鼠标移入展开收起按钮位置时不会触发按钮显示的问题。 - -优化:1.优化触控板缩放画布时幅度过大的问题。2.刚创建的节点默认全选方便删除默认文本。 - -## 0.6.5-fix.1 - -修复:1.修复在缩放情况下调整图片大小不正确的问题。 - -## 0.6.5 - -修复:1.修复 xmind 文件导入报错的问题。 2.修复极少数情况下当节点文本的宽度为小数时显示发生换行的问题。 - -新增:1.打包后的库支持获取内置常量、主题等数据。 2.支持配置鼠标滚轮方向对应的缩放行为。 3.节点图片支持拖拽调整大小。 - -## 0.6.4-fix.1 - -新增:1.鼠标滚轮缩放时默认以鼠标当前位置为中心进行缩放,可以通过配置关闭该特性。 - -修复:1.修复改变了画布大小后缩放中心点默认值不随之更新的问题。 - -## 0.6.4 - -新增:1.默认以画布中心点进行缩放。 2.优化移动端双指缩放,以双指中心位置为中心点进行缩放。 - -## 0.6.3 - -修复:1.修复概要节点会响应插入节点快捷键的问题。 - -新增:1.支持自定义节点内容。 - -## 0.6.2 - -修复:1.修复富文本模式下,新建节点不随主题变化而变化的问题。 - -## 0.6.1 - -修复:1.修复将鼠标滚动改为移动画布行为后,使用触控板操作时移动灵敏度过高的问题。 - -## 0.6.0-fix.1 - -修复:1.修复没有设置过背景样式的情况下销毁思维导图报错的问题。 - -## 0.6.0 - -破坏性更新:调整了 simple-mind-map 源码的目录结构,主要影响:1.插件的引入路径需要修改。2.constant 文件路径需要修改。 - -新增:1.支持一键缩放至适应画布功能。 2.按住 Ctrl 键多选功能可通过配置按需开启。 3.支持设置为左键多选节点,右键拖动画布。 4.支持控制节点是否允许编辑。 5.新增销毁思维导图的方法。 6.新增触摸事件支持插件。 - -修复:1.修复按住 ctrl 键多选节点时不会触发节点的 click 事件的问题。 2.修复清空一个节点后再输入文字时节点样式丢失的问题。 - -## 0.5.11 - -新增:支持关联性文本编辑。 - -优化:优化主题配置更新,改变不涉及节点大小的配置不触发节点重新计算。 - -## 0.5.10 - -新增:使用 LRU 缓存算法优化节点复用逻辑。 - -## 0.5.10-fix.1 - -修复:修复导入出错的问题。 - -## 0.5.10-fix.2 - -修复:修复富文本模式下,切换主题、导入数据后没有触发数据改变的问题。 - -新增:新增三种主题。 - -## 0.5.9 - -修改:统一导出方法的格式,使用`FileReader`代替`URL.createObjectURL`转换`blob`数据。 - -## 0.5.8 - -优化:1.节点位置没有变化不触发位置设置。 2.展开收起状态没有变化不触发按钮更新。 - -新增:1.默认改为鼠标移上节点才显示展开收起按钮。 2.支持扩展节点可插入的图标列表。 - -## 0.5.7 - -破坏性更新:富文本模式下导出 png 改为使用 html2canvas 转换整个 svg,大幅提高导出速度,不过 html2canvas 存在一个 bug,foreignObject 元素中的 dom 节点内联的文字颜色无法识别,所以导出节点的文字颜色是固定的,不过相对于之前的导出基本不可用状态,目前至少能快速顺利的导出。 - -优化:优化富文本节点编辑体验。 - -新增:富文本模式下,导入数据、初始化数据、切换主题场景节点样式支持跟随主题变化。 - -## 0.5.6 - -修复:1.修复短时间快速多次渲染时节点位置错乱的问题。 2.修复节点正在编辑中时拖动画布导致编辑框和节点分离的问题。 - -新增:1.添加最大历史记录数限制。 - -## 0.5.5 - -新增:1.支持配置导出为 png、svg、pdf 时的内边距。 2.支持配置节点文本编辑框、节点备注浮层元素的 z-index。 3.支持点击画布外的区域结束节点编辑状态。 - -## 0.5.5-fix.1 - -修复:1.修复节点在画布外编辑时编辑框也在画布外的问题。 2.修改结构后复位变换,防止存在缩放时切换结构后第一次拖动时会发生位置突变的问题。 - -优化:1.节点多选时只要节点和选区存在交叉即认为被选中。 - -## 0.5.5-fix.2 - -修复:1.修复小地图报错。 - -## 0.5.4 - -新增:1.添加新主题。 2.新增时间轴和鱼骨结构。 - -修复:1.修复节点右键和画布右键的冲突问题。 2.修复组织结构图、目录组织图等节点拖拽时存在线段未隐藏的 bug。 - -优化:1.优化组织结构图布局。2.优化目录组织图布局。 - -## 0.5.4-fix.1 - -优化:1.优化鱼骨图布局。 - -## 0.5.3 - -修复:1.修复富文本模式下,如果选择了多个节点时设置文本样式,会将所有多选节点的文本改成最后一个多选节点的文本的问题。 - -新增:1.支持设置初始中心节点的位置。 - -### 0.5.3-fix.1 - -修复:1.修复设置初始中心节点的位置不生效的问题。 - -### 0.5.3-fix.2 - -修复:1.修复导出为图片时,节点中的图片显示不出来的问题。 - -## 0.5.2 - -修复:1.导出的`json`数据中去除`uid`;2.重新渲染时清空节点缓存池。 - -## 0.5.1 - -优化:1.只有当鼠标在画布内才响应快捷键事件。 - -修复:1.修复快速操作时节点位置不正确的问题。 - -## 0.5.0 - -这个版本主要是代码层面的改动和优化,核心是为了提升渲染性能,减少卡顿问题。 - -新增:1.支持自定义展开收起节点图标和颜色; - -优化:1.优化渲染逻辑,设置主题、前进回退等操作不再全量渲染; - - 2.优化节点拖拽逻辑,修复无法拖动到两个节点之间的问题; - - 3.收起全部节点操作增加回到中心点的逻辑; - - 4.修复短时间多次触发渲染造成节点乱飞和错乱的问题; - - 5.优化节点编辑的体验; - -修复:1.修复 setData 方法不触发历史记录的问题; - -修改:从 0.5.0 版本开始,考虑性能问题,节点激活状态只能修改形状相关的样式: - -```js -;['fillColor', 'borderColor', 'borderWidth', 'borderDasharray', 'borderRadius'] -``` - -## 0.4.7 - -优化:1.富文本编辑时初始聚焦时不再默认全选;2.富文本编辑时使用节点填充色作为背景色,避免节点颜色为白色时看不见。 3.节点激活状态切换不再触发历史记录。 4.短时间多次触发历史记录,只会添加最后一次的数据。 5.优化历史记录添加,当有回退时,再次添加新记录时删除当前指针后面的历史数据。 - -新增:1.支持导入和导出 Markdown 格式文件。 2.支持配置插入节点时的初始文字。 3.扩展插入节点和删除节点的命令,支持指定节点。 - -## 0.4.6 - -新增:1.关联线支持调整控制点。 - -优化:1.添加历史数据时过滤和上一次相比没有改变的数据。 - -修复:1.修复节点编辑时方向键和方向键导航功能的冲突问题。 2.修复拖拽移动节点时节点 id 的丢失问题,这会导致关联线丢失。 - -## 0.4.5 - -新增:1.支持关联线。 2.按住根节点也可以拖动画布。3.按住 ctrl 键可以调整多选节点。 - -## 0.4.4 - -新增:支持响应鼠标的横向滚动。 - -## 0.4.3 - -修复:前进回退后没有触发`data_change`事件的问题。 - -新增:支持自定义鼠标滚轮事件;鼠标滚轮调整为支持缩放视图和上下移动视图。 - -## 0.4.2 - -新增:`Node`类的`setText`方法增加第二个参数,以支持设置富文本内容。 - -## 0.4.1 - -新增:1.新增抛出节点鼠标移入和移除事件;2.节点富文本支持设置背景颜色;3.节点富文本支持清除样式。 - -修复:1.Mac 系统触控板缩放相反的问题;2.设备 window.devicePixelRatio 不为 1 时,当存在富文本节点时导出的图片中富文本节点尺寸会变大的问题。 - -## 0.4.0 - -新增:节点支持富文本编辑。 - -## 0.3.4 - -新增:节点文本增加自动换行功能。 - -修复:1.修复批量删除的节点中如果存在根节点会出现删除异常的问题。2.修复底边风格的情况下,节点高度过高会和其他节点重叠的问题。 - -## 0.3.3 - -修复:根节点文字无法换行的问题。 - -## 0.3.2 - -修复:1.修复二级节点拖拽到其他节点或其他节点拖拽到二级节点时节点样式没有更新的问题;2.修复当思维导图实际内容大于屏幕宽高时,导出的时候超出的部分没有绘制水印的问题。 - -## 0.3.1 - -修复:1.删除背景图片不生效的问题;2.节点拖拽到根节点时连接线跑到根节点上方的问题。 - -新增:背景图片展示增加位置和大小设置。导出的图片也同步支持该设置。 - -## 0.3.0 - -升级为插件化架构,将一些非核心功能抽离出来作为插件,按需注册,减小整体体积。 - -## 0.2.24 - -新增:节点自由拖拽改为可配置,默认为`false`不开启;支持添加水印。 - -## 0.2.23 - -新增:支持注册新主题。 - -## 0.2.22 - -优化:取消内置`simple-mind-map`包的主题和结构图片,改为由使用者自行维护,原有图片可在`web/assets/img/`目录找到。 - -## 0.2.21 - -新增:支持节点横线风格。 - -## 0.2.20 - -修复:画布距窗口左上角不为 0 时节点拖拽出现偏移的问题。 - -## 0.2.19 - -修复:没有激活节点时随便按什么键都会触发自动聚焦的问题。 - -## 0.2.18 - -优化:键盘导航寻找焦点的算法,支持简单算法、区域算法、阴影算法。 - -## 0.2.17 - -新增:键盘导航,即通过方向键来切换激活的节点;支持在大纲直接编辑节点文本内容。 - -## 0.2.16 - -优化:小地图、拖拽性能。 - -## 0.2.15 - -优化:本地文件编辑。 - -新增:支持双击节点内图片进行大图预览。 - -## 0.2.14 - -优化:插入子节点时自动展开。 - -修复:小地图关闭时报错的问题。 - -## 0.2.13 - -修复:子节点收起状态复制时丢失的问题。 - -## 0.2.11 - -修复:修复子节点收起状态复制时丢失的问题。 - -新增:支持小地图。 - -## 0.2.10 - -优化:手动创建节点时立即聚焦。 - -修复:连线样式深度更新问题。 - -新增:逻辑结构图、思维导图新增直线连接风格、直连风格。 - -## 0.2.9 - -新增:支持新建、打开、保存到电脑本地文件。 - -## 0.2.8 - -修复:xmind8 版本文件导入失败的问题。 - -新增:支持展开到指定层级。 - -## 0.2.7 - -修复:根节点添加多个节点爆栈的问题。 - -新增:支持导入.xmind 文件。 - -## 0.2.6 - -新增:导出 svg 增加 title 标签。 - -## 0.2.5 - -修复:节点展开收起的 bug。 - -新增:节点支持自定义线条样式。 - -## 0.2.4 - -新增:节点支持多种形状。 - -## 0.2.3 - -修复:编辑节点文本时快捷键冲突的问题;右键菜单快捷键提示错误;右键菜单快捷键提示。 - -## 0.2.2 - -修复:输入字符串'/'和快捷键'/'冲突问题。 - -## 0.2.1 - -新增:支持导出为 pdf。 - -## 0.2.0 - -新增:经典 4 主题;支持添加概要;支持自由拖拽;上移节点、下移节点、复制节点、剪切节点、粘贴节点、一键整理布快捷键;库打包;Ctrl+左键多选。 - -## 0.1.18 - -修复:节点图标不能删除的问题;工具按钮置灰仍然可以点击的问题。 - -## 0.1.17 - -新增:增加只读模式。 - -## 0.1.16 - -新增:节点备注支持 markdown 及富文本。 - -修复:不能选中文字的问题;节点标注在节点激活后无法隐藏问题;超链接、备注、标签等文字编辑时返回键和回车键与思维导图快捷键冲突的问题。 - -## 0.1.15 - -新增:状态数据支持保存激活状态、视图状态(拖动位置、缩放值);支持节点拖拽。 - -## 0.1.14 - -修复:存在激活节点时设置主题存在的问题。 - -## 0.1.13 - -新增:快捷键功能;新增导出为 json。 - -优化:一些细节。 - -## 0.1.12 - -新增:本地存储;右键菜单功能等。 - -## 0.1.0 - -完成基本功能。 diff --git a/web/src/pages/Doc/zh/changelog/index.vue b/web/src/pages/Doc/zh/changelog/index.vue deleted file mode 100644 index f29a61bd..00000000 --- a/web/src/pages/Doc/zh/changelog/index.vue +++ /dev/null @@ -1,1004 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/client/index.md b/web/src/pages/Doc/zh/client/index.md deleted file mode 100644 index 419f6f86..00000000 --- a/web/src/pages/Doc/zh/client/index.md +++ /dev/null @@ -1,82 +0,0 @@ -# 客户端 - -本项目也提供了客户端版本,使用[Electron](https://www.electronjs.org/)开发。支持`Windows`、`Mac`及`Linux`。 - -目前功能比较简单: - -1.支持新建、打开文件进行编辑; - -2.支持查看最近编辑文件列表; - -3.支持文件的复制、删除、重命名; - -## 下载 - -> 客户端版本会落后于在线版本,要尝试新功能请优先使用在线版。 - -你可以直接下载对应的客户端安装使用,提供了两个下载地址: - -Github:[releases](https://github.com/wanglin2/mind-map/releases)。 - -百度云盘:[地址](https://pan.baidu.com/s/1huasEbKsGNH2Af68dvWiOg?pwd=3bp3)。 - -## 开发 - -如果有需要,你也可以进行二次开发。 - -### clone - -```bash -git clone https://github.com/wanglin2/mind-map.git -cd mind-map -git checkout electron -``` - -### 启动服务 - -在项目根目录下执行: - -```bash -cd simple-mind-map -npm i -npm link -cd .. -cd web -npm i -npm link simple-mind-map -npm run electron:serve -``` - -### 打包客户端 - -你至少需要两台电脑,一台`Windows`和一台`Mac`。 - -打包`Windows`应用: - -```bash -npm run electron:build-win -``` - -打包`Mac`应用: - -```bash -npm run electron:build-mac -``` - -打包`Linux`应用: - -```bash -npm run electron:build-linux -``` - -打包全部应用: - -```bash -npm run electron:build-all -``` - -根据你的电脑系统自动打包: - -```bash -npm run electron:build -``` \ No newline at end of file diff --git a/web/src/pages/Doc/zh/client/index.vue b/web/src/pages/Doc/zh/client/index.vue deleted file mode 100644 index 9b6e0aa2..00000000 --- a/web/src/pages/Doc/zh/client/index.vue +++ /dev/null @@ -1,63 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/command/index.md b/web/src/pages/Doc/zh/command/index.md deleted file mode 100644 index 25c6884b..00000000 --- a/web/src/pages/Doc/zh/command/index.md +++ /dev/null @@ -1,53 +0,0 @@ -# Command 实例 - -`command`实例负责命令的添加及执行,内置了很多命令,也可以自行添加,命令指需要在历史堆栈数据里添加副本的操作。可通过`mindMap.command`获取到该实例 - -## 属性 - -### history - -当前所有的历史数据列表。不要手动修改该数组。 - -### activeHistoryIndex - -当前所在的历史数据索引。不要手动修改该属性。 - -## 方法 - -前进后退请使用命令`BACK`或`FORWARD`。 - -### pause() - -> v0.9.11+ - -暂停收集历史数据。 - -### recovery() - -> v0.9.11+ - -恢复收集历史数据。 - -### add(name, fn) - -添加命令。 - -`name`:命令名称 - -`fn`:命令要执行的方法 - -### remove(name, fn) - -移除命令。 - -`name`:要移除的命令名称 - -`fn`:要移除的方法,不传的话移除该命令所有的方法 - -### getCopyData() - -获取渲染树数据副本。即当前画布的数据。 - -### clearHistory() - -清空历史堆栈数据 diff --git a/web/src/pages/Doc/zh/command/index.vue b/web/src/pages/Doc/zh/command/index.vue deleted file mode 100644 index 373f2247..00000000 --- a/web/src/pages/Doc/zh/command/index.vue +++ /dev/null @@ -1,46 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/constructor/index.md b/web/src/pages/Doc/zh/constructor/index.md deleted file mode 100644 index 08faedf8..00000000 --- a/web/src/pages/Doc/zh/constructor/index.md +++ /dev/null @@ -1,803 +0,0 @@ -# 构造函数 - -## 基本使用 - -```html -
-``` - -```js -import MindMap from "simple-mind-map"; - -const mindMap = new MindMap({ - el: document.getElementById('mindMapContainer'), - data: { - "data": { - "text": "根节点" - }, - "children": [] - } -}); -``` - -## 实例化选项 - -### 1.基本 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| el | Element | | 容器元素,必传,必须为DOM元素(当容器元素在页面上的位置发生了改变,但大小没有改变的情况下必须调用`getElRectInfo()`方法更新库内部的相关信息;当大小也发生了改变后必须调用`resize()`方法,否则会造成一些功能异常) | -| data | Object 、 null | | 思维导图数据,可参考下方【数据结构】介绍。v0.9.9+支持传空对象或者null,画布会显示空白 | -| layout | String | logicalStructure | 布局类型,可选列表:logicalStructure(逻辑结构图)、logicalStructureLeft(v0.10.2+,向左逻辑结构图)、mindMap(思维导图)、catalogOrganization(目录组织图)、organizationStructure(组织结构图)、timeline(v0.5.4+,时间轴)、timeline2(v0.5.4+,上下交替型时间轴)、fishbone(v0.5.4+,鱼骨图) | -| fishboneDeg(v0.5.4+) | Number | 45 | 设置鱼骨结构图的斜线角度 | -| theme | String | default | 主题,可选列表:default(默认)、classic(脑图经典)、minions(小黄人)、pinkGrape(粉红葡萄)、mint(薄荷)、gold(金色vip)、vitalityOrange(活力橙)、greenLeaf(绿叶)、dark2(暗色2)、skyGreen(天清绿)、classic2(脑图经典2)、classic3(脑图经典3)、classic4(脑图经典4,v0.2.0+)、classicGreen(经典绿)、classicBlue(经典蓝)、blueSky(天空蓝)、brainImpairedPink(脑残粉)、dark(暗色)、earthYellow(泥土黄)、freshGreen(清新绿)、freshRed(清新红)、romanticPurple(浪漫紫)、simpleBlack(v0.5.4+简约黑)、courseGreen(v0.5.4+课程绿)、coffee(v0.5.4+咖啡)、redSpirit(v0.5.4+红色精神)、blackHumour(v0.5.4+黑色幽默)、lateNightOffice(v0.5.4+深夜办公室)、blackGold(v0.5.4+黑金)、avocado(v.5.10-fix.2+牛油果)、autumn(v.5.10-fix.2+秋天)、orangeJuice(v.5.10-fix.2+橙汁) | -| themeConfig | Object | {} | 主题配置,会和所选择的主题进行合并,可用字段可参考:[default.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/default.js) | -| scaleRatio | Number | 0.1 | 放大缩小的增量比例 | -| maxTag | Number | 5 | 节点里最多显示的标签数量,多余的会被丢弃 | -| tagPosition(v0.10.3+) | String | right | 标签显示的位置,相对于节点文本,bottom(下方)、right(右侧) | -| imgTextMargin | Number | 5 | 节点里图片和文字的间距 | -| textContentMargin | Number | 2 | 节点里各种文字信息的间距,如图标和文字的间距 | -| customNoteContentShow(v0.1.6+) | Object | null | 自定义节点备注内容显示,Object类型,结构为:{show: (noteContent, left, top, node) => {// 你的显示节点备注逻辑。node为v0.8.1+版本新增的回参,代表节点实例 }, hide: () => {// 你的隐藏节点备注逻辑 }} | -| readonly(v0.1.7+) | Boolean | false | 是否是只读模式 | -| textAutoWrapWidth(v0.3.4+) | Number | 500 | 节点内每行文本达到该宽度后自动换行 | -| customHandleMousewheel(v0.4.3+) | Function | null | 自定义鼠标滚轮事件处理,可以传一个函数,回调参数为事件对象 | -| mousewheelAction(v0.4.3+) | String | zoom(v0.9.1+默认改为move) | 鼠标滚轮的行为,`zoom`(放大缩小)、`move`(上下移动)。如果`customHandleMousewheel`传了自定义函数,这个属性不生效 | -| mousewheelMoveStep(v0.4.3+) | Number | 100 | 当`mousewheelAction`设为`move`时,可以通过该属性控制鼠标滚动一下视图移动的步长,单位`px` | -| mousewheelZoomActionReverse(v0.6.5+) | Boolean | false(v0.9.1+默认改为true) | 当mousewheelAction设为zoom时,或者按住Ctrl键时,默认向前滚动是缩小,向后滚动是放大,如果该属性设为true,那么会反过来 | -| defaultInsertSecondLevelNodeText(v0.4.7+) | String | 二级节点 | 默认插入的二级节点的文字 | -| defaultInsertBelowSecondLevelNodeText(v0.4.7+) | String | 分支主题 | 默认插入的二级以下节点的文字 | -| expandBtnStyle(v0.5.0+) | Object | { color: '#808080', fill: '#fff', fontSize: 13, strokeColor: '#333333' } | 展开收起按钮的颜色,(fontSize及strokeColor字段为0.7.0+版本新增的,用于设置收起时显示节点数量的文字样式) | -| expandBtnIcon(v0.5.0+) | Object | { open: '', close: '' } | 自定义展开收起按钮的图标,可以传图标的svg字符串 | -| expandBtnNumHandler(v0.7.0+) | Function | | 用于自定义收起时显示节点数量的内容,接收一个参数,代表收起的节点实例,需要返回一个数字或字符串,代表最终显示的内容,比如你可以当数量大于99时,显示99+ | -| isShowExpandNum(v0.7.0+) | Boolean | true | 节点收起时是否显示收起的数量 | -| enableShortcutOnlyWhenMouseInSvg(v0.5.1+) | Boolean | true | 是否只有当鼠标在画布内才响应快捷键事件 | -| enableNodeTransitionMove(v0.5.1+)(v0.6.7+已去除该特性) | Boolean | true | 是否开启节点动画过渡 | -| nodeTransitionMoveDuration(v0.5.1+)(v0.6.7+已去除该特性) | Number | 300 | 如果开启节点动画过渡,可以通过该属性设置过渡的时间,单位ms | -| initRootNodePosition(v0.5.3+) | Array | null | 初始根节点的位置,可传一个数组,默认为`['center', 'center']`,代表根节点处于画布中心位置,除了`center`,关键词还可以设置`left`、`top`、`right`、`bottom`,除了可以传关键词,数组的每项还可以传递一个数字,代表具体的像素,可以传递一个百分比字符串,比如`['40%', '60%']`,代表水平位置在画布宽度的`40%`的位置,垂直位置在画布高度的`60%`的位置 | -| nodeTextEditZIndex(v0.5.5+) | Number | 3000 | 节点文本编辑框元素的z-index | -| nodeNoteTooltipZIndex(v0.5.5+) | Number | 3000 | 节点备注浮层元素的z-index | -| isEndNodeTextEditOnClickOuter(v0.5.5+) | Boolean | true | 是否在点击了画布外的区域时结束节点文本的编辑状态 | -| maxHistoryCount(v0.5.6+) | Number | 1000(v0.9.2+改为500) | 最大历史记录数 | -| alwaysShowExpandBtn(v0.5.8+) | Boolean | false | 是否一直显示节点的展开收起按钮,默认为鼠标移上去和激活时才显示 | -| iconList(v0.5.8+) | Array | [] | 扩展节点可插入的图标,数组的每一项为一个对象,对象详细结构请参考下方【图标配置】表格 | -| maxNodeCacheCount(v0.5.10+) | Number | 1000 | 节点最大缓存数量。为了优化性能,内部会维护一个节点缓存池,用来复用节点,通过该属性可以指定池的最大缓存数量 | -| fitPadding(v0.6.0+) | Number | 50 | 思维导图适应画布大小时的内边距,单位:px | -| enableCtrlKeyNodeSelection(v0.6.0+) | Boolean | true | 是否开启按住ctrl键多选节点的功能 | -| useLeftKeySelectionRightKeyDrag(v0.6.0+) | Boolean | false | 设置为左键多选节点,右键拖动画布 | -| beforeTextEdit(v0.6.0+) | Function/null | null | 节点即将进入编辑前的回调方法,如果该方法返回true以外的值,那么将取消编辑,函数可以返回一个值,或一个Promise,回调参数为节点实例 | -| isUseCustomNodeContent(v0.6.3+) | Boolean | false | 是否自定义节点内容 | -| customCreateNodeContent(v0.6.3+) | Function/null | null | 如果`isUseCustomNodeContent`设为`true`,那么需要使用该选项传入一个方法,接收节点实例`node`为参数(如果要获取该节点的数据,可以通过`node.nodeData.data`),需要返回自定义节点内容元素,也就是DOM节点,如果某个节点不需要自定义,那么返回`null`即可 | -| mouseScaleCenterUseMousePosition(v0.6.4-fix.1+) | Boolean | true | 鼠标缩放是否以鼠标当前位置为中心点,否则以画布中心点 | -| customInnerElsAppendTo(v0.6.12+) | null/HTMLElement | null | 指定内部一些元素(节点文本编辑元素、节点备注显示元素、关联线文本编辑元素、节点图片调整按钮元素)添加到的位置,默认添加到document.body下 | -| enableCreateHiddenInput(v0.6.13+)(v0.6.14+版本已去除该特性) | Boolean | true | 是否允许创建一个隐藏的输入框,该输入框会在节点激活时聚焦,用于粘贴数据和自动进入文本编辑状态 | -| enableAutoEnterTextEditWhenKeydown(v0.6.13+) | Boolean | true | 是否在存在一个激活节点时,当按下中文、英文、数字按键时自动进入文本编辑模式 | -| customHandleClipboardText(v0.6.14+) | Function | null | 自定义对剪贴板文本的处理。当按ctrl+v粘贴时会读取用户剪贴板中的文本和图片,默认只会判断文本是否是普通文本和simple-mind-map格式的节点数据,如果你想处理其他思维导图的数据,比如processon、zhixi等,那么可以传递一个函数,接受当前剪贴板中的文本为参数,返回处理后的数据,可以返回两种类型:1.返回一个纯文本,那么会直接以该文本创建一个子节点;2.返回一个节点对象,格式如下:{ simpleMindMap: true, data: { data: { text: '' }, children: [] } },代表是simple-mind-map格式的数据,节点数据同simple-mind-map节点数据格式,如果你的处理逻辑存在异步逻辑,也可以返回一个promise | -| errorHandler(v0.6.15+) | Function | | 自定义错误处理函数,目前只会抛出一些异步逻辑出错的情况。可以传递一个函数,会接收两个参数,第一个为错误的类型,第二个为错误对象 | -| disableMouseWheelZoom(v0.6.15+) | Boolean | false | 禁止鼠标滚轮缩放,你仍旧可以使用api进行缩放 | -| enableDblclickReset(v0.6.17+)(v0.8.0+已删除该属性) | Boolean | true(v0.7.0+改为false) | 开启鼠标双击复位思维导图位置及缩放 | -| enableDblclickBackToRootNode(v0.8.0+) | Boolean | false | 是否在鼠标双击时回到根节点,也就是让根节点居中显示 | -| hoverRectColor(v0.7.0+) | String | rgb(94, 200, 248) | 节点鼠标hover和激活时显示的矩形边框颜色,hover时会添加0.6的透明度 | -| hoverRectPadding(v0.7.0+) | Number | 2 | 节点鼠标hover和激活时显示的矩形边框距节点内容的距离 | -| selectTextOnEnterEditText(v0.7.0+) | Boolean | true | 双击节点进入节点文本编辑时是否默认选中文本,默认只在创建新节点时会选中 | -| deleteNodeActive(v0.7.1+) | Boolean | true | 是否开启删除节点后自动激活节点相邻节点或父节点的功能 | -| fit(v0.7.1-fix.2+) | Boolean | false | 首次渲染时是否缩放至适应画布大小 | -| tagsColorMap(v0.7.2+) | Object | {} | 自定义节点标签的颜色,可传一个对象,key为要指定颜色的标签内容,value为该标签内容的颜色,如果不传内部会根据标签内容生成对应的颜色 | -| cooperateStyle(v0.7.3+) | Object | { avatarSize: 22, fontSize: 12 } | 节点协作编辑时的人员头像样式配置,字段含义分别为:头像大小、如果是文字头像,那么文字的大小 | -| onlyOneEnableActiveNodeOnCooperate(v0.9.8+) | Boolean | false | 协同编辑时,同一个节点不能同时被多人选中 | -| defaultGeneralizationText(v0.8.0+) | String | 概要 | 插入概要的默认文本 | -| handleIsSplitByWrapOnPasteCreateNewNode(v0.8.0+) | Function / null | null | 粘贴文本的方式创建新节点时,控制是否按换行自动分割节点,即如果存在换行,那么会根据换行创建多个节点,否则只会创建一个节点,可以传递一个函数,返回promise,resolve代表根据换行分割,reject代表忽略换行 | -| addHistoryTime(v0.8.0+) | Number | 100 | 指定时间内只允许添加一次历史记录,避免添加没有必要的中间状态,单位:ms | -| isDisableDrag(v0.8.1+) | Boolean | false | 是否禁止拖动画布 | -| highlightNodeBoxStyle(v0.9.0+) | Object | { stroke: 'rgb(94, 200, 248)', fill: 'transparent' } | 鼠标移入概要高亮所属节点时的高亮框样式 | -| createNewNodeBehavior(v0.9.1+) | String | default | 创建新节点时的行为。default(默认会激活新创建的节点,并且进入编辑模式。如果同时创建了多个新节点,那么只会激活而不会进入编辑模式)、notActive(不激活新创建的节点)、activeOnly(只激活新创建的节点,不进入编辑模式) | -| defaultNodeImage(v0.9.1-fix.2+) | String | | 图片地址,当节点图片加载失败时显示的默认图片 | -| handleNodePasteImg(v0.9.2+) | null 或 Function | null | 在节点上粘贴剪贴板中的图片的处理方法,默认是转换为data:url数据插入到节点中,你可以通过该方法来将图片数据上传到服务器,实现保存图片的url。可以传递一个异步方法,接收Blob类型的图片数据,需要返回指定结构:{ url, size: {width, height} } | -| isLimitMindMapInCanvas(v0.9.2+) | Boolean | false | 是否将思维导图限制在画布内。比如向右拖动时,思维导图图形的最左侧到达画布中心时将无法继续向右拖动,其他同理 | -| beforeShortcutRun(v0.9.9+) | Function、null | null | 快捷键操作即将执行前的生命周期函数,返回true可以阻止操作执行。函数接收两个参数:key(快捷键)、activeNodeList(当前激活的节点列表) | -| resetScaleOnMoveNodeToCenter(v0.9.12+) | Boolean | false | 移动节点到画布中心、回到根节点等操作时是否将缩放层级复位为100%(该选项实际影响的是render.moveNodeToCenter方法,moveNodeToCenter方法本身也存在第二个参数resetScale来设置是否复位,如果resetScale参数没有传递,那么使用resetScaleOnMoveNodeToCenter配置,否则使用resetScale配置)。 | -| createNodePrefixContent(v0.9.12+) | Function、null | null | 添加附加的节点前置内容。前置内容指和文本同一行的区域中的前置内容,不包括节点图片部分。可以传递一个函数,这个函数接收一个节点实例的参数,可以返回{el, width, height}格式的对象,el为DOM节点对象,width和height代表内容的宽高,数字类型,如果不需要自定义内容,也可以返回null | -| createNodePostfixContent(v0.9.12+) | Function、null | null | 添加附加的节点后置内容。后置内容指和文本同一行的区域中的后置内容,不包括节点图片部分。用法同createNodePrefixContent | -| disabledClipboard(v0.10.2+) | Boolean | false | 是否禁止粘贴用户剪贴板中的数据,禁止将复制的节点数据写入用户的剪贴板中,此时只能复制和粘贴画布内的节点数据 | -| customHyperlinkJump(v0.10.2+) | null、Function | false | 自定义超链接的跳转。如果不传,默认会以新窗口的方式打开超链接,可以传递一个函数,函数接收两个参数:link(超链接的url)、node(所属节点实例),只要传递了函数,就会阻止默认的跳转 | -| openPerformance(v0.10.4+) | Boolean | false | 是否开启性能模式,默认情况下所有节点都会直接渲染,无论是否处于画布可视区域,这样当节点数量比较多时(1000+)会比较卡,如果你的数据量比较大,那么可以通过该配置开启性能模式,即只渲染画布可视区域内的节点,超出的节点不渲染,这样会大幅提高渲染速度,当然同时也会带来一些其他问题,比如:1.当拖动或是缩放画布时会实时计算并渲染未节点的节点,所以会带来一定卡顿;2.导出图片、svg、pdf时需要先渲染全部节点,所以会比较慢;3.其他目前未发现的问题 | -| performanceConfig(v0.10.4+) | Object | { time: 250, padding: 100, removeNodeWhenOutCanvas: true } | 性能优化模式配置。time(当视图改变后多久刷新一次节点,单位:ms)、padding(超出画布四周指定范围内依旧渲染节点)、removeNodeWhenOutCanvas(节点移出画布可视区域后是否从画布删除) | - -#### 1.1数据结构 - -基本的数据结构如下: - -```js -{ - data: { - text: '', // 节点的文本,可以是富文本,也就是html格式的,此时richText要设为true - richText: false, // 节点的文本是否是富文本模式 - expand: true, // 节点是否展开 - uid: '',// 节点唯一的id,可不传,内部会生成 - icon: [], // 图标,格式可参考教程里的【插入和扩展节点图标】章节 - image: '', // 图片的url - imageTitle: '', // 图片的标题,可为空 - imageSize: { // 图片的尺寸 - width: 100, // 图片的宽度,必传 - height: 100, // 图片的高度,必传 - custom: false // 如果设为true,图片的显示大小不受主题控制,以imageSize.width和imageSize.height为准 - }, - hyperlink: '', // 超链接地址 - hyperlinkTitle: '', // 超链接的标题 - note: '', // 备注的内容 - attachmentUrl: '',// v0.9.10+,附件url - attachmentName: '',// v0.9.10+,附件名称 - tag: [], // 标签列表,v0.10.3以前的版本只支持字符串数组,即['标签'],v0.10.3+版本支持对象数组,即[{text: '标签', style: {}}],具体支持的标签样式可参考下方【标签的样式】 - generalization: [{// (0.9.0以下版本不支持数组,只能设置单个概要数据)节点的概要,如果没有概要generalization设为null即可 - text: '', // 概要的文本 - richText: false, // 节点的文本是否是富文本模式 - // ...其他普通节点的字段都支持,但是不支持children - }], - associativeLineTargets: [''],// 如果存在关联线,那么为目标节点的uid列表 - associativeLineText: '',// 关联线文本 - // ...其他样式字段,可以参考主题 - }, - children [// 子节点,结构和根节点一致 - { - data: {}, - children: [] - } - ] -} -``` - -如果你要添加自定义的字段,可以添加到`data`、`children`同级,如果你要添加到`data`对象里,那么请使用`_`开头来命名你的自定义字段,内部会通过这个来判断是否是自定义字段。 - -##### 标签的样式 - -标签的样式`style`对象支持以下属性: - -| 字段名称 | 类型 | 默认值 | 描述 | -| ----------- | ------ | -------- | ----------- | -| radius | Number | 3 | 标签矩形的圆角大小 | -| fontSize | Number | 12 | 字号,建议文字高度不要大于height | -| fill | String | | 标签矩形的背景颜色 | -| height | Number | 20 | 标签矩形的高度 | -| paddingX | Number | 8 | 水平内边距,如果设置了width,将忽略该配置 | -| width | Number | | 标签矩形的宽度,如果不设置,默认以文字的宽度+paddingX*2为宽度 | - -#### 1.2图标配置 - -| 字段名称 | 类型 | 默认值 | 描述 | -| ----------- | ------ | ------------------------------------------- | ------------------------------------ | -| name | String | | 图标分组的名称 | -| type | String | | 图标分组的值 | -| list | Array | | 分组下的图标列表,数组的每一项为一个对象,`{ name: '', icon: '' }`,`name`代表图标的名称,`icon`代表图标,可以是`svg`图标,比如``,也可以是图片`url`,或者是`base64`图标,比如`data:image/png;base64,...` | - - -### 2.Export插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| exportPadding(已废除) | Number | 20 | 导出图片时的内边距 | -| exportPaddingX(v0.5.5+) | Number | 10 | 导出png、svg、pdf时的图形水平内边距 | -| exportPaddingY(v0.5.5+) | Number | 10 | 导出png、svg、pdf时的图形垂直内边距 | -| resetCss(v0.6.16+) | String | * { margin: 0; padding: 0; box-sizing: border-box; } | 设置导出图片和svg时,针对富文本节点内容,也就是嵌入到svg中的html节点的默认样式覆盖,如果不覆盖,节点内容会发生偏移 | -| minExportImgCanvasScale(v0.7.0+) | Number | 2 | 导出图片和pdf时canvas的缩放倍数,该配置会和window.devicePixelRatio值取最大值,用于提升图片清晰度 | -| addContentToHeader(v0.9.9+) | Function、null | null | 导出png、svg、pdf时在头部添加自定义内容。可传递一个函数,这个函数可以返回null代表不添加内容,也可以返回一个对象,详细介绍请参考下方【导出时如何添加自定义内容】 | -| addContentToFooter(v0.9.9+) | Function、null | null | 基本释义同addContentToHeader,在尾部添加自定义内容 | -| handleBeingExportSvg(v0.10.1+) | Function、null | null | 导出png、svg、pdf时会获取画布上的svg数据进行克隆,然后通过该克隆的元素进行导出,如果你想对该克隆元素做一些处理,比如新增、替换、修改其中的一些元素,那么可以通过该参数传递一个处理函数,接收svg元素对象,处理后,需要返回原svg元素对象。(需要注意的是svg对象指的是@svgdotjs/svg.js库的元素对象,所以你需要阅读该库的文档来操作该对象) | - -#### 2.1导出时如何添加自定义内容 - -`addContentToHeader`和`addContentToFooter`两个实例化选项可以用于在导出`png`、`svg`、`pdf`时在头部和尾部添加自定义的内容,默认为`null`,代表不配置,可以传递一个函数,函数可以返回`null`,代表不添加内容,如果要添加内容那么需要返回如下的结构: - -``` -{ - el,// 要追加的自定义DOM节点,样式可内联 - cssText,// 可选,如果样式不想内联,可以传递该值,一个css字符串 - height: 50// 返回的DOM节点的高度,必须传递 -} -``` - -一个简单的示例: - -```js -new MindMap({ - addContentToFooter: () => { - const el = document.createElement('div') - el.className = 'footer' - el.innerHTML = '来自:simple-mind-map' - const cssText = ` - .footer { - width: 100%; - height: 30px; - } - ` - return { - el, - cssText, - height: 30 - } - } -}) -``` - -### 3.Select插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| selectTranslateStep | Number | 3 | 多选节点时鼠标移动到边缘时的画布移动偏移量 | -| selectTranslateLimit | Number | 20 | 多选节点时鼠标移动距边缘多少距离时开始偏移 | - -### 4.Drag插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| enableFreeDrag(v0.2.4+) | Boolean | false | 是否开启节点自由拖拽(自由拖拽即可以把节点拖拽到画布的任意位置,注意不是拖拽节点成为其他节点的子节点兄弟节点的功能,自由拖拽的连线会存在一定问题,所以该特性最好不要使用) | -| nodeDragPlaceholderMaxSize(v0.6.12+)(v0.10.0+已废除) | Number | 20 | 拖拽元素时,指示元素新位置的块的最大高度 | -| autoMoveWhenMouseInEdgeOnDrag(v0.7.1+) | Boolean | true | 拖拽节点时鼠标移动到画布边缘是否开启画布自动移动 | -| dragMultiNodeRectConfig(v0.7.2+) | Object | { width: 40, height: 20, fill: 'rgb(94, 200, 248)' } | 拖拽多个节点时随鼠标移动的示意矩形的样式配置,传递一个对象,字段含义分别为矩形的宽、高、填充色 | -| dragPlaceholderRectFill(v0.7.2+) | String | rgb(94, 200, 248) | 节点拖拽时新位置的示意矩形的填充颜色 | -| dragPlaceholderLineConfig(v0.10.0+) | Object | { color: 'rgb(94, 200, 248)', width: 2 } | 节点拖拽时新位置的示意连线的样式配置 | -| dragOpacityConfig(v0.7.2+) | Object | { cloneNodeOpacity: 0.5, beingDragNodeOpacity: 0.3 } | 节点拖拽时的透明度配置,传递一个对象,字段含义分别为:跟随鼠标移动的克隆节点或矩形的透明度、被拖拽节点的透明度 | -| beforeDragEnd(v0.10.1+) | null、Function | null | 即将拖拽完成前调用该函数,函数接收一个对象作为参数:{overlapNodeUid,prevNodeUid,nextNodeUid,beingDragNodeList},代表拖拽信息,如果要阻止本次拖拽,那么可以返回true,此时node_dragend事件不会再触发。函数可以是异步函数,返回Promise实例。beingDragNodeList为v0.10.2+新增的回调参数,为当前被拖拽的节点列表 | -| handleDragCloneNode(v0.10.1+) | null、Function | null | 拖拽单个节点时会克隆被拖拽节点,如果想修改该克隆节点,那么可以通过该选项提供一个处理函数,函数接收克隆节点对象。(需要注意的是节点对象指的是@svgdotjs/svg.js库的元素对象,所以你需要阅读该库的文档来操作该对象) | -| beforeDragStart(v0.10.2+) | null、Function((nodeList) => {}) | null | 即将开始拖拽节点前调用该函数,函数接收当前即将被拖拽的节点实例列表作为参数,如果要阻止本次拖拽,那么可以返回true。可以是异步函数,返回一个Promise实例 | - -### 5.Watermark插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| watermarkConfig(v0.2.4+) | Object | | 水印配置,详细配置请参考下方表格【水印配置】 | - -#### 5.1水印配置 - -| 字段名称 | 类型 | 默认值 | 描述 | -| ----------- | ------ | ------------------------------------------- | ------------------------------------ | -| text | String | '' | 水印文字,如果为空字符串则不显示水印 | -| lineSpacing | Number | 100 | 水印每行之间的间距 | -| textSpacing | Number | 100 | 同一行水印之间的间距 | -| angle | Number | 30 | 水印的倾斜角度,范围:[0, 90] | -| textStyle | Object | {color: '#999', opacity: 0.5, fontSize: 14} | 水印文字样式 | -| onlyExport(v0.9.2+) | Boolean | false | 是否仅在导出时添加水印 | -| belowNode(v0.10.0+) | Boolean | false | 水印是否显示在节点下方 | - -### 6.AssociativeLine插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| defaultAssociativeLineText(v0.5.11+) | String | 关联 | 关联线默认文字 | -| associativeLineIsAlwaysAboveNode(v0.8.0+) | Boolean | true | 关联线是否始终显示在节点上层,如果设为false,那么创建关联线和激活关联线时处于最顶层,其他情况下处于节点下方 | -| associativeLineInitPointsPosition(v0.9.5+) | null / { from, to } | { from: '', to: '' } | 默认情况下,新创建的关联线两个端点的位置是根据两个节点中心点的相对位置来计算的,如果你想固定位置,可以通过这个选项来配置。from和to都不传,则都自动计算,如果只传一个,另一个则会自动计算。from和to可选值:left、top、bottom、right | -| enableAdjustAssociativeLinePoints(v0.9.5+) | Boolean | true | 是否允许调整关联线两个端点的位置 | - -### 7.RichText插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| richTextEditFakeInPlace(v0.6.13+) | Boolean | false | 设置富文本节点编辑框和节点大小一致,形成伪原地编辑的效果,需要注意的是,只有当节点内只有文本、且形状是矩形才会有比较好的效果 | -| transformRichTextOnEnterEdit(v0.10.0+) | null、Function | null | 转换富文本内容,可以传递一个函数,当进入富文本编辑时会调用该函数,函数接收即将被编辑的富文本内容,需要返回你处理后的富文本内容 | -| beforeHideRichTextEdit(v0.10.0+) | null、Function | null | 可以传递一个函数,即将结束富文本编辑前会执行该函数,函数接收richText实例,所以你可以在此时机更新quill文档数据 | - -### 8.TouchEvent插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| disableTouchZoom(v0.8.1+) | Boolean | false | 禁止双指缩放,你仍旧可以使用api进行缩放,对TouchEvent插件生效 | -| minTouchZoomScale(v0.10.1+) | Number | 20 | 允许最大和最小的缩放值,百分数,传-1代表不限制 | -| maxTouchZoomScale(v0.10.1+) | Number | -1 | 同minTouchZoomScale | - -### 9.Scrollbar插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| isLimitMindMapInCanvasWhenHasScrollbar(v0.9.2+) | Boolean | true | 当注册了滚动条插件(Scrollbar)时,是否将思维导图限制在画布内,isLimitMindMapInCanvas配置不再起作用 | - -### 10.Search插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| isOnlySearchCurrentRenderNodes(v0.9.8+) | Boolean | false | 是否仅搜索当前渲染的节点,被收起的节点不会被搜索到 | - -### 11.Cooperate插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| beforeCooperateUpdate(v0.9.8+) | Function、null | null | 协同编辑时,节点操作即将更新到其他客户端前的生命周期函数。函数接收一个对象作为参数:{ type: 【createOrUpdate(创建节点或更新节点)、delete(删除节点)】, list: 【数组类型,1.当type=createOrUpdate时,代表被创建或被更新的节点数据,即将同步到其他客户端,所以你可以修改该数据;2.当type=delete时,代表被删除的节点数据】 } | - -### 12.RainbowLines插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| rainbowLinesConfig(v0.9.9+) | Object | { open: false, colorsList: [] } | 彩虹线条配置,需要先注册RainbowLines插件。对象类型,结构:{ open: false【是否开启彩虹线条】, colorsList: []【自定义彩虹线条的颜色列表,如果不设置,会使用默认颜色列表】 } | - -### 13.Demonstrate插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| demonstrateConfig(v0.9.11+) | Object、null | null | 演示插件Demonstrate的配置。不传则使用默认配置,可传递一个对象,如果只配置某个属性,可以只设置该属性,其他没有设置的同样会使用默认配置,完整配置请参考下方【演示插件配置】小节 | - -#### 13.1演示插件配置 - -| 字段名称 | 类型 | 默认值 | 描述 | -| ----------- | ------ | ------------------------------------------- | ------------------------------------ | -| boxShadowColor | String | rgba(0, 0, 0, 0.8) | 高亮框四周区域的颜色 | -| borderRadius | String | 5px | 高亮框的圆角大小 | -| transition | String | all 0.3s ease-out | 高亮框动画的过渡属性,CSS的transition属性 | -| zIndex | Number | 9999 | 高亮框元素的层级 | -| padding | Number | 20 | 高亮框的内边距 | -| margin | Number | 50 | 高亮框的外边距 | -| openBlankMode(v0.9.12+) | Boolean | true | 是否开启填空模式,即带下划线的文本默认不显示,按回车键才依次显示 | - -#### 14.Formula插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | 是否开启在富文本编辑框中直接编辑数学公式 | -| katexFontPath(v0.10.3+) | String | https://unpkg.com/katex@0.16.11/dist | katex库的字体文件的请求路径。仅当katex的output配置为html时才会请求字体文件。可以通过mindMap.formula.getKatexConfig()方法来获取当前的配置。字体文件可以从node_modules中找到:katex/dist/fonts/。可以上传到你的服务器或cdn。最终的字体请求路径为`${katexFontPath}fonts/KaTeX_AMS-Regular.woff2`,可以自行拼接进行测试是否可以访问 | -| getKatexOutputType(v0.10.3+) | Function、null | null | 自定义katex库的输出模式。默认当Chrome内核100以下会使用html方式,否则使用mathml方式,如果你有自己的规则,那么可以传递一个函数,函数返回值为:mathml或html | - -#### 15.OuterFrame插件 - -| 字段名称 | 类型 | 默认值 | 描述 | -| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | -| outerFramePaddingX(v0.10.3+) | Number | 10 | 外框的水平内边距 | -| outerFramePaddingY(v0.10.3+) | Number | 10 | 外框的垂直内边距 | - -## 静态方法 - -### defineTheme(name, config) - -> v0.2.23+ - -定义新主题。 - -`name`:新主题名称 - -`config`:主题数据 - -`simple-mind-map`内置了众多主题,另外你也可以注册新主题,建议在实例化之前进行注册,这样在实例化时可以直接使用新注册的主题,使用示例: - -```js -import MindMap from 'simple-mind-map' -// 注册新主题 -MindMap.defineTheme('主题名称', {}) - -// 1.实例化时使用新注册的主题 -const mindMap = new MindMap({ - theme: '主题名称' -}) - -// 2.动态切换新主题 -mindMap.setTheme('主题名称') -``` - -主题的所有配置可以参考[默认主题](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/default.js)。`defineTheme`方法会把你传入的配置和默认配置做合并。大部分主题其实需要自定义的部分不是很多,一个典型的自定义主题配置可以参考[blueSky](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/themes/blueSky.js)。 - -### usePlugin(plugin, opt = {}) - -> v0.3.0+ - -- `opt`:v0.4.0+,插件参数。如果某个插件支持自定义选项的话可以通过这个参数传入。 - - -注册插件,如果需要使用非核心的一些功能,比如小地图、水印等,可以通过该方法进行注册。可链式调用。 - -注意:插件需要在实例化`MindMap`前注册。 - -### hasPlugin(plugin) - -> v0.4.0+ - -获取是否注册了某个插件,返回的是插件在注册插件列表里的索引,为`-1`则代表插件没有注册。 - -## 静态属性 - -### pluginList - -> v0.3.0+ - -当前注册的所有插件列表。 - -## 实例属性 - -### el - -容器元素。 - -### opt - -配置选项对象。 - -### svg - -> @svgdotjs/svg.js库调用SVG()方法返回的节点实例 - -画布svg元素。 - -### draw - -> @svgdotjs/svg.js库调用group()方法返回的节点实例 -> -> svg节点的子节点 - -容器元素,用于承载节点、连线等内容。 - -### lineDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js库调用group()方法返回的节点实例 -> -> draw节点的子节点 - -节点连线元素的容器。 - -### nodeDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js库调用group()方法返回的节点实例 -> -> draw节点的子节点 - -节点元素的容器。 - -### associativeLineDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js库调用group()方法返回的节点实例 -> -> 在注册了关联线插件的情况下可用 -> -> draw节点的子节点 - -关联线内容的容器。 - -### otherDraw - -> v0.8.0+ -> -> @svgdotjs/svg.js库调用group()方法返回的节点实例 -> -> draw节点的子节点 - -其他内容的容器。 - -### elRect - -容器元素`el`的尺寸、位置信息。调用`getBoundingClientRect()`方法的返回结果。 - -### width - -容器元素`el`的宽度。 - -### height - -容器元素`el`的高度。 - -### themeConfig - -当前主题配置。 - -## 实例方法 - -### getElRectInfo() - -更新容器元素的位置和大小信息。当容器元素在页面中的位置发生了改变之后务必调用该方法更新信息。如果容器元素大小也发生了改变,那么请调用`resize`方法。 - -### updateData(data) - -> v0.9.9+ - -更新画布数据,如果新的数据是在当前画布节点数据基础上增删改查后形成的,那么可以使用该方法来更新画布数据。性能会更好,不会重新创建所有节点,而是会尽可能的复用。 - -### clearDraw() - -> v0.8.0+ - -清空`lineDraw`、`associativeLineDraw`、`nodeDraw`、`otherDraw`容器。 - -### destroy() - -> v0.6.0+ - -销毁思维导图。会移除注册的插件、移除监听的事件、删除画布的所有节点。 - -### getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false, addContentToHeader, addContentToFooter, node }) - -> v0.3.0+ - -`paddingX`:水平内边距 - -`paddingY`:垂直内边距 - -`ignoreWatermark`:v0.8.0+,不要绘制水印,如果不需要绘制水印的场景可以传`true`,因为绘制水印非常慢 - -`addContentToHeader`:v0.9.9+,Function,可以返回要追加到头部的自定义内容,详细介绍见【实例化选项】中的该配置 - -`addContentToFooter`:v0.9.9+,Function,可以返回要追加到尾部的自定义内容,详细介绍见【实例化选项】中的该配置 - -`node`: v0.9.11+, 节点实例,如果传了,那么仅导出该节点的内容 - -获取`svg`数据,返回一个对象,详细结构如下: - -```js -{ - svg, // Element,思维导图图形的整体svg元素,包括:svg(画布容器)、g(实际的思维导图组) - svgHTML, // String,svg字符串,即html字符串,可以直接渲染到你准备的小地图容器内 - rect: // Object,思维导图图形未缩放时的位置尺寸等信息 - origWidth, // Number,画布宽度 - origHeight, // Number,画布高度 - scaleX, // Number,思维导图图形的水平缩放值 - scaleY, // Number,思维导图图形的垂直缩放值 - clipData// v0.9.11+,如果传了node,即导出指定节点的内容,那么会返回该字段,代表从完整的图片中裁剪出该节点区域的位置坐标数据 -} -``` - -### render(callback) - -- `callback`:`v0.3.2+`,`Function`,当重新渲染完成时调用 - -触发整体渲染,会进行节点复用,性能较`reRender`会更好一点,如果只是节点位置变化了可以调用该方法进行渲染 - -### reRender(callback) - -- `callback`:`v0.3.2+`,`Function`,当重新渲染完成时调用 - -整体重新渲染,会清空画布,节点也会重新创建,性能不好,慎重使用 - -### resize() - -容器尺寸变化后,需要调用该方法进行适应 - -### setMode(mode) - -> v0.1.7+ - -切换模式为只读或编辑。 - -`mode`:readonly、edit - -### on(event, fn) - -监听事件,事件列表: - -| 事件名称 | 描述 | 回调参数 | -| -------------------------------- | ------------------------------------------ | ------------------------------------------------------------ | -| data_change | 渲染树数据变化,可以监听该方法获取最新数据 | data(当前渲染树数据) | -| view_data_change(v0.1.1+) | 视图变化数据,比如拖动或缩放时会触发 | data(当前视图状态数据) | -| back_forward | 前进或回退 | activeHistoryIndex(当前在历史数据数组里的索引)、length(当前历史数据数组的长度) | -| draw_click | *画布的单击事件* | e(事件对象) | -| svg_mousedown | svg画布的鼠标按下事件 | e(事件对象) | -| mousedown | el元素的鼠标按下事件 | e(事件对象)、this(Event事件类实例) | -| mousemove | el元素的鼠标移动事件 | e(事件对象)、this(Event事件类实例) | -| drag | 如果是按住左键拖动的话会触发拖动事件 | e(事件对象)、this(Event事件类实例) | -| mouseup | el元素的鼠标松开事件 | e(事件对象)、this(Event事件类实例) | -| mousewheel | 鼠标滚动事件 | e(事件对象)、dir(向上up还是向下down滚动。v0.9.2+已改为dirs,数组类型,即支持同时保存多个方向)、this(Event事件类实例)、isTouchPad(v0.6.1+,是否是触控板触发的事件) | -| contextmenu | svg画布的鼠标右键菜单事件 | e(事件对象) | -| node_click | 节点的单击事件 | this(节点实例)、e(事件对象) | -| node_mousedown | 节点的鼠标按下事件 | this(节点实例)、e(事件对象) | -| node_mouseup | 节点的鼠标松开事件 | this(节点实例)、e(事件对象) | -| node_dblclick | 节点的双击事件 | this(节点实例)、e(事件对象) | -| node_contextmenu | 节点的右键菜单事件 | e(事件对象)、this(节点实例) | -| node_mouseenter(v0.4.1+) | 节点的鼠标移入事件 | this(节点实例)、e(事件对象) | -| node_mouseleave(v0.4.1+) | 节点的鼠标移出事件 | this(节点实例)、e(事件对象) | -| before_node_active | 节点激活前事件 | this(节点实例)、activeNodeList(当前激活的所有节点列表) | -| node_active | 节点激活事件 | this(节点实例)、activeNodeList(当前激活的所有节点列表) | -| expand_btn_click | 节点展开或收缩事件 | this(节点实例) | -| before_show_text_edit | 节点文本编辑框即将打开事件 | | -| hide_text_edit | 节点文本编辑框关闭事件【关联线的文本编辑结束也会触发该事件,此时没有回调参数,所以需要做好防御性编程】 | textEditNode(文本编辑框DOM节点)、activeNodeList(当前激活的所有节点列表)、node(v0.10.2+,当前文本编辑的节点实例) | -| scale | 画布放大缩小事件 | scale(缩放比例) | -| translate(v0.9.10+) | 画布移动事件 | x(水平位移)、y(垂直位移) | -| node_img_dblclick(v0.2.15+) | 节点内图片的双击事件 | this(节点实例)、e(事件对象) | -| node_img_mouseenter(v0.6.5+) | 节点内图片的鼠标移入事件 | this(节点实例)、imgNode(图片节点)、e(事件对象) | -| node_img_mouseleave(v0.6.5+) | 节点内图片的鼠标移出事件 | this(节点实例)、imgNode(图片节点)、e(事件对象) | -| node_img_mousemove(v0.6.5+) | 节点内图片的鼠标移动事件 | this(节点实例)、imgNode(图片节点)、e(事件对象) | -| node_tree_render_end(v0.2.16+) | 节点树渲染完毕事件 | | -| node_tree_render_start(v0.10.0+) | 节点树开始渲染事件 | | -| rich_text_selection_change(v0.4.0+) | 当注册了`RichText`插件时可用。当节点编辑时,文本选区发生改变时触发 | hasRange(是否存在选区)、rectInfo(选区的尺寸和位置信息)、formatInfo(选区的文本格式化信息) | -| transforming-dom-to-images(v0.4.0+) | 当注册了`RichText`插件时可用。当`svg`中存在`DOM`节点时,导出为图片时会将`DOM`节点转换为图片,转换过程中会触发该事件,可用通过该事件给用户提示,告知目前转换到的节点 | index(当前转换到的节点索引)、len(一共需要转换的节点数量) | -| node_dragging(v0.4.5+) | 当某个节点被拖拽时触发 | node(当前被拖拽的节点) | -| node_dragend(v0.4.5+) | 节点被拖拽结束时触发 | { overlapNodeUid, prevNodeUid, nextNodeUid }(v0.6.12+,本次节点移动到的节点uid,比如本次移动到了节点A上,那么overlapNodeUid就是节点A的uid,如果移动到了B节点的前面,那么nextNodeUid就是节点B的uid,你可以通过mindMap.renderer.findNodeByUid(uid)方法来获取节点实例) | -| associative_line_click(v0.4.5+) | 点击某条关联线时触发 | path(连接线节点)、clickPath(不可见的点击线节点)、node(起始节点)、toNode(目标节点) | -| svg_mouseenter(v0.5.1+) | 鼠标移入svg画布时触发 | e(事件对象) | -| svg_mouseleave(v0.5.1+) | 鼠标移出svg画布时触发 | e(事件对象) | -| node_icon_click(v0.6.10+) | 点击节点内的图标时触发 | this(节点实例)、item(点击的图标名称)、e(事件对象)、node(图标节点,v0.9.9+) | -| node_icon_mouseenter(v0.9.9+) | 鼠标移入节点内的图标时触发 | this(节点实例)、item(点击的图标名称)、e(事件对象)、node(图标节点) | -| node_icon_mouseleave(v0.9.9+) | 鼠标移出节点内的图标时触发 | this(节点实例)、item(点击的图标名称)、e(事件对象)、node(图标节点) | -| view_theme_change(v0.6.12+) | 调用了setTheme方法设置主题后触发 | theme(设置的新主题名称) | -| set_data(v0.7.3+) | 调用了setData方法动态设置思维导图数据时触发 | data(新的思维导图数据) | -| resize(v0.8.0+) | 容器尺寸改变后触发,实际上是当思维导图实例的`resize`方法被调用后触发 | | -| beforeDestroy(v0.9.0+) | 思维导图销毁前触发,即调用了destroy方法触发 | | -| body_mousedown(v0.9.2+) | document.body的鼠标按下事件 | e(事件对象) | -| body_click | document.body的点击事件 | e(事件对象) | -| data_change_detail(v0.9.3+) | 渲染树数据变化的明细,会返回一个数组,每一项代表一个更新点,每一项都是一个对象,存在一个`type`属性,代表明细的类型,包含`create`(创建节点)、`update`(更新节点)、`delete`(删除节点),存在一个`data`属性,代表当前更新的节点数据,如果是`update`类型,还会存在一个`oldData`属性,保存了更新前该节点的数据 | arr(明细数据) | -| layout_change(v0.9.4+) | 修改结构时触发,即调用了mindMap.setLayout()方法时触发 | layout(新的结构) | -| node_cooperate_avatar_click(v0.9.9+) | 协同编辑时,鼠标点击人员头像时触发 | userInfo(人员信息)、 this(当前节点实例)、 node(头像节点)、 e(事件对象) | -| node_cooperate_avatar_mouseenter(v0.9.9+) | 协同编辑时,鼠标移入人员头像时触发 | userInfo(人员信息)、 this(当前节点实例)、 node(头像节点)、 e(事件对象) | -| node_cooperate_avatar_mouseleave(v0.9.9+) | 协同编辑时,鼠标移除人员头像时触发 | userInfo(人员信息)、 this(当前节点实例)、 node(头像节点)、 e(事件对象) | -| exit_demonstrate(v0.9.11+) | 退出演示模式时触发 | | -| demonstrate_jump(v0.9.11+) | 演示模式中,切换步骤时触发 | currentStepIndex(当前播放到的步骤索引,从0开始计数)、stepLength(总的播放步骤数量) | -| node_tag_click(v0.9.12+) | 节点标签的点击事件 | this(当前节点实例)、item(点击的标签内容)、index(v0.10.3+,该标签在标签列表里的索引)、tagNode(v0.10.3+,标签节点,@svgdotjs/svg.js库的G实例,可以用于获取标签位置和大小信息) | -| node_layout_end(v0.10.1+) | 单个节点内容布局完成的事件 | this(当前节点实例) | -| node_attachmentClick(v0.9.10+) | 节点附件图标的点击事件 | this(当前节点实例)、e(事件对象)、node(图标节点) | -| node_attachmentContextmenu(v0.9.10+) | 节点附件图标的右键点击事件 | this(当前节点实例)、e(事件对象)、node(图标节点) | -| before_update_config(v0.10.4+) | 更新配置前触发,即当调用了`mindMap.updateConfig`方法更新配置时触发 | opt(未更新前的配置对象,引用对象,而非拷贝,所以当after_update_config事件触发后,该对象也会同步变化,所以需要缓存你需要的某个配置字段) | -| after_update_config(v0.10.4+) | 更新配置后触发 | opt(更新后的配置对象) | - -### emit(event, ...args) - -触发事件,可以是上面表格里的事件,也可以是自定义事件 - -### off(event, fn) - -解绑事件 - -### setTheme(theme, notRender = false) - -- `notRender`:v0.8.0+,是否不要调用render方法更新画布。 - -切换主题,可选主题见上面的选项表格 - -### getTheme() - -获取当前主题 - -### setThemeConfig(config, notRender = false) - -- `notRender`:v0.8.0+,是否不要调用render方法更新画布。 - -设置主题配置,`config`同上面选项表格里的选项`themeConfig` - -### getCustomThemeConfig() - -获取自定义主题配置 - -### getThemeConfig(prop) - -获取某个主题配置属性值 - -### getConfig(*prop*) - -> 0.2.24+ - -`prop`:获取指定配置的值,不传则返回整个配置 - -获取配置,即`new MindMap(opt)`的`opt` - -### updateConfig(*opt* = {}) - -> 0.2.24+ - -`opt`:要更新的配置 - -更新配置,即更新`new MindMap(opt)`的`opt`,可以只更新部分数据,比如: - -```js -mindMap.updateConfig({ - enableFreeDrag: true// 开启节点自由拖拽 -}) -``` - -该方法只做更新配置的事情,没有其他副作用,比如触发画布重新渲染之类的 - -### getLayout() - -获取当前的布局结构 - -### setLayout(layout, notRender = false) - -- `notRender`:v0.8.0+,是否不要调用render方法更新画布。 - -设置布局结构,可选值见上面选项表格的`layout`字段 - -### execCommand(name, ...args) - -执行命令,每执行一个命令就会在历史堆栈里添加一条记录用于回退或前进。所有命令如下: - -| 命令名称 | 描述 | 参数 | -| ----------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ | -| SELECT_ALL | 全选 | | -| BACK | 回退指定的步数 | step(要回退的步数,默认为1) | -| FORWARD | 前进指定的步数 | step(要前进的步数,默认为1) | -| INSERT_NODE | 插入同级节点,操作节点为当前激活的节点或指定节点,如果有多个激活节点,只会对第一个有效(v0.7.2+支持对多个激活节点同时插入兄弟节点) | openEdit(v0.4.6+,是否激活新插入的节点并进入编辑模式,默认为`true`)、 appointNodes(v0.4.7+,可选,指定要插入兄弟节点的节点,指定多个节点可以传一个数组)、 appointData(可选,指定新创建节点的数据,比如{text: 'xxx', ...},详细结构可以参考[exampleData.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exampleData.js))、 appointChildren(v0.6.14+,可选,指定新创建节点的子节点,数组类型) | -| INSERT_CHILD_NODE | 插入子节点,操作节点为当前激活的节点或指定节点 | openEdit(v0.4.6+,是否激活新插入的节点并进入编辑模式,默认为`true`)、 appointNodes(v0.4.7+,可选,指定节点,指定多个节点可以传一个数组)、 appointData(可选,指定新创建节点的数据,比如{text: 'xxx', ...},详细结构可以参考[exampleData.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exampleData.js))、 appointChildren(v0.6.14+,可选,指定新创建节点的子节点,数组类型) | -| UP_NODE | 上移节点,操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效,对根节点或在列表里的第一个节点使用无效 | | -| DOWN_NODE | 操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效,对根节点或在列表里的最后一个节点使用无效 | | -| REMOVE_NODE | 删除节点,操作节点为当前激活的节点或指定节点 | appointNodes(v0.4.7+,可选,指定节点,指定多个节点可以传一个数组) | -| PASTE_NODE | 粘贴节点到节点,操作节点为当前激活的节点 | data(要粘贴的节点数据,一般通过`renderer.copyNode()`方法和`renderer.cutNode()`方法获取) | -| CUT_NODE | 剪切节点,操作节点为当前激活的节点,如果有多个激活节点,只会对第一个有效,对根节点使用无效 | callback(回调函数,剪切的节点数据会通过调用该函数并通过参数返回) | -| SET_NODE_STYLE | 修改节点单个样式 | node(要设置样式的节点)、style(样式属性)、value(样式属性值)、isActive(v0.7.0+已废弃,布尔值,是否设置的是激活状态的样式) | -| SET_NODE_STYLEs(v0.6.12+) | 修改节点多个样式 | node(要设置样式的节点)、style(样式对象,key为样式属性,value为样式值)、isActive(v0.7.0+已废弃,布尔值,是否设置的是激活状态的样式) | -| SET_NODE_ACTIVE | 设置节点是否激活 | node(要设置的节点)、active(布尔值,是否激活) | -| CLEAR_ACTIVE_NODE | 清除当前已激活节点的激活状态,操作节点为当前激活的节点 | | -| SET_NODE_EXPAND | 设置节点是否展开 | node(要设置的节点)、expand(布尔值,是否展开) | -| EXPAND_ALL | 展开所有节点 | | -| UNEXPAND_ALL | 收起所有节点 | isSetRootNodeCenter(v0.9.11+,默认为true,收起所有节点后是否将根节点移至中心) | -| UNEXPAND_TO_LEVEL(v0.2.8+) | 展开到指定层级 | level(要展开到的层级,1、2、3...) | -| SET_NODE_DATA | 更新节点数据,即更新节点数据对象里`data`对象的数据,注意这个命令不会触发视图的更新 | node(要设置的节点)、data(对象,要更新的数据,如`{expand: true}`) | -| SET_NODE_TEXT | 设置节点文本 | node(要设置的节点)、text(要设置的文本字符串,换行可以使用`\n`)、richText(v0.4.0+,如果要设置的是富文本字符,需要设为`true`)、resetRichText(v0.6.10+是否要复位富文本,默认为false,如果传true那么会重置富文本节点的样式) | -| SET_NODE_IMAGE | 设置节点图片 | node(要设置的节点)、imgData(对象,图片信息,结构为:`{url, title, width, height}`,图片的宽高必须要传) | -| SET_NODE_ICON | 设置节点图标 | node(要设置的节点)、icons(数组,预定义的图片名称组成的数组,可用图标可在[icons.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/svg/icons.js)文件里的`nodeIconList`列表里获取到,图标名称为`type_name`,如`['priority_1']`) | -| SET_NODE_HYPERLINK | 设置节点超链接 | node(要设置的节点)、link(超链接地址)、title(超链接名称,可选) | -| SET_NODE_NOTE | 设置节点备注 | node(要设置的节点)、note(备注文字) | -| SET_NODE_ATTACHMENT(v0.9.10+) | 设置节点附件 | node(要设置的节点)、url(附件url)、name(附件名称,可选) | -| SET_NODE_TAG | 设置节点标签 | node(要设置的节点)、tag(v0.10.3以前的版本只支持字符串数组,即['标签'],v0.10.3+版本支持对象数组,即[{ text: '标签', style: {} }]) | -| INSERT_AFTER(v0.1.5+) | 将节点移动到另一个节点的后面 | node(要移动的节点,(v0.7.2+支持传递节点数组实现同时移动多个节点))、 exist(目标节点) | -| INSERT_BEFORE(v0.1.5+) | 将节点移动到另一个节点的前面,(v0.7.2+支持传递节点数组实现同时移动多个节点) | node(要移动的节点)、 exist(目标节点) | -| MOVE_NODE_TO(v0.1.5+) | 移动节点作为另一个节点的子节点,(v0.7.2+支持传递节点数组实现同时移动多个节点) | node(要移动的节点)、 toNode(目标节点) | -| ADD_GENERALIZATION(v0.2.0+) | 添加节点概要 | data(概要的数据,对象格式,节点的数字段都支持,默认为{text: '概要'})、openEdit(v0.9.11+,默认为true,是否默认进入文本编辑状态) | -| REMOVE_GENERALIZATION(v0.2.0+) | 删除节点概要 | | -| SET_NODE_CUSTOM_POSITION(v0.2.0+) | 设置节点自定义位置 | node(要设置的节点)、 left(自定义的x坐标,默认为undefined)、 top(自定义的y坐标,默认为undefined) | -| RESET_LAYOUT(v0.2.0+) | 一键整理布局 | | -| SET_NODE_SHAPE(v0.2.4+) | 设置节点形状 | node(要设置的节点)、shape(形状,全部形状:[Shape.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/src/core/render/node/Shape.js)) | -| GO_TARGET_NODE(v0.6.7+) | 定位到某个节点,如果该节点被收起,那么会自动展开到该节点 | node(要定位到的节点实例或节点uid)、callback(v0.6.9+,定位完成后的回调函数,v0.9.8+接收一个参数,代表目标节点实例) | -| INSERT_MULTI_NODE(v0.7.2+) | 给指定的节点同时插入多个同级节点,操作节点为当前激活的节点或指定节点 | appointNodes(可选,指定节点,指定多个节点可以传一个数组), nodeList(新插入节点的数据列表,数组类型) | -| INSERT_MULTI_CHILD_NODE(v0.7.2+) | 给指定的节点同时插入多个子节点,操作节点为当前激活的节点或指定节点 | appointNodes(可选,指定节点,指定多个节点可以传一个数组), childList(新插入节点的数据列表,数组类型) | -| INSERT_FORMULA(v0.7.2+) | 给节点插入数学公式,操作节点为当前激活的节点或指定节点 | formula(要插入的数学公式,LaTeX 语法), appointNodes(可选,指定要插入公式的节点,多个节点可以传数组,否则默认为当前激活的节点) | -| INSERT_PARENT_NODE(v0.8.0+) | 给指定的节点插入父节点,操作节点为当前激活的节点或指定节点 | openEdit(是否激活新插入的节点并进入编辑模式,默认为`true`)、 appointNodes(可选,指定要插入父节点的节点,指定多个节点可以传一个数组)、 appointData(可选,指定新创建节点的数据,比如{text: 'xxx', ...},详细结构可以参考[exampleData.js](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exampleData.js)) | -| REMOVE_CURRENT_NODE(v0.8.0+) | 仅删除当前节点,操作节点为当前激活的节点或指定节点 | appointNodes(可选,指定要删除的节点,指定多个节点可以传一个数组) | -| MOVE_UP_ONE_LEVEL(v0.9.6+) | 将指定节点上移一个层级 | node(可选,指定要上移层级的节点,不传则为当前激活节点中的第一个) | -| REMOVE_CUSTOM_STYLES(v0.9.7+) | 一键去除某个节点的自定义样式 | node(可选,指定要清除自定义样式的节点,不传则为当前激活节点中的第一个) | -| REMOVE_ALL_NODE_CUSTOM_STYLES(v0.9.7+) | 一键去除多个节点或所有节点的自定义样式 | appointNodes(可选,节点实例数组,指定要去除自定义样式的多个节点,如果不传则会去除当前画布所有节点的自定义样式) | - -### setData(data) - -动态设置思维导图数据,纯节点数据 - -`data`:思维导图结构数据。v0.9.9+支持传空对象或者null,画布会显示空白。 - -### setFullData(*data*) - -> v0.2.7+ - -动态设置思维导图数据,包括节点数据、布局、主题、视图 - -`data`:完整数据,结构可参考[exportFullData](https://github.com/wanglin2/mind-map/blob/main/simple-mind-map/example/exportFullData.json) - -### getData(withConfig) - -> v0.2.9+ - -获取思维导图数据 - -`withConfig`:`Boolean`,默认为`false`,即获取的数据只包括节点树,如果传`true`则会包含主题、布局、视图等数据 - -### export(type, isDownload, fileName) - -> 需要先注册`Export`插件 - -导出 - -`type`:要导出的类型,可选值:png、svg、json、pdf(v0.2.1+)、smm(本质也是json) - -`isDownload`:是否需要直接触发下载,布尔值,默认为`false` - -`fileName`:(v0.1.6+)导出文件的名称,默认为`思维导图` - -如果是导出为`png`,那么可以传递第四个参数: - -`transparent`:v0.5.7+, `Boolean`,默认为`false`,指定导出图片的背景是否是透明的 - -如果是导出为`svg`,那么可以传递第四个参数: - -`plusCssText`:附加的`css`样式,如果`svg`中存在`dom`节点,想要设置一些针对节点的样式可以通过这个参数传入 - -如果是导出为`json`或`smm`,那么可以传递第四个参数: - -`withConfig`:`Boolean`,默认为`true`,指定导出的数据中是否包含配置数据,否则只导出纯节点树数据 - -### toPos(x, y) - -> v0.1.5+ - -将浏览器可视窗口的坐标转换成相对于画布的坐标 - -### addPlugin(plugin, opt) - -> v0.4.0+ - -注册插件,使用`MindMap.usePlugin`注册插件只能在实例化之前,实例化后注册的插件是不会生效的,所以如果想在实例化后注册插件可以使用实例的`addPlugin`方法。 - -### removePlugin(plugin) - -> v0.4.0+ - -移除注册的插件,无论是通过`usePlugin`还是`addPlugin`方法注册的插件都可以移除。 diff --git a/web/src/pages/Doc/zh/constructor/index.vue b/web/src/pages/Doc/zh/constructor/index.vue deleted file mode 100644 index af913dbe..00000000 --- a/web/src/pages/Doc/zh/constructor/index.vue +++ /dev/null @@ -1,1964 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/cooperate/index.md b/web/src/pages/Doc/zh/cooperate/index.md deleted file mode 100644 index 234e39e0..00000000 --- a/web/src/pages/Doc/zh/cooperate/index.md +++ /dev/null @@ -1,132 +0,0 @@ -# Cooperate 插件 beta - -> v0.7.3+ - -该插件用于实现协同编辑。 - -## 介绍 - -该插件通过[Yjs](https://github.com/yjs/yjs)实现协同编辑,基本原理是将思维导图的树数据转成平级的对象数据,然后通过[Y.Map](https://docs.yjs.dev/api/shared-types/y.map)类型的共享数据进行协同,即当画布上进行了某些操作后会更新`y.map`对象,然后其他协同的客户端会接收到更新后的数据,再转换回树结构数据,更新画布即可实现实时更新。 - -要实现协同,后端是少不了的,`Yjs`提供了一些[Connection Provider](https://docs.yjs.dev/ecosystem/connection-provider)。同时也提供了后端的示例,但只是最简单的实现,实际项目中你应该需要重写或完善。 - -你可以选择适合自己的`Provider`,默认使用的是[y-webrtc](https://github.com/yjs/y-webrtc)。 - -## demo - -如果你想通过demo来尝试一下可以通过以下步骤: - -1. 克隆项目及安装依赖: - -```bash -git clone https://github.com/wanglin2/mind-map.git -cd mind-map -cd simple-mind-map -npm i -npm link -cd .. -cd web -npm i -npm link simple-mind-map -``` - -2. 修改`web/src/pages/Edit/components/Edit.vue`文件 - -注册协同插件,即取消该行注释: - -```js -// .usePlugin(Cooperate)// 协同插件 -``` - -将信令服务器地址改为你本机的ip: - -```js -// cooperateTest 函数 - -signalingList: ['ws://【你的ip】:4444'] -``` - -3. 启动demo项目的本地服务: - -```bash -// web路径下执行 -npm run serve -``` - -4. 启动信令服务器: - -```bash -// simple-mind-map路径下执行 -npm run wsServe -``` - -该命令执行的是`simple-mind-map/bin/wsServer.mjs`文件,该文件的内容是从[y-webrtc](https://github.com/yjs/y-webrtc)仓库直接复制的,可能并不完善,请谨慎用于实际项目。 - -5. 在两个浏览器中访问服务地址: - -``` -http://【你的ip】:8080/#/?userName=用户名 -``` - -你可以在不同的浏览器上设置不同的userName。然后就可以在一个浏览器中编辑,在另一个浏览器上看到自动更新了。 - -## 注册 - -```js -import MindMap from 'simple-mind-map' -import Cooperate from 'simple-mind-map/src/plugins/Cooperate.js' -MindMap.usePlugin(Cooperate) -``` - -注册完且实例化`MindMap`后可通过`mindMap.cooperate`获取到该实例。 - -### 配置 - -该插件支持一些配置,可在实例化思维导图时传入,支持的配置如下: - -`beforeCooperateUpdate` - -详细信息见【构造函数】篇章的【实例化选项】小节。 - -## 方法 - -### getDoc() - -获取Yjs doc实例。 - -### setProvider(provider, webrtcProviderConfig) - -- `provider`:Yjs的连接提供者,可参考[Connection Provider](https://docs.yjs.dev/ecosystem/connection-provider),默认为`null` - -- `webrtcProviderConfig`:webrtc provider的配置参数,需要传递一个对象,格式如下: - -```js -{ - roomName: '', // 必传,房间名称 - signalingList: [''],// 必传,指定信令服务器 - ...// webrtc provider的其他配置 -} -``` - -详细配置可参考[y-webrtc](https://github.com/yjs/y-webrtc)。 - -设置Yjs的连接提供者,`provider`如果不传,那么默认会使用`y-webrtc`,你也可以使用其他的`provider`。 - -如果使用默认的`y-webrtc`,那么需要通过第二个参数传入必要的配置。 - -`simple-mind-map/bin/wsServer.mjs`文件提供了一个简单的信令服务器代码,可供测试和参考。 - -### setUserInfo(userInfo) - -- `userInfo`:用户信息。格式如下: - -```js -{ - id: '', // 必传,用户唯一的id - name: '', // 用户名称。name和avatar两个只传一个即可,如果都传了,会显示avatar - avatar: '', // 用户头像 - color: '' // 如果没有传头像,那么会以一个圆形来显示名称的第一个字,文字的颜色为白色,圆的颜色可以通过该字段设置 -} -``` - -设置当前用户的信息,用于感知数据的同步和显示。即如果其他协同人员激活了某个节点时,会在你当前画布中的该节点上方显示他的头像。 \ No newline at end of file diff --git a/web/src/pages/Doc/zh/cooperate/index.vue b/web/src/pages/Doc/zh/cooperate/index.vue deleted file mode 100644 index cbb9a9bd..00000000 --- a/web/src/pages/Doc/zh/cooperate/index.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - \ No newline at end of file diff --git a/web/src/pages/Doc/zh/course1/index.md b/web/src/pages/Doc/zh/course1/index.md deleted file mode 100644 index b6893b2f..00000000 --- a/web/src/pages/Doc/zh/course1/index.md +++ /dev/null @@ -1,71 +0,0 @@ -# 基本使用 - -> 重要说明: -> -> 1.本教程中的在线编辑器中使用的是完整版的simple-mind-map,即包含所有插件,如果你是通过`npm`方式使用的话,需要自己手动注册相关插件。 -> -> 2.本教程的代码示例基于Vue3.x,但是您不必担心,因为simple-mind-map本身是框架无关的,所以即使某些Vue3的语法您看不懂也不会影响对于逻辑的理解。 - -`simple-mind-map`的使用非常简单,提供一个宽高不为0的元素,然后创建一个实例即可: - -