From 5c2a96682d3e5e964660da1aedbee01c70b9ac80 Mon Sep 17 00:00:00 2001 From: Matias Arriola Date: Tue, 21 Dec 2021 18:05:03 +0000 Subject: [PATCH] Merged in bugfix/topic-background (pull request #14) Fix topic background * Fix Textpeer getNativePosition implementation (broken with jQuery removal) * Remove time-bound waits from cypress tests Approved-by: Paulo Veiga --- .../cypress/integration/playground.test.js | 9 +-- .../playground.test.js/viewmode.snap.png | Bin 3712 -> 75055 bytes packages/mindplot/cypress/support/commands.js | 6 ++ .../test/playground/map-render/js/editor.js | 4 ++ .../test/playground/map-render/js/embedded.js | 3 + .../test/playground/map-render/js/viewmode.js | 4 +- .../web2d/src/components/peer/svg/TextPeer.js | 9 +-- .../src/components/peer/utils/DomUtils.js | 62 ++++++++++++++++++ 8 files changed, 85 insertions(+), 12 deletions(-) create mode 100644 packages/web2d/src/components/peer/utils/DomUtils.js diff --git a/packages/mindplot/cypress/integration/playground.test.js b/packages/mindplot/cypress/integration/playground.test.js index 0538110e..4f784102 100644 --- a/packages/mindplot/cypress/integration/playground.test.js +++ b/packages/mindplot/cypress/integration/playground.test.js @@ -10,18 +10,19 @@ context('Playground', () => { }); it('the playground viewmode.html page should match its snapshot', () => { cy.visit('/viewmode.html'); + cy.get('#mindplot.ready').should('exist'); cy.matchImageSnapshot('viewmode'); }); it('the playground container.html page should match its snapshot', () => { cy.visit('/container.html'); - // TODO: wait for mind map to load instead of an arbitrary number of ms - cy.wait(5000); + cy.getIframeBody() + .find('#mindplot.ready') + .should('exist'); cy.matchImageSnapshot('container'); }); it('the playground editor.html page should match its snapshot', () => { cy.visit('/editor.html'); - // TODO: wait for mind map to load instead of an arbitrary number of ms - cy.wait(5000); + cy.get('#mindplot.ready').should('exist'); // TODO: why is the editor appearing twice in the snapshot? cy.matchImageSnapshot('editor'); }); diff --git a/packages/mindplot/cypress/snapshots/playground.test.js/viewmode.snap.png b/packages/mindplot/cypress/snapshots/playground.test.js/viewmode.snap.png index 8f2d685a122b357281014e082a3039c174b55a8a..a58c473d13f169ca0b54990ae002e950b43f04e8 100644 GIT binary patch literal 75055 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 OW z?@hop6trf%e&Z^2#4VtXC%maIuJB4Fv9zb5i0P# zCo0Oz#`Uw*;5>;exIV=_{y_Ypr7}Qb=0*>y5Q4$5nQRV>*8A$T{Wq@KTVhj#cvgf4 zm^{zdMB5t_yxxU#>1*ivH^g{Zd=~z++l}wBA96Ua6x=WE%6UOYjyzd0

Q`n=Yra zKr9Rpl0JbSDzLV)lcvh9mt4kG z0Qigoe-z2>c_~;{-PVOMSs{}2xc)97p>{kj#lUCF|5ZHuV_iW|863A=TQP^hLH}tE z^J7}py3U*jisjkG715m^_|G4tpa~S6iI>O3pA$BzNbd zX3x`TG-KJK{Sp@d>^>;`=o^3g`5{+XGYd>F96F|Lbpj zz~zlr>OY;d!TNOkH%7*Zh2`C4PSf#f5@DhiZGE*UHCNYx!rq7#5+tSR&mdZG%>b$G zNDJY$2*S;ih*-#(cu{JhINb+E!gpQ!Ic=1bK@b#9q)bo_zwhB#um5~{Mkd9zU7oy1 z!XQ{>O}6a4<2QW0d%cyh2UAhEPi@6Dl?;>!wiyd#95u>4>~3C(aF)ly572C}}q#~&s5 zRz|ozH52ns`IQvfGBt>9O+cO14IAWPu7$#7BQ6(S8jN#HtUk7UU!*+ZUZU%lp#O`j zzYdG?d%Fiv6(yAJ&Y`Kz3+YJ+H39eVYniBO0pqGpW}}s-Mxguq?fN_QMwAXryOqg&GgPx*i!%Be|b5? z9&5mM0KUKXNsl9Za{w^p;_o|SPB110`vkJf#dl=z3hTVZ9UDZUOEXaFc$_W=w-+TN zgvU;T6A~?n0FTfh(1JGKOaE&=68HqW>09(tXGT{<;_adx+U)E+=ZAite;volpqX)) zog!=N;(3qz@N4M7&Tc;@jkN|BJ?_BqAJzk(Kc zc$CN?;bGHujjr3fjMYcWFCunL;k!-SCucJGA_+ECua` z;2b>*F+Xlz)46|y^ zLU|2xiIpE0F|}NX*lI93r`D)1NM=}raOUamTf&KLoV^+9zHjQzO!vznMK17fl}-%&G0k+0j#9H4X$%9MCZ7 zz5dl}g1*0?cKV0<*%&MOZV-7Fz)k%XNX_ad#vb$0=nm$v(OM*BYtfJH&G-h3Il>?R z-@@)+(Gv{QBg`D;W{y1c)(#qpedOP@faYf{F{$K;i7qzKf zN?wuA!ier&r8*%0`hlkh{HU0by7_usb@VUthz(u25uy~_NR^_^kna(^&3n;@*s^b> zF;yB*swzJaqMr={H_bA0dAV?KgFqJ(v1*=jWy12-b zAcYFRn!r)(*NI}htBB$rVyxWyJ8M1rlIX!~Y!`R_Ytjf|4sPVeA2^5FFZVIdWJ`@=#3Uj{cJ}^F{MlS!?;ow~KsiLf zZE6!+U(@{gCI9X6+~Ufju8v$MAvcbXbp7|Ak;Xs;z^^uEq46L--ek)y_KPx&ki25l z$mm!S^AY{IN;NO*P`_aeulL%8LfE)dB1Mq>hOj581i;8J)s?_ ziV?Xx!#ZWdU}}zDdcZ!S_#n%MgZU)*?NDdOgq+JYPz+lYvFCC82t(VEyM{X$Jx~?? zuR*;#4JH$*y-o5dZ5QZpXu?8O;(w_UXi>m}v$7!>egjd&u5Af?uwV=7T29dM`7d!3 zLdabR9yyb&&tQtK}4O9xG zLcyQkP2p~NCtwj%C5>dO5P?h$LfQI0Rad1|Kr>qB5aZP9H2bGm4BRWjj%3~9>jTg9 zHT@#9QU!aU^)G)(3ZFM45a$M06s?zU7cua!6Ze-qlF z6XcRJQJqMj?6k^lH&#s!cis>{FTedO3_;RZp6tFNiRCH@05=ZuVeYwJe^M6;5=Qj6 z>geAV1+9oJjyrN!ZxtIk?=J8)R1|*sLh8US-g|ZpJ#6AJ4f;0v2=k?mev5CM8K$wG z4Fbuw(xq)isf|rf{wot}QwG6MUew4}d0ktwB^qCKhKJ;9<3Qx-n6g}7&W<$(LFsP9 zKKck>rPcUGnNmn?}(l0B|VCeA3g zeji{uBrq$M)1$1TBLhc|?)PWYo`^TAM)BM@&HNt-jMR5;XaGjEmZQpw#qoUjpx~ho zSR573bECzqsEtG%A1+?jFxisKxp2iL9TN-7UjoAn#gpO>mO5s2DbpRL#3!R zJ~;N7&ljiwka?ZAiH{AasV9h}srq z%>YmMNrx7gXN>8)SN2fP`_bb>IG0Lm``6Ua|f! zte8xff`|r!zDorOe5pROJ?Z>5NU21OSAhK^exJ}2yr``)aC>aaiHTDP8ra3< zOA%vR-8G&`C=GmpE%SWi=DzRIG&Ks2aLA%%8LdWnvHaY=eul2m9AV)PrhT9W&PX*) zax8urahz`TD_wV~#VRkB-B9CYBkRBgNeW@4QeggHd_U^h z^q|l4;ROfea{k6#q)o~)tz(*iFUtj^^WzWZ)8+i^={8?qxTNz~71@2|Hs zR2H@`o!VOB{W&fF4um?@|44VO``!Y+uz>zbh>RnZR!x76ZW2o8{j#MWHSX+E1j_WZ z=;&b1v=BtMKtHv1!`DAB!yV3!<6hfVvwf?+< z7nLLH%Gp&BxviPS<}NEW)iVDx10uA_RIL_*bC5egQJ0CXo*Po@@lgmu6 zDJTc#Pd9&-*C~- zCx=U`x1vvp$ESu7JyPeV*has0{i>!iY_^xc2HCqmacCC2G=ORI{g^%v`Hs@5)=n&5 zG7x24F%p$4QzN@M>PP*kjClbxY%wG;FJ5t5Uqo@(>UqylCbRh zg)`ax204zuEWZOqTGPJ2v@yM0pMnk9mDDbcf zvZmE?MB8`EpE2fLh0-ZG+O0@G<_80#92LR?%`_)IWfgw^uD5trGrMj(1eMxQvs=G= zfWm~`O804_R~sfCi9$84kV%c5DT!eAKw9<;DIfO&yJ$F+C;Qa(fRIhl;+P%dc^-2;H8B zgb^~-ROXfEJ=Hho2-4`n7-B5ln)i=D{yDl1W!V6}3&cKIceH^@ZB8D}q?3j@`bR8P6 z*j@OzJ;ksG;@4n;Bf2Xe|8=Ap@SW&MD_*t_RQss%rf+O{4)T*mE?k@1vtl&ZdM36m zUGjeH>f%sj$-8(_`YN6@(anAypuha6z?x8zs#9TUF3aBW*OJ~w6g!RgBWfe7UO&Jl zrwMT)L`Z|13`6j7t%|=oZEnrVIDqp4up3Fb66Mdr?)m-giy64>$F!rxztUVg1wZm?Q=`8Xv(QRMnsF1*lq{+z*qy6U@XkeB!?sQ)N&(fu8EJ zy4?G-3DYQTIW(bh9DIrlz zp=n=7jo#Pll_f!*$45s?=rXmrChTAJ)G8^z{$5uUxF zFQy7uS#o1weXkl^}PDAU(NSDZv}a*H)B_Tt^{f8>l8 zwcv%%KuP9VGOQcXGS#X0CdXCvodvSrXwwJ|E64ubT2w|1vZKqwr#XqW+MaPE4iku{ zjVN>?@E^e_aqjq2Oc1AjO7+vu#BD^+PBxS>GeROW;>ww&ByHxlNPtzA`dKAJrs-lO zK10sI=0&IZOoZLN%0a3N_yHzn^pYJs{(^XLNV638P zvhMZ082JV|#9=~=6*Zpuy1aQ{@;~K#!a3@cU3vby=~wdXmrfiFam8C~)wXzwrk{gr{uEvA z<;)!ZL_5Q=!NitGu78ufHCDh$g8R&#&ZB7G*>L4~_cInk+;r2})B?diJK;pdZ!0Qb zpQEj@Ue7oY$kj&KZRGp1PxySHSC^J@fZqc7E)yIK^Cc*45 z0dv^1#MS#_&wD0qupzoS3N?sWEW%0S@u$?~yUE(qoNP&sDtqt`$TUW65Uup3%aUue zo=`C7UG&gbC$l^07JlRsxnL*!bMcX5GomCdm_U}cbkF1yMEW^1Ck;{RY#oonea=d6 zp5P4Gc*1Q;vB9p!5|=^7s;}jNkU{%(xXh3J(9^Ziey3y3L48D+ewO zZWdaH@kZ^t`7=&bFUxt@y!ik7*rPv-)p?LnzP@?ioI1s7R!5Ats)N%ybJ<+4&!f)9 z+>;^Ws(j-0Z<;B`KZa(?J)35!?;b1X8M|$ftdsuKre9$JF!RJqzz57NsBkuiQB?SQA8}}gO&YeiNTCe4rkTQq6b}UiO%VsR0P_$ ztJBGOLUSTn{KJqXu{POlHea3)gcka1%ucG z)4WwXOS$SlHJSfx(JMNA2uDO!DG%=}r8HP3^fx96$=E_mm>bFM*b;0G8gwA3Le;*E3CJ!wBxnNH(q1AjPP*5!4D=y5ftHo&E7JUNl!1@No^0#gq@4weL_~)n5Eb`_krX zPoG0JAC|O=O>SIILbl~HSuBGvYDu$UCoZ3?a+W9`9cBKvGW5R(B0iTab!VQpKY&H> z(5>^M!&heEmM7cyz;P#)bb@tjUKOC(PUXkU`q95|_=l+td^1tT^Qqwe7IFJ(p%V+pfNa_p-w6Iq2pB4&*uXU60qgwn~ z)lN$Cfjdey__Oe6i^z-HdBf{;ujxd1FeOVF<9~?U&%Oab=3{c>qA=q^R*bwq*JtZt z1&me-6T<~9|F>+reU1BIOPulsk-IHSyS9r~uYb~vra$t!?gxw^<@$~PO3p~>N5IMb z$ zgiG0jDDMRcF+)bwEG%eaNcc>)ruTq&C@NVtO5=JjK-DTp>oM$+W0=XtY@X1LKz-WH z&8=Jqly_>ur>x?Ge@c&v7$zzzNdx5n?ZL_bTAsfj1ngka&;HG8>~p5Cii`ey7Q6*K zt0aR$nUYd`;J(%5XCYA2FiUJv}|lCOi<^#d-a+1jMoYZ zf;hiO!YOA36#8dPAnV^`7SG6YY=ol*JYs0uS<)`=-wa&QG>j0?82MJO}pex zA#3VTm6e$`)8rdmB{bPU2+eFqPWHQt@l)DW{~k<;LVn9%Xgn&#VmeU+K6JUk(^-tk z^H-tYn3U4FNHhxh@bQwM_4LvSbII(x-iLeDie1Y}y@oFUzzz;<+kfV^ph6~~`*lUx zOOFBJ@9*xK>61Ro2ClEF?B&)iDkGK(Fq{8=(^7C)4iVoj5M*AuU-QrLJ@p{})gU)D?RcXm!hGZ0Ti|ms)IJS`{Zil`^^V4Cm z{}-yp?`D_U%j`H|cJmMSEpN?4b2Z6YDiZyK$zP;b&A_?cldmVzmo2s;EcxP_nNfsJ zA)5Y4a-Zsix?uS#j{$6wj;4JGYk%(d-;Q%c=fJ?yuWtVsT zhT*E$R3K)&mjGV!!S|*x;8%_oe^Y=l;>|C`NQC0R! zV{%mb_~nWd_&d9Q4&oD{9>UiytJ547-5eQNawcrIVh%eaM za?ILO+BEZQs%D>$!qpmoAFd`4Y-IF^pA+_}mQhd)o$Z8iSRBiV2t)b6l3u=p)pLE_ z#C0*F5oF^Q9>K*`eRs?_^vwZVC2ggDVrX=@7|@x(=Axo0ffnqKs<)d2haP}lSP^jl z#64*plf9d-^0J=B1^ll{;1q!T!hr)6Rx))55--7#4PLX|x;{Anzc9ue?fjZk+O61c zrya)i<5M*?k%gO~9I$R$s)9SMI9$|tvO16SFmn%@Sy3{;?zZ6m!%kG9ng z8V-x)aHTd!Qc%(wo7&Dk?-N0Ny<;M^YPn2;ChfB$AMJLf32w8<0VO4R)!g?IxjAiu zR|w#al!}xADX_rZD|Ujoj17Kt4e(i384ylO}|6M1nZ*YOx9&u53_gF8q;DPT< zmheyX`4;x?b@~y&^u*&HF=tmSX^MNjlP|CGruTg#ypB$GVagt2_mg+<$0{#}1{|93 z5XV89-YW&jq8>-HjNE4|Y}`fCGIze7;VI`PMtj~u+V*=lyU7qe#Q5O4Oyp*`#BRys ziSj~xsVtI0$|1;)9-GW?gVYwz7JZ|K9@G1*ekt|Zab3ECR8&O38!-U_J?&j_T4V*e z*gY{qkW)mdOIdC^V3dv~uZzvd%T#3i2}!r384tt#UB?N)yB3Y!`iQoSKgxeS5&{XRTngm8 z<0D7|Qoq}!d>*rWf8}|1H1{1(eBgcK#j083)#fgd2+y89-M=fJ?$-!d&n02B!-c;< zHb{w_8aMmRj@-)>al>9bq})b6p|@E{76Ck#{BZ#-ns^$mqHol(&i&whamVcoU_y^( z0I!bja=D#^B7guS$c;~S5e3Njew+zOxnqmJ5lmJAt&FpG{IZzGO!^6f!;B`sx)OgM zFGm`iauE?u*C1GpTVAbJm!Gg0{9}#m`gyj4NQ3OIJu%MeZ8Gf!q$W|E^lo`Uxse3Y(zH%5oQ8u+>N0gw zq%T?98g;P561a~h1lcZTh@yn0hghO9EN;fC0f??ZB3u~}L-EIsU2p7ZP|!S}zJLMM z^|A1%v^)%=prwvWq#KxRlQ^*BvW)ewi9Gw=rpt0V?9}%#<4f@gOd;^g_K!E{V)|YqRF5dyx zF-+w-P~f^UMn=z>?sv8JPXhHzfA(C}y?+XhaM5n?8R9L7qLzBUG47zebfY#9sLEJ4 zNDp{Smdo`g(4V;|BYrI428G-+Qk^ig!w||@nfBK2renp1sOP>fI&~kKNsoNa%1eU2rxp!iI4^+!P?0Rp#T$b%LX6nmSq`FPw zya5&w8O?*nz-uhC_o};47!Zqt*2A&e=GaZACFrey_SJ0bhYx=!gcMX9sNe<9|DGjD z(z!Ok`snp3SZ*8$jT~?>aK&#)w(;z#oHyG;EF0plpnVG@i!CRZE#m=4f%)$Uh>U8%hYF9$9r8dt%w)Cl21txdYIT_T5pi%PicolW{O`#jbmbD#UDK zvUMyTau{W~(DOy1Bo2KZe?0uj%^uMGMN|$eq@`H(W*(Hcpau$gB?Im?g3{!(;oTQ! zP|;tVeR+M43$7=2IA;%J&OqMJYDX-oAL?25u^bCB_Q9^27UGp+v83sNB;;{TO3;7PXnMGFHXjuSgm zB^yPBm88luW#iU7CL9d+*MBA9jw}SR^_Ip@EZO(*fiBsIA_1b_XUWTLXJYl&!!cOx zDxW$iUC8?xdL~}flDvC)`Q>0Dw}N2u7s^>Yht%L7Rm63+Ju2WiY|lZ#4hle-0o7vX z6H)eB(=$FdG6)2?Ok8YJ8ZY1FkMI_ULISKH$7}1g%jL_maUzof?S{XrLLQV-XDAqG z=Eu9x=K_^!(TM-#0A3neL%+Un=Yt-kru+M7KFmGSbLXlI?laXvEf1>HSAONgl@q#7 zH#9YgiMk=hNB61dh{4fQU!6wWgT0)Gp95#sjJfaMo^#e3tCr3EQ&zqWJ9?7Bn;fwTz$apc5PKX0 zsyTA6bV1`9xdnGf#N+hSVD(~2KhbrcEu%1u(`bl-0kWLt_~rS4;?ymLRUlg8(4Z#9 zM$nXrL@9|>kfD;V=`-|jyu_)%@mL<^5>Ry`(T#mAoDHU&VFbOo;fK z|E$FJbMc8EUjR_+JJbdYp3qyZa!p*KioU@O2coWTj5wcBF}9@`*%)`ah8zoygs{cy z-;QZ%d3ok{kLv~lRu8ks~ivfNfK=n(vHF@h@UwOfXJWGH7#SB@V@3azzJ7y5~ zzazChiNvg>=}2Gmisi zuo}PMsZNW*RF*c0M}9eRMl}tvW?#x2%gbIMvj#JE|b5HowBC<`F?NX#%O?-#`k?)TGOPZU(@Gb9;6_l zog2L_xSK5T{SeYJ_P!CGWmn9fNzZAyWm8yZsCYO~SDs?0Mt33YRbzNyJCpbs_NX+4uqMbHDN;Xr4OIxH>VneK5Utgalctxf}$9=Qz%YJZK#snHKF=Mup>Zs-xR@`oC z0aC%iw*^1W7l-O_=<70Af%xv#&58ruSSdhcZnUQP^|1vNG+f-#;x1;~Inq(3Ltb1? z8ZN|P5)AbvWE%JGOaufLAIW2jgTVY8NwE3mO9dtyYu$Bsnvl21jmV`?aqk`P)ozK4IZ&6alNx-c?(5j&7_6*M8(WQ6uZZ>TRB2DUMD)#xH1%_Id&{b zIXIBRH@~Q;h{dQa&HJij_wPv!JvDV!Wu?;ice_1e7JP19bn?Ntryq${JK1ZLbB97X z0=BTL+if8-pShRD%fB*$(OHB2^9@P)koL032lQNMzy=$@TwHM)}t2%STg zUG@T1?ACn(^S8Oi!*#E=q29o`Oem)R77Y<%rKJtMymZMoGeto~&HMH(sV5v`$E^hr znf2{J)zsCyKGd{F_Phslmq6sVcBzu*!#pW4@->H&VS3jNbCZqrCPTJ+QV(Hc|L>pi z#}d8FFK4`%n9@3}QMx20!F>#Hn~}nqk2TxS_XZ1qq8}b}q@5K|DE$Av==$_YS~f(} zV&Gi#bR{6JX^{}%sG-6@(nnFJa(l3DCkrTbOrGs`DQFVT)?h@X)|j7sF%%&6C>9Y< zuFN83VrCX}gE6dlo>_uRT8AwvDh}jPDOH=T_QIdPM0Ri0f_}!@wx+gNc4LZ_(Z7)G zd<`w-g2?LNe0iP^q!U-M8?r0-Xz`GUD4XR>*G11mi1w%@&iWhn32}cUtoNUgQ>!;6 z=&KS>8eDo*c$8l!K>Q0EpqU@P*)PS#Q4$2H&4Au>SVDYrqE~>hrtz;41G#Xl{=H-?ZUv*|=o`D2b{ApMdLD-Dmt8KUZJ867+&0TP8*@ z1M0S)c{GcsdTxl+Fq zE0z06=3JyPC~N%drmkyO&Z0?Nd9QJB^qL(IbYq(m0LdUV3nYYnKcJ7dKyJFo3`wVI zBM`J1N1%x|(VdU9Vws(Y$}<<>0ORWSpM8TKidXL}MFhazX5Ww7)`!ZaCKAJi+fR^B z)mIb3HFRQhq+8Pqh3{DsDcVqEbYK)H$_w7RW$8d}g$DWi)-kj1#q}ktmX^=0X#EJ6 zU|efzV(7qPZbSH)%|<=%HHpicdclRZ(5U8{tq4HVs(uc=*dM*|_BjT{H}2&&$&6rT zPFJ7CTb+JiijUp8iYav_Pz@vR6Z`Qj<((patJ+_iRG_{vGY=7}67eO8A&X*AOjj}L z$9nlvv9#oL?|A>t2FnYxO5~Mz$&3OJm<$blfl48kWjU5na3WM*?out$7&TqbRnE-H zOe4S%#{`UbmjE{|GgVbq2Y*DTib{k9SG75ui7pXETeFPq=hkKozrnx>yU57?uOAv} zYVz-$IRQ{iJag`ivolJk^a2m52Z?_@1d9kuMN$&$gx`KkZx{vaB1m%4jA~+mQtId$ zMyD*u^^?VtnLtodz}7`S9Yv}Umj>1SY)EC+vmEbR9Ka6JM9PPFb0%@4!ivd8QI$w? z0Ylh{dy-87`ez^oLr@*1?5qU|l1+Qdw_bCeTJt&2dvao8qq(SKO~wj_J?V94k0M92 zyQ8YC3T+oxDXE|caC&U(CJWyqfYyvttD#cUp6oHWa8kY6CX!O4KS06jI&b%uj{jg- z5`j?6i*mt$7dto~6Cb;q!kuOBdC-NGl|<=wy|H1qN>__5XT=+l_jy z&N!m29$j0tIN%06%Sh9+XBS#pCY+g!%*-^DKR;EU0Bu=S6l7$$!q2fm^^+F&V^Dd5 zZeYv%n}0h>A9r4X4WD|dJy%LS!i7?YCE~R}m|q}O#weCM{E%2&P);m=Pbn~|;H5{| zXvB}XbvXkhPRU_+ggF6cu9NN%6u)w~#wmsvl#gB1ou03P2uvD)7R8@(F~5r?m$2U_ zfm0@%jmQl$laN{>MpBxeo87u)&Mg;^m8c(Flr|ilp`evgR@2#+rcUD|obAW?$Q%^> z42Yee2;ZF2u+jv}UgHP?7YGInfDasqu6+jYH+S@Fvc-Z6T)p=b`^9|zu;K;8!eECD z>`gl5x#3bEwnx;8xqiI!it^ z4QEC)xYhVdvMGxQ^O)y@lO}44Z*3oeh6+P+21)^O@K~jZvn(}{y#Ov5=tNha+~dlq zmsT53ocrBgQ+K>=!n0DV+1{fL8bp^`-fe_ED_8y^{jFxWs33-z1M1=ye`Fw_# z3d+RXXWtu3b=ebUtTY6@>5}vFO}V%lfcQv(aSeIf#V|>4pX^N04qi05SoDJBC?N96 zaL5)?V`st!rHb5pXGX_>rnET{PvCd49}5P#bfVHx_|b|y8|P=g5tK~O0-1D(|0Zhf zr{}R7;^_J*SZu1It=|g2t@e;`6MTJ&y?JG0ZhpWCUApl)uUp|@cnPK-U_910;Hq2a zcFh-d{cF(ieS-2VhOKlZ^V0&mUWeMNu{zd8JS1^iAaxt6mU25tt7ECnpCBE;I)ze(@&oqz#+Umm!sgmjYnc+WVKlS;0Qf@c>L+m$n7vXhl@v$ zn4bLF!vkH?fuC&od!KFHrmn`@$R+FT1Gs85@afxAKqFzH)mQh~nnTCh4>DzKz%i63 za|OxZvmNX$$?0)?%QSUzD&BwK?TK@B%_U)I zQb%)DujbagPn5GNfM6q!&1~GUL)#zrtdqTioWkKiv3A1A5(4dfYHI5#78I~EvDGIm z?;2u&H`D`bJ(4uHO|lQAtuCbn+V zADaiYD_|~DC}bt^q`k#`t9>aKaO9}eoEw&zHm)$e*(Ex?1 z`b@pcORxPR)yXO7%u{_ph4;(sb1aG+%(dz7Fu8%?SDboKeIICo3CmMU|2AAO&iv^6 zjcRhwWL%d-fTFxyLqkK#Mqlutptkn2utRfvX1`HS1{z5`1jUWaDlpL{7O8VP0UKD= zI39>+z+Qn&GF?GDQ$1v=+MU_sbX_qSybcKXe>QV9)WegPHDS;0Gq+1ujfrATJ2lYq zB$E#8k^KL<`ti>7=pnm&xrK3Hj|D8o4fv8xtHAXni6Uu~DhIS5)g+~SfKStkhOId; zHQ7e?Wz0FhgT1Y~67pC+KS{=F!_dju($-Kr~Lj3F{wb*|Jj&f?j# z%2n?XWKao4FK=I!i3r@<`;|vR6kyHI?0z542C?b#yoR|F1M}qop-Ve4!0H#{--Fv>}LVvXJx|AEy_zt<7Vuph%vVeZNc7^4e{F_3@ zSUxw~RB6M#t6QMcTwGgAs2Yki2P$Aqb!`eX54|zMv%L6lb`0P=-&^`AO{$L6f1q{)^5osu*}i#Q_uS%Bz6x0co0^*}9M(p&r6*!Z|f<#E2G2$c2WK)s@nVgc+N z9^&zmlikj|UevSDAO~3fH*?@>G+p!1sa}yB285}o=iL{d3_;6(_8ahITwGjWd=D-~ zfvaLhxde_ysc#%)>Q=0$Iq)S*OMkokDsXf#7pE%6OpjvZ&rp#QTjTNUf-{EvQrcHxrPgIusJG)gJ?&*2w?Z@p%gZ zn7*k2jpNQ-?^J*j0!I%G*bg#+Q4L!a;bN<3kW(2K=xb4f(Wnhn4VlE@8j%zNn^*h4Nhh7lbsl{0c0qPCBSn~1ZtCxDU zUW|$*@l0ETiUaOgd`&bJW)OUOm+BzU&!cP8QEVWVJp zbxuDbuQ-wSCa~vCB4Qo9IV4#+4!XJamtOz=Y%=c>q-^TGHTp!&EOPm~wN1d{8GZu_ zKsXwx2-k?Y65OF@@Aj6tfod8oB51$_IWcmB1(X69B=}kMFR?CkWz7@Fg3Y~XS#z^qN!hDdm~OQ4 z^so6&!cX(`8fW{q0DF7K+MrX+zv><2>Rm|KbJvrmI*@RVlxbSk0umWPQjbdfSNz7F zXavit#;o~9=Fe%u(ffbRrfUHo4&xpfV>cbwJ<$gf5Qswe$@MdAf7t@5z@C1zfFsq% z9Q(2;bW*XtwosC(DQLqA>tZE7dCLLu^Q{svyfgASc8m_#q#Yh%jtk76=7JCvD?NN> z#8?Xfeo0E%dL5GUe?3PSc2rbmR%Wy34$UF(R~jo755($>}tb9=k{b^cfQ)h#XzGJSm_ zx48r$XTkxbf!jT*onPyx6=(Wm7CkR88^j*6k`hZ6YxhXDO$%-hXV?eFMg|V969Dg_ zqNCEm=n@Y+nXl*rBtFl<5TNhA2HsN`tRDp=2v9|b`6O2|Ku^4S@7LmaKDh7L=(14| zs|l2tQ;pdz*Sq`NI`TyUn&}v#KwaicBL>@brKair98*02v^qHa1}U?iqEB--cv;QM zWr?_lft>@5;CQU9Htr96AV3u=hBGgI_oR5dzk&F8ob>|rrlwz8100!Sqh61%fuvn< zpK0E3b^D!w6Abz6ZDY3`*OrGMoT>v3-trXx8v?$YUXz{Rkb=Ugs8iq_xj$;d(rEOJ zI4F!SfA-SXuAK7N#tp)0g+Ob8M@i}Hx60`M-~VTBZULPvq-SJd+OOyvQA2$R8Yrc& zKpQn(&=-Zh?H>@qwp7>Ol9}NFNoEQJq@oVZ4wx8g?r7IL1*K7-0o-&jwNUo^ZyW@r zU@CB;*fxzn=ceGV7xD-sg0*R!*Pt4CF&imWhjRP`Dyvg4S90)ISI{$ zPEx)Nac3_PrUcmP3liUJhA*VTK~O$kuz`SYmS25ksaj9QMCV)59o#;NX) zn*qEUT!BMOy9fY8;Dt`@BqpEZnru-cws^^iLe#zjq<4VxDE*Pcauzv*&tZ_>^`Oq_ z$fcTsJ7e>wL=Ac}3NdA7tX`{q)AwmRIu#0;D?k!^2D*#JGOtZ{k*l2B{2* zcng``*LEh_Rhvt&6%r<&%BVM;)X;p6cqxPFuWaBZFd^naf}xc0MRhJNa9RU{q+>}@ zOPa$>_BTk=K`oOA_?P`T0L)bAyQ(SZI5yp$A2d7OTZ6xDOK}l{TU|a)RmK7!q$edO z?_B$oRbB)_;&c4*OIAWhh$JLGAt}$mL_xOzs-?A=x?0ItGv<~0^rO#ojTOfD-t}Mj zp+!YRusI^q@?vg|`@bK&a0P@j1N)AhX8V<~>3@Ekmy-(mWG%jP?4Pjwj*WY`zk9@e zPYmXOfUEVur8P^0`)GqyQLt+{CNur=UhAL#T@}y)jyGeZhgq(8{5joFm6W6clE+${ z#HfJqb%(z&zKhZ-&v7^FnGnS;f>-k{JbNtK22c5fe%QaM zVPnM#*(e7{`5Zr(CAq%~9cZ{GgIoa{pI9FLB791=YziPLk1sLMcAEzr%>HdFD}B6r z^|rcZqJ2khr}kYFrj(QvXmkQG&mZhq@rxIsO>1n#5V}c9&QEchlt26$V;r)DLH`zR*dUH*YiaKpR3&7ZaiuSI zxDqrsdjk%et&;!uy1R^y%F~MZU*<>0zXq8ZWVLzS$au8n5+E#=I0$#&tQG@Rq{Ch~ zmkIcDW#5Ru`%-;{5WW_kMVTc#3AA#44k#?BRF%-v*6 zvF_uDzvI~Pi3tT-2j@-qiN~5P?%vjzw_hGRMiUnFp+;*M`aGcd=}U-YygF}8S}Dk9 zj^5N%R{`=TgEu00$@h2Zo>OjdPYNWvPOdp`yD~Y5(U7}u59c}4K_Y16ZAIQvtf_v~ z=fHafbNzKSJQF}K#01B9gM|LSc-#HBRr~G;fN4HCAk}nm=k^R}*i3UEhOZ5)rgw@( zP3T(GI#`KOVo})a9WX>bJJizA`D!Buvg?SL7#Ve3e+7TZr_2lXn}>BfU@}78-K_`G z^xM$TZ`LWj)fDRJ+5kLa$B$)mCbU8gT^5s7J+n|A+JhRpxeqxSK z!6{M$i#D~x2)9Pi(t|nNsQ^FBL5Nzp))W!cErq?a{o62NB4+CUBQo z>9@Yep$SK$;uJ$qodIHP6-zB<1o}%$fZdKXbwL+>;B>MunK<{MFYtC~Z9$6CGb zdivV_oj-%i!+~B_jD{E@oo6G2gq|z4;NB*N*Ra%^q1<}7R74AJ;lg)c0bV^x!esu#FyFoa z$ofI|f;$dB69RxY^>6)x&wad=U0SZs= z?iZQu8|!j!E@YYbRJ8~Lg-l;(k|(D0g7WVlYsE&D{~81ujR2uwlmVp$^$|e5J@|fy zXSD#KvDbIxst@h~WfboaY}R6L)?%q zI970r)31?mYh3$1aZkE!HwGA9a%ps~Pf|de%jX*k`!AIDMxa6g_>8cR;VQMh8_pUt zt}u2oK=jY_QC{K!#^B@Tps;{G1SY30&4Z)k2g#oMpc1D9RstBMx995+utHuPtqWKG zeFVBcFuGSCp*%x_b+b-&g6!hpUxuXkxQnpUl^ss zh<-(rgvF{vVM+mI;X_QRdz&&wg~Bh&rVsm~pqBacjaR(RB7j?`V=nFM6ISh@XWvAY zX%eQm>oK>bUdR+Br42JOF_tW9sYDC`xpT%oI_?*tML@)9%dO>>w@dOLq)%?9O~Eh$ z$Fww+G-_(&=XL*)3-pqt!MRm5Fi5sQQu6)kD~y6UTdZx3%!_T49N%j*F4e5A5xcri zC29N{cL|&YXHD71R4tpgY_6P-#zj5K$gSxpY1qaS}9;U^Ez5W zLaxAy#!MaAT?o6JjiPYcx1)Oba{na>(zNPj*QkYva3#AG5JTT9e!Yqb=q_n#Y43C5 z;xK_|CD3Q~4qKVtlC)PA=8`87z?#@E@(EKLHzw#hBRgU786%hm7&3 z6%BmzZI@{(2juc{Qw~A^s=6mGnTZ(Kk-YcDugLz@cuLi~(Q_B&;(b>J8Nazbc6D=5 z51vhe0R3eZ{pMuouTeP};4gpskU_uGc*E8mz)r*NZZEeAONfMAm@M$Yq$W98r9)*! zevDXhb-fwyzi*pQc0=*`Bxhi!>&PvC=15H&FLt2k3z_g@y#=>yLHyURl(;gIB{N&@ z0yK&0?44l?>&EEymJf))ahB=RBt^OZSrs%&=ZGg?Yq`+P8W$buW&AbsT@$Ig7~zOs zzt$WfvE-vNu$qc6DwgGA)44y`FBP*-mH4l^2lTT>U2E+$T&13U1Qsb+(*`BF4W$hP zZDc~f>$baJ?_qZ&nA>ll*VlPhRbzS$@A=tMU#S5axYNZ%6%8rWI?k>C>?Ii8x#z-5 zL?Bzm#npAG(UHQ!qG;9U0}?v9h`f>#s!;Y9rWoSc0h5cOU)k*!ObjfhrFM0P|#4MKQmWZT4Pcu`)9l_ zSnoM<*>-E;fE|0A4W}v*UkStzLnwRQCp05U>QS}m%U2=>Y+gfAqz)($iGh~9qH1{4 zdyrW{cLrcbCAk+j|DX2W@-ONxdKX4fLMa7AT0{X!r5mM1Qc6M)Y3Yy-6_92`7#fBU zK{}*M8l(gSq`RcM;jFpu-#O27{($rDels5!bY_3|-fQi(uIpNB^F7zrmeU^LbURpw zCgRc={aZR{ZLD$`fjc2pviYnutD?>mHKTi1{rtv;$_R-ws+BVK*OvOeVY+(@$i7MY z2sf2og<2Tn**iLNDL3YKPNuPi(uw659%0-KR%>47HO*(ccHe40ib*7I>4v?VpnGdVd_g~c#3DWp0 z4yK58K)=F~5skoub8b#}jrH#F!WA=`;$A6%54dh|9WIv%*dE?9lon}9Fz5IMp6hZ5 z7C16Rbae%UJH`D zF;n@)ZS&8yE&lG5M~5jq(y91)p`v#$4Olg3B?Pvbfb(89C*s2^8&yzKBPoVJTQO14 zak&o}6LT9pmUUS?H2AgtDs6_wB(7Y=njxjQDQ}?iC|8Hubdm#GAR+we&TocQF&CV) z-nJufY}SbQ9a2&s;!AA>`Jgki&#-0v(nb%`_O1}(f1b1O zg(Ym?D-o>(bUgRr_WJopR!$UOIk|!^Gc$_{Qs;|^;e<;25Dk53!M}O?VkV90-L*&^ zW}vZpXH8YKO`Zg-AcC@mvDIgNs_v4N-KQ)QxUT6csGWutor{x^9U(vEphm&s&S5hqFqZaVJ;Bb*(6x@Y4-j74gWouPDUxN~x=7 zF$H}H`e{=*x<)19_2GBR17H7vFF9i&(d}w-0QR4sdmSDhzb<`YHd%^~;y8>mQJ~n8 zX=r={bJo&f#C#v_w3q6LLOU-At+qIC9r%f->6m)jHitH_v4DIIpj}eR6u| zx$0-QhFf&hiFU!C?F0_F?h@%%4Vp3cp7Afg z^JQdZA4+?B=Sh`VG(TJ|^cT>F{)*zd*T2u6W7>^_4o_XZciHha9u_oB*Ur6_s}Zb` zEtNemv$*IlomRi{W7@Iw^gA_Tv@wM~7H!1`2P+alcoaVB^{BJss&HM*EErxItf1FJ zDl)2shjW`piXVr|Td(}0DQ<3n{8QFk8Ko+afi{K1@)66iBIL)tm0tezOOrNZ^41dq zFks-++ulnoQ^|{c`1YM7x?ie_H}}ZC_c?&A0&b`G*y1y8zT&ojV0j^sNNAc7UV6+( z@jKLTHPe4-u<-sRX)!PqO_itQ93d#bjx}i&5)Y5>W1|_w<3c6k0TwE2+S72^P=R63 zjcUs^$pE)i7ZnY z)I#7-E=7FxdMxkA4Ha?nN4A22TXym;D=(q5b!JWud>OZ%KNshbN4=(_nKM`RkY`WQ z8FrgML~uWJYU*b|Z|e%voj=~2MCh`?_A-|CZhObwN9^pL-up|JJT?d8U7Cl& z(sy#pruL?VA~HGWdY>fN%!z$;NYUtupBbp@Nz~0b6({Z(vNRm+@dq2lVd0pN@H09k?4LaH|)O;uk($o-wRZ6Euu8T$dwB&Mc==^DDIJn%;}1 zX_U#33Rv;;PSi89jtMKtyy755p7dIb!kIciKUeK>N|1EgG;$GTJl)5AD?NAW8y&(< zwPOK#udOEveO4BVf&`|o(v=Hqw<6-#Cn9usQR}>S_s5dbhES#IYtF6p@5|MX_Kj=x zKDVUMlLK&tlP`_`SG8E031l9hZxVaD?Y~<4r~oOV95}qrqzjN!XMlF0l?Adf62J04 z+P6ccvBvq{*%!w$oS~(nd~74%^o3_wXU*EN5P6* z33qV`@jpj9G~jEo2{LxZ0t^l*JRqX&r)$E$Q}?T>o?Z)bGk>3DEpGFewjW+E(K}o` zfMsJRfADjJ&bzEECZ;7%$LjslJHD9&>y>HLNOnFH+Y28}gQw)l+bxk-L(Ycoa0h)L z8p4#yXuah`oSv@0WFI+0xz<8VLP)_z7L-rjalPl%2L@R!W_XLQ#8Q!zmX>zRnvl0D zk!{pTnTwl5UHxd1gmv)Rp!J`C{$=oN^|g})*S2Oi8MQ16c111+lk=pC1*P6;+DkTQWU!nl zx{4_NV3KRiz$%<@9T_7h;IPjM+dTl0t)To0qt0ZsdmMt?-dZcl!JNq-M-b5+o}AdZ zM|YpbIaz7%{Phjottlqcn>OHiz`{3c%!%wPH^AgXpnhmA&-GlphS#K~(Q*XK8W4iB zxX+%r^^=2XPIf^h$4W*2)b z;4edqE$a$vpq&c9PWH|Sr!QYYg7(idb0Xu&FS>=*NR=OF4{Sc39F;=^{;aG0 zqOl5Ve{KVJ;9FNms}6y#tekwZ`p#FEw{^M1ldLbhV~b6nsAOs~lB;Tw?~t*lHnLfv zF=b_GhWUAu?s+mIQt~IrPD93rv2ukka=4#ab@~^J(nBkA`E{+&8_(wa*~B>ACoa#- zzUhZW=uYZb%)Z}Y%TJZSAKL|SB+M%#gWxqWpG$P?_odDVeTl>aI^@;WlRWnf6^&5M zvnsuBcz)-r#yhv*O9cG2>>gS%CmI^WHKr?vCy$(dgJrGL)YJ(xI+VckLm)5X(6A9317pIWh44yvgISr{YhSd8l4pBMfWHE7FLK@mX zn28!44fFAtj{LnR#|8G#Knu?et|$Zxy&F8BsG&%6LO?B(#-v-ty|ioKaWQ)-E8^GG zW4E^!K1AMr|9*JU3#*Vs2zk_1NUnxTPY1pi`4+Esoi2|NF*ZpprSc-CG+fS~xJIvo zuY+$kt>12AochL$wn5>@k$pSXpv{C&@8shbT}0otuiBYQ$^6C`xznVdA_19Cd59jW z2qSwSES1Tugd&bd@vBmg4$+L;?xyGXuajfYL<=$}T0_=(i*@+jP>r**WI(pn$-3j$ z&KL5}J-8uUm3$+26AoGbe+PPGa%4haYBIa;qD+!`<7Qh&k7xkVQ1Qu$BV^{CTIEr4 z8P{tNVOO8=CLi?nW-PMd*p+l9lm)$w_gY9ff4SVhbIX@#h=v-SR~p;SnGrbD>S1SQ zzSHP^IGtX9NDi*j%^98!R=o4v9v>nO2z?hkY6$X0MQok~uvq;BB6aj_OuM1~=LDiq zqM4B|PtcFq^s|dJ#NC2Dc_v+*L|RnfUAguR9J{oop%aZHuTz@GDSgYAufpeq`I*N< zz8J@8_-NFL+GP7r$~{I&df##vp&b*Bis!$d^LcdEV0BL5&l=Lj zoW!pcApNI}lDO$CJNM2uRh%vn60-gv}2+VUerJFy%vv2#~#)E#`JGU^Vk@( zpEb44UEfSSZggr+X1-5m(e_iozklsXnu^vnY#B%B8q*RshwSHJZTQ)^+Wt3Tk= zv=uCSr($Rdh8adgX1H*Qgygrt-<{q!)9c?4G8n4Gi^@O3EgSX0%G9EdiB9q)qHD6b z{*WSOtJ{IwA_4DOOfD%2N$la`v;H<=FABQzu)X+$0;?f|7E!SPjI>L1l6z_B?Q|Hw zy&Vi`_+>RxHT7nhe8awMC7AdpI9n%RDh##9S8A#z@R39>6nPl|-G$dhphQqq|fB z6*K175VZz_rvo@!rmzfOyI*vUJAY5JS|RZz8i)qK>!RRAZfDZL{rOv5_$z}_QuiO; zc_&mk(PHy}mEC0fw|Vu>G5>i;sMvWEgn@Xjb9BC$-3;EFJW|cZE^5D+C}`ZLoWKQ0 z<7^F$1GW>mrBcm3tqKqm(=|ZP7w5hehmiB&c#G-hsSo=pI?=LGb61DmButM z?dCfZ>TZI8?91A~fa0-WKsXO6o+^egmZ)4iI~i+#C+Zvyob?87z80}heY6-llA_D1 z0+TyDicTvRp@Bh zW-L}pIoO(}m7r~1b__4I$0wIT^qz#RbH90k(sHP~!+e)2e!Sb$^Q6FS{2(%(4O-;G zMD0@xcaQn4Y(6J}N-N{eHrNO3Nq|zG*a$Z#7rP+Uun>pYjqb%2axK@}u9jiYVv}pE1yv;Y|2ZY#--(G}|JC7#@3W>wjIbm&s)w z>Eu|B7Y3i4?4_(J9zL#Ya!cIGtEI z_M*#8FJbe+SI+C2>c;o~=8$J{Wy~I#QS9?rd@FD-5ENG97mmqc&-=cb&>!OJd6T71 zr!}R_%kXJD}{sLHQk9oTWi;s7F%Xj0r<>z+H zFYcD8Kvlne6_{h(bdQqp#(P6uwye=m?dN!fg-j){Z9fh+&1}9ZtSI;+0weW8j9Z&7 z2dVE;?%t;DIu0Q;>3rQVs@f)qY@9?AX~vh26rR4!=$U(N%{z;9=S8$$Y_Y-_QfJ!u zl?}9hYFSj>ZF6#Q0^awtvN%_#Cv@N33Pv7$?U@U8{#rCQimX1FcJvynjS!nX(rmT6 zp9omxNxvyw)1J5w(F`BChv$*qD8YG7Umqu60yimcibDik=Dge)p@jEUL!SF<5hv`V z373s$04XbrFzfY*3A}S_FNCdxnz}5cu3 z{=Z7!vP_(~Fpx>8keuh)^wl<7mQIn9lGi&Z5y))JHg1@YrwU+htocWeu9njai~wZnU-GXn2){0ZKSFxj_SQ;7(%{ZLEk5+zVQQhTXcJQ|?UX^uWb$0uk=F z{L^mg>x+o1Ve7Mvx7A{{+PVwFrLO2ysBC4xA?>`E?>lJC3v9spQ8CUKK=%imk8}TIQX&HnRN=mpnEznE_@)V}bj$ z{JwQ4+OpCb@~Xyq0Kj(!Oi=|FKjKb+Ip1eF0U=pZV}T5I;n|`HmFVa8 zFLwE8B;9^zJEqR|27q*n{jS$>aId{SG(=48mmj$dF7B>QAbE4OZ3`7a3-2(&EFF6L zvAsCArg-4D$UoYTATj^y!R?b7fb+A{&Jel3gp)u z-5M8kPHr%nHF6>V3`#yd9eq6%`Hk*8)WP;@L?fJ7Uvjk@pV6ZX`XUK4Z%~LAwoAU& zr6MF)>iA$2MMOo_1SN*%pZh)uLQ_LKwthH#X)j%pMkiNwCL^OZGkbHhi08)t{IpxZ zSpEz4ylpM^@wgAsKrd8WL(!WEb8`P1Gc~dIbUto(eanl)eK1{|8*ob3g`2R8qh6Pc z*j0{I?`+)#Lc5Wx@%SdSicg24`qm4UUs#9l2ZCDl0u}5G-@4gW@|3eFQV}r5`n6{2 zaN+uQ)o*|xkXmdbMJs{<9_u;dgBuwg&Gdw0&sus7bF`~y((1%8v3DC+kXtrI&KH+X z&(8h;_9&moeJM2cRq2aOIk**PX#=4Nn9JVE;IyO$uO2`;h;fy6Lqd^&p#@ZFf94a< zkn{7gfmx?F&5{na@!Gr@uKf&Zf-GCtt`XcVvAg#6b3}orhW()|gC3;v^?jt-8XU@_-;P%A=tQZB=(`P=u4sR$q+QKm(i2UY`F-pj(fjLDsu+J z?>UQL96+8;&4c0@{dV4yq6uw3Ur*LceBqS?3>P7-A{&sc@Me~TVlcZShL6Fpc$hyP z)nn*`HDh08`-fUmM*3Hgmg>34GPShWff8PAZT0R3-%?+S$R%lSx5?f_KuUNZ`6|#8 zp~&E#f=St44M_1F$gGDuaLtCk^5{`W(b47cehXDKdy&s>I1v*vG#w&8L3P3@WCn)6H(UTlA{Yxre<`AVQXM;t`zc1(-lblr);Ge_Es3uz^CRk%5Y|)5+spf zW#8u!yMHH;aKz21sPkG6%RwWVBYKEv+5rzyTuhpG(cnd|^Ya*31!*zNMw;a=ezf^)T7qX83IK{v z$nUglnOX^s2CrdK?8p4%{d=`uGj24>2&g<@So%PfsvO#sm0C3h@vJbhKk7~I&&9FJ z1rvhMGN{O&C5^GOVHsl1SG#yq>x7Qj6Rii zn~FMp+Bbul_4=t<$?rzjKnjo#E{{fiKHqHc%Okg%B$1PSRb5?iN24p=lKDgZ=L@`+ z6P5V6iX9>~ZnlN!EYs_KAR(hj7xF99wI@&BzsS|-E`x&@Z^?ly-FW`A+FPuyb=~$? zp{EdF$W4?Ris^Q85)hQL@ING~YJ6Wm6b%H=WlYR+weGnjd;$*4Al~Z!|XQ zP;tu-3;Q)QS47-r$sqzZ2<@Z-Sj=}1wIbtLl$C!if3FsCVoIsM1QSDj!+;JL#c6Z^ z`hD0O@LK>~U-y>9YZW?CjtiB2waMRy5-ruZ`%btKQco^`Y5^QCI3rBsHye?at=sDQ8?q$jg7$= zXFMM4trS{ph*moOeJ8DwnQBIoz)n_|Zd%6PdFVmYh%MHcuflzeJvw;j?XnAtP0hs( z>XGq~`d3r0(NLmQ6#BnQ~k={y6qX>J@JJwMZ@ znVFlg-G6#|ZY)4Mx=pUzOJgY_8WvYgg8e!TTfgZr#uhJb0|$Gbo7>mE*zfd%c#+aP zXqeiBoi0awi~P`VcYAvW7ncA)J@nrpeA?c=?&7w~vgGMu29UT9_5^}xh!c(dl)tBz z6>Be%RpCChKjc61OSk+}6wUA;FobFX)wZeZTRzsJnA8YSft|asOU>4{A-BzQY`Ufr zHlal-T93+*5W@^~kq;lV85fFmySsfYcun^&JjAvJ3h>lIb<0~O< zH?**c6}}mFiv!2Go;e3mf$&8SBQUxq`==c3T^;mySwqVIyg1%nukRGtX@}_arHFM# z-}0Ofd9lm(mP|$NY%UN{ltzkAasqBR*LBuNk7w%q(5 zGCDx4XWo8mJ~dtV^hXWkIC}Aiycb@}`rtu)%QYVS^@cF~>pWT9q0zb=0ZsesrN)|n zuxMR&=u6ZdR5H5dqE;;(wxk4hLnN+7yLe6BqiUaV&}vM=uj>hN`6Gvv(1v63ibaGEY$pWt(8c1#% z92!r0fd_5UpWSka;V~73E3WyOS+)jNDr%mY`j$uiGsMhWr5lQiKpyIv5Y``-HY77eA@ znMX#)_pW$8)X7;rbtSCXSnAGqT|dJcJS&f=APiw_%m2VkYhB?_Dzh=Y_nrc9=%0TU zvBTp&H>Epn%HAS-u8yQkMAb)EJ}m)`x(_mI-jPy81N%c|X#^^8sBQWTF#h2RJ|99; z4w8Fs%H{Ulf8#++vT(Rr@{Ijz-N zW5d9*Jhf2doUhrrED+5fQlD1?yxzo8_e;_%1(zdxpu1hw_4JndRjKKZ(L`j;tq~~c zfb6IKM5)>USE1oAc^79SG^s1VNha)s}-#PB^f#_iJ^vuJ2?9O{2 zm6t}dMHV|axK%8f8Ts2}b2A?{r4QL1V%c{zzQ^m?GZ}r^< zi9kF;^lx*Ax6#mT?<4}|6p%`6YVm+K4+QAq0C41VJC%o#E~5#XQ+3cdBze9SgbPJ$ z5QL9Z464Bw;m}!IhEJ!U!5?;8M#AiI>m%mXH*Uy<>uc%PJ2EW~y=@Ha?HS>*3?1y!Jljep5Gy}CkP|CgQC4{3r zTC=$F3G0~I>yehxKW?1J@r=J*%l`GNJyvaN_`xqqJxEIo8@|0{fkY`(;@_{(DY5WN zOWp2Wod?k)R*jxNk@uJ6%*YJALyY+G_w|}eva%R(Q5_@GuK+ak-ZPbLa453HEsI0< zkUy*~#>DZ>%lL|X-r1C@__TxGt@dhUWR#Zq@OK*V07@UHF>oZAgTQvT@kcdoZ?-5nsK03E;v3O)X~+p?ZV?DKevj=G`Wnb{3}TZ@sk2D$_qEd!m0} zh)u+AlJJOQ-T>u;6>RE-#-~b#g@0V^8dzC1gv0|@&_LB&x*ujx!2AS#UanR3-hL^)^1hD8Q1r{+~~YMt=%DYy<545O^I~E)>Bbz(t@=2ca^vsEhr}%CZgWtM- z56MhzEP^aA;4k_qz-9sX{7oJVdmaVIOr8+E4Bn5|C0p%dNZkjm`xgP9w}iX7%*(qy z6xzGV3ZoY2^72Y3ow=O0b#-a@yu943E51Fl0SprW?<^EX+I!gA_Ib&^pxyu={2UNo zU1ta;T0$tAU^NRpodq?;%@-JU!<~r}Ho1>~jc)Z`O}5jyq1m&j@7d~)`Z_(oGTSI| zR>f&A=?$T$nm)h^Fs4_dd5usE3FPKVFnaRPR+Qr7_6QJjSeR%XDckGJEEdzm%9Ikj zYmpWs%FA1e&jo?Iv#I7na*(k#Tl5d2miU$)jal>6884S*-#%ZhD-ZuejSPw9_BYP< z7QgDTCtAIq?_ZH&>W=_f?#f8FRJuguX zga?*S{g3>>&_IyvCNV=Y9}6MG!T~z_g0y_0v-|jY>%Sf&2ai$t@n1{_&(IBdADXL{A*_y!Y<2lTZ@-q!oQ; zrU?D`<VE_WVYtbKC^`wIpsROg8L4l{7 zBU!M#cr{XLplR98{wGqwpfIr@%_3RxdUqMW)zw6y(hLAI7FR|p=z(al82$-``q8g8 z_tMM1_|hQ=8bGkLp;gX}4@|+g?~$7YacCut%P=*;f_F_oe}ySr^(HK`iu=Lm!yo6V zJ33w?Ph4IobSH>(oSm)H-D3)XDZj_`5Thoaqt;Et(`~#yfrIQOEoDdjF8!(D(k$GY zUI@qzFsbDwYh8e>{eYws_|8aVv}(R0r?X>CD9e0WPwjjaty7Ad+II>zXUB>_My&nE zz>4kV>a<3IcR@QahEQ^GfO5d{p8@{pjf+q471T~QRUarJysqXCtkf=cNIlyU{A?Fl zq0c^7gAjWH3a3BR1QTawSgplH!&Mg;`mDO0tthXsj`@a_XbFGUgU01f{qg`7Hn7J3 zSupsra*~Alw-4A^F>+}fy+y*t=*M5eYD) z;64p>kUbTlBv5-| zKo*orM6%RFnJ?TzjOh-f+)T@+@b>XoZ3&1`;m*$pO!QF7+&J760#D zh<+Az2uS_8Oo@rf+tHZNY?|RvlIQB5GcL3`W@jf&XEE$l{e*zZXzv)mn)9!gFHxPM zKhaDbT)=)SBlic0y_=HXpN1C{#6hi9TCZ8Ta{l`Gq2u{wjl7pVZ5ba`rP7$pNc^&m z|1{Q+i+C{rgJ}d|>FLWAFJbXOQda!9PvpORgE(!YA2)t9*|!>Pe&>{XDDpHA7p*Dw zqY9H#Q)B;<#T?YI@lz0qmIzjh9leD#nDyN0YF*2kUE0pp^o8<~O;Cd$^rw19ux9=B zW&9v$U3M(g1|*=_^TFO)<9w7ItN&02dvcSJbQ%+6&@=7z&S)0|$ECHdp)~&MUFce# zSQrCp^qGxo`C1X8HEtllV1Q`UMGMq``8EKF;6TK^A*(3=7$`$DeG;sgo$ieia!tMv z0rAOndKTK7>#M4%$wMkyC!N;2`7_h>8!Dj_v`V@xaQreLsDA=VfAo6m;PmC&KK=Wh zb}^l-*m>g0KkL^%77tg9t(66c*-wf%?=&vtf_t;AJ;NrnTd<_T|2s&xD9^60Xo5<8 zGG2L_WM53~ErzKF?HqMDIT5}0(l3Fu4>GO77r8EpouX3XUnD`PO2*6=zjd(F_)PtX zHb}aD*?t-sL(~)Anf7PZi9Nb_F^K$RkV-l%@kwBN$k4kgA7&k&%@_@uR!VQH~W2EQA%E`lm=^h#zi~@ zigep0SuD`HK*B0G))z%vwvn7%5YXhy4<(5o5#9c){Tc1xu!@h494ph=#H=UZPqbpE z^`h|Oy}qm|uz_T!oB}lQZ1IDOjY|Chg4`3J`&cJOOYy8*09&U|y)%7YEi&>I2iu*o zxURLbmK)E7{3eN^ET@-uIWQ*rX&&f%UGG~$P5&j9dCB^UD#&jUnyIWCg zi#}Q%{O)Z}U|hJ23qrFyt*AG$8^x+sOFu0FasO zI74r%?e6c03ZPvpCkJsMl!M|hfoT252k1RyFYuUe!I0nEfu z?{+(ff8T>gv4``&3_$jpG}m5odMfbUQ7X?}+p&xWi zi(}^_00OM4ePi3)zLmG2m*$U6^e<`XKH9#nKth7F7fq{s58y#HknWJmH?x59oCCZb zWCW*C>phkkcCU$g#&m+OiyUs?Q8dRa|B`*8OQl~!=+|ugf@L*Et}8N98+5ixq`A@( z_OJ2ycx)c~mnsB=;>w^i!WU3pgT^3AhRM0?iQq#a?@|!-Ex$DIEG%8mo^{~m|KJ*s z^}>K$659lWVQ}EU+kXnQ9s#}p$a6ExzW_(~txRr3yqTfQAA$YNzHd4Mf{CfjAR#B= zfM@U>3Fo$olyx*xc>cFpl|$ebdVZgShUL&~yC0oSU3i#Nc)E=>_?%S|z2b)SxO53p zADw?;hiy{`=Gr*8r{8i45kB+7=Ll~8ho=BlC*KwyO>Mh73D?Jb~y=pX5Vt|x>?d}x3Ke%+E&csk=@H49nH2pWQfbRMmH3i!*xb3YKlAl9`%zHE6Skmy|}LTKTKDK#CpwQnI|{`<}) zI%`Sv$9^XscJ&Z+e`Ga#>asz}mfzErBKIcoag@TFFtk)DkHbnQ1Gw#LAxj9zr9sPP z*Emuul=$ExU*wSR*e7`fuaiv`nK+D6DeZ z@p!mpWl!5qRqyS{jP8lMO*akd;&?yA2Gw~g;BRuCAc2X2;o%%|#YL~ub3RMAcxFM@ zX?dGfr}CbAqTBY3OBfinC(@UNH^yr1)z4QwFJcb#yi~ef=4UW4FwWo)`Tyq+*?Hyn zf){#lF)#|eGckH7%kp)R78+v-|G)Py;Qj0W`~42~mq}7Pi&ro({?w_x^O=al=9{ae zwC*sDX74FVe|8xIW7V7a#}lhAAIj|{mi!(iHZjJIDE5CoKMMmpms*I?etv*&K|O=5 zo3clY3j^cFdG=+hNT=0=Hut=0(d&y{?NyUU3oy`=vTL@=mD_(Qxo+dx9|?K0qW`VU zy#j!+9E1GR@7yfQ-=rx<#zccRGlhv~j{&uDKRK|;` zhis#6+3;w$M!#EKQ}=UYhSGHm4BJ$hNQDw+a!mJ>H*{YN$Pe&${{I_Fi+d}fUkV}!|iZwQkmzdn-qfF4Of z(>+8xk#wICVba=^ce*k})6*I2Z@ObBv~5XSGfRB*o=dT(J^0o__}&Vauy6u#m=L?Z zR*m3E!vdR*Do^BWm)>?1d$eSXvB?1+>U znA_7Xwz37b4sUJ;gc!TnMQL#V^gc4%zAGr+VK}{`*z7z3))zY}{D&y#QRf{ckz$rK z)sOI_?YdSCn}kIBb?FQfm%~`$p;fKcxsP?{Ri~XwdNC2V*xU3FIg_92TrTt%>-}lE zZ7z=U7gSLdjE1wL+sJ`zhh-ga2Gr@U>Gr_Df$66w6G!`~E`86ITt-|&hyZA9eC1$FqcU}~|FoQZQ6dqz+uN30*Txx8;b1_fvJQmv@ zT`jzbIvJtz{H-!P+vMs{+U3!w;PqP<(XmJHDY6=|6*tAWA)gm&=dH-&mC^20-&-Jr|o`p90ur@u_ zuk!7AFRP07DG5yn7VBdChjKf>42;S@7PlJsQ^##tAxvk#DjY3QJDcq17;qPlm=$GHE486BQeAtFxy`RcU^?z1?!8=srxFYpoW- z##^|bAT~;b03|9iJ6bwF3`KEqFRPsAM@ts!@m+h6LyMn-IokepqEzM5mrvSGXTv&s zxd=P%NRU(f^d_gEkmGElk?@IiEmiXPyPmLzX=>u)!p|YN`~?qzx9Gi7Uw7eux^8o3 zf_51dCfzaN!^L6ku8RqY7afmeXpvS3n;sfN!`Y*W=xTmKks|gBl(|3EXCaLVWNcd6 zFeh)+)g7hIi-+8i^{+me3T+3_@60tx?*FMZltF)(=UVWA$S0PIsk4f?nd?QC%b(F! zT#B}0&yh%Z6z~1XoV8Ksg_gRrS0-U$CXH$F_7fI8-F0Jjrh`_0V$gGG=^?x_XwwO! zNnAPKZjqOlH$pTL2yvs|L~qZT=xQd~i@BFaJCvfIh!?xMEP9UXSNHZ#hUTWhHBa{{ z2psU3&Tm*B`3o0$d2(_`qP>E@*fvKj@7gDijc0lZHR$i^(kY#rW!d<-ShtxDo}QCa zIKe^RK_l;^gR=PeoM(9ZkKxfVriH^rT*n2ODiAn@($s{dD}qr#(vEg{{^y^iv>mbWks=obEr{W~gZT z;c(>N#K%8ZeTUf)mPlM-(yVaQ5Ir;(q<^%WP~>6&hmudD?7OoG_~X$ZM$LIlzVUEB z#_o2M?p|J}sEG;sAGFF&>3lcuaN)IfWA!k_!&k3$nT!*zbY(>ym7Q>&6_{6?_VF!- zXtEQ)xwJ`+>k(XgT4FOtPg}?5VcJP0au-};@n(~N>qZsF&j-O|STHD;&?~i4rl_N$ z1kZ&III4e?<-;q+_iT8tl>Xb@Sl79?`-(*VEivC o_%9^-FHHO|M*e@CAY5Q%YJa}%dG{I_xLk~}4q_IMGDpKv_u@O4o0iR(Kf+o+i0|5 kINB;6Z55BUiVeOql>XvWsb8y^4=NHoUHx3vIVCg!0FuNGwEzGB diff --git a/packages/mindplot/cypress/support/commands.js b/packages/mindplot/cypress/support/commands.js index cf3e92fd..bcb624c8 100644 --- a/packages/mindplot/cypress/support/commands.js +++ b/packages/mindplot/cypress/support/commands.js @@ -13,3 +13,9 @@ if (Cypress.env('imageSnaphots')) { () => Promise.resolve(), ); } + +// https://www.cypress.io/blog/2020/02/12/working-with-iframes-in-cypress/ +Cypress.Commands.add('getIframeBody', () => cy + .get('iframe') + .its('0.contentDocument.body').should('not.be.empty') + .then(cy.wrap)); diff --git a/packages/mindplot/test/playground/map-render/js/editor.js b/packages/mindplot/test/playground/map-render/js/editor.js index c340ff02..d9ecf282 100644 --- a/packages/mindplot/test/playground/map-render/js/editor.js +++ b/packages/mindplot/test/playground/map-render/js/editor.js @@ -7,6 +7,10 @@ const example = async () => { const options = await loadDesignerOptions(); const designer = buildDesigner(options); + designer.addEvent('loadSuccess', () => { + document.getElementById('mindplot').classList.add('ready'); + }); + // Load map from XML file persisted on disk... const persistence = PersistenceManager.getInstance(); const mindmap = persistence.load(mapId); diff --git a/packages/mindplot/test/playground/map-render/js/embedded.js b/packages/mindplot/test/playground/map-render/js/embedded.js index 431349af..dfe3967d 100644 --- a/packages/mindplot/test/playground/map-render/js/embedded.js +++ b/packages/mindplot/test/playground/map-render/js/embedded.js @@ -10,6 +10,9 @@ const example = async () => { const options = await loadDesignerOptions(confUrl); const designer = buildDesigner(options); + designer.addEvent('loadSuccess', () => { + document.getElementById('mindplot').classList.add('ready'); + }); // Load map from XML file persisted on disk... const persistence = PersistenceManager.getInstance(); let mindmap; diff --git a/packages/mindplot/test/playground/map-render/js/viewmode.js b/packages/mindplot/test/playground/map-render/js/viewmode.js index 3cb4c06e..043836c2 100644 --- a/packages/mindplot/test/playground/map-render/js/viewmode.js +++ b/packages/mindplot/test/playground/map-render/js/viewmode.js @@ -8,7 +8,9 @@ const example = async () => { const options = await loadDesignerOptions(); options.readOnly = true; const designer = buildDesigner(options); - + designer.addEvent('loadSuccess', () => { + document.getElementById('mindplot').classList.add('ready'); + }); // Load map from XML file persisted on disk... const persistence = PersistenceManager.getInstance(); let mindmap; diff --git a/packages/web2d/src/components/peer/svg/TextPeer.js b/packages/web2d/src/components/peer/svg/TextPeer.js index fe5ee45f..e652df63 100644 --- a/packages/web2d/src/components/peer/svg/TextPeer.js +++ b/packages/web2d/src/components/peer/svg/TextPeer.js @@ -17,6 +17,7 @@ */ import { $defined } from '@wisemapping/core-js'; import ElementPeer from './ElementPeer'; +import { getPosition } from '../utils/DomUtils'; class TextPeer extends ElementPeer { constructor(Font) { @@ -80,13 +81,7 @@ class TextPeer extends ElementPeer { } getNativePosition() { - const computedStyles = window.getComputedStyle(this._native); - const marginTop = computedStyles.getPropertyValue('margin-top') || 0; - const marginLeft = computedStyles.getPropertyValue('margin-left') || 0; - return { - top: this._native.offsetTop - parseFloat(marginTop), - left: this._native.offsetLeft - parseFloat(marginLeft), - }; + return getPosition(this._native); } setFont(font, size, style, weight) { diff --git a/packages/web2d/src/components/peer/utils/DomUtils.js b/packages/web2d/src/components/peer/utils/DomUtils.js new file mode 100644 index 00000000..1180f76f --- /dev/null +++ b/packages/web2d/src/components/peer/utils/DomUtils.js @@ -0,0 +1,62 @@ +/* eslint-disable import/prefer-default-export */ + +// quick hand-made version of $.css() +export const getStyle = (elem, prop) => { + const result = window.getComputedStyle(elem)[prop]; + if (typeof result === 'string' && /px$/.test(result)) { + return parseFloat(result); + } + return result; +}; + +// offset and position utils extracted and adapted from jquery source +// https://github.com/jquery/jquery/blob/main/src/offset.js +export const getOffset = (elem) => { + if (!elem || !elem.getClientRects().length) { + return { top: 0, left: 0 }; + } + // Get document-relative position by adding viewport scroll to viewport-relative gBCR + const rect = elem.getBoundingClientRect(); + const win = elem.ownerDocument.defaultView; + return { + top: rect.top + win.pageYOffset, + left: rect.left + win.pageXOffset, + }; +}; + +export const getPosition = (elem) => { + let offsetParent; + let offset; + let doc; + let parentOffset = { top: 0, left: 0 }; + + // position:fixed elements are offset from the viewport, which itself always has zero offset + if (getStyle(elem, 'position') === 'fixed') { + // Assume position:fixed implies availability of getBoundingClientRect + offset = elem.getBoundingClientRect(); + } else { + offset = getOffset(elem); + + // Account for the *real* offset parent, which can be the document or its root element + // when a statically positioned element is identified + doc = elem.ownerDocument; + offsetParent = elem.offsetParent || doc.documentElement; + while (offsetParent + && (offsetParent === doc.body || offsetParent === doc.documentElement) + && getStyle(offsetParent, 'position') === 'static') { + offsetParent = offsetParent.parentNode; + } + if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) { + // Incorporate borders into its offset, since they are outside its content origin + parentOffset = getOffset(offsetParent); + parentOffset.top += getStyle(offsetParent, 'borderTopWidth'); + parentOffset.left += getStyle(offsetParent, 'borderLeftWidth'); + } + } + + // Subtract parent offsets and element margins + return { + top: offset.top - parentOffset.top - getStyle(elem, 'marginTop'), + left: offset.left - parentOffset.left - getStyle(elem, 'marginLeft'), + }; +};