From 89daa815d93b67268a017470c24f686b98bbd3df Mon Sep 17 00:00:00 2001 From: cnspray Date: Mon, 30 Dec 2019 13:08:20 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=BD=93=E8=A1=A8=E6=A0=BC=E8=BF=87?= =?UTF-8?q?=E9=95=BF=E6=97=B6=EF=BC=8C=E5=8E=9F=E6=A0=B7=E5=BC=8Fword-brea?= =?UTF-8?q?k=E8=AE=BE=E7=BD=AE=E5=AF=BC=E8=87=B4=E6=A8=AA=E5=90=91?= =?UTF-8?q?=E6=8B=96=E5=8A=A8=EF=BC=8C=E5=BE=88=E4=B8=8D=E4=BE=BF=E9=98=85?= =?UTF-8?q?=E8=AF=BB=20=E4=BF=AE=E6=94=B9=E4=B8=BA=E7=BA=B5=E5=90=91?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8=EF=BC=8C=E8=A1=A8=E5=A4=B4=E5=9B=BA=E5=AE=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/editor.md/css/editormd.preview.css | 34 +++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/static/editor.md/css/editormd.preview.css b/static/editor.md/css/editormd.preview.css index 6030330..7b09626 100644 --- a/static/editor.md/css/editormd.preview.css +++ b/static/editor.md/css/editormd.preview.css @@ -2851,14 +2851,38 @@ margin-bottom: 0; } +/* 当表格过长时,原样式word-break设置导致横向拖动,很不便阅读 修改为纵向滚动,表头固定,begin*/ + .markdown-body table { - display: block; - width: 100%; - overflow: auto; - word-break: normal; - word-break: keep-all; + display: block; + width: 100%; + overflow: auto; + word-break: normal; + font-size: 10px; + border-spacing: 0; + border-collapse: collapse; + text-align: center; + table-layout: fixed; +} + +.markdown-body table tbody { + display: block; + max-height: 400px; + overflow-y: scroll; +} + +.markdown-body table thead, tbody tr { + display: table; + width: 100%; + table-layout: fixed; } +.markdown-body table thead { + width: calc(100% - 7px); +} + +/* 当表格过长时,原样式word-break设置导致横向拖动,很不便阅读 修改为纵向滚动,表头固定,end*/ + .markdown-body table th { font-weight: bold; } -- Gitee From f865d6f05afaf2522635f580ea89a0d262aee5aa Mon Sep 17 00:00:00 2001 From: cnspray Date: Mon, 30 Dec 2019 13:11:37 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20virtualroot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- virtualroot/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 virtualroot/.keep diff --git a/virtualroot/.keep b/virtualroot/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From 98f75f031937f3f987323b87a2f4226762efd86e Mon Sep 17 00:00:00 2001 From: cnspray Date: Mon, 30 Dec 2019 13:14:49 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20kitymind-editor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- virtualroot/kitymind-editor/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 virtualroot/kitymind-editor/.keep diff --git a/virtualroot/kitymind-editor/.keep b/virtualroot/kitymind-editor/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From f862c3a590db94e83cb4859b3ff26154bdbdd40c Mon Sep 17 00:00:00 2001 From: cnspray Date: Mon, 30 Dec 2019 13:19:46 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E7=99=BE=E5=BA=A6=E8=84=91=E5=9B=BEkitym?= =?UTF-8?q?inder.editor=20=E5=AE=8C=E6=95=B4=E7=89=88=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E5=AF=BC=E5=87=BA=E7=B1=BB=E5=9E=8B=E4=B8=BApng?= =?UTF-8?q?=E3=80=81svg=E3=80=81text=E7=AD=89=E7=B1=BB=E5=9E=8B=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E5=85=A5=E7=B1=BB=E5=9E=8B=E5=A2=9E=E5=8A=A0=E4=BA=86?= =?UTF-8?q?text=E7=B1=BB=E5=9E=8B=EF=BC=8C=E4=BF=AE=E6=94=B9=E4=BA=86?= =?UTF-8?q?=E9=BC=A0=E6=A0=87=E7=A7=BB=E5=8A=A8=E7=94=9F=E6=88=90=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E6=96=87=E4=BB=B6=E4=B8=BA=E5=8D=95=E5=87=BB=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD=E3=80=82=20=E5=8E=9F=E9=A1=B9=E7=9B=AE=E5=9C=B0?= =?UTF-8?q?=E5=9D=80https://github.com/LancelotLewis/local-kitymind?= =?UTF-8?q?=EF=BC=8C=E6=94=BE=E7=BD=AE=E5=88=B0=E8=99=9A=E6=8B=9F=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E4=B8=BB=E8=A6=81=E7=9B=AE=E7=9A=84=E5=9C=A8?= =?UTF-8?q?=E4=BA=8E=E5=8F=AF=E4=BB=A5=E5=9C=A8=E7=BC=96=E8=BE=91=E5=99=A8?= =?UTF-8?q?=E6=88=96=E9=A6=96=E9=A1=B5=E7=9B=B4=E6=8E=A5=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E3=80=82=20=E6=9C=80=E4=BD=B3=E8=A7=A3=E5=86=B3=E6=96=B9?= =?UTF-8?q?=E6=A1=88=E6=98=AF=E5=B0=86=E8=AF=A5index.html=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E7=BC=96=E5=86=99=E4=B8=BAeditor.md=E7=9A=84=E4=B8=80?= =?UTF-8?q?=E4=B8=AA=E6=8F=92=E4=BB=B6=EF=BC=8C=E5=BD=93=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E4=B8=BAjson=E6=96=87=E4=BB=B6=E6=8C=89?= =?UTF-8?q?=E9=92=AE=E6=97=B6=EF=BC=8C=E7=9B=B4=E6=8E=A5=E5=9C=A8=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E5=99=A8=E6=8F=92=E5=85=A5=20```mind=20json=E6=96=87?= =?UTF-8?q?=E4=BB=B6=20```=20=E7=9A=84=E6=96=B9=E5=BC=8F=E3=80=82=E4=BE=BF?= =?UTF-8?q?=E4=BA=8E=E4=BD=BF=E7=94=A8=E4=B8=B0=E5=AF=8C=E5=BC=BA=E5=A4=A7?= =?UTF-8?q?=E7=9A=84=E7=BC=96=E8=BE=91=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- virtualroot/kitymind-editor/README.md | 1 + virtualroot/kitymind-editor/diy.js | 149 + virtualroot/kitymind-editor/favicon.ico | Bin 0 -> 67646 bytes virtualroot/kitymind-editor/index.html | 90 + .../kitymind-editor/kityminder.editor.css | 1520 ++++++ .../kitymind-editor/kityminder.editor.css.map | 1 + .../kitymind-editor/kityminder.editor.js | 4550 +++++++++++++++++ .../kitymind-editor/kityminder.editor.min.css | 1 + .../kitymind-editor/kityminder.editor.min.js | 12 + 9 files changed, 6324 insertions(+) create mode 100644 virtualroot/kitymind-editor/README.md create mode 100644 virtualroot/kitymind-editor/diy.js create mode 100644 virtualroot/kitymind-editor/favicon.ico create mode 100644 virtualroot/kitymind-editor/index.html create mode 100644 virtualroot/kitymind-editor/kityminder.editor.css create mode 100644 virtualroot/kitymind-editor/kityminder.editor.css.map create mode 100644 virtualroot/kitymind-editor/kityminder.editor.js create mode 100644 virtualroot/kitymind-editor/kityminder.editor.min.css create mode 100644 virtualroot/kitymind-editor/kityminder.editor.min.js diff --git a/virtualroot/kitymind-editor/README.md b/virtualroot/kitymind-editor/README.md new file mode 100644 index 0000000..9452705 --- /dev/null +++ b/virtualroot/kitymind-editor/README.md @@ -0,0 +1 @@ +#mind diff --git a/virtualroot/kitymind-editor/diy.js b/virtualroot/kitymind-editor/diy.js new file mode 100644 index 0000000..bb748d1 --- /dev/null +++ b/virtualroot/kitymind-editor/diy.js @@ -0,0 +1,149 @@ +(function () { + var oldData; + var html = ''; + html += '导出json', + html += '导出md', + html += '导出km', + html += '导出svg', + html += '导出text', + html += '导出png', + html += ''; + + $('.editor-title').append(html); + + $('.diy').css({ + // 'height': '30px', + // 'line-height': '30px', + 'margin-top': '0px', + 'float': 'right', + 'background-color': '#fff', + 'min-width': '60px', + 'text-decoration': 'none', + color: '#999', + 'padding': '0 10px', + border: 'none', + 'border-right': '1px solid #ccc', + }); + $('.input').css({ + 'overflow': 'hidden', + 'position': 'relative', + }).find('input').css({ + cursor: 'pointer', + position: 'absolute', + top: 0, + bottom: 0, + left: 0, + right: 0, + display: 'inline-block', + opacity: 0 + }); + + $(document).on('click', '.export', function (event) { + event.preventDefault(); + var $this = $(this), + type = $this.data('type'), + exportType; + switch (type) { + case 'km': + exportType = 'json'; + break; + case 'md': + exportType = 'markdown'; + break; + case 'svg': + exportType = 'svg'; + break; + case 'txt': + exportType = 'text'; + break; + case 'png': + exportType = 'png'; + break; + default: + exportType = type; + break; + } + + editor.minder.exportData(exportType).then(function (content) { + switch (exportType) { + case 'json': + console.log($.parseJSON(content)); + break; + default: + console.log(content); + break; + } + var blob = new Blob(); + switch (exportType) { + case 'png': + blob = dataURLtoBlob(content); //将base64编码转换为blob对象 + break; + default: + blob = new Blob([content]); + break; + } + var a = document.createElement("a"); //建立标签,模拟点击下载 + a.download = $('#node_text1').text() + '.' + type; + a.href = URL.createObjectURL(blob); + a.click(); + + }); + }); + + // 导入 + window.onload = function () { + var fileInput = document.getElementById('fileInput'); + + fileInput.addEventListener('change', function (e) { + var file = fileInput.files[0], + // textType = /(md|km)/, + fileType = file.name.substr(file.name.lastIndexOf('.') + 1); + console.log(file); + switch (fileType) { + case 'md': + fileType = 'markdown'; + break; + case 'txt': + fileType = 'text'; + break; + case 'km': + case 'json': + fileType = 'json'; + break; + default: + console.log("File not supported!"); + alert('只支持.km、.md、、text、.json文件'); + return; + } + var reader = new FileReader(); + reader.onload = function (e) { + var content = reader.result; + editor.minder.importData(fileType, content).then(function (data) { + console.log(data) + $(fileInput).val(''); + }); + } + reader.readAsText(file); + }); + } + +})(); + +//base64转换为图片blob +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','); + //注意base64的最后面中括号和引号是不转译的 + var _arr = arr[1].substring(0, arr[1].length - 2); + var mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(_arr), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { + type: mime + }); +} diff --git a/virtualroot/kitymind-editor/favicon.ico b/virtualroot/kitymind-editor/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..24e0248c797f504668ec71ca082e63116b590fb9 GIT binary patch literal 67646 zcmeHQ2Y3`!*IpIN^MCFCVz9jQjNw&-!C)bxUDzq^$4>(t3#5Ps0vZTtAfSPO27Fxu1q&9;9~x5Z zZJWjPp5k%8y-zY&a_YwqS3#-*s z$!IhdB0W9p>$=M8@(IDgM#8owVK|X6+)lV&qiuR|TL^QN$X@P}jT|7FYqOZU6t@JI zB7Nn{>pIKJ{1+=$>{UT9wI*y96V8|2g*C6Oz$S<`P`&b{&1ACXWnJbK-Yta-zaDBe zbtl?Ict7IBO7C*8J))CDql$+VE1p;MnMe4{7iuvzqPlmTH(~C~rb2Dz!&EnQqdMwe zc|^xv$7bQeh5t=$umM!Zo_D5eZ$2izBdASju@p6Xor1lTA!={GLeKjcYRBF2W^A?a zM)lTXs=uN_0`CTgR%bN6{LfH}afC17uCx)dgEXoWme`EOV26tEzXQ+Otj2bvmn%wr z`D&i*AT?AleoJ-TKm8BxClZ@XMM_XV{a0VbSxqjg>n;@+j7^?s#BY8*Ph)YzsUP=1 zO-KH4oZ1G_f)MnYKcH_m2U$qoL;irP78$87xNfzY8~U;h2qC7=XpHtREqd{%veYg} zC;dzo1mOiAvx66?jW@%euyjRMvV*-Qlj%RcU;{?uYp-Cu))jsDOZ$J}=b+gnfD9`?f#h z=1$p3mo#o@>Yf*Dz-ld0miYbCo$?2+6~aiT)Hg8p@MaqjOhIo3o_p8*jU3rK>H(Tp z?%<6!K>d|s{xpW~2qV4slMOtEKZG~gK%qi~UZ(NflX}Y@xPC_6LN;*UVlkHU5*x@z z*l!JBqhGymPq*Y_bj4;1{;#KPK(Lx7*yAs-Pk(!${`G;NprDsLWdr1&)r9IIxA<5G z>?LRRLT#>Dp1|L1E?ktbPY&RgGu+&zH#~ndXY_F{+rYCl9Wd2uDW*sGZ!&)!@49n2BFrF^|=9lFy?e0dCx%JyKI5p%~N&4{{`x6oDJaZU3e?;pgQ0YJ*T1WwgJpN zDeo1?d#5ds4gBa%{0kH)@HgsXUJc;wop>v8A^g)r$p^z-HbCS1eU$fbl&5>MH{TFg zgZgz?m(Cs7kg!4Qo3BT)abw4@Z$^(~VS@*<&K=vc_v^mLN))$ZUfbpP432p5_WfD9 zdf$nzI+3pGY1b9C(>J&Sf1}axqPR}QNq_Z?Pz!7MNpm)9=5%)W@FA9(n#y=mN=gcg zJ#c_cn>v{_`}iZju!9U;HDfbpOw+Eb*aK|()G4evhptcuzz5G&8=x`%Hujz)*zUVk zD~WPkxpIXEZq+guFJ54izn{n|S1j*ywot8VMK)u`ROU`yO_@B2RjK4ySM<(a{X|Ni})z^eJ2yLazW+hHU_ohk8fX{`B6TE$JI=kmJXWYR1qVCmcK&%igQ`Zl19Lv~7gsw)79L^ql zk*?6!247SMOw)|N)wp=15ySHLcOXc&WE zHsSxA1{-*O_^_{Ty90Y%1MT^H^!~uOfIF@U8|c;Zi>&%hYNL2+8%A}Kt8(G|J9qA| zq@+Z4_UsvU{`~K5dFMh`y?gawHnX_`FaB|HaSb0ne3+xhJtgHn+qz{l8!>z+`?$%6 ztX!G5M4YG{DsC&3FU>w_(Nuh1_Uzupa(g=cvY`q%teCTpQ2tjOkO^+i$(Wjk`UW-zis`EnO1HP+w_DE0#xj zq%8p3-LPSu7FO9^s^7zh4sl6O&|S$AHa6kAvE1YAGA8Fas{^Q916f(spO-IR66^Tl zHuucoK&PELwAEA>;Jw+p)h90N)SgW`+t-!qY%S^J$=_%Uqnca!{IF4dcHzPWEo`7M zU)7!s(EfZxr+6<0d8$>Z;8uAgeb=v7o58kt(=i&ClFrSIEyg1g63+3m$M*fYmz6D@ z(GGGqe;D^Y`P&I@UZ~(9qNm1#XkQ!NizFr{uu2um>Z*KR=Hw1_WSQi+&odi#>zT?_8sTBz}>rdSiL&6bd^Wab<0nh zF^u`}B+NVG{UM#J*B19Uefl&HOYHjf>$=sEO8MY#aqr$eF21PHuX6k;UxoL?K?D2i zu473y=o)jJJPGZ9#veA+owwF4KjC3V91rM5Wl9CP3@7X*j z#*+U*Zpb0ON68YQRJZ-k!ycPAcaHA-Vcwf3#l&pOmHJ4oE3`{a96!dx9?Fad{IhyI1s)=iyAfXh_2vs$C=J$;$MoVe0+Qy zjU#7_;pwGYN7sd)AjX%}67*iXR(0L<{t>-jc+&p;`*Qu+mvo1BW>R7z51V)gn237t z6vo_^bPrE#=g*tN!=^YsrWb$E0Z$tG)nJe6YU-5ldDui5^!XO371sN?;=!xUXD!v( z6pt^ASfHEkSFKVX8ilUl^Ti{RUS(P|Yr>@~Dg;B>t5z8E6uHs2a;6WAFF$&uJ}0$n z=MG(Xh5YDas-;VpF6!O}ai%96gP$J!0y)w~Dsxe--0odFbVSc z3djE>QpG=V(L%3~Y5TUVsxo;R|0RnTd4;aFZQG)%t4#b=8wzXJuJO1`c&6b8u9j}l z_>3OUKduQsHnp^V-Opa3tHXy5sD7C<8*f~WAOEk5?BOnv+G;$c(tr_{?9*Q{Q}#Y219+6%pS zadzE71N(9DNrk2oaZRqwn>*X1_^)68GnY(Zg9qrwC*m0Jq-9GN>&AmK+;I%`6i+)j zQ;znuEz2Vl=Dpx|sCIunj#nc8mIn{`VhZT#n*x7!o`gO~+0rFFqN^I!t8n|wkStar z`2BG;7KVp^mHRT0Jh#k z1J60A1Ilag?{`OCP^(5Yu6`HzkI-@MN0Ma~jfL_gtO3P55Y~a`7Jc|ZeJ#)a6p}++ z6Gq#bJTjro$`#9XX;sNiQ>kSwQ135$=*EvyCir*oCdhy_ zKcz~(A+C|abLvjQbrC;HV?rhN5(v*f68(OGD3OROA@)!2UftdP%mI7Ee9?kE<~obp zaxX><=GQNr$8tKpggO&(bFdD;orFHd!U(RWo19V1`Tm3Ge?S@NXZ)vpQzGsJx#rH9 z<+grd8Ip&0j74G+Jm^^$DW82QkM-wT)22-u7{=y+o2yi>ZY{QNpQ`JQl12FZp%eRe ziRAd>H|<|Xq$!;}bB1-MIEAjff8pb+WzCnw;7>pO=+b>9Jhg5iYs~g-5*yrGjLVOq zaU`stDqr?(&4l${SQC-M7&9x0(SOOw4*vh4<6PqbN}=Q9;za*Ttoc{71stzbp&Z2t z2&Z@lXO)-Y%3r;Dg(04RR_xqWzFwW0?Dp;3T)Zj^{XzcBh?j{z3uI8ERxO*eh#%(X z_pNWgE<~N!@YWTcPZu%-d~6b8MA#Wy~`J{?Mxh0Kbb}yLPY} zH?DKdeM$OPZm~vx_UxJ8(f<5OvWGwI%Qt@9w>QC?Hzx3fISzL{$6Bw0@jTRBh+P3f z+s>PH^)F^+?AU3)Zl z&TOyJ6~@mHKj?!7_2v`qXxBYOj_^m^Z;Bs$3%c&#uTM^5jnM7fmk@vQi*BEL6noSW z)v8ovwQ5wgOEs%kWnYgT;c;ETPZ?uW5}yP6^+unsusw2wKlT&;Go*U)qsAYwbLVo_ zPIuJ`5HG0##mJX<@zfUeK4Pn?QJ2mg+3!h7u8N(b^AS6)L;E&aJl3sKGm-oji_*o4 z*du57o6SW_)AOGd{~2vw%*Ez3W}8-lQpw*E?O=?zc?xsszTlzGd(~Op+BLbTVg0%k z_j_@!=?Z-=j0HA$zjikM+O%momh>L%h@9b%W3=XXzoY|f@jif$#m_&lb*bOu%oY&y zBYM>es=wSDFG((k*5B2uRT96$fjHRQL~)=ywr?wr6Q!l8y4gEZiNj;)LvJQu|F&&f zJ;hi3dheyKU%$RQooseQYWUl%!7c6SO0om=QInH%HU^>;3h{o>jt1_yzPfTV#E9FFAAJ2QEhVQ$Dnov6maaw-O?Z4) zfLNG_XEUDSJofL`n_}jE%ut?}4;n9q<4g%P;=|uKTGEFJ6#n&*l9OePTaRh*F;{-IW5XMe&UW4stkY1g)Oo~MBW`~67Rzw37eLL)i zKj4qKEsW82rSJFo5|NK^2g3e+N8}9u;Nal@Qrkak{?C`~0Db)KUv%*~ii})1hOlqw zh@9asn1gHkGUk$O@TrDxsxQ*yNfV<8d&~paC1?2Ctj2zlj(l~CxHj>iU6KpmP{P_1U!@^o0}$h@xg&Clztwz1(vvT4%atj``uFWk zYgYRDF7@x5PI1dR5&j6E{S-ODKOeRIQhX72Nv2L6+cLxp@^#v|bLVKn{xf^z2!Fw7 z6eK8tg0jj^pYuih`%!xzK8gNDw8kE7z@AF7hkyS3`Ts#}|Hr-~+QqgTNnw7-(<;cv5;+xr^+ zSUZZCoc>A?KP)&&*bh>YUHk>(Bwxb6HqGlJW{yA8tXb2O3Hu>RvWGvd`P=3z_+x$t zF#`|>!OtoE&p(qf7aT4pd-&S~^EF?=AK#6fIb&LYNC&^2I1xeEkC2lRe<3L7HDB@h zs8GHPLkt@l{|XT4VE68w_}&Nlfmx))pW6O4J@M?5%_Y-&XE*sA%nY>{$I_b9o38RP zBy13^p_}b-qHh;JrZ|Piwr}6Md(E2YQ;Q=bZqdH9+~#fFy0!6yJ>CIXq{Lsan0vXZ zcW38gPLZ%ZOyi3SX^gplsKr#zTBJx2@$rnDmk=6*uvv^fsq7hN*K>3XvCtRHpXX7c z?6VK^-@x45189t(( zjSsob@tb14%y*{v*rt4fz9N5ivVg^gTYPoeTms8Po7-$%bq>EHf~sdV#V^P>tsid z+#v_9LurznAEn+2uLC?fmdX$&Y2+t#iQ0^t$acmFg0YQ_;>HvxP~dOMYrC2+Sg>Gz z!D8x&dyzdnka$pTdvxzA#v(vGg505qbb5ZT6J~qK*8**<@7+m+*_6wdFGt45$8XrV zbH@RSy^mP(FYG6*h$}fI==SDHCLjRE`C6Ar#q6JzLS79U>2Wpuq>9M<_xUG zck~hI9c{Im>e_op%g^=nZ==yzsJIaF(UK*L_io&{{(N-w%DeQ8q%B*vgt2bQZ5%{`s<3{A^Q>WJN+xP4KEn7C7TeD{M?WkoL zy4d^6FZhUk7TyI5h zx`W=y`+xmqPu#9uJ5TJ0*?wxr_HCzQVz!>amcEyLV(*^a@dx(ri;asrvYXaUZ=&x> zMN^z@Jlk2<%&WhtEi&&i$#edE64nG}$>TAw+F-2n+sp|NzYg3CgU2pMn71XG zA0TZy@EBljyfI;JB3eL%kD&xen+`~2T2s2gP(^-D42|B%@{a+otUwa-FFq-NtoW&s zj9p@J*$K%R$Nwdr5R;LAPReIwvo1i)WTc@P1yZGaP)0uUat1@@1(T%XnHLO~@|hw? z*~}YcUEW|2Z;;6?N>#xPvTkQE1RJm zOT3i~psTxB$?#?Ui%U-^aOviNmMY# + + + + KityMinder Editor - Powered By FEX + + + + + + + + + + + + + + + + +

+ + KityMinder Editor - Powered By FEX + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/virtualroot/kitymind-editor/kityminder.editor.css b/virtualroot/kitymind-editor/kityminder.editor.css new file mode 100644 index 0000000..7fdac1e --- /dev/null +++ b/virtualroot/kitymind-editor/kityminder.editor.css @@ -0,0 +1,1520 @@ +.km-editor { + overflow: hidden; + z-index: 2; +} +.km-editor > .mask { + display: block; + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + background-color: transparent; +} +.km-editor > .receiver { + position: absolute; + background: white; + outline: none; + box-shadow: 0 0 20px rgba(0, 0, 0, 0.5); + left: 0; + top: 0; + padding: 3px 5px; + margin-left: -3px; + margin-top: -5px; + max-width: 300px; + width: auto; + font-size: 14px; + line-height: 1.4em; + min-height: 1.4em; + box-sizing: border-box; + overflow: hidden; + word-break: break-all; + word-wrap: break-word; + border: none; + -webkit-user-select: text; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.km-editor > .receiver.debug { + opacity: 1; + outline: 1px solid green; + background: none; + z-index: 0; +} +.km-editor > .receiver.input { + pointer-events: all; + opacity: 1; + z-index: 999; + background: white; + outline: none; +} +div.minder-editor-container { + position: absolute; + top: 40px; + bottom: 0; + left: 0; + right: 0; + font-family: Arial, "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; +} +.minder-editor { + position: absolute; + top: 92px; + left: 0; + right: 0; + bottom: 0; +} +.minder-viewer { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +.control-panel { + position: absolute; + top: 0; + right: 0; + width: 250px; + bottom: 0; + border-left: 1px solid #CCC; +} +.minder-divider { + position: absolute; + top: 0; + right: 250px; + bottom: 0; + width: 2px; + background-color: #fbfbfb; + cursor: ew-resize; +} +.panel-body { + padding: 10px; +} +.top-tab .nav-tabs { + background-color: #e1e1e1; + border: 0; + height: 32px; +} +.top-tab .nav-tabs li { + margin: 0; +} +.top-tab .nav-tabs li a { + margin: 0; + border: 0; + padding: 6px 15px; + border-radius: 0; + vertical-align: middle; +} +.top-tab .nav-tabs li a:hover, +.top-tab .nav-tabs li a:focus { + background: inherit; + border: 0; +} +.top-tab .nav-tabs li.active a { + border: 0; + background-color: #fff; +} +.top-tab .nav-tabs li.active a:hover, +.top-tab .nav-tabs li.active a:focus { + border: 0; +} +.top-tab .tab-content { + height: 60px; + background-color: #fff; + border-bottom: 1px solid #dbdbdb; +} +.top-tab .tab-pane { + font-size: 0; +} +.km-btn-group { + display: inline-block; + margin: 5px 0; + padding: 0 5px; + vertical-align: middle; + border-right: 1px dashed #eee; +} +.km-btn-item { + display: inline-block; + margin: 0 3px; + font-size: 0; + cursor: default; +} +.km-btn-item[disabled] { + opacity: 0.5; +} +.km-btn-item[disabled]:hover, +.km-btn-item[disabled]:active { + background-color: #fff; +} +.km-btn-item .km-btn-icon { + display: inline-block; + background: url(images/icons.png) no-repeat; + background-position: 0 20px; + width: 20px; + height: 20px; + padding: 2px; + margin: 1px; + vertical-align: middle; +} +.km-btn-item .km-btn-caption { + display: inline-block; + font-size: 12px; + vertical-align: middle; +} +.km-btn-item:hover { + background-color: #eff3fa; +} +.km-btn-item:active { + background-color: #c4d0ee; +} +.do-group { + width: 38px; +} +.undo .km-btn-icon { + background-position: 0 -1240px; +} +.redo .km-btn-icon { + background-position: 0 -1220px; +} +.append-group { + width: 212px; +} +.append-child-node .km-btn-icon { + background-position: 0 0; +} +.append-sibling-node .km-btn-icon { + background-position: 0 -20px; +} +.append-parent-node .km-btn-icon { + background-position: 0 -40px; +} +.arrange-group { + width: 64px; +} +.arrange-up .km-btn-icon { + background-position: 0 -280px; +} +.arrange-down .km-btn-icon { + background-position: 0 -300px; +} +.operation-group { + width: 64px; +} +.edit-node .km-btn-icon { + background-position: 0 -60px; +} +.remove-node .km-btn-icon { + background-position: 0 -80px; +} +.btn-group-vertical { + vertical-align: middle; + margin: 5px; +} +.btn-group-vertical .hyperlink, +.btn-group-vertical .hyperlink-caption { + width: 40px; + margin: 0; + padding: 0; + border: none!important; + border-radius: 0!important; +} +.btn-group-vertical .hyperlink:hover, +.btn-group-vertical .hyperlink-caption:hover { + background-color: #eff3fa; +} +.btn-group-vertical .hyperlink:active, +.btn-group-vertical .hyperlink-caption:active { + background-color: #c4d0ee; +} +.btn-group-vertical .hyperlink.active, +.btn-group-vertical .hyperlink-caption.active { + box-shadow: none; + background-color: #eff3fa; +} +.btn-group-vertical .hyperlink { + height: 25px; + background: url(images/icons.png) no-repeat center -100px; +} +.btn-group-vertical .hyperlink-caption { + height: 20px; +} +.btn-group-vertical .hyperlink-caption .caption { + font-size: 12px; +} +.open > .dropdown-toggle.btn-default { + background-color: #eff3fa; +} +.btn-group-vertical .image-btn, +.btn-group-vertical .image-btn-caption { + width: 40px; + margin: 0; + padding: 0; + border: none!important; + border-radius: 0!important; +} +.btn-group-vertical .image-btn:hover, +.btn-group-vertical .image-btn-caption:hover { + background-color: #eff3fa; +} +.btn-group-vertical .image-btn:active, +.btn-group-vertical .image-btn-caption:active { + background-color: #c4d0ee; +} +.btn-group-vertical .image-btn.active, +.btn-group-vertical .image-btn-caption.active { + box-shadow: none; + background-color: #eff3fa; +} +.btn-group-vertical .image-btn { + height: 25px; + background: url(images/icons.png) no-repeat center -125px; +} +.btn-group-vertical .image-btn-caption { + height: 20px; +} +.btn-group-vertical .image-btn-caption .caption { + font-size: 12px; +} +.image-preview { + display: block; + max-width: 50%; +} +.modal-body .tab-pane { + font-size: inherit; + padding-top: 15px; +} +.search-result { + margin-top: 15px; + height: 370px; + overflow: hidden; +} +.search-result ul { + margin: 0; + padding: 0; + list-style: none; + clear: both; + height: 100%; + overflow-x: hidden; + overflow-y: auto; +} +.search-result ul li { + list-style: none; + float: left; + display: block; + width: 130px; + height: 130px; + line-height: 130px; + margin: 6px; + padding: 0; + font-size: 12px; + position: relative; + vertical-align: top; + text-align: center; + overflow: hidden; + cursor: pointer; + border: 2px solid #fcfcfc; +} +.search-result ul li.selected { + border: 2px solid #fc8383; +} +.search-result ul li img { + max-width: 126px; + max-height: 130px; + vertical-align: middle; +} +.search-result ul li span { + display: block; + position: absolute; + bottom: 0; + height: 20px; + background: rgba(0, 0, 0, 0.5); + left: 0; + right: 0; + color: white; + line-height: 20px; + overflow: hidden; + text-overflow: ellipsis; + word-break: break-all; + white-space: nowrap; + opacity: 0; + -webkit-transform: translate(0, 20px); + -ms-transform: translate(0, 20px); + transform: translate(0, 20px); + -webkit-transition: all .2s ease; + transition: all .2s ease; +} +.search-result ul li:hover span { + opacity: 1; + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + transform: translate(0, 0); +} +@media (min-width: 768px) { + .form-inline .form-control { + width: 422px; + } +} +.btn-group-vertical { + vertical-align: top; + margin: 5px; +} +.btn-group-vertical.note-btn-group { + border-right: 1px dashed #eee; + padding-right: 5px; +} +.btn-group-vertical .note-btn, +.btn-group-vertical .note-btn-caption { + width: 40px; + margin: 0; + padding: 0; + border: none!important; + border-radius: 0!important; +} +.btn-group-vertical .note-btn:hover, +.btn-group-vertical .note-btn-caption:hover { + background-color: #eff3fa; +} +.btn-group-vertical .note-btn:active, +.btn-group-vertical .note-btn-caption:active { + background-color: #c4d0ee; +} +.btn-group-vertical .note-btn.active, +.btn-group-vertical .note-btn-caption.active { + box-shadow: none; + background-color: #eff3fa; +} +.btn-group-vertical .note-btn { + height: 25px; + background: url(images/icons.png) no-repeat center -1150px; +} +.btn-group-vertical .note-btn-caption { + height: 20px; +} +.btn-group-vertical .note-btn-caption .caption { + font-size: 12px; +} +.open > .dropdown-toggle.btn-default { + background-color: #eff3fa; +} +.gfm-render { + font-size: 12px; + -webkit-user-select: text; + color: #333; + line-height: 1.8em; +} +.gfm-render blockquote, +.gfm-render ul, +.gfm-render table, +.gfm-render p, +.gfm-render pre, +.gfm-render hr { + margin: 1em 0; + cursor: text; +} +.gfm-render blockquote:first-child:last-child, +.gfm-render ul:first-child:last-child, +.gfm-render table:first-child:last-child, +.gfm-render p:first-child:last-child, +.gfm-render pre:first-child:last-child, +.gfm-render hr:first-child:last-child { + margin: 0; +} +.gfm-render img { + max-width: 100%; +} +.gfm-render a { + color: blue; +} +.gfm-render a:hover { + color: red; +} +.gfm-render blockquote { + display: block; + border-left: 4px solid #E4AD91; + color: #da8e68; + padding-left: 10px; + font-style: italic; + margin-left: 2em; +} +.gfm-render ul, +.gfm-render ol { + padding-left: 3em; +} +.gfm-render table { + width: 100%; + border-collapse: collapse; + margin: 1em 0; +} +.gfm-render table th, +.gfm-render table td { + border: 1px solid #666; + padding: 2px 4px; +} +.gfm-render table th { + background: rgba(45, 141, 234, 0.2); +} +.gfm-render table tr:nth-child(even) td { + background: rgba(45, 141, 234, 0.03); +} +.gfm-render em { + color: red; +} +.gfm-render del { + color: #999; +} +.gfm-render pre { + background: rgba(45, 141, 234, 0.1); + padding: 5px; + border-radius: 5px; + word-break: break-all; + word-wrap: break-word; +} +.gfm-render code { + background: rgba(45, 141, 234, 0.1); + /* display: inline-block; */ + padding: 0 5px; + border-radius: 3px; +} +.gfm-render pre code { + background: none; +} +.gfm-render hr { + border: none; + border-top: 1px solid #CCC; +} +.gfm-render .highlight { + background: yellow; + color: red; +} +.km-note { + width: 300px; + border-left: 1px solid #babfcd; + padding: 5px 10px; + background: white; + position: absolute; + top: 92px; + right: 0; + bottom: 0; + left: auto; + z-index: 3; +} +.km-note.panel { + margin: 0; + padding: 0; +} +.km-note.panel .panel-heading h3 { + display: inline-block; +} +.km-note.panel .panel-heading .close-note-editor { + width: 15px; + height: 15px; + display: inline-block; + float: right; +} +.km-note.panel .panel-heading .close-note-editor:hover { + cursor: pointer; +} +.km-note.panel .panel-body { + padding: 0; +} +.km-note .CodeMirror { + position: absolute; + top: 41px; + bottom: 0; + height: auto; + cursor: text; + font-size: 14px; + line-height: 1.3em; + font-family: consolas; +} +.km-note-tips { + color: #ccc; + padding: 3px 8px; +} +#previewer-content { + position: absolute; + background: #FFD; + padding: 5px 15px; + border-radius: 5px; + max-width: 400px; + max-height: 200px; + overflow: auto; + z-index: 10; + box-shadow: 0 0 15px rgba(0, 0, 0, 0.5); + word-break: break-all; + font-size: 12px; + -webkit-user-select: text; + color: #333; + line-height: 1.8em; +} +#previewer-content blockquote, +#previewer-content ul, +#previewer-content table, +#previewer-content p, +#previewer-content pre, +#previewer-content hr { + margin: 1em 0; + cursor: text; +} +#previewer-content blockquote:first-child:last-child, +#previewer-content ul:first-child:last-child, +#previewer-content table:first-child:last-child, +#previewer-content p:first-child:last-child, +#previewer-content pre:first-child:last-child, +#previewer-content hr:first-child:last-child { + margin: 0; +} +#previewer-content img { + max-width: 100%; +} +#previewer-content a { + color: blue; +} +#previewer-content a:hover { + color: red; +} +#previewer-content blockquote { + display: block; + border-left: 4px solid #E4AD91; + color: #da8e68; + padding-left: 10px; + font-style: italic; + margin-left: 2em; +} +#previewer-content ul, +#previewer-content ol { + padding-left: 3em; +} +#previewer-content table { + width: 100%; + border-collapse: collapse; + margin: 1em 0; +} +#previewer-content table th, +#previewer-content table td { + border: 1px solid #666; + padding: 2px 4px; +} +#previewer-content table th { + background: rgba(45, 141, 234, 0.2); +} +#previewer-content table tr:nth-child(even) td { + background: rgba(45, 141, 234, 0.03); +} +#previewer-content em { + color: red; +} +#previewer-content del { + color: #999; +} +#previewer-content pre { + background: rgba(45, 141, 234, 0.1); + padding: 5px; + border-radius: 5px; + word-break: break-all; + word-wrap: break-word; +} +#previewer-content code { + background: rgba(45, 141, 234, 0.1); + /* display: inline-block; */ + padding: 0 5px; + border-radius: 3px; +} +#previewer-content pre code { + background: none; +} +#previewer-content hr { + border: none; + border-top: 1px solid #CCC; +} +#previewer-content .highlight { + background: yellow; + color: red; +} +#previewer-content.ng-hide { + display: block!important; + left: -99999px !important; + top: -99999px !important; +} +.panel-body { + padding: 10px; +} +.tab-content .km-priority { + vertical-align: middle; + font-size: inherit; + display: inline-block; + width: 140px; + margin: 5px; + border-right: 1px dashed #eee; +} +.tab-content .km-priority .km-priority-item { + margin: 0 1px; + padding: 1px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon { + background: url(images/iconpriority.png) repeat-y; + background-color: transparent; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-0 { + background-position: 0 20px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-1 { + background-position: 0 0px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-2 { + background-position: 0 -20px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-3 { + background-position: 0 -40px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-4 { + background-position: 0 -60px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-5 { + background-position: 0 -80px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-6 { + background-position: 0 -100px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-7 { + background-position: 0 -120px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-8 { + background-position: 0 -140px; +} +.tab-content .km-priority .km-priority-item .km-priority-icon.priority-9 { + background-position: 0 -160px; +} +.tab-content .km-progress { + vertical-align: middle; + font-size: inherit; + display: inline-block; + width: 140px; + margin: 5px; + border-right: 1px dashed #eee; +} +.tab-content .km-progress .km-progress-item { + margin: 0 1px; + padding: 1px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon { + background: url(images/iconprogress.png) repeat-y; + background-color: transparent; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-0 { + background-position: 0 20px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-1 { + background-position: 0 0px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-2 { + background-position: 0 -20px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-3 { + background-position: 0 -40px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-4 { + background-position: 0 -60px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-5 { + background-position: 0 -80px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-6 { + background-position: 0 -100px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-7 { + background-position: 0 -120px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-8 { + background-position: 0 -140px; +} +.tab-content .km-progress .km-progress-item .km-progress-icon.progress-9 { + background-position: 0 -160px; +} +.resource-editor { + vertical-align: middle; + display: inline-block; + margin: 5px; +} +.resource-editor .input-group, +.resource-editor .km-resource { + font-size: 12px; +} +.resource-editor .input-group { + height: 20px; + width: 168px; +} +.resource-editor .resource-dropdown { + position: relative; + width: 168px; + border: 1px solid #ccc; + margin-top: -1px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.resource-editor .resource-dropdown .km-resource { + position: absolute; + width: 154px; + margin-bottom: 3px; + padding: 0; + list-style-type: none; + overflow: scroll; + max-height: 500px; +} +.resource-editor .resource-dropdown .km-resource.open { + z-index: 3; + background-color: #fff; +} +.resource-editor .resource-dropdown .km-resource li { + display: inline-block; + padding: 1px 2px; + border-radius: 4px; + margin: 2px 3px; +} +.resource-editor .resource-dropdown .km-resource li[disabled] { + opacity: 0.5; +} +.resource-editor .resource-dropdown .resource-caret { + display: block; + float: right; + vertical-align: middle; + width: 12px; + height: 24px; + padding: 8px 1px; +} +.resource-editor .resource-dropdown .resource-caret:hover { + background-color: #eff3fa; +} +.resource-editor .resource-dropdown .resource-caret:active { + background-color: #c4d0ee; +} +.resource-editor input.form-control, +.resource-editor .btn { + font-size: 12px; +} +.resource-editor input.form-control { + padding: 2px 4px; + height: 24px; + border-bottom-left-radius: 0; +} +.resource-editor .input-group-btn { + line-height: 24px; +} +.resource-editor .input-group-btn .btn { + padding: 2px 4px; + height: 24px; + border-bottom-right-radius: 0; +} +.temp-panel { + margin: 5px 5px 5px 10px; + border-right: 1px dashed #eee; + display: inline-block; + vertical-align: middle; +} +.temp-list { + min-width: 124px; +} +.temp-item-wrap { + width: 50px; + height: 40px; + padding: 0 2px; + margin: 5px; + display: inline-block; +} +.temp-item { + display: inline-block; + width: 50px; + height: 40px; + background-image: url(images/template.png); + background-repeat: no-repeat; +} +.temp-item.default { + background-position: 0 0; +} +.temp-item.structure { + background-position: -50px 0; +} +.temp-item.filetree { + background-position: -100px 0; +} +.temp-item.right { + background-position: -150px 0; +} +.temp-item.fish-bone { + background-position: -200px 0; +} +.temp-item.tianpan { + background-position: -250px 0; +} +.current-temp-item { + width: 74px; + padding: 0 0 0 5px; + border: 1px solid #fff; +} +.current-temp-item:hover { + background-color: #eff3fa; +} +.current-temp-item[disabled] { + opacity: 0.5; +} +.current-temp-item .caret { + margin-left: 5px; +} +.temp-item-selected { + background-color: #87a9da; +} +.theme-panel { + height: 42px; + margin: 5px; + padding: 0 5px 0 0; + border-right: 1px dashed #eee; + display: inline-block; + vertical-align: middle; +} +.theme-list { + min-width: 162px; +} +div a.theme-item { + display: inline-block; + width: 70px; + height: 30px; + text-align: center; + line-height: 30px; + padding: 0 5px; + font-size: 12px; + cursor: pointer; + text-decoration: none; + color: #000; +} +.theme-item-selected { + width: 100px; + padding: 6px 7px; + border: 1px solid #fff; +} +.theme-item-selected:hover { + background-color: #eff3fa; +} +.theme-item-selected .caret { + margin-left: 5px; +} +.theme-item-selected[disabled] { + opacity: 0.5; +} +.theme-item-wrap { + display: inline-block; + width: 80px; + height: 40px; + padding: 5px; +} +.theme-item-wrap:hover { + background-color: #eff3fa; +} +.readjust-layout { + display: inline-block; + vertical-align: middle; + padding: 0 10px 0 5px; + border-right: 1px dashed #eee; +} +.btn-icon { + width: 25px; + height: 25px; + margin-left: 12px; + display: block; +} +.btn-label { + font-size: 12px; +} +.btn-wrap { + width: 50px; + height: 42px; + cursor: pointer; + display: inline-block; + text-decoration: none; +} +.btn-wrap[disabled] span { + opacity: 0.5; +} +.btn-wrap[disabled] { + cursor: default; +} +.btn-wrap[disabled]:hover { + background-color: transparent; +} +.btn-wrap[disabled]:active { + background-color: transparent; +} +.btn-wrap:link { + text-decoration: none; +} +.btn-wrap:visited { + text-decoration: none; +} +.btn-wrap:hover { + background-color: #eff3fa; + text-decoration: none; +} +.btn-wrap:active { + background-color: #c4d0ee; +} +.reset-layout-icon { + background: url(images/icons.png) no-repeat; + background-position: 0 -150px; +} +.style-operator { + display: inline-block; + vertical-align: middle; + padding: 0 5px; + border-right: 1px dashed #eee; +} +.style-operator .clear-style { + vertical-align: middle; +} +.clear-style-icon { + background: url(images/icons.png) no-repeat; + background-position: 0 -175px; +} +.s-btn-group-vertical { + display: inline-block; + vertical-align: middle; +} +.s-btn-icon { + width: 20px; + height: 20px; + margin-right: 3px; + display: inline-block; + vertical-align: middle; +} +.s-btn-label { + font-size: 12px; + vertical-align: middle; + display: inline-block; +} +.s-btn-wrap { + padding: 0 5px 0 3px; + display: inline-block; + text-decoration: none; + font-size: 0; +} +.s-btn-wrap[disabled] span { + opacity: 0.5; +} +.s-btn-wrap[disabled] { + cursor: default; +} +.s-btn-wrap[disabled]:hover { + background-color: transparent; +} +.s-btn-wrap[disabled]:active { + background-color: transparent; +} +.s-btn-wrap:hover { + background-color: #eff3fa; + text-decoration: none; +} +.s-btn-wrap:active { + background-color: #c4d0ee; +} +.copy-style-icon { + background: url(images/icons.png) no-repeat; + background-position: 0 -200px; +} +.paste-style-wrap { + display: block; +} +.paste-style-icon { + background: url(images/icons.png) no-repeat; + background-position: 0 -220px; +} +.font-operator { + width: 170px; + display: inline-block; + vertical-align: middle; + font-size: 12px; + padding: 0 5px; +} +.font-operator .font-size-list { + display: inline-block; + border: 1px solid #eee; + padding: 2px 4px; +} +.font-operator .font-family-list { + display: inline-block; + border: 1px solid #eee; + padding: 2px 4px; +} +.current-font-item a { + text-decoration: none; + display: inline-block; +} +.current-font-family { + width: 75px; + height: 18px; + overflow: hidden; + vertical-align: bottom; +} +.current-font-size { + width: 32px; + height: 18px; + overflow: hidden; + vertical-align: bottom; +} +.current-font-item[disabled] { + opacity: 0.5; +} +.font-item { + line-height: 1em; + text-align: left; +} +.font-item-selected { + background-color: #87a9da; +} +.font-bold, +.font-italics { + display: inline-block; + background: url(images/icons.png) no-repeat; + cursor: pointer; + margin: 0 3px; +} +.font-bold:hover, +.font-italics:hover { + background-color: #eff3fa; +} +.font-bold:active, +.font-italics:active { + background-color: #c4d0ee; +} +.font-bold[disabled], +.font-italics[disabled] { + opacity: 0.5; +} +.font-bold { + background-position: 0 -240px; +} +.font-italics { + background-position: 0 -260px; +} +.font-bold-selected, +.font-italics-selected { + background-color: #87a9da; +} +.font-color-wrap { + display: inline-block; + width: 30px; + height: 22px; + margin: 3px 3px 0 0; + border: 1px #efefef solid; + vertical-align: middle; + font-size: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.font-color-wrap[disabled] { + opacity: 0.5; +} +.font-color-wrap .quick-font-color { + display: inline-block; + width: 20px; + height: 16px; + font-size: 14px; + line-height: 16px; + vertical-align: top; + text-align: center; + cursor: default; + color: #000; +} +.font-color-wrap .quick-font-color:hover { + background-color: #eff3fa; +} +.font-color-wrap .quick-font-color:active { + background-color: #c4d0ee; +} +.font-color-wrap .quick-font-color[disabled] { + opacity: 0.5; +} +.font-color-wrap .font-color-preview { + display: inline-block; + width: 12px; + height: 2px; + margin: 0 4px 0; + background-color: #000; +} +.font-color-wrap .font-color-preview[disabled] { + opacity: 0.5; +} +.font-color { + display: inline-block; + width: 8px; + height: 16px; +} +.font-color:hover { + background-color: #eff3fa; +} +.font-color:active { + background-color: #c4d0ee; +} +.font-color[disabled] { + opacity: 0.5; +} +.font-color .caret { + margin-left: -2px; + margin-top: 7px; +} +.bg-color-wrap { + display: inline-block; + width: 30px; + height: 22px; + margin: 3px 3px 0 0; + border: 1px #efefef solid; + vertical-align: middle; + font-size: 0; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.bg-color-wrap[disabled] { + opacity: 0.5; +} +.bg-color-wrap .quick-bg-color { + display: inline-block; + width: 20px; + height: 16px; + font-size: 14px; + line-height: 16px; + vertical-align: top; + text-align: center; + cursor: default; + color: #000; + background: url(images/icons.png) no-repeat center -1260px; +} +.bg-color-wrap .quick-bg-color:hover { + background-color: #eff3fa; +} +.bg-color-wrap .quick-bg-color:active { + background-color: #c4d0ee; +} +.bg-color-wrap .quick-bg-color[disabled] { + opacity: 0.5; +} +.bg-color-wrap .bg-color-preview { + display: inline-block; + width: 12px; + height: 2px; + margin: 0 4px 0; + background-color: #fff; +} +.bg-color-wrap .bg-color-preview[disabled] { + opacity: 0.5; +} +.bg-color { + display: inline-block; + width: 8px; + height: 16px; +} +.bg-color:hover { + background-color: #eff3fa; +} +.bg-color:active { + background-color: #c4d0ee; +} +.bg-color[disabled] { + opacity: 0.5; +} +.bg-color .caret { + margin-left: -2px; + margin-top: 7px; +} +.btn-group-vertical { + vertical-align: middle; + margin: 5px; +} +.btn-group-vertical .expand, +.btn-group-vertical .expand-caption { + width: 40px; + margin: 0; + padding: 0; + border: none!important; + border-radius: 0!important; +} +.btn-group-vertical .expand:hover, +.btn-group-vertical .expand-caption:hover { + background-color: #eff3fa; +} +.btn-group-vertical .expand:active, +.btn-group-vertical .expand-caption:active { + background-color: #c4d0ee; +} +.btn-group-vertical .expand.active, +.btn-group-vertical .expand-caption.active { + box-shadow: none; + background-color: #eff3fa; +} +.btn-group-vertical .expand { + height: 25px; + background: url(images/icons.png) no-repeat 0 -995px; + background-position-x: 50%; +} +.btn-group-vertical .expand-caption { + height: 20px; +} +.btn-group-vertical .expand-caption .caption { + font-size: 12px; +} +.btn-group-vertical { + vertical-align: middle; + margin: 5px; +} +.btn-group-vertical .select, +.btn-group-vertical .select-caption { + width: 40px; + margin: 0; + padding: 0; + border: none!important; + border-radius: 0!important; +} +.btn-group-vertical .select:hover, +.btn-group-vertical .select-caption:hover { + background-color: #eff3fa; +} +.btn-group-vertical .select:active, +.btn-group-vertical .select-caption:active { + background-color: #c4d0ee; +} +.btn-group-vertical .select.active, +.btn-group-vertical .select-caption.active { + box-shadow: none; + background-color: #eff3fa; +} +.btn-group-vertical .select { + height: 25px; + background: url(images/icons.png) no-repeat 7px -1175px; +} +.btn-group-vertical .select-caption { + height: 20px; +} +.btn-group-vertical .select-caption .caption { + font-size: 12px; +} +.btn-group-vertical { + vertical-align: middle; + margin: 5px; +} +.btn-group-vertical .search, +.btn-group-vertical .search-caption { + width: 40px; + margin: 0; + padding: 0; + border: none!important; + border-radius: 0!important; +} +.btn-group-vertical .search:hover, +.btn-group-vertical .search-caption:hover { + background-color: #eff3fa; +} +.btn-group-vertical .search:active, +.btn-group-vertical .search-caption:active { + background-color: #c4d0ee; +} +.btn-group-vertical .search.active, +.btn-group-vertical .search-caption.active { + box-shadow: none; + background-color: #eff3fa; +} +.btn-group-vertical .search { + height: 25px; + background: url(images/icons.png) no-repeat 0 -345px; + background-position-x: 50%; +} +.btn-group-vertical .search-caption { + height: 20px; +} +.btn-group-vertical .search-caption .caption { + font-size: 12px; +} +.search-box { + float: right; + background-color: #fff; + border: 1px solid #dbdbdb; + position: relative; + top: 0; + z-index: 3; + width: 360px; + height: 40px; + padding: 3px 6px; + opacity: 1; +} +.search-box .search-input-wrap, +.search-box .prev-and-next-btn { + float: left; +} +.search-box .close-search { + float: right; + height: 16px; + width: 16px; + padding: 1px; + border-radius: 100%; + margin-top: 6px; + margin-right: 10px; +} +.search-box .close-search .glyphicon { + top: -1px; +} +.search-box .close-search:hover { + background-color: #efefef; +} +.search-box .close-search:active { + background-color: #999; +} +.search-box .search-input-wrap { + width: 240px; +} +.search-box .prev-and-next-btn { + margin-left: 5px; +} +.search-box .prev-and-next-btn .btn:focus { + outline: none; +} +.search-box .search-addon { + background-color: #fff; +} +.tool-group { + padding: 0; +} +.tool-group[disabled] { + opacity: 0.5; +} +.tool-group .tool-group-item { + display: inline-block; + border-radius: 4px; +} +.tool-group .tool-group-item .tool-group-icon { + width: 20px; + height: 20px; + padding: 2px; + margin: 1px; +} +.tool-group .tool-group-item:hover { + background-color: #eff3fa; +} +.tool-group .tool-group-item:active { + background-color: #c4d0ee; +} +.tool-group .tool-group-item.active { + background-color: #c4d0ee; +} +.nav-bar { + position: absolute; + width: 35px; + height: 240px; + padding: 5px 0; + left: 10px; + bottom: 10px; + background: #fc8383; + color: #fff; + border-radius: 4px; + z-index: 10; + box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.2); + transition: -webkit-transform 0.7s 0.1s ease; + transition: transform .7s 0.1s ease; +} +.nav-bar .nav-btn { + width: 35px; + height: 24px; + line-height: 24px; + text-align: center; +} +.nav-bar .nav-btn .icon { + background: url(images/icons.png); + width: 20px; + height: 20px; + margin: 2px auto; + display: block; +} +.nav-bar .nav-btn.active { + background-color: #5A6378; +} +.nav-bar .zoom-in .icon { + background-position: 0 -730px; +} +.nav-bar .zoom-out .icon { + background-position: 0 -750px; +} +.nav-bar .hand .icon { + background-position: 0 -770px; + width: 25px; + height: 25px; + margin: 0 auto; +} +.nav-bar .camera .icon { + background-position: 0 -870px; + width: 25px; + height: 25px; + margin: 0 auto; +} +.nav-bar .nav-trigger .icon { + background-position: 0 -845px; + width: 25px; + height: 25px; + margin: 0 auto; +} +.nav-bar .zoom-pan { + width: 2px; + height: 70px; + box-shadow: 0 1px #E50000; + position: relative; + background: white; + margin: 3px auto; + overflow: visible; +} +.nav-bar .zoom-pan .origin { + position: absolute; + width: 20px; + height: 8px; + left: -9px; + margin-top: -4px; + background: transparent; +} +.nav-bar .zoom-pan .origin:after { + content: ' '; + display: block; + width: 6px; + height: 2px; + background: white; + left: 7px; + top: 3px; + position: absolute; +} +.nav-bar .zoom-pan .indicator { + position: absolute; + width: 8px; + height: 8px; + left: -3px; + background: white; + border-radius: 100%; + margin-top: -4px; +} +.nav-previewer { + background: #fff; + width: 140px; + height: 120px; + position: absolute; + left: 45px; + bottom: 30px; + box-shadow: 0 0 8px rgba(0, 0, 0, 0.2); + border-radius: 0 2px 2px 0; + padding: 1px; + z-index: 9; + cursor: crosshair; + transition: -webkit-transform 0.7s 0.1s ease; + transition: transform .7s 0.1s ease; +} +.nav-previewer.grab { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; +} +/*# sourceMappingURL=kityminder.editor.css.map */ \ No newline at end of file diff --git a/virtualroot/kitymind-editor/kityminder.editor.css.map b/virtualroot/kitymind-editor/kityminder.editor.css.map new file mode 100644 index 0000000..fd24230 --- /dev/null +++ b/virtualroot/kitymind-editor/kityminder.editor.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["less/editor.less","less/topTab/topTab.less","less/topTab/idea/undoRedo.less","less/topTab/idea/appendNode.less","less/topTab/idea/arrange.less","less/topTab/idea/operation.less","less/topTab/idea/hyperlink.less","less/topTab/idea/image.less","less/topTab/idea/note.less","less/topTab/idea/noteEditor.less","less/topTab/idea/priority.less","less/topTab/idea/progress.less","less/topTab/idea/resource.less","less/topTab/appearance/templatePanel.less","less/topTab/appearance/themePanel.less","less/topTab/appearance/layout.less","less/topTab/appearance/styleOperator.less","less/topTab/appearance/fontOperator.less","less/topTab/appearance/colorPanel.less","less/topTab/view/expand.less","less/topTab/view/select.less","less/topTab/view/search.less","less/topTab/searchBox.less","less/_tool_group.less","less/_navigator.less"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/virtualroot/kitymind-editor/kityminder.editor.js b/virtualroot/kitymind-editor/kityminder.editor.js new file mode 100644 index 0000000..58632c6 --- /dev/null +++ b/virtualroot/kitymind-editor/kityminder.editor.js @@ -0,0 +1,4550 @@ +/*! + * ==================================================== + * kityminder-editor - v1.0.55 - 2016-05-26 + * https://github.com/fex-team/kityminder-editor + * GitHub: https://github.com/fex-team/kityminder-editor + * Copyright (c) 2016 ; Licensed + * ==================================================== + */ + +(function () { +var _p = { + r: function(index) { + if (_p[index].inited) { + return _p[index].value; + } + if (typeof _p[index].value === "function") { + var module = { + exports: {} + }, returnValue = _p[index].value(null, module.exports, module); + _p[index].inited = true; + _p[index].value = returnValue; + if (returnValue !== undefined) { + return returnValue; + } else { + for (var key in module.exports) { + if (module.exports.hasOwnProperty(key)) { + _p[index].inited = true; + _p[index].value = module.exports; + return module.exports; + } + } + } + } else { + _p[index].inited = true; + return _p[index].value; + } + } +}; + +//src/editor.js +_p[0] = { + value: function(require, exports, module) { + /** + * 运行时 + */ + var runtimes = []; + function assemble(runtime) { + runtimes.push(runtime); + } + function KMEditor(selector) { + this.selector = selector; + for (var i = 0; i < runtimes.length; i++) { + if (typeof runtimes[i] == "function") { + runtimes[i].call(this, this); + } + } + } + KMEditor.assemble = assemble; + assemble(_p.r(7)); + assemble(_p.r(9)); + assemble(_p.r(14)); + assemble(_p.r(18)); + assemble(_p.r(11)); + assemble(_p.r(12)); + assemble(_p.r(5)); + assemble(_p.r(6)); + assemble(_p.r(8)); + assemble(_p.r(15)); + assemble(_p.r(10)); + assemble(_p.r(13)); + assemble(_p.r(16)); + assemble(_p.r(17)); + return module.exports = KMEditor; + } +}; + +//src/expose-editor.js +/** + * @fileOverview + * + * 打包暴露 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[1] = { + value: function(require, exports, module) { + return module.exports = kityminder.Editor = _p.r(0); + } +}; + +//src/hotbox.js +_p[2] = { + value: function(require, exports, module) { + return module.exports = window.HotBox; + } +}; + +//src/lang.js +_p[3] = { + value: function(require, exports, module) {} +}; + +//src/minder.js +_p[4] = { + value: function(require, exports, module) { + return module.exports = window.kityminder.Minder; + } +}; + +//src/runtime/clipboard-mimetype.js +/** + * @Desc: 新增一个用于处理系统ctrl+c ctrl+v等方式导入导出节点的MIMETYPE处理,如系统不支持clipboardEvent或者是FF则不初始化改class + * @Editor: Naixor + * @Date: 2015.9.21 + */ +_p[5] = { + value: function(require, exports, module) { + function MimeType() { + /** + * 私有变量 + */ + var SPLITOR = "\ufeff"; + var MIMETYPE = { + "application/km": "￿" + }; + var SIGN = { + "\ufeff": "SPLITOR", + "￿": "application/km" + }; + /** + * 用于将一段纯文本封装成符合其数据格式的文本 + * @method process private + * @param {MIMETYPE} mimetype 数据格式 + * @param {String} text 原始文本 + * @return {String} 符合该数据格式下的文本 + * @example + * var str = "123"; + * str = process('application/km', str); // 返回的内容再经过MimeType判断会读取出其数据格式为application/km + * process('text/plain', str); // 若接受到一个非纯文本信息,则会将其转换为新的数据格式 + */ + function process(mimetype, text) { + if (!this.isPureText(text)) { + var _mimetype = this.whichMimeType(text); + if (!_mimetype) { + throw new Error("unknow mimetype!"); + } + text = this.getPureText(text); + } + if (mimetype === false) { + return text; + } + return mimetype + SPLITOR + text; + } + /** + * 注册数据类型的标识 + * @method registMimeTypeProtocol public + * @param {String} type 数据类型 + * @param {String} sign 标识 + */ + this.registMimeTypeProtocol = function(type, sign) { + if (sign && SIGN[sign]) { + throw new Error("sing has registed!"); + } + if (type && !!MIMETYPE[type]) { + throw new Error("mimetype has registed!"); + } + SIGN[sign] = type; + MIMETYPE[type] = sign; + }; + /** + * 获取已注册数据类型的协议 + * @method getMimeTypeProtocol public + * @param {String} type 数据类型 + * @param {String} text|undefiend 文本内容或不传入 + * @return {String|Function} + * @example + * text若不传入则直接返回对应数据格式的处理(process)方法 + * 若传入文本则直接调用对应的process方法进行处理,此时返回处理后的内容 + * var m = new MimeType(); + * var kmprocess = m.getMimeTypeProtocol('application/km'); + * kmprocess("123") === m.getMimeTypeProtocol('application/km', "123"); + * + */ + this.getMimeTypeProtocol = function(type, text) { + var mimetype = MIMETYPE[type] || false; + if (text === undefined) { + return process.bind(this, mimetype); + } + return process(mimetype, text); + }; + this.getSpitor = function() { + return SPLITOR; + }; + this.getMimeType = function(sign) { + if (sign !== undefined) { + return SIGN[sign] || null; + } + return MIMETYPE; + }; + } + MimeType.prototype.isPureText = function(text) { + return !~text.indexOf(this.getSpitor()); + }; + MimeType.prototype.getPureText = function(text) { + if (this.isPureText(text)) { + return text; + } + return text.split(this.getSpitor())[1]; + }; + MimeType.prototype.whichMimeType = function(text) { + if (this.isPureText(text)) { + return null; + } + return this.getMimeType(text.split(this.getSpitor())[0]); + }; + function MimeTypeRuntime() { + if (this.minder.supportClipboardEvent && !kity.Browser.gecko) { + this.MimeType = new MimeType(); + } + } + return module.exports = MimeTypeRuntime; + } +}; + +//src/runtime/clipboard.js +/** + * @Desc: 处理editor的clipboard事件,只在支持ClipboardEvent并且不是FF的情况下工作 + * @Editor: Naixor + * @Date: 2015.9.21 + */ +_p[6] = { + value: function(require, exports, module) { + function ClipboardRuntime() { + var minder = this.minder; + var Data = window.kityminder.data; + if (!minder.supportClipboardEvent || kity.Browser.gecko) { + return; + } + var fsm = this.fsm; + var receiver = this.receiver; + var MimeType = this.MimeType; + var kmencode = MimeType.getMimeTypeProtocol("application/km"), decode = Data.getRegisterProtocol("json").decode; + var _selectedNodes = []; + /* + * 增加对多节点赋值粘贴的处理 + */ + function encode(nodes) { + var _nodes = []; + for (var i = 0, l = nodes.length; i < l; i++) { + _nodes.push(minder.exportNode(nodes[i])); + } + return kmencode(Data.getRegisterProtocol("json").encode(_nodes)); + } + var beforeCopy = function(e) { + if (document.activeElement == receiver.element) { + var clipBoardEvent = e; + var state = fsm.state(); + switch (state) { + case "input": + { + break; + } + + case "normal": + { + var nodes = [].concat(minder.getSelectedNodes()); + if (nodes.length) { + // 这里由于被粘贴复制的节点的id信息也都一样,故做此算法 + // 这里有个疑问,使用node.getParent()或者node.parent会离奇导致出现非选中节点被渲染成选中节点,因此使用isAncestorOf,而没有使用自行回溯的方式 + if (nodes.length > 1) { + var targetLevel; + nodes.sort(function(a, b) { + return a.getLevel() - b.getLevel(); + }); + targetLevel = nodes[0].getLevel(); + if (targetLevel !== nodes[nodes.length - 1].getLevel()) { + var plevel, pnode, idx = 0, l = nodes.length, pidx = l - 1; + pnode = nodes[pidx]; + while (pnode.getLevel() !== targetLevel) { + idx = 0; + while (idx < l && nodes[idx].getLevel() === targetLevel) { + if (nodes[idx].isAncestorOf(pnode)) { + nodes.splice(pidx, 1); + break; + } + idx++; + } + pidx--; + pnode = nodes[pidx]; + } + } + } + var str = encode(nodes); + clipBoardEvent.clipboardData.setData("text/plain", str); + } + e.preventDefault(); + break; + } + } + } + }; + var beforeCut = function(e) { + if (document.activeElement == receiver.element) { + if (minder.getStatus() !== "normal") { + e.preventDefault(); + return; + } + var clipBoardEvent = e; + var state = fsm.state(); + switch (state) { + case "input": + { + break; + } + + case "normal": + { + var nodes = minder.getSelectedNodes(); + if (nodes.length) { + clipBoardEvent.clipboardData.setData("text/plain", encode(nodes)); + minder.execCommand("removenode"); + } + e.preventDefault(); + break; + } + } + } + }; + var beforePaste = function(e) { + if (document.activeElement == receiver.element) { + if (minder.getStatus() !== "normal") { + e.preventDefault(); + return; + } + var clipBoardEvent = e; + var state = fsm.state(); + var textData = clipBoardEvent.clipboardData.getData("text/plain"); + switch (state) { + case "input": + { + // input状态下如果格式为application/km则不进行paste操作 + if (!MimeType.isPureText(textData)) { + e.preventDefault(); + return; + } + break; + } + + case "normal": + { + /* + * 针对normal状态下通过对选中节点粘贴导入子节点文本进行单独处理 + */ + var sNodes = minder.getSelectedNodes(); + if (MimeType.whichMimeType(textData) === "application/km") { + var nodes = decode(MimeType.getPureText(textData)); + var _node; + sNodes.forEach(function(node) { + // 由于粘贴逻辑中为了排除子节点重新排序导致逆序,因此复制的时候倒过来 + for (var i = nodes.length - 1; i >= 0; i--) { + _node = minder.createNode(null, node); + minder.importNode(_node, nodes[i]); + _selectedNodes.push(_node); + node.appendChild(_node); + } + }); + minder.select(_selectedNodes, true); + _selectedNodes = []; + minder.refresh(); + } else { + sNodes.forEach(function(node) { + minder.Text2Children(node, textData); + }); + } + e.preventDefault(); + break; + } + } + } + }; + /** + * 由editor的receiver统一处理全部事件,包括clipboard事件 + * @Editor: Naixor + * @Date: 2015.9.24 + */ + document.addEventListener("copy", beforeCopy); + document.addEventListener("cut", beforeCut); + document.addEventListener("paste", beforePaste); + } + return module.exports = ClipboardRuntime; + } +}; + +//src/runtime/container.js +/** + * @fileOverview + * + * 初始化编辑器的容器 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[7] = { + value: function(require, exports, module) { + /** + * 最先执行的 Runtime,初始化编辑器容器 + */ + function ContainerRuntime() { + var container; + if (typeof this.selector == "string") { + container = document.querySelector(this.selector); + } else { + container = this.selector; + } + if (!container) throw new Error("Invalid selector: " + this.selector); + // 这个类名用于给编辑器添加样式 + container.classList.add("km-editor"); + // 暴露容器给其他运行时使用 + this.container = container; + } + return module.exports = ContainerRuntime; + } +}; + +//src/runtime/drag.js +/** + * @fileOverview + * + * 用于拖拽节点时屏蔽键盘事件 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[8] = { + value: function(require, exports, module) { + var Hotbox = _p.r(2); + var Debug = _p.r(19); + var debug = new Debug("drag"); + function DragRuntime() { + var fsm = this.fsm; + var minder = this.minder; + var hotbox = this.hotbox; + var receiver = this.receiver; + var receiverElement = receiver.element; + // setup everything to go + setupFsm(); + // listen the fsm changes, make action. + function setupFsm() { + // when jumped to drag mode, enter + fsm.when("* -> drag", function() {}); + fsm.when("drag -> *", function(exit, enter, reason) { + if (reason == "drag-finish") {} + }); + } + var downX, downY; + var MOUSE_HAS_DOWN = 0; + var MOUSE_HAS_UP = 1; + var BOUND_CHECK = 20; + var flag = MOUSE_HAS_UP; + var maxX, maxY, osx, osy, containerY; + var freeHorizen = false, freeVirtical = false; + var frame; + function move(direction, speed) { + if (!direction) { + freeHorizen = freeVirtical = false; + frame && kity.releaseFrame(frame); + frame = null; + return; + } + if (!frame) { + frame = kity.requestFrame(function(direction, speed, minder) { + return function(frame) { + switch (direction) { + case "left": + minder._viewDragger.move({ + x: -speed, + y: 0 + }, 0); + break; + + case "top": + minder._viewDragger.move({ + x: 0, + y: -speed + }, 0); + break; + + case "right": + minder._viewDragger.move({ + x: speed, + y: 0 + }, 0); + break; + + case "bottom": + minder._viewDragger.move({ + x: 0, + y: speed + }, 0); + break; + + default: + return; + } + frame.next(); + }; + }(direction, speed, minder)); + } + } + minder.on("mousedown", function(e) { + flag = MOUSE_HAS_DOWN; + var rect = minder.getPaper().container.getBoundingClientRect(); + downX = e.originEvent.clientX; + downY = e.originEvent.clientY; + containerY = rect.top; + maxX = rect.width; + maxY = rect.height; + }); + minder.on("mousemove", function(e) { + if (fsm.state() === "drag" && flag == MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > BOUND_CHECK || Math.abs(downY - e.originEvent.clientY) > BOUND_CHECK)) { + osx = e.originEvent.clientX; + osy = e.originEvent.clientY - containerY; + if (osx < BOUND_CHECK) { + move("right", BOUND_CHECK - osx); + } else if (osx > maxX - BOUND_CHECK) { + move("left", BOUND_CHECK + osx - maxX); + } else { + freeHorizen = true; + } + if (osy < BOUND_CHECK) { + move("bottom", osy); + } else if (osy > maxY - BOUND_CHECK) { + move("top", BOUND_CHECK + osy - maxY); + } else { + freeVirtical = true; + } + if (freeHorizen && freeVirtical) { + move(false); + } + } + if (fsm.state() !== "drag" && flag === MOUSE_HAS_DOWN && minder.getSelectedNode() && (Math.abs(downX - e.originEvent.clientX) > BOUND_CHECK || Math.abs(downY - e.originEvent.clientY) > BOUND_CHECK)) { + if (fsm.state() === "hotbox") { + hotbox.active(Hotbox.STATE_IDLE); + } + return fsm.jump("drag", "user-drag"); + } + }); + window.addEventListener("mouseup", function() { + flag = MOUSE_HAS_UP; + if (fsm.state() === "drag") { + move(false); + return fsm.jump("normal", "drag-finish"); + } + }, false); + } + return module.exports = DragRuntime; + } +}; + +//src/runtime/fsm.js +/** + * @fileOverview + * + * 编辑器状态机 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[9] = { + value: function(require, exports, module) { + var Debug = _p.r(19); + var debug = new Debug("fsm"); + function handlerConditionMatch(condition, when, exit, enter) { + if (condition.when != when) return false; + if (condition.enter != "*" && condition.enter != enter) return false; + if (condition.exit != "*" && condition.exit != exit) return; + return true; + } + function FSM(defaultState) { + var currentState = defaultState; + var BEFORE_ARROW = " - "; + var AFTER_ARROW = " -> "; + var handlers = []; + /** + * 状态跳转 + * + * 会通知所有的状态跳转监视器 + * + * @param {string} newState 新状态名称 + * @param {any} reason 跳转的原因,可以作为参数传递给跳转监视器 + */ + this.jump = function(newState, reason) { + if (!reason) throw new Error("Please tell fsm the reason to jump"); + var oldState = currentState; + var notify = [ oldState, newState ].concat([].slice.call(arguments, 1)); + var i, handler; + // 跳转前 + for (i = 0; i < handlers.length; i++) { + handler = handlers[i]; + if (handlerConditionMatch(handler.condition, "before", oldState, newState)) { + if (handler.apply(null, notify)) return; + } + } + currentState = newState; + debug.log("[{0}] {1} -> {2}", reason, oldState, newState); + // 跳转后 + for (i = 0; i < handlers.length; i++) { + handler = handlers[i]; + if (handlerConditionMatch(handler.condition, "after", oldState, newState)) { + handler.apply(null, notify); + } + } + return currentState; + }; + /** + * 返回当前状态 + * @return {string} + */ + this.state = function() { + return currentState; + }; + /** + * 添加状态跳转监视器 + * + * @param {string} condition + * 监视的时机 + * "* => *" (默认) + * + * @param {Function} handler + * 监视函数,当状态跳转的时候,会接收三个参数 + * * from - 跳转前的状态 + * * to - 跳转后的状态 + * * reason - 跳转的原因 + */ + this.when = function(condition, handler) { + if (arguments.length == 1) { + handler = condition; + condition = "* -> *"; + } + var when, resolved, exit, enter; + resolved = condition.split(BEFORE_ARROW); + if (resolved.length == 2) { + when = "before"; + } else { + resolved = condition.split(AFTER_ARROW); + if (resolved.length == 2) { + when = "after"; + } + } + if (!when) throw new Error("Illegal fsm condition: " + condition); + exit = resolved[0]; + enter = resolved[1]; + handler.condition = { + when: when, + exit: exit, + enter: enter + }; + handlers.push(handler); + }; + } + function FSMRumtime() { + this.fsm = new FSM("normal"); + } + return module.exports = FSMRumtime; + } +}; + +//src/runtime/history.js +/** + * @fileOverview + * + * 历史管理 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[10] = { + value: function(require, exports, module) { + var jsonDiff = _p.r(22); + function HistoryRuntime() { + var minder = this.minder; + var hotbox = this.hotbox; + var MAX_HISTORY = 100; + var lastSnap; + var patchLock; + var undoDiffs; + var redoDiffs; + function reset() { + undoDiffs = []; + redoDiffs = []; + lastSnap = minder.exportJson(); + } + function makeUndoDiff() { + var headSnap = minder.exportJson(); + var diff = jsonDiff(headSnap, lastSnap); + if (diff.length) { + undoDiffs.push(diff); + while (undoDiffs.length > MAX_HISTORY) { + undoDiffs.shift(); + } + lastSnap = headSnap; + return true; + } + } + function makeRedoDiff() { + var revertSnap = minder.exportJson(); + redoDiffs.push(jsonDiff(revertSnap, lastSnap)); + lastSnap = revertSnap; + } + function undo() { + patchLock = true; + var undoDiff = undoDiffs.pop(); + if (undoDiff) { + minder.applyPatches(undoDiff); + makeRedoDiff(); + } + patchLock = false; + } + function redo() { + patchLock = true; + var redoDiff = redoDiffs.pop(); + if (redoDiff) { + minder.applyPatches(redoDiff); + makeUndoDiff(); + } + patchLock = false; + } + function changed() { + if (patchLock) return; + if (makeUndoDiff()) redoDiffs = []; + } + function hasUndo() { + return !!undoDiffs.length; + } + function hasRedo() { + return !!redoDiffs.length; + } + function updateSelection(e) { + if (!patchLock) return; + var patch = e.patch; + switch (patch.express) { + case "node.add": + minder.select(patch.node.getChild(patch.index), true); + break; + + case "node.remove": + case "data.replace": + case "data.remove": + case "data.add": + minder.select(patch.node, true); + break; + } + } + this.history = { + reset: reset, + undo: undo, + redo: redo, + hasUndo: hasUndo, + hasRedo: hasRedo + }; + reset(); + minder.on("contentchange", changed); + minder.on("import", reset); + minder.on("patch", updateSelection); + var main = hotbox.state("main"); + main.button({ + position: "top", + label: "撤销", + key: "Ctrl + Z", + enable: hasUndo, + action: undo, + next: "idle" + }); + main.button({ + position: "top", + label: "重做", + key: "Ctrl + Y", + enable: hasRedo, + action: redo, + next: "idle" + }); + } + window.diff = jsonDiff; + return module.exports = HistoryRuntime; + } +}; + +//src/runtime/hotbox.js +/** + * @fileOverview + * + * 热盒 Runtime + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[11] = { + value: function(require, exports, module) { + var Hotbox = _p.r(2); + function HotboxRuntime() { + var fsm = this.fsm; + var minder = this.minder; + var receiver = this.receiver; + var container = this.container; + var hotbox = new Hotbox(container); + hotbox.setParentFSM(fsm); + fsm.when("normal -> hotbox", function(exit, enter, reason) { + var node = minder.getSelectedNode(); + var position; + if (node) { + var box = node.getRenderBox(); + position = { + x: box.cx, + y: box.cy + }; + } + hotbox.active("main", position); + }); + fsm.when("normal -> normal", function(exit, enter, reason, e) { + if (reason == "shortcut-handle") { + var handleResult = hotbox.dispatch(e); + if (handleResult) { + e.preventDefault(); + } else { + minder.dispatchKeyEvent(e); + } + } + }); + fsm.when("modal -> normal", function(exit, enter, reason, e) { + if (reason == "import-text-finish") { + receiver.element.focus(); + } + }); + this.hotbox = hotbox; + } + return module.exports = HotboxRuntime; + } +}; + +//src/runtime/input.js +/** + * @fileOverview + * + * 文本输入支持 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[12] = { + value: function(require, exports, module) { + _p.r(21); + var Debug = _p.r(19); + var debug = new Debug("input"); + function InputRuntime() { + var fsm = this.fsm; + var minder = this.minder; + var hotbox = this.hotbox; + var receiver = this.receiver; + var receiverElement = receiver.element; + var isGecko = window.kity.Browser.gecko; + // setup everything to go + setupReciverElement(); + setupFsm(); + setupHotbox(); + // expose editText() + this.editText = editText; + // listen the fsm changes, make action. + function setupFsm() { + // when jumped to input mode, enter + fsm.when("* -> input", enterInputMode); + // when exited, commit or exit depends on the exit reason + fsm.when("input -> *", function(exit, enter, reason) { + switch (reason) { + case "input-cancel": + return exitInputMode(); + + case "input-commit": + default: + return commitInputResult(); + } + }); + // lost focus to commit + receiver.onblur(function(e) { + if (fsm.state() == "input") { + fsm.jump("normal", "input-commit"); + } + }); + minder.on("beforemousedown", function() { + if (fsm.state() == "input") { + fsm.jump("normal", "input-commit"); + } + }); + minder.on("dblclick", function() { + if (minder.getSelectedNode()) { + editText(); + } + }); + } + // let the receiver follow the current selected node position + function setupReciverElement() { + if (debug.flaged) { + receiverElement.classList.add("debug"); + } + receiverElement.onmousedown = function(e) { + e.stopPropagation(); + }; + minder.on("layoutallfinish viewchange viewchanged selectionchange", function(e) { + // viewchange event is too frequenced, lazy it + if (e.type == "viewchange" && fsm.state() != "input") return; + updatePosition(); + }); + updatePosition(); + } + // edit entrance in hotbox + function setupHotbox() { + hotbox.state("main").button({ + position: "center", + label: "编辑", + key: "F2", + enable: function() { + return minder.queryCommandState("text") != -1; + }, + action: editText + }); + } + /** + * 增加对字体的鉴别,以保证用户在编辑状态ctrl/cmd + b/i所触发的加粗斜体与显示一致 + * @editor Naixor + * @Date 2015-12-2 + */ + // edit for the selected node + function editText() { + var node = minder.getSelectedNode(); + if (!node) { + return; + } + var textContainer = receiverElement; + receiverElement.innerText = ""; + if (node.getData("font-weight") === "bold") { + var b = document.createElement("b"); + textContainer.appendChild(b); + textContainer = b; + } + if (node.getData("font-style") === "italic") { + var i = document.createElement("i"); + textContainer.appendChild(i); + textContainer = i; + } + textContainer.innerText = minder.queryCommandValue("text"); + if (isGecko) { + receiver.fixFFCaretDisappeared(); + } + fsm.jump("input", "input-request"); + receiver.selectAll(); + } + /** + * 增加对字体的鉴别,以保证用户在编辑状态ctrl/cmd + b/i所触发的加粗斜体与显示一致 + * @editor Naixor + * @Date 2015-12-2 + */ + function enterInputMode() { + var node = minder.getSelectedNode(); + if (node) { + var fontSize = node.getData("font-size") || node.getStyle("font-size"); + receiverElement.style.fontSize = fontSize + "px"; + receiverElement.style.minWidth = 0; + receiverElement.style.minWidth = receiverElement.clientWidth + "px"; + receiverElement.style.fontWeight = node.getData("font-weight") || ""; + receiverElement.style.fontStyle = node.getData("font-style") || ""; + receiverElement.classList.add("input"); + receiverElement.focus(); + } + } + /** + * 按照文本提交操作处理 + * @Desc: 从其他节点复制文字到另一个节点时部分浏览器(chrome)会自动包裹一个span标签,这样试用一下逻辑出来的就不是text节点二是span节点因此导致undefined的情况发生 + * @Warning: 下方代码使用[].slice.call来将HTMLDomCollection处理成为Array,ie8及以下会有问题 + * @Editor: Naixor + * @Date: 2015.9.16 + */ + function commitInputText(textNodes) { + var text = ""; + var TAB_CHAR = " ", ENTER_CHAR = "\n", STR_CHECK = /\S/, SPACE_CHAR = " ", // 针对FF,SG,BD,LB,IE等浏览器下SPACE的charCode存在为32和160的情况做处理 + SPACE_CHAR_REGEXP = new RegExp("( |" + String.fromCharCode(160) + ")"), BR = document.createElement("br"); + var isBold = false, isItalic = false; + for (var str, _divChildNodes, space_l, space_num, tab_num, i = 0, l = textNodes.length; i < l; i++) { + str = textNodes[i]; + switch (Object.prototype.toString.call(str)) { + // 正常情况处理 + case "[object HTMLBRElement]": + { + text += ENTER_CHAR; + break; + } + + case "[object Text]": + { + // SG下会莫名其妙的加上 影响后续判断,干掉! + /** + * FF下的wholeText会导致如下问题: + * |123| -> 在一个节点中输入一段字符,此时TextNode为[#Text 123] + * 提交并重新编辑,在后面追加几个字符 + * |123abc| -> 此时123为一个TextNode为[#Text 123, #Text abc],但是对这两个任意取值wholeText均为全部内容123abc + * 上述BUG仅存在在FF中,故将wholeText更改为textContent + */ + str = str.textContent.replace(" ", " "); + if (!STR_CHECK.test(str)) { + space_l = str.length; + while (space_l--) { + if (SPACE_CHAR_REGEXP.test(str[space_l])) { + text += SPACE_CHAR; + } else if (str[space_l] === TAB_CHAR) { + text += TAB_CHAR; + } + } + } else { + text += str; + } + break; + } + + // ctrl + b/i 会给字体加上/标签来实现黑体和斜体 + case "[object HTMLElement]": + { + switch (str.nodeName) { + case "B": + { + isBold = true; + break; + } + + case "I": + { + isItalic = true; + break; + } + + default: + {} + } + [].splice.apply(textNodes, [ i, 1 ].concat([].slice.call(str.childNodes))); + l = textNodes.length; + i--; + break; + } + + // 被增加span标签的情况会被处理成正常情况并会推交给上面处理 + case "[object HTMLSpanElement]": + { + [].splice.apply(textNodes, [ i, 1 ].concat([].slice.call(str.childNodes))); + l = textNodes.length; + i--; + break; + } + + // 若标签为image标签,则判断是否为合法url,是将其加载进来 + case "[object HTMLImageElement]": + { + if (str.src) { + if (/http(|s):\/\//.test(str.src)) { + minder.execCommand("Image", str.src, str.alt); + } else {} + } + break; + } + + // 被增加div标签的情况会被处理成正常情况并会推交给上面处理 + case "[object HTMLDivElement]": + { + _divChildNodes = []; + for (var di = 0, l = str.childNodes.length; di < l; di++) { + _divChildNodes.push(str.childNodes[di]); + } + _divChildNodes.push(BR); + [].splice.apply(textNodes, [ i, 1 ].concat(_divChildNodes)); + l = textNodes.length; + i--; + break; + } + + default: + { + if (str && str.childNodes.length) { + _divChildNodes = []; + for (var di = 0, l = str.childNodes.length; di < l; di++) { + _divChildNodes.push(str.childNodes[di]); + } + _divChildNodes.push(BR); + [].splice.apply(textNodes, [ i, 1 ].concat(_divChildNodes)); + l = textNodes.length; + i--; + } else { + if (str && str.textContent !== undefined) { + text += str.textContent; + } else { + text += ""; + } + } + } + } + } + text = text.replace(/^\n*|\n*$/g, ""); + text = text.replace(new RegExp("(\n|\r|\n\r)( |" + String.fromCharCode(160) + "){4}", "g"), "$1 "); + minder.getSelectedNode().setText(text); + if (isBold) { + minder.queryCommandState("bold") || minder.execCommand("bold"); + } else { + minder.queryCommandState("bold") && minder.execCommand("bold"); + } + if (isItalic) { + minder.queryCommandState("italic") || minder.execCommand("italic"); + } else { + minder.queryCommandState("italic") && minder.execCommand("italic"); + } + exitInputMode(); + return text; + } + /** + * 判断节点的文本信息是否是 + * @Desc: 从其他节点复制文字到另一个节点时部分浏览器(chrome)会自动包裹一个span标签,这样使用以下逻辑出来的就不是text节点二是span节点因此导致undefined的情况发生 + * @Notice: 此处逻辑应该拆分到 kityminder-core/core/data中去,单独增加一个对某个节点importJson的事件 + * @Editor: Naixor + * @Date: 2015.9.16 + */ + function commitInputNode(node, text) { + try { + minder.decodeData("text", text).then(function(json) { + function importText(node, json, minder) { + var data = json.data; + node.setText(data.text || ""); + var childrenTreeData = json.children || []; + for (var i = 0; i < childrenTreeData.length; i++) { + var childNode = minder.createNode(null, node); + importText(childNode, childrenTreeData[i], minder); + } + return node; + } + importText(node, json, minder); + minder.fire("contentchange"); + minder.getRoot().renderTree(); + minder.layout(300); + }); + } catch (e) { + minder.fire("contentchange"); + minder.getRoot().renderTree(); + // 无法被转换成脑图节点则不处理 + if (e.toString() !== "Error: Invalid local format") { + throw e; + } + } + } + function commitInputResult() { + /** + * @Desc: 进行如下处理: + * 根据用户的输入判断是否生成新的节点 + * fix #83 https://github.com/fex-team/kityminder-editor/issues/83 + * @Editor: Naixor + * @Date: 2015.9.16 + */ + var textNodes = [].slice.call(receiverElement.childNodes); + /** + * @Desc: 增加setTimeout的原因:ie下receiverElement.innerHTML=""会导致后 + * 面commitInputText中使用textContent报错,不要问我什么原因! + * @Editor: Naixor + * @Date: 2015.12.14 + */ + setTimeout(function() { + // 解决过大内容导致SVG窜位问题 + receiverElement.innerHTML = ""; + }, 0); + var node = minder.getSelectedNode(); + textNodes = commitInputText(textNodes); + commitInputNode(node, textNodes); + if (node.type == "root") { + var rootText = minder.getRoot().getText(); + minder.fire("initChangeRoot", { + text: rootText + }); + } + } + function exitInputMode() { + receiverElement.classList.remove("input"); + receiver.selectAll(); + } + function updatePosition() { + var planed = updatePosition; + var focusNode = minder.getSelectedNode(); + if (!focusNode) return; + if (!planed.timer) { + planed.timer = setTimeout(function() { + var box = focusNode.getRenderBox("TextRenderer"); + receiverElement.style.left = Math.round(box.x) + "px"; + receiverElement.style.top = (debug.flaged ? Math.round(box.bottom + 30) : Math.round(box.y)) + "px"; + //receiverElement.focus(); + planed.timer = 0; + }); + } + } + } + return module.exports = InputRuntime; + } +}; + +//src/runtime/jumping.js +/** + * @fileOverview + * + * 根据按键控制状态机的跳转 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[13] = { + value: function(require, exports, module) { + var Hotbox = _p.r(2); + // Nice: http://unixpapa.com/js/key.html + function isIntendToInput(e) { + if (e.ctrlKey || e.metaKey || e.altKey) return false; + // a-zA-Z + if (e.keyCode >= 65 && e.keyCode <= 90) return true; + // 0-9 以及其上面的符号 + if (e.keyCode >= 48 && e.keyCode <= 57) return true; + // 小键盘区域 (除回车外) + if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true; + // 小键盘区域 (除回车外) + // @yinheli from pull request + if (e.keyCode != 108 && e.keyCode >= 96 && e.keyCode <= 111) return true; + // 输入法 + if (e.keyCode == 229 || e.keyCode === 0) return true; + return false; + } + /** + * @Desc: 下方使用receiver.enable()和receiver.disable()通过 + * 修改div contenteditable属性的hack来解决开启热核后依然无法屏蔽浏览器输入的bug; + * 特别: win下FF对于此种情况必须要先blur在focus才能解决,但是由于这样做会导致用户 + * 输入法状态丢失,因此对FF暂不做处理 + * @Editor: Naixor + * @Date: 2015.09.14 + */ + function JumpingRuntime() { + var fsm = this.fsm; + var minder = this.minder; + var receiver = this.receiver; + var container = this.container; + var receiverElement = receiver.element; + var hotbox = this.hotbox; + // normal -> * + receiver.listen("normal", function(e) { + // 为了防止处理进入edit模式而丢失处理的首字母,此时receiver必须为enable + receiver.enable(); + // normal -> hotbox + if (e.is("Space")) { + e.preventDefault(); + // safari下Space触发hotbox,然而这时Space已在receiver上留下作案痕迹,因此抹掉 + if (kity.Browser.safari) { + receiverElement.innerHTML = ""; + } + return fsm.jump("hotbox", "space-trigger"); + } + /** + * check + * @editor Naixor + * @Date 2015-12-2 + */ + switch (e.type) { + case "keydown": + { + if (minder.getSelectedNode()) { + if (isIntendToInput(e)) { + return fsm.jump("input", "user-input"); + } + } else { + receiverElement.innerHTML = ""; + } + // normal -> normal shortcut + fsm.jump("normal", "shortcut-handle", e); + break; + } + + case "keyup": + { + break; + } + + default: + {} + } + }); + // hotbox -> normal + receiver.listen("hotbox", function(e) { + receiver.disable(); + e.preventDefault(); + var handleResult = hotbox.dispatch(e); + if (hotbox.state() == Hotbox.STATE_IDLE && fsm.state() == "hotbox") { + return fsm.jump("normal", "hotbox-idle"); + } + }); + // input => normal + receiver.listen("input", function(e) { + receiver.enable(); + if (e.type == "keydown") { + if (e.is("Enter")) { + e.preventDefault(); + return fsm.jump("normal", "input-commit"); + } + if (e.is("Esc")) { + e.preventDefault(); + return fsm.jump("normal", "input-cancel"); + } + if (e.is("Tab") || e.is("Shift + Tab")) { + e.preventDefault(); + } + } else if (e.type == "keyup" && e.is("Esc")) { + e.preventDefault(); + return fsm.jump("normal", "input-cancel"); + } + }); + ////////////////////////////////////////////// + /// 右键呼出热盒 + /// 判断的标准是:按下的位置和结束的位置一致 + ////////////////////////////////////////////// + var downX, downY; + var MOUSE_RB = 2; + // 右键 + container.addEventListener("mousedown", function(e) { + if (e.button == MOUSE_RB) { + e.preventDefault(); + } + if (fsm.state() == "hotbox") { + hotbox.active(Hotbox.STATE_IDLE); + fsm.jump("normal", "blur"); + } else if (fsm.state() == "normal" && e.button == MOUSE_RB) { + downX = e.clientX; + downY = e.clientY; + } + }, false); + container.addEventListener("mousewheel", function(e) { + if (fsm.state() == "hotbox") { + hotbox.active(Hotbox.STATE_IDLE); + fsm.jump("normal", "mousemove-blur"); + } + }, false); + container.addEventListener("contextmenu", function(e) { + e.preventDefault(); + }); + container.addEventListener("mouseup", function(e) { + if (fsm.state() != "normal") { + return; + } + if (e.button != MOUSE_RB || e.clientX != downX || e.clientY != downY) { + return; + } + if (!minder.getSelectedNode()) { + return; + } + fsm.jump("hotbox", "content-menu"); + }, false); + // 阻止热盒事件冒泡,在热盒正确执行前导致热盒关闭 + hotbox.$element.addEventListener("mousedown", function(e) { + e.stopPropagation(); + }); + } + return module.exports = JumpingRuntime; + } +}; + +//src/runtime/minder.js +/** + * @fileOverview + * + * 脑图示例运行时 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[14] = { + value: function(require, exports, module) { + var Minder = _p.r(4); + function MinderRuntime() { + // 不使用 kityminder 的按键处理,由 ReceiverRuntime 统一处理 + var minder = new Minder({ + enableKeyReceiver: false, + enableAnimation: true + }); + // 渲染,初始化 + minder.renderTo(this.selector); + minder.setTheme(null); + minder.select(minder.getRoot(), true); + minder.execCommand("text", "中心主题"); + // 导出给其它 Runtime 使用 + this.minder = minder; + } + return module.exports = MinderRuntime; + } +}; + +//src/runtime/node.js +_p[15] = { + value: function(require, exports, module) { + function NodeRuntime() { + var runtime = this; + var minder = this.minder; + var hotbox = this.hotbox; + var fsm = this.fsm; + var main = hotbox.state("main"); + var buttons = [ "前移:Alt+Up:ArrangeUp", "下级:Tab|Insert:AppendChildNode", "同级:Enter:AppendSiblingNode", "后移:Alt+Down:ArrangeDown", "删除:Delete|Backspace:RemoveNode", "上级:Shift+Tab|Shift+Insert:AppendParentNode" ]; + var AppendLock = 0; + buttons.forEach(function(button) { + var parts = button.split(":"); + var label = parts.shift(); + var key = parts.shift(); + var command = parts.shift(); + main.button({ + position: "ring", + label: label, + key: key, + action: function() { + if (command.indexOf("Append") === 0) { + AppendLock++; + minder.execCommand(command, "分支主题"); + // provide in input runtime + function afterAppend() { + if (!--AppendLock) { + runtime.editText(); + } + minder.off("layoutallfinish", afterAppend); + } + minder.on("layoutallfinish", afterAppend); + } else { + minder.execCommand(command); + fsm.jump("normal", "command-executed"); + } + }, + enable: function() { + return minder.queryCommandState(command) != -1; + } + }); + }); + main.button({ + position: "bottom", + label: "导入节点", + key: "Alt + V", + enable: function() { + var selectedNodes = minder.getSelectedNodes(); + return selectedNodes.length == 1; + }, + action: importNodeData, + next: "idle" + }); + main.button({ + position: "bottom", + label: "导出节点", + key: "Alt + C", + enable: function() { + var selectedNodes = minder.getSelectedNodes(); + return selectedNodes.length == 1; + }, + action: exportNodeData, + next: "idle" + }); + function importNodeData() { + minder.fire("importNodeData"); + } + function exportNodeData() { + minder.fire("exportNodeData"); + } + } + return module.exports = NodeRuntime; + } +}; + +//src/runtime/priority.js +_p[16] = { + value: function(require, exports, module) { + function PriorityRuntime() { + var minder = this.minder; + var hotbox = this.hotbox; + var main = hotbox.state("main"); + main.button({ + position: "top", + label: "优先级", + key: "P", + next: "priority", + enable: function() { + return minder.queryCommandState("priority") != -1; + } + }); + var priority = hotbox.state("priority"); + "123456789".replace(/./g, function(p) { + priority.button({ + position: "ring", + label: "P" + p, + key: p, + action: function() { + minder.execCommand("Priority", p); + } + }); + }); + priority.button({ + position: "center", + label: "移除", + key: "Del", + action: function() { + minder.execCommand("Priority", 0); + } + }); + priority.button({ + position: "top", + label: "返回", + key: "esc", + next: "back" + }); + } + return module.exports = PriorityRuntime; + } +}; + +//src/runtime/progress.js +_p[17] = { + value: function(require, exports, module) { + function ProgressRuntime() { + var minder = this.minder; + var hotbox = this.hotbox; + var main = hotbox.state("main"); + main.button({ + position: "top", + label: "进度", + key: "G", + next: "progress", + enable: function() { + return minder.queryCommandState("progress") != -1; + } + }); + var progress = hotbox.state("progress"); + "012345678".replace(/./g, function(p) { + progress.button({ + position: "ring", + label: "G" + p, + key: p, + action: function() { + minder.execCommand("Progress", parseInt(p) + 1); + } + }); + }); + progress.button({ + position: "center", + label: "移除", + key: "Del", + action: function() { + minder.execCommand("Progress", 0); + } + }); + progress.button({ + position: "top", + label: "返回", + key: "esc", + next: "back" + }); + } + return module.exports = ProgressRuntime; + } +}; + +//src/runtime/receiver.js +/** + * @fileOverview + * + * 键盘事件接收/分发器 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[18] = { + value: function(require, exports, module) { + var key = _p.r(23); + var hotbox = _p.r(2); + function ReceiverRuntime() { + var fsm = this.fsm; + var minder = this.minder; + var me = this; + // 接收事件的 div + var element = document.createElement("div"); + element.contentEditable = true; + /** + * @Desc: 增加tabindex属性使得element的contenteditable不管是trur还是false都能有focus和blur事件 + * @Editor: Naixor + * @Date: 2015.09.14 + */ + element.setAttribute("tabindex", -1); + element.classList.add("receiver"); + element.onkeydown = element.onkeypress = element.onkeyup = dispatchKeyEvent; + this.container.appendChild(element); + // receiver 对象 + var receiver = { + element: element, + selectAll: function() { + // 保证有被选中的 + if (!element.innerHTML) element.innerHTML = " "; + var range = document.createRange(); + var selection = window.getSelection(); + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + element.focus(); + }, + /** + * @Desc: 增加enable和disable方法用于解决热核态的输入法屏蔽问题 + * @Editor: Naixor + * @Date: 2015.09.14 + */ + enable: function() { + element.setAttribute("contenteditable", true); + }, + disable: function() { + element.setAttribute("contenteditable", false); + }, + /** + * @Desc: hack FF下div contenteditable的光标丢失BUG + * @Editor: Naixor + * @Date: 2015.10.15 + */ + fixFFCaretDisappeared: function() { + element.removeAttribute("contenteditable"); + element.setAttribute("contenteditable", "true"); + element.blur(); + element.focus(); + }, + /** + * 以此事件代替通过mouse事件来判断receiver丢失焦点的事件 + * @editor Naixor + * @Date 2015-12-2 + */ + onblur: function(handler) { + element.onblur = handler; + } + }; + receiver.selectAll(); + minder.on("beforemousedown", receiver.selectAll); + minder.on("receiverfocus", receiver.selectAll); + minder.on("readonly", function() { + // 屏蔽minder的事件接受,删除receiver和hotbox + minder.disable(); + editor.receiver.element.parentElement.removeChild(editor.receiver.element); + editor.hotbox.$container.removeChild(editor.hotbox.$element); + }); + // 侦听器,接收到的事件会派发给所有侦听器 + var listeners = []; + // 侦听指定状态下的事件,如果不传 state,侦听所有状态 + receiver.listen = function(state, listener) { + if (arguments.length == 1) { + listener = state; + state = "*"; + } + listener.notifyState = state; + listeners.push(listener); + }; + function dispatchKeyEvent(e) { + e.is = function(keyExpression) { + var subs = keyExpression.split("|"); + for (var i = 0; i < subs.length; i++) { + if (key.is(this, subs[i])) return true; + } + return false; + }; + var listener, jumpState; + for (var i = 0; i < listeners.length; i++) { + listener = listeners[i]; + // 忽略不在侦听状态的侦听器 + if (listener.notifyState != "*" && listener.notifyState != fsm.state()) { + continue; + } + /** + * + * 对于所有的侦听器,只允许一种处理方式:跳转状态。 + * 如果侦听器确定要跳转,则返回要跳转的状态。 + * 每个事件只允许一个侦听器进行状态跳转 + * 跳转动作由侦听器自行完成(因为可能需要在跳转时传递 reason),返回跳转结果即可。 + * 比如: + * + * ```js + * receiver.listen('normal', function(e) { + * if (isSomeReasonForJumpState(e)) { + * return fsm.jump('newstate', e); + * } + * }); + * ``` + */ + if (listener.call(null, e)) { + return; + } + } + } + this.receiver = receiver; + } + return module.exports = ReceiverRuntime; + } +}; + +//src/tool/debug.js +/** + * @fileOverview + * + * 支持各种调试后门 + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[19] = { + value: function(require, exports, module) { + var format = _p.r(20); + function noop() {} + function stringHash(str) { + var hash = 0; + for (var i = 0; i < str.length; i++) { + hash += str.charCodeAt(i); + } + return hash; + } + /* global console */ + function Debug(flag) { + var debugMode = this.flaged = window.location.search.indexOf(flag) != -1; + if (debugMode) { + var h = stringHash(flag) % 360; + var flagStyle = format("background: hsl({0}, 50%, 80%); " + "color: hsl({0}, 100%, 30%); " + "padding: 2px 3px; " + "margin: 1px 3px 0 0;" + "border-radius: 2px;", h); + var textStyle = "background: none; color: black;"; + this.log = function() { + var output = format.apply(null, arguments); + console.log(format("%c{0}%c{1}", flag, output), flagStyle, textStyle); + }; + } else { + this.log = noop; + } + } + return module.exports = Debug; + } +}; + +//src/tool/format.js +_p[20] = { + value: function(require, exports, module) { + function format(template, args) { + if (typeof args != "object") { + args = [].slice.call(arguments, 1); + } + return String(template).replace(/\{(\w+)\}/gi, function(match, $key) { + return args[$key] || $key; + }); + } + return module.exports = format; + } +}; + +//src/tool/innertext.js +/** + * @fileOverview + * + * innerText polyfill + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[21] = { + value: function(require, exports, module) { + if (!("innerText" in document.createElement("a")) && "getSelection" in window) { + HTMLElement.prototype.__defineGetter__("innerText", function() { + var selection = window.getSelection(), ranges = [], str, i; + // Save existing selections. + for (i = 0; i < selection.rangeCount; i++) { + ranges[i] = selection.getRangeAt(i); + } + // Deselect everything. + selection.removeAllRanges(); + // Select `el` and all child nodes. + // 'this' is the element .innerText got called on + selection.selectAllChildren(this); + // Get the string representation of the selected nodes. + str = selection.toString(); + // Deselect everything. Again. + selection.removeAllRanges(); + // Restore all formerly existing selections. + for (i = 0; i < ranges.length; i++) { + selection.addRange(ranges[i]); + } + // Oh look, this is what we wanted. + // String representation of the element, close to as rendered. + return str; + }); + HTMLElement.prototype.__defineSetter__("innerText", function(text) { + /** + * @Desc: 解决FireFox节点内容删除后text为null,出现报错的问题 + * @Editor: Naixor + * @Date: 2015.9.16 + */ + this.innerHTML = (text || "").replace(//g, ">").replace(/\n/g, "
"); + }); + } + } +}; + +//src/tool/jsondiff.js +/** + * @fileOverview + * + * + * + * @author: techird + * @copyright: Baidu FEX, 2014 + */ +_p[22] = { + value: function(require, exports, module) { + /*! + * https://github.com/Starcounter-Jack/Fast-JSON-Patch + * json-patch-duplex.js 0.5.0 + * (c) 2013 Joachim Wester + * MIT license + */ + var _objectKeys = function() { + if (Object.keys) return Object.keys; + return function(o) { + var keys = []; + for (var i in o) { + if (o.hasOwnProperty(i)) { + keys.push(i); + } + } + return keys; + }; + }(); + function escapePathComponent(str) { + if (str.indexOf("/") === -1 && str.indexOf("~") === -1) return str; + return str.replace(/~/g, "~0").replace(/\//g, "~1"); + } + function deepClone(obj) { + if (typeof obj === "object") { + return JSON.parse(JSON.stringify(obj)); + } else { + return obj; + } + } + // Dirty check if obj is different from mirror, generate patches and update mirror + function _generate(mirror, obj, patches, path) { + var newKeys = _objectKeys(obj); + var oldKeys = _objectKeys(mirror); + var changed = false; + var deleted = false; + for (var t = oldKeys.length - 1; t >= 0; t--) { + var key = oldKeys[t]; + var oldVal = mirror[key]; + if (obj.hasOwnProperty(key)) { + var newVal = obj[key]; + if (typeof oldVal == "object" && oldVal != null && typeof newVal == "object" && newVal != null) { + _generate(oldVal, newVal, patches, path + "/" + escapePathComponent(key)); + } else { + if (oldVal != newVal) { + changed = true; + patches.push({ + op: "replace", + path: path + "/" + escapePathComponent(key), + value: deepClone(newVal) + }); + } + } + } else { + patches.push({ + op: "remove", + path: path + "/" + escapePathComponent(key) + }); + deleted = true; + } + } + if (!deleted && newKeys.length == oldKeys.length) { + return; + } + for (var t = 0; t < newKeys.length; t++) { + var key = newKeys[t]; + if (!mirror.hasOwnProperty(key)) { + patches.push({ + op: "add", + path: path + "/" + escapePathComponent(key), + value: deepClone(obj[key]) + }); + } + } + } + function compare(tree1, tree2) { + var patches = []; + _generate(tree1, tree2, patches, ""); + return patches; + } + return module.exports = compare; + } +}; + +//src/tool/key.js +_p[23] = { + value: function(require, exports, module) { + var keymap = _p.r(24); + var CTRL_MASK = 4096; + var ALT_MASK = 8192; + var SHIFT_MASK = 16384; + function hash(unknown) { + if (typeof unknown == "string") { + return hashKeyExpression(unknown); + } + return hashKeyEvent(unknown); + } + function is(a, b) { + return a && b && hash(a) == hash(b); + } + exports.hash = hash; + exports.is = is; + function hashKeyEvent(keyEvent) { + var hashCode = 0; + if (keyEvent.ctrlKey || keyEvent.metaKey) { + hashCode |= CTRL_MASK; + } + if (keyEvent.altKey) { + hashCode |= ALT_MASK; + } + if (keyEvent.shiftKey) { + hashCode |= SHIFT_MASK; + } + // Shift, Control, Alt KeyCode ignored. + if ([ 16, 17, 18, 91 ].indexOf(keyEvent.keyCode) === -1) { + /** + * 解决浏览器输入法状态下对keyDown的keyCode判断不准确的问题,使用keyIdentifier, + * 可以解决chrome和safari下的各种问题,其他浏览器依旧有问题,然而那并不影响我们对特 + * 需判断的按键进行判断(比如Space在safari输入法态下就是229,其他的就不是) + * @editor Naixor + * @Date 2015-12-2 + */ + if (keyEvent.keyCode === 229 && keyEvent.keyIdentifier) { + return hashCode |= parseInt(keyEvent.keyIdentifier.substr(2), 16); + } + hashCode |= keyEvent.keyCode; + } + return hashCode; + } + function hashKeyExpression(keyExpression) { + var hashCode = 0; + keyExpression.toLowerCase().split(/\s*\+\s*/).forEach(function(name) { + switch (name) { + case "ctrl": + case "cmd": + hashCode |= CTRL_MASK; + break; + + case "alt": + hashCode |= ALT_MASK; + break; + + case "shift": + hashCode |= SHIFT_MASK; + break; + + default: + hashCode |= keymap[name]; + } + }); + return hashCode; + } + } +}; + +//src/tool/keymap.js +_p[24] = { + value: function(require, exports, module) { + var keymap = { + Shift: 16, + Control: 17, + Alt: 18, + CapsLock: 20, + BackSpace: 8, + Tab: 9, + Enter: 13, + Esc: 27, + Space: 32, + PageUp: 33, + PageDown: 34, + End: 35, + Home: 36, + Insert: 45, + Left: 37, + Up: 38, + Right: 39, + Down: 40, + Direction: { + 37: 1, + 38: 1, + 39: 1, + 40: 1 + }, + Del: 46, + NumLock: 144, + Cmd: 91, + CmdFF: 224, + F1: 112, + F2: 113, + F3: 114, + F4: 115, + F5: 116, + F6: 117, + F7: 118, + F8: 119, + F9: 120, + F10: 121, + F11: 122, + F12: 123, + "`": 192, + "=": 187, + "-": 189, + "/": 191, + ".": 190 + }; + // 小写适配 + for (var key in keymap) { + if (keymap.hasOwnProperty(key)) { + keymap[key.toLowerCase()] = keymap[key]; + } + } + var aKeyCode = 65; + var aCharCode = "a".charCodeAt(0); + // letters + "abcdefghijklmnopqrstuvwxyz".split("").forEach(function(letter) { + keymap[letter] = aKeyCode + (letter.charCodeAt(0) - aCharCode); + }); + // numbers + var n = 9; + do { + keymap[n.toString()] = n + 48; + } while (--n); + module.exports = keymap; + } +}; + +var moduleMapping = { + "expose-editor": 1 +}; + +function use(name) { + _p.r([ moduleMapping[name] ]); +} +angular.module('kityminderEditor', [ + 'ui.bootstrap', + 'ui.codemirror', + 'ui.colorpicker' +]) + .config(["$sceDelegateProvider", function($sceDelegateProvider) { + $sceDelegateProvider.resourceUrlWhitelist([ + // Allow same origin resource loads. + 'self', + // Allow loading from our assets domain. Notice the difference between * and **. + 'http://agroup.baidu.com:8910/**', + 'http://cq01-fe-rdtest01.vm.baidu.com:8910/**', + 'http://agroup.baidu.com:8911/**' + ]); + }]); +angular.module('kityminderEditor').run(['$templateCache', function($templateCache) { + 'use strict'; + + $templateCache.put('ui/directive/appendNode/appendNode.html', + "
{{ 'appendchildnode' | lang:'ui/command' }}
{{ 'appendparentnode' | lang:'ui/command' }}
{{ 'appendsiblingnode' | lang:'ui/command' }}
" + ); + + + $templateCache.put('ui/directive/arrange/arrange.html', + "
{{ 'arrangeup' | lang:'ui/command' }}
{{ 'arrangedown' | lang:'ui/command' }}
" + ); + + + $templateCache.put('ui/directive/colorPanel/colorPanel.html', + "
" + ); + + + $templateCache.put('ui/directive/expandLevel/expandLevel.html', + "
" + ); + + + $templateCache.put('ui/directive/fontOperator/fontOperator.html', + "" + ); + + + $templateCache.put('ui/directive/hyperLink/hyperLink.html', + "
" + ); + + + $templateCache.put('ui/directive/imageBtn/imageBtn.html', + "
" + ); + + + $templateCache.put('ui/directive/kityminderEditor/kityminderEditor.html', + "
" + ); + + + $templateCache.put('ui/directive/kityminderViewer/kityminderViewer.html', + "
" + ); + + + $templateCache.put('ui/directive/layout/layout.html', + "" + ); + + + $templateCache.put('ui/directive/navigator/navigator.html', + "
" + ); + + + $templateCache.put('ui/directive/noteBtn/noteBtn.html', + "
" + ); + + + $templateCache.put('ui/directive/noteEditor/noteEditor.html', + "

请选择节点编辑备注

" + ); + + + $templateCache.put('ui/directive/notePreviewer/notePreviewer.html', + "
" + ); + + + $templateCache.put('ui/directive/operation/operation.html', + "
{{ 'editnode' | lang:'ui/command' }}
{{ 'removenode' | lang:'ui/command' }}
" + ); + + + $templateCache.put('ui/directive/priorityEditor/priorityEditor.html', + "
" + ); + + + $templateCache.put('ui/directive/progressEditor/progressEditor.html', + "
" + ); + + + $templateCache.put('ui/directive/resourceEditor/resourceEditor.html', + "
" + ); + + + $templateCache.put('ui/directive/searchBox/searchBox.html', + "
" + ); + + + $templateCache.put('ui/directive/searchBtn/searchBtn.html', + "
" + ); + + + $templateCache.put('ui/directive/selectAll/selectAll.html', + "
" + ); + + + $templateCache.put('ui/directive/styleOperator/styleOperator.html', + "" + ); + + + $templateCache.put('ui/directive/templateList/templateList.html', + "
" + ); + + + $templateCache.put('ui/directive/themeList/themeList.html', + "" + ); + + + $templateCache.put('ui/directive/topTab/topTab.html', + "" + ); + + + $templateCache.put('ui/directive/undoRedo/undoRedo.html', + "
" + ); + + + $templateCache.put('ui/dialog/hyperlink/hyperlink.tpl.html', + "

链接

" + ); + + + $templateCache.put('ui/dialog/imExportNode/imExportNode.tpl.html', + "

{{ title }}

" + ); + + + $templateCache.put('ui/dialog/image/image.tpl.html', + "

图片

  • \"{{ {{ image.title }}
\"{{
" + ); + +}]); + +angular.module('kityminderEditor').service('commandBinder', function() { + return { + bind: function(minder, command, scope) { + + minder.on('interactchange', function() { + scope.commandDisabled = minder.queryCommandState(command) === -1; + scope.commandValue = minder.queryCommandValue(command); + scope.$apply(); + }); + } + }; +}); +angular.module('kityminderEditor') + .service('config', function() { + + return { + _default: { + + // 右侧面板最小宽度 + ctrlPanelMin: 250, + + // 右侧面板宽度 + ctrlPanelWidth: parseInt(window.localStorage.__dev_minder_ctrlPanelWidth) || 250, + + // 分割线宽度 + dividerWidth: 3, + + // 默认语言 + defaultLang: 'zh-cn', + + // 放大缩小比例 + zoom: [10, 20, 30, 50, 80, 100, 120, 150, 200] + }, + getConfig: function(key) { + return key == undefined ? this._default : (this._default[key] || null); + }, + setConfig: function(obj) { + this._default = obj; + } + } + }); +angular.module('kityminderEditor') + .service('lang.zh-cn', function() { + return { + 'zh-cn': { + 'template': { + 'default': '思维导图', + 'tianpan': '天盘图', + 'structure': '组织结构图', + 'filetree': '目录组织图', + 'right': '逻辑结构图', + 'fish-bone': '鱼骨头图' + }, + 'theme': { + 'classic': '脑图经典', + 'classic-compact': '紧凑经典', + 'snow': '温柔冷光', + 'snow-compact': '紧凑冷光', + 'fish': '鱼骨图', + 'wire': '线框', + 'fresh-red': '清新红', + 'fresh-soil': '泥土黄', + 'fresh-green': '文艺绿', + 'fresh-blue': '天空蓝', + 'fresh-purple': '浪漫紫', + 'fresh-pink': '脑残粉', + 'fresh-red-compat': '紧凑红', + 'fresh-soil-compat': '紧凑黄', + 'fresh-green-compat': '紧凑绿', + 'fresh-blue-compat': '紧凑蓝', + 'fresh-purple-compat': '紧凑紫', + 'fresh-pink-compat': '紧凑粉', + 'tianpan':'经典天盘', + 'tianpan-compact': '紧凑天盘' + }, + 'maintopic': '中心主题', + 'topic': '分支主题', + 'panels': { + 'history': '历史', + 'template': '模板', + 'theme': '皮肤', + 'layout': '布局', + 'style': '样式', + 'font': '文字', + 'color': '颜色', + 'background': '背景', + 'insert': '插入', + 'arrange': '调整', + 'nodeop': '当前', + 'priority': '优先级', + 'progress': '进度', + 'resource': '资源', + 'note': '备注', + 'attachment': '附件', + 'word': '文字' + }, + 'error_message': { + 'title': '哎呀,脑图出错了', + + 'err_load': '加载脑图失败', + 'err_save': '保存脑图失败', + 'err_network': '网络错误', + 'err_doc_resolve': '文档解析失败', + 'err_unknown': '发生了奇怪的错误', + 'err_localfile_read': '文件读取错误', + 'err_download': '文件下载失败', + 'err_remove_share': '取消分享失败', + 'err_create_share': '分享失败', + 'err_mkdir': '目录创建失败', + 'err_ls': '读取目录失败', + 'err_share_data': '加载分享内容出错', + 'err_share_sync_fail': '分享内容同步失败', + 'err_move_file': '文件移动失败', + 'err_rename': '重命名失败', + + 'unknownreason': '可能是外星人篡改了代码...', + 'pcs_code': { + 3: "不支持此接口", + 4: "没有权限执行此操作", + 5: "IP未授权", + 110: "用户会话已过期,请重新登录", + 31001: "数据库查询错误", + 31002: "数据库连接错误", + 31003: "数据库返回空结果", + 31021: "网络错误", + 31022: "暂时无法连接服务器", + 31023: "输入参数错误", + 31024: "app id为空", + 31025: "后端存储错误", + 31041: "用户的cookie不是合法的百度cookie", + 31042: "用户未登陆", + 31043: "用户未激活", + 31044: "用户未授权", + 31045: "用户不存在", + 31046: "用户已经存在", + 31061: "文件已经存在", + 31062: "文件名非法", + 31063: "文件父目录不存在", + 31064: "无权访问此文件", + 31065: "目录已满", + 31066: "文件不存在", + 31067: "文件处理出错", + 31068: "文件创建失败", + 31069: "文件拷贝失败", + 31070: "文件删除失败", + 31071: "不能读取文件元信息", + 31072: "文件移动失败", + 31073: "文件重命名失败", + 31079: "未找到文件MD5,请使用上传API上传整个文件。", + 31081: "superfile创建失败", + 31082: "superfile 块列表为空", + 31083: "superfile 更新失败", + 31101: "tag系统内部错误", + 31102: "tag参数错误", + 31103: "tag系统错误", + 31110: "未授权设置此目录配额", + 31111: "配额管理只支持两级目录", + 31112: "超出配额", + 31113: "配额不能超出目录祖先的配额", + 31114: "配额不能比子目录配额小", + 31141: "请求缩略图服务失败", + 31201: "签名错误", + 31202: "文件不存在", + 31203: "设置acl失败", + 31204: "请求acl验证失败", + 31205: "获取acl失败", + 31206: "acl不存在", + 31207: "bucket已存在", + 31208: "用户请求错误", + 31209: "服务器错误", + 31210: "服务器不支持", + 31211: "禁止访问", + 31212: "服务不可用", + 31213: "重试出错", + 31214: "上传文件data失败", + 31215: "上传文件meta失败", + 31216: "下载文件data失败", + 31217: "下载文件meta失败", + 31218: "容量超出限额", + 31219: "请求数超出限额", + 31220: "流量超出限额", + 31298: "服务器返回值KEY非法", + 31299: "服务器返回值KEY不存在" + } + }, + 'ui': { + 'shared_file_title': '[分享的] {0} (只读)', + 'load_share_for_edit': '正在加载分享的文件...', + 'share_sync_success': '分享内容已同步', + 'recycle_clear_confirm': '确认清空回收站么?清空后的文件无法恢复。', + + 'fullscreen_exit_hint': '按 Esc 或 F11 退出全屏', + + 'error_detail': '详细信息', + 'copy_and_feedback': '复制并反馈', + 'move_file_confirm': '确定把 "{0}" 移动到 "{1}" 吗?', + 'rename': '重命名', + 'rename_success': '{0} 重命名成功', + 'move_success': '{0} 移动成功到 {1}', + + 'command': { + 'appendsiblingnode': '插入同级主题', + 'appendparentnode': '插入上级主题', + 'appendchildnode': '插入下级主题', + 'removenode': '删除', + 'editnode': '编辑', + 'arrangeup': '上移', + 'arrangedown': '下移', + 'resetlayout': '整理布局', + 'expandtoleaf': '展开全部节点', + 'expandtolevel1': '展开到一级节点', + 'expandtolevel2': '展开到二级节点', + 'expandtolevel3': '展开到三级节点', + 'expandtolevel4': '展开到四级节点', + 'expandtolevel5': '展开到五级节点', + 'expandtolevel6': '展开到六级节点', + 'fullscreen': '全屏', + 'outline': '大纲' + }, + + 'search':'搜索', + + 'expandtoleaf': '展开', + + 'back': '返回', + + 'undo': '撤销 (Ctrl + Z)', + 'redo': '重做 (Ctrl + Y)', + + 'tabs': { + 'idea': '思路', + 'appearence': '外观', + 'view': '视图' + }, + + 'quickvisit': { + 'new': '新建 (Ctrl + Alt + N)', + 'save': '保存 (Ctrl + S)', + 'share': '分享 (Ctrl + Alt + S)', + 'feedback': '反馈问题(F1)', + 'editshare': '编辑' + }, + + 'menu': { + + 'mainmenutext': '百度脑图', // 主菜单按钮文本 + + 'newtab': '新建', + 'opentab': '打开', + 'savetab': '保存', + 'sharetab': '分享', + 'preferencetab': '设置', + 'helptab': '帮助', + 'feedbacktab': '反馈', + 'recenttab': '最近使用', + 'netdisktab': '百度云存储', + 'localtab': '本地文件', + 'drafttab': '草稿箱', + 'downloadtab': '导出到本地', + 'createsharetab': '当前脑图', + 'managesharetab': '已分享', + + 'newheader': '新建脑图', + 'openheader': '打开', + 'saveheader': '保存到', + 'draftheader': '草稿箱', + 'shareheader': '分享我的脑图', + 'downloadheader': '导出到指定格式', + 'preferenceheader': '偏好设置', + 'helpheader': '帮助', + 'feedbackheader': '反馈' + }, + + 'mydocument': '我的文档', + 'emptydir': '目录为空!', + 'pickfile': '选择文件...', + 'acceptfile': '支持的格式:{0}', + 'dropfile': '或将文件拖至此处', + 'unsupportedfile': '不支持的文件格式', + 'untitleddoc': '未命名文档', + 'overrideconfirm': '{0} 已存在,确认覆盖吗?', + 'checklogin': '检查登录状态中...', + 'loggingin': '正在登录...', + 'recent': '最近打开', + 'clearrecent': '清空', + 'clearrecentconfirm': '确认清空最近文档列表?', + 'cleardraft': '清空', + 'cleardraftconfirm': '确认清空草稿箱?', + + 'none_share': '不分享', + 'public_share': '公开分享', + 'password_share': '私密分享', + 'email_share': '邮件邀请', + 'url_share': '脑图 URL 地址:', + 'sns_share': '社交网络分享:', + 'sns_share_text': '“{0}” - 我用百度脑图制作的思维导图,快看看吧!(地址:{1})', + 'none_share_description': '不分享当前脑图', + 'public_share_description': '创建任何人可见的分享', + 'share_button_text': '创建', + 'password_share_description': '创建需要密码才可见的分享', + 'email_share_description': '创建指定人可见的分享,您还可以允许他们编辑', + 'ondev': '敬请期待!', + 'create_share_failed': '分享失败:{0}', + 'remove_share_failed': '删除失败:{1}', + 'copy': '复制', + 'copied': '已复制', + 'shared_tip': '当前脑图被 {0} 分享,你可以修改之后保存到自己的网盘上或再次分享', + 'current_share': '当前脑图', + 'manage_share': '我的分享', + 'share_remove_action': '不分享该脑图', + 'share_view_action': '打开分享地址', + 'share_edit_action': '编辑分享的文件', + + 'login': '登录', + 'logout': '注销', + 'switchuser': '切换账户', + 'userinfo': '个人信息', + 'gotonetdisk': '我的网盘', + 'requirelogin': '请 后使用', + 'saveas': '保存为', + 'filename': '文件名', + 'fileformat': '保存格式', + 'save': '保存', + 'mkdir': '新建目录', + 'recycle': '回收站', + 'newdir': '未命名目录', + + 'bold': '加粗', + 'italic': '斜体', + 'forecolor': '字体颜色', + 'fontfamily': '字体', + 'fontsize': '字号', + 'layoutstyle': '主题', + 'node': '节点操作', + 'saveto': '另存为', + 'hand': '允许拖拽', + 'camera': '定位根节点', + 'zoom-in': '放大(Ctrl+)', + 'zoom-out': '缩小(Ctrl-)', + 'markers': '标签', + 'resource': '资源', + 'help': '帮助', + 'preference': '偏好设置', + 'expandnode': '展开到叶子', + 'collapsenode': '收起到一级节点', + 'template': '模板', + 'theme': '皮肤', + 'clearstyle': '清除样式', + 'copystyle': '复制样式', + 'pastestyle': '粘贴样式', + 'appendsiblingnode': '同级主题', + 'appendchildnode': '下级主题', + 'arrangeup': '前调', + 'arrangedown': '后调', + 'editnode': '编辑', + 'removenode': '移除', + 'priority': '优先级', + 'progress': { + 'p1': '未开始', + 'p2': '完成 1/8', + 'p3': '完成 1/4', + 'p4': '完成 3/8', + 'p5': '完成一半', + 'p6': '完成 5/8', + 'p7': '完成 3/4', + 'p8': '完成 7/8', + 'p9': '已完成', + 'p0': '清除进度' + }, + 'link': '链接', + 'image': '图片', + 'note': '备注', + 'insertlink': '插入链接', + 'insertimage': '插入图片', + 'insertnote': '插入备注', + 'removelink': '移除已有连接', + 'removeimage': '移除已有图片', + 'removenote': '移除已有备注', + 'resetlayout': '整理', + + 'justnow': '刚刚', + 'minutesago': '{0} 分钟前', + 'hoursago': '{0} 小时前', + 'yesterday': '昨天', + 'daysago': '{0} 天前', + 'longago': '很久之前', + + 'redirect': '您正在打开连接 {0},百度脑图不能保证连接的安全性,是否要继续?', + 'navigator': '导航器', + + 'unsavedcontent': '当前文件还没有保存到网盘:\n\n{0}\n\n虽然未保存的数据会缓存在草稿箱,但是清除浏览器缓存会导致草稿箱清除。', + + 'shortcuts': '快捷键', + 'contact': '联系与反馈', + 'email': '邮件组', + 'qq_group': 'QQ 群', + 'github_issue': 'Github', + 'baidu_tieba': '贴吧', + + 'clipboardunsupported': '您的浏览器不支持剪贴板,请使用快捷键复制', + + 'load_success': '{0} 加载成功', + 'save_success': '{0} 已保存于 {1}', + 'autosave_success': '{0} 已自动保存于 {1}', + + 'selectall': '全选', + 'selectrevert': '反选', + 'selectsiblings': '选择兄弟节点', + 'selectlevel': '选择同级节点', + 'selectpath': '选择路径', + 'selecttree': '选择子树' + }, + 'popupcolor': { + 'clearColor': '清空颜色', + 'standardColor': '标准颜色', + 'themeColor': '主题颜色' + }, + 'dialogs': { + 'markers': { + 'static': { + 'lang_input_text': '文本内容:', + 'lang_input_url': '链接地址:', + 'lang_input_title': '标题:', + 'lang_input_target': '是否在新窗口:' + }, + 'priority': '优先级', + 'none': '无', + 'progress': { + 'title': '进度', + 'notdone': '未完成', + 'done1': '完成 1/8', + 'done2': '完成 1/4', + 'done3': '完成 3/8', + 'done4': '完成 1/2', + 'done5': '完成 5/8', + 'done6': '完成 3/4', + 'done7': '完成 7/8', + 'done': '已完成' + } + }, + 'help': { + + }, + 'hyperlink': {}, + 'image': {}, + 'resource': {} + }, + 'hyperlink': { + 'hyperlink': '链接...', + 'unhyperlink': '移除链接' + }, + 'image': { + 'image': '图片...', + 'removeimage': '移除图片' + }, + 'marker': { + 'marker': '进度/优先级...' + }, + 'resource': { + 'resource': '资源...' + } + } + } + }); +/** + * @fileOverview + * + * UI 状态的 LocalStorage 的存取文件,未来可能在离线编辑的时候升级 + * + * @author: zhangbobell + * @email : zhangbobell@163.com + * + * @copyright: Baidu FEX, 2015 + */ +angular.module('kityminderEditor') + .service('memory', function() { + + function isQuotaExceeded(e) { + var quotaExceeded = false; + if (e) { + if (e.code) { + switch (e.code) { + case 22: + quotaExceeded = true; + break; + case 1014: + // Firefox + if (e.name === 'NS_ERROR_DOM_QUOTA_REACHED') { + quotaExceeded = true; + } + break; + } + } else if (e.number === -2147024882) { + // Internet Explorer 8 + quotaExceeded = true; + } + } + return quotaExceeded; + } + + return { + get: function(key) { + var value = window.localStorage.getItem(key); + return null || JSON.parse(value); + }, + + set: function(key, value) { + try { + window.localStorage.setItem(key, JSON.stringify(value)); + return true; + } catch(e) { + if (isQuotaExceeded(e)) { + return false; + } + } + }, + remove: function(key) { + var value = window.localStorage.getItem(key); + window.localStorage.removeItem(key); + return value; + }, + clear: function() { + window.localStorage.clear(); + } + } +}); +angular.module('kityminderEditor') + .service('minder.service', function() { + + var callbackQueue = []; + + function registerEvent(callback) { + callbackQueue.push(callback); + } + + function executeCallback() { + callbackQueue.forEach(function(ele) { + ele.apply(this, arguments); + }) + } + + return { + registerEvent: registerEvent, + executeCallback: executeCallback + } + }); +angular.module('kityminderEditor') + .service('resourceService', ['$document', function($document) { + var openScope = null; + + this.open = function( dropdownScope ) { + if ( !openScope ) { + $document.bind('click', closeDropdown); + $document.bind('keydown', escapeKeyBind); + } + + if ( openScope && openScope !== dropdownScope ) { + openScope.resourceListOpen = false; + } + + openScope = dropdownScope; + }; + + this.close = function( dropdownScope ) { + if ( openScope === dropdownScope ) { + openScope = null; + $document.unbind('click', closeDropdown); + $document.unbind('keydown', escapeKeyBind); + } + }; + + var closeDropdown = function( evt ) { + // This method may still be called during the same mouse event that + // unbound this event handler. So check openScope before proceeding. + //console.log(evt, openScope); + if (!openScope) { return; } + + var toggleElement = openScope.getToggleElement(); + if ( evt && toggleElement && toggleElement[0].contains(evt.target) ) { + return; + } + + openScope.$apply(function() { + console.log('to close the resourcelist'); + openScope.resourceListOpen = false; + }); + }; + + var escapeKeyBind = function( evt ) { + if ( evt.which === 27 ) { + openScope.focusToggleElement(); + closeDropdown(); + } + }; +}]) +angular.module('kityminderEditor').service('revokeDialog', ['$modal', 'minder.service', function($modal, minderService) { + + minderService.registerEvent(function() { + + // 触发导入节点或导出节点对话框 + var minder = window.minder; + var editor = window.editor; + var parentFSM = editor.hotbox.getParentFSM(); + + + minder.on('importNodeData', function() { + parentFSM.jump('modal', 'import-text-modal'); + + var importModal = $modal.open({ + animation: true, + templateUrl: 'ui/dialog/imExportNode/imExportNode.tpl.html', + controller: 'imExportNode.ctrl', + size: 'md', + resolve: { + title: function() { + return '导入节点'; + }, + defaultValue: function() { + return ''; + }, + type: function() { + return 'import'; + } + } + }); + + importModal.result.then(function(result) { + try{ + minder.Text2Children(minder.getSelectedNode(), result); + } catch(e) { + alert(e); + } + parentFSM.jump('normal', 'import-text-finish'); + editor.receiver.selectAll(); + }, function() { + parentFSM.jump('normal', 'import-text-finish'); + editor.receiver.selectAll(); + }); + }); + + minder.on('exportNodeData', function() { + parentFSM.jump('modal', 'export-text-modal'); + + var exportModal = $modal.open({ + animation: true, + templateUrl: 'ui/dialog/imExportNode/imExportNode.tpl.html', + controller: 'imExportNode.ctrl', + size: 'md', + resolve: { + title: function() { + return '导出节点'; + }, + defaultValue: function() { + var selectedNode = minder.getSelectedNode(), + Node2Text = window.kityminder.data.getRegisterProtocol('text').Node2Text; + + return Node2Text(selectedNode); + }, + type: function() { + return 'export'; + } + } + }); + + exportModal.result.then(function(result) { + parentFSM.jump('normal', 'export-text-finish'); + editor.receiver.selectAll(); + }, function() { + parentFSM.jump('normal', 'export-text-finish'); + editor.receiver.selectAll(); + }); + }); + + }); + + return {}; +}]); +angular.module('kityminderEditor') + .service('valueTransfer', function() { + return {}; + }); +angular.module('kityminderEditor') + .filter('commandState', function() { + return function(minder, command) { + return minder.queryCommandState(command); + } + }) + .filter('commandValue', function() { + return function(minder, command) { + return minder.queryCommandValue(command); + } + }); + + +angular.module('kityminderEditor') + .filter('lang', ['config', 'lang.zh-cn', function(config, lang) { + return function(text, block) { + var defaultLang = config.getConfig('defaultLang'); + + if (lang[defaultLang] == undefined) { + return '未发现对应语言包,请检查 lang.xxx.service.js!'; + } else { + + var dict = lang[defaultLang]; + block.split('/').forEach(function(ele, idx) { + dict = dict[ele]; + }); + + return dict[text] || null; + } + + }; + }]); +angular.module('kityminderEditor') + .controller('hyperlink.ctrl', ["$scope", "$modalInstance", "link", function ($scope, $modalInstance, link) { + + $scope.R_URL = /(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/; + + $scope.url = link.url || ''; + $scope.title = link.title || ''; + + setTimeout(function() { + var $linkUrl = $('#link-url'); + $linkUrl.focus(); + $linkUrl[0].setSelectionRange(0, $scope.url.length); + }, 30); + + $scope.shortCut = function(e) { + e.stopPropagation(); + + if (e.keyCode == 13) { + $scope.ok(); + } else if (e.keyCode == 27) { + $scope.cancel(); + } + }; + + $scope.ok = function () { + if($scope.R_URL.test($scope.url)) { + $modalInstance.close({ + url: $scope.url, + title: $scope.title + }); + } else { + $scope.urlPassed = false; + + var $linkUrl = $('#link-url'); + $linkUrl.focus(); + $linkUrl[0].setSelectionRange(0, $scope.url.length); + } + editor.receiver.selectAll(); + }; + + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + editor.receiver.selectAll(); + }; + + }]); +angular.module('kityminderEditor') + .controller('imExportNode.ctrl', ["$scope", "$modalInstance", "title", "defaultValue", "type", function ($scope, $modalInstance, title, defaultValue, type) { + + $scope.title = title; + + $scope.value = defaultValue; + + $scope.type = type; + + $scope.ok = function () { + if ($scope.value == '') { + return; + } + $modalInstance.close($scope.value); + editor.receiver.selectAll(); + }; + + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + editor.receiver.selectAll(); + }; + + setTimeout(function() { + $('.single-input').focus(); + + $('.single-input')[0].setSelectionRange(0, defaultValue.length); + + }, 30); + + $scope.shortCut = function(e) { + e.stopPropagation(); + + //if (e.keyCode == 13 && e.shiftKey == false) { + // $scope.ok(); + //} + + if (e.keyCode == 27) { + $scope.cancel(); + } + + // tab 键屏蔽默认事件 和 backspace 键屏蔽默认事件 + if (e.keyCode == 8 && type == 'export') { + e.preventDefault(); + } + + if (e.keyCode == 9) { + e.preventDefault(); + var $textarea = e.target; + var pos = getCursortPosition($textarea); + var str = $textarea.value; + $textarea.value = str.substr(0, pos) + '\t' + str.substr(pos); + setCaretPosition($textarea, pos + 1); + } + + }; + + /* + * 获取 textarea 的光标位置 + * @Author: Naixor + * @date: 2015.09.23 + * */ + function getCursortPosition (ctrl) { + var CaretPos = 0; // IE Support + if (document.selection) { + ctrl.focus (); + var Sel = document.selection.createRange (); + Sel.moveStart ('character', -ctrl.value.length); + CaretPos = Sel.text.length; + } + // Firefox support + else if (ctrl.selectionStart || ctrl.selectionStart == '0') { + CaretPos = ctrl.selectionStart; + } + return (CaretPos); + } + + /* + * 设置 textarea 的光标位置 + * @Author: Naixor + * @date: 2015.09.23 + * */ + function setCaretPosition(ctrl, pos){ + if(ctrl.setSelectionRange) { + ctrl.focus(); + ctrl.setSelectionRange(pos,pos); + } else if (ctrl.createTextRange) { + var range = ctrl.createTextRange(); + range.collapse(true); + range.moveEnd('character', pos); + range.moveStart('character', pos); + range.select(); + } + } + + }]); +angular.module('kityminderEditor') + .controller('image.ctrl', ['$http', '$scope', '$modalInstance', 'image', function($http, $scope, $modalInstance, image) { + + + $scope.data = { + list: [], + url: image.url || '', + title: image.title || '', + R_URL: /^https?\:\/\/(\w+\.)+\w+/ + }; + + setTimeout(function() { + var $imageUrl = $('#image-url'); + $imageUrl.focus(); + $imageUrl[0].setSelectionRange(0, $scope.data.url.length); + }, 300); + + + // 搜索图片按钮点击事件 + $scope.searchImage = function() { + $scope.list = []; + + getImageData() + .success(function(json) { + if(json && json.data) { + for(var i = 0; i < json.data.length; i++) { + if(json.data[i].objURL) { + $scope.list.push({ + title: json.data[i].fromPageTitleEnc, + src: json.data[i].middleURL, + url: json.data[i].middleURL + }); + } + } + } + }) + .error(function() { + + }); + }; + + // 选择图片的鼠标点击事件 + $scope.selectImage = function($event) { + var targetItem = $('#img-item'+ (this.$index)); + var targetImg = $('#img-'+ (this.$index)); + + targetItem.siblings('.selected').removeClass('selected'); + targetItem.addClass('selected'); + + $scope.data.url = targetImg.attr('src'); + $scope.data.title = targetImg.attr('alt'); + }; + + $scope.shortCut = function(e) { + e.stopPropagation(); + + if (e.keyCode == 13) { + $scope.ok(); + } else if (e.keyCode == 27) { + $scope.cancel(); + } + }; + + $scope.ok = function () { + if($scope.data.R_URL.test($scope.data.url)) { + $modalInstance.close({ + url: $scope.data.url, + title: $scope.data.title + }); + } else { + $scope.urlPassed = false; + + var $imageUrl = $('#image-url'); + $imageUrl.focus(); + $imageUrl[0].setSelectionRange(0, $scope.data.url.length); + } + + editor.receiver.selectAll(); + }; + + $scope.cancel = function () { + $modalInstance.dismiss('cancel'); + editor.receiver.selectAll(); + }; + + function getImageData(){ + var key = $scope.data.searchKeyword2; + var currentTime = new Date(); + var url = 'http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&queryWord='+ key +'&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word='+ key +'&face=0&istype=2&nc=1&pn=60&rn=60&gsm=3c&'+ currentTime.getTime() +'=&callback=JSON_CALLBACK'; + + return $http.jsonp(url); + } + }]); +angular.module('kityminderEditor') + .directive('appendNode', ['commandBinder', function(commandBinder) { + return { + restrict: 'E', + templateUrl: 'ui/directive/appendNode/appendNode.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + + commandBinder.bind(minder, 'appendchildnode', $scope) + + $scope.execCommand = function(command) { + minder.execCommand(command, '分支主题'); + editText(); + }; + + function editText() { + var receiverElement = editor.receiver.element; + var fsm = editor.fsm; + var receiver = editor.receiver; + + receiverElement.innerText = minder.queryCommandValue('text'); + fsm.jump('input', 'input-request'); + receiver.selectAll(); + } + } + } + }]); +angular.module('kityminderEditor') + .directive('arrange', ['commandBinder', function(commandBinder) { + return { + restrict: 'E', + templateUrl: 'ui/directive/arrange/arrange.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + + //commandBinder.bind(minder, 'priority', $scope); + } + } + }]); +angular.module('kityminderEditor') + .directive('colorPanel', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/colorPanel/colorPanel.html', + scope: { + minder: '=' + }, + replace: true, + link: function(scope) { + + var minder = scope.minder; + var currentTheme = minder.getThemeItems(); + + scope.$on('colorPicked', function(event, color) { + event.stopPropagation(); + scope.bgColor = color; + minder.execCommand('background', color); + }); + + scope.setDefaultBg = function() { + var currentNode = minder.getSelectedNode(); + var bgColor = minder.getNodeStyle(currentNode, 'background'); + + // 有可能是 kity 的颜色类 + return typeof bgColor === 'object' ? bgColor.toHEX() : bgColor; + }; + + scope.bgColor = scope.setDefaultBg() || '#fff'; + + } + } + }); +angular.module('kityminderEditor') + .directive('expandLevel', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/expandLevel/expandLevel.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + + $scope.levels = [1, 2, 3, 4, 5, 6]; + } + } + }); +angular.module('kityminderEditor') + .directive('fontOperator', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/fontOperator/fontOperator.html', + scope: { + minder: '=' + }, + replace: true, + link: function(scope) { + var minder = scope.minder; + var currentTheme = minder.getThemeItems(); + + scope.fontSizeList = [10, 12, 16, 18, 24, 32, 48]; + scope.fontFamilyList = [{ + name: '宋体', + val: '宋体,SimSun' + }, { + name: '微软雅黑', + val: '微软雅黑,Microsoft YaHei' + }, { + name: '楷体', + val: '楷体,楷体_GB2312,SimKai' + }, { + name: '黑体', + val: '黑体, SimHei' + }, { + name: '隶书', + val: '隶书, SimLi' + }, { + name: 'Andale Mono', + val: 'andale mono' + }, { + name: 'Arial', + val: 'arial,helvetica,sans-serif' + }, { + name: 'arialBlack', + val: 'arial black,avant garde' + }, { + name: 'Comic Sans Ms', + val: 'comic sans ms' + }, { + name: 'Impact', + val: 'impact,chicago' + }, { + name: 'Times New Roman', + val: 'times new roman' + }, { + name: 'Sans-Serif', + val: 'sans-serif' + }]; + + scope.$on('colorPicked', function(event, color) { + event.stopPropagation(); + + scope.foreColor = color; + minder.execCommand('forecolor', color); + }); + + scope.setDefaultColor = function() { + var currentNode = minder.getSelectedNode(); + var fontColor = minder.getNodeStyle(currentNode, 'color'); + + // 有可能是 kity 的颜色类 + return typeof fontColor === 'object' ? fontColor.toHEX() : fontColor; + }; + + scope.foreColor = scope.setDefaultColor() || '#000'; + + scope.getFontfamilyName = function(val) { + var fontName = ''; + scope.fontFamilyList.forEach(function(ele, idx, arr) { + if (ele.val === val) { + fontName = ele.name; + return ''; + } + }); + + return fontName; + } + } + } + }); +angular.module('kityminderEditor') + .directive('hyperLink', ['$modal', function($modal) { + return { + restrict: 'E', + templateUrl: 'ui/directive/hyperLink/hyperLink.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + + $scope.addHyperlink = function() { + + var link = minder.queryCommandValue('HyperLink'); + + var hyperlinkModal = $modal.open({ + animation: true, + templateUrl: 'ui/dialog/hyperlink/hyperlink.tpl.html', + controller: 'hyperlink.ctrl', + size: 'md', + resolve: { + link: function() { + return link; + } + } + }); + + hyperlinkModal.result.then(function(result) { + minder.execCommand('HyperLink', result.url, result.title || ''); + }); + } + } + } + }]); +angular.module('kityminderEditor') + .directive('imageBtn', ['$modal', function($modal) { + return { + restrict: 'E', + templateUrl: 'ui/directive/imageBtn/imageBtn.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + + $scope.addImage = function() { + + var image = minder.queryCommandValue('image'); + + var imageModal = $modal.open({ + animation: true, + templateUrl: 'ui/dialog/image/image.tpl.html', + controller: 'image.ctrl', + size: 'md', + resolve: { + image: function() { + return image; + } + } + }); + + imageModal.result.then(function(result) { + minder.execCommand('image', result.url, result.title || ''); + }); + } + } + } + }]); +angular.module('kityminderEditor') + .directive('kityminderEditor', ['config', 'minder.service', 'revokeDialog', function(config, minderService, revokeDialog) { + return { + restrict: 'EA', + templateUrl: 'ui/directive/kityminderEditor/kityminderEditor.html', + replace: true, + scope: { + onInit: '&' + }, + link: function(scope, element, attributes) { + + var $minderEditor = element.children('.minder-editor')[0]; + + function onInit(editor, minder) { + scope.onInit({ + editor: editor, + minder: minder + }); + + minderService.executeCallback(); + } + + if (typeof(seajs) != 'undefined') { + /* global seajs */ + seajs.config({ + base: './src' + }); + + define('demo', function(require) { + var Editor = require('editor'); + + var editor = window.editor = new Editor($minderEditor); + + if (window.localStorage.__dev_minder_content) { + editor.minder.importJson(JSON.parse(window.localStorage.__dev_minder_content)); + } + + editor.minder.on('contentchange', function() { + window.localStorage.__dev_minder_content = JSON.stringify(editor.minder.exportJson()); + }); + + window.minder = window.km = editor.minder; + + scope.editor = editor; + scope.minder = minder; + scope.config = config.getConfig(); + + //scope.minder.setDefaultOptions(scope.config); + scope.$apply(); + + onInit(editor, minder); + }); + + seajs.use('demo'); + + } else if (window.kityminder && window.kityminder.Editor) { + var editor = new kityminder.Editor($minderEditor); + + window.editor = scope.editor = editor; + window.minder = scope.minder = editor.minder; + + scope.config = config.getConfig(); + + //scope.minder.setDefaultOptions(config.getConfig()); + + onInit(editor, editor.minder); + } + + } + } + }]); +angular.module('kityminderEditor') + .directive('kityminderViewer', ['config', 'minder.service', function(config, minderService) { + return { + restrict: 'EA', + templateUrl: 'ui/directive/kityminderViewer/kityminderViewer.html', + replace: true, + scope: { + onInit: '&' + }, + link: function(scope, element, attributes) { + + var $minderEditor = element.children('.minder-viewer')[0]; + + function onInit(editor, minder) { + scope.onInit({ + editor: editor, + minder: minder + }); + + minderService.executeCallback(); + } + + if (window.kityminder && window.kityminder.Editor) { + var editor = new kityminder.Editor($minderEditor); + + window.editor = scope.editor = editor; + window.minder = scope.minder = editor.minder; + + onInit(editor, editor.minder); + } + + } + } + }]); +angular.module('kityminderEditor') + .directive('layout', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/layout/layout.html', + scope: { + minder: '=' + }, + replace: true, + link: function(scope) { + + } + } + }); +/** + * @fileOverview + * + * 左下角的导航器 + * + * @author: zhangbobell + * @email : zhangbobell@163.com + * + * @copyright: Baidu FEX, 2015 */ +angular.module('kityminderEditor') + .directive('navigator', ['memory', 'config', function(memory, config) { + return { + restrict: 'A', + templateUrl: 'ui/directive/navigator/navigator.html', + scope: { + minder: '=' + }, + link: function(scope) { + minder.setDefaultOptions({zoom: config.getConfig('zoom')}); + + scope.isNavOpen = !memory.get('navigator-hidden'); + + scope.getZoomRadio = function(value) { + var zoomStack = minder.getOption('zoom'); + var minValue = zoomStack[0]; + var maxValue = zoomStack[zoomStack.length - 1]; + var valueRange = maxValue - minValue; + + return (1 - (value - minValue) / valueRange); + }; + + scope.getHeight = function(value) { + var totalHeight = $('.zoom-pan').height(); + + return scope.getZoomRadio(value) * totalHeight; + }; + + // 初始的缩放倍数 + scope.zoom = 100; + + // 发生缩放事件时 + minder.on('zoom', function(e) { + scope.zoom = e.zoom; + }); + + scope.toggleNavOpen = function() { + scope.isNavOpen = !scope.isNavOpen; + memory.set('navigator-hidden', !scope.isNavOpen); + + if (scope.isNavOpen) { + bind(); + updateContentView(); + updateVisibleView(); + } else{ + unbind(); + } + }; + + setTimeout(function() { + if (scope.isNavOpen) { + bind(); + updateContentView(); + updateVisibleView(); + } else{ + unbind(); + } + }, 0); + + + + function bind() { + minder.on('layout layoutallfinish', updateContentView); + minder.on('viewchange', updateVisibleView); + } + + function unbind() { + minder.off('layout layoutallfinish', updateContentView); + minder.off('viewchange', updateVisibleView); + } + + + /** 以下部分是缩略图导航器 * + * */ + + var $previewNavigator = $('.nav-previewer'); + + // 画布,渲染缩略图 + var paper = new kity.Paper($previewNavigator[0]); + + // 用两个路径来挥之节点和连线的缩略图 + var nodeThumb = paper.put(new kity.Path()); + var connectionThumb = paper.put(new kity.Path()); + + // 表示可视区域的矩形 + var visibleRect = paper.put(new kity.Rect(100, 100).stroke('red', '1%')); + + var contentView = new kity.Box(), visibleView = new kity.Box(); + + /** + * 增加一个对天盘图情况缩略图的处理, + * @Editor: Naixor line 104~129 + * @Date: 2015.11.3 + */ + var pathHandler = getPathHandler(minder.getTheme()); + + // 主题切换事件 + minder.on('themechange', function(e) { + pathHandler = getPathHandler(e.theme); + }); + + function getPathHandler(theme) { + switch (theme) { + case "tianpan": + case "tianpan-compact": + return function(nodePathData, x, y, width, height) { + var r = width >> 1; + nodePathData.push('M', x, y + r, + 'a', r, r, 0, 1, 1, 0, 0.01, + 'z'); + } + default: { + return function(nodePathData, x, y, width, height) { + nodePathData.push('M', x, y, + 'h', width, 'v', height, + 'h', -width, 'z'); + } + } + } + } + + navigate(); + + function navigate() { + + function moveView(center, duration) { + var box = visibleView; + center.x = -center.x; + center.y = -center.y; + + var viewMatrix = minder.getPaper().getViewPortMatrix(); + box = viewMatrix.transformBox(box); + + var targetPosition = center.offset(box.width / 2, box.height / 2); + + minder.getViewDragger().moveTo(targetPosition, duration); + } + + var dragging = false; + + paper.on('mousedown', function(e) { + dragging = true; + moveView(e.getPosition('top'), 200); + $previewNavigator.addClass('grab'); + }); + + paper.on('mousemove', function(e) { + if (dragging) { + moveView(e.getPosition('top')); + } + }); + + $(window).on('mouseup', function() { + dragging = false; + $previewNavigator.removeClass('grab'); + }); + } + + function updateContentView() { + + var view = minder.getRenderContainer().getBoundaryBox(); + + contentView = view; + + var padding = 30; + + paper.setViewBox( + view.x - padding - 0.5, + view.y - padding - 0.5, + view.width + padding * 2 + 1, + view.height + padding * 2 + 1); + + var nodePathData = []; + var connectionThumbData = []; + + minder.getRoot().traverse(function(node) { + var box = node.getLayoutBox(); + pathHandler(nodePathData, box.x, box.y, box.width, box.height); + if (node.getConnection() && node.parent && node.parent.isExpanded()) { + connectionThumbData.push(node.getConnection().getPathData()); + } + }); + + paper.setStyle('background', minder.getStyle('background')); + + if (nodePathData.length) { + nodeThumb + .fill(minder.getStyle('root-background')) + .setPathData(nodePathData); + } else { + nodeThumb.setPathData(null); + } + + if (connectionThumbData.length) { + connectionThumb + .stroke(minder.getStyle('connect-color'), '0.5%') + .setPathData(connectionThumbData); + } else { + connectionThumb.setPathData(null); + } + + updateVisibleView(); + } + + function updateVisibleView() { + visibleView = minder.getViewDragger().getView(); + visibleRect.setBox(visibleView.intersect(contentView)); + } + + } + } + }]); +angular.module('kityminderEditor') + .directive('noteBtn', ['valueTransfer', function(valueTransfer) { + return { + restrict: 'E', + templateUrl: 'ui/directive/noteBtn/noteBtn.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + + $scope.addNote =function() { + valueTransfer.noteEditorOpen = true; + }; + } + } + }]); +angular.module('kityminderEditor') + + .directive('noteEditor', ['valueTransfer', function(valueTransfer) { + return { + restrict: 'A', + templateUrl: 'ui/directive/noteEditor/noteEditor.html', + scope: { + minder: '=' + }, + replace: true, + controller: ["$scope", function($scope) { + var minder = $scope.minder; + var isInteracting = false; + var cmEditor; + + $scope.codemirrorLoaded = function(_editor) { + + cmEditor = $scope.cmEditor = _editor; + + _editor.setSize('100%', '100%'); + }; + + function updateNote() { + var enabled = $scope.noteEnabled = minder.queryCommandState('note') != -1; + var noteValue = minder.queryCommandValue('note') || ''; + + if (enabled) { + $scope.noteContent = noteValue; + } + + isInteracting = true; + $scope.$apply(); + isInteracting = false; + } + + + $scope.$watch('noteContent', function(content) { + var enabled = minder.queryCommandState('note') != -1; + + if (content && enabled && !isInteracting) { + minder.execCommand('note', content); + } + + setTimeout(function() { + cmEditor.refresh(); + }); + }); + + + var noteEditorOpen = function() { + return valueTransfer.noteEditorOpen; + }; + + // 监听面板状态变量的改变 + $scope.$watch(noteEditorOpen, function(newVal, oldVal) { + if (newVal) { + setTimeout(function() { + cmEditor.refresh(); + cmEditor.focus(); + }); + } + $scope.noteEditorOpen = valueTransfer.noteEditorOpen; + }, true); + + + $scope.closeNoteEditor = function() { + valueTransfer.noteEditorOpen = false; + editor.receiver.selectAll(); + }; + + + + minder.on('interactchange', updateNote); + }] + } + }]); +// TODO: 使用一个 div 容器作为 previewer,而不是两个 +angular.module('kityminderEditor') + + .directive('notePreviewer', ['$sce', 'valueTransfer', function($sce, valueTransfer) { + return { + restrict: 'A', + templateUrl: 'ui/directive/notePreviewer/notePreviewer.html', + link: function(scope, element) { + var minder = scope.minder; + var $container = element.parent(); + var $previewer = element.children(); + scope.showNotePreviewer = false; + + marked.setOptions({ + gfm: true, + tables: true, + breaks: true, + pedantic: false, + sanitize: true, + smartLists: true, + smartypants: false + }); + + + var previewTimer; + minder.on('shownoterequest', function(e) { + + previewTimer = setTimeout(function() { + preview(e.node, e.keyword); + }, 300); + }); + minder.on('hidenoterequest', function() { + clearTimeout(previewTimer); + + scope.showNotePreviewer = false; + //scope.$apply(); + }); + + var previewLive = false; + $(document).on('mousedown mousewheel DOMMouseScroll', function() { + if (!previewLive) return; + scope.showNotePreviewer = false; + scope.$apply(); + }); + + element.on('mousedown mousewheel DOMMouseScroll', function(e) { + e.stopPropagation(); + }); + + function preview(node, keyword) { + var icon = node.getRenderer('NoteIconRenderer').getRenderShape(); + var b = icon.getRenderBox('screen'); + var note = node.getData('note'); + + $previewer[0].scrollTop = 0; + + var html = marked(note); + if (keyword) { + html = html.replace(new RegExp('(' + keyword + ')', 'ig'), '$1'); + } + scope.noteContent = $sce.trustAsHtml(html); + scope.$apply(); // 让浏览器重新渲染以获取 previewer 提示框的尺寸 + + var cw = $($container[0]).width(); + var ch = $($container[0]).height(); + var pw = $($previewer).outerWidth(); + var ph = $($previewer).outerHeight(); + + var x = b.cx - pw / 2 - $container[0].offsetLeft; + var y = b.bottom + 10 - $container[0].offsetTop; + + if (x < 0) x = 10; + if (x + pw > cw) x = b.left - pw - 10 - $container[0].offsetLeft; + if (y + ph > ch) y = b.top - ph - 10 - $container[0].offsetTop; + + + scope.previewerStyle = { + 'left': Math.round(x) + 'px', + 'top': Math.round(y) + 'px' + }; + + scope.showNotePreviewer = true; + + var view = $previewer[0].querySelector('.highlight'); + if (view) { + view.scrollIntoView(); + } + previewLive = true; + + scope.$apply(); + } + } + } +}]); +angular.module('kityminderEditor') + .directive('operation', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/operation/operation.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + $scope.editNode = function() { + + var receiverElement = editor.receiver.element; + var fsm = editor.fsm; + var receiver = editor.receiver; + + receiverElement.innerText = minder.queryCommandValue('text'); + fsm.jump('input', 'input-request'); + receiver.selectAll(); + + } + + } + } + }); +angular.module('kityminderEditor') + + .directive('priorityEditor', ['commandBinder', function(commandBinder) { + return { + restrict: 'E', + templateUrl: 'ui/directive/priorityEditor/priorityEditor.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + var priorities = []; + + for (var i = 0; i < 10; i++) { + priorities.push(i); + } + + commandBinder.bind(minder, 'priority', $scope); + + $scope.priorities = priorities; + + $scope.getPriorityTitle = function(p) { + switch(p) { + case 0: return '移除优先级'; + default: return '优先级' + p; + } + } + } + + } + }]); +angular.module('kityminderEditor') + .directive('progressEditor', ['commandBinder', function(commandBinder) { + return { + restrict: 'E', + templateUrl: 'ui/directive/progressEditor/progressEditor.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + var progresses = []; + + for (var i = 0; i < 10; i++) { + progresses.push(i); + } + + commandBinder.bind(minder, 'progress', $scope); + + $scope.progresses = progresses; + + $scope.getProgressTitle = function(p) { + switch(p) { + case 0: return '移除进度'; + case 1: return '未开始'; + case 9: return '全部完成'; + default: return '完成' + (p - 1) + '/8'; + + } + } + } + } + }]) +angular.module('kityminderEditor') + .directive('resourceEditor', function () { + return { + restrict: 'E', + templateUrl: 'ui/directive/resourceEditor/resourceEditor.html', + scope: { + minder: '=' + }, + replace: true, + controller: ["$scope", function ($scope) { + var minder = $scope.minder; + + var isInteracting = false; + + minder.on('interactchange', function () { + var enabled = $scope.enabled = minder.queryCommandState('resource') != -1; + var selected = enabled ? minder.queryCommandValue('resource') : []; + var used = minder.getUsedResource().map(function (resourceName) { + return { + name: resourceName, + selected: selected.indexOf(resourceName) > -1 + } + }); + $scope.used = used; + + isInteracting = true; + $scope.$apply(); + isInteracting = false; + }); + + $scope.$watch('used', function (used) { + if (minder.queryCommandState('resource') != -1 && used) { + var resource = used.filter(function (resource) { + return resource.selected; + }).map(function (resource) { + return resource.name; + }); + + // 由于 interactchange 带来的改变则不用执行 resource 命令 + if (isInteracting) { + return; + } + minder.execCommand('resource', resource); + } + }, true); + + $scope.resourceColor = function (resource) { + return minder.getResourceColor(resource).toHEX(); + }; + + $scope.addResource = function (resourceName) { + var origin = minder.queryCommandValue('resource'); + if (!resourceName || !/\S/.test(resourceName)) return; + + if (origin.indexOf(resourceName) == -1) { + $scope.used.push({ + name: resourceName, + selected: true + }); + } + + $scope.newResourceName = null; + }; + + }] + }; + }) + + .directive('clickAnywhereButHere', ['$document', function ($document) { + return { + link: function(scope, element, attrs) { + var onClick = function (event) { + var isChild = $('#resource-dropdown').has(event.target).length > 0; + var isSelf = $('#resource-dropdown') == event.target; + var isInside = isChild || isSelf; + if (!isInside) { + scope.$apply(attrs.clickAnywhereButHere) + } + }; + + scope.$watch(attrs.isActive, function(newValue, oldValue) { + if (newValue !== oldValue && newValue == true) { + $document.bind('click', onClick); + } + else if (newValue !== oldValue && newValue == false) { + $document.unbind('click', onClick); + } + }); + } + }; + }]); +angular.module('kityminderEditor') + .directive('searchBox', function() { + return { + restrict: 'A', + templateUrl: 'ui/directive/searchBox/searchBox.html', + scope: { + minder: '=' + }, + replace: true, + controller: ["$scope", function ($scope) { + var minder = $scope.minder; + var editor = window.editor; + $scope.handleKeyDown = handleKeyDown; + $scope.doSearch = doSearch; + $scope.exitSearch = exitSearch; + $scope.showTip = false; + $scope.showSearch = false; + + // 处理输入框按键事件 + function handleKeyDown(e) { + if (e.keyCode == 13) { + var direction = e.shiftKey ? 'prev' : 'next'; + doSearch($scope.keyword, direction); + } + if (e.keyCode == 27) { + exitSearch(); + } + } + + function exitSearch() { + $('#search-input').blur(); + $scope.showSearch = false; + minder.fire('hidenoterequest'); + editor.receiver.selectAll(); + } + + function enterSearch() { + $scope.showSearch = true; + setTimeout(function() { + $('#search-input').focus(); + }, 10); + + if ($scope.keyword) { + $('#search-input')[0].setSelectionRange(0, $scope.keyword.length); + } + } + + $('body').on('keydown', function(e) { + if (e.keyCode == 70 && (e.ctrlKey || e.metaKey) && !e.shiftKey) { + enterSearch(); + + $scope.$apply(); + e.preventDefault(); + } + }); + + minder.on('searchNode', function() { + enterSearch(); + }); + + + var nodeSequence = []; + var searchSequence = []; + + + minder.on('contentchange', makeNodeSequence); + + makeNodeSequence(); + + + function makeNodeSequence() { + nodeSequence = []; + minder.getRoot().traverse(function(node) { + nodeSequence.push(node); + }); + } + + function makeSearchSequence(keyword) { + searchSequence = []; + + for (var i = 0; i < nodeSequence.length; i++) { + var node = nodeSequence[i]; + var text = node.getText().toLowerCase(); + if (text.indexOf(keyword) != -1) { + searchSequence.push({node:node}); + } + var note = node.getData('note'); + if (note && note.toLowerCase().indexOf(keyword) != -1) { + searchSequence.push({node: node, keyword: keyword}); + } + } + } + + + function doSearch(keyword, direction) { + $scope.showTip = false; + minder.fire('hidenoterequest'); + + if (!keyword || !/\S/.exec(keyword)) { + $('#search-input').focus(); + return; + } + + // 当搜索不到节点时候默认的选项 + $scope.showTip = true; + $scope.curIndex = 0; + $scope.resultNum = 0; + + + keyword = keyword.toLowerCase(); + var newSearch = doSearch.lastKeyword != keyword; + + doSearch.lastKeyword = keyword; + + if (newSearch) { + makeSearchSequence(keyword); + } + + $scope.resultNum = searchSequence.length; + + if (searchSequence.length) { + var curIndex = newSearch ? 0 : (direction === 'next' ? doSearch.lastIndex + 1 : doSearch.lastIndex - 1) || 0; + curIndex = (searchSequence.length + curIndex) % searchSequence.length; + + setSearchResult(searchSequence[curIndex].node, searchSequence[curIndex].keyword); + + doSearch.lastIndex = curIndex; + + $scope.curIndex = curIndex + 1; + + function setSearchResult(node, previewKeyword) { + minder.execCommand('camera', node, 50); + setTimeout(function () { + minder.select(node, true); + if (!node.isExpanded()) minder.execCommand('expand', true); + if (previewKeyword) { + minder.fire('shownoterequest', {node: node, keyword: previewKeyword}); + } + }, 60); + } + } + } + + + }] + } + }); +angular.module('kityminderEditor') + .directive('searchBtn', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/searchBtn/searchBtn.html', + scope: { + minder: '=' + }, + replace: true, + link: function (scope) { + scope.enterSearch = enterSearch; + + function enterSearch() { + minder.fire('searchNode'); + } + } + } + }); +angular.module('kityminderEditor') + .directive('selectAll', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/selectAll/selectAll.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + var minder = $scope.minder; + + $scope.items = ['revert', 'siblings', 'level', 'path', 'tree']; + + $scope.select = { + all: function() { + var selection = []; + minder.getRoot().traverse(function(node) { + selection.push(node); + }); + minder.select(selection, true); + minder.fire('receiverfocus'); + }, + revert: function() { + var selected = minder.getSelectedNodes(); + var selection = []; + minder.getRoot().traverse(function(node) { + if (selected.indexOf(node) == -1) { + selection.push(node); + } + }); + minder.select(selection, true); + minder.fire('receiverfocus'); + }, + siblings: function() { + var selected = minder.getSelectedNodes(); + var selection = []; + selected.forEach(function(node) { + if (!node.parent) return; + node.parent.children.forEach(function(sibling) { + if (selection.indexOf(sibling) == -1) selection.push(sibling); + }); + }); + minder.select(selection, true); + minder.fire('receiverfocus'); + }, + level: function() { + var selectedLevel = minder.getSelectedNodes().map(function(node) { + return node.getLevel(); + }); + var selection = []; + minder.getRoot().traverse(function(node) { + if (selectedLevel.indexOf(node.getLevel()) != -1) { + selection.push(node); + } + }); + minder.select(selection, true); + minder.fire('receiverfocus'); + }, + path: function() { + var selected = minder.getSelectedNodes(); + var selection = []; + selected.forEach(function(node) { + while(node && selection.indexOf(node) == -1) { + selection.push(node); + node = node.parent; + } + }); + minder.select(selection, true); + minder.fire('receiverfocus'); + }, + tree: function() { + var selected = minder.getSelectedNodes(); + var selection = []; + selected.forEach(function(parent) { + parent.traverse(function(node) { + if (selection.indexOf(node) == -1) selection.push(node); + }); + }); + minder.select(selection, true); + minder.fire('receiverfocus'); + } + }; + } + } + }); +angular.module('kityminderEditor') + .directive('styleOperator', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/styleOperator/styleOperator.html', + scope: { + minder: '=' + }, + replace: true + } + }); +angular.module('kityminderEditor') + .directive('templateList', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/templateList/templateList.html', + scope: { + minder: '=' + }, + replace: true, + link: function($scope) { + $scope.templateList = kityminder.Minder.getTemplateList(); + + } + } + }); +angular.module('kityminderEditor') + .directive('themeList', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/themeList/themeList.html', + replace: true, + link: function($scope) { + var themeList = kityminder.Minder.getThemeList(); + + //$scope.themeList = themeList; + + $scope.getThemeThumbStyle = function (theme) { + var themeObj = themeList[theme]; + if (!themeObj) { + return; + } + var style = { + 'color': themeObj['root-color'], + 'border-radius': themeObj['root-radius'] / 2 + }; + + if (themeObj['root-background']) { + style['background'] = themeObj['root-background'].toString(); + } + + return style; + }; + + // 维护 theme key 列表以保证列表美观(不按字母顺序排序) + $scope.themeKeyList = [ + 'classic', + 'classic-compact', + 'fresh-blue', + 'fresh-blue-compat', + 'fresh-green', + 'fresh-green-compat', + 'fresh-pink', + 'fresh-pink-compat', + 'fresh-purple', + 'fresh-purple-compat', + 'fresh-red', + 'fresh-red-compat', + 'fresh-soil', + 'fresh-soil-compat', + 'snow', + 'snow-compact', + 'tianpan', + 'tianpan-compact', + 'fish', + 'wire' + ]; + } + } + }); +angular.module('kityminderEditor') + .directive('topTab', function() { + return { + restrict: 'A', + templateUrl: 'ui/directive/topTab/topTab.html', + scope: { + minder: '=topTab', + editor: '=' + }, + link: function(scope) { + + /* + * + * 用户选择一个新的选项卡会执行 setCurTab 和 foldTopTab 两个函数 + * 用户点击原来的选项卡会执行 foldTopTop 一个函数 + * + * 也就是每次选择新的选项卡都会执行 setCurTab,初始化的时候也会执行 setCurTab 函数 + * 因此用 executedCurTab 记录是否已经执行了 setCurTab 函数 + * 用 isInit 记录是否是初始化的状态,在任意一个函数时候 isInit 设置为 false + * 用 isOpen 记录是否打开了 topTab + * + * 因此用到了三个 mutex + * */ + var executedCurTab = false; + var isInit = true; + var isOpen = true; + + scope.setCurTab = function(tabName) { + setTimeout(function() { + //console.log('set cur tab to : ' + tabName); + executedCurTab = true; + //isOpen = false; + if (tabName != 'idea') { + isInit = false; + } + }); + }; + + scope.toggleTopTab = function() { + setTimeout(function() { + if(!executedCurTab || isInit) { + isInit = false; + + isOpen ? closeTopTab(): openTopTab(); + isOpen = !isOpen; + } + + executedCurTab = false; + }); + }; + + function closeTopTab() { + var $tabContent = $('.tab-content'); + var $minderEditor = $('.minder-editor'); + + $tabContent.animate({ + height: 0, + display: 'none' + }); + + $minderEditor.animate({ + top: '32px' + }); + } + + function openTopTab() { + var $tabContent = $('.tab-content'); + var $minderEditor = $('.minder-editor'); + + $tabContent.animate({ + height: '60px', + display: 'block' + }); + + $minderEditor.animate({ + top: '92px' + }); + } + } + } + }); +angular.module('kityminderEditor') + .directive('undoRedo', function() { + return { + restrict: 'E', + templateUrl: 'ui/directive/undoRedo/undoRedo.html', + scope: { + editor: '=' + }, + replace: true, + link: function($scope) { + + } + } + }); +use('expose-editor'); +})(); \ No newline at end of file diff --git a/virtualroot/kitymind-editor/kityminder.editor.min.css b/virtualroot/kitymind-editor/kityminder.editor.min.css new file mode 100644 index 0000000..0543f49 --- /dev/null +++ b/virtualroot/kitymind-editor/kityminder.editor.min.css @@ -0,0 +1 @@ +#previewer-content pre,.gfm-render pre,.km-editor>.receiver{word-break:break-all;word-wrap:break-word}.km-editor{overflow:hidden;z-index:2}.km-editor>.mask{display:block;position:absolute;left:0;right:0;top:0;bottom:0;background-color:transparent}.km-editor>.receiver{position:absolute;background:#fff;outline:0;box-shadow:0 0 20px rgba(0,0,0,.5);left:0;top:0;padding:3px 5px;margin-left:-3px;margin-top:-5px;max-width:300px;width:auto;font-size:14px;line-height:1.4em;min-height:1.4em;box-sizing:border-box;overflow:hidden;border:none;-webkit-user-select:text;pointer-events:none;opacity:0;z-index:-1000}.km-editor>.receiver.debug{opacity:1;outline:green solid 1px;background:0 0;z-index:0}.km-editor>.receiver.input{pointer-events:all;opacity:1;z-index:999;background:#fff;outline:0}div.minder-editor-container{position:absolute;top:40px;bottom:0;left:0;right:0;font-family:Arial,"Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif}.minder-editor{position:absolute;top:92px;left:0;right:0;bottom:0}.control-panel,.minder-divider,.minder-viewer{bottom:0;position:absolute;top:0}.minder-viewer{left:0;right:0}.control-panel{right:0;width:250px;border-left:1px solid #CCC}.minder-divider{right:250px;width:2px;background-color:#fbfbfb;cursor:ew-resize}.top-tab .nav-tabs{background-color:#e1e1e1;border:0;height:32px}.top-tab .nav-tabs li{margin:0}.top-tab .nav-tabs li a{margin:0;border:0;padding:6px 15px;border-radius:0;vertical-align:middle}.top-tab .nav-tabs li a:focus,.top-tab .nav-tabs li a:hover{background:inherit;border:0}.km-btn-item[disabled]:active,.km-btn-item[disabled]:hover,.top-tab .tab-content{background-color:#fff}.top-tab .nav-tabs li.active a{border:0;background-color:#fff}.top-tab .nav-tabs li.active a:focus,.top-tab .nav-tabs li.active a:hover{border:0}.top-tab .tab-content{height:60px;border-bottom:1px solid #dbdbdb}.top-tab .tab-pane{font-size:0}.km-btn-group{display:inline-block;margin:5px 0;padding:0 5px;vertical-align:middle;border-right:1px dashed #eee}.km-btn-item{display:inline-block;margin:0 3px;font-size:0;cursor:default}.btn-group-vertical .hyperlink-caption .caption,.btn-group-vertical .image-btn-caption .caption{font-size:12px}.km-btn-item[disabled]{opacity:.5}.km-btn-item .km-btn-icon{display:inline-block;background:url(images/icons.png) 0 20px no-repeat;width:20px;height:20px;padding:2px;margin:1px;vertical-align:middle}.km-btn-item .km-btn-caption{display:inline-block;font-size:12px;vertical-align:middle}.km-btn-item:hover{background-color:#eff3fa}.km-btn-item:active{background-color:#c4d0ee}.do-group{width:38px}.undo .km-btn-icon{background-position:0 -1240px}.redo .km-btn-icon{background-position:0 -1220px}.append-group{width:212px}.arrange-group,.operation-group{width:64px}.append-child-node .km-btn-icon{background-position:0 0}.append-sibling-node .km-btn-icon{background-position:0 -20px}.append-parent-node .km-btn-icon{background-position:0 -40px}.arrange-up .km-btn-icon{background-position:0 -280px}.arrange-down .km-btn-icon{background-position:0 -300px}.edit-node .km-btn-icon{background-position:0 -60px}.remove-node .km-btn-icon{background-position:0 -80px}.btn-group-vertical .hyperlink,.btn-group-vertical .hyperlink-caption{width:40px;margin:0;padding:0;border:none!important;border-radius:0!important}.btn-group-vertical .hyperlink-caption:hover,.btn-group-vertical .hyperlink:hover{background-color:#eff3fa}.btn-group-vertical .hyperlink-caption:active,.btn-group-vertical .hyperlink:active{background-color:#c4d0ee}.btn-group-vertical .hyperlink-caption.active,.btn-group-vertical .hyperlink.active{box-shadow:none;background-color:#eff3fa}.btn-group-vertical .hyperlink{height:25px;background:url(images/icons.png) center -100px no-repeat}.btn-group-vertical .hyperlink-caption{height:20px}.btn-group-vertical .image-btn,.btn-group-vertical .image-btn-caption{width:40px;margin:0;padding:0;border:none!important;border-radius:0!important}.btn-group-vertical .image-btn-caption:hover,.btn-group-vertical .image-btn:hover{background-color:#eff3fa}.btn-group-vertical .image-btn-caption:active,.btn-group-vertical .image-btn:active{background-color:#c4d0ee}.btn-group-vertical .image-btn-caption.active,.btn-group-vertical .image-btn.active{box-shadow:none;background-color:#eff3fa}.btn-group-vertical .image-btn{height:25px;background:url(images/icons.png) center -125px no-repeat}.btn-group-vertical .image-btn-caption{height:20px}.image-preview{display:block;max-width:50%}.modal-body .tab-pane{font-size:inherit;padding-top:15px}.btn-group-vertical .note-btn-caption .caption,.gfm-render{font-size:12px}.search-result{margin-top:15px;height:370px;overflow:hidden}.search-result ul{margin:0;padding:0;list-style:none;clear:both;height:100%;overflow-x:hidden;overflow-y:auto}.search-result ul li{list-style:none;float:left;display:block;width:130px;height:130px;line-height:130px;margin:6px;padding:0;font-size:12px;position:relative;vertical-align:top;text-align:center;overflow:hidden;cursor:pointer;border:2px solid #fcfcfc}.search-result ul li.selected{border:2px solid #fc8383}.search-result ul li img{max-width:126px;max-height:130px;vertical-align:middle}.search-result ul li span{display:block;position:absolute;bottom:0;height:20px;background:rgba(0,0,0,.5);left:0;right:0;color:#fff;line-height:20px;overflow:hidden;text-overflow:ellipsis;word-break:break-all;white-space:nowrap;opacity:0;-webkit-transform:translate(0,20px);-ms-transform:translate(0,20px);transform:translate(0,20px);-webkit-transition:all .2s ease;transition:all .2s ease}.nav-bar,.nav-previewer{transition:-webkit-transform .7s .1s ease}.search-result ul li:hover span{opacity:1;-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.bg-color-wrap .bg-color-preview[disabled],.bg-color-wrap .quick-bg-color[disabled],.bg-color-wrap[disabled],.bg-color[disabled],.btn-wrap[disabled] span,.current-font-item[disabled],.current-temp-item[disabled],.font-bold[disabled],.font-color-wrap .font-color-preview[disabled],.font-color-wrap .quick-font-color[disabled],.font-color[disabled],.font-italics[disabled],.resource-editor .resource-dropdown .km-resource li[disabled],.s-btn-wrap[disabled] span,.theme-item-selected[disabled]{opacity:.5}@media (min-width:768px){.form-inline .form-control{width:422px}}.btn-group-vertical.note-btn-group{border-right:1px dashed #eee;padding-right:5px}.btn-group-vertical .note-btn,.btn-group-vertical .note-btn-caption{width:40px;margin:0;padding:0;border:none!important;border-radius:0!important}.btn-group-vertical .note-btn-caption:hover,.btn-group-vertical .note-btn:hover{background-color:#eff3fa}.btn-group-vertical .note-btn-caption:active,.btn-group-vertical .note-btn:active{background-color:#c4d0ee}.btn-group-vertical .note-btn-caption.active,.btn-group-vertical .note-btn.active{box-shadow:none;background-color:#eff3fa}.btn-group-vertical .note-btn{height:25px;background:url(images/icons.png) center -1150px no-repeat}.btn-group-vertical .note-btn-caption{height:20px}.open>.dropdown-toggle.btn-default{background-color:#eff3fa}.gfm-render{-webkit-user-select:text;color:#333;line-height:1.8em}.gfm-render blockquote,.gfm-render hr,.gfm-render p,.gfm-render pre,.gfm-render table,.gfm-render ul{margin:1em 0;cursor:text}.gfm-render blockquote:first-child:last-child,.gfm-render hr:first-child:last-child,.gfm-render p:first-child:last-child,.gfm-render pre:first-child:last-child,.gfm-render table:first-child:last-child,.gfm-render ul:first-child:last-child{margin:0}.gfm-render img{max-width:100%}.gfm-render a{color:#00f}.gfm-render a:hover{color:red}.gfm-render blockquote{display:block;border-left:4px solid #E4AD91;color:#da8e68;padding-left:10px;font-style:italic;margin-left:2em}.gfm-render ol,.gfm-render ul{padding-left:3em}.gfm-render table{width:100%;border-collapse:collapse;margin:1em 0}.gfm-render table td,.gfm-render table th{border:1px solid #666;padding:2px 4px}.gfm-render table th{background:rgba(45,141,234,.2)}.gfm-render table tr:nth-child(even) td{background:rgba(45,141,234,.03)}.gfm-render em{color:red}.gfm-render del{color:#999}.gfm-render pre{background:rgba(45,141,234,.1);padding:5px;border-radius:5px}.gfm-render code{background:rgba(45,141,234,.1);padding:0 5px;border-radius:3px}.gfm-render pre code{background:0 0}.gfm-render hr{border:none;border-top:1px solid #CCC}.gfm-render .highlight{background:#ff0;color:red}.km-note{width:300px;border-left:1px solid #babfcd;padding:5px 10px;background:#fff;position:absolute;top:92px;right:0;bottom:0;left:auto;z-index:3}.km-note.panel{margin:0;padding:0}.km-note.panel .panel-heading h3{display:inline-block}.km-note.panel .panel-heading .close-note-editor{width:15px;height:15px;display:inline-block;float:right}.km-note.panel .panel-heading .close-note-editor:hover{cursor:pointer}.km-note.panel .panel-body{padding:0}.km-note .CodeMirror{position:absolute;top:41px;bottom:0;height:auto;cursor:text;font-size:14px;line-height:1.3em;font-family:consolas}.km-note-tips{color:#ccc;padding:3px 8px}#previewer-content{position:absolute;background:#FFD;padding:5px 15px;border-radius:5px;max-width:400px;max-height:200px;overflow:auto;z-index:10;box-shadow:0 0 15px rgba(0,0,0,.5);word-break:break-all;font-size:12px;-webkit-user-select:text;color:#333;line-height:1.8em}#previewer-content blockquote,#previewer-content hr,#previewer-content p,#previewer-content pre,#previewer-content table,#previewer-content ul{margin:1em 0;cursor:text}.btn-wrap,div a.theme-item{text-decoration:none;cursor:pointer}#previewer-content blockquote:first-child:last-child,#previewer-content hr:first-child:last-child,#previewer-content p:first-child:last-child,#previewer-content pre:first-child:last-child,#previewer-content table:first-child:last-child,#previewer-content ul:first-child:last-child{margin:0}#previewer-content img{max-width:100%}#previewer-content a{color:#00f}#previewer-content a:hover,#previewer-content em{color:red}#previewer-content blockquote{display:block;border-left:4px solid #E4AD91;color:#da8e68;padding-left:10px;font-style:italic;margin-left:2em}#previewer-content ol,#previewer-content ul{padding-left:3em}#previewer-content table{width:100%;border-collapse:collapse;margin:1em 0}#previewer-content table td,#previewer-content table th{border:1px solid #666;padding:2px 4px}#previewer-content table th{background:rgba(45,141,234,.2)}#previewer-content table tr:nth-child(even) td{background:rgba(45,141,234,.03)}#previewer-content del{color:#999}#previewer-content pre{background:rgba(45,141,234,.1);padding:5px;border-radius:5px}#previewer-content code{background:rgba(45,141,234,.1);padding:0 5px;border-radius:3px}#previewer-content pre code{background:0 0}#previewer-content hr{border:none;border-top:1px solid #CCC}.tab-content .km-priority,.tab-content .km-progress{vertical-align:middle;font-size:inherit;width:140px;border-right:1px dashed #eee}#previewer-content .highlight{background:#ff0;color:red}#previewer-content.ng-hide{display:block!important;left:-99999px!important;top:-99999px!important}.panel-body{padding:10px}.tab-content .km-priority{display:inline-block;margin:5px}.tab-content .km-priority .km-priority-item{margin:0 1px;padding:1px}.tab-content .km-priority .km-priority-item .km-priority-icon{background:url(images/iconpriority.png) repeat-y}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-0{background-position:0 20px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-1{background-position:0 0}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-2{background-position:0 -20px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-3{background-position:0 -40px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-4{background-position:0 -60px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-5{background-position:0 -80px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-6{background-position:0 -100px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-7{background-position:0 -120px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-8{background-position:0 -140px}.tab-content .km-priority .km-priority-item .km-priority-icon.priority-9{background-position:0 -160px}.tab-content .km-progress{display:inline-block;margin:5px}.btn-label,.resource-editor .btn,.resource-editor .input-group,.resource-editor .km-resource,.resource-editor input.form-control,.s-btn-label{font-size:12px}.tab-content .km-progress .km-progress-item{margin:0 1px;padding:1px}.tab-content .km-progress .km-progress-item .km-progress-icon{background:url(images/iconprogress.png) repeat-y}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-0{background-position:0 20px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-1{background-position:0 0}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-2{background-position:0 -20px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-3{background-position:0 -40px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-4{background-position:0 -60px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-5{background-position:0 -80px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-6{background-position:0 -100px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-7{background-position:0 -120px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-8{background-position:0 -140px}.tab-content .km-progress .km-progress-item .km-progress-icon.progress-9{background-position:0 -160px}.resource-editor{vertical-align:middle;display:inline-block;margin:5px}.resource-editor .input-group{height:20px;width:168px}.resource-editor .resource-dropdown{position:relative;width:168px;border:1px solid #ccc;margin-top:-1px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.resource-editor .resource-dropdown .km-resource{position:absolute;width:154px;margin-bottom:3px;padding:0;list-style-type:none;overflow:scroll;max-height:500px}.resource-editor .resource-dropdown .km-resource.open{z-index:3;background-color:#fff}.resource-editor .resource-dropdown .km-resource li{display:inline-block;padding:1px 2px;border-radius:4px;margin:2px 3px}.resource-editor .resource-dropdown .resource-caret{display:block;float:right;vertical-align:middle;width:12px;height:24px;padding:8px 1px}.resource-editor .resource-dropdown .resource-caret:hover{background-color:#eff3fa}.resource-editor .resource-dropdown .resource-caret:active{background-color:#c4d0ee}.resource-editor input.form-control{padding:2px 4px;height:24px;border-bottom-left-radius:0}.resource-editor .input-group-btn{line-height:24px}.resource-editor .input-group-btn .btn{padding:2px 4px;height:24px;border-bottom-right-radius:0}.temp-panel{margin:5px 5px 5px 10px;border-right:1px dashed #eee;display:inline-block;vertical-align:middle}.temp-item-wrap,.theme-panel{display:inline-block;margin:5px}.current-temp-item .caret,.theme-item-selected .caret{margin-left:5px}.temp-list{min-width:124px}.temp-item-wrap{width:50px;height:40px;padding:0 2px}.temp-item{display:inline-block;width:50px;height:40px;background-image:url(images/template.png);background-repeat:no-repeat}.temp-item.default{background-position:0 0}.temp-item.structure{background-position:-50px 0}.temp-item.filetree{background-position:-100px 0}.temp-item.right{background-position:-150px 0}.temp-item.fish-bone{background-position:-200px 0}.temp-item.tianpan{background-position:-250px 0}.current-temp-item{width:74px;padding:0 0 0 5px;border:1px solid #fff}.current-temp-item:hover{background-color:#eff3fa}.temp-item-selected{background-color:#87a9da}.theme-item-selected:hover,.theme-item-wrap:hover{background-color:#eff3fa}.theme-panel{height:42px;padding:0 5px 0 0;border-right:1px dashed #eee;vertical-align:middle}.theme-list{min-width:162px}div a.theme-item{display:inline-block;width:70px;height:30px;text-align:center;line-height:30px;padding:0 5px;font-size:12px;color:#000}.theme-item-selected{width:100px;padding:6px 7px;border:1px solid #fff}.readjust-layout,.style-operator{vertical-align:middle;border-right:1px dashed #eee}.theme-item-wrap{display:inline-block;width:80px;height:40px;padding:5px}.readjust-layout{display:inline-block;padding:0 10px 0 5px}.btn-icon{width:25px;height:25px;margin-left:12px;display:block}.btn-wrap,.s-btn-icon,.s-btn-label,.s-btn-wrap,.style-operator{display:inline-block}.btn-wrap{width:50px;height:42px}.btn-wrap[disabled],.s-btn-wrap[disabled]{cursor:default}.btn-wrap[disabled]:active,.btn-wrap[disabled]:hover{background-color:transparent}.btn-wrap:link,.btn-wrap:visited{text-decoration:none}.btn-wrap:hover{background-color:#eff3fa;text-decoration:none}.btn-wrap:active{background-color:#c4d0ee}.reset-layout-icon{background:url(images/icons.png) 0 -150px no-repeat}.style-operator{padding:0 5px}.style-operator .clear-style{vertical-align:middle}.clear-style-icon{background:url(images/icons.png) 0 -175px no-repeat}.s-btn-group-vertical{display:inline-block;vertical-align:middle}.s-btn-icon{width:20px;height:20px;margin-right:3px;vertical-align:middle}.s-btn-label{vertical-align:middle}.s-btn-wrap{padding:0 5px 0 3px;text-decoration:none;font-size:0}.s-btn-wrap[disabled]:active,.s-btn-wrap[disabled]:hover{background-color:transparent}.s-btn-wrap:hover{background-color:#eff3fa;text-decoration:none}.s-btn-wrap:active{background-color:#c4d0ee}.copy-style-icon{background:url(images/icons.png) 0 -200px no-repeat}.paste-style-wrap{display:block}.paste-style-icon{background:url(images/icons.png) 0 -220px no-repeat}.font-operator{width:170px;display:inline-block;vertical-align:middle;font-size:12px;padding:0 5px}.current-font-family,.current-font-size{height:18px;overflow:hidden;vertical-align:bottom}.font-operator .font-family-list,.font-operator .font-size-list{display:inline-block;border:1px solid #eee;padding:2px 4px}.current-font-item a{text-decoration:none;display:inline-block}.current-font-family{width:75px}.current-font-size{width:32px}.font-item{line-height:1em;text-align:left}.font-item-selected{background-color:#87a9da}.font-bold,.font-italics{display:inline-block;background:url(images/icons.png) no-repeat;cursor:pointer;margin:0 3px}.font-bold:hover,.font-italics:hover{background-color:#eff3fa}.font-bold:active,.font-italics:active{background-color:#c4d0ee}.font-bold{background-position:0 -240px}.font-italics{background-position:0 -260px}.font-bold-selected,.font-italics-selected{background-color:#87a9da}.font-color-wrap{width:30px;height:22px;margin:3px 3px 0 0;vertical-align:middle;font-size:0;user-select:none}.bg-color-wrap,.font-color-wrap{display:inline-block;border:1px solid #efefef;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.font-color-wrap[disabled]{opacity:.5}.font-color-wrap .quick-font-color{display:inline-block;width:20px;height:16px;font-size:14px;line-height:16px;vertical-align:top;text-align:center;cursor:default;color:#000}.font-color-wrap .quick-font-color:hover{background-color:#eff3fa}.font-color-wrap .quick-font-color:active{background-color:#c4d0ee}.font-color-wrap .font-color-preview{display:inline-block;width:12px;height:2px;margin:0 4px;background-color:#000}.font-color{display:inline-block;width:8px;height:16px}.font-color:hover{background-color:#eff3fa}.font-color:active{background-color:#c4d0ee}.font-color .caret{margin-left:-2px;margin-top:7px}.bg-color-wrap{width:30px;height:22px;margin:3px 3px 0 0;vertical-align:middle;font-size:0;user-select:none}.bg-color-wrap .quick-bg-color{display:inline-block;width:20px;height:16px;font-size:14px;line-height:16px;vertical-align:top;text-align:center;cursor:default;color:#000;background:url(images/icons.png) center -1260px no-repeat}.btn-group-vertical .expand-caption .caption,.btn-group-vertical .search-caption .caption,.btn-group-vertical .select-caption .caption{font-size:12px}.bg-color-wrap .quick-bg-color:hover{background-color:#eff3fa}.bg-color-wrap .quick-bg-color:active{background-color:#c4d0ee}.bg-color-wrap .bg-color-preview{display:inline-block;width:12px;height:2px;margin:0 4px;background-color:#fff}.bg-color{display:inline-block;width:8px;height:16px}.bg-color:hover{background-color:#eff3fa}.bg-color:active{background-color:#c4d0ee}.bg-color .caret{margin-left:-2px;margin-top:7px}.btn-group-vertical .expand,.btn-group-vertical .expand-caption{width:40px;margin:0;padding:0;border:none!important;border-radius:0!important}.btn-group-vertical .expand-caption:hover,.btn-group-vertical .expand:hover{background-color:#eff3fa}.btn-group-vertical .expand-caption:active,.btn-group-vertical .expand:active{background-color:#c4d0ee}.btn-group-vertical .expand-caption.active,.btn-group-vertical .expand.active{box-shadow:none;background-color:#eff3fa}.btn-group-vertical .expand{height:25px;background:url(images/icons.png) 0 -995px no-repeat;background-position-x:50%}.btn-group-vertical .expand-caption{height:20px}.btn-group-vertical .select,.btn-group-vertical .select-caption{width:40px;margin:0;padding:0;border:none!important;border-radius:0!important}.btn-group-vertical .select-caption:hover,.btn-group-vertical .select:hover{background-color:#eff3fa}.btn-group-vertical .select-caption:active,.btn-group-vertical .select:active{background-color:#c4d0ee}.btn-group-vertical .select-caption.active,.btn-group-vertical .select.active{box-shadow:none;background-color:#eff3fa}.btn-group-vertical .select{height:25px;background:url(images/icons.png) 7px -1175px no-repeat}.btn-group-vertical .select-caption{height:20px}.btn-group-vertical{vertical-align:middle;margin:5px}.btn-group-vertical .search,.btn-group-vertical .search-caption{width:40px;margin:0;padding:0;border:none!important;border-radius:0!important}.btn-group-vertical .search-caption:hover,.btn-group-vertical .search:hover{background-color:#eff3fa}.btn-group-vertical .search-caption:active,.btn-group-vertical .search:active{background-color:#c4d0ee}.btn-group-vertical .search-caption.active,.btn-group-vertical .search.active{box-shadow:none;background-color:#eff3fa}.btn-group-vertical .search{height:25px;background:url(images/icons.png) 0 -345px no-repeat;background-position-x:50%}.btn-group-vertical .search-caption{height:20px}.search-box{float:right;background-color:#fff;border:1px solid #dbdbdb;position:relative;top:0;z-index:3;width:360px;height:40px;padding:3px 6px;opacity:1}.search-box .prev-and-next-btn,.search-box .search-input-wrap{float:left}.search-box .close-search{float:right;height:16px;width:16px;padding:1px;border-radius:100%;margin-top:6px;margin-right:10px}.search-box .close-search .glyphicon{top:-1px}.search-box .close-search:hover{background-color:#efefef}.search-box .close-search:active{background-color:#999}.search-box .search-input-wrap{width:240px}.search-box .prev-and-next-btn{margin-left:5px}.search-box .prev-and-next-btn .btn:focus{outline:0}.search-box .search-addon{background-color:#fff}.tool-group{padding:0}.tool-group[disabled]{opacity:.5}.tool-group .tool-group-item{display:inline-block;border-radius:4px}.tool-group .tool-group-item .tool-group-icon{width:20px;height:20px;padding:2px;margin:1px}.tool-group .tool-group-item:hover{background-color:#eff3fa}.tool-group .tool-group-item.active,.tool-group .tool-group-item:active{background-color:#c4d0ee}.nav-bar{position:absolute;width:35px;height:240px;padding:5px 0;left:10px;bottom:10px;background:#fc8383;color:#fff;border-radius:4px;z-index:10;box-shadow:3px 3px 10px rgba(0,0,0,.2);transition:transform .7s .1s ease}.nav-bar .nav-btn{width:35px;height:24px;line-height:24px;text-align:center}.nav-bar .nav-btn .icon{background:url(images/icons.png);width:20px;height:20px;margin:2px auto;display:block}.nav-bar .camera .icon,.nav-bar .hand .icon,.nav-bar .nav-trigger .icon{width:25px;height:25px;margin:0 auto}.nav-bar .nav-btn.active{background-color:#5A6378}.nav-bar .zoom-in .icon{background-position:0 -730px}.nav-bar .zoom-out .icon{background-position:0 -750px}.nav-bar .hand .icon{background-position:0 -770px}.nav-bar .camera .icon{background-position:0 -870px}.nav-bar .nav-trigger .icon{background-position:0 -845px}.nav-bar .zoom-pan{width:2px;height:70px;box-shadow:0 1px #E50000;position:relative;background:#fff;margin:3px auto;overflow:visible}.nav-bar .zoom-pan .origin{position:absolute;width:20px;height:8px;left:-9px;margin-top:-4px;background:0 0}.nav-bar .zoom-pan .origin:after{content:' ';display:block;width:6px;height:2px;background:#fff;left:7px;top:3px;position:absolute}.nav-bar .zoom-pan .indicator{position:absolute;width:8px;height:8px;left:-3px;background:#fff;border-radius:100%;margin-top:-4px}.nav-previewer{background:#fff;width:140px;height:120px;position:absolute;left:45px;bottom:30px;box-shadow:0 0 8px rgba(0,0,0,.2);border-radius:0 2px 2px 0;padding:1px;z-index:9;cursor:crosshair;transition:transform .7s .1s ease}.nav-previewer.grab{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing} \ No newline at end of file diff --git a/virtualroot/kitymind-editor/kityminder.editor.min.js b/virtualroot/kitymind-editor/kityminder.editor.min.js new file mode 100644 index 0000000..50bf374 --- /dev/null +++ b/virtualroot/kitymind-editor/kityminder.editor.min.js @@ -0,0 +1,12 @@ +/*! + * ==================================================== + * kityminder-editor - v1.0.55 - 2016-05-26 + * https://github.com/fex-team/kityminder-editor + * GitHub: https://github.com/fex-team/kityminder-editor + * Copyright (c) 2016 ; Licensed + * ==================================================== + */ + +!function(){function a(a){b.r([c[a]])}var b={r:function(a){if(b[a].inited)return b[a].value;if("function"!=typeof b[a].value)return b[a].inited=!0,b[a].value;var c={exports:{}},d=b[a].value(null,c.exports,c);if(b[a].inited=!0,b[a].value=d,void 0!==d)return d;for(var e in c.exports)if(c.exports.hasOwnProperty(e))return b[a].inited=!0,b[a].value=c.exports,c.exports}};b[0]={value:function(a,c,d){function e(a){g.push(a)}function f(a){this.selector=a;for(var b=0;be;e++)d.push(b.exportNode(a[e]));return g(c.getRegisterProtocol("json").encode(d))}var b=this.minder,c=window.kityminder.data;if(b.supportClipboardEvent&&!kity.Browser.gecko){var d=this.fsm,e=this.receiver,f=this.MimeType,g=f.getMimeTypeProtocol("application/km"),h=c.getRegisterProtocol("json").decode,i=[],j=function(c){if(document.activeElement==e.element){var f=c,g=d.state();switch(g){case"input":break;case"normal":var h=[].concat(b.getSelectedNodes());if(h.length){if(h.length>1){var i;if(h.sort(function(a,b){return a.getLevel()-b.getLevel()}),i=h[0].getLevel(),i!==h[h.length-1].getLevel()){var j,k=0,l=h.length,m=l-1;for(j=h[m];j.getLevel()!==i;){for(k=0;l>k&&h[k].getLevel()===i;){if(h[k].isAncestorOf(j)){h.splice(m,1);break}k++}m--,j=h[m]}}}var n=a(h);f.clipboardData.setData("text/plain",n)}c.preventDefault()}}},k=function(c){if(document.activeElement==e.element){if("normal"!==b.getStatus())return void c.preventDefault();var f=c,g=d.state();switch(g){case"input":break;case"normal":var h=b.getSelectedNodes();h.length&&(f.clipboardData.setData("text/plain",a(h)),b.execCommand("removenode")),c.preventDefault()}}},l=function(a){if(document.activeElement==e.element){if("normal"!==b.getStatus())return void a.preventDefault();var c=a,g=d.state(),j=c.clipboardData.getData("text/plain");switch(g){case"input":if(!f.isPureText(j))return void a.preventDefault();break;case"normal":var k=b.getSelectedNodes();if("application/km"===f.whichMimeType(j)){var l,m=h(f.getPureText(j));k.forEach(function(a){for(var c=m.length-1;c>=0;c--)l=b.createNode(null,a),b.importNode(l,m[c]),i.push(l),a.appendChild(l)}),b.select(i,!0),i=[],b.refresh()}else k.forEach(function(a){b.Text2Children(a,j)});a.preventDefault()}}};document.addEventListener("copy",j),document.addEventListener("cut",k),document.addEventListener("paste",l)}}return c.exports=d}},b[7]={value:function(a,b,c){function d(){var a;if(a="string"==typeof this.selector?document.querySelector(this.selector):this.selector,!a)throw new Error("Invalid selector: "+this.selector);a.classList.add("km-editor"),this.container=a}return c.exports=d}},b[8]={value:function(a,c,d){function e(){function a(){c.when("* -> drag",function(){}),c.when("drag -> *",function(a,b,c){})}function b(a,b){return a?void(o||(o=kity.requestFrame(function(a,b,c){return function(d){switch(a){case"left":c._viewDragger.move({x:-b,y:0},0);break;case"top":c._viewDragger.move({x:0,y:-b},0);break;case"right":c._viewDragger.move({x:b,y:0},0);break;case"bottom":c._viewDragger.move({x:0,y:b},0);break;default:return}d.next()}}(a,b,d)))):(t=u=!1,o&&kity.releaseFrame(o),void(o=null))}var c=this.fsm,d=this.minder,e=this.hotbox,g=this.receiver;g.element;a();var h,i,j,k,l,m,n,o,p=0,q=1,r=20,s=q,t=!1,u=!1;d.on("mousedown",function(a){s=p;var b=d.getPaper().container.getBoundingClientRect();h=a.originEvent.clientX,i=a.originEvent.clientY,n=b.top,j=b.width,k=b.height}),d.on("mousemove",function(a){return"drag"===c.state()&&s==p&&d.getSelectedNode()&&(Math.abs(h-a.originEvent.clientX)>r||Math.abs(i-a.originEvent.clientY)>r)&&(l=a.originEvent.clientX,m=a.originEvent.clientY-n,r>l?b("right",r-l):l>j-r?b("left",r+l-j):t=!0,r>m?b("bottom",m):m>k-r?b("top",r+m-k):u=!0,t&&u&&b(!1)),"drag"!==c.state()&&s===p&&d.getSelectedNode()&&(Math.abs(h-a.originEvent.clientX)>r||Math.abs(i-a.originEvent.clientY)>r)?("hotbox"===c.state()&&e.active(f.STATE_IDLE),c.jump("drag","user-drag")):void 0}),window.addEventListener("mouseup",function(){return s=q,"drag"===c.state()?(b(!1),c.jump("normal","drag-finish")):void 0},!1)}var f=b.r(2),g=b.r(19);new g("drag");return d.exports=e}},b[9]={value:function(a,c,d){function e(a,b,c,d){if(a.when!=b)return!1;if("*"!=a.enter&&a.enter!=d)return!1;if("*"==a.exit||a.exit==c)return!0}function f(a){var b=a,c=" - ",d=" -> ",f=[];this.jump=function(a,c){if(!c)throw new Error("Please tell fsm the reason to jump");var d,g,h=b,j=[h,a].concat([].slice.call(arguments,1));for(d=0;d {2}",c,h,a),d=0;d *");var e,g,h,i;if(g=a.split(c),2==g.length?e="before":(g=a.split(d),2==g.length&&(e="after")),!e)throw new Error("Illegal fsm condition: "+a);h=g[0],i=g[1],b.condition={when:e,exit:h,enter:i},f.push(b)}}function g(){this.fsm=new f("normal")}var h=b.r(19),i=new h("fsm");return d.exports=g}},b[10]={value:function(a,c,d){function e(){function a(){m=[],n=[],k=o.exportJson()}function b(){var a=o.exportJson(),b=f(a,k);if(b.length){for(m.push(b);m.length>q;)m.shift();return k=a,!0}}function c(){var a=o.exportJson();n.push(f(a,k)),k=a}function d(){l=!0;var a=m.pop();a&&(o.applyPatches(a),c()),l=!1}function e(){l=!0;var a=n.pop();a&&(o.applyPatches(a),b()),l=!1}function g(){l||b()&&(n=[])}function h(){return!!m.length}function i(){return!!n.length}function j(a){if(l){var b=a.patch;switch(b.express){case"node.add":o.select(b.node.getChild(b.index),!0);break;case"node.remove":case"data.replace":case"data.remove":case"data.add":o.select(b.node,!0)}}}var k,l,m,n,o=this.minder,p=this.hotbox,q=100;this.history={reset:a,undo:d,redo:e,hasUndo:h,hasRedo:i},a(),o.on("contentchange",g),o.on("import",a),o.on("patch",j);var r=p.state("main");r.button({position:"top",label:"撤销",key:"Ctrl + Z",enable:h,action:d,next:"idle"}),r.button({position:"top",label:"重做",key:"Ctrl + Y",enable:i,action:e,next:"idle"})}var f=b.r(22);return window.diff=f,d.exports=e}},b[11]={value:function(a,c,d){function e(){var a=this.fsm,b=this.minder,c=this.receiver,d=this.container,e=new f(d);e.setParentFSM(a),a.when("normal -> hotbox",function(a,c,d){var f,g=b.getSelectedNode();if(g){var h=g.getRenderBox();f={x:h.cx,y:h.cy}}e.active("main",f)}),a.when("normal -> normal",function(a,c,d,f){if("shortcut-handle"==d){var g=e.dispatch(f);g?f.preventDefault():b.dispatchKeyEvent(f)}}),a.when("modal -> normal",function(a,b,d,e){"import-text-finish"==d&&c.element.focus()}),this.hotbox=e}var f=b.r(2);return d.exports=e}},b[12]={value:function(a,c,d){function e(){function a(){l.when("* -> input",e),l.when("input -> *",function(a,b,c){switch(c){case"input-cancel":return j();case"input-commit":default:return i()}}),o.onblur(function(a){"input"==l.state()&&l.jump("normal","input-commit")}),m.on("beforemousedown",function(){"input"==l.state()&&l.jump("normal","input-commit")}),m.on("dblclick",function(){m.getSelectedNode()&&d()})}function b(){g.flaged&&p.classList.add("debug"),p.onmousedown=function(a){a.stopPropagation()},m.on("layoutallfinish viewchange viewchanged selectionchange",function(a){("viewchange"!=a.type||"input"==l.state())&&k()}),k()}function c(){n.state("main").button({position:"center",label:"编辑",key:"F2",enable:function(){return-1!=m.queryCommandState("text")},action:d})}function d(){var a=m.getSelectedNode();if(a){var b=p;if(p.innerText="","bold"===a.getData("font-weight")){var c=document.createElement("b");b.appendChild(c),b=c}if("italic"===a.getData("font-style")){var d=document.createElement("i");b.appendChild(d),b=d}b.innerText=m.queryCommandValue("text"),q&&o.fixFFCaretDisappeared(),l.jump("input","input-request"),o.selectAll()}}function e(){var a=m.getSelectedNode();if(a){var b=a.getData("font-size")||a.getStyle("font-size");p.style.fontSize=b+"px",p.style.minWidth=0,p.style.minWidth=p.clientWidth+"px",p.style.fontWeight=a.getData("font-weight")||"",p.style.fontStyle=a.getData("font-style")||"",p.classList.add("input"),p.focus()}}function f(a){for(var b,c,d,e="",f=" ",g="\n",h=/\S/,i=" ",k=new RegExp("( |"+String.fromCharCode(160)+")"),l=document.createElement("br"),n=!1,o=!1,p=0,q=a.length;q>p;p++)switch(b=a[p],Object.prototype.toString.call(b)){case"[object HTMLBRElement]":e+=g;break;case"[object Text]":if(b=b.textContent.replace(" "," "),h.test(b))e+=b;else for(d=b.length;d--;)k.test(b[d])?e+=i:b[d]===f&&(e+=f);break;case"[object HTMLElement]":switch(b.nodeName){case"B":n=!0;break;case"I":o=!0}[].splice.apply(a,[p,1].concat([].slice.call(b.childNodes))),q=a.length,p--;break;case"[object HTMLSpanElement]":[].splice.apply(a,[p,1].concat([].slice.call(b.childNodes))),q=a.length,p--;break;case"[object HTMLImageElement]":b.src&&/http(|s):\/\//.test(b.src)&&m.execCommand("Image",b.src,b.alt);break;case"[object HTMLDivElement]":c=[];for(var r=0,q=b.childNodes.length;q>r;r++)c.push(b.childNodes[r]);c.push(l),[].splice.apply(a,[p,1].concat(c)),q=a.length,p--;break;default:if(b&&b.childNodes.length){c=[];for(var r=0,q=b.childNodes.length;q>r;r++)c.push(b.childNodes[r]);c.push(l),[].splice.apply(a,[p,1].concat(c)),q=a.length,p--}else e+=b&&void 0!==b.textContent?b.textContent:""}return e=e.replace(/^\n*|\n*$/g,""),e=e.replace(new RegExp("(\n|\r|\n\r)( |"+String.fromCharCode(160)+"){4}","g"),"$1 "),m.getSelectedNode().setText(e),n?m.queryCommandState("bold")||m.execCommand("bold"):m.queryCommandState("bold")&&m.execCommand("bold"),o?m.queryCommandState("italic")||m.execCommand("italic"):m.queryCommandState("italic")&&m.execCommand("italic"),j(),e}function h(a,b){try{m.decodeData("text",b).then(function(b){function c(a,b,d){var e=b.data;a.setText(e.text||"");for(var f=b.children||[],g=0;g=65&&a.keyCode<=90?!0:a.keyCode>=48&&a.keyCode<=57?!0:108!=a.keyCode&&a.keyCode>=96&&a.keyCode<=111?!0:108!=a.keyCode&&a.keyCode>=96&&a.keyCode<=111?!0:229==a.keyCode||0===a.keyCode?!0:!1}function f(){var a=this.fsm,b=this.minder,c=this.receiver,d=this.container,f=c.element,h=this.hotbox;c.listen("normal",function(d){if(c.enable(),d.is("Space"))return d.preventDefault(),kity.Browser.safari&&(f.innerHTML=""),a.jump("hotbox","space-trigger");switch(d.type){case"keydown":if(b.getSelectedNode()){if(e(d))return a.jump("input","user-input")}else f.innerHTML="";a.jump("normal","shortcut-handle",d);break;case"keyup":}}),c.listen("hotbox",function(b){c.disable(),b.preventDefault();h.dispatch(b);return h.state()==g.STATE_IDLE&&"hotbox"==a.state()?a.jump("normal","hotbox-idle"):void 0}),c.listen("input",function(b){if(c.enable(),"keydown"==b.type){if(b.is("Enter"))return b.preventDefault(),a.jump("normal","input-commit");if(b.is("Esc"))return b.preventDefault(),a.jump("normal","input-cancel");(b.is("Tab")||b.is("Shift + Tab"))&&b.preventDefault()}else if("keyup"==b.type&&b.is("Esc"))return b.preventDefault(),a.jump("normal","input-cancel")});var i,j,k=2;d.addEventListener("mousedown",function(b){b.button==k&&b.preventDefault(),"hotbox"==a.state()?(h.active(g.STATE_IDLE),a.jump("normal","blur")):"normal"==a.state()&&b.button==k&&(i=b.clientX,j=b.clientY)},!1),d.addEventListener("mousewheel",function(b){"hotbox"==a.state()&&(h.active(g.STATE_IDLE),a.jump("normal","mousemove-blur"))},!1),d.addEventListener("contextmenu",function(a){a.preventDefault()}),d.addEventListener("mouseup",function(c){"normal"==a.state()&&c.button==k&&c.clientX==i&&c.clientY==j&&b.getSelectedNode()&&a.jump("hotbox","content-menu")},!1),h.$element.addEventListener("mousedown",function(a){a.stopPropagation()})}var g=b.r(2);return d.exports=f}},b[14]={value:function(a,c,d){function e(){var a=new f({enableKeyReceiver:!1,enableAnimation:!0});a.renderTo(this.selector),a.setTheme(null),a.select(a.getRoot(),!0),a.execCommand("text","中心主题"),this.minder=a}var f=b.r(4);return d.exports=e}},b[15]={value:function(a,b,c){function d(){function a(){d.fire("importNodeData")}function b(){d.fire("exportNodeData")}var c=this,d=this.minder,e=this.hotbox,f=this.fsm,g=e.state("main"),h=["前移:Alt+Up:ArrangeUp","下级:Tab|Insert:AppendChildNode","同级:Enter:AppendSiblingNode","后移:Alt+Down:ArrangeDown","删除:Delete|Backspace:RemoveNode","上级:Shift+Tab|Shift+Insert:AppendParentNode"],i=0;h.forEach(function(a){var b=a.split(":"),e=b.shift(),h=b.shift(),j=b.shift();g.button({position:"ring",label:e,key:h,action:function(){function a(){--i||c.editText(),d.off("layoutallfinish",a)}0===j.indexOf("Append")?(i++,d.execCommand(j,"分支主题"),d.on("layoutallfinish",a)):(d.execCommand(j),f.jump("normal","command-executed"))},enable:function(){return-1!=d.queryCommandState(j)}})}),g.button({position:"bottom",label:"导入节点",key:"Alt + V",enable:function(){var a=d.getSelectedNodes();return 1==a.length},action:a,next:"idle"}),g.button({position:"bottom",label:"导出节点",key:"Alt + C",enable:function(){var a=d.getSelectedNodes();return 1==a.length},action:b,next:"idle"})}return c.exports=d}},b[16]={value:function(a,b,c){function d(){var a=this.minder,b=this.hotbox,c=b.state("main");c.button({position:"top",label:"优先级",key:"P",next:"priority",enable:function(){return-1!=a.queryCommandState("priority")}});var d=b.state("priority");"123456789".replace(/./g,function(b){d.button({position:"ring",label:"P"+b,key:b,action:function(){a.execCommand("Priority",b)}})}),d.button({position:"center",label:"移除",key:"Del",action:function(){a.execCommand("Priority",0)}}),d.button({position:"top",label:"返回",key:"esc",next:"back"})}return c.exports=d}},b[17]={value:function(a,b,c){function d(){var a=this.minder,b=this.hotbox,c=b.state("main");c.button({position:"top",label:"进度",key:"G",next:"progress",enable:function(){return-1!=a.queryCommandState("progress")}});var d=b.state("progress");"012345678".replace(/./g,function(b){d.button({position:"ring",label:"G"+b,key:b,action:function(){a.execCommand("Progress",parseInt(b)+1)}})}),d.button({position:"center",label:"移除",key:"Del",action:function(){a.execCommand("Progress",0)}}),d.button({position:"top",label:"返回",key:"esc",next:"back"})}return c.exports=d}},b[18]={value:function(a,c,d){function e(){function a(a){a.is=function(a){for(var b=a.split("|"),c=0;c/g,">").replace(/\n/g,"
")}))}},b[22]={value:function(a,b,c){function d(a){return-1===a.indexOf("/")&&-1===a.indexOf("~")?a:a.replace(/~/g,"~0").replace(/\//g,"~1")}function e(a){return"object"==typeof a?JSON.parse(JSON.stringify(a)):a}function f(a,b,c,g){for(var i=h(b),j=h(a),k=!1,l=!1,m=j.length-1;m>=0;m--){var n=j[m],o=a[n];if(b.hasOwnProperty(n)){var p=b[n];"object"==typeof o&&null!=o&&"object"==typeof p&&null!=p?f(o,p,c,g+"/"+d(n)):o!=p&&(k=!0,c.push({op:"replace",path:g+"/"+d(n),value:e(p)}))}else c.push({op:"remove",path:g+"/"+d(n)}),l=!0}if(l||i.length!=j.length)for(var m=0;m
{{ 'appendchildnode' | lang:'ui/command' }}
{{ 'appendparentnode' | lang:'ui/command' }}
{{ 'appendsiblingnode' | lang:'ui/command' }}
"),a.put("ui/directive/arrange/arrange.html","
{{ 'arrangeup' | lang:'ui/command' }}
{{ 'arrangedown' | lang:'ui/command' }}
"),a.put("ui/directive/colorPanel/colorPanel.html",'
'),a.put("ui/directive/expandLevel/expandLevel.html",'
'),a.put("ui/directive/fontOperator/fontOperator.html",''),a.put("ui/directive/hyperLink/hyperLink.html",'
'),a.put("ui/directive/imageBtn/imageBtn.html",'
'),a.put("ui/directive/kityminderEditor/kityminderEditor.html",'
'),a.put("ui/directive/kityminderViewer/kityminderViewer.html",'
'),a.put("ui/directive/layout/layout.html",''),a.put("ui/directive/navigator/navigator.html",''), +a.put("ui/directive/noteBtn/noteBtn.html",'
'),a.put("ui/directive/noteEditor/noteEditor.html",'

请选择节点编辑备注

'),a.put("ui/directive/notePreviewer/notePreviewer.html",'
'),a.put("ui/directive/operation/operation.html","
{{ 'editnode' | lang:'ui/command' }}
{{ 'removenode' | lang:'ui/command' }}
"),a.put("ui/directive/priorityEditor/priorityEditor.html",'
'),a.put("ui/directive/progressEditor/progressEditor.html",'
'),a.put("ui/directive/resourceEditor/resourceEditor.html",'
'),a.put("ui/directive/searchBox/searchBox.html",''),a.put("ui/directive/searchBtn/searchBtn.html",'
'),a.put("ui/directive/selectAll/selectAll.html",'
'),a.put("ui/directive/styleOperator/styleOperator.html",''),a.put("ui/directive/templateList/templateList.html",''),a.put("ui/directive/themeList/themeList.html",''),a.put("ui/directive/topTab/topTab.html",''),a.put("ui/directive/undoRedo/undoRedo.html",'
'),a.put("ui/dialog/hyperlink/hyperlink.tpl.html",''),a.put("ui/dialog/imExportNode/imExportNode.tpl.html",''),a.put("ui/dialog/image/image.tpl.html",'')}]),angular.module("kityminderEditor").service("commandBinder",function(){return{bind:function(a,b,c){a.on("interactchange",function(){c.commandDisabled=-1===a.queryCommandState(b),c.commandValue=a.queryCommandValue(b),c.$apply()})}}}),angular.module("kityminderEditor").service("config",function(){return{_default:{ctrlPanelMin:250,ctrlPanelWidth:parseInt(window.localStorage.__dev_minder_ctrlPanelWidth)||250,dividerWidth:3,defaultLang:"zh-cn",zoom:[10,20,30,50,80,100,120,150,200]},getConfig:function(a){return void 0==a?this._default:this._default[a]||null},setConfig:function(a){this._default=a}}}),angular.module("kityminderEditor").service("lang.zh-cn",function(){return{"zh-cn":{template:{"default":"思维导图",tianpan:"天盘图",structure:"组织结构图",filetree:"目录组织图",right:"逻辑结构图","fish-bone":"鱼骨头图"},theme:{classic:"脑图经典","classic-compact":"紧凑经典",snow:"温柔冷光","snow-compact":"紧凑冷光",fish:"鱼骨图",wire:"线框","fresh-red":"清新红","fresh-soil":"泥土黄","fresh-green":"文艺绿","fresh-blue":"天空蓝","fresh-purple":"浪漫紫","fresh-pink":"脑残粉","fresh-red-compat":"紧凑红","fresh-soil-compat":"紧凑黄","fresh-green-compat":"紧凑绿","fresh-blue-compat":"紧凑蓝","fresh-purple-compat":"紧凑紫","fresh-pink-compat":"紧凑粉",tianpan:"经典天盘","tianpan-compact":"紧凑天盘"},maintopic:"中心主题",topic:"分支主题",panels:{history:"历史",template:"模板",theme:"皮肤",layout:"布局",style:"样式",font:"文字",color:"颜色",background:"背景",insert:"插入",arrange:"调整",nodeop:"当前",priority:"优先级",progress:"进度",resource:"资源",note:"备注",attachment:"附件",word:"文字"},error_message:{title:"哎呀,脑图出错了",err_load:"加载脑图失败",err_save:"保存脑图失败",err_network:"网络错误",err_doc_resolve:"文档解析失败",err_unknown:"发生了奇怪的错误",err_localfile_read:"文件读取错误",err_download:"文件下载失败",err_remove_share:"取消分享失败",err_create_share:"分享失败",err_mkdir:"目录创建失败",err_ls:"读取目录失败",err_share_data:"加载分享内容出错",err_share_sync_fail:"分享内容同步失败",err_move_file:"文件移动失败",err_rename:"重命名失败",unknownreason:"可能是外星人篡改了代码...",pcs_code:{3:"不支持此接口",4:"没有权限执行此操作",5:"IP未授权",110:"用户会话已过期,请重新登录",31001:"数据库查询错误",31002:"数据库连接错误",31003:"数据库返回空结果",31021:"网络错误",31022:"暂时无法连接服务器",31023:"输入参数错误",31024:"app id为空",31025:"后端存储错误",31041:"用户的cookie不是合法的百度cookie",31042:"用户未登陆",31043:"用户未激活",31044:"用户未授权",31045:"用户不存在",31046:"用户已经存在",31061:"文件已经存在",31062:"文件名非法",31063:"文件父目录不存在",31064:"无权访问此文件",31065:"目录已满",31066:"文件不存在",31067:"文件处理出错",31068:"文件创建失败",31069:"文件拷贝失败",31070:"文件删除失败",31071:"不能读取文件元信息",31072:"文件移动失败",31073:"文件重命名失败",31079:"未找到文件MD5,请使用上传API上传整个文件。",31081:"superfile创建失败",31082:"superfile 块列表为空",31083:"superfile 更新失败",31101:"tag系统内部错误",31102:"tag参数错误",31103:"tag系统错误",31110:"未授权设置此目录配额",31111:"配额管理只支持两级目录",31112:"超出配额",31113:"配额不能超出目录祖先的配额",31114:"配额不能比子目录配额小",31141:"请求缩略图服务失败",31201:"签名错误",31202:"文件不存在",31203:"设置acl失败",31204:"请求acl验证失败",31205:"获取acl失败",31206:"acl不存在",31207:"bucket已存在",31208:"用户请求错误",31209:"服务器错误",31210:"服务器不支持",31211:"禁止访问",31212:"服务不可用",31213:"重试出错",31214:"上传文件data失败",31215:"上传文件meta失败",31216:"下载文件data失败",31217:"下载文件meta失败",31218:"容量超出限额",31219:"请求数超出限额",31220:"流量超出限额",31298:"服务器返回值KEY非法",31299:"服务器返回值KEY不存在"}},ui:{shared_file_title:"[分享的] {0} (只读)",load_share_for_edit:"正在加载分享的文件...",share_sync_success:"分享内容已同步",recycle_clear_confirm:"确认清空回收站么?清空后的文件无法恢复。",fullscreen_exit_hint:"按 Esc 或 F11 退出全屏",error_detail:"详细信息",copy_and_feedback:"复制并反馈",move_file_confirm:'确定把 "{0}" 移动到 "{1}" 吗?',rename:"重命名",rename_success:"{0} 重命名成功",move_success:"{0} 移动成功到 {1}",command:{appendsiblingnode:"插入同级主题",appendparentnode:"插入上级主题",appendchildnode:"插入下级主题",removenode:"删除",editnode:"编辑",arrangeup:"上移",arrangedown:"下移",resetlayout:"整理布局",expandtoleaf:"展开全部节点",expandtolevel1:"展开到一级节点",expandtolevel2:"展开到二级节点",expandtolevel3:"展开到三级节点",expandtolevel4:"展开到四级节点",expandtolevel5:"展开到五级节点",expandtolevel6:"展开到六级节点",fullscreen:"全屏",outline:"大纲"},search:"搜索",expandtoleaf:"展开",back:"返回",undo:"撤销 (Ctrl + Z)",redo:"重做 (Ctrl + Y)",tabs:{idea:"思路",appearence:"外观",view:"视图"},quickvisit:{"new":"新建 (Ctrl + Alt + N)",save:"保存 (Ctrl + S)",share:"分享 (Ctrl + Alt + S)",feedback:"反馈问题(F1)",editshare:"编辑"},menu:{mainmenutext:"百度脑图",newtab:"新建",opentab:"打开",savetab:"保存",sharetab:"分享",preferencetab:"设置",helptab:"帮助",feedbacktab:"反馈",recenttab:"最近使用",netdisktab:"百度云存储",localtab:"本地文件",drafttab:"草稿箱",downloadtab:"导出到本地",createsharetab:"当前脑图",managesharetab:"已分享",newheader:"新建脑图",openheader:"打开",saveheader:"保存到",draftheader:"草稿箱",shareheader:"分享我的脑图",downloadheader:"导出到指定格式",preferenceheader:"偏好设置",helpheader:"帮助",feedbackheader:"反馈"},mydocument:"我的文档",emptydir:"目录为空!",pickfile:"选择文件...",acceptfile:"支持的格式:{0}",dropfile:"或将文件拖至此处",unsupportedfile:"不支持的文件格式",untitleddoc:"未命名文档",overrideconfirm:"{0} 已存在,确认覆盖吗?",checklogin:"检查登录状态中...",loggingin:"正在登录...",recent:"最近打开",clearrecent:"清空",clearrecentconfirm:"确认清空最近文档列表?",cleardraft:"清空",cleardraftconfirm:"确认清空草稿箱?",none_share:"不分享",public_share:"公开分享",password_share:"私密分享",email_share:"邮件邀请",url_share:"脑图 URL 地址:",sns_share:"社交网络分享:",sns_share_text:"“{0}” - 我用百度脑图制作的思维导图,快看看吧!(地址:{1})",none_share_description:"不分享当前脑图",public_share_description:"创建任何人可见的分享",share_button_text:"创建",password_share_description:"创建需要密码才可见的分享",email_share_description:"创建指定人可见的分享,您还可以允许他们编辑",ondev:"敬请期待!",create_share_failed:"分享失败:{0}",remove_share_failed:"删除失败:{1}",copy:"复制",copied:"已复制",shared_tip:"当前脑图被 {0} 分享,你可以修改之后保存到自己的网盘上或再次分享",current_share:"当前脑图",manage_share:"我的分享",share_remove_action:"不分享该脑图",share_view_action:"打开分享地址",share_edit_action:"编辑分享的文件",login:"登录",logout:"注销",switchuser:"切换账户",userinfo:"个人信息",gotonetdisk:"我的网盘",requirelogin:'请 后使用',saveas:"保存为",filename:"文件名",fileformat:"保存格式",save:"保存",mkdir:"新建目录",recycle:"回收站",newdir:"未命名目录",bold:"加粗",italic:"斜体",forecolor:"字体颜色",fontfamily:"字体",fontsize:"字号",layoutstyle:"主题",node:"节点操作",saveto:"另存为",hand:"允许拖拽",camera:"定位根节点","zoom-in":"放大(Ctrl+)","zoom-out":"缩小(Ctrl-)",markers:"标签",resource:"资源",help:"帮助",preference:"偏好设置",expandnode:"展开到叶子",collapsenode:"收起到一级节点",template:"模板",theme:"皮肤",clearstyle:"清除样式",copystyle:"复制样式",pastestyle:"粘贴样式",appendsiblingnode:"同级主题",appendchildnode:"下级主题",arrangeup:"前调",arrangedown:"后调",editnode:"编辑",removenode:"移除",priority:"优先级",progress:{p1:"未开始",p2:"完成 1/8",p3:"完成 1/4",p4:"完成 3/8",p5:"完成一半",p6:"完成 5/8",p7:"完成 3/4",p8:"完成 7/8",p9:"已完成",p0:"清除进度"},link:"链接",image:"图片",note:"备注",insertlink:"插入链接",insertimage:"插入图片",insertnote:"插入备注",removelink:"移除已有连接",removeimage:"移除已有图片",removenote:"移除已有备注",resetlayout:"整理",justnow:"刚刚",minutesago:"{0} 分钟前",hoursago:"{0} 小时前",yesterday:"昨天",daysago:"{0} 天前",longago:"很久之前",redirect:"您正在打开连接 {0},百度脑图不能保证连接的安全性,是否要继续?",navigator:"导航器",unsavedcontent:"当前文件还没有保存到网盘:\n\n{0}\n\n虽然未保存的数据会缓存在草稿箱,但是清除浏览器缓存会导致草稿箱清除。",shortcuts:"快捷键",contact:"联系与反馈",email:"邮件组",qq_group:"QQ 群",github_issue:"Github",baidu_tieba:"贴吧",clipboardunsupported:"您的浏览器不支持剪贴板,请使用快捷键复制",load_success:"{0} 加载成功",save_success:"{0} 已保存于 {1}",autosave_success:"{0} 已自动保存于 {1}",selectall:"全选",selectrevert:"反选",selectsiblings:"选择兄弟节点",selectlevel:"选择同级节点",selectpath:"选择路径",selecttree:"选择子树"},popupcolor:{clearColor:"清空颜色",standardColor:"标准颜色",themeColor:"主题颜色"},dialogs:{markers:{"static":{lang_input_text:"文本内容:",lang_input_url:"链接地址:",lang_input_title:"标题:",lang_input_target:"是否在新窗口:"},priority:"优先级",none:"无",progress:{title:"进度",notdone:"未完成",done1:"完成 1/8",done2:"完成 1/4",done3:"完成 3/8",done4:"完成 1/2",done5:"完成 5/8",done6:"完成 3/4",done7:"完成 7/8",done:"已完成"}},help:{},hyperlink:{},image:{},resource:{}},hyperlink:{hyperlink:"链接...",unhyperlink:"移除链接"},image:{image:"图片...",removeimage:"移除图片"},marker:{marker:"进度/优先级..."},resource:{resource:"资源..."}}}}),angular.module("kityminderEditor").service("memory",function(){function a(a){var b=!1;if(a)if(a.code)switch(a.code){case 22:b=!0;break;case 1014:"NS_ERROR_DOM_QUOTA_REACHED"===a.name&&(b=!0)}else-2147024882===a.number&&(b=!0);return b}return{get:function(a){var b=window.localStorage.getItem(a);return null||JSON.parse(b)},set:function(b,c){try{return window.localStorage.setItem(b,JSON.stringify(c)),!0}catch(d){if(a(d))return!1}},remove:function(a){var b=window.localStorage.getItem(a);return window.localStorage.removeItem(a),b},clear:function(){window.localStorage.clear()}}}),angular.module("kityminderEditor").service("minder.service",function(){function a(a){c.push(a)}function b(){c.forEach(function(a){a.apply(this,arguments)})}var c=[];return{registerEvent:a,executeCallback:b}}),angular.module("kityminderEditor").service("resourceService",["$document",function(a){var b=null;this.open=function(e){b||(a.bind("click",c),a.bind("keydown",d)),b&&b!==e&&(b.resourceListOpen=!1),b=e},this.close=function(e){b===e&&(b=null,a.unbind("click",c),a.unbind("keydown",d))};var c=function(a){if(b){var c=b.getToggleElement();a&&c&&c[0].contains(a.target)||b.$apply(function(){console.log("to close the resourcelist"),b.resourceListOpen=!1})}},d=function(a){27===a.which&&(b.focusToggleElement(),c())}}]),angular.module("kityminderEditor").service("revokeDialog",["$modal","minder.service",function(a,b){return b.registerEvent(function(){var b=window.minder,c=window.editor,d=c.hotbox.getParentFSM();b.on("importNodeData",function(){d.jump("modal","import-text-modal");var e=a.open({animation:!0,templateUrl:"ui/dialog/imExportNode/imExportNode.tpl.html",controller:"imExportNode.ctrl",size:"md",resolve:{title:function(){return"导入节点"},defaultValue:function(){return""},type:function(){return"import"}}});e.result.then(function(a){try{b.Text2Children(b.getSelectedNode(),a)}catch(e){alert(e)}d.jump("normal","import-text-finish"),c.receiver.selectAll()},function(){d.jump("normal","import-text-finish"),c.receiver.selectAll()})}),b.on("exportNodeData",function(){d.jump("modal","export-text-modal");var e=a.open({animation:!0,templateUrl:"ui/dialog/imExportNode/imExportNode.tpl.html",controller:"imExportNode.ctrl",size:"md",resolve:{title:function(){return"导出节点"},defaultValue:function(){var a=b.getSelectedNode(),c=window.kityminder.data.getRegisterProtocol("text").Node2Text;return c(a)},type:function(){return"export"}}});e.result.then(function(a){d.jump("normal","export-text-finish"),c.receiver.selectAll()},function(){d.jump("normal","export-text-finish"),c.receiver.selectAll()})})}),{}}]),angular.module("kityminderEditor").service("valueTransfer",function(){return{}}),angular.module("kityminderEditor").filter("commandState",function(){return function(a,b){return a.queryCommandState(b)}}).filter("commandValue",function(){return function(a,b){return a.queryCommandValue(b)}}),angular.module("kityminderEditor").filter("lang",["config","lang.zh-cn",function(a,b){return function(c,d){var e=a.getConfig("defaultLang");if(void 0==b[e])return"未发现对应语言包,请检查 lang.xxx.service.js!";var f=b[e];return d.split("/").forEach(function(a,b){f=f[a]}),f[c]||null}}]),angular.module("kityminderEditor").controller("hyperlink.ctrl",["$scope","$modalInstance","link",function(a,b,c){a.R_URL=/(http|ftp|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:\/~\+#]*[\w\-\@?^=%&\/~\+#])?/,a.url=c.url||"",a.title=c.title||"",setTimeout(function(){var b=$("#link-url");b.focus(),b[0].setSelectionRange(0,a.url.length)},30),a.shortCut=function(b){b.stopPropagation(),13==b.keyCode?a.ok():27==b.keyCode&&a.cancel()},a.ok=function(){if(a.R_URL.test(a.url))b.close({url:a.url,title:a.title});else{a.urlPassed=!1;var c=$("#link-url");c.focus(),c[0].setSelectionRange(0,a.url.length)}editor.receiver.selectAll()},a.cancel=function(){b.dismiss("cancel"),editor.receiver.selectAll()}}]),angular.module("kityminderEditor").controller("imExportNode.ctrl",["$scope","$modalInstance","title","defaultValue","type",function(a,b,c,d,e){function f(a){var b=0;if(document.selection){a.focus();var c=document.selection.createRange();c.moveStart("character",-a.value.length),b=c.text.length}else(a.selectionStart||"0"==a.selectionStart)&&(b=a.selectionStart);return b}function g(a,b){if(a.setSelectionRange)a.focus(),a.setSelectionRange(b,b);else if(a.createTextRange){var c=a.createTextRange();c.collapse(!0),c.moveEnd("character",b),c.moveStart("character",b),c.select()}}a.title=c,a.value=d,a.type=e,a.ok=function(){""!=a.value&&(b.close(a.value),editor.receiver.selectAll())},a.cancel=function(){b.dismiss("cancel"),editor.receiver.selectAll()},setTimeout(function(){$(".single-input").focus(),$(".single-input")[0].setSelectionRange(0,d.length)},30),a.shortCut=function(b){if(b.stopPropagation(),27==b.keyCode&&a.cancel(),8==b.keyCode&&"export"==e&&b.preventDefault(),9==b.keyCode){b.preventDefault();var c=b.target,d=f(c),h=c.value;c.value=h.substr(0,d)+" "+h.substr(d),g(c,d+1)}}}]),angular.module("kityminderEditor").controller("image.ctrl",["$http","$scope","$modalInstance","image",function(a,b,c,d){function e(){var c=b.data.searchKeyword2,d=new Date,e="http://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&fp=result&queryWord="+c+"&cl=2&lm=-1&ie=utf-8&oe=utf-8&st=-1&ic=0&word="+c+"&face=0&istype=2&nc=1&pn=60&rn=60&gsm=3c&"+d.getTime()+"=&callback=JSON_CALLBACK";return a.jsonp(e)}b.data={list:[],url:d.url||"",title:d.title||"",R_URL:/^https?\:\/\/(\w+\.)+\w+/},setTimeout(function(){var a=$("#image-url");a.focus(),a[0].setSelectionRange(0,b.data.url.length)},300),b.searchImage=function(){b.list=[],e().success(function(a){if(a&&a.data)for(var c=0;c>1;a.push("M",b,c+f,"a",f,f,0,1,1,0,.01,"z")};default:return function(a,b,c,d,e){a.push("M",b,c,"h",d,"v",e,"h",-d,"z")}}}function g(){function a(a,b){var c=p;a.x=-a.x,a.y=-a.y;var d=minder.getPaper().getViewPortMatrix();c=d.transformBox(c);var e=a.offset(c.width/2,c.height/2);minder.getViewDragger().moveTo(e,b)}var b=!1;k.on("mousedown",function(c){b=!0,a(c.getPosition("top"),200),j.addClass("grab")}),k.on("mousemove",function(c){b&&a(c.getPosition("top"))}),$(window).on("mouseup",function(){b=!1,j.removeClass("grab")})}function h(){var a=minder.getRenderContainer().getBoundaryBox();o=a;var b=30;k.setViewBox(a.x-b-.5,a.y-b-.5,a.width+2*b+1,a.height+2*b+1);var c=[],d=[];minder.getRoot().traverse(function(a){var b=a.getLayoutBox();q(c,b.x,b.y,b.width,b.height),a.getConnection()&&a.parent&&a.parent.isExpanded()&&d.push(a.getConnection().getPathData())}),k.setStyle("background",minder.getStyle("background")),c.length?l.fill(minder.getStyle("root-background")).setPathData(c):l.setPathData(null),d.length?m.stroke(minder.getStyle("connect-color"),"0.5%").setPathData(d):m.setPathData(null),i()}function i(){p=minder.getViewDragger().getView(),n.setBox(p.intersect(o))}minder.setDefaultOptions({zoom:b.getConfig("zoom")}),c.isNavOpen=!a.get("navigator-hidden"),c.getZoomRadio=function(a){var b=minder.getOption("zoom"),c=b[0],d=b[b.length-1],e=d-c;return 1-(a-c)/e},c.getHeight=function(a){var b=$(".zoom-pan").height();return c.getZoomRadio(a)*b},c.zoom=100,minder.on("zoom",function(a){c.zoom=a.zoom}),c.toggleNavOpen=function(){c.isNavOpen=!c.isNavOpen,a.set("navigator-hidden",!c.isNavOpen),c.isNavOpen?(d(),h(),i()):e()},setTimeout(function(){c.isNavOpen?(d(),h(),i()):e()},0);var j=$(".nav-previewer"),k=new kity.Paper(j[0]),l=k.put(new kity.Path),m=k.put(new kity.Path),n=k.put(new kity.Rect(100,100).stroke("red","1%")),o=new kity.Box,p=new kity.Box,q=f(minder.getTheme());minder.on("themechange",function(a){q=f(a.theme)}),g()}}}]),angular.module("kityminderEditor").directive("noteBtn",["valueTransfer",function(a){return{restrict:"E",templateUrl:"ui/directive/noteBtn/noteBtn.html",scope:{minder:"="},replace:!0,link:function(b){b.minder;b.addNote=function(){a.noteEditorOpen=!0}}}}]),angular.module("kityminderEditor").directive("noteEditor",["valueTransfer",function(a){return{restrict:"A",templateUrl:"ui/directive/noteEditor/noteEditor.html",scope:{minder:"="},replace:!0,controller:["$scope",function(b){function c(){var a=b.noteEnabled=-1!=e.queryCommandState("note"),c=e.queryCommandValue("note")||"";a&&(b.noteContent=c),f=!0,b.$apply(),f=!1}var d,e=b.minder,f=!1;b.codemirrorLoaded=function(a){d=b.cmEditor=a,a.setSize("100%","100%")},b.$watch("noteContent",function(a){var b=-1!=e.queryCommandState("note");a&&b&&!f&&e.execCommand("note",a),setTimeout(function(){d.refresh()})});var g=function(){return a.noteEditorOpen};b.$watch(g,function(c,e){c&&setTimeout(function(){d.refresh(),d.focus()}),b.noteEditorOpen=a.noteEditorOpen},!0),b.closeNoteEditor=function(){a.noteEditorOpen=!1,editor.receiver.selectAll()},e.on("interactchange",c)}]}}]),angular.module("kityminderEditor").directive("notePreviewer",["$sce","valueTransfer",function(a,b){return{restrict:"A",templateUrl:"ui/directive/notePreviewer/notePreviewer.html",link:function(b,c){function d(c,d){var e=c.getRenderer("NoteIconRenderer").getRenderShape(),h=e.getRenderBox("screen"),j=c.getData("note");g[0].scrollTop=0;var k=marked(j);d&&(k=k.replace(new RegExp("("+d+")","ig"),'$1')),b.noteContent=a.trustAsHtml(k),b.$apply();var l=$(f[0]).width(),m=$(f[0]).height(),n=$(g).outerWidth(),o=$(g).outerHeight(),p=h.cx-n/2-f[0].offsetLeft,q=h.bottom+10-f[0].offsetTop;0>p&&(p=10),p+n>l&&(p=h.left-n-10-f[0].offsetLeft),q+o>m&&(q=h.top-o-10-f[0].offsetTop),b.previewerStyle={left:Math.round(p)+"px",top:Math.round(q)+"px"},b.showNotePreviewer=!0;var r=g[0].querySelector(".highlight");r&&r.scrollIntoView(),i=!0,b.$apply()}var e=b.minder,f=c.parent(),g=c.children();b.showNotePreviewer=!1,marked.setOptions({gfm:!0,tables:!0,breaks:!0,pedantic:!1,sanitize:!0,smartLists:!0,smartypants:!1});var h;e.on("shownoterequest",function(a){h=setTimeout(function(){d(a.node,a.keyword)},300)}),e.on("hidenoterequest",function(){clearTimeout(h),b.showNotePreviewer=!1});var i=!1;$(document).on("mousedown mousewheel DOMMouseScroll",function(){i&&(b.showNotePreviewer=!1,b.$apply())}),c.on("mousedown mousewheel DOMMouseScroll",function(a){a.stopPropagation()})}}}]),angular.module("kityminderEditor").directive("operation",function(){return{restrict:"E",templateUrl:"ui/directive/operation/operation.html",scope:{minder:"="},replace:!0,link:function(a){a.editNode=function(){var a=editor.receiver.element,b=editor.fsm,c=editor.receiver;a.innerText=minder.queryCommandValue("text"),b.jump("input","input-request"),c.selectAll()}}}}),angular.module("kityminderEditor").directive("priorityEditor",["commandBinder",function(a){return{restrict:"E",templateUrl:"ui/directive/priorityEditor/priorityEditor.html",scope:{minder:"="},replace:!0,link:function(b){for(var c=b.minder,d=[],e=0;10>e;e++)d.push(e);a.bind(c,"priority",b),b.priorities=d,b.getPriorityTitle=function(a){switch(a){case 0:return"移除优先级";default:return"优先级"+a}}}}}]),angular.module("kityminderEditor").directive("progressEditor",["commandBinder",function(a){return{restrict:"E",templateUrl:"ui/directive/progressEditor/progressEditor.html",scope:{minder:"="},replace:!0,link:function(b){for(var c=b.minder,d=[],e=0;10>e;e++)d.push(e);a.bind(c,"progress",b),b.progresses=d,b.getProgressTitle=function(a){switch(a){case 0:return"移除进度";case 1:return"未开始";case 9:return"全部完成";default:return"完成"+(a-1)+"/8"}}}}}]),angular.module("kityminderEditor").directive("resourceEditor",function(){return{restrict:"E",templateUrl:"ui/directive/resourceEditor/resourceEditor.html",scope:{minder:"="},replace:!0,controller:["$scope",function(a){var b=a.minder,c=!1;b.on("interactchange",function(){var d=a.enabled=-1!=b.queryCommandState("resource"),e=d?b.queryCommandValue("resource"):[],f=b.getUsedResource().map(function(a){return{name:a,selected:e.indexOf(a)>-1}});a.used=f,c=!0,a.$apply(),c=!1}),a.$watch("used",function(a){if(-1!=b.queryCommandState("resource")&&a){var d=a.filter(function(a){return a.selected}).map(function(a){return a.name});if(c)return;b.execCommand("resource",d)}},!0),a.resourceColor=function(a){return b.getResourceColor(a).toHEX()},a.addResource=function(c){var d=b.queryCommandValue("resource");c&&/\S/.test(c)&&(-1==d.indexOf(c)&&a.used.push({name:c,selected:!0}),a.newResourceName=null)}}]}}).directive("clickAnywhereButHere",["$document",function(a){return{link:function(b,c,d){var e=function(a){var c=$("#resource-dropdown").has(a.target).length>0,e=$("#resource-dropdown")==a.target,f=c||e;f||b.$apply(d.clickAnywhereButHere)};b.$watch(d.isActive,function(b,c){b!==c&&1==b?a.bind("click",e):b!==c&&0==b&&a.unbind("click",e)})}}}]),angular.module("kityminderEditor").directive("searchBox",function(){return{restrict:"A",templateUrl:"ui/directive/searchBox/searchBox.html",scope:{minder:"="},replace:!0,controller:["$scope",function(a){function b(b){if(13==b.keyCode){var d=b.shiftKey?"prev":"next";g(a.keyword,d)}27==b.keyCode&&c()}function c(){$("#search-input").blur(),a.showSearch=!1,h.fire("hidenoterequest"),i.receiver.selectAll()}function d(){a.showSearch=!0,setTimeout(function(){$("#search-input").focus()},10),a.keyword&&$("#search-input")[0].setSelectionRange(0,a.keyword.length)}function e(){j=[],h.getRoot().traverse(function(a){j.push(a)})}function f(a){k=[];for(var b=0;b Date: Mon, 30 Dec 2019 13:22:15 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=96=B0=E5=BB=BA=20mind-map?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/mind-map/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/mind-map/.keep diff --git a/static/mind-map/.keep b/static/mind-map/.keep new file mode 100644 index 0000000..e69de29 -- Gitee From b298a34585d73b8dd1fa1575b963be48e7119c66 Mon Sep 17 00:00:00 2001 From: cnspray Date: Mon, 30 Dec 2019 13:24:09 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E7=99=BE=E5=BA=A6=E8=84=91=E5=9B=BEkitym?= =?UTF-8?q?inder-core.js=E5=BC=95=E7=94=A8=E6=96=87=E4=BB=B6=20=E7=99=BE?= =?UTF-8?q?=E5=BA=A6=E8=84=91=E5=9B=BEkityminder-core.js=E5=BC=95=E7=94=A8?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8C=E5=85=B6=E4=B8=ADmindmap=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E7=94=9F=E6=88=90json,=E7=BB=91=E5=AE=9A=E8=84=91?= =?UTF-8?q?=E5=9B=BE=E4=BA=8B=E4=BB=B6=E7=AD=89=E6=93=8D=E4=BD=9C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/mind-map/kity.min.js | 12 ++ static/mind-map/kityminder.core.min.js | 10 ++ static/mind-map/mindmap.css | 110 +++++++++++++++++ static/mind-map/mindmap.min.js | 161 +++++++++++++++++++++++++ 4 files changed, 293 insertions(+) create mode 100644 static/mind-map/kity.min.js create mode 100644 static/mind-map/kityminder.core.min.js create mode 100644 static/mind-map/mindmap.css create mode 100644 static/mind-map/mindmap.min.js diff --git a/static/mind-map/kity.min.js b/static/mind-map/kity.min.js new file mode 100644 index 0000000..c59e683 --- /dev/null +++ b/static/mind-map/kity.min.js @@ -0,0 +1,12 @@ +/*! + * ==================================================== + * kity - v2.0.4 - 2016-08-22 + * https://github.com/fex-team/kity + * GitHub: https://github.com/fex-team/kity.git + * Copyright (c) 2016 Baidu FEX; Licensed BSD + * ==================================================== + */ + +!function(){function use(a){_p.r([moduleMapping[a]])}var _p={r:function(a){if(_p[a].inited)return _p[a].value;if("function"!=typeof _p[a].value)return _p[a].inited=!0,_p[a].value;var b={exports:{}},c=_p[a].value(null,b.exports,b);if(_p[a].inited=!0,_p[a].value=c,void 0!==c)return c;for(var d in b.exports)if(b.exports.hasOwnProperty(d))return _p[a].inited=!0,_p[a].value=b.exports,b.exports}};_p[0]={value:function(a){function b(a){var b=parseFloat(a,10);return/ms/.test(a)?b:/s/.test(a)?1e3*b:/min/.test(a)?60*b*1e3:b}var c=_p.r(8),d=_p.r(1),e=_p.r(11).createClass("Animator",{constructor:function(a,b,c){if(1==arguments.length){var d=arguments[0];this.beginValue=d.beginValue,this.finishValue=d.finishValue,this.setter=d.setter}else this.beginValue=a,this.finishValue=b,this.setter=c},start:function(a,c,d,e,f){2===arguments.length&&"object"==typeof c&&(d=c.easing,e=c.delay,f=c.callback,c=c.duration),4===arguments.length&&"function"==typeof e&&(f=e,e=0);var g=this.create(a,c,d,f);return e=b(e),e>0?setTimeout(function(){g.play()},e):g.play(),g},create:function(a,f,g,h){var i;return f=f&&b(f)||e.DEFAULT_DURATION,g=g||e.DEFAULT_EASING,"string"==typeof g&&(g=d[g]),i=new c(this,a,f,g),"function"==typeof h&&i.on("finish",h),i},reverse:function(){return new e(this.finishValue,this.beginValue,this.setter)}});e.DEFAULT_DURATION=300,e.DEFAULT_EASING="linear";var f=_p.r(61);return _p.r(11).extendClass(f,{animate:function(a,b,c,d,e){function f(){g.shift(),g.length&&setTimeout(g[0].t.play.bind(g[0].t),g[0].d)}var g=this._KityAnimateQueue=this._KityAnimateQueue||[],h=a.create(this,b,c,e);return h.on("finish",f),g.push({t:h,d:d}),1==g.length&&setTimeout(h.play.bind(h),d),this},timeline:function(){return this._KityAnimateQueue[0].t},stop:function(){var a=this._KityAnimateQueue;if(a)for(;a.length;)a.shift().t.stop();return this}}),e}},_p[1]={value:function(a,b,c){var d={linear:function(a,b,c,d){return c*(a/d)+b},swing:function(a,b,c,e){return d.easeOutQuad(a,b,c,e)},ease:function(a,b,c,e){return d.easeInOutCubic(a,b,c,e)},easeInQuad:function(a,b,c,d){return c*(a/=d)*a+b},easeOutQuad:function(a,b,c,d){return-c*(a/=d)*(a-2)+b},easeInOutQuad:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a+b:-c/2*(--a*(a-2)-1)+b},easeInCubic:function(a,b,c,d){return c*(a/=d)*a*a+b},easeOutCubic:function(a,b,c,d){return c*((a=a/d-1)*a*a+1)+b},easeInOutCubic:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a+b:c/2*((a-=2)*a*a+2)+b},easeInQuart:function(a,b,c,d){return c*(a/=d)*a*a*a+b},easeOutQuart:function(a,b,c,d){return-c*((a=a/d-1)*a*a*a-1)+b},easeInOutQuart:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a*a+b:-c/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(a,b,c,d){return c*(a/=d)*a*a*a*a+b},easeOutQuint:function(a,b,c,d){return c*((a=a/d-1)*a*a*a*a+1)+b},easeInOutQuint:function(a,b,c,d){return(a/=d/2)<1?c/2*a*a*a*a*a+b:c/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(a,b,c,d){return-c*Math.cos(a/d*(Math.PI/2))+c+b},easeOutSine:function(a,b,c,d){return c*Math.sin(a/d*(Math.PI/2))+b},easeInOutSine:function(a,b,c,d){return-c/2*(Math.cos(Math.PI*a/d)-1)+b},easeInExpo:function(a,b,c,d){return 0===a?b:c*Math.pow(2,10*(a/d-1))+b},easeOutExpo:function(a,b,c,d){return a==d?b+c:c*(-Math.pow(2,-10*a/d)+1)+b},easeInOutExpo:function(a,b,c,d){return 0===a?b:a==d?b+c:(a/=d/2)<1?c/2*Math.pow(2,10*(a-1))+b:c/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(a,b,c,d){return-c*(Math.sqrt(1-(a/=d)*a)-1)+b},easeOutCirc:function(a,b,c,d){return c*Math.sqrt(1-(a=a/d-1)*a)+b},easeInOutCirc:function(a,b,c,d){return(a/=d/2)<1?-c/2*(Math.sqrt(1-a*a)-1)+b:c/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(a,b,c,d){var e=1.70158,f=0,g=c;return 0===a?b:1==(a/=d)?b+c:(f||(f=.3*d),ga?-.5*(g*Math.pow(2,10*(a-=1))*Math.sin((a*d-e)*(2*Math.PI)/f))+b:g*Math.pow(2,-10*(a-=1))*Math.sin((a*d-e)*(2*Math.PI)/f)*.5+c+b},easeInBack:function(a,b,c,d,e){return void 0==e&&(e=1.70158),c*(a/=d)*a*((e+1)*a-e)+b},easeOutBack:function(a,b,c,d,e){return void 0==e&&(e=1.70158),c*((a=a/d-1)*a*((e+1)*a+e)+1)+b},easeInOutBack:function(a,b,c,d,e){return void 0==e&&(e=1.70158),(a/=d/2)<1?c/2*(a*a*(((e*=1.525)+1)*a-e))+b:c/2*((a-=2)*a*(((e*=1.525)+1)*a+e)+2)+b},easeInBounce:function(a,b,c,e){return c-d.easeOutBounce(e-a,0,c,e)+b},easeOutBounce:function(a,b,c,d){return(a/=d)<1/2.75?c*(7.5625*a*a)+b:2/2.75>a?c*(7.5625*(a-=1.5/2.75)*a+.75)+b:2.5/2.75>a?c*(7.5625*(a-=2.25/2.75)*a+.9375)+b:c*(7.5625*(a-=2.625/2.75)*a+.984375)+b},easeInOutBounce:function(a,b,c,e){return e/2>a?.5*d.easeInBounce(2*a,0,c,e)+b:.5*d.easeOutBounce(2*a-e,0,c,e)+.5*c+b}};return d}},_p[2]={value:function(a,b){function c(a){1===l.push(a)&&(i=j(d))}function d(){var a=l;for(l=[];a.length;)h(a.pop());i=0}function e(a){var b=g(a);return c(b),b}function f(a){var b=l.indexOf(a);~b&&l.splice(b,1),0===l.length&&k(i)}function g(a){var b={index:0,time:+new Date,elapsed:0,action:a,next:function(){c(b)}};return b}function h(a){var b=+new Date,c=b-a.time;c>200&&(c=1e3/60),a.dur=c,a.elapsed+=c,a.time=b,a.action.call(null,a),a.index++}var i,j=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||function(a){return setTimeout(a,1e3/60)},k=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.msCancelAnimationFrame||window.clearTimeout,l=[];b.requestFrame=e,b.releaseFrame=f}},_p[3]={value:function(a){var b=_p.r(0),c=_p.r(35),d=_p.r(47),e=_p.r(61),f=_p.r(11).createClass("MotionAnimator",{base:b,constructor:function(a,b){var e=this;this.callBase({beginValue:0,finishValue:1,setter:function(a,b){var f=e.motionPath instanceof d?e.motionPath.getPathData():e.motionPath,g=c.pointAtPath(f,b);a.setTranslate(g.x,g.y),this.doRotate&&a.setRotate(g.tan.getAngle())}}),this.doRotate=b,this.motionPath=a}});return _p.r(11).extendClass(e,{motion:function(a,b,c,d,e){return this.animate(new f(a),b,c,d,e)}}),f}},_p[4]={value:function(a){var b=_p.r(0),c=_p.r(11).createClass("OpacityAnimator",{base:b,constructor:function(a){this.callBase({beginValue:function(a){return a.getOpacity()},finishValue:a,setter:function(a,b){a.setOpacity(b)}})}}),d=_p.r(61);return _p.r(11).extendClass(d,{fxOpacity:function(a,b,d,e,f){return this.animate(new c(a),b,d,e,f)},fadeTo:function(){return this.fxOpacity.apply(this,arguments)},fadeIn:function(){return this.fxOpacity.apply(this,[1].concat([].slice.call(arguments)))},fadeOut:function(){return this.fxOpacity.apply(this,[0].concat([].slice.call(arguments)))}}),c}},_p[5]={value:function(a){var b=_p.r(0),c=_p.r(35),d=_p.r(11).createClass("OpacityAnimator",{base:b,constructor:function(a){this.callBase({beginValue:function(a){return this.beginPath=a.getPathData(),0},finishValue:1,setter:function(b,d){b.setPathData(c.pathTween(this.beginPath,a,d))}})}}),e=_p.r(47);return _p.r(11).extendClass(e,{fxPath:function(a,b,c,e,f){return this.animate(new d(a),b,c,e,f)}}),d}},_p[6]={value:function(a){var b=_p.r(0),c=_p.r(11).createClass("RotateAnimator",{base:b,constructor:function(a){this.callBase({beginValue:0,finishValue:a,setter:function(a,b,c){var d=c.getDelta();a.rotate(d)}})}}),d=_p.r(61);return _p.r(11).extendClass(d,{fxRotate:function(a,b,d,e,f){return this.animate(new c(a),b,d,e,f)}}),c}},_p[7]={value:function(a){var b=_p.r(0),c=_p.r(11).createClass("ScaleAnimator",{base:b,constructor:function(a,b){this.callBase({beginValue:0,finishValue:1,setter:function(c,d,e){var f=e.getDelta(),g=Math.pow(a,f),h=Math.pow(b,f);c.scale(h,g)}})}}),d=_p.r(61);return _p.r(11).extendClass(d,{fxScale:function(a,b,d,e,f,g){return this.animate(new c(a,b),d,e,f,g)}}),c}},_p[8]={value:function(a){function b(a,b,c){return f.paralle(a,b,function(a,b){return a+(b-a)*c})}function c(a,b){return f.paralle(a,b,function(a,b){return b-a})}function d(a,b,c){this.timeline=a,this.target=a.target,this.type=b;for(var d in c)c.hasOwnProperty(d)&&(this[d]=c[d])}var e=_p.r(34),f=_p.r(12),g=_p.r(2),h=_p.r(11).createClass("Timeline",{mixins:[e],constructor:function(a,b,c,d){this.callMixin(),this.target=b,this.time=0,this.duration=c,this.easing=d,this.animator=a,this.beginValue=a.beginValue,this.finishValue=a.finishValue,this.setter=a.setter,this.status="ready"},nextFrame:function(a){"playing"==this.status&&(this.time+=a.dur,this.setValue(this.getValue()),this.time>=this.duration&&this.timeUp(),a.next())},getPlayTime:function(){return this.rollbacking?this.duration-this.time:this.time},getTimeProportion:function(){return this.getPlayTime()/this.duration},getValueProportion:function(){return this.easing(this.getPlayTime(),0,1,this.duration)},getValue:function(){var a=this.beginValue,c=this.finishValue,d=this.getValueProportion();return b(a,c,d)},setValue:function(a){this.lastValue=this.currentValue,this.currentValue=a,this.setter.call(this.target,this.target,a,this)},getDelta:function(){return this.lastValue=void 0===this.lastValue?this.beginValue:this.lastValue,c(this.lastValue,this.currentValue)},play:function(){var a=this.status;switch(this.status="playing",a){case"ready":f.isFunction(this.beginValue)&&(this.beginValue=this.beginValue.call(this.target,this.target)),f.isFunction(this.finishValue)&&(this.finishValue=this.finishValue.call(this.target,this.target)),this.time=0,this.setValue(this.beginValue),this.frame=g.requestFrame(this.nextFrame.bind(this));break;case"finished":case"stoped":this.time=0,this.frame=g.requestFrame(this.nextFrame.bind(this));break;case"paused":this.frame.next()}return this.fire("play",new d(this,"play",{lastStatus:a})),this},pause:function(){return this.status="paused",this.fire("pause",new d(this,"pause")),g.releaseFrame(this.frame),this},stop:function(){return this.status="stoped",this.setValue(this.finishValue),this.rollbacking=!1,this.fire("stop",new d(this,"stop")),g.releaseFrame(this.frame),this},timeUp:function(){this.repeatOption?(this.time=0,this.rollback?this.rollbacking?(this.decreaseRepeat(),this.rollbacking=!1):(this.rollbacking=!0,this.fire("rollback",new d(this,"rollback"))):this.decreaseRepeat(),this.repeatOption?this.fire("repeat",new d(this,"repeat")):this.finish()):this.finish()},finish:function(){this.setValue(this.finishValue),this.status="finished",this.fire("finish",new d(this,"finish")),g.releaseFrame(this.frame)},decreaseRepeat:function(){this.repeatOption!==!0&&this.repeatOption--},repeat:function(a,b){return this.repeatOption=a,this.rollback=b,this}});return h.requestFrame=g.requestFrame,h.releaseFrame=g.releaseFrame,h}},_p[9]={value:function(a){var b=_p.r(0),c=_p.r(11).createClass("TranslateAnimator",{base:b,constructor:function(a,b){this.callBase({x:0,y:0},{x:a,y:b},function(a,b,c){var d=c.getDelta();a.translate(d.x,d.y)})}}),d=_p.r(61);return _p.r(11).extendClass(d,{fxTranslate:function(a,b,d,e,f,g){return this.animate(new c(a,b),d,e,f,g)}}),c}},_p[10]={value:function(){var a=function(){var a,b=navigator.userAgent.toLowerCase(),c=window.opera;a={platform:function(a){var b={win32:"Win",macintel:"Mac"};return b[a.platform.toLowerCase()]||"Lux"}(navigator),lb:function(a){return~a.indexOf("lbbrowser")?~a.indexOf("msie")?"ie":"chrome":!1}(b),sg:/se[\s\S]+metasr/.test(b),bd:!!~b.indexOf("bidubrowser"),edge:!!~b.indexOf("edge"),chrome:!1,opera:!!c&&c.version,webkit:b.indexOf(" applewebkit/")>-1,mac:b.indexOf("macintosh")>-1},a.ie=!a.lb&&/(msie\s|trident.*rv:)([\w.]+)/.test(b),a.gecko="Gecko"==navigator.product&&!a.webkit&&!a.opera&&!a.ie;var d=0;if(a.ie&&(d=1*(b.match(/(msie\s|trident.*rv:)([\w.]+)/)[2]||0),a.ie11Compat=11==document.documentMode,a.ie9Compat=9==document.documentMode),a.gecko){var e=b.match(/rv:([\d\.]+)/);e&&(e=e[1].split("."),d=1e4*e[0]+100*(e[1]||0)+1*(e[2]||0))}return!/chrome\/(\d+\.\d)/i.test(b)||a.bd||a.opera||a.lb||a.sg||a.edge||(a.chrome=+RegExp.$1),/(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(b)&&!/chrome/i.test(b)&&(a.safari=+(RegExp.$1||RegExp.$2)),a.opera&&(d=parseFloat(c.version())),a.webkit&&(d=parseFloat(b.match(/ applewebkit\/(\d+)/)[1])),a.bd&&(d=parseFloat(b.match(/bidubrowser\/(\d+)/)[1])),a.opera&&(d=parseFloat(b.match(/opr\/(\d+)/)[1])),a.edge&&(d=parseFloat(b.match(/edge\/(\d+)/)[1])),a.version=d,a.isCompatible=!a.mobile&&(a.ie&&d>=6||a.gecko&&d>=10801||a.opera&&d>=9.5||a.air&&d>=1||a.webkit&&d>=522||!1),a}();return a}},_p[11]={value:function(require,exports){function Class(){}function checkBaseConstructorCall(a,b){var c=a.toString();if(!/this\.callBase/.test(c))throw new Error(b+" : 类构造函数没有调用父类的构造函数!为了安全,请调用父类的构造函数")}function inherit(constructor,BaseClass,classname){var KityClass=eval("(function "+classname+"( __inherit__flag ) {if( __inherit__flag != KITY_INHERIT_FLAG ) {KityClass.__KityConstructor.apply(this, arguments);}this.__KityClassName = KityClass.__KityClassName;})");KityClass.__KityConstructor=constructor,KityClass.prototype=new BaseClass(KITY_INHERIT_FLAG);for(var methodName in BaseClass.prototype)BaseClass.prototype.hasOwnProperty(methodName)&&0!==methodName.indexOf("__Kity")&&(KityClass.prototype[methodName]=BaseClass.prototype[methodName]);return KityClass.prototype.constructor=KityClass,KityClass}function mixin(a,b){if(!1==b instanceof Array)return a;var c,d,e,f=b.length;for(a.__KityMixins={constructor:[]},c=0;f>c;c++){d=b[c].prototype;for(e in d)!1!==d.hasOwnProperty(e)&&0!==e.indexOf("__Kity")&&("constructor"===e?a.__KityMixins.constructor.push(d[e]):a.prototype[e]=a.__KityMixins[e]=d[e])}return a}function extend(a,b){b.__KityClassName&&(b=b.prototype);for(var c in b)if(b.hasOwnProperty(c)&&c.indexOf("__Kity")&&"constructor"!=c){var d=a.prototype[c]=b[c];d.__KityMethodClass=a,d.__KityMethodName=c}return a}exports.Class=Class,Class.__KityClassName="Class",Class.prototype.base=function(a){var b=arguments.callee.caller,c=b.__KityMethodClass.__KityBaseClass.prototype[a];return c.apply(this,Array.prototype.slice.call(arguments,1))},Class.prototype.callBase=function(){var a=arguments.callee.caller,b=a.__KityMethodClass.__KityBaseClass.prototype[a.__KityMethodName];return b.apply(this,arguments)},Class.prototype.mixin=function(a){var b=arguments.callee.caller,c=b.__KityMethodClass.__KityMixins;if(!c)return this;var d=c[a];return d.apply(this,Array.prototype.slice.call(arguments,1))},Class.prototype.callMixin=function(){var a=arguments.callee.caller,b=a.__KityMethodName,c=a.__KityMethodClass.__KityMixins;if(!c)return this;var d=c[b];if("constructor"==b){for(var e=0,f=d.length;f>e;e++)d[e].call(this);return this}return d.apply(this,arguments)},Class.prototype.pipe=function(a){return"function"==typeof a&&a.call(this,this),this},Class.prototype.getType=function(){return this.__KityClassName},Class.prototype.getClass=function(){return this.constructor};var KITY_INHERIT_FLAG="__KITY_INHERIT_FLAG_"+ +new Date;exports.createClass=function(a,b){var c,d,e;return 1===arguments.length&&(b=arguments[0],a="AnonymousClass"),e=b.base||Class,b.hasOwnProperty("constructor")?(c=b.constructor,e!=Class&&checkBaseConstructorCall(c,a)):c=function(){this.callBase.apply(this,arguments),this.callMixin.apply(this,arguments)},d=inherit(c,e,a),d=mixin(d,b.mixins),d.__KityClassName=c.__KityClassName=a,d.__KityBaseClass=c.__KityBaseClass=e,d.__KityMethodName=c.__KityMethodName="constructor",d.__KityMethodClass=c.__KityMethodClass=d,delete b.mixins,delete b.constructor,delete b.base,d=extend(d,b)},exports.extendClass=extend}},_p[12]={value:function(){var a={each:function(a,b,c){if(null!==a)if(a.length===+a.length){for(var d=0,e=a.length;e>d;d++)if(b.call(c,a[d],d,a)===!1)return!1}else for(var f in a)if(a.hasOwnProperty(f)&&b.call(c,a[f],f,a)===!1)return!1},extend:function(a){for(var b=arguments,c=this.isBoolean(b[b.length-1])?b[b.length-1]:!1,d=this.isBoolean(b[b.length-1])?b.length-1:b.length,e=1;d>e;e++){var f=b[e];for(var g in f)c&&a.hasOwnProperty(g)||(a[g]=f[g])}return a},deepExtend:function(a,b){for(var c=arguments,d=this.isBoolean(c[c.length-1])?c[c.length-1]:!1,e=this.isBoolean(c[c.length-1])?c.length-1:c.length,f=1;e>f;f++){var g=c[f];for(var h in g)d&&a.hasOwnProperty(h)||(this.isObject(a[h])&&this.isObject(g[h])?this.deepExtend(a[h],g[h],d):a[h]=g[h])}return a},clone:function(a){var b={};for(var c in a)a.hasOwnProperty(c)&&(b[c]=a[c]);return b},copy:function(a){return"object"!=typeof a?a:"function"==typeof a?null:JSON.parse(JSON.stringify(a))},queryPath:function(a,b){for(var c=a.split("."),d=0,e=b,f=c.length;f>d;){if(!(c[d]in e))return void 0;if(e=e[c[d]],d++,d>=f||void 0===e)return e}},getValue:function(a,b){return void 0!==a?a:b},flatten:function(b){var c,d=[],e=b.length;for(c=0;e>c;c++)b[c]instanceof Array?d=d.concat(a.flatten(b[c])):d.push(b[c]);return d},paralle:function(b,c,d){var e,f,g,h;if(b instanceof Array){for(h=[],f=0;fd;d++)b[5*d+3]=c[d]/255;return b[18]=a.get("a"),this.colorMatrixEffect.set("values",b.join(" ")),this},setOpacity:function(a){var b=this.colorMatrixEffect.get("values").split(" ");return b[18]=a,this.colorMatrixEffect.set("values",b.join(" ")),this},setOffset:function(a,b){this.setOffsetX(a),this.setOffsetY(b)},setOffsetX:function(a){this.offsetEffect.set("dx",a)},setOffsetY:function(a){this.offsetEffect.set("dy",a)},setDeviation:function(a){this.gaussianblurEffect.set("stdDeviation",a)}})}},_p[24]={value:function(a,b,c){return _p.r(11).createClass("Bezier",{mixins:[_p.r(52)],base:_p.r(47),constructor:function(a){this.callBase(),a=a||[],this.changeable=!0,this.setBezierPoints(a)},getBezierPoints:function(){return this.getPoints()},setBezierPoints:function(a){return this.setPoints(a)},onContainerChanged:function(){this.changeable&&this.update()},update:function(){var a=null,b=this.getBezierPoints();if(!(b.length<2)){a=this.getDrawer(),a.clear();var c=b[0].getVertex(),d=null,e=null;a.moveTo(c.x,c.y);for(var f=1,g=b.length;g>f;f++)c=b[f].getVertex(),e=b[f].getBackward(),d=b[f-1].getForward(),a.bezierTo(d.x,d.y,e.x,e.y,c.x,c.y);return this}}})}},_p[25]={value:function(a,b,c){var d=_p.r(64),e=_p.r(74),f=_p.r(11).createClass("BezierPoint",{constructor:function(a,b,c){this.vertex=new d(a,b),this.forward=new d(a,b),this.backward=new d(a,b),this.setSmooth(void 0===c||c),this.setSymReflaction(!0)},clone:function(){var a=new f,b=null;return b=this.getVertex(),a.setVertex(b.x,b.y),b=this.getForward(),a.setForward(b.x,b.y),b=this.getBackward(),a.setBackward(b.x,b.y),a.setSymReflaction(this.isSymReflaction),a.setSmooth(this.isSmooth()),a},setVertex:function(a,b){return this.vertex.setPoint(a,b),this.update(),this},moveTo:function(a,b){var c=this.forward.getPoint(),d=this.backward.getPoint(),e=this.vertex.getPoint(),f={left:a-e.x,top:b-e.y};this.forward.setPoint(c.x+f.left,c.y+f.top),this.backward.setPoint(d.x+f.left,d.y+f.top),this.vertex.setPoint(a,b),this.update()},setForward:function(a,b){return this.forward.setPoint(a,b),this.smooth&&this.updateAnother(this.forward,this.backward),this.update(),this.lastControlPointSet=this.forward,this},setBackward:function(a,b){return this.backward.setPoint(a,b),this.smooth&&this.updateAnother(this.backward,this.forward),this.update(),this.lastControlPointSet=this.backward,this},setSymReflaction:function(a){return this.symReflaction=a,this.smooth&&this.setSmooth(!0),this},isSymReflaction:function(){return this.symReflaction},updateAnother:function(a,b){var c=this.getVertex(),d=e.fromPoints(a.getPoint(),c),f=e.fromPoints(c,b.getPoint());return f=d.normalize(this.isSymReflaction()?d.length():f.length()),b.setPoint(c.x+f.x,c.y+f.y),this},setSmooth:function(a){var b;return this.smooth=!!a,this.smooth&&(b=this.lastControlPointSet)&&this.updateAnother(b,b==this.forward?this.backward:this.forward),this},isSmooth:function(){return this.smooth},getVertex:function(){return this.vertex.getPoint()},getForward:function(){return this.forward.getPoint()},getBackward:function(){return this.backward.getPoint()},update:function(){return this.container?void(this.container.update&&this.container.update(this)):this}});return f}},_p[26]={value:function(a,b,c){var d=_p.r(11).createClass("Box",{constructor:function(a,b,c,d){var e=arguments[0];e&&"object"==typeof e&&(a=e.x,b=e.y,c=e.width,d=e.height),0>c&&(a-=c=-c),0>d&&(b-=d=-d),this.x=a||0,this.y=b||0,this.width=c||0,this.height=d||0,this.left=this.x,this.right=this.x+this.width,this.top=this.y,this.bottom=this.y+this.height,this.cx=this.x+this.width/2,this.cy=this.y+this.height/2},getRangeX:function(){return[this.left,this.right]},getRangeY:function(){return[this.top,this.bottom]},merge:function(a){if(this.isEmpty())return new d(a.x,a.y,a.width,a.height);var b=Math.min(this.left,a.left),c=Math.max(this.right,a.right),e=Math.min(this.top,a.top),f=Math.max(this.bottom,a.bottom);return new d(b,e,c-b,f-e)},intersect:function(a){!a instanceof d&&(a=new d(a));var b=Math.max(this.left,a.left),c=Math.min(this.right,a.right),e=Math.max(this.top,a.top),f=Math.min(this.bottom,a.bottom);return b>c||e>f?new d:new d(b,e,c-b,f-e)},expand:function(a,b,c,e){if(arguments.length<1)return new d(this);arguments.length<2&&(b=a),arguments.length<3&&(c=a),arguments.length<4&&(e=b);var f=this.left-e,g=this.top-a,h=this.width+b+e,i=this.height+a+c;return new d(f,g,h,i)},valueOf:function(){return[this.x,this.y,this.width,this.height]},toString:function(){return this.valueOf().join(" ")},isEmpty:function(){return!this.width||!this.height}});return d.parse=function(a){return"string"==typeof a?d.parse(a.split(/[\s,]+/).map(parseFloat)):a instanceof Array?new d(a[0],a[1],a[2],a[3]):"x"in a?new d(a):null},d}},_p[27]={value:function(a,b,c){return _p.r(11).createClass("Circle",{base:_p.r(33),constructor:function(a,b,c){this.callBase(a,a,b,c)},getRadius:function(){return this.getRadiusX()},setRadius:function(a){return this.callBase(a,a)}})}},_p[28]={value:function(a,b,c){var d=_p.r(11),e=_p.r(61),f=d.createClass("Clip",{base:e,mixins:[_p.r(62)],constructor:function(a){this.callBase("clipPath",a)},clip:function(a){return a.getNode().setAttribute("clip-path",this),this}});return d.extendClass(e,{clipWith:function(a){return a instanceof e&&(a=new f(a.getPaper()).addShape(a)),a.clip(this),this}}),f}},_p[29]={value:function(a,b,c){var d=_p.r(12),e=_p.r(65),f={},g=_p.r(11).createClass("Color",{constructor:function(){var a=null;"string"==typeof arguments[0]?(a=f.parseToValue(arguments[0]),null===a&&(a={r:0,g:0,b:0,h:0,s:0,l:0,a:1})):(a={r:0|arguments[0],g:0|arguments[1],b:0|arguments[2],a:void 0===arguments[3]?1:parseFloat(arguments[3])},a=f.overflowFormat(a),a=d.extend(a,f.rgbValueToHslValue(a))),this._color=a},set:function(a,b){if(!g._MAX_VALUE[a])throw new Error("Color set(): Illegal parameter");return"a"!==a&&(b=Math.floor(b)),"h"==a&&(b=(b+360)%360),this._color[a]=Math.max(g._MIN_VALUE[a],Math.min(g._MAX_VALUE[a],b)),-1!=="rgb".indexOf(a)?this._color=d.extend(this._color,f.rgbValueToHslValue(this._color)):-1!=="hsl".indexOf(a)&&(this._color=d.extend(this._color,f.hslValueToRGBValue(this._color))),this},inc:function(a,b){return b=this.get(a)+b,"h"==a?b=(b+360)%360:(b=Math.min(g._MAX_VALUE[a],b),b=Math.max(g._MIN_VALUE[a],b)),this.clone().set(a,b)},dec:function(a,b){return this.inc(a,-b)},clone:function(){return new g(this.toRGBA())},get:function(a){return g._MAX_VALUE[a]?this._color[a]:null},getValues:function(){return d.clone(this._color)},valueOf:function(){return this.getValues()},toRGB:function(){return f.toString(this._color,"rgb")},toRGBA:function(){return f.toString(this._color,"rgba")},toHEX:function(){return f.toString(this._color,"hex")},toHSL:function(){return f.toString(this._color,"hsl")},toHSLA:function(){return f.toString(this._color,"hsla")},toString:function(){return 1===this._color.a?this.toRGB():this.toRGBA()}});return d.extend(g,{_MAX_VALUE:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},_MIN_VALUE:{r:0,g:0,b:0,h:0,s:0,l:0,a:0},R:"r",G:"g",B:"b",H:"h",S:"s",L:"l",A:"a",parse:function(a){var b;return d.isString(a)&&(b=f.parseToValue(a)),d.isObject(a)&&"r"in a&&(b=a),null===b?new g:new g(b.r,b.g,b.b,b.a)},createHSL:function(a,b,c){return g.createHSLA(a,b,c,1)},createHSLA:function(a,b,c,d){var e=null;return b+="%",c+="%",e=["hsla("+a,b,c,d+")"],g.parse(e.join(", "))},createRGB:function(a,b,c){return g.createRGBA(a,b,c,1)},createRGBA:function(a,b,c,d){return new g(a,b,c,d)}}),d.extend(f,{parseToValue:function(a){var b={};if(a=e.EXTEND_STANDARD[a]||e.COLOR_STANDARD[a]||a,/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(a))b=f.hexToValue(a);else if(/^(rgba?)/i.test(a))b=f.rgbaToValue(a);else{if(!/^(hsla?)/i.test(a))return null;b=f.hslaToValue(a)}return f.overflowFormat(b)},hexToValue:function(a){var b={},c=["r","g","b"];return/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(a)?(a=RegExp.$1.split(""),d.each(c,function(c,d){3===a.length?b[c]=f.toNumber(a[d]+a[d]):b[c]=f.toNumber(a[2*d]+a[2*d+1])}),b=d.extend(b,f.rgbValueToHslValue(b)),b.a=1,b):null},rgbaToValue:function(a){var b={},c=!1,e=["r","g","b"];return/^(rgba?)/i.test(a)?(c=4===RegExp.$1.length,a=a.replace(/^rgba?/i,"").replace(/\s+/g,"").replace(/[^0-9,.]/g,"").split(","),d.each(e,function(c,d){b[c]=0|a[d]}),b=d.extend(b,f.rgbValueToHslValue(b)),b.a=c?parseFloat(a[3]):1,b):null},hslaToValue:function(a){var b={},c=!1;return/^(hsla?)/i.test(a)?(c=4===RegExp.$1.length,a=a.replace(/^hsla?/i,"").replace(/\s+/g,"").replace(/[^0-9,.]/g,"").split(","),b.h=0|a[0],b.s=0|a[1],b.l=0|a[2],b=d.extend(b,f.hslValueToRGBValue(b)),b=f.hslValueToRGBValue(b),b.a=c?parseFloat(a[3]):1,b):null},hslValueToRGBValue:function(a){function b(a,b,c){return 0>c?c+=1:c>1&&(c-=1),1>6*c?a+6*(b-a)*c:1>2*c?b:2>3*c?a+(b-a)*(6*(2/3-c)):a}var c=null,e=null,f={};return a=d.extend({},a), +a.h=a.h/360,a.s=a.s/100,a.l=a.l/100,0===a.s?f.r=f.g=f.b=a.l:(c=a.l<.5?a.l*(1+a.s):a.l+a.s-a.l*a.s,e=2*a.l-c,f.r=b(e,c,a.h+1/3),f.g=b(e,c,a.h),f.b=b(e,c,a.h-1/3)),f.r=Math.min(Math.round(255*f.r),255),f.g=Math.min(Math.round(255*f.g),255),f.b=Math.min(Math.round(255*f.b),255),f},rgbValueToHslValue:function(a){var b=null,c=null,e={};return a=d.extend({},a),a.r=a.r/255,a.g=a.g/255,a.b=a.b/255,b=Math.max(a.r,a.g,a.b),c=Math.min(a.r,a.g,a.b),b===c?e.h=0:b===a.r?a.g>=a.b?e.h=60*(a.g-a.b)/(b-c):e.h=60*(a.g-a.b)/(b-c)+360:b===a.g?e.h=60*(a.b-a.r)/(b-c)+120:b===a.b&&(e.h=60*(a.r-a.g)/(b-c)+240),e.l=(b+c)/2,0===e.l||b===c?e.s=0:e.l>0&&e.l<=.5?e.s=(b-c)/(b+c):e.s=(b-c)/(2-b-c),e.h=Math.round(e.h),e.s=Math.round(100*e.s),e.l=Math.round(100*e.l),e},toString:function(a,b){var c=[];return a=d.extend({},a),-1!==b.indexOf("hsl")&&(a.s+="%",a.l+="%"),"hex"!==b?(d.each(b.split(""),function(b){c.push(a[b])}),(b+"("+c.join(", ")+")").toLowerCase()):(c.push(f.toHexValue(+a.r)),c.push(f.toHexValue(+a.g)),c.push(f.toHexValue(+a.b)),("#"+c.join("")).toLowerCase())},toNumber:function(a){return 0|Number("0x"+a)},toHexValue:function(a){var b=a.toString(16);return 1===b.length?"0"+b:b},overflowFormat:function(a){var b=d.extend({},a),c="rgba";return d.each(c.split(""),function(a){b.hasOwnProperty(a)&&(b[a]=Math.min(g._MAX_VALUE[a],b[a]),b[a]=Math.max(g._MIN_VALUE[a],b[a]))}),b}}),g}},_p[30]={value:function(a,b,c){function d(){return this.container.removeItem(this),this}return _p.r(11).createClass("Container",{getItems:function(){return this.items||(this.items=[])},getItem:function(a){return this.getItems()[a]},getFirstItem:function(){return this.getItem(0)},getLastItem:function(){return this.getItem(this.getItems().length-1)},indexOf:function(a){return this.getItems().indexOf(a)},eachItem:function(a){var b,c=this.getItems(),d=c.length;for(b=0;d>b;b++)a.call(this,b,c[b]);return this},addItem:function(a,b,c){var e=this.getItems(),f=e.length;return~e.indexOf(a)?this:(b>=0&&f>b||(b=f),e.splice(b,0,a),"object"==typeof a&&(a.container=this,a.remove=d),this.handleAdd(a,b),c||this.onContainerChanged("add",[a]),this)},addItems:function(a){for(var b=0,c=a.length;c>b;b++)this.addItem(a[b],-1,!0);return this.onContainerChanged("add",a),this},setItems:function(a){return this.clear().addItems(a)},appendItem:function(a){return this.addItem(a)},prependItem:function(a){return this.addItem(a,0)},removeItem:function(a,b){if("number"!=typeof a)return this.removeItem(this.indexOf(a));var c=this.getItems(),d=(c.length,c[a]);return void 0===d?this:(c.splice(a,1),d.container&&delete d.container,d.remove&&delete d.remove,this.handleRemove(d,a),b||this.onContainerChanged("remove",[d]),this)},clear:function(){for(var a,b=[];a=this.getFirstItem();)b.push(a),this.removeItem(0,!0);return this.onContainerChanged("remove",b),this},onContainerChanged:function(a,b){},handleAdd:function(a,b){},handleRemove:function(a,b){}})}},_p[31]={value:function(a,b,c){var d=_p.r(12),e={getCurvePanLines:function(a,b){var c=e.getCenterPoints(a),d=e.getPanLine(a.length,c);return e.getMovedPanLines(a,d,b)},getCenterPoints:function(a){for(var b={},c=null,d=0,e=0,f=a.length;f>d;d++)e=d===f-1?0:d+1,c=d+","+e,b[c]={x:(a[d].x+a[e].y)/2,y:(a[d].x+a[e].y)/2};return b},getPanLine:function(a,b){for(var c,d={},e=null,f=0;a>f;f++){var g=null,h=null;c=(f+1)%a,e=c,g=b[f+","+c],f=c,c=(f+1)%a,h=b[f+","+c],d[e]={points:[{x:g.x,y:g.y},{x:h.x,y:h.y}],center:{x:(g.x+h.x)/2,y:(g.y+h.y)/2}},f=(e+a-1)%a}return d},getMovedPanLines:function(a,b,c){var e={};return d.each(a,function(a,f){var g=b[f],h=g.center,i={x:h.x-a.x,y:h.y-a.y},j=e[f]={points:[],center:{x:a.x,y:a.y}};d.each(g.points,function(a,b){var d={x:a.x-i.x,y:a.y-i.y},e=j.center,f=d.x-e.x,g=d.y-e.y;d.x=e.x+c*f,d.y=e.y+c*g,j.points.push(d)})}),e}};return _p.r(11).createClass("Curve",{base:_p.r(47),mixins:[_p.r(52)],constructor:function(a,b){this.callBase(),this.setPoints(a||[]),this.closeState=!!b,this.changeable=!0,this.smoothFactor=1,this.update()},onContainerChanged:function(){this.changeable&&this.update()},setSmoothFactor:function(a){return this.smoothFactor=0>a?0:a,this.update(),this},getSmoothFactor:function(){return this.smoothFactor},update:function(){var a=this.getPoints(),b=null,c=this.getDrawer(),d=null,f=null,g=null;if(c.clear(),0===a.length)return this;if(c.moveTo(a[0]),1===a.length)return this;if(2===a.length)return c.lineTo(a[1]),this;b=e.getCurvePanLines(a,this.getSmoothFactor());for(var h=1,i=a.length;i>h;h++)d=b[h].center,f=this.closeState||h!=i-1?b[h].points[0]:b[h].center,g=this.closeState||1!=h?b[h-1].points[1]:b[h-1].center,c.bezierTo(g.x,g.y,f.x,f.y,d.x,d.y);return this.closeState&&(d=b[0].center,f=b[0].points[0],g=b[a.length-1].points[1],c.bezierTo(g.x,g.y,f.x,f.y,d.x,d.y)),this},close:function(){return this.closeState=!0,this.update()},open:function(){return this.closeState=!1,this.update()},isClose:function(){return!!this.closeState}})}},_p[32]={value:function(a,b,c){return _p.r(11).createClass("Data",{constructor:function(){this._data={}},setData:function(a,b){return this._data[a]=b,this},getData:function(a){return this._data[a]},removeData:function(a){return delete this._data[a],this}})}},_p[33]={value:function(a,b,c){var d=(_p.r(12),_p.r(51));return _p.r(11).createClass("Ellipse",{base:_p.r(47),constructor:function(a,b,c,d){this.callBase(),this.rx=a||0,this.ry=b||0,this.cx=c||0,this.cy=d||0,this.update()},update:function(){var a=this.rx,b=this.ry,c=this.cx+a,d=this.cx-a,e=this.cy,f=this.getDrawer();return f.clear(),f.moveTo(c,e),f.arcTo(a,b,0,1,1,d,e),f.arcTo(a,b,0,1,1,c,e),this},getRadius:function(){return{x:this.rx,y:this.ry}},getRadiusX:function(){return this.rx},getRadiusY:function(){return this.ry},getCenter:function(){return new d(this.cx,this.cy)},getCenterX:function(){return this.cx},getCenterY:function(){return this.cy},setRadius:function(a,b){return this.rx=a,this.ry=b,this.update()},setRadiusX:function(a){return this.rx=a,this.update()},setRadiusY:function(a){return this.ry=a,this.update()},setCenter:function(a,b){if(1==arguments.length){var c=d.parse(arguments[0]);a=c.x,b=c.y}return this.cx=a,this.cy=b,this.update()},setCenterX:function(a){return this.cx=a,this.update()},setCenterY:function(a){return this.cy=a,this.update()}})}},_p[34]={value:function(a,b,c){function d(a,b,c){return c=!!c,j.isString(a)&&(a=a.match(/\S+/g)),j.each(a,function(a){f.call(this,this.node,a,b,c)},this),this}function e(a,b){var c=null,d=this._EVNET_UID,e=void 0===b;return c=m[d][a],e||(e=!0,j.each(c,function(a,d){a===b?delete c[d]:e=!1})),e&&(h(this.node,a,l[d][a]),delete m[d][a],delete l[d][a]),this}function f(a,b,c,d){var e=this._EVNET_UID,f=this;l[e]||(l[e]={}),l[e][b]||(l[e][b]=function(a){a=new k(a||window.event),j.each(m[e][b],function(c){var e;return c&&(e=c.call(f,a),d&&f.off(b,c)),e},f)}),m[e]||(m[e]={}),m[e][b]?m[e][b].push(c):(m[e][b]=[c],a&&"on"+b in a&&g(a,b,l[e][b]))}function g(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent("on"+b,c)}function h(a,b,c){a.removeEventListener?a.removeEventListener(b,c,!1):a.detachEvent(b,c)}function i(a,b,c){var d=null,e=null,f=l[a._EVNET_UID];f&&(e=f[b],e&&(d=j.extend({type:b,target:a},c||{}),e.call(a,d)))}!function(){function a(a,b){b=b||{bubbles:!1,cancelable:!1,detail:void 0};var c=document.createEvent("CustomEvent");return c.initCustomEvent(a,b.bubbles,b.cancelable,b.detail),c}a.prototype=window.Event.prototype,window.CustomEvent=a}();var j=_p.r(12),k=_p.r(63),l={},m={},n=0;return _p.r(11).createClass("EventHandler",{constructor:function(){this._EVNET_UID=++n},addEventListener:function(a,b){return d.call(this,a,b,!1)},addOnceEventListener:function(a,b){return d.call(this,a,b,!0)},removeEventListener:function(a,b){return e.call(this,a,b)},on:function(a,b){return this.addEventListener.apply(this,arguments)},once:function(a,b){return this.addOnceEventListener.apply(this,arguments)},off:function(){return this.removeEventListener.apply(this,arguments)},fire:function(a,b){return this.trigger.apply(this,arguments)},trigger:function(a,b){return i(this,a,b),this}})}},_p[35]={value:function(a){function b(a){var b,c,d,e,f;for(b=[],c=0;cc;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function e(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=e.cache=e.cache||{},i=e.count=e.count||[];return h.hasOwnProperty(g)?(d(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a.apply(b,f),c?c(h[g]):h[g])}return e}function d(a,b,c,e,f,g,h,i,j,k){var l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q=Math,R=Q.PI,S=Math.abs,T=120*R/180,U=R/180*(+f||0),V=[],W=function(a,b,c){var d=a*Q.cos(c)-b*Q.sin(c),e=a*Q.sin(c)+b*Q.cos(c);return{x:d,y:e}};if(k?(w=k[0],x=k[1],u=k[2],v=k[3]):(l=W(a,b,-U),a=l.x,b=l.y,l=W(i,j,-U),i=l.x,j=l.y,m=Q.cos(R/180*f),n=Q.sin(R/180*f),p=(a-i)/2,q=(b-j)/2,o=p*p/(c*c)+q*q/(e*e),o>1&&(o=Q.sqrt(o),c=o*c,e=o*e),r=c*c,s=e*e,t=(g==h?-1:1)*Q.sqrt(S((r*s-r*q*q-s*p*p)/(r*q*q+s*p*p))),u=t*c*q/e+(a+i)/2,v=t*-e*p/c+(b+j)/2,w=Q.asin(((b-v)/e).toFixed(9)),x=Q.asin(((j-v)/e).toFixed(9)),w=u>a?R-w:w,x=u>i?R-x:x,0>w&&(w=2*R+w),0>x&&(x=2*R+x),h&&w>x&&(w-=2*R),!h&&x>w&&(x-=2*R)),y=x-w,S(y)>T&&(z=x,A=i,B=j,x=w+T*(h&&x>w?1:-1),i=u+c*Q.cos(x),j=v+e*Q.sin(x),V=d(i,j,c,e,f,0,h,A,B,[x,z,u,v])),y=x-w,C=Q.cos(w),D=Q.sin(w),E=Q.cos(x),F=Q.sin(x),G=Q.tan(y/4),H=4/3*c*G,I=4/3*e*G,J=[a,b],K=[a+H*D,b-I*C],L=[i+H*F,j-I*E],M=[i,j],K[0]=2*J[0]-K[0],K[1]=2*J[1]-K[1],k)return[K,L,M].concat(V);for(V=[K,L,M].concat(V).join().split(","),N=[],O=0,P=V.length;P>O;O++)N[O]=O%2?W(V[O-1],V[O],U).y:W(V[O],V[O+1],U).x;return N}function e(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]}function f(a,b){function c(a){return function(b,c){return b+a*(c-b)}}var d=c(b||.5),e=a,f=e[0],g=e[1],h=e[2],i=e[3],j=e[4],k=e[5],l=e[6],m=e[7],n=d(f,h),o=d(g,i),p=d(h,j),q=d(i,k),r=d(j,l),s=d(k,m),t=d(n,p),u=d(o,q),v=d(p,r),w=d(q,s),x=d(t,v),y=d(u,w);return[[f,g,n,o,t,u,x,y],[x,y,v,w,r,s,l,m]]}var g=_p.r(12),h=_p.r(51),i=_p.r(74),j=_p.r(44),k={},l=/([achlmrqstvz])[\s,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\s]*,?\s*)+)/gi,m=/(-?\d*\.?\d*(?:e[\-+]?\d+)?)\s*,?\s*/gi,n={a:7,c:6,h:1,l:2,m:2,q:4,s:4,t:2,v:1,z:0};k.pathToString=function(a){return a=a||this,"string"==typeof a?a:a instanceof Array?(a=g.flatten(a),a.join(",").replace(/,?([achlmqrstvxz]),?/gi,"$1")):void 0},k.parsePathString=c(function(a){var b=[];return a.replace(l,function(a,c,d){var e=[],f=c.toLowerCase();if(d.replace(m,function(a,b){b&&e.push(+b)}),"m"==f&&e.length>2&&(b.push([c].concat(e.splice(0,2))),f="l",c="m"==c?"l":"L"),"r"==f)b.push([c].concat(e));else for(;e.length>=n[f]&&(b.push([c].concat(e.splice(0,n[f]))),n[f]););}),b.isUniform=!0,b.toString=k.pathToString,b}),k.pathToAbsolute=c(function(a){var b,c,d,e,f,g,h,i,j=a.isUniform?a:k.parsePathString(k.pathToString(a)),l=[],m=0,n=0,o=0,p=0,q=0;for("M"==j[0][0]&&(m=+j[0][1],n=+j[0][2],o=m,p=n,q++,l[0]=["M",m,n]),d=q,g=j.length;g>d;d++){if(l.push(b=[]),c=j[d],c[0]!=c[0].toUpperCase())switch(b[0]=c[0].toUpperCase(),b[0]){case"A":b[1]=c[1],b[2]=c[2],b[3]=c[3],b[4]=c[4],b[5]=c[5],b[6]=+(c[6]+m),b[7]=+(c[7]+n);break;case"V":b[1]=+c[1]+n;break;case"H":b[1]=+c[1]+m;break;case"M":o=+c[1]+m,p=+c[2]+n;break;default:for(e=1,h=c.length;h>e;e++)b[e]=+c[e]+(e%2?m:n)}else for(f=0,i=c.length;i>f;f++)b[f]=c[f];switch(b[0]){case"Z":m=o,n=p;break;case"H":m=b[1];break;case"V":n=b[1];break;case"M":o=b[b.length-2],p=b[b.length-1];break;default:m=b[b.length-2],n=b[b.length-1]}}return l.isUniform=!0,l.isAbsolute=!0,l.toString=k.pathToString,l}),k.pathToCurve=c(function(a){var b,c,f,g,h,i,j,l,m,n,o,p,q=[];for(a.isAbsolute||(a=k.pathToAbsolute(a)),b=0;bb&&(b=0),Math.pow(b,.5)}var c,d,e,f,g,h,i,j,k,l,m,n=a;return c=-3*n[0]+9*n[2]-9*n[4]+3*n[6],d=6*n[0]-12*n[2]+6*n[4],e=-3*n[0]+3*n[2],f=-3*n[1]+9*n[3]-9*n[5]+3*n[7],g=6*n[1]-12*n[3]+6*n[5],h=-3*n[1]+3*n[3],i=Math.pow(c,2)+Math.pow(f,2),j=2*(c*d+f*g),k=2*(c*e+f*h)+Math.pow(d,2)+Math.pow(g,2),l=2*(d*e+g*h),m=Math.pow(e,2)+Math.pow(h,2),(b(0)+b(1)+4*(b(.125)+b(.375)+b(.625)+b(.875))+2*(b(.25)+b(.5)+b(.75)))/24});var o=c(function(a){var b,c,d,e,f,g,h;for(g=[],h=0,b=0,c=a.length;c>b;b++)d=a[b],"M"!=d[0]?"Z"!=d[0]?(f=k.bezierLength(e.concat(d.slice(1))),g.push([h,h+f]),h+=f,e=d.slice(4)):g.push(null):(e=d.slice(1),g.push(null));return g.totalLength=h,g});k.subPath=function(a,b,c){var d;if(c=c||0,d=b-c,d-=0|d,c-=0|c,b=c+d,b>1)return k.subPath(a,1,c).concat(k.subPath(a,b-1));a.isCurve||(a=k.pathToCurve(a));var e,f,g,h,i,j,l,m,n,p=o(a),q=p.totalLength,r=q*b,s=q*(c||0),t=[];for(e=0,f=a.length;f>e;e++)if("M"!=a[e][0]){if("Z"!=a[e][0])if(g=p[e][0],h=p[e][1],i=h-g,l=j.concat(a[e].slice(1)),s>h)j=l.slice(l.length-2);else{if(s>=g)m=k.subBezier(l,Math.min((r-g)/i,1),(s-g)/i),n=!0,j=m.slice(0,2),t.push(["M"].concat(m.slice(0,2))),t.push(["C"].concat(m.slice(2)));else if(r>=h)t.push(a[e].slice());else{if(!(r>=g))break;m=k.subBezier(l,(r-g)/i),t.push(["C"].concat(m.slice(2))),n=!1}j=l.slice(l.length-2)}}else j=a[e].slice(1),n&&t.push(a[e].slice());return t.isAbsolute=!0,t.isCurve=!0,t.isUniform=!0,t.toString=k.pathToString,t},k.pointAtPath=function(a,b){a.isCurve||(a=k.pathToCurve(a));var c=k.subPath(a,b),d="Z"==c[c.length-1][0]?c[c.length-2]:c[c.length-1];d=d.slice(1);var e=h.parse(d.slice(4)),f=h.parse(d.slice(2,4));return e.tan=i.fromPoints(f,e).normalize(),e},k.pathLength=c(function(a){a.isCurve||(a=k.pathToCurve(a));var b=o(a);return b.totalLength}),k.pathKeyPoints=c(function(a){var b,c,d;for(a.isCurve||(a=k.pathToCurve(a)),d=[],b=0,c=a.length;c>b;b++)"z"!=a[b][0]&&d.push(a[b].slice(a[b].length-2));return d});var p=c(function(a,c){function d(a,b){return a[b||a.i]&&a[b||a.i][0]}function e(a,b){return a[b||a.i]&&a[b||a.i].slice(1)}function f(a,b){var c=e(a,b);return c&&c.slice(-2)}function g(a){return"Z"==d(a)?(a.splice(a.i,1),!0):!1}function h(a){return"M"==d(a)?(a.o.splice(a.o.i,0,["M"].concat(f(a.o,a.o.i-1))),a.i++,a.o.i++,!0):!1}function i(a){for(var b,c=1;!b;)b=f(a,a.length-c++);for(a.o.i=a.i;a.lengthc;c++)for(f.push(g=[a[c][0]]),e=1;ec&&e.setAttribute("stop-opacity",c),this.node.appendChild(e),this}})}},_p[37]={value:function(a,b,c){var d=_p.r(62);return _p.r(11).createClass("Group",{mixins:[d],base:_p.r(61),constructor:function(){this.callBase("g")}})}},_p[38]={value:function(a,b,c){var d=_p.r(62);return _p.r(11).createClass("HyperLink",{mixins:[d],base:_p.r(61),constructor:function(a){this.callBase("a"),this.setHref(a)},setHref:function(a){return this.node.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),this},getHref:function(){return this.node.getAttributeNS("xlink:href")},setTarget:function(a){return this.node.setAttribute("target",a),this},getTarget:function(){return this.node.getAttribute("target")}})}},_p[39]={value:function(a,b,c){return _p.r(11).createClass("Image",{base:_p.r(61),constructor:function(a,b,c,d,e){this.callBase("image"),this.url=a,this.width=b||0,this.height=c||0,this.x=d||0,this.y=e||0,this.update()},update:function(){return this.node.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",this.url),this.node.setAttribute("x",this.x),this.node.setAttribute("y",this.y),this.node.setAttribute("width",this.width),this.node.setAttribute("height",this.height),this},setUrl:function(a){return this.url=""===a?null:a,this.update()},getUrl:function(){return this.url},setWidth:function(a){return this.width=a,this.update()},getWidth:function(){return this.width},setHeight:function(a){return this.height=a,this.update()},getHeight:function(){return this.height},setX:function(a){return this.x=a,this.update()},getX:function(){return this.x},setY:function(a){return this.y=a,this.update()},getY:function(){return this.y}})}},_p[40]={value:function(a,b,c){return _p.r(11).createClass("Line",{base:_p.r(47),constructor:function(a,b,c,d){this.callBase(),this.point1={x:a||0,y:b||0},this.point2={x:c||0,y:d||0},this.update()},setPoint1:function(a,b){return this.point1.x=a,this.point1.y=b,this.update()},setPoint2:function(a,b){return this.point2.x=a,this.point2.y=b,this.update()},getPoint1:function(){return{x:this.point1.x,y:this.point1.y}},getPoint2:function(){return{x:this.point2.x,y:this.point2.y}},update:function(){var a=this.getDrawer();return a.clear(),a.moveTo(this.point1.x,this.point1.y),a.lineTo(this.point2.x,this.point2.y),this}})}},_p[41]={value:function(a,b,c){var d=(_p.r(68),_p.r(36));return _p.r(11).createClass("LinearGradientBrush",{base:d,constructor:function(a){this.callBase("linearGradient",a),this.setStartPosition(0,0),this.setEndPosition(1,0)},setStartPosition:function(a,b){return this.node.setAttribute("x1",a),this.node.setAttribute("y1",b),this},setEndPosition:function(a,b){return this.node.setAttribute("x2",a),this.node.setAttribute("y2",b),this},getStartPosition:function(){return{x:+this.node.getAttribute("x1"),y:+this.node.getAttribute("y1")}},getEndPosition:function(){return{x:+this.node.getAttribute("x2"),y:+this.node.getAttribute("y2")}}})}},_p[42]={value:function(a,b,c){var d=_p.r(51),e=_p.r(11).createClass("Marker",{base:_p.r(59),mixins:[_p.r(62),_p.r(76)],constructor:function(){this.callBase("marker"),this.setOrient("auto")},setRef:function(a,b){return 1===arguments.length&&(b=a.y,a=a.x),this.node.setAttribute("refX",a),this.node.setAttribute("refY",b),this},getRef:function(){return new d(+this.node.getAttribute("refX"),+this.node.getAttribute("refY"))},setWidth:function(a){return this.node.setAttribute("markerWidth",this.width=a),this},setOrient:function(a){return this.node.setAttribute("orient",this.orient=a),this},getOrient:function(){return this.orient},getWidth:function(){return+this.width},setHeight:function(a){return this.node.setAttribute("markerHeight",this.height=a),this},getHeight:function(){return+this.height}}),f=_p.r(47);return _p.r(11).extendClass(f,{setMarker:function(a,b){return b=b||"end",a?this.node.setAttribute("marker-"+b,a.toString()):this.node.removeAttribute("marker-"+b),this}}),e}},_p[43]={value:function(a,b,c){var d=_p.r(11),e=_p.r(61),f=d.createClass("Mask",{base:e,mixins:[_p.r(62)],constructor:function(){this.callBase("mask")},mask:function(a){return a.getNode().setAttribute("mask","url(#"+this.getId()+")"),this}});return d.extendClass(e,{maskWith:function(a){return a.mask(this),this}}),f}},_p[44]={value:function(a,b,c){function d(a,b){return{a:b.a*a.a+b.c*a.b,b:b.b*a.a+b.d*a.b,c:b.a*a.c+b.c*a.d,d:b.b*a.c+b.d*a.d,e:b.a*a.e+b.c*a.f+b.e,f:b.b*a.e+b.d*a.f+b.f}}function e(a){return a*Math.PI/180}var f=_p.r(12),g=_p.r(26),h=/matrix\s*\((.+)\)/i,i=_p.r(51),j=_p.r(11).createClass("Matrix",{constructor:function(){arguments.length?this.setMatrix.apply(this,arguments):this.setMatrix(1,0,0,1,0,0)},translate:function(a,b){return this.m=d(this.m,{a:1,c:0,e:a,b:0,d:1,f:b}),this},rotate:function(a){var b=e(a),c=Math.sin(b),f=Math.cos(b);return this.m=d(this.m,{a:f,c:-c,e:0,b:c,d:f,f:0}),this},scale:function(a,b){return void 0===b&&(b=a),this.m=d(this.m,{a:a,c:0,e:0,b:0,d:b,f:0}),this},skew:function(a,b){void 0===b&&(b=a);var c=Math.tan(e(a)),f=Math.tan(e(b));return this.m=d(this.m,{a:1,c:c,e:0,b:f,d:1,f:0}),this},inverse:function(){var a,b,c,d,e,f,g,h=this.m,i=h.a,k=h.b,l=h.c,m=h.d,n=h.e,o=h.f;return a=i*m-k*l,b=m/a,c=-k/a,d=-l/a,e=i/a,f=(l*o-n*m)/a,g=(k*n-i*o)/a,new j(b,c,d,e,f,g)},setMatrix:function(a,b,c,d,e,g){return 1===arguments.length?this.m=f.clone(arguments[0]):this.m={a:a,b:b,c:c,d:d,e:e,f:g},this},getMatrix:function(){return f.clone(this.m)},getTranslate:function(){var a=this.m;return{x:a.e/a.a,y:a.f/a.d}},mergeMatrix:function(a){return new j(d(this.m,a.m))},merge:function(a){return this.mergeMatrix(a)},toString:function(){return this.valueOf().join(" ")},valueOf:function(){var a=this.m;return[a.a,a.b,a.c,a.d,a.e,a.f]},equals:function(a){var b=this.m,c=a.m;return b.a==c.a&&b.b==c.b&&b.c==c.c&&b.d==c.d&&b.e==c.e&&b.f==c.f},transformPoint:function(){return j.transformPoint.apply(null,[].slice.call(arguments).concat([this.m]))},transformBox:function(a){return j.transformBox(a,this.m)},clone:function(){return new j(this.m)}});return j.parse=function(a){var b,c=parseFloat;if(a instanceof Array)return new j({a:a[0],b:a[1],c:a[2],d:a[3],e:a[4],f:a[5]});if(b=h.exec(a)){var d=b[1].split(",");return 6!=d.length&&(d=b[1].split(" ")),new j({a:c(d[0]),b:c(d[1]),c:c(d[2]),d:c(d[3]),e:c(d[4]),f:c(d[5])})}return new j},j.transformPoint=function(a,b,c){return 2===arguments.length&&(c=b,b=a.y,a=a.x),new i(c.a*a+c.c*b+c.e,c.b*a+c.d*b+c.f)},j.transformBox=function(a,b){for(var c,d,e=Number.MAX_VALUE,h=-Number.MAX_VALUE,i=Number.MAX_VALUE,k=-Number.MAX_VALUE,l=[[a.x,a.y],[a.x+a.width,a.y],[a.x,a.y+a.height],[a.x+a.width,a.y+a.height]],m=[];c=l.pop();)d=j.transformPoint(c[0],c[1],b),m.push(d),e=Math.min(e,d.x),h=Math.max(h,d.x),i=Math.min(i,d.y),k=Math.max(k,d.y);return a=new g({x:e,y:i,width:h-e,height:k-i}),f.extend(a,{closurePoints:m}),a},j.getCTM=function(a,b){function c(a,b){var c;try{c=b.getScreenCTM().inverse()}catch(d){throw new Error("Can not inverse source element' ctm.")}return c.multiply(a.getScreenCTM())}var d={a:1,b:0,c:0,d:1,e:0,f:0},e=a.shapeNode||a.node;switch(b=b||"parent"){case"screen":d=e.getScreenCTM();break;case"doc":case"paper":d=e.getCTM();break;case"view":case"top":a.getPaper()&&(d=void 0!==e.getTransformToElement?e.getTransformToElement(a.getPaper().shapeNode):c(e,a.getPaper().shapeNode));break;case"parent":a.node.parentNode&&(d=void 0!==e.getTransformToElement?e.getTransformToElement(a.node.parentNode):c(e,a.node.parentNode));break;default:b.node&&(d=void 0!==e.getTransformToElement?e.getTransformToElement(b.shapeNode||b.node):c(e,b.shapeNode||b.node))}return d?new j(d.a,d.b,d.c,d.d,d.e,d.f):new j},j}},_p[45]={value:function(a,b,c){var d=_p.r(65),e=_p.r(29),f=_p.r(12),g=_p.r(11).createClass("Palette",{constructor:function(){this.color={}},get:function(a){var b=this.color[a]||d.EXTEND_STANDARD[a]||d.COLOR_STANDARD[a]||"";return b?new e(b):null},getColorValue:function(a){return this.color[a]||d.EXTEND_STANDARD[a]||d.COLOR_STANDARD[a]||""},add:function(a,b){return"string"==typeof b?this.color[a]=new e(b).toRGBA():this.color[a]=b.toRGBA(),b},remove:function(a){return this.color.hasOwnProperty(a)?(delete this.color[a],!0):!1}});return f.extend(g,{getColor:function(a){var b=d.EXTEND_STANDARD[a]||d.COLOR_STANDARD[a];return b?new e(b):null},getColorValue:function(a){return d.EXTEND_STANDARD[a]||d.COLOR_STANDARD[a]||""},addColor:function(a,b){return"string"==typeof b?d.EXTEND_STANDARD[a]=new e(b).toRGBA():d.EXTEND_STANDARD[a]=b.toRGBA(),b},removeColor:function(a){return d.EXTEND_STANDARD.hasOwnProperty(a)?(delete d.EXTEND_STANDARD[a],!0):!1}}),g}},_p[46]={value:function(a,b,c){var d=_p.r(11),e=_p.r(12),f=_p.r(68),g=_p.r(30),h=_p.r(62),i=_p.r(76),j=_p.r(34),k=_p.r(67),l=_p.r(44),m=d.createClass("Paper",{mixins:[h,j,k,i],constructor:function(a){this.callBase(),this.node=this.createSVGNode(),this.node.paper=this,this.node.appendChild(this.resourceNode=f.createNode("defs")),this.node.appendChild(this.shapeNode=f.createNode("g")),this.resources=new g,this.setWidth("100%").setHeight("100%"),a&&this.renderTo(a),this.callMixin()},renderTo:function(a){e.isString(a)&&(a=document.getElementById(a)),this.container=a,a.appendChild(this.node)},createSVGNode:function(){var a=f.createNode("svg");return a.setAttribute("xmlns","http://www.w3.org/2000/svg"),a.setAttribute("xmlns:xlink","http://www.w3.org/1999/xlink"),a.setAttribute("version","1.1"),a},getNode:function(){return this.node},getContainer:function(){return this.container},getWidth:function(){return this.node.clientWidth},setWidth:function(a){return this.node.setAttribute("width",a),this},getHeight:function(){return this.node.clientHeight},setHeight:function(a){return this.node.setAttribute("height",a),this},setViewPort:function(a,b,c){var d,e;1==arguments.length&&(d=arguments[0],a=d.center.x,b=d.center.y,c=d.zoom),c=c||1,e=this.getViewBox();var f=new l,g=e.x+e.width/2-a,h=e.y+e.height/2-b;return f.translate(-a,-b),f.scale(c),f.translate(a,b),f.translate(g,h),this.shapeNode.setAttribute("transform","matrix("+f+")"),this.viewport={center:{x:a,y:b},offset:{x:g,y:h},zoom:c},this},getViewPort:function(){if(!this.viewport){var a=this.getViewBox();return{zoom:1,center:{x:a.x+a.width/2,y:a.y+a.height/2},offset:{x:0,y:0}}}return this.viewport},getViewPortMatrix:function(){return l.parse(this.shapeNode.getAttribute("transform"))},getViewPortTransform:function(){var a=this.shapeNode.getCTM();return new l(a.a,a.b,a.c,a.d,a.e,a.f)},getTransform:function(){return this.getViewPortTransform().reverse()},addResource:function(a){return this.resources.appendItem(a),a.node&&this.resourceNode.appendChild(a.node),this},removeResource:function(a){return a.remove&&a.remove(),a.node&&this.resourceNode.removeChild(a.node),this},getPaper:function(){return this}}),n=_p.r(61);return d.extendClass(n,{getPaper:function(){for(var a=this.container;a&&a instanceof m==!1;)a=a.container;return a},isAttached:function(){return!!this.getPaper()},whenPaperReady:function(a){function b(){var b=c.getPaper();return b&&a&&a.call(c,b),b}var c=this;return b()||this.on("add treeadd",function d(){b()&&(c.off("add",d),c.off("treeadd",d))}),this}}),m}},_p[47]={value:function(a,b,c){var d=_p.r(12),e=_p.r(11).createClass,f=_p.r(61),g=_p.r(68),h=_p.r(35),i=Array.prototype.slice,j=(d.flatten,e("PathDrawer",{constructor:function(a){this.segment=[],this.path=a,this.__clear=!1},getPath:function(){return this.path},redraw:function(){return this._transation=this._transation||[],this.clear()},done:function(){var a=this._transation;return this._transation=null,this.push(a),this},clear:function(){return this._transation?this._transation=[]:this.path.setPathData("M 0 0"),this._clear=!0,this},push:function(){var a,b=i.call(arguments);return this._transation?(this._transation.push(b),this):(this._clear?(a="",this._clear=!1):a=this.path.getPathData(),a=a||"",this.path.setPathData(a+h.pathToString(b)),this)},moveTo:function(a,b){return this.push("M",i.call(arguments))},moveBy:function(a,b){return this.push("m",i.call(arguments))},lineTo:function(a,b){return this.push("L",i.call(arguments))},lineBy:function(a,b){return this.push("l",i.call(arguments))},arcTo:function(a,b,c,d,e,f,g){return this.push("A",i.call(arguments))},arcBy:function(a,b,c,d,e,f,g){return this.push("a",arguments)},carcTo:function(a,b,c,d,e){return this.push("A",[a,a,0].concat(i.call(arguments,1)))},carcBy:function(a,b,c,d,e){return this.push("a",[a,a,0].concat(i.call(arguments,1)))},bezierTo:function(a,b,c,d,e,f){return this.push("C",i.call(arguments))},bezierBy:function(a,b,c,d,e,f){return this.push("c",i.call(arguments))},close:function(){return this.push("z")}}));return e("Path",{base:f,constructor:function(a){this.callBase("path"),a&&this.setPathData(a),this.node.setAttribute("fill",g.defaults.fill),this.node.setAttribute("stroke",g.defaults.stroke)},setPathData:function(a){return a=a||"M0,0",this.pathdata=h.pathToString(a),this.node.setAttribute("d",this.pathdata),this.trigger("shapeupdate",{type:"pathdata"}),this},getPathData:function(){return this.pathdata||""},getDrawer:function(){return new j(this)},isClosed:function(){var a=this.getPathData();return!!~a.indexOf("z")||!!~a.indexOf("Z")}})}},_p[48]={value:function(a,b,c){var d=_p.r(59),e=_p.r(62);_p.r(68);return _p.r(11).createClass("PatternBrush",{base:d,mixins:[e],constructor:function(a){this.callBase("pattern",a),this.node.setAttribute("patternUnits","userSpaceOnUse")},setX:function(a){return this.x=a,this.node.setAttribute("x",a),this},setY:function(a){return this.y=a,this.node.setAttribute("y",a),this},setWidth:function(a){return this.width=a,this.node.setAttribute("width",a),this},setHeight:function(a){return this.height=a,this.node.setAttribute("height",a),this},getWidth:function(){return this.width},getHeight:function(){return this.height}})}},_p[49]={value:function(a,b,c){var d=_p.r(29);return _p.r(11).createClass("Pen",{constructor:function(a,b){this.brush=a,this.width=b||1,this.linecap=null,this.linejoin=null,this.dashArray=null,this.opacity=1},getBrush:function(){return this.brush},setBrush:function(a){return this.brush=a,this},setColor:function(a){return this.setBrush(a)},getColor:function(){return this.brush instanceof d?this.brush:null},getWidth:function(){return this.width},setWidth:function(a){return this.width=a,this},getOpacity:function(){return this.opacity},setOpacity:function(a){this.opacity=a},getLineCap:function(){return this.linecap},setLineCap:function(a){return this.linecap=a,this},getLineJoin:function(){return this.linejoin},setLineJoin:function(a){return this.linejoin=a,this},getDashArray:function(){return this.dashArray},setDashArray:function(a){return this.dashArray=a,this},stroke:function(a){var b=a.node;b.setAttribute("stroke",this.brush.toString()),b.setAttribute("stroke-width",this.getWidth()),this.getOpacity()<1&&b.setAttribute("stroke-opacity",this.getOpacity()),this.getLineCap()&&b.setAttribute("stroke-linecap",this.getLineCap()),this.getLineJoin()&&b.setAttribute("stroke-linejoin",this.getLineJoin()),this.getDashArray()&&b.setAttribute("stroke-dasharray",this.getDashArray())}})}},_p[50]={value:function(a,b,c){return _p.r(11).createClass({base:_p.r(69),constructor:function(a,b,c){this.callBase([0,a],b,c)},getRadius:function(){return this.getSectionArray()[1]},setRadius:function(a){this.setSectionArray([0,a]); +}})}},_p[51]={value:function(a,b,c){var d=_p.r(11).createClass("Point",{constructor:function(a,b){this.x=a||0,this.y=b||0},offset:function(a,b){return 1==arguments.length&&(b=a.y,a=a.x),new d(this.x+a,this.y+b)},valueOf:function(){return[this.x,this.y]},toString:function(){return this.valueOf().join(" ")},spof:function(){return new d((0|this.x)+.5,(0|this.y)+.5)},round:function(){return new d(0|this.x,0|this.y)},isOrigin:function(){return 0===this.x&&0===this.y}});return d.fromPolar=function(a,b,c){return"rad"!=c&&(b=b/180*Math.PI),new d(a*Math.cos(b),a*Math.sin(b))},d.parse=function(a){return a?a instanceof d?a:"string"==typeof a?d.parse(a.split(/\s*[\s,]\s*/)):"0"in a&&"1"in a?new d(a[0],a[1]):void 0:new d},d}},_p[52]={value:function(a,b,c){return _p.r(11).createClass("PointContainer",{base:_p.r(30),constructor:function(){this.callBase()},addPoint:function(a,b){return this.addItem.apply(this,arguments)},prependPoint:function(){return this.prependItem.apply(this,arguments)},appendPoint:function(){return this.appendItem.apply(this,arguments)},removePoint:function(a){return this.removeItem.apply(this,arguments)},addPoints:function(){return this.addItems.apply(this,arguments)},setPoints:function(){return this.setItems.apply(this,arguments)},getPoint:function(){return this.getItem.apply(this,arguments)},getPoints:function(){return this.getItems.apply(this,arguments)},getFirstPoint:function(){return this.getFirstItem.apply(this,arguments)},getLastPoint:function(){return this.getLastItem.apply(this,arguments)}})}},_p[53]={value:function(a,b,c){_p.r(12);return _p.r(11).createClass("Poly",{base:_p.r(47),mixins:[_p.r(52)],constructor:function(a,b){this.callBase(),this.closeable=!!b,this.setPoints(a||[]),this.changeable=!0,this.update()},onContainerChanged:function(){this.changeable&&this.update()},update:function(){var a=this.getDrawer(),b=this.getPoints();if(a.clear(),!b.length)return this;a.moveTo(b[0]);for(var c,d=1,e=b.length;e>d;d++)c=b[d],a.lineTo(c);return this.closeable&&b.length>2&&a.close(),this}})}},_p[54]={value:function(a,b,c){return _p.r(11).createClass("Polygon",{base:_p.r(53),constructor:function(a){this.callBase(a,!0)}})}},_p[55]={value:function(a,b,c){return _p.r(11).createClass("Polyline",{base:_p.r(53),constructor:function(a){this.callBase(a)}})}},_p[56]={value:function(a,b,c){var d=_p.r(36);return _p.r(11).createClass("RadialGradientBrush",{base:d,constructor:function(a){this.callBase("radialGradient",a),this.setCenter(.5,.5),this.setFocal(.5,.5),this.setRadius(.5)},setCenter:function(a,b){return this.node.setAttribute("cx",a),this.node.setAttribute("cy",b),this},getCenter:function(){return{x:+this.node.getAttribute("cx"),y:+this.node.getAttribute("cy")}},setFocal:function(a,b){return this.node.setAttribute("fx",a),this.node.setAttribute("fy",b),this},getFocal:function(){return{x:+this.node.getAttribute("fx"),y:+this.node.getAttribute("fy")}},setRadius:function(a){return this.node.setAttribute("r",a),this},getRadius:function(){return+this.node.getAttribute("r")}})}},_p[57]={value:function(a,b,c){var d={},e=_p.r(12),f=_p.r(51),g=_p.r(26);e.extend(d,{formatRadius:function(a,b,c){var d=Math.floor(Math.min(a/2,b/2));return Math.min(d,c)}});var h=_p.r(11).createClass("Rect",{base:_p.r(47),constructor:function(a,b,c,e,f){this.callBase(),this.x=c||0,this.y=e||0,this.width=a||0,this.height=b||0,this.radius=d.formatRadius(this.width,this.height,f||0),this.update()},update:function(){var a=this.x,b=this.y,c=this.width,d=this.height,e=this.radius,f=this.getDrawer().redraw();return e?(c-=2*e,d-=2*e,f.push("M",a+e,b),f.push("h",c),f.push("a",e,e,0,0,1,e,e),f.push("v",d),f.push("a",e,e,0,0,1,-e,e),f.push("h",-c),f.push("a",e,e,0,0,1,-e,-e),f.push("v",-d),f.push("a",e,e,0,0,1,e,-e),f.push("z")):(f.push("M",a,b),f.push("h",c),f.push("v",d),f.push("h",-c),f.push("z")),f.done(),this},setWidth:function(a){return this.width=a,this.update()},setHeight:function(a){return this.height=a,this.update()},setSize:function(a,b){return this.width=a,this.height=b,this.update()},setBox:function(a){return this.x=a.x,this.y=a.y,this.width=a.width,this.height=a.height,this.update()},getBox:function(){return new g(this.x,this.y,this.width,this.height)},getRadius:function(){return this.radius},setRadius:function(a){return this.radius=d.formatRadius(this.width,this.height,a||0),this.update()},getPosition:function(){return new f(this.x,this.y)},setPosition:function(a,b){if(1==arguments.length){var c=f.parse(arguments[0]);b=c.y,a=c.x}return this.x=a,this.y=b,this.update()},getWidth:function(){return this.width},getHeight:function(){return this.height},getPositionX:function(){return this.x},getPositionY:function(){return this.y},setPositionX:function(a){return this.x=a,this.update()},setPositionY:function(a){return this.y=a,this.update()}});return h}},_p[58]={value:function(a,b,c){var d=_p.r(51);return _p.r(11).createClass("RegularPolygon",{base:_p.r(47),constructor:function(a,b,c,e){this.callBase(),this.radius=b||0,this.side=Math.max(a||3,3),arguments.length>2&&3==arguments.length&&(e=c.y,c=c.x),this.center=new d(c,e),this.draw()},getSide:function(){return this.side},setSide:function(a){return this.side=a,this.draw()},getRadius:function(){return this.radius},setRadius:function(a){return this.radius=a,this.draw()},draw:function(){var a,b=this.radius,c=this.side,e=2*Math.PI/c,f=this.getDrawer();for(f.clear(),f.moveTo(d.fromPolar(b,Math.PI/2,"rad").offset(this.center)),a=0;c>=a;a++)f.lineTo(d.fromPolar(b,e*a+Math.PI/2,"rad").offset(this.center));return f.close(),this}})}},_p[59]={value:function(a,b,c){var d=_p.r(68);return _p.r(11).createClass("Resource",{constructor:function(a,b){this.callBase(),this.node=d.createNode(a),b&&b.addResource(this)},toString:function(){return"url(#"+this.node.id+")"}})}},_p[60]={value:function(a,b,c){return _p.r(11).createClass({base:_p.r(69),constructor:function(a,b){this.callBase([a,b],360,0)},getInnerRadius:function(){return this.getSectionArray()[0]},getOuterRadius:function(){return this.getSectionArray()[1]},setInnerRadius:function(a){this.setSectionArray([a,this.getOuterRadius()])},setOuterRadius:function(a){this.setSectionArray([this.getInnerRadius(),a])}})}},_p[61]={value:function(a,b,c){var d=_p.r(68),e=_p.r(12),f=_p.r(34),g=_p.r(67),h=_p.r(32),i=_p.r(44),j=(_p.r(49),Array.prototype.slice),k=_p.r(26),l=_p.r(11).createClass("Shape",{mixins:[f,g,h],constructor:function(a){this.node=d.createNode(a),this.node.shape=this,this.transform={translate:null,rotate:null,scale:null,matrix:null},this.callMixin()},getId:function(){return this.node.id},setId:function(a){return this.node.id=a,this},getNode:function(){return this.node},getBoundaryBox:function(){var a;try{a=this.node.getBBox()}catch(b){a={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}return new k(a)},getRenderBox:function(a){var b=this.getBoundaryBox(),c=this.getTransform(a);return c.transformBox(b)},getWidth:function(){return this.getRenderBox().width},getHeight:function(){return this.getRenderBox().height},getSize:function(){var a=this.getRenderBox();return delete a.x,delete a.y,a},setOpacity:function(a){return this.node.setAttribute("opacity",a),this},getOpacity:function(){var a=this.node.getAttribute("opacity");return a?+a:1},setVisible:function(a){return a?this.node.removeAttribute("display"):this.node.setAttribute("display","none"),this},getVisible:function(){this.node.getAttribute("display")},hasAncestor:function(a){for(var b=this.container;b;){if(b===a)return!0;b=b.container}return!1},getTransform:function(a){return i.getCTM(this,a)},clearTransform:function(){return this.node.removeAttribute("transform"),this.transform={translate:null,rotate:null,scale:null,matrix:null},this.trigger("shapeupdate",{type:"transform"}),this},_applyTransform:function(){var a=this.transform,b=[];return a.translate&&b.push(["translate(",a.translate,")"]),a.rotate&&b.push(["rotate(",a.rotate,")"]),a.scale&&b.push(["scale(",a.scale,")"]),a.matrix&&b.push(["matrix(",a.matrix,")"]),this.node.setAttribute("transform",e.flatten(b).join(" ")),this},setMatrix:function(a){return this.transform.matrix=a,this._applyTransform()},setTranslate:function(a){return this.transform.translate=null!==a&&j.call(arguments)||null,this._applyTransform()},setRotate:function(a){return this.transform.rotate=null!==a&&j.call(arguments)||null,this._applyTransform()},setScale:function(a){return this.transform.scale=null!==a&&j.call(arguments)||null,this._applyTransform()},translate:function(a,b){var c=this.transform.matrix||new i;return void 0===b&&(b=0),this.transform.matrix=c.translate(a,b),this._applyTransform()},rotate:function(a){var b=this.transform.matrix||new i;return this.transform.matrix=b.rotate(a),this._applyTransform()},scale:function(a,b){var c=this.transform.matrix||new i;return void 0===b&&(b=a),this.transform.matrix=c.scale(a,b),this._applyTransform()},skew:function(a,b){var c=this.transform.matrix||new i;return void 0===b&&(b=a),this.transform.matrix=c.skew(a,b),this._applyTransform()},stroke:function(a,b){return a&&a.stroke?a.stroke(this):a?(this.node.setAttribute("stroke",a.toString()),b&&this.node.setAttribute("stroke-width",b)):null===a&&this.node.removeAttribute("stroe"),this},fill:function(a){return a&&this.node.setAttribute("fill",a.toString()),null===a&&this.node.removeAttribute("fill"),this},setAttr:function(a,b){var c=this;return e.isObject(a)&&e.each(a,function(a,b){c.setAttr(b,a)}),void 0===b||null===b||""===b?this.node.removeAttribute(a):this.node.setAttribute(a,b),this},getAttr:function(a){return this.node.getAttribute(a)}});return l}},_p[62]={value:function(a,b,c){var d=_p.r(30),e=_p.r(12),f=_p.r(11).createClass("ShapeContainer",{base:d,isShapeContainer:!0,handleAdd:function(a,b){var c=this.getShapeNode();c.insertBefore(a.node,c.childNodes[b]||null),a.trigger("add",{container:this}),a.notifyTreeModification&&a.notifyTreeModification("treeadd",this)},handleRemove:function(a,b){var c=this.getShapeNode();c.removeChild(a.node),a.trigger("remove",{container:this}),a.notifyTreeModification&&a.notifyTreeModification("treeremove",this)},notifyTreeModification:function(a,b){this.eachItem(function(c,d){d.notifyTreeModification&&d.notifyTreeModification(a,b),d.trigger(a,{container:b})})},getShape:function(a){return this.getItem(a)},addShape:function(a,b){return this.addItem(a,b)},put:function(a){return this.addShape(a),a},appendShape:function(a){return this.addShape(a)},prependShape:function(a){return this.addShape(a,0)},replaceShape:function(a,b){var c=this.indexOf(b);if(-1!==c)return this.removeShape(c),this.addShape(a,c),this},addShapeBefore:function(a,b){var c=this.indexOf(b);return this.addShape(a,c)},addShapeAfter:function(a,b){var c=this.indexOf(b);return this.addShape(a,-1===c?void 0:c+1)},addShapes:function(a){return this.addItems(a)},removeShape:function(a){return this.removeItem(a)},getShapes:function(){return this.getItems()},getShapesByType:function(a){function b(d){a.toLowerCase()==d.getType().toLowerCase()&&c.push(d),d.isShapeContainer&&e.each(d.getShapes(),function(a){b(a)})}var c=[];return b(this),c},getShapeById:function(a){return this.getShapeNode().getElementById(a).shape},arrangeShape:function(a,b){return this.removeShape(a).addShape(a,b)},getShapeNode:function(){return this.shapeNode||this.node}}),g=_p.r(61);return _p.r(11).extendClass(g,{bringTo:function(a){return this.container.arrangeShape(this,a),this},bringFront:function(){return this.bringTo(this.container.indexOf(this)+1)},bringBack:function(){return this.bringTo(this.container.indexOf(this)-1)},bringTop:function(){return this.container.removeShape(this).addShape(this),this},bringRear:function(){return this.bringTo(0)},bringRefer:function(a,b){return a.container&&(this.remove&&this.remove(),a.container.addShape(this,a.container.indexOf(a)+(b||0))),this},bringAbove:function(a){return this.bringRefer(a)},bringBelow:function(a){return this.bringRefer(a,1)},replaceBy:function(a){return this.container&&(a.bringAbove(this),this.remove()),this}}),f}},_p[63]={value:function(a,b,c){var d=_p.r(44),e=_p.r(12),f=_p.r(51);return _p.r(11).createClass("ShapeEvent",{constructor:function(a){var b=null;e.isObject(a.target)?e.extend(this,a):(this.type=a.type,b=a.target,b.correspondingUseElement&&(b=b.correspondingUseElement),this.originEvent=a,this.targetShape=b.shape||b.paper||a.currentTarget&&(a.currentTarget.shape||a.currentTarget.paper),a._kityParam&&e.extend(this,a._kityParam))},preventDefault:function(){var a=this.originEvent;return a?a.preventDefault?(a.preventDefault(),a.cancelable):(a.returnValue=!1,!0):!0},getPosition:function(a,b){if(!this.originEvent)return null;var c=this.originEvent.touches?this.originEvent.touches[b||0]:this.originEvent,e=this.targetShape,g=e.shapeNode||e.node,h=new f(c&&c.clientX||0,c&&c.clientY||0),i=d.transformPoint(h,g.getScreenCTM().inverse()),j=d.getCTM(e,a||"view").transformPoint(i);return j},stopPropagation:function(){var a=this.originEvent;return a?void(a.stopPropagation?a.stopPropagation():a.cancelBubble=!1):!0}})}},_p[64]={value:function(a,b,c){return _p.r(11).createClass("ShapePoint",{base:_p.r(51),constructor:function(a,b){this.callBase(a,b)},setX:function(a){return this.setPoint(a,this.y)},setY:function(a){return this.setPoint(this.x,a)},setPoint:function(a,b){return this.x=a,this.y=b,this.update(),this},getPoint:function(){return this},update:function(){return this.container&&this.container.update&&this.container.update(),this}})}},_p[65]={value:{COLOR_STANDARD:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00"},EXTEND_STANDARD:{}}},_p[66]={value:function(a,b,c){var d={3:.2,5:.38196601125,6:.57735026919,8:.541196100146,10:.726542528005,12:.707106781187},e=_p.r(51);return _p.r(11).createClass("Star",{base:_p.r(47),constructor:function(a,b,c,d,f){this.callBase(),this.vertex=a||3,this.radius=b||0,this.shrink=c,this.offset=d||new e(0,0),this.angleOffset=f||0,this.draw()},getVertex:function(){return this.vertex},setVertex:function(a){return this.vertex=a,this.draw()},getRadius:function(){return this.radius},setRadius:function(a){return this.radius=a,this.draw()},getShrink:function(){return this.shrink},setShrink:function(a){return this.shrink=a,this.draw()},getOffset:function(){return this.offset},setOffset:function(a){return this.offset=a,this.draw()},getAngleOffset:function(){return this.angleOffset},setAngleOffset:function(a){return this.angleOffset=a,this.draw()},draw:function(){var a,b,c=this.radius,f=this.radius*(this.shrink||d[this.vertex]||.5),g=this.vertex,h=this.offset,i=90,j=180/g,k=this.angleOffset,l=this.getDrawer();for(l.clear(),l.moveTo(e.fromPolar(f,i)),a=1;2*g>=a;a++)b=i+j*a,a%2?l.lineTo(e.fromPolar(c,b+k).offset(h)):l.lineTo(e.fromPolar(f,b));l.close()}})}},_p[67]={value:function(a,b,c){function d(a){return a.classList||(a.classList=new e(a)),a.classList}var e=_p.r(11).createClass("ClassList",{constructor:function(a){this._node=a,this._list=a.className.toString().split(" ")},_update:function(){this._node.className=this._list.join(" ")},add:function(a){this._list.push(a),this._update()},remove:function(a){var b=this._list.indexOf(a);~b&&this._list.splice(b,1),this._update()},contains:function(a){return!!~this._list.indexOf(a)}});return _p.r(11).createClass("Styled",{addClass:function(a){return d(this.node).add(a),this},removeClass:function(a){return d(this.node).remove(a),this},hasClass:function(a){return d(this.node).contains(a)},setStyle:function(a){if(2==arguments.length)return this.node.style[arguments[0]]=arguments[1],this;for(var b in a)a.hasOwnProperty(b)&&(this.node.style[b]=a[b]);return this}})}},_p[68]={value:function(a,b,c){var d=document,e=0,f={createNode:function(a){var b=d.createElementNS(f.ns,a);return b.id="kity_"+a+"_"+e++,b},defaults:{stroke:"none",fill:"none"},xlink:"http://www.w3.org/1999/xlink",ns:"http://www.w3.org/2000/svg"};return f}},_p[69]={value:function(a,b,c){var d=_p.r(51);return _p.r(11).createClass("Sweep",{base:_p.r(47),constructor:function(a,b,c){this.callBase(),this.sectionArray=a||[],this.angle=b||0,this.angleOffset=c||0,this.draw()},getSectionArray:function(){return this.sectionArray},setSectionArray:function(a){return this.sectionArray=a,this.draw()},getAngle:function(){return this.angle},setAngle:function(a){return this.angle=a,this.draw()},getAngleOffset:function(){return this.angleOffset},setAngleOffset:function(a){return this.angleOffset=a,this.draw()},draw:function(){var a,b=this.sectionArray;for(a=0;ac?0:1,i=this.getDrawer();return i.redraw(),0===c?void i.done():(i.moveTo(d.fromPolar(a,e)),i.lineTo(d.fromPolar(b,e)),b&&(i.carcTo(b,0,h,d.fromPolar(b,f)),i.carcTo(b,0,h,d.fromPolar(b,g))),i.lineTo(d.fromPolar(a,g)),a&&(i.carcTo(a,0,h,d.fromPolar(a,f)),i.carcTo(a,0,h,d.fromPolar(a,e))),i.close(),void i.done())}})}},_p[70]={value:function(a,b,c){function d(a){var b=a._cachedFontHash;if(i[b])return i[b];var c=a.getContent();a.setContent("百度Fex");var d=a.getBoundaryBox(),e=a.getY();if(!d.height)return{top:0,bottom:0,middle:0};var f=e-d.y+ +a.node.getAttribute("dy"),g=f-d.height;return a.setContent(c),i[b]={top:f,bottom:g,middle:(f+g)/2}}var e=_p.r(71),f=_p.r(62),g=_p.r(68),h=_p.r(12),i={};return _p.r(11).createClass("Text",{base:e,mixins:[f],constructor:function(a){this.callBase("text"),void 0!==a&&this.setContent(a),this._buildFontHash()},fixPosition:function(){this.__fixedPosition||this.setVerticalAlign(this.getVerticalAlign())},_buildFontHash:function(){var a=window.getComputedStyle(this.node);this._cachedFontHash=[a.fontFamily,a.fontSize,a.fontStretch,a.fontStyle,a.fontVariant,a.fontWeight].join("-")},_fontChanged:function(a){var b=this._lastFont,c=h.extend({},b,a);if(!b)return this._lastFont=a,!0;var d=b.family!=c.family||b.size!=c.size||b.style!=c.style||b.weight!=c.weight;return this._lastFont=c,d},setX:function(a){return this.node.setAttribute("x",a),this},setPosition:function(a,b){return this.setX(a).setY(b)},setY:function(a){return this.node.setAttribute("y",a),this},getX:function(){return+this.node.getAttribute("x")||0},getY:function(){return+this.node.getAttribute("y")||0},setFont:function(a){return this.callBase(a),this._fontChanged(a)&&(this._buildFontHash(),this.setVerticalAlign(this.getVerticalAlign())),this},setTextAnchor:function(a){return this.node.setAttribute("text-anchor",a),this},getTextAnchor:function(){return this.node.getAttribute("text-anchor")||"start"},setVerticalAlign:function(a){return this.whenPaperReady(function(){var b;switch(a){case"top":b=d(this).top;break;case"bottom":b=d(this).bottom;break;case"middle":b=d(this).middle;break;default:b=0}b&&(this.__fixedPosition=!0),this.node.setAttribute("dy",b)}),this.verticalAlign=a,this},getVerticalAlign:function(){return this.verticalAlign||"baseline"},setStartOffset:function(a){this.shapeNode!=this.node&&this.shapeNode.setAttribute("startOffset",100*a+"%")},addSpan:function(a){return this.addShape(a),this},setPath:function(a){var b=this.shapeNode;if(this.shapeNode==this.node){for(b=this.shapeNode=g.createNode("textPath");this.node.firstChild;)this.shapeNode.appendChild(this.node.firstChild);this.node.appendChild(b)}return b.setAttributeNS(g.xlink,"xlink:href","#"+a.node.id),this.setTextAnchor(this.getTextAnchor()),this}})}},_p[71]={value:function(a,b,c){var d=_p.r(61);return _p.r(11).createClass("TextContent",{base:d,constructor:function(a){this.callBase(a),this.shapeNode=this.shapeNode||this.node,this.shapeNode.setAttribute("text-rendering","geometricPrecision")},clearContent:function(){for(;this.shapeNode.firstChild;)this.shapeNode.removeChild(this.shapeNode.firstChild);return this},setContent:function(a){return this.shapeNode.textContent=a,this},getContent:function(){return this.shapeNode.textContent},appendContent:function(a){return this.shapeNode.textContent+=a,this},setSize:function(a){return this.setFontSize(a)},setFontSize:function(a){return this.setFont({size:a})},setFontFamily:function(a){return this.setFont({family:a})},setFontBold:function(a){return this.setFont({weight:a?"bold":"normal"})},setFontItalic:function(a){return this.setFont({style:a?"italic":"normal"})},setFont:function(a){var b=this.node;return["family","size","weight","style"].forEach(function(c){null===a[c]?b.removeAttribute("font-"+c):a[c]&&b.setAttribute("font-"+c,a[c])}),this},getExtentOfChar:function(a){return this.node.getExtentOfChar(a)},getRotationOfChar:function(a){return this.node.getRotationOfChar(a)},getCharNumAtPosition:function(a,b){return this.node.getCharNumAtPosition(this.node.viewportElement.createSVGPoint(a,b))}})}},_p[72]={value:function(a,b,c){var d=_p.r(71),e=_p.r(67);return _p.r(11).createClass("TextSpan",{base:d,mixins:[e],constructor:function(a){this.callBase("tspan"),this.setContent(a)}})}},_p[73]={value:function(a,b,c){var d=_p.r(68),e=_p.r(11),f=e.createClass("Use",{base:_p.r(61),constructor:function(a){this.callBase("use"),this.ref(a)},ref:function(a){if(!a)return this.node.removeAttributeNS(d.xlink,"xlink:href"),this;var b=a.getId();return b&&this.node.setAttributeNS(d.xlink,"xlink:href","#"+b),"none"===a.node.getAttribute("fill")&&a.node.removeAttribute("fill"),"none"===a.node.getAttribute("stroke")&&a.node.removeAttribute("stroke"),this}}),g=_p.r(61);return e.extendClass(g,{use:function(){return new f(this)}}),f}},_p[74]={value:function(a,b,c){var d=_p.r(51),e=_p.r(44),f=_p.r(11).createClass("Vector",{base:d,constructor:function(a,b){this.callBase(a,b)},square:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.square())},add:function(a){return new f(this.x+a.x,this.y+a.y)},minus:function(a){return new f(this.x-a.x,this.y-a.y)},dot:function(a){return this.x*a.x+this.y*a.y},project:function(a){return a.multipy(this.dot(a)/a.square())},normalize:function(a){return void 0===a&&(a=1),this.multipy(a/this.length())},multipy:function(a){return new f(this.x*a,this.y*a)},rotate:function(a,b){"rad"==b&&(a=a/Math.PI*180);var c=(new e).rotate(a).transformPoint(this);return new f(c.x,c.y)},vertical:function(){return new f(this.y,-this.x)},reverse:function(){return this.multipy(-1)},getAngle:function(){var a=this.length();if(0===a)return 0;var b=Math.acos(this.x/a),c=this.y>0?1:-1;return 180*c*b/Math.PI}});return f.fromPoints=function(a,b){return new f(b.x-a.x,b.y-a.y)},f.fromPolar=function(){var a=d.fromPolar.apply(d,arguments);return new f(a.x,a.y)},_p.r(11).extendClass(d,{asVector:function(){return new f(this.x,this.y)}}),f}},_p[75]={value:function(a,b,c){var d=_p.r(62),e=_p.r(76);return _p.r(11).createClass("View",{mixins:[d,e],base:_p.r(75),constructor:function(){this.callBase("view")}})}},_p[76]={value:function(a,b,c){return _p.r(11).createClass("ViewBox",{getViewBox:function(){var a=this.node.getAttribute("viewBox");return null===a?{x:0,y:0,width:this.node.clientWidth||this.node.parentNode.clientWidth,height:this.node.clientHeight||this.node.parentNode.clientHeight}:(a=a.split(" "),{x:+a[0],y:+a[1],width:+a[2],height:+a[3]})},setViewBox:function(a,b,c,d){return this.node.setAttribute("viewBox",[a,b,c,d].join(" ")),this}})}},_p[77]={value:function(a,b,c){var d={},e=_p.r(12);d.version="2.0.0",e.extend(d,{createClass:_p.r(11).createClass,extendClass:_p.r(11).extendClass,Utils:e,Browser:_p.r(10),Box:_p.r(26),Bezier:_p.r(24),BezierPoint:_p.r(25),Circle:_p.r(27),Clip:_p.r(28),Color:_p.r(29),Container:_p.r(30),Curve:_p.r(31),Ellipse:_p.r(33),Group:_p.r(37),Gradient:_p.r(36),HyperLink:_p.r(38),Image:_p.r(39),Line:_p.r(40),LinearGradient:_p.r(41),Mask:_p.r(43),Matrix:_p.r(44),Marker:_p.r(42),Palette:_p.r(45),Paper:_p.r(46),Path:_p.r(47),Pattern:_p.r(48),Pen:_p.r(49),Point:_p.r(51),PointContainer:_p.r(52),Polygon:_p.r(54),Polyline:_p.r(55),Pie:_p.r(50),RadialGradient:_p.r(56),Resource:_p.r(59),Rect:_p.r(57),RegularPolygon:_p.r(58),Ring:_p.r(60),Shape:_p.r(61),ShapePoint:_p.r(64),ShapeContainer:_p.r(62),Sweep:_p.r(69),Star:_p.r(66),Text:_p.r(70),TextSpan:_p.r(72),Use:_p.r(73),Vector:_p.r(74),g:_p.r(35),Animator:_p.r(0),Easing:_p.r(1),OpacityAnimator:_p.r(4),RotateAnimator:_p.r(6),ScaleAnimator:_p.r(7),Timeline:_p.r(8),TranslateAnimator:_p.r(9),PathAnimator:_p.r(5),MotionAnimator:_p.r(3),requestFrame:_p.r(2).requestFrame,releaseFrame:_p.r(2).releaseFrame,Filter:_p.r(21),GaussianblurFilter:_p.r(22),ProjectionFilter:_p.r(23),ColorMatrixEffect:_p.r(14),CompositeEffect:_p.r(15),ConvolveMatrixEffect:_p.r(16),Effect:_p.r(17),GaussianblurEffect:_p.r(18),OffsetEffect:_p.r(19)}),c.exports=d}};var moduleMapping={"expose-kity":13};use("expose-kity")}(); \ No newline at end of file diff --git a/static/mind-map/kityminder.core.min.js b/static/mind-map/kityminder.core.min.js new file mode 100644 index 0000000..7fc11fa --- /dev/null +++ b/static/mind-map/kityminder.core.min.js @@ -0,0 +1,10 @@ +/*! + * ==================================================== + * Kity Minder Core - v1.4.49 - 2018-04-02 + * https://github.com/fex-team/kityminder-core + * GitHub: https://github.com/fex-team/kityminder-core.git + * Copyright (c) 2018 Baidu FEX; Licensed BSD-3-Clause + * ==================================================== + */ + +!function(){function a(a){b.r([c[a]])}var b={r:function(a){if(b[a].inited)return b[a].value;if("function"!=typeof b[a].value)return b[a].inited=!0,b[a].value;var c={exports:{}},d=b[a].value(null,c.exports,c);if(b[a].inited=!0,b[a].value=d,void 0!==d)return d;for(var e in c.exports)if(c.exports.hasOwnProperty(e))return b[a].inited=!0,b[a].value=c.exports,c.exports}};b[0]={value:function(a,c,d){var e=b.r(17),f=b.r(11),g=(new e.Marker).pipe(function(){var a=7,b=new e.Circle(a-1);this.addShape(b),this.setRef(a-1,0).setViewBox(-a,-a,a+a,a+a).setWidth(a).setHeight(a),this.dot=b,this.node.setAttribute("markerUnits","userSpaceOnUse")});f.register("arc",function(a,b,c,d,f){var h,i,j,k=a.getLayoutBox(),l=b.getLayoutBox(),m=Math.abs,n=[],o=k.x>l.x?"right":"left";a.getMinder().getPaper().addResource(g),h=new e.Point(l.cx,l.cy),i="left"==o?new e.Point(k.right+2,k.cy):new e.Point(k.left-2,k.cy),j=e.Vector.fromPoints(h,i),n.push("M",h),n.push("A",m(j.x),m(j.y),0,0,j.x*j.y>0?0:1,i),c.setMarker(g),g.dot.fill(f),c.setPathData(n)})}},b[1]={value:function(a,c,d){var e=b.r(17),f=b.r(11),g=(new e.Marker).pipe(function(){var a=7,b=new e.Circle(a-1);this.addShape(b),this.setRef(a-1,0).setViewBox(-a,-a,a+a,a+a).setWidth(a).setHeight(a),this.dot=b,this.node.setAttribute("markerUnits","userSpaceOnUse")});f.register("arc_tp",function(a,b,c,d,f){var h=a.getLayoutBox(),i=b.getLayoutBox(),j=a.getIndex(),k=b.getChildren()[j+1];a.getIndex()>0&&(i=b.getChildren()[j-1].getLayoutBox());var l,m,n=(Math.abs,[]);h.x,i.x;a.getMinder().getPaper().addResource(g),l=new e.Point(i.cx,i.cy),m=new e.Point(h.cx,h.cy);var o=Math.sqrt(Math.pow(l.x-m.x,2)+Math.pow(l.y-m.y,2));if(o=0==a.getIndex()?.4*o:o,e.Vector.fromPoints(l,m),n.push("M",l),n.push("A",o,o,0,0,1,m),c.setMarker(g),g.dot.fill(f),c.setPathData(n),k&&k.getConnection()){var p=k.getConnection(),q=k.getLayoutBox(),r=new e.Point(q.cx,q.cy),s=Math.sqrt(Math.pow(m.x-r.x,2)+Math.pow(m.y-r.y,2));n=[],n.push("M",m),n.push("A",s,s,0,0,1,r),p.setMarker(g),g.dot.fill(f),p.setPathData(n)}})}},b[2]={value:function(a,c,d){b.r(17);b.r(11).register("bezier",function(a,b,c){var d=b.getLayoutVertexOut(),e=a.getLayoutVertexIn(),f=b.getLayoutVectorOut().normalize(),g=Math.round,h=Math.abs,i=[];if(i.push("M",g(d.x),g(d.y)),h(f.x)>h(f.y)){var j=(e.x+d.x)/2;i.push("C",j,d.y,j,e.y,e.x,e.y)}else{var k=(e.y+d.y)/2;i.push("C",d.x,k,e.x,k,e.x,e.y)}c.setMarker(null),c.setPathData(i)})}},b[3]={value:function(a,c,d){b.r(17);b.r(11).register("fish-bone-master",function(a,b,c){var d=b.getLayoutVertexOut(),e=a.getLayoutVertexIn(),f=Math.abs,g=f(d.y-e.y),h=f(d.x-e.x),i=[];i.push("M",d.x,d.y),i.push("h",h-g),i.push("L",e.x,e.y),c.setMarker(null),c.setPathData(i)})}},b[4]={value:function(a,c,d){b.r(17);b.r(11).register("l",function(a,b,c){var d=b.getLayoutVertexOut(),e=a.getLayoutVertexIn(),f=b.getLayoutVectorOut(),g=[],h=Math.round,i=Math.abs;g.push("M",d.round()),i(f.x)>i(f.y)?g.push("H",h(e.x)):g.push("V",e.y),g.push("L",e),c.setPathData(g)})}},b[5]={value:function(a,c,d){b.r(17);b.r(11).register("poly",function(a,b,c,d){var e=b.getLayoutVertexOut(),f=a.getLayoutVertexIn(),g=b.getLayoutVectorOut().normalize(),h=Math.round,i=Math.abs,j=[];switch(j.push("M",h(e.x),h(e.y)),!0){case i(g.x)>i(g.y)&&g.x<0:j.push("h",-b.getStyle("margin-left")),j.push("v",f.y-e.y),j.push("H",f.x);break;case i(g.x)>i(g.y)&&g.x>=0:j.push("h",b.getStyle("margin-right")),j.push("v",f.y-e.y),j.push("H",f.x);break;case i(g.x)<=i(g.y)&&g.y<0:j.push("v",-b.getStyle("margin-top")),j.push("h",f.x-e.x),j.push("V",f.y);break;case i(g.x)<=i(g.y)&&g.y>=0:j.push("v",b.getStyle("margin-bottom")),j.push("h",f.x-e.x),j.push("V",f.y)}c.setMarker(null),c.setPathData(j)})}},b[6]={value:function(a,c,d){var e=b.r(17);b.r(11).register("under",function(a,b,c,d,f){var g,h,i,j,k=a.getLayoutBox(),l=b.getLayoutBox(),m=(Math.abs,[]),n=k.x>l.x?"right":"left",o=(a.getStyle("connect-radius"),k.bottom+3),p="sub"==b.getType()?l.bottom+3:l.cy;"right"==n?(g=new e.Point(l.right,p),h=new e.Point(k.left-10,o),i=new e.Point(k.right,o)):(g=new e.Point(l.left,p),h=new e.Point(k.right+10,o),i=new e.Point(k.left,o)),j=(g.x+h.x)/2,m.push("M",g),m.push("C",j,g.y,j,h.y,h),m.push("L",i),c.setMarker(null),c.setPathData(m)})}},b[7]={value:function(a,c,d){var e=b.r(17),f=b.r(19);if(-1!=location.href.indexOf("boxv")){var g;Object.defineProperty(e.Box.prototype,"visualization",{get:function(){return g?g.setBox(this):null}}),f.registerInitHook(function(){this.on("paperrender",function(){g=new e.Rect,g.fill("rgba(200, 200, 200, .5)"),g.stroke("orange"),this.getRenderContainer().addShape(g)})})}}},b[8]={value:function(a,c,d){var e=b.r(19),f={enableAnimation:!0,layoutAnimationDuration:300,viewAnimationDuration:100,zoomAnimationDuration:300},g={};e.registerInitHook(function(){this.setDefaultOptions(f),this.getOption("enableAnimation")||this.disableAnimation()}),e.prototype.enableAnimation=function(){for(var a in f)f.hasOwnProperty(a)&&this.setOption(g[a])},e.prototype.disableAnimation=function(){for(var a in f)f.hasOwnProperty(a)&&(g[a]=this.getOption(a),this.setOption(a,0))}}},b[9]={value:function(a,c,d){var e=b.r(17),f=(b.r(33),b.r(19)),g=(b.r(21),b.r(13)),h=0,i=e.createClass("Command",{constructor:function(){this._isContentChange=!0,this._isSelectionChange=!1},execute:function(a,b){throw new Error("Not Implement: Command.execute()")},setContentChanged:function(a){this._isContentChange=!!a},isContentChanged:function(){return this._isContentChange},setSelectionChanged:function(a){this._isSelectionChange=!!a},isSelectionChanged:function(){return this._isContentChange},queryState:function(a){return h},queryValue:function(a){return 0},isNeedUndo:function(){return!0}});i.STATE_NORMAL=h,i.STATE_ACTIVE=1,i.STATE_DISABLED=-1,e.extendClass(f,{_getCommand:function(a){return this._commands[a.toLowerCase()]},_queryCommand:function(a,b,c){var d=this._getCommand(a);if(d){var e=d["query"+b];if(e)return e.apply(d,[this].concat(c))}return 0},queryCommandState:function(a){return this._queryCommand(a,"State",[].slice.call(arguments,1))},queryCommandValue:function(a){return this._queryCommand(a,"Value",[].slice.call(arguments,1))},execCommand:function(a){if(!a)return null;a=a.toLowerCase();var b,c,d,e,f=[].slice.call(arguments,1),h=this;return b=this._getCommand(a),e={command:b,commandName:a.toLowerCase(),commandArgs:f},!(!b||!~this.queryCommandState(a))&&(this._hasEnterExecCommand?(d=b.execute.apply(b,[h].concat(f)),this._hasEnterExecCommand||this._interactChange()):(this._hasEnterExecCommand=!0,c=this._fire(new g("beforeExecCommand",e,!0)),c||(this._fire(new g("preExecCommand",e,!1)),d=b.execute.apply(b,[h].concat(f)),this._fire(new g("execCommand",e,!1)),b.isContentChanged()&&this._firePharse(new g("contentchange")),this._interactChange()),this._hasEnterExecCommand=!1),void 0===d?null:d)}}),d.exports=i}},b[10]={value:function(a,c,d){function e(a){switch(a.version||(a.root?"1.4.0":"1.1.3")){case"1.1.3":h(a);case"1.2.0":case"1.2.1":g(a);case"1.3.0":case"1.3.1":case"1.3.2":case"1.3.3":case"1.3.4":case"1.3.5":i(a)}return a}function f(a,b){b(a),a.children&&a.children.forEach(function(a){f(a,b)})}function g(a){f(a,function(a){var b=a.data;delete b.layout_bottom_offset,delete b.layout_default_offset,delete b.layout_filetree_offset})}function h(a){var b=a.data.currentstyle;delete a.data.currentstyle,"bottom"==b?(a.template="structure",a.theme="snow"):"default"==b&&(a.template="default",a.theme="classic"),f(a,function(a){var b=a.data;"PriorityIcon"in b&&(b.priority=b.PriorityIcon,delete b.PriorityIcon),"ProgressIcon"in b&&(b.progress=1+(b.ProgressIcon-1<<1),delete b.ProgressIcon),delete b.point,delete b.layout})}function i(a){a.root={data:a.data,children:a.children},delete a.data,delete a.children}b.r(33);return e}},b[11]={value:function(a,c,d){function e(a,b){k[a]=b}var f=b.r(17),g=b.r(33),h=b.r(20),i=b.r(19),j=b.r(21),k={};e("default",function(a,b,c){c.setPathData(["M",b.getLayoutVertexOut(),"L",a.getLayoutVertexIn()])}),f.extendClass(j,{getConnect:function(){return this.data.connect||"default"},getConnectProvider:function(){return k[this.getConnect()]||k.default},getConnection:function(){return this._connection||null}}),f.extendClass(i,{getConnectContainer:function(){return this._connectContainer},createConnect:function(a){if(!a.isRoot()){var b=new f.Path;a._connection=b,this._connectContainer.addShape(b),this.updateConnect(a)}},removeConnect:function(a){var b=this;a.traverse(function(a){b._connectContainer.removeShape(a._connection),a._connection=null})},updateConnect:function(a){var b=a._connection,c=a.parent;if(c&&b){if(c.isCollapsed())return void b.setVisible(!1);b.setVisible(!0);var d=a.getConnectProvider(),e=a.getStyle("connect-color")||"white",f=a.getStyle("connect-width")||2;b.stroke(e,f),d(a,c,b,f,e),f%2==0?b.setTranslate(.5,.5):b.setTranslate(0,0)}}}),h.register("Connect",{init:function(){this._connectContainer=(new f.Group).setId(g.uuid("minder_connect_group")),this.getRenderContainer().prependShape(this._connectContainer)},events:{nodeattach:function(a){this.createConnect(a.node)},nodedetach:function(a){this.removeConnect(a.node)},"layoutapply layoutfinish noderender":function(a){this.updateConnect(a.node)}}}),c.register=e}},b[12]={value:function(a,c,d){function e(a,b){l[a]=b;for(var c in l)l.hasOwnProperty(c)&&(l[c]=l[c],l[c].name=c)}function f(a){return void 0===a?l:l[a]||null}var g=b.r(17),h=(b.r(33),b.r(19)),i=(b.r(21),b.r(13)),j=b.r(10),k=b.r(25),l={};c.registerProtocol=e,c.getRegisterProtocol=f,g.extendClass(h,{setup:function(a){if("string"==typeof a&&(a=document.querySelector(a)),a){var b=a.getAttribute("minder-data-type");if(b in l){var c=a.textContent;a.textContent=null,this.renderTo(a),this.importData(b,c)}return this}},exportJson:function(){function a(b){var c={};c.data=b.getData();var d=b.getChildren();c.children=[];for(var e=0;e200&&(b=0),f(a,a.parent?a.parent.getGlobalLayoutTransform():new g.Matrix),this}}),d.exports=l}},b[19]={value:function(a,c,d){var e=b.r(17),f=b.r(33),g=[],h=e.createClass("Minder",{constructor:function(a){this._options=f.extend({},a);for(var b,c=g.slice();c.length;)"function"==typeof(b=c.shift())&&b.call(this,this._options);this.fire("finishInitHook")}});h.version="1.4.43",h.registerInitHook=function(a){g.push(a)},d.exports=h}},b[20]={value:function(a,c,d){var e=b.r(17),f=b.r(33),g=b.r(19),h={};c.register=function(a,b){h[a]=b},g.registerInitHook(function(){this._initModules()}),e.extendClass(g,{_initModules:function(){var a=h,b=this._options.modules||f.keys(a);this._commands={},this._query={},this._modules={},this._rendererClasses={};var c,d,e,g,i,j,k,l=this;for(c=0;c=0&&(b=this.children.splice(c,1)[0],b.parent=null,b.root=b)},clearChildren:function(){this.children=[]},getChild:function(a){return this.children[a]},getRenderContainer:function(){return this.rc},getCommonAncestor:function(a){return h.getCommonAncestor(this,a)},contains:function(a){return this==a||this.isAncestorOf(a)},clone:function(){var a=new h;return a.data=f.clone(this.data),this.children.forEach(function(b){a.appendChild(b.clone())}),a},compareTo:function(a){if(!f.comparePlainObject(this.data,a.data))return!1;if(!f.comparePlainObject(this.temp,a.temp))return!1;if(this.children.length!=a.children.length)return!1;for(var b=0;this.children[b];){if(!this.children[b].compareTo(a.children[b]))return!1;b++}return!0},getMinder:function(){return this.getRoot().minder}});h.getCommonAncestor=function(a,b){if(a instanceof Array)return h.getCommonAncestor.apply(this,a);switch(arguments.length){case 1:return a.parent||a;case 2:if(a.isAncestorOf(b))return a;if(b.isAncestorOf(a))return b;for(var c=a.parent;c&&!c.isAncestorOf(b);)c=c.parent;return c;default:return Array.prototype.reduce.call(arguments,function(a,b){return h.getCommonAncestor(a,b)},a)}},e.extendClass(g,{getRoot:function(){return this._root},setRoot:function(a){this._root=a,a.minder=this},getAllNode:function(){var a=[];return this.getRoot().traverse(function(b){a.push(b)}),a},getNodeById:function(a){return this.getNodesById([a])[0]},getNodesById:function(a){var b=this.getAllNode(),c=[];return b.forEach(function(b){-1!=a.indexOf(b.getData("id"))&&c.push(b)}),c},createNode:function(a,b,c){var d=new h(a);return this.fire("nodecreate",{node:d,parent:b,index:c}),this.appendNode(d,b,c),d},appendNode:function(a,b,c){return b&&b.insertChild(a,c),this.attachNode(a),this},removeNode:function(a){a.parent&&(a.parent.removeChild(a),this.detachNode(a),this.fire("noderemove",{node:a}))},attachNode:function(a){var b=this.getRenderContainer();a.traverse(function(a){a.attached=!0,b.addShape(a.getRenderContainer())}),b.addShape(a.getRenderContainer()),this.fire("nodeattach",{node:a})},detachNode:function(a){var b=this.getRenderContainer();a.traverse(function(a){a.attached=!1,b.removeShape(a.getRenderContainer())}),this.fire("nodedetach",{node:a})},getMinderTitle:function(){return this.getRoot().getText()}}),d.exports=h}},b[22]={value:function(a,c,d){var e=b.r(17),f=b.r(33),g=b.r(19);g.registerInitHook(function(a){this._defaultOptions={}}),e.extendClass(g,{setDefaultOptions:function(a){return f.extend(this._defaultOptions,a),this},getOption:function(a){return a?a in this._options?this._options[a]:this._defaultOptions[a]:f.extend({},this._defaultOptions,this._options)},setOption:function(a,b){this._options[a]=b}})}},b[23]={value:function(a,c,d){var e=b.r(17),f=b.r(33),g=b.r(19);g.registerInitHook(function(){this._initPaper()}),e.extendClass(g,{_initPaper:function(){this._paper=new e.Paper,this._paper._minder=this,this._paper.getNode().ondragstart=function(a){a.preventDefault()},this._paper.shapeNode.setAttribute("transform","translate(0.5, 0.5)"),this._addRenderContainer(),this.setRoot(this.createNode()),this._options.renderTo&&this.renderTo(this._options.renderTo)},_addRenderContainer:function(){this._rc=(new e.Group).setId(f.uuid("minder")),this._paper.addShape(this._rc)},renderTo:function(a){if("string"==typeof a&&(a=document.querySelector(a)),a){if("script"==a.tagName.toLowerCase()){var b=document.createElement("div");b.id=a.id,b.class=a.class,a.parentNode.insertBefore(b,a),a.parentNode.removeChild(a),a=b}a.classList.add("km-view"),this._paper.renderTo(this._renderTarget=a),this._bindEvents(),this.fire("paperrender")}return this},getRenderContainer:function(){return this._rc},getPaper:function(){return this._paper},getRenderTarget:function(){return this._renderTarget}})}},b[24]={value:function(a,c,d){function e(a,b,c,d){return c=a.createNode(b.data,c,d),b.children.forEach(function(b,d){e(a,b,c,d)}),c}function f(a,b){var c=b.path.split("/");c.shift();var d,f=c.shift();if("root"==f){var g=c.indexOf("data");if(g>-1){f="data";var h=c.splice(g+1);b.dataPath=h}else f="node";d=a.getRoot();for(var i,j;i=c.shift();)"children"!=i&&(void 0!==j&&(d=d.getChild(j)),j=+i);b.index=j,b.node=d}switch(b.express=[f,b.op].join(".")){case"theme.replace":a.useTheme(b.value);break;case"template.replace":a.useTemplate(b.value);break;case"node.add":e(a,b.value,b.node,b.index).renderTree(),a.layout();break;case"node.remove":a.removeNode(b.node.getChild(b.index)),a.layout();break;case"data.add":case"data.replace":case"data.remove":var k,l=b.node.data;for(c=b.dataPath.slice();l&&c.length>1;)k=c.shift(),k in l?l=l[k]:"remove"!=b.op&&(l=l[k]={});l&&(k=c.shift(),l[k]=b.value),"expandState"==k?d.renderTree():d.render(),a.layout()}a.fire("patch",{patch:b})}var g=b.r(17),h=b.r(19);g.extendClass(h,{applyPatches:function(a){for(var b=0;b=0;--c)if(a[c].isAncestorOf(b))return!0;return!1}var c,d=this.getSelectedNodes().slice(0),e=[],f=d.indexOf(this.getRoot());for(~f&&!a&&d.splice(f,1),d.sort(function(a,b){return a.getLevel()-b.getLevel()});c=d.pop();)b(d,c)||e.push(c);return e}}),e.extendClass(h,{isSelected:function(){var a=this.getMinder();return a&&-1!=a.getSelectedNodes().indexOf(this)}})}},b[29]={value:function(a,c,d){function e(a){var b=4096,c=8192,d=16384,e=0;return"string"==typeof a?a.toLowerCase().split(/\+\s*/).forEach(function(a){switch(a){case"ctrl":case"cmd":e|=b;break;case"alt":e|=c;break;case"shift":e|=d;break;default:e|=h[a]}}):((a.ctrlKey||a.metaKey)&&(e|=b),a.altKey&&(e|=c),a.shiftKey&&(e|=d),e|=a.keyCode),e}var f=b.r(17),g=b.r(33),h=b.r(15),i=b.r(19),j=b.r(13);f.extendClass(j,{isShortcutKey:function(a){var b=this.originEvent;return!!b&&e(a)==e(b)}}),i.registerInitHook(function(){this._initShortcutKey()}),f.extendClass(i,{_initShortcutKey:function(){this._bindShortcutKeys()},_bindShortcutKeys:function(){var a=this._shortcutKeys={};this.on("keydown",function(b){for(var c in a)if(a.hasOwnProperty(c)&&b.isShortcutKey(c)){var d=a[c];if(d.__statusCondition&&d.__statusCondition!=this.getStatus())return;d(),b.preventDefault()}})},addShortcut:function(a,b){var c=this._shortcutKeys;a.split(/\|\s*/).forEach(function(a){var d,e=a.split("::");e.length>1&&(a=e[1],d=e[0],b.__statusCondition=d),c[a]=b})},addCommandShortcutKeys:function(a,b){var c=this._commandShortcutKeys||(this._commandShortcutKeys={}),d={};b?d[a]=b:d=a;var e=this;g.each(d,function(a,b){c[b]=a,e.addShortcut(a,function(){-1!==e.queryCommandState(b)&&e.execCommand(b)})})},getCommandShortcutKey:function(a){var b=this._commandShortcutKeys;return b&&b[a]||null},supportClipboardEvent:function(a){return!!a.ClipboardEvent}(window)})}},b[30]={value:function(a,c,d){var e=b.r(17),f=b.r(19),g=~window.location.href.indexOf("status"),h=~window.location.href.indexOf("trace");f.registerInitHook(function(){this._initStatus()}),e.extendClass(f,{_initStatus:function(){this._status="normal",this._rollbackStatus="normal"},setStatus:function(a,b){return"readonly"!=this._status||b?(a!=this._status&&(this._rollbackStatus=this._status,this._status=a,this.fire("statuschange",{lastStatus:this._rollbackStatus,currentStatus:this._status}),g&&(console.log(window.event.type,this._rollbackStatus,"->",this._status),h&&console.trace())),this):this},rollbackStatus:function(){this.setStatus(this._rollbackStatus)},getRollbackStatus:function(){return this._rollbackStatus},getStatus:function(){return this._status}})}},b[31]={value:function(a,c,d){function e(a,b){l[a]=b}var f=b.r(17),g=b.r(33),h=b.r(19),i=b.r(9),j=b.r(21),k=b.r(20),l={};c.register=e,g.extend(h,{getTemplateList:function(){return l}}),f.extendClass(h,function(){var a=h.prototype.getTheme;return{useTemplate:function(a,b){this.setTemplate(a),this.refresh(b||800)},getTemplate:function(){return this._template||"default"},setTemplate:function(a){this._template=a||null},getTemplateSupport:function(a){var b=l[this.getTemplate()];return b&&b[a]},getTheme:function(b){return(this.getTemplateSupport("getTheme")||a).call(this,b)}}}()),f.extendClass(j,function(){var a=j.prototype.getLayout,b=j.prototype.getConnect;return{getLayout:function(){return(this.getMinder().getTemplateSupport("getLayout")||a).call(this,this)},getConnect:function(){return(this.getMinder().getTemplateSupport("getConnect")||b).call(this,this)}}}()),k.register("TemplateModule",{commands:{template:f.createClass("TemplateCommand",{base:i,execute:function(a,b){a.useTemplate(b),a.execCommand("camera")},queryValue:function(a){return a.getTemplate()||"default"}})}})}},b[32]={value:function(a,c,d){function e(a,b){m[a]=b}var f=b.r(17),g=b.r(33),h=b.r(19),i=b.r(21),j=b.r(20),k=b.r(9),l={left:function(a){return 3 in a&&a[3]||1 in a&&a[1]||a[0]},right:function(a){return 1 in a&&a[1]||a[0]},top:function(a){return a[0]},bottom:function(a){return 2 in a&&a[2]||a[0]}},m={};c.register=e,g.extend(h,{getThemeList:function(){return m}}),f.extendClass(h,{useTheme:function(a){return this.setTheme(a),this.refresh(800),!0},setTheme:function(a){if(a&&!m[a])throw new Error("Theme "+a+" not exists!");var b=this._theme;this._theme=a||null;var c=this.getRenderTarget();return c&&(c.classList.remove("km-theme-"+b),a&&c.classList.add("km-theme-"+a),c.style.background=this.getStyle("background")),this.fire("themechange",{theme:a}),this},getTheme:function(a){return this._theme||this.getOption("defaultTheme")||"fresh-blue"},getThemeItems:function(a){this.getTheme(a);return m[this.getTheme(a)]},getStyle:function(a,b){var c,d,e,f,h=this.getThemeItems(b);if(a in h)return h[a];if(c=a.split("-"),c.length<2)return null;if(d=c.pop(),(a=c.join("-"))in h){if(e=h[a],g.isArray(e)&&(f=l[d]))return f(e);if(!isNaN(e))return e}return null},getNodeStyle:function(a,b){var c=this.getStyle(a.getType()+"-"+b,a);return null!==c?c:this.getStyle(b,a)}}),f.extendClass(i,{getStyle:function(a){return this.getMinder().getNodeStyle(this,a)}}),j.register("Theme",{defaultOptions:{defaultTheme:"fresh-blue"},commands:{theme:f.createClass("ThemeCommand",{base:k,execute:function(a,b){return a.useTheme(b)},queryValue:function(a){return a.getTheme()||"default"}})}}),h.registerInitHook(function(){this.setTheme()})}},b[33]={value:function(a,c){var d=b.r(17),e={};c.extend=d.Utils.extend.bind(d.Utils),c.each=d.Utils.each.bind(d.Utils),c.uuid=function(a){return e[a]=e[a]?e[a]+1:1,a+e[a]},c.guid=function(){return(1e6*+new Date+Math.floor(1e6*Math.random())).toString(36)},c.trim=function(a){return a.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g,"")},c.keys=function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(c);return b},c.clone=function(a){return JSON.parse(JSON.stringify(a))},c.comparePlainObject=function(a,b){return JSON.stringify(a)==JSON.stringify(b)},c.encodeHtml=function(a,b){return a?a.replace(b||/[&<">'](?:(amp|lt|quot|gt|#39|nbsp);)?/g,function(a,b){return b?a:{"<":"<","&":"&",'"':""",">":">","'":"'"}[a]}):""},c.clearWhiteSpace=function(a){return a.replace(/[\u200b\t\r\n]/g,"")},c.each(["String","Function","Array","Number","RegExp","Object"],function(a){var b=Object.prototype.toString;c["is"+a]=function(c){return b.apply(c)=="[object "+a+"]"}})}},b[34]={value:function(a,c,d){d.exports=window.kityminder=b.r(35)}},b[35]={value:function(a,c,d){var e={version:b.r(19).version};b.r(33),e.Minder=b.r(19),e.Command=b.r(9),e.Node=b.r(21),b.r(22),b.r(8),e.Event=b.r(13),e.data=b.r(12),b.r(10),e.KeyMap=b.r(15),b.r(29),b.r(30),b.r(23),b.r(28),b.r(14),b.r(16),e.Module=b.r(20),b.r(26),e.Render=b.r(27),e.Connect=b.r(11),e.Layout=b.r(18),e.Theme=b.r(32),e.Template=b.r(31),e.Promise=b.r(25),b.r(7),b.r(24),b.r(42),b.r(43),b.r(44),b.r(45),b.r(46),b.r(47),b.r(48),b.r(50),b.r(49),b.r(51),b.r(52),b.r(53),b.r(54),b.r(55),b.r(56),b.r(57),b.r(58),b.r(59),b.r(60),b.r(61),b.r(62),b.r(63),b.r(64),b.r(68),b.r(65),b.r(67),b.r(66),b.r(40),b.r(36),b.r(37),b.r(38),b.r(39),b.r(41),b.r(75),b.r(78),b.r(77),b.r(76),b.r(78),b.r(80),b.r(79),b.r(0),b.r(1),b.r(2),b.r(3),b.r(4),b.r(5),b.r(6),b.r(69),b.r(73),b.r(70),b.r(72),b.r(71),b.r(74),d.exports=e}},b[36]={value:function(a,c,d){function e(a){function b(a){var b=[],d=a.getLayoutBox(),e=5;return"x"==c?(b.push({type:"up",node:a,area:new f.Box({x:d.x,y:d.top-a.getStyle("margin-top")-e,width:d.width,height:a.getStyle("margin-top")}),path:["M",d.x,d.top-e,"L",d.right,d.top-e]}),b.push({type:"down",node:a,area:new f.Box({x:d.x,y:d.bottom+e,width:d.width,height:a.getStyle("margin-bottom")}),path:["M",d.x,d.bottom+e,"L",d.right,d.bottom+e]})):(b.push({type:"up",node:a,area:new f.Box({x:d.left-a.getStyle("margin-left")-e,y:d.top,width:a.getStyle("margin-left"),height:d.height}),path:["M",d.left-e,d.top,"L",d.left-e,d.bottom]}),b.push({type:"down",node:a,area:new f.Box({x:d.right+e,y:d.top,width:a.getStyle("margin-right"),height:d.height}),path:["M",d.right+e,d.top,"L",d.right+e,d.bottom]})),b}var c="left"==a||"right"==a?"x":"y",d="left"==a||"top"==a?-1:1,e={left:"right",right:"left",top:"bottom",bottom:"top",x:"y",y:"x"};g.register(a,f.createClass({base:g,doLayout:function(b,g){var h=b.getContentBox();if("x"==c?(b.setVertexOut(new f.Point(h[a],h.cy)),b.setLayoutVectorOut(new f.Vector(d,0))):(b.setVertexOut(new f.Point(h.cx,h[a])),b.setLayoutVectorOut(new f.Vector(0,d))),!g.length)return!1;g.forEach(function(b){var g=b.getContentBox();b.setLayoutTransform(new f.Matrix),"x"==c?(b.setVertexIn(new f.Point(g[e[a]],g.cy)),b.setLayoutVectorIn(new f.Vector(d,0))):(b.setVertexIn(new f.Point(g.cx,g[e[a]])),b.setLayoutVectorIn(new f.Vector(0,d)))}),this.align(g,e[a]),this.stack(g,e[c]);var i=this.getBranchBox(g),j=0,k=0;"x"==c?(j=h[a],j+=d*b.getStyle("margin-"+a),j+=d*g[0].getStyle("margin-"+e[a]),k=h.bottom,k-=h.height/2,k-=i.height/2,k-=i.y):(j=h.right,j-=h.width/2,j-=i.width/2,j-=i.x,k=h[a],k+=d*b.getStyle("margin-"+a),k+=d*g[0].getStyle("margin-"+e[a])),this.move(g,j,k)},getOrderHint:b}))}var f=b.r(17),g=b.r(18);["left","right","top","bottom"].forEach(e)}},b[37]={value:function(a,c,d){function e(a){var b="filetree-"+(a>0?"down":"up");g.register(b,f.createClass({base:g,doLayout:function(b,c,d){var e=b.getContentBox(),g=20;if(b.setVertexOut(new f.Point(e.left+g,a>0?e.bottom:e.top)),b.setLayoutVectorOut(new f.Vector(0,a)),c.length){c.forEach(function(a){var b=a.getContentBox();a.setLayoutTransform(new f.Matrix),a.setVertexIn(new f.Point(b.left,b.cy)),a.setLayoutVectorIn(new f.Vector(1,0))}),this.align(c,"left"),this.stack(c,"y");var h=0;h+=e.left,h+=g,h+=c[0].getStyle("margin-left");var i=0;a>0?(i+=e.bottom,i+=b.getStyle("margin-bottom"),i+=c[0].getStyle("margin-top")):(i-=this.getTreeBox(c).bottom,i+=e.top,i-=b.getStyle("margin-top"),i-=c[0].getStyle("margin-bottom")),this.move(c,h,i)}},getOrderHint:function(a){var b=[],c=a.getLayoutBox(),d=a.getLevel()>1?3:5;return b.push({type:"up",node:a,area:new f.Box({x:c.x,y:c.top-a.getStyle("margin-top")-d,width:c.width,height:a.getStyle("margin-top")}),path:["M",c.x,c.top-d,"L",c.right,c.top-d]}),b.push({type:"down",node:a,area:new f.Box({x:c.x,y:c.bottom+d,width:c.width,height:a.getStyle("margin-bottom")}),path:["M",c.x,c.bottom+d,"L",c.right,c.bottom+d]}),b}}))}var f=b.r(17),g=b.r(18);[-1,1].forEach(e)}},b[38]={value:function(a,c,d){var e=b.r(17),f=b.r(18);f.register("fish-bone-master",e.createClass("FishBoneMasterLayout",{base:f,doLayout:function(a,b,c){var d=[],f=[],g=b[0],h=a.getContentBox();if(a.setVertexOut(new e.Point(h.right,h.cy)),a.setLayoutVectorOut(new e.Vector(1,0)),g){var i=(g.getContentBox(),a.getStyle("margin-right")),j=g.getStyle("margin-left"),k=g.getStyle("margin-top"),l=g.getStyle("margin-bottom");b.forEach(function(a,b){a.setLayoutTransform(new e.Matrix);var c=a.getContentBox();b%2?(f.push(a),a.setVertexIn(new e.Point(c.left,c.top)),a.setLayoutVectorIn(new e.Vector(1,1))):(d.push(a),a.setVertexIn(new e.Point(c.left,c.bottom)),a.setLayoutVectorIn(new e.Vector(1,-1)))}),this.stack(d,"x"),this.stack(f,"x"),this.align(d,"bottom"),this.align(f,"top");var m=h.right+i+j,n=h.cy-l-a.getStyle("margin-top"),o=h.cy+k+a.getStyle("margin-bottom");this.move(d,m,n),this.move(f,m+j,o)}}}))}},b[39]={value:function(a,c,d){var e=b.r(17),f=b.r(18);f.register("fish-bone-slave",e.createClass("FishBoneSlaveLayout",{base:f,doLayout:function(a,b,c){var d=this,f=Math.abs,g=.382,h=a.getContentBox(),i=a.getLayoutVectorIn();a.setLayoutVectorOut(i);var j=h.left+h.width*g,k=new e.Point(j,i.y>0?h.bottom:h.top);a.setVertexOut(k);var l=b[0];if(l){var m=l.getContentBox();b.forEach(function(a,b){a.setLayoutTransform(new e.Matrix),a.setLayoutVectorIn(new e.Vector(1,0)),a.setVertexIn(new e.Point(m.left,m.cy))}),this.stack(b,"y"),this.align(b,"left");var n=0,o=0;n+=k.x,a.getLayoutVectorOut().y<0?(o-=this.getTreeBox(b).bottom,o+=a.getContentBox().top,o-=a.getStyle("margin-top"),o-=l.getStyle("margin-bottom")):(o+=a.getContentBox().bottom,o+=a.getStyle("margin-bottom"),o+=l.getStyle("margin-top")),this.move(b,n,o),2==c&&b.forEach(function(a){var b=a.getLayoutTransform(),c=a.getContentBox(),g=b.transformPoint(new e.Point(c.left,0));d.move([a],f(g.y-k.y),0)})}}}))}},b[40]={value:function(a,c,d){var e=b.r(17),f=b.r(18),g=b.r(19);f.register("mind",e.createClass({base:f,doLayout:function(a,b){var c=Math.ceil(a.children.length/2),d=[],f=[];b.forEach(function(a){a.getIndex()=c.length))return c.splice(this.getIndex(),1),c.splice(a,0,this),this}}});var k=g.createClass("ArrangeUpCommand",{base:i,execute:function(a){var b=a.getSelectedNodes();b.sort(e);var c=b.map(function(a){return a.getIndex()});b.forEach(function(a,b){a.arrange(c[b]-1)}),a.layout(300)},queryState:function(a){return a.getSelectedNode()?0:-1}}),l=g.createClass("ArrangeUpCommand",{base:i,execute:function(a){var b=a.getSelectedNodes();b.sort(f);var c=b.map(function(a){return a.getIndex()});b.forEach(function(a,b){a.arrange(c[b]+1)}),a.layout(300)},queryState:function(a){return a.getSelectedNode()?0:-1}}),m=g.createClass("ArrangeCommand",{base:i,execute:function(a,b){var c=a.getSelectedNodes().slice();if(c.length){if(h.getCommonAncestor(c)==c[0].parent){var d=c.map(function(a){return{index:a.getIndex(),node:a}}),e=Math.min.apply(Math,d.map(function(a){return a.index}))>=b;d.sort(function(a,b){return e?b.index-a.index:a.index-b.index}),d.forEach(function(a){a.node.arrange(b)}),a.layout(300)}}},queryState:function(a){return a.getSelectedNode()?0:-1}});j.register("ArrangeModule",{commands:{arrangeup:k,arrangedown:l,arrange:m},contextmenu:[{command:"arrangeup"},{command:"arrangedown"},{divider:!0}],commandShortcutKeys:{arrangeup:"normal::alt+Up",arrangedown:"normal::alt+Down"}})}},b[43]={value:function(a,c,d){var e=b.r(17),f=(b.r(33),b.r(19),b.r(21),b.r(9)),g=b.r(20),h=b.r(61);g.register("basestylemodule",function(){function a(a,b){return a.getData(b)||a.getStyle(b)}var b=this;return h.registerStyleHook(function(b,c){var d=a(b,"font-weight"),e=a(b,"font-style");[d,e].join("/");c.eachItem(function(a,b){b.setFont({weight:d,style:e})})}),{commands:{bold:e.createClass("boldCommand",{base:f,execute:function(a){var b=a.getSelectedNodes();1==this.queryState("bold")?b.forEach(function(a){a.setData("font-weight").render()}):b.forEach(function(a){a.setData("font-weight","bold").render()}),a.layout()},queryState:function(){var a=b.getSelectedNodes(),c=0;return 0===a.length?-1:(a.forEach(function(a){if(a&&a.getData("font-weight"))return c=1,!1}),c)}}),italic:e.createClass("italicCommand",{base:f,execute:function(a){var b=a.getSelectedNodes();1==this.queryState("italic")?b.forEach(function(a){a.setData("font-style").render()}):b.forEach(function(a){a.setData("font-style","italic").render()}),a.layout()},queryState:function(){var a=b.getSelectedNodes(),c=0;return 0===a.length?-1:(a.forEach(function(a){if(a&&a.getData("font-style"))return c=1,!1}),c)}})},commandShortcutKeys:{bold:"ctrl+b",italic:"ctrl+i"}}})}},b[44]={value:function(a,c,d){var e=b.r(17),f=(b.r(33),b.r(21)),g=b.r(9);b.r(20).register("ClipboardModule",function(){function a(b,d){h.push(d),c.appendNode(d,b),d.render(),d.setLayoutOffset(null);var e=d.children.map(function(a){return a.clone()});d.clearChildren();for(var f,g=0;f=e[g];g++)a(d,f)}function b(a){a.length&&(a.sort(function(a,b){return a.getIndex()-b.getIndex()}),d=a.map(function(a){return a.clone()}))}var c=this,d=[],h=[],i=e.createClass("CopyCommand",{base:g,execute:function(a){b(a.getSelectedAncestors(!0)),this.setContentChanged(!1)}}),j=e.createClass("CutCommand",{base:g,execute:function(a){var c=a.getSelectedAncestors();0!==c.length&&(b(c),a.select(f.getCommonAncestor(c),!0),c.slice().forEach(function(b){a.removeNode(b)}),a.layout(300))}}),k=e.createClass("PasteCommand",{base:g,execute:function(b){if(d.length){var c=b.getSelectedNodes();if(!c.length)return;for(var e,f=0;e=d[f];f++)for(var g,i=0;g=c[i];i++)a(g,e.clone());b.select(h,!0),h=[],b.layout(300)}},queryState:function(a){return a.getSelectedNode()?0:-1}});if(c.supportClipboardEvent&&!e.Browser.gecko){var l=function(a){this.fire("beforeCopy",a)},m=function(a){this.fire("beforeCut",a)},n=function(a){this.fire("beforePaste",a)};return{commands:{copy:i,cut:j,paste:k},clipBoardEvents:{copy:l.bind(c),cut:m.bind(c),paste:n.bind(c)},sendToClipboard:b}}return{commands:{copy:i,cut:j,paste:k},commandShortcutKeys:{copy:"normal::ctrl+c|",cut:"normal::ctrl+x",paste:"normal::ctrl+v"},sendToClipboard:b}})}},b[45]={value:function(a,c,d){var e=b.r(17),f=(b.r(33),b.r(21)),g=b.r(9),h=b.r(20),i=e.createClass("MoveToParentCommand",{base:g,execute:function(a,b,c){for(var d,e=0;ed&&"up"==a.type&&b--,a.node.setLayoutOffset(null),this._minder.execCommand("arrange",b),this._renderOrderHint(null)}else this._minder.fire("savescene");this._minder.layout(300),this._leaveDragMode(),this._minder.fire("contentchange")}},_enterDragMode:function(){return this._calcDragSources(),this._dragSources.length?(this._fadeDragSources(.5),this._calcDropTargets(),this._calcOrderHints(),this._dragMode=!0,this._minder.setStatus("dragtree"),!0):(this._startPosition=null,!1)},_calcDragSources:function(){this._dragSources=this._minder.getSelectedAncestors()},_fadeDragSources:function(a){var b=this._minder;this._dragSources.forEach(function(c){c.getRenderContainer().setOpacity(a,200),c.traverse(function(c){a<1?b.detachNode(c):b.attachNode(c)},!0)})},_calcDropTargets:function(){function a(b,c){var d,e=[];return e.push(c),c.getChildren().forEach(function(c){for(d=0;d.5*Math.min(d(b),d(c))||(a.width+1>=Math.min(b.width,c.width)||a.height+1>=Math.min(b.height,c.height))))}),this._renderDropHint(this._dropSucceedTarget),!!this._dropSucceedTarget},_orderTest:function(){return this._orderSucceedHint=this._boxTest(this._orderHints,function(a){return a.area}),this._renderOrderHint(this._orderSucceedHint),!!this._orderSucceedHint},_renderDropHint:function(a){this._dropHinter.render(a)},_renderOrderHint:function(a){this._orderHinter.render(a)},preventDragMove:function(){this._startPosition=null}});h.register("DragTree",function(){var a;return{init:function(){a=new l(this),window.addEventListener("mouseup",function(){a.dragEnd()})},events:{"normal.mousedown inputready.mousedown":function(b){b.originEvent.button||b.getTargetNode()&&b.getTargetNode()!=this.getRoot()&&a.dragStart(b.getPosition())},"normal.mousemove dragtree.mousemove":function(b){a.dragMove(b.getPosition())},"normal.mouseup dragtree.beforemouseup":function(b){a.dragEnd(),b.preventDefault()},statuschange:function(b){"textedit"==b.lastStatus&&"normal"==b.currentStatus&&a.preventDragMove()}},commands:{movetoparent:i}}})}},b[46]={value:function(a,c,d){var e=b.r(17),f=b.r(33),g=b.r(15),h=b.r(21),i=b.r(9),j=b.r(20),k=b.r(27);j.register("Expand",function(){var a=this,b="expandState",c="collapse";e.extendClass(h,{expand:function(){return this.setData(b,"expand"),this},collapse:function(){return this.setData(b,c),this},isExpanded:function(){return this.getData(b)!==c&&(this.isRoot()||this.parent.isExpanded())},isCollapsed:function(){return!this.isExpanded()}});var d=e.createClass("ExpandCommand",{base:i,execute:function(a,b){var c=a.getSelectedNode();if(c){for(b&&(c=c.parent);c.parent;)c.expand(),c=c.parent;c.renderTree(),a.layout(100)}},queryState:function(a){var b=a.getSelectedNode();return!b||b.isRoot()||b.isExpanded()?-1:0}}),j=e.createClass("ExpandToLevelCommand",{base:i,execute:function(a,b){a.getRoot().traverse(function(a){a.getLevel()c&&e>f?(a=c,b=a/e):b>d&&(b=d,a=b*e),{width:0|a,height:0|b}}return{defaultOptions:{maxImageWidth:200,maxImageHeight:200},commands:{image:e.createClass("ImageCommand",{base:f,execute:function(c,d,e){var f=c.getSelectedNodes();a(d,function(a,g){f.forEach(function(f){var h=b(a,g,c.getOption("maxImageWidth"),c.getOption("maxImageHeight"));f.setData("image",d),f.setData("imageTitle",d&&e),f.setData("imageSize",d&&h),f.render()}),c.fire("saveScene"),c.layout(300)})},queryState:function(a){var b=a.getSelectedNodes(),c=0;return 0===b.length?-1:(b.forEach(function(a){if(a&&a.getData("image"))return c=0,!1}),c)},queryValue:function(a){var b=a.getSelectedNode();return{url:b.getData("image"),title:b.getData("imageTitle")}}})},renderers:{top:e.createClass("ImageRenderer",{base:h,create:function(a){return new e.Image(a.getData("image"))},shouldRender:function(a){return a.getData("image")},update:function(a,b,c){var d=b.getData("image"),f=b.getData("imageTitle"),g=b.getData("imageSize"),h=b.getStyle("space-top");if(g){f&&a.node.setAttributeNS("http://www.w3.org/1999/xlink","title",f);var i=c.cx-g.width/2,j=c.y-g.height-h;return a.setUrl(d).setX(0|i).setY(0|j).setWidth(0|g.width).setHeight(0|g.height),new e.Box(0|i,0|j,0|g.width,0|g.height)}}})}}})}},b[51]={value:function(a,c,d){var e=(b.r(17),b.r(33),b.r(15),b.r(19),b.r(21),b.r(9),b.r(20));b.r(27);e.register("KeyboardModule",function(){function a(a){var b,d=[];a.traverse(function(a){b=a.getLayoutBox(),b.width&&b.height&&d.push({left:b.x,top:b.y,right:b.x+b.width,bottom:b.y+b.height,width:b.width,height:b.height,node:a})});for(var e=0;ef.right&&(!g.right||ef.bottom&&(!g.down||e>1].getGlobalLayoutTransform()),a.select(e,!0),a.layout(600)},queryState:function(a){var b=a.getSelectedNodes();if(!b.length)return-1;var c=b[0].parent;if(!c)return-1;for(var d=1;d>>c|d<<32-c},b=function(a,b,j,k,l){var m=d+f[c][a]%16,n=d+(f[c][a]>>4);b%=4,j=4+j%4,k=8+k%4,l=12+l%4,h[b]+=h[j]+(i[m]^e[n%16]),g(l,b,16),h[k]+=h[l],g(j,k,12),h[b]+=h[j]+(i[n]^e[m%16]),g(l,b,8),h[k]+=h[l],g(j,k,7)},function(f,g){g instanceof Array&&4===g.length||(g=[0,0,0,0]);var k,l,m,n,o,p,q,r;for(l=a.slice(0),k=e.slice(0,8),c=0;c<4;c+=1)k[c]^=g[c];if(m=16*f.length,o=m%512>446||m%512==0?0:m,m%512==432)f+="老";else{for(f+="耀";f.length%32!=27;)f+="\0";f+=""}for(i=[],r=0;r=0;c--)d=b.charCodeAt(c),e^=(e<<5)+d+(e>>2);return 2147483647&e},getResourceColor:function(a){var c,d=this._getResourceColorIndexMapping();return Object.prototype.hasOwnProperty.call(d,a)||(c=this._getNextResourceColorIndex(),d[a]=c),b[d[a]]||e.Color.createHSL(Math.floor(this.getHashCode(a)/2147483647*359),100,85)},getUsedResource:function(){var a,b=this._getResourceColorIndexMapping(),c=[];for(a in b)Object.prototype.hasOwnProperty.call(b,a)&&c.push(a);return c},_getNextResourceColorIndex:function(){var a,c,d,e=this._getResourceColorIndexMapping();c=[];for(a in e)Object.prototype.hasOwnProperty.call(e,a)&&c.push(e[a]);for(d=0;dv)for(var w=u-v;w--;)s=(new e.Text).setAttr("text-rendering","inherit"),e.Browser.ie||e.Browser.edge?s.setVerticalAlign("top"):s.setAttr("dominant-baseline","text-before-edge"),a.addItem(s);for(q=0,s;t=g[q],s=a.getItem(q);q++)s.setContent(t),(e.Browser.ie||e.Browser.edge)&&s.fixPosition();this.setTextStyle(b,a);var x=b.getText()+["font-size","font-name","font-weight","font-style"].map(c).join("/");return b._currentTextHash==x&&b._currentTextGroupBox?b._currentTextGroupBox:(b._currentTextHash=x,function(){a.eachItem(function(a,b){var c=m+a*i*h;b.setY(c);var d=b.getBoundaryBox();o=o.merge(new e.Box(0,c,d.height&&d.width||1,i))});var c=new e.Box(p(o.x),p(o.y),p(o.width),p(o.height));return b._currentTextGroupBox=c,c})},setTextStyle:function(a,b){l._styleHooks.forEach(function(c){c(a,b)})}}),m=e.createClass({base:h,execute:function(a,b){var c=a.getSelectedNode();c&&(c.setText(b),c.render(),a.layout())},queryState:function(a){return 1==a.getSelectedNodes().length?0:-1},queryValue:function(a){var b=a.getSelectedNode();return b?b.getText():null}});f.extend(l,{_styleHooks:[],registerStyleHook:function(a){l._styleHooks.push(a)}}),e.extendClass(g,{getTextGroup:function(){return this.getRenderer("TextRenderer").getRenderShape()}}),i.register("text",{commands:{text:m},renderers:{center:l}}),d.exports=l}},b[62]={value:function(a,c,d){var e=b.r(17),f=(b.r(33),b.r(19),b.r(21),b.r(9)),g=b.r(20),h=(b.r(27),e.createClass("ViewDragger",{constructor:function(a){this._minder=a,this._enabled=!1,this._bind();var b=this;this._minder.getViewDragger=function(){return b},this.setEnabled(!1)},isEnabled:function(){return this._enabled},setEnabled:function(a){var b=this._minder.getPaper();b.setStyle("cursor",a?"pointer":"default"),b.setStyle("cursor",a?"-webkit-grab":"default"),this._enabled=a},timeline:function(){return this._moveTimeline},move:function(a,b){var c=(this._minder,this.getMovement().offset(a));this.moveTo(c,b)},moveTo:function(a,b){if(b){var c=this;return this._moveTimeline&&this._moveTimeline.stop(),this._moveTimeline=this._minder.getRenderContainer().animate(new e.Animator(this.getMovement(),a,function(a,b){c.moveTo(b)}),b,"easeOutCubic").timeline(),this._moveTimeline.on("finish",function(){c._moveTimeline=null}),this}this._minder.getRenderContainer().setTranslate(a.round()),this._minder.fire("viewchange")},getMovement:function(){var a=this._minder.getRenderContainer().transform.translate;return a?a[0]:new e.Point},getView:function(){var a=this._minder,b=a._lastClientSize||{width:a.getRenderTarget().clientWidth,height:a.getRenderTarget().clientHeight},c=this.getMovement(),d=new e.Box(0,0,b.width,b.height);return a.getPaper().getViewPortMatrix().inverse().translate(-c.x,-c.y).transformBox(d)},_bind:function(){function a(a){if(d){d=null,a.stopPropagation(),c&&(b.setEnabled(!1),c=!1,"hand"==b._minder.getStatus()&&b._minder.rollbackStatus());b._minder.getPaper().setStyle("cursor","hand"==b._minder.getStatus()?"-webkit-grab":"default"),b._minder.fire("viewchanged")}}var b=this,c=!1,d=null,f=null;this._minder.on("normal.mousedown normal.touchstart inputready.mousedown inputready.touchstart readonly.mousedown readonly.touchstart",function(a){2==a.originEvent.button&&a.originEvent.preventDefault(),(a.getTargetNode()==this.getRoot()||2==a.originEvent.button||a.originEvent.altKey)&&(d=a.getPosition("view"),c=!0)}).on("normal.mousemove normal.touchmove readonly.mousemove readonly.touchmove inputready.mousemove inputready.touchmove",function(a){if("touchmove"==a.type&&a.preventDefault(),c){if(e.Vector.fromPoints(d,a.getPosition("view")).length()>10){this.setStatus("hand",!0);b._minder.getPaper().setStyle("cursor","-webkit-grabbing")}}}).on("hand.beforemousedown hand.beforetouchstart",function(a){if(b.isEnabled()){d=a.getPosition("view"),a.stopPropagation();b._minder.getPaper().setStyle("cursor","-webkit-grabbing")}}).on("hand.beforemousemove hand.beforetouchmove",function(a){if(d){f=a.getPosition("view");var c=e.Vector.fromPoints(d,f);b.move(c),a.stopPropagation(),a.preventDefault(),a.originEvent.preventDefault(),d=f}}).on("mouseup touchend",a),window.addEventListener("mouseup",a),this._minder.on("contextmenu",function(a){a.preventDefault()})}}));g.register("View",function(){var a=e.createClass("ToggleHandCommand",{base:f,execute:function(a){"hand"!=a.getStatus()?a.setStatus("hand",!0):a.rollbackStatus(),this.setContentChanged(!1)},queryState:function(a){return"hand"==a.getStatus()?1:0},enableReadOnly:!0}),b=e.createClass("CameraCommand",{base:f,execute:function(a,b){b=b||a.getRoot();var c=a.getPaper().getViewPort(),d=b.getRenderContainer().getRenderBox("view"),f=c.center.x-d.x-d.width/2,g=c.center.y-d.y,h=a._viewDragger,i=a.getOption("viewAnimationDuration");h.move(new e.Point(f,g),i),this.setContentChanged(!1)},enableReadOnly:!0}),c=e.createClass("MoveCommand",{base:f,execute:function(a,b){var c=a._viewDragger,d=a._lastClientSize,f=a.getOption("viewAnimationDuration");switch(b){case"up":c.move(new e.Point(0,d.height/2),f);break;case"down":c.move(new e.Point(0,-d.height/2),f);break;case"left":c.move(new e.Point(d.width/2,0),f);break;case"right":c.move(new e.Point(-d.width/2,0),f)}},enableReadOnly:!0});return{init:function(){this._viewDragger=new h(this)},commands:{hand:a,camera:b,move:c},events:{statuschange:function(a){this._viewDragger.setEnabled("hand"==a.currentStatus)},mousewheel:function(a){var b,c;if(a=a.originEvent,!a.ctrlKey&&!a.shiftKey){"wheelDeltaX"in a?(b=a.wheelDeltaX||0,c=a.wheelDeltaY||0):(b=0,c=a.wheelDelta),this._viewDragger.move({x:b/2.5,y:c/2.5});var d=this;clearTimeout(this._mousewheeltimer),this._mousewheeltimer=setTimeout(function(){d.fire("viewchanged")},100),a.preventDefault()}},"normal.dblclick readonly.dblclick":function(a){a.kityEvent.targetShape instanceof e.Paper&&this.execCommand("camera",this.getRoot(),800)},"paperrender finishInitHook":function(){this.getRenderTarget()&&(this.execCommand("camera",null,0),this._lastClientSize={width:this.getRenderTarget().clientWidth,height:this.getRenderTarget().clientHeight})},resize:function(a){var b={width:this.getRenderTarget().clientWidth,height:this.getRenderTarget().clientHeight},c=this._lastClientSize;this._viewDragger.move(new e.Point((b.width-c.width)/2|0,(b.height-c.height)/2|0)),this._lastClientSize=b},"selectionchange layoutallfinish":function(a){var b=this.getSelectedNode(),c=this;if(e.Browser.edge&&this.fire("paperrender"),b){var d=this._viewDragger,f=d.timeline();if(f)return void f.on("finish",function(){c.fire("selectionchange")});var g=d.getView(),h=b.getLayoutBox(),i=50,j=0,k=0;h.right>g.right?j+=g.right-h.right-i:h.leftg.bottom&&(k+=g.bottom-h.bottom-i),h.top=100?"optimize-speed":"geometricPrecision";h.getRenderContainer().setAttr("text-rendering",a)}function b(a){var b=a.shapeNode,c=b.getCTM(),d=new e.Matrix(c.a,c.b,c.c,c.d,.5+(0|c.e),.5+(0|c.f));b.setAttribute("transform","matrix("+d.toString()+")")}function c(b,c){var f=b.getPaper();f.getViewPort();if(c){a();var g=b.getOption("zoomAnimationDuration");if(b.getRoot().getComplex()>200||!g)b._zoomValue=c,b.zoom(c),b.fire("viewchange");else{var h=new e.Animator({beginValue:b._zoomValue,finishValue:c,setter:function(a,b){a.zoom(b)}});b._zoomValue=c,d&&d.pause(),d=h.start(b,g,"easeInOutSine"),d.on("finish",function(){b.fire("viewchange")})}b.fire("zoom",{zoom:c})}}var d,h=this;e.extendClass(f,{zoom:function(a){var c=this.getPaper(),d=c.getViewPort();d.zoom=a/100,d.center={x:d.center.x,y:d.center.y},c.setViewPort(d),100==a&&b(c)},getZoomValue:function(){return this._zoomValue}});var i=e.createClass("Zoom",{base:g,execute:c,queryValue:function(a){return a._zoomValue}}),j=e.createClass("ZoomInCommand",{base:g,execute:function(a){c(a,this.nextValue(a))},queryState:function(a){return+!this.nextValue(a)},nextValue:function(a){var b,c=a.getOption("zoom");for(b=0;ba._zoomValue)return c[b];return 0},enableReadOnly:!0}),k=e.createClass("ZoomOutCommand",{base:g,execute:function(a){c(a,this.nextValue(a))},queryState:function(a){return+!this.nextValue(a)},nextValue:function(a){var b,c=a.getOption("zoom");for(b=c.length-1;b>=0;b--)if(c[b]100&&(clearTimeout(this._wheelZoomTimeout),this._wheelZoomTimeout=setTimeout(function(){c.getPaper()._zoom;b<0?c.execCommand("zoomin"):b>0&&c.execCommand("zoomout")},100),a.originEvent.preventDefault())}}},commandShortcutKeys:{zoomin:"ctrl+=",zoomout:"ctrl+-"}}})}},b[64]={value:function(a,c,d){b.r(12).registerProtocol("json",d.exports={fileDescription:"KityMinder 格式",fileExtension:".km",dataType:"text",mineType:"application/json",encode:function(a){return JSON.stringify(a)},decode:function(a){return JSON.parse(a)}})}},b[65]={value:function(a,c,d){function e(a){return f(a,1).join("\n")}function f(a,b){var c=[];b=b||1;var d=g(b);c.push(d+" "+a.data.text),c.push(o);var e=a.data.note;if(e){var h=/^#/.test(e);h&&(c.push(p),e=e.replace(/^#+/gm,function(a){return d+a})),c.push(e),h&&c.push(q),c.push(o)}return a.children&&a.children.forEach(function(a){c=c.concat(f(a,b+1))}),c}function g(a){for(var b="";a--;)b+="#";return b}function h(a){var b,c,d,e,f,g,h,m={};a=a.replace(/^(.+)\n={3,}/,function(a,b){return"# "+b}),b=a.split(n);for(var o=0;oe+1?f&&j(f,c):(e=d.level,f=i(d.content,m[e-1]),m[e]=f));return l(m[1]),m[1]}function i(a,b){var c={data:{text:a,note:""}};return b&&(b.children?b.children.push(c):b.children=[c]),c}function j(a,b){a.data.note+=b+"\n"}function k(a){var b=/^(#+)?\s*(.*)$/.exec(a);return{level:b[1]&&b[1].length||null,content:b[2],noteStart:a==p,noteClose:a==q,codeBlock:/^\s*```/.test(a)}}function l(a){if(/\S/.test(a.data.note)){for(var b=a.data.note.split("\n");b.length&&!/\S/.test(b[0]);)b.shift();for(;b.length&&!/\S/.test(b[b.length-1]);)b.pop();a.data.note=b.join("\n")}else a.data.note=null,delete a.data.note;a.children&&a.children.forEach(l)}var m=b.r(12),n=/\r\n|\r|\n/,o="",p="\x3c!--Note--\x3e",q="\x3c!--/Note--\x3e";m.registerProtocol("markdown",d.exports={fileDescription:"Markdown/GFM 格式",fileExtension:".md",mineType:"text/markdown",dataType:"text",encode:function(a){return e(a.root)},decode:function(a){return h(a)}})}},b[66]={value:function(a,c,d){function e(a,b){return new k(function(b,c){var d=document.createElement("img");d.onload=function(){b({element:this,x:a.x,y:a.y,width:a.width,height:a.height})},d.onerror=function(a){c(a)},d.crossOrigin="anonymous",d.src=a.url})}function f(a,b){return k(function(b,c){var d=new XMLHttpRequest;d.open("GET",a.url+"?_="+Date.now(),!0),d.responseType="blob",d.onreadystatechange=function(){if(4===d.readyState&&200===d.status){var c=d.response,e=document.createElement("img");e.src=l.createObjectURL(c),e.onload=function(){l.revokeObjectURL(e.src),b({element:e,x:a.x,y:a.y,width:a.width,height:a.height})}}},d.send()})}function g(a){function b(c){var d=c.data;if(d.image){a.renderNode(c);var d=c.data,e=d.image,f=d.imageSize,g=c.getRenderBox("ImageRenderer",a.getRenderContainer()),h={url:e,width:f.width,height:f.height,x:-j.getBoundaryBox().x+g.x,y:-j.getBoundaryBox().y+g.y};o.push(h)}if("collapse"!==d.expandState)for(var i=c.getChildren(),k=0;kt.width?c.width:t.width,v=c&&c.height&&c.height>t.height?c.height:t.height,w=c&&c.width&&c.width>t.width?(c.width-t.width)/2:0,x=c&&c.height&&c.height>t.height?(c.height-t.height)/2:0,y=t.dataUrl,z=t.imagesInfo,A=20;if(o.width=u+2*A,o.height=v+2*A,r){return e({url:r[1]}).then(function(a){return d(p,p.createPattern(a.element,"repeat")),n()})}return d(p,s.toString()),n()}var i=b.r(17),j=b.r(12),k=b.r(25),l=window.URL||window.webkitURL||window;j.registerProtocol("png",d.exports={fileDescription:"PNG 图片",fileExtension:".png",mineType:"image/png",dataType:"base64",encode:h})}},b[67]={value:function(a,c,d){function e(a,b,c){function d(a,b){var c;try{c=b.getScreenCTM().inverse()}catch(a){throw new Error("Can not inverse source element' ctm.")}return c.multiply(a.getScreenCTM())}function e(a,b){b instanceof Function||(b=function(){});for(var c=[],d=[],e=[],f=0,g=a.length;f0?"right":"left":a.parent.getLayout()},getConnect:function(a){return 1==a.getLevel()?"arc":"under"}})}},b[70]={value:function(a,c,d){b.r(31).register("filetree",{getLayout:function(a){return a.getData("layout")?a.getData("layout"):a.isRoot()?"bottom":"filetree-down"},getConnect:function(a){return 1==a.getLevel()?"poly":"l"}})}},b[71]={value:function(a,c,d){b.r(31).register("fish-bone",{getLayout:function(a){if(a.getData("layout"))return a.getData("layout");var b=a.getLevel();return 0===b?"fish-bone-master":1===b?"fish-bone-slave":a.getLayoutPointPreview().y>0?"filetree-up":"filetree-down"},getConnect:function(a){switch(a.getLevel()){case 1:return"fish-bone-master";case 2:return"line";default:return"l"}}})}},b[72]={value:function(a,c,d){b.r(31).register("right",{getLayout:function(a){return a.getData("layout")||"right"},getConnect:function(a){return 1==a.getLevel()?"arc":"bezier"}})}},b[73]={value:function(a,c,d){b.r(31).register("structure",{getLayout:function(a){return a.getData("layout")||"bottom"},getConnect:function(a){return"poly"}})}},b[74]={value:function(a,c,d){b.r(31).register("tianpan",{getLayout:function(a){return a.getData("layout")?a.getData("layout"):0===a.getLevel()?"tianpan":a.parent.getLayout()},getConnect:function(a){return"arc_tp"}})}},b[75]={value:function(a,c,d){var e=b.r(32);["classic","classic-compact"].forEach(function(a){var b="classic-compact"==a;e.register(a,{background:'#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat',"root-color":"#430","root-background":"#e9df98","root-stroke":"#e9df98","root-font-size":24,"root-padding":b?[10,25]:[15,25],"root-margin":b?[15,25]:[30,100],"root-radius":30,"root-space":10,"root-shadow":"rgba(0, 0, 0, .25)","main-color":"#333","main-background":"#a4c5c0","main-stroke":"#a4c5c0","main-font-size":16,"main-padding":b?[5,15]:[6,20],"main-margin":b?[5,10]:20,"main-radius":10,"main-space":5,"main-shadow":"rgba(0, 0, 0, .25)","sub-color":"white","sub-background":"transparent","sub-stroke":"none","sub-font-size":12,"sub-padding":[5,10],"sub-margin":b?[5,10]:[15,20],"sub-tree-margin":30,"sub-radius":5,"sub-space":5,"connect-color":"white","connect-width":2,"main-connect-width":3,"connect-radius":5,"selected-background":"rgb(254, 219, 0)","selected-stroke":"rgb(254, 219, 0)","selected-color":"black","marquee-background":"rgba(255,255,255,.3)","marquee-stroke":"white","drop-hint-color":"yellow","sub-drop-hint-width":2,"main-drop-hint-width":4,"root-drop-hint-width":4,"order-hint-area-color":"rgba(0, 255, 0, .5)","order-hint-path-color":"#0f0","order-hint-path-width":1,"text-selection-color":"rgb(27,171,255)","line-height":1.5})})}},b[76]={value:function(a,c,d){b.r(32).register("fish",{background:'#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat',"root-color":"#430","root-background":"#e9df98","root-stroke":"#e9df98","root-font-size":24,"root-padding":[35,35],"root-margin":30,"root-radius":100,"root-space":10,"root-shadow":"rgba(0, 0, 0, .25)","main-color":"#333","main-background":"#a4c5c0","main-stroke":"#a4c5c0","main-font-size":16,"main-padding":[6,20],"main-margin":[20,20],"main-radius":5,"main-space":5,"main-shadow":"rgba(0, 0, 0, .25)","sub-color":"black","sub-background":"white","sub-stroke":"white","sub-font-size":12,"sub-padding":[5,10],"sub-margin":[10],"sub-radius":5,"sub-space":5,"connect-color":"white","connect-width":3,"main-connect-width":3,"connect-radius":5,"selected-background":"rgb(254, 219, 0)","selected-stroke":"rgb(254, 219, 0)","marquee-background":"rgba(255,255,255,.3)","marquee-stroke":"white","drop-hint-color":"yellow","drop-hint-width":4,"order-hint-area-color":"rgba(0, 255, 0, .5)","order-hint-path-color":"#0f0","order-hint-path-width":1,"text-selection-color":"rgb(27,171,255)","line-height":1.5})}},b[77]={value:function(a,c,d){function e(a,b,c){return h.Color.createHSL(a,b,c)}function f(a,b){return{background:"#fbfbfb","root-color":"white","root-background":e(a,37,60),"root-stroke":e(a,37,60),"root-font-size":16,"root-padding":b?[6,12]:[12,24],"root-margin":b?10:[30,100],"root-radius":5,"root-space":10,"main-color":"black","main-background":e(a,33,95),"main-stroke":e(a,37,60),"main-stroke-width":1,"main-font-size":14,"main-padding":[6,20],"main-margin":b?8:20,"main-radius":3,"main-space":5,"sub-color":"black","sub-background":"transparent","sub-stroke":"none","sub-font-size":12,"sub-padding":b?[3,5]:[5,10],"sub-margin":b?[4,8]:[15,20],"sub-radius":5,"sub-space":5,"connect-color":e(a,37,60),"connect-width":1,"connect-radius":5,"selected-stroke":e(a,26,30),"selected-stroke-width":"3","blur-selected-stroke":e(a,10,60),"marquee-background":e(a,100,80).set("a",.1),"marquee-stroke":e(a,37,60),"drop-hint-color":e(a,26,35),"drop-hint-width":5,"order-hint-area-color":e(a,100,30).set("a",.5),"order-hint-path-color":e(a,100,25),"order-hint-path-width":1,"text-selection-color":e(a,100,20),"line-height":1.5}}var g,h=b.r(17),i=b.r(32),j={red:0,soil:25,green:122,blue:204,purple:246,pink:334};for(g in j)i.register("fresh-"+g,f(j[g])),i.register("fresh-"+g+"-compat",f(j[g],!0))}},b[78]={value:function(a,c,d){var e=b.r(32);["snow","snow-compact"].forEach(function(a){var b="snow-compact"==a;e.register(a,{background:'#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat',"root-color":"#430","root-background":"#e9df98","root-stroke":"#e9df98","root-font-size":24,"root-padding":b?[5,10]:[15,25],"root-margin":b?15:30,"root-radius":5,"root-space":10,"root-shadow":"rgba(0, 0, 0, .25)","main-color":"#333","main-background":"#a4c5c0","main-stroke":"#a4c5c0","main-font-size":16,"main-padding":b?[4,10]:[6,20],"main-margin":b?[5,10]:[20,40],"main-radius":5,"main-space":5,"main-shadow":"rgba(0, 0, 0, .25)","sub-color":"black","sub-background":"white","sub-stroke":"white","sub-font-size":12,"sub-padding":[5,10],"sub-margin":b?[5,10]:[10,20],"sub-radius":5,"sub-space":5,"connect-color":"white","connect-width":2,"main-connect-width":3,"connect-radius":5,"selected-background":"rgb(254, 219, 0)","selected-stroke":"rgb(254, 219, 0)","marquee-background":"rgba(255,255,255,.3)","marquee-stroke":"white","drop-hint-color":"yellow","drop-hint-width":4,"order-hint-area-color":"rgba(0, 255, 0, .5)","order-hint-path-color":"#0f0","order-hint-path-width":1,"text-selection-color":"rgb(27,171,255)","line-height":1.5})})}},b[79]={value:function(a,c,d){var e=b.r(32);["tianpan","tianpan-compact"].forEach(function(a){var b="tianpan-compact"==a;e.register(a,{background:'#3A4144 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAIAAAACDbGyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowQzg5QTQ0NDhENzgxMUUzOENGREE4QTg0RDgzRTZDNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowQzg5QTQ0NThENzgxMUUzOENGREE4QTg0RDgzRTZDNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkMwOEQ1NDRGOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkMwOEQ1NDUwOEQ3NzExRTM4Q0ZEQThBODREODNFNkM3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+e9P33AAAACVJREFUeNpisXJ0YUACTAyoAMr/+eM7EGGRZ4FQ7BycEAZAgAEAHbEGtkoQm/wAAAAASUVORK5CYII=") repeat',"root-color":"#430","root-background":"#e9df98","root-stroke":"#e9df98","root-font-size":25,"root-padding":b?15:20,"root-margin":b?[15,25]:100,"root-radius":30,"root-space":10,"root-shadow":"rgba(0, 0, 0, .25)","root-shape":"circle","main-color":"#333","main-background":"#a4c5c0","main-stroke":"#a4c5c0","main-font-size":15,"main-padding":b?10:12,"main-margin":b?10:12,"main-radius":10,"main-space":5,"main-shadow":"rgba(0, 0, 0, .25)","main-shape":"circle","sub-color":"#333","sub-background":"#99ca6a","sub-stroke":"#a4c5c0","sub-font-size":13,"sub-padding":5,"sub-margin":b?6:10,"sub-tree-margin":30,"sub-radius":5,"sub-space":5,"sub-shadow":"rgba(0, 0, 0, .25)","sub-shape":"circle","connect-color":"white","connect-width":2,"main-connect-width":3,"connect-radius":5,"selected-background":"rgb(254, 219, 0)","selected-stroke":"rgb(254, 219, 0)","selected-color":"black","marquee-background":"rgba(255,255,255,.3)","marquee-stroke":"white","drop-hint-color":"yellow","sub-drop-hint-width":2,"main-drop-hint-width":4,"root-drop-hint-width":4,"order-hint-area-color":"rgba(0, 255, 0, .5)","order-hint-path-color":"#0f0","order-hint-path-width":1,"text-selection-color":"rgb(27,171,255)","line-height":1.4})})}},b[80]={value:function(a,c,d){b.r(32).register("wire",{background:"black",color:"#999",stroke:"none",padding:10,margin:20,"font-size":14,"connect-color":"#999","connect-width":1,"selected-background":"#999","selected-color":"black","marquee-background":"rgba(255,255,255,.3)","marquee-stroke":"white","drop-hint-color":"yellow","sub-drop-hint-width":2,"main-drop-hint-width":4,"root-drop-hint-width":4,"order-hint-area-color":"rgba(0, 255, 0, .5)","order-hint-path-color":"#0f0","order-hint-path-width":1,"text-selection-color":"rgb(27,171,255)","line-height":1.5})}};var c={"expose-kityminder":34};a("expose-kityminder")}(); \ No newline at end of file diff --git a/static/mind-map/mindmap.css b/static/mind-map/mindmap.css new file mode 100644 index 0000000..7852040 --- /dev/null +++ b/static/mind-map/mindmap.css @@ -0,0 +1,110 @@ +.km-view { + font-family: "STHeitiSC-Light", "STHeiti", "Hei", "Heiti SC", "Microsoft Yahei", Arial, sans-serif; + -webkit-user-select: none; + user-select: none; + position: relative; +} + +.km-view .km-receiver { + position: absolute; + left: -99999px; + top: -99999px; + width: 20px; + height: 20px; + outline: none; + margin: 0; +} + +.km-view image { + cursor: zoom-in; +} + +.km-image-viewer { + position: fixed; + z-index: 99999; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, .75); +} + +.km-image-viewer .km-image-viewer-container { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + text-align: center; + white-space: nowrap; + overflow: auto; +} + +.km-image-viewer .km-image-viewer-container::before { + content: ''; + display: inline-block; + height: 100%; + width: 0; + font-size: 0; + vertical-align: middle; +} + +.km-image-viewer .km-image-viewer-container img { + cursor: zoom-out; + vertical-align: middle; +} + +.km-image-viewer .km-image-viewer-container img.limited { + cursor: zoom-in; + max-width: 100%; + max-height: 100%; +} + +.km-image-viewer .km-image-viewer-toolbar { + z-index: 1; + background: rgba(0, 0, 0, .75); + text-align: right; + transition: all .25s; +} + +.km-image-viewer .km-image-viewer-toolbar.hidden { + transform: translate(0, -100%); + opacity: 0; +} + +.km-image-viewer .km-image-viewer-btn { + cursor: pointer; + outline: 0; + border: 0; + width: 44px; + height: 44px; + background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjY0IiBoZWlnaHQ9Ijg4IiB2aWV3Qm94PSIwIDAgMjY0IDg4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjx0aXRsZT5kZWZhdWx0LXNraW4gMjwvdGl0bGU+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Zz48cGF0aCBkPSJNNjcuMDAyIDU5LjV2My43NjhjLTYuMzA3Ljg0LTkuMTg0IDUuNzUtMTAuMDAyIDkuNzMyIDIuMjItMi44MyA1LjU2NC01LjA5OCAxMC4wMDItNS4wOThWNzEuNUw3MyA2NS41ODUgNjcuMDAyIDU5LjV6IiBpZD0iU2hhcGUiIGZpbGw9IiNmZmYiLz48ZyBmaWxsPSIjZmZmIj48cGF0aCBkPSJNMTMgMjl2LTVoMnYzaDN2MmgtNXpNMTMgMTVoNXYyaC0zdjNoLTJ2LTV6TTMxIDE1djVoLTJ2LTNoLTN2LTJoNXpNMzEgMjloLTV2LTJoM3YtM2gydjV6IiBpZD0iU2hhcGUiLz48L2c+PGcgZmlsbD0iI2ZmZiI+PHBhdGggZD0iTTYyIDI0djVoLTJ2LTNoLTN2LTJoNXpNNjIgMjBoLTV2LTJoM3YtM2gydjV6TTcwIDIwdi01aDJ2M2gzdjJoLTV6TTcwIDI0aDV2MmgtM3YzaC0ydi01eiIvPjwvZz48cGF0aCBkPSJNMjAuNTg2IDY2bC01LjY1Ni01LjY1NiAxLjQxNC0xLjQxNEwyMiA2NC41ODZsNS42NTYtNS42NTYgMS40MTQgMS40MTRMMjMuNDE0IDY2bDUuNjU2IDUuNjU2LTEuNDE0IDEuNDE0TDIyIDY3LjQxNGwtNS42NTYgNS42NTYtMS40MTQtMS40MTRMMjAuNTg2IDY2eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMTEuNzg1IDY1LjAzTDExMCA2My41bDMtMy41aC0xMHYtMmgxMGwtMy0zLjUgMS43ODUtMS40NjhMMTE3IDU5bC01LjIxNSA2LjAzeiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xNTIuMjE1IDY1LjAzTDE1NCA2My41bC0zLTMuNWgxMHYtMmgtMTBsMy0zLjUtMS43ODUtMS40NjhMMTQ3IDU5bDUuMjE1IDYuMDN6IiBmaWxsPSIjZmZmIi8+PGc+PHBhdGggaWQ9IlJlY3RhbmdsZS0xMSIgZmlsbD0iI2ZmZiIgZD0iTTE2MC45NTcgMjguNTQzbC0zLjI1LTMuMjUtMS40MTMgMS40MTQgMy4yNSAzLjI1eiIvPjxwYXRoIGQ9Ik0xNTIuNSAyN2MzLjAzOCAwIDUuNS0yLjQ2MiA1LjUtNS41cy0yLjQ2Mi01LjUtNS41LTUuNS01LjUgMi40NjItNS41IDUuNSAyLjQ2MiA1LjUgNS41IDUuNXoiIGlkPSJPdmFsLTEiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTUwIDIxaDV2MWgtNXoiLz48L2c+PGc+PHBhdGggZD0iTTExNi45NTcgMjguNTQzbC0xLjQxNCAxLjQxNC0zLjI1LTMuMjUgMS40MTQtMS40MTQgMy4yNSAzLjI1eiIgZmlsbD0iI2ZmZiIvPjxwYXRoIGQ9Ik0xMDguNSAyN2MzLjAzOCAwIDUuNS0yLjQ2MiA1LjUtNS41cy0yLjQ2Mi01LjUtNS41LTUuNS01LjUgMi40NjItNS41IDUuNSAyLjQ2MiA1LjUgNS41IDUuNXoiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTA2IDIxaDV2MWgtNXoiLz48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMTA5LjA0MyAxOS4wMDhsLS4wODUgNS0xLS4wMTcuMDg1LTV6Ii8+PC9nPjwvZz48L2c+PC9zdmc+"); +} + +.km-image-viewer .km-image-viewer-toolbar { + position: absolute; + top: 0; + left: 0; + right: 0; +} + +.km-image-viewer .km-image-viewer-close { + background-position: 0 -44px; +} + +.mindmap { + width: inherit; + border: 1px solid #ccc; +} + +.mindmap-sm { + height: 300px; +} + +.mindmap-md { + height: 500px; +} + +.mindmap-lg { + height: 800px; +} \ No newline at end of file diff --git a/static/mind-map/mindmap.min.js b/static/mind-map/mindmap.min.js new file mode 100644 index 0000000..4eb2ec0 --- /dev/null +++ b/static/mind-map/mindmap.min.js @@ -0,0 +1,161 @@ +//base64转换为图片blob +function dataURLtoBlob(dataurl) { + var arr = dataurl.split(','); + //注意base64的最后面中括号和引号是不转译的 + var _arr = arr[1].substring(0,arr[1].length-2); + var mime = arr[0].match(/:(.*?);/)[1], + bstr =atob(_arr), + n = bstr.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bstr.charCodeAt(n); + } + return new Blob([u8arr], { + type: mime + }); + } + +// 将 li 节点转换为 JSON 数据 +function li2jsonData(liNode) { + var liData; + var aNode = liNode.children("a:first"); + if (aNode.length !== 0) { + liData = { + "data": { + "text": aNode.text(), + "hyperlink": aNode.attr("href") + } + }; + } else { + liData = { + "data": { + "text": liNode[0].childNodes[0].nodeValue.trim() + } + }; + } + + liNode.find("> ul > li").each(function () { + if (!liData.hasOwnProperty("children")) { + liData.children = []; + } + liData.children.push(li2jsonData($(this))); + }); + + return liData; +} + +function drawMindMap(div) { + //各参数解析开始 + var lang = $(div).find(".mindmapoption").text(); + var sizeps = lang.match(/(?<=size:)(mindmap-sm|mindmap-md|mindmap-lg)(?= )/i); + var Templateps = lang.match(/(?<=Template:)(fresh-blue|filetree|fish-bone|right|structure|tianpan)(?= )/i); + var Themeps = lang.match(/(?<=Theme:)(classic|classic-compact|fish|fresh-blue|fresh-blue-compat|fresh-green|fresh-green-compat|fresh-pink|fresh-pink-compat|fresh-purple|fresh-purple-compat|fresh-red|fresh-red-compat|fresh-soil|fresh-soil-compat|snow|snow-compact|tianpan|tianpan-compact|wire)(?= )/i); + var protocolps = lang.match(/(?<=protocol:)(json|text|markdown|list)(?= )/i); + var tmpshowps = lang.match(/(?<=tmpshow:)(true)(?= )/i); + var size = (sizeps !== null) ? sizeps[0] : "mindmap-md"; + var Theme = (Themeps !== null) ? Themeps[0] : "default"; + var protocol = (protocolps !== null) ? protocolps[0] : "markdown"; + var Template = (Templateps !== null) ? Templateps[0] : "default"; + var tmpshow = (tmpshowps !== null) ? "" : "style=\"display:none;\""; + //参数解析结束 + var markdownText = $(div).find(".mindmaptmp").text().trim(); + if (protocol == "list") { + var ulElement = $(div).find(".mindmaptmp").find(">ul:first"); + var mmData = { + "root": {} + }; + var minder = new kityminder.Minder({ + renderTo: div + }); + try { + mmData.root = li2jsonData(ulElement.children("li:first")); + mmData.template = Template; + mmData.theme = Theme; + minder.importData('json', JSON.stringify(mmData)); + minder.disable(); + /* minder.setTemplate(Template); + minder.setTheme(Theme); */ + minder.execCommand('hand'); + } catch (e) { + console.log(e); + } + + $(ulElement).hide(); + } else { + var minder = new kityminder.Minder({ + renderTo: div + }); + var markdownText = $(div).find(".mindmaptmp").text().trim(); + try { + minder.importData('json', markdownText); + minder.disable(); + //以下两句,在运行时没什么效果,包含useTemplate + /*minder.setTemplate(Template); + minder.setTheme(Theme); */ + //绑定双击事件,当双击空白处时,脑图由抓手和选区间切换,当双击节点时,显示备注。 + minder.on('dblclick',function() { + var node = minder.getSelectedNode(); + if (node) { + var tt = node.getData().note; + if(tt){ + var note = $("#ModalNote").find(".modal-body"); + $("#ModalNote").find(".modal-header h1").text("【"+node.getText()+"】备注"); + //建议备注的这里使用markdown语法编写,再调用marked.js解析如无需解析的,可使用 + //note.html(tt); + //最好是加参数来控制这里要不要解析 + //正解应用note.html(editormd.$marked(tt));由于该对话框缺少顶层div,解析后的css一样不能正确引用,为了避免前台去加载editor.md.js来解析,减少风险这里简单粗爆的解析一下就好。 + note.html(marked(tt)); + $("#ModalNote").modal("show"); + } + }else { + var note = $("#ModalNote").find(".modal-body"); + note.html(""); + minder.execCommand('hand'); + } + }); + //定义滚轮事件,实现缩放 + minder.on('mousewheel DOMMouseScroll',function(e){ + e = e || window.event; + if (e.originEvent.wheelDelta) { //判断浏览器IE,谷歌滑轮事件,测试通过 + if (e.originEvent.wheelDelta > 0) { //当滑轮向上滚动时 + minder.execCommand('ZoomIn'); + } + if (e.originEvent.wheelDelta < 0) { //当滑轮向下滚动时 + minder.execCommand('ZoomOut'); + } + } else if (e.originEvent.detail) { //Firefox滑轮事件,未经测试 + if (e.originEvent.detail> 0) { //当滑轮向上滚动时 + minder.execCommand('ZoomIn'); + } + if (e.originEvent.detail< 0) { //当滑轮向下滚动时 + minder.execCommand('ZoomOut'); + } + } + }); + //定义右键导出,经测试,导出为png格式最佳,至余其余四种格式,觉得意义不大,(默认内置五种数据协议 `json`、`text`、`markdown`、`svg` 和 `png`) + /* + 一、个人认为该段最佳解为,定义右键菜单,提供上述5种格式供用户选择; + 二、对不同的浏览器进行判断; + 三、当存入后台时,建议存入png图片。 + 参考:https://blog.csdn.net/u012615439/article/details/91411642 + */ + minder.on('mousedown',function(e) { + if (e.originEvent.which == 3) //如果是右键 + { + minder.exportData('png').then(function(content) { + var blob = dataURLtoBlob(content);//将base64编码转换为blob对象 + var a = document.createElement("a");//建立标签,模拟点击下载 + a.download = "思维导图.png";//这里的名字感觉定义为根节点名称要好一些 + a.href = URL.createObjectURL(blob); + a.click(); + }) + } +}); + //解析完成后,将选区置为抓手状态 + minder.execCommand('hand'); + } catch (e) { + console.log(e); + } + + } +} -- Gitee From 7e7a0f7ac4eb7544b5d4095897e03e9801077808 Mon Sep 17 00:00:00 2001 From: cnspray Date: Mon, 30 Dec 2019 14:22:11 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E7=99=BE=E5=BA=A6=E8=84=91=E5=9B=BE?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=99=A8=E6=A0=87=E9=A2=98=E6=A0=8F=E3=80=81?= =?UTF-8?q?=E5=B8=AE=E5=8A=A9=E3=80=81=E5=A4=87=E6=B3=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- views/document/markdown_edit_template.html | 50 +++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/views/document/markdown_edit_template.html b/views/document/markdown_edit_template.html index 1c2933b..6edfff2 100644 --- a/views/document/markdown_edit_template.html +++ b/views/document/markdown_edit_template.html @@ -34,7 +34,8 @@ - + + + + + + + +