From 6a6b2264e841445aafbf447a27b852d607f4d520 Mon Sep 17 00:00:00 2001 From: xuying <33517362+tangying1027@users.noreply.github.com> Date: Tue, 28 May 2024 20:19:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0Pictorial=E7=BB=84?= =?UTF-8?q?=E4=BB=B6=20(#1967)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: 增加Pictorial组件 * fix: 修改api --------- Co-authored-by: xuying.xu --- packages/f2/src/components/index.ts | 1 + .../f2/src/components/pictorial/index.tsx | 4 + .../f2/src/components/pictorial/pictorial.tsx | 35 +++++ ...st-tsx-pictorial-ellipse-symbol-1-snap.png | Bin 0 -> 10957 bytes ...test-tsx-pictorial-image-symbol-1-snap.png | Bin 0 -> 21603 bytes .../test/components/pictorial/basic.test.tsx | 124 ++++++++++++++++++ 6 files changed, 164 insertions(+) create mode 100644 packages/f2/src/components/pictorial/index.tsx create mode 100644 packages/f2/src/components/pictorial/pictorial.tsx create mode 100644 packages/f2/test/components/pictorial/__image_snapshots__/basic-test-tsx-pictorial-ellipse-symbol-1-snap.png create mode 100644 packages/f2/test/components/pictorial/__image_snapshots__/basic-test-tsx-pictorial-image-symbol-1-snap.png create mode 100644 packages/f2/test/components/pictorial/basic.test.tsx diff --git a/packages/f2/src/components/index.ts b/packages/f2/src/components/index.ts index 176705b17..a7f76163e 100644 --- a/packages/f2/src/components/index.ts +++ b/packages/f2/src/components/index.ts @@ -31,3 +31,4 @@ export { withCandlestick, CandlestickView, } from './candlestick'; +export { default as Pictorial, PictorialProps } from './pictorial'; diff --git a/packages/f2/src/components/pictorial/index.tsx b/packages/f2/src/components/pictorial/index.tsx new file mode 100644 index 000000000..58a55755c --- /dev/null +++ b/packages/f2/src/components/pictorial/index.tsx @@ -0,0 +1,4 @@ +import Pictorial, { PictorialProps } from './pictorial'; + +export { PictorialProps, Pictorial }; +export default Pictorial; diff --git a/packages/f2/src/components/pictorial/pictorial.tsx b/packages/f2/src/components/pictorial/pictorial.tsx new file mode 100644 index 000000000..032ee5ce2 --- /dev/null +++ b/packages/f2/src/components/pictorial/pictorial.tsx @@ -0,0 +1,35 @@ +import { jsx } from '@antv/f-engine'; +import { GeometryProps } from '../geometry'; +import { withInterval } from '../interval'; +import { DataRecord } from '../../chart/Data'; +export interface PictorialProps + extends GeometryProps { + symbol?: any; +} + +export default class Pictorial extends withInterval({}) { + props: PictorialProps; + + render() { + const { props, context } = this; + const { px2hd } = context; + const { symbol: Symbol } = px2hd(props); + const records = this.mapping(); + + return ( + + {records.map((record) => { + const { key, children } = record; + return ( + + {children.map((item) => { + const { xMax, xMin, yMax, yMin } = item; + return ; + })} + + ); + })} + + ); + } +} diff --git a/packages/f2/test/components/pictorial/__image_snapshots__/basic-test-tsx-pictorial-ellipse-symbol-1-snap.png b/packages/f2/test/components/pictorial/__image_snapshots__/basic-test-tsx-pictorial-ellipse-symbol-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf583c43e63ce08eb548213281508628c8df0fc GIT binary patch literal 10957 zcmb7qXIN8ByY&vCNR3o!2BcUZNN*BAiWCu%9(qFW(m|S0q)8Q}S3yxBLTJ(<5&@AW z(gdVS?;u^|+dR+np7XxvT<6F42a>%fd*+^*d#yF=-qH8&s?$=jQvm=#tEr)?2LKQR z_<8yqIr!HrII0)`xB*R7C4&IVwQTAa27}4_rwc~DlHF#N{I9XxS4o+4Nx2r!+ej$n zi)ywzej>HGEVF!JEA#3rO|-utxjmaA{|Q za3p)GF1=e5G*nV##ze|=r2A(1N64@>b9LSFdeGj;zVY#DMXv&R;9GJ7Xwf5qKJ2@s zrR$czSkk|*9e-;~TF=yBWwZx^XSsc=P00*$(ZSm&FMUQ6Y% z-=j5%BWFSx_8SHk6hQ{DBwB7@d-k{Nv{&&(g~h+r45393vXoJHy6U4*~4OwzT5;uJoOA^w|_>daNao1NC5`e;pMC{2(PjJ*4T! zHB?mqBpv!Hb{FX3&rdB@t3T_~UVPPzb!K=<k5Qz&2< z>d2FCsai=!SOeBcH|s>_uiH1l2&Mod&$G|*u2RQI3lC<4Cvz$C6tNuu{MjjE-z&Ud z%7^-LNe`N>8r;WdxCati5cl!iWV;8i4jZ(*zNi64k$xue4CfK zb9wUnmpzjf#*mfSwlqvvuryYb3_WfatJ#$^Gg|DL* z<$%j8cXu8LFy+v7#`s9U4GC%F)x?d*@oyhVZ5Qx*ln>(meLX268pYoq$QA zEZW=!`?2NK)VVZ+`5hthgPi-Dk;YASIjh0cf*Vv8B)B{i)k<2z!8gp<`|626+sn^Q zNYI9S42SkoncC-d-5_^{Nowc_P~iGy9ySFkJPQ;Bonr6Zx!jW@A2j!))_Zoz=g5uc z>8ehgkdRQj_|D4_SHHPDrLc*9??H9rG2%&d&KqPy(eT#TXd^X7q#;KBO;4a@>qc1F z^rqzqzXP4NP^RDZG0dQ42OoNJ^c>l{!jaG(PI2)@9WzQ*qW*m9QOT#b?zM9%m=V{# zLEwhAwzhcMp%@^>mvvj!hMJIM75N%)2R!KLg?M?`OiOt3Ghl!bueh*2`Wn9e2+}y^ zpni9GFwDVSC%ym1uU96&lPGWwd0S=gIE;KG39$Jd|EfSe?;x!EDs2|YjdGlZwE>HL-Yq^O9s(v8WG{c+*e z*{xiYN?PW%H1fL#bh(SSJUE~Wnyc3?gi$Hq8}x6=3hBDtCDL3v5xGRE5 zxMfG97V(9Jg&b*zbbwfYnGj1%9DN@BGtxoftHDOdq7J1W0*VhGU&Zc3FH({jRb`m@ zj_-F=?+l~yBCLD0+s>@sDG!OCRZRvjT2SGjZYM3_)GnrGW)xi+k}fJs{`0-Llac9- z>EaIVLLpW&#&L0RLTzc^YUU@S^pDyHk!)2Rb0dr@c>AYJ>7b<(!J1`KX9EPpRmkxYuWBcAK^mimtyI)PwL}NeNATH1S3*TkBXv= z_2rmRg9B!PrFMM;#gnYmraBXb41b40xp|X0dpU~T*1Di3M_X&0Gu_|NywRNN_h>lB z=vNzkxxfRG(iRFR49Cy|dw=VgVCi_OadEWZvh=l@AljenUgpv7mN6sZmSidN2`KEXDtf{>Ux5OB09jE!4TOYe8o8X5fw0b;p}XL^}Vf zbNDM(O95)(Sz@QytDG`S#Fi`<<8!3pqgSF+=Lq!B_`uBqc+HT?hvGNC(q%;rZBQ2D z-4vnnWJ8ZuZY$P4r2TydiA!QN+SJstONfyk9o&A+GM+j}EZ@I+6~DSP!QVjwcH<*t z;={G3iyo0MCri;@tLLp>#Q28#XI?Mvo48fKw(6<4j4}COLY6W|=b;+hLtKtvHG2I{ z-5O=3pt6IW3fRZWIy6a7a0#~0)q7fh8McJMR|`gi+TQzU2qxzS1#<9DGfZooTwPVc$* z7S)_LjeH^{1a_x?y#Cqp7eaUn!R}RjYD;ZpY(>jp{5I0A*Mk|g=d+Py%f?W?bX4_( z`3>*gj~Zsva!1W8<9^LllW3em{|4&nzSKB^Z|oVYYGXcsNG6u9a=Q?4%w z>&zGt_&Xj5-piw7Be7wu%xeYdxulxSUuoY!g>WhIzl{fqeS}`>$Bk8pQXw+4!Kb|o z@wZiMXu!L~&ptru^;^gzV*J3%Z-XOMsqrm({U_g|*@@-$b$|bUlh`{KwqDYX|3p0c zO&W(W`S0b&eM2HrS1{M`hzv0H{OyYjCov1#qKM%gu(9(!SZB_hz`r(SG)A_0N8CFf z^SBM~^+E3bL__G>+FAmHl>#k@)rxkc{NLKh09Ee$zqQf+zQ##y~Dh)+_Wg|L**G;GzS zGDA9c8a$gedZAyr2)01N=hJA%B$CbvA}4vrYl2s8W4VNS;a5WGS5q&rUv^EDJXf_Eo@n;odUY#cz|VtL_6bybRIiS>5)fkWJsoeZ{#46T;DN zKWwJEK+GwoAixF2zIWmK7yb`H5)9y*U}zf&b_)Y5t5Yv6t8<$gRjiu<<@HouBYGm zBM3bDDhB97Vo5h|1KA*Hvvmct0c;F+`SZ)j(DIb%Ygi5-OGULaY7qq#N4-^($GIXbmkQJq;8lUU%YMKGhCUlrKBaw9 zEEhC@if|Ly-rtWErR@sNY|v31X4DnO3PwAok!X#4%Vs~14$m)?^U*+6^760)XuC^} zaPc;Cv9tAXcXqCOl)eEZlHkwugp;f54^>qLgXTOB$kyA-6rRN`>mItm0%IQ|6>dG) ze0TKJWE1}wiOc&?AGQ$PoAs*VNf4?5>(Y}Yn;9pXG?XOAa@`!&KRS8?J%lsixUGnM z_~*Am*J^i`to}Fdr;(pZ**Q4OZkLvow%_h&XOgmb34s`)w($z$mOJ>m7W*4Mv}8t+ z1BF(jTF}$8O^WahBoL=VMAPb1Ra3i$II-vgP^agzr60wV4 zHN}y1mi)1JcAfA=DAex+eK+`s4@|ce`@gY921waCW*~`<(HSsNc4-3>_HT~8?NV1? z4#RxaR0={pvKw{>L1lO2=`VGwpJZ9%7O>7iB!Vo(E(V0tv)&X1oM2Cgjn|F- z#<2^{sL#Z0U=K38T&y&s430njAN)fQtZQ;3`9*OtcfW!_KK2igL(y}~7&16ZqVUkv zf8s3&I%PW*B%MWlAet3TvQ0Oen7oy7_S?u{Tuqt%R?O7ffX1Ei4oGHy@eYG!NMD-*8 zTSps4+az4m-%~dmX3t^;C+#d&G=zm?e+NJ1J%fzHj8s_sttJlri(4v$r>}q{>i}Y6 zP@TVKIUq=L%y8Q@3`9K;;t&Fpm-?EmTB(Ca4rNInpr{ZrXI%0(pxO#y68SPR;fP16 zatm1pKRq)d?Ye#bnOp!>tHz8rbj>qci1uz@M7;bj-XlXP71nox>%n94$gU4;&yu{6 zxY&OBg}OXc#`-_I;9Iohq$4NZY`3%%ny$4ui|F4vn3JaYX-^#%h;q-qq9AJeZ&SvC z4!2ow;8S?15i6K%|H-A8w~?Sa@YQha^ZI9ou2@Z6Bzie< zwKT2-X+jjiVf?FCAp(^OjTZO_soS8&Ioqvg8iy0;+(ja`@Rt(?Oj`1{7<3u29FSMB zqSD=e9a3+=2s}U|fTWm0@Z6@ShtyDFDW=?c>YhbK00EqYd%y}LOG{OFV`J$aTDFze zC5|4Q+=l;AG-6zyX!fXTtSxHM1_-4<$BNq1h)?RMhD141W5*yrD5rdFx-7baxv*8h zWmTSM7r}EMfA3D)VUr^4=0o5)1j%!HC0`Sy;9jq*q{7LpDX%17{KV9z&2TIE@8YR0 zYpc%OS|i z{(u~NO|`P7w)T)|azFLFZZ?S^(+~X6XHL9wd5XujMjU32CN3(6OoWB70pTQ@@&Fcq zfSf32>fBluf-e9EJVfcUO#>c^VkLo+E#&=~)sYJ0o@_bkoV#x(FXw-z09K9xDYb&W zTf4iv!qt_P<~?1!yXL!|B72+jdq>kw@mXtZB~b4daZWZ;Y{NY^^bd);^3n==Z40x` z_HfRGcK+Y}FAMOv3YEzdf-rqwF2t2Pzn6u(5=s~(dGkL`#UwJ1#-9TzBsEIh>iSG z?%96Px5HKsE5VATftkmv>ehJRn9rM26z$vM%aY{IHcSFnOyYm3lL!OD8Wya+d2qUj4}Rf6|h-%hEAJ zv$LzKt7zM2nw?OXwu?s&znv2r!2RIEOkv1&@tikO`?}e9K>}qd7)?F@F8~Ggtf@>^ zH_@7}2gGQ35TpMRr@5i>TtqKs zA97{Pc#P%jjX%rU!QW|u8{yG1*i@~B2wBggb0BF|{BR~4>id*b?umnOx&bEf66CS; zBCNU@m=G*XOOVErZ1xr_PF!JPQ@&xo+NRrVr_0_YTmRN$Z#c_F$xSGPAQKNh7|=y~+9Z%)9Kaw^0gX@^8eE969r<(O)#*}Lps?ZX0sh+~H3#IN~F z#sYYS8>zy-MowRdPRyZy3AU+`Sdh64A+o#`l=d;OfS;w4V&ysFzuGHGcOD}OJ`SFo z3-i;YS*e`9q2<^;B}j=XSlD8nofT}Gx@|wOVS#+F+?xx`su$a*Q@r=JCOgLh)AH-~ z^!(_(q)Kv}C8KSF+C!8uV0~MVa41atV;WD!IRPV6$BcFJwb9xK*C&Nx)nSr^Y65W~b<*(nYVy`-?d zZP~$3qo>%0<2VS7IwxG>gQg29y7&N;lBvpI8#ndQQR1=A9nQjvCw3A-$M7Lp>cg=m zi41S00&Bj;^QvBpKUiH)W_{JZ7|K0-LDIR^CV+SK!_&f6mT&zot}^q~tW8pM>xgFG zdl(c~J?UI3b=+8NM?on1I`CXR!Z&+s^|dL;Qxu$0G53E0m`5_pwY7(~9 zR>dXVj#~L4MiuJrrVw$a5falx3~W$m5r`rnDVQI>l?9KQKFC%N=j*F)u!=Fxe*YmH zv0r+lKh~?r^Vq4&8&qupHvI1~kIBc^cFVzV9JC(XfJ%36V%DSv&ODTo0MH4^b90sd zFcg5!m3=UnZYhJU`hb7teCc=(D7Iy)@GYL(0YSDQ5OoPUB$h+RB~9^ejxFNBVaTsg zq3DTLR*mFt7Px7o1@RcuPPnlupqZ`{x)hrjfO6S!p_F6%S`xt}lq)NWdE17^(RV(L ztU@UAb+u}0W7fE_m9PqTxxkXih&nf?ffv`}N2g`V9MTdN-A3bA!#}75aaZ{Vv1)`m z>B(SsFGORQZ}Z7zN4A0%Kv?p*4-njO>XwiF4+LJ|hF*}6$KAs7;{y@!jrE)3dp_>_ zx!28BjhRLtwT9(D+Jo}f@HbYU?svJBrpWE>Bwl`#1&5x(c1{EVJ8}^En z_HJ%uhTOd?E6*v4YsSrztromw2e(9J<|j=RpOmlcRjvW3n4AuZ@i42e@eTHDg+gJU zduZ~v>pCM-zi^lHho}8sL$^JM{B^UaP31!*MYGgXR}0dSI(FMY)hT~_6czV_)_0e- z@I%ax*Ryp|>NGEZYzN=XdL@c*X(*q;P~u}hc4z;7El5WcIJnUv96^eT_MLvabUl3? zG?r$QnbGoB;VB=xKazh`+Od$6zPVkl-!cvUtmR&RHYh!u?5-_dCv5XY7?$(Dh$(}0 z5bIW7cznW>pliP;y!I1-51pN(yga5P+qzs4lmn#-8O{pX z+h5Dq-&oFg|3(fgUvxok?s+=c%B^&MQuf~rzO^jRU+ihnXg#u{HTGjrCqtbR8`la= z?37m-U)xT5PRrOrPozTPL{_!l5~$elq5SZaPxzus8-?Nq(4<^>Sw8sCk;hMrraX?3 z+=Zr-z1;N^o)pDE9Bm)1mmgv=I+>J35=?6qkh}Ocx^JvTHP|X1tM`|r$>0cj8a+<) z8x%>Yv9QQUega9s$BavA*l!*fex_Z%b#TEdjPONYUO|bcY(+tEwwf?%AGI& z5&)+VVIl+q3k-do$GrKp=##zINg3`c3UGn^VZ{=orQW>;m*+Hf_^V>>J5 ziwrDG+N#~ab*Kj?_7pbtoP_)T%M#Ih4e2CJUym>4M{b-g(4SGg&pt3eC9hwG%b2+M z6$B>!3RtT+{nT}zsX@S`NlYF*iR--9d%qQclyV!bl%NlxAn@6Ag>)gGM@4k{M>~d# z&MVpHK+sh5LhkPF3a$Gm{Hg}VnuMbh=bUwl^mV!mTVYDu&ux@vFjYT`C2NdN1#$x! z5gq7UM)1f{b>%LpLO5nxQJv@6q;16rDg7V|!AA(Y0w94YYn~fbn}4hU7r=b>!NjML z3Ww4xIe&L#_T6S})n~V%MrEcd9ZgRRoBcdWLs;w>pL#2k;3S0(S&e#n%u6C$HDdK( zf(g&(=jTPMs;cgHr-|Bd(8rPC^F_KC(Q|qI0|OFa>2}|*sMeul5-|&dzi~Pr0pkg z;9tJ0-!-8e*2y@Uj{Q6W3_p^kN|R!J?z#3OtobGEe()=~+=RxXoqzPP<@n12+v8rk zkcZ7yJo$5EggcG9LuLtIY{g2UG7N+p|I1t9u70@?)RsnW-=sZpC4Yrlv<&oCQ2Y;2 z38g&?m=3t9`>@W;&ns$?e{F2=(!0ni4t`Z1F{~o6Ov6LnEqo63~iWrs0m)sJ6ZQ96H!pEm|6!WIR!zzL-Bg zG->&9G?z3TjJlEq08~+D?*cTsEQs+Lz&hDWR=XG!nx&9~?3Zb1De-&}{LJcMakn@_ zcK;$#C#QHo%bs$)*Jt5phYFFN$N-B8ksy_`mHVB+>UXAnbUW2(Tv|Xh-h&%UKJ0qG`P>7m-Q@ zK6DSXCBjm)(XyOr-EO|EuLZHL`jDriUa2R^z$;<(-$_&PBo~)2B zVs7T!SCTML(+BwN3ARK;Rvl$04uJKB2fv?9M`5BPleJtt6pe2^V!nZ{+VmMIvK(F8 z6fTpvE_)Q^5rC3KGdtH^a0sH_^jgVcR3Uc+3A_RqfD%Gl6iLeDF0DsWpjN84AG>y# zws5|>ZH?;5;@~6S2iNv3cDFhu_^UjtJQH-CETJ>qTg}S=iG&-ur+nQFd&Y_b4WmZa zznIavuD;17zPCen3#5ln#4m;}=cE`se=&oqDJ)q7RF}q5TRw_>#|-hDtY^8H9D}LN zB+KgbN(rH)0Q*XjbRHpLx$t&w%~ z-O<8EF!3%sRvDkC(}6QX`u-5~1bYCmDK zjL_vhp@Di6_ITRPi>AMwuDl>>0{g7STievFDsLMzy!6>rUCkP8mCa9c0smp!CnaN@ zqQ)-~BAk5-u~Kk3`PTalUV(ymudCYJEIWx$)x1u>(TDwlyoqDuqu7NdL>gv9?qWio z@6u}?N7+?`E7++%;Sz&AmwSw{lg{dd>BT7tFeufj9Sy3?6W6QLbS|qXgZ0g#;uS>) zA~DdxB{T(}Mt{*(ITh6TWfp7$g%xiZXV+ujcoUktC|HA{*(VG+#N8z6E7fTNn%B^G z>6W?TS%=y#2F+vEieGh=NH~itIFE_HeJ=K=^cJHm!P{nN*UdNbQeJnBP zVbJ+x=uqFIKGU;F7T$Y*JU<^qt=}$KD4|*Yq_4m_R{3j$v%&f>RQqH+A-gyFQ3$xe z@9wW6LP5WvNK&I9T$3%Acg?B4UOp@*`KRW^Scl8RR=BR~27ULbvKH}`>Nfo)sFAxw z`^^;H{v74f7YTJ)@G$GRj|gk#teAE~Iz`GHXgZ>vIk0pDOo9vs7Wh!(DayGYBmy_+?Qk>9v{m%0tA;V}$rc6h zb=&Ee{)e)BjE$^Akpg;ve2QUeqm<9_iqS3DDSo zH>b!sVP=EMHkey4W$Zf!3eWe=fJ#k2c+yH)RZOs=mlzSb`ztf}_+{f}F9joSQQLPG ztWf(oTkt^nbcaQF-70b?=EQ(Zv?$BrVWMbN_B9-vv7K3UGXLqDf)ARiZaE9u zS@J=9UuwM<+WMD%jj8gr%}!d0BW4>Z6nv)LdD(Yz2tqD zQqOUsbz2IBLj5$C0OacU3D)9daoTw8c92z(n$7`w74Hz6dpsS^;lAu1LOu+G;w^zq zCVC4U@B~o8myfyl+S@;P<2To4bW>!rPkWW%az-rI$vXQ^)zi8+?se%pe-afb+8+A! z&j~J+$EG*ew{?|faU5;Ry>o;KMww|kxdDF{)VL;a+o3a$xpw?N9yHUP^4!F5HCJA?;}uU@NE@?ZYYb5pK$Lo%DaBU?83>D z4Jkt9`g8Qsm)Po%sc-6~QaWaJP(kZ<;h!12&YRRwbK5!cI^C<#&I$#E=7VB;H|eKK zDO$#4_`26~;~ssz8UxeKKj$Ol@^KEun9IV99)uez7UT{R8{@Zh7wJ)E!!T_Nmb@O03a<2SdQnLCwju zFvtF^3gd%PstQ&>moo&{7nDrG zif!`&f+)}Bx1~&oowqgKVH6>X#}&Cc(SHgv2lNJ08-wW+Fl`1Rg@h?y=HZ9oRSB(j zs^nuIQKVe^3IVT8j0V3L!-|8){aa6vlyC(*n(GuE2AXB0E5!=v&8rSu9(Cji$l!M) zrV8&3s$U7he|kfLsR+zynzw0BE6A^jtnbjWH1A0N4x~(nmLwR`%ICw4(u16qResa6 zX3?Q}g0p7B)LCtgSe_r(J+p6{@+Hq9os~`dCBART9@Ny;?XUME8MYYg+-@hq?|K)w89fM_uE zm*QvA17iph8s<+xEr?Iph8aIRlEo>J^_Cmmz3Q9pv-Ut@J*ZE&W^vHN+<6gxaUJ(wHZ(=Z|FZzgZ73o8yhy1ii_c|H() z2~+t#Nf9u3bJy|aBSZO+*ZxK9=NiEmHeX6Z46)96ff9LyqMW90a)z`|ETN~=ziMlI V2fQie!Pis)&0BX>OO(-%{~y$sxY_^! literal 0 HcmV?d00001 diff --git a/packages/f2/test/components/pictorial/__image_snapshots__/basic-test-tsx-pictorial-image-symbol-1-snap.png b/packages/f2/test/components/pictorial/__image_snapshots__/basic-test-tsx-pictorial-image-symbol-1-snap.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d8578931156a7697e8a9dadeeae6416ff26f6d GIT binary patch literal 21603 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 l-d0e39 zS+4<1MKEkko@Xa|-Yd^Ks=27#mp!SoeD9hIzvr)6?pJCYO`5?VOdDrsy!S@`pwZIIh8(7S#ZpJolI;B|sXd*y_-l7?BNTtyogi!jvz|{G6sy7rc7~|nir}NCcd-vXQ_0?C;EiEm5HO9DRhQxyh5AI1ReX`&0-*Vo0=Y8Yg!GqtG zQhLaw|32rP|LLPOSdFs)k0qmgaSsJ7uS2jWI+uLN5c+ps{Hsqn8S2yw;o143Ny>s8x7bM1bKY-`O z7(W?fd@O)lV~lHZfld}cH80>f*ZjK=lNY_Zs@`yLA9WAp$Bz|SUq6}~*ZM@yHb2Rg=~!zbrQYo4@BF#<{p3ag(y04y zI{?<-0{D20@pUoA{QzDbV|?^_(RotmrAxo>dLVs2Lg3s^Z}>kl2f3#pRs%EJ>L9NQ zIGS2jvrT^gjCFoJ*h&iI{44vM5qO60&n2XE2hh0{%l)guuipHZlak?P>Nmamdmf72 zyWWH}cs4?KBmfp|TzQ@FHECS;zbn1 zrUop@k^ZYad-fa*&29HhDCqRF7oCEg-E(jxoP}=xEFheRPVYOB29E^7!_n!Si-dhUK1L!Z`iO@TMojVtiy2}`_3d}vrc+lxfh#y??eaUGS`NZd* zUiGvYe8+dNlu-}&40S?3&3CzgTXxr;V@Eq0G-a=0Pe*g-Gxr?n^?H-0G9d( z5q95+U7cmjE-c}2zmHwJmT>Fmm%|5d8>VPXTso5-pa9ln { + it('image symbol', async () => { + const { props } = ( + + + + + ( + + + + + + )} + /> + + + ); + + const canvas = new Canvas(props); + await canvas.render(); + + await delay(1000); + expect(context).toMatchImageSnapshot(); + }); + + it('ellipse symbol', async () => { + const { props } = ( + + + + ( + + + + + + )} + /> + + + ); + + const canvas = new Canvas(props); + await canvas.render(); + + await delay(1000); + expect(context).toMatchImageSnapshot(); + }); +});