From eb72e0eed32112cc853104f86f0d9b48d39c6b32 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: Fri, 19 Jul 2024 14:11:23 +0800 Subject: [PATCH] Doc: update --- README.md | 8 +++ web/src/assets/avatar/夏虫不语冰.jpg | Bin 0 -> 20919 bytes web/src/assets/avatar/晴空.jpg | Bin 0 -> 35250 bytes web/src/pages/Doc/en/changelog/index.md | 28 +++++++-- web/src/pages/Doc/en/changelog/index.vue | 18 ++++-- web/src/pages/Doc/en/constructor/index.md | 16 ++++- web/src/pages/Doc/en/constructor/index.vue | 18 +++--- web/src/pages/Doc/en/formula/index.md | 4 +- web/src/pages/Doc/en/formula/index.vue | 5 +- web/src/pages/Doc/en/introduction/index.md | 8 +++ web/src/pages/Doc/en/introduction/index.vue | 8 +++ web/src/pages/Doc/zh/changelog/index.md | 28 +++++++-- web/src/pages/Doc/zh/changelog/index.vue | 18 ++++-- web/src/pages/Doc/zh/constructor/index.md | 16 ++++- web/src/pages/Doc/zh/constructor/index.vue | 62 ++++++++++++++++++-- web/src/pages/Doc/zh/formula/index.md | 2 + web/src/pages/Doc/zh/formula/index.vue | 3 + web/src/pages/Doc/zh/introduction/index.md | 8 +++ web/src/pages/Doc/zh/introduction/index.vue | 8 +++ 19 files changed, 225 insertions(+), 33 deletions(-) create mode 100644 web/src/assets/avatar/夏虫不语冰.jpg create mode 100644 web/src/assets/avatar/晴空.jpg diff --git a/README.md b/README.md index d68edda7..3304bfbf 100644 --- a/README.md +++ b/README.md @@ -423,4 +423,12 @@ const mindMap = new MindMap({ Tobin + + + 夏虫不语冰 + + + + 晴空 +

diff --git a/web/src/assets/avatar/夏虫不语冰.jpg b/web/src/assets/avatar/夏虫不语冰.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3d22d0167014a35117bb69cc280e4259888781f GIT binary patch literal 20919 zcmbTe2Uru?_cuPNK1s;EC9spF#wPt z^Z#>9hhTn|fdW828-V{T!vsGy8(6dE?w_AfA@rXT(3?Woe~&dqXT|{!Dr@JiohhuH ziPmmT&VYx1a41|;Be=~TFP=R#Qd<@LaSXTwAK~hhz5UxiYo--2)`s4M-h@GH0jMzq zW(=9R11toejDXB;v$ui&AW#?_fz;C0LFs}8nv4J_1O|h`VF-lgF_28~Isi9D%&~Ft zL(ZkeXxS#AU9*eNYTNl=Y%`&E|GCI5Hu-=K%5eeC_(J+jr#c9i4aYDOKv8-rpbp(f54l#miU2uiuP}e)u>sIrZ1{-=98f z+64h%Kbi&p|IxDltzE`oyP$A546dbV7X-Rn({N)r!o~$T$B(8JlQh@XHCr3)Uwrmr zn~t3u{ZEtFoEg$~B-e#VHV!3pt z572`_Kw*Lz1FL`=M0DilBSbV65)vFjK%n_lXg3iJ(1>VlES4pV2@W9wiyhH?Z6^2? zsN!M%wUdzG1+YAL;{hH<2-WN*CrY>|OjUL+x{+%Av$z>p+iZ;(vFJyse@g%SM2P

PKw%u{IPOZU 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 literal 0 HcmV?d00001 diff --git a/web/src/assets/avatar/晴空.jpg b/web/src/assets/avatar/晴空.jpg new file mode 100644 index 0000000000000000000000000000000000000000..465c2c9770e33f598d19bcef8db265b4d241779b GIT binary patch literal 35250 zcmd432Ut_t)&P3w%7`dsR1_EmB!m$QioyT^5hFnjfdGmW9i^!=sDMfh$|!;(NQsD! zgeo1BVxh%Om5zu7R6rnr^qTh8NdTQYGxxvu|KIn$hbB2?pMCZ!d$qmR=Dy~BK$Z}8 zn(Rab1Q28w{6n}Ok=@2;U7ZkQ&mIJeAjkqlAjlOFh9hW#$iW9egyIAcA@~(Quf++@ z-4!|;C-n6gZODCuEL|XU7XAsWK?Iiy2rU)hK0_4YNf80wAKD206A%;<77-O&uu%Lv zXi%^O5fl&-5)>8^5fO%03;4l(M0lx))as3fqSB;8Vrx#yY&sVnzd&jG-N&-#^+U>< zKc70kQ2hI4%U8&$tX0LRVK;Bl+PY0!$7qM~PW&ztf(6;q%6i{^o5M#Oot#}efIoCS$Rce zLt|6(tCrWTZ$5tN=DZnKtEG#4}hQcKv zcm@T0sj$fEjiOS9B(Xy$rPpjaw?Jllc>LYR3zam@hh%>~RWJU%^5%~!!zgGx$o@0H z&i}6g?lMo>O=TANYk0-?m!bAKIttu6RB!v7Y zAG`B;0?>Qi*N5ji`EP#h&PU|I3)Kx^Wat6o*~1wCo}uPh`qBqF4G{v5r7Rl^9lBt%xli6kT?1Sq9xk&F?%iM**X zBD*Zwyxy?RxT`)Fdo5(~DIH7#peZS}Z-aP_6($SGF}6*}6V$;HFoGC{T@=Ycv@#U! zf;V>bASpCCAuujOwN2*D!=06N-AeEVcmR`z5!8uvlra-FH*bnE6ZRl~^JNu)H#Q;F z2^h=7+BpfH~e&X z0oct-X#l$cpBFLOPv$4bf6mv19_Uj|fWAfOK{XtpGx7hk4{$e-ng0>sHnM-@lYjCm z5F(C&!aGj@J|EBF4-hJj)f>aB#u!MEJym1`Op`6xuu_-{Yb(@|bj5g7qojHxB#IohG3!F-M^pSRG!nhwt>%!d@~2VA{+!Vqf}EQ%w+zYow=e!?VEB9?ZZmru z9}$3$zem7dud8pE=K-GhoPUsa1LWzSFQD8vckwSR{_dTB>VJ-R=XyXNm~Sw5asI+z z-u0&onnv7LJb1^S4*eJK{@ob=FW3I055Mi`A8&ly=s!9Z;1F#z>By2{9CL;1xQ3E^oDGmKyG4&tUR)CXQfn9Ty>b^ zN-QDttKkvea3xAW-X!-5ZJ^#Tj!cy|u_zZH)f=x0fTzvLo(3z`PUFFr(J1dl-z7$wp>H@Tw|>rcRZEx98YYG2~Rf34N*hjaT$w=gFLu=Hb_K) zeV})p2dhH009Gdg&IFKBHN`nb_h?w&EX)SkHN zNWYa>ox6td@-ljO11ZwZN-c|tz==aUX8^V^7vPgbczWVo|5Lw}J@9(N{>KbJ%Sy}= zFPe%B046lsmXmG}lBl_n-!m2yi+M6E;5 zwdnA`(!UaQJj*YRecdgUu_p?8Ua++udL|7Zn0DT;7_jrd0P-AgFhl}&`;AA@R)gUDMuYB?-Gb$H7g$=2{ewD-g}VlW9{ka}@2O|DQ?6zcSN?R*R-j(DKmz`-G7 z7~?KOV*oBr5C+IMgh7&|ohbuOj6#Y!k`f&Oz5L+|7z2`!h$~}&KAZ~<<{dg3_)d&l zxV0YO4BWJ5jQ5D>`N7aD!%bw1i2w>1Tm~rpL)ZqaA5pHiJAdVTVBBR#6Lhlpz-dH) zIJjs8Bs3}cHO4;*i6VQL2~z61&UvF6K2x_3CAG)?qd(wVFeVD0u;6v{%`ljGv^g z1RDnBsgr}v`w3crtnDBJW^eNi0?QEaeRwX!{0n4dd1FFfhD6O8Jy?$<)Y8q6wFeoN z0W)&eex7x|xX6C=%`mnIR7#`n=Yk1RE(*9H7E7=@A0U<3iuynOX*`r*^{6TukMa3} z>&HFFMItLv*g!7fb5WrWSmk#>j+%$p%$)|d+m3{kk)Dyhv8ThEP}FLP*9r4H<+y+P zIh%O!AMb&O&Aa!lr~IEf11PP*EC1jB0B`VV3>ZR5{r{gI)HK`;iWHFiH>MI#lk=T& zo)6VCuic0m;Dix1!v0_XL8k#G4Q43s;2-=gHQhoRi~#z@i+P}qE~;$N56|KKw-5hK z$8!$ySB8)T6LL2gCG_1m=~ioMJ_h`&lsvRyAnzHT)2(_Hm6k%^e2f3Nt3cxHxKPLL zIO@&J50fe{g8E3j!AO^*mqkF+@_j%D=!02B{gJoi-6>i2`Ht z=En~p)Pq`qypTcYymyXXnKi2Tv4@*z$mc8NB?M=s&%e6h^Ec)i2!hn&IqRSXusZX% zs{zTVX28VN&4othpWt`|z zEoK%1yYmS=SvZeLo+ReUz7@GTd#HRO$X;Js58^N%A{t;dISCls*U+AJocN<%-&2zI z51jYzObHFb4N6+ww%BGcVi$Eh!{V_@Qmxw>-{E>;sl6Oq&jIEx1+lysYeyTV#53As zJL9b1PpH1jXznIwpJ{xe;6G%dIP)x_sNzGY$4DpPlWJi3nNWgSQ@8d}v(7cBe$IY+ z9W0@aEYuWBZe3g3rbH$hh^$0IL%hgL7Ha(f_GjZXpd|jnPID|arwhQY3v-kq?GFH2 z0P1DqL{SB3ChUU>1qg#KRgPraY$5b2Q~IQ<;ufUNVj0`g>ZZ&^tfj3csJEwGCoYFg z)~h>d>r;wyi)W~{=CRVTipATup5MVm_We$k^Ie_B0MyRE4T=k-&-50Yr=d|tYAEJ0a^rQA$q}BL#c}xEW#v_)X zo(YySs6ak!FiCj<2XiZ@BOaEOn9XXyD>ecODBuuO%muqg2F^fBqUzFE(iqr7#taPs z?n9?qt&6_~s=bfP_!t=i*XhNB$APNb%@9aV1l!G6#>W6vpeSI#K-NB&!^UN)grVOg zTmUSlj8q64!! z*+F`oA0mDk5V)Wlw5L_cGPG}3>d&oa@OHnV^rT|^>Dfz%^$WKE#xA&#V5zy*5OW%N2^?UMtN%Ya$o*= zZ4Gmsu8D5z=GB@OPj8UDJ#TmgGpF_09@Iq?|Jyl>Q|LGsKR@wRS5c?RN~LMr`sF>G zBe*x$xX4KDV2etkAs1OM+c$Z_FS~W1lZ#vnws%M|>~srbhUJ$0p+a$QrD)jPyfwZ>KFgzn46?lg64(%lD4(~4hd zDrO_f#Bo|tj{Pm87iq++7r_XLxVLS42n4Zb1&jp9vcxy2r^lN!d{Pti;^RnQN?Kh6 z+{~Mv7G555OGs8&iSv1yQXzLiCHNQ-om7tY-oqWGY$86Cck((#IaMUTMJe>9dPE8F z1S6i+b zLIL|Cj&7&yxz3yOZb(08_lN8O<$Ow;UuBxz^D)I^K~!WTrn2pdMS40bj(_%BQdnVcx!d*!pUs1G5`yMH z;G!q{wuf{~MAE+0?!2{NyMIHB3M`$()XCEP4!ik%_x7FYOl4g{^dn?jt3?xAmrz8!^BL|moO#e{0$2#B3%Tzu7YU0>W$a+T<$MXaecIu< z1$l$X=QSo4)}emOQPpD|l{oF4)kGO+NiUjq{cKHr|GGlHb8>0bX!&^0p|JJeA6Fg3 za&8`5HR?b51;0PM#W>jz22;rSShby|`;wS@fQy{Y>Q4w6l}wsK&5dUlJ=nF;@+aF5 zJ>Ya$yBWLgO<7%K9;E%)%im$hyydX&(n7CODyJsRrlq|+oA<^)hT$G?Bp2m}p7ni* zeJ|U-dvvilLvnSS-ne;DaQ`pelubKQ>3Nx4q&uXAa(~;=LyI?syeVu<44e#4sn{QD z=h;Zp?rcgaH#8=8HQ!vhLWB0jH!7XH<+kN6RELu3jt^Qn=|z|yLUHe#)0C#wgZiBP zbXRxF6p46vXN6TvTGJUQSXw6G(ju0xcjN3{cU64ouB|L;38~(;d2yk~ zG&+VJEK&FrMZ~P|Zdk>r5_7!3tS0uzdK(LE#;RY;nvRSN#1cw}D}<&`S!pG@o;)3_ zFf*=3+iD*3YDx#U9?wOx!|aURV^@Wh=P_}t(d^LTO4^Ds8Gl&kOUTs`yz3b@zL3NI z#d>R|E=}1p3-^0>4og#P%C#xHq2=~js$fzo;|X4g9xX4hH|G1=O<6A9t4{2h2*!O_ zXcgC(y)`Mq8n5^++lE?`E`#g-s98^H3bs|vMa}S&kyBPb4G>I&6^}?!MBEHNzEs%E zMJ!7TT(b0%YA9)sJ`@{%y#C?BAY6UVMf}uj&Vh~o#^*@X?ab(UzWeNfeW zk(xtl@|Aa9<8_UqRA%q4D`haaD!8lIGi#CUT6gOwd&7psqsSb)b!TF|1U=FiCHvyU z$6(B82;?Bdf9bn$D|sQ{3^~u7H#r~fbCFo;fvW7X$ERZ*J13Y(h`V`Y_`e1NfG`jj6R`QY805NOiaeU2LcrsD9S32l9r zo66C8V}aeX+Ks2>u*qZoj(O9bzlJPg$2_KFP&5cOeMj!zr+i3{>?M`cil!BcN*-49 zFFu{gzV?YY?$Vrg_|V$PQFSlrs?2ndx5zl_(J6>VeYkiG2JVb5YTP%q!S@h{~QmyrCgB@t>LG6acJUhD)1MC%htXwd~6Fg#3x$e74E{ zaDJO~RcKC=hm|9$#7_sSID?rm8HhK=&3gP$C2=9Py3?piimpZ zauQl#270N!%TD){T>pB7?89W$_J{(d#^W$3M^pLC6O@c;bu4x94G-<_T#aR{H@2Z` z1@milvgL1F6zntf~1-I|NF46cWcXXb`Q~5=cOKiTz;%q ze2+F*194B1!)Cu6h%1C(HqFLQ=He*4UkNl=4$d9V6`Nmu=0((D&ETsRn9n{D_866V z(E4Fy?b*J(Y&TLUG5=Lmjm=o)y)hzZV2LVgEW;ijV;_{i%`c|HZr_W+&pQj6Tu#$R z8i)}&x34HN$J2zDzM%fz$2@2BT?Ni%Pj0+N2HARHzmKNIS>0#s_XkU|JhQ3My8d<^ zjj5-aZl7>VEGy|uU*>)08m(u%#m;Xg$k98hFIJYYWP``RPo1M0>dwxryjJrv;RxK9 zhAh8}9n2`dpGEB-RiOqg%%nv(tfRL^vt(PhBtLWgyo-9R*I4IVzxcw$1O3eLqu=cs zz%@7Lr(x2}8g6a-KJypdNiOnp;cuu&vnFp&3hS@1Dd-@l`ZTGHScuoYI)1n`?<^My z&Bx+1Yto~pYXxJqm13ZAtmluCUDXlRsdiINH4Ntmk*6pRZM)hp9?qwX(^dTBb#2%B zdhTBIk@<-D(25~Lh*6J-f4{pYziDKkxOTetfTg)GyVA?^*W$vUlD#x#VExRO+y90D zU*`mG>A|?G`Nr4W4P|s;gO^q^�(2l3hg8U9ZTL-6A9K(Vg?fIgDMXWtnB7TQuFl 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 uY|H2HU6{l;RkY4Hqp 2024.7.12 +> 2024.7.19 -Node tag data structure update: +Updates that require special attention: + +1.Node tag data structure update The node tag data has been changed from a string array to an object array, mainly to support setting the style of a single tag. The current node tag data structure is as follows: @@ -27,6 +29,10 @@ Change to the following: } ``` +2.Related to mathematical formulas + +The mathematical formula plugin Formula defaults to importing styles from the Katex library, so there is no need to manually import them in the application. At the same time, the path of the Katex library font file needs to be configured through the katexFontPath instantiation option. + Fix: > 1.Fix the issue where the isRoot and parent attributes of node instances obtained through methods customCreateNodeContent and createNodePrefixContent are both null; @@ -37,17 +43,31 @@ Fix: New: -> 1.Support setting single label styles for nodes; +> 1.Modified the data type of the node tag field tag to support setting a single node tag style; > -> 2.Add instantiation options for displaying the location of node labels; +> 2.Add instantiation options for displaying the location (Equivalent to node text) of node labels; > > 3.Two callback parameters have been added to the node_tag_click event; > > 4.When copying, cutting, or moving multiple nodes, operate them in the order they are on the nodes, rather than in the order they are activated; +> +> 5.If a formula plugin is registered and there are formulas in the node, then when exporting SVG, it is necessary to add styles from the Katex library; +> +> 6.Support instantiation options for custom katex library rendering modes; +> +> 7.The formula plugin defaults to importing styles from the Katex library; +> +> 8.Add instantiation options for custom katex library font file paths; +> +> 9.Add instantiation options for setting the inner margin of the outer frame; Demo: > 1.Support clicking on node tags to modify text and color; +> +> 2.Remove the logic of introducing formula library styles; +> +> 3.Support configuring the inner margin of the outer frame; ## 0.10.2 / 0.10.2-fix.1 diff --git a/web/src/pages/Doc/en/changelog/index.vue b/web/src/pages/Doc/en/changelog/index.vue index 38225fb0..875a18ab 100644 --- a/web/src/pages/Doc/en/changelog/index.vue +++ b/web/src/pages/Doc/en/changelog/index.vue @@ -3,9 +3,10 @@

Changelog

0.10.3

-

2024.7.12

+

2024.7.19

-

Node tag data structure update:

+

Updates that require special attention:

+

1.Node tag data structure update

The node tag data has been changed from a string array to an object array, mainly to support setting the style of a single tag. The current node tag data structure is as follows:

{
      tag: ['tag']
@@ -21,6 +22,8 @@
      ]
 }
 
+

2.Related to mathematical formulas

+

The mathematical formula plugin Formula defaults to importing styles from the Katex library, so there is no need to manually import them in the application. At the same time, the path of the Katex library font file needs to be configured through the katexFontPath instantiation option.

Fix:

1.Fix the issue where the isRoot and parent attributes of node instances obtained through methods customCreateNodeContent and createNodePrefixContent are both null;

@@ -29,14 +32,21 @@

New:

-

1.Support setting single label styles for nodes;

-

2.Add instantiation options for displaying the location of node labels;

+

1.Modified the data type of the node tag field tag to support setting a single node tag style;

+

2.Add instantiation options for displaying the location (Equivalent to node text) of node labels;

3.Two callback parameters have been added to the node_tag_click event;

4.When copying, cutting, or moving multiple nodes, operate them in the order they are on the nodes, rather than in the order they are activated;

+

5.If a formula plugin is registered and there are formulas in the node, then when exporting SVG, it is necessary to add styles from the Katex library;

+

6.Support instantiation options for custom katex library rendering modes;

+

7.The formula plugin defaults to importing styles from the Katex library;

+

8.Add instantiation options for custom katex library font file paths;

+

9.Add instantiation options for setting the inner margin of the outer frame;

Demo:

1.Support clicking on node tags to modify text and color;

+

2.Remove the logic of introducing formula library styles;

+

3.Support configuring the inner margin of the outer frame;

0.10.2 / 0.10.2-fix.1

diff --git a/web/src/pages/Doc/en/constructor/index.md b/web/src/pages/Doc/en/constructor/index.md index 50809ac2..f237f3a7 100644 --- a/web/src/pages/Doc/en/constructor/index.md +++ b/web/src/pages/Doc/en/constructor/index.md @@ -267,7 +267,6 @@ new MindMap({ | Field Name | Type | Default Value | Description | Required | | -------------------------------- | ------- | ---------------- | ------------------------------------------- | -------- | | richTextEditFakeInPlace(v0.6.13+) | Boolean | false | Set the rich text node edit box to match the size of the node, creating a pseudo in place editing effect. It should be noted that only when there is only text within the node and the shape is rectangular, can the effect be better | | -| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | | Whether to enable direct editing of mathematical formulas in rich text editing boxes | | transformRichTextOnEnterEdit(v0.10.0+) | null、Function | null | To convert rich text content, you can pass a function that will be called when entering rich text editing. The function receives the rich text content that is about to be edited and needs to return the processed rich text content | | | beforeHideRichTextEdit(v0.10.0+) | null、Function | null | You can pass a function that will be executed before the end of rich text editing. The function receives a richText instance, so you can update the kill document data at this time | | @@ -321,6 +320,21 @@ new MindMap({ | margin | Number | 50 | The outer margin of the highlighted box | | openBlankMode(v0.9.12+) | Boolean | true | Is enable fill in the blank mode, where underlined text is not displayed by default and only displayed sequentially by pressing the enter key | +#### 14.Formula plugin + +| Field Name | Type | Default Value | Description | Required | +| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | +| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | Do you want to enable direct editing of mathematical formulas in the rich text editing box | +| katexFontPath(v0.10.3+) | String | https://unpkg.com/katex@0.16.11/dist | The request path for font files in the Katex library. Font files will only be requested when Katex's output is configured as html. The current configuration can be obtained through the mindMap.formula.getKatexConfig() method. The font file can be found in node_modules: katex/dist/fonts/. You can upload it to your server or CDN. The final font request path is `${katexFontPath}fonts/KaTeX_AMS-Regular.woff2`, which can be concatenated by oneself to test whether it can be accessed | +| getKatexOutputType(v0.10.3+) | Function、null | null | Customize the output mode of the Katex library. By default, when the Chrome kernel is below 100, html mode will be used. Otherwise, mathml mode will be used. If you have your own rules, you can pass a function that returns either mathml or html | + +#### 15.OuterFrame plugin + +| Field Name | Type | Default Value | Description | Required | +| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | +| outerFramePaddingX(v0.10.3+) | Number | 10 | Horizontal inner margin of the outer frame | +| outerFramePaddingY(v0.10.3+) | Number | 10 | Vertical inner margin of the outer frame | + ## Static methods ### defineTheme(name, config) diff --git a/web/src/pages/Doc/en/constructor/index.vue b/web/src/pages/Doc/en/constructor/index.vue index fc93f587..032f0073 100644 --- a/web/src/pages/Doc/en/constructor/index.vue +++ b/web/src/pages/Doc/en/constructor/index.vue @@ -1016,13 +1016,6 @@ -enableEditFormulaInRichTextEdit(v0.10.0+) -Boolean -true - -Whether to enable direct editing of mathematical formulas in rich text editing boxes - - transformRichTextOnEnterEdit(v0.10.0+) null、Function null @@ -1233,6 +1226,17 @@ +

14.Formula plugin

+

| Field Name | Type | Default Value | Description | Required | +| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | +| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | Do you want to enable direct editing of mathematical formulas in the rich text editing box | +| katexFontPath(v0.10.3+) | String | https://unpkg.com/katex@0.16.11/dist | The request path for font files in the Katex library. Font files will only be requested when Katex's output is configured as html. The current configuration can be obtained through the mindMap.formula.getKatexConfig() method. The font file can be found in node_modules: katex/dist/fonts/. You can upload it to your server or CDN. The final font request path is ${katexFontPath}fonts/KaTeX_AMS-Regular.woff2, which can be concatenated by oneself to test whether it can be accessed | +| getKatexOutputType(v0.10.3+) | Function、null | null | Customize the output mode of the Katex library. By default, when the Chrome kernel is below 100, html mode will be used. Otherwise, mathml mode will be used. If you have your own rules, you can pass a function that returns either mathml or html |

+

15.OuterFrame plugin

+

| Field Name | Type | Default Value | Description | Required | +| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | +| outerFramePaddingX(v0.10.3+) | Number | 10 | Horizontal inner margin of the outer frame | +| outerFramePaddingY(v0.10.3+) | Number | 10 | Vertical inner margin of the outer frame |

Static methods

defineTheme(name, config)

diff --git a/web/src/pages/Doc/en/formula/index.md b/web/src/pages/Doc/en/formula/index.md index cf63966a..949bc7c1 100644 --- a/web/src/pages/Doc/en/formula/index.md +++ b/web/src/pages/Doc/en/formula/index.md @@ -25,7 +25,9 @@ This plugin is used to support inserting formulas into nodes. > ``` > If you are using packaged files such as '.umd.js' or '.esm.js', you can import them through online CDN services, such as `https://unpkg.com/browse/katex@0.16.9/dist/`, Of course, it is best to upload the 'css' file of the 'katex' and the corresponding font files in the 'fonts' directory to your own server. -## 问题 +> Version v0.10.3+ will default to importing the style files of 'KaTeX'. So you don't need to manually introduce it anymore. When the rendering mode of the Katex library is html, it depends on some font files, which are not included in the plugin. You need to use the `katexFontPath` instantiation option to set the path of the font files. + +## Problem 1.On some browsers, the formula source code is displayed diff --git a/web/src/pages/Doc/en/formula/index.vue b/web/src/pages/Doc/en/formula/index.vue index 489f63c9..8ac768c9 100644 --- a/web/src/pages/Doc/en/formula/index.vue +++ b/web/src/pages/Doc/en/formula/index.vue @@ -27,7 +27,10 @@

If you are using packaged files such as '.umd.js' or '.esm.js', you can import them through online CDN services, such as https://unpkg.com/browse/katex@0.16.9/dist/, Of course, it is best to upload the 'css' file of the 'katex' and the corresponding font files in the 'fonts' directory to your own server.

-

问题

+
+

Version v0.10.3+ will default to importing the style files of 'KaTeX'. So you don't need to manually introduce it anymore. When the rendering mode of the Katex library is html, it depends on some font files, which are not included in the plugin. You need to use the katexFontPath instantiation option to set the path of the font files.

+
+

Problem

1.On some browsers, the formula source code is displayed

This is because some browsers do not support the 'mathml' output mode of the 'KaTex' library. You can change the output mode to 'html' by using the 'getKatexOutputType' instantiation option.

2.Sometimes formulas and text may display line breaks

diff --git a/web/src/pages/Doc/en/introduction/index.md b/web/src/pages/Doc/en/introduction/index.md index a8f1ec72..477f1f2e 100644 --- a/web/src/pages/Doc/en/introduction/index.md +++ b/web/src/pages/Doc/en/introduction/index.md @@ -442,4 +442,12 @@ Open source is not easy. If this project is helpful to you, you can invite the a

Tobin

+
+ +

夏虫不语冰

+
+
+ +

晴空

+
diff --git a/web/src/pages/Doc/en/introduction/index.vue b/web/src/pages/Doc/en/introduction/index.vue index 3a5d51d8..985e4b1c 100644 --- a/web/src/pages/Doc/en/introduction/index.vue +++ b/web/src/pages/Doc/en/introduction/index.vue @@ -399,6 +399,14 @@ full screen, support mini map

Tobin

+
+ +

夏虫不语冰

+
+
+ +

晴空

+
diff --git a/web/src/pages/Doc/zh/changelog/index.md b/web/src/pages/Doc/zh/changelog/index.md index e85df405..223c2d9e 100644 --- a/web/src/pages/Doc/zh/changelog/index.md +++ b/web/src/pages/Doc/zh/changelog/index.md @@ -2,9 +2,11 @@ ## 0.10.3 -> 2024.7.12 +> 2024.7.19 -节点标签数据结构更新: +需要特别关注的更新: + +1.节点标签数据结构更新 节点标签数据由字符串数组,改为对象数组,主要是为了支持设置单个标签的样式,当前节点的标签数据结构如下: @@ -27,6 +29,10 @@ } ``` +2.数学公式相关 + +数学公式插件Formula默认会引入Katex库的样式,所以应用中不需要再手动引入,同时需要通过katexFontPath实例化选项来配置Katex库字体文件的路径。 + 修复: > 1.修复customCreateNodeContent、createNodePrefixContent等方法里获取到的节点实例的isRoot和parent等属性都为null的问题; @@ -37,17 +43,31 @@ 新增: -> 1.支持设置节点单个标签样式; +> 1.修改了节点标签字段tag的数据类型,以支持设置节点单个标签样式; > -> 2.新增节点标签显示位置的实例化选项; +> 2.新增节点标签显示位置(相当于节点文本)的实例化选项; > > 3.node_tag_click事件新增两个回调参数; > > 4.复制、剪切、移动多个节点时,按其在节点上的顺序进行操作,而不是激活的顺序; +> +> 5.如果注册了公式插件并且节点里存在公式,那么导出svg时需要添加katex库的样式; +> +> 6.支持自定义katex库渲染模式的实例化选项; +> +> 7.公式插件默认引入katex库的样式; +> +> 8.增加自定义katex库字体文件路径的实例化选项; +> +> 9.新增设置外框内边距的实例化选项; Demo: > 1.支持点击节点标签进行文本和颜色的修改; +> +> 2.去除引入公式库样式的逻辑; +> +> 3.支持配置外框内边距; ## 0.10.2 / 0.10.2-fix.1 diff --git a/web/src/pages/Doc/zh/changelog/index.vue b/web/src/pages/Doc/zh/changelog/index.vue index f27f5d2a..24d3e825 100644 --- a/web/src/pages/Doc/zh/changelog/index.vue +++ b/web/src/pages/Doc/zh/changelog/index.vue @@ -3,9 +3,10 @@

Changelog

0.10.3

-

2024.7.12

+

2024.7.19

-

节点标签数据结构更新:

+

需要特别关注的更新:

+

1.节点标签数据结构更新

节点标签数据由字符串数组,改为对象数组,主要是为了支持设置单个标签的样式,当前节点的标签数据结构如下:

{
      tag: ['标签']
@@ -21,6 +22,8 @@
      ]
 }
 
+

2.数学公式相关

+

数学公式插件Formula默认会引入Katex库的样式,所以应用中不需要再手动引入,同时需要通过katexFontPath实例化选项来配置Katex库字体文件的路径。

修复:

1.修复customCreateNodeContent、createNodePrefixContent等方法里获取到的节点实例的isRoot和parent等属性都为null的问题;

@@ -29,14 +32,21 @@

新增:

-

1.支持设置节点单个标签样式;

-

2.新增节点标签显示位置的实例化选项;

+

1.修改了节点标签字段tag的数据类型,以支持设置节点单个标签样式;

+

2.新增节点标签显示位置(相当于节点文本)的实例化选项;

3.node_tag_click事件新增两个回调参数;

4.复制、剪切、移动多个节点时,按其在节点上的顺序进行操作,而不是激活的顺序;

+

5.如果注册了公式插件并且节点里存在公式,那么导出svg时需要添加katex库的样式;

+

6.支持自定义katex库渲染模式的实例化选项;

+

7.公式插件默认引入katex库的样式;

+

8.增加自定义katex库字体文件路径的实例化选项;

+

9.新增设置外框内边距的实例化选项;

Demo:

1.支持点击节点标签进行文本和颜色的修改;

+

2.去除引入公式库样式的逻辑;

+

3.支持配置外框内边距;

0.10.2 / 0.10.2-fix.1

diff --git a/web/src/pages/Doc/zh/constructor/index.md b/web/src/pages/Doc/zh/constructor/index.md index bfcb3da0..418f3e97 100644 --- a/web/src/pages/Doc/zh/constructor/index.md +++ b/web/src/pages/Doc/zh/constructor/index.md @@ -269,7 +269,6 @@ new MindMap({ | 字段名称 | 类型 | 默认值 | 描述 | | -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | | richTextEditFakeInPlace(v0.6.13+) | Boolean | false | 设置富文本节点编辑框和节点大小一致,形成伪原地编辑的效果,需要注意的是,只有当节点内只有文本、且形状是矩形才会有比较好的效果 | -| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | 是否开启在富文本编辑框中直接编辑数学公式 | | transformRichTextOnEnterEdit(v0.10.0+) | null、Function | null | 转换富文本内容,可以传递一个函数,当进入富文本编辑时会调用该函数,函数接收即将被编辑的富文本内容,需要返回你处理后的富文本内容 | | beforeHideRichTextEdit(v0.10.0+) | null、Function | null | 可以传递一个函数,即将结束富文本编辑前会执行该函数,函数接收richText实例,所以你可以在此时机更新quill文档数据 | @@ -323,6 +322,21 @@ new MindMap({ | margin | Number | 50 | 高亮框的外边距 | | openBlankMode(v0.9.12+) | Boolean | true | 是否开启填空模式,即带下划线的文本默认不显示,按回车键才依次显示 | +#### 14.Formula插件 + +| 字段名称 | 类型 | 默认值 | 描述 | +| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | +| enableEditFormulaInRichTextEdit(v0.10.0+) | Boolean | true | 是否开启在富文本编辑框中直接编辑数学公式 | +| katexFontPath(v0.10.3+) | String | https://unpkg.com/katex@0.16.11/dist | katex库的字体文件的请求路径。仅当katex的output配置为html时才会请求字体文件。可以通过mindMap.formula.getKatexConfig()方法来获取当前的配置。字体文件可以从node_modules中找到:katex/dist/fonts/。可以上传到你的服务器或cdn。最终的字体请求路径为`${katexFontPath}fonts/KaTeX_AMS-Regular.woff2`,可以自行拼接进行测试是否可以访问 | +| getKatexOutputType(v0.10.3+) | Function、null | null | 自定义katex库的输出模式。默认当Chrome内核100以下会使用html方式,否则使用mathml方式,如果你有自己的规则,那么可以传递一个函数,函数返回值为:mathml或html | + +#### 15.OuterFrame插件 + +| 字段名称 | 类型 | 默认值 | 描述 | +| -------------------------------- | ------- | ---------------- | ------------------------------------------------------------ | +| outerFramePaddingX(v0.10.3+) | Number | 10 | 外框的水平内边距 | +| outerFramePaddingY(v0.10.3+) | Number | 10 | 外框的垂直内边距 | + ## 静态方法 ### defineTheme(name, config) diff --git a/web/src/pages/Doc/zh/constructor/index.vue b/web/src/pages/Doc/zh/constructor/index.vue index 90d281bc..4d7de7f5 100644 --- a/web/src/pages/Doc/zh/constructor/index.vue +++ b/web/src/pages/Doc/zh/constructor/index.vue @@ -905,12 +905,6 @@ 设置富文本节点编辑框和节点大小一致,形成伪原地编辑的效果,需要注意的是,只有当节点内只有文本、且形状是矩形才会有比较好的效果 -enableEditFormulaInRichTextEdit(v0.10.0+) -Boolean -true -是否开启在富文本编辑框中直接编辑数学公式 - - transformRichTextOnEnterEdit(v0.10.0+) null、Function null @@ -1105,6 +1099,62 @@ +

14.Formula插件

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
字段名称类型默认值描述
enableEditFormulaInRichTextEdit(v0.10.0+)Booleantrue是否开启在富文本编辑框中直接编辑数学公式
katexFontPath(v0.10.3+)Stringhttps://unpkg.com/katex@0.16.11/distkatex库的字体文件的请求路径。仅当katex的output配置为html时才会请求字体文件。可以通过mindMap.formula.getKatexConfig()方法来获取当前的配置。字体文件可以从node_modules中找到:katex/dist/fonts/。可以上传到你的服务器或cdn。最终的字体请求路径为${katexFontPath}fonts/KaTeX_AMS-Regular.woff2,可以自行拼接进行测试是否可以访问
getKatexOutputType(v0.10.3+)Function、nullnull自定义katex库的输出模式。默认当Chrome内核100以下会使用html方式,否则使用mathml方式,如果你有自己的规则,那么可以传递一个函数,函数返回值为:mathml或html
+

15.OuterFrame插件

+ + + + + + + + + + + + + + + + + + + + + + + +
字段名称类型默认值描述
outerFramePaddingX(v0.10.3+)Number10外框的水平内边距
outerFramePaddingY(v0.10.3+)Number10外框的垂直内边距

静态方法

defineTheme(name, config)

diff --git a/web/src/pages/Doc/zh/formula/index.md b/web/src/pages/Doc/zh/formula/index.md index a668cb12..9de32434 100644 --- a/web/src/pages/Doc/zh/formula/index.md +++ b/web/src/pages/Doc/zh/formula/index.md @@ -23,6 +23,8 @@ > ``` > 如果你使用的是`.umd.js`、`.esm.js`之类的打包后的文件,那么可以通过在线的CDN服务来引入,比如:`https://unpkg.com/browse/katex@0.16.9/dist/`,当然,最好是把`katex`的`css`文件,以及对应的`fonts`目录下的字体文件上传到你自己的服务器上。 +> v0.10.3+版本会默认引入`KaTeX`的样式文件。所以你无需再手动引入。当`Katex`库的渲染模式为`html`时它会依赖一些字体文件,插件并不包含这些文件,你需要通过`katexFontPath`实例化选项来设置字体文件的路径。 + ## 问题 1.在有的浏览器上显示的是公式源码 diff --git a/web/src/pages/Doc/zh/formula/index.vue b/web/src/pages/Doc/zh/formula/index.vue index 32746255..219a7de6 100644 --- a/web/src/pages/Doc/zh/formula/index.vue +++ b/web/src/pages/Doc/zh/formula/index.vue @@ -24,6 +24,9 @@

如果你使用的是.umd.js.esm.js之类的打包后的文件,那么可以通过在线的CDN服务来引入,比如:https://unpkg.com/browse/katex@0.16.9/dist/,当然,最好是把katexcss文件,以及对应的fonts目录下的字体文件上传到你自己的服务器上。

+
+

v0.10.3+版本会默认引入KaTeX的样式文件。所以你无需再手动引入。当Katex库的渲染模式为html时它会依赖一些字体文件,插件并不包含这些文件,你需要通过katexFontPath实例化选项来设置字体文件的路径。

+

问题

1.在有的浏览器上显示的是公式源码

这是因为有的浏览器不支持KaTex库的mathml输出模式,可以通过getKatexOutputType实例化选项来将输出模式改为html

diff --git a/web/src/pages/Doc/zh/introduction/index.md b/web/src/pages/Doc/zh/introduction/index.md index 565c9fef..3354f354 100644 --- a/web/src/pages/Doc/zh/introduction/index.md +++ b/web/src/pages/Doc/zh/introduction/index.md @@ -438,4 +438,12 @@

Tobin

+
+ +

夏虫不语冰

+
+
+ +

晴空

+
diff --git a/web/src/pages/Doc/zh/introduction/index.vue b/web/src/pages/Doc/zh/introduction/index.vue index 25f00ff2..ec3f3832 100644 --- a/web/src/pages/Doc/zh/introduction/index.vue +++ b/web/src/pages/Doc/zh/introduction/index.vue @@ -392,6 +392,14 @@

Tobin

+
+ +

夏虫不语冰

+
+
+ +

晴空

+