From c6a6a77bbd76fcd4c81262937be6175b0abb7dcc Mon Sep 17 00:00:00 2001 From: Alessandro Date: Sat, 6 Aug 2022 08:45:45 +0000 Subject: [PATCH 01/53] feat: add carousel component feat: add nav indicators wip wip wip fix: minor fixes fix: minor fixes fix: some refactor chore: update docs chore: update docs fix: remove slide component feat: create sl-carousel-item feat: code refactoring and improvements chore: update docs with more examples chore: fix docs feat: add autoplay feat: implement accessibility fix: change icons for rtl chore: minor change feat: improve accessibility fix: minor regression fix: minor regression chore: fix docs fix: improve accessibility and minor fixes fix: remove heading and refactor component chore: add custom style exmaple fix: address review commnets * Removed header from carousel * Added `ArrowUp` and `ArrowDown` in keyboard navigation * Added `--scroll-hint-margin` css property * Added an example with customized carousel layout * Fixed thumbnails navigation in demo * Renamed show-controls to show-arrows and updated the corresponding parts/css accordingly * Changed `activeSlideElement` getter to a private method * Changed pagination colors * Added `--slide-width` and `--slide-height` css properties chore: update docs fix: integrate latest repo changes fix: add aspect ratio and rebase chore: remove ignore path feat: multiple slides per page feat: multiple slide per page fix: various improvements chore: minor changes chore: minor changes chore: add bit of documentation chore: improve documentation fix: add unit tests and fix minor issues chore: update documentation and unit tests chore: update tests --- .gitignore | 1 - docs/_sidebar.md | 2 + .../adam-kool-ndN00KmbJ1c-unsplash.jpg | Bin 0 -> 70989 bytes .../leonard-cotte-c1Jp-fo53U8-unsplash.jpg | Bin 0 -> 102507 bytes .../sapan-patel-i9Q9bc-WgfE-unsplash.jpg | Bin 0 -> 92996 bytes .../thomas-kelley-JoH60FhTp50-unsplash.jpg | Bin 0 -> 179256 bytes .../carousel/v2osk-1Z2niiBPg5A-unsplash.jpg | Bin 0 -> 54284 bytes docs/components/carousel-item.md | 29 + docs/components/carousel.md | 590 +++++++++++++++++ .../carousel-item/carousel-item.styles.ts | 28 + .../carousel-item/carousel-item.test.ts | 17 + src/components/carousel-item/carousel-item.ts | 42 ++ .../carousel/autoplay-controller.ts | 68 ++ src/components/carousel/carousel.styles.ts | 162 +++++ src/components/carousel/carousel.test.ts | 601 ++++++++++++++++++ src/components/carousel/carousel.ts | 435 +++++++++++++ src/components/carousel/scroll-controller.ts | 176 +++++ src/internal/debounce.ts | 30 + src/shoelace.ts | 2 + src/translations/en-gb.ts | 5 +- src/translations/en.ts | 5 +- src/utilities/localize.ts | 5 + 22 files changed, 2195 insertions(+), 3 deletions(-) create mode 100644 docs/assets/examples/carousel/adam-kool-ndN00KmbJ1c-unsplash.jpg create mode 100644 docs/assets/examples/carousel/leonard-cotte-c1Jp-fo53U8-unsplash.jpg create mode 100644 docs/assets/examples/carousel/sapan-patel-i9Q9bc-WgfE-unsplash.jpg create mode 100644 docs/assets/examples/carousel/thomas-kelley-JoH60FhTp50-unsplash.jpg create mode 100644 docs/assets/examples/carousel/v2osk-1Z2niiBPg5A-unsplash.jpg create mode 100644 docs/components/carousel-item.md create mode 100644 docs/components/carousel.md create mode 100644 src/components/carousel-item/carousel-item.styles.ts create mode 100644 src/components/carousel-item/carousel-item.test.ts create mode 100644 src/components/carousel-item/carousel-item.ts create mode 100644 src/components/carousel/autoplay-controller.ts create mode 100644 src/components/carousel/carousel.styles.ts create mode 100644 src/components/carousel/carousel.test.ts create mode 100644 src/components/carousel/carousel.ts create mode 100644 src/components/carousel/scroll-controller.ts create mode 100644 src/internal/debounce.ts diff --git a/.gitignore b/.gitignore index 6db0b64a..b6f26d43 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,5 @@ docs/dist docs/search.json dist -examples node_modules src/react diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 32cfbfb2..c45d6639 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -31,6 +31,8 @@ - [Button](/components/button) - [Button Group](/components/button-group) - [Card](/components/card) + - [Carousel](/components/carousel) + - [Carousel Item](/components/carousel-item) - [Checkbox](/components/checkbox) - [Color Picker](/components/color-picker) - [Details](/components/details) diff --git a/docs/assets/examples/carousel/adam-kool-ndN00KmbJ1c-unsplash.jpg b/docs/assets/examples/carousel/adam-kool-ndN00KmbJ1c-unsplash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..17a7ea3cc1fe7577e8ba1422046d507732790688 GIT binary patch literal 70989 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

+-D&LE@j#9gVC+*x0bZcl#n8L{J8z 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 literal 0 HcmV?d00001 diff --git a/docs/assets/examples/carousel/sapan-patel-i9Q9bc-WgfE-unsplash.jpg b/docs/assets/examples/carousel/sapan-patel-i9Q9bc-WgfE-unsplash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a742b19688726d13c131f50da4cc2838151305b2 GIT binary patch literal 92996 zcmb@tbwFHA(?80Kpl2a1HJ{xIMVL2a=t@>jNj$pmKh|B?g#%5Ja# zVfuu>vh}~^AOG_Cx7_kCA1w_jn9n#&{%HNb$!7nX{6E`;xd0H%x&N~Nf62qr2Npj7 zAg>1i{2kMO*Z!Ze`i~BQ2o?elEEhliqjN3<00i$~`h@@J%rXIh=5GK1$;y9pbl(90 z?5_Yo)0DZVo7cbF0KA3qF}M)~bEG6xd-Qvp4}|Juywq1r3EU(iNwP@l-iBxPE`CUn zby)#bw%vhqeMg*s{`^@5dHl zWFjK`oyh-1NbrcrC~ydd@H=I1L zr=Y^*g02`g?#+(gv{q-SdEjhfB5Hpkdayqc4;Z9HU+%BPQx0;+2ZIRlD@9V*OIK5P zN<|vxibP)5izda^i?GDjHYZ)DSFr*`7bnFySFr-r7O`AmvMUXgJxLA9u1T}}mt)P* z%wXe~Ox4@XbF$fiN*5r$G04dE= zls7f0zxS-0q$-`?ahh&6TF(aDIV{&IYTTdV&39J9!w~Wp)1_#5FpxU^1^9&2FMbjdVA zF!0eOnQ+nLsBs|Sn6M%7CB(?n5nxIvTOr^mBf-zA0wX3YJrmF+qzTRLQX~MKmY&1t z3+i|@cZ3pv6v9Pl#>$R!-YvLEXcceOKK8qE+KC0eW1QEUCQxUBGQWtPqH^3K@{BVP z-Gr(Z_lUC&cdv7bXs;@iypQ8%7KXJxIv&vvbUf1{bUd6QbfRh>5Cdrh`Y+XZ5MLxY z5HBTpknkkA=+z|I=($Xy<#`j(<)ulYCA4tRCA0|MNLY|WEdY_>HMCLSA!!nTT+3-S zTA&4?nP>W94B478?jdRv*%)QtO-I)DEh|;~-D)N~5dM9g>xE?-X z*AiWyJ@mF7boPanUtBL4sax*`sas1CBT?7oG->J+6i=&X0B^i!Jo)w#hMp<>+lWoP z{+Aty>3pg4yB zLtlVmKdpx95CW$vBCV(*A_Au}9fF1;A}yXOGW@i<0BS!$Z*XIZd~iRZ!~zo%BqLH@ zizG@yE7dGP8;?dq8<9p01PpE@knj0HqzVYM;+rs?Ha8fYs9fFcH0o?`hHG9raKJZ= zYm$a69hoVoU6|m*QjWK14lZKj7uFm5J5Qlb^W1;u=Zw=L`4mU$^nmKkG%WAau)P2L z(9a{<*U$Y?1hGR>0P#{y0P)oVUEY8MP2Pbdvey8pmO~^ToRU89or3<#(+tm$4j#{t zAK;N8zd*>4Xo4(}qDP%zi3m4s$xW?hiw6TDoQ5SnT!JkgoM-kTE%sRKZ-m36&*6a^ zZn^d7#!b=()@dlYD}=xnkTaaf(ua4JP3X(;Ae$j6Q1S65!IM8fg>ZVesm8jBmUfe7 z&SkS^%w>~iDo*3rcmmJOcnVM7T0Zy9X%5%T1vytQ1{LQOwmxmGD*wlP!mHpIqTU5Y zq&i2_S#x3?3S=%DWcjZdDDp8RND@Ev;1Vnus5NYP^pve}%y5zK5|HG7;Cz!$QGywV zr5=Xw0}hTp3Xm_)65E1PFU7)AkV&m{$T8)(aj@~Qb!T=*2n}TB*t89CJ?RZi-Yk1A zm91YiEwy9T5L&YF3mMEWtJHs7S8@9Yh4EGPdb36LYnM6p4mGGss!Lk^QD>yk>Kjyj$?5zHptU=lk*1;XI|16b%I z|1gjrd+C$M_f8m?m}1w z0yG$rF5PI6Ufc*7rls+b>lnz8Io+s`1KhAt@J$hW`}HL1jZtWHR2O4uT%$HCD=eBTkC#sUTEJNw z9FGQoAjy(o8tp^gLYqbl)!y&CHzk>Cwzf<;P$m z(!k^}($70zet!;0BMA&)5ckQZuQ1%&D>V8(Q9`k`SDO2{m!D_yltsBcYa0GYYkIIG zWR|``V;=q}P8C8zLlGiKLlz>qO%h@oLXu>ZM;v0CNR(uoK@wu~-m=;5#V8JPZU8Oz zZz9wu+OdF5xKwBpDD|6T+Fk%=+Mc_nrHHZCjMKdfHwb#CRR3y#!7U+)F#iW2is2^3 z%?ise9jn_Pzz~M06cUE$9{|d@#w)iH=PyJh9C-%wBsoN>Bt;ZjPGw~C`d=ulwGTv! ztYUXbLsNAYbvLIVm|_S9r19DtB-YEDS*6)09#)q>0CK69KL9+bO9?L8Svh=KJb9iT zFX!d$MqbC&dfWNVRR%E2T5GAsg9Gy|N6=(>Th1x-D%~r-$`Q%jARfDN={=6N@fs*4XwO?G<_Z= z9c*Z~Vxx?=B7&&4M#88VMl90HX|2P3l5EnKGGPk?A@hS47%$JX3Af#G2+uo$EfVm| z50;Wl!;fg z>&Zr`=eoM(pj5tNoxM-CI(sCx_b)Dk!yq1Nl~{&EKT~i%eh?~>LT2&HRzL*LrYgj7=$E!{h(u!(~y!Pc(ysb>Tn;%=d$Qcx6$?1yg4H#p)1PWDk z_~}N(Ct2xA&6FVS>C!h^&FT-B=GF_pCj66~oN71_ZSGw(FZ@x&??nSsc7`@2X9iPh zrv0v(2Ua>8@ZaAD(#5bb4y%m2%B811z8X6W4p)v{@7HjQ9lvxORE}P@V4SKPd-9(XOT1uvE{V$ zxsf{yx#isRvBSyG*vL@JQA7KiA9p2Uy@csFb}G9Hepe6%{kmpE{kjGing@irT6u)8 zAatLuFEwH~5aqAy#9~+m-v4}^t6AmZq0)yQcqBnsSrk(0z$_YHMXM?+udl0N;&$Wd z{ct6jXiLp1UKbd|*-*+dI0x%TRQKP0bhFwkG-M%APL;>_i<>9LMmQwoMmFA=o6+6< zV@oT^PlHLKPd8Ki^V2q;xbHHy?kz3aeSU^4Kiz@8mr1m7S`u535o%JZpS2M`T_lNd zlv-{c(?V`bCUozyn8b)dBlYpXIJFSNEwPzttr8vXy0#Vr%<^`=>b<>2Z5>!qp%B7? z9;^YWvR~=+H-k7x?x&tgjuwMOusUi+kLzoEg>M?@%f5du4!R%iyUQfqF`U^mjlL_j zqhzyPN*43GKiN^>FJy(a2phx3r*c))y^_q8r%XPPumP3nC!Q+Dxd`xrcug4CyjY;$ zTzg<&b1MxLd55^&>Rg!RV+H*BtIe?j{fB~A3(;?(o2VPVK9kd6=fc+COYAF5Ip?9R zMv+~IpwZ+scFqc&6y;;!?|rT4jiKd$$p}+H<3TZ|H94->a%yQ`Rv^ts!ko-cG3kV# zI`m}lSb&)^@Doks2hlAA4WnW}^`ZI2~4ER1*E)=X||x#g1p*0WR7ieyh&ZSvM=43KwZjj{;NrHiSn` z$0^sL94_G?{$1*9-}SO;p7rnP=Cyl*?F3%JKCS}ZZb@6d(ac@~t#5YhJ>z`QWg173 z7iUa43Nd{Kl(d&(e7PB&JrDDE2_^z_hN7ezj2(k_KCKemCkckidwUT)-JMh3O(8kF zzp#r=&!8|Qy2+SxTlcgNID^W+8p@4=fz^TLUti|5Q{1|E!aA^1^1U7IyS<&(<|hKo z&LdY?opJ5MR>;WivDRhcz4$av#Wpz19!S=($J*a}l6s`hdgE&UxUEW|KIWJ}|2Vwg z{(&0cA6aSMUA=BkknJY;8IUjRI#;-;vZ(CJy?>_ld8rs9QVZ5s zS-(94181{YR<{zLPja3GsGD-Q*QQT&xV{fK$%+26ziGWeRd>2AvdWiop10xh^tpgZ zwuNcs)}SeA@1)Slo4L}!^!@}DUm(~$&%0*u&@>csX7mTZ_Q^1%oy1j^Uj(GJLUS#C zC0mST9=GUmFXK>h;HP(3&yV4;Jg?#rPJIj!4=uhiZ4XzDI=T%1EV7ivN+cONK3Ers z&k}1dyhn<6d}ml^u5%|m@Jx}C|52#I>v*CVm|9(uaDl`^4@yZ@ZO|X%SC#=zL7C=K zj&&;-?!mInTvY-$^em7g7SOD9&Vo?fc5xBNG*h|58~!23Q~aU9;U`afyW|ha67IU} zqF9i2ak{TTd*wn`kF{XfVR7r2pqWjVdKKI;*jw0^vi9KYdsX3yth(BYK=sqsCz87X zs;Ze#u*qrln#NhYKslIAW>=6z{u?Pm@{pDnKb{Vgzxl)u(>xV{u8yy}@w2%EeYa$- z&2tI-xEJJkd zqtTJC{im>giO*K;)G<}7&%F4gus*Z+2P7Rgje+WyZmqLMvX)ySc#p?i!IDk|TlH z=Z}uzs-6X}WHo8CK2E!1v~n21OX`$rH#j{gcI>da&HeV7@Q6I%9}c<4XXDS;nWk~+ zMgHO`*-U3r(h%t(3+J-0}XX}y;WdDx@B&{)(dQ<81IE z?_>JZBECM!a!aPpyjqlx9atlm3kA%WJ#Q2~qhBTc%Kk;Re=uW5V!y*(|NBP#pYOT4 zQ@_OB@CuZ4rh`PP9lt^Z0|X4*Ry48fdBcQMn{CoIwF3LEYg*`(5zSUMP16$_L%+yu z=y;kgHc`z6eb!%m#n*fK1CTfTUi$|?ahUx}Q0EW8f1wd6&|hO=Z^GlHy0F&&$6=z< z&rzk~Om)qLs=;r2>t9cU6pql0<%Me;!U;6UOdZ4A{jYxYb?4 zy1D+eX+&8OI_ft5f)DNoNw$tUvqlf#%8f~p4xcx=+V$)e3-`B6lR`gV%6NFoFWm=y ziF+=AcD!$&n!XRr8|Ev@SBtMDTp<-1Z1A9^C^)V|sDuWISOnReG-q~}=T>H&&pP}C zCrYRI^pEBV_K9A>ZZq7uZ+BN6y9y?zw@g<=63Adq?rWG)`6x=9AjT@!VvBDRNz5=cE;X~2CQ4w&)W~ z6XLoHQor`E8qHgPlpix8vv*O~7mcouh5C8n792c8r|}rtT$?#NZssiL>hj&;^ta!I zY;4tVB#_>It}04T7nkO+nMfRWV%HBu7B8&)_KWg2I${S)jm#Hm#QuxYZ=gWYe=smL zXO9?lwb#Tx8|R7~&Fn_-eHp9K4ALXVx6-3f)pUq!Or0BFr)RqU{oPyZ`bnB;nW(-n z5=n#sGUb<}FO~0SS0+``Fj9u9HhA<+eSyuIAZDwyim7-}L zT3hr>lQKjlvE z7ut6KS1#pv6uyX!G9(h8y9Xf84KTIvxhY^#2gK#vC!OAkO7ZwFxpYbx_+Dod@&bQo zkN*LHYd^(&XWfaQGIYIR77zBaW`WvQ5ABFlPaiFM=8M}|Z+zxI_u@r#Z=iiuD=BM_ zrzZ$XXelZr9Y3hHIc?(c7RWrM^vaa>L#9Koa8THv-bV4$oITML&E>W$p<6bqe&3=f zUSNw)f0D(0`YUkVn|4S%yJ8dFTp^vFI+H4c&v4xLS>by3_h3Pacz)@4wBpR96=zSQ zqZR^dRXRZJ9X^~SmE2!I@Yf9)A_uYxd zED*ik08{iIUvl3dPs{l$GMk+?|1Ke-Xht4i%C9F`%e*qpI^cwRIts6U9KRdl0JT#L zKoyRf3H6a^ZKj3y#QtQox`Vk@QdDzXdt2wjQ$?Vhx0x|Gj8-7X5Z4XXsCe!9Am z`O?_D%;SkoUp=}9iSS@+)kMX_)m^@8OgqIdU>SR=PUQ-TtTg&8DdVV+Uma~Q(*Y*p z{%5vR$#rHm&fUPBMKKJbQ%>L~SK+}3J-fo6!>#vu0oIZp*#wNO=^3of9;WiB7$-T) zq)&)BqBv{JuBe=sK>gIsb$5C4h_W}b+nQ47rhA~m9d_B#Dpz}V(wil6#_cidYNOoi zoDc%ul?L}bexyXgG-%m7R{9@o7ER!Y>!ioMUMD{6J6S(EJfYB1rBkXx^Nm z799?x;Db&;NrjVE-9MpywiT;BIjgA9p(wQes=6e*+bq#|vM7Io1??8~$UwbE&gs`0 z@(K&IIw`WVxXS|0V^%syZwN1CbCX^NL(2^%_udqv3YfaZ{lr>7KrhU4dsSxX3;4G0 z_C~d)nLo}0DKgNtqJ#y%Fk0i9o`2yu=G4=J(EpvOskR%n22_G)QZALQvBtQWbBmkw?oQ)SxTehJ zO3q`Gi?mj?ZWNDBmnX2DPst-Zyd{Oz&q@m_jgHyJ3gCosTh#5pe3UP}@a-dPn9oR@k@#FBMFTqzaH~jT+QKa;{A=)%Db9s;3@LV+`yX>TYWYGB*FCw zWsvp_zUL8dIR}(SJ5=FTv{P4Tfy#4Q=SR?J%DLM?&mq%oj7f)tx-g8WA1 zG}sDe^&`GE%X%%qNo}UWC#LklZsNJPYE`#7t2iC5!&h4692p&KI(kwets)tfaY(zg zF}mK?@EAB~_AcyVZD_P=4W`vopb3D4p7c< zG!XJfJk*NHlcaeLQ!Bso;Jp!R7JEc)`5M1@_^N7V0nMq-j@Gi%tyOC|9dy4D$l9xr&-H^y6KOX4=Oi#;UFpYu&vxkcvoyA!u2i?%4|S6%{5`o zHrU6bN_~d3&VG!q0CQ?lOuZ#EMtFuj91!|8-AM%tvX|6Zb<8_`qX_)Wn_Gx%o$c-+u7v7 zQir&vkg@csid`qqEA$J+8&n2^g%zQdwQS0+Aj^Qq;Ovb~<`-mKzXdK|LR9AM+^JUo z602+mHiLWIbQYcaQB%glmCIId0S){rmLI<7fx3(X;-s&^-R5&T$ zu0kvl_qMnHgkkV=ArTl2)!@1lo2o6`NmoU)R?(_y#$rkA!(f_n@ATS>H7?jt*6}@* zx6cVPj@6JiH;?x{cysg}mmHni}`qg0uE%K=e zIA!IcDe_*C@wQ_yR?jx~Qrcft{pIzrEo!RR-sPm_r<)SJuRB^C(1_$*N@IeS@z73Z ztlL*LqV4uge2v3%t(z@T{oz5{40O8Vcc7z?N02R?E9lf*`1uPPRXF7y*sf$Tb`1fe zua9*+rfNM6d1ftH_LW13E4$bma~;q%99VqLy^C$^xok`1LKgK1*7*6!S2R4MM) z->oE8oO1O{L^HoSbxjeYP{?F^`c-ohPSxo< zd;>yPf6GvVnO_ax*teAb9(zM6(AI|MK@jRJJdxBETz6c}t0>KT;7cV+%GBXr${P;ADEwKzl2NSEb` z{SCI9p(ih~NEu?a6Imffx0>9b9;BeMzZs?z;7#Xow&?99ZA={+e=WS;`Oa!Zayrt@ zE=%~iP^f}nKV;QO%N*3#ETa3(@s-Rvl{`ao>eg#BJC`spoIaIN+IM1Kt-2u8cTvc# z^yu8qP=0BmEwD5tp1Mw>oU`BM0Pk^p)06ol<) z#3UpQ?Ld&Ue!u+2G)3Ee$$;C}oW2Fr`73%|4m_#Vk6H zq}${OSWwk9G~lw;w?0wH11na18puZ6mF1p)*286w^9{F3Tx?*drA3FV6jdt39M#Dm z^L4iV2T#JD}HkY^;8Twwe#8fJCQD=o3;n1NGiq$Fi)&Cr<1)cZXfHjb1li}{t~vW zHr6We;E<8T!d{EZ79n~*XKkDQt-QYS?9{|Bk^vVYNJXTl)_Bk)<|=U1^ufH14fjL# z_t&xV(O+(1ny8dk{f28QD$m(HtBEWrU^yJ+BMa9VbxqG%v?O6?&Z(d7kR}uilutXZXzmZCzb|+yW_dzAMZgX>T;TekU}B_enLb6D zwGVAYVq7KPjoeNuDtY|BdT&5o*i^bjWNl0X5o(_D`a7H`9TQlDTAqdy_un@@%;L7p zonSdPA9}m62XixN@5weCi?UqnP`|=BRE2fQjRp?YMHL2k<2L^S%XVJA8#dW z)b#Cn*9U^~9czSfzaG5ndxCQOY>k_~L}Cg~3pSbz#Drc)0LQ)h?9llBZ^~Y1^>3kZWfh4fTmVH(iJgu{TpbY zYp4h8n}*5IWRl zt{|wMdKXeXzWM;=QS7Mwhy4f(-f?eP!K-R2JO4H}Vlax9B2wu9oyvNbhpkEhS&&0Ca1&3H5@z}Umf z>7~4N)>36Yle&i67e-ta53=z&Eme!_BKhUlUO&&L^4{Ltf=}UkB2QM6t9Hxc6wFmB z?LL!*Iq^FQXnmefW7@W}_*^9`#1fCAKCz?v*gzTF_?^0t>HMikFAZB%k5KQ}@qU4~ z&aAIFnmec!HF-)(xvO{?7caf3kYK`i)>E?0bvgL5%+OPkqVGGR1h|u!3!ROq>!JV* zgo+*o;yxmt;}s`$B_DL1{Jb;ZBRFAK^CwbpmdaH+z~cw`mKW#AzHJEC9;WxVr87?(&@Z$!4_nS4i-B+b73 zts$dHtQ+b)Lv4}%gP82nviG+d$CYqn62so9``1?_>elVpNH6)br5+ss*D|Mz`1F_y z8O=ws!G(cVUADLp1~tF}yw%k~%Qn|5wy?*9{n1-j3!Suhaf+m?{%~XMKEyA2;0aNs z%iy+CMq`grnZfEd{Cr9&{tnq5W+lZhqn;*6_U2l&rRrNkO5f{?`J|{dOYgMW6WlI+ z5raD8Jr+SrLecNFY}*)iPJTwsUgEkeA_%D00E?`JZGyINX=~^vEU;pXwdgTXJowE* z!E|*Yv`MbX!>7gmKmyF`^SR4f`*>oj)`DMgWI3B;;%$|=FZ`jj2iT<1EiE7c)=W%O zQ?+Ck5mkli?)R(2>(QB~Lc8lHI_=8zliqw%rE!2V;Crhz?*Ws~`b`}Li)*#~+V!l* zQ?vH$TCZq!z3!;!uC%6B3O+*KM3|oLq~es40ESoC&6z&{SGT|v!nNUnaCJR~&N#CU zx6_gLWXB1rc8v>Pv*zG*5#M-7%bThYelEMeNV7Cn8FYF(bNkOnELn*A-DBum8d+pz zj1$@+pohPgTtO$#)YIgG+k2ILwqu32N_;UHBDr=FrP$I!bbF`6!QW==7VG@k`>%`V zR1RcRTY6u;?{o1fEEPU&mO5r$d|cvUIgZMAq{n0-`n4neWqj^9c8#9Y>U^Z+s9PkI z1NS=9%oXgp&%u@nd-r3dLB|y@viV* z6l(i60->U?$k98{GSFc@DG5Bew9u54Q%@r1#Yk9fCQ)2rjOXds=?(l;K0Zi|Hl8k7 z-5W?ioN6%%#}=s{3&O~hYF6_K8>z6qt6E|P#~-c`|L|&%ac9k9imvAVr=-TstDM=u zgOLhkR)E0y2hd+fZNX-lrp)Lep{Ir@`%qyW#DD!!BVm)$BZ}LL4E`sW%)o_*&AKh! zz7fSd`_)D5r3?Ji;=Yc`*0iTQ#HIC=d4KFem{D$gz2TT^Zn+8a>Asml@9RFC?}4LE zQ9eW^{2o)4b3aG#4l`AKmTccOq{c$w)8u)*us~Lz;w!a;J`dSW5+>PAo*M=Nh8FaG zeq#Kj`E7ub5#MnA`{<0s-f(`d<2K8YsVhCw<_|N?A=&1XL3RZ=&z@{L&nHF9aL=Ps zaH{5c{wmm_H93s~sc6{MxAKV_S&QntLP&KSq^XXFH%RP*?OEFt(nNh_LS~=k!x)-P z*4S#FRN@Bu_y`xh<%D(9_o`I&=J+A5^J+X83*fmq0=n5Ih3)tq@mwapUkK5sPj|^7 z%2gT!Ldw_8#J-wRy=GV-NI~+Kh;XwfR~v!?k!OX%Lr%)*G1v3T$#9TM;`GJU?T!XX z0q9wg$h`F%3iW7OYs&AgAaBg|%nAGBy3^&~+G}#;tw#cuIfbn5vW4wS&g~yo8-a~0 z!sD&mo;v0|1xH6R%vV=qg?(l-*A+v0!%0d*1ZGN$s6KmK8A-!w%Zel&IW!Neof0>b zzuSa^Vm2nA?>{M@X~W~FrG00HqzhJ9k$w?J3oOahBOvisuNkjDW_w^ zA5|7*^Jk+Es+#GpM!KgA8JIlAB_@r$FB<}DKxRGP7fen}vauyu3q%=$sv4D{g}G$f z8<+(p<;neXi$74tXbnw((k}DHm25^K1$P%S?(BYYc^95qM<|}fA~`!z+(!_vhQ|(Q zHo)O7QEBCQXu~yIc+Za|`?O;4XBCTWv180Q75g%@m~TV;V}&|qm#>M#^uYH9LAOoi zRu%cd^{l<|=W7?Cs(g9P^23He6g~|da+>X!W`}p~wE&#KSsOpaC4cGB$_xjyg)p&3 z#DG>A6HHCyR1b==eQGs|-ONo}rW6-L@2>b{IH6zIgA+H-5_sPFTc|myRC2tE@6Mro zM_r1C{`}&L+|*)OTww z7Ra$`H4eWd6*xTqOgv*8OJvW$9d2#hSAW^wGAfqTFn>HH<;u(mW%jJs27_6zB%C~ENCjI?>;!k z_!R}+!VxSHHfXTro=EoJ660vtE<4QcBk=r)owxLIW6ipC;5%Ajs_a-af7^sEC8=_= z;pnFBR)A@9-Rz6myGj_xt7_W$o=IDuotb(3h=3W0P-^5|*xh=2<2`>+u;sPq@z$cf zX?*~tmXDjUFwyAyT~Y;~kZ`(06sRbU9*_U>mG#=SGx3*tykxP2MpxAwwZp!tI(P3I zB%GIWfRzT3V>ni+Eelc3M@0R^=<^uqAHginD51$G6yrs~CndAX$c{E7HUt(n@@Lh) z!oPJtT~B4yR;RPBTlryTLxkwRGW{M{A!=kjUpzesH7}`V(aZEPZEsVBSo79}b&7P& zALpWIrWce~2J)|`p{V9d(+a5l&dOX%@KcFzt|T`C=WBP7h{fUynTQFLv2Uo&4XAj& z9a~QyV>yX7pK6KeJ%#8e>CPUvwRy(dA$%}eJ2lS!F;G3{Kcw@^ml$0kFqU~GyIk_* zP!+i72rfK?lF++NKg@iavs^Pmfrv@EHved@GqJkFgjD({FUwmWRkep`$^074l>%%R zj&RRA@3>oY2Dxl9)MTAIf};Gy7Ihm|>+O#6B{>wrzD)=536s)@%+N0hnGiU4vYH1 zHhBYkGItWz`lp}C?q~~cNB>Q&j$f4d_{(G5RV!m}MNfO9<*DPTd~ ze8I7ZE=t;x%@Vr3@A>L?4~2c>r$skz-im#Lvjylar7-Js5hj5nH`iIs})UKO(CeT%_4B{@Qbkjrx&`fp8o*OR{j9cjXOW<>MuZQ9#4$d7hfQJeC1$e z|AlVhJFv1nOb@o#{{zVDF0S!gfIKZg_#WpMJMFJ({%wJogFN}37CPEP%`d8QQJo)(kAO4GXkec6Y;Lq0o4rzYz z2`1Fs@_|3Ud}aIth`koK#_IWSl}@z{R{$%v9$bq${}w*Tm*xNPn|nL=>*kAhk_x5u z{lyD~{j<<-ss!VE#TT?{a`x_meQXZKU%E^kPuJPmYa0)p*L!1WPtN`u50BUmzvHvI z0U;mGuoG&ijU<4Eo$If+=ac^?gVuZZgQfTx>-3FX^`8(2Zypw&5@-JsQN_n!eL z9`CVq_JCg^BL4pVB7cdkbA5e1r`7EM_(9|Pvg4ceW@0z(OUU&J;}Ps3)T8GUmgA0^ zhSRF|9K|eKl6~c6RpmvJViKo4I}cplB?t8t$PAKt z;@CYIB~GP!AEeeXbiFx-l5U(?!}L;m?Qs2jAYY~}M+h#BR6B8fb=|Sl`@suFbLDr* zz|`!!SMBt>K)%G=4duPS^vwG-L+ijzTdP3b6d}*-``3KumD3pAS4g(+w`|{T$Gum9 z#MR|xSXakBOg?n}zQ@&s4OQob|HhNs-dHLzyOzPz&7P%YSF(f(Y#d;wiF4<4w&#Yz z-@_rA+J69;FxQ8+wl0IR*1s2|GjolOI2yrf2xxV?(;0lT*uZVWU2`wD!uoPvbDM%J zKw%G6c3o_HadP&r-0L!EZf{998}DFIC55oVvUJawY|kaWY7X?G!)Q{6KDQ__xB)RQ z0wT^rriS~QuDcS2D@lz;A2h=;?ez=(0SECtmxj5-sR(U7+E2={hzCW)W;&1+-Uc0? zehq%WntVlk<9YZ8up>7vPseE8d6BoZ^sAy+zoPh80pZ-;PDyXtHnj>oH^U1%Ta#<`DxU}Z*68!O0+5;I;&0hSa^=FH+Vy;>*Uo?tHLQzWB|Oz zQC~>mPK>UyS>Cchizru_`6rg>>Qj)jH;~ZqRVxu zN`{jl!!J$dp=sGndVN@2)M0wfM+w+RR-Z(#QHPfOrp+rcxQ=<9TK3J5OtDl@rcxt1 z;IGc_w4|a8eMvSdYKSTD!sablo>r=q=6yS(#dG9#c^IZ>HYX!sPv-Nx8Eg^9Mu>}W ziJ=p4R~+DYf%>UaWoL|k)NF5iL&8vkf3v#!EmbE=MUGYsjDqraJ1ktS-eBPI3;}(% zhsJ)ES24U)Q?fPb+U%oqUtU#4(CMbksK%-$Tp7T5$Gq$C+UCK={#naq_LBATOSE^_ zy(muD6}V|QL`5HMDKT`oReINqI$xI0Z)DXm+mXLQ_hxKtEL?x6Dk8jFsO0!glR&<+ zm9!|VchHMnOV9##i-$y8^9|F09uq;+&K$VKORr0DAUKR4i#RDYemOo$uoYeMxB37E zM}}!BEm=jKo9&pLMhNmKxh5YW1G)M>+CQXii2Xf7PAZm@-H9UuUxV9q-mbp)i7?YM zCt@%_y=w0t84w{dZR8aF?L<5l(?q8guOey@U_8i!UvPZY!tM(-dV4ivzKf2dt3Np0 zsumJARLSQ1hF9Z_MY6(2hY+%lD`Kiy8lt*UZoirPhli9HES0waJ1Yx|kGnqO`IL9e zG}mu>0CQ$nCqt=36i=nvZ1Pb9Kej7txYxGm(>(`xYN%W44^x86cdZnXDl)6Cxa)cE zTYD;k9DWf=>stW^=1f4WCqALqpNUhqU##BmYLyQ}y1k)7NT{kZFn}U6i1`MbYVFpk z^qHqIo1HmUL^>x0i5sbxlRQR#lFYc(&9q=1I{B6mxiU}t7Q+K*t?*8KlUme0#h*C@j)Ue7mIq!iuouR~2B0@_U#(Gq^Dw?f$opZDp^-|*VODLs#FCKU4(Wl90 zNDnCG^8s7-({$<3OT`yY2X=;qs1&bJepar*6K#KG{uFk@V3`kG!=Aib^uv6OpX$@2 zb6o92hINFDG}$B{6$gns9XVwvm`+R*_dd`K#uiz|^4|&twOxccNVqzuMs}nzP4Ux$6_<2` zFNTngTuLu)#E|d1m8k@V*i^4k)}_iG2cXq1Q_H^FEJ0!a*s#nF8$Z}oCo*^pbdg1t zic_c_92vFM2b8O0F=W@yTwgOMqcF8)_>df~pTEcMQ%G7c`Y34eXIi<@x}GgqlimFDP(3U`uX1q~k4Cy@$wfVzZXe(C9IP8}QT9&Kba`jpf{kB_ ztZ?xBj3p&5Rl3g~^$=(zbl9A-QfiH-qS43nxTIpaQ?#!*F~EaPXaRI5zdoQFY|1D? z#f@T$_XeT_v&tz~r6vkR>kRVEW4hy&(j-TwjQf8{J1t@$juY<-8R)B$vF?yYqEA;~ ztx5py;$NN6+gnFjCtiaslMw5Yxr->00#Y&j)lT@ENz-yNACg1x-16b`O_@z%{oZ3W z&(@_+iCrrHJftJVN=+b$XNn=x#b%(!BD_7#NP%Ng!%K%clyvwS0Q`IIP_o0rtU{tinPV1w^XJn*rj#i0M zpSUI~tJv>vKzQ50<=a4a%87y(93E~eCgU*7In1PHInFs6n3eQP{eCZ1$y0wcS8;e~ ztZKD=c(7ZR)=s=(Ky7cQ#Z`X=IN1zTGO>k&3?ksM!gVlNPrRY)a2wn{jd-IfP(Yuq zXx@U#i2hdSgAiQBtYT9wR7cOYZUALVFmElf-+Y?}ZFEbtN{>*H-@K27IG0d+mb2fd zQphq9IA1|xu5PhBL~5=#qQ6l@__HOgHj7H}Ccqb$P-}02SEtptV~yR61II@yHe@Z7 z`y}vjOjevo#YtX-is@-FHsi(WP!1onCDJ%~lvL|xXl$HsCp@~&N1GOJmQ}5J1aXiy z^An;=AOJqA8m$Sf9w{`%b6yAUD%**H`3#6wmADX*D!8^?@jrNZ&!{G%sBM(qOMuXe z^b&e6qVyuYBp?t#gwQ)gK$MyQ(n~@IAqa#}#L%NCARvSy9YI05G!ZF^D0+F@z292z z_xsMQH951-bN1PDR%XwfIeR~`+4IpQ{69`(ore(z<{I<*$)M=%DmLZN(AGbo2z;!} zuoqf@IGzj5R=J2?d^zbN`O86LP0Y)IfnEf_ZVzK*&U?xG1mHsT{b52_2sB*xevOBD zd5Wa!P!R+^&U>~RHS_TWj6Q5Wb6YBGVJn z4r@?{DOOSf8MY{_4*E zjA_osp!x1KdgO>{PssSA88W73utI6`A6^u3g7yr}PX>>mn|)57IuyON+-_^b@;s-6 zzgsiCFybcZf7w=QbDvT3nQCOpEhqIpni=+?ll8&3%}*4UU7=)y=h>gO@U3PztTQYM zgb3T&Xi?QKls7MYER-Ijevbih_iQgy7D1r*@-tNDA8@40?AdZoIVQdsqWkFo{#~Jc z>&)q|yBcuSIE1qlE}j3=OR55@YLs3egI23iQbElh(Gq>Mzx9Qf5y~rlFf;B)!}gO zk`^7>UcmS_wQK5#lq;FtcIo@1C-gVflz56eHn&zfYXKJi^!}#$bPI%J4LO(oq^=5tLa=Vv%EJ!)$0moQq6irX3A>c4&dfVuxtk|kM3gF-E#pQSQ-ep! zkQyZGNkmhjO7XT5;pR2xhjZ_<2j8B(i zM!U}VdcdVn!s8$(S!v$a=1|4 zX>}c$qw0r4s{H0Z!v0PTiWi}P|0 zwf88k9_m23dF!CY-ygAP;2QbzM8@2fc;8f*b**9PF9- z$K>y(21SS$QiA%CIqj8HLNtkT1pytk0j=lyp_@X^GnkWci?{D=fI+v*hcj2R2i^TV zm3qXLJeNyhc0^Bk9kqxfd!QM@-J{_wdde_qT6& zj(SBs5dRJRv>vcob2jeZY2M)I_3E2*<6FO0?veBs1`B2wlSYpasHQFG!XT}bTprZhP{wFQmKU~iTy&!KWfi|Ah+&_YRJju$%i48b@`BVF1 zO$WQWMRt!!==gHT&HGDdSL}H|nroA127cc>0*}1F-`jFCmez_0XZIvqR3C#J+~94S zYJcv0CbAenzmdOTYC*94PKj6<5A!C)wfNVLRaGf;OcE#)<~e$JzmF@HIW2Lhoj=h9--7wOYgMoNUlK&cy7c5S_AGRspqEaoJcnttBk5jk@t{RDd8 z(zKv*%SJ2-TXzV_RR%BUrIN-_Db=-Ii|mb+q_ocG8Pe48xXVw<&0VLfI+^Cazl8Aqa62ch&Ock zZFPmZBgdW6jee>4EYv&a0FAn-MR!7aW)<%r$~jDhj~v&G!_ao6(d|!N;(uQ~`YyKh z0KdXxK!W^K#^gHbxaa>siiTtVX#C|ZQ9#VhwxPqOW$e5<_3psz3z%Wq{dLE6GD&SngPZD;*jon$v_9E8 zw41pP6s%}ZZN6-8PO=Bd3U1UO?kyW1^CSA6n@=HDyAE2u%}{JK+xm`eHa#V`6IH071_UA4Db#(aIm;;dhV4 zRubnc%7t6&_%;cOMP_KFdciK{M)ZCIyXk$#?k_)YpdWY&%`qFvPgy_^9@_>y=k~f> z9j}r^4ts0?ILIaMid96*0_O*D4+y@7<%M!7@5@r*9yspB>uG7UC;f-9v+jbR+r21y zfA-9uj9PU`-rO}C z$jkHdZOBi@5$a}@{)`Ue_Q?as{i;<%W$w^`Otu}81a<-*AWSCm`mLwg-aHH4k^egb zxt|=SsligMWA$EjP(pe};jKriHS$q=l^x-YTxJMvM~Jz)StfcPDJ+C?r1}YQ>&Urd zL!Z?HFB%PRI?Tz_6Tl4BetF!*+1^;>02oyoyB!st;Yo!x zG%|{WHhrc$3IoZ*>E|Ja%)r8d9m3Od_?d*1U-iZmI%N$7~wX2KgH) zfpE1zkH)(k3m*b@zIkhYj@aZdz2iwtmKjb`J91x-R62ZK1R|s(x$o(kQ1orj z3fbIcCRUApe{ZsJ^{K(WnKZxg5BP&#^8OLD5gl9FsCDj!2ZCQ^5DAG4Bx2KR2q6prA1I0sVmsrJ%T+B{AYs%Axb!CHLL1aPCSs zZQCeS8pPqiw%~^FF9J0@^n%hwbaj}PbOkFY&bhE0Z99!`fjk$UU{gM$y~yBL#FjpG ze<=^q4E_cqd;a}8_1&O_Q|Ed)&jdh1N=`;j^&dM01qJmr2i!Fy9JvsHRgr>CSkKl& zFf36-K}p{(kFxp&P+9kWc)zH@y=iv)q+=V;h;>BQIJ-Xofo+-lSx})Ry6GQD@wX9BnfL7L_@mw9)_Ca$IcE`W&=tNF{eaH&x%WfXXF9u=Nowit{I_Be@BYfX%QRIOQuucFpZxY8|a6Xn}`YrJ?wqu?T z9(g$bS1j|;`g_oR**qCs_nNa!FzLoXrwGSjJlQfT!wTuO>~3D&RahOO!@2xWF(EeL z8j*?+{0|(B#5qK(KHJxb=;dEBuZ*J+@D)r70kb{4)&e)cT_XfY*S;kT#$K&18b6=! zdo-MJD~RxX-j2FHgK(4sSus(0h{+bk(q6GcY&HBF&cUy1&G)Yl77@pQr}H|vc<@of z3dE}6%Kow*ZoOaepQ69mdbknrs9|(u;}MJxI=dz{f=LByRnM#A_#s-EvRc4p6?~MW z&^%K&YU^z42#ZOV#60;&^7bgX9fXO1|Lpun()VOQCo4+Kv0|PMB^vN88qBty6Lq7{ zjFj|G#NA+yQF}~qFvZS3%OJSgj+#w=??|K2`B^-5NKE8ZY0}d*I?0+RM!-jqvI)fn zEW5%Ur)B8)e0yhcoRg1jq)rf{&Q0i?uVX|^xWQX4>Q@>OzI~YHKcprrDBHf+-2WW8 zXbF$zWq5okiWSiDqkE$fj8-$$7%`JC6v8ydjJeUi*^ zw%-XaPuibkL_z$t_yjM=xSo>eQD~FW47cqusPLV{`k!*{Phhg`k>i~c zrHp0|v^1d6Fst{@&&4^^$9r^qKTmsk$Lal^x5`TL!ZEB)hLnm5p_1z%6Qy*<9H%F?H>txXvfwsyYP2x<3(yu zrwkJ}BHJU5-R0*^2m7<$AfTMl>*_j=L7_En1cBNu!)tPpd5~A|gf64(d$=B&kE;BY zNT0SSCMSiF_>33F*lprpUjQ00551~Iy=@F`oCOfeb9_K>|5=&Xs1mtVY%hZun^w6wD`F&0p*2$pz)lyJQ=|FlTy*xsV^F>$JT$`g`w7CMecGLSZ%M z@3*Vt4FUfOXPJV*8H3jcKeBp`s1c#aSG9IUI$4#a>xVh#@gbWyaC89A9ql59#Rlp< z{|~+zN~j{n;HqE0pMX2VhT7EX!&7!O)MQ7Mnw5wN?AB@z-KzDa{e;8WZ3!KG78o$) zBiW7hK2C}s3Ev0j-Y*^YW-M_Yr!LpMasOSf?5WLKwm&)Z4uMx{u)LXR9tH~UC%B1v$KKeCr zWS^Z!{$|mb>sawmKsHOtKNH+*QYT%b z1qTP?M~=r~4D@@&^A3*2HzjMBr0%XZBZ2;jwUm4V$sel{kLe=6@s#-*5aQf%5(A zz=)nJ;OrkblF@9Z>5)JzUZ5Q#PJJK`N^f>inDecs)vV!35VQuu<%~K*on}FBq~xvb z*r;DvnhtIwZo8?bL?wF|jpMP)@EStMsyOh5;cSiB`1T{QTHW0Whsp`V0;&MW-%33N z`xJi7dN2%BU*3Kh?P68W%Fg&IJi}HgoBe(`*M4BB=KK6Qs3?r@o3v-sbbednQD^#1 zT+FS4$Xn2ua+Pp<9Mhe3PO4uXcD1IS<~gtq+pMp`qg$p= zTOIYzK6PW@fA?yT@~^(AUAjP=BqhW_`Gmg ztZ81DrZx)hW9G~3MxO?&X6NC0T8^OeFYq>qqKWUDSupIWFwQQ{vAw8hsg?Wkl|{q+^Jowl!3`=h?ecU_?G#s~{0$4Y#Xay}8e_lf{7g`1qsJ zd;1BkUX$KSTxMf)Etp+k0LGH&hk`ozC)yEdURXW=-<{EQ)YY$bO{@pg^0TOp&^B`# zuG?k2Exw1mFw)~SS>K2uJf-`?J~8s3=;&{0vxNLvw{L@D&+b>5W-B<=MhyGck}t>s zn54>Xm-^ga;m$9A;N>QkI)*XK_>WYfYCdyy-?H+auiQ?)5N%&&9=r*(71Oms{mdnC z#|QQk=9-^-H=ep&$~}ly4q|h@*!4Wb(pAosWyG>y#Pac4-xnEg&RYI*%$yF^s~gn`-Jn$<>=7*<;xqsxyoaFJQnlLsR)5(R_T%(h^9ENJ07S5k697 zg@^S!r3p@i6N}ZJ=EJysHdmvnr^TRPoXPkc9fA#DO*MuKC^R%9jL#XcAERcOL-mz9 z;JV?4id28hy+v&5T1gEARvTmRxiNAgJLLlvmg_5YkAt3VU%18-YIVbKMkgx(@5C@l zpgw-081p$JC6bTW6n&p}DjtsZO}XkFlxg>Wi7$P)WY4SVyHm?|`u@49(;?{}SK2vo zp?o&=ay@0)((*;mIZz9L#&?&6G88d7?jn&3X)xix=C8ra)k;j5>b;YKV7RLT)6 z@=+W|mbOfUR31El>J;Zz30eEZT>rHQ54NY`!W(v;B(FHZ;ELy(u*c$8UOA&Mp}9$? zZLEIyD_GRlV_Ox0EX%rre05H?l7VBk!tuS3ugI!Y4 zj=U%MPE!DcV0xo()0&>2Ti4i2PSq8Tg7Lzqu$R7nZE&x)f(oa*2`w`)lHjh)wkwwG z#=AZHmC_}1XrP{u`D`Lhd&k>6R6l+uAnyL1GpnFlt;S1@f#`qJ)WXT5&zbJ8KXkTOyjtRa46)b9LnowbaHT9Amh9YdqG zAuXQ<^<~4C;l;Gmq;T+xy^;sFjqbfaSuD@~`sP>uNV4%y%%NLp7^n=u*>t10P|$5s zvv^KnLy?4WmI$|pXa--Wy@8uAwyH4ShM?b!zBbUjdSB)KDyPBQuGzfPPj4c`hphVD zgP2PYrg|dSLm|iD7lyoYx(>_37@VJ>2Wki;V#W0fQBt?}OL*$ggURWjpIhMFM1|UL z2p6z>T?pn>PzSO5*of6*W#P2WK)(WhUUXN9O5!OdI?|O@6z`^3A9lAqTe_7sf5(IY zsW>-xD^|No0tLxMC_Th%ZG%3jAS6gKB}4x#j9lqsA{B7z=9po>6@PY<_HE<3!3f^Y znk2GbHTcs}jm3b!O(R9$m~z)x-aAe^aa4$DaNT~=jEvr`x`9`5=3}g12d|E(Y4z`5 zUl$}^MDQ{-KKP-~ojVD0^nHQ<5u8V<4wsG&teo_1Tsx3ZtYzr3ETL`9fHX_z@9~KQJ`V5~0Oe-p0SCisA&**^ql&cLnkG+Sp@k|&S zpuH8tFErT&HLCe&`tAv-f)ll-8?g@TgriLK4v#dOaPXnlFRHif5eG*nHKf#xYNQ#+ z@kvdZs4-UnZwpbY2vvSi0NLJ8f$`e#l@ByE(?P03_(gG^NUVr-;!SPLescdIwB8$e z*!7f{+*Q*8{<`D4s2!KFd?~q1x<|j1qoR=h`3xx2n~~$iH(W{dt5^1@o6^jGl+k{lz4f@mx6$JDl4Naz=b{0i%h4WIe(m^wP4jnf}cso^3T zmpsFVK<6)&*DMFrcEFj+v9#y@*`Y{kjZ?(sCwnp4M~LxK;XV&bVyhmdtkFEJq$+Hh zZ%j~5T6uK8r2&@PVJH97!HFz#g|#cYpvpi+PVAcJ2c5e@R;}fhxKt0eO4} z>TNRstb?hc$sD01(~%~a_d6wWgn*oUS&wWOL;H9X$p7YL5gqcWKl7H%W3cuQyY6?n zmMQ|Dx1HQrs8#@D5yv_6J`(u~jk!wNE_u`RWS?4c>CGaXfTc>Gm9;O$HD9}PLV)7| zLf)8%88ztaZ8Tfa1jqC>>rv|M@SBHqgA(@P@_~#VjFkz&wQ3a_JN8|Yg{~Z$WD4`4 zz`jI6k)-5HFG2snoEzujmBQUO&33v2GjoGE5WY1aLW+S+Blt$GM)#6hv0O}#9XM|% zQ#j*5JBoHdKfk4x3P}Z)IcY*vXYBVjg(x-Hd65#gRiy9{*jLQyGWdB}srM36NBFm9 zoY2|3qV@A=8-AO-rv^B=+r%3Gh>pxC2sT^GuX!$j?hvavB02U5Wexwj&MQIrPVbF< z;WyuwMZ(f+c~KBIM-)Ux241dX$oYa%yTJRJ402)N!Z$SrX<3+OyV5l0qZB6l_nC{? z{cRF4&26OfE?rP~`4AsN6*X>hlHW#bCEbgajy2^$_I`21%lr(WFWCCl{m>*Vt7iIN@Or9vgFRJRo8%}1Ew1)ay z-J!lX_bL4VXO~k=jogg#@Sg@H`g)0x&iw-shWd3p6WcQ5Itp{*np?AR9={O7>Ss+tlf-K4=2Fv&?iDP-C=a=D2(VpG{|G?*Uet^G!3d$dIm{~C4gG@KFcNKGFpIaVl z0$rUNnyQ!;cIt|q!sm06950d{5+4iF8+%{zYoqBt%6ab#gy%KhF*bMo9)}HHY+u|q zv|Cu=_^uM;1A!&&)d{`-_zCfh5l@jv0GD;rIeVtmy{wl4&r1i!%09`|*4@tgX@T3# z2zL^28s%9^0y?7V@Qo3jN zVLfY>ZIJ^19T$%A4|Rv%cE0^E>O)Vs@)R1OMfO~X3E}jrCeo7ik6FZA8L%NdqjNV# zgFAyNs?Nni*-KeA^m$S;yhr6|Cqu|dXph0o_keD zC(Dl%AaZQQ% z!IB%YtX<LnAfJcf4@W4Cm%$VII{(zeCKAbp1gA(F{DPmwo6;qmn)$XO zMhOT0u`C~yjPu(q_0J@1N5)|01U&4?Y(kht7wM&>vUnskoWfT0^j?aDOu)SA7HhA> zV6hz+h36$M!fWW?nzgs=1vZOuZ7LTa1Av;IRglaRi23glR3BdFl%cgo7<8wY=h#kE?x=u!`Eg9m`V zdputqftlAX1H7BmjZ1QDZ_u&TPnmAF?3d~gkylDkgAD3brj@3Y?WtZpMBL0o43pLrg`22HE~DVR3+5A}lAHiK z&6`3i5Ml~(-9UAER8}ct*DiD`_(>fO1~u(O8$b34Lw>coJ@MM?j@|YsaA&?QzC^25 znK-(%$eNTC=n(`)mk{dm8@_~|S>P^vd3LQ>*XKD8GtVtQ{UcF>4Q$T-UZ;*ea+X+Z zw)sb*1mj4D1i$-hR(HlQTl{g9)T$v~ls@7OA>=E$;8eX*b!;GxK&$h^zL^J&NC+q{hqt1efwfkemc|)`7>rjTzZ)vF^1qi_*K_;us-XV%H|t+Fzm~O*Dz- zIl^D5F|nf&XX1#u_!MN5|cyrV#AVoU^gt>$>APk%sM{+ zO6_&Sg2~e`1jbwxZg)q({DWfFm#BEWh@V8YV>vHj()H?ghB%Q%XZ+a{y+2G%T+{P` zYyU`2MW$_43?ejVCk(pHgmV3IAo$M@7h{n4KRHoYt5~QOR2V?1!9~dlq;jZNTzO+8 zW{|Wo;M|X(^twYRdV}ZFu+p0!eIEO6nl?MtE*=ACdw@e5``m@wZ1MA9Z>~F_z5Eu(0rF7PEql1iOr(C+9nv6X*g7PFKAjs}_^Y}wxRmeh${pIJgs<-j zs%llM_-Za=`_C3^qh6?pUzo2Cg@o*)yZ}hrDj<2aE9=4!6S+nsIT};T0OcEo3)C^q z>$)$65V86n?pVnpRO2ETdY^b~w$bi3?Q z!oi1&$tuFzVE@iLV1$jwAVbWPk&nOnN_Il6Yq$-KB&1S4CijZi&iO^z>JLzQA~s)4h| z{3%UO!!Mu{XPPbji6NPmAQ}6O;uD3N=%|<$k`qjY!(a285UpU+S^kbc3-1`8zlqqg z;Mj(ms@bQl_ZST}18E%{xOQ+GEafs7n`b*rM08N8iQ)Qq{gsi~7-g*S9FMm9gbRJN z656a$S)qT2h3Zf1wPy`|>OR4LS~1VM`&NWM*jMw(yV3{WByIM<(p{>`aY0tSeYR*< zm?-5j;5KW1t z2#wD^eDiDlX87LR^XxHAJRT`T0RTcDqR0q^9$!hVYH!iKR(JYw|8w0YuLpf4lV7ff z#wYYZ(-Wjm4AyY&7DOwk=zxZ5DO8e1oRcz+SB^`!b0k&X7fkcJsRczbz2H`PZRK9pRg-f@(ps>(p4!iCb3eTkV(I60@!(m_)$7d>aBz&O8n$CS13Eo6V z%lSSs&?j6}RUK3ToIEG=ZlM*H#D}R@6c1y4N|1y|MomzTt~1L#9}aR{Lbr=@hRoI& zeMkPj71%>w+6h7lNX^Q~ZI9jr?>Y6zsYFfCN!D9bITgz+^3;@GiP4Y~0Nt)gXb*;X z5n-5OEz1(9`j3QG*C17uYY&;nmMGP)Nf7)ZpMm#L9rhq)nWk^}y=GuWNNTbb=A;jc z5vy`ilY^;9Iu3j=7t)G^MCH+bdn^q{57BYsblN-jlN+h5pBwc6*fnP9fnF`5`ej7< z=o6a{$ao~f#)uZ$^cNjmrty}Kz`=)|{Y+ZJp0L~&m=@aDZObfTuY+;J_e2Xr%=<^; zC9~wZ`-+6uRJONqg)YtIkuK6)mK`p`T>cOI_OsL4NhnNI zzmlYFgK=3Cw(Sa<`xlVEAlNwTw8ih{(#FM98l)VX5;SS+kycXL~gc z{IYkw8z#FFJo+AYa8eqcC!wPvq4j~ok}r2iYL>yh*@rz#A8<{Zl?g|3Dxo3M!R)1xa`%y z_y98)K-8WV&E6}apd6fI0Blc#Ba)2>-Mbub%iyM8h#D26YOg=`ALIMhLlZ-VC@B>x zLZ&ScR-8^*ilbQryI;@rz_jvD6&U`dJe)pp-v1Hg$#2<53tu^x$OX*v=^yMAXyM$`0*@X`L%f^! zf%=6#-VK-H$~R*r6sM)tD#^hGql9X!&+4~Fya#UZ+fpDw2P!cw;t1tpW4YQYnYpci z%Vu`8WB`tKqRMTd{@eo|D8?%%PjY-GzeItPL1s-=MGZ`$K!O;~K3IC$CUI&5DGUWg z{3@tC*$9TrdKi@b>4Jb*t@v1$!cg%(%Hyc_qnhvK=oR;PTKKs3v&Id{C8k3vMRem1 zl0Eo+HU4_Q!cHxP8y+f0(y;xsNg5rvykDz)g4Ub#{NY+Ic-#x3%#jt&m-fxpe$r6!hed?h zzcJFgr+;2;!CDA*)BMjg-B^MULOM3p7pPDP)54&pg zXpX4fA$+K1UeygO#0Z7iUFBEpsMvX8t(XmGZ$w75kQ(Lne{S#E1D@pIOEmaa(0N?% zNzW`dLch|-wnYhpT@`v-LU8%rFG}s$^4e?OQ&Xje+goH8yKuF5;<3C`>x!5DIff#T z$Yr>m;cFXWi(>0fb;s8vs@}M8)EbNPibgJrsxvze=M$-p&!V9xN97C(%tUt1#khOL zyd}7c$p=53?p!m%bAulEfVJE0e*830uF3b|JMoiN{>%v?F>0wKLXMMfq1x**r#=%T zz)DpL`K2yODcIRAF_Y*Bl|r^L$eps=->)-o-S*yxk#c}FLP0@*;OZ%ohljoi}U{^expyxWnMKwIe}nB&m6$Q{kG2b$Guk6TaYh!<+w?Ec)zX z_sujhQ)g2h-(Y7hFGQ8X*Tp9FwV{mANZ0r|ynEKksWs4kNSYUT__oIum4p2Jla8|^ z7in3WrKRQa6Jiix8#O{}8N@N;zy23ZkGxvePb_gI|1nH_vQ+sci$(NoF9p)aBEeeq zLnHjR#F4q)i#Z9rbNfE_#p;Zy`^iY8--<1cwsznsauFy~JE4u%u2i=B71ke1FQ1C;W^q$Z~M%@jArXL>v${aTs)+lKGsscE66 zdINq*{E@`w&7fb+l^q&sBKkO+7*7OH6iN@p=}23jvtu576FRg05u62xt+3cVeY-T$ zaV4ZWd81V2N8!`jb>%-swvBrxOLwTTP!mk5w4^`WzlX;o2=!$Bsc5i5A+D^(k`OU) z%_i8hI;eKf0|e}*HF;8N2EeJf*d*te$Pti!R^DdK+SG2N!_~72J2G|6L+7VX4=N`E zuTZU3>vC-l!=?<&eo30XSZc22y~lG&Hzlnuevu{Cl^*uC=51%9;W~$9G{$_A(V23d zOq!OfcUX_~IPAx?jc!fM0=S+U*A{@<2p^>!CM-TygCF36RvA}p>-8~D3yPS;3WfE9 zWBga`*n6&1zHeifydg{@E~hZ0tn6=L_5~mDb{gw?8%+Y@0nz@>Qh-cyJk@J|0%jG?nu-bpKIk({PR8F^ixtJLw4{W?`O| z!ktyV{OPf^)2jDjl*5xN_at661fIUarb@<_zHeLb0qYXYMAw;an{p;;uG2Ab8omCq zRBrBEW?X^|-o(UBJD3HjdHEMSk;lg}v;NY5a107r3TncVla3D@u?Wf|bo6(_Bm6lk zO(}$2y_Gau*p~PXZa!V%du>LmOr2-ZvJ|P-6fpYvcf*+t0OY(q#FwN~`e0un&5{0z zt7-Nll=MA4LdSz&0Q`0*Zt9JGqH5W>f=TI*>;M905q)@fH5?X~k-#)|izE(p_xseE z^^%iQXw=|0+Hc4yv60^y_myNfV4xVOtLZR@L6uR6a`GrcNe}8v8MF}-BWZx?OrJ)- z@nTBTO#JlGbF13b+W^F!13%eeJdkRNr$3EyIw?NXERk4aoeDg|djHIv_r{$Sd#-^-*4bnteUa&iTlbkSW1LFa)cNd?`uI@Lw zhWRcQDm@08?w7v<3hQs!r_$)axm;M@ND6IaN|06EqcNcMr&~7^vWf=3sw(61@s|w` zU&+(rx2?Cy>BdMinFhP zK5}OG?rFGcW6DF6j{nj!1$Dq~GdSvsBjDOG-!38G2~3`YdL~+_DpjTj6PnKpi(O0= z1+&*}<52jUFV=0+8sc&jXp8&z%*L`rTww_>7!-YD^Tc2k%?K4k{WkmbYT{d|hOvMMT|shZPo zlz#^I_s%p30DURhhkjewXr%Y6x!}>47sKJhc8#=QfZsWUF&p+mOhifCT_<+fK!)In zMnEbJ^sc!hD}W$`cw#~-h40QYa-m+=_|BlYSzPszLCjKf&;t&GN2>d~CFPf{uW+Eh zKNP|gb_?s-Fh|0A3+{BLyTR-NJotFn^a)~NBIStivC4%XPV@=NlDRvhiI_Af<6(!! zN|=f`{uv{?R^mihJA&I@aLNOA_?oym%Dq0%hSC;MY9D5Q2QN~3aVc9CimmwX}!VOIfDNT(IEcvc%Rlx~>@?fp67ysU4n0Z>{A@WhBN!4Fob6Zh# z#$?%I_jZd%2!R2KVJrxL++2Nc{SZ&Kzrajy9Z%g3$a}Bmk(R0}jUD^kyvP1j8T-wq zcckFBc4Nqxv*N7^dT7m}N_MVt;C(@(W1_ zs3@?nvJ8u{5bB)vrcWdZc1x2X>5g3Cqu{gc zwUnPmP>E#v+a5IcOa=V1#Ki$rCQAlyR7+Y}a;Wj4=Wh|xx+a27Z81`k!Tc+qF`bm& z!Rc-bl~`WN@NN`u!~pMYQ_Y5!X&!G!9!;OOxBW*tdeT?Hs0fgy_O;&+*z*H)qhF~* zZK@~T=7ejAVXf-2E)U0T z&yZaG`%-pE#BJXhkUVeYw$E3atz#h-)|tl1Qg7t);LG+p-+XJZ+ivE{G4*{po>VhD z8qR2izgn`F+o7Bjwtghlk#$)xG<6+|IQK=1OqRsE%)M{ofWCb%=OSK}kw&$or(9?? zAmiQe6A*|j@qST@C@1-HS9|K*M@i6)b=Ed%$?*^P9<*_pgU>yHrKM9+QX<~Z-;atf z!%Mu7oX^0fL0$ZC%sl3&zAdnFwKe(fj`17TM(4H+<0R{Q948eZ;Lr#MeMGvlX3*HNWWopf8KPSS!=$#F*2&j39$||)9s53< z8y+rf*)LPHBmdr*)De5P+kAkWix!n*=M!V-v?5TDm8#HHZDqK^$C&t3kEsC(`oJ3k z_nYu&uW)t=(nqw`Rt79A9QMe$8&pV!Tn=N>aqPTC7i1W~oQua-@thwb z{8PZenkQCO2bD5}NTYY!QXhrN=tiAihXU3?eNz zky<6+*)_uCM3D1yT;Q)w7e~*ctS)}i_e>+!!jpl> z=3^9*%K9ZGv~J|PN1r24dDHGQLnr(Ckr?UBplolZk^BnI>ktl=kMx@YB*86;g!Rg} zjRT}h-wqh;-+3TWl$tT^-;}h-YV?Pk)|0u8adbKWhmz%(XUB@yZPzrA-8#@=vHaL_kY#nYfm~p z$5S(S4kY#1B3qGk#Qk+Ba0W&yRaHM!P|+}O;g>_BD+nmwDgElO-xVmouHj9O1SFcg zd!#GClBb+TJFVU?X1`O)9~h0|I!uLJM{FZpCP*zSMT!_&Ybiu{rP<*^P5_p2)nijb zcKC32K}L~XLu;zp%3_F>uftMX z8HIBQq5-Oy$^J<0IU+icedO55I!*uHEP%t32X|}WKuk^b4k}!$L<>1stgBmxq@)1Y zUq2_mcd9u$4i5bA;av|+pSuUHa^G#RFPy!|t~EaU`*9xr@h>Y!ZjSX}c z8U~;5waqyi0l@TCfZO!@O;yqIh~Eu1B=o7=;h~PlD=amD{Hz zjlRtXt&+`Tls8P(mn?=ypyy|u;sTU&?->!fYWb)F>R|KU3f=6juLb#J*SYkAbn#es>9eNE zw}=a&n=O2bIq*RFBMGuaLAjQumIQ?g&4lmn{g0xP3MFro9|`Xdx%7vK?lc5<*#V!@ z1{@V1BO@a%E$uaE|LHtJqGSV5 zDMX_WKnQ8;NB?(;=DN*)%eYKUuQ69#)(VJI8hy6G{}TTv{(m1T|3hn<{{JZa-+=$t z`u}f*_W#x9|CCn#&vpK%MLKu?^OSA$f7!=2@Lx3p(bl3T)-?Jt*D9m+VxS{;{5t*!>>`|DUS=vlJtweZA{oNhHn^ z{_n_ZL#{hKe)|7V_7+fWeNDeG#oZ;i1$TES?p9oi1uae~#ZxS}Tac3CP+A~3ZE=^P zE!vg8(14c{Yyibr!~ekzeE9-%8IRT`9y7P!{rsiAove@wTFqf*#Djl_J8vD50d}Q9HS=K_5V5izXto?B>%T= z|NqXZ8T|+SzqS7#s|x#s^BTxrK~c%$HK*6BfeC78_Hj7 z;fZ=4rjo)1aiW&@5U!nQ!K6vH`2~S<)A1;K!aZ)m=&+#_=CicYwG5{w1X1#Rv>mKX!G;9X%qMF6W7X?1>17FfisiCAJ>3AY$0tg?E3B_jHw_v(i zFx+F|34j~Y2_+ufVthQD)oM` z)Q9OGOpuQgzN9KqpX<8)0qOxM)q)exO;am@VbSxsINuRXxz2pESM1z8{4)|fk(1-J z!?DRXOd0ZwzDPgjyBAAwhRDbL3}Q0b9|#;dd3=XhzGS{Nx-PKCfEVam&w4a_JrSl^ z&Z?RgZfXJXJ7=DhrHoVVpKvmX~QUj#VWd*ZcRdQwJqX@&ej;FAX zq)@UR=1h0L*EzN`&o|d@#ZpZMv_<3+$SZ`e82Kp?l|`GeS>lP&n;lXU#| zSjJ*$fiozy*q$=uBF7rK<&zi>txf5x57S3&n37M=wid@t|2zg1IxnCT7>0kU43pH^ zW$H=ds~)`Phgf}2qkZVBCHYBBB>(!f;cBo+V}*%SgOF<^{<50ZsGsPPpoHeAIc(I3ah@{>lmTBf_ z0br~{@tG0H9OAvQG+clzyg?4(>YXX3A1tYbz<7t1dt zSEBYSiQ=bprc0N${yW;Sv<1 zl6uI`WW5={!*1D04IA&kzM0m{lF4(z`?sFMJRc*F??B%4Ee z=E(p}&&IcDhCq;M&bpG!?##=@PCpRG2SOmPUjNwF%<>#$)<=S7U4cm}A}}waCu(7| zb-V6I;+pK7wRD-6#csPmTT{)Yd*W1Je{!9h^re7ZmZM{)@HeDme22650#EGvyV~wK zY^GeEn-*T*!?I|^WU7`#Ds=mKfDn64 z)R*aFIj{!to-E15mp?Vrf;qV}9qe8KX|AcwJgp!i9LI zE_4)@L@4W=L-;#^O<%y%L$$)q=)$h2+Tl06{&7La{N(xJP*iGHbvE>&G9itPD$MyZQ@xH>m| zLo0rdWl*STwjP_Q$%s2Md#yUB6S5b7X^@WS@VQIU+WqmDOV*;MnmtaK^*ni*uIp50 z#%-#xaz)Eeh1?r7NWH7ZT15dPBO(+e&gqWyyJ#}b2u}5Lp_bdGpIl}#_PbMRiDKse zX7(#~Stu%f{k)e|p2<|5o&Q`C%mjx2{?IQw;2IlxQblOVv(3df;^sY^Ang44F?mk? zj(i|_AnQ+=yAk5C!@oBLA2;s2H?Lsrs1nx)A!blVJbY7?jtVuL-?#DYoGbG}+n2$} zVX|rbHB?pY$TZ~#&LL{0yL?Mhw_pbJ1FAwBg0{r10&P8mb=I!c>HTzv(suN_?@<~R zRNdpv%cm0rf6v|fo}jyt3n6N@WUB=w1>6nySQ@fgl8R-siMJ+=c~mmHhKQ$e?^prH zZ@ND+eiEfHk%Ma8;lFumeN0AJV(C6Z@}T!yw7xE&bYPUYK(Tn#Aua7s3llC> zPN`ul|ZU%EY!7CI;AS!p?`5<0Q+)i(6M>yQ8d7BsX7uBngz_Ls+GEpvTltX!#Vg{$1fS*DTS*BRBR0S2l zo8_aFHo;!{$uH!h8GEKopEzGZ|9I<7%S{jF(Wr7Tq$G55|7}9!rRppNgh{76<4-w5 zw{8o7ff#uwC*B70p}6_*E%usMtNKgVAOE>IcxI}18{`w4I3b*!*79k1o7@%ukR@pn zR_QPu^EbO{hH`Q}9UGm!>9^)P+9f_{W=N_I=6Wj_o(O3YXkOS5?$m8KW!T0|0#-Nf zOUsORao=pQ(J`;<9WjkY3X;~Rz3?Ye7cdtuX2a%rl_mmzneT}$D@iE97cELd<%|o8 z%LO5yco*_W9ESL|oyB$fMs(L7(_q)!W2v`G!w)gfCpSyCtj_!1B^%P zyOd_7GSw5V>8*tLZ{*|Cau{g_NWOuJqe zN0EWOfe(kPJ{jG-kb-n)N%dchelCa|5Au>l^?HikV_8b27Tvr{xalSI1q%oM5FBAe zw*E?X$y;17ZvKEjTkTX;caIe>ARnpDP_SCLQ+0{I&7aS2=b%bau+_ux3Rayl7ED1d z6Efjdm)^ue`X(6QCSM$OWYwS{6`CC|ms+K=k1 zF$Sd1lKL9c>PKcSnN1kShB72?1h@$ReN`{~I;fU!k%1(Cg4S&&r$us0ve29Xyfgqi z`Z}I6{Emmj=RBQuuGg|O@&F>?Oyd5})#yw2_-71J+D7wvzjG8}gVUbUf~WQkVma*C z#G5B9FfP1TQ)ly+F>Grpmj+yo9UKJ%Yo?Ttn`)xiOmSDoREuzb|5TABufSa7#%mfi zBxQq~q_XDeIIpozSK?$_muaO-+0$cDf?&#gTJeWQ_PJ_=iC|x)_y_E*VTLewrV@)y zk)s8S$%m1MooF-$Xe_vL4l`1$0B+W)+SP@ONu#*{MpRn7nZ!(nq3<#9SitnC<#XCq znMM6y(*g<`tm$z$-H^MChr+Tp>warl)=~}e*ot4KgPfum+ghEz$mHqxr4Qr_+~V1! zznQM3TE`*m_`S7#Agm9+vrt#2;{pW-8bPkUI206xm|D697Knb0+lAP#unSOk zLHGCKmno5~EeGmv3E!|!5g9Z*tZVH@1-WuNW0onGmVG-$ zZAIU*oYXic@;-$2(!cukfw^)j#3lxAzh|RuKG*6^kR~O*x~BVLZ53a*6!$j$ixvj@ z7qtb9V*I7Dl9in{5knP!NpejE`U~MCwWE5Fuxp_!Kom3pFXM^l~A)i=s zoeM*tfU}Oz-J-^tNJ8ND?q2S>5DHJLyYo2R!(gDt_lx(nxS<2{dh9yYutp8FFiWLv z2I<#4&{wzawyD>w&MDNn3~C75qQ_|?m=v-4X~yPJr1Yc5$vIJ4`ys+5zPSeSYhg!2 zu;<}bLeO07-1;Kv%t%VJ+jvIl6Ned36ymRW3UlP67}DjdGUwa@2Aq%297&^@3mFoh z;ZM2*AV)t*TNSk`*itq=Ds#!v5e-rO$QHKHR;8QinDulp|NCjikWi0Z4DpG=lyg{i z16(~F_9e=7N5YW#C z2(KR=$tOl88NxXQ4E;=!52CxV9c~B>eG#)ksJn4hd>8qzaQdqj3W3A^4B4N7e(}&W z(t?8=QTz@;0m1G4H0dvzmJAGwo~MeV60bkv79;e|NyZssQ!wt@#@EIz+#7WKSFTN! z-1rD*gGK55P`$--?!M$d+^_U3V$#35JoY)Rjisha@8CKkN|N@2MlWt3%HNw-jk4N!Fy6gt-Yq+x6SNi@DPK zO7J0?bUTvs4kDZI=d?&Tqmt~Y^O;$u!%gwKG^t_svapSm%@MYg@wL|30|{%$*?Nnq zxEV`v>_orDHD~%IH%|+xrbeZ`!toV9DF_W6l3OpIArdgl`{>$v6e$J~f9ZCl^^;Lu|LlNjlJBqWXbSXnEx+mm z-nWn)3!olImp#OH8$y276W#S65!x=>N(7f}-PyRCO+8X0ul8~b9 zb2c}h+!FEwL!?v2QmyMA6|Wn~-bGv0>0Hu#XUPgv(WBQ&1vzg`04yt1`=zY3zz9+5rgk1$0^vM} z4wWv`1HWD}j`h9g;N!9jzg^@iDg`WUrx&}PU4uaqWCIW5UFQ$S-;~t)Qr;YNMReR9 zI$^>+g!Z$R1$GXvWynoc7>g!=8wjl_|L&_JDPb=leNQufvnydtmMi>s@J%Mm_T$5& zQ&68QPh1%bF3i)2iH}4_yE4($wgQjUAnW&E!{WPS?d0m4bSHZi##O5hZI*tFqX@|k zX}?KN=Bp&2$SW=<1`-^m3VOk-ecd)`J%+|G&JG_g#u*@|Z6J!57vs=M#anw*PRfOO zEsf~kN_Yk@OIhdZB9L|zo16^#k`pBU(RQ*!nC&zS`~dW%Xcf-KBej1}?+EJd>~mV= z2q;mc9_;=~VjPlee>w1?@DD$H!&*$jHS!2k&u13stW>E+k7V?~j11XYKgmf8AeWhZHl4jh5?=C6jJs5X zRKzk`&0AbCvEeOa0C=g1s$VFcMqThKfiB40H~j)$6be>kqg?LN+Ub{kD#^=JTcPkd zwo-*iIb@vlVHNm+=|G$Usa0y6DphZTYSWOz>zH)xBcehbejR8165Mq+?e5=WMCbC& z`_GP}+!=9=bU91b!k~QfaNngKvc0`yuhJVyMvy^?^8f#n^=q3ej|rW>|+o zx%iA>p2_Zwt|Budga!5`1HX(r^mIh$2Y$TGCRe1rLCbTScDeqCaEtGB!%%sD&n+Eb zlS8eo#$PW4av)6=qEG`E7(f|_bTnzj(<(HZZp4o+4_|r31Xjl~IImZy1A6JUS0)M< z-y!|hJy5g_r?c+|bT~f2JivK=lqQ`w63_K8&uGD&A~MS=&%sGGj<(k-jGLY37-VdB zB~B5a_0iDVsZT+W45vgjBTbz&#?V%|n_;HU7UP)>zwyWS+zmm1biDrUxTvaLchd+R zRTA@joPcSD8_?l=pkE*&;wEJ;%?cm$j2~-<(X2a(t<7^iB(Az#FN{ zSRQtD8i~7%ln>>WSN>zih|Udv+?_$!PnUhg`d-C{WhD7Ph5n*L73XfJRFsYS$=3{z ztO8S@`P=6jz?I`uSqI8_Z14E`FAcBjRS4hL^v@6CM>k6WJI^GakzzQAn7vifcpg5jy@|2que!b^F>(@s<9sRD(?HOATH9BqMC*_x+SJQX82qwEe z`1`cKHo;XglH&Mft*O#Y#H~1~cyXQ1mHY8gr^1{sw=Q!UiTk$;k(y`|`bGvx*$`rVmH% zv8a5^b5woyLaTFr``u<=a8v%Iy?f+at;TEQZmX_e0@i$o_IykH>K`A{EAMV~s5IdA z+G+*IG37@$ZhErb#Akb2)3_gLsH79Et~85f%9HSC<$iT4l85b-!EcDraqxbpMN z-|X)0%KeS>`qeAqtiaxZO8nIdo2iG`otv-BYjlq*=D)*+@{V6=*2_TAS=U4RWPcC zd?`8?S(~*GK3PY`od2NFJSqy!`l1%jsrWTfXV`w3no4Nj?~1#IBq@<%#Pk;5!F;3&%@bYo zYA;jY+si+D38JGGom!g?TBlLxP7w$As@W9Z7hS0J;UFF%h>|tO+mT-^PMO$vrS1IU zk@P=pZj#O)srlRySbEQhsR|a7XU?bt=d^3bs4|~3QwAwZdFJ!>kzWXDYsUR5skGSS z`;!S0ED%kZ;EHb+x?q|1h|YqHP~R|3X|H&2KFP($plOx}gvbc_qO}=j;?g?H&MAKx@mpDj&19?LAGYIRHg2BA4sGTG~{S#H-g7zQD7S%$&Jx{ahD`qklD<{b3 zt1AKKfFShXUi?tRV>F;)6~W#oB?RZ>s1WL5h-_?O&+&BKR3JJQ=yKpf*^@`4&C z@wrO!EeP58+Gk>u4Jye>ZgJoM0$p{fwb@Qg#+f{FZ$u!C5w|rHpIeC1?dL(v2RRO% z0CG;gcl;CY?{q|WS_X}ejoFb!J<)8-UHydZvSUVI*GGLWVIP6T7tHS#?v9kqU8IL6 z1TI*Z6WTWz>%a9}4f;~(u#~%Yovfv$i{C`&u~dOgOujbqt*0;Z#K4n<7)EFozV(qD zx(*=is#diut?ak_DNN(uantH(^#sRHo;MxC5Rle3Tc@$$&hyX3mA9Bz?ELJi36E52 zzCslHvEIPc^!Q_Y$Ltdhduoh>OtRsR(NKe(5~T-jV_Sjs91f=k zF2y98G|W-r>OEj07J9+c7s)_nV}>-1A%5=|o$70jAOB8cney^l8jV{`M}|K}-~-C- zH4jE0+UI6?nN0ifjF>;3O0$`@Str9OgQkc=l6Wkep2F$9DdRb8@9O8*dr z0qz1B_|k`ToVdmxF8zrot0;g(&Uk6fgzn(yZtkO2_k57qwXn9EITb`4J@^|MArhjfm=IOm!sw{wfsRjPY8 z6Sp5eyCbX#ZoAWxt96=i_s4|9N0VmHs`lE?+S9GeF2zb+@Vzxrb(f+ll&Jo>!WDSa zR<}hQ%psKfQaYiGwVwSQd)T`G$bcV9HF{B^AXboSnL(+Lp<1gc8;-(n<)+9czQ<~; z6p`+CUdIa7FLLJeK4lBsm~xFrYZ#rA{8lJt5puN+lfzY>H9AJ?h`As+$}|PYn$~;r zC9|vEGkV03Ll=IsO+2119jHBZyNG2VWHYz!ed`IxqbzdUT_+qc>VU@=2itQ^%wWo2 zfw?2eNP-*3P>PKNbkrcn5Nos48O{2meP$W8c?J`kOgCWo2)xPF8 z4fVu#hZ(awq)R==cm6%WV}mAi9G_y4D_&bEr`0;~GMx3L;IrOB9E|RT=9EMUJ?ITe z4mhY|_8x!2*&}LR=N4SH9k(fV#}#heH^Ta9eu_9@L46_1L06n*OVdKaZ7y{GZ-Si`4<5_;iOOA_!q=k{!e>d*2 zG&_*tHP4{0nwa}CTQsHSbW({N@SU%cNhQiOte;{&e5#ZuGs zYF*sMfN?NZcNumw-h3J<@($9GNVO5DQ49IDp1hw?tTTX{e3RqJM4zH6;m7vKFAOK~ zJy7m0y{W|=BxyRD`I%AHCG$KmH^Z>VGTvG*x4)X97$Lk~iCAHLMH^1(bC2bcct`N9 zjPAo6`KPJiy>IPl9InA=vIlaA&kI4?t?#2*YPzogNaM7#ITCGEyDUp?DL{K3--{OS zzqP|`hwUb1GVLFjG_R8UsYBK><%vB9xc}UiXcI_Pj1`?m6Q`??kFERn>pJLQ9%Bq% zs`w|5$%|knUmRgO@-w8AWmlf?AI`o18MfQkzs0 zE*e-!Gi$e0I*?K23Nm;OP1cqgh*fQLeTa-P z3?yS2S~{pV9Y@^74v32f4Jr&j4I}i_x$9DCImhiWnIusmz-Fy_A8noAMiK5Ro9_uf zgKCRQZl_Y*+&(;F8>XF-_N0HNVswu9Tl7B2u=ESS>Sbz_VWN5M@}bns6Hw7k86gc zB-yfyn8v;b*7Z>4HvOzbFPn!d3P1Ay5>2SF;f3hdc5fJKa=6p8K5WJV7CxidWDT*eH|>vwBvtZ>6}d0}jfEzkK--L6 zBPpBUf3x=zE!N?aweu+8CUfqZ=`_U``gn=`5GF232WHwKZGw|~ zp#xUPyHYg=U;rnAtafd_4{AP}WpW;BnvcnLXk%sQ^InRgp>P+lj?G!QWR4wSQnU>j zoBr(9sFN_IBF6%H?{hsOQcS*E2c9|T# z`59X&)UmYThkf_SQmH>V&aTC2#Exsivv%s`qagmgS@@2a-)0?PkjtBMQAqhT0_>k_ z_y;0+S*JN}w!C>sr1w0LlXuFex13mzc0KtX%ib+E@9tHa>d&dnMB4$OG~SQ0n*yRw z6WrJ_k-NRO8U5DgLD7W0-T^LiPB@E$a~=iq(IrB%K6G^g>Bs@Mvhh@VbSNgG@bz*w zQB4_s_g<{dEY&avU9ACdY|mos64v)d(e59%u&#`uJzfUq;p~LcwNlM!+1KCb8Ui(ea-v{uyq=n zesS2EsU*ms3agqq&E0w968aR6>9?9e+@D^lu#UVdfd7}ZS4NI}?0ccJ!ICXc)Y`n} z=8S?Iq58yYQ@@&?F3gq?SnQ2Re-^7;wi}{t1Ql_8%Sad=jWNvr=IL%Kl4+wPdMxQ- zry-^@@Q%H8yzwB-bBQZz`t!MOSS@6sRSv*z$fGbNt0v=SlB%5y_N1Z7V|*BzB*8?I zo1)1}u=ADBRPznsR3#`j2$vhF{@vuVyuzSOzxCaU+_U{GLC7k2^7N7`k|s#lD2e`a zR!PIy#<{v}_r?&e>cl%*%)beXYuYn`*xVnI?RW@!26r;HB4U7Sy2qkctpf>0qvq9P zw41uPAGZGVPt#_)U5c5I{GfnR;l7LF%-k2Ii{KgDEhkSXaF=Bg5v#~J;~YDevvq%U z)BBP1YR^(aisb-AmYj=HJ|w4GLcSN2g&N-tQJK>h7AY4zVf+p#G5ev3(&BiQYsVya zLj`qGWY>wMyE>{c?wpMrh)|6i8adw{X@_Yp#aJ~D)b>R^Y@N_ zM<9)LTHj|ZrPxu%bhF1CdeZTwqjbbien3~`Lz#@D+leB0hw6FAF)06hx|BmD-$|I4 zw{GYH|5|8jD>xaB7?j_x3csOYo}J{*p91QK ztGN+TO=QBGvxhi6g`t+n0G0}Tga`>E-RftC!tDK*>LX#sA^CTAS#NYFJVf8x&MlXB zfr%Ka6LZdg5%Nfb|LXh|@H&kR9V@JxU3O;Hp?!&`5$<)tvvPO^zt)oGIc?L5$+;oQ zu+fGIM=G43S{mEY0ByK5r>k$*nkD!%Ae(-GkEZun6xAT3*b&QYkfx^G1?MAg6X}#? zf6XGn&3y?+ZUcTh|0Jd3l4p>c^th@EE75EisOZY-KnP{K^l7r`hr8}(Fe~}<7;r;f znV+}&7r8yXK4PjM0Cc4V#Hh2woz53S)auI~XB!?G+FV&5Z;q+1EGz5h-jAEz0}?Uj zR8C~UlG<~LCIs`Za}j@U8-j-}(hi9-RFPc5(Ry{|pt|J*I$k0EV-9~qlU-q$o< z{wtk=&k2Jg8Q?lUrm5&u139R%FPB9lfA*h%hGMSe5qvY*RR5PGj5P_ce_nqx3J9g)OePxOI=| zV8-t`4GKas+c-bzcV$~BV;l0rkjlhN$g0ZX<7FNJ{uuE&#p z&aP3s+1n{uIs;st=o||c&LiW%SMBl?&mnqMRN@Wi60T?4rqF^=!OHW1*_jc6ldS_` zG3Cth-{Nt5BPx_uOf z-_3y0c1HJ2)}5~xoKFd#>OQ$6g$kB)(r1v2p`uig z-TrlE0&PCFikoFLTb_SNU40>{IkGk<)i3V8iA^;6sZx@qWS!&Qa| zFz7mr1yk5>5g|n%XVi2wc`7EmB!*an+68z95W|+cs-{NXP6O{G$(P9EUBVA;_vSY; zdtZEzz7)C*;_mzLb9tFLk}-1ocDTe!0=@8My4eN6E3W{$08XonM)@tB*mMikc65%ND*E%lza+rZ028dSsK!Kv;NY7g>sfJhGvC^ zaZr9{sm)s9^-t^fu>^a}Q-;gN0RPr&R)i{}+@qNw zlS=PX^40N_{)B_|Qze62UMrm^=N+LS@$7uST5#xSV;%Q%4TyBz31ZD8)y(@*9=X8J zMW0ozeO2_X`wTuW&NO441g+7tXBqn>hv`&pEY99vDa`z0jo8;;@p!uNpGGk`K?Q*E z);_ndn%>s&Nf`_AzXkLqv5F=~*Ny)YH?=Hd&C}O%p~8kFw+=CqXe!Y$J_&BW;r#)b z$#I*JqSVyYd^^jBI>l@^xs7VfYc|)ydfv=pHgy--VE884{mDM(`dWjUUDu?eM+71? zX)-C_1ZizYkR79m@n*T4zi}jqMooQ~YcI{F6q1L+@DH+#(&C`RWC&Mr7wVdiDv(k? zzc2LOZO&0Lh?Mb!One0*_g;{Cn~dSFiZ5kVMs#WGj4_KF%vRN072u%ZrOtr{N$O$9 zU2=UF-&R~MLgwiO^S(PhWv%nHmTMSjtm$>OIjw~9%PM3S%CM$KMm@fx{6^I+@V;GzXP4 zk{lK;NI3@*G$T0dwtV@&9L+X9Gd2*24{B+^EsFB-WdJuO;$-<|(}CQ&DTr zxkBn(&5%0YO{2&3c`GIuo`mSI*!<4*lF^IpBD@$MC5`WU+E&#z$ff0ght~S-QR;eN*`gkd~4YBx6 zT~eVghmicI&rWp-jGfmqPDy^bJXSz>R|#zJX6MqCe@y(Ct9g8ldh6O82MN##eHLpZ zx9C~Em9SM@TLo5Dt?f!!erIe>^tSCAES_FibSr^dbtp$-nO15oT%K~8C!arsr(|mB zuUPfje#!cpAN|V#e!BhD)6^`)%5RW3mQmNM^O-!cNx01Z8 zKy*1!^M!;NG8s}~EVj`!CNb(Z{q!ADUys-r^(_2pu|QRKbC#IZB7Z&Em^aUDQ_5XvGRH$Jz{ykq?p!@ zzMO%mB2>DyJC1vEiEb5!G78{d3<+jtzO;k+{X(Txzp#z3rznuwmc%ntiEz<&qVhaf zED>WHYbeQHa9z~~QcahXe0_F%#k9qEr$ zOwf1`8=5!3HdfqBKtNoSc3ZNWTOjR{EK+{qEe8ylDR5BjqD$azRU2xI*Nw3DD@!5I z@!3v2dZr2SX1~QNnB!zpEJ7yDPQxvYLNmAhaDuMGo8n2|x4N&Z zd=j*l(jMjVc$4TJMsbNhuRcFMx({Bo&K97s;mw~#LSL{hS~ z={a$l%JLfHe&mu(?J&s4p5u9wz+|5U3D41Hcz8WpU%;F89{<2h8*eQ`k^)Ygl>eYT zPZMC|+C1U&WhMqxPD;~=)SizI z5~~3c6UvCBYAAT0(J#4*uEt z^8PGI$!UTm&qXQIrIHh57#iXkCg)hr4Z1bywI(}0govxVlqNJhmwfdH!YUMco8GmD zm|>5PSo@e9$5QH|-@3j*XNr@{R~1d1HO{-NMXbp!EUe^WEk`yH!Txb$!Y)q0@huD8 zKu;OFd=qMxGRIXg;%unXP`4lG=QPfl_mjd+OQk#qR~TfdLHU8M#;UTBSFZ4UR4Ec+ zNCX)=^fwxy_I!5+r%KWp{un-^77a+8B7F1S)TkT^NNbxPqUWfUB-N$T(^IcE&C^R) z46IxcR}GnhjG-)tsRfm3sHO0<)Ls6t=M{_lw3~02dYJR_4=n|*EG9(>UW!tuqe#87 z3#@gHEeH{Mo#`X9u2OX>&o@kuIVF{eoTgxvCtMwQuBF-pKH`67v5M+Zh9cEkpg-C* zFVn1l%N>gyCUT@^zB#>NYyBwgE=7ba{g#&d6X=bc)IVhWJNjxd=Naekkp*wwvJd2W z6y4tXP}#L#pfwR5I`!k!8NE3{s`&Tf>K|q^dRZiFD#_c|#{Ct)hC372ksV7K%nB;Y zQ;QIYz(4YZ9n5c2MTfb{<%R{uw;!wFk0sw`D4Sg~f|fj`P8GBC#<(uk@IGnUP<+wv zf_z?pF=i2Se;^c@;Fb14m@=^QiUx=9L#o(@?eIT{zie>lrN1PS9JXG4p*f}z?y^db zqd+Oky<;U>(jNDjm)?+p>xpf_W#ymFWhQzfNH|Sxd{W{J(8xQ{ExW7+sA_t^EngkU zHq+8wj$9$p6ZpQgXkyl`JFCLRy;vNe+j&LhDxbx%Q(n?eUFxNm@f_iDZq*HPPxyRL zDaJtLq(z30*yJ~Qp{-5Y7EeZ&RcQ=(Ngfks?(Gma(*99r#5;$_7OH^Xfx)yEr0g<& z=hr{;h8OmceT?){yO;~$&a~{%mO~gtCadY*+h@Tnw!x6ob$v7hXJBJ%o`_%1pKOu9 z)hJHACfkHta1yAGE!2!MZbq~3sSca3#@+gI?~ib6S+#2sp8!tt`R7iqxzR&)i?YK00Egegd=UHjVJo3Og{rFL${bcDo zCToKOUd<=+WLpo<(F&xhoQa;T@xP2tZNaa^)&y$VLA#ygY@TW_ACza!^TaivOBDU8AwBR!bqwLT;6kD zGxP!Bn`~|vHw#?a&m?4>Ne1!I)umEel(F0{)P)H;&KZ+&l^|=uB|`bA)rBtGykM0J zA>k)srC#cVDJICh;?|(mKa*fyE{#8dtZuNtF7nAI$qzK9IvFQ?yL!%%z_(+`zETjU&0)e7i`w;&fnI6dK zB~R5eC~M;5PRE&}@p#V=q($4AJVLiC#H@1~zy#93OCNNT$od7T5h>*S)W(f^y-=Sk zs-colIx0I1XsV#Wp=wY zJiG_Z0H&-yBY)Ky7ow`A-LI>6v`t+Md{JJcX=ap)FiKNNMYtyAOuB&}Dh!&UrwRmU zsJdbyT$5M382^}MEvkBVWO-yYX{U&is7uOy>$Iyff|lRW7S;MFQN{!xxr`W1AfS@) z*BOg2A&n>1S}Nmf^vh>iyi9^aiQ)<0Ewp_g*nH+k>`Gzx``QX@|v7M7C)KMVJ z$X>!Qu2~a?^N0SsrMe^O_O|X9SeBY8uL2J%Set-NEN;89myFOavxTxkO_z#9PdG)1 zlyy7f;bRim0#hklrFa<4Ls(@yAGT;{m&(~=K=RSFhA6I#8kwF*VyGSapwVCzZ+d5C z(}e9?lH7fSk)TT2oIlmM8cDpnshid%Et#K}t*o&VPS!9$;Y_rXuIRkQ!WrDdRYD|Ao}>&}~Ro4EH5Ay-wuog%z5}Q(XxU1l|dm6veC?$#{eDYjLBUmRLcq6t;0~-xhC&=6fwpU z;Zi=-L~vYUQ%1*Ac8+EKG*@Ki}g!>$VY;_z1;hEWRy9 zUE(7cW=H=`2h3By$NDF5_8UJIhGsezpM4OPGa@WLm=kA4sE!%*AAYc8>gZ#N3NR*7 z{T}ND08EL|`3S`z`X8Qlu0{TMNBpmbDI3l7fYd|}@QGhMjD5&)k42#30X}|?BGyGp zqJJV>uf)bj#Kvciq3+J2t!6<%W{;Mjq;;O2Bm{WW!nWdZ*z9=Gg~v8`lD8PeQDUJf z5EPRhR}_OIC^qp+j36lXoLG2F^pMvy3F@Ea&?ngTy6VDe$s6FbLH(VNeM;Ioa?I#@ z$^L?!TAu@>1$3>4$3Qf}U+2_ITQDK; z3KypQZw;U^5$%{wyU(Vm7Xv#8*h%(17MN;)SvXG}7siNTaRhsS3!}Q@$E^FB+8x2) z%d4`JEfmHH3&hk6N`@8x9FO+8RQq2nePuvf!PYJA5`qPHPawFK;!aD@;O;KPN{a;u zuE8npP~4@sL-As50|g2cC{SpT()+mgdw(YLBQxjBoIQKanZ4IqO}G9}(!aNuPfPUn z`60{M?PfUmYjOqw`yl>ESOx+9Q1n5uR5TiY=xGNS4)eueA^%45ob{G~HS-ele~&mU z8vT6s=I}|a^7e^gKN^*$a;#Q#)QpVr(vMV_&@AjKz5uIE>jFR}0bg)c;3RjTis zOocs}BsBpm8zzA~_R~UsDleW4Sv&$rE$|nUC8{z!;@4A+b^pnB0f49OSe5vnsyIz) zQT!%DcT{2jeJD@P=)XUMYELfde|1f3G^T!;%ALTjHS+&jDWI?@^h=)H4~{$$!jL?T zD?H-KR{pPX(o@@VOoEaE!tp->d;h<)N|kuv|GK^t*eg+pyZ}}zL}K9(09X|ePlZ+_ zmLUOv>;JA>`F}U@RvgHQVX)K@kRq2R3#wyssb4i3j)p3@U~y{de;CUceEPQux)}3m zmS*T%6h-?2a=-rFu}N2~+0WL{cv z%KXsVmlxLPe@1tP1pmFO5`|mVurxL-z+J6=Nf`ck*lMkH##5nR8D=Q`T9A;M@G`*j zGf~Lb(AN!FIvI$*PQIy9hIEn!XLk zdk$9ATc^{e(VcIXMcXGlYswF&<~NxS`?PBIwFe(BwkXW-Pl z5zi^9ZE~;Xf*p^Z^IW{O&S(p;8Yx1>VA?mhQKJ~it&{&d zSxxz<+y7YuiZ09^jqg2XtZ$5kg}-Z^%=H?1u8-Xfg#w@e03bt|4=09|u{ezxv}J&f zH`RO@Gn*r5QPFD3&;JSo zTGz+X2uBb{q7UN?ais10y}Q(aw{*fWkkNkF9O0ZS+a@6%gsJ9v^Z?oP!L8b=xTonw zDX~_y*b&E9=FRV^4p%QZoBWDq{>WvdGmWXY;&(Ie)`!?l#DHG;ysak-h5#R|(rB$u zxH&$=GcD}D{vN}OAkHL9xQ*Z0~&dZtzVm-!0p=tmqSc zpZX5x?1QtPNC?NKtp6+_0WVw1bmOvXR*qPLSYFs`AOg;%SV@Vf|8fJS56%B`JsJE? zW2Y3ysBQ*olzsfx5gQiA;RW}ovJ8nZm5g~a>m>8x4@1P8nO%P39xKaVf-JL?vwwy; zA6r^XK24Par?hMB1iVk9!Z+z5B83sgK3p~PO*=BsO8xKMib66waafEPW8H|yfZYUW7gG#Z#Ul#?zh zwCyAKo957N%-5|ht*g<6+!t&_TQ=Sz>rz|N`et6O7ZpZ*c6}*|4-r?<`pt6eUQ}V< zhz}v^3uc`O=j8o@AJKFn!OtTt$yj47e!dj@HTT}86c>>m=Tqo64LTI}@&SEb*!SA| z12~lQwVXH)snRHQW2Fz*9qyM?b}AA%?qpiDXzA%5m?ROl9Lk|kY8VNLwf_pNlYYvo z^KT_flkF7Rg%kT2?`>38i=GRtnt{TUi$=U8yB`vvHoy4J@juK_M+@U?l`T`S$D*Oa zj_#rsvuO(8m@u=_=iuR6u_#%!Tlk zVVQc(1Y`3e)H?qt-)Ajp^+V@v5Pd15`m3$>wIafT#FKFLO<%z2XtBsmPBgTxXF)~O zQK6dvvwIJZ&BoM)emEBWhj9s$Mz2hL^NvWDnC3tO_~ zrwPGt#W85oF%i^G3SqbSmas;#oUoeUrt*!lFG)mA69ssfA?s78dBheMk`5lXY{4}8 zM*<`~ZeCmq3SHZFr2CT8LX)WB>my*zf}x7T+FAIWWrSZtf)?|=jk)kuYQkDVjADKq z5C)?MglJ8vNe4>faDtq0472kb-O%9eOIJE@YNBaYt2E|bi((LFw}wUXU5>+$j{02r z$;fJ4ku*_cUORh^KpTHc9uN{GRN~0cO?HsrsOQ83o8p0U@=|IK`nkv zmYHl(me~O>vCy)IQf+Gg>Ap8Ez)hi>i!81Rct}{9s`b$1SG$T+q@-T+by)l+TaVs; zqgdJ@)%{4$I%JDTjnh~quQAvm-m(zK9&#gm$*Qi?PotQsA(wuUl_d*1%atS+IdR}k z_>zutKCvbiWlA0Yi#wz{at-{P)Kavnq>}NAno8JZ%%(Y&o2smZfR45#U(E!?O;9NJ zTMbB-6qlhV?TqP*gObiKY~bIsi=pRA?*_nk6e3;3=NrB;@D>pE#deV67Bo4z=8#}x zx_TZS3Pmg%aF8eBeJ+~2h)uZh;`&)>E(9UeK*@U!kprI8Ym*7nZkU7ri$96))(@Ds2?;h`Z*{{*zo5D1Gq3LkjjT{huA#Ty2n8>v!Ul zY#JmD1%iuRN?DgKbKT4k?gZKbxVEr7C%(-LPLUK+elYI+Ey!GowSp{?)G;nN{ruYv z!+?f_BIon$T+M8QV(w<_r4x*?1f4kUuyf&ECEOfwIAee5JV(IUP~l1-4h2TS)X+wL zk)S(gVT+R3)i1ta(@dh)iIK})LQ^iLNM52lH6aSOHYvjCeiI@!*4T5}hrQ3AqWH_l zEIfl>T1*C_`6%sVY?OaL;&|UWHGV=+yPoZQKe=$Go~V6v=w=sTULinJm)GqXkA`Zv&C3yZ94<;CV%{lk6{+R zV`^*j9R%W_6*|D(!pPH~LeGqfT+a#=Zzj)grhTlh=#CbP-( z8_gTEZMHQabb#M+_6bVI8VgVu2LDWKQ1;~s1MgC?=$x~f-E!?B9W>0gfAb?VgUeMiIWuj*c4IYn`09&R*PCAwp&H`M?3dkXrh%e~H0tFBE99*(PGBgSa0@_a~( z5^c`m-bU7Vv-rjUyK`+5-j+(1=jML;^$be>DS_uf<<;)U=7j-1nwIzPdwN z*|LQu;*sQVY+uLp#J_|(iuiut0QkUrhsoV2NWT3kee$cF*Dm5`39CLfk3SPy4U zK2}tFqas%nu-%1AYs2BoT4qtoHcPE{w!?mn9cGU7l#&MhD?$rWLq~J-T4V;Z@OuM0 zFcC%J&@1T;Y>a3Vaq8OFHJq#b+I1A_((Dhhb{c~WvjqA(Vz%k06avCQPx_&&C3Ux} z1i#lm+7?Tbp1{}85egnO=Fhq3^KHTmc*3G=ndyA#hA&?=rR&+W-P_-?vGDrn-0|DS zxYKb}9#lpdT71A;B4tnD=lQ1T!G`nI@mJX)sL}`1n2eWHXy_oR(k^RV02(!$wjpnG z|9uD?y$OQJ(@asQU@l~lQxqyr3rA?X!qvO}8ibR81FbZoc^hUf37Mi6zP-8_b>8y< zf9CL?w`k282lh`85>+Z(_PF;YezS9S<6p+nv?1Cd^YAB6Dor5yPBo-p;b}OS2cMI_ zMh)~%%JLerTD%eRg6(pIu1?xF58ZJDet%rEu^1A4N}NdY%yAYv`*b7L{TFN%Ydidm z(C_PzZ@998; z_npjk9@IUpLs(r{Vz-L_lCzxv)aPpC^My?S&aKAhXx&QNoWdm1p?;)S>G1-KAXHO9 zL>rqKr@RxJk&Cf`1Zapetf7#wmJPGCUj3xVzt}Dc(hSlufkcUbT$6r^lK8{)TZ9-D zLQF_)>r8ZyE^>x<*7Cfc+x``qCZ48J^KVxsVRvQzzgXdlxm%V3_R4x9Q+XNIT95)QF+FwE z9zM~tR8FNzTH%R+VFy~cvJSl%5nBXjFwrFjWdDfcW#u2r$X(JjCpSC^(@@_%p}^&5 zBy9xS$MITIDsCN=dLHyPNr&^v-`z+j)5Fh7T!ti>+U>RO;&6A$o(qRQ%X_2p%6D3+ zEPHNPM`SjaEANm4i>eJn63CB&*BH^|joXQ=TfT5=6G^W(=!>v;&>D-P9s9UWxRlXo zep{1+W7g99TdCB@lOKNLsy_9z(0flhoMgROJRoKOf4?Q3nDquaaaF-Ko11OMb@?g0 zvGGxREBujbtc9R}OusEf&?p=yU@E_V^lV8aT|q2m0vJ;Q3)m*h3)EX~B4>nGsqkD) zl2H;w1nU1`L1?pZR*V1GjKuTfi zCIr9BN4g0AvIdV~4>U(J{H9@aVtn@ZNlKG%YLt8yD|app?lq+KmK@yjF^p_H$y;B!cl)YbUFQ3^)4|R@rAZR(iXIu`fexrsjpbV+# zA7X3J+4?hSYLsoGey_es{(w&ZQ-rdC^g0mT=4}w}3Ax2}BPs3QOrKXe8d57U$upM~ zJC#20`%En|kWC%oR{|4Ll4D5pHl480B|FV!o@%Cs8M80SEA(xz!CtWC6(v@Yrjg2m zV}5)suI(G88&wJ`p6Hh!A{0KCmE2*}O1)-h-h{y4-%!u8CLx}p3p5vMkPP2{Tj&;N zZWq?&1N0hqCDp`*Zt5nD>BYq%K2n~YMH_zuixc3KAZUm7wFUs~D1K)LD7HxaL|m6e8vp8w{CSew>kHwVgPhNj{kCfTW5c^BI;Y>j;TF`Djv1dJ8y zy(VdHV=%s8g#`CoeCSkgdmVZ|H6J|uk)DFEp)=L-I(oa`eQ%=X1@pJW-t#XEoXi(D zctiGDRX+fE!8aAlfO>vYd~dKX1zh>gb|ci!YXvzondl1F-n9iyN`<|TS8KNPv6xLQ zXX&OfjnRI)`(4M7uZd|+&)bCLy)il}W}j;cww#_liW)=Ctv2I&P$k4Z>9NZ@mPpxR ztPVc(_|;+S#T9iDc9HJbBfOw)#0;&*KDp;Zt==V%rMp$+J6&UhHS5V1H<7ccuVp#6 zTk?<@mvD7X&qm^l{ zcHXI>z9MMA!BZNv9b{h-4+c%>A@z9(#%*MsIOo4BLwRdACcZTmwBMtqqj0eUU$aHz zVsMn@1#gc`cD~W>6`och{^y$48j|*KMul;tr%Fu!ofIr)A=B(7eon&VI7d94F}Jca zlY#9^rc;wu^0<&5S4WshdW1+mhY9Y1U0)Hbymi&O5#UeuK1t()))jwD|E;<&n4;og znc~JvtiNiPG$P^6Jg?S;KjEPQ%a$)g=9zIcg%Z2AB=t5sL2xr`nkn=~AeAkE&(+<{ zZnhy=5dj3)$-}RAk*rI&_O*GwRG+_Tk9FN4dC`pKF{|CBWnE0w?!5d5ky=0fu z#3;N+@>-dM@t83F;qQ2YOuRF&Up?Q1AJ{O$m@>{3Jc(~flE2qZ7zARa!t0qevSJjyxNR5de4pbCPDIf;&cFqU;$f1`7S# zBVLVaRK<)`jFXa3K%z)XnVOZG2VoVW)TZ8g#(xcW_M-$%g};5H?DKI^F!bqlAT$i5 zPNp#XI;UoEgRf%pStO%PDsU3B58HT50`pPvU-Qy;VLmrKq^YObFF_)22etzWONIoT zXWkh)*EKV_$x%jm?Dh!Xs0yM)?64WdsWBWHDbMgi0?nSuDi$6fx~=pI{X@BhCrjpSGo6!VlpS2{~1KG}Q3!byj02B_>Tr zE}EOv_?IaXQ26=UG{a~DU4G{%V<_u*m?xrj+jEM3f-({is+?LgQD9WmLfYlzC81}; z*O?aa?_Kza`k|8qUcL|ln4(37ih8%&1xw!71T}xkM@p}xOAX&O>e93WZ^Y0!3=!yVSh!O0rP58a9Q#DD;M-ZXh&$) z$utAQ5D!E?af14IeheF&*Qu?o) zCgVVIQCCfEtcl3Owu4Sjz0*}4lv_-4pI2dHt3dO8hYugikZf=!Bs1D3z)ShYyu`phy- z+wh(ux%r<+GMR%t}_gX&aVqaTD7h%>W{?pl)Tf$N>Yzk?sVpQ1Iyug&B*H zmRSIU;FSG2aYY}0Jxj-ucr)F$I?@=t7Add-Igxt)xpcR;(XjEtoPp|XEYuIa!$1jn zt;VSqELahwi62q{PiBbhQe(qN#%uTF9 z;@x+DA_xE|aLm;Pd+2RZT`-8^b*zi+pP=aO*!vc1hBitWjLmQO+@zI*%Bf`HiSIz! ze@I85(Ars=CC8L6-!JrV;W;oT3kk*pMyvh6wJnXQSHAnXg(R#Eh=`ay*lkkLP+-1B z0iwpqb6_FRf|A#fk9{e=3Zt^4pTiw7K9k-n3AgPq2USswZi}jic_u1qo5el8wl~H- z!7zkIP5Ls>7`eflDrEpPbJuXt)?VTM-L!MTjpjAU&18A-t4MnEO6XqP-kn%+=;vOeVV$%N~o z;9m(lPM*M#Pse_d9zhChQVY)X?Pbjx-!9KaV|QTYB;U@<-4%Uk!@3@ zK;0Gb%jVn&ShV7Pu7}^oayf+|h_oa*cttpWV7^l(<~v;`jvRJ)&#MY_r(Cn(BYtct zQ-dB6a~zJ9uX_n9iI^}lLT^gTg7z&N=0LlO!I&scEJZXa6q|wG{5WDQL2bjyZKts#m7J*X5%URae@S(>0DmikOQLV#wwO{Y4fq7RT@jtHL2La`EhAP` z5StMiBl<>bc7A8s z=oxhgKelT@sLpbok0>}yYRp}jN@s<Esj zqFIW2Tq*|?mOJnZ|A2O+1H1qQu##IP#P!x9f7bdbAgE~@=*Hy4ui+|=EP<)9BI?;^ zKE1*%;-}d-3>Z9+@)T1Tx6SR+bxf#Lw&%-I4ENa_+}qXLrZ&UG;7IT8LR$^7R0(fD z{19TSwj>Ox!nH73bZ5#JWFwVb@`{bd z3uhwCXswaTp~yYV61qk6y=7tFkG!6h8_?G4k7w#i*LG4HSF3$PF?dDlCa&sjo8oA=)ly(^Lci}vR#ZyN zW|&rSWnVVCJ8#g+0DI_MA4e&u(O z{O{wALWm%QgJ!IaKs%>3=hHbQHAnlibTwgSO3r!2gge(U1Lzy~tef~l9w+RAZGXv~ zBF2jDH5Tn+sy)hkM?)uxc(Di~W0R7>&|C3gr5Wv#KEC(PXQCv5I%+)%9ce=?^7R;^ zvy`pxwE$u(NwU;7rP}MB)xvm)agin@#X-Vp7Ms2);uo4W|=5!GWR^HKgRkG%s#JR z+#lBq62RhH*{ANc!Tnm9^*J<@FSTvh!s8UuSqN3Nh*UMOXLxzJ*AwmQMtI1Zmc(q) z5JcyGKSCy)R=7&8+iK?g?~H@5f$~+GPc_ivC5+&n z>Fib{&ex!GAE<-vbLj{s`qodQph`WuySnUDPy02*^ z5e(p(AF*yPvA=zD!)P(co{vKiZOp~ENLa`}FdjQJsGv#<@8aT??GP5g6`?8g(rZ{w zRT=q3#th##1JTgtSsI$?H~hW?E8?Z&Wev0p$aCl~W#t8Jz)USj2*1GB^FXJc5dCfE z@P4+Bv8>(-WV6p%B@fA@uNa)A-#Hb{v-1zV3?R<(7!as^|z^gj3a&=IrM{an&Kwb$lSkKQGBl1cm7 zA*vv2|gs6`B{rJ1?34^ft;}{?`n1kgu7DdzNY*P zEx5pj3voke}%oa>E0)JR><%G&2>}TMJmTo{UW1Eozw}(2t2+Q^xn6TCHg6mg!e2TiS{RLEKz&I_FEadDT*xj3 zjgkbJKRf_MY2siM%BopriX?}xV6CJ6P5oMQlMYbEWzQqmVL+DqVP0g7XNstc-)&y>7vZ_a?>cPN2lw8;_$kV5_xb)~%1O`Q`%b9@Y@H#Q5ksOMbTTfdJZjezs$bR^hXx%;eb zXJcI1agoHZx_MNS*l$c3>2BG6(Q@8We%0$kv~JRg7;rGSk1Ntjs9d5ae$=B2%x5p*wnsTnWnLFktEeWNLQ zO~{`vD(bujM$!ug?n!h?kphImTCe;#^ihe<0ghQDT=^!DH!Y%B(v6NeBP%RzBvA>i z?}v+qWC9~PRxv4OaOryv37B#()7Wzpt7SPy3{9U2OV0z-{CBHS%3x#AwYo95xY`Tm`d*@4P zC=CK1#T`8|I!BUYz6UpiPmMMv$}5@SO}6pZ7uS_qCFV+My_dj#{%?TbXM&(1Iyw4< z6_z-KoM*>Kyh~aPEVK&Z9H+Yr;c?6{K~x7Tir5UeDZ;;Ur^HR`4jR|e?M}hbkTenc%x8Ys;kFr?N7?2QZKFvXSF_JO?ImhoX!%fm4l%? zbdY)k5q6dk`#d|LGJgFe>|vINgkmg@M$p5tUVG?AN^dylP#1X8_;(xBRV%#kvR-~RE7d#~Q-fcMp4!Zd$YLiP zcrWr{i2sPrxM7Qfj}qN_$td;6&OnxJM~m4~{abB3fqb0<19#P&h)xi*ulYY1DghMF zJ#^_eG*q<{n6z8zptj&DTVjd=F$}1h=f8!j@NN7=4pYqpZk<<{E(+N@1FZl{6{6o; z6Hbne4+^c66SPi=P z+=91S8HepMY)U@^ryLL7V+cX>p^o_O6{`^bt}p~#l%;%%U5?-whi1o8%C@_e z#y^UsQf$r~b>dvem{L|;Yj~UUS+8gRkj_BGiNfHP+jB|H9ekg95r1Sids-^ppd1!q zrDrZR&ylnVz=ao9!9`G>X0#)}XL|d{yVJ53$Jgl;eWEUN03|f>Qyqka8wA(fUYEEy zFnZ?0I{erq`eC})>=q58UWJNYh-WLsd*)i4Hi709s$xoq8oV=-o~0JR{umwWwA{~Z zxXut~0Mkgjd9HfuZqmtOK9wM3o;xZi62?HW{82#?{R-PGHeqX=|B9% zrqJhX3BQgy+luhi{J}sd(bC^wDkxqDCyWXp2m)zjMt+c}ND*p|d)`xt`==8zMDrF+ zBK;mY*c)?V#-)#TW!zPb@nY1j`-&Z?+kqKwkc(y)a`7U}HOR9qlyqe#-KZtXOvvS8rx-LhUS%w z%rdrvwov$@JYDsU{b~6cO-~HRN(UwtES~8+ zcXiY_M)r6bV1JGr*D2DHQrpq^`sN|wDK=LO^7}K!7A(-XxBNOca!Q2SKSYt*czkUe zZyUB$9wFYn$mSe!$7IFvPG|%BUlN5*HtTOEk2=K%y39l@i2LlnjpO`N5J!SWdc}97 zyVe+&o3`K+j>^W8mJ$pN)u57Sy&j60sA7()f)VBhjx17K=l(iPSp0G)!&V&=tI+v8 z!cI>+H+<-dD>Na=$qc(9pK>oG@}aGh?AoGae=~74vUX1@i2qYfQTN&#Ll+M$96rMs z(`@6zc_jt0-Q#RYlJR}9$)1#7?57he!!$Xz49{LfWaS%hIP4<|uYoqLGC*=b|68ZIy>ytd z%|JoFmBHBfeK!@=<}L~?L3WPkx6C+ro+U;RU%rlAdv<(3@dYxApuO3cX{@V5Yu=sT^ndDp{KdKuP9j{*i<k{^cc?ScaqdKzd#=oFKKnQ87DId|lud+VqA6EG8yZ+aa=^Gur;PNS#k0N*`Yi|a6 z(R?*G{7YC263W^_I|ME3!l!C-=Gepgy>2I@yR;wrB*H5DIIe2voX(Jj%|>Rb3176S zCi%!46$nD`TfAF7GAp59f@m20=!8_v;8Q8CgtGWmaO1p3M_78->Xkc{Wyf6?l2&os zjNWT>{(8Bq=NhB`1=Z0w^Tf`z*4p%i{WuCMF|0eswJ&C`f|_PdZfAxP!|rgmiZ~eD zQr-lf%p`pmI4+^7IjMh2UEIl!gI8i)c&*L;IfX}d@jCgrv;N*kjaZtZmbM2962o-I zsVYkXqG5%_D=zH%ReCNQ*mpI0>=Ub>V}Ku-Vo{rRg5r*oRY>0_Sv~mZQ4F3WQ&9BI zLh{;vOb1RZ>rlOxL5jS|Q+?GMfqwL!_hS ze=zjFSF}2pU@=)(Ff+nK8e0E7FB50#29NAIYYO-hu$u?rwJ>WDq-24Q`7o6LkX^;9L{WgYg?mkUAoI;RlNoeTb*1?h48!rbQPBX$k@tIR+84AFUH*c_vyt;71V zKy~Qdf@wurtV+_ItHx}BcJ}NzTWE7?t>w=}*Kh|CImNPvu~;Wl`lc#!=>*e5tG`cp zfp$KMT{fZDkzLh)Fc`RI$<#O+2`)NJ&Y4~d+~)|Xuy!+Kt)-Kzv7AOM+79i(cO0B{ z>4z(GZMQOh8x+gyZ{TiOglbv6q}cR~9Y~I#vJUqm66yL-_uHyr!v+vyq!b zr~ z>ZkSAmoF=2^@?Fhs9QSXV13i_8%2VWfSaa=f-+yKfKEnR7iRd$FNr%ZX5uoTqx37o zqnkHl#%0a3wf9u}+3{12n=45NY_Ljb%ZynCx`nHFBw&qd>dK$kA+PZ|h$@5wQq$0U z)iTj7l`2FQm=m~QSH5SJ`u^t!4aU!_L&z`x+?Qg z&c*w&jYpa?SRN&<(G0ex_7&i$$@}t+rBX+Vrd1TQ_mqU-k_CCQLrFoj?drp6E zV~ljJWzp8L@XBC(hO;Y7Twa+~;F*UtVwG*TS|Z`njiq$*iF4+MuKLePHr3`Pj9sA0 zMn3*}u0uD3lHZ%;Oy{|Qh==+(4&65d6%|M#0`2z@Em<1j!o~q51LgdYb1F+?6iX(< zD;b&GVNVuoez!|Eb+0{(Evo~b$TU@a{epX--mckdV~)E9{@R{k_roUSjKWi1=m_@fNo~ZUc~=X;Ky1n_ut{(Oi%R?cKNzKaN+%0i zkzsT5l|q65FA1r#lfAh_I&m#LJep|kci$ix(|FSaqRGI%1A2I=&{ZrNg~gBEdJykK z2PBS?8t?GBQtsC)ELXkT)2FHh=8b33{nB|#`vtH-*EPM#pzeEc5_pGgIqsBj%*rr9pa3sE19~vFuVZ?*P<{|4DDi@ zm`E2xJYt*CBd3)3UsbSa{hs3Xs#k0wyEkR7=){Vyo z*7_6sMlb^)IVqeN)pJhyq;?t%++wm3l3%bfRuF67^$lzvR+iFob0P-ScM7#9jO+^5 z4h;!3YAJ4;`g!n_tL$#<$e{&ilFEj|yH}%TGk-_roS3KME-0TIZUM6$e`O@WxtMIA zS_SP`$(#h8_L`P+FHY+D>B>ED02ZV66hZ&iXxX@<<5gKvFrq+1cBzr0rvn_(p!!if z;QG>9@K}q|T3^;4uD#4>;I9x9=G-@C(?Cd4bu6P9z^Wlme(#*ZMNAN`n&U2yL)?lquvgx|5Lt)Ic1-){Dj!je7QuqKw+Z0pY!&3CW*Hx z?Jg(K??%KCVBm?SfC;%7l7>lp{+J`1@rwL0`tlFMG5e8cXW+B<+zbu? zmWo!p2%%;Zk;0Iq*h#`BPIhWqdktQI-9x$uD;Q4Ueqw!nrRrkLmhIwUKm6(6FBa^& zENOhgpSk_yB=W|zR(8zeadCnJ3GyeEjSK8Ib@-71UaCPH$k1*x~R^DR2klkL9yOUb-k6*^TS>(Xef>*^M^trcOk2sfY#wZoIY z&PGvnG|csJ5szz|S(%BM5$f1ZZ}4VEY>ba+*I%@~>Q1!LQZw<{p6S<#;6wMR$|Hp` z9h+P7SEMU|S6%p8eSN_1p^GX7;u%L4_6k^&Zgn%n9<}Lzcv8U+k3h+W=CxC8Yzo zyth%*T&prg6`n+vlT(Z-Y{eHvK55(^e^LN>)9?B9>mAid9m4nm=uFl6-AY7q1LbK9 zDVVHSJJAoX00Zv*viR{PqX9n5;-EH4Hd38%&HaKO#)TE}(5oQ>V%V7Pys|*LXTyXZ zzh~o18CQGC?rI!USD9AjCNhv^68kgEkoW99W4XYRueHwOaG!6MUME(=-=@~ASt@jk zpF*aH@{)cFqd6f}kK{-EGyU#5E^XX9)N2Jlnoq#yIxE!G^EO~wO}18r#$8$7*EGvt zZ-8qG<%n&$JsgZ-IfeB>jZHO=EPa1^RQrp^)n3D&J?J~TDA=CZvu{a{66&Ol(m$tJ z@TijBnLUS9HRq5e`L3DCQ#04J*w_8S_2Fg5GjjikXU2%`ULaANtXvwnhWx&-}mSTUHkcrn4PnYPARRmMyq z^A-LbH-gY<0QP%7^_?|R}Z z{b{RyBUKWe4wlPn{<2_58>m8tnf*lzT6!?b&qMdYDMm)kn3w=%os&4{L9A-Qta!Ai6K3a4d&IO}Ty2lW@F<|Fnc1qN{FImywb z*6?61XLhUAw`lZaNO8D8ZBZ0MHEK5KLo>mvX(pl`N7c+6O{e?>1|sU6A#0J=nuQ1q zU@@J|@KS_c9Xn(`I7Z5*(^o%}agOyQcQr^qB3K^pm=yFxNrUh(=adqo9FFGSr!F{@ z0OGN})MD8ynef-selH23g1vtowd&b7D)dea)3>yEweoS#WT)nVoy_AS{e(@;DX)YB z8S@n8-oX$@MBvC*e=A!MEpQCN(6PHoi2#NA(cCa}vr*$6Y@X{D$AH*$F{$XFB7esdu!ZXf6$&xwgHy zsMQj#V`t;aZt9OAqXABnIhCms>roRW5rFmt0A7{m8gQfDCmk)I!mn}=z!IlN)^wg7V^|D3R>x|A zu6u87*G_1=)WtFVv2}+1XsPMJ!&>jZu9QBGkudi^9i~5fU(TV(> z5BV&>!N>&$d6~IwJr2dfw@d+Qi3|%HNn(BR&N*>G*%IRdX>z2hVZvd~@QV^=hd9?p z^dwQ2&Zgo-yqpf@cnRRUyZ!7_>UT=G~Son(!23yboKy#5Jy(l@T;9Lf} z5Dq$Z`wS>xJ6*LAJZ!IF!~76wM)-#URyaWdO|+m^ENo^ZqMLg={0=@oGj1s_<06|WPAqaDya4>Bc07&8ULR%;vxmPd|v!9NGHd*HseI@j-|?R2#* zi1htpdS#>(MxXL1i6YxCch*l5;;8P)r;%NZc@!S%vM(!tXqBxbor*9F-{8a*PeA2W zJp*BKEC2aWQ#bzgKJ^ux@(%U*>MV*bY0ox04E%`=$BH`QjsLb_SlNupqEh?jLrq6o zvpz#Zk>G$x4J7MYOE%nMFKUR4pKv&R=In?61j>XV@$>QWumVw>S0zo5@sKnVz#<|?r8#q_0 z=1WxL1p>kX*({1oU<%4H!BlA933S+dRe~FZV8{2MrNtE4#@g7xo!kMxYxl*T`n@`* zN!9tq*bX}gx;ix;)?=dxiSJWJC`6)iX zm~Z~;qte_&-Qm9y))AUXoP-J0i#s_TQ>iK3G3wOK(|Eapiy33W{D z%2pUAz-~5jjd4yJie&d6yHWB04H-ML;8(EV$d*z=B%VH}CiV_ul^1vS+u&C4l_D;Hteo6= z@!JABfGA$l$3d|MhWE=+s`?M8eyJ~lkm}W(n_uxsj%tp3zR$7}Xhr8Hkwc(G!>{U*QqdoRgICNy9-WQ|lDDL9U%tdEGXuX>n)rY7)w!c;08xY)>L zP&l5ZeE-1rTj*s~%G>HGwe%UFvoT#{e%~L#Dkl-(eda80vOwz4 z?ieQLMyEF0cJ^BUL|3KO@~)dMSglI;b^iu@`7Gad=QzfOo^?(~62Xt;>H33b#%xUM zve5;XjwC$_t}lZ`eFqO5+m!4A{?cV(Aw0iz;KVS6%YPk6K==d&}Q5{ND;yE zlH^Vmc>)?!2pLzv*84_{C0q#hd8FQO1oWX4C1Oe2^s9nO$iR9W!J0CX;|0Re>&z}& z4ATKT=E7y*d9cpHY8dC33q7Cr2&HV;@K8XaD#xbK1+24s{JQSFE7XD1}&~8h`r12TppjI^h3fj(n zcl6;iNsV@=6Q&&fH2ZPM%^F!LZu$_?)1$&IG&&;JA#G?X4CWR*$yy5u!g?Z^PE zQOB(0HYwA(qN2bH9GWRnNCwTG!7rvpJ3{Nxq_tm{5@*D7Pqj^9C+&R2`)X1h;S~X@ zOz?-l;`wDVs#jDInB@@ZwmN&EN$RbwzQIM4GufJ8>_5!2jYTkuL+@h;B?yK;19R<7GW;K_Wsd5F z`IyLIIF~P^$b4~52bM*4&oFtsrAP-d&p{Gn)7U2PlE*=8I)j1oFm&INpU2^O#|Dyc zDatpcY`K5$Eq+x}#OeDEm26%*zs6Jdrc1z1n-D^2nt3Qh&K`stSXjm?^AV+F*Ct4k z;Ae>{D8F0r3O9-n8h4QsL__U#Uk(;rlO_!Hp9r??;4jDazxJYLGmU-cQ5oThZm~sr ztZj_N33M0GnbZ_j6Iz{PNNgeLfO54jumg1kpq2#TA-QfJgs|I6U+@dCytTX!e?xIP zmD8FxvcyR1s9cuECSFE;ET@vg<+j)1zGCe!l*ymX3N6H!fr|lW9|uLTq5Q12Kzux&%GAn^+Qm6}?bF9R=RE)n6DS z!k8A+mE5Aw=Y^|Q0J`I(JVDJWZ~I?ey>vIqfV=;GMj&dsfLvA*5Qb3Zy$ZwLSlT7} z%hVY<5ZlE&JovS?ryCUYik#ApZw9{-c1`ojEl)9v(xP9vQXz|3Dn8o8xcl`rQ3!b? z8f^lNSu(8;cauVvRe4F4y}MyFwQZdZ{cZGvwo{gCRPg+lXx*RK^Y|3}WR*f#vumCg z_zeAH-^1nfrc(|${JhMV#pvhPyNoZ$xFxiRe~vL7+-HJcS-Q}u0!o<0V|s0B&{Qlw zj*oL=0kC~HE(H(4<&0TybDroOfkTC1slvE5Zc3Sf_S7`e=b#Ug%h@R4r7%$91xG=H zk1FI$G6CaH?pqft2N&|zlJq(J+^s?D(mzuZt4zz3&pB%-e>rTd@VY*8SlP~jZ18@< z8H;l`W}TnY3kQe&_!!q;Yc2*~HrzTq1Zq83`IJKY$(E4A(d;im0-Ay8bMSXkDtB7{NiBg~A2 zD9l;iqpr#JOIfF*x+H3IzNl1W^Cg(oiXW3nE2sQbyw1SGYg$p4xt|z+XvK@@1X#_I zj%?Y+7r}+l8}*sd^?w!*^OyUO`Mey?MEjKfd*&B(K#%)GBCg6QAr@5P_DRva+_Yv2 zC{2K=c^U)DBrOUxDreNfqC4D8BE>D^eXcRSYvpEmtvolVhz2_()1JS<^hr*b_ESwRVq)aZH`gigPfYv=yNZ(4j;_%~UrT^)xhCSXpHlcDr z$0X8}an^l?2qGDs@#R2>1h!$j&Qz^^Wx7TOuC=p#%6h>nlQ^_O<4%W z+?_eB0^NIGY%I(X;20@4mh%;UYKG?oW-|wk>hIgE2V{NV>NfK+QD`68fw0sUM&?0O z$jHq&0c=&O^1eoV@+Xo)o)T^<&VGEZb#3`B1k^kuKO!zx*&1+*aTEJZPo|B4dKqUB zq0Uc*9`jW%rQS5|fqe6K>_5;TOWdIE)UD(A>0w+iIEtinv=54Z%uyS0W&HzapWWNm za1f{%EIHDQdsQRfW7h%{B-C;i7*uBh5MDG`;rf-~+qMeYP76` zT#~pQZN=2IVHV4WI9$3vDNJ(}GBjN4xwbiZcsk4wO=d~i6N=)qGAzybF9fcg3gL-C1xE~F_+9~3y)dMILN?2AR9w)I8 zU7sQC^qY*|WC#Y2is>(NM0>4EryevK!mD7DZ9eavJ)@_H>FtNKL{)GMLpDvQ=XCm} zivB3wghJLC#VG8MJvWJ)GAc?4q>9`?rY%7Wy0RYTDfphrXMG}UjeQnHk5 z@H))`MqTnP^*42Lcd~j0$Ts>zRnGL=uTW!~I9+1mbfcYUV5$laSu-=FIX|C+wKmb< zO>)je(@dOOo`a;F?Jo`E)+jCu`W~9Z4^7iBv$eYj;~vk}8qZx`dTme**{->Jq7lSL zuvgvzqPTZDG*(O)^qi5U7n-B@XN6um!R>_ZHGqUGzs18$(+F_Rll)o7?={2X2yv8= zC)kh4jv!;3&sGQlDr-O`=)S9(6TXw#Oc)rcz_@|9vK&vt zpl@K;@#a5#wYvH^kbW#3^XO2zW9u0S^!_{mX;Y!jDz01|5COE4xm1ChDbIDkG=8iRAGMib%>^IF6hWYI?+I-SRtx2)o z6Y}<{2>%u^bZB&p$400W51eQXbqngQ|F$fcm$FMSqDODvnGpKF+Ua26-xI_ckwAE?6Evpt+kMq7oG+= zF_H3&er&86NF;C6B-Dq?Ka2=}<;-EUlr(u-xh$2Nn9`h}@{1=Gc+*;X@SZ~jY$j;l z?j!If70DaT{8IhJaOS0ex)KkG5Jw8Exd@IB+>{^^wbPxV(*0;K6<14~4w#}2oyS$i zrynRE+jbxrfWu!ge=DglHMIDFzl!y++!@!Mm{k4z1k|3ZWG(#mRWvp+?JMTpkUJYe zM0lXxvVM<>>{hr5I*iuMxew~$lh2yq?b^{f*g>FsTk)3@e1@er3g)?{;F?XUU2WM2 zEd%nw^ZPBwfD=)y3=>o;{kzAZFOk*?XyWEv^IeySsFFicfnNW4tT(!hA60yH^*Q`= zGH86fDw@Turrf#`t2y1xqo?FH`O!l1OZLYUVFP5oUN~gjL}oh~O@z-`(?grc)j{(_ zU*QgDNFkdf8kbjs|tK zJU3cP=`&q+v#kX$E36&U*h#lm-#bH+O^(w+CN&%T|Z*f7GE>7m<|LxYFMytz!Q?)*0&^M>^rw0yVaS zwFfJ>`3nYr3c4gG_7TZq&iNnkq_C1~aUYB-TY{f-K1W*DH#d^)D?X{AsaB|xUL4yg zgc+tJWcp#qdP^X)Z9NrXlu@~u8y;c;|2c%7u3_S<@HW#rN)zWG%29%d?9ok-aVIVs zEpk_tbn{?C#~X}JN7yq0%&AKipw=(t0R;6|3Qe{5i{9D3uoN5^V&5_E&k@oM1%${< zYnmFr2o}EBr6LfaSPldsWjBD6pf zNohOyhW0nR=!zUGx-^jg=(!`Xrpx|E!dfL;AyTd9w6uS5cs_m351Mi@6|bM=Kw?L3-k zY&_NO5;Da2PHZw*>mmnbAeqaC+)qWdJe<3V=Zxlj?hR0C8RTbNd~1x%FlD`pZY}S+ z3r@De;1a$OvbrzWo2Cu$U4b7nqtIxmt~s4*p(SQwg$y-W9#NKNqk$@dOdm2N*Xcwg>eCY6eMn)aiI%8^1(-_~) z0`0G&`*PW0O|3P1XKIy%I-qf_gdW>9-Cpx74hk zTpF@wDisaOG9!|8Sx>R81X7jW>>VdKOf28!ZV55wwB`C*2$bXk*ng<(V$vUvUyOW2 zLvgVa{9@Fonj{@lDJB#r$Pu1HALH@4i!KVCLh-|~!u#0B@C|I2eJo8r9h%SQS`QJ# zkdMuF?948jH#&|xaCvBlcrd7@O4768_gsX69I-{8X_~{#kwiamt`rc)qFd4CJzP9? zL1h4YU`|GZoNX%U(i`c-PtKgK;_F{9=|`Ygk)p^l?5JS-Z1w0exKTP7E0vn4U4U`H zly5ZQD^~O9LOYwZig2I`cFv?AmG@L`@_{wfY-z_BWlc*Z_1I&$aX%(_{b`&&|(CK_c8d^ z3(&9L5nll%CXVsq>jy1}dkIO2tHjB1y69s6Au9%|17p0BIZshh0g5?}*>@hm+4%Wi z9lmFEN2tocRY{vwx`Bq}l#`sg1|v?WMIgIoN$c1*lNMlZySHI>%fsR_?GiY{RRm4Z zcT-Y^iH3Ho6CBD3hN3v@)Qq+q9keR~^HIU)*mbjv3!B!}gsDMdeV)=)soGNkVN(p3 z0y?$t^59}nH(t=-{)cfffKAE*#S34mub97Ob6v&ze`IQPjA3PzcDk2{H#Zq;X;jC7IM;em;~6xEFBxwevYT zVU(d>e_9l28KTa0(eJeI zBc2yu8dxaO0nVPq==@m(^fR!t4awP`vmroyMDBl2OZ zH+2F&Mv9PjvOFYc#JPy%iBj~(=J{MhT>%ca zTDhdmT=w;TY#+Kgm)8T;j1-YRFXwm~ck9Nwi_%A`w_h@}8|M{o;$M^DT7bOD!0^gG zdmhyyzAhfHzRVOBq9fG=`swIC6$0K`_PKn1DV%*MXn(48x}?*1<~{od3sx-JOW1F$ z8xS4-{gsB|U%BOsG7z9IA- z<)Bne*yxbA_JL;%Vc#Z0Q@9W!#|1aCYHtwm-eTO}c;djy7i7S~ zDtqOrQq*iy`||H?yU*2na&*bV7+0GP&$ET!km9S*F9}Dald+u+lzkzdWwzz& zKLqiVH7MhKYQi@H-z2Oba$=33!(B{m%Oy!11+I>RTBL98nvNnLi{B> z^VlMw6ps;@ZR3z`){p|cP4X+;G?eG8N2pvv{Vvq+23LPY3e5;8Bjt`_{(#0jj#MfZ z8s#oiJ_LkW{KTmf-rOY(*Bj$CZ{?$0Fv2pJi`{gTXd4WKqJ7QvsWg{U&$H#tC$=_; zr@*v`88{>`E_mePPGlbgI88}F=P|9BL4h1;wTL0~a6iO5!WimZSfZmaZKPDRI#$B$ z5TBP6F7Xs%{?b5fYiH0#^ReCYKTH+kKmVhqDPUkg#I1cs%Ic$Dvy z)fXOFpF$l2zx5Cr^1{JLf#(@i;bZ;|cvW7q6=e2Y54(Ivh(;%Dhr|(cD3S^lKe7X6DO?8BLGX?yk9ar+UGco2>YyewT40)cw^BRykWHnhsF&hl$u1@{hp- zuDrk&U_UmUfInk#Y(Rb*>XXU)(jGLuzpOMB8s@q=f42pS|i8_tSzU>LcM)$XP7 zv>Y+;Dd(EZFkMATxaV-K5DQR3D}?rc2(Li_7riCm$VlW;}xKsy02UkFnGR)ImHERrYMWxR%}1^wauO zXN_mPOys)xw&i%*t!;bKIahp!PGmll^yyznr+kSSJ|!sctS}J%=3s3omsy|<)JVhb zW_O{NiX&GipY(G_V`L3QIQ*gwSufTfa@0~f6=#G`j$(2q3rEW( zAJCC7p-k4M+Mxto^uRe&MjB|DBNxE46TXgqko6NsTb=tc zfXSBoE_6lU%aCILdDZEI-R5s_#+%Ama+>;rq-P-B7y((3z??px?swzsnOBI36Y?*W`rc)HuLu@He_9Yg5=WEFpC~mR47soN}s{x|1Caaild+USWqfc`4p9 zWr@c&{;_6(y=LM6e=7d3?&XpN_ECMd|5r8midw<~n~->5S^C!%@pTXCJicqe*?%tnTs%tu>AgE@{E3bdKWOwL zX+Qb%W9{TFq@dy0)#Lu-(^`cMs^@q6z#thJ8QI2x_C^JqFAwKE>6^H0`2a?o`c6Vz zX-tN2)E%%tocN0Pfh74me2)HXl-_Gp<}Z~dfXNIK%o2evBipnd5_WoZS?5z9xR>uc zBXc&2CW&_&`7rdK4PxycK3=aR3nj`{@F^JLEI=XPnlOr`CoJWVRBi#5E~0f^PThM-RKImqcY_vwAX z-YC7#7_@t7Ij7*E&5&K)0#x@ZO{W2^P^`|ID&L%ceT#78J=N)ZoQLzXlTc4H!mUh? z_j?U}1)ac05&%#q)$aC`{247Epz(b%G1iml))Q&L86oA6t6c)?Jj?W-kAE??o8*;LBv;Vo-JM7lWdd9gH-R-*wZS-Y1%>@%OdtH#C*3?SEG|)Tdiv`515((E0Q# zK7}Lp#!mi-FWyv#ud~i`=jG^V-nCV`3DfcsX1F53f$t>E;VfvYr1qO$fY0_dj;4LhCXXE z>*<^vG@4?+vwHUUw^s?`2-|)zbo4!~3Tm4gcD_I7p7mi7oN`xAHqI>?tD45ismq>e`dvh}TrlPjTHB2!9iXqQNHO3kTvdF0U$|`C(t2dL( z%D-~pF}&02$XA`;ji}U>$gL0*~gbQno zUj&>ikM{djUC9#u17M$T59lQucqLsKH8N+>zU%3zvD>;de*>ZQcFBtzA2S>;GGGYV zbxvwBmQ9$o!&+E`iUix0g1SLv>J`ldbA+XrY2U))RO*f-V1ENN$`3%ds@fV7=Gqeu z*cx5-EOz8Y92P%4?!pbJr?*4Qp0TSMDrv}<=ODcA8|I1 zs8U6|?IqnIFUP|rf9C;qeGJ_$%`j~x&5NA&8r>&j9~~hkGA!bB7BVx`Ga(|nIDgcg zn*1Q&C;XEHGFPLPBw7(mQ({~v^g7d7(9bpK!xTe=7+Fr0hYWo~uLPYS!+yqLe=tXK zZn=L-6xFgwQ0&iw-Cid;UV6#lb2K`20~OL&l)BFi4uQFs(JM1I%Di2%Dx^V88tQYd z%{85)hRI_BqMXM&-@Cp=Ui7FSV$FV~1m;hCU39q(l9i_NgEZDZN3XvIr{a7wU3}0Z ztUR3OBi`HZ>CqKKuQP_?^HeM*CuAb$wu0WZnIEWlpmyfI?r8SPX{Xv2VRS`tI7X6w z)2!v2R2InpcDouammwf+^58UTD5}gy`9d(o;3e7Ha$HhTKdc%2g->#^C1Wkv9hxlj zyb!Lci|#PSsal8ji~Ptal}k$vL7qd6v|2~WITfj7+S0X|!`dl^PshRp%`_UMV&^H- z9*1U zNHL>2nBP@a>8YC(FHHy=q^GW9-tJn)?@afU7n}rTj*m7uC>pW2(d$jHcd*2A%|T1Q zDSDl@9v;tgZQ3VsqyGP&Uhd=Y4Ku2d{S~NvYGdSNu+W)S_BiS9Kqu2WM_!+txl$#qnl)VawuXVR-PHJJupf~ z;5o06%^C}RKzS-p`Z*5UZ0mz*h-a_9R5OzhCo@Ot0uPDVr0n?oTp2#OlOB8X`P(qc zvS6_qo+_KE?q3;46k>ObtlGVfa&xjm=j0cwa;@R9Mk7U~KOD8%yB;mAvcB+!lhHJL zlV|c@$S@F;Q57A&G(Ee%2t}98w)#*LkWrDNQA%zh70AMv>p{XqarQUnO62Z~CTYC} zYEZF`k}N(>7$6VA=O(J5bUZg2XX^98O!eIa|4Gp~6v>j(c!kPg$>qBYy>rN$NM7eq zsksyQ)g>Z=f7>k=lf%rol~S^rohy%;W<3Y}PihJc9Sa=;HJ!rwZ<+-FVX%-2DX{8d z0?BN=gu|G@saWJ}icr0xCJ4K}h?2Ff=fK?moql1+1O5T_?fwCF*htRcvQJ9e@{#XB zD7hQ?F`=TEUDUN&fk}j9>M{u)iKgUFa$eqY3Vp*Z zwVDSS9hii5DafJXAzWWZ{sa6dz zRoR(q(>=W}ysPTW9iWm!J;S^uQdc%3JL;WO_saFvw&N$@Ee3e(W))M zg1!N1J9=6na%wyBCX#54w5i`FbxtRw&`v-o`4F2&M>lyA(fzW!?T;ZQ{#U*aw(qGr zlF_pr`fRqR0y6@lRA#E;29k2$pB zIk;X^9o}VVW2wM~JZxFv#c(o=4a~nrx-JuuPpb?nH<=FO3A|x;!z0?I!Rs}wtc=By zoQ1=0X49z-8oKMJ#wWkIP%{4&XA_6H!_-p2Ep!v*W9&+<1g!zI6hfY8C*JSACy(t+ z#7@*+Uqy-VpsPC^-@|X7KJot+7OMPnz{9D{Jojg4%yi1O)hk+^{sjQ{)|X^#5?Iy5 za1Y*OI=Q!;8aEZXxn}wWyNMni|U35pKMTXb_SsATuJMBO?fsDqGGC z6t7gh3kUMN-hslHbWBw4B5BCQbocvh6f9+eOZ@6oKii=9ug)>0$`$JS5rHIx!kMil zZ~+7BBl;o~jnPK7$*10V?s&IN{GS2OkRw!!DnuQz8M;(VtSbdtR5YjcwN|7n$BRry za&#L_XCr`ZE;w>rTtOrqs9KKtPH@F}%~CX>?>%lVPzu<<5PZ;ZZpEPC1G51(F?d0JemohMUFkF0x$a z*x0<+b%R5}yDI1sMteJzW{UJC#uQYk=uI5Hv;?A!{qTNGr8gh56 z~1$(hQ7OYo7=9j34qA^kvjT|L7KDsFJE@SuY7LMUz zg05oY8IK3Dh5wEZA=(nw$P&r8cm@*J+KL9bKkUED%}pE8>^P%NA!7P`6N#^RR+Y>v z+(KY4){%#fen}l9K#!Pt>w6`#Nk^F$q_o}38Kf6gDxBfMR0&xq+s{qxmqE+PI(Qd) zOq<*B+<+&{KJXqw&w#dB1V~?K_86_WQwq9kVMN^MTeZVkmvMX;^vrQC0k3s+;=&*} zzTBbD><|Xrh6BgcrN&SB)8I@J&CCzzNUWRb`hbV!WGW$^cWNfx9=PXUL zra74h(G`Mm444?Y=_05VCxxom5GIf`8wDUZ7LnVuhhLI{r&P1Oz$QOn?d^O@Ndhl0 zP%yhl2X}H~>gL3+qAfD@OvRhuKa3E&=`g&mo07~x7n5(9<@Q%$KRmQ?C`5ycs}@dv z*i0PR#$nv8cd~tHG@CdFlAI-XRMX3Iz^1oLVJp%5!0s-&fBU#aaWph;L8J&v>OC)1 z2@DGZ+$`**=W@o%pJDVSMcQJKVxmis83>Cf;$>3BHF5?iLHQZ)~-uZ^F?b`!zFk z@6kJdCBzGrk`jJ6=a7{&96K~hGF%PnRz1~%L_Z#J{2tk?@Kccp%^yvgE)MGx67%CM zoH#aA-(T&01RV|Rm;!;EEdF|cy4fP^DyiNedexTI~+NZ$NgbiV$neG;bT2UJhz|RhoTVeeTet= zjvzll4jC>cqfzs-8!<~)Rr@1bLO12>*$inanla4%H_S>%y_azy7s4`Z`K{a+ExC}U`l6(r6g$#eGxdNS z17E^OH*MAr^6bPb#Z%(9U=vM`a;oVAb$p9t5Yz*Z#zwVRFvJ&JZ!?lGt-R)i?dPx} zlJ2UED-f*rx`p0?Nbpc7OL~1g;S+6A2vhcLgwaJzCX8N#szmBRj#avt(385x!WAz6 z1z=+Et2<|Sx#>4^HSkUUoSTY6Z|~d>vnX>C;g4DiBnG(nFLeOklwGv(sT%xqfPyJC zOV0bmfzK*XrQbYY?2DHVFPIC^d7N72u;0$7B^^`mZNipHR}z!OWkP2?aZNkY*?xqU z4Xa7rilaV8*w+5`1aP$V@HX{4v&{WrM|udxc#eVUE>P@`_g}#pRXal#o%jWJiMM&) zq;~ZZFP<$RkM99?y=ap|E3Ie3HKFb^`9%b+bRZ@gkM1#q!T3c}AscVFj4xnJvp#{) zn_%^Ok!v-PK5fh9)?HKTAs`}z*Q>Wgw~LB~ZXv}7=NFcteB}b`C|z{=aj~I_gdyfw z`8 zCGz*xg(zGv=cIFBMFJqp5_0vz$SZQ{Sa@hFRQ`*d{(6(xb+&||?Rg7wSh<3EN$n5Q zQIIq*DHpn6XL#5-G_1pb{=%Pe-=Bz>-@iIJcN`zrfIT@NB!|A-+(xk@X;=hU6!yLP z8uV$&`qSJTkOGa!r4O5_I;vZ{K#eno&P<4lR#sJeRh;gd#~B@Tu^Y)UZUE_f@*`JfNIHs++K+&TRrsUL4G>)900+}os_Rk!6Z22SF#Di zmd3Yp6uJp7v>*UyGOUF$9qcMBFP&`4Vl_-HF&&@*EY}Hb#&nb&4&h?LTogr~(M7v# zb~0Tc9nwoH=jvLu%c$%eYt0;?GpZJ^#gWk#kD+%SQ{S%%wz%Fh-?Fl;7t6jjOMr%J z!$wAimn*mMx9(T&(-(N~ksKNubC^~sK|{Xg3GHt^#$x*c(ZjP%5Y;X2kFi)p3g=6gA2*MwnTH0Hs2Cl>skcasv(ZCy)NY{rHKZ6)h;FE0+-z5q=xXwSXk zRF`ZRbna4@j*8mO=yZtbfQs1=r>lvla5P2yupGRb>~x1zlm^nmxj?dNrr6%>xHM)o zvLBgJ$qp4E5N9A8s|X$9md?&`UmK3+35g3~0&i(Q7y6WRy**Pt%%ODYzc_?OG^p}( zgt($Vx4A{^E_^vZr5>+$`ggGMxLR<-wkt$e^B*7wgT~O}V`woFko>hU4t?Mf>uB)l zU0xFoc5<#m$SlSiyEC>_YjM6~Wyv4EifxC`kA@n%)pm)|NsA3=DcL|J%Bsu9VRW1Z z6@|~{hlYqzVoK^)c_bWE)DF)Y9hb}!4v}3@;&RwCff`>QaVvPmTc|&pR1b@a?>n*W zQS;CWqZaUkz#AjQKq8}6InNIClyWZJx2%+Pw^0gIRJ~ih5QD+9`lr(^{4(dnuayBG zJ#1Zr>q*-%ndd-?15+PKGsw^o1eFhItndAq-)U7=!T5&pmTVn((9z!e$g#$b={?QP z=)h!fbK@k6-$xcET{+5E%6)LF6q2*$8Y9kihK&#Su|{6p%0h@h#M;aepIsgk%ma?^ z)v!WopM&4~7rK%yOq8UcRu#888GiF17(OhW5Wj?v4DdnXgCryFvdB_0mornK3D_lG zHBqTOh4!8!MxlAqiM@a4- zYhe;{+43=TnAf+UpXhFI5iVcZppW~H`?zrmjz#a{N|D%o;ABc`oYf8X!8nrcm%k6) zBaCr=Hzu)S-G!8xycyFfjYTLN^zkpd`e$&+;t7V8qt=V;r_P(;gL9 z5F7W8vX60s!3;TaX}1g24s(o~dy6;PvXt99CG~_ESYg&99?@!Dtst$tSWpW3k3}ng zsx09nyH#S|#LznzSCTcaXr*9il@1lFIgiGfPc&3ii6AOAubE5M@*jZFj%&9$xkEc&tZ`PTAy=~L*2u#eg8WgMgR}oM79kvOfGr$En>R9q*gXs^M@HV-nq z#R=vZD6&vA`>``dGDZ0b!wXX6?^E+3a{6anTzI{mx&4b5qh~<7;?Vuy)02i&+y0x5 zLqxJTbXz1Wb-0R04XlFs>zg%(YF2^!-{$sb9u-aXnh{jE5fn(8q0 z8{a!uc2KA@w?3VH*qx5RL8CBHnUtV9G`WftVZ!mmDx}W3Lc;EXV67OoomUYJ&POS( zVRFUph8!L~ShL}w&*M}QL0o?v@ecvmMUkoRvff1aMRxia}Wl2iHhEX zZh1X@^Th#_!Z30~ZP6-QJK*cHKmP&xvkn&}oA>=aQ+_NS_9Q&xRO5_g?E}2vt9V=z z+P%?s`B?*g>Waehhtey^eJ5;d!60CrDsw7S<0<&=#qd?PTFAZVR}nT@v-?|4Z7s;` z`E^ucRp;RbItM`%*7pRwjD7O=H!*Bz3$7%-w&L2>i7-`vQ_A(j8omGw(~4@+;w3(V+LIqMvLzw(eM_we&I5*vA^|bpgst zS<$!G3B1L!dr)Su(EXG-;(M0esrB{8g;wxibY0r;qC5MakSPp>WM+#L2T+yM$zL2? zMuiAPr@gyYs1)R=rUktVTI9&Jtr;(8qex^@!kydUUgGG7RPODp5s<0XM(slGJS9_t9nJwqZ%5@m-Ftd&5XlC?t+eYl}@vmdkC{3j9- zjd=R!6K5^%qOjdm zg3Q9U$ByeDcr5dV6@Zstjo^BR^r*x=_2bm;TQ&J`V!%U&E9wu8#@SKaIoufi^rxPa z`zEF?+_nlW=56TDr*DOov@@}>aR9NAzEY~niWW5H+1biceF6|*6B8WQ6=n5J9%i?R z-s6k>Jou%>Zmn+OB|>;w>?vIsEaS4M@mPq!%ZA@qVbT;`XJngRM+HL`#M?NE*lFdg zyP|R-e_wCsU|ab~cpj&>fgg1nfZQDo-L09rKx%Ag|FQ_QRswl3BKP4pH-j%lC>{I* z`Vim;>xRwFtQX?ioH~M+2g+Q^N2EjE+ zhLVMTv0HBj2I6DRFi$$OVW8B?KHJo3Q92pmw+=I_Y-<~gj+!U^mNHP}&QPnro=c*3 z@g5tzFicR{^=b{rU(GNEgJg1C5Vv=&y1_ z0ca%y>->bk-e&WXKvc6(o|B?S^@?n~CK8VGnZAocieJmt-PfNyt~0U`e8z62-!N3< zlV%+Gz04dpFu>T`))eqIsSGS1(7l`#H9@y<=IF)sd#=@%!o%awi)3{n5GHjkj z3~|C19R3Rx8U$ydPjiSp!$cO(<^bf^PL3f*h$HLsj9KdXZjB~tCT-+SbpK^w2I1Po zmN#&kBol}i8W$-Q3DXmGI*@qJe8{)_m#sl{^fTMGnB^L?GQBeW*likN)pcYm8Sbr1 z04FXa<`Nqz>ZBUHQAv0|u&Bk1ytu|vzzJpP{1|x%;QoLkrkAkfOPBWBQi;FM1`Xqw zQ&@dlaHmo$IX^*o9eCE4U!0D3clO_&1KWSl4)p)f9VmFmf5?vipdA1dwu1}{_&;a| z_QF`Aalt<6o%Oh0w|M)RC zSmJJ>B-Rzr`WYYuqn6JvQ7$M<1SZPc>w3g%fZkJ$9yCgiwN4E9KQ->Q64*%QaP|}A z)%G{2-zNdKB)`htY$eGdws5~ZfUZK4|Gp0elWZ02{{yTm+{q8fD?jGRTR^swdfuLm zGN5itGI@LZ8(;F$$JzgCu%FM!{8djaNXgEIFFibAD^m(0`$8TcWl<)5#h#|Yo)*Yw z-0uFfIiHd3A?oQ#L|M=DV-Ly_ zdwPO{rLX_|$PYYOYiG}6&kx)q`k(3O=*SYu1_$e)9D-4vQ9X}QkHe2W!LnG=>5+Rf zA80>(phcPgpSAhEkllQgg@3xg{9@X)_wR^y0sw_b;AMO_5)athJ-OVo28dP-T>S#!a@v z@sxaK?e33Vend0wKf4HV@_*i65t5*?-l&22ze(omBOuu)tm$#Q1 zLrfNPyzwQ5n4W#B?@+B@;SQ%Dxo%@dW)C%-QZqvQRc^x1GmmCp7A-xG(fIsP`|!_e z$Ncsk+P;F(A+_@(j&gR^&c5uwAulIyv!MqJ9_%@*G2`#+3j{tYhF2LlxKoDk*2yO_ z0p4#hUET$m9kwCTdAAt<0ZM*cd@7i~>zn-tP=BbnoBrE;n|^+A`w!6cp_;2qAB-nWzrRcC=-V{9xGYdyUb^7>->YeTtkbEm@-1Ew_=xwp z%g+C5{#9Ge=S4M%D~Z>%cddcM#!Um+D|Fxbtm*@-$|U)?7~7-t(p#_e_MiTI&T{EN zfr%QQu_xLu*WVrE^oLmK(LR6sjAZ#rd~}g7e!ogSwk4_YRMuP>v963L zmTK%JC-`Bg@|16`TT>HHZgprS=9<@pOrp?HxFM#Gud>tFt|6unWl6p!!r{N@+25DQ zNkY6ScKJzew(NHkZ{-48Qq-DPNu4UIv8!6_drEtaW2*v5>(IoZ#uTQ$uSv=DPMu>3 zS2ePl_4wCCoXSBqeCv9}J~vN8K2qNpqAM<~PfI3~@D)n6gH47s5b9yT4tcV5&U)5$ zSW=Fu@n)@$9Mx!pg*2!X6jH5i|O^E?HOBqXh)`cdU7_oS{chSDhb#_HxT~lh* zi#6wcjcSdXsaMBO3R7Etn9L^^oJ~ccfkQi6Dm6BjYCCslc?}!NI|t%*{k_m_L~jj} z`)?JQ-PxYptFf}S+hn@ZY4SAR8q^SNWKEQX?O7$Wy(<~i!RoVlVjWg#$st2K;cgx> zhS1oqj5GyYX51Q5#ky=y3u|Le%~EpL*Qv<5Y05XGwj}h;Hne08)9fy%I~rq5>)29( z9x#-Z+hQHUhc;oZv>Xk9uAWL&ffAgM(QdO7l=IToO4f6*m1Q@Y z-YZcEjjf$zz1h-GKD!a4%BxXEWG~! z0($SWu|1tuy((7inH5%AC(Yl^g8>Kb#Y zyQaQuq|!6Iq7+b(XanF{RZdxin-o8wXZ5sf{ZSsa9E9 zPR4IJ4MePZ=b|k#lT}DvaB9SC-3RI?lTovpc zGUHPj`Mysmt0|%(n~9lZpciqCHJPzb9p;KDJlR@C1%U~MVs*lZ-RDXlL{O z!cpC6;*!-9!8cY|mTE|d(4lnNU!*u^R@ZzZt0GJzv7LXi|8K%oUtQgX4uL(y=8@&DQY2mu2D13v)&0P>0d05SO=^ylVb z`48j>AcOrl5nzM-rV$AKaD)8-`3OE=cwv_Tf)9~~AN6J*ng0MU-{d{uf(Ri008nS& z`G@{mf0g(D08C;2ScCZ|{#HNMF}-#F046XWxg-E4Kq|PRu}}uAj?es@{XoE93qQO$ za$V?Xf61uCZ-n@U$DrypQ z(Z`71(Y>R4M~s>Ap0@zck?gXZL?Qc-M0ozwA@MSMOp`CP%k47PQ!{v(gvvZjpY)lN z+I&D2^%`f!cGe<)&}JfQg-mbJf(WEUi53ZdVJ0iZeJ)u1q zU>fE0OT{`Q0|&A{{Z11 z-emrqKz{!Kjl4K<*ECJ>f9*aE{F1`8Rt0@Z4Vp61p+OuptMz)gPbUA9=3jYUhYagaI=yTjOec z`#?Z9xotv*}q2@)+4Virt2r&G*+`8%rn5Yw5n2xyuVq`T3`D)BvQ(S5rhEUWc zd0vbo%*raJcK41uhB}>3iDTwxCuGkA&uM+kYNM7dA2$lPe0TVSlEDZD8C$sSe`0^O z;p5BjKQks=fkRO8PeK&b4AE7qj0}OLk*?vJtDj#O-&-@|Ms;C~Rr{UHs27ub+O-V> zEHU;qUSn|}9n@fBfxhK|8LUr=O#2|AG{Kk+LWFU0!s4(5&sLx^pz{*oSYA{sV~95Z z#=~a(Or&urMO_(8q#}dl#w49G3M*7PfbthWjm}51`uFlXSjgvY(QAb`5J%&bJq>^ z0Xs7aow$JPSNRAU0&8&Yayo~Nm%8u-unaXC=*)QDqO;gKnbqhqCFn&%Hu&DCK%EE(;#kW9HAlc}r1&>T^y)IhWp zL{A@>FsT7_*T|0dG4nh~;y|y=$L=B-k0V*F#Ko3@Gm`=4CNM$pgvB^{T>6i)XQ&gP zW;7g;hJcwy4W8ySeyXM-0fO}i#33`x4x)`rc>Wx(EjEvP{?hZ4T7;bmm<)K+^)phR zZzTT09tv*$YE_9pF_RfzcrmirvGd2U!hRT0xg+3%UFlru0kRTNz>H-3j_Nj%kSz@4f5m+eL z@L{kIm_`NsMQfaH%*b34q)s@%kCUN8-eX-|nw&oq>haVV7h&v+-h~*7i?8BK$Eq~frSpL^I=#9ef;2FTODg(r7e-Q^0pm_oB z6X`P*q#Gt+;t0ojxUOt3_n2JqH~We4O1N@i40vW!*NB7z?>~>94n^sSMm|KunQf*N z#6^Rt@Q=(n7Z7t50LRSkz2Igv)H<9oifH8Mz;5bcR2e^3LQN_0_c7lXpm}+Qgk^m- z*(`r~$N+l~C?JSys9MF*k9KN$>=Ov6T*oVFH5H!UMzn6Djd%AGD*R$uyl%99%p)=7 z&MDEDm22tU{puCT$#Bq9<*qTuW4TJpzE`suh$5`&R$@V;3gh}ki3V`=cUqZ0#SBB* z%xkcEilZg5^g4s>el8)u>E5O+Pr<&-KW!NKRahMm4EXGYjyz7v2IySM91_K9FtKrl zCR^x6eA^f1S_tPTUZ=yL9Ur_N3~w^KGx_+Q3=Pd6dKKHvjW;zD6$Qnisuqoc=h z+c(ta9YC%V8hk1r`V<2*;Y0MCry;oGBA*0oz&9POt~Mj1M9RKLzNaTMDI$+kDzLVJ zmvEBkMB$M50MDzBP!*yGnSW1P+zQ)o+9;!Rz(zHzg5mpsAjk>6racAkvjASDmHff= z3BA-(jba8H>L>z?HKS3i*2wPV_LUrbM+Lnt&SCNqYzYu%b}S96o4wcUc~>(I3A9b}p2r%%(GI#(Pi2j4A^&AMf zF|ke6@9{GlP$-F$i1h(7a>5ktj>z7ZW+kcR--*W>x3^!Jp?WnRK11zSGU3SNbPN^_ z!~%|`I-bnL?XJgj(+FFr#uVmj^8*V9aD^Ka>8g%YUqU0e^u$bHiG_y1mh?J~SPue? z%O~@>Q5Pb=ej?*m9^{kz%xLTdn%OaiCwl}j(DtoHQOXhV`M0hjp)bn(L6bShy2z6m z!2CZ^9Dg?oV8@Bjum}g-RQ@R>S`l_UMJey7RhiG}RoVQ;_4g6P6ObNXqhNc~M);m0K0v;*6d1^*M5HF~eapr^(1B_u zP9)4_2qX!R{6-UAnqXswC&O6&=41L`MF~T=22N(SCRD`Sm(O=&P`+hwca3>N#5aSu zG7ex7OhkNSzB}b(_q}cmxQk+HHgry|ABgyVEuuv*`@-097AE+BYA!?su?jlmvmP`$ zvvHWOE1)bdyv>smf_Q;uDF-U=jV`Z2sEU?-;ED zPvAza`$ol|CeLD~JdT4ch3Wuuu>|`I@j0ylsN7A&QbRWrW6bs4kVML$j#08NTAdD5 z4EjVH)K6A|usnpw$7DtNl|+*(5`aL6m`*}}K;!+` zMf$*Uus|@fsO4%8bKx@RFi^Fkdw^1@zk1Yaidc%H`mggC5DxBT7zXUZxE1*6rd(Ky zV+FX2;s;~e9I1oi6rZQfc0S;DEq!Ez6DS)s3aAR*LsY^!#wp0(yy6P^(I#Y732kf+XPtD=5z&r z^$rh+aB2OG>FYZhT%%s>Osg++gB0ob=`-x$LE{HSYF{!db-=&X_ zvHL=DQ;H{G#VFH`L&S7ou|R$0a=$QrKwucdKk4csVnV$Y-|S=kXYx3Tj{g7-L83>o zfM(lksKX+FvL?YmQ){M~Ka4*BEoe)H2$HujD8#eWETrvTc|vU4qhTR_%=%Q8jSw{4x?YBg9U;H<0cC> z3I70loO0P)6Pp8Kn1A8~;OcA{ZZ!%qH4hL36t~zg47{%FLiw^{4MK&-wIp;VOnV=s ziJ7Q(9Ju5LynDiJYJ*D50+K~Wa7BLNQjf6Q2dmu4iy+`SkCThpC_&^uGu8+l4GEJP zmOXj7iuseGHS8cQ$aNGqieP%5PcBRXfCMsLv}3+U1%WI*{LHqb_|*7@MLHwe;R`;A zDpb@jbTu5fP_dJ??oyJbaAL$X(1FkUgEC{yiHY?40})hE)XAHR0BhPXBpGScAxO}G71Z>Q1rw+^kOctM z`v_?9(GZ4D9`LBIJx3(YdZ=Y?w zL&0&iQQ|bw@wf!~NsQV3M?+#7Jb@zhEZsx^(11D{AY2KQ`Iy^#5HG_9uEbT&3G5U8 z@{)<=IVCWw5k@855O?_#>H-8P%9p2U@ZnS8&GL4i504tq=znnR*LG^k!9Aoy5axkdpAg^fT zjy`>+LU}g#xY)x2*Q*lt$3k;a_Av{3?!MC<0mS}H3FaQ|W9B(bBhnh8vE&+YPEXK3 z`Ha+iK{1?+YVK%**pAgxE-#HZ?0*qCkI2!5+-w@uQ0v|JgZyF04#!4wWDi4ip;L!L zuMwRthy>X)4qOe%s<*g-zl8jZMZ^J|#)hK(F=Pt4Og`puVRfnNqvj6d7a|b8@}ssz z2OST1T7$Oz@dto?&PLAb0|ySVHj45lwo7fTRxvD84pcN96U!HQpE2MpX#0BX;Z4-i1n zfSd1AfB-LkWv9#1XBP)?-Iqm2xtvd=lkW=TceB4AV-$gY^BQm`LZ&6nME&Y0Yg-HL zEk9@!E0L@9fA>8m#Z1oG6^Q;D6@k;@F%n0t0qq!J;Cd0i#TM~!i#(0=Hya*eFI2S{ zQvuP~h05xMkpkiYYGcaw7!K@9T&k@CsbPGXXqn3$@3R3K5Mc@^-tXEg*8E%-dmD=~ zE+(qF)Z}=T+JSBNhVSngNH@@y+zOrorU0XXH3tJ-$`k|u0R$DfjacqxETnhPG1Y@J zc48vj7|u0OvSN%_k9@9=v<{e@cUQd-Av}TIl1wCDViam3)R|bgc5a8_6!_!dWLo{! z52wL1 zf{+2ahv}`2*HHrovLd!4U6J3ka)>%*(ToFgU}JIXVtPHGHTV?Qw4lpz<$q&Rb(c*Z?B9PfdDk9{Y*@9~fm8wgts0%eH>z zHeOtJ9)lqi4G|WZxqbft5VcXd*nz$a>aS@}2gG7m2lWs^`$B#vK3-S8Bk(5dAIO#~ za~Q-dY=L0)am%7v1Ixaow3qP}iF}GO|3wmm3Wh9nKjTcn}xYv|s?Z0){{=^!#jX;E z@dl?9_ax6tU%VL#`vY*|ILJC~)@I7ZZFmE90%Ie{b}$wcOk89UV6fQmOdvACHm9-F z`e@*bQVb99rB~8Z(tgo#fQ5SQFksiq@8m%FJtOe|Vug6HpT}a%I*ath_5~PDW;du& zu#kP?1`(8xSBa5x7B8w3AJYK#B9$x1uBu**SpNWcXn;>}2ea={u>4MTR?~4YS+8Oe zNgdrnC{zO=9srk=fW!*B5s0E?nt@MI0g1u_-+0y~9=iEq;2rj1OaSq+U;r9`+DM$1QaTdpm=Y*wKr~?i11Z5I*wCii{Aj zgCYxpF?tchkZje|^|SbB2|kFSPo|?&(K{3jIM)_VN6rZbFP-s0;)Re7U+E(2m(XC(|u?R0Je&NE`b_IYqA@ zZ@oZU^8jN^AXH(#rV9Fj05#oI=5dj*+Mb@Gh#B|dHO@?Wj8{is%y=*dZpi|mabVm8 zRQg$n1GvUr#yP8_0m+*fx<(g&adNt`GcD8K*up~wQGN*XF}gZeW2oOl8lJ)8e`p8( z%*Bqm8y}9NHL9un$1iNgqa7~w?=t-%%|A;z6ZkYDx)I3OfHL*3-eYWkQGFo)07&tA zo}fHUkz1`xMh)*@+A0npc!*R1e(|gt>_XUV(TGppZD?u|KG2jav0|=c#qc;*wpuDE zpjg&`?8K$LA858}8rXzfVAaM4!Bu{tIN-Hts6hC@QwjX{l_neDP2 zp91_sxPuT9>RMa&x<7h~UV{#- z3C9wWdl8!_$KzvOq{s*T!oT%BY_x3LA*pmlOlY7UnS#Ny=HoXKqqumhDfhTCIkC{F zsJw4-s2Cm1HtHhgMX|_sAg-e0R%3J^Fy$%ZkB9>wcmVs{A*%H?I0?$GWOGBQ$rv3K z>Hx8bYdV$%#<}@14x*@TMsvzrq2Ny=a0!b<)sCZjN{bK|qPA<=GmQ1xwt@UlsfO6` zWp`8e=!mRBu(4r>WFKjtD%u~?cCZlE zIO;zT4QN6Ym)?9vCbc)R2!kqeB9F9AR$7b->fP?AtTwEVlCYxy8r?<*mxDHErgb>2 zPgR+BQ+pGJUuX;gVBjG&P*r(_Ll5_Xp;L9{5qB(D5rx^*JUb?2Y^>lCqdWbRQ+-D)Y-%~6PeL`5dX@wM zu5oI!zNe;a&3j97F5wDnKsQqxD7_d#B%2V65Sm@p_X5zNxmRD>W4=rUk0KjW*Arp~ z0@Tp*Wke2|R3-F!{3_E!NC)$GCl=qZJ6Vqdu7I5#lLpF=&C< z^9T?#MlA+5B*c2uLl+qZcXj^p`1+O$hgS`$g8Bjrfl1Zwa!!n3d!I`iCyq=<;f=~2 zn0UAQMkl>WbI=|om=_r)AEZ6(o1B+G3x$Xz6Bu^^H};fgJn6sD>M_H&x!lN~6Nryh zb_Bl_76K>;^h6uOuW0@wBbyS;0mkPe3Caf(2Ms_4k#!d;vDny@4Mm{UzCQJJiK`Y045n0wS16^Es_i1bLhq z5V{ens#ii)iTp(b1Gsr){{XncK^=FwWNscqaM6s%>0j&U!H43U-zvrjFS{97-|;C> z9kY>eK`Fm6c?b`P106xRSU>=3ggVsqZEPJFxbGWuIxu#oAdVhpUuetDdd-hKAuSlK#*eTbrVP zXsszpj8r%E0u0n9dXoHHrb-%stmFiKUZ4lGwUoryaIufItwKe45MJZ4*LO1Vp$}mb3*HB$~pa0q6`HL|C literal 0 HcmV?d00001 diff --git a/docs/assets/examples/carousel/thomas-kelley-JoH60FhTp50-unsplash.jpg b/docs/assets/examples/carousel/thomas-kelley-JoH60FhTp50-unsplash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b8fa264cf4ad67151dd9ada75b94a50b9d1d0e1d GIT binary patch literal 179256 zcmb@tbx>SQ_dhteySqC>aEG7+gA73icNkm;w>-E*aCaZvHIU%$t_kiEAR!^PJny?z z-*46K@2}m{x2r!#s_*GOr|MSS?(=u!?`Hs^8VC#mAR!?ER9_n4?*TF`SW(g9jgA%w ztfBm(005A2U2I&vkO=_*S2u6Cj*0@Kp^-5o#tr}pKm|YnZ~-K&Y`i?=-@MTP{2%Gt z+KcrIEd&3Z>;Gu>|E|Ecg?ZV$sD8b4a~lu1HvoWS`hs!%ygmNK4lkJ0+W9{?_+Jcv zaqvZ+@-MdkFRu8H&3|$Ce{A%06klv+Ua*|~|H9V)3;*BmeK7%`*a-eR{QpbdF#i|- z0RXTe0Pydg{&)8O*{lDNp^(40AoLQ8ivN+hmjM9cUti=Y|0A=`1pvCD007FZ|BT|0XO zqQ$l31=l-%2w5IJ=l}cn?=~P3fQ*8If{KEQhK7p%FJWS0U|?e6VPU^CJQ7@d+?R)h zh?I!nrPEWAkx|mK(9zPdaI>*-iwKG+E1M$yf1Tj(5P%310j;NEdVacic>(qoG#|8Q^mFgA=&7Hh{}y~3 zv=sC&6UO*^Zt{iE_bJdR*&ZsAGi2W8-&|HZ)YL~1%r=-6Q{pxF+M+ir(y(b;<8dj} z&z-+&D3)&W7c?qlej3&<3NgI;3n-jT>vmbAUQ-~RV_gpMpAHd14+M^>u1hL%`g(Aa z@JDKDxM{p@g^LiL-hmtO7ChQsOTxwZk;=aQ1r+H)FvOB4C4C4&H}*RX?A+gfDa6Rj zPZCz^T{0F_@)hM?z}(ulPB+D=Q>Smw{y>%ebM(WzhEGA8zW>kV^mF9VZMvAwqp)^A zpsB0498H&=%6+xQC?l7R5;G4dd!i7OUmD!{Ac)Z4>5@Xu`=_w9=R}hYX-fSQcOiD6 zLe_ASyHcAWA+w`lKdxAZ+DUI6Lvm9)?Id$Hc5lu43EE@Db1|9vHO*^0S5pn=$EiH6 zm}+JRR~^lyM!2)?vu>>_mcLQSczO;yTAnhVM%qJ&QNF2YQR1c##lkOY-X3-;5S&H2 z#Vcc}vAeepFIuB%z9kd3CB@g=ncBAZl=UfSFMaQ+;;H{!<~C64g<0$})xYYCf30Fn z48vXb)9!}=?^kL3s!mUH$O@apypt_g;uaG*JjMTv5MI-1%*;r3*7tpH1f#V&4mffn z3O0Q>r1(uT{R}HK@if;!YL?UI-=QGEJ)D^&tkPxVOD+QWk0#D&*wJXpW=|31`AP%a;^Sb=zn9! ztie_;;Pyv7sXv3G*E7n61U#HrmTR}wD}hw^oNMv6@K;TWozvMBo7?-D)X{oLMP;LF z!M_0NZ$gM%W;cvN4!vRrQ+X=jt)DKD3YA^DS>5|(TLIQ5HsT!TRwpSs9|anyDwDeh zp3*9J*|rh#Qlj&TeUVA#ILD&6K;Hw1tkgzb2S(`su4W}~t!&Rg+k?J&C0hQOqoh?j z`@@M{`uC*tjH|BajwhC)a&jJ5GK=yDk(uetA$Wu?c}gg>ca!ZtN}<6ElVC9$J(+L$em^`tbr zno)tilC)Yjuqp{<`=|OT{>sN0EsRKo7Rj+X;W3>FZ~#M~U9gbuK(SinI*1&?g3wB>sVOY{ zMr8dLz!5I-FfH0Hn7f6NmnO)+C?cd{;Wj&SuJ(Gp)!#NjQhw?1=30>U$lHI7GCNL5 z3(S7GeIa1vacg9p^LA+ra|vjdoU)kD!eN&SuKH+saTQ@8Ia2pnku}Jaul|FVErK3c2-jbG6}4MSF#)Ivq)eusm&Z ze@yX(yBM!BA-0Y8hceQTO3fb4d2EUT;movZ(DQDUGpU&I7hxi6oWKryI??4sG0Iiq zupl+lig4_jxbuD`k;bG30lwsxeQj<5Ibj^;gXi>ftVsSvwy%UkmJaQuY36}i-2N6v z-nF~>VNnykL*CW!l{=ry2at{UI|~Vs_0A(WWnX_PFjn9jDP1iOxuOlXjCy-1wv*vx zJCf8i*X+m81^|R3;sp+aotbpZcG73|O2vm%h^x||WKq^`V zJc}c8cTSdM-3Lncj69c6znX`DY;zM(CdPg{W<9>|f>Q(IA!RxWjRbdc-? zbUfT;7Gp%t&MVsb%!$-ywN*o?QDp2hjx^EpW=6eu~JF5AzU=NP@5-E61U@^&M136=|3NmpcS}z7TqC*#6t> zozJNA^tx%gjBz3cVu2C)psT3 zn5H^CtGMp%>aUiMS7pmq@M$Dm7v7*$OOwF{ET=5kt`|`3IHRLTq$x7H=bq+R&5O zS#{UZ|4DFJ!qUTXWAPL`)Vg@%I{#d7?zrZbJ8V4H+?(uqG1p}P?7bOpsu+k7GU2(h zyco|PwEuOz*~$82cirD$rX|SMuo6%Etn$mXNoMPWk+$f*d)x%eGv|bOj`EdyT&C?N zql!_-aLy>+{U-aS|AVLF>BWpYjObJ-xKAE&NlVu|#g3plPyHaM>A>|>zr=={gjXCI zuX7@h)^1895Pzg?4@c4dzMV{O?eD;u$m4C+QJ}!cj|N75>+5W)MiN*7C8v&3R-RBJ z!5L;R}E%ffdJ!8DORMJ<-yy&LFecIx-q z%VR1u)|7Yb(Pll`*?OQk86-St((^3s`f$8lxvWogH!A{D-C0$&sQ}HMrF6~^wdg#Z zrRyZOq|4gwVyFB#ZoMy78A$njYU%Xgany)|lHKG2eOF;JsL$8WcP;svtcIL8Uih2Z zrb!HLIqIEK`Z8%V^>d&r4#~p78aJ+vTWIW5d28Z~n^lOV3EIeSa8V^vr75E2hV%Khl zBpJ@%jlC``i#9oKvzTbVx+M zNnH7#_fGQJt5s3*_TJH|FShDp);UL*heA1%8X1)?_Pk3+lk)6*f+k6r3y}4QUKQNJ za`2zujA=LPaXZ1|^?0^gx8r4xW)Lxq&IDjlR7=gOu3e%c+e-z(d2l7_E|f=3(v!c@ zhgcWrL_@y6%E0$F{ny#X#E%N)E%-T_PYA0?vKlbgEf$)T-~1AqdbdEvW^jfpO?uOt zUq0AJnJM&E1ZPnRhZUlTpV3D8A!L)2!$KJzlfLYBS&Q`UHIvk?ISwnkZp(eFpoXRf zHYGyrJNQjrs;L^2Y1S$cRxpnGr(1099k#VZQJ7|#*`40)cg;B|sYah;)PN=7vGm#W z)Rul~sJRe$y{b1VrUZw7q^#FerC*V^8)1HZdX@*2bEUUyUN%kmprYGe>HHbK(czVg zob*1DsK=I|Bl9mn753XTDe)#bg=OI(RV3P-j^_^=>acbT&P}8<%pIamQu<7KX%A*q%{KeTc;KHsx?%}DuW8X&8J|>!SLJ%> zGCjTM+9iTUz{fRcEv%Kce0H6SyIJ&?P7wu0Zwm{?DEdvKgaw9QIeFVH=PGX&=zR{E z*OquMnR}>T!BU!=%bJPt+6!xkmd$m}mavRn+p6{)!o^OVCa$Ub7obW%D_uR47>UA@b9cDaZo;J`+vs#jl3rctd@DsWC5$gsGSLie5g; zo=SI=Q$UqBS~Sse)^gefT`3?Nhg+noE8lX3g7mvTP9>$@TU4<7By=}D15>i)R?YbE zg_?>UL3mWg=_^Ln~iT9NIRjES_pR z^=J5tRP?RZljywr| zTl*LAO4!dmuGtZ5hu_mW{t}uxa;=+179sVJZ`1wls-k9ZqZGZrEf%*{%x>OQ_oPsL zYwOcRAycDy)jK*o%-f-h2s z&Pwx9f31C3i}J1#V3zyTpc7Y^I21V~fKcTsO#z9E`E5zGE?bBiP%YjTMI>nqHcGm; zBHEX8Kjc;|*B=x9c6V%H66AFGf)v3XPL~ceqI#q_)z8u4WxpivUY(qt(bo)|6)0;I zAMzQ-QFYU72=i?QCO(tX)%>PFVrB5RTVc*b2se=J|IAITIu4m#n#pUG)9Y_vw&o%Q7eX(| zEaZd-09%}cx#yS6jn53&d-EiAd=?<5T^^eYrZUnSkSn2&ZQXER?Q(D0rkkNn1BazH zg{H!sk7aJJP}L1J-aXFT1$WvAuke{ia|+4U@rDTs*Y&J;qv>{4^QU*`Q2&!Jt^S3< z<^GFesr_YWoc;Ait&g4Mm`k;jk!MT$xC?sF7_v$^-wt)f!~!3uM?%!Js3Hk%KZi_N_tkeCmkBmI2+k80hb7%oKbDUHo`a+jDDtNG zD)`^bLFz~*ks9lb$s&KFzI7d36%iV?HskCrC%GAC|Fi0EqUSvH@bL4Eb=K4p8(Tua zysqGiVPrBN;xW3kpZTh%BI+SS0ylqyur;5q8f8TwqiHcoLr-@fiN%gaph`)%&;L4o z-u2C-@t#2PNV%c9ew49d_BT&Ijc^SLIHjs41NW3rrRq%(a%nY^5Uqpx7iuEh4{<9^ z(gq2VfzjV)eeKJ3FI6X+&S9=;Us3K>lDsJGn+Hj8%fx6Z9C_vi-=x)*o1_hJ#D=9< zWF0O7i?x@t4>pC53aSpPFOzt3t|yiyS_) zQg^@j`bVhc;c?cjRCAuUj`^xjpm%Kcj8M*H>rkDB#&x1?z6L)grSHdXq|vAbHs4+* zC{*6EDpq=Ht!Ly>(w#4QG)d$npz;n%X<)tj<#LBg%ZFU|Y@O;Eyo!SbDBq9zHt~Qh z3N*cGGb6R8;0WTZi>U7{)$+KeOL4rd$oaF*YlP6{dDnf~GJcf!XpBwbH?o~pA8nTL zSyr%rmpnxK*aR8bJv2Q%LIYg@5#zPA3 zOI6Y2t5MVGCS$?L~WLBcMc1 zFNNgn4IHIRD?yIah4j_rozEbh`7_bb(5l;FLPM;J|N3zQIL}pSk}{t-t1YoLp-_Z*i)~Sg zj(pP8gm5TTXm`7Q{=f%SPzTDo7Ab&;G{aLZDJf0Mie6^q^R^NW^H;*Q=nixa^Recn zJ&4-J;(gept)1~qluY#Vv3DYbcV1w%vs8+`)sWu$AVd@5wd=cne>@Nol{Txhd5-=$ zP}bd{`r@)OmAV9C;A-#u&cRe&Oj0^@MS)p(A0DZ(vB*p{6&X`( zSKS>qD^WM{<`#~S4+uLLlV`I(@;^wHoPX4=)WmO}*j!T8Jk=kJHI4Y_mmQ2bL30~& z{x-<=kxb_Pz<{C^SR!L6-WwEY$WP@6^#}biCVCpJJCC0Iv09>%&NO4Nt$gocj3=b` zJhEHOfZ^87vq&eITm^S#@(L*$`TlG}wdXrIegOuU?Jvw05DooYO=nve+Q7fn?mEEJ zrG?r1s>>`H>Fa z+hqFX`*OE46l@z{QFvC8hg}nO+!|LKMI_5ZgS;jrTu`?`neQQ zRB*gy6U_PS#FaP5YxwGnJ&7h@Rr7;%a^Y?c_iL|!sN!Wg38Wc8A6;1^llOKy6sWNI;(Ytff$?P0AMUu-&Rvzl9AhQ~!R*g8P#EsRQInIoa9F~4O z3R~lnvLE>c`pOHwXHKDA^winFf3&on@^r+}t?9<eCm>A@wEoR5UPR&xM z3EJH&t3$u}PWwBX`jIY%{$s4ONB^-Q0y^ z0Y~GX5MY&HW_w5LM)j-u2ojsBHzE{X0^WZmM7Yf zlF)?GdzR}^@?*YOFV*wja%8a@CogsBvNsI-t-<`0%h*R{&y3Tj{#@d+(K=mr%A_4t z70PIeVFWBHh8@9&!b`+~G|CUl|7@M`u1?PrlEERxOiL4U$6kE`-xk(8Cyx@SwxfSE z+IKzdm3jvb?Du82A%cf}OErmT!tpjV-(D?Re$_=yt132h=(ox4fDhx?xc11KIC}Y# zwHyV`{OG;^@o9Rsx`=;pm|5x;BvDM#JRlJN1HwS?)!Ywe<>S!M*d{Jf0!dbdH~ zi5RGg9kbhRI_L#f38EkC+C|EAiyz1IYVgk1O~@;7_ex*< z@x-*lAhGQxD(bhMr#~4gCTiT6AN7N;b{?f4#t|>mjMkY(AfF+`k(JbK(*%V3qCGXV zf~w~HAtbC3Smp}^CI1NhA_&ZlJ)ioZST~);0kBd(OsT3CGlL!aF5oSK&Hn;Kd)k*V zLKqY_V0qv{-1(-HTFJ8TlwBpYmGMRPKnHb$N)GX#MmA;`gx#(W(D_M#D&pF?eyNWv)UPHa^{{pVuCp3RMyGc~! zds|o3$o$M6Iq?0Rp4rKLU}*gI8!0t5#Xl`p-Ok&}z(H#BthBohQw!O>zT=<5u;kSW z5w%m=bLpuQ^2}TCg>*-Ny6q-uw)9!Seu_0JiH)}pf3vYiF6CUdG-){ZgElo(R-HNe zIIed65@dYKss3OVgXB}m&rJ!AB$|GV7XD1C@OZ}dY=AF&29RzgE(|Yvg{W}#QQ{Jy zql!ivDtD~9*OmLU;hN^kl>gOTLRfgT5#+pO^meX(dvH1TtK6}k?zmlbLDfiIUAxQX zYax+URBD>V-}nXb=a)lBuW}eOvmzsW?!ps$c<{f18}mZC{2hOE8g*S*PaRm(2Daq^ zM^mK#DOu)~IEC?99=UN!xrA)^dyeC3+zQo_jvLrTx5-El!K}=D9LoE+)buz=Ri_S& zb0WqF3+gnI<`6oG(L43m}@-fFWSA<#(C34GWt+tSF`Q` z+f<@YHdEa8cKdq$N}aJs&_LifjyC!=mCI*!LT$+gw~NaqFH@d`xuQqI2AWH8ha$cj zyp}JYLIU`H3uF%zuH*2^_(*EvWk8u8%X+s3qgwPKHK!Y&tXG{S^A74ohGAZcTP-rR zjx-IHr8xmLOXMhfIuVppIb#lSmub0dym*+P-3^dYTLrJWFN-F3T?vtxq*}TYqbV~R z8$k%AEXop232EVz3Qxi!cd4h=iBlyK@nz?O*&e7|l8-@TD$ecuoZIj}n&;?O>nW_c z40>j+O$ihj%hD#z+(WLWwt_+btaU{f*;%F!C<(%!$%}^%!`j3cr z+Yt}(Vx8nBC(Yu4*3>R#wevF$`fd|>y{%41kzS_#c2}nanHFMc>i0LxLH7>22ckNo z)2vW;YvF`@rUb zA;R1G3Awz%WxV*?5+}+vV;9BA4DtiPP9GLdaEl;qb*FfP7}fcCAEUc=lQf*YeljU8qS-)Xm3^k7X|`Mkwu^*!e!7(l ztLo-=00ky#UZ5*c3G<|@z~Z_)(oME_M5m7LrL_kuR($O_A!eg+&dwy&Mc&RUcrCVP zr9(`bwV^y4*e3+5q+3hca?@PL>|HmS2+AB+MsZ}a;XIeJZiLmy6sRPbs;E=~ri;iF z5N36zk`>Mlcimde@=6vqcI3EgAHBWTSseKbKv*z5-Y{SXt&_8T@p(9Gj}* zilLizI_6QrFm>Vm(oDEDOmoweKkTyr>@`p}u<7}-HuP-&uFe++=g&+da4$xrobOyP zi1w}H`di0pLpfNwYXo&-N?vWyC6UX_UM{!Yw9C9^JNq`#l8}G+q=RKEO z$ZEha+v#am7ygb+#sCsGtLEnI`J^mp@dmv2`$_c{m z{8~JpeO~OgDAcFYH$H)B_xJ}VTTqT==TH4wD@wU{%f!1Jvo2-*iUk~smM3`?kl>v& zMYib9D^0rqCl&B&Dw#Sa)`%CB6I)BQgK6qaRn290o)t`(65p_!Gn>mdq~-#Scny;d3aaT4`a=^wW6_<5$9jda@7pSVbX zN&630yYejp{pD(sjTNLFNhK~*V^q!jeBB@5z87<|BDTNgEDElFi69D!h0-5nBA=rT zzDCz1|JWI@5nhv2z7!sTGrMxvIOBnSEj149_15_I3%{J%jxl>V_pZH_r^m~*e;xsy zO%u&Q;RhpYF-1y4ZZQKTI z;+Wyl&WwlAw0~W%F(lr^4R{Cg?MTNs?DoQsNIo+YkfXPAg2qOKZ_#HP#nMVT_impj?JSeimiFTzA2=B#lAZJkwjy z+20VT(XYLEqsKFa*ejm?lK92$)6hDrh@Tt(Dh{DaS+k>$c)a&n?|Gl#-uz&ZJJLHn zhd%1c-uaF0qdXqd&d+Naf+Cu$&)csx1Jtu*t+QaSeBO|1&SQ|ZUt!0Tdxz(vV^yn1 zSaX5ttDo`iF>LR=U@B%k4~h%=?YZ_miiJgi`DCVq7v8U&0wtN8^$A@rRY z8hZr6yAUE7H2Dh!cXopWg9I*R1?((-Gv@mk$xdq}afL5(8TBj3siP!ipD{mFoRzlw zOEXJVfZ6zKvaz%2)5ac~lX!K1dot-z&X)5M#jP;2g9Q^K<{LiFB~{#tn(dd2L4}2&zBadOkqa0_SO++VwXi*U;uWQ7ux3e9^P_Y>T(T zDED!AgDI_(z0SAQb>7Lnm@kXqHTs%m6o!DU)uwL5A5^WObv+gEJoQb=>;=l#LzGp} z|2!L@9gC50e&!2siXugu<2e8o&{J*KR5)z0F99IV&ac5S62?2sU^!O_u8G42jvDX} zE~VZ|i&BGz-!Z3-c}vA}X z+l=o4b8w?~tD(+{$ zstus$rYi>Y#^$}D%%uxF3mYjFR28wM#vZNj)lysd$rLIj#&#!dLN%GpkUBs5D^KnP zEm7>FL;k&g#NQ)x>kGl@PZ^I+54C;OY>;B==+b;CPBgF4<)l2)Oq#vl9B>MQgA&(i zaI$5!n6@*VL0Fs%8f8Y3LRCEdF11qDYqMM;oAP&{>4>(#o6_OcX3CoC{+CV?!-R9*9hW&vmhJ zD1g`n$*zaYeIP>AEq|7EShUt*R0Oo^2_2dv`&SuO;fPGr<;V8=Cf}?E^-#C z8$==YBnSz&@Y-cznC5&3j5x!+QY~S;V95*%Wy=tF3}l~4`I++LX5zETs7PEa8>Je{1%OgwB_ z#F`|&*ksC?G2ng{k#@(|Q;}wxP6Y|A)9!=C`6Q;*A?c5U-u9?7NuEsCp$pfmDY^XihrWV;}GD=Ezy=IKq)xK+?&@H;H zIPKd+ZwnVdjf*{~3!9dHMZKB&j4z^C>19Him()5b*@I^E#_;ZH9ev@*ln|GT#Xwql zo<(a9-e3@SyfA(0gqsUorYJ_^j8PB=kfmr4aF2cp{H(-pMjuEL{mM}%?=)aFO_fCL zCT~7lcj`dQN=K(Ry5ygu3cMSvnslCh@3+KyD1bg=9ycINX#x^M>;&m`*W zy~l+Eqdy`g{3s+qupN|JL_(i6bX8xogu$V=1E&XB_NhymSE=zDyXpZDsaEDRcDCvg z?=o%N5zQj|Xf@w)P^TFrBOh5MEBdEOQ;6mm3+!P7MP52}Q2Z_|Vm4|zugtG1b88r< zq;Q{8P^e}(33RfB%BAn2egH{gsQzS}UixZnxV5=@u6;33U7%btMBe%B@k3aUo;r9G`}KUHvlE0_N7Tb; z<}Ks&pmEkd2L~yK?_U5`iM=Ftbk}5xVOv4ojUrc5mFv@o*P@E9eL_k&+{Lb*j+<0N zS5DmFNT2HE(#@o8M;CN{@MWQVs*%$DK4@udecIV_fgB(*B`%w^gNtARX^$^ zE7H>FIO#aeW)9ER7I!HXMt}XH(ZTFxy5iHJhX* zClNHJVl}hbpD=3m*57!zvT2nNn`6nqBY-TX{Za>%4h1wAKw+!-C~@huvjheJLJFp z7^aiTAI;efh6}}S6c|z;>2x$eGm2Q49eXujC9~l8`bUP}j5fwgmocXr9Mvl zyR;~{-NogAp}x84vq;lYza=9U{oV2s716}`m5`)N?-1=u;|(eq)Nho#1qzSIow|w4 zR7;fYYeTq}!vu|$^=MhTZ9W7>1=};zyhAQ~`DxDxm2j^zrUvfPGSkmrMWbf3lmVa& zJZ=0TLXA`fGz)14U3~N9O$ZNV5H~2U0_xkNEazTu%o(S0>75zJf1M=^#3?M5{P_J0 z3r~e0ijvTw+tJ7J{CI~~?%E=WXX!oMZCbkd+iCDCRfeEdY5sWi2aDk0jaX>e*ll52 zwwkA&<_#!7$d1$-hz-MPu@W_-lI}|rs}KzfNOZFX-YWqYDi%7pu6hY2$T~4uvN>?m zbk|Q-?X>o(_B=<^y;GU&nU0CM(3Gwt*=hkwtm19@eGW=4g1)U)AEZlkb?%-VwZ1fC zIT>=U9L$kgO(N2Wbvm~y;s|TPN!@V26cWT}5QLng5};T24XQu&oJ-w2%jKc)1&!VB z%VHx){E85p+)soUs>SuG)WL$}B<(smA8NwkRSA_f`i!kamC4nL%Y0-@(^(EZTQMd2 zMK$RD_wC`Q6}|#WF>ZF@wp_S2jSo3>dJTCm--C@*jj4(6-6yec|XgX5PZlGNbCst1fn;_#BH!*p{c)stq8F z(~_a_7hhmmnc`9?r4s+r@MZMlo*^qz7)fB7oXZz8C$8f{s1aw9$Sxai437hHMP6Jt zLMe&fQ{ER4ds&DX#-XJBRSrWV3ml4?@IL3c0kcV2@wY)nr6qNsaG{8eYiE&p;5*k1 zcz)h>*RwwZ2V`3$70=63XsYSxee&s&QzcP*uZuYRsq#R2f4`kOPq*}eaV)DJs79-O z6o{hR&Av$5Alyu_6Ezp9gYy2d#jC%UfD~DqnGzOjiDonas37Ryl$wjyj`|M&PM^9&zgQb%7dB53-jLG#qD;le{vZ7EPo2AuaigoV3Jt{ z3zZc`32e?(_w@IXn!l1jIB|F>Wt^n=2@hhhV&Y#uv*htn+F-s}gAN$0`Qtl=$DcUW z+?^zNaqYduW76otJ)o+R>rzguQNf+ii|{z$Sn@V?lBb~1;&Zn5bnb`xcH#SJ3{Jc9 z>LyUH9GE&DNwUW>L~aR)ED?o99mB!JwliKD(P(nhNWkQax;@Q2YjTQ_p`rDbHWaC< zfiKhwL3B)dHeU*MF~7LU(@&rD*|(N|tha1$AB)l}+cGQ^EI=^?`%Lr#6VMO7K^;?Q zVo!QnBOS#IG}D_)W>hNE9g?&b;b*Y|WsC|KN{XKLJlBLwH^!xj2Y@x$!AXC80X)vmza2UJz4TejBZ_GkUfx(VW;I|N+3JDdjfsp+*!>d#_A?FQIBv*by2T|b>e-wcH^<@ zBv)dOqa?80;RourFjZVv$MTlk^(ucdEwAR>8N<0o$YdOp8?3vhYg2+@M^d#teAo^~^b6)xPI6a}{>A4P{Mt#QPWU)8~9vJhOP;4Bu|8iQjS zetB&?d^{owUGJxGTLN2W3Yn@QlJgHY`%mwb)THIMAhJfSp5pUHruM={BM>LB2OUHe zus&u!+03P`v}-h%jk3Y9*4|S=uq$&VF@Mz)bwE;}MycYBi4WllKbWRvxAGhSANSf8 zn2^)tyS@=DGVxxUI&$3?nDd+|R{8>OzD1&O3tN>-d@4q#);r8IMTmTUZ-pdSpxd*k zhd~q?S(StF)iB*j+$prTIvnX@;5zv)0R9;%ty;d}_DkYu*2^;E!2H=GklFwr=0Nxa#PRdpR#2UA z(KCnaU%+wJ3`%W4$TE#N?gWzsVN0h0loE4vQ)Y0+wl8}Tu6N>LZeIjVj~C@UDpe1U zxacluHqJA`FBUz_n_omJ`)15uC5BbRC^lAt zi^9S=0NGo`p+;lMxrIL*KHcj~LwD7PjYrX&!L};2C~@E-sJAC;l}BI?9kGWd73VP8 z1}n&6wi}Oj3rxm znKOfbYAmqqt3VnnDJvDkYSqL`d)gYR0e1 z-R6j)qUH*>RV(@;#7vT|fc2yjRg}gO1GkS`Lj0c^gTTYCGJK3zVft0X^3&LeS*_pV ziBsa3v)arySh5M|6lUp#nW9~oz9^K?z5XBYSaiMhQ1E#D$z%S zxZr`%RpOE^)nO)}G0BbQPI|)B@+8O4?6r?}wXChBZHp1*h|S=x26NsSlQk>t(-fah zZ2zh>9);(uE5BuwT8=ND?_B7``^HCI!KQ(?s1G~UdKL3ra#NOqy}J@qwhDr@@faj9 zkC7lQFJ0I=w;$e67<9A;2HSO*01}jGwVw2D>(lv+T3x4}ufpV*7q`A@ zk40~Oz0+ie1ONk{KCd=8cn%1U+->>zAgXdzE1Qp)0N#*y^3W-eM0Cgr)5BuKdxdAE zhbHYpkDjzQ<#(3iq_#*lW1#G00$L}Kn&p&loYookX5YRWS~%OMIhzI9B5;Rl#!;{m z=PsjldC#DY*DLS1u9D25@fw+A_;oR!i_ZI1mhb2{Pv~QR^k*i%;v$w=CylV~&?(ZZ zxrz1obj&rM!G_OL(~5S>vFM5?-j)_}Hg zd|{tD`PJM@SE_|kjYcX;Alv7S+x(zUV!<Z{;{9=GH zlXS_s=1?978z-2neKt`O`&#fg!}Zq!Mgc09{k3 z(rMtPF1g9Kv(_z`@txETE_uheg~T}As<*3C8i0XL#NA*#oH@szFv$L?cBBD~Zle_Y zUBN=yyT+gHIJ7jp#$^W@h2saJlH6KI70GL+`h)YV&e9`+L+2cuWbx;f#E9iIzV6_? z%Uk5JYm>WVRV71SmsLr`qw>*3rKA`wBL~^4TBcNf+AJ7b?Nw{%1yzau$}ebvO)HH0 zT?F~Xz?8=WlpMs7fiMR8i7eQ1Y4PTZ?W>I85BQ!%D*0*zC1Cc#3^SH=JtESEB^Ysu zD|M=w_4HZeG%aT-1gDdNEQT8oDy7(xC?<8PJu^8=2kslXLFYU~rqm-4;@mcUjw!hd z#DW{ZlJ+;0k3tB(-gHqp*uNSme4+1;FZ9f9;g5No1+QM%{0#qOJ}@0V2yrPNggsG; zY{I3(rhI=#b6TaN~OvB_v)2ltXu+JAt)=!UpSujhF6J z-?1R@%#iVqL}4GWox2x?7N_Bw%V!_*QOdliUbT~_!#NadYcAv~XT1y64p;X3iXT7p zmYvE5lv8;7j>T9GM$5LAE)uaUK@}-GP9A6%6Gk$l(9?T?oQvH^&N%p1gn)#pC~RrZ z16~h)E0vgxQe+Bq3nfYx0{tsIsNoCequVFV$osGX1(w3 z15?@9!gBXb2IO3x0mX`TQPBro{ekhUw(|p*>+=j3OskJ-9Bhh`FtZ>}WvEbp!^!^b zbv5kUR1!Zm6%~_6vi{|w0a6J;Mj^pXt;ehowb&!5i;r?@^Jd1)c3-r>VraxT2}Icr z*tn?Fb>kX{pP=+Evz-su+eEqS%V2I`KxNM`!x4!sQL5@bi_J!ZOWFi(WdUGaqDyLXz$uy?+Jzh@ zK%(cc@}0M1Xk5>V{~&mST!dAeSglx=(A8tD7Yei%1xvkpVSf~A|NOHD6_Z~JBHfR# zZc^GJ$Z1X5m{EE7Ow^ObM0<#FWn@{w0B?*jisP(=+=~lF}?goC(%!so}BNA zvc2!P?H#6nO4A&6& zxUGfv^|;Rh;Zgx#xKxLZ_HLB0I2Af}9i#zdjs6)6$@4Poh@28;Q%P?|C~GSE1aW=P z-#H;asrE_7L+>K;6LZhh3%!-)JL@j-+OcVE=c{4njR>W;_$OJ(J<6y(&qc3rCecV$ zp&s{#b^xb!r{iWrX0EUicm0p}YI8{s@v>Wfzmb2VJBH1(Y=s+LM;mA^JRaV9`h@ap98Rt$@ zt{`7=%vm*?5}2J#Lz-Fedf*I;Gh$J(mw8dL1`|#6@#Uv2rOq&I_EnOGC|=RA^^^ry z#|Olyu1Brut868!dO_(eYfZO>KX2AT{{qev|1SW0K!m@O=!$-44@H36x{K~ECp6a( zW??>~o^QCeH_GMw+qi-Z=CK_SGUQWQ=xNZ|Lr#sc17E6^?>-RQcw?8q*3J;$GHV<2 zd#8qoLBttSsnj7&*DbLuP=vUNOr%VMDY#os%1m8ig0)85if(9mx?NS*)dUTbk8Rgd znK**JfgF)2mZg~TxkRd{Qd8ZXxCXW-8*BPU*nu!@t}Z9J9S>>_`1 zoD?14pj#c({0l92Hgd)6nrIU*adG|Ao3prx>J!_A(YdaN2@*OY-h+Obcq4OM&}qf` z=&NDGMTyE(ZU!6`T9nLTY;J4eOGKWbJ%visB-S|OxGym%7L3njH1Oj6kcR^TRd(P2 zEmMuwyO`kKZ1jXGON@+#te$L|h8!1F45FuX7UF-RbEQIsX;xC5bl6xYuk5&X%{`IP z0)v*vA@^xT&vW}K%skZ%&WYi|JEHRdXcJ!{d<3pq1r058ZvB&Oj<= z&Ms-mKD(UIESfHzya`|n%S$xm(423&ZlyJ)?t~Z`*hHd2mi9w3iH&PUY z0*aGheU`<=YmUB#Q>*h2_e87X{JGDvuE%j)?odCd!YrdVdyln`qA@#-N4Nl8l5I1C z5f)7xj&b%*n8VBM-4+p=B?n>1_(&sgJEST2)4EC%qQvwdNkSzTjnc0x8CXURdvs1^ zJM~7MCIZv#xCqfWp^^06Rql}9fCU2pGwht{D<-K!R8UmFYjVD&67Afo+p!{0!bVp{ ze=pHG6d?#Qeu}N$N^_176|9NA z?3$z|VVk2@vJY`tLER-u+|b-8HZySa3B#lx(KsPV@i0~d)*tXHG}(&g>9m^GWSu0` zB;{cV+c_^|V@dW^c2?oU(TA3E+}_!$55WHbCMQLeO3ol){{XnuURE>WZW~!Z`Yks~ z)k?#-6n-G^2PoBI(5oojPA1^{CpHA(Mx9Gp0QpRPYcI5im}rl9PR1J~>u4GJs)rM& zbuj{Aa7@Wgb|(_E)oZxqu*~ifOeZr41GUuIYq;;e{wH##O2YRl6rNp@Yfc=NHiyLX zD$b)L6a6o!Rkog2Fgq3e$DmRNUBUGj>pBl)T_$&cr*tk4+_m$WAvv+G{9Lio1W;3B zxFUWv#_=10M7LDnso~TtX4$W`uza_aDmlRAg>eA+f@6jo2E_jAty{UU?<^+L1|*+I zM`!au<;*5Iz%{*A(P6o*v6NyJ)TtBMJ4LaHt?a7~e#qZ6cTa-*qqsm63kRyC^NI$l zh&Z&&j zh(Id@9Gck&xAL4DA!qbkAcA|XqNh3RQI*YwI#u@%P1oE&K-pPrv|1a+dBO%r)!Ltm z8~)Rm(LZLZUbZLl${RH{NEfi4>xAON$#>i8s=Uiv86xgjc9~rPX(`W<5ekJc^JMFC z0WLDI;KliZcQd+u-tWA?;09i9>Zxd^*tv5=`Y64xx>n7Eh>OqYqUYClDWnA7^;H^0 zLugdXOg9M~!h*1)@oI2HMtby7W4=_TxXyc;NHP=77@Ss-zKPIF-{Z_N-raLj-(Rh3xc)Q`+} zHwFWH^iFiVPL{HqPp}aMP3=DE$Y!ZC6$>*{GVkN!LZWGj#nC>T#1WErB?F0weAl{Z$c&MpY{@_RUn0o@wIiMP+^7 z$VXIM7BY!FRFk`BX~qoXgtD7ktS(AtoU~n3tFwR|i#9uNSSj*zKWyT2@L_x{RgV3@aMVLQ)OT`TXgPl)MQhGIdIQ?#D!=^I`4&PL;y0n zsk6C}eE$G$zA+0Ea6|>CfGh_L=!2fjiW^+OdqgMEBnPla>AH~v)+~U0NhQci9vlZYzM<$#;XPJ1JCR*9LWH=0unN&;mRKharA$fsn!UB`4RE|nKn`IDk- zwn{E8odRuRY?jdIx4NkQQmR*H2$tk9fu+-$9Zk=~Z<+oVJ0RRnOJ!&;Ws0N}bSvMW{(k0j+Q@wsuXUN!d;2$>QV#H&nsH z%@w*s+8IoEq($*GWbaaJ=qv_MeaEzO&C{|@UG`VpYx4NiHoJ*F@>=h*m zIInF~fYJwBo~rS?jr}R+T_)-Y1g1PN$P;aT9IK|#uJIw3_Ea`@y2Xyj-y{^GpeP&8 z;IFv5aU10mI$cRuTRX^}Z53*={$7h77OKuO38WU{*AMKm;(Thhkpw5f+}x!$6Yg$T zp;$tq_$arKo{I)jo5P0>5_ObmGqu)bv)4G=AhqMBj3T?UAh)&|_Ct)A{9vOFqhAu6S8 zdG5N44f>*)Vw&k}XhJLr!|!EBIrUWmo$|3Bs&_Cc7#gY3alp2xRPwA_L)zg4`gTs) zoY5przKN_ZHq{)}*A3S0B?bZj1DaD>T23#NVm_;vhG$H-v^x-m<|OKfZV}DwrFHtD zQSlO`0$`4+H!=8K*ryg2jR-%Y94ws&p#=mcGg3o@W{b-y0g1Sai-~KyDLqc}zY$a6 zy3SCIRkvxquXA!JON_n#l3^W`mhzB#rtEGlxrJ4smKRPckS(J3&tz^uvR3wx_iw)yF!UAid2~{zdKutQ77sY|eOPud@R-0aVt4B}yL{@!9QhzBEa;nl`rq4Gc zIxb(B_gOmHAw=-;l-$v+QK7-M2Xy!>t-nOqmYX7E?;j4z4&l0TQhZEnPtOR{qc&ox zv}b@}oYftv*qSijeGzBfxz1}_(+QO41U7kYC%c9;oXUO?m(>vjrvoU$i$?Ldl+dXe z3b8nYdH}dw;AoGfk#{UdfwF|kqS9TWrY9w|Hw_OmsOLB~PD-bldnQyPpq*2;npE*N zoxvH6O0QFj`G~ekp3_x?^JXIImd}23E}J*|t{HP7t-}W+^CH*sGol8Q7;${Z(%qBZ zUgBX7GCQSC`1o5jI&T#*XB?y8O3TxH6^Fqd01>j;TaN;P zbE&kuQPn>SXgBV|TuhB2RjTJYhcP-PldtKk!R-``1(o<+O$KH>j zRd!eodmYFXEu#Zq4rPOAdHdc*4A&Bvmo=u`q#MXNs1JFIc1A**Zjh(2M9%5oW$2q{ zBXYPd)9Ks6pN9Vc2xb$a+wPc77aUP*r_1uE?g6@Kf_=g@>KHO-s;N=6DdLDC-m3*i zf6bA^P~A>=KFd`K$iJXcrAow@(_ooqupvdbi=Wr3+Jr#)e_hv6)dGT@76L+OeAzOc zOeJvG>^R*4Sa8KQFb90mC*3lgK-wrRa4SsO5ca$NR+{|1)*i=lSw7-HDs1u6F5CX(ypH)~k zM`i4Z+z`zOE?|vScnnmWH3@~h2~V6J=+*l>LvnO!sa##Bg@`!ia7VS571+A^tVTcWk#Fc>nBqzr!pg5LF{lYPja+o}Lbu+)@?s^J`|MKa+!|7dzm@++})mDA=ZhWiSESj zE><4MEcXHh08kpDvTpwXebluus_iu$L^e&q#b|G`rW(p_mbVL{*~}v5FasTMgZ!fB zJd)z9py(D7q7;>E3I0*K_&`*sKZg$PVH$X2Eg%J6t_I+zcOGZL!^w+qY{zv{o&o(` z6PZE2T7dU93ZdpV`Ya=dG1UR$iz9%;T0i@0xDLQwpz#R2jKYNAJPZ=xH_DyX-aK|h zDBc?;(zsPW_~Oc*$xt8l1g=(@#&D;JsVUKo-=YCJIC1nuLb*{YEt(Ar3sp>&AtOCi zZI=LUy>F>lB*!i-TPuZG?lvqpPeNiszgdm05h?b%S)W8s{ zK6#AHkD{wyeqoeZeWMFVYhW13Rjl_ht$^0%0;5E}q-LpbxXuxa2m{z=Q_IDk-eej} zNzi`%77(;RcpBLm6jPTNj06E-Kt`;v2~2J$0EmwV$~`wYkAaA*d>bouR_?HfL9_D! zo3qO`#fXl|r93&c!0V_~nBeO>{#8n^7$xFh>8cp2znJE!xs9Y)*Ap?KsfQ4SRlMHI z1V>(oA|+HMwpoP>RRvO__SLwieNUA(r{2K4byaq!xbsDivZu5>;T)v?Zr#GGvWFY}`LU2%y;aYXlj)!LgH?s7u^j znAoNq=N8!E9T&>0QZ(>_f8jSH{?zT(jFU}Q9#N)2Oap80x&*X?DC>U%N+|qUY#Uul zIqr?Z6z(pV>=P>%#99?k`hy(b^sm)EtDNagr&aPr?wPQ>pEO;4p0z)ipJi6$a;lP< za+of#iz@e2TO^`GQ&s@0Z1w6fj>dZg%q-$Ic58*wH)Vvg;R4x&Y>EG&XQIlrON$PBMefQV5g_=rAWSS z5t&S*!@uMJ0o_#Euz~X(Q{x++ZrsWK6$s+f8es&W9@?8fNF@IN2s7?m8Z>=eQ|N}a zNtyjsM|R8WzX?DgN!YNbIoT4Va>4dl_=1`I5ph7m5bGZX7Dt&kf%9V?i(;+H;1Boy z$)Ux}bDKVi;rO{cs2xiIIx5lmZkbHt$z7mX85h7)^azc^(Nm_v$2!0TQ-gmtpZ@?| zQ;T$MwYNfVbr@U!0M_dRoa%KSQEJ1jZ!fS_E@ z(Hf>#9ni4=#0-OTf%pNC*TKIpt)3y!@A+TTnP(gcGfBemJC0l{{U6EUId~kQglEqvUL$B zn8J4gnIp~YxPauvOPZs3VK|d3Ma+fBM;;Q`r63MT{nP8>fE$E?0TCb1WF@8DP!^rSHncXaB$bE zr&ZL+JyE$$X>))XlqfhjhXsw;T-c7wx^@w-s&ABwCp?z1zmzE@$;G&J#XiuPhXJ0b z*#@}s#!2+~X8jM~=rxaV2c?svPl8PDf~7XSO91FwHB$wp?RUM^5ZnOA)l|b$qHo%< z0m2^W?8Lg|t@U4Js^OMhlW4u1=eluJz`0th=ABZR7{BgEvVJFPlH$0w36QDN5B(H| z^Ao4)nIGyfrLlkEyRpkkl8q}iuXhKD*t z0-KETHG!w*gZUrpQz3BmbMLQY+BllhP7&2L&S)_gbV8*{rBi&aq12_M2_y7a zi30g#f{zP#IWmYhDyl1DsMc)~e<@Y#Vso(Bu^X5x0vyn1LYg#t&*maJD!WbE`fxKB zPOVa-0Nn_Gg;J*KufsYjbogu|QWaimr1n?8Z2Km+mYBnNy4pK`w5K_+PbtLXX;rF+ z;p{&Fp6T(yi9rB;9kG^8qf_BpW0O!I;IVz3@qmNRf!wIRVQ<8w?Rf;|eFNz{y@&Z$j z9qz)@9eXDRiz4s37QbD@+ckwycx4B>6dC<8PY-i>h8=tRr#}`Jw=d;#@F}neE+YMU zrkWg6%^3@=vjzfUNxs;qs@_dki>6=uiU96csTgLaz;^oti2U-A0}| zk=p)?g8U=oV}yDtTP+4doYOiqt*S8)G%75oC5hcuD4yzS;fXN>tdRqBEYw>+2n9#r zWmy)fQdXPV0-Qo3!=em0;j(XKQ|%ygKNbBJ%5BT0vRny-eNJlx$S zQNs3v^$MZH^M+t`SX?P{J)x%eRhvLK$u5qT2saRr(9qx2G`L%+gyvzHZSu0G5aic2 zth4=*sMvf9omCMI55*F{wHoQw17Lb_R)!f6SNKz-V!FjSOamcRHx`Se;SfqcUbw+F565lCmcgY!?CI zBoQg}xdZyQ2#@Jb4aDd+@8BLL+(Hq;e_3n=T7lxgY9E0PLEVvKPF+-Acum99j*6Ws zlOhlQ0AwpY%?)_>R0ht$h&sg=IMni@J6SuG&4zXMRhG<78!C>&ieRUgRBMZ_Q2+=* z)UdQfgQ_ny6mz+k|#L+7AG|3vX?@2Q0sz3DvcEwFiCer z11Saq?qg^IRYnI4-5-=G4KcxXF8L!*X(T@>%E`sU20DZr`E*q%*`c>~vZ_>LTp`(J znCvCQ=DD6rf^Ao@-z`FIn&Q(sG<6A^HFtc8^s2PMrcZ`B61jK!!Q zx{&eCGC$;_hm6AV0;wk(zpM9Hn~L)Z(qML3X}yt%BboK^Y@p(C=oMeQV>P~U{%W3B z>VMUgEqB5A1K`H;8w-_v*=$B1QlDD0Pez>vN{L~eEh&@BnYL?|qi}%^SPLq7e6ym) z(BkO6ij_PVD%3d~-Q8^zsy;X-XD~l-`FlKc3st7csNJytJQ1Yi&zqya;0Wf zFq@cPD%x^Xws+Jv%c{XmfVcv1UlvOoxMGXC-Imi`j6c;mbqVe+{=o{Ik@Q}70h_ew zp1{lv`lCtCmwganrrYT_zKX2BY7HmMW9YVNsNXZEi7=WE6BZyN6Or}s9~~zayV*9N z;xjTDNkx{&d!M3w<1(Xjyo}Co;DajBnmd~4p8MedRCZVldv!kP$EmhgQP0LMic6dcD1;1hEKn`skObqp@91SWZj;t-7kEA znZT!{o8MH|?A$Ujfh~nm^xc81A|pPw{goGn-_jH7%cl+$+zz85$KOR%{O-Tzg^acw z(PP(pT26`p&gl9kDtWJ!Z3TUzsB1*V6|*}Vn%p+m+Ul;<(Dw$m0VaPp)fPNVw+z_( ztRoYKD1;i}{3bt!+4qr}to%;TRY~Afr;ExB!gkchaV_#d_flP z`}i4xqq&BESw@{65HmiVbwm-K>E-hK@0B~6trDT9vcX||@qwe&6(&?sM!a(=vNkloH1u8y}ZkTMDn}l%>Muj>^nPO z`ITmdi2@Z`k9h<(-Bl)Ha5Aav%s5PjnUSog42f_zzxG=o9KiGogH5c-3Q+_;F$qs) zS8+MJ!RV>YM>UVPME#zlK3jEINYmYMtf#Ul1kBO$s=21psZwyqx@8vAV1Nf#dM7@C zdGmkeRjWnapm zQmJXuQQ4|eJg+Few>ih6eNCmH$;@nM{<{r+HOHveFd8 zY8>QQ;ue7 zZN-JA@D-3Mn6XWnvUuf9dqqh<;Z^GsQ_KjFK8gENI8I=gB&vHs6!}07>Zvr=dGthK z*>-lHmFa=h6!>0rBu3@ux1~us(W29$l+hM zUqw=*oK~r{UoDZE4W)<&A74~3-C^XP)p1_dfYSp$>t5#Q$65Um@K9q;Gkm7q6u6GS z&(%Hh*!b|H!zD^2o#RbaV$(=Hvz&S%Rn1MSkrh`Dza>=is)^oOV?&xbra8@Yg|qO+%Tjq{$5pjgFZoUU zwu>XVwGB513lOVup2{Kbi*t6B7b}U#8-#y!z~?*xnM`S^^pdE$lUqti{{U89>@1$@ zq3^xSk8X@pVAFf$0YWm0o64xJ$ik9c<_)+(5C9=*|Hu=gkdyA{(9GJCld zRYr-aotQH!z6R3}0PX$L17u1(jydChm^u=1Kh#n=Xi>;T79Xg$yw=XVj+?C#cnPI#0lH%d#fJ{J+9Ghl#aF zJ$+Xeqq6-IO()YBshes#Dh|7v$Gn27Y|p0q*|xl@tfU*x_#>s%HQb@+sFuQQ3ST?5 ziz-y8jvcR`Fh%Tt&OvbLqO9I>0K(TN2NHVfVQkDUt^~$vt|xqxe>BP!{{S?C*C%7( z{{X1xoQGt<_PmEV!PyRqlOEcnxXfxZ5~@0rb9n5a5e=x57VFgRjMfBO8muNIL0vp8 z!^?96{IW47(fulOjK2*Y94HmBv9AUUI9zr^i$+KE0AYS?AsZj=nNfHDV%x?fWhxi^GUBpW2oEl2e?OKZATi8dFof$=9VV12j!hQrv}cxofKs0^B>u8%bIYrpeMSo!@|Jb zKgm|+gO{?|O+ZP*%3DAFRJr5=b1B)8(H|sD_1qk>lIyHW${L`nEMFGi4p1n^hgD9k z>|@z&EF4KLzw7Q7{WhIOjOC71woRUNn%IF2J#izlyg0`{@Kf7S zujXtNHm8T;%h5iA>|ui+byA!8Y$seORCZZ+Sez-A;y~1K{uM9|B69b#6{Nuid!p)e z&LAub8&l=tAuzy0~d<2RG`P7#$8K+MAT%Tsf*sP05I`Pp?7l zA9ogk*&I_P+{5afQRUg>xRq>pgik`R{ni4=k+1BVP+)g=t74|?UnwPWmkBU6Dx^#d zf{zsM3zLEb%Z`1&4IUU=JH_R2Bh3E*U==PHc_sevjVf*e_K)%w%}LaqiIr@ARsR5} zG?)?EZTqL~InL1o`g8VNZH>;3FQ+f^nSq6_sZo>GRZXj7dxHx&o%^FhWe)St>b8bb zE^j}+zKO4OIT>~KToH;cZ=!dT3{AZZb-G}z+kl6gGwg{o2QeD{$T-ybpx;GFxI-P+ z^h~4~P1-%uaei4rg6Z0>CrWY=}INy*SWm2mc+SJ8?$uMFu*x#~wi-UML zz1BBfecufJc|fxqkvIUiSX)&c(9kG6@jXG|b$uYYz9Ikis?6zA0 zESSpkDcD=vs^Q*MY7VT|wrvoqYx~1AYaustu|FL-e>q#PA0R9Zc=^G zb(X@=<5Tlm6i|sQjd_zbyniXQ<@C=Ez+OL&fbv73`EH+eVaUKQ0iIw*q)~JZocm`_1XEmqbrD8`4luDlqU3}LS(dIS~6Dv6D z(*B*3+Wnw^Q1w)}^s!FP9#3`mHEBDEONLg?_fTvHhXd{UCc0{oND)7mmdI0NfcN7z zww5ZDMpI@G$6KIOs#SvKj8De>d*rsqRO7t70D23mC;p+!%}mJXQ5#FKf-uWkIx2N5R+*#^E@_mjvDR$cm?~l1juPHf!^nz!$3)H} zWIHVp+37roG-Qh%POF{5#uZL2Q;ITFDe+$!YE>L8rsCGbSal^-YmGYD2lZietL>et6+BwB= zT@#{vBiHb-JTiqtib*NXFLVGQ3h!%qDe%Wwzq;eq{{X#P*}11}ujazr7510t*5|F! zd)|4ExClRh8tfQ>(aM+oL9fZ7uANgsHBS-PgimC4mJcIx`YovAtm=lwGF2T&;S|e* zvh#ATF5gL@7h={%gSxEh?|Vb>w8o`X*sD9aPQ=%V7+fS3O0(TV2(z@+K3e=?=mmE7lgrnS#|=TfRU?86+kgRH7t;`Gn- zpUc^BI8O%@g3_aQ5>#Cm<`nL-2;s$Sw*$)x_qU3W#j-SY2sm*=4qZAbq+)b@C_X9p zjV;&eoG+eAg*r|k6PZqB;hAOXsqFIEcP~PNsL}`K?tg?UwbbG_PO!iPnIUX+Hh^W#jZEu5va7Oe)fsk# z{fdDz7l`Zve$K%5noeV5mA}+V`#o)*k^9!>ApYsQB{xPAPg_Nkm?#HacY%;qv0{>L zS|u95{{Y%(wqrEWC#OY9lxv!E>eGIb6;j%cl5qaW({UNJ`=L&geA%uEaRWs9SQa9h z+0Nb5ut>d>?$hAxPQ!+Lu94_;`loVwn@2#av^R_X_#3CiDpdSP@8T(~V@J&M0GP__ z1rRYBLPmP3c$m@*f3>Qk8e0s!TIu9qz;kY>dMoC&#TNb5I^mNf-EDqqcb-+V)f^TH zJg)uhgQ}8Reo_`X4yH50G)>w?I)@uv=HY;H_9~{=iOs>v9hjcIRZ0zbc0E2}nfj`M z)Y;8(KA%vV{{T{Z10kZrri!2aQMDh<$g0=dhAb@r75@OKZA@+lfMZn6vK&F8F6n{F zP}_DR%=!eo*2=73R#=P1<#Mv2@qL6j-@hl=5N(K?E&K-F=ee}>a`1C zm5slaJ?HmaM>b)~lj-1xmbgdgnZp&Q4kiMf_9^AXrLz6=LB-*XWgHn?t`0aqI9p9U zumNlO( zTm;7UIDqE^M)dE~mo-37F5R@yc+G%`o785eLEnIw3*iPKZ&RR}G%43u4U) zufyy0k3={FpP0cD?u+TQxeib{eODacD2#xQWXcVD#|)6Z$5QkDeHBV9WQ=m|k#E&E znaZGX!ZAwOh#BhTNYcRp)&oAeD*HDTxQ8o-a)nT7;dXP&)7^cYn0n z>bP#g=8P`%PiyJE?NqAB!gROymL4E*86wwX5dLf=w9cwAIj_g^-W7eTVRIaD zW)myz7+Sys!>k5t3#q=CCrFS=I}?V_Rl^0u#Gj=CoBseHTR?qA@dYb&LN`$R zI~k9t{X%_l!frzq)1mlu>W0lu?Jj~dzMWI!5+w$e7DC2V?`6stC+7V(+#zijdH((= z@by8(q!D5_j~s5vIn&_|MeZrCB73P^Lx2vGeQvSyOnWRQB$x$Mmt2$dglM}!Q#QA; zmSAX4;+BphplH!=**|1yq-&D#jdwFl} zgWld;yDzjsvSb1vkhqkpH-_L@<<|1HhB}cAoLtlY01Aya)o6JzK#wX8EyWM=xL9T- z8azi9hhc2oW~uC3GYI0lQv=aIYM?T=OI{UswfF;W+*&3&yQ$#oujTD^vy60V3_0NT zSgOzsZw}4ZH21d~h!ZpVs#M?yyDptoN{x6Ol}fLE9?66Yl_|Gy2vZ-bbV*XAg(`PJ z>J#Ch0B5gt%l*+gc<12I!^Ie)J_MlX_#xJa1#ZY<7WQQ7vFn01@; zb7vpI+d18c0zmn+OlzU9&zd1Ny$7-Q&o-a%R?Wp@yp79MTWWKlxN{>w;l%4sP1RJZ z9Ik8}Iw)=&LH_{#O1hFzBp^daa8v6}LvU#;gy>ielwDJdmcBE)M0`|fhrS7f>7Px) zKLi0e1%=%cSX^L2;hWrU0opDl5r|(cGM@0N3^_-!o1=8n-F=F4vBahpW9+m9>njO~ ziy?`oa)igbn^K=flO}2b*-p=KF4ILyl_!2^To$(n4x~7DRd%YFp_VPu6DwB3C(<%c zXcaCe2>DeyrwdxvUN8McbJN+JTsdEqa}KK;GYtJ@O`&6K9#FO|nT4E3`zMyWX)t+J zTA0j+#_ZH?G~NI(f((H$nj$;)Q!)TfV*#_}08WUu2vOZZ=&)Fxo-1JQ_(<_!Az=em z%h5~vL@YvYblQ>fD07`{Q+8TS{{T_f{E6Hs<=NSuY1K&q6f!%l3Ia6784vbH%Y>E1 zYcd!0MecDjROak-iMSTYZDyFb^K0BAv=Y{Xc(I(yWl|(uh{-m! zC?9rP-c>q68vFqN0I)&-0K)rAA8Y+OEvBnqS2tU#Z(reRESa=bY0l9QjyP*#Cg6Ii z;j96;Z>{$QOi#}TPU(!cz&N8<=}aX2<4+;)K?@!p6vhIg4~&SMs~+6c;$< zY{&~EY?F-Zm__1Z#w?E(0Y1v1%0Cr8Aa0;xas5hh?wV(p{P$HDIb%0_Co+J*(9B1o zp~4k3k=;JN7V;ZJK^<=?^k z4LmSsUv;y(up~0xzseM9Ik?Cn*^DJs*|t{Hz9$oz#UHYx_IH+&!r&pf;sAF|qFXn= zF}>{6-Ik(1W*%;g~jU{3|hoFTgs%gbZqfw?yWSl&q-eH+vZL5sPZflE9 zqXFs_R#Iq_g`|xa2B5wX2Qe!HVnzESEp&?&JlLWaJB84Xypb_$Tfoqdr{eG!QcmoO zHC$>3c3f(pTH0AsrtD1mk7Zr-9Q-GyYm3MP1;nDtb4{%itm>X|UiY6;xHTJywk`x| z?b#PGo?kvFRcn7u;`h^iJ|F)89N&~qY1AEvecj?oOsjx5m^Zl@`X|+6?|xx;?4TB5 zadq<5K8ssC#&ojTvA6!wcbO&E{I>n#djw(VbmzLeUohQCLwX@V1OMf80U>u z4WYas(gfw}-8-4iCD3#O`A%qSd;0DQnC2R;Ii_aiI;B3g1IvXz^##PdT{51|)}PEX zzwDi~(j=2l-K!JdP%@pxvcKx8VV7Q93?`P~aKB~cYrUmxwE6J7SVlkpsgY0xw z@K)LbTjp>70H1YJW!cyZoavu4(WK&R;2?_`*Q&0{Ep!4p+jd1{B=6H9ycNwE8<__r z`NU^G4NogS+r70u;{hE=_4qOo!_&YTBQ^JMi?7frv??HB5ZQaO^iN@6jQW+#cT#OQ zl41x?!;T{nJ~ zp>x1|M5b{0OR~a8xJF=l+xu>tW#ZXB&wyjO$U8q^w&!Bn>mL6A$A?Ye`~Zpg8X)p@ zg(f0Uc^JFrH%6n*W@j}wlzPrtrn9Y-m(MTqu(t=B*=Zj8iW#U4oLP+#4Zkoavdq~! zqo4`NG0m&W>mSYi)i<`ALtHh5j)gxhn(cE(9Zqmzy?XjABwr4>?j0crYy88wg-o%{ z7Y%o{)i<11Z>Lp=$c&?+uF8!#+ZOF>qTW>*tOcXp7z7Whr>;@Zr~YHtC2?KZnx~5>}2%3ZX;MuY&edd8gICprx|fQPvPN4{%1QWD*L$vYO&tK*>N3? zP1NST@!p%Rj^|a8lHu~qf;RvP1jx2U3h|dnPIe+ub|atE=COBDr8HA8h6lG76gT>e zTe5T9S;*%4hn&sc{SkVaxvda~x=A=7A2W5yEUgdBpZ4mJ)6 zVAHDmFmNHF*iXIen9%At_{8deEv%T^7m0zXSnO?{>TWXzNdEvjr$>G9m*R=t2X!ta zoF_!;Z^U?xg~Ks2GM`0tWgn_*S}Jp8`^tZs%6Vcn%{0VXd}5>9k%W1_vN|Ublq+=K z1ga&FL)Q`gP1KxID`wkYPC;>x<#DJ~+1~fCj3-10lrKf3PfMr1984;EIjIIYbz524 z=))OG_-^S`gNzc##QB07HDk{XXq|s`wAT)^Oy51j%GQkTZ=@jk4F|fZwAFoy)_oNh zzZe-#y(3gyI6;N{mvyuVI%(jG;{6kkG3b~jz${Q~7A@q)R!8vAdVYv0L22M~oa1t_ z9;iLd$r`l|ZYUvnO{&1@>z?rw;gtq0@3>*X`Hw_TfO;cV(S!tQhk2SkhWa(|HNyVi z^0s%h?G%Xs8PBQ|Hh;5W4QK{sQ#&bWcMffwbm+FahA>iSlbN-VX_Nb^HLEhrak@9~ zv6RExCkW{(p)IH7j?+E!C=+?;iO+B(AH?$XSVUOP>-9emT+zB?KJYevilD&kjCw@> z0Az2Fw}F5e{_vX4Ap#rgHVDyRYkB#m{gZ|gu{;RGeK)&5gw2`GVR1NH-&InRYz0XT z=@wu5fx-q5M{u9CRB$)(vW|{JxnSaGhR*e6aN4yyA?3Ps_e}a?s~!Mn?y~_1&3y20nY4SL|V|t z2fVsYeb79e`9DdqRjLYu+EFKIUghwKf#!iys{yy*yae(|w_n8illJKM^K!;=ZySo){VJSJ5&=cwQa_?v+V#w; zckGgVe;p4~(6Nbw;OVf#%;R!Zb3s|Cs>Pp_C`m5e`xE6C|BNo^baOQ~$1sjCdd(%H zH(Y{e<@>a{Kf6|hh|^WhDZdy}HySF5wAGc+%p7mHVB}MN|L!LG<>g+XERT4;hSx)j zLQ+Tdj(e>ex`5;9cU`>p$pX*KKH*=b+zYi`aCK+QUAMkn8(|ptx%TNIL*x`+*DxIB z?zVi-msJ;{CU5lUzQalRU~Fj2Nx)Sih=6|ZaMP;gCNAW4Az?*rY_j>U%Sw8q)=BK+ zi^`T%0f1r|e~&n+8#(7Gnsr6(T9JZO-n*5Awfl~5Z+C`$4=FtHVfKVwPk0t-A1_r@ zaI-Le>^f28A=Pp3>g}`6zp3v}`28`uJ!?(R{s-j7v)4V-n;(s`{cP^spgnnsbaE`e zQg9%EQ&8+&@r($P(x#X(o)mx3*YKFNt)35VF*}nJZL2scE7NZ~6L2L^{SV`6#xl9b z{Z~WHrMHOkHD0%$;_WAYlrR8NLVfiPCt77#JmpD9q;2{&iC#~h^_$HePLnzJ4TPV2 zxlOugemlcc#yml!phomYPeM1PX6j+hKFt*2 zUX%08$LjwkPGqI6u7?s0X(N0LZ2};xVah~%+%6@URle`~Esqp_|A0eab75>ej zPT4EMKmCqlUWEL+n@;f)h%nh3aRwWAMQX=&etTU|bgK7^tLr@XU(LBMIXC*w969N| z!UW!L@y-@LZGXFbB|M*4*b^6cy22lu$V?krKBr^SAnnnh+@s!oZZ+G4-Vf56%bFW& z#pm;Lj+dS5oLw%6+|uhwv8Ani4;ICAi9eg!+_g<8HF)z4%vZDE>c^uPPJ<;$Rc5;UvbE!tAUR6}gz0q6qg05v=OuyN#JyfIYbNn;L zCErk{%60!tTSfzxl6;M`)_MLaAo8k;D83w?rQiKxZC5H0^!RDWe^F`w5h4>dPbeFA zbb2n|*H7i|T34y~eB~8lJ0SIgQLzDms)vaBd*TqN!@O>#^gM7!eBoyc*+PaoAF7!3 zaV(tj!gz|th-8Q3A4jKqn7-t5)893J)_ z_$S-JV%shCDx>Kc)*0?&5#?G=x={mp^vfMzdV<5o_1;oxtISB zsBI`zu?yLn3%MBAX5Wx~HRZXl){SF-5j$@7oSShDu=dBF?ltyax@-99gGR+6d0w?a zR^uJtrE?=)$;xA_^J*_J9rh{=%ebeVk5tJOb9TL?$RBmJOKhdKC#E#^$ai!1X^c9_ zo4u*_{FFiaIk4UaPyLlH!>7l$>s|UWMNEZ{Arh2l<44MjLC;*{c8w~+a!|+hLMe#n zk!YNX_SU=eyKdIu+1i*ZJvkq&=f=~<$JHBRf@A&t+*0WoqBo>^7El zJ-WG;Vp=n6Os)^8%KhB2^KR=&Ejy64wX)qA7j z4%@iwl`2biT5wb+e@wLQ%cN=9`%BLU?5|yQ4L9@&BXAYzGGAE84gUKi!R*fvcz5xj z!GbKo3|*_(n=eB=M#fHYVe`{EzbsORPy~KS-`fy8!-?cZ)F>jRfJkM&W zN@ll7+&A`{d)nuZJ}uL(-V=NDrkzKI!X1Kcb7}a29rdqnzoW6VM-2PB7op$aN`S$0 z*LHA)CMRHmzWhg;xjaO3=iOMz4ZOw;r^%5qOc~y$j*l|Qwp?oU=;*P$PxmL-NgztC zHM>jr@r`MNkyJCvoYE`X#l7mA?FKKRN9DFIf#UB5C?eu~#yZ}#|9AN=)ikeQa z!WA+VC=sl)u2js4|80jevhL_VRjlHBrOcELorCSTl@Uy^Or%fn3f%%kk zesyNFr$t|YPVM^zVK0&w9BK40sa$Jv(Q#J$?UZHHX=i8d=rvbKMUf7JJiV$dEnnZ? zs?Ica6g-F8oxBu4jKh)IDhV>R->uIiM z3m=dbzBc?NtkdyH=*#_xk#Ti8=kG$qQ+%3Um#trOH&5Kywf_NByI_c{{zlR>vj_Ng z-S8}{I!7jT#HkfVT74qr(BN9fQ+Hha=Xu3v!a#y@+(BS#?Ov1cd$rEBj^E{7HAb19 zzcUw)2bo#i|8$+>Vu`X%GxzENPIq`r5wT z&zb_#dmv%oqLB0@Nkw;Zu_gPwD{o4J2>KnrB(6R zR~3K#A0T(S;T*E3d=m+2l*e;bw3GZ&hKT>L!1Af4lr*hJh&NQu6Iv6*AF0L}9EAKMQ2 zjw||Yt^WNxl;{8Typxzzo0sL#^dFqiZV zyT2^eg+ z5J0bJXjnz)L6Q>+Fa4Qb>1NI1gDuz6!o*WIs-uq7Vio=eeC-MdD{WNVH2EODU1+eV zpDk5Nz^>%?JHBo4Sao^HSCgMGGA5>@s{UQbenqAScOYwMES(&#f0M0Hbl~vSyT~I2 zoKbX3!aZe)e?xw*tOZ!3zG<-}b6DV%jWH)~G7 zI3?iXwYpTY&5n-8X%qMEa*UrxNKa1tLld!zo|R+&`n56X8U{6A+pc@c6KxWv&VpF# z%3Hf>mH*VEYlDwGC$@j>ppIxHRYx9@H719#^skGxWtWQ`D}9_B_Y05Jx*~G;$8A1u zG2_7}jOtV9_z{Uui8Ct zr^RZ&)+UHhCT-vF5Wg0$-nV5ewW_7`C^|F+FByOAb%yfku4TSj{O7tja8)f2ed4b8 zAg&KT(Q{jxdHk>Xu2$714ZL1G_rb)kbH%y!SD}jIi6rE8LVj090AMf}1O-7MC)9V~ zDDhuvG*xGPG4pa z0Nid>&oS2EIPbI;`KtP*Y!?}+#Vzjp=irn0*eAy(@YtlEJh9Yj9R^y^dmb`b7(N6y zGu5q})|SqW>lr)~ZjQ@H#IuD`_X^1CFAhz;gm<+<1UO&!3?Q=!TVU}R9lSWtfW2^X zooPr1BPccr&NXr;NGJK#7E|HblsruR;i2W@oM7Q1Y3ZkVl4&xBZ+0}_Q`oBE7k^E2 ze`*z*YvJr4NcrM8GlcMbrfjkS#YmjwETJ*=US5t)04_|yrWxS-Y9|*@gGRX(jTz>K zaTqx0eW6Fl+ZdwE?Yx*)>mUd=T!};Vv!u_OeMrI)X*qdp>Vzpx1<^th>XGU&whY^w zBs5KrQN{lJj?V?Ldcxzl{#N9>z+}c7hwZ)MOh`8Yo9%R7Dt@T-%z!f8F$}gOB?Ks{ zZn46YXBhq+!)V{N@zg^0+fPp@snf7Rc<7kIM-RrbJ7&LyL3KN%ZBwUqu* z$f1&NuEDLF&2S0KRL+Ihg~lap{u{44b&FeP7#UNfK{NLW$kDJgYcn@6-Ash)kV?ZX zQn;nG&mU55d)tg9xzc|dBr9FS)r&Pj(DO~}Pq%rb0q9%|$;pN?`}U$|lN6tP)we7C z$5AaWBloA?7DftYr8C*ht)5W)8eonCoJj&%QcU&%*Ybq5=dsCj3M~15z%vCtfxRLT ztn(J|!8Oh%uj;DA&O9rLqjK~Kjk9OmS1R{Lm^Y(SsgliNbQ|KEM{xX{aD{+j8-#ZcM_cf>TJ0CKH7puj8AXu?t0M}5lsX{i94jQbYSw{!Cx2`G}5SBa_TPU1@8cXLnWlYSum z&O7m(MO3mgwochi&Gp^LKGeUk7em6!h;zFXwUsPKr|pqIycfH>h`42hiM|Ws9Ad=; zS^ZxR9`wRjsCCkqk5En`ii?tjQ`xBww=Ejh#H;f6$d9|>hV6*0HrGITNdpU)jwVG8 zsN7-~9UAnX{l5VK`DPI%SEI)Vl@%&0ZVw z@19O>>!#R##t@~`$UI*e(xJ0XvRV~8g?wr(K?jJL(+Q1APHUM|Hk%hmrnc(xyW6ZR zwbKl-B1;d79b_CZslWJ;UQhOTJ45jWaS|4;D0y=qTG$qaWcHnwn!=wq`d!84%i?k( zbdP@8(M7fel8Ic~qxv^g#7zW})nweMTcd9Qk^ZztuRls(GVOu1yVTFb+@6QFGJ4}Q zl)R$Pzzu)Tq0}xbB4jW;W$V0|#D6s*HmLIPM5&SoKB|cYL9r~&30;n&?WBARD@UsT z)7@hlBR5^!DAR;9N&dv{a=y3mQHwXk_X-c9&3mUFCu^!47_l(bH2Lc;NA52*840Ri zZvQcs4oXasV^d?h_RJaXnU`-+|G1JU45Iu=A-D#$PE4$GnPhGlWGVYQ(J)F8<(%@% zX?kSjC4Pan0!uP%Nm@Eun48mcLbrPrVW-q0W67uBf!O=XRD|!pPu5Y zk*(IkXRV1t6=wv3|46T2UV`gT`qz#|=rTV2CBQ5yUI{K-D#cr`;`a-*0bU< z()V*(r=%~Y5E@R0ao;pZOz;O^RnA7GC+;&XNV?CU!W(2Eko&|dUWRboYM2Ela$%ab z|61uh)PWIO0mt|$ZBs~Hd*wbF968)zcaqZaBP5;R{b`V6A6bo*p@m;Z^rk>*d?H=Y z_h-Yxc`r!r&hri6L8Ay2z6WK(BoL{qFrvmh;W0xH@)?;yFL8;_%~g^My3C93#D5x4&Lu3vR~@%{j{?&m)saE8FaWu`JzgvaGz` zcNCTaD95$c%hF!PQs@si--(_edRoBtd6*nfwD)M^ev;bB3elPMj2}x87J%fefoJia zU7S$dI0U+ZNVuyif|wiVR8Z=1Kc&I$M2fFvLxd{f2al`CRjQ2Z^TKdh3NG4bG20sw z%tid631L)H*i%@Us#!Opy)R_JeG&9qowB@+kK~A$mpvf&%&;@ zr63hzTUkTS&fmNd*)AZik##cUgkwfv+=GE&^sNeqkuB%8rmD`CpKJon zRzQ~mFo8r~*zUwpY0=2y;lZQn|q-N^VO`|-0Nm*JgSjphFVBI~RZFDwUc5io^u z_Cn0|Hs$9t6o8-4FeB68hkQkoJ87D;-(qz4ijiG=ShTdUa}KTe2rR-Nx|f7qjoacT zJ}VUGu-E_s(By5lNl&x*A5;At=^jJ3*$ULBX*J2~qs+HHWD=G~V}d6wnb7H@Ic2vv z&}Z6p7ab2KeKLnChOhd&Gek;>gFOEVea(7}ynW?*Ipui|ZOnbn9r~1eYj9%~sjXztxG-wXH6P%pbkQ&=yaMA-x=)Pp5toTm$l9y?;)oa zt{KYUpKD)$IT(!Fpr^a__ovXBSwpaS+2!za*+ z!bqfJrk$T-pRby7qduFkwblhezX}5IL%`$>6|XeKe)ct9M;g-fRW!x(ipmp+t@)4& zVpb4c^j&R6EmTL9S?+O$zk*f!7Zc5n<^Q}r3fTOy?0R6F&>@$r#nfyek5mxKs~b)8 zH@sTU)l&hb4aO~E%)Oji1Rosqdx}*SJpHi)%l(u+Wd^Iv03Mrr%UgVXgf|?fyTy`n z1Ep;?Kl+h897IsKNX;geRgr+pksK8f+F}G5m#4lw6w4V$CJD@%fDq_-TcM2QmtJvr zH4>RFPh?dTF@tk^;c@R%BLPp@7SC5GWpi#bY)rxe7vApMk(2`wu5fXr{yY7z-a63q zHAa}62w>4jSqcG!`Wo>%wH(7qoy8`-PF-gu8-1GAe-Zt)jijB3t@~%{E->xPcoMbw z<5B7zdbB>;oa@tti5)?kMGZhgG%5k>y5uVpH@2<89*cFJGX0qI#T|0Itqfe`Mvd-* z>cV-zA9fMK>C3T1%}SyPF~9*~fGc2;lDj2c#e(ND#NWrhVGpyENqE2#W^(&@<$(X*(c+JnBNu~?Rme~UzwuVK!vASesa`>d&n51*oOIkERUWTXsC{`>OV}wPn@{;giDe7>7Tf97kRAg4j6w5{OjV zH+*ED_q746$&2XnXc;D0t!FsVTj|(0>Hdgwx=c{7iC`J(@p-OpP{w|t|Ld;x&2%qB z!CCoMqCtM9@GXsJ%6njGl_f+gsmaGaJiaktOk0{EO+#K3{2vgW$B?sND=@hc8pGf= z2Z4fAP5j4MXq@necQX|{65Vm9Qm6jSow{(Mo$@zbo^)>3SnI}Td?sP2`?g4*!y=0> zB=eGaaaxo2{cL`FU215x=2S5*HU=LJQsNC6Q$5%wsYj08N^SqJ)&tiEtz-2{ z=7x1K`Li1siF>7q4%cp{4e%fy_Xu#%dHHzF?Ptx+k}6XQ0oe4ye%5pV`b|A)l*DzL z%r}F6f~HE>_F6E2VlF*;7=N5;5OQ{rf#vmvUw23X->kWBH_As;Vx>&He5o`>ED_bZ z7+xzZnk^N~+Vk%7=PcjS^DgUmzCSb*R=a0R!C2~Ij}b&wuUctyLSkZ}vhG}KzhV2m zx}zczl339qCpG6~{zI>ezXuH%-``Q@10gt`!nS#eu|F9&jZn*XzJzW$nDlvv*;)=8b@q z6spC21|*I;G4@oE?-b;{Rsxg-#XBIojn-HSA=8%Lb7owC-8QbrSWApECA$R%o>BT3 zYm9eB5F))2l!*7#dm|AVQO({N@I`(}ho<_K1p%8i7d&ZeVrZZ z!dK>H1)ArJ=X9Cwzt-x6umgsdoMj&VcRrH66I$^tC3G>OXe@XsdE*Qvif#w!$ObgL zc1~L5Q>zqrY1GlsWw~o>ZE2V%%Ezs-oZbUts*6$!6zRv(Phkc2lJdA6yk&<8)#Chn zYUkGJsJI8#m?V@?@D+0o<5pS?;jYfVz9~dzC8EQ^`|js=9Q7EKfuuCrGUc`J9h7|M z8g?XRk;3-4J4q;j+AAuD`b&gq0p3<{gcV!s5HA^jo5%%lALbPA7^1t+wqB{h%a9u{ zqazTvarKp;r>qV?s7|=@fg8KXoRbq_(6ny!m%zDRUP;S^mYRm8>s6c(;UUa%(b8=S z@jBHa*gR285~lYsf-dauVDavbUiR%Q92G1m_FZSx1k~KV)VjF8%3Y;asK*8WzDpEy zzi08ga(&sks4GR>{IGAXP>S*n?{m?RIw0>QA$U;(_HWg-aOzpzpE+!VCi3@F_FsI> zblXT(;(&dGOE9ONX@{FnpcU3jqV{CO}bcyyPFJdeI#EO66*W{}y0h%z;)VTl^1*>(f$FAY>+d1LrVhUXfe&6I~;*aFmN4H;$amal!Fz zKi*r7=S5eXF_O694l8j%rZK%zf&qb<=q+>G%< z==-AY1Z$!!G&(6twLTwy=3jRwiHUSb(nLX8TrDV3HjN5OrniJ9`bY7RFpFg#w3sy) zp62`7%dEima5Y1snmN~zyg&Q zk@3|%2^m?|0IqVe1m)~YjJmW2?QoUt$L%1pSebZ9_{e`)K^-|RUPy0RFum{DXm&ft zikI6;S02?Yk0*#B(IgC=97z5hZkOhzoL8R3{jp#G@TGl-@J`ZEM&;H!Cf%`6lkk>= zx(j}9!|OP2!ntN+IoalsAdndW-O6{0EaH~2EqboyI3MC`1Y^n>CZd(L9cyzG5qGBF zAEOBPVbp^j8%9W^RY%VNdCrt0-TUuVm(xpJDgyszG`sD;hA>%b)9AvN`FYO)G3p%( zmq6Qhzx%Q?48#)(?m;rzZN80PY@TVu9kdk&SwnSnwM1w-S0l#?=vMQXY ziv86>$i4c}V#7gZ+D|KJiC-?Ldi2L;ItW)Ye;MMR+hK*6q%t|QRqe)ggW@bw5vQ>} z4)HLy>P3@D_XWHPeKOOwk7JWWVSTEK7L!rw#qtG@x ze#e^Jz3{Ia*F4L?h#Xg|oGI)MkLC|(gFiqUFQ_JloUp_#g*)G+%9Z8%tyz=RWSPC7 zJc5lDMx9jOWusSo+B#8k1YLov2A0w|adW-lM?{7Tsz|_U`F1$GHAhAO_qewhZrk6g zL}7`Zglhl&p@thwxysG%g}8v%8);>~czSH@1lY#qO(P^cEXd6J&Xi|HM9dCZqC~pd z()mndR=j!NGd(6)mYh%*r6Eh4ne54kSrN3Acobjq*`6zTB_{EwDM><7sWVI!z)Fjlxqin~L2=D%nu;i&td+J(EPE_Y2YVaR+s+&Iz0Cx*+i^bKoEp11 z>GPx`Q2swU>SJ_fFx(pg3byj{FO9t4&1HlN)_KkIs?`+4uCQ^<oXDmv(m|^4)Q=w?}Z9lT^(7Dz+c}GCvh%`nz6I?x18<@&iaz11YG<# zjFYi?qnXFm^ywKPPcqO7(W4sph6j;@a2)ZhJVbKb9iiZRw$+=GfSsCW+(>TsAf~uq z*AC%@jqnkVgXipFm$J!k^$m83n!-e%7ZqvGPvxE5a~?X08uP{VIaoa}?haa#GEJS9 z*e6vB3$px9eE*JBo`jwlQQ)?8ju+}$c{2a;?TcZilcig=xHeyzl<7ZQ5&kZoi2oJ| za{tB0^1*sTKj75t$aw}J#z;cEX zp~j^o5SyICS?XUw$XOKr=(nl1mAx~f5d&&Qn}+c_zyVPai#jn6c(>jGN!?EaF6}sk zOwhU{&+%I8v~gJC5XnjHgB9m3U{36UcVdlFf0(%EB6M_D>(Z|I=ViE%ldG4Q$teER z9`?DnE>Jzld)VmB${LNxO+r9zIkUgb99-x$pqB$GsUhS?&c8|!0wE9 zrZ_B8=2TO_k1N1RidyL$yop$8`S~+wTlJ3Gj7S5hy;tyg*bwXV!?!#ga?7TV@A9Ld z(#}V!0h%Vm+v-P{cOhF~>vbo)uN2jK% zKG6~szrF=En||00Ip?kBQCu;J7ZyZAlsm&bApF~g`+Dh51-vOT(Wx!-$D`aHc%t?* zE)zn5u*jp9=SISkZpe(Z674Us5VAtxP#tL zU754;Lc%C+oGzeDAI3b;j6&|hM}4SlmV-KtYHKw33y*oU}NRg#* zOP7NGRRKr7Qgt=Jb2}NShRn1@;w=$osnKV^K3vcn;L!n$4(JJ;J#tmWA4PaiS`Mby7 zhSVUxo}8f#hH$KqJNu$iBCfKVo|A6_tioA@dB5l4qRk?pa1F;HfbChYOKoK^Uwl_M zvy$a$Tk!)-k4#mY9x!re^yPKjUmn7mc9Bwu<}z@OBU|ck`VlS%t{^i@)B5b3F1E$kG8vp1B z?+{Yuy3M&IIPyiLdVUxzCz`gr1T92XODzXI8byfVQ+h|^!@qdPvEOS0|BSdV{r z3@nzS$dKpMyV} zy1@f#<#H3gjsAD-^v9}5PVd9Q0Ts(-h!^!5&3nf3_VT|a`Mw&UFQfyL=6|x!I?&il zPlJDLovP{m(?Fz*5|ZBua`GeR_$sZpt59?W6)tQPeV{>~!rqW8mdMDuA- za`L-E?tP-_sy%GDWGJ_^+@i&RWX5fEoBRT#KT4bHI9>Q9Ch->E*^|l6MaKJji!HYd z1F?{UDjs@$4|kcQDyCVoEji z-2rdnkVp!4Vz+kgrS|7-an4gLbMunoR+hbONwWyK9gsxl=Ik8env4O~M$U#{@OEFB zY~?`64{Edh~AS1iC`BIj_}V3>s)|HQk|i2bW(l+YQ)qBHM$0Qn2a5nXK%*+IQstVkWw! z5zB3R;|>$WlLf&T!OOExV9Yo0n}cWpk3y?YExZxG!p?Mw)WBsIODqaG(M!G>+!_Sn zwX|@3+6`-dcHABr-SZp=WuZ>XjwVUnT@4nxvVl$~f-2|37Eg@)AEVtp+2Gtl8xBBE zQ5p4wJ$(k_E;FF%I!hUp>y~^2yHNDaVHfKRXDS^qzY}Gbv%RqY%3ZPR%mqx5W~HD&MM6v^2{a zaFzxRRA|fbi$p)th2_D%n}aVN;^)XfeV*RR6$+2saLxzS+LB}f*&K7e!%C@jq|+_& z%qx~$bN3@##EUVHZ6uhDrTFUv3KxdGEQGw`lVLnL&!Pp9px*K3%1pJ%_tps|a7n07 zH5DiEw6;va0=MC6XpWA~dx_0HswaQ91C8MwDNU#4AJkiNpEfC1rX3at&){EkprtF6 zDFTxgjZNipHm6-qGouMam$;;t=qi?4og4?!0bG}jsSl&^LzdvW;0Mhx| z_dOYuM(z6nxu484y@Wb%u_U+`)Ou0mj1s^jR)W?Vz31FT?1v-FpGC~~_EE9YlUPpL z1rsX)Je>t?+!%1#=?-q#GKpJ&OZwGw&N#ct^T*o(FX--dZ1EXB32Pqz$v!>yO_roU_C2wmPk*f(7-q$5A#6JHARbaEQmzd>e zwKFp4`GWrnBX6^!Zqz}P<>1T6>i)+IiW^Y7=F9%MY83ln#q<1L1d*CkLXri@zu|K;W=+>F+pc8rQCR7a- z7~MXYHK%Eamzm9B8h0ZN{KMI-NY6xX7yKdFaHG$O2niYtak~i23Oqa~rVjQ7XnCO} zl#8#a{x(I>T4=vdw{+QEWK!G-%>5#d`i3}0Qg{!h;guUAQ+WH#qr-Jp9i71c0c*1E z>KXrrL3;j1tnLMtS$fj5JtOZkek{Sqcjm8pWIIRqGvIDja~WEflu!3tJ2 zSb_`>PH6kv<_!42%L`c5F0mb)5i&D+vcjj5d5Rzlzl@p#J!5?u)sN0Tclg18`5!OG zFH|>I$^lkZ1}`3w1E!xJE{^Han_>xkW%7k1#Qt5N2l`_0(SA<%SzrG!=LZjeJY}FX z(E_hkGOoyWmFYbpo;kmbNI78Lfdqg0I(>A*dY?V2F{DUJz-=B$F-myfe<@JF(-WF$CfR6?tqUOeIL^+x~tXM>nE{5hp1%bAImc zG{(GuvkA}F8M3Vs!OBoAyWX9UWTZ;87S{;sP^W*Hm(0C>MDwyLt&KQ24M}?}@vANj*ZbY)#Q|GC{QOiMFyq&priL`bBSvz|)mhm0V{Y zT1N&-)dh2qncYIT35FZLM6y~Djog{ctz0mt0MVsd2q~?YQ--TftS4+=QH~?>T>eQ1fLf@ldUsxKk@Q4(Z@a z&gZVdl_nF9pF?^EvH#}!)(v236-Y?+l!KE0a=qm_=?VlfO>JBj%@9U0^+T-~*PDnm z6IZ?oH!WaGi9n0~FRc;N+B;NE%!lnF^m+4214sov^G`*eTa?}Hkk*SEIXg-OAE6L2<-Yihe@`qY9(v%i#t!?-yNd|$FtklZO_reL`LVj`TABdD@{1k-IJ8-T7#aPcji$wJ{rhk}} zIh)mNzwfN;(fqrq6H`5<>@0HdWGL8`2YB8~&~p5cx$zHo>p?&~m10Db8pJ%`FG7y> zYmV6LC-HO>R|8ly{+$-;JnYgzdx9+`jazlKF6`Od)t#CvawsBVfp3I6f27j{hsA9Q z-1bfwas~Kv+d$t1EJ}zwN!8N!hVZW7G*AyB0uSui7CNNS`R^Y86*oz90m=gZ3tWeP7RCnpuUP{GZFLesU>E>Jz?e>CA{3tY5MgnlCzIS$@aMdL=NH z{?wat0}k@AN7jCsS1a-9;spILP6!X$JD2i>DbdCT-CaMU0Ci8L`tyd(FEBE&qG%8v zg%|$KXn$A5lC@800kc#fR0h9fXUZYsTYOB+HJ`2C3+1F}qMG`R z3juz*t94)a@>WzH=iVJfC6ufr@&WsA;{pPN9kj&x-hY>I20zZ(J4oKY3EJj_P4$nqL?Op#IF3Te6-e=M;o6cEPtk45+Q!ZR(tulsgWe<;f2=g5VxJ_0r zq9`Q|xT1S;9swZZbCE2n^BvnPCkzg0U|2t`hzB`jU;^O6`qY1I}FoF29Rtmr4r*9Ep0`hVT%H9+fY!mo3 zp};idu8 z_J_fh{`jO+gzR!P)O?ISKifI_Jbw#XW)j&dwIL>OqRSfelo!#K-;F5&l@!Ox)%zy1 zxg|&+f?aQD+)Qgy_w41Dn+no6Tz7ADW_Fh@6)?ql?~!VGn>2YH`dq9a%*rm%zu(@l z6*b~ij5$>7>Xi)zOf(i55~)AhAfMaAWO(I?3_Z7#}M`?KC6;~n^`vtWHE4U8b9w0<&Hl`Ld0wD zygT17E~Ljzy#!^ReK^RnPEs7qM()J!qc}O4s3iM@M`5|n|{A;y`5s2CYz+o z+PvuRxqF}LoZvc9*J@bdXdYD(2G*o1T$0BI%>o4FU(<%SabgYtWC!+*^(#dluyp=G z4OI-F_YFE?5V46NY|4!`a5uw=dJu22)PzFPxT3QtOyN>1)MxgriKQo&!yCapY;V5} zrgw)7mYKq{7xD@}_b`H}x8S!hHbFG>WG};cdBiI9^jQ(3r=a%Y^GuF-Hs7exWM|84 zj72q@I-fU%2Z41^S6aN=Ew$DMO>8!4#Oj4sc@yag*88)A4jL8wSk0b_4Eita(?-tB?ut5bHa)iQ05~ zU|9a61I<5KWt_Oh=R@Am1Pn)oG!^~+CQ;4@a20d{bW?e^+X=xX#%fD^@4?-_cz&~e zh7@XiB;71Fn>L9iC>vmnEJJ(1SN1}j;Z;u{AmTNzG^+Vvhh0Q2t;eF3Nc%h0#6dGdiV|N6@1@LMTLYG2 zNJ6N`Q(qV6MFRS^gGv%BK*&$LL?s>azdn^@awj^Vjbo>C^p$1N+tyV`35VDgP@I3b z1Wnv|?u)1=K+o=_Z55Sco?s zWe>8vr$7rYmxP2~=0zQ(@Svi;!_x=)U0$)niN_mApD;T zgD|R2wPBYxpj(*w`+|fR#EL1I^Qg~BG-tKFc!tb4`CU0|Rbt#TH+aa7zG5*VmI(_E z7-tOpQe!cJI1)}~yDkl1GC({|56@q3XIYvxKkT4l9(m71G9Gs;pajp3rWjOfeP@vh z=D@9)bJ{NKAOwo$qIWkU>d_-Tl zrBWK{*Pb;;7dYssF9|B0iGGu!n%I5b;{v!LEBCe_HB>54E;NVF#;H67(-2?}8XEC@E zu2kmupKR$J^p=w^VM+h*;bX+Uvk)b4vIK9#c>@UTrZqf!+mlW-l?TYmd#SUUQn~W< zJITGZ@%a5J579Y0`nfXma@mnp?rU_YaP^5UD}@jjj6vF>GSW~cMAEw_YEf

Z~@ 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

UK1vo&YPHG{8k;G^t2 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 R4KXU%Q@lpMn!T!j|JfW=YJ&g( literal 0 HcmV?d00001 diff --git a/docs/components/carousel-item.md b/docs/components/carousel-item.md new file mode 100644 index 00000000..7f22c534 --- /dev/null +++ b/docs/components/carousel-item.md @@ -0,0 +1,29 @@ +# Carousel Item + +[component-header:sl-carousel-item] + +```html preview + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + +``` + +```jsx react +import { SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; + +const App = () => ( + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + +); +``` + +?> Additional demonstrations can be found in the [carousel examples](/components/carousel). + +[component-metadata:sl-carousel-item] diff --git a/docs/components/carousel.md b/docs/components/carousel.md new file mode 100644 index 00000000..d8a2c2f5 --- /dev/null +++ b/docs/components/carousel.md @@ -0,0 +1,590 @@ +# Carousel + +[component-header:sl-carousel] + +Carousels consist of optional navigation arrows to go backwards and forwards, as well as optional pagination indicators. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + +

+ + + +``` + +## Examples + +### Multiple slides per view + +Setting the attribute `slides-per-view` is it possible to specify how many items are shown at a given time. +Using this feature, it may be also useful to advance multiple slides at once, even though not strictly necessary. +This can be done by using the `slides-per-move` attribute. + +```html preview + + Slide 1 + Slide 2 + Slide 3 + Slide 4 + Slide 5 + Slide 6 + +``` + +### Adding/removing slides + +The content of the carousel can be changed by either appending or removing items, the carousel will update itself automatically. + +```html preview + + Slide 1 + Slide 2 + Slide 3 + + + + + +``` + +### Vertical scrolling + +Setting the `orientation` attribute to `vertical`, will make the carousel laying out vertically, making it +possible for the user to scroll it up and down. In case of heterogeneous content, for example images of different sizes, +it's important to specify a predefined height to the carousel through CSS. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + +``` + +### Aspect ratio + +Use the `--aspect-ratio` custom property to customize the size of viewport in order to make it match a particular aspect ratio. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + 1 / 1 + 3 / 2 + 16 / 9 + + + +``` + +### Scroll hint + +Use `--scroll-padding` to add inline padding in horizontal carousels and block padding in vertical carousels. +Setting a padding, will make the closest slides visible, suggesting to the user that there are items that can +be scrolled. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + + +``` + +### Custom layout + +The appereance of the carousel can be easly customized through its slots or `part` attributes. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + + +``` + +### Gallery example + +The carousel has a set of API with which is possible to interact programmatically, for example it is possible to +use `next()` or `previous()` to go respectively to the next or the previous slide. + +When the active slide is changed, the `sl-slide-change` event is emitted providing the `index` of the slide. + +Using the API is possible to extend the carousel, for exmaple by syncing the active slide with a set of thumbnails, like in the example below. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + +
+
+ Thumbnail Photo by 1 + Thumbnail Photo by 2 + Thumbnail Photo by 3 + Thumbnail Photo by 4 + Thumbnail Photo by 5 +
+
+ + +``` + +[component-metadata:sl-carousel] diff --git a/src/components/carousel-item/carousel-item.styles.ts b/src/components/carousel-item/carousel-item.styles.ts new file mode 100644 index 00000000..c5014a0f --- /dev/null +++ b/src/components/carousel-item/carousel-item.styles.ts @@ -0,0 +1,28 @@ +import { css } from 'lit'; +import componentStyles from '../../styles/component.styles'; + +export default css` + ${componentStyles} + + :host { + display: flex; + + align-items: center; + justify-content: center; + flex-direction: column; + + scroll-snap-align: start; + scroll-snap-stop: always; + + width: 100%; + max-height: 100%; + + aspect-ratio: var(--aspect-ratio); + } + + ::slotted(img) { + width: 100%; + height: 100%; + object-fit: cover; + } +`; diff --git a/src/components/carousel-item/carousel-item.test.ts b/src/components/carousel-item/carousel-item.test.ts new file mode 100644 index 00000000..3cf84981 --- /dev/null +++ b/src/components/carousel-item/carousel-item.test.ts @@ -0,0 +1,17 @@ +import { expect, fixture, html } from '@open-wc/testing'; + +describe('', () => { + it('should render a component', async () => { + const el = await fixture(html` `); + + expect(el).to.exist; + }); + + it('should pass accessibility tests', async () => { + // Arrange + const el = await fixture(html`
`); + + // Assert + await expect(el).to.be.accessible(); + }); +}); diff --git a/src/components/carousel-item/carousel-item.ts b/src/components/carousel-item/carousel-item.ts new file mode 100644 index 00000000..e46869ab --- /dev/null +++ b/src/components/carousel-item/carousel-item.ts @@ -0,0 +1,42 @@ +import { html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import ShoelaceElement from '../../internal/shoelace-element'; +import styles from './carousel-item.styles'; +import type { CSSResultGroup } from 'lit'; + +/** + * @summary A carousel item represent a slide within a [carousel](/components/carousel). + * + * @since 2.0 + * @status experimental + * + * @slot - The carousel item's content.. + * + * @cssproperty --aspect-ratio - The aspect ratio of the slide. + * + */ +@customElement('sl-carousel-item') +export default class SlCarouselItem extends ShoelaceElement { + static styles: CSSResultGroup = styles; + + static isCarouselItem(node: Node) { + return node instanceof Element && node.getAttribute('aria-roledescription') === 'slide'; + } + + connectedCallback() { + super.connectedCallback(); + + this.setAttribute('role', 'listitem'); + this.setAttribute('aria-roledescription', 'slide'); + } + + render() { + return html` `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'sl-carousel-item': SlCarouselItem; + } +} diff --git a/src/components/carousel/autoplay-controller.ts b/src/components/carousel/autoplay-controller.ts new file mode 100644 index 00000000..4cd97879 --- /dev/null +++ b/src/components/carousel/autoplay-controller.ts @@ -0,0 +1,68 @@ +import type { ReactiveController, ReactiveElement } from 'lit'; + +/** + * A controller that repeatedly calls the specified callback with the provided interval time. + * The timer is automatically paused while the user is interacting with the component. + */ +export class AutoplayController implements ReactiveController { + private host: ReactiveElement; + private timerId = 0; + private tickCallback: () => void; + + paused = false; + stopped = true; + + constructor(host: ReactiveElement, tickCallback: () => void) { + host.addController(this); + + this.host = host; + this.tickCallback = tickCallback; + } + + hostConnected(): void { + this.host.addEventListener('mouseenter', this.pause); + this.host.addEventListener('mouseleave', this.resume); + this.host.addEventListener('focusin', this.pause); + this.host.addEventListener('focusout', this.resume); + this.host.addEventListener('touchstart', this.pause, { passive: true }); + this.host.addEventListener('touchend', this.resume); + } + + hostDisconnected(): void { + this.stop(); + + this.host.removeEventListener('mouseenter', this.pause); + this.host.removeEventListener('mouseleave', this.resume); + this.host.removeEventListener('focusin', this.pause); + this.host.removeEventListener('focusout', this.resume); + this.host.removeEventListener('touchstart', this.pause); + this.host.removeEventListener('touchend', this.resume); + } + + start(interval: number) { + this.stop(); + + this.stopped = false; + this.timerId = window.setInterval(() => { + if (!this.paused) { + this.tickCallback(); + } + }, interval); + } + + stop() { + clearInterval(this.timerId); + this.stopped = true; + this.host.requestUpdate(); + } + + pause = () => { + this.paused = true; + this.host.requestUpdate(); + }; + + resume = () => { + this.paused = false; + this.host.requestUpdate(); + }; +} diff --git a/src/components/carousel/carousel.styles.ts b/src/components/carousel/carousel.styles.ts new file mode 100644 index 00000000..ed2b4516 --- /dev/null +++ b/src/components/carousel/carousel.styles.ts @@ -0,0 +1,162 @@ +import { css } from 'lit'; +import componentStyles from '../../styles/component.styles'; + +export default css` + ${componentStyles} + + :host { + display: flex; + + --slide-gap: var(--sl-spacing-medium, 1rem); + --aspect-ratio: unset; + --scroll-padding: 0px; + } + + .carousel { + min-height: 100%; + min-width: 100%; + + display: grid; + + gap: var(--sl-spacing-medium); + + grid-template-columns: min-content 1fr min-content; + grid-template-rows: 1fr min-content; + grid-template-areas: + '. slides .' + '. pagination .'; + + align-items: center; + + position: relative; + } + + .carousel__pagination { + grid-area: pagination; + + display: flex; + justify-content: center; + gap: var(--sl-spacing-small); + } + + .carousel__slides { + height: 100%; + width: 100%; + + grid-area: slides; + + display: grid; + align-items: center; + justify-items: center; + + overflow: auto; + overscroll-behavior-x: contain; + scrollbar-width: none; + + aspect-ratio: calc(var(--aspect-ratio) * var(--slides-per-page)); + + --slide-size: calc((100% - (var(--slides-per-page) - 1) * var(--slide-gap)) / var(--slides-per-page)); + } + + @media (prefers-reduced-motion) { + :where(.carousel__slides) { + scroll-behavior: auto; + } + } + + .carousel__slides--horizontal { + grid-auto-flow: column; + grid-auto-columns: var(--slide-size); + grid-auto-rows: 100%; + column-gap: var(--slide-gap); + + scroll-snap-type: x mandatory; + + scroll-padding-inline: var(--scroll-padding); + padding-inline: var(--scroll-padding); + } + + .carousel__slides--vertical { + grid-auto-flow: row; + grid-auto-columns: 100%; + grid-auto-rows: var(--slide-size); + row-gap: var(--slide-gap); + + scroll-snap-type: y mandatory; + + scroll-padding-block: var(--scroll-padding); + padding-block: var(--scroll-padding); + } + + .carousel__slides--dragging, + .carousel__slides--dropping { + scroll-snap-type: unset; + } + + :host([vertical]) ::slotted(sl-carousel-item) { + height: 100%; + } + + .carousel__slides::-webkit-scrollbar { + display: none; + } + + .carousel__navigation { + grid-area: navigation; + display: contents; + + font-size: var(--sl-font-size-x-large); + } + + .carousel__navigation-button { + flex: 0 0 auto; + display: flex; + align-items: center; + background: none; + border: none; + border-radius: var(--sl-border-radius-medium); + font-size: inherit; + color: var(--sl-color-neutral-600); + padding: var(--sl-spacing-x-small); + cursor: pointer; + transition: var(--sl-transition-medium) color; + appearance: none; + } + + .carousel__navigation-button--disabled { + opacity: 0.5; + cursor: not-allowed; + } + + .carousel__navigation-button--disabled::part(base) { + pointer-events: none; + } + + .carousel__navigation-button--previous { + grid-column: 1; + grid-row: 1; + } + + .carousel__navigation-button--next { + grid-column: 3; + grid-row: 1; + } + + .carousel__pagination-item { + display: block; + cursor: pointer; + background: none; + border: 0; + border-radius: var(--sl-border-radius-circle); + width: var(--sl-spacing-small); + height: var(--sl-spacing-small); + background-color: var(--sl-color-neutral-300); + will-change: transform; + transition: var(--sl-transition-fast) ease-in; + } + + .carousel__pagination-item--active { + background-color: var(--sl-color-neutral-600); + transform: scale(1.2); + } +`; diff --git a/src/components/carousel/carousel.test.ts b/src/components/carousel/carousel.test.ts new file mode 100644 index 00000000..a78a754a --- /dev/null +++ b/src/components/carousel/carousel.test.ts @@ -0,0 +1,601 @@ +import { expect, fixture, html, oneEvent } from '@open-wc/testing'; +import sinon from 'sinon'; +import { clickOnElement } from '../../internal/test'; +import type SlCarousel from './carousel'; + +describe('', () => { + it('should render a carousel with default configuration', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Assert + expect(el).to.exist; + expect(el).to.have.attribute('role', 'region'); + expect(el).to.have.attribute('aria-roledescription', 'carousel'); + expect(el.shadowRoot!.querySelector('.carousel__navigation')).not.to.exist; + expect(el.shadowRoot!.querySelector('.carousel__pagination')).not.to.exist; + }); + + describe('when `autoplay` attribute is provided', () => { + let clock: sinon.SinonFakeTimers; + + beforeEach(() => { + clock = sinon.useFakeTimers({ + now: new Date() + }); + }); + + afterEach(() => { + clock.restore(); + }); + + it('should scroll forwards every `autoplay-interval` milliseconds', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + sinon.stub(el, 'next'); + + await el.updateComplete; + + // Act + clock.next(); + clock.next(); + + // Assert + expect(el.next).to.have.been.calledTwice; + }); + + it('should pause the autoplay while the user is interacting', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + sinon.stub(el, 'next'); + + await el.updateComplete; + + // Act + el.dispatchEvent(new Event('mouseenter')); + await el.updateComplete; + clock.next(); + clock.next(); + + // Assert + expect(el.next).not.to.have.been.called; + }); + }); + + describe('when `loop` attribute is provided', () => { + it('should create clones of the first and last slides', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Act + await el.updateComplete; + + // Assert + expect(el.firstElementChild).to.have.attribute('data-clone', '2'); + expect(el.lastElementChild).to.have.attribute('data-clone', '0'); + }); + + describe('and `slides-per-page` is provided', () => { + it('should create multiple clones', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Act + await el.updateComplete; + const clones = [...el.children].filter(child => child.hasAttribute('data-clone')); + + // Assert + expect(clones).to.have.lengthOf(4); + }); + }); + }); + + describe('when `pagination` attribute is provided', () => { + it('should render pagination controls', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Assert + expect(el).to.exist; + expect(el.shadowRoot!.querySelector('.carousel__navigation')).not.to.exist; + expect(el.shadowRoot!.querySelector('.carousel__pagination')).to.exist; + }); + + describe('and user clicks on a pagination button', () => { + it('should scroll the carousel to the nth slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + sinon.stub(el, 'goToSlide'); + await el.updateComplete; + + // Act + const paginationItem = el.shadowRoot!.querySelectorAll('.carousel__pagination-item')[2] as HTMLElement; + await clickOnElement(paginationItem); + + expect(el.goToSlide).to.have.been.calledWith(2); + }); + }); + }); + + describe('when `navigation` attribute is provided', () => { + it('should render navigation controls', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Assert + expect(el).to.exist; + expect(el.shadowRoot!.querySelector('.carousel__navigation')).to.exist; + expect(el.shadowRoot!.querySelector('.carousel__pagination')).not.to.exist; + }); + }); + + describe('when `slides-per-page` attribute is provided', () => { + it('should show multiple slides at a given time', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Act + await el.updateComplete; + + // Assert + expect(el.scrollContainer.style.getPropertyValue('--slides-per-page')).to.be.equal('2'); + }); + }); + + describe('when `slides-per-move` attribute is provided', () => { + it('should set the granularity of snapping', async () => { + // Arrange + const expectedSnapGranularity = 2; + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + Node 4 + + `); + + // Act + await el.updateComplete; + + // Assert + for (let i = 0; i < el.children.length; i++) { + const child = el.children[i] as HTMLElement; + + if (i % expectedSnapGranularity === 0) { + expect(child.style.getPropertyValue('scroll-snap-align')).to.be.equal(''); + } else { + expect(child.style.getPropertyValue('scroll-snap-align')).to.be.equal('none'); + } + } + }); + }); + + describe('when `orientation` attribute is provided', () => { + describe('and value is `vertical`', () => { + it('should make the scrollable along the y-axis', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + + `); + + // Act + await el.updateComplete; + + // Assert + expect(el.scrollContainer.scrollWidth).to.be.equal(el.scrollContainer.clientWidth); + expect(el.scrollContainer.scrollHeight).to.be.greaterThan(el.scrollContainer.clientHeight); + }); + }); + + describe('and value is `horizontal`', () => { + it('should make the scrollable along the x-axis', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + + `); + + // Act + await el.updateComplete; + + // Assert + expect(el.scrollContainer.scrollWidth).to.be.greaterThan(el.scrollContainer.clientWidth); + expect(el.scrollContainer.scrollHeight).to.be.equal(el.scrollContainer.clientHeight); + }); + }); + }); + + describe('Navigation controls', () => { + describe('when the user clicks the next button', () => { + it('should scroll to the next slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + const nextButton: HTMLElement = el.shadowRoot!.querySelector('.carousel__navigation-button--next')!; + sinon.stub(el, 'next'); + + await el.updateComplete; + + // Act + await clickOnElement(nextButton); + await el.updateComplete; + + // Assert + expect(el.next).to.have.been.calledOnce; + }); + + describe('and carousel is positioned on the last slide', () => { + it('should not scroll', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + const nextButton: HTMLElement = el.shadowRoot!.querySelector('.carousel__navigation-button--next')!; + sinon.stub(el, 'next'); + + el.goToSlide(2, 'auto'); + await oneEvent(el.scrollContainer, 'scrollend'); + await el.updateComplete; + + // Act + await clickOnElement(nextButton); + await el.updateComplete; + + // Assert + expect(nextButton).to.have.attribute('aria-disabled', 'true'); + expect(el.next).not.to.have.been.called; + }); + + describe('and `loop` attribute is provided', () => { + it('should scroll to the first slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + const nextButton: HTMLElement = el.shadowRoot!.querySelector('.carousel__navigation-button--next')!; + + el.goToSlide(2, 'auto'); + await oneEvent(el.scrollContainer, 'scrollend'); + await el.updateComplete; + + // Act + await clickOnElement(nextButton); + + // wait first scroll to clone + await oneEvent(el.scrollContainer, 'scrollend'); + // wait scroll to actual item + await oneEvent(el.scrollContainer, 'scrollend'); + + // Assert + expect(nextButton).to.have.attribute('aria-disabled', 'false'); + expect(el.activeSlide).to.be.equal(0); + }); + }); + }); + }); + + describe('and clicks the previous button', () => { + it('should scroll to the previous slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + // Go to the second slide so that the previous button will be enabled + el.goToSlide(1, 'auto'); + await oneEvent(el.scrollContainer, 'scrollend'); + await el.updateComplete; + + const previousButton: HTMLElement = el.shadowRoot!.querySelector('.carousel__navigation-button--previous')!; + sinon.stub(el, 'previous'); + + await el.updateComplete; + + // Act + await clickOnElement(previousButton); + await el.updateComplete; + + // Assert + expect(el.previous).to.have.been.calledOnce; + }); + + describe('and carousel is positioned on the first slide', () => { + it('should not scroll', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + const previousButton: HTMLElement = el.shadowRoot!.querySelector('.carousel__navigation-button--previous')!; + sinon.stub(el, 'previous'); + await el.updateComplete; + + // Act + await clickOnElement(previousButton); + await el.updateComplete; + + // Assert + expect(previousButton).to.have.attribute('aria-disabled', 'true'); + expect(el.previous).not.to.have.been.called; + }); + + describe('and `loop` attribute is provided', () => { + it('should scroll to the last slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + const previousButton: HTMLElement = el.shadowRoot!.querySelector('.carousel__navigation-button--previous')!; + await el.updateComplete; + + // Act + await clickOnElement(previousButton); + + // wait first scroll to clone + await oneEvent(el.scrollContainer, 'scrollend'); + // wait scroll to actual item + await oneEvent(el.scrollContainer, 'scrollend'); + + // Assert + expect(previousButton).to.have.attribute('aria-disabled', 'false'); + expect(el.activeSlide).to.be.equal(2); + }); + }); + }); + }); + }); + + describe('API', () => { + describe('#next', () => { + it('should scroll the carousel to the next slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + sinon.stub(el, 'goToSlide'); + await el.updateComplete; + + // Act + el.next(); + + expect(el.goToSlide).to.have.been.calledWith(2); + }); + }); + + describe('#previous', () => { + it('should scroll the carousel to the previous slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + sinon.stub(el, 'goToSlide'); + await el.updateComplete; + + // Act + el.previous(); + + expect(el.goToSlide).to.have.been.calledWith(-2); + }); + }); + + describe('#goToSlide', () => { + it('should scroll the carousel to the nth slide', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + await el.updateComplete; + + // Act + el.goToSlide(2); + await oneEvent(el.scrollContainer, 'scrollend'); + await el.updateComplete; + + // Assert + expect(el.activeSlide).to.be.equal(2); + }); + }); + }); + + describe('Accessibility', () => { + it('should pass accessibility tests', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + const pagination = el.shadowRoot!.querySelector('.carousel__pagination')!; + const navigation = el.shadowRoot!.querySelector('.carousel__navigation')!; + await el.updateComplete; + + // Assert + expect(el.scrollContainer).to.have.attribute('aria-busy', 'false'); + expect(el.scrollContainer).to.have.attribute('aria-live', 'polite'); + expect(el.scrollContainer).to.have.attribute('aria-atomic', 'true'); + + expect(pagination).to.have.attribute('role', 'tablist'); + expect(pagination).to.have.attribute('aria-controls', el.scrollContainer.id); + for (const paginationItem of pagination.querySelectorAll('.carousel__pagination-item')) { + expect(paginationItem).to.have.attribute('role', 'tab'); + expect(paginationItem).to.have.attribute('aria-selected'); + expect(paginationItem).to.have.attribute('aria-label'); + } + + for (const navigationItem of navigation.querySelectorAll('.carousel__navigation-item')) { + expect(navigationItem).to.have.attribute('aria-controls', el.scrollContainer.id); + expect(navigationItem).to.have.attribute('aria-disabled'); + expect(navigationItem).to.have.attribute('aria-label'); + } + + await expect(el).to.be.accessible(); + }); + + describe('when scrolling', () => { + it('should update aria-busy attribute', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + await el.updateComplete; + + // Act + el.goToSlide(2, 'smooth'); + await oneEvent(el.scrollContainer, 'scroll'); + await el.updateComplete; + + // Assert + expect(el.scrollContainer).to.have.attribute('aria-busy', 'true'); + + await oneEvent(el.scrollContainer, 'scrollend'); + await el.updateComplete; + expect(el.scrollContainer).to.have.attribute('aria-busy', 'false'); + }); + }); + + describe('when autoplay is active', () => { + it('should disable live announcement', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + await el.updateComplete; + + // Assert + expect(el.scrollContainer).to.have.attribute('aria-live', 'off'); + }); + + describe('and user is interacting with the carousel', () => { + it('should enable live announcement', async () => { + // Arrange + const el = await fixture(html` + + Node 1 + Node 2 + Node 3 + + `); + + await el.updateComplete; + + // Act + el.dispatchEvent(new Event('focusin')); + await el.updateComplete; + + // Assert + expect(el.scrollContainer).to.have.attribute('aria-live', 'polite'); + }); + }); + }); + }); +}); diff --git a/src/components/carousel/carousel.ts b/src/components/carousel/carousel.ts new file mode 100644 index 00000000..1b8563f8 --- /dev/null +++ b/src/components/carousel/carousel.ts @@ -0,0 +1,435 @@ +import { LocalizeController } from '@shoelace-style/localize'; +import { html } from 'lit'; +import { customElement, property, query, state } from 'lit/decorators.js'; +import { classMap } from 'lit/directives/class-map.js'; +import { map } from 'lit/directives/map.js'; +import { range } from 'lit/directives/range.js'; +import { styleMap } from 'lit/directives/style-map.js'; +import { when } from 'lit/directives/when.js'; +import { clamp } from 'src/internal/math'; +import { prefersReducedMotion } from '../../internal/animate'; +import ShoelaceElement from '../../internal/shoelace-element'; +import { watch } from '../../internal/watch'; +import SlCarouselItem from '../carousel-item/carousel-item'; +import '../icon/icon'; +import { AutoplayController } from './autoplay-controller'; +import styles from './carousel.styles'; +import { ScrollController } from './scroll-controller'; +import type { CSSResultGroup } from 'lit'; + +/** + * @summary A generic carousel used for displaying an arbitrary number of `sl-carousel-item` along horizontal or vertical axis. + * + * @since 2.0 + * @status experimental + * + * @dependency sl-icon + * + * @event {{ index: number, slide: SlCarouselItem }} sl-slide-change - Emitted when the active slide changes. + * + * @slot - The carousel's main content, where `sl-carousel-item`s are placed. + * @slot next-icon - Optional next icon to use instead of the default. Works best with ``. + * @slot previous-icon - Optional previous icon to use instead of the default. Works best with ``. + * + * @csspart base - The carousel's internal wrapper. + * @csspart scroll-container - The scroll container that wraps the slides. + * @csspart pagination - The pagination indicators wrapper. + * @csspart pagination-item - The pagination indicator. + * @csspart pagination-item--active - Applied when the item is active. + * @csspart navigation - The navigation wrapper. + * @csspart navigation-button - The navigation button. + * @csspart navigation-button--previous - Applied to the previous button. + * @csspart navigation-button--next - Applied to the next button. + * + * @cssproperty --slide-gap - The space between each slide. + * @cssproperty --aspect-ratio - The aspect ratio of each slide. + * @cssproperty --scroll-padding - The amount of padding to apply to the scrollport, useful to make visible the closest slides. + * + */ +@customElement('sl-carousel') +export default class SlCarousel extends ShoelaceElement { + static styles: CSSResultGroup = styles; + + /** When set, allows the user to navigate the carousel in the same direction indefinitely. */ + @property({ type: Boolean, reflect: true }) loop = false; + + /** When set, show the carousel's navigation. */ + @property({ type: Boolean, reflect: true }) navigation = false; + + /** When set, show the carousel's pagination indicators. */ + @property({ type: Boolean, reflect: true }) pagination = false; + + /** When set, the slides will scroll automatically when the user is not interacting with them. */ + @property({ type: Boolean, reflect: true }) autoplay = false; + + /** Specifies the amount of time, in milliseconds, between each automatic scroll. */ + @property({ type: Number, attribute: 'autoplay-interval' }) autoplayInterval = 3000; + + /** Specifies how many slides should be shown at a given time. */ + @property({ type: Number, attribute: 'slides-per-page' }) slidesPerPage = 1; + + /** Specifies the number of slides the carousel will advance when scrolling, useful when specifying a `slides-per-page` greather than one. */ + @property({ type: Number, attribute: 'slides-per-move' }) slidesPerMove = 1; + + /** Specifies the orientation in which the carousel will lay out. */ + @property() orientation: 'horizontal' | 'vertical' = 'horizontal'; + + /** When set, it is possible to scroll through the slides by dragging them with the mouse. */ + @property({ type: Boolean, reflect: true, attribute: 'mouse-dragging' }) mouseDragging = false; + + @query('slot:not([name])') defaultSlot: HTMLSlotElement; + @query('.carousel__slides') scrollContainer: HTMLElement; + @query('.carousel__pagination') paginationContainer: HTMLElement; + + // The index of the active slide + @state() activeSlide = 0; + + private autoplayController = new AutoplayController(this, () => { + this.next(); + }); + private scrollController = new ScrollController(this); + + private readonly slides = this.getElementsByTagName('sl-carousel-item'); + + // The interseection observer is used to determine which slide is displayed + private intersectionObserver: IntersectionObserver; + + // A map containig the state of all the slides + private readonly intersectionObserverEntries = new Map(); + + private readonly localize = new LocalizeController(this); + private mutationObserver: MutationObserver; + + connectedCallback(): void { + super.connectedCallback(); + + this.setAttribute('role', 'region'); + this.setAttribute('aria-roledescription', 'carousel'); + + const intersectionObserver = new IntersectionObserver( + (entries: IntersectionObserverEntry[]) => { + entries.forEach(entry => { + // Store all the entries in a map to be processed when the scroll ends + this.intersectionObserverEntries.set(entry.target, entry); + + const slide = entry.target; + slide.toggleAttribute('inert', !entry.isIntersecting); + slide.classList.toggle('--in-view', entry.isIntersecting); + slide.setAttribute('aria-hidden', entry.isIntersecting ? 'false' : 'true'); + }); + }, + { + root: this, + threshold: 0.6 + } + ); + this.intersectionObserver = intersectionObserver; + + // Store the initial state of each slide + intersectionObserver.takeRecords().forEach(entry => { + this.intersectionObserverEntries.set(entry.target, entry); + }); + } + + disconnectedCallback(): void { + super.disconnectedCallback(); + this.intersectionObserver.disconnect(); + this.mutationObserver.disconnect(); + } + + protected firstUpdated(): void { + this.initialiseSlides(); + this.mutationObserver = new MutationObserver(this.handleSlotChange.bind(this)); + this.mutationObserver.observe(this, { childList: true, subtree: false }); + } + + private getSlides({ excludeClones = true }: { excludeClones?: boolean } = {}) { + return [...this.slides].filter(slide => !excludeClones || !slide.hasAttribute('data-clone')); + } + + /** + * Move the carousel backwards by `slides-per-move` slides. + * + * @param behavior - The behavior used for scrolling. + */ + previous(behavior: ScrollBehavior = 'smooth') { + this.goToSlide(this.activeSlide - this.slidesPerMove, behavior); + } + + /** + * Move the carousel forwards by `slides-per-move` slides. + * + * @param behavior - The behavior used for scrolling. + */ + next(behavior: ScrollBehavior = 'smooth') { + this.goToSlide(this.activeSlide + this.slidesPerMove, behavior); + } + + /** + * Scrolls the carousel to the slide specified by `index`. + * + * @param index - The slide index. + * @param behavior - The behavior used for scrolling. + */ + goToSlide(index: number, behavior: ScrollBehavior = 'smooth') { + const { slidesPerPage, loop } = this; + + const slidesWithClones = this.getSlides({ excludeClones: false }); + const normalizedIndex = clamp(index + (loop ? slidesPerPage : 0), 0, slidesWithClones.length - 1); + const slide = slidesWithClones[normalizedIndex]; + + this.scrollContainer.scrollTo({ + left: slide.offsetLeft, + top: slide.offsetTop, + behavior: prefersReducedMotion() ? 'auto' : behavior + }); + } + + handleSlotChange(mutations: MutationRecord[]) { + const needsInitialisation = mutations.some(mutation => + [...mutation.addedNodes, ...mutation.removedNodes].some( + node => SlCarouselItem.isCarouselItem(node) && !(node as HTMLElement).hasAttribute('data-clone') + ) + ); + + // Reinitialise the carousel if a carousel item has been added and/or removed + if (needsInitialisation) { + this.initialiseSlides(); + this.requestUpdate(); + } + } + + handleScrollEnd() { + const slides = this.getSlides(); + const entries = [...this.intersectionObserverEntries.values()]; + + const firstIntersecting: IntersectionObserverEntry | undefined = entries.find(entry => entry.isIntersecting); + + if (this.loop && firstIntersecting?.target.hasAttribute('data-clone')) { + const clonePosition = Number(firstIntersecting.target.getAttribute('data-clone')); + // Scrolls to the original slide without animating, so the user won't notice that the position has changed + this.goToSlide(clonePosition, 'auto'); + + return; + } + + // Activate the first inetersecting slide + if (firstIntersecting) { + this.activeSlide = slides.indexOf(firstIntersecting.target as SlCarouselItem); + } + } + + @watch('loop', { waitUntilFirstUpdate: true }) + @watch('slidesPerPage', { waitUntilFirstUpdate: true }) + initialiseSlides() { + const slides = this.getSlides(); + const intersectionObserver = this.intersectionObserver; + + this.intersectionObserverEntries.clear(); + + // Removes all the cloned elements from the carousel + this.getSlides({ excludeClones: false }).forEach(slide => { + intersectionObserver.unobserve(slide); + + slide.classList.remove('--in-view'); + slide.classList.remove('--is-active'); + + if (slide.hasAttribute('data-clone')) { + slide.remove(); + } + }); + + if (this.loop) { + // Creates clones to be placed before and after the original elements + // so that it will be possible to simulate an infinite scrolling + const slidesPerPage = this.slidesPerPage; + const lastSlides = slides.slice(-slidesPerPage); + const firstSlides = slides.slice(0, slidesPerPage); + + lastSlides.reverse().forEach((slide, i) => { + const clone = slide.cloneNode(true) as HTMLElement; + clone.setAttribute('data-clone', String(slides.length - i - 1)); + this.prepend(clone); + }); + + firstSlides.forEach((slide, i) => { + const clone = slide.cloneNode(true) as HTMLElement; + clone.setAttribute('data-clone', String(i)); + this.append(clone); + }); + } + + this.getSlides({ excludeClones: false }).forEach(slide => { + intersectionObserver.observe(slide); + }); + + // Because the dom may be changed, restore the scroll position to the active slide + this.goToSlide(this.activeSlide, 'auto'); + } + + @watch('activeSlide') + handelSlideChange() { + const slides = this.getSlides(); + slides.forEach((slide, i) => { + slide.classList.toggle('--is-active', i === this.activeSlide); + }); + + // Do not fire any event on first render + if (this.hasUpdated) { + this.emit('sl-slide-change', { + detail: { + index: this.activeSlide, + slide: slides[this.activeSlide] + } + }); + } + } + + @watch('slidesPerMove') + handleSlidesPerMoveChange() { + const slides = this.getSlides({ excludeClones: false }); + + const slidesPerMove = this.slidesPerMove; + slides.forEach((slide, i) => { + const shouldSnap = Math.abs(i - slidesPerMove) % slidesPerMove === 0; + if (shouldSnap) { + slide.style.removeProperty('scroll-snap-align'); + } else { + slide.style.setProperty('scroll-snap-align', 'none'); + } + }); + } + + @watch('autoplay') + handleAutoplayChange() { + this.autoplayController.stop(); + if (this.autoplay) { + this.autoplayController.start(this.autoplayInterval); + } + } + + @watch('mouseDragging') + handleMouseDraggingChange() { + this.scrollController.mouseDragging = this.mouseDragging; + } + + private renderPagination = () => { + const slides = this.getSlides(); + const slidesCount = slides.length; + + const { activeSlide, slidesPerPage } = this; + const pagesCount = Math.ceil(slidesCount / slidesPerPage); + const currentPage = Math.floor(activeSlide / slidesPerPage); + + return html` + + `; + }; + + private renderNavigation = () => { + const { loop, activeSlide } = this; + const slides = this.getSlides(); + const slidesCount = slides.length; + + const prevEnabled = loop || activeSlide > 0; + const nextEnabled = loop || activeSlide < slidesCount - 1; + const isLtr = this.localize.dir() === 'ltr'; + + return html` + + `; + }; + + render() { + const { autoplayController, scrollController } = this; + + return html` + + `; + } +} + +declare global { + interface HTMLElementTagNameMap { + 'sl-carousel': SlCarousel; + } +} diff --git a/src/components/carousel/scroll-controller.ts b/src/components/carousel/scroll-controller.ts new file mode 100644 index 00000000..adb4468a --- /dev/null +++ b/src/components/carousel/scroll-controller.ts @@ -0,0 +1,176 @@ +import { prefersReducedMotion } from 'src/internal/animate'; +import { debounce } from 'src/internal/debounce'; +import { waitForEvent } from 'src/internal/event'; +import type { ReactiveController, ReactiveElement } from 'lit'; + +interface ScrollHost extends ReactiveElement { + scrollContainer: HTMLElement; +} + +/** + * A controller for handling scrolling and mouse dragging. + */ +export class ScrollController implements ReactiveController { + private host: T; + private pointers = new Set(); + + dragging = false; + scrolling = false; + mouseDragging = false; + + constructor(host: T) { + this.host = host; + + host.addController(this); + + this.handleScroll = this.handleScroll.bind(this); + this.handlePointerDown = this.handlePointerDown.bind(this); + this.handlePointerMove = this.handlePointerMove.bind(this); + this.handlePointerUp = this.handlePointerUp.bind(this); + this.handlePointerUp = this.handlePointerUp.bind(this); + this.handleTouchStart = this.handleTouchStart.bind(this); + this.handleTouchEnd = this.handleTouchEnd.bind(this); + } + + async hostConnected() { + const host = this.host; + await host.updateComplete; + + const scrollContainer = host.scrollContainer; + + scrollContainer.addEventListener('scroll', this.handleScroll, { passive: true }); + scrollContainer.addEventListener('pointerdown', this.handlePointerDown); + scrollContainer.addEventListener('pointerup', this.handlePointerUp); + scrollContainer.addEventListener('pointercancel', this.handlePointerUp); + scrollContainer.addEventListener('touchstart', this.handleTouchStart, { passive: true }); + scrollContainer.addEventListener('touchend', this.handleTouchEnd); + } + + hostDisconnected(): void { + const host = this.host; + const scrollContainer = host.scrollContainer; + + scrollContainer.removeEventListener('scroll', this.handleScroll); + scrollContainer.removeEventListener('pointerdown', this.handlePointerDown); + scrollContainer.removeEventListener('pointerup', this.handlePointerUp); + scrollContainer.removeEventListener('pointercancel', this.handlePointerUp); + scrollContainer.removeEventListener('touchstart', this.handleTouchStart); + scrollContainer.removeEventListener('touchend', this.handleTouchEnd); + } + + handleScroll() { + if (!this.scrolling) { + this.scrolling = true; + this.host.requestUpdate(); + } + this.handleScrollEnd(); + } + + @debounce(100) + handleScrollEnd() { + if (!this.pointers.size) { + this.scrolling = false; + this.host.scrollContainer.dispatchEvent( + new CustomEvent('scrollend', { + bubbles: false, + cancelable: false + }) + ); + this.host.requestUpdate(); + } + } + + handlePointerDown(event: PointerEvent) { + if (event.pointerType === 'touch') { + return; + } + + const scrollContainer = this.host.scrollContainer; + this.pointers.add(event.pointerId); + scrollContainer.setPointerCapture(event.pointerId); + + if (this.mouseDragging && this.pointers.size === 1) { + event.preventDefault(); + scrollContainer.addEventListener('pointermove', this.handlePointerMove); + } + } + + handlePointerMove(event: PointerEvent) { + const host = this.host; + const scrollContainer = host.scrollContainer; + + if (scrollContainer.hasPointerCapture(event.pointerId)) { + if (!this.dragging) { + this.handleDragStart(); + } + + this.handleDrag(event); + } + } + + handlePointerUp(event: PointerEvent) { + const host = this.host; + const scrollContainer = host.scrollContainer; + + this.pointers.delete(event.pointerId); + scrollContainer.releasePointerCapture(event.pointerId); + + if (this.pointers.size === 0) { + this.handleDragEnd(); + } + } + + handleTouchEnd(event: TouchEvent) { + for (const touch of event.changedTouches) { + this.pointers.delete(touch.identifier); + } + } + + handleTouchStart(event: TouchEvent) { + for (const touch of event.touches) { + this.pointers.add(touch.identifier); + } + } + + handleDragStart() { + const host = this.host; + + this.dragging = true; + host.scrollContainer.style.setProperty('scroll-snap-type', 'unset'); + host.requestUpdate(); + } + + handleDrag(event: PointerEvent) { + this.host.scrollContainer.scrollBy({ + left: -event.movementX, + top: -event.movementY + }); + } + + async handleDragEnd() { + const host = this.host; + const scrollContainer = host.scrollContainer; + + scrollContainer.removeEventListener('pointermove', this.handlePointerMove); + this.dragging = false; + + const startLeft = scrollContainer.scrollLeft; + const startTop = scrollContainer.scrollTop; + + scrollContainer.style.removeProperty('scroll-snap-type'); + const finalLeft = scrollContainer.scrollLeft; + const finalTop = scrollContainer.scrollTop; + + scrollContainer.style.setProperty('scroll-snap-type', 'unset'); + scrollContainer.scrollTo({ left: startLeft, top: startTop, behavior: 'auto' }); + scrollContainer.scrollTo({ left: finalLeft, top: finalTop, behavior: prefersReducedMotion() ? 'auto' : 'smooth' }); + + if (this.scrolling) { + await waitForEvent(scrollContainer, 'scrollend'); + } + + scrollContainer.style.removeProperty('scroll-snap-type'); + + host.requestUpdate(); + } +} diff --git a/src/internal/debounce.ts b/src/internal/debounce.ts new file mode 100644 index 00000000..72f618a9 --- /dev/null +++ b/src/internal/debounce.ts @@ -0,0 +1,30 @@ +// @debounce decorator +// +// Delays the execution until the provided delay in milliseconds has +// passed since the last time the function has been called. +// +// +// Usage: +// +// @debounce(1000) +// handleInput() { +// ... +// } +// + +// Each class instance will need to store its timer id, so this unique symbol will be used as property key. +const TIMERID_KEY = Symbol(); + +export const debounce = (delay: number) => { + return (_target: T, _propertyKey: string, descriptor: PropertyDescriptor) => { + const fn = descriptor.value as (this: T & { [TIMERID_KEY]: number }, ...args: unknown[]) => unknown; + + descriptor.value = function (this: ThisParameterType, ...args: Parameters) { + clearTimeout(this[TIMERID_KEY]); + + this[TIMERID_KEY] = window.setTimeout(() => { + fn.apply(this, args); + }, delay); + }; + }; +}; diff --git a/src/shoelace.ts b/src/shoelace.ts index a325a42c..0b20a5a2 100644 --- a/src/shoelace.ts +++ b/src/shoelace.ts @@ -9,6 +9,8 @@ export { default as SlBreadcrumbItem } from './components/breadcrumb-item/breadc export { default as SlButton } from './components/button/button'; export { default as SlButtonGroup } from './components/button-group/button-group'; export { default as SlCard } from './components/card/card'; +export { default as SlCarousel } from './components/carousel/carousel'; +export { default as SlCarouselItem } from './components/carousel-item/carousel-item'; export { default as SlCheckbox } from './components/checkbox/checkbox'; export { default as SlColorPicker } from './components/color-picker/color-picker'; export { default as SlDetails } from './components/details/details'; diff --git a/src/translations/en-gb.ts b/src/translations/en-gb.ts index 0202cf4b..5dff2e58 100644 --- a/src/translations/en-gb.ts +++ b/src/translations/en-gb.ts @@ -24,7 +24,10 @@ const translation: Translation = { scrollToStart: 'Scroll to start', selectAColorFromTheScreen: 'Select a colour from the screen', showPassword: 'Show password', - toggleColorFormat: 'Toggle colour format' + toggleColorFormat: 'Toggle colour format', + goToCarouselNextSlide: 'Go to next slide in carousel', + goToCarouselPreviousSlide: 'Go to previous slide in carousel', + goToCarouselSlide: (slide, count) => `Go to slide ${slide} of ${count} in carousel` }; registerTranslation(translation); diff --git a/src/translations/en.ts b/src/translations/en.ts index 2938b408..19d2afc5 100644 --- a/src/translations/en.ts +++ b/src/translations/en.ts @@ -24,7 +24,10 @@ const translation: Translation = { scrollToStart: 'Scroll to start', selectAColorFromTheScreen: 'Select a color from the screen', showPassword: 'Show password', - toggleColorFormat: 'Toggle color format' + toggleColorFormat: 'Toggle color format', + goToCarouselNextSlide: 'Go to next slide in carousel', + goToCarouselPreviousSlide: 'Go to previous slide in carousel', + goToCarouselSlide: (slide, count) => `Go to slide ${slide} of ${count} in carousel` }; registerTranslation(translation); diff --git a/src/utilities/localize.ts b/src/utilities/localize.ts index 88662b5d..de94e781 100644 --- a/src/utilities/localize.ts +++ b/src/utilities/localize.ts @@ -28,4 +28,9 @@ export interface Translation extends DefaultTranslation { selectAColorFromTheScreen: string; showPassword: string; toggleColorFormat: string; + + // TODO: upate translations for all languages + goToCarouselNextSlide?: string; + goToCarouselPreviousSlide?: string; + goToCarouselSlide?: (slide: number, count: number) => string; } From 48ccc95dd99b92bf791521c2ff03057630f93751 Mon Sep 17 00:00:00 2001 From: alenaksu Date: Sun, 8 Jan 2023 13:36:24 +0100 Subject: [PATCH 02/53] chore: add react examples --- docs/components/carousel.md | 634 +++++++++++++++++++++++++++++++++++- 1 file changed, 619 insertions(+), 15 deletions(-) diff --git a/docs/components/carousel.md b/docs/components/carousel.md index d8a2c2f5..24041d1f 100644 --- a/docs/components/carousel.md +++ b/docs/components/carousel.md @@ -97,6 +97,166 @@ Carousels consist of optional navigation arrows to go backwards and forwards, as ``` +```jsx react +import { useReducer } from 'react'; +import { + SlCarousel, + SlCarouselItem, + SlSwitch, + SlInput, + SlSelect, + SlMenuItem +} from '@shoelace-style/shoelace/dist/react'; + +const css = ` + sl-carousel { + --aspect-ratio: 3 / 2; + } + + .carousel-options { + display: flex; + flex-wrap: wrap; + align-items: end; + gap: 1rem; + } +`; + +const App = () => { + const [state, updateState] = useReducer( + (state, event) => { + console.log(event); + }, + { + loop: true, + pagination: true, + navigation: true, + autoplay: true, + mouseDragging: true, + slidesPerPage: 1, + slidesPerMove: 1, + orientation: 'horizontal' + } + ); + return ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + +
+
+ + Loop + + + Show navigation + + + Show pagination + + + Autoplay (3s) + + + Mouse dragging + +
+
+ + + + Horizontal + Vertical + +
+
+ + + ); +}; +``` + + + ## Examples ### Multiple slides per view @@ -116,6 +276,21 @@ This can be done by using the `slides-per-move` attribute.
``` +```jsx react +import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; + +const App = () => ( + + Slide 1 + Slide 2 + Slide 3 + Slide 4 + Slide 5 + Slide 6 + +); +``` + ### Adding/removing slides The content of the carousel can be changed by either appending or removing items, the carousel will update itself automatically. @@ -174,6 +349,57 @@ The content of the carousel can be changed by either appending or removing items ``` +```jsx react +import { useState } from 'react'; +import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; + +const css = ` + .dynamic-carousel { + --aspect-ratio: 3 / 2; + } + + .dynamic-carousel sl-carousel-item { + flex: 0 0 100%; + display: flex; + align-items: center; + justify-content: center; + color: white; + font-size: var(--sl-font-size-2x-large); + } +`; + +const App = () => { + const [slides, setSlides] = useState(['#204ed8', '#be133d', '#6e28d9']); + + const rnd = (min, max) => Math.round(Math.random() * (max - min)) + min; + const getRandomColor = () => `rgb(${rnd(50, 150)}, ${rnd(50, 150)}, ${rnd(50, 150)})`; + + const addSlide = () => { + setSlides([...slides, getRandomColor()]); + }; + + const removeSlide = () => { + setSlides(slides.slice(0, -1)); + }; + + return ( + <> + + {slides.map((color, i) => ( + Slide {i} + ))} + + +
+ Add slide + Remove slide +
+ + + ); +}; +``` + ### Vertical scrolling Setting the `orientation` attribute to `vertical`, will make the carousel laying out vertically, making it @@ -233,6 +459,67 @@ it's important to specify a predefined height to the carousel through CSS. ``` +```jsx react +import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; + +const css = ` + .vertical { + max-height: 400px; + } + + .vertical::part(base) { + grid-template-areas: 'slides slides pagination'; + } + + .vertical::part(pagination) { + flex-direction: column; + } + + .vertical::part(navigation) { + transform: rotate(90deg); + display: flex; + } +`; + +const App = () => ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + +); +``` + ### Aspect ratio Use the `--aspect-ratio` custom property to customize the size of viewport in order to make it match a particular aspect ratio. @@ -290,6 +577,67 @@ Use the `--aspect-ratio` custom property to customize the size of viewport in or ``` +```jsx react +import { useState } from 'react'; +import { SlCarousel, SlCarouselItem, SlDivider, SlSelect, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; + +const App = () => { + const [aspectRatio, setAspectRatio] = useState('3/2'); + + return ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + setAspectRatio(event.target.value)} + > + 1 / 1 + 3 / 2 + 16 / 9 + + + + + ); +}; +``` + ### Scroll hint Use `--scroll-padding` to add inline padding in horizontal carousels and block padding in vertical carousels. @@ -345,6 +693,68 @@ be scrolled. ``` +```jsx react +import { useState } from 'react'; +import { SlCarousel, SlCarouselItem, SlDivider, SlRange } from '@shoelace-style/shoelace/dist/react'; + +const App = () => { + const [scrollPadding, setScrollPadding] = useState(10); + + return ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + setScrollPadding(event.target.valueAsNumber)} + /> + + + ); +}; +``` + ### Custom layout The appereance of the carousel can be easly customized through its slots or `part` attributes. @@ -431,6 +841,95 @@ The appereance of the carousel can be easly customized through its slots or `par ``` +```jsx react +import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; + +const css = ` + .custom-layout::part(base) { + grid-template-areas: + 'slides slides slides' + 'slides slides slides'; + } + + .custom-layout::part(pagination) { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + padding: var(--sl-spacing-large); + background: linear-gradient(0deg, rgba(0, 0, 0, 0.8) 5%, rgba(0, 0, 0, 0.2) 75%, rgba(0, 0, 0, 0) 100%); + } + + .custom-layout::part(pagination-item) { + height: 5px; + width: var(--sl-spacing-large); + border-radius: var(--sl-border-radius-pill); + background-color: #fff; + } + + .custom-layout::part(pagination-item--active) { + background-color: var(--sl-color-primary-400); + width: var(--sl-spacing-x-large); + } + + .custom-layout::part(navigation-button) { + margin: var(--sl-spacing-large); + border-radius: var(--sl-border-radius-circle); + font-weight: var(--sl-font-weight-bold); + color: var(--sl-color-neutral-1000); + background: var(--sl-color-neutral-0); + opacity: 0.6; + transition: var(--sl-transition-medium) opacity; + } + + .custom-layout::part(navigation-button):focus, + .custom-layout::part(navigation-button):hover { + opacity: 1; + } +`; + +const App = () => ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + + +); +``` + ### Gallery example The carousel has a set of API with which is possible to interact programmatically, for example it is possible to @@ -483,36 +982,21 @@ Using the API is possible to extend the carousel, for exmaple by syncing the act Thumbnail Photo by 2 Thumbnail Photo by 3 Thumbnail Photo by 4 Thumbnail Photo by 5 @@ -587,4 +1071,124 @@ Using the API is possible to extend the carousel, for exmaple by syncing the act ``` +```jsx react +import { useRef } from 'react'; +import { SlCarousel, SlCarouselItem, SlDivider, SlRange } from '@shoelace-style/shoelace/dist/react'; + +const css = ` + .carousel-thumbnails { + --slide-aspect-ratio: 3 / 2; + } + + .thumbnails { + display: flex; + justify-content: center; + } + + .thumbnails__scroller { + display: flex; + gap: var(--sl-spacing-small); + overflow-x: auto; + scrollbar-width: none; + scroll-behavior: smooth; + scroll-padding: var(--sl-spacing-small); + } + + .thumbnails__scroller::-webkit-scrollbar { + display: none; + } + + .thumbnails__image { + width: 64px; + height: 64px; + object-fit: cover; + + opacity: 0.3; + will-change: opacity; + transition: 250ms opacity; + + cursor: pointer; + } + + .thumbnails__image.active { + opacity: 1; + } +`; + +const images = [ + { + src: '/assets/examples/carousel/adam-kool-ndN00KmbJ1c-unsplash.jpg', + alt: 'The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash' + }, + { + src: '/assets/examples/carousel/thomas-kelley-JoH60FhTp50-unsplash.jpg', + alt: 'A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash' + }, + { + src: '/assets/examples/carousel/leonard-cotte-c1Jp-fo53U8-unsplash.jpg', + alt: 'The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash' + }, + { + src: '/assets/examples/carousel/sapan-patel-i9Q9bc-WgfE-unsplash.jpg', + alt: 'A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash' + }, + { + src: '/assets/examples/carousel/v2osk-1Z2niiBPg5A-unsplash.jpg', + alt: 'A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash' + } +]; + +const App = () => { + const carouselRef = useRef(); + const thumbnailsRef = useRef(); + const [currentSlide, setCurrentSlide] = useState(0); + + useEffect(() => { + const thumbnails = Array.from(thumbnailsRef.current.querySelectorAll('.thumbnails__image')); + + thumbnails[currentSlide]..scrollIntoView({ + block: 'nearest' + }); + }, [currentSlide]); + + const handleThumbnailClick = (index) => { + carouselRef.current.goToSlide(index); + } + + const handleSlideChange = (event) => { + const slideIndex = e.detail.index; + setCurrentSlide(slideIndex); + } + + return ( + <> + + {images.map({ src, alt }) => ( + + {alt} + + )} + + +
+
+ {images.map({ src, alt }, i) => ( + {`Thumbnail handleThumbnailClick(i)} + src={src} + /> + )} +
+
+ + + ); +}; +``` + [component-metadata:sl-carousel] From 0a555c53c736a1a0ed9e31d0d6e9403cb6385f1f Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Tue, 7 Feb 2023 17:20:01 -0500 Subject: [PATCH 03/53] Export typescript types for events with details --- src/components/menu/menu.test.ts | 10 +++++----- src/components/tab-group/tab-group.test.ts | 13 +++++-------- src/events/events.ts | 7 +++++++ src/events/sl-hover.ts | 6 ++++++ src/events/sl-mutation.ts | 3 +++ src/events/sl-resize.ts | 3 +++ src/events/sl-select.ts | 5 +++++ src/events/sl-selection-change.ts | 5 +++++ src/events/sl-tab-hide.ts | 3 +++ src/events/sl-tab-show.ts | 3 +++ src/shoelace.ts | 3 +++ 11 files changed, 48 insertions(+), 13 deletions(-) create mode 100644 src/events/events.ts create mode 100644 src/events/sl-hover.ts create mode 100644 src/events/sl-mutation.ts create mode 100644 src/events/sl-resize.ts create mode 100644 src/events/sl-select.ts create mode 100644 src/events/sl-selection-change.ts create mode 100644 src/events/sl-tab-hide.ts create mode 100644 src/events/sl-tab-show.ts diff --git a/src/components/menu/menu.test.ts b/src/components/menu/menu.test.ts index 358bb128..ea916fd4 100644 --- a/src/components/menu/menu.test.ts +++ b/src/components/menu/menu.test.ts @@ -4,7 +4,7 @@ import { html } from 'lit'; import { sendKeys } from '@web/test-runner-commands'; import sinon from 'sinon'; import type SlMenu from './menu'; -import type SlMenuItem from '../menu-item/menu-item'; +import type SlSelectEvent from '../../events/sl-select'; describe('', () => { it('emits sl-select with the correct event detail when clicking an item', async () => { @@ -17,8 +17,8 @@ describe('', () => { `); const item2 = menu.querySelectorAll('sl-menu-item')[1]; - const selectHandler = sinon.spy((event: CustomEvent) => { - const item = event.detail.item as SlMenuItem; // eslint-disable-line + const selectHandler = sinon.spy((event: SlSelectEvent) => { + const item = event.detail.item; if (item !== item2) { expect.fail('Incorrect event detail emitted with sl-select'); } @@ -40,8 +40,8 @@ describe('', () => { `); const [item1, item2] = menu.querySelectorAll('sl-menu-item'); - const selectHandler = sinon.spy((event: CustomEvent) => { - const item = event.detail.item as SlMenuItem; // eslint-disable-line + const selectHandler = sinon.spy((event: SlSelectEvent) => { + const item = event.detail.item; if (item !== item2) { expect.fail('Incorrect item selected'); } diff --git a/src/components/tab-group/tab-group.test.ts b/src/components/tab-group/tab-group.test.ts index aef6b151..215928e8 100644 --- a/src/components/tab-group/tab-group.test.ts +++ b/src/components/tab-group/tab-group.test.ts @@ -9,16 +9,13 @@ import type { HTMLTemplateResult } from 'lit'; import type SlTab from '../tab/tab'; import type SlTabGroup from './tab-group'; import type SlTabPanel from '../tab-panel/tab-panel'; +import type SlTabShowEvent from '../../events/sl-tab-show'; interface ClientRectangles { body?: DOMRect; navigation?: DOMRect; } -interface CustomEventPayload { - name: string; -} - const waitForScrollButtonsToBeRendered = async (tabGroup: SlTabGroup): Promise => { await waitUntil(() => { const scrollButtons = tabGroup.shadowRoot?.querySelectorAll('sl-icon-button'); @@ -57,9 +54,9 @@ const expectOnlyOneTabPanelToBeActive = async (container: HTMLElement, dataTestI expect(activeTabPanels[0]).to.have.attribute('data-testid', dataTestIdOfActiveTab); }; -const expectPromiseToHaveName = async (showEventPromise: Promise, expectedName: string) => { +const expectPromiseToHaveName = async (showEventPromise: Promise, expectedName: string) => { const showEvent = await showEventPromise; - expect((showEvent.detail as CustomEventPayload).name).to.equal(expectedName); + expect(showEvent.detail.name).to.equal(expectedName); }; const waitForHeaderToBeActive = async (container: HTMLElement, headerTestId: string): Promise => { @@ -306,7 +303,7 @@ describe('', () => { const customHeader = queryByTestId(tabGroup, 'custom-header'); expect(customHeader).not.to.have.attribute('active'); - const showEventPromise = oneEvent(tabGroup, 'sl-tab-show') as Promise; + const showEventPromise = oneEvent(tabGroup, 'sl-tab-show') as Promise; await action(); expect(customHeader).to.have.attribute('active'); @@ -405,7 +402,7 @@ describe('', () => { const customHeader = queryByTestId(tabGroup, 'custom-header'); expect(customHeader).not.to.have.attribute('active'); - const showEventPromise = oneEvent(tabGroup, 'sl-tab-show') as Promise; + const showEventPromise = oneEvent(tabGroup, 'sl-tab-show') as Promise; await sendKeys({ press: 'ArrowRight' }); await aTimeout(0); expect(generalHeader).to.have.attribute('active'); diff --git a/src/events/events.ts b/src/events/events.ts new file mode 100644 index 00000000..a4b53b0c --- /dev/null +++ b/src/events/events.ts @@ -0,0 +1,7 @@ +export { default as SlHoverEvent } from './sl-hover'; +export { default as SlMutationEvent } from './sl-mutation'; +export { default as SlResizeEvent } from './sl-resize'; +export { default as SlSelectEvent } from './sl-select'; +export { default as SlSelectionChangeEvent } from './sl-selection-change'; +export { default as SlTabHideEvent } from './sl-tab-hide'; +export { default as SlTabShowEvent } from './sl-tab-show'; diff --git a/src/events/sl-hover.ts b/src/events/sl-hover.ts new file mode 100644 index 00000000..ad985add --- /dev/null +++ b/src/events/sl-hover.ts @@ -0,0 +1,6 @@ +type SlHoverEvent = CustomEvent<{ + phase: 'start' | 'move' | 'end'; + value: number; +}>; + +export default SlHoverEvent; diff --git a/src/events/sl-mutation.ts b/src/events/sl-mutation.ts new file mode 100644 index 00000000..4b4b80f5 --- /dev/null +++ b/src/events/sl-mutation.ts @@ -0,0 +1,3 @@ +type SlMutationEvent = CustomEvent<{ mutationList: MutationRecord[] }>; + +export default SlMutationEvent; diff --git a/src/events/sl-resize.ts b/src/events/sl-resize.ts new file mode 100644 index 00000000..5d2a2a23 --- /dev/null +++ b/src/events/sl-resize.ts @@ -0,0 +1,3 @@ +type SlResizeEvent = CustomEvent<{ entries: ResizeObserverEntry[] }>; + +export default SlResizeEvent; diff --git a/src/events/sl-select.ts b/src/events/sl-select.ts new file mode 100644 index 00000000..ead6b9b0 --- /dev/null +++ b/src/events/sl-select.ts @@ -0,0 +1,5 @@ +import type SlMenuItem from '../components/menu-item/menu-item'; + +type SlSelectEvent = CustomEvent<{ item: SlMenuItem }>; + +export default SlSelectEvent; diff --git a/src/events/sl-selection-change.ts b/src/events/sl-selection-change.ts new file mode 100644 index 00000000..0089bfef --- /dev/null +++ b/src/events/sl-selection-change.ts @@ -0,0 +1,5 @@ +import type SlTreeItem from '../components/tree-item/tree-item'; + +type SlSelectionChangeEvent = CustomEvent<{ selection: SlTreeItem[] }>; + +export default SlSelectionChangeEvent; diff --git a/src/events/sl-tab-hide.ts b/src/events/sl-tab-hide.ts new file mode 100644 index 00000000..edc30fbc --- /dev/null +++ b/src/events/sl-tab-hide.ts @@ -0,0 +1,3 @@ +type SlTabHideEvent = CustomEvent<{ name: string }>; + +export default SlTabHideEvent; diff --git a/src/events/sl-tab-show.ts b/src/events/sl-tab-show.ts new file mode 100644 index 00000000..a5248e92 --- /dev/null +++ b/src/events/sl-tab-show.ts @@ -0,0 +1,3 @@ +type SlTabShowEvent = CustomEvent<{ name: string }>; + +export default SlTabShowEvent; diff --git a/src/shoelace.ts b/src/shoelace.ts index a325a42c..6f3ee969 100644 --- a/src/shoelace.ts +++ b/src/shoelace.ts @@ -60,3 +60,6 @@ export { default as SlOption } from './components/option/option'; export * from './utilities/animation'; export * from './utilities/base-path'; export * from './utilities/icon-library'; + +// Events +export * from './events/events'; From 358ad7bb308cad60cd6719a57a18efabd0be12ba Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Tue, 7 Feb 2023 17:44:56 -0500 Subject: [PATCH 04/53] Fixed type in documentation (TreeItem[] -> SlTreeItem[]) --- src/components/tree/tree.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/tree/tree.ts b/src/components/tree/tree.ts index 8fac04a7..60878355 100644 --- a/src/components/tree/tree.ts +++ b/src/components/tree/tree.ts @@ -54,7 +54,7 @@ function syncCheckboxes(changedTreeItem: SlTreeItem, initialSync = false) { * @status stable * @since 2.0 * - * @event {{ selection: TreeItem[] }} sl-selection-change - Emitted when a tree item is selected or deselected. + * @event {{ selection: SlTreeItem[] }} sl-selection-change - Emitted when a tree item is selected or deselected. * * @slot - The default slot. * @slot expand-icon - The icon to show when the tree item is expanded. Works best with ``. From a3a802a37b0b7ce346c473437fb45fbcc783a74a Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 13:14:43 -0500 Subject: [PATCH 05/53] Register events with global event map --- src/events/sl-hover.ts | 6 ++++++ src/events/sl-mutation.ts | 6 ++++++ src/events/sl-resize.ts | 6 ++++++ src/events/sl-select.ts | 6 ++++++ src/events/sl-selection-change.ts | 6 ++++++ src/events/sl-tab-hide.ts | 6 ++++++ src/events/sl-tab-show.ts | 6 ++++++ 7 files changed, 42 insertions(+) diff --git a/src/events/sl-hover.ts b/src/events/sl-hover.ts index ad985add..289f77b6 100644 --- a/src/events/sl-hover.ts +++ b/src/events/sl-hover.ts @@ -3,4 +3,10 @@ type SlHoverEvent = CustomEvent<{ value: number; }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-hover': SlHoverEvent; + } +} + export default SlHoverEvent; diff --git a/src/events/sl-mutation.ts b/src/events/sl-mutation.ts index 4b4b80f5..f9b80d0a 100644 --- a/src/events/sl-mutation.ts +++ b/src/events/sl-mutation.ts @@ -1,3 +1,9 @@ type SlMutationEvent = CustomEvent<{ mutationList: MutationRecord[] }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-mutation': SlMutationEvent; + } +} + export default SlMutationEvent; diff --git a/src/events/sl-resize.ts b/src/events/sl-resize.ts index 5d2a2a23..a4fc9be3 100644 --- a/src/events/sl-resize.ts +++ b/src/events/sl-resize.ts @@ -1,3 +1,9 @@ type SlResizeEvent = CustomEvent<{ entries: ResizeObserverEntry[] }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-resize': SlResizeEvent; + } +} + export default SlResizeEvent; diff --git a/src/events/sl-select.ts b/src/events/sl-select.ts index ead6b9b0..cfed91c8 100644 --- a/src/events/sl-select.ts +++ b/src/events/sl-select.ts @@ -2,4 +2,10 @@ import type SlMenuItem from '../components/menu-item/menu-item'; type SlSelectEvent = CustomEvent<{ item: SlMenuItem }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-select': SlSelectEvent; + } +} + export default SlSelectEvent; diff --git a/src/events/sl-selection-change.ts b/src/events/sl-selection-change.ts index 0089bfef..07920c5e 100644 --- a/src/events/sl-selection-change.ts +++ b/src/events/sl-selection-change.ts @@ -2,4 +2,10 @@ import type SlTreeItem from '../components/tree-item/tree-item'; type SlSelectionChangeEvent = CustomEvent<{ selection: SlTreeItem[] }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-selection-change': SlSelectionChangeEvent; + } +} + export default SlSelectionChangeEvent; diff --git a/src/events/sl-tab-hide.ts b/src/events/sl-tab-hide.ts index edc30fbc..16c6a0b5 100644 --- a/src/events/sl-tab-hide.ts +++ b/src/events/sl-tab-hide.ts @@ -1,3 +1,9 @@ type SlTabHideEvent = CustomEvent<{ name: string }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-tab-hide': SlTabHideEvent; + } +} + export default SlTabHideEvent; diff --git a/src/events/sl-tab-show.ts b/src/events/sl-tab-show.ts index a5248e92..59920eaa 100644 --- a/src/events/sl-tab-show.ts +++ b/src/events/sl-tab-show.ts @@ -1,3 +1,9 @@ type SlTabShowEvent = CustomEvent<{ name: string }>; +declare global { + interface GlobalEventHandlersEventMap { + 'sl-tab-show': SlTabShowEvent; + } +} + export default SlTabShowEvent; From 9dab91e0d132e366617dbcaf31f97d4bef8e8348 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 13:17:12 -0500 Subject: [PATCH 06/53] Added event for sl-error --- src/events/events.ts | 1 + src/events/sl-error.ts | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 src/events/sl-error.ts diff --git a/src/events/events.ts b/src/events/events.ts index a4b53b0c..3481c5ea 100644 --- a/src/events/events.ts +++ b/src/events/events.ts @@ -5,3 +5,4 @@ export { default as SlSelectEvent } from './sl-select'; export { default as SlSelectionChangeEvent } from './sl-selection-change'; export { default as SlTabHideEvent } from './sl-tab-hide'; export { default as SlTabShowEvent } from './sl-tab-show'; +export { default as SlErrorEvent } from './sl-error'; diff --git a/src/events/sl-error.ts b/src/events/sl-error.ts new file mode 100644 index 00000000..346a7283 --- /dev/null +++ b/src/events/sl-error.ts @@ -0,0 +1,9 @@ +type SlErrorEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-error': SlErrorEvent; + } +} + +export default SlErrorEvent; From b7b73ea3a9159fbd1b529e094c0dbb48431087b1 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 13:30:56 -0500 Subject: [PATCH 07/53] Added sl-request-close event --- src/events/events.ts | 1 + src/events/sl-request-close.ts | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 src/events/sl-request-close.ts diff --git a/src/events/events.ts b/src/events/events.ts index 3481c5ea..9b5fff18 100644 --- a/src/events/events.ts +++ b/src/events/events.ts @@ -6,3 +6,4 @@ export { default as SlSelectionChangeEvent } from './sl-selection-change'; export { default as SlTabHideEvent } from './sl-tab-hide'; export { default as SlTabShowEvent } from './sl-tab-show'; export { default as SlErrorEvent } from './sl-error'; +export { default as SlRequestCloseEvent } from './sl-request-close'; diff --git a/src/events/sl-request-close.ts b/src/events/sl-request-close.ts new file mode 100644 index 00000000..c52c391a --- /dev/null +++ b/src/events/sl-request-close.ts @@ -0,0 +1,9 @@ +type SlRequestCloseEvent = CustomEvent<{ source: 'close-button' | 'keyboard' | 'overlay' }>; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-request-close': SlRequestCloseEvent; + } +} + +export default SlRequestCloseEvent; From 6e092ccf7a783ece0806e0faeae828df1bbec97b Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 13:55:19 -0500 Subject: [PATCH 08/53] Added event types for all events --- src/events/events.ts | 23 +++++++++++++++++++++++ src/events/sl-after-collapse.ts | 9 +++++++++ src/events/sl-after-expand.ts | 9 +++++++++ src/events/sl-after-hide.ts | 9 +++++++++ src/events/sl-after-show.ts | 9 +++++++++ src/events/sl-blur.ts | 9 +++++++++ src/events/sl-cancel.ts | 9 +++++++++ src/events/sl-change.ts | 9 +++++++++ src/events/sl-clear.ts | 9 +++++++++ src/events/sl-close.ts | 9 +++++++++ src/events/sl-collapse.ts | 9 +++++++++ src/events/sl-expand.ts | 9 +++++++++ src/events/sl-finish.ts | 9 +++++++++ src/events/sl-focus.ts | 9 +++++++++ src/events/sl-hide.ts | 9 +++++++++ src/events/sl-initial-focus.ts | 9 +++++++++ src/events/sl-input.ts | 9 +++++++++ src/events/sl-lazy-change.ts | 9 +++++++++ src/events/sl-lazy-load.ts | 9 +++++++++ src/events/sl-load.ts | 9 +++++++++ src/events/sl-remove.ts | 9 +++++++++ src/events/sl-reposition.ts | 9 +++++++++ src/events/sl-show.ts | 9 +++++++++ src/events/sl-start.ts | 9 +++++++++ 24 files changed, 230 insertions(+) create mode 100644 src/events/sl-after-collapse.ts create mode 100644 src/events/sl-after-expand.ts create mode 100644 src/events/sl-after-hide.ts create mode 100644 src/events/sl-after-show.ts create mode 100644 src/events/sl-blur.ts create mode 100644 src/events/sl-cancel.ts create mode 100644 src/events/sl-change.ts create mode 100644 src/events/sl-clear.ts create mode 100644 src/events/sl-close.ts create mode 100644 src/events/sl-collapse.ts create mode 100644 src/events/sl-expand.ts create mode 100644 src/events/sl-finish.ts create mode 100644 src/events/sl-focus.ts create mode 100644 src/events/sl-hide.ts create mode 100644 src/events/sl-initial-focus.ts create mode 100644 src/events/sl-input.ts create mode 100644 src/events/sl-lazy-change.ts create mode 100644 src/events/sl-lazy-load.ts create mode 100644 src/events/sl-load.ts create mode 100644 src/events/sl-remove.ts create mode 100644 src/events/sl-reposition.ts create mode 100644 src/events/sl-show.ts create mode 100644 src/events/sl-start.ts diff --git a/src/events/events.ts b/src/events/events.ts index 9b5fff18..29b0bc7e 100644 --- a/src/events/events.ts +++ b/src/events/events.ts @@ -7,3 +7,26 @@ export { default as SlTabHideEvent } from './sl-tab-hide'; export { default as SlTabShowEvent } from './sl-tab-show'; export { default as SlErrorEvent } from './sl-error'; export { default as SlRequestCloseEvent } from './sl-request-close'; +export { default as SlShowEvent } from './sl-show'; +export { default as SlAfterShowEvent } from './sl-after-show'; +export { default as SlHideEvent } from './sl-hide'; +export { default as SlAfterHideEvent } from './sl-after-hide'; +export { default as SlBlurEvent } from './sl-blur'; +export { default as SlFocusEvent } from './sl-focus'; +export { default as SlChangeEvent } from './sl-change'; +export { default as SlInputEvent } from './sl-input'; +export { default as SlInitialFocusEvent } from './sl-initial-focus'; +export { default as SlLoadEvent } from './sl-load'; +export { default as SlClearEvent } from './sl-clear'; +export { default as SlRepositionEvent } from './sl-reposition'; +export { default as SlCloseEvent } from './sl-close'; +export { default as SlRemoveEvent } from './sl-remove'; +export { default as SlExpandEvent } from './sl-expand'; +export { default as SlAfterExpandEvent } from './sl-after-expand'; +export { default as SlCollapseEvent } from './sl-collapse'; +export { default as SlAfterCollapseEvent } from './sl-after-collapse'; +export { default as SlLazyChangeEvent } from './sl-lazy-change'; +export { default as SlLazyLoadEvent } from './sl-lazy-load'; +export { default as SlCancelEvent } from './sl-cancel'; +export { default as SlFinishEvent } from './sl-finish'; +export { default as SlStartEvent } from './sl-start'; diff --git a/src/events/sl-after-collapse.ts b/src/events/sl-after-collapse.ts new file mode 100644 index 00000000..aeeabf9f --- /dev/null +++ b/src/events/sl-after-collapse.ts @@ -0,0 +1,9 @@ +type SlAfterCollapseEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-after-collapse': SlAfterCollapseEvent; + } +} + +export default SlAfterCollapseEvent; diff --git a/src/events/sl-after-expand.ts b/src/events/sl-after-expand.ts new file mode 100644 index 00000000..df32cf1b --- /dev/null +++ b/src/events/sl-after-expand.ts @@ -0,0 +1,9 @@ +type SlAfterExpandEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-after-expand': SlAfterExpandEvent; + } +} + +export default SlAfterExpandEvent; diff --git a/src/events/sl-after-hide.ts b/src/events/sl-after-hide.ts new file mode 100644 index 00000000..8f0d0ab2 --- /dev/null +++ b/src/events/sl-after-hide.ts @@ -0,0 +1,9 @@ +type SlAfterHideEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-after-hide': SlAfterHideEvent; + } +} + +export default SlAfterHideEvent; diff --git a/src/events/sl-after-show.ts b/src/events/sl-after-show.ts new file mode 100644 index 00000000..f12fa2ca --- /dev/null +++ b/src/events/sl-after-show.ts @@ -0,0 +1,9 @@ +type SlAfterShowEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-after-show': SlAfterShowEvent; + } +} + +export default SlAfterShowEvent; diff --git a/src/events/sl-blur.ts b/src/events/sl-blur.ts new file mode 100644 index 00000000..d12780c9 --- /dev/null +++ b/src/events/sl-blur.ts @@ -0,0 +1,9 @@ +type SlBlurEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-blur': SlBlurEvent; + } +} + +export default SlBlurEvent; diff --git a/src/events/sl-cancel.ts b/src/events/sl-cancel.ts new file mode 100644 index 00000000..eec6ac99 --- /dev/null +++ b/src/events/sl-cancel.ts @@ -0,0 +1,9 @@ +type SlCancelEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-cancel': SlCancelEvent; + } +} + +export default SlCancelEvent; diff --git a/src/events/sl-change.ts b/src/events/sl-change.ts new file mode 100644 index 00000000..a0d5a832 --- /dev/null +++ b/src/events/sl-change.ts @@ -0,0 +1,9 @@ +type SlChangeEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-change': SlChangeEvent; + } +} + +export default SlChangeEvent; diff --git a/src/events/sl-clear.ts b/src/events/sl-clear.ts new file mode 100644 index 00000000..b83a74ce --- /dev/null +++ b/src/events/sl-clear.ts @@ -0,0 +1,9 @@ +type SlClearEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-clear': SlClearEvent; + } +} + +export default SlClearEvent; diff --git a/src/events/sl-close.ts b/src/events/sl-close.ts new file mode 100644 index 00000000..3d9e7561 --- /dev/null +++ b/src/events/sl-close.ts @@ -0,0 +1,9 @@ +type SlCloseEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-close': SlCloseEvent; + } +} + +export default SlCloseEvent; diff --git a/src/events/sl-collapse.ts b/src/events/sl-collapse.ts new file mode 100644 index 00000000..f737bb55 --- /dev/null +++ b/src/events/sl-collapse.ts @@ -0,0 +1,9 @@ +type SlCollapseEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-collapse': SlCollapseEvent; + } +} + +export default SlCollapseEvent; diff --git a/src/events/sl-expand.ts b/src/events/sl-expand.ts new file mode 100644 index 00000000..72107798 --- /dev/null +++ b/src/events/sl-expand.ts @@ -0,0 +1,9 @@ +type SlExpandEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-expand': SlExpandEvent; + } +} + +export default SlExpandEvent; diff --git a/src/events/sl-finish.ts b/src/events/sl-finish.ts new file mode 100644 index 00000000..d2ff116b --- /dev/null +++ b/src/events/sl-finish.ts @@ -0,0 +1,9 @@ +type SlFinishEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-finish': SlFinishEvent; + } +} + +export default SlFinishEvent; diff --git a/src/events/sl-focus.ts b/src/events/sl-focus.ts new file mode 100644 index 00000000..2496bd46 --- /dev/null +++ b/src/events/sl-focus.ts @@ -0,0 +1,9 @@ +type SlFocusEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-focus': SlFocusEvent; + } +} + +export default SlFocusEvent; diff --git a/src/events/sl-hide.ts b/src/events/sl-hide.ts new file mode 100644 index 00000000..177fd1da --- /dev/null +++ b/src/events/sl-hide.ts @@ -0,0 +1,9 @@ +type SlHideEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-hide': SlHideEvent; + } +} + +export default SlHideEvent; diff --git a/src/events/sl-initial-focus.ts b/src/events/sl-initial-focus.ts new file mode 100644 index 00000000..bf35e80b --- /dev/null +++ b/src/events/sl-initial-focus.ts @@ -0,0 +1,9 @@ +type SlInitialFocusEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-initial-focus': SlInitialFocusEvent; + } +} + +export default SlInitialFocusEvent; diff --git a/src/events/sl-input.ts b/src/events/sl-input.ts new file mode 100644 index 00000000..c390bd48 --- /dev/null +++ b/src/events/sl-input.ts @@ -0,0 +1,9 @@ +type SlInputEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-input': SlInputEvent; + } +} + +export default SlInputEvent; diff --git a/src/events/sl-lazy-change.ts b/src/events/sl-lazy-change.ts new file mode 100644 index 00000000..84d33dfd --- /dev/null +++ b/src/events/sl-lazy-change.ts @@ -0,0 +1,9 @@ +type SlLazyChangeEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-lazy-change': SlLazyChangeEvent; + } +} + +export default SlLazyChangeEvent; diff --git a/src/events/sl-lazy-load.ts b/src/events/sl-lazy-load.ts new file mode 100644 index 00000000..20f58ad1 --- /dev/null +++ b/src/events/sl-lazy-load.ts @@ -0,0 +1,9 @@ +type SlLazyLoadEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-lazy-load': SlLazyLoadEvent; + } +} + +export default SlLazyLoadEvent; diff --git a/src/events/sl-load.ts b/src/events/sl-load.ts new file mode 100644 index 00000000..cc72d8fb --- /dev/null +++ b/src/events/sl-load.ts @@ -0,0 +1,9 @@ +type SlLoadEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-load': SlLoadEvent; + } +} + +export default SlLoadEvent; diff --git a/src/events/sl-remove.ts b/src/events/sl-remove.ts new file mode 100644 index 00000000..46e32c79 --- /dev/null +++ b/src/events/sl-remove.ts @@ -0,0 +1,9 @@ +type SlRemoveEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-remove': SlRemoveEvent; + } +} + +export default SlRemoveEvent; diff --git a/src/events/sl-reposition.ts b/src/events/sl-reposition.ts new file mode 100644 index 00000000..e87917b6 --- /dev/null +++ b/src/events/sl-reposition.ts @@ -0,0 +1,9 @@ +type SlRepositionEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-reposition': SlRepositionEvent; + } +} + +export default SlRepositionEvent; diff --git a/src/events/sl-show.ts b/src/events/sl-show.ts new file mode 100644 index 00000000..e2e5544d --- /dev/null +++ b/src/events/sl-show.ts @@ -0,0 +1,9 @@ +type SlShowEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-show': SlShowEvent; + } +} + +export default SlShowEvent; diff --git a/src/events/sl-start.ts b/src/events/sl-start.ts new file mode 100644 index 00000000..61f4c733 --- /dev/null +++ b/src/events/sl-start.ts @@ -0,0 +1,9 @@ +type SlStartEvent = CustomEvent; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-start': SlStartEvent; + } +} + +export default SlStartEvent; From 75bd7784fbbc493543b1b6348a9f2880cd482a7d Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 14:12:15 -0500 Subject: [PATCH 09/53] Basic events have an empty details object, not a null --- src/events/sl-after-collapse.ts | 2 +- src/events/sl-after-expand.ts | 2 +- src/events/sl-after-hide.ts | 2 +- src/events/sl-after-show.ts | 2 +- src/events/sl-blur.ts | 2 +- src/events/sl-cancel.ts | 2 +- src/events/sl-change.ts | 2 +- src/events/sl-clear.ts | 2 +- src/events/sl-close.ts | 2 +- src/events/sl-collapse.ts | 2 +- src/events/sl-error.ts | 2 +- src/events/sl-expand.ts | 2 +- src/events/sl-finish.ts | 2 +- src/events/sl-focus.ts | 2 +- src/events/sl-hide.ts | 2 +- src/events/sl-initial-focus.ts | 2 +- src/events/sl-input.ts | 2 +- src/events/sl-lazy-change.ts | 2 +- src/events/sl-lazy-load.ts | 2 +- src/events/sl-load.ts | 2 +- src/events/sl-remove.ts | 2 +- src/events/sl-reposition.ts | 2 +- src/events/sl-show.ts | 2 +- src/events/sl-start.ts | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/events/sl-after-collapse.ts b/src/events/sl-after-collapse.ts index aeeabf9f..d5689a9e 100644 --- a/src/events/sl-after-collapse.ts +++ b/src/events/sl-after-collapse.ts @@ -1,4 +1,4 @@ -type SlAfterCollapseEvent = CustomEvent; +type SlAfterCollapseEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-after-expand.ts b/src/events/sl-after-expand.ts index df32cf1b..abd8769e 100644 --- a/src/events/sl-after-expand.ts +++ b/src/events/sl-after-expand.ts @@ -1,4 +1,4 @@ -type SlAfterExpandEvent = CustomEvent; +type SlAfterExpandEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-after-hide.ts b/src/events/sl-after-hide.ts index 8f0d0ab2..2f4c5bde 100644 --- a/src/events/sl-after-hide.ts +++ b/src/events/sl-after-hide.ts @@ -1,4 +1,4 @@ -type SlAfterHideEvent = CustomEvent; +type SlAfterHideEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-after-show.ts b/src/events/sl-after-show.ts index f12fa2ca..cf513ef6 100644 --- a/src/events/sl-after-show.ts +++ b/src/events/sl-after-show.ts @@ -1,4 +1,4 @@ -type SlAfterShowEvent = CustomEvent; +type SlAfterShowEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-blur.ts b/src/events/sl-blur.ts index d12780c9..c3048a0a 100644 --- a/src/events/sl-blur.ts +++ b/src/events/sl-blur.ts @@ -1,4 +1,4 @@ -type SlBlurEvent = CustomEvent; +type SlBlurEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-cancel.ts b/src/events/sl-cancel.ts index eec6ac99..3b744794 100644 --- a/src/events/sl-cancel.ts +++ b/src/events/sl-cancel.ts @@ -1,4 +1,4 @@ -type SlCancelEvent = CustomEvent; +type SlCancelEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-change.ts b/src/events/sl-change.ts index a0d5a832..99acc24f 100644 --- a/src/events/sl-change.ts +++ b/src/events/sl-change.ts @@ -1,4 +1,4 @@ -type SlChangeEvent = CustomEvent; +type SlChangeEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-clear.ts b/src/events/sl-clear.ts index b83a74ce..8955eecb 100644 --- a/src/events/sl-clear.ts +++ b/src/events/sl-clear.ts @@ -1,4 +1,4 @@ -type SlClearEvent = CustomEvent; +type SlClearEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-close.ts b/src/events/sl-close.ts index 3d9e7561..c822eb0f 100644 --- a/src/events/sl-close.ts +++ b/src/events/sl-close.ts @@ -1,4 +1,4 @@ -type SlCloseEvent = CustomEvent; +type SlCloseEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-collapse.ts b/src/events/sl-collapse.ts index f737bb55..252a743a 100644 --- a/src/events/sl-collapse.ts +++ b/src/events/sl-collapse.ts @@ -1,4 +1,4 @@ -type SlCollapseEvent = CustomEvent; +type SlCollapseEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-error.ts b/src/events/sl-error.ts index 346a7283..c227504e 100644 --- a/src/events/sl-error.ts +++ b/src/events/sl-error.ts @@ -1,4 +1,4 @@ -type SlErrorEvent = CustomEvent; +type SlErrorEvent = CustomEvent<{ status?: number }>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-expand.ts b/src/events/sl-expand.ts index 72107798..5e4ed09a 100644 --- a/src/events/sl-expand.ts +++ b/src/events/sl-expand.ts @@ -1,4 +1,4 @@ -type SlExpandEvent = CustomEvent; +type SlExpandEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-finish.ts b/src/events/sl-finish.ts index d2ff116b..6d95dfe9 100644 --- a/src/events/sl-finish.ts +++ b/src/events/sl-finish.ts @@ -1,4 +1,4 @@ -type SlFinishEvent = CustomEvent; +type SlFinishEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-focus.ts b/src/events/sl-focus.ts index 2496bd46..eac7f7f0 100644 --- a/src/events/sl-focus.ts +++ b/src/events/sl-focus.ts @@ -1,4 +1,4 @@ -type SlFocusEvent = CustomEvent; +type SlFocusEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-hide.ts b/src/events/sl-hide.ts index 177fd1da..7a75d37b 100644 --- a/src/events/sl-hide.ts +++ b/src/events/sl-hide.ts @@ -1,4 +1,4 @@ -type SlHideEvent = CustomEvent; +type SlHideEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-initial-focus.ts b/src/events/sl-initial-focus.ts index bf35e80b..f2d7d6af 100644 --- a/src/events/sl-initial-focus.ts +++ b/src/events/sl-initial-focus.ts @@ -1,4 +1,4 @@ -type SlInitialFocusEvent = CustomEvent; +type SlInitialFocusEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-input.ts b/src/events/sl-input.ts index c390bd48..030dce26 100644 --- a/src/events/sl-input.ts +++ b/src/events/sl-input.ts @@ -1,4 +1,4 @@ -type SlInputEvent = CustomEvent; +type SlInputEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-lazy-change.ts b/src/events/sl-lazy-change.ts index 84d33dfd..2d6e4f2a 100644 --- a/src/events/sl-lazy-change.ts +++ b/src/events/sl-lazy-change.ts @@ -1,4 +1,4 @@ -type SlLazyChangeEvent = CustomEvent; +type SlLazyChangeEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-lazy-load.ts b/src/events/sl-lazy-load.ts index 20f58ad1..9476dfc1 100644 --- a/src/events/sl-lazy-load.ts +++ b/src/events/sl-lazy-load.ts @@ -1,4 +1,4 @@ -type SlLazyLoadEvent = CustomEvent; +type SlLazyLoadEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-load.ts b/src/events/sl-load.ts index cc72d8fb..ae3e468c 100644 --- a/src/events/sl-load.ts +++ b/src/events/sl-load.ts @@ -1,4 +1,4 @@ -type SlLoadEvent = CustomEvent; +type SlLoadEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-remove.ts b/src/events/sl-remove.ts index 46e32c79..1b8a86e3 100644 --- a/src/events/sl-remove.ts +++ b/src/events/sl-remove.ts @@ -1,4 +1,4 @@ -type SlRemoveEvent = CustomEvent; +type SlRemoveEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-reposition.ts b/src/events/sl-reposition.ts index e87917b6..b4c5b186 100644 --- a/src/events/sl-reposition.ts +++ b/src/events/sl-reposition.ts @@ -1,4 +1,4 @@ -type SlRepositionEvent = CustomEvent; +type SlRepositionEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-show.ts b/src/events/sl-show.ts index e2e5544d..870467a4 100644 --- a/src/events/sl-show.ts +++ b/src/events/sl-show.ts @@ -1,4 +1,4 @@ -type SlShowEvent = CustomEvent; +type SlShowEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-start.ts b/src/events/sl-start.ts index 61f4c733..f021f8fe 100644 --- a/src/events/sl-start.ts +++ b/src/events/sl-start.ts @@ -1,4 +1,4 @@ -type SlStartEvent = CustomEvent; +type SlStartEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { From ce708fbba8fd41f8dd45fff0568657f8001caabc Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 17:01:00 -0500 Subject: [PATCH 10/53] Perform type checking of the event detail in the emit function if the event type matches a Shoelace event --- src/internal/shoelace-element.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 2188e9e9..7534098a 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -1,13 +1,19 @@ import { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; +type SlEventInit = T extends keyof GlobalEventHandlersEventMap + ? GlobalEventHandlersEventMap[T] extends CustomEvent + ? CustomEventInit + : CustomEventInit + : CustomEventInit; + export default class ShoelaceElement extends LitElement { // Make localization attributes reactive @property() dir: string; @property() lang: string; /** Emits a custom event with more convenient defaults. */ - emit(name: string, options?: CustomEventInit) { + emit(name: T, options?: SlEventInit) { const event = new CustomEvent(name, { bubbles: true, cancelable: false, From 15a4049a01761e81a87b7fb4f0ab37797810172a Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 17:42:14 -0500 Subject: [PATCH 11/53] Require the options parameter to have a detail property for events with details --- src/internal/shoelace-element.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 7534098a..15d0ccbd 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -1,9 +1,12 @@ import { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; +type WithRequired = T & { [P in K]-?: T[P] }; type SlEventInit = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent - ? CustomEventInit + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? CustomEventInit + : WithRequired, 'detail'> : CustomEventInit : CustomEventInit; @@ -13,6 +16,7 @@ export default class ShoelaceElement extends LitElement { @property() lang: string; /** Emits a custom event with more convenient defaults. */ + // TODO is there a way to make the options parameter required if the event has details? emit(name: T, options?: SlEventInit) { const event = new CustomEvent(name, { bubbles: true, From e65b09fdece3572af8d7c3bee4681c1388aaee50 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 17:55:28 -0500 Subject: [PATCH 12/53] Fixed Typescript error when CustomEvents with non-object details are registered --- src/internal/shoelace-element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 15d0ccbd..8d06abcc 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -3,7 +3,7 @@ import { property } from 'lit/decorators.js'; type WithRequired = T & { [P in K]-?: T[P] }; type SlEventInit = T extends keyof GlobalEventHandlersEventMap - ? GlobalEventHandlersEventMap[T] extends CustomEvent + ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? CustomEventInit : WithRequired, 'detail'> From 41b5cb367fbe38dc30bcb4e2383e6cadec4e3422 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 8 Feb 2023 18:19:27 -0500 Subject: [PATCH 13/53] Use typed events in components and tests --- src/components/button-group/button-group.ts | 8 ++++---- src/components/color-picker/color-picker.ts | 6 ++++-- src/components/details/details.test.ts | 6 ++++-- src/components/dropdown/dropdown.ts | 3 ++- src/components/icon/icon.test.ts | 10 ++++++---- src/components/radio-group/radio-group.test.ts | 5 +++-- src/components/select/select.ts | 5 +++-- 7 files changed, 26 insertions(+), 17 deletions(-) diff --git a/src/components/button-group/button-group.ts b/src/components/button-group/button-group.ts index c7184abd..6d8dca90 100644 --- a/src/components/button-group/button-group.ts +++ b/src/components/button-group/button-group.ts @@ -28,22 +28,22 @@ export default class SlButtonGroup extends ShoelaceElement { */ @property() label = ''; - private handleFocus(event: CustomEvent) { + private handleFocus(event: Event) { const button = findButton(event.target as HTMLElement); button?.classList.add('sl-button-group__button--focus'); } - private handleBlur(event: CustomEvent) { + private handleBlur(event: Event) { const button = findButton(event.target as HTMLElement); button?.classList.remove('sl-button-group__button--focus'); } - private handleMouseOver(event: CustomEvent) { + private handleMouseOver(event: Event) { const button = findButton(event.target as HTMLElement); button?.classList.add('sl-button-group__button--hover'); } - private handleMouseOut(event: CustomEvent) { + private handleMouseOut(event: Event) { const button = findButton(event.target as HTMLElement); button?.classList.remove('sl-button-group__button--hover'); } diff --git a/src/components/color-picker/color-picker.ts b/src/components/color-picker/color-picker.ts index 2df8028a..574600f7 100644 --- a/src/components/color-picker/color-picker.ts +++ b/src/components/color-picker/color-picker.ts @@ -20,8 +20,10 @@ import ShoelaceElement from '../../internal/shoelace-element'; import styles from './color-picker.styles'; import type { CSSResultGroup } from 'lit'; import type { ShoelaceFormControl } from '../../internal/shoelace-element'; +import type SlChangeEvent from '../../events/sl-change'; import type SlDropdown from '../dropdown/dropdown'; import type SlInput from '../input/input'; +import type SlInputEvent from '../../events/sl-input'; const hasEyeDropper = 'EyeDropper' in window; @@ -368,7 +370,7 @@ export default class SlColorPicker extends ShoelaceElement implements ShoelaceFo } } - private handleInputChange(event: CustomEvent) { + private handleInputChange(event: SlChangeEvent) { const target = event.target as HTMLInputElement; const oldValue = this.value; @@ -388,7 +390,7 @@ export default class SlColorPicker extends ShoelaceElement implements ShoelaceFo } } - private handleInputInput(event: CustomEvent) { + private handleInputInput(event: SlInputEvent) { // Prevent the 's sl-input event from bubbling up event.stopPropagation(); } diff --git a/src/components/details/details.test.ts b/src/components/details/details.test.ts index 4d1f9d29..240712ea 100644 --- a/src/components/details/details.test.ts +++ b/src/components/details/details.test.ts @@ -2,6 +2,8 @@ import { expect, fixture, html, waitUntil } from '@open-wc/testing'; import sinon from 'sinon'; import type SlDetails from './details'; +import type SlHideEvent from '../../events/sl-hide'; +import type SlShowEvent from '../../events/sl-show'; describe('', () => { it('should be visible with the open attribute', async () => { @@ -134,7 +136,7 @@ describe('', () => { consequat. `); - const showHandler = sinon.spy((event: CustomEvent) => event.preventDefault()); + const showHandler = sinon.spy((event: SlShowEvent) => event.preventDefault()); el.addEventListener('sl-show', showHandler); el.open = true; @@ -153,7 +155,7 @@ describe('', () => { consequat. `); - const hideHandler = sinon.spy((event: CustomEvent) => event.preventDefault()); + const hideHandler = sinon.spy((event: SlHideEvent) => event.preventDefault()); el.addEventListener('sl-hide', hideHandler); el.open = false; diff --git a/src/components/dropdown/dropdown.ts b/src/components/dropdown/dropdown.ts index 4c98af7d..6424f988 100644 --- a/src/components/dropdown/dropdown.ts +++ b/src/components/dropdown/dropdown.ts @@ -17,6 +17,7 @@ import type SlIconButton from '../icon-button/icon-button'; import type SlMenu from '../menu/menu'; import type SlMenuItem from '../menu-item/menu-item'; import type SlPopup from '../popup/popup'; +import type SlSelectEvent from '../../events/sl-select'; /** * @summary Dropdowns expose additional content that "drops down" in a panel. @@ -206,7 +207,7 @@ export default class SlDropdown extends ShoelaceElement { scrollIntoView(item, this.panel); } - handlePanelSelect(event: CustomEvent) { + handlePanelSelect(event: SlSelectEvent) { const target = event.target as HTMLElement; // Hide the dropdown when a menu item is selected diff --git a/src/components/icon/icon.test.ts b/src/components/icon/icon.test.ts index 8d97c001..d9b4a24c 100644 --- a/src/components/icon/icon.test.ts +++ b/src/components/icon/icon.test.ts @@ -1,6 +1,8 @@ import { elementUpdated, expect, fixture, html, oneEvent } from '@open-wc/testing'; import { registerIconLibrary } from '../../../dist/shoelace.js'; +import type SlErrorEvent from '../../events/sl-error'; import type SlIcon from './icon'; +import type SlLoadEvent from '../../events/sl-load'; const testLibraryIcons = { 'test-icon1': ` @@ -46,7 +48,7 @@ describe('', () => { it('renders pre-loaded system icons and emits sl-load event', async () => { const el = await fixture(html` `); - const listener = oneEvent(el, 'sl-load') as Promise; + const listener = oneEvent(el, 'sl-load') as Promise; el.name = 'check'; const ev = await listener; @@ -100,7 +102,7 @@ describe('', () => { describe('new library', () => { it('renders icons from the new library and emits sl-load event', async () => { const el = await fixture(html` `); - const listener = oneEvent(el, 'sl-load') as Promise; + const listener = oneEvent(el, 'sl-load') as Promise; el.name = 'test-icon1'; const ev = await listener; @@ -129,7 +131,7 @@ describe('', () => { it('emits sl-error when the file cant be retrieved', async () => { const el = await fixture(html` `); - const listener = oneEvent(el, 'sl-error') as Promise; + const listener = oneEvent(el, 'sl-error') as Promise; el.name = 'bad-request'; const ev = await listener; @@ -141,7 +143,7 @@ describe('', () => { it("emits sl-error when there isn't an svg element in the registered icon", async () => { const el = await fixture(html` `); - const listener = oneEvent(el, 'sl-error') as Promise; + const listener = oneEvent(el, 'sl-error') as Promise; el.name = 'bad-icon'; const ev = await listener; diff --git a/src/components/radio-group/radio-group.test.ts b/src/components/radio-group/radio-group.test.ts index cf5069d7..c1129125 100644 --- a/src/components/radio-group/radio-group.test.ts +++ b/src/components/radio-group/radio-group.test.ts @@ -2,6 +2,7 @@ import { aTimeout, expect, fixture, html, oneEvent, waitUntil } from '@open-wc/t import { clickOnElement } from '../../internal/test'; import { sendKeys } from '@web/test-runner-commands'; import sinon from 'sinon'; +import type SlChangeEvent from '../../events/sl-change'; import type SlRadio from '../radio/radio'; import type SlRadioGroup from './radio-group'; @@ -282,7 +283,7 @@ describe('when the value changes', () => { `); const radio = radioGroup.querySelector('#radio-1')!; setTimeout(() => radio.click()); - const event = (await oneEvent(radioGroup, 'sl-change')) as CustomEvent; + const event = (await oneEvent(radioGroup, 'sl-change')) as SlChangeEvent; expect(event.target).to.equal(radioGroup); expect(radioGroup.value).to.equal('1'); }); @@ -297,7 +298,7 @@ describe('when the value changes', () => { const radio = radioGroup.querySelector('#radio-1')!; radio.focus(); setTimeout(() => sendKeys({ press: ' ' })); - const event = (await oneEvent(radioGroup, 'sl-change')) as CustomEvent; + const event = (await oneEvent(radioGroup, 'sl-change')) as SlChangeEvent; expect(event.target).to.equal(radioGroup); expect(radioGroup.value).to.equal('1'); }); diff --git a/src/components/select/select.ts b/src/components/select/select.ts index fb9dda60..1370d1af 100644 --- a/src/components/select/select.ts +++ b/src/components/select/select.ts @@ -19,6 +19,7 @@ import type { CSSResultGroup } from 'lit'; import type { ShoelaceFormControl } from '../../internal/shoelace-element'; import type SlOption from '../option/option'; import type SlPopup from '../popup/popup'; +import type SlRemoveEvent from '../../events/sl-remove'; /** * @summary Selects allow you to choose items from a menu of predefined options. @@ -425,7 +426,7 @@ export default class SlSelect extends ShoelaceElement implements ShoelaceFormCon this.setSelectedOptions(allOptions.filter(el => value.includes(el.value))); } - private handleTagRemove(event: CustomEvent, option: SlOption) { + private handleTagRemove(event: SlRemoveEvent, option: SlOption) { event.stopPropagation(); if (!this.disabled) { @@ -728,7 +729,7 @@ export default class SlSelect extends ShoelaceElement implements ShoelaceFormCon ?pill=${this.pill} size=${this.size} removable - @sl-remove=${(event: CustomEvent) => this.handleTagRemove(event, option)} + @sl-remove=${(event: SlRemoveEvent) => this.handleTagRemove(event, option)} > ${option.getTextLabel()} From b8584c0581ad45a171f61d842c2d76e95d09345e Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Thu, 9 Feb 2023 13:00:04 -0500 Subject: [PATCH 14/53] Require detail to always be provided when calling emit with an event that requires it --- src/internal/shoelace-element.ts | 44 ++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 8d06abcc..4e2c4a44 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -1,23 +1,63 @@ import { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; +type EventTypeRequiresDetail = T extends keyof GlobalEventHandlersEventMap + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? never + : Partial extends GlobalEventHandlersEventMap[T]['detail'] + ? never + : T + : never + : never; + +type EventTypeDoesNotRequireDetail = T extends keyof GlobalEventHandlersEventMap + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? T + : Partial extends GlobalEventHandlersEventMap[T]['detail'] + ? T + : never + : T + : T; + +type EventTypesWithRequiredDetail = { + [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail]: true; +}; + +type EventTypesWithoutRequiredDetail = { + [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail]: true; +}; + type WithRequired = T & { [P in K]-?: T[P] }; type SlEventInit = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? CustomEventInit + : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? CustomEventInit : WithRequired, 'detail'> : CustomEventInit : CustomEventInit; +// `keyof ValidEventTypeMap` is equivalent to `keyof GlobalEventHandlersEventMap` but gives a nicer error message +type ValidEventTypeMap = EventTypesWithRequiredDetail | EventTypesWithoutRequiredDetail; + export default class ShoelaceElement extends LitElement { // Make localization attributes reactive @property() dir: string; @property() lang: string; /** Emits a custom event with more convenient defaults. */ - // TODO is there a way to make the options parameter required if the event has details? - emit(name: T, options?: SlEventInit) { + emit( + name: EventTypeDoesNotRequireDetail, + options?: SlEventInit | undefined + ): CustomEvent; + emit( + name: EventTypeRequiresDetail, + options: SlEventInit + ): CustomEvent; + emit(name: T, options?: SlEventInit | undefined): CustomEvent { const event = new CustomEvent(name, { bubbles: true, cancelable: false, From 610a06bcb9d874eaf0cdf4a0b1e2ec2ea687561f Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Thu, 9 Feb 2023 13:06:17 -0500 Subject: [PATCH 15/53] Use PropertyKey instead of string where appropriate --- src/events/sl-after-collapse.ts | 2 +- src/events/sl-after-expand.ts | 2 +- src/events/sl-after-hide.ts | 2 +- src/events/sl-after-show.ts | 2 +- src/events/sl-blur.ts | 2 +- src/events/sl-cancel.ts | 2 +- src/events/sl-change.ts | 2 +- src/events/sl-clear.ts | 2 +- src/events/sl-close.ts | 2 +- src/events/sl-collapse.ts | 2 +- src/events/sl-expand.ts | 2 +- src/events/sl-finish.ts | 2 +- src/events/sl-focus.ts | 2 +- src/events/sl-hide.ts | 2 +- src/events/sl-initial-focus.ts | 2 +- src/events/sl-input.ts | 2 +- src/events/sl-lazy-change.ts | 2 +- src/events/sl-lazy-load.ts | 2 +- src/events/sl-load.ts | 2 +- src/events/sl-remove.ts | 2 +- src/events/sl-reposition.ts | 2 +- src/events/sl-show.ts | 2 +- src/events/sl-start.ts | 2 +- src/internal/shoelace-element.ts | 12 ++++++------ 24 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/events/sl-after-collapse.ts b/src/events/sl-after-collapse.ts index d5689a9e..c3ddc7d1 100644 --- a/src/events/sl-after-collapse.ts +++ b/src/events/sl-after-collapse.ts @@ -1,4 +1,4 @@ -type SlAfterCollapseEvent = CustomEvent>; +type SlAfterCollapseEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-after-expand.ts b/src/events/sl-after-expand.ts index abd8769e..91be5690 100644 --- a/src/events/sl-after-expand.ts +++ b/src/events/sl-after-expand.ts @@ -1,4 +1,4 @@ -type SlAfterExpandEvent = CustomEvent>; +type SlAfterExpandEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-after-hide.ts b/src/events/sl-after-hide.ts index 2f4c5bde..e507a3b9 100644 --- a/src/events/sl-after-hide.ts +++ b/src/events/sl-after-hide.ts @@ -1,4 +1,4 @@ -type SlAfterHideEvent = CustomEvent>; +type SlAfterHideEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-after-show.ts b/src/events/sl-after-show.ts index cf513ef6..9bc1813d 100644 --- a/src/events/sl-after-show.ts +++ b/src/events/sl-after-show.ts @@ -1,4 +1,4 @@ -type SlAfterShowEvent = CustomEvent>; +type SlAfterShowEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-blur.ts b/src/events/sl-blur.ts index c3048a0a..e042cad9 100644 --- a/src/events/sl-blur.ts +++ b/src/events/sl-blur.ts @@ -1,4 +1,4 @@ -type SlBlurEvent = CustomEvent>; +type SlBlurEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-cancel.ts b/src/events/sl-cancel.ts index 3b744794..8df4ef3d 100644 --- a/src/events/sl-cancel.ts +++ b/src/events/sl-cancel.ts @@ -1,4 +1,4 @@ -type SlCancelEvent = CustomEvent>; +type SlCancelEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-change.ts b/src/events/sl-change.ts index 99acc24f..b3352c56 100644 --- a/src/events/sl-change.ts +++ b/src/events/sl-change.ts @@ -1,4 +1,4 @@ -type SlChangeEvent = CustomEvent>; +type SlChangeEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-clear.ts b/src/events/sl-clear.ts index 8955eecb..17a0d6dc 100644 --- a/src/events/sl-clear.ts +++ b/src/events/sl-clear.ts @@ -1,4 +1,4 @@ -type SlClearEvent = CustomEvent>; +type SlClearEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-close.ts b/src/events/sl-close.ts index c822eb0f..5f72ea43 100644 --- a/src/events/sl-close.ts +++ b/src/events/sl-close.ts @@ -1,4 +1,4 @@ -type SlCloseEvent = CustomEvent>; +type SlCloseEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-collapse.ts b/src/events/sl-collapse.ts index 252a743a..194ec3b2 100644 --- a/src/events/sl-collapse.ts +++ b/src/events/sl-collapse.ts @@ -1,4 +1,4 @@ -type SlCollapseEvent = CustomEvent>; +type SlCollapseEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-expand.ts b/src/events/sl-expand.ts index 5e4ed09a..57b823a9 100644 --- a/src/events/sl-expand.ts +++ b/src/events/sl-expand.ts @@ -1,4 +1,4 @@ -type SlExpandEvent = CustomEvent>; +type SlExpandEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-finish.ts b/src/events/sl-finish.ts index 6d95dfe9..91c5788c 100644 --- a/src/events/sl-finish.ts +++ b/src/events/sl-finish.ts @@ -1,4 +1,4 @@ -type SlFinishEvent = CustomEvent>; +type SlFinishEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-focus.ts b/src/events/sl-focus.ts index eac7f7f0..438be58e 100644 --- a/src/events/sl-focus.ts +++ b/src/events/sl-focus.ts @@ -1,4 +1,4 @@ -type SlFocusEvent = CustomEvent>; +type SlFocusEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-hide.ts b/src/events/sl-hide.ts index 7a75d37b..36b2f271 100644 --- a/src/events/sl-hide.ts +++ b/src/events/sl-hide.ts @@ -1,4 +1,4 @@ -type SlHideEvent = CustomEvent>; +type SlHideEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-initial-focus.ts b/src/events/sl-initial-focus.ts index f2d7d6af..587e74ce 100644 --- a/src/events/sl-initial-focus.ts +++ b/src/events/sl-initial-focus.ts @@ -1,4 +1,4 @@ -type SlInitialFocusEvent = CustomEvent>; +type SlInitialFocusEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-input.ts b/src/events/sl-input.ts index 030dce26..98f4bed5 100644 --- a/src/events/sl-input.ts +++ b/src/events/sl-input.ts @@ -1,4 +1,4 @@ -type SlInputEvent = CustomEvent>; +type SlInputEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-lazy-change.ts b/src/events/sl-lazy-change.ts index 2d6e4f2a..5cf21580 100644 --- a/src/events/sl-lazy-change.ts +++ b/src/events/sl-lazy-change.ts @@ -1,4 +1,4 @@ -type SlLazyChangeEvent = CustomEvent>; +type SlLazyChangeEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-lazy-load.ts b/src/events/sl-lazy-load.ts index 9476dfc1..2acfe341 100644 --- a/src/events/sl-lazy-load.ts +++ b/src/events/sl-lazy-load.ts @@ -1,4 +1,4 @@ -type SlLazyLoadEvent = CustomEvent>; +type SlLazyLoadEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-load.ts b/src/events/sl-load.ts index ae3e468c..4d5f76ee 100644 --- a/src/events/sl-load.ts +++ b/src/events/sl-load.ts @@ -1,4 +1,4 @@ -type SlLoadEvent = CustomEvent>; +type SlLoadEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-remove.ts b/src/events/sl-remove.ts index 1b8a86e3..d135fd23 100644 --- a/src/events/sl-remove.ts +++ b/src/events/sl-remove.ts @@ -1,4 +1,4 @@ -type SlRemoveEvent = CustomEvent>; +type SlRemoveEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-reposition.ts b/src/events/sl-reposition.ts index b4c5b186..25d60c54 100644 --- a/src/events/sl-reposition.ts +++ b/src/events/sl-reposition.ts @@ -1,4 +1,4 @@ -type SlRepositionEvent = CustomEvent>; +type SlRepositionEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-show.ts b/src/events/sl-show.ts index 870467a4..641fa061 100644 --- a/src/events/sl-show.ts +++ b/src/events/sl-show.ts @@ -1,4 +1,4 @@ -type SlShowEvent = CustomEvent>; +type SlShowEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/events/sl-start.ts b/src/events/sl-start.ts index f021f8fe..6f6f81de 100644 --- a/src/events/sl-start.ts +++ b/src/events/sl-start.ts @@ -1,4 +1,4 @@ -type SlStartEvent = CustomEvent>; +type SlStartEvent = CustomEvent>; declare global { interface GlobalEventHandlersEventMap { diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 4e2c4a44..20ba2e42 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -2,8 +2,8 @@ import { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; type EventTypeRequiresDetail = T extends keyof GlobalEventHandlersEventMap - ? GlobalEventHandlersEventMap[T] extends CustomEvent> - ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? never : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? never @@ -12,8 +12,8 @@ type EventTypeRequiresDetail = T extends keyof GlobalEventHandlersEventMap : never; type EventTypeDoesNotRequireDetail = T extends keyof GlobalEventHandlersEventMap - ? GlobalEventHandlersEventMap[T] extends CustomEvent> - ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? T : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? T @@ -31,8 +31,8 @@ type EventTypesWithoutRequiredDetail = { type WithRequired = T & { [P in K]-?: T[P] }; type SlEventInit = T extends keyof GlobalEventHandlersEventMap - ? GlobalEventHandlersEventMap[T] extends CustomEvent> - ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? CustomEventInit : Partial extends GlobalEventHandlersEventMap[T]['detail'] ? CustomEventInit From 39ca1208f5d0a1bb6c9a5403d01b795fd7ed8363 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Thu, 9 Feb 2023 13:09:31 -0500 Subject: [PATCH 16/53] Removed unused event handler from sl-dropdown --- src/components/dropdown/dropdown.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/components/dropdown/dropdown.ts b/src/components/dropdown/dropdown.ts index 6424f988..48b2e21d 100644 --- a/src/components/dropdown/dropdown.ts +++ b/src/components/dropdown/dropdown.ts @@ -6,7 +6,6 @@ import { getAnimation, setDefaultAnimation } from '../../utilities/animation-reg import { getTabbableBoundary } from '../../internal/tabbable'; import { html } from 'lit'; import { LocalizeController } from '../../utilities/localize'; -import { scrollIntoView } from '../../internal/scroll'; import { waitForEvent } from '../../internal/event'; import { watch } from '../../internal/watch'; import ShoelaceElement from '../../internal/shoelace-element'; @@ -15,7 +14,6 @@ import type { CSSResultGroup } from 'lit'; import type SlButton from '../button/button'; import type SlIconButton from '../icon-button/icon-button'; import type SlMenu from '../menu/menu'; -import type SlMenuItem from '../menu-item/menu-item'; import type SlPopup from '../popup/popup'; import type SlSelectEvent from '../../events/sl-select'; @@ -105,7 +103,6 @@ export default class SlDropdown extends ShoelaceElement { connectedCallback() { super.connectedCallback(); - this.handleMenuItemActivate = this.handleMenuItemActivate.bind(this); this.handlePanelSelect = this.handlePanelSelect.bind(this); this.handleKeyDown = this.handleKeyDown.bind(this); this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this); @@ -202,11 +199,6 @@ export default class SlDropdown extends ShoelaceElement { } } - handleMenuItemActivate(event: CustomEvent) { - const item = event.target as SlMenuItem; - scrollIntoView(item, this.panel); - } - handlePanelSelect(event: SlSelectEvent) { const target = event.target as HTMLElement; @@ -343,7 +335,6 @@ export default class SlDropdown extends ShoelaceElement { } addOpenListeners() { - this.panel.addEventListener('sl-activate', this.handleMenuItemActivate); this.panel.addEventListener('sl-select', this.handlePanelSelect); this.panel.addEventListener('keydown', this.handleKeyDown); document.addEventListener('keydown', this.handleDocumentKeyDown); @@ -352,7 +343,6 @@ export default class SlDropdown extends ShoelaceElement { removeOpenListeners() { if (this.panel) { - this.panel.removeEventListener('sl-activate', this.handleMenuItemActivate); this.panel.removeEventListener('sl-select', this.handlePanelSelect); this.panel.removeEventListener('keydown', this.handleKeyDown); } From d6a7820a52719a9242378717f8ef089f1ee0284b Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Thu, 9 Feb 2023 15:56:54 -0500 Subject: [PATCH 17/53] Make emit return the actual event type instead of CustomEvent --- src/internal/shoelace-element.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 20ba2e42..ab94c153 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -40,6 +40,12 @@ type SlEventInit = T extends keyof GlobalEventHandlersEventMap : CustomEventInit : CustomEventInit; +type GetCustomEventType = T extends keyof GlobalEventHandlersEventMap + ? GlobalEventHandlersEventMap[T] extends CustomEvent + ? GlobalEventHandlersEventMap[T] + : CustomEvent + : CustomEvent; + // `keyof ValidEventTypeMap` is equivalent to `keyof GlobalEventHandlersEventMap` but gives a nicer error message type ValidEventTypeMap = EventTypesWithRequiredDetail | EventTypesWithoutRequiredDetail; @@ -52,12 +58,15 @@ export default class ShoelaceElement extends LitElement { emit( name: EventTypeDoesNotRequireDetail, options?: SlEventInit | undefined - ): CustomEvent; + ): GetCustomEventType; emit( name: EventTypeRequiresDetail, options: SlEventInit - ): CustomEvent; - emit(name: T, options?: SlEventInit | undefined): CustomEvent { + ): GetCustomEventType; + emit( + name: T, + options?: SlEventInit | undefined + ): GetCustomEventType { const event = new CustomEvent(name, { bubbles: true, cancelable: false, @@ -68,7 +77,7 @@ export default class ShoelaceElement extends LitElement { this.dispatchEvent(event); - return event; + return event as GetCustomEventType; } } From f8d8291caaa2190101d88cda94486c2388beb510 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Tue, 14 Feb 2023 23:06:47 -0500 Subject: [PATCH 18/53] Added sl-invalid event type --- src/events/events.ts | 1 + src/events/sl-invalid.ts | 9 +++++++++ src/internal/form.ts | 5 +++-- 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 src/events/sl-invalid.ts diff --git a/src/events/events.ts b/src/events/events.ts index 29b0bc7e..a925e593 100644 --- a/src/events/events.ts +++ b/src/events/events.ts @@ -30,3 +30,4 @@ export { default as SlLazyLoadEvent } from './sl-lazy-load'; export { default as SlCancelEvent } from './sl-cancel'; export { default as SlFinishEvent } from './sl-finish'; export { default as SlStartEvent } from './sl-start'; +export { default as SlInvalidEvent } from './sl-invalid'; diff --git a/src/events/sl-invalid.ts b/src/events/sl-invalid.ts new file mode 100644 index 00000000..33ccbbb2 --- /dev/null +++ b/src/events/sl-invalid.ts @@ -0,0 +1,9 @@ +type SlInvalidEvent = CustomEvent>; + +declare global { + interface GlobalEventHandlersEventMap { + 'sl-invalid': SlInvalidEvent; + } +} + +export default SlInvalidEvent; diff --git a/src/internal/form.ts b/src/internal/form.ts index b5892c80..25d6c8e0 100644 --- a/src/internal/form.ts +++ b/src/internal/form.ts @@ -357,10 +357,11 @@ export class FormControlController implements ReactiveController { * event will be cancelled before being dispatched. */ emitInvalidEvent(originalInvalidEvent?: Event) { - const slInvalidEvent = new CustomEvent('sl-invalid', { + const slInvalidEvent = new CustomEvent>('sl-invalid', { bubbles: false, composed: false, - cancelable: true + cancelable: true, + detail: {} }); if (!originalInvalidEvent) { From d93e698baf5babbbc143b5c6f2eaeff013e3f923 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 15 Feb 2023 09:37:48 -0500 Subject: [PATCH 19/53] Added comments to explain the Typescript metaprogramming --- src/internal/shoelace-element.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index c0372b54..664eae23 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -1,16 +1,21 @@ import { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; +// Match event types that are registered on GlobalEventHandlersEventMap... type EventTypeRequiresDetail = T extends keyof GlobalEventHandlersEventMap - ? GlobalEventHandlersEventMap[T] extends CustomEvent> - ? GlobalEventHandlersEventMap[T] extends CustomEvent> + ? // ...where the event detail is an object... + GlobalEventHandlersEventMap[T] extends CustomEvent> + ? // ...that is non-empty... + GlobalEventHandlersEventMap[T] extends CustomEvent> ? never - : Partial extends GlobalEventHandlersEventMap[T]['detail'] + : // ...and has at least one non-optional property + Partial extends GlobalEventHandlersEventMap[T]['detail'] ? never : T : never : never; +// The inverse of the above (match any type that doesn't match EventTypeRequiresDetail) type EventTypeDoesNotRequireDetail = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> @@ -21,15 +26,22 @@ type EventTypeDoesNotRequireDetail = T extends keyof GlobalEventHandlersEvent : T : T; +// `keyof EventTypesWithRequiredDetail` lists all registered event types that require detail type EventTypesWithRequiredDetail = { [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail]: true; }; +// `keyof EventTypesWithRequiredDetail` lists all registered event types that do NOT require detail type EventTypesWithoutRequiredDetail = { [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail]: true; }; +// Helper to make a specific property of an object non-optional type WithRequired = T & { [P in K]-?: T[P] }; + +// Given an event name string, get a valid type for the options to initialize the event that is more restrictive +// than just CustomEventInit when appropriate (validate the type of the event detail, and require it to be +// provided if the event requires it) type SlEventInit = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> @@ -40,6 +52,7 @@ type SlEventInit = T extends keyof GlobalEventHandlersEventMap : CustomEventInit : CustomEventInit; +// Given an event name string, get the type of the event type GetCustomEventType = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent ? GlobalEventHandlersEventMap[T] From 636f61006f26d4018b731a7a59907a18d857b0e5 Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 15 Feb 2023 09:39:43 -0500 Subject: [PATCH 20/53] Adjusted comment to be more clear --- src/internal/shoelace-element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 664eae23..2a3dd00a 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -1,7 +1,7 @@ import { LitElement } from 'lit'; import { property } from 'lit/decorators.js'; -// Match event types that are registered on GlobalEventHandlersEventMap... +// Match event type name strings that are registered on GlobalEventHandlersEventMap... type EventTypeRequiresDetail = T extends keyof GlobalEventHandlersEventMap ? // ...where the event detail is an object... GlobalEventHandlersEventMap[T] extends CustomEvent> From d818980dea9935a04f93db33f394a0f2db22217d Mon Sep 17 00:00:00 2001 From: Matt Pharoah Date: Wed, 15 Feb 2023 09:41:05 -0500 Subject: [PATCH 21/53] Fixed copy-paste type in comment --- src/internal/shoelace-element.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index 2a3dd00a..b5ef3a93 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -31,7 +31,7 @@ type EventTypesWithRequiredDetail = { [EventType in keyof GlobalEventHandlersEventMap as EventTypeRequiresDetail]: true; }; -// `keyof EventTypesWithRequiredDetail` lists all registered event types that do NOT require detail +// `keyof EventTypesWithoutRequiredDetail` lists all registered event types that do NOT require detail type EventTypesWithoutRequiredDetail = { [EventType in keyof GlobalEventHandlersEventMap as EventTypeDoesNotRequireDetail]: true; }; From 226c856b1ed965acc14ff2e6bd9fa0d0b12d4ab9 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 10:12:36 -0500 Subject: [PATCH 22/53] update scroll controls when adding tabs; fixes #1208 --- docs/resources/changelog.md | 1 + src/components/tab-group/tab-group.ts | 3 +++ 2 files changed, 4 insertions(+) diff --git a/docs/resources/changelog.md b/docs/resources/changelog.md index 53d988f0..851eef37 100644 --- a/docs/resources/changelog.md +++ b/docs/resources/changelog.md @@ -10,6 +10,7 @@ New versions of Shoelace are released as-needed and generally occur when a criti - Fixed a bug in `` that caused the display label to render incorrectly in Chrome after form validation [#1197](https://github.com/shoelace-style/shoelace/discussions/1197) - Fixed a bug in `` that prevented users from applying their own value for `autocapitalize`, `autocomplete`, and `autocorrect` when using `type="password` [#1205](https://github.com/shoelace-style/shoelace/issues/1205) +- Fixed a bug in `` that prevented scroll controls from showing when dynamically adding tabs [#1208](https://github.com/shoelace-style/shoelace/issues/1208) When using `` the default value for `autocapitalize`, `autocomplete`, and `autocorrect` may be affected due to the bug fixed in [#1205](https://github.com/shoelace-style/shoelace/issues/1205). For any affected users, setting these attributes to `off` will restore the previous behavior. diff --git a/src/components/tab-group/tab-group.ts b/src/components/tab-group/tab-group.ts index 85152cd9..0ec05357 100644 --- a/src/components/tab-group/tab-group.ts +++ b/src/components/tab-group/tab-group.ts @@ -316,6 +316,9 @@ export default class SlTabGroup extends ShoelaceElement { this.tabs = this.getAllTabs({ includeDisabled: false }); this.panels = this.getAllPanels(); this.syncIndicator(); + + // After updating, show or hide scroll controls as needed + this.updateComplete.then(() => this.updateScrollControls()); } @watch('noScrollControls', { waitUntilFirstUpdate: true }) From bc58472b7bfc7ec4ae54e463c5345f0a0e470116 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 11:02:26 -0500 Subject: [PATCH 23/53] fix skipped tests --- .../color-picker/color-picker.test.ts | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/components/color-picker/color-picker.test.ts b/src/components/color-picker/color-picker.test.ts index 2c646c16..c8f6e054 100644 --- a/src/components/color-picker/color-picker.test.ts +++ b/src/components/color-picker/color-picker.test.ts @@ -5,6 +5,7 @@ import { sendKeys } from '@web/test-runner-commands'; import { serialize } from '../../utilities/form'; import sinon from 'sinon'; import type SlColorPicker from './color-picker'; +import type SlInput from '../input/input'; describe('', () => { describe('when the value changes', () => { @@ -493,20 +494,22 @@ describe('', () => { expect(el.checkValidity()).to.be.true; }); - it.skip('should be invalid when required and empty', async () => { + it('should be invalid when required and empty', async () => { const el = await fixture(html` `); expect(el.checkValidity()).to.be.false; }); - it.skip('should be invalid when required and disabled is removed', async () => { + it('should be invalid when required and disabled is removed', async () => { const el = await fixture(html` `); el.disabled = false; await el.updateComplete; expect(el.checkValidity()).to.be.false; }); - it.skip('should receive the correct validation attributes ("states") when valid', async () => { - const el = await fixture(html` `); + it('should receive the correct validation attributes ("states") when valid', async () => { + const el = await fixture(html` `); + const trigger = el.shadowRoot!.querySelector('[part~="trigger"]')!; + const grid = el.shadowRoot!.querySelector('[part~="grid"]')!; expect(el.checkValidity()).to.be.true; expect(el.hasAttribute('data-required')).to.be.true; @@ -516,18 +519,20 @@ describe('', () => { expect(el.hasAttribute('data-user-invalid')).to.be.false; expect(el.hasAttribute('data-user-valid')).to.be.false; - // // TODO simulate user interaction - // el.focus(); - // await sendKeys({ press: 'b' }); - // await el.updateComplete; + await clickOnElement(trigger); + await aTimeout(500); + await clickOnElement(grid); + await el.updateComplete; - // expect(el.checkValidity()).to.be.true; - // expect(el.hasAttribute('data-user-invalid')).to.be.false; - // expect(el.hasAttribute('data-user-valid')).to.be.true; + expect(el.checkValidity()).to.be.true; + expect(el.hasAttribute('data-user-invalid')).to.be.false; + expect(el.hasAttribute('data-user-valid')).to.be.true; }); - it.skip('should receive the correct validation attributes ("states") when invalid', async () => { + it('should receive the correct validation attributes ("states") when invalid', async () => { const el = await fixture(html` `); + const trigger = el.shadowRoot!.querySelector('[part~="trigger"]')!; + const grid = el.shadowRoot!.querySelector('[part~="grid"]')!; expect(el.hasAttribute('data-required')).to.be.true; expect(el.hasAttribute('data-optional')).to.be.false; @@ -536,14 +541,14 @@ describe('', () => { expect(el.hasAttribute('data-user-invalid')).to.be.false; expect(el.hasAttribute('data-user-valid')).to.be.false; - // // TODO simulate user interaction - // el.focus(); - // await sendKeys({ press: 'a' }); - // await sendKeys({ press: 'Backspace' }); - // await el.updateComplete; + await clickOnElement(trigger); + await aTimeout(500); + await clickOnElement(grid); + await el.updateComplete; - // expect(el.hasAttribute('data-user-invalid')).to.be.true; - // expect(el.hasAttribute('data-user-valid')).to.be.false; + expect(el.checkValidity()).to.be.true; + expect(el.hasAttribute('data-user-invalid')).to.be.false; + expect(el.hasAttribute('data-user-valid')).to.be.true; }); }); From d638d811ad2cd810d54bb62e50b3cddb99ad8e59 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 11:04:51 -0500 Subject: [PATCH 24/53] remove unused type --- src/components/color-picker/color-picker.test.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/color-picker/color-picker.test.ts b/src/components/color-picker/color-picker.test.ts index c8f6e054..844b1a06 100644 --- a/src/components/color-picker/color-picker.test.ts +++ b/src/components/color-picker/color-picker.test.ts @@ -5,7 +5,6 @@ import { sendKeys } from '@web/test-runner-commands'; import { serialize } from '../../utilities/form'; import sinon from 'sinon'; import type SlColorPicker from './color-picker'; -import type SlInput from '../input/input'; describe('', () => { describe('when the value changes', () => { From 0865dede6fbe68a3921eb132fe22fa01d9db785d Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 11:11:19 -0500 Subject: [PATCH 25/53] fix heading --- docs/components/icon.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/icon.md b/docs/components/icon.md index 3cd26766..b51d608e 100644 --- a/docs/components/icon.md +++ b/docs/components/icon.md @@ -531,7 +531,7 @@ Icons in this library are licensed under the [Apache 2.0 License](https://github ``` -## Tabler Icons +### Tabler Icons This will register the [Tabler Icons](https://tabler-icons.io/) library using the jsDelivr CDN. This library features over 1,950 open source icons. From 22b8ef4edf16ce86198b8e21dc9b1119bffcfe45 Mon Sep 17 00:00:00 2001 From: Justin Fagnani Date: Thu, 23 Feb 2023 08:15:20 -0800 Subject: [PATCH 26/53] Fix a few spelling issues (#1192) --- cspell.json | 2 ++ docs/getting-started/usage.md | 2 +- docs/resources/changelog.md | 3 +-- src/components/input/input.test.ts | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/cspell.json b/cspell.json index 5a76ee66..fd909b93 100644 --- a/cspell.json +++ b/cspell.json @@ -53,6 +53,7 @@ "FOUC", "FOUCE", "fullscreen", + "gestern", "giga", "globby", "Grayscale", @@ -121,6 +122,7 @@ "tabpanel", "templating", "tera", + "testid", "textareas", "textfield", "tinycolor", diff --git a/docs/getting-started/usage.md b/docs/getting-started/usage.md index c990d974..adb47678 100644 --- a/docs/getting-started/usage.md +++ b/docs/getting-started/usage.md @@ -164,7 +164,7 @@ checkbox.checked = true; console.log(checkbox.hasAttribute('checked')); // false ``` -Most devs will expect this to be `true` instead of `false`, but the component hasn't had a chance to re-render yet so the attribute doesn't exist when `hasAttribute()` is called. Since changes are batched, we need to wait for the update before proceeding. This can be done using the `updateComplete` property, which is available on all Lit-based components. +Most developers will expect this to be `true` instead of `false`, but the component hasn't had a chance to re-render yet so the attribute doesn't exist when `hasAttribute()` is called. Since changes are batched, we need to wait for the update before proceeding. This can be done using the `updateComplete` property, which is available on all Lit-based components. ```js const checkbox = document.querySelector('sl-checkbox'); diff --git a/docs/resources/changelog.md b/docs/resources/changelog.md index 851eef37..5d6387e7 100644 --- a/docs/resources/changelog.md +++ b/docs/resources/changelog.md @@ -281,8 +281,7 @@ This release removes the `` component. When this component - Fixed a bug in `` that prevented the keyboard from working when the component was nested in a shadow root [#871](https://github.com/shoelace-style/shoelace/issues/871) - Fixed a bug in `` that prevented the keyboard from working when the component was nested in a shadow root [#872](https://github.com/shoelace-style/shoelace/issues/872) - Fixed a bug in `` that allowed disabled tabs to erroneously receive focus -- Improved single selection in `` so nodes expand and collapse and rece - ive selection when clicking on the label +- Improved single selection in `` so nodes expand and collapse and receive selection when clicking on the label - Renamed `expanded-icon` and `collapsed-icon` slots to `expand-icon` and `collapse-icon` in the experimental `` and `` components - Improved RTL support for `` - Refactored components to extend from `ShoelaceElement` to make `dir` and `lang` reactive properties in all components diff --git a/src/components/input/input.test.ts b/src/components/input/input.test.ts index c72840aa..879b0089 100644 --- a/src/components/input/input.test.ts +++ b/src/components/input/input.test.ts @@ -350,7 +350,7 @@ describe('', () => { await el.updateComplete; }); - it('should not emit sl-change or sl-input when calling setinputText()', async () => { + it('should not emit sl-change or sl-input when calling setRangeText()', async () => { const el = await fixture(html` `); el.addEventListener('sl-change', () => expect.fail('sl-change should not be emitted')); From 50972f2b38d8ef82c5349b4a185a2a00d7659645 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 11:33:31 -0500 Subject: [PATCH 27/53] update changelog and comment --- docs/resources/changelog.md | 1 + src/internal/shoelace-element.ts | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/resources/changelog.md b/docs/resources/changelog.md index 5d6387e7..f87ddac8 100644 --- a/docs/resources/changelog.md +++ b/docs/resources/changelog.md @@ -8,6 +8,7 @@ New versions of Shoelace are released as-needed and generally occur when a criti ## Next +- Added TypeScript types to all custom events [#1183](https://github.com/shoelace-style/shoelace/pull/1183) - Fixed a bug in `` that caused the display label to render incorrectly in Chrome after form validation [#1197](https://github.com/shoelace-style/shoelace/discussions/1197) - Fixed a bug in `` that prevented users from applying their own value for `autocapitalize`, `autocomplete`, and `autocorrect` when using `type="password` [#1205](https://github.com/shoelace-style/shoelace/issues/1205) - Fixed a bug in `` that prevented scroll controls from showing when dynamically adding tabs [#1208](https://github.com/shoelace-style/shoelace/issues/1208) diff --git a/src/internal/shoelace-element.ts b/src/internal/shoelace-element.ts index b5ef3a93..6e4e6e38 100644 --- a/src/internal/shoelace-element.ts +++ b/src/internal/shoelace-element.ts @@ -39,9 +39,9 @@ type EventTypesWithoutRequiredDetail = { // Helper to make a specific property of an object non-optional type WithRequired = T & { [P in K]-?: T[P] }; -// Given an event name string, get a valid type for the options to initialize the event that is more restrictive -// than just CustomEventInit when appropriate (validate the type of the event detail, and require it to be -// provided if the event requires it) +// Given an event name string, get a valid type for the options to initialize the event that is more restrictive than +// just CustomEventInit when appropriate (validate the type of the event detail, and require it to be provided if the +// event requires it) type SlEventInit = T extends keyof GlobalEventHandlersEventMap ? GlobalEventHandlersEventMap[T] extends CustomEvent> ? GlobalEventHandlersEventMap[T] extends CustomEvent> From 74203de094f6e81f487db93b1a892cceb740897d Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 14:23:38 -0500 Subject: [PATCH 28/53] sort imports --- src/components/carousel-item/carousel-item.ts | 2 +- src/components/carousel/carousel.ts | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/carousel-item/carousel-item.ts b/src/components/carousel-item/carousel-item.ts index e46869ab..874ba5ea 100644 --- a/src/components/carousel-item/carousel-item.ts +++ b/src/components/carousel-item/carousel-item.ts @@ -1,5 +1,5 @@ -import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; +import { html } from 'lit'; import ShoelaceElement from '../../internal/shoelace-element'; import styles from './carousel-item.styles'; import type { CSSResultGroup } from 'lit'; diff --git a/src/components/carousel/carousel.ts b/src/components/carousel/carousel.ts index 1b8563f8..02df57ed 100644 --- a/src/components/carousel/carousel.ts +++ b/src/components/carousel/carousel.ts @@ -1,20 +1,20 @@ -import { LocalizeController } from '@shoelace-style/localize'; -import { html } from 'lit'; -import { customElement, property, query, state } from 'lit/decorators.js'; -import { classMap } from 'lit/directives/class-map.js'; -import { map } from 'lit/directives/map.js'; -import { range } from 'lit/directives/range.js'; -import { styleMap } from 'lit/directives/style-map.js'; -import { when } from 'lit/directives/when.js'; -import { clamp } from 'src/internal/math'; -import { prefersReducedMotion } from '../../internal/animate'; -import ShoelaceElement from '../../internal/shoelace-element'; -import { watch } from '../../internal/watch'; -import SlCarouselItem from '../carousel-item/carousel-item'; import '../icon/icon'; import { AutoplayController } from './autoplay-controller'; -import styles from './carousel.styles'; +import { clamp } from 'src/internal/math'; +import { classMap } from 'lit/directives/class-map.js'; +import { customElement, property, query, state } from 'lit/decorators.js'; +import { html } from 'lit'; +import { LocalizeController } from '@shoelace-style/localize'; +import { map } from 'lit/directives/map.js'; +import { prefersReducedMotion } from '../../internal/animate'; +import { range } from 'lit/directives/range.js'; import { ScrollController } from './scroll-controller'; +import { styleMap } from 'lit/directives/style-map.js'; +import { watch } from '../../internal/watch'; +import { when } from 'lit/directives/when.js'; +import ShoelaceElement from '../../internal/shoelace-element'; +import SlCarouselItem from '../carousel-item/carousel-item'; +import styles from './carousel.styles'; import type { CSSResultGroup } from 'lit'; /** From 603aa9332263f76ec403e5dfae7f601b59aa06d2 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Thu, 23 Feb 2023 14:39:05 -0500 Subject: [PATCH 29/53] update and fix typos --- cspell.json | 7 + ...tel-i9Q9bc-WgfE-unsplash.jpg => field.jpg} | Bin ...ndN00KmbJ1c-unsplash.jpg => mountains.jpg} | Bin ...te-c1Jp-fo53U8-unsplash.jpg => sunset.jpg} | Bin ...sk-1Z2niiBPg5A-unsplash.jpg => valley.jpg} | Bin ...JoH60FhTp50-unsplash.jpg => waterfall.jpg} | Bin docs/components/carousel.md | 154 ++++++++---------- src/components/carousel/carousel.ts | 33 ++-- src/components/carousel/scroll-controller.ts | 2 +- src/events/events.ts | 53 +++--- src/events/sl-slide-change.ts | 11 ++ src/internal/debounce.ts | 8 +- src/utilities/localize.ts | 4 +- 13 files changed, 137 insertions(+), 135 deletions(-) rename docs/assets/examples/carousel/{sapan-patel-i9Q9bc-WgfE-unsplash.jpg => field.jpg} (100%) rename docs/assets/examples/carousel/{adam-kool-ndN00KmbJ1c-unsplash.jpg => mountains.jpg} (100%) rename docs/assets/examples/carousel/{leonard-cotte-c1Jp-fo53U8-unsplash.jpg => sunset.jpg} (100%) rename docs/assets/examples/carousel/{v2osk-1Z2niiBPg5A-unsplash.jpg => valley.jpg} (100%) rename docs/assets/examples/carousel/{thomas-kelley-JoH60FhTp50-unsplash.jpg => waterfall.jpg} (100%) create mode 100644 src/events/sl-slide-change.ts diff --git a/cspell.json b/cspell.json index fd909b93..2de54345 100644 --- a/cspell.json +++ b/cspell.json @@ -27,6 +27,7 @@ "Consolas", "contenteditable", "copydir", + "Cotte", "coverpage", "crossorigin", "crutchcorn", @@ -71,10 +72,12 @@ "jsonata", "keydown", "keyframes", + "Kool", "labelledby", "Laravel", "LaViska", "listbox", + "listitem", "litelement", "lowercasing", "Lucide", @@ -107,9 +110,13 @@ "rgba", "roadmap", "Roboto", + "roledescription", + "Sapan", "saturationl", "Schilp", "scrollbars", + "scrollend", + "scroller", "Segoe", "semibold", "slotchange", diff --git a/docs/assets/examples/carousel/sapan-patel-i9Q9bc-WgfE-unsplash.jpg b/docs/assets/examples/carousel/field.jpg similarity index 100% rename from docs/assets/examples/carousel/sapan-patel-i9Q9bc-WgfE-unsplash.jpg rename to docs/assets/examples/carousel/field.jpg diff --git a/docs/assets/examples/carousel/adam-kool-ndN00KmbJ1c-unsplash.jpg b/docs/assets/examples/carousel/mountains.jpg similarity index 100% rename from docs/assets/examples/carousel/adam-kool-ndN00KmbJ1c-unsplash.jpg rename to docs/assets/examples/carousel/mountains.jpg diff --git a/docs/assets/examples/carousel/leonard-cotte-c1Jp-fo53U8-unsplash.jpg b/docs/assets/examples/carousel/sunset.jpg similarity index 100% rename from docs/assets/examples/carousel/leonard-cotte-c1Jp-fo53U8-unsplash.jpg rename to docs/assets/examples/carousel/sunset.jpg diff --git a/docs/assets/examples/carousel/v2osk-1Z2niiBPg5A-unsplash.jpg b/docs/assets/examples/carousel/valley.jpg similarity index 100% rename from docs/assets/examples/carousel/v2osk-1Z2niiBPg5A-unsplash.jpg rename to docs/assets/examples/carousel/valley.jpg diff --git a/docs/assets/examples/carousel/thomas-kelley-JoH60FhTp50-unsplash.jpg b/docs/assets/examples/carousel/waterfall.jpg similarity index 100% rename from docs/assets/examples/carousel/thomas-kelley-JoH60FhTp50-unsplash.jpg rename to docs/assets/examples/carousel/waterfall.jpg diff --git a/docs/components/carousel.md b/docs/components/carousel.md index 24041d1f..41c0a69b 100644 --- a/docs/components/carousel.md +++ b/docs/components/carousel.md @@ -9,31 +9,31 @@ Carousels consist of optional navigation arrows to go backwards and forwards, as The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -149,31 +149,31 @@ const App = () => { The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -411,31 +411,31 @@ it's important to specify a predefined height to the carousel through CSS. The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -487,31 +487,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -529,31 +529,31 @@ Use the `--aspect-ratio` custom property to customize the size of viewport in or The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -590,31 +590,31 @@ const App = () => { The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -649,31 +649,31 @@ be scrolled. The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -711,31 +711,31 @@ const App = () => { The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -757,38 +757,38 @@ const App = () => { ### Custom layout -The appereance of the carousel can be easly customized through its slots or `part` attributes. +The appearance of the carousel can be easily customized through its slots or `part` attributes. ```html preview The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -894,31 +894,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -937,68 +937,48 @@ use `next()` or `previous()` to go respectively to the next or the previous slid When the active slide is changed, the `sl-slide-change` event is emitted providing the `index` of the slide. -Using the API is possible to extend the carousel, for exmaple by syncing the active slide with a set of thumbnails, like in the example below. +Using the API is possible to extend the carousel, for example by syncing the active slide with a set of thumbnails, like in the example below. ```html preview The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash
- Thumbnail Photo by 1 - Thumbnail Photo by 2 - Thumbnail Photo by 3 - Thumbnail Photo by 4 - Thumbnail Photo by 5 + Thumbnail Photo by 1 + Thumbnail Photo by 2 + Thumbnail Photo by 3 + Thumbnail Photo by 4 + Thumbnail Photo by 5
- ``` ```jsx react -import { useReducer } from 'react'; -import { - SlCarousel, - SlCarouselItem, - SlSwitch, - SlInput, - SlSelect, - SlMenuItem -} from '@shoelace-style/shoelace/dist/react'; +import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; -const css = ` - sl-carousel { - --aspect-ratio: 3 / 2; - } - - .carousel-options { - display: flex; - flex-wrap: wrap; - align-items: end; - gap: 1rem; - } -`; - -const App = () => { - const [state, updateState] = useReducer( - (state, event) => { - console.log(event); - }, - { - loop: true, - pagination: true, - navigation: true, - autoplay: true, - mouseDragging: true, - slidesPerPage: 1, - slidesPerMove: 1, - orientation: 'horizontal' - } - ); - return ( - <> - - - The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash - - - A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash - - - The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash - - - A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash - - - A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash - - - -
-
- - Loop - - - Show navigation - - - Show pagination - - - Autoplay (3s) - - - Mouse dragging - -
-
- - - - Horizontal - Vertical - -
-
- - - ); -}; +const App = () => ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + +); ``` - - ## Examples -### Multiple slides per view +### Pagination -Setting the attribute `slides-per-view` is it possible to specify how many items are shown at a given time. -Using this feature, it may be also useful to advance multiple slides at once, even though not strictly necessary. -This can be done by using the `slides-per-move` attribute. +Use the `pagination` attribute to show the total number of slides and the current slide as a set of interactive dots. ```html preview - - Slide 1 - Slide 2 - Slide 3 - Slide 4 - Slide 5 - Slide 6 + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + +``` + +### Navigation + +Use the `navigation` attribute to show previous and next buttons. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + +``` + +### Looping + +By default, the carousel will not advanced beyond the first and last slides. You can change this behavior and force the carousel to "wrap" with the `loop` attribute. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + +``` + +### Autoplay + +The carousel will automatically advance when the `autoplay` attribute is used. To change how long a slide is shown before advancing, set `autoplay-interval` to the desired number of milliseconds. For best results, use the `loop` attribute when autoplay is enabled. Note that autoplay will pause while the user interacts with the carousel. + +```html preview + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + +``` + +### Mouse Dragging + +The carousel uses [scroll snap](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scroll_Snap) to position slides at various snap positions. This allows users to scroll through the slides very naturally, especially on touch devices. Unfortunately, desktop users won't be able to click and drag with a mouse, which can feel unnatural. Adding the `mouse-dragging` attribute can help with this. + +This example is best demonstrated using a mouse. Try clicking and dragging the slide to move it. Then toggle the switch and try again. + +```html preview +
+ + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + Enable mouse dragging +
+ + +``` + +### Multiple Slides Per View + +The `slides-per-view` attribute makes it possible to display multiple slides at a time. You can also use the `slides-per-move` attribute to advance more than once slide at a time, if desired. + +```html preview + + Slide 1 + Slide 2 + Slide 3 + Slide 4 + Slide 5 + Slide 6 ``` @@ -281,66 +313,73 @@ import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react' const App = () => ( - Slide 1 - Slide 2 - Slide 3 - Slide 4 - Slide 5 - Slide 6 + Slide 1 + Slide 2 + Slide 3 + Slide 4 + Slide 5 + Slide 6 ); ``` -### Adding/removing slides +### Adding and Removing Slides -The content of the carousel can be changed by either appending or removing items, the carousel will update itself automatically. +The content of the carousel can be changed by appending or removing carousel items. The carousel will update itself automatically. ```html preview - Slide 1 - Slide 2 - Slide 3 + Slide 1 + Slide 2 + Slide 3 - + + + @@ -579,7 +626,7 @@ Use the `--aspect-ratio` custom property to customize the size of viewport in or ```jsx react import { useState } from 'react'; -import { SlCarousel, SlCarouselItem, SlDivider, SlSelect, SlMenuItem } from '@shoelace-style/shoelace/dist/react'; +import { SlCarousel, SlCarouselItem, SlDivider, SlSelect, SlOption } from '@shoelace-style/shoelace/dist/react'; const App = () => { const [aspectRatio, setAspectRatio] = useState('3/2'); @@ -627,9 +674,9 @@ const App = () => { value={aspectRatio} onSlChange={event => setAspectRatio(event.target.value)} > - 1 / 1 - 3 / 2 - 16 / 9 + 1 / 1 + 3 / 2 + 16 / 9 @@ -638,14 +685,12 @@ const App = () => { }; ``` -### Scroll hint +### Scroll Hint -Use `--scroll-padding` to add inline padding in horizontal carousels and block padding in vertical carousels. -Setting a padding, will make the closest slides visible, suggesting to the user that there are items that can -be scrolled. +Use the `--scroll-hint` attribute to add inline padding in horizontal carousels and block padding in vertical carousels. Setting a padding will make the closest slides slightly visible, hinting that there are more items in the carousel. ```html preview - + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash - - - - - ``` ```jsx react @@ -755,189 +786,9 @@ const App = () => { }; ``` -### Custom layout +### Gallery Example -The appearance of the carousel can be easily customized through its slots or `part` attributes. - -```html preview - - - The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash - - - A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash - - - The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash - - - A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash - - - A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash - - - - - - - -``` - -```jsx react -import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; - -const css = ` - .custom-layout::part(base) { - grid-template-areas: - 'slides slides slides' - 'slides slides slides'; - } - - .custom-layout::part(pagination) { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - padding: var(--sl-spacing-large); - background: linear-gradient(0deg, rgba(0, 0, 0, 0.8) 5%, rgba(0, 0, 0, 0.2) 75%, rgba(0, 0, 0, 0) 100%); - } - - .custom-layout::part(pagination-item) { - height: 5px; - width: var(--sl-spacing-large); - border-radius: var(--sl-border-radius-pill); - background-color: #fff; - } - - .custom-layout::part(pagination-item--active) { - background-color: var(--sl-color-primary-400); - width: var(--sl-spacing-x-large); - } - - .custom-layout::part(navigation-button) { - margin: var(--sl-spacing-large); - border-radius: var(--sl-border-radius-circle); - font-weight: var(--sl-font-weight-bold); - color: var(--sl-color-neutral-1000); - background: var(--sl-color-neutral-0); - opacity: 0.6; - transition: var(--sl-transition-medium) opacity; - } - - .custom-layout::part(navigation-button):focus, - .custom-layout::part(navigation-button):hover { - opacity: 1; - } -`; - -const App = () => ( - <> - - - The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash - - - A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash - - - The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash - - - A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash - - - A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash - - - - - - - -); -``` - -### Gallery example - -The carousel has a set of API with which is possible to interact programmatically, for example it is possible to -use `next()` or `previous()` to go respectively to the next or the previous slide. - -When the active slide is changed, the `sl-slide-change` event is emitted providing the `index` of the slide. - -Using the API is possible to extend the carousel, for example by syncing the active slide with a set of thumbnails, like in the example below. +The carousel has a robust API that makes it possible to extend and customize. This example syncs the active slide with a set of thumbnails, effectively creating a gallery-style carousel. ```html preview @@ -972,6 +823,7 @@ Using the API is possible to extend the carousel, for example by syncing the act />
+
Thumbnail Photo by 1 @@ -981,6 +833,7 @@ Using the API is possible to extend the carousel, for example by syncing the act Thumbnail Photo by 5
+ + ``` +```jsx react +import { useState } from 'react'; +import { SlCarousel, SlCarouselItem, SlDivider, SlSwitch } from '@shoelace-style/shoelace/dist/react'; + +const App = () => { + const [isEnabled, setIsEnabled] = useState(false); + + return ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + + + + setIsEnabled(!isEnabled)}> + Enable mouse dragging + + + ); +}; +``` + ### Multiple Slides Per View The `slides-per-view` attribute makes it possible to display multiple slides at a time. You can also use the `slides-per-move` attribute to advance more than once slide at a time, if desired. ```html preview - + Slide 1 Slide 2 Slide 3 @@ -312,13 +520,13 @@ The `slides-per-view` attribute makes it possible to display multiple slides at import { SlCarousel, SlCarouselItem } from '@shoelace-style/shoelace/dist/react'; const App = () => ( - - Slide 1 - Slide 2 - Slide 3 - Slide 4 - Slide 5 - Slide 6 + + Slide 1 + Slide 2 + Slide 3 + Slide 4 + Slide 5 + Slide 6 ); ``` @@ -571,7 +779,7 @@ const App = () => ( Use the `--aspect-ratio` custom property to customize the size of the carousel's viewport. ```html preview - + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash { - const [scrollPadding, setScrollPadding] = useState(10); - - return ( - <> - - - The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash - - - A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash - - - The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash - - - A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash - - - A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash - - - - - - setScrollPadding(event.target.valueAsNumber)} - /> - - - ); -}; +const App = () => ( + <> + + + The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash + + + A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash + + + The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash + + + A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash + + + A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash + + + +); ``` ### Gallery Example From 480a1df2462beb81b8929848a366209e1a96ac29 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 24 Feb 2023 15:24:39 -0500 Subject: [PATCH 40/53] reorder --- src/translations/da.ts | 6 +++--- src/translations/de.ts | 6 +++--- src/translations/en.ts | 14 +++++++------- src/translations/es.ts | 6 +++--- src/translations/fa.ts | 6 +++--- src/translations/fr.ts | 6 +++--- src/translations/he.ts | 6 +++--- src/translations/hu.ts | 6 +++--- src/translations/ja.ts | 6 +++--- src/translations/nl.ts | 6 +++--- src/translations/pl.ts | 6 +++--- src/translations/pt.ts | 6 +++--- src/translations/ru.ts | 6 +++--- src/translations/sv.ts | 6 +++--- src/translations/tr.ts | 6 +++--- src/translations/zh-tw.ts | 6 +++--- src/utilities/localize.ts | 2 +- 17 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/translations/da.ts b/src/translations/da.ts index 48f26a21..dcd16265 100644 --- a/src/translations/da.ts +++ b/src/translations/da.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Ryd indtastning', close: 'Luk', copy: 'Kopier', + currentValue: 'Nuværende værdi', + hidePassword: 'Skjul adgangskode', + loading: 'Indlæser', numOptionsSelected: (num: number) => { if (num === 0) return 'Ingen valgt'; if (num === 1) return '1 valgt'; return `${num} valgt`; }, - currentValue: 'Nuværende værdi', - hidePassword: 'Skjul adgangskode', - loading: 'Indlæser', progress: 'Status', remove: 'Fjern', resize: 'Tilpas størrelse', diff --git a/src/translations/de.ts b/src/translations/de.ts index c65b9224..c588181f 100644 --- a/src/translations/de.ts +++ b/src/translations/de.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Eingabe löschen', close: 'Schließen', copy: 'Kopieren', + currentValue: 'Aktueller Wert', + hidePassword: 'Passwort verbergen', + loading: 'Wird geladen', numOptionsSelected: num => { if (num === 0) return 'Keine Optionen ausgewählt'; if (num === 1) return '1 Option ausgewählt'; return `${num} Optionen ausgewählt`; }, - currentValue: 'Aktueller Wert', - hidePassword: 'Passwort verbergen', - loading: 'Wird geladen', progress: 'Fortschritt', remove: 'Entfernen', resize: 'Größe ändern', diff --git a/src/translations/en.ts b/src/translations/en.ts index fb5dd9a6..9b250318 100644 --- a/src/translations/en.ts +++ b/src/translations/en.ts @@ -9,14 +9,17 @@ const translation: Translation = { clearEntry: 'Clear entry', close: 'Close', copy: 'Copy', + currentValue: 'Current value', + goToCarouselNextSlide: 'Go to next slide in carousel', + goToCarouselPreviousSlide: 'Go to previous slide in carousel', + goToCarouselSlide: (slide, count) => `Go to slide ${slide} of ${count} in carousel`, + hidePassword: 'Hide password', + loading: 'Loading', numOptionsSelected: num => { if (num === 0) return 'No options selected'; if (num === 1) return '1 option selected'; return `${num} options selected`; }, - currentValue: 'Current value', - hidePassword: 'Hide password', - loading: 'Loading', progress: 'Progress', remove: 'Remove', resize: 'Resize', @@ -24,10 +27,7 @@ const translation: Translation = { scrollToStart: 'Scroll to start', selectAColorFromTheScreen: 'Select a color from the screen', showPassword: 'Show password', - toggleColorFormat: 'Toggle color format', - goToCarouselNextSlide: 'Go to next slide in carousel', - goToCarouselPreviousSlide: 'Go to previous slide in carousel', - goToCarouselSlide: (slide, count) => `Go to slide ${slide} of ${count} in carousel` + toggleColorFormat: 'Toggle color format' }; registerTranslation(translation); diff --git a/src/translations/es.ts b/src/translations/es.ts index c1469238..f8ae2142 100644 --- a/src/translations/es.ts +++ b/src/translations/es.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Borrar entrada', close: 'Cerrar', copy: 'Copiar', + currentValue: 'Valor actual', + hidePassword: 'Ocultar contraseña', + loading: 'Cargando', numOptionsSelected: num => { if (num === 0) return 'No hay opciones seleccionadas'; if (num === 1) return '1 opción seleccionada'; return `${num} opción seleccionada`; }, - currentValue: 'Valor actual', - hidePassword: 'Ocultar contraseña', - loading: 'Cargando', progress: 'Progreso', remove: 'Eliminar', resize: 'Cambiar el tamaño', diff --git a/src/translations/fa.ts b/src/translations/fa.ts index f4e7a773..cce1ee62 100644 --- a/src/translations/fa.ts +++ b/src/translations/fa.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'پاک کردن ورودی', close: 'بستن', copy: 'رونوشت', + currentValue: 'مقدار فعلی', + hidePassword: 'پنهان کردن رمز', + loading: 'بارگذاری', numOptionsSelected: num => { if (num === 0) return 'هیچ گزینه ای انتخاب نشده است'; if (num === 1) return '1 گزینه انتخاب شده است'; return `${num} گزینه انتخاب شده است`; }, - currentValue: 'مقدار فعلی', - hidePassword: 'پنهان کردن رمز', - loading: 'بارگذاری', progress: 'پیشرفت', remove: 'حذف', resize: 'تغییر اندازه', diff --git a/src/translations/fr.ts b/src/translations/fr.ts index 93bd5e97..08184fd6 100644 --- a/src/translations/fr.ts +++ b/src/translations/fr.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: `Effacer l'entrée`, close: 'Fermer', copy: 'Copier', + currentValue: 'Valeur actuelle', + hidePassword: 'Masquer le mot de passe', + loading: 'Chargement', numOptionsSelected: num => { if (num === 0) return 'Aucune option sélectionnée'; if (num === 1) return '1 option sélectionnée'; return `${num} options sélectionnées`; }, - currentValue: 'Valeur actuelle', - hidePassword: 'Masquer le mot de passe', - loading: 'Chargement', progress: 'Progrès', remove: 'Retirer', resize: 'Redimensionner', diff --git a/src/translations/he.ts b/src/translations/he.ts index bc50a2a8..9e936600 100644 --- a/src/translations/he.ts +++ b/src/translations/he.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'נקה קלט', close: 'סגור', copy: 'העתק', + currentValue: 'ערך נוכחי', + hidePassword: 'הסתר סיסמא', + loading: 'טוען', numOptionsSelected: num => { if (num === 0) return 'לא נבחרו אפשרויות'; if (num === 1) return 'נבחרה אפשרות אחת'; return `נבחרו ${num} אפשרויות`; }, - currentValue: 'ערך נוכחי', - hidePassword: 'הסתר סיסמא', - loading: 'טוען', progress: 'התקדמות', remove: 'לְהַסִיר', resize: 'שנה גודל', diff --git a/src/translations/hu.ts b/src/translations/hu.ts index 8eec2fc4..0145236b 100644 --- a/src/translations/hu.ts +++ b/src/translations/hu.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Bejegyzés törlése', close: 'Bezárás', copy: 'Másolás', + currentValue: 'Aktuális érték', + hidePassword: 'Jelszó elrejtése', + loading: 'Betöltés', numOptionsSelected: num => { if (num === 0) return 'Nincsenek kiválasztva opciók'; if (num === 1) return '1 lehetőség kiválasztva'; return `${num} lehetőség kiválasztva`; }, - currentValue: 'Aktuális érték', - hidePassword: 'Jelszó elrejtése', - loading: 'Betöltés', progress: 'Folyamat', remove: 'Eltávolítás', resize: 'Átméretezés', diff --git a/src/translations/ja.ts b/src/translations/ja.ts index f1763547..5183ca5e 100644 --- a/src/translations/ja.ts +++ b/src/translations/ja.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'クリアエントリ', close: '閉じる', copy: 'コピー', + currentValue: '現在の価値', + hidePassword: 'パスワードを隠す', + loading: '読み込み中', numOptionsSelected: num => { if (num === 0) return 'オプションが選択されていません'; if (num === 1) return '1 つのオプションが選択されました'; return `${num} つのオプションが選択されました`; }, - currentValue: '現在の価値', - hidePassword: 'パスワードを隠す', - loading: '読み込み中', progress: '進行', remove: '削除', resize: 'サイズ変更', diff --git a/src/translations/nl.ts b/src/translations/nl.ts index 6a7fe354..b7756a4e 100644 --- a/src/translations/nl.ts +++ b/src/translations/nl.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Invoer wissen', close: 'Sluiten', copy: 'Kopiëren', + currentValue: 'Huidige waarde', + hidePassword: 'Verberg wachtwoord', + loading: 'Bezig met laden', numOptionsSelected: num => { if (num === 0) return 'Geen optie geselecteerd'; if (num === 1) return '1 optie geselecteerd'; return `${num} opties geselecteerd`; }, - currentValue: 'Huidige waarde', - hidePassword: 'Verberg wachtwoord', - loading: 'Bezig met laden', progress: 'Voortgang', remove: 'Verwijderen', resize: 'Formaat wijzigen', diff --git a/src/translations/pl.ts b/src/translations/pl.ts index b34f8995..22574221 100644 --- a/src/translations/pl.ts +++ b/src/translations/pl.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Wyczyść wpis', close: 'Zamknij', copy: 'Kopiuj', + currentValue: 'Aktualna wartość', + hidePassword: 'Ukryj hasło', + loading: 'Ładowanie', numOptionsSelected: num => { if (num === 0) return 'Nie wybrano opcji'; if (num === 1) return 'Wybrano 1 opcję'; return `Wybrano ${num} opcje`; }, - currentValue: 'Aktualna wartość', - hidePassword: 'Ukryj hasło', - loading: 'Ładowanie', progress: 'Postęp', remove: 'Usunąć', resize: 'Zmień rozmiar', diff --git a/src/translations/pt.ts b/src/translations/pt.ts index 3f62aa45..67f4aa6b 100644 --- a/src/translations/pt.ts +++ b/src/translations/pt.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Limpar entrada', close: 'Fechar', copy: 'Copiar', + currentValue: 'Valor atual', + hidePassword: 'Esconder a senha', + loading: 'Carregando', numOptionsSelected: num => { if (num === 0) return 'Nenhuma opção selecionada'; if (num === 1) return '1 opção selecionada'; return `${num} opções selecionadas`; }, - currentValue: 'Valor atual', - hidePassword: 'Esconder a senha', - loading: 'Carregando', progress: 'Progresso', remove: 'Remover', resize: 'Mudar o tamanho', diff --git a/src/translations/ru.ts b/src/translations/ru.ts index 2d03690c..5ea12470 100644 --- a/src/translations/ru.ts +++ b/src/translations/ru.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Очистить запись', close: 'Закрыть', copy: 'Скопировать', + currentValue: 'Текущее значение', + hidePassword: 'Скрыть пароль', + loading: 'Загрузка', numOptionsSelected: num => { if (num === 0) return 'выбрано 0 вариантов'; if (num === 1) return 'Выбран 1 вариант'; return `выбрано ${num} варианта`; }, - currentValue: 'Текущее значение', - hidePassword: 'Скрыть пароль', - loading: 'Загрузка', progress: 'Прогресс', remove: 'Удалить', resize: 'Изменить размер', diff --git a/src/translations/sv.ts b/src/translations/sv.ts index 204d9574..6d4b56de 100644 --- a/src/translations/sv.ts +++ b/src/translations/sv.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Återställ val', close: 'Stäng', copy: 'Kopiera', + currentValue: 'Nuvarande värde', + hidePassword: 'Dölj lösenord', + loading: 'Läser in', numOptionsSelected: num => { if (num === 0) return 'Inga alternativ har valts'; if (num === 1) return '1 alternativ valt'; return `${num} alternativ valda`; }, - currentValue: 'Nuvarande värde', - hidePassword: 'Dölj lösenord', - loading: 'Läser in', progress: 'Framsteg', remove: 'Ta bort', resize: 'Ändra storlek', diff --git a/src/translations/tr.ts b/src/translations/tr.ts index e0da1add..6ae184f2 100644 --- a/src/translations/tr.ts +++ b/src/translations/tr.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: 'Girişi sil', close: 'Kapat', copy: 'Kopya', + currentValue: 'Mevcut değer', + hidePassword: 'Şifreyi sakla', + loading: 'Yükleme', numOptionsSelected: num => { if (num === 0) return 'Hiçbir seçenek seçilmedi'; if (num === 1) return '1 seçenek seçildi'; return `${num} seçenek seçildi`; }, - currentValue: 'Mevcut değer', - hidePassword: 'Şifreyi sakla', - loading: 'Yükleme', progress: 'İlerleme', remove: 'Kaldır', resize: 'Yeniden boyutlandır', diff --git a/src/translations/zh-tw.ts b/src/translations/zh-tw.ts index 35dcaa43..45d81fd7 100644 --- a/src/translations/zh-tw.ts +++ b/src/translations/zh-tw.ts @@ -9,14 +9,14 @@ const translation: Translation = { clearEntry: '清空', close: '關閉', copy: '複製', + currentValue: '當前值', + hidePassword: '隱藏密碼', + loading: '載入中', numOptionsSelected: num => { if (num === 0) return '未選擇任何項目'; if (num === 1) return '已選擇 1 個項目'; return `${num} 選擇項目`; }, - currentValue: '當前值', - hidePassword: '隱藏密碼', - loading: '載入中', progress: '進度', remove: '移除', resize: '調整大小', diff --git a/src/utilities/localize.ts b/src/utilities/localize.ts index 9326f485..2dd688dd 100644 --- a/src/utilities/localize.ts +++ b/src/utilities/localize.ts @@ -16,10 +16,10 @@ export interface Translation extends DefaultTranslation { clearEntry: string; close: string; copy: string; - numOptionsSelected: (num: number) => string; currentValue: string; hidePassword: string; loading: string; + numOptionsSelected: (num: number) => string; progress: string; remove: string; resize: string; From 7e9ae32b9bdf8aef667757a2a0da93ea676bca94 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 24 Feb 2023 15:48:39 -0500 Subject: [PATCH 41/53] add carousel terms --- src/components/carousel/carousel.ts | 6 +++--- src/translations/da.ts | 3 +++ src/translations/de.ts | 3 +++ src/translations/en.ts | 6 +++--- src/translations/es.ts | 3 +++ src/translations/fa.ts | 3 +++ src/translations/fr.ts | 3 +++ src/translations/he.ts | 3 +++ src/translations/hu.ts | 3 +++ src/translations/ja.ts | 3 +++ src/translations/nl.ts | 3 +++ src/translations/pl.ts | 3 +++ src/translations/pt.ts | 3 +++ src/translations/ru.ts | 3 +++ src/translations/sv.ts | 3 +++ src/translations/tr.ts | 3 +++ src/translations/zh-tw.ts | 3 +++ src/utilities/localize.ts | 10 +++------- 18 files changed, 54 insertions(+), 13 deletions(-) diff --git a/src/components/carousel/carousel.ts b/src/components/carousel/carousel.ts index 00d3abb1..4f8b06ee 100644 --- a/src/components/carousel/carousel.ts +++ b/src/components/carousel/carousel.ts @@ -327,7 +327,7 @@ export default class SlCarousel extends ShoelaceElement { 'carousel__pagination-item--active': isActive })}" aria-selected="${isActive ? 'true' : 'false'}" - aria-label="${this.localize.term('goToCarouselSlide', index + 1, pagesCount)}" + aria-label="${this.localize.term('goToSlide', index + 1, pagesCount)}" role="tab" @click="${() => this.goToSlide(index * slidesPerPage)}" > @@ -356,7 +356,7 @@ export default class SlCarousel extends ShoelaceElement { 'carousel__navigation-button--previous': true, 'carousel__navigation-button--disabled': !prevEnabled })}" - aria-label="${this.localize.term('goToCarouselPreviousSlide')}" + aria-label="${this.localize.term('goToPreviousSlide')}" part="navigation-button navigation-button--previous" > @@ -373,7 +373,7 @@ export default class SlCarousel extends ShoelaceElement { 'carousel__navigation-button--next': true, 'carousel__navigation-button--disabled': !nextEnabled })}" - aria-label="${this.localize.term('goToCarouselNextSlide')}" + aria-label="${this.localize.term('nextSlide')}" part="navigation-button navigation-button--next" > diff --git a/src/translations/da.ts b/src/translations/da.ts index dcd16265..2fdf1700 100644 --- a/src/translations/da.ts +++ b/src/translations/da.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Luk', copy: 'Kopier', currentValue: 'Nuværende værdi', + goToSlide: (slide, count) => `Gå til dias ${slide} af ${count}`, hidePassword: 'Skjul adgangskode', loading: 'Indlæser', + nextSlide: 'Næste slide', numOptionsSelected: (num: number) => { if (num === 0) return 'Ingen valgt'; if (num === 1) return '1 valgt'; return `${num} valgt`; }, + previousSlide: 'Forrige dias', progress: 'Status', remove: 'Fjern', resize: 'Tilpas størrelse', diff --git a/src/translations/de.ts b/src/translations/de.ts index c588181f..fd8d98ee 100644 --- a/src/translations/de.ts +++ b/src/translations/de.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Schließen', copy: 'Kopieren', currentValue: 'Aktueller Wert', + goToSlide: (slide, count) => `Gehen Sie zu Folie ${slide} von ${count}`, hidePassword: 'Passwort verbergen', loading: 'Wird geladen', + nextSlide: 'Nächste Folie', numOptionsSelected: num => { if (num === 0) return 'Keine Optionen ausgewählt'; if (num === 1) return '1 Option ausgewählt'; return `${num} Optionen ausgewählt`; }, + previousSlide: 'Vorherige Folie', progress: 'Fortschritt', remove: 'Entfernen', resize: 'Größe ändern', diff --git a/src/translations/en.ts b/src/translations/en.ts index 9b250318..8999eb22 100644 --- a/src/translations/en.ts +++ b/src/translations/en.ts @@ -10,16 +10,16 @@ const translation: Translation = { close: 'Close', copy: 'Copy', currentValue: 'Current value', - goToCarouselNextSlide: 'Go to next slide in carousel', - goToCarouselPreviousSlide: 'Go to previous slide in carousel', - goToCarouselSlide: (slide, count) => `Go to slide ${slide} of ${count} in carousel`, + goToSlide: (slide, count) => `Go to slide ${slide} of ${count}`, hidePassword: 'Hide password', loading: 'Loading', + nextSlide: 'Next slide', numOptionsSelected: num => { if (num === 0) return 'No options selected'; if (num === 1) return '1 option selected'; return `${num} options selected`; }, + previousSlide: 'Previous slide', progress: 'Progress', remove: 'Remove', resize: 'Resize', diff --git a/src/translations/es.ts b/src/translations/es.ts index f8ae2142..2c8ebb78 100644 --- a/src/translations/es.ts +++ b/src/translations/es.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Cerrar', copy: 'Copiar', currentValue: 'Valor actual', + goToSlide: (slide, count) => `Ir a la diapositiva ${slide} de ${count}`, hidePassword: 'Ocultar contraseña', loading: 'Cargando', + nextSlide: 'Siguiente diapositiva', numOptionsSelected: num => { if (num === 0) return 'No hay opciones seleccionadas'; if (num === 1) return '1 opción seleccionada'; return `${num} opción seleccionada`; }, + previousSlide: 'Diapositiva anterior', progress: 'Progreso', remove: 'Eliminar', resize: 'Cambiar el tamaño', diff --git a/src/translations/fa.ts b/src/translations/fa.ts index cce1ee62..9f80d118 100644 --- a/src/translations/fa.ts +++ b/src/translations/fa.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'بستن', copy: 'رونوشت', currentValue: 'مقدار فعلی', + goToSlide: (slide, count) => `رفتن به اسلاید ${slide} از ${count}`, hidePassword: 'پنهان کردن رمز', loading: 'بارگذاری', + nextSlide: 'اسلاید بعدی', numOptionsSelected: num => { if (num === 0) return 'هیچ گزینه ای انتخاب نشده است'; if (num === 1) return '1 گزینه انتخاب شده است'; return `${num} گزینه انتخاب شده است`; }, + previousSlide: 'اسلاید قبلی', progress: 'پیشرفت', remove: 'حذف', resize: 'تغییر اندازه', diff --git a/src/translations/fr.ts b/src/translations/fr.ts index 08184fd6..c70a04d5 100644 --- a/src/translations/fr.ts +++ b/src/translations/fr.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Fermer', copy: 'Copier', currentValue: 'Valeur actuelle', + goToSlide: (slide, count) => `Aller à la diapositive ${slide} de ${count}`, hidePassword: 'Masquer le mot de passe', loading: 'Chargement', + nextSlide: 'Diapositive suivante', numOptionsSelected: num => { if (num === 0) return 'Aucune option sélectionnée'; if (num === 1) return '1 option sélectionnée'; return `${num} options sélectionnées`; }, + previousSlide: 'Diapositive précédente', progress: 'Progrès', remove: 'Retirer', resize: 'Redimensionner', diff --git a/src/translations/he.ts b/src/translations/he.ts index 9e936600..3bac5351 100644 --- a/src/translations/he.ts +++ b/src/translations/he.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'סגור', copy: 'העתק', currentValue: 'ערך נוכחי', + goToSlide: (slide, count) => `עבור לשקופית ${slide} של ${count}`, hidePassword: 'הסתר סיסמא', loading: 'טוען', + nextSlide: 'Next slide', numOptionsSelected: num => { if (num === 0) return 'לא נבחרו אפשרויות'; if (num === 1) return 'נבחרה אפשרות אחת'; return `נבחרו ${num} אפשרויות`; }, + previousSlide: 'Previous slide', progress: 'התקדמות', remove: 'לְהַסִיר', resize: 'שנה גודל', diff --git a/src/translations/hu.ts b/src/translations/hu.ts index 0145236b..76546c10 100644 --- a/src/translations/hu.ts +++ b/src/translations/hu.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Bezárás', copy: 'Másolás', currentValue: 'Aktuális érték', + goToSlide: (slide, count) => `Ugrás a ${count}/${slide}. diára`, hidePassword: 'Jelszó elrejtése', loading: 'Betöltés', + nextSlide: 'Következő dia', numOptionsSelected: num => { if (num === 0) return 'Nincsenek kiválasztva opciók'; if (num === 1) return '1 lehetőség kiválasztva'; return `${num} lehetőség kiválasztva`; }, + previousSlide: 'Előző dia', progress: 'Folyamat', remove: 'Eltávolítás', resize: 'Átméretezés', diff --git a/src/translations/ja.ts b/src/translations/ja.ts index 5183ca5e..b1996154 100644 --- a/src/translations/ja.ts +++ b/src/translations/ja.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: '閉じる', copy: 'コピー', currentValue: '現在の価値', + goToSlide: (slide, count) => `${count} 枚中 ${slide} 枚のスライドに移動`, hidePassword: 'パスワードを隠す', loading: '読み込み中', + nextSlide: '次のスライド', numOptionsSelected: num => { if (num === 0) return 'オプションが選択されていません'; if (num === 1) return '1 つのオプションが選択されました'; return `${num} つのオプションが選択されました`; }, + previousSlide: '前のスライド', progress: '進行', remove: '削除', resize: 'サイズ変更', diff --git a/src/translations/nl.ts b/src/translations/nl.ts index b7756a4e..30798b07 100644 --- a/src/translations/nl.ts +++ b/src/translations/nl.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Sluiten', copy: 'Kopiëren', currentValue: 'Huidige waarde', + goToSlide: (slide, count) => `Ga naar slide ${slide} van ${count}`, hidePassword: 'Verberg wachtwoord', loading: 'Bezig met laden', + nextSlide: 'Volgende dia', numOptionsSelected: num => { if (num === 0) return 'Geen optie geselecteerd'; if (num === 1) return '1 optie geselecteerd'; return `${num} opties geselecteerd`; }, + previousSlide: 'Vorige dia', progress: 'Voortgang', remove: 'Verwijderen', resize: 'Formaat wijzigen', diff --git a/src/translations/pl.ts b/src/translations/pl.ts index 22574221..79d1938d 100644 --- a/src/translations/pl.ts +++ b/src/translations/pl.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Zamknij', copy: 'Kopiuj', currentValue: 'Aktualna wartość', + goToSlide: (slide, count) => `Przejdź do slajdu ${slide} z ${count}`, hidePassword: 'Ukryj hasło', loading: 'Ładowanie', + nextSlide: 'Następny slajd', numOptionsSelected: num => { if (num === 0) return 'Nie wybrano opcji'; if (num === 1) return 'Wybrano 1 opcję'; return `Wybrano ${num} opcje`; }, + previousSlide: 'Poprzedni slajd', progress: 'Postęp', remove: 'Usunąć', resize: 'Zmień rozmiar', diff --git a/src/translations/pt.ts b/src/translations/pt.ts index 67f4aa6b..09595942 100644 --- a/src/translations/pt.ts +++ b/src/translations/pt.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Fechar', copy: 'Copiar', currentValue: 'Valor atual', + goToSlide: (slide, count) => `Vá para o slide ${slide} de ${count}`, hidePassword: 'Esconder a senha', loading: 'Carregando', + nextSlide: 'Próximo slide', numOptionsSelected: num => { if (num === 0) return 'Nenhuma opção selecionada'; if (num === 1) return '1 opção selecionada'; return `${num} opções selecionadas`; }, + previousSlide: 'Slide anterior', progress: 'Progresso', remove: 'Remover', resize: 'Mudar o tamanho', diff --git a/src/translations/ru.ts b/src/translations/ru.ts index 5ea12470..39af667d 100644 --- a/src/translations/ru.ts +++ b/src/translations/ru.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Закрыть', copy: 'Скопировать', currentValue: 'Текущее значение', + goToSlide: (slide, count) => `Перейти к слайду ${slide} из ${count}`, hidePassword: 'Скрыть пароль', loading: 'Загрузка', + nextSlide: 'Следующий слайд', numOptionsSelected: num => { if (num === 0) return 'выбрано 0 вариантов'; if (num === 1) return 'Выбран 1 вариант'; return `выбрано ${num} варианта`; }, + previousSlide: 'Предыдущий слайд', progress: 'Прогресс', remove: 'Удалить', resize: 'Изменить размер', diff --git a/src/translations/sv.ts b/src/translations/sv.ts index 6d4b56de..343b5b86 100644 --- a/src/translations/sv.ts +++ b/src/translations/sv.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Stäng', copy: 'Kopiera', currentValue: 'Nuvarande värde', + goToSlide: (slide, count) => `Gå till bild ${slide} av ${count}`, hidePassword: 'Dölj lösenord', loading: 'Läser in', + nextSlide: 'Nästa bild', numOptionsSelected: num => { if (num === 0) return 'Inga alternativ har valts'; if (num === 1) return '1 alternativ valt'; return `${num} alternativ valda`; }, + previousSlide: 'Föregående bild', progress: 'Framsteg', remove: 'Ta bort', resize: 'Ändra storlek', diff --git a/src/translations/tr.ts b/src/translations/tr.ts index 6ae184f2..77299473 100644 --- a/src/translations/tr.ts +++ b/src/translations/tr.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: 'Kapat', copy: 'Kopya', currentValue: 'Mevcut değer', + goToSlide: (slide, count) => `${count} slayttan ${slide} slayta gidin`, hidePassword: 'Şifreyi sakla', loading: 'Yükleme', + nextSlide: 'Sonraki slayt', numOptionsSelected: num => { if (num === 0) return 'Hiçbir seçenek seçilmedi'; if (num === 1) return '1 seçenek seçildi'; return `${num} seçenek seçildi`; }, + previousSlide: 'Bir onceki slayt', progress: 'İlerleme', remove: 'Kaldır', resize: 'Yeniden boyutlandır', diff --git a/src/translations/zh-tw.ts b/src/translations/zh-tw.ts index 45d81fd7..c579f78c 100644 --- a/src/translations/zh-tw.ts +++ b/src/translations/zh-tw.ts @@ -10,13 +10,16 @@ const translation: Translation = { close: '關閉', copy: '複製', currentValue: '當前值', + goToSlide: (slide, count) => `轉到第 ${slide} 張幻燈片,共 ${count} 張`, hidePassword: '隱藏密碼', loading: '載入中', + nextSlide: '下一張幻燈片', numOptionsSelected: num => { if (num === 0) return '未選擇任何項目'; if (num === 1) return '已選擇 1 個項目'; return `${num} 選擇項目`; }, + previousSlide: '上一張幻燈片', progress: '進度', remove: '移除', resize: '調整大小', diff --git a/src/utilities/localize.ts b/src/utilities/localize.ts index 2dd688dd..e6ef29a0 100644 --- a/src/utilities/localize.ts +++ b/src/utilities/localize.ts @@ -17,9 +17,12 @@ export interface Translation extends DefaultTranslation { close: string; copy: string; currentValue: string; + goToSlide: (slide: number, count: number) => string; hidePassword: string; loading: string; + nextSlide: string; numOptionsSelected: (num: number) => string; + previousSlide: string; progress: string; remove: string; resize: string; @@ -28,11 +31,4 @@ export interface Translation extends DefaultTranslation { selectAColorFromTheScreen: string; showPassword: string; toggleColorFormat: string; - - // - // TODO: update translations for all languages - // - goToCarouselNextSlide?: string; - goToCarouselPreviousSlide?: string; - goToCarouselSlide?: (slide: number, count: number) => string; } From e1979b8f38f733d2cccc378907ef2ee3ab14c749 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 24 Feb 2023 15:54:57 -0500 Subject: [PATCH 42/53] reorder custom properties --- src/components/carousel/carousel.styles.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/carousel/carousel.styles.ts b/src/components/carousel/carousel.styles.ts index 3a33e94b..d6b31cac 100644 --- a/src/components/carousel/carousel.styles.ts +++ b/src/components/carousel/carousel.styles.ts @@ -5,11 +5,11 @@ export default css` ${componentStyles} :host { - display: flex; - --slide-gap: var(--sl-spacing-medium, 1rem); --aspect-ratio: 16 / 9; --scroll-hint: 0px; + + display: flex; } .carousel { From b0f7dfb86ba3dc786e1f0ffeafb0202a600e1b7f Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 24 Feb 2023 15:55:02 -0500 Subject: [PATCH 43/53] update comment --- src/components/carousel/carousel.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/carousel/carousel.ts b/src/components/carousel/carousel.ts index 4f8b06ee..a5593360 100644 --- a/src/components/carousel/carousel.ts +++ b/src/components/carousel/carousel.ts @@ -42,8 +42,8 @@ import type { CSSResultGroup } from 'lit'; * * @cssproperty --slide-gap - The space between each slide. * @cssproperty --aspect-ratio - The aspect ratio of each slide. - * @cssproperty --scroll-hint - The amount of padding to apply to the scroll area. Useful to make adjacent slides - * visible. + * @cssproperty --scroll-hint - The amount of padding to apply to the scroll area, allowing adjacent slides to become + * partially visible as a scroll hint. */ @customElement('sl-carousel') export default class SlCarousel extends ShoelaceElement { From 79feaae7fc52602b1612be9b1de19a18b7cf7015 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 24 Feb 2023 15:56:31 -0500 Subject: [PATCH 44/53] adjust attribution --- docs/components/carousel.md | 212 ++++++++++++++++++------------------ 1 file changed, 106 insertions(+), 106 deletions(-) diff --git a/docs/components/carousel.md b/docs/components/carousel.md index 4b74f683..5babd7b4 100644 --- a/docs/components/carousel.md +++ b/docs/components/carousel.md @@ -6,31 +6,31 @@ The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -45,31 +45,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -88,31 +88,31 @@ Use the `pagination` attribute to show the total number of slides and the curren The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -126,31 +126,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -166,31 +166,31 @@ Use the `navigation` attribute to show previous and next buttons. The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -204,31 +204,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -244,31 +244,31 @@ By default, the carousel will not advanced beyond the first and last slides. You The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -282,31 +282,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -322,31 +322,31 @@ The carousel will automatically advance when the `autoplay` attribute is used. T The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -360,31 +360,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -403,31 +403,31 @@ This example is best demonstrated using a mouse. Try clicking and dragging the s The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -461,31 +461,31 @@ const App = () => { The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -664,31 +664,31 @@ it's important to specify a predefined height to the carousel through CSS. The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -740,31 +740,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -782,31 +782,31 @@ Use the `--aspect-ratio` custom property to customize the size of the carousel's The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -844,31 +844,31 @@ const App = () => { The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -901,31 +901,31 @@ Use the `--scroll-hint` attribute to add inline padding in horizontal carousels The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -941,31 +941,31 @@ const App = () => ( The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -982,31 +982,31 @@ The carousel has a robust API that makes it possible to extend and customize. Th The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash @@ -1014,11 +1014,11 @@ The carousel has a robust API that makes it possible to extend and customize. Th
- Thumbnail Photo by 1 - Thumbnail Photo by 2 - Thumbnail Photo by 3 - Thumbnail Photo by 4 - Thumbnail Photo by 5 + Thumbnail by 1 + Thumbnail by 2 + Thumbnail by 3 + Thumbnail by 4 + Thumbnail by 5
@@ -1140,23 +1140,23 @@ const css = ` const images = [ { src: '/assets/examples/carousel/mountains.jpg', - alt: 'The sun shines on the mountains and trees - Photo by Adam Kool on Unsplash' + alt: 'The sun shines on the mountains and trees (by Adam Kool on Unsplash' }, { src: '/assets/examples/carousel/waterfall.jpg', - alt: 'A waterfall in the middle of a forest - Photo by Thomas Kelly on Unsplash' + alt: 'A waterfall in the middle of a forest (by Thomas Kelly on Unsplash' }, { src: '/assets/examples/carousel/sunset.jpg', - alt: 'The sun is setting over a lavender field - Photo by Leonard Cotte on Unsplash' + alt: 'The sun is setting over a lavender field (by Leonard Cotte on Unsplash' }, { src: '/assets/examples/carousel/field.jpg', - alt: 'A field of grass with the sun setting in the background - Photo by Sapan Patel on Unsplash' + alt: 'A field of grass with the sun setting in the background (by Sapan Patel on Unsplash' }, { src: '/assets/examples/carousel/valley.jpg', - alt: 'A scenic view of a mountain with clouds rolling in - Photo by V2osk on Unsplash' + alt: 'A scenic view of a mountain with clouds rolling in (by V2osk on Unsplash' } ]; @@ -1199,7 +1199,7 @@ const App = () => {
{images.map({ src, alt }, i) => ( {`Thumbnail handleThumbnailClick(i)} src={src} From 3d2e618be8f575a377e0160239cfbad5e9a21247 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 24 Feb 2023 16:08:06 -0500 Subject: [PATCH 45/53] fix term --- src/components/carousel/carousel.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/carousel/carousel.ts b/src/components/carousel/carousel.ts index a5593360..ab31cff9 100644 --- a/src/components/carousel/carousel.ts +++ b/src/components/carousel/carousel.ts @@ -356,7 +356,7 @@ export default class SlCarousel extends ShoelaceElement { 'carousel__navigation-button--previous': true, 'carousel__navigation-button--disabled': !prevEnabled })}" - aria-label="${this.localize.term('goToPreviousSlide')}" + aria-label="${this.localize.term('previousSlide')}" part="navigation-button navigation-button--previous" > From 77c97502063ec4efdb72bc4b93c74fbef20d2fd9 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Mon, 27 Feb 2023 11:13:59 -0500 Subject: [PATCH 46/53] fix sl-tab-show event when closing --- docs/resources/changelog.md | 1 + src/components/tab/tab.test.ts | 28 ++++++++++++++++++++++------ src/components/tab/tab.ts | 3 ++- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/docs/resources/changelog.md b/docs/resources/changelog.md index d5ae5c32..7f25c4e5 100644 --- a/docs/resources/changelog.md +++ b/docs/resources/changelog.md @@ -13,6 +13,7 @@ New versions of Shoelace are released as-needed and generally occur when a criti - Fixed a bug in `` that caused the display label to render incorrectly in Chrome after form validation [#1197](https://github.com/shoelace-style/shoelace/discussions/1197) - Fixed a bug in `` that prevented users from applying their own value for `autocapitalize`, `autocomplete`, and `autocorrect` when using `type="password` [#1205](https://github.com/shoelace-style/shoelace/issues/1205) - Fixed a bug in `` that prevented scroll controls from showing when dynamically adding tabs [#1208](https://github.com/shoelace-style/shoelace/issues/1208) +- Fixed a bug in `` that caused `sl-tab-show` to be emitted when activating the close button - Updated `@shoelace-style/localize` to 3.1.0 When using `` the default value for `autocapitalize`, `autocomplete`, and `autocorrect` may be affected due to the bug fixed in [#1205](https://github.com/shoelace-style/shoelace/issues/1205). For any affected users, setting these attributes to `off` will restore the previous behavior. diff --git a/src/components/tab/tab.test.ts b/src/components/tab/tab.test.ts index 479de2df..fa277344 100644 --- a/src/components/tab/tab.test.ts +++ b/src/components/tab/tab.test.ts @@ -1,6 +1,8 @@ import { expect, fixture, html } from '@open-wc/testing'; import sinon from 'sinon'; +import type SlIconButton from '../icon-button/icon-button'; import type SlTab from './tab'; +import type SlTabGroup from '../tab-group/tab-group'; describe('', () => { it('passes accessibility test', async () => { @@ -88,17 +90,31 @@ describe('', () => { }); describe('closable', () => { - it('should emit close event when close button clicked', async () => { - const el = await fixture(html` Test `); + it('should emit close event when the close button is clicked', async () => { + const tabGroup = await fixture(html` + + General + Custom + This is the general tab panel. + This is the custom tab panel. + + `); + const closeButton = tabGroup + .querySelectorAll('sl-tab')[0]! + .shadowRoot!.querySelector('[part~="close-button"]')!; - const closeButton = el.shadowRoot!.querySelector('[part~="close-button"]')!; - const spy = sinon.spy(); + const handleClose = sinon.spy(); + const handleTabShow = sinon.spy(); - el.addEventListener('sl-close', spy, { once: true }); + tabGroup.addEventListener('sl-close', handleClose, { once: true }); + // The sl-tab-show event shouldn't be emitted when clicking the close button + tabGroup.addEventListener('sl-tab-show', handleTabShow); closeButton.click(); + await closeButton?.updateComplete; - expect(spy.called).to.equal(true); + expect(handleClose.called).to.equal(true); + expect(handleTabShow.called).to.equal(false); }); }); }); diff --git a/src/components/tab/tab.ts b/src/components/tab/tab.ts index 961d0c73..9db04c54 100644 --- a/src/components/tab/tab.ts +++ b/src/components/tab/tab.ts @@ -53,7 +53,8 @@ export default class SlTab extends ShoelaceElement { this.setAttribute('role', 'tab'); } - private handleCloseClick() { + private handleCloseClick(event: Event) { + event.stopPropagation(); this.emit('sl-close'); } From 3a3a7347bc3304129f25d1a77f1a04effd4559c4 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Mon, 27 Feb 2023 11:15:57 -0500 Subject: [PATCH 47/53] link to event --- docs/components/dropdown.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/components/dropdown.md b/docs/components/dropdown.md index 194d721d..9d723aa1 100644 --- a/docs/components/dropdown.md +++ b/docs/components/dropdown.md @@ -64,7 +64,7 @@ const App = () => ( ### Getting the Selected Item -When dropdowns are used with [menus](/components/menu), you can listen for the `sl-select` event to determine which menu item was selected. The menu item element will be exposed in `event.detail.item`. You can set `value` props to make it easier to identify commands. +When dropdowns are used with [menus](/components/menu), you can listen for the [`sl-select`](/components/menu#events) event to determine which menu item was selected. The menu item element will be exposed in `event.detail.item`. You can set `value` props to make it easier to identify commands. ```html preview