From 5a164f4090a9c37a4c06b77d46cb0d98c1ba0b2e Mon Sep 17 00:00:00 2001 From: Junru Date: Tue, 15 Mar 2022 16:40:31 +0800 Subject: [PATCH 1/8] =?UTF-8?q?style:=20=E5=B7=A5=E5=85=B7icon=E6=9B=B4?= =?UTF-8?q?=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/header.js | 6 +++--- src/styles/components/header.scss | 6 ++++-- src/styles/global.css | 24 ++++++++++++++++++++++- src/styles/images/tools/manager.png | Bin 3861 -> 3272 bytes src/styles/images/tools/mdb.png | Bin 5203 -> 2530 bytes src/styles/images/tools/menu/manager.png | Bin 0 -> 1967 bytes src/styles/images/tools/menu/mdb.png | Bin 0 -> 1549 bytes src/styles/images/tools/menu/mogdb.png | Bin 0 -> 5745 bytes src/styles/images/tools/menu/mogha.png | Bin 0 -> 1937 bytes src/styles/images/tools/menu/mtk.png | Bin 0 -> 1068 bytes src/styles/images/tools/menu/mvd.png | Bin 0 -> 1165 bytes src/styles/images/tools/menu/sca.png | Bin 0 -> 1209 bytes src/styles/images/tools/mogdb.png | Bin 6292 -> 12216 bytes src/styles/images/tools/mogha.png | Bin 6101 -> 3115 bytes src/styles/images/tools/mtk.png | Bin 4455 -> 2353 bytes src/styles/images/tools/mvd.png | Bin 5527 -> 2949 bytes src/styles/images/tools/sca.png | Bin 6614 -> 2580 bytes 17 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 src/styles/images/tools/menu/manager.png create mode 100644 src/styles/images/tools/menu/mdb.png create mode 100644 src/styles/images/tools/menu/mogdb.png create mode 100644 src/styles/images/tools/menu/mogha.png create mode 100644 src/styles/images/tools/menu/mtk.png create mode 100644 src/styles/images/tools/menu/mvd.png create mode 100644 src/styles/images/tools/menu/sca.png diff --git a/src/components/header.js b/src/components/header.js index 6a953c20..7399ba0e 100644 --- a/src/components/header.js +++ b/src/components/header.js @@ -34,7 +34,7 @@ const Header = ({ pageContext }) => {
{item.menu.map((m, i) => (
goToolsDocs(m.value)}> -
+
{m.label}
{m[lang]}
@@ -93,7 +93,7 @@ const Header = ({ pageContext }) => {
{activeMediaMenuTab === 'mogdb' &&
goToolsDocs('mogdb')}> -
+
MogDB
{allProductLabels.mogdb[lang]}
@@ -104,7 +104,7 @@ const Header = ({ pageContext }) => { {activeMediaMenuTab === item.key && item.menu.map((m, i) => (
goToolsDocs(m.value)}> -
+
{ m.label }
{m[lang]}
diff --git a/src/styles/components/header.scss b/src/styles/components/header.scss index 7f94f4eb..9c104803 100644 --- a/src/styles/components/header.scss +++ b/src/styles/components/header.scss @@ -146,10 +146,11 @@ } } } -.w-product-icon { +.w-product-icon-menu { width: 64px; height: 64px; margin-right: 8px; + background-size: 42px auto; } .media-tools-box-mask { cursor: pointer; @@ -241,11 +242,12 @@ & .box-info { flex: 1; } - & .w-product-icon { + & .w-product-icon-menu { width: 50px; height: 50px; margin-right: 7px; flex-shrink: 0; + background-size: 34px auto; } } } diff --git a/src/styles/global.css b/src/styles/global.css index 554c767d..87843bdf 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -44,7 +44,7 @@ li { } /* 组件 */ -.w-product-icon, .w-product-icon-mini { +.w-product-icon, .w-product-icon-menu, .w-product-icon-mini { background-size: 100% auto; background-position: center center; background-repeat: no-repeat; @@ -70,6 +70,28 @@ li { .w-product-icon.mogdb { background-image: url(./images/tools/mogdb.png); } +/* menu icon */ +.w-product-icon-menu.mogha { + background-image: url(./images/tools/menu/mogha.png); +} +.w-product-icon-menu.manager { + background-image: url(./images/tools/menu/manager.png); +} +.w-product-icon-menu.mdb { + background-image: url(./images/tools/menu/mdb.png); +} +.w-product-icon-menu.mtk { + background-image: url(./images/tools/menu/mtk.png); +} +.w-product-icon-menu.mvd { + background-image: url(./images/tools/menu/mvd.png); +} +.w-product-icon-menu.sca { + background-image: url(./images/tools/menu/sca.png); +} +.w-product-icon-menu.mogdb { + background-image: url(./images/tools/menu/mogdb.png); +} /* mini icon */ .w-product-icon-mini.mogha { background-image: url(./images/tools/mini/mogha.png); diff --git a/src/styles/images/tools/manager.png b/src/styles/images/tools/manager.png index 1ac33f02410ac9d47349689815104a97de9626fc..6f3b8b4e05a186520a9df69695c831e97e4d4951 100644 GIT binary patch literal 3272 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 literal 3861 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 O0Xmun8r5p|qW=S}E;>X2 diff --git a/src/styles/images/tools/mdb.png b/src/styles/images/tools/mdb.png index 851baa5ded0e3208b7a27cb9b42918e80987c44f..3e59bd34607ea9b83f4aaef0a4681093cecd32b5 100644 GIT binary patch literal 2530 zcmcgu`8V5%9?c@LrKMx9U1>YiR+Ls!1cSCCH1?v2r5O8~SexKkhtMfCwKK{D5zjg==o8_Xz>znt&>$LH?h6PcSYl&g=0NmZDGdw~AD3Vq5ysp8!6Aw!&Nk;{ z+NApbn&MVd8IVkMQV+i`S>ILh@SeqPUY%*m2rKT8oM)k&~vgv?1_*5{gD*4bKbR0Ti5p`7hxxJsd@Y^L?{5S%%J%SR=-{cOoX{ zg@{NL4F_Kihat-poOPhvtq=taMWYC8jKvWXyOFP@{PhKRLKTvtSCsT20ZNtm6n(tF z+sX4CXuiMr!$-=Z0#V~3BIAEsyUB1yM%JRqi$gbC+@JWV=&tLUMX1>kFqHF{)#mBCFuv> z{^Dy04w2jB@AI>jFruz6KVOr4ytB5@ggca~kNzOMmX>C@e)ynG2T2V7-BCyS_pu<^ zBK)A^`)|FE{NE3Gi8eJ{&=cG$H8a}$Al+uFq;s zTcwspo1H~B4$-PhZfC#}U-WPi>Q~nCPtp(a-8(d>3o$H`JYbK12-aC5SQgOjKU$pa z#Xd$&BPPm1Xw6;#&CFNZ4jzOt9Cy*hjaRftorgZHEe>purU%+h3f~7$4Zk&TLQELc zEyI=)fghl-IRfeV#`4eiTkeILN6Evq$`rpYUcb#RsTIyOE`B1(KYJOJN}D+SdY@GL zmPFhPz|AJyg5+GPGB+lRrL*>2clo-8KIJC*Mdb~cHflqp*psJIz_;>pz!a&#kG!hq z$t;xC{i2r}bTU|vli(LnRu!AY=DEG;P}FXT@bAXzV+MB%#V~_N%fsGYDtGKz#f;u=DsV2i} z8{&sCMZST`g zL+(S}jvF$>Ym6Jn-Q4SV@P6P}#s+W9@^#l|?F^`q#I#Wz`jbucf*-*H4Iqf4XP6i?-=eg! zylZ%bhp`Nj0#9@$iug9ohMD;9ZxOW1awR@F%;B70tx> zgC0j}42*kwBS6`!X)e2bcJ8luoD!j=?O1wh0@s7H<=kLSt4nh^S5Jr;!+)6zg@y)U zJnagns+vsoQGz$xl2YMKRhkV|SP!)YtUN#tCQ0^D$Vk`F?kgGb?WN4SKBAjTP2|3r z-Cg;aueohX?L6}epAi|~<7{vND$3={pp&`D?&5rsmx{37E$?zPAVr?=<^(kz)V{sP z$iD7CtPx==DFVMN?%BcTHM;lxhYbB!;OCyB0RGttaF4dY!dUfmHv4HTo~bqLmN%VV zxIfr3s+mS4davVIt^bhZLAK~irXDN6htfAoHc7Dj53zKWr`(0SxCx!R`GSVS)Do~U zUrF-8>?ux{azF1Q4DDMkzEEa<`Ko>lu;hzuUxw4WG*>phjveW3n zGy?{8;%fy=gWLQ7gi$f%Ai8p8Xs-nEJo!H(kqEkKYrQ*lSrT@Q5$bV;8cpM5*5mee zg4UVpgKGv>2*znWjv(a1?ZZi)6^C7ukeZU!H?mLtuPTp!EvNFK&>Avr8Nb5jj{sOubQ@Q68c(ReOwsQO! z;=dvYGnl&&8PYGY?Eczjg$&00hGeH)=XVkPyghT!AzWH-EQs`}<7jNPRh^^&hJVb* zuko3)L9L7==S>BPO5Ojpt0WzW+-e;3lWS$-siI-o$bHP8CK7L+cd}ZKK(_1I8qJTB z2n+YKb_&3{Wrv-P0=*F*Gqb{&i`7RFQfd6!vkgXO@gbq|uGQ+;XwtKWV5kxX_2G^g zxlB0JJX@sZ0`1l1%Pt=mhj?eA+cC|L@1 zQz)MwX7*UP%RkkjuKO(@1!wW%+8OCMIp)lYwg2mgPeYnf`kFg|n~9?~8n7Gj4-bu; z47L)u)h^UCO9wut;8hNi?x^f}eey&|shHG|u;8Jlu?xSvI!ZLv2hv;6 zeBaKN`{ZH9y%{|NKMXGp@$BnXqqJp4WCm5NWVcm3d)$Q}t$AQZXrPb|E->yn%@7(R he=!iO_kTK$6zNg;5tACY+ws!|vaz(aprLWe{|25*t=9km literal 5203 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 diff --git a/src/styles/images/tools/menu/manager.png b/src/styles/images/tools/menu/manager.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab6e25a9f58b8a53ac8749b093eb4222468a00c GIT binary patch literal 1967 zcmV;g2T=HlP)Px+X-PyuR9HvVnOksE*A<5UwU10}9hqAKZD+`oreN+&CT{Lh znuN4ZNqU*-G$8?FuIUU9X_GwAatqBAB+<)cCJ&uFm?PUQ32B-D25ejkO_Okqp|&J! z>#V<{BsDUYjt(_>$Qixut+l@M@3q%jS`vIt9{HSbVkBr2P5sv}@s8fy^pJ(+6t)fw zgj?VEE_wms?S8TO`)H3J)4vF!50QA|iaGO#6Ag0)A;W!*09}&ooh>Rqr?FI24@2-p zKJn_-my?V?px0n$Y0bc@nB>Aat%6>o6%7Mf3H5iFja32xfprz9rz- zLA41SOFQ;_f6zqcJb*6@Z88=ha+c)5yqAC72xnRdJw(+HC~^$q%@#3J1@eyOtyez0 z{IAaLE7JxS&B;wMiscYQ4R}?7H&IYatXZUYTrBH27+PRNSCE(j^@dyq0*xjz7X+9* z;y4Q$itz}XR(eS&-ZsR17%U`lQNedDaF$1FrzIg(46cTlqk!HGU=}^?6iZGSG4o+U z%R!w6ssT&gPab!j$UOfTO=K<#Fv&OWi~%4SX#P!4%?qKB^jtpHW_SOtX~O@GUqm_U z(e3BM_uOYhFh#(}MC3jIHP8xSO?J5P$lTF`7FiIh>ZL;~#yoCMU--O;d17cu3_bOp z%AIcC9!p(MLA@2hE**d%ps_^e5`epc8Wkfi9cloD@C8j}lTbDUwh5d_JNBGPM}I|ti9wCRSTDE@ z)lb?p7Vi?sqa_thLGZya_$Rnjevk52zg913|I`-^Jihd-( zgrIK^WBGuhDcjY$acMGpfTR=HCV9$@M`rma{A8vF#Q2~_X<5Hauc-cUX+=L%&}fZ&N2=dH_DxZM;CltKp|*y8|{rFK^MO)BCChhdX$dQXfm@y2tUw&xK4Q5sE!`gCO2Li3{?4S_H^5p zk+;5ghlnW)O5#j9ZhzGWloCti3hAlrWdhA!&+Gqb+p6(B#fI#<5{ixhr7TJI-6b@8 z1z1+TsK}XgJnREXN-S9k6oY`AMabGO%HN{nuV)W6KalqWt>3|_>N^MOEb?JdT>)?k zfRIm7`Dfa(?wpV~~pSi7|#5p%^Pc5rxA?WQ1 zxvRGVs;XOCSJsvUEyQo8t94r}ncD+ua78KS+<3S=C|VebUA%r8My3|eg8Yt*)Gg_F z?X#s69Rf}D?}p}w{qQSmQ%s>Fe9LVJ-|w67>ysaitI3a95UQ$LL%}krhQab97(zFv zo!WK2po!dWK+A)Q0Y!R^kyn}5UHQJgx7ycC>h%R3T5Mrx;f4M$SHW8aW4=SMPD-bi zkNZ=9MRU8LI_x+9#~GvWG1f8h^p(6pq8&Bwqfu^*^@>O<=Cs1z!i>}Cq@_l5jerk| z$k?GNoM5BdXgAq)OZJK2d&Mf;IQk+`F(lYS;5DV}xp1NSFWpZ{f2E8N2z1Cu6V1Z9 z>vxANt`uWd!N^Q_`E8#lS_)L3&UCduxAgb@?w;Qyw$NzK3e*yjqJZAt6-3I^w002ovPDHLkV1gc9 Bn_d6_ literal 0 HcmV?d00001 diff --git a/src/styles/images/tools/menu/mdb.png b/src/styles/images/tools/menu/mdb.png new file mode 100644 index 0000000000000000000000000000000000000000..bca317b7976e0cd603f5b9e7160f5506dc7ad099 GIT binary patch literal 1549 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 literal 0 HcmV?d00001 diff --git a/src/styles/images/tools/menu/sca.png b/src/styles/images/tools/menu/sca.png new file mode 100644 index 0000000000000000000000000000000000000000..00f5630ded3d8731b997b16c13b61140e89198ec GIT binary patch literal 1209 zcmV;q1V;ObP)Px(b4f%&R9Hvtm`!M0RTRhn=iWDO-kV87trI$#i53?s#!xkp$wZ-M)0I@+L`nl` z43xNVp(~--ji6nKUDSof+LA8`bkl+&h^Vc$VwALKF;!5pHE+g`XpQZBW!}3--b^Nq z>16UUWKs%qcXQ{Qdw%zS&pq7p2)D?fTZ9vJ(Dgp4f}(%)G&M8^^nJ`Q1%SL`zt`~Y z?-!~KHs2Q+a6n<#-w^yY4JSS-t<~A$znfY1xN#~C1rtNC5ygL+`_Zw#vaF=T6(Hrz%qc>{WAM9 z9h<$n66}JK!wkC5br9gRQrKmVS)VNTS$9QC0o-~gz%w@UJ5tbxxs>x$L(b05`DIAg zwGOFaFA3V|DEM6;Nl52y)f*g7oGiDont?6?6Tpm|Af&*o7^E|>$xUZh#lmp|Gwi4V zWBhu7-!MfhzC_z#8kR$UW^0I}1B^8{7SsFt9eQD2-$I}Xqt*I!)h zfao6vekCAHfX<8vh(iGBD{iD#pdHP=c3o&EnCMP7I5QLh-!bt~ICLiMOaJU#M(VZ@ z{7ToO%%THA>;-W*K)xG*YXRE11&w3|J_Vt@7?AS-hVqhLow}4>@vZ9SvLVbtl5~K8 z&Hsa~1!yc{J|_enF0>}hu98FlTAAmkfq4%(Dq<0Hw-7i2P+-x1y+K=>(9q})Oaf>v zXbJwtPGugOx`H_mkOh+-Kwgdn-Xwv2H3N-B%`QRYe#UXzC|0bV`O3yo&p`A@dC=Z1jd@?-3x{$4sw$MJ zqg^e5qYMlb?+{OZX=S>K%xfRU%L*>fEl6VZI7`ZnBqkmbY z=~&e0Bcis#Z^hqFCbGxYj#%_~IBaxFjUF#-S>eyW6Pd$50=fD({Av|l$*->HdMo-L X*S>pLIYia100000NkvXXu0mjf{|z-@ literal 0 HcmV?d00001 diff --git a/src/styles/images/tools/mogdb.png b/src/styles/images/tools/mogdb.png index 27f292d2f21026234e94bacbfb511a0dd9839c28..bfbedcb94d59ebeb4eed65c27b2721ebc2196e76 100644 GIT binary patch literal 12216 zcmc(FWl&u~)8@Un2bbUk2=4Cg?(QVGyIvr;ySuvt*NeNm1$TE%Sl(}|wpRY`*8b?~ z>FJrCIaA%$PtTcfB?U=jgs%ty003E9N=)UGUw_gq91H*egv#*v@+knFRU}0KHB$s9 zpMsdVmh=yKc>v948x8;rwFE%@XUHdg{UiVYG7kuV{N%v@^yNYP5AAgxV)tPJSi9%N(=z`Zx z=nC%u&C^`FxQs?shPTDju#yhUVmcltK$v;hR3BB&v4>CmdtzWr*>>olqw2QKMK$v# z(ZA`lXV!P9zcwn$KVP1bQ$8H&=iNTT-ugdi6L5UIbf<^?{_mT6@ZwPR9{cbt4*%fA zd=trS%$+Ip!~Rvx5K#gf!dKdew z5@Ia;0~2X|W73>~sM@ZK8Hb1W4NVs2V|}kn>O*y=tRvG~fR}Ynz_OrKcEV~?=fb<0 z=M{r##Onzy;P(?ZX+QK?uxX zhh4e&hi_YS#BchI(p;j)q`!B4k$>UOTs5M;uBw5%eRutY7RY0ZfGX$BwNk*6={)>9 zf6O=>6GW8IDQZ|+FWw*((V{J^6kZ1>C)q%2vzL#4kPn@AX`fqAvYCwPg1)(V%AnPZ z^gsHyQAsgk;Rwq8)wZzrAo*O7kbBp5tz1yX|EvoclfA=iGRREnqEo3MI@ z-*qU545k6q#v>>3)SdU!BR^vm>sg8Xpy9Gg`hM2(P*!IRn}C%`IIE&Y7HBYb>yy33 z#O8yXqrF4K#d~~gBTW3y4xpWRa zlfb2(x!j2ryWw?m&S0gG0LT+vVVYsobx6l+{P1LyA-mRa-4%E&2$zQnT};0Y zsiyVRrD0xA0H*~V<**)}=v>ew`;hx@|D;Da+Oec{Nfki=l5@hN@BUI?-U_w4(}iDA z89%QNB?|Bj{CVIpaBOMCydfywW0|iOCDq+>y`Bf{s9-Q!R@QH~{UDvZ) zI33Za?R~tGu9ZnD9FCa|G=19P+6Ch~R*k{8xuu9}$S7v!nhc)&?Fuo|$S}GZ`O23r zZOPuK8(!y*4W%Zn6?LVUd+=GI)|%Vx$uDEnN?6!?IYTnX2m%I0cm`HE?Fhs!E0-g~)znlXiD0x!|W`;tnW5A9P-%VBDvq4hII&@=B(f9P8Sh!98F~==U>?;N$Mp zlgH53Y`<2Q;r zhlSR%3byrp+^t^r55eIX2GfpLuWM^G`!;h6q)ZF=tqSnR3f!o3Wof&3WB9wrjeg;u zHbv|2ZBkC_DLd4Xp^<}EDL#nJT`KjR6a(p&E(zkhUv+I;%8!J>U@aktxc+0XPg2(! zzq&ZOkC?AO^aUSw!o)@MZ$&2pV{kPzi;g)9roO>*-aPed1ixSQ0Pb0j^OavW>u3Rg zJg1Vev(eNa*qO1KX%BR*UM)KIH(M)xi#PYvcA08u=3W3=0Kw+3$4@nVA z!>US%8O3gakV;k)0)T+KKc@1sq^E`I-9a7VOfg?DhTY7Mz5^e#EgDjh@3Nk%ra9RM zWuV7AtxmF*fl)N3LLsifpwu>!6@ufWZp;V|!%wHlbxaV^;?uj!R4qx7ree7B_vXxg zW{(px$`6n?4FnLj zbvh#O)s~bq!QU~<%N>Z z;@T11X&|@`2|#XTV=lARkLDg0ja`O~)6>p?S0eO_ugkwP5T5?v7(JVlz+@viED8b) zz`0l#?0{t9qU0|CN52*G2fs-jK-}q0-__|R=Ek7m&btUI&IUxFfS6d~@Tq3yNB%R+ z%4|>};Exyf_BsB2I70gNOR1%GxjtX)<&An8rUr^2HOqK5%9@+1T{x2U!~Jc)#Xely zdRuC;{f3<*GT*?nB^tC+Nw#V;2JMBPznvJV3E#k=@kw8ader+xS4+)P>9l!n!6Alb zuy`ZX03Sn4d_BIsxqTG%?^YTc8OfgNjZHAM0qkPGY%v!0&r0HFS=eAFL8Bpc>MgxtL-!gj`J>v>jeF-@a;`?;lewtwogMm z=bs|2=A`^omf6|S@r^R*zPPZb$OI|Fvav9DYwd-rV_r`ije4i9Dk9_W`-SJ*E;8TJ zA4Yfq85*Rgm@3+e0p_}q!RRvnry6J0tuPD*HbKh22J*r6D?^p^4g_?T&Wk6SXR3o` zG^6gN5^dy9%G$x@D{7YE>mE?HxtZ+H+vpp`ZlhbkHMg4D#V6vzb=!w&>26gWBGxa`dCxe2gf(TsZ1mK*%4^&NyudaiPuT2#qJ(N3w z%mgtEt#Erf*c>pkS4^NoXuz;xQRsP-q8So89eEgfYC{{iLBfCSy2J19ga7NpU!421 zv90^c8$)~)dp_Du%FuoUL;`yiy&VrUIdz|w4xO*ip^iEcn*qFi@KwAB^0;WGZdVM1 z$@wEPh>y3hPg%HoLb{a+*bf0hEGB)|_}Gl-L9Bp%juMJA`q^wt*?-{m3` z6EnSqA|*BcRWS$wy69Q<3)G>x$Y9W~EgojA?TfycuMY|;3)OekZ*1^m%8M%QhQGWhA3y*LI z@|fdK2wOM94y3#)v09`yLq8m$vqyj#M)^Q*qcEsqn*Lew=fZDO>M>kw-!FAu^-~+H zwb0CdG(yY#K#S$UME}9M6^vqd=W>(u@$KJz-*sm%>n#eVom8`WrZbA{^YlXLx#bGN zrKwuBNcy?!mha6Sav@!ny6jeYuN5sSFkAjk`Yhy7Q&2^L6ML(q6b7eV(grL)er~`# zX80j7SVSA`{&bS|n2t!Lk7&$KMtQD)w|Bnp$A0xGMJpx_k{vy*8txKxN!keZhkX9B zW}_k>Y^zpU#@1!T(&|a7!NON9KvYc{=P27Fmb-U1{)eCGnPd2q&*BcS`A$ zMuWbJRdrV|abO6^A9ing;HhMdRRTz-3ov;;NC}>q_+_bIGwj!LB?RC(^!$r3?!wQz zt9-e;FDoqIhzLGx$|+nIhs)PT+yjd^4KPC8ays=kE_IB~%>ni`Mmv1}Bki{Fjt zRh4s{>9|f%>|Y;yRZnl$i(m0L$=?~%nnCWSn81Ab9V}dHW+7^MU4O=+f<>?WxUZ(n2*R+2eo0DSoI`=9Y)Wg6I1k#xENc~~_}FL(#v z^L@%qnZ~@#tJLv$G7sWR-+QnBMBczlb?(b(OlI4-dP&PVt}HO8(cCh{xD-lR6-aF= z$AvL}A2vM8d(hLnl>NHt>)1Cn9$t!4ZqAg#w+7KPgN-4l{?&_tp~0Pv+oQEO2rWU} zA_w!4m%uwIN%X7o-a;x2z1_HBPdHW5i!iED>YpEOPW~Ucp@4r*>2KFJA@3fP-Ss2K z0OeCWIit>7+!6PZwLY?I0HQpD{6tAGEMs+%e*(^dw^n9cbG2R|e_*ds#r_xK;iR*O zbpt4&)w)uRzyk5bVIi(tvj;NCD>HAH(B7R4>%-=w&OZRymwzt43;f$u024NO`7jgu zMcXZ?geuLg*G?jVosWMduHiHq+qhNg_rEopmgwZyFm^pKDdR%E;pP2^F2f0%6Tg$z0e$hUfIr9Jk8P_ZCaq2I0x#bG?UU1 zLp(R*{3!f54x;C&Hp6=KF8U{v5oczY8>8}e&aVFvQ84eRao5d6ftj@~#)^w3`;CRJ zPqAH@ku81vJB2Iy&jf+HkYq3G?|*-s7M|4op%4Vd6~9c0xA$oJGVqr+{#9gzk?fb7 zD4u5`m#OBcf*PS6n11^DF1L5o=z-{`a^tL^O7mJZUk_2njy^&$a_mLzqhJq%fjXcU zMB{)OqVGtUymPcJXRwr7&dbz|d&o9-E|6Aekxb%+7NOM5wnk|MHBoHE<_F`AMYyDf z#tw#l`w;z4qLU&H`D(A6ledvWca_xibx^gS2N9mMQ@JnQbnsR(zB7x$;ijd zv6IYq*pnik78~Yh6inR{wb>i$v?C1%2L{b7$VrowU~pnjc`$5qveM%cIGe?weHN^4 z+w&_blTkl4mwt4=M2O26Y$%JCPj6ghJPT|fTY-Kz?3 zQK!ssEdjCWnw=A})R-0YTK>x8rs|7&<#@$$RoT{-M5Z%eC)M%^X(>0Z^&y)U z2R-VZ?R42>WZi|?*Y0VkECM+2c0|`fM0`oit!8S=N20C8J(hPwGi*IAp=4$TGZFf- z`BqQu?Gdt2cEeL%nFbz2COtgUT=q%KxZ@tuewC1Q#dM|10D>Ew>h!JybLPdk-M;!~*B88f=a)4XxA}XsEa*T{> zd38B_W@ogZ_78`5TpC4E@?w?~R8}r*?_1p=1T+i(A9aM@$1e6fcRL%`FQ{%i5SKM_ zGicXdLktEOe0A-dGH@;Vwn`?K^Lr0m+1@A1kT8%)Ja}U3Q_PAMk=fd}A`XZpkbIBF zv1AmOw6ml1x=Tx}sm~y!<(Q#DjAhEwEfMV>E!(~@5OnV-MlbIn@)dQ+L<8*b`$Otz z^cuXNO56~5W7FC*!R*U(JCqeH5T#{>gx1rui1IU^hF@g?_X z9uhxkeP2*U1_hV67dIPi5U>9ZzkVZZk%V=C&SI(kVmA-}WvXwnRVFjookw>xqHRFR zq;B@~WV^aw5rNBl{y~fIE3Pr|Nn{K+@9pn1ig=XGGtv2%FvyrHf0Sc=FTa8lOeMkZ z0XeRO;0ejUzfJbWUR$B7>pY=|yYJt`=1&U!j>}Ym0v@A^6R%t@W97p1I*>D?rNGjA z)4Kb50tH5BcxE>{_2HN`D?XSnl8gVPAQr0i#Wh;n^fOr-*1ly8tMOiWgB|$Jk9+Pe zBu;{}ZDg~_^5BqaGe2(=;OhvYZbiDBfy_J0@rZgudz5VM06xmtwAISFVaz$>a+?!` zF^5a9I~&`OK}Gidpm?e2dMKZHZ{yM#JeXyUearm%f@ix9S_FHZy}~F6JCDGt1&B0x zIksQGo2-}@`M{Jxq1+C71Bp6^yp=<9ngyOyTVzT=vytF zG4WE)NQnG_fC#ifgSX`X8l5IsZ4HQ-cHivGGkm@R{VCsd*XwrBI_F8HB>g%ti(3bu zdOWmtaTw^S^`}`MaM%fSnmTh;4)jUXftmkmlQxh)Ov>v1HMWFy%DYsNjlZLl|H2BS zou~)X3@2e2`_mpaT(Ub-Hy8G0uM}V}n3{&xCjMBFrScX|>08Pw0r`F-RxLm#^C3O; zfxi91>$|A_{9eU5f)wjB>>U3v`~Kh<#*I&&MG(5cg8Psy)*~uR;GN@Ydxr>=N*fqX!fGX|C+@af@Kcy1zj^YEta- zghA3G2VzH?`}=3-l1P*nBVx0@sX<%^V`9ZMY?}+rD^3G873)X#+Z+~IDbM+*G$5xe z1By5{;PBucMp{rtk?QdFTHV4}0g=wf`fo-dagP`qw4qt*-igIq31Da)#xE{xhPIq? z)4F+`3M8P7)(LU=X2*zD*vB)2=~%ftFpG1^{CELMmN1BS*D4+vey;5_%0#xO(GHqs zr0E8K-ItGGB%Q+k@*5?i*(okTWz0>K3THJ86Ya?07%htb3uy&#M^B*a^NWYSn$4o; zd%n!j2BH|k)k<@Re7y35j8l1Gq>F!^;_`ja4tqs5m-YC7QHPmga>U=byl5Zpd2!Wr z;LZjt?Z}; zuXMuXc?MK0Bo%);rYZaWkv)%QNZOhE_$WAk%Chp2pDUa(X}qB{tM~eZZnz+V$QNMo zJ(svZJk)H?D=7~;N@dyzO6+T91wA-E9~ExS;a=46({K4;-@;EA706uc{w7lepY z^zbgeV>&W6^j&Qiw@9{jcs+Y@fR+38q1DkXhOsF|%jC#W>C+NIU!axRo8{LhD47VnBxpuuibx#ZWx%Y^G5(NKq!n%S0P~8678To z{=&z}9_4#|(J*i9XR9#t?n>tADdUl@pp*FU`>l+}_&L)mg7@8pmYb{0>k?& zchf=V+acQs{RK02I0>!QqjyA$JQ70?vaZQ-A|WaIEE2~~FxQz!7};3fDQgdy>#nLU zXM|oY*oYo`Eb$$G$WeA*n4V{gHV`OKc^83->#OyAr$Cg)-7%g*_xIC5AaCCYkSp>X zT!2kr;b)F6y8?S8(H;gLX}ouq9@)q;MdXVAf{q*+kt{%c!aBg0!_VlLf&{X_BgLL@ zc4Wo!TI`$WnvAGf_p(03M{Kb@l$vU|+`u%eez>+jE&znRo^Q$OdzuiWSE|h5JM@HK zw7y=Djd6b>@H}0n1ghXzkW91`$%sfFHDYL+)g+xPb8Iw%*yNLcp|?_xkYhxR4}9(9 ze*N3YcwhN)XR8%k+?$w;%LW<`@S-^Xz?Vd9uFVxBragR>r9PLeW%}x`PhK!Ps>B?l2?e$2N z+PrneT060;ldNHOafAtr&BUekZxVA7JSobHN32&Li!WMZ%2SdeXv7WtXcuz(#5GH_ z;Hq>UQ?SKA&qWpzcnAZ^Q5gW0wZQ1xQC%pZ-lnk>xw zoyXB=*3cs@4ZqT~uUFQ%PXeXax{l44pU(C4Re6P_xY6-#+}Z(?2Xc&1zfjdZhPKs% z6PM+Xokr(NfL8>I7d+?s#QPHX`^)7w$;kL&0|qY>fuq)j$R-yMTOe5p*B)|m(P>yT zJ_gl85|RdE8FTr?Rut9da|D&@WFqM51`{Wd+RkjY-c3G7cB5H*rlC_71y1KBoCpWuJzjQ}LRn?9MD`_9|;FkbvaB*RKHW5vE zHUsoNFh(~6=Ms`zeys$Ta!NoSZDedJwB+UftXMt2-HG*_LH`%)x{_G3l~skYrZ(O$ zk@)B(0=QtE#y&JE1U*Oztq!FBbraA9FV zh^nGgzEtN2bY0zWlZ7u6=N|w|2{Tr?r?8^M{7GG-UFSe7n0>qRoge1sL8FD-6~Zz_ z9^5{=H7x!5y`w%4JQoKNE_4mBFs?!y%(T19W&)*y>Ef*40d6v&^W6T*WX5iOL9<+o z2^)nIa8B?<`<1<^sqN;ll*jM-Yu)K*Y({~|peib8He1}pJ%?mM@Ez!Wt>mJ?eM7B4 zhPGP_!Ds5pi2}(&IRtY#%x{BzmGw+UdsU)^rn`VK+^|nU`6GcY#5phC6|zb3FV2ut zQqA6FjbLG&^(jF0I;4wG)4gC0pw5aJ+;;`&_JLi*P<}WB6;@%Kui_Z>^aB^200!wc zgdzHSA|QMRy=(S{kx4|L*AwJQH@wkbgf6Edr&e1?Fwq;(=Z%zOtp#7hOOqLep+29O z3(DxaoCHC~+Iasl8q{7#a+?wK?uY`8fJWYHkkx~8fQ&)xmOyQjwYTx`hj@0u7Se_X zGa7PMVY2Vq|FJ**<827aKMFivP`yhWKeXhp){EwE6y_8x->Nn+YrR${h1dXL1*U6A zU#t>?4(o}htFCNK)rInqj;<2{F+9*>iG1{p?^YZmrNeuCD?c!V=6{fs!%AkGQa*gH ztr2Tkr+V%U2Nr+?8Vu(+uKKu}Pue0ltU`fAHn2iE+>EBqNG!SJpA?c}`;V$@;wn>( zs8k_`N!itscn8e{Q$KCE!K$R z(%`}jC#565V^2VvJfLK&mdEw!1nGLdJl`k634y-ovJXWqqno;;1bfX96!h zp3e6Tburl^CYKvcsSr-22|(y5Ipt{zT%zkeAhBt*uAe=31<>5&hVV0-*s7W6TIWOV??45(lE&%s)f?F3N43 zD=M7D{dGUlA9AH}EniLg`g9Rz`&VS+m#mFw(H-|3*~@nKEOn%vVYi1{cfHa%Zwb%5 zHMt*8V0j0w&NsD3Ags?7*T93=*HU;0yO}|>-v%pgx4GR_uQQ6zv0nm-*L?W3HyL-Z(x=$WLUkb zP^QlNnE)udGEi+zLN#T=7OY>tOks^l1&u{z^Z8c}G7yT6LHgepd`9*S3c>cMd=jl; zB9h1BF9}eZ^n&HiU2a#DdVzUd_2_H^bCh!R?q-bhmFe;XP0{r9zYz zS3L;JvGK6q?3bTphI6fkO5!|`TY3E+`rRVCob>0EP?4L2dC!AYh0Ev)sFi*tQ>iFJ zQFzW#`s;Y<+#rVC4FltLkrEl9SZaauHDu@&&-s+{5Aw%B9}o_=#eOPbj40HRsPS%E zrX=VN@j{n-#*t#3&{;(8u_MYMy5V9OGd6=Y#TIMQhaw$%7zzdO~-a& zmo--f*$Va0Zt2y(4<9gL4Zd#}kj?fweeJv{*<%-gpOCsM|8}^Qb{y<|AA4%4$yuU9 zQOuCO463Yu+GynwaF7OY9GiiHVrG$t2U9azR%9K&0m}V3D9K!9)jAd)p$iKT621Rx z@8cpgagM0)2?M?ULkC5FXMIo*ni8bBqCx~<$ytZ@_nYp2#^rV)Fxi+n-CC2knHfM* z4(%wZ4OvnrH21+n)13mtM81;QvE zf4eJjM7uNzguQl$Lui!Z$wtz7|8~hQQH;K^vPBghGUxkc$h>$%LYqH1dF&iUPHGpM zQ<~D$2OZBmNK`3LoY!XL7fQB!5>mlzKRADMg!;uZuKhT$78s!=N{jux0UBkP->)ax zTS+2`;Wf-nwCdvS_8HCdGz8^AwtqM%u{g>45orltY`5$mWod9bK~lQKt38$Xoc&yV zHOu877C5LVTUo*XF4F;b6p;|spB>QQEhX5&jDBfg;v@mWuM7B+?&rI0)kqK!vdV{g zfs(Kj{ny05vD4#BEwP5>acHe>O*GIT(C;55+#b0I9HTtc%aE#u0P@BNOYy*kV_=Lbb3E6f4d{0bBvWp=*{!DA8zDm*>MS#3_}7{< z?xMrougr<`pUCMVPna}H8@5_cINdOH%VbWz01Wbh%`UO>RfrY zlfQsX$8H@i5ao`DyH{5aCHwI|(8q)nIr0Rv%hE!f`B&ylHe9He(~-ucf%8BECI_A4 zpgv&F(awf05;yeow&7^d{`K!GRh}~=NVO2!(f}PnYvqtCtI(6_zqVqV&+J*H1Lv?T zPIA<3?iAHo+|?(}e9;UJJQqWPSYTY0SM671B+OAt+(xv| zr-#scfZA|`WTqTs!(-_B1>9Qtz;w~RP%4IQ-g7^7=dq-ejIFDidiiJAUWR}%8dWM` zEzVm^#g8Lly&xfj_)-jA{I89v)Ef6a*<KimIgn4f{83h8i;z`AW9xA<*s4gW;!CT$RX9qhiS2KTHP;~wX z?RlQ1So_s{j3}_Dm*%&AF^v3)yEhy-iv5ZEnrEKxq%w(C%82MU;~FI9eJ*@}9c?CBd4bbko}Fl zqErt{#Dx3h%}dz6ksPn&VO#O1apA=;80flQ_v4ByY03k%#wR5HdK`gwF;K3+@RwdR zfZ()vKJF0dx7+*pw7aj5`>m8#bk_0Us9$`Imm8jCCqv({DGV#=Fo-0hF39u)I^F!|izV*sAy&=4kS8Y^$la-^l6v%Dm zp+p{4ez(T-C8Ga2+#t4@Db{8-vKUu2OYWjASLB_yUC3Wi=Z4U0`CF#jogg3Kv-BG! zmO<4tG7>jZ;tmfco2gz3R$2T?PMuhx6Gf@={ioQ+-4MaLVr{WAS*biieJ0__uQ!5o9t`e7+@J&Nylws&k)xdJre=m=C$IJXM#*m5^1) z?JRhj!c6dT(}AQc*kM;4A_XIJEz;RX2ht^piQ2JtE$fH&pMFyqG-fiWq`fCvwJ2hX zEy-se%>QOm)_dh&B%nuWj;8ZAIElQ5n)yq5C}6L#Q!K%Ox4?jp$kG)fD|C7LUGQ~+ z(z#taYk5umH*@*n#ZUS5Ic!NC11n*S0YXlC@v)I)#=$K3W70;}jbK|(e z%RQOfw%c6{EdD9PL|k@*SC0j^^utMf$eHxdy-c%Hk* z4b#00fb4}~5aS^Mna0NkYAD!&h4sQ5U||G=rjAoW^uFPV|PDr`VfU4p=uxB z;E}$J!L58F5nZe^T_>Yjt(QX-L&jcq?dcs2&Tu@z%$6AWK7}sd+Qm(H l)3*-&f4W^e2>^dUvazlA*gCS7|L4`bw77y;jfhd;e*^ls@%sP( literal 6292 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 P@MjiR&}KCz9?Aa$!yx$- literal 6101 zcmd5=RZ|-bu*JP-kzz$kaA<+x8XStdQwYIbgR}&f0>N6mxVyU*N@&sY1qg1%o#J+T zf5Lsc54&e}XJ^iwhdnd9vD%u-F9>J}(9qCcsH!OF{zK^h1|H78%y5^e`VY{(b(KMA zwG;GvXlT?)stR)Y0hUL(_~vQIyOB>jA@)(Pq7)U-d(^_R!ouR(x4bMGJ4;vId#jFT z^R^?$3#*-%W14I2AlHU%RhGQoRStShW9O!BC@T$YAUCzXwj3!IBnq{1@totI@!?Iz zpIjaLHK}hT-{iKdC$Fm~FLGF6^t3%#Dn;%EOR@-fwk$iG`4>Dp6e~-X;!iSH7z31KjGmSE*i+aUo)nI4o_L+>i`U!;{JDDmJ&HUW)O%D7%?z8KaJr$yVWL& zBN}wn$5131biSOwOC07%x{E>jQEM64MHbsXoub84WA1Nm; z$$u8Vd)6#YOT=Z~lyfBc^i`dc18@1e&J!jVhu5roa64kv&V2GA4ClPvQ+<=t@Rz9C zI~dyDoQ|12_JAKoFdFNv&+@j3oX9w?&{piHk4?Z4?&AW53|Z_Y5F)|wyDkOZZI*Vh zgQ2y&=EPy;ff!547fKI!YN~ytBUGGEvKmEW7vscKFjOS2o5VIH`yOMmiL`A`!OC^Y zwe~-wU`5bwDJHH9ZHp`sBmQZifh6!!n%CXn1XpqAz@YTo&)ciDhCgGKe=L;G^wy6X z@i`F7sf_d*c-NU-YPcKM7*m(04S$p|8{E*bJB)t*b$kgfK{~xqFzKkKV0#FaSAK4i zAmwJXhTCiERmdCe`*zBvr4ylE>;LYW2#}?tY6aEJ4cOrGSwu*tNFAd4Aq)oyEDW@B zH0gO$nS<~%73*q+`@sUxjPoDL{~8FUp2g3&%~|!7Je{)G3c`en*~0G_OM4TiIXupX z#M08zezBtXU<2W8+@^{QbV~RDQnf%q4N!>6&tK}ww&d^6S;YD0MhPn0uR2|p^gKW+LHp(I|Axu5m;!pXbN2v z9~2c|Rr<6}7wB>(zw;J)YOu!UD4B9XPVH4Pn3U@i;9*1#>jo{w#SkeDQ}(bXn%0D& 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 By0icQ diff --git a/src/styles/images/tools/mtk.png b/src/styles/images/tools/mtk.png index d7df1cf967d4a930ad9a3e7f2612f20003ab68e9..22851b6b24186a9afdde1d159238163a3f1bacac 100644 GIT binary patch literal 2353 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 BQF8zQ literal 4455 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 literal 5527 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 Bo9F-l diff --git a/src/styles/images/tools/sca.png b/src/styles/images/tools/sca.png index 5dfd540113e76b07b854498cefcfe02aee4092a8..231817557e06ad05bb27b0cf904b18290c736b9b 100644 GIT binary patch literal 2580 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 F{s$G2+0p<2 literal 6614 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 CrQKNo -- Gitee From 49fc72a06251179a8fbcacb3671d12a4bdb335a4 Mon Sep 17 00:00:00 2001 From: Junru Date: Mon, 21 Mar 2022 09:29:24 +0800 Subject: [PATCH 2/8] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=EF=BC=8C=E9=A2=84=E8=AE=BE=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 1059 ++++++++++++----------- package.json | 6 +- src/templates/components/docToc.js | 90 +- src/templates/components/remark-html.js | 143 +++ 4 files changed, 733 insertions(+), 565 deletions(-) create mode 100644 src/templates/components/remark-html.js diff --git a/package-lock.json b/package-lock.json index 1540fe81..99daf672 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "mogdb-docs-4", + "name": "mogdb-docs", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "mogdb-docs-4", + "name": "mogdb-docs", "version": "1.0.0", "dependencies": { "@docsearch/react": "^3.0.0-alpha.50", @@ -25,6 +25,9 @@ "gatsby-remark-prismjs": "^6.7.0", "gatsby-source-filesystem": "^4.7.0", "gatsby-transformer-remark": "^5.7.0", + "hast-util-sanitize": "^4.0.0", + "hast-util-to-html": "^8.0.3", + "mdast-util-to-hast": "^12.1.1", "prismjs": "^1.26.0", "react": "^17.0.1", "react-dom": "^17.0.1", @@ -4894,9 +4897,9 @@ } }, "node_modules/character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -9322,6 +9325,85 @@ "gatsby": "^4.0.0-next" } }, + "node_modules/gatsby-transformer-remark/node_modules/character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/hast-util-to-html": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", + "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", + "dependencies": { + "ccount": "^1.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "html-void-elements": "^1.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0", + "stringify-entities": "^3.0.1", + "unist-util-is": "^4.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/hast-util-whitespace": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", + "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/mdast-util-to-hast": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", + "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/gatsby-transformer-remark/node_modules/remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -9336,6 +9418,38 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/gatsby-transformer-remark/node_modules/stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "dependencies": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/gatsby-transformer-remark/node_modules/unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/gatsby-worker": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/gatsby-worker/-/gatsby-worker-1.8.0.tgz", @@ -10029,9 +10143,13 @@ } }, "node_modules/hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -10081,26 +10199,80 @@ } }, "node_modules/hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", "dependencies": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-html/node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-html/node_modules/comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-html/node_modules/html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-html/node_modules/property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-html/node_modules/space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/hast-util-to-html/node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-parse5": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-6.0.0.tgz", @@ -10118,9 +10290,9 @@ } }, "node_modules/hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -11590,11 +11762,49 @@ } }, "node_modules/mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", + "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", "dependencies": { - "unist-util-visit": "^2.0.0" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -11712,18 +11922,68 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", + "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", "dependencies": { + "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" + "micromark-util-sanitize-uri": "^1.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.2.tgz", + "integrity": "sha512-Y6+plxR41dOLbyyqVDLuGWgXDmxdXslCSRYQkSDagBnOT9oFsQH0J8FzhirSklUEe0xZTT0WDnAE1gXPaDFljA==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast/node_modules/unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -16333,94 +16593,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/remark-html/node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/hast-util-is-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", - "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/hast-util-to-html": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", - "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", - "dependencies": { - "@types/hast": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.2", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-html/node_modules/is-plain-obj": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", @@ -16432,99 +16604,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/remark-html/node_modules/mdast-util-definitions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", - "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", - "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/mdast-util-definitions/node_modules/unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/mdast-util-to-hast": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", - "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", - "dependencies": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", - "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/remark-html/node_modules/stringify-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", - "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/remark-html/node_modules/trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -16552,45 +16631,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-html/node_modules/unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-html/node_modules/unist-util-stringify-position": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", @@ -16603,33 +16643,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-html/node_modules/unist-util-visit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", - "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-html/node_modules/unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-html/node_modules/vfile": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz", @@ -18655,19 +18668,27 @@ } }, "node_modules/stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", + "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", "dependencies": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/stringify-entities/node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -19643,18 +19664,21 @@ } }, "node_modules/unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "dependencies": { + "@types/unist": "^2.0.0" + }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, "node_modules/unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -24460,9 +24484,9 @@ "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" }, "character-entities-html4": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", - "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" }, "character-entities-legacy": { "version": "1.1.4", @@ -27850,6 +27874,61 @@ "unist-util-visit": "^2.0.3" }, "dependencies": { + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==" + }, + "hast-util-is-element": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", + "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" + }, + "hast-util-to-html": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", + "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", + "requires": { + "ccount": "^1.0.0", + "comma-separated-tokens": "^1.0.0", + "hast-util-is-element": "^1.0.0", + "hast-util-whitespace": "^1.0.0", + "html-void-elements": "^1.0.0", + "property-information": "^5.0.0", + "space-separated-tokens": "^1.0.0", + "stringify-entities": "^3.0.1", + "unist-util-is": "^4.0.0", + "xtend": "^4.0.0" + } + }, + "hast-util-whitespace": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", + "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==" + }, + "mdast-util-definitions": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", + "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "requires": { + "unist-util-visit": "^2.0.0" + } + }, + "mdast-util-to-hast": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", + "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "requires": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "mdast-util-definitions": "^4.0.0", + "mdurl": "^1.0.0", + "unist-builder": "^2.0.0", + "unist-util-generated": "^1.0.0", + "unist-util-position": "^3.0.0", + "unist-util-visit": "^2.0.0" + } + }, "remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -27859,6 +27938,26 @@ "remark-stringify": "^9.0.0", "unified": "^9.1.0" } + }, + "stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "requires": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "unist-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", + "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + }, + "unist-util-generated": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", + "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" } } }, @@ -28385,9 +28484,13 @@ } }, "hast-util-is-element": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", - "integrity": "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", + "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", + "requires": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + } }, "hast-util-parse-selector": { "version": "2.2.5", @@ -28421,20 +28524,52 @@ } }, "hast-util-to-html": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz", - "integrity": "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", + "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", "requires": { - "ccount": "^1.0.0", - "comma-separated-tokens": "^1.0.0", - "hast-util-is-element": "^1.0.0", - "hast-util-whitespace": "^1.0.0", - "html-void-elements": "^1.0.0", - "property-information": "^5.0.0", - "space-separated-tokens": "^1.0.0", - "stringify-entities": "^3.0.1", - "unist-util-is": "^4.0.0", - "xtend": "^4.0.0" + "@types/hast": "^2.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "html-void-elements": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.2", + "unist-util-is": "^5.0.0" + }, + "dependencies": { + "ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" + }, + "comma-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", + "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" + }, + "html-void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", + "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" + }, + "property-information": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", + "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" + }, + "space-separated-tokens": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", + "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" + }, + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + } } }, "hast-util-to-parse5": { @@ -28450,9 +28585,9 @@ } }, "hast-util-whitespace": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz", - "integrity": "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", + "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" }, "hastscript": { "version": "6.0.0", @@ -29522,11 +29657,39 @@ "integrity": "sha512-xbEFXCYVWrSx/gEKS1VPlg84h/4L20znVIulKw6kMfmBUAZNAnF00eczz9ICMl+/hjQGo5KSXRxbL/47X3rmMw==" }, "mdast-util-definitions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz", - "integrity": "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", + "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", "requires": { - "unist-util-visit": "^2.0.0" + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^3.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, + "unist-util-visit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", + "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^4.0.0" + } + }, + "unist-util-visit-parents": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", + "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + } } }, "mdast-util-find-and-replace": { @@ -29608,18 +29771,54 @@ } }, "mdast-util-to-hast": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz", - "integrity": "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==", + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", + "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", "requires": { + "@types/hast": "^2.0.0", "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "mdast-util-definitions": "^4.0.0", + "@types/mdurl": "^1.0.0", + "mdast-util-definitions": "^5.0.0", "mdurl": "^1.0.0", - "unist-builder": "^2.0.0", - "unist-util-generated": "^1.0.0", - "unist-util-position": "^3.0.0", - "unist-util-visit": "^2.0.0" + "micromark-util-sanitize-uri": "^1.0.0", + "unist-builder": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", + "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" + }, + "unist-util-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.2.tgz", + "integrity": "sha512-Y6+plxR41dOLbyyqVDLuGWgXDmxdXslCSRYQkSDagBnOT9oFsQH0J8FzhirSklUEe0xZTT0WDnAE1gXPaDFljA==", + "requires": { + "@types/unist": "^2.0.0" + } + }, + "unist-util-visit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", + "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.0.0" + } + }, + "unist-util-visit-parents": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", + "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + } + } } }, "mdast-util-to-markdown": { @@ -33031,134 +33230,11 @@ "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==" }, - "ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==" - }, - "character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==" - }, - "character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" - }, - "comma-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.2.tgz", - "integrity": "sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==" - }, - "hast-util-is-element": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.2.tgz", - "integrity": "sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==", - "requires": { - "@types/hast": "^2.0.0", - "@types/unist": "^2.0.0" - } - }, - "hast-util-to-html": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.3.tgz", - "integrity": "sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==", - "requires": { - "@types/hast": "^2.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-is-element": "^2.0.0", - "hast-util-whitespace": "^2.0.0", - "html-void-elements": "^2.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.2", - "unist-util-is": "^5.0.0" - } - }, - "hast-util-whitespace": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz", - "integrity": "sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==" - }, - "html-void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", - "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" - }, "is-plain-obj": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.0.0.tgz", "integrity": "sha512-NXRbBtUdBioI73y/HmOhogw/U5msYPC9DAtGkJXeFcFWSFZw0mCUsPxk/snTuJHzNKA8kLBK4rH97RMB1BfCXw==" }, - "mdast-util-definitions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.0.tgz", - "integrity": "sha512-5hcR7FL2EuZ4q6lLMUK5w4lHT2H3vqL9quPvYZ/Ku5iifrirfMHiGdhxdXMUbUkDmz5I+TYMd7nbaxUhbQkfpQ==", - "requires": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "unist-util-visit": "^3.0.0" - }, - "dependencies": { - "unist-util-visit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" - } - }, - "unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - } - } - }, - "mdast-util-to-hast": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.1.1.tgz", - "integrity": "sha512-qE09zD6ylVP14jV4mjLIhDBOrpFdShHZcEsYvvKGABlr9mGbV7mTlRWdoFxL/EYSTNDiC9GZXy7y8Shgb9Dtzw==", - "requires": { - "@types/hast": "^2.0.0", - "@types/mdast": "^3.0.0", - "@types/mdurl": "^1.0.0", - "mdast-util-definitions": "^5.0.0", - "mdurl": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "unist-builder": "^3.0.0", - "unist-util-generated": "^2.0.0", - "unist-util-position": "^4.0.0", - "unist-util-visit": "^4.0.0" - } - }, - "property-information": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.1.1.tgz", - "integrity": "sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==" - }, - "space-separated-tokens": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.1.tgz", - "integrity": "sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==" - }, - "stringify-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", - "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", - "requires": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - } - }, "trough": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", @@ -33178,29 +33254,6 @@ "vfile": "^5.0.0" } }, - "unist-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", - "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", - "requires": { - "@types/unist": "^2.0.0" - } - }, - "unist-util-generated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", - "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" - }, - "unist-util-is": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.1.1.tgz", - "integrity": "sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==" - }, - "unist-util-position": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.1.tgz", - "integrity": "sha512-mgy/zI9fQ2HlbOtTdr2w9lhVaiFUHWQnZrFF2EUoVOqtAUdzqMtNiD99qA5a1IcjWVR8O6aVYE9u7Z2z1v0SQA==" - }, "unist-util-stringify-position": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.0.tgz", @@ -33209,25 +33262,6 @@ "@types/unist": "^2.0.0" } }, - "unist-util-visit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.0.tgz", - "integrity": "sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" - } - }, - "unist-util-visit-parents": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.0.tgz", - "integrity": "sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==", - "requires": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" - } - }, "vfile": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.0.tgz", @@ -34569,13 +34603,19 @@ } }, "stringify-entities": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", - "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.2.tgz", + "integrity": "sha512-MTxTVcEkorNtBbNpoFJPEh0kKdM6+QbMjLbaxmvaPMmayOXdr/AIVIIJX7FReUVweRBFJfZepK4A4AKgwuFpMQ==", "requires": { - "character-entities-html4": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "xtend": "^4.0.0" + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "dependencies": { + "character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==" + } } }, "strip-ansi": { @@ -35283,14 +35323,17 @@ } }, "unist-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz", - "integrity": "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unist-builder/-/unist-builder-3.0.0.tgz", + "integrity": "sha512-GFxmfEAa0vi9i5sd0R2kcrI9ks0r82NasRq5QHh2ysGngrc6GiqD5CDf1FjPenY4vApmFASBIIlk/jj5J5YbmQ==", + "requires": { + "@types/unist": "^2.0.0" + } }, "unist-util-generated": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz", - "integrity": "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.0.tgz", + "integrity": "sha512-TiWE6DVtVe7Ye2QxOVW9kqybs6cZexNwTwSMVgkfjEReqy/xwGpAXb99OxktoWwmL+Z+Epb0Dn8/GNDYP1wnUw==" }, "unist-util-is": { "version": "4.1.0", diff --git a/package.json b/package.json index d62a9219..1665a4c8 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "description": "mogdb-docs", "author": "@mogdb", "keywords": [ - "gatsby", "mogdb" + "gatsby", + "mogdb" ], "scripts": { "develop": "gatsby develop", @@ -32,6 +33,9 @@ "gatsby-remark-prismjs": "^6.7.0", "gatsby-source-filesystem": "^4.7.0", "gatsby-transformer-remark": "^5.7.0", + "hast-util-sanitize": "^4.0.0", + "hast-util-to-html": "^8.0.3", + "mdast-util-to-hast": "^12.1.1", "prismjs": "^1.26.0", "react": "^17.0.1", "react-dom": "^17.0.1", diff --git a/src/templates/components/docToc.js b/src/templates/components/docToc.js index 9468407b..03274e64 100644 --- a/src/templates/components/docToc.js +++ b/src/templates/components/docToc.js @@ -3,94 +3,72 @@ import '../../styles/components/toc.scss' import React, { useRef, useLayoutEffect } from "react" import { remark } from 'remark' -import html from 'remark-html' +import html from './remark-html' // 版本切换 const DocToc = ({ tocNodes, pageContext }) => { - const { lang, version, docType, fileName } = pageContext + const { lang, version, docType, slug } = pageContext const tocRef = useRef(null) + const tocLinkPrefix = `/${lang}/${docType}/${version}/` const _html = remark() - .use(html) + .use(html, { sanitize: true, tocLinkPrefix }) .processSync(tocNodes) - .value.match(/
    (.|\n)*<\/ul>/g)[0] const bindClickEventToTOC = () => { const toc = tocRef.current.firstChild - toc.className = 'top' - // 移除active const activeAnchor = toc.querySelector('a.active') if (activeAnchor) { activeAnchor.className = '' } - - // 处理第一层级 未所有不可展开的菜单添加类名 - Array.from(toc.children).forEach(li => { - if (li.firstElementChild.tagName !== 'UL') { - li.className = 'has-no-subject' - } - }) retrieveLi(toc) } function retrieveLi(ul) { Array.from(ul.children).forEach(li => { const first = li.firstElementChild if (first.tagName === 'UL' || (first.tagName === 'A' && first.nextElementSibling && first.nextElementSibling.tagName === 'UL')) { - li.classList.add('can-unfold', 'folded') - if (li.parentElement.className !== 'top') { - const icon = document.createElement('span') - icon.className = 'small-folded-icon' - li.append(icon) - } li.addEventListener('click', clickEvent) if (first.tagName === 'A') { - modifyHref(first) + checkActive(first) } Array.from(li.children).forEach(retrieveLi) } else { - modifyHref(li.firstChild) + checkActive(li.firstChild) } }) } // 替换链接 - function modifyHref(el) { + function checkActive(el) { const href = el.getAttribute('href') - - if (href && !href.startsWith('http') && href.includes('.md')) { - const name = href.substr(href.lastIndexOf('/') + 1, href.length).replace('.md', '') - const realHref = `/${lang}/${docType}/${version}/${name}` - el.href = realHref - - // 判断当前active - if (fileName === name) { - const activeA = el - el.className = 'active' - // 展开菜单 - while (el.parentElement) { - const p = el.parentElement - if (p.classList.contains('top')) { - break - } - if (p.classList.contains('folded')) { - p.classList.remove('folded') - Array.from(p.children).forEach(d => { - if (d.tagName === 'UL') { - d.style = 'height: auto; overflow: initial;' - } - }) - } - el = p + // 判断当前active + if (slug === href) { + const activeA = el + el.className = 'active' + // 展开菜单 + while (el.parentElement) { + const p = el.parentElement + if (p.classList.contains('top')) { + break } - - // 滚动到active - const tocColumn = document.querySelector('.toc-container') - const scrollTop = activeA.getBoundingClientRect().top - (document.body.clientHeight / 2) - // 处理兼容性问题 - if(tocColumn.scrollTo) { - tocColumn.scrollTo(0, scrollTop) - } else { - tocColumn.scrollTop = scrollTop + if (p.classList.contains('folded')) { + p.classList.remove('folded') + Array.from(p.children).forEach(d => { + if (d.tagName === 'UL') { + d.style = 'height: auto; overflow: initial;' + } + }) } + el = p + } + + // 滚动到active + const tocColumn = document.querySelector('.toc-container') + const scrollTop = activeA.getBoundingClientRect().top - (document.body.clientHeight / 2) + // 处理兼容性问题 + if(tocColumn.scrollTo) { + tocColumn.scrollTo(0, scrollTop) + } else { + tocColumn.scrollTop = scrollTop } } } diff --git a/src/templates/components/remark-html.js b/src/templates/components/remark-html.js new file mode 100644 index 00000000..749595b4 --- /dev/null +++ b/src/templates/components/remark-html.js @@ -0,0 +1,143 @@ +/** + * @typedef {import('mdast').Root} Root + * @typedef {import('hast-util-sanitize').Schema} Schema + * + * @typedef ExtraOptionsFields + * Configuration (optional). + * @property {boolean|Schema|null} [sanitize] + * How to sanitize the output. + * @property {import('mdast-util-to-hast').Handlers} [handlers={}] + * Object mapping mdast nodes to functions handling them. + * + * @typedef {import('hast-util-to-html').Options & ExtraOptionsFields} Options + */ + +import { toHtml } from 'hast-util-to-html' +import { sanitize } from 'hast-util-sanitize' +import { toHast } from 'mdast-util-to-hast' + +/** + * Plugin to serialize markdown as HTML. + * + * @type {import('unified').Plugin<[Options?]|void[], Root, string>} + */ +export default function remarkHtml(settings = {}) { + const options = { ...settings } + /** @type {boolean|undefined} */ + let clean + + if (typeof options.sanitize === 'boolean') { + clean = options.sanitize + options.sanitize = undefined + } + + if (typeof clean !== 'boolean') { + clean = true + } + + Object.assign(this, { Compiler: compiler }) + + /** + * @type {import('unified').CompilerFunction} + */ + function compiler(node, file) { + const hast = toHast(node, { + allowDangerousHtml: !clean, + handlers: options.handlers + }) + // @ts-expect-error: assume root. + + const cleanHast = clean ? sanitize(hast, options.sanitize) : hast + + /* -- 业务处理代码 start -- */ + + // 移除所有空行 + let targetHast = removeBl(cleanHast.children) + function removeBl(list) { + return list.filter(item => { + if (item.children) { + item.children = removeBl(item.children) + } + return !(item.type === 'text' && item.value === '\n') + }) + } + + // 增加菜单样式类 + if (cleanHast.children) { + targetHast = cleanHast.children.filter(item => { + // 处理第一层,找到ul,增加 top + if (item.tagName === 'ul') { + if (!item.properties) { + item.properties = {} + } + item.properties.className = 'top' + + // 增加菜单展开收起类 + checkFoldLi(item, 2) + + return true; + } + return false; + }); + } + + function checkFoldLi(list, idx) { + Array.from(list.children).forEach(n => { + // 获取ul类型的子节点 + const ulNode = n.children.find(a => a.tagName === 'ul') + // 特殊处理第二层, 为不可展开的菜单增加 has-no-subject + if (n.tagName === 'li' && !ulNode && idx === 2) { + if (!n.properties) { + n.properties = {} + } + n.properties.className = 'has-no-subject' + } + // 为所有可展开的菜单增加 can-unfold, folded + if (ulNode) { + if (!n.properties) { + n.properties = {} + } + n.properties.className = 'can-unfold folded' + checkFoldLi(ulNode) + // 特殊处理第三层及以后,如果可展开增加+小图片 + if (!idx) { + n.children.push({ + type: 'element', + tagName: 'span', + properties: { className: 'small-folded-icon' } + }) + } + } + // 替换a标签href + const linkNode = n.children.find(a => a.tagName === 'a') + if (linkNode && linkNode.properties && linkNode.properties.href.includes('.md')) { + const href = linkNode.properties.href + const fileName = href.substr(href.lastIndexOf('/') + 1, href.length).replace('.md', '') + const realHref = options.tocLinkPrefix + fileName + linkNode.properties.href = realHref + } + }) + } + + console.log(targetHast) + + const result = toHtml( + // @ts-expect-error: assume root. + targetHast, + Object.assign({}, options, { allowDangerousHtml: !clean }) + ) + + if (file.extname) { + file.extname = '.html' + } + + // Add an eof eol. + return node && + node.type && + node.type === 'root' && + result && + /[^\r\n]/.test(result.charAt(result.length - 1)) + ? result + '\n' + : result + } +} -- Gitee From 8b5382c0c42c7f03d8c4e5a49ea669adff770956 Mon Sep 17 00:00:00 2001 From: Junru Date: Mon, 21 Mar 2022 09:57:57 +0800 Subject: [PATCH 3/8] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/templates/components/remark-html.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/templates/components/remark-html.js b/src/templates/components/remark-html.js index 749595b4..00c1d3d7 100644 --- a/src/templates/components/remark-html.js +++ b/src/templates/components/remark-html.js @@ -119,8 +119,6 @@ export default function remarkHtml(settings = {}) { }) } - console.log(targetHast) - const result = toHtml( // @ts-expect-error: assume root. targetHast, -- Gitee From f27e33a130d4ec10fb32e0079e1121e7b1f285e5 Mon Sep 17 00:00:00 2001 From: Junru Date: Wed, 30 Mar 2022 16:40:31 +0800 Subject: [PATCH 4/8] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E4=BA=8B=E4=BB=B6bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/components/toc.scss | 20 ++++- src/templates/components/docToc.js | 97 ++----------------------- src/templates/components/remark-html.js | 51 +++++++++++-- 3 files changed, 70 insertions(+), 98 deletions(-) diff --git a/src/styles/components/toc.scss b/src/styles/components/toc.scss index 8dd509f0..d2855658 100644 --- a/src/styles/components/toc.scss +++ b/src/styles/components/toc.scss @@ -11,15 +11,20 @@ display: none; } a { + display: inline-block; color: inherit; line-height: 17px; &:hover { color: #FF6407; } - &.active { + &.is-active { color: #FF6407; font-weight: 500; } + &::selection { + background-color: transparent; + color: inherit; + } } & .folded { & > ul { @@ -30,10 +35,13 @@ color: #191A1B; > li { position: relative; - padding: 10px 0 10px 12px; font-weight: 500; box-sizing: border-box; + & > a { + padding: 10px 0 10px 12px; + } &.can-unfold { + padding: 10px 0 10px 12px; cursor: pointer; & > ul { margin-top: 10px; @@ -93,13 +101,19 @@ & li { font-weight: 400; font-size: 12px; - padding: 8px 0; + & > a { + padding: 8px 0; + } &.can-unfold { + padding: 8px 0; color: #303133; position: relative; cursor: pointer; font-weight: 500; padding-left: 12px; + & > a { + padding: 0; + } & .small-folded-icon { background-image: url(../images/icons/minus.png); } diff --git a/src/templates/components/docToc.js b/src/templates/components/docToc.js index 03274e64..7165c7ee 100644 --- a/src/templates/components/docToc.js +++ b/src/templates/components/docToc.js @@ -11,18 +11,14 @@ const DocToc = ({ tocNodes, pageContext }) => { const tocRef = useRef(null) const tocLinkPrefix = `/${lang}/${docType}/${version}/` const _html = remark() - .use(html, { sanitize: true, tocLinkPrefix }) + .use(html, { sanitize: true, tocLinkPrefix, slug }) .processSync(tocNodes) const bindClickEventToTOC = () => { const toc = tocRef.current.firstChild - // 移除active - const activeAnchor = toc.querySelector('a.active') - if (activeAnchor) { - activeAnchor.className = '' - } retrieveLi(toc) } + // 绑定点击事件 function retrieveLi(ul) { Array.from(ul.children).forEach(li => { const first = li.firstElementChild @@ -37,30 +33,14 @@ const DocToc = ({ tocNodes, pageContext }) => { } }) } - // 替换链接 + + // 滚动到active function checkActive(el) { const href = el.getAttribute('href') // 判断当前active if (slug === href) { const activeA = el - el.className = 'active' - // 展开菜单 - while (el.parentElement) { - const p = el.parentElement - if (p.classList.contains('top')) { - break - } - if (p.classList.contains('folded')) { - p.classList.remove('folded') - Array.from(p.children).forEach(d => { - if (d.tagName === 'UL') { - d.style = 'height: auto; overflow: initial;' - } - }) - } - el = p - } - + // 滚动到active const tocColumn = document.querySelector('.toc-container') const scrollTop = activeA.getBoundingClientRect().top - (document.body.clientHeight / 2) @@ -72,16 +52,11 @@ const DocToc = ({ tocNodes, pageContext }) => { } } } + // 处理折叠点击事件 function clickEvent(e) { e.stopPropagation() - if (e.target.tagName === 'A') { - e.target.className = 'active' - return - } - const li = e.currentTarget - // 折叠同层标签 Array.from(li.parentElement.children).forEach((el) => { if ( @@ -90,67 +65,11 @@ const DocToc = ({ tocNodes, pageContext }) => { !el.classList.contains('has-no-subject') && li !== el ) { - fold(el) + el.classList.toggle('folded') return } }) - - if (li.classList.contains('folded')) { - unfold(li) // 展开菜单 - } else { - fold(li) // 折叠菜单 - } - } - // 折叠菜单 - function fold(li) { - const start = performance.now() - Array.from(li.children).forEach(el => { - // ignore icon - if (el.tagName !== 'SPAN') { - requestAnimationFrame(function animate(timestamp) { - const elapsed = timestamp - start - const progress = Math.min(elapsed / 250, 1) - - if (progress < 1) { - el.style.height = `${ - el.scrollHeight - progress * el.scrollHeight - }px` - el.style.overflow = 'hidden' - - requestAnimationFrame(animate) - } - - if (progress === 1) { - el.style.height = '' - el.style.overflow = '' - el.style.visibility = 'hidden' - li.classList.toggle('folded') - } - }) - } - }) - } - - function unfold(li) { - const start = performance.now() - Array.from(li.children).forEach(el => { - if (el.tagName !== 'SPAN') { - el.style.visibility = 'initial' - requestAnimationFrame(function animate(timestamp) { - const elapsed = timestamp - start - const progress = Math.min(elapsed / 250, 1) - if (progress < 1) { - el.style.height = `${progress * el.scrollHeight}px` - requestAnimationFrame(animate) - } - if (progress === 1) { - el.style.height = 'auto' - el.style.overflow = 'initial' - li.classList.toggle('folded') - } - }) - } - }) + li.classList.toggle('folded') } useLayoutEffect(bindClickEventToTOC, []) diff --git a/src/templates/components/remark-html.js b/src/templates/components/remark-html.js index 00c1d3d7..1d4fb1bb 100644 --- a/src/templates/components/remark-html.js +++ b/src/templates/components/remark-html.js @@ -63,24 +63,23 @@ export default function remarkHtml(settings = {}) { } // 增加菜单样式类 - if (cleanHast.children) { - targetHast = cleanHast.children.filter(item => { + if (targetHast) { + targetHast = targetHast.find(item => { // 处理第一层,找到ul,增加 top if (item.tagName === 'ul') { if (!item.properties) { item.properties = {} } item.properties.className = 'top' - - // 增加菜单展开收起类 - checkFoldLi(item, 2) - return true; } return false; }); } + // 增加菜单展开收起类 + checkFoldLi(targetHast, 2) + function checkFoldLi(list, idx) { Array.from(list.children).forEach(n => { // 获取ul类型的子节点 @@ -115,10 +114,50 @@ export default function remarkHtml(settings = {}) { const fileName = href.substr(href.lastIndexOf('/') + 1, href.length).replace('.md', '') const realHref = options.tocLinkPrefix + fileName linkNode.properties.href = realHref + if (options.slug === realHref) { + linkNode.properties.className = 'is-active' + } else { + linkNode.properties.className = '' + } } }) } + function findTargetMenu(obj) { + const stack = []; + let did = false; + function walk(o, index) { + if (o.properties && o.properties.className === 'is-active') { + did = true; + stack.push(o); + } else if (o.children) { + if (did) { + return; + } + stack.push(o); + o.children.forEach(item => { + if (!did) { + walk(item, index + 1); + } + }); + if (stack.length === index) { + stack.pop(); + } + } + } + walk(obj, 1); + return stack; + } + + const astNodes = findTargetMenu(targetHast) + astNodes.forEach(n => { + if (n.properties && n.properties.className && n.properties.className.indexOf('can-unfold') > -1) { + n.properties.className = 'can-unfold' + } + }) + + /* -- 业务处理代码 end -- */ + const result = toHtml( // @ts-expect-error: assume root. targetHast, -- Gitee From cfe150a553f3b9563a236f01b6fe05d476b29cad Mon Sep 17 00:00:00 2001 From: Junru Date: Thu, 31 Mar 2022 09:52:58 +0800 Subject: [PATCH 5/8] =?UTF-8?q?fix:=20=E8=8F=9C=E5=8D=95=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?a=E6=A0=87=E7=AD=BE=E7=89=B9=E6=AE=8A=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/templates/components/docToc.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/templates/components/docToc.js b/src/templates/components/docToc.js index 7165c7ee..2e0df7bd 100644 --- a/src/templates/components/docToc.js +++ b/src/templates/components/docToc.js @@ -56,6 +56,10 @@ const DocToc = ({ tocNodes, pageContext }) => { // 处理折叠点击事件 function clickEvent(e) { e.stopPropagation() + if (e.target.tagName === 'A') { + e.target.className = 'active' + return + } const li = e.currentTarget // 折叠同层标签 Array.from(li.parentElement.children).forEach((el) => { -- Gitee From c041ea5aa7c7a8da41c2122262bdeb9306fbedd7 Mon Sep 17 00:00:00 2001 From: Junru Date: Thu, 31 Mar 2022 15:09:48 +0800 Subject: [PATCH 6/8] =?UTF-8?q?fix:=20=E8=8F=9C=E5=8D=95=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=BB=9A=E5=8A=A8=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/templates/components/docToc.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/templates/components/docToc.js b/src/templates/components/docToc.js index 2e0df7bd..fba0eb57 100644 --- a/src/templates/components/docToc.js +++ b/src/templates/components/docToc.js @@ -41,14 +41,24 @@ const DocToc = ({ tocNodes, pageContext }) => { if (slug === href) { const activeA = el - // 滚动到active - const tocColumn = document.querySelector('.toc-container') - const scrollTop = activeA.getBoundingClientRect().top - (document.body.clientHeight / 2) + // 设置active到可视区 + let obj + try { + obj = JSON.parse(sessionStorage.getItem('menu_item_scrollTop')) + } catch (error) { + } + let scrollTop + if (obj && obj.href === slug) { + scrollTop = obj.scrollTop + } else { + scrollTop = activeA.getBoundingClientRect().top - (document.body.clientHeight / 2) + } + const leftTOCColumn = document.querySelector('.toc-container') // 处理兼容性问题 - if(tocColumn.scrollTo) { - tocColumn.scrollTo(0, scrollTop) + if(leftTOCColumn.scrollTo) { + leftTOCColumn.scrollTo(0, scrollTop) } else { - tocColumn.scrollTop = scrollTop + leftTOCColumn.scrollTop = scrollTop } } } @@ -57,6 +67,11 @@ const DocToc = ({ tocNodes, pageContext }) => { function clickEvent(e) { e.stopPropagation() if (e.target.tagName === 'A') { + const leftTOCColumn = document.querySelector('.toc-container') + sessionStorage.setItem('menu_item_scrollTop', JSON.stringify({ + scrollTop: leftTOCColumn.scrollTop, + href: e.target.href + })) e.target.className = 'active' return } -- Gitee From 29cd6239ce0a40629f0ff1874cb1b87c934b85b7 Mon Sep 17 00:00:00 2001 From: Junru Date: Thu, 31 Mar 2022 15:14:07 +0800 Subject: [PATCH 7/8] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E7=81=AB=E7=8B=90?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=BB=9A=E5=8A=A8=E6=9D=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/components/toc.scss | 1 + src/styles/doc.scss | 1 + 2 files changed, 2 insertions(+) diff --git a/src/styles/components/toc.scss b/src/styles/components/toc.scss index d2855658..def6d8fb 100644 --- a/src/styles/components/toc.scss +++ b/src/styles/components/toc.scss @@ -5,6 +5,7 @@ overflow: auto; max-height: calc(100vh - 84px); word-break: break-word; + scrollbar-width: none !important; &::-webkit-scrollbar { width: 0 !important; height: 0 !important; diff --git a/src/styles/doc.scss b/src/styles/doc.scss index 1e3cd816..9eeccd7e 100644 --- a/src/styles/doc.scss +++ b/src/styles/doc.scss @@ -34,6 +34,7 @@ padding-left: 18px; font-size: 12px; border-left: 4px solid #F5EFEB; + scrollbar-width: none !important; &::-webkit-scrollbar { width: 0 !important; height: 0 !important; -- Gitee From f387a26aa1972bb19f4ac417ff2a08e03b6edf14 Mon Sep 17 00:00:00 2001 From: Junru Date: Fri, 1 Apr 2022 10:20:10 +0800 Subject: [PATCH 8/8] =?UTF-8?q?fix:=20=E7=A7=BB=E9=99=A4=E7=82=B9=E5=87=BB?= =?UTF-8?q?=E8=8F=9C=E5=8D=95=E6=BB=9A=E5=8A=A8=E5=88=B0=E5=8F=AF=E8=A7=86?= =?UTF-8?q?=E5=8C=BA=E7=89=B9=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/templates/components/docToc.js | 39 ------------------------------ 1 file changed, 39 deletions(-) diff --git a/src/templates/components/docToc.js b/src/templates/components/docToc.js index fba0eb57..f367594f 100644 --- a/src/templates/components/docToc.js +++ b/src/templates/components/docToc.js @@ -24,54 +24,15 @@ const DocToc = ({ tocNodes, pageContext }) => { const first = li.firstElementChild if (first.tagName === 'UL' || (first.tagName === 'A' && first.nextElementSibling && first.nextElementSibling.tagName === 'UL')) { li.addEventListener('click', clickEvent) - if (first.tagName === 'A') { - checkActive(first) - } Array.from(li.children).forEach(retrieveLi) - } else { - checkActive(li.firstChild) } }) } - // 滚动到active - function checkActive(el) { - const href = el.getAttribute('href') - // 判断当前active - if (slug === href) { - const activeA = el - - // 设置active到可视区 - let obj - try { - obj = JSON.parse(sessionStorage.getItem('menu_item_scrollTop')) - } catch (error) { - } - let scrollTop - if (obj && obj.href === slug) { - scrollTop = obj.scrollTop - } else { - scrollTop = activeA.getBoundingClientRect().top - (document.body.clientHeight / 2) - } - const leftTOCColumn = document.querySelector('.toc-container') - // 处理兼容性问题 - if(leftTOCColumn.scrollTo) { - leftTOCColumn.scrollTo(0, scrollTop) - } else { - leftTOCColumn.scrollTop = scrollTop - } - } - } - // 处理折叠点击事件 function clickEvent(e) { e.stopPropagation() if (e.target.tagName === 'A') { - const leftTOCColumn = document.querySelector('.toc-container') - sessionStorage.setItem('menu_item_scrollTop', JSON.stringify({ - scrollTop: leftTOCColumn.scrollTop, - href: e.target.href - })) e.target.className = 'active' return } -- Gitee