From 1ca6a34edf417b355d9eee4f8917fd2e652edfd1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=A1=97=E8=A7=92=E5=B0=8F=E6=9E=97?= <1013335014@qq.com>
Date: Thu, 28 Mar 2024 19:31:49 +0800
Subject: [PATCH] Doc: update
---
README.md | 18 +++++---
web/src/assets/avatar/L.jpg | Bin 0 -> 35984 bytes
web/src/pages/Doc/en/changelog/index.md | 4 ++
web/src/pages/Doc/en/changelog/index.vue | 2 +
web/src/pages/Doc/en/constructor/index.md | 47 ++++++++++++++++++--
web/src/pages/Doc/en/constructor/index.vue | 46 ++++++++++++++++++-
web/src/pages/Doc/en/introduction/index.md | 8 ++++
web/src/pages/Doc/en/introduction/index.vue | 40 ++++++++++-------
web/src/pages/Doc/zh/changelog/index.md | 4 ++
web/src/pages/Doc/zh/changelog/index.vue | 2 +
web/src/pages/Doc/zh/constructor/index.md | 43 +++++++++++++++++-
web/src/pages/Doc/zh/constructor/index.vue | 44 +++++++++++++++++-
web/src/pages/Doc/zh/introduction/index.md | 8 ++++
web/src/pages/Doc/zh/introduction/index.vue | 40 ++++++++++-------
14 files changed, 262 insertions(+), 44 deletions(-)
create mode 100644 web/src/assets/avatar/L.jpg
diff --git a/README.md b/README.md
index 873f64c9..60635fdb 100644
--- a/README.md
+++ b/README.md
@@ -11,19 +11,17 @@
本项目包含两部分:
-1.一个 js 思维导图库,不依赖任何框架,你可以使用它来快速完成 Web 思维导图产品的开发。
+1.一个 js 思维导图库,不依赖任何框架,可以使用它来快速完成 Web 思维导图产品的开发。
开发文档:[https://wanglin2.github.io/mind-map/#/doc/zh/](https://wanglin2.github.io/mind-map/#/doc/zh/)。
-2.一个 Web 思维导图,基于思维导图库、Vue2.x、ElementUI 开发,可以操作电脑本地文件,所以你可以直接把它当做一个在线版思维导图应用使用,如果觉得 github 的响应速度慢,你也可以部署到你的服务器上。
+2.一个 Web 思维导图,基于思维导图库、Vue2.x、ElementUI 开发,可以操作电脑本地文件,可以当做一个在线版思维导图应用使用,也可以自部署和二次开发。
在线地址:[https://wanglin2.github.io/mind-map/](https://wanglin2.github.io/mind-map/)。
-另外也提供了客户端可供下载使用,支持`Windows`、`Mac`及`Linux`,下载地址:
+此外也提供了客户端可供下载使用,支持`Windows`、`Mac`及`Linux`,下载地址:
-Github:[releases](https://github.com/wanglin2/mind-map/releases)。
-
-百度云盘:[地址](https://pan.baidu.com/s/1huasEbKsGNH2Af68dvWiOg?pwd=3bp3)。
+Github:[releases](https://github.com/wanglin2/mind-map/releases)。百度云盘:[地址](https://pan.baidu.com/s/1huasEbKsGNH2Af68dvWiOg?pwd=3bp3)。
> 客户端版本会落后于在线版本,尝试最新功能请优先使用在线版。
@@ -310,4 +308,12 @@ const mindMap = new MindMap({
逆水行舟
+
+
+ LiuJL
+
+
+
+ L
+
EaCKt+CF{M7)T4lqKjpqtLf)$h2nbazHSYI9DoH7G1?rgkk^oJp z7K*DKgGgoq^hU>_%Y0j9q&sYnRP_saMJMANqR~_91G~%VD!)MCJbbH~$EP#IfZ00l z)1Ue#g4=%bd^jM|jf`j8unQC{G3zP`L`o2>K<4MdDy)>C*~1mmD^6r*X<>0kOU z)=phc#Mh9W2D;NlD7;;hi&(;m8FXxDozQ7IlB!P3$K{aB2MglRaFCS=;_A(E7csOs z6wh)Rsr;D(MLZov@_>r+41d6g07&fII9};6K>`Sl10|syq;44N?cgCk&}6?(u~=$A z=S6`1ePkG|YjZ#x0Xcgw8)jsIXz70iypPpf=oVKt8Fz>S{m|kvCC(jI8;xG}#<#NU zYj~~C;&bAoa>qp@#bQU?LNw(y^*I+4u8!desL%7&Cb0A^emL3Tlys^mdU*(Q!%xLU z3X1HymxMQ7#kZJAYzoumzC(^M)B7b>3uPA%#Nr3xGU7;CIRGcK0Qw33f%7LqO!4LI zgQo`xbw{vDKmR1LqiaJUx|WzEaVPO6t2HK1f(e}tGJeV5l(E0@k4Ng5<>jp0y3y00 z{}bDxm`&_cI0i`OhZ{Y P z7^pCV<^oh((N87efLMfu`W)AT_%{>EK*qmPc0gYBk8u4oKz2b60;Z0%GO#c_r6pO( z>wrgvrm#kY9`04-L^O>9ebHQ;lHbN385iXzU$e;1ETs0~fwzQ0xbj8XV$29Q-c)W% zl$t!{nRq)-Y{dz!iz=O7Q)9NH5VKaCTFmX{aWO=%VsXah`LQ%8Xy_0h2JTfgng{;W zSSJ)pY+2CejjKc;K<770jSl4l7es0@++Q9WLAFOA+gMz&xce4%!KV6wlIPzKqVa{Q zaKO=eWn;`gTITbFHN5N~X6u;-mPzvVr^{Y`>KT-`vI^G@1<@$4mLK|8_}p@f@52hl zB|rRn?eD|Zb-_t<*|{pmcWEEAJNwQ54*oQGY^2g|v08iA*{s6*KPRV;Cf?d+ry7y1 z7*DV}7|f`QKBLZ6j17eSk+Og_U6-`$^KbkA<#Q@Gx=xkA3w7o
^&W zj`u*NY*D^Yd4+b#7mJ ?15&RlmxVm)k)FHV?cKag7=+I32Miqb6wZIkY{RcMA zDq^*Gdb-tdXc!g#0LVSCpvUZQu=&?$0mnG>U7j0!W+vsoO zAV4qBh^Hfm(nuCTLuKN1ZCJqg1(dDzLt>!grerT-1aZI_c!Fer o8z zkpFhpmhs|G8a1XH4$GB)BHRko*k|+1JNrhO 3@>T=sj` zbbs#69ov^KyioJo0qo$3(n9i@v3pua9>yUwV!{k7_X`R3+Ha1o7K_D}L5cY5Te}G) zCoO%^cD7X@V~_*$@Wx4JZhw~ok7|xTjN!GI^MdlsE7rV!>9gT=Val8E`c3S@mCTf$ z`M7N@qrTOf;rr>EtQPzx_eQG!IuYm_k20#0jSsYrTyUVhm_)nE%O(5qsBUl@ey~7@ zd@PpXN~!x}U^*V} 6@a90NOD_^G z^zPhMoh;KGK73=URotf8cEw P$VA5sQn z()(SYpct{~VI^uTL2o8hn*gV?Rm{|zvcONW0!AwiSOYZZi|&HSTu}89tZD=4GTAF2 z)=Qi##d<92*A`Gk#V~bB3S|dSZ@~%q7ADYwfnpQyAM-g7E`Yos0a&cK(0ZxT8@V)- zWJVcAnPdkkR+5sh+0G +2#q?wu^DIxr3gsFmn^}R?y z?a4nLe2>Li{A-)v-S(~<>Dx}RT*7{lXZ8ucJ7T$Y%Ff}2v#Jjnus`YaGB2iVpZF2I zVLGQg31)4>UomTXyQgtK{;s9U6Oc-bEI>d-^R~)>U!GvED5rbvHa=ohQmxx2R|Up8 zrXiPk0i@mdX901*8{;bRDc{A<_hJgWYv(_C8TrYl&2w?)g3SGrZF8C$6Rhyen=UGw z3)Xeg6MN;!9(L5KgoPg9;vG5SI*xLYk1+>WOI8O_J=R(HFs~HcU79kc^CK|=1+2qY z4kuid*g$)3uijO4+3a0I7S2ABzPdda5pK(P+i2qN6k}~=oPO+m(RTDF#-+XXqXUPp zpD`P6QEpQ8+1m+Ri@vWau2GRa)pNg#e%*ArGq1~R@edAmCjPyu_Xp=cvr3y|J*jE= z#q|zZwLImbu`@j>Dn6I1Y5(EYdAlg6UaBBlTq8~n$y@5@I34!R0&dAU8@<(T=$QPs zPDSY*MiUTNdg@`Mx9dU3h&%N)3luILkZeF%0vjJxItGwjdjEo<$00Fvl?(%Kj-@4s z8Pur02LtKd#%MZl>;VMbY3J>j2v9nV+MU7f M2LfduXCw9}l F>79&@a5k_Vdd`0>(IlW?K}IFaW{ z Q6Ky||bUSh*Lkb@K$N5QUJ>?UM-)Old|}^J=HG=(L#wB{}3P zS45H>fEc^9TDbx{?i$+)YeA4nBjZ3C+s&DupCo24p{6vG7oI$e?QIk!AGtxeyOwsT zG+r5Je|&%7vQGBWD`Ue+XK@*aXyiHDn(nqWe(-PhaBgy^tI!{ZJR(#p_RPsk60q(G zTsKEdPhn>ijCnXs=jh&Km~MX?U-m;~fCVjz{~xo8*GmE)jCLscvZd+s6I+%o-tgOY zuj-0(ArINf(z`!zy#8ul@y;B{(yotpemj%+kRFly;SjNB;21$ynozT>=vYWwqH~e; z8i2Hq=QN_s d~4N% z8d1YA{W5SNfD$TyMH)Hpn(%=2M5I9jCP=0~X >DI=f(6{uVznq+G1-k&rA`gcBF8#YVLx4dOm24ks1bv*OB z(KBm0-ZkE=ZA$__4wUgyc(ZOwvwgh8cXo7FN^Y@3_AEY`oVlshg2r4?122!-&T8P8 z$( 4wCSsQDZC?E1S13h)nT#$^8%uLT71CU(>Wb_Dp6O z9dCW5ERjQlVd$_=0ZLBM?sKnN9!)kvqb+z1Y&xI{%=l#%9HLAb)sLF^VbTH^XGauu zk~Os1zUeLQd3Ls(Gd3mVt%Avf`0>YQ%tJ#P=52UVpj=_=E~@1@GOX{|SueY*A!Oh0 zuCC?%&3)K9{d#@g?Hi1Wt84O;B!sen1tp(G+m;>tYw-|Dk2n;*7r!UkQo^eky?b#^ z-`od8)ykEc_MxDulXq8@!`>cF>;u+^X~~{l5vpqyp^G1>sLSKtcWZlJB@c{~i5ZfC z;P5Ki-V9pV@!~Z*!{*W?Z3$1p>6-xA35?R)8x{bM44qGdG%|2yd0l~_aOtt>YxC?I z2(ckOZq3p6)4p{*K%^P?lYv8lXfg<8;|7b3ix@_FMfJ6NrGL4&sD?_K3#<~dse>F} zvp(JAm69-t@{m?&bG>xDxJVd8F?nCVNCOO$Hpuzu3p7Br;3tOv`}*GyZ4dr(ldxU( zQ8R^TfTe0YTFR_gG+y;G*675gq64DRV?)wyJGM1)q9+*@w>it4_j6WXse8~Zq14wN z4uRda0jy(T5|!& <|eH!BY=;PI? zcYczrx>6!>Syh$IO~F=7QafdneRbE+n{k 2-4TVK7uu= zg9iq_^K}G4Pj$r4qT`MAg$J~l_4NsK&fN?_qOWI;09Q5=WQYY+R;Dj~1XTzEwX%6v zgtI{Z1p7s;?#^fDXI7T*C=M-@Io&Xv&m@_0m|coDyvTP_h&eTpu*sk7Dowi;6noiT z<$Q(&O`>K~GH)l8mr>1zywN??);#Ce)e^; Y!NYgm#B^s}bAF2*JgK=-bx*sVxl%MtEqsB1fA8DHs`P){HOH5{A0(n~_xDzCI zVD5({?Z&E*64-JrqA8<$x|wkS1$UC<34n7dvH(U7X&NA(^9eRS<%xqQ2Fk4l%XtcD z`Ckg{UycjavmMCP^I}hkjHV>rC)`Jk$!I`gXT1*rb37*wjT&w98YNkG$}*jsIuvT` zS-PGBP!sC$MV@|s3kwd!z+_y3WrhkS+ACaI*ZIZY+z}B_c#L)+7|C$eovHhcjizX8 z@~X8~0chyRu7F+{t~OL^vg|faZj7EHQx4Wz`C0|u8sVCHOZFn~Hn0elUbVQG013ae zmfz<(KZ0L2bFS0b7$~FtUp|*koeFFSu7;lTnpds)U>(Hi&hxLC_g65?HyfY+rq;2c zrM#n$(AEwNm%yn1mJt1 ;(p2>hf_?Mi4USQ 5t(FM<7|RqKxhZTUKs1dFBJ}E8ix2zz<7NW8XW5NDd*p)o%Z}KXCAx zF1HnWE};>m04*$xuCO$v=xT!VZY6N}T8r%K@vZ4Xi%oD&9O)_|wnb?s=^m82qD30C z9v3D@rK&``_yhY+U7E{pNtR72NmqqD_d$;aYq+(pvGj9Oz=O>))dGIhJZk9Gq@oiU z$h(rCP32ZrfmzoC$+K2nHEki;zr)v`qWc|qaMpSyTA9`B(Xw=PqUoQ(?!Qh)v@^+t zH*gaZXl-a!NToMhturnf7fU?^Pa-ClJYP%j?l?|e3UX@jiR)DGrt=9;oQ6k0jbZ9} zt(##M2_*bi=+I9L8ThZE{Lu8#VzA@&<$|RbLk5QY6?OnbmT1&ql1T4RaUuM(wevw! zwTf=6C19uu&DR2h`Jz$dHv^l@RH75Upbpj)>#R*d!)$l?zu9Nhl5n;)*Zw62*;QB! zpUiV1U_^qc=4`5x@{+1#l g3WjN1HliawX)&Rl)cwsgbCkE;Y?8$)V~U1WhLR9&Sz@s6h$S%uxn>7m+e%%{hOt zZD9ZjZ&K9E0!(gf3cojEqQKb`UsrNXY2N@chM*$2v_3CTGu(`7r*;>_P!(#UnIN|? zGp)JKgb3dD^u}wEZ1PZ@yL|VjyG<2Wi^eny>{7B9A71+=#$=h(LMz(BHEY;Dd03*I zgB`U*J;=O`A7sWy7l*U+`(xQ8>tr8(Z)yxVNuKP(LuUJF# V0;C(46Q3EPnb4T?zqfJiisO2 ztMy%YtFgNi7L+IS @4h{aaUkNH5b^Q`X2q2_X2Np~qVQH20- zVxr7Mh+({3-jKd4fMgyEe8_-+7 zLK`f0^Lx7 J|G!-k4~?dHTt0&y;?EOJj!xRlj6WwA?Vf*ertJwxsdO_=+t10<_}4j zqfYpw&0$2mS!sWZYhTTFxTw8gnPmNkA4G;fuMdmL8E80MbtiM|E$haTdD?AFX3AJe z=^iI0Wvk4;0gX&(+%RN&dKk_@H_^QZWP>9WUgh{<6P(bIY!FwKpr>Td>IZS!4my6% zAQNKd5lN`jbi6uX=r|DC;t}!2My_ #PeIZ}_9^sq9Is=NqxJ?nz!oHxaPN}9h-iNsfRslqS2N|)LnYD%9Q zvBYQjzXn)q>+VFmzG5GvIsJ6$V{)b(%g)2qrJ<$P%j}|}bz2s<%_&asiBzMjI(i MBzkJrOnF!LI+sK0u-P*3SifJw0;hjaj|#{}oWaX`8S1Tv`*X5IWG^ z!BnbI5H$g`U-h#~V$7F2YS$6b6jFC|pl#j{`GJw3bs|xfN}%<%f+YC{!DM3TzUJ(O zE0LqHrC)s4BF!=Wk4TZ5ox@*E+u7FPEC>5Z8h3cA-tK7T>3v{ql$n#em*toxlS)nT zAG!EXKmdt!1$@x@-|dF{y5fWnslh0;`Lx}&pBNb vdf;Y5k`GL#_5`XiCw3JgG zs^EGhr<-VJTi3a)+iJcEFyF2x+iy& 1C91j5{xQ+DJ!@b zUi&-6tNLxyjHXb qKto)QKf$hZ)kb9QJ)_*1hNac`m7zbo$>in}*QOK4mlEn^p6Q4=+dC;9K~d zSB%sg)-3m1@Xdh8hF;=aTDq&=_rtKRJzk!ll*GVQwl}I`r+tCUo0e~BI#ZXyUu~|8 zzRl0-9WPySZJnLN@awLIqT8G~-ri{XnTCxaRaM__-FzZ=|FkOE^bZ4SR}uPj_o=Lb zJvB-&KIzF#U09*-_JaV6GR*%PCPEC#l}Yvo-Y!r$`q|oVB gQ+%CduL$jIcsCg@7!srVly;u}PQ`HbKynD{%mVzSq{!vE zS~f YZXuaqGKKsjROPA8f{t$Hr%1*>9By8Z=mN$P&(BV#+1uc*`tgi%iZ6 zNEop_v?!^0*^lnhS4y~U*z}cvmV895yI6q7IJk(9$L6QJjSOwFudxa%vDB1;PTLV_ zDeF;Qro?tO^3%hKG3_?Q(wd~G9;qg~IVGJp{z*#-_JX-aMlfkahV`mxwSW%b(`ys? z41)blhDlhBI#Xx^BfIxZsQk~d9MjupByxagf-U1&Xc!<(R^7b2Qg)}*>~##>gKpv) z;WkLtZ PHLHX4&xKqvg9hk;}pMS-;g{0w+6m!eN+sTI)l#i zIK@rf*W0x6F#AR1+>54@REJ)lovp&%=-LEw%=M&U?UL3&Fit>`mSp>kEPU6TG?gy0 za%)I``G9p8c_mP5#;kdcwmOuwNb7{@ouKzg*NCJumwos6_RFfzJ|*Er(}}W!H?vKh z4<@aux%p(yi8-wdv$d9Cj=qg=C8q~D9GbDAv*h?~VA~K+#-4akunb*nfNfwt4HUSq zO$bor @HG=UTf1OwZ^wRHYVmII0t2)7i^r}bGHg8Q! zi508-6z|qGonLhhMdrl|ldKM)hfY$`NAX8q#O~x0!5nqfL-?M|!(A@k#~4N4O;S#X z#%nZ+s~wrH<|pP^rk|^bQnbwLuscdtBv(Uspm|B t3s(xC@!&JND^Zbk~fNOhmA^Xx5$wfm)2;kTRY>|u-2gE zXcl7|vV4AYwKjpD3^`fwaEJE_q@{^o<)!hVUIqK^sTR!?u|~0yD8Trel1};9xwP7n zI|YmSi{Uo+f+3mlARHyiEVi1T6%fB __$PzTP?Q zuNdvO?G~*)5-<_HXWAR}LY4>qaF92#abK4*XyNWUl#~8lq}%O^?NcX~R+*c+|J;4Q zGU7j)waP=TpS8?4R&lq2=)?$kRxtJU< xJpBbpzsz2`(( zrc0LRc0F|2yp{*Jx91AbY5g|#pzq1*36(*t{iDzHBa&c-Lf?+y%H(?fB>+-GAASqV zs=+04T)SAp#lS_!0Oh(K9Y^5;Pp7@7+OfftQ{vd<)}`XlTY}4mjaL>RU!b%Eb|GbL zOjMnO+M{X7qPn!Lc&%pHKkRT&u+IvLbyXum> zl=g%Fx=g|GSyDC5$4cWMVvSex#HZNNZ^?mZ`n vHR z?P9K|W>`6>m>xM~{L4EY7)_-UJ97M3DViD!2Hb%H @i0V|h0s#%z*yl>p2L)xupSFIY?dv$FQEeZ3swotloX&iKA&*`B@+^u*3F7P4fU ztESe =c}mdnx4u Ix~mGW-KIfSL-WYEIJ;Swnit-j~S5+byx=@R>K`#zR^bC0se7VV(YP zFDr49b@Ijv9W$-@q|S1B{?_2~c5UJ5S7dZ4ebrUuZ(joKPT=iHnzDI+<-SJ2TgKU4 zga>e-b}of$%n~Ju{ihV^iXQx6D!I2#t_;DOWzroQM#_W^<#DQTqY||d8#oOrw_ i E-jjYE{IoKjBW`xSeaeqJ9qoVy{zeZQMx>8p6< zA}7b4{y~GX?;>OKOHRc+6TOpG5W*AqADz(S#X+o?yF_W@*{ke8-V=EYJS%RFUFpgP z$$$GA* DT#PgIS5y!=6yzsrYI)7{X1DgnCJ;*AXT% z1Srw9ct^11!Ro(#kE>r5ghG4J6LeZNYSUva_D}FOM8qYuh3Xi~KlCG$UE85J`<8?s z^t;y>@048R&x<;E&CxXHyQ|&&S$j^THpoM`uA0*?(_i?~T?cN9%@p=q>$-AW3x|$! z6i^mF1nAVmdvlN{ZT^KrKUbL%gQrE2p0xN{KlX@kT9L&olBFAw Qm%K}!{^8yR8f;nDJltPME<7S(Mt>)?@t>Z5{=1_N zUS~?j65FpWZM)dcJb3Tpof8&s5OT>gs(fMG-8%t|3B-|xRZB+4Q?&1?KaI2%Jm-^7 zuO6?K>|Qsg$me?Ev_prBc#U-_ s F_AE2yJ@9#E^92e?yFXCy;MAmcV@v|c<#6u7dud8mS|M2&6) z{!PsnsQ$Omr-}T=?Y5MyA1WKA6$frUmv;a0nV*jJ9XS~~d)6fJKUWLm_j#wh31b^i z!8fg+OGHi<=N2!2`L6j%A!^?T-Q4EVX6ul$1^@W^Z_X3SZN1X(ND+kh4K|VEB@Ft0 z-OKooEH)b&9jNBce|*F9p})t!v)89L-%~!mX8!DfGd-r_JVCh!`x)` Yn$ z#3PVnnj#2nWh6KNJMH!jG-ZrsolWSmYjU@Z$%bR|O%doaFh)aVU~mb{rqptMZxK3O zL4TAGo((UPM8)L9m;uPJ7|SgG1$i71DTT;Jj@Qjx-X(0k{>Ep*r3MyZ7a*2h<+x^v z=Hfn&$N9D^o)j`}L|(M-;a4qw$-nGypXr%B@_Yp%R`LZWPj0FKp4w?!$qvui&gHIf z{2;$iamOoqm)l)lUec~=-h)tE>%pveZBq{I(e-_QX Ch~ z58%1aI~4)nRYr#-jGVVP7Qb{R$KKP-j$S$UV1P|2?PQXgH=P!RxO?#4HF{#*mPs2Q z?aUk4Ex?N2k2LXTKg%qM#f!{_@7xfteWEQ)y8Y0oJlSQeLbDBUz&VA>sG;{hB(Jbr zG@~Ty$wcI|sGA)g5(R(io^4_EcysgIUwN$zwEe? Bmwx>mm0s0=xYUzL{T3Sl%|K#<2C=z5gguumAD1E5NrX^o zKWGqJW=S;`DQdS?z?C4$9!YI?oqNGyxmR;VaQ4!X#$PxUEMW2drUo|K#Yt*4nkeU! zMnaVqf`O9SsfHFT<`&rtrVQp#FG?U&XuO~o^p)A5!)H@GC3_-as %@999qll{c{`X{-kv%Q`ga?YT9(hLl6FZHKz3uW};I^|q92jrrE&=?&&CbNO zurL`vwlo{g*x*=n(9L(2)xzp+vXiQ7_4;WE08n&gfQjp54A?(x!2_yp4 bOKI8sin)Z}mKJPL-bo74NR-?w$T3_lG z8>hTcyX0Kxbu?@z7?f-cZR&hjG1a(IQnFV1Xw;Ww_gU@UwB+uFrJaJMSsc+IWcp`g z@3TbC;i?SNw~BN1^Fviw=!w13bwl2Gxf}tim5#=R+?ZU2r+6G>tCQD?EN^=6geEw5 zT0Js~TVENbg>M-e&-%d9FhH=if`a~Sn#!%NU>Y@!E=_j?m}nzr@J#$?ecjekavHFu z0tG6Vh-Z^5Ku6&q0>*jc;_=UH^gL6>z=rqJ2nc4T2tDpP{_`)i25+x&c h{l4)snK}rhjnPbeRYRVB>N$>PidUw! zTDP`?2{A_+LFTXDA6aExkBG(4M;eXb+`|adg4ui-*iFD5I7(7VbLb7e>B0{0itTC> zuMuF$r0WN(?FUORC=ZX3K&x8C*>DaC@;X)x8VuHCf8QG}p>}2`>Q3|?O?37t@3>98 z&lF$gh4sf%Q81kSne1LTR3U*MKE=dF`7B>~rm@k GC;e zk5)@EBY3y`@4liXJSrY$&D)1={C+Yf0xr8Dpmy_lB%ef&ynu-$_YF=<|9p}e&W>M8 zzV7^4>0z>y{n`#WP`iVVe>7n!6gi=%TT1DIKE=;YjD%~l!Y-oBEHRREejqJiUiC4W zx+Mc^KJYv}HsiZO!H30d`Ev+$ZpAD1{!F__=Af~QniqP5F;<_OR}B8Lew6O(!~@W_ zhEfVR;6}aD&^IW+26-@g7X>_NHip-tsVLDnSO>+4*n7fCY@eX~cMY~+56E z`6`a4?|2u9LC=bSfH&~qH;+orlaouFG;2M+4E!2n!KLOtuN!?aMMDKBTHOPVX9K zRy#r%ur1Kkc?Z`6RNAU3`Rd(_=}3E@5^^So;4KRioRwIIGC0v2X^ ^NC{No H#p(MQ#%!LBffbM%SZtdjz%QT|^ahPf zt4WcexsOFT0VL~NydbKktl+^;UMuK6Sd11ZDUNl@a6Ep0DAL~8<$i3SbeVPQpRl+? zYWe~ZKagM$%M|Uoxb`iI>O6(3FMaK(9RaZkXIQ1w#e`YVPCqm6YqThxYWXhv`Ez`Y zmEQt>SxGAx1NsYjh6~$8crQ10gnrsMc(M>}P>-K%>cz?Hxfgd|sy&=?r^EVjX!F>b z%!1On95yWmrrbu%)+O+-gyio!9EmGftvqGA`rXXbk|eEqcB*uZWMJ1VVsGAuqf;lC z9YKwCY2h1*5&VZIZ69RMHQsDLesbuZZ |Tn<*cPe;Gs@*5~~) zt?+7b-Kpe>2aow(V0QDGzPw?8jxhQ<+6goRsBVy-8`yR*2Pj#!e#-*Tu=>_Tnf^b? z0EM8aY8MKK_PYEOZ6etJ<9KA~7#LftnqF6+K~vpiIPp|tm(*0U@p}a9UqHaSEvyqr zBvrs{`TcU-ef$DWmNS`8I&u9oEX^#J0GT|TE}mOak|P1bcos3+WQ$w#l!P$`w1ev| z5=f%B_VtA-Vn%7?bKXh+Yyw8MrG8Pm*d=SbW;hj0vX5ofZwhT-c84m0Tqa-Lnc -|2JS%K(brIK0P-M%y;$FnX zM{wtD2E=DGb`Gj9^cX$mF{&s-aYU9&t3|kamL)4)rt~6Avy|6g2E_F!Xv?fQLy#kd zl5`iC93qEh9A~OV>}chN&H){Ak+whyg-hVBf=Svkjc_Kem>0%U2k@>O0q%-xdY$o; zQe|ST&!W_^fz#`P*Xs7vf4?oCP3A1U?Tw1Bo$`+zO&VFFV06d8rnFx-to7|MTm10Z zQP_BwKmR+fT!4cG@mR@L>2Y0i-ZB0rK?1IzA^oQ@w%x8Va8~W|#=G~z(WLY`4_u{Z zKD(=TjNuiWbk5{ug72m|#Ja2g4~7&K1DF}Ow70c84{!QqcS2a(g1VXfGHYBcuy{}S zw=bP`KQgc~^6jC4pEZm-UExku3#N_zbW-uli}?eOvbG9z>{BoHTyfg*TK)U?Z?Ag4 zUqN5{r{q)YQu5OC9V>TFrRkPlxWiv_XIB{t@B43i6yOwyBXCi_{#PD`PJ~RZ4>C0u zFbjPdbmTRFU8~0Ncah;7#tp{2Dq?WRwAog8bv8UwWu@}4U=I{hAW#?m{IQx70auqw z &a(~f;yc`9Z7U|}&>#Uc%s7Ve$A5iM_j^cwbZbgX%xCxF+FVl}{n~1K3vQ@p z&>?$QZNYd+wMZSC52fVL$5?Nx`%5n(5VjWX1UtH8k^T}cMz{Mlt$l(5W_Iopk?JOu zw`+RMpb-Cms`~P Ux Cd7Uez!hOe;b_I?tL)u d26iBB zVobd_l~wH%I*xFeO5CS)iL&X56ZU3q>|(^hHtZ2aR$R8-vA2aZgxG3PQCixxI7j)V zqinHT>8Ob!g?a`M$bKYjQit=|@7wt`#m*S~6sInlU;%^uQ(-@b_#QR^8roVUByiZ= zZ$EC>G_{sn0(v97$(_V0Zn%YXryk4*=#AeIfUKtMnRs&8q>dEq5C4SHc>m5a IkvfxL_S?-$%$CBm#58;2Ou-MLIq_i-KY+~=ndMY%JB>3EQ5_9y# z4AIe>dh&i+i3+75^Qtuw4a?9#j5g75w8P{xLdQoTJhY-tm`xXg{XGXsBu@&Q2LPM7 zTe})MWkKeesB?8*2F?h=N3S;H EN%8RCkir>16P3TYV#Pa-e&3+Xj9=NnFXfmVDTdhqBQv^6f%fQs-{fH6GZwez zr#sf&`8wl8eG9Kc+O;O7Dy&kMxGk}y|2jS`qBLOTU!6YF=3OW2XCIAIZl2k*VU^hd zx5ngWs?Z2}>&1 vi+Vu^Nz@okUAv0M)I(Oym{S#6G= zV)N+Z%IVstM5kdh`5ezHVC?dfxUXMV){FD34&73YE>fF@=% )J0zCS@LMRTvUynvfMpzZyIt|J zuveV*Z!VuK|2Y)vg8_`MJ`2+t*0v|5!mfw>(sxJ_Y+?sLSRge$Iw&88)MYoY7YVoY z F_IJ(zlmg_Mth9Nu#6!a1+J|p!JpU|yh zS@Lr`!z1V|mA+vj+!#)gJn9Vk1v%LoHdF 1D`#>-N&fKLW{S@7DKeUEN3jx-OTTlng2d7CSe zuiL%4mni_Y1|YmhQRI(%Kr>SKEd~F+=|m45Z<1@=!!M$(WB}|H%*~5wtJmv3E$B^= zPfG%TaWx=#6VdV4U6or%VV~!wbhXS&q+KH?c5jjVzU>dyx9x4;HB!pI+Sl=CeZV)i ze|5}yUigsw>df;ky81vt|Ckn_6CJAnI%e$mLCAi}i-3j7-2K$a>ig~g`kX*&B-`DP zUVz5JX5-*FmXCfdZ0LZe;_zQeJ6-o8a*rq>h9IYe;LbL;8`_3+>hBqq?AT(8jRU7l z>kXu6-#XsaS8$$QCdC!=m!Wj^Nyxd*txxfZAp@PUWsCeZpT`cVV01;^P!e)-Y^D^E z3!&dWj@P;)+LDeJGfdPPSnL}O7d4dw7!FECf=h+Ly=`=pet{Esa5Wy@0u$<>@&(+D z1Ck3P)eHWLV~s#0joBQdr&k66N4cm``WrlXHv;)SBtI{HB>&NuIiNr-cQWK15OY#r zd0fzgHsHtZ<|`M&?NbZcT`$n34repQR$8>}s0rsc1*_Kz<*TF_@>zNc9lni;K%!o? znc@b>+()@wBHznh4|ptQ(`x<6M- 5O{p6s6uth okt4`Q2?-w6N6Go dovwPH}~x>Mkw0{p#) zeD(l5nMI01zj;Oe7yMHy*MWup`p3hqZx8i*ChzQS?T*K2A_;bh+-PA;kE20eZ_z_W z4*1E3obk5LDpurZBPXOZ>r@`MJ%S}Tm2$MdH5Pki#Z;o6yl>I|)pGL9(O;lxxgHU7 z>N+}r$e-6rbR(R~mvOkq&5j#4-9S!PZWJ~A1Sr6~AcN`wCf*6#4g{EzQz(;Q*Jc}G zs2#08>V$B*4K>5dM=NY-oMgeJ;Pgz^*<5VL#V$ijgm_wg%JveZ50_Tg>JPQvb+_6! znYE|k+L^mlW%KqB()T?=>;04tx2(AH^Pg1}M(C<$; auR zOl(J*OwJ3#>y--%mwD)809$uP@oAcbFYxgnhfTn9 c|NN+6?V@FOt-{T*n nB#)D zS9lSCu(vY{-!JrscUw@@rZ3?29Kie#E Zgz~7D0`Sq#`x`O+guB78^*4@MS8g4Fq*+ly$g?iN_$2~=LOBkB zinb1FcRjGAT+B@z^XK_UqXhRR>x8jk!q4eJoc`xKJY@AcT7DOAEs1})Sl2YzC{uUY z-+jk?D9W*DV_CZ+z%a2%>w!cuOnT)FvKv*6iL_14l6{47LwEJ(?GA<#495}{R97ub z%To9CHa(Uep01{uIszUzT`r4TS_K!j1p(WFR|;2P-iHAKfFIGcIJd7eL~exhgnI1e z=;swpL6-$ZSvRpg73F2IsRLO>{mwL~EPe$pQP1ocNp!{h#(lqxU7@T+Lc9Jz0`-U0 zj6pP`bhG3*VcQS+ LZ?vz|!3D_OiZJJ3o#v (?s+(so0LZdW3+c)ts7svK^K!s=KZ0+Z`KR#*#$=#SM*z&rXzFL=lb9G0 zedA03f)r4jO16z}yT9+5TrNkG&0j0uKH2{#ZEu0);I#T#KcD2bq$Xx2Lg+PjZLWzQ zh^Yd!+74Sunw0J&RZ(uS$4i$lw%Ul=R-84UASZNf5* +V8Ntn8a(q(z3EtZ#d6_Pm@$kOsW9BWpCc0W; AkrC$wyOkw}Y_4wp%a z2UTTEw>%%EgD4fepk5Y~$oi%fO3K$rHC9_Z7dK87l`jhi?7ubQ;mq-K2>VtWeYqp- zWH|mG8eWFNiFJu7 !i1M&9hT zS*X1mds0-i?PV64aPOVfiB0OekER>wW~ogdWA9t=+w!{O3@6*mz+Q*Q@nv7L4{>WK zWU2`yLu>yJ4wSfBd7-otY&4dGCevTpk`DL$Xd@X&E=7EU7v!XliGzHOpVDlb>VN|N ziRCK6CIGm>08ENlPmBzGofK5Xb|*Qu=xlW{_4x^Me^hqtNY}J{Ei<;iC`~G4x>8mz zDI%@PbE)_a>bGo-q(;d;#{KFkSZ5RPkn3?I@a*v1YhL!M-PTrr?rF5>^r4USk2|8z z >GLwJy-o_t#idOqcZR!4iJ(M|Ygv zpE=aq249RkwS|#jqpwkXj9m(!CkO*ru9nJI?(}`3(_D+ zxc}r ~ z@*=8G8%Fhqt@9m9h{K6g$`1JDmI`RQdmVntMTiX8yZTR8LsM8G_{~|)P*=GKOyzkc z;i5+GCy&qMKEm0%HQoCxOh{^6`>h}Rtin^xWiJHjVdjd_De)G!7MmsZNh{sa^)1#- z!4~kS?&3{a(R1DpbU)?!-iBpSD(Nnx2O0 C4 zJ63x2yvCx<+eP^2e;i~S7a;k$1ou;OM`}k;F35>A*QI!Ql2kAV&%Lusao4Qg0^~fQ zU`?#Ak%eSOTLYd2^jbe3SNb}*oMq^ktXq-#AZtJ;4Jj8cZ=2k9;$6!&w@aztRXnr+ z78~TZ*W$LE-*dn0!OXSpQPUN`+HdN+q+w~U*6qU0Zvy-^Kb5r1L M879*7#e=CX3M7?LE%@%#7N&!+vey zuK#koqDa7^eG7;i&mbAIF>1#cvm9A$Rn&Zwr3S+JQP!|EA);;P>I5bVrrR%~zS^p}~5J18g3YJ>J0nhRL^!58&lpZms8g?q;Y zZd||=EesQKtE2}LbK^{|uvcb1V{3b)`E (}pI5~7sxHq-PZn~9 z?~QB@BY2!Rc)yeVMUvrSxEC#L4DofQ2kFDEuFBuF;spQR*$v|7$H{kSz`P3rzTrA- zO0OpRqUCf8_qa!Kisxsfa=^0US&eyvC;tZ^Fn$5MbO2{(0sioG38^sJ+EM|ux{ix1 zI*C)+oEJ{)tEVl6y-GXeFqaOrcD18)_0>@(&Q%*o?vl#`&9_ESHj2KDIz_r&YpG;Y zPx;crgrM*>1lh$bnT;Hm#_RI=cY5 u9@4)cXSMTB*zbo$lp??c| zI~9O4@}UZ{HoT)C=V>~S?S)NDdu`9M$c!opJ5^ZUYv1my_nBPQc}Ap2%Z@&Gs?4dR zxFTr0_TVPDgL+pd5>4-2u&2FFUncpW!8W?nK3`F<5+irsS=D;?wy>YsKmTCQIHF03 zM)JMfj@mbWlNp}{MDfNkj~x+ZZrlNW3VeLy>_6?zKNKoJqcS$f;A^OhW77@7ln T;)@#XEg(aGUd$Gy2I!1=DNnb?obE~$Xtmj8pSm#p}7O)Hv%0jP5>qwe- zc6mIU80$(BXwm0*u1ufGbJXJi9|QcJk()M4#%lu%uBhABgyr{5sJLiV> XOGnbwv1ZL8`!}%;r zB}v#deF51c&ZcUDc;Rh?y`!QX4w7ocD&DR?38({TTqbLniK^=iTlXZxOfSPLU+K 9=}{2^D-i0VX?EheQDKY^_{|l-{)ShD&4Z8eW8UD(w=rkf$N>h zj+}3{WiNm+^V44ZfBGQ4QEg`qKw7Zm`!B(V=W{Vkl)J}T%n{ht_EDl~?$Y7?#KX;R zt;cs&m}nx;_W>goJV?TyD*-4b=_GZlP4+$BTXESb`O*n=$MYelF &egQbh#M^*Y3~~st9&a z|2SME-RB21@<2&}h49LBxEls);qPmaOn>;6Z=|jhM=FabAu&|W!drzJ$Tujt)_)~~ zB#o9pvfWa^;P4|)hGhs$WOD%1DDan0=Ph@1lxv_DNCvJJ2&G=2&zI5wa#2XNiYqV8 zHm3O>@z4`rEk&{{5{be>$IIJj!--=z^-;BR)H`uzyu7(s`Y!T9R=}`%?c{W=Rc#@= z#gs6hXW=~SM4yFni--a<+idFHW0=Ry7AIC2I;>LD>WRUC8%i)F#r{C2bn%=DW9zKN zNY&DE!hn~b=u$?X{o;_@$5%&VcH!ZgojVRZc-bts&DbLVkIW^DsT_4o*H399F{#81 zU{$fLXe7on3P_NP^%I0`3b&}y{3hY!VsrJfbho T@cTW-_wQ*uQZS|}f0cY^zi1^;B496BiHCyVPO zlP7vs ZoLsMVhBVDx=RVA*f2-s`$5Gz>L5}!sPg2g%y_g+ z>QxVnG$A%4b6g&$43uuD+OZ|u^+kKz-n8z*@y^ya*OCcKw7|6DQdMYW=jNsnxuS8F z@6?bvQ9UOw+> k_K^@h_Cv$x2eyP74*KdqJ+waK69l{0slk-(nyAoc}kp zjr4QevuA{WCN1aeofo8ylcK%D_x5C3pLm%r%E NH^mt~`@NOO${th#i89!yG!z0`Wur*U+;HyG zLje#$0VpJvyAn!>m7Dg^-|?o!FWl 1tEl&WRBybC&5=Udt)4l$mM$%En6* z5fb&do7fiEL;03zNqK(cU;6x%3)7_t)ypT7=?|wCmPKB#wzTn6rP@V+!5Qq qr{XFD_FkU6%G6gs(-7<-h&t}T=X15Ua1wbC%adqFNb%&QACsmIMq zI=ZblOO|3>o#v<}Uog%HEj;8yrd7BSCKNy6V4JI7_gR=|1Z?T?j^XzbvxKDhL9=Wo z>6Kz@eU?Q0D)y)YXDu%Fl-sUXPCTmNa(vji3Xf=CUQ6_@wLYHY0vqDbS$jc6hx6Ex z3rgJ-3sppjFs wuq&D)x~8v#lR+ zI8NcSM#YevJdh?y9i`E+1(l5jxuf5)qlV a=GT~ z+{z(B05@MYY@IIJnk;t8v7lgrxSzd>upaXH@{2pU*s6(3Z3@zcuUtC2EZr$LcV!pJ z{kLU@>q-Rgn|+qFfgjl$97F*N5{S65*eU52`6Iz3 wi1 z*!TL4`-+ Ipu+**2}b4bWLe{s+)8E_pXd!)Rb1gbH{bh%_yij+bq;YI}L0b;4_v z>4mbW)Qm?OMrr$Ogpa&6H2->=$=lJWZ4?i0QmmbuT;)u>`tgc4CAgSNSW41T^*7Yr z+DL~5#m`J`jGW#t-`UX?Vk0mO)m6Gy%EnIT3@JSlf;H;`JIP~9z4hz3*pmygP{J9V zQnR%Wfs}s=Wuq6`!dZ6#3G_xCVX}Zwt##0d(!B7R#Tq{&?&ri&zYg=)IA~C?wJt?h zz6zT#IgE4S7~2>yU*LP?ZY4$HcTp*a!N)X#VnaEIGiZv9eCZ}}>Cdwf9<<8nbumbd ztOiq|)g+*ara$CECcu@5Mu0}?xM8!sHB-E`a;Gs_X0P%W8WfA^8137gAD#L$%l59o zF_HUzzy0>q0kk5{LSec#M`=%fmKhy~o6f_=IKW>k>q2Ug(@C>b4N)+JGR=!VtV)We z%Am>8O(OZ#SIx+kjuPQUyYcdP>;d1oM`IC*4?Sa~iI<&nM|HH!-irrXwcPG%pjp(# zox9V F&&Iw zFOhVBdlQ(=3!f`! )!_3Uvi|5RoyYYgy# zW0>TQ@n&2S`3WnA%pwsz)Wu bQB2`seJY}uX@4wa G##ehrd=F#|h^4}&uF z1%75wT4@$=XAUgzrHALHlNd{Y!z-tp;Y|bA9iZLrWKMGaEe$DO>$pky#4b_{vTKxh zy0jz%AkZF6$jeH~IxMSw7mVrzp*bjj+)r~g;}im1@FC;#CsrA_Ip$+92uCl{lGR!` z9n4-me#%Qvd^xqtqKMg4d#SIU_l=MAYA^~Zu5t$o%FEXKDELHLoM13$zcTe(be>nT zWP@MxEPh~9Gqbl_wg|`uN!Mz*M}KA (YE{Cn|sje{RDeCjFuAHly3D$+hFUH$f!zsk6-gKJAQY(V-pr9Ot|4V z-$M)+tDCOyj=9Pk&ep8W@c>b1e@9__VQYaiO@6(e4Fo#{l@hBQH=V830U-T?OD8-2 zNG=B!e=tK?OO@{w_UFqt`T@7lel3n{(|3tLqOF5A!ihRSji&m-lL9SdWs&t-uJjM7 zD;{{UgQ8XA3IgMUoeH+vbarmYia*1im$3Oxy}FVP4)+sqhyTdd{V!+144{2R0u?Yq zGyG4qalmkA(tPEveJ1zDzJ&3hx9LH=Yf190;O|l2C~{3JvP$iijBP1WOAxf^RhE90 zlzz?=@qI{XNZx9_sQDu1i@gV$&!Tt&F1etNwmNim3IA-PGw7qX9rHLR#gMsC@@QpS zn5ZH4_~e-D<= ?!CoIUX9$B$7k~pi4P^~3OW=+P ze%Q$zymIuoTj`H19|1fU9JdNCs+0 UnB-5=FYn~)%l=96sfM89lz8Db` zk$Uo_4RNh5?d-6N^5(&jYfHaY&9}6;`ArrkJoQ@|fE|nJen|AJ*RkhY&ARJ+`<5+C zU$d>G4yXbCoZ{zKG8@hy5XHC8C_b@7j|hyp&6Wk0cSdUDf0uXQ5)#OECY L$ z_JsU2w_OfwI^29U-lN4E 5{e$5#GQk@%Z^K$|G18-rr z2Dr_p Es(P}0kX>YIp8JyLg8~^ zqM#ITC^-(2g{<=g32XVfMcJIfIwnhX3bfva&B;TK%@?~UiGa 7)*CMcU`dg*~sC=}RAy5$ Hy0(BXD&`Hs4VF>ZKeV+m~ukW3Tv6H!s`n zGc3u=jz&@3!prFvL|#2Hmf7(ZEOi2p;CoThQqCoV+O @d@{l+<)e zwTvyzKLsi)2gt;)2P9X-u)};K#8~}(w$@cXGpO1vg`#PAKeAjr3}V4iHcD^EgT>&8 z*v8E0AAPBdYO!4Lv^bLvNS)w3LSaOC^q@N#$}7!|#ylWcI@4A}1J=+SQ)977@RSM- zf(n0#T-|$1W`4`v?OX|1sN49FAuweecyqL)d(dzWFlEZYB2JfGJNiDG+W)I!a5mf- zKOul77J>b*#amUn nCj5oHLG$$B0wGdfty`61T&Jgk62_>Bx7>(y+KD|Nf98!jMe1ZxvTBP@Zs zfJg;zYn8J>GVDqVM0SBSYr{FPK? &q}70+?VT BEMn07BpynhI3l{D`aOyh;?FG>AbQ^g(?fd5{AYb)KiX>MfOp{CGwq;VShE% zP-@q%OdLJe=4V5&>LY*yI?B>vf`)&pySXB0H@ez4BA2_O&Fw19J=XCgGgk7B(@xp` zkX%DQHi`+-r^%AQI{9MYN^pvy)=Ag?b6B9x4s={XOZh8!@{k7Fa30+K3*x*0G-E&j z7}1pjuWKN+3NloQ4b_kzEc;bHKu!TFio`mhx4^70+MEvcLD0#~Y@SjtL#BRZzbSAj1Q z=O~_P9S2`^5 7RS}hFy>I$J@W~r}(V118#_;dq_x+@Po2RK|XC1a+;fyb)$l1#-2I#R3vSk*>M !EM z%D}izml~yYxTVNHhd#-ce1bU$nCE~aeI{jP?elQHfLUq#A?1+Y<}ti )7$v7B?3ok$tRWRCqPi~U-qXJUM@>w z4`y_(jz9NCmnc5`-3QgyJZXx!XM1r52&N$G%t$6qKj=5z6mt9pWtsj?zGkc51dGuk z7X)y~&1prMfWB)D|5$y?t_bDpmbJ~cNa$On`x>GGYd8CM+9?0#+pPnfqLYuf!nc|1 z5+PLKCKV%Dqo@#f4Sm5Z)_=OGXlt10hGK_?bONp(sq3@1Yw@va7CC6-3a4QaW6R&V zt|hRnq^KNDu~%2itN>&Ey<$xd1SL+3Cw1j@G_y=8 E2%B51MUZMVQ@hS>I9XyvV&Dm`1OZu=R&n=I zbwia 1vdn}v%T=I9o`?~E{sc0x>H+*x!3>2 zi#-#Nb;AnOavs%KqYD0CgV}%R#AowRG`Pc>QSjvrE|2pT(0v^WcD6N7^0xJ*sh&!; z@Osm#4Etr+sOjn@t6YS g&ADrPjQH8fz~5dq%0WAT-o0w!AG~RP%rdqRcVG3z&=-!P#NioV%y~9_^NLfJ`f{ zKjpW6+8TDm0}|sq33Q$i{F*@;)`8PpGK5{oGzE_A7KzeyOT|Nf#VQmPV}@jGYSOrZ zY4K)S71$Ag`%iFcCUuiK%a=iwp$h^yB|^(yV5`3v7?U_CEYRnBLB=}hq}xsI(s~zC zZEzfr=W6FwyGsNP=w5|&0LKX%(gAf@NSUfOCxmsV7oc}|ck)d;%|; It!OZ9bDLn }N$PWcVri1#1rw!8X{L z1U7-Nmk+@LU2(`z8&B@{bJAf23PolyxmpE=8#`zCMFiCf<3$6Wr;wyp%8f+Ka1ITX zXG?E`LX~`mF?=biz4TYZm0Lra^vAT9VavbI)h*^?b(hzG`=jx}w}DdNe=jxsv!DjU zC%9V)sJ(*!p{F-iz0r3Jd=BhA?)Mc4UR`P_fNYp_Ti&*VzQ2}p*6tO(>5a@Iygfb` zhqDnS0$S!-+b%$_OZ3+78 kN${Txu+#;oF)@>J6N74}{~jk+RC>K}SJ2m_Pg bQR8cV(3PXU+H0Ga=94`brP=DLcc1^ zl0iewdF3Xt9szfb3(KTYyTJlO21KcNl_{x^+6zN9hN=SJhyvrG>9UBzu&=mR0K*(T zRU$l?9og%sETh^$*eLE{#Z$n_Q~}W6Ah88h4_|8ErvKm$DBmH#T6l`(0C>jEOjkfF zwkr`bUMV)B5y+~d$$8K$R{Xw64*f;89+12&4xw$YuuO?PV{ctA&jnanosd)~fo=nN z-~}X#*TGK>Z$sCHlf}UBEU7_)V8BHr#U?zk?$dx{%Nc&EI+0fej(qy`GT1Ig z3Fp`1U}#BJhW#YKuDbPeFh2nm5gbb2qz-mFkAPFO*|b1dQr$=9aCnkHu$}R<3s&M9 z+g1l9vfO<98*1-hcR}#MhEkn_68RD+?w8%V@sj=X4#VZv#?^oH4aa@kv!Ba%ihcTM zKcKPU+N}R+hw!rC`A^M}Q7vqAN&n;|XoRH9$W}%!kdgGu09PK3K^biH5xH#)FlB?N ztT_N3JYIcID)~itU|NB7JGE1k8a;2gsV~frYAIz9uM+hqC@U-JgYw%`Jc+?3Gt8T~ z?VS4qOw_l44o;A}^=HRCfwN=p9k>5{%A BGOr zuGI;n0UELwfSvt9b3ZH;m7Mn#_l6FD0MHT 93S~O!vcN sjB4LQMN|b%ls!L*AMM zI~pmPxU ~rR69Hw zy~fP|^6;N@(>2jr$d$}G4CDX>c-8K98Ja6unnCauX|6A?2(N$mlDTY6>fYd$6%KqU z;;Hs@$v&7QWdMOpX@l_)ImlVFpQf$cP%{VAmI4f)4i z6=dM>YdkpUJxZ8vOhdJyLY)rQN7G1(osv5e6mqWeR0+}N5&V`GUv`4Aw?6#7XxC0s ztRYEyS$WJ&{=FwJ>ItuE4JP){9P3V447t8N3K(d+B3fxlA UXUv` z84b0^yKIEvL0r6}c5hnXgqV{iseMOX1TqXqNRmRF?C_n!E@1Ao1-PrgV3OxjEkN)4 zlQ6dyYbi4ybQA9e`woyTG#ex?!Z2S1qJ9OgKCp6i$$85QfP^IgOjt4q3}!Ka{FP`2 zIJdbwF&+d c^zaZT{<9{R# z3*by5;5MyE*U#)SO|*CJC @FgCW6c4|k@h6r mLwT5L_+Y+kAWIuQkEav!_=Shun`)$5&|MQ{J&|f!DB_ z!HeZQqO9;IdzhUax;YxdC=Ale=V-UYIxJ?jtE}N{W$A7C&I$*$1;fFbY&?Rv`|p2& zEW`ALds Ou$}ltI&CotP~ihUf}IO*k3)i38FO8=#M<6y!iSBg8@kjJF`&zQ*r_ z!PEK0Gm%{jijO)&9;UBLjyoVX_RThe2Lw>E@&qOa-_>%QmPLTmTGYkYbmeB80^uPt z^rU3|X} NKv-H0{mT^V^mdIriw9X=?nL@4!vK~fd1}hp$t+gJ6M{+H|w$IP#B}HI^ T3>7(&l=qJd*n0kyyLcx2WfPsL@Mu3RplU&_|X>>6)0`p*206gAU;knLj z6h_D*`J)lLDc-tX^%+L~nV|7qmamXwqfhivLhJJ@7PEY_=_}ydhh>WvX}#xVSiI@x zg*Bq2Ml!|~034-1tzPW~?2NZDDsp)_xFAkSDDXxRcJx2|d-$qlKmHcE`saupjwJ&k z65{(z0?z!*29tZhw#p=1y0f81%(4OW{YW}i;)I1jLu05yNT9S}StfFKG;q{70P5PJ zpCbWgG!H)KR@?!Z27ph3-_RPcT5~qa!wU-|%XE1w%0UT>G!AS%SHggbQfA)kG$J)I zR26C=T)O@yHp vi*IPUQCmpmNBx>X44#?_r{Y{QNusWK2 zM~~MP5JHpl91&u0$AS^U+{z`7Iy1%D;p2I@iE#Mb5zzp;xK3hScn>~&w8D#UJI@^j zPs;Sw767<~n36^$!H_3_2HmBkFapS;0i0U90=(8izMR-u%e*@kyM67`Fy3^hKb)rM z^`(yqdS6E4hwLx?Iu`+WF=_4dU+S)8q|LR~y|mV)$ wN>c!_X*FE~ z6fKhFuDn!fQl>fH{3KgHHgzc({p-M`mi9iUFZO58^6?Ig<{kD)SD+%vtBDS8lEwkf z@{C>KbopH6b19z@5WCb%h}XiFzBET8K;#Pua7Xa7z`H)jn67qqNWk53ECZZ`0|#Ih zj1m+Ow??A_<1t-h`a)TO^kqB~UpnlwF(?+jg~G47L_D?7RE~9tHjm3Lk4esCm2*gP z5J}V3LhD_t3E&P!J~$CpnO_gIFme{SHUU&nGB#Cb#g2$}CfM|W6ADaIpgtP877R|` zV)mvvG)P?ZjgB%j5=;Kc+E6NHnbZk>rqdi`7It)+M>OHq6!2jvXMk;-*%bE%mqeWe z{SfdRFq>CcbV9C*p?*Rb21?7be$__spJ8g80oC=EyjKP+M_(aOy6|A)XqQ|0J_rm= z8HbdUy0koJkZcrQKPG_B9#ZY@aX^EpQo+^oDbAY(nb}O_4I}~a#+wA2>Fkx0Bf!Wb z0sQ~ik|lgJgg{!eT<+mnP(If%Oca9}2%6KbN0&PSRKTP#oMA%lb^r&UyPQEOW`KVu zO&HNYj&O3hizF4S2DJE1YVe&i@V#)g8#pDoyS)+d1D-%o2eAEH4;=sO7eBu9XZ)P~ z20}JNLm;y@*wu+?s2H)$HtDc@iucy7rxiK9+qAaqLfdv8?RS~g!EtdWleTmkG`?gM zF!V0fcnBQf9sx8PAq`+l&780S>@y5ss<|`%BL@KdZEF~y8sQtnKzj6PePKj?z$t5x zLwf!%^8EiTF^tWPP_`@Lj9>E<@5+%MPj;r=buCS9DUWlSZjpw5I-$-nORM2f!lTRq zdQ?!_(E$uGzyv3O=5$CPJ2;pDPJ!thMx)u%T}%fV{cl}|e 9<5%lSW zN@bZl$jmJewsxapHMFH|BiyZcfPpqt`6>Kl!w?2E$X)VRWatkz5>?B-;g)CR8(BAR z3oh#30B)e;rAR1vSzMiGKpyIZJS@Q#72pDjB17nh@Xh3NVyrg}@(R@11E>d-K k$Hpm^eTqBKQp|0yvU|^SGHl#2E=d<30 zft%qk+{zVz!v>|5Bi *K?ktcG%t!Uj@Fc6MJ z&`hm$x|~K3TnczMP%Z|5R}B<#EqoI^9sga$XZbf8SswqGmIQ)V8UlwE{}&oIPSKwT z;CP2o 7.Adding mouse events to personnel avatars during collaborative editing; > > 8.Instantiation and setData methods support passing in empty data; +> +> 9.Add an instantiation option for adding custom content when exporting images; Demo: > 1.Support configuration of rainbow lines; > > 2.Add source code editing mode; +> +> 3.Exporting PNG, PDF, and SVG supports setting custom text at the bottom; Client: diff --git a/web/src/pages/Doc/en/changelog/index.vue b/web/src/pages/Doc/en/changelog/index.vue index 6df08bb8..e532623d 100644 --- a/web/src/pages/Doc/en/changelog/index.vue +++ b/web/src/pages/Doc/en/changelog/index.vue @@ -16,11 +16,13 @@ 6.Add the getAncestorNodes method to the node instance to obtain the list of ancestor nodes;
7.Adding mouse events to personnel avatars during collaborative editing;
8.Instantiation and setData methods support passing in empty data;
+9.Add an instantiation option for adding custom content when exporting images;
Demo:
1.Support configuration of rainbow lines;
2.Add source code editing mode;
+3.Exporting PNG, PDF, and SVG supports setting custom text at the bottom;
Client:
diff --git a/web/src/pages/Doc/en/constructor/index.md b/web/src/pages/Doc/en/constructor/index.md index 3026151a..c786f714 100644 --- a/web/src/pages/Doc/en/constructor/index.md +++ b/web/src/pages/Doc/en/constructor/index.md @@ -114,8 +114,10 @@ const mindMap = new MindMap({ | isOnlySearchCurrentRenderNodes(v0.9.8+) | Boolean | false | Is it necessary to only search for the current rendered node, and nodes that have been collapsed will not be searched for | | | onlyOneEnableActiveNodeOnCooperate(v0.9.8+) | Boolean | false | During collaborative editing, the same node cannot be selected by multiple people at the same time | | | beforeCooperateUpdate(v0.9.8+) | Function、null | null | During collaborative editing, node operations are about to be updated to the lifecycle functions of other clients. The function takes an object as a parameter:{ type: 【createOrUpdate(Create or update nodes)、delete(Delete node)】, list: 【Array type, 1.When type=createOrUpdate, it represents the node data that has been created or updated, which will be synchronized to other clients, so you can modify the data; 2.When type=delete, represents the deleted node data】 } | | -| beforeShortcutRun(v0.9.9+) | Function、null | null | The lifecycle function before the shortcut operation is about to be executed, returning true can prevent the operation from executing. The function takes two parameters: key(Shortcut key)、activeNodeList(List of currently activated nodes) | -| rainbowLinesConfig(v0.9.9+) | Object | { open: false, colorsList: [] } | Rainbow line configuration requires registering the RainbowLines plugin first. Object type, Structure: { open: false【Is turn on rainbow lines】, colorsList: []【Customize the color list for rainbow lines. If not set, the default color list will be used】 } | +| beforeShortcutRun(v0.9.9+) | Function、null | null | The lifecycle function before the shortcut operation is about to be executed, returning true can prevent the operation from executing. The function takes two parameters: key(Shortcut key)、activeNodeList(List of currently activated nodes) | | +| rainbowLinesConfig(v0.9.9+) | Object | { open: false, colorsList: [] } | Rainbow line configuration requires registering the RainbowLines plugin first. Object type, Structure: { open: false【Is turn on rainbow lines】, colorsList: []【Customize the color list for rainbow lines. If not set, the default color list will be used】 } | | +| addContentToHeader(v0.9.9+) | Function、null | null | Add custom content to the header when exporting PNG, SVG, and PDF. Can pass a function that can return null to indicate no content is added, or it can return an object, For a detailed introduction, please refer to section 【How to add custom content when exporting】 below | | +| addContentToFooter(v0.9.9+) | Function、null | null | The basic definition is the same as addContentToHeader, adding custom content at the end | | ### Data structure @@ -177,6 +179,41 @@ If you want to add custom fields, you can add them to the same level as 'data' a | type | String | | Values for icon grouping | | list | Array | | A list of icons under grouping, with each item in the array being an object, `{ name: '', icon: '' }`,`name`represents the name of the icon, `icon`represents the icon, Can be an `svg` icon, such as ``, also can be a image `url`, or `base64` icon, such as `data:image/png;base64,...` | +### How to add custom content when exporting + +The two instantiation options `addContentToHeader` and `addContentToFooter` can be used to add custom content at the beginning and end when exporting `png`、`svg`、`pdf`, The default value is `null`, which means no configuration. A function can be passed and can return `null`, which means no content will be added. If you want to add content, you need to return the following structure: + +``` +{ + el,// Custom DOM node to be added, styles can be inline + cssText,// Optional, if the style does not want to be inlined, you can pass this value as a CSS string + height: 50// The height of the returned DOM node must be passed +} +``` + +A simple example: + +```js +new MindMap({ + addContentToFooter: () => { + const el = document.createElement('div') + el.className = 'footer' + el.innerHTML = 'From: simple-mind-map' + const cssText = ` + .footer { + width: 100%; + height: 30px; + } + ` + return { + el, + cssText, + height: 30 + } + } +}) +``` + ## Static methods ### defineTheme(name, config) @@ -334,7 +371,7 @@ Clear `lineDraw`、`associativeLineDraw`、`nodeDraw`、`otherDraw` containers. Destroy mind maps. It will remove registered plugins, remove listening events, and delete all nodes on the canvas. -### getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false }) +### getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false, addContentToHeader, addContentToFooter }) > v0.3.0+ @@ -344,6 +381,10 @@ Destroy mind maps. It will remove registered plugins, remove listening events, a `ignoreWatermark`:v0.8.0+, Do not draw watermarks. If you do not need to draw watermarks, you can pass 'true' because drawing watermarks is very slow +`addContentToHeader`:v0.9.9+, Function, You can return the custom content to be added to the header, as detailed in the configuration in 【Instantiation options】 + +`addContentToFooter`:v0.9.9+, Function, You can return the custom content to be added to the tail, as detailed in the configuration in 【Instantiation options】 + Get the `svg` data and return an object. The detailed structure is as follows: ```js diff --git a/web/src/pages/Doc/en/constructor/index.vue b/web/src/pages/Doc/en/constructor/index.vue index 7c79c91a..d19ab47e 100644 --- a/web/src/pages/Doc/en/constructor/index.vue +++ b/web/src/pages/Doc/en/constructor/index.vue @@ -672,6 +672,20 @@Rainbow line configuration requires registering the RainbowLines plugin first. Object type, Structure: { open: false【Is turn on rainbow lines】, colorsList: []【Customize the color list for rainbow lines. If not set, the default color list will be used】 } + + +addContentToHeader(v0.9.9+) +Function、null +null +Add custom content to the header when exporting PNG, SVG, and PDF. Can pass a function that can return null to indicate no content is added, or it can return an object, For a detailed introduction, please refer to section 【How to add custom content when exporting】 below ++ + addContentToFooter(v0.9.9+) +Function、null +null +The basic definition is the same as addContentToHeader, adding custom content at the end ++ Data structure
@@ -790,6 +804,34 @@ +How to add custom content when exporting
+The two instantiation options
+addContentToHeaderandaddContentToFootercan be used to add custom content at the beginning and end when exportingpng、svg、null, which means no configuration. A function can be passed and can returnnull, which means no content will be added. If you want to add content, you need to return the following structure:+{ + el,// Custom DOM node to be added, styles can be inline + cssText,// Optional, if the style does not want to be inlined, you can pass this value as a CSS string + height: 50// The height of the returned DOM node must be passed +} +A simple example:
+new MindMap({ + addContentToFooter: () => { + const el = document.createElement('div') + el.className = 'footer' + el.innerHTML = 'From: simple-mind-map' + const cssText = ` + .footer { + width: 100%; + height: 30px; + } + ` + return { + el, + cssText, + height: 30 + } + } +}) +Static methods
defineTheme(name, config)
@@ -901,13 +943,15 @@ mindMap.setTheme('Theme name')v0.6.0+
Destroy mind maps. It will remove registered plugins, remove listening events, and delete all nodes on the canvas.
-getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false })
+getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false, addContentToHeader, addContentToFooter })
v0.3.0+
paddingX: Padding x
paddingY: Padding y+
ignoreWatermark:v0.8.0+, Do not draw watermarks. If you do not need to draw watermarks, you can pass 'true' because drawing watermarks is very slow+
addContentToHeader:v0.9.9+, Function, You can return the custom content to be added to the header, as detailed in the configuration in 【Instantiation options】
addContentToFooter:v0.9.9+, Function, You can return the custom content to be added to the tail, as detailed in the configuration in 【Instantiation options】Get the
svgdata and return an object. The detailed structure is as follows:{ svg, // Element, the overall svg element of the mind map graphics, including: svg (canvas container), g (actual mind map group) diff --git a/web/src/pages/Doc/en/introduction/index.md b/web/src/pages/Doc/en/introduction/index.md index 6d8af046..d7f1fab8 100644 --- a/web/src/pages/Doc/en/introduction/index.md +++ b/web/src/pages/Doc/en/introduction/index.md @@ -343,4 +343,12 @@ Open source is not easy. If this project is helpful to you, you can invite the a![]()
逆水行舟
++++
LiuJL
++\ No newline at end of file diff --git a/web/src/pages/Doc/en/introduction/index.vue b/web/src/pages/Doc/en/introduction/index.vue index 9a7be0c3..cc100182 100644 --- a/web/src/pages/Doc/en/introduction/index.vue +++ b/web/src/pages/Doc/en/introduction/index.vue @@ -8,17 +8,17 @@+
L
+Features
- - - - - - - -
- - - - + + + + + + + +
json、png、svg、markdown、xmind, support import fromjson、xmind、markdown- + + +
json、png、svg、markdown、xmind, support import fromjson、xmind、markdownFeatures that will not be implemented:
@@ -34,16 +34,16 @@ frameworks such as Vue and React, or without a framework.This is an online mind map built using the
simple-mind-maplibrary and based onVue2.xandElementUI. Features include:-
@@ -297,6 +297,14 @@ full screen, support mini map- +
- images, icons, hyperlinks, notes, tags, and summaries
-- +
- outline, theme selection, and structure selection
-- +
- storage by default, but it also supports creating, opening, and editing local files on the computer directly
-- +
- and organizing layout
-- +
- between edit and read-only modes, zooming in and out, and switching to full screen, support mini map
![]()
逆水行舟
++++
LiuJL
++diff --git a/web/src/pages/Doc/zh/changelog/index.md b/web/src/pages/Doc/zh/changelog/index.md index 560fd568..a4d8f3c8 100644 --- a/web/src/pages/Doc/zh/changelog/index.md +++ b/web/src/pages/Doc/zh/changelog/index.md @@ -23,12 +23,16 @@ > 7.协同编辑时的人员头像增加鼠标事件; > > 8.实例化及setData方法支持传入空的data; +> +> 9.新增导出图片时添加自定义内容的实例化选项; Demo: > 1.支持配置彩虹线条; > > 2.新增源码编辑模式; +> +> 3.导出png、pdf、svg支持设置底部自定义文字; 客户端: diff --git a/web/src/pages/Doc/zh/changelog/index.vue b/web/src/pages/Doc/zh/changelog/index.vue index b99f319e..8b00af65 100644 --- a/web/src/pages/Doc/zh/changelog/index.vue +++ b/web/src/pages/Doc/zh/changelog/index.vue @@ -16,11 +16,13 @@+
L
+6.节点实例新增getAncestorNodes方法用于获取祖先节点列表;
7.协同编辑时的人员头像增加鼠标事件;
8.实例化及setData方法支持传入空的data;
+9.新增导出图片时添加自定义内容的实例化选项;
Demo:
1.支持配置彩虹线条;
2.新增源码编辑模式;
+3.导出png、pdf、svg支持设置底部自定义文字;
客户端:
diff --git a/web/src/pages/Doc/zh/constructor/index.md b/web/src/pages/Doc/zh/constructor/index.md index d493f0f8..cb60b97c 100644 --- a/web/src/pages/Doc/zh/constructor/index.md +++ b/web/src/pages/Doc/zh/constructor/index.md @@ -115,6 +115,8 @@ const mindMap = new MindMap({ | beforeCooperateUpdate(v0.9.8+) | Function、null | null | 协同编辑时,节点操作即将更新到其他客户端前的生命周期函数。函数接收一个对象作为参数:{ type: 【createOrUpdate(创建节点或更新节点)、delete(删除节点)】, list: 【数组类型,1.当type=createOrUpdate时,代表被创建或被更新的节点数据,即将同步到其他客户端,所以你可以修改该数据;2.当type=delete时,代表被删除的节点数据】 } | | beforeShortcutRun(v0.9.9+) | Function、null | null | 快捷键操作即将执行前的生命周期函数,返回true可以阻止操作执行。函数接收两个参数:key(快捷键)、activeNodeList(当前激活的节点列表) | | rainbowLinesConfig(v0.9.9+) | Object | { open: false, colorsList: [] } | 彩虹线条配置,需要先注册RainbowLines插件。对象类型,结构:{ open: false【是否开启彩虹线条】, colorsList: []【自定义彩虹线条的颜色列表,如果不设置,会使用默认颜色列表】 } | +| addContentToHeader(v0.9.9+) | Function、null | null | 导出png、svg、pdf时在头部添加自定义内容。可传递一个函数,这个函数可以返回null代表不添加内容,也可以返回一个对象,详细介绍请参考下方【导出时如何添加自定义内容】 | +| addContentToFooter(v0.9.9+) | Function、null | null | 基本释义同addContentToHeader,在尾部添加自定义内容 | ### 数据结构 @@ -177,6 +179,41 @@ const mindMap = new MindMap({ | type | String | | 图标分组的值 | | list | Array | | 分组下的图标列表,数组的每一项为一个对象,`{ name: '', icon: '' }`,`name`代表图标的名称,`icon`代表图标,可以是`svg`图标,比如``,也可以是图片`url`,或者是`base64`图标,比如`data:image/png;base64,...` | +### 导出时如何添加自定义内容 + +`addContentToHeader`和`addContentToFooter`两个实例化选项可以用于在导出`png`、`svg`、`pdf`时在头部和尾部添加自定义的内容,默认为`null`,代表不配置,可以传递一个函数,函数可以返回`null`,代表不添加内容,如果要添加内容那么需要返回如下的结构: + +``` +{ + el,// 要追加的自定义DOM节点,样式可内联 + cssText,// 可选,如果样式不想内联,可以传递该值,一个css字符串 + height: 50// 返回的DOM节点的高度,必须传递 +} +``` + +一个简单的示例: + +```js +new MindMap({ + addContentToFooter: () => { + const el = document.createElement('div') + el.className = 'footer' + el.innerHTML = '来自:simple-mind-map' + const cssText = ` + .footer { + width: 100%; + height: 30px; + } + ` + return { + el, + cssText, + height: 30 + } + } +}) +``` + ## 静态方法 ### defineTheme(name, config) @@ -334,7 +371,7 @@ mindMap.setTheme('主题名称') 销毁思维导图。会移除注册的插件、移除监听的事件、删除画布的所有节点。 -### getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false }) +### getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false, addContentToHeader, addContentToFooter }) > v0.3.0+ @@ -344,6 +381,10 @@ mindMap.setTheme('主题名称') `ignoreWatermark`:v0.8.0+,不要绘制水印,如果不需要绘制水印的场景可以传`true`,因为绘制水印非常慢 +`addContentToHeader`:v0.9.9+,Function,可以返回要追加到头部的自定义内容,详细介绍见【实例化选项】中的该配置 + +`addContentToFooter`:v0.9.9+,Function,可以返回要追加到尾部的自定义内容,详细介绍见【实例化选项】中的该配置 + 获取`svg`数据,返回一个对象,详细结构如下: ```js diff --git a/web/src/pages/Doc/zh/constructor/index.vue b/web/src/pages/Doc/zh/constructor/index.vue index 3ad712e4..57a82ce7 100644 --- a/web/src/pages/Doc/zh/constructor/index.vue +++ b/web/src/pages/Doc/zh/constructor/index.vue @@ -573,6 +573,18 @@{ open: false, colorsList: [] } 彩虹线条配置,需要先注册RainbowLines插件。对象类型,结构:{ open: false【是否开启彩虹线条】, colorsList: []【自定义彩虹线条的颜色列表,如果不设置,会使用默认颜色列表】 } ++ +addContentToHeader(v0.9.9+) +Function、null +null +导出png、svg、pdf时在头部添加自定义内容。可传递一个函数,这个函数可以返回null代表不添加内容,也可以返回一个对象,详细介绍请参考下方【导出时如何添加自定义内容】 ++ addContentToFooter(v0.9.9+) +Function、null +null +基本释义同addContentToHeader,在尾部添加自定义内容 +数据结构
@@ -691,6 +703,34 @@ +导出时如何添加自定义内容
++
addContentToHeader和addContentToFooter两个实例化选项可以用于在导出png、svg、null,代表不配置,可以传递一个函数,函数可以返回null,代表不添加内容,如果要添加内容那么需要返回如下的结构:+{ + el,// 要追加的自定义DOM节点,样式可内联 + cssText,// 可选,如果样式不想内联,可以传递该值,一个css字符串 + height: 50// 返回的DOM节点的高度,必须传递 +} +一个简单的示例:
+new MindMap({ + addContentToFooter: () => { + const el = document.createElement('div') + el.className = 'footer' + el.innerHTML = '来自:simple-mind-map' + const cssText = ` + .footer { + width: 100%; + height: 30px; + } + ` + return { + el, + cssText, + height: 30 + } + } +}) +静态方法
defineTheme(name, config)
@@ -802,13 +842,15 @@ mindMap.setTheme('主题名称')v0.6.0+
销毁思维导图。会移除注册的插件、移除监听的事件、删除画布的所有节点。
-getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false })
+getSvgData({ paddingX = 0, paddingY = 0, ignoreWatermark = false, addContentToHeader, addContentToFooter })
v0.3.0+
paddingX:水平内边距
paddingY:垂直内边距+
ignoreWatermark:v0.8.0+,不要绘制水印,如果不需要绘制水印的场景可以传true,因为绘制水印非常慢+
addContentToHeader:v0.9.9+,Function,可以返回要追加到头部的自定义内容,详细介绍见【实例化选项】中的该配置
addContentToFooter:v0.9.9+,Function,可以返回要追加到尾部的自定义内容,详细介绍见【实例化选项】中的该配置获取
svg数据,返回一个对象,详细结构如下:{ svg, // Element,思维导图图形的整体svg元素,包括:svg(画布容器)、g(实际的思维导图组) diff --git a/web/src/pages/Doc/zh/introduction/index.md b/web/src/pages/Doc/zh/introduction/index.md index f08408a8..8c7ba2f8 100644 --- a/web/src/pages/Doc/zh/introduction/index.md +++ b/web/src/pages/Doc/zh/introduction/index.md @@ -336,4 +336,12 @@![]()
逆水行舟
++++
LiuJL
++\ No newline at end of file diff --git a/web/src/pages/Doc/zh/introduction/index.vue b/web/src/pages/Doc/zh/introduction/index.vue index 28d20c77..f1258cf1 100644 --- a/web/src/pages/Doc/zh/introduction/index.vue +++ b/web/src/pages/Doc/zh/introduction/index.vue @@ -8,17 +8,17 @@+
L
+特性
- - - - - - - -
- - - - + + + + + + + +
json、png、svg、markdown、xmind,支持从json、xmind、markdown导入- + + +
json、png、svg、markdown、xmind,支持从json、xmind、markdown导入不会实现的特性:
@@ -32,11 +32,11 @@2.
web使用
simple-mind-map库,基于vue2.x、ElementUI搭建的在线思维导图。特性:- - - - - + + + + +
提供文档页面服务。
3.
@@ -291,6 +291,14 @@dist![]()
逆水行舟
++++
LiuJL
+++
L
+