From bb95c2a3ab415ac072854ffb815fd1866b28736d Mon Sep 17 00:00:00 2001 From: Fernando Rojo Date: Thu, 1 Sep 2022 11:37:29 -0400 Subject: [PATCH] feat: Image items on iOS; onOpenChange --- examples/expo/package.json | 2 +- examples/expo/src/App.tsx | 28 +++++++++++-- examples/expo/src/fernando.jpg | Bin 0 -> 32367 bytes packages/zeego/package.json | 6 ++- .../src/dropdown-menu/dropdown-menu.web.tsx | 8 +++- .../src/menu/create-ios-menu/index.ios.tsx | 39 ++++++++++++------ packages/zeego/src/menu/types.ts | 1 + yarn.lock | 15 +++++-- 8 files changed, 74 insertions(+), 25 deletions(-) create mode 100644 examples/expo/src/fernando.jpg diff --git a/examples/expo/package.json b/examples/expo/package.json index 77aab67..4adbf03 100644 --- a/examples/expo/package.json +++ b/examples/expo/package.json @@ -23,7 +23,7 @@ "react-dom": "16.13.1", "react-native": "0.64.2", "react-native-gesture-handler": "~1.10.2", - "react-native-ios-context-menu": "^1.3.0", + "react-native-ios-context-menu": "^1.12.0", "react-native-reanimated": "2.2.2", "react-native-safe-area-context": "3.3.2", "react-native-screens": "~3.4.0", diff --git a/examples/expo/src/App.tsx b/examples/expo/src/App.tsx index bb15fd9..d8d91ab 100644 --- a/examples/expo/src/App.tsx +++ b/examples/expo/src/App.tsx @@ -1,4 +1,4 @@ -import { StyleSheet, View, Text, Platform } from 'react-native' +import { StyleSheet, View, Text, Platform, Image } from 'react-native' import * as ContextMenu from 'zeego/context-menu' import * as DropdownMenu from 'zeego/dropdown-menu' @@ -8,6 +8,8 @@ const select = (val: unknown) => () => alert(val) const itemHeight = 25 +const source = Image.resolveAssetSource(require('./camera-outline.png')) + const contentStyle = { minWidth: 220, backgroundColor: 'white', @@ -45,7 +47,11 @@ const dropdownStyles = StyleSheet.create({ paddingRight: 5, paddingLeft: itemHeight, height: itemHeight, - transformOrigin: 'var(--radix-dropdown-menu-item-transform-origin)', + ...Platform.select({ + web: { + transformOrigin: 'var(--radix-dropdown-menu-item-transform-origin)', + }, + }), }, itemWithSubtitle: { height: itemHeight * 2, @@ -341,18 +347,31 @@ const ContextMenuExample = () => { {() => ( )} + + @FernandoTheRojo + Creator of Zeego + + + + Action #1 - Description! + Hey! + + @dkT6kISCN)el=@Ex zWTJzGqdPP!0O084;ifJlPO7V?PYSyWK=`;Y0fYcpGYfYYF;!JX!2gx*e*TjV04y;5 zll6an?El<>XbE(;_*fv^M>ns9i<`#>7X84=ULG$0aN-BXw6HO={J;z?6;-o*!%Y z5B<{w3FxGy@zE0g=j#qo2gm@#0i*zPfG5Bf-~jLdFnzR6A2$0xk7NJOIAwtI#~6!` zy9>Yv;Px@X8esD=mhpq@32+AhKU%8~KJepm_;})j{@MOt3jq9&P2H_H{>l4L8A%=h zfZ2V2zorKOV6y>$*NFG`=c4!b*J1zwY6Sr3P5qzo&Z!^fJp14${tu5b7XUyB1pr#R z|A%K@3IMcy*ckVhiLjB-euj)6=jOo`Nj!rQ@=~$4C-R z4N7%@d?QKopWqN+M_|GT`}Mai*bhf;Eg{%c< zCqf!0w?CqR?uWlTSrA79(gmke)Y##*v7O7_T=t zn=yOg@Q3lERt~aJ^y}D`2qHF(>fk2dvZ*uE-`<`0mK$a*U`)RM;;mXA$d^y}iQOR$ zlrZIsogh%WM)+UTZMW%qvo3Z*vrU&x|JeKjuHbJTMuY>PTvZ;`v9(gMhvjnf+k5Ed zQv2U>;yaAhrlX#^#c5o19v_U>=hxOO9-~ClOnt&3o99|J{DEbyo~O+Z$!bBF6}w7a zC`;pds4sXI<4C}(-0zhO@%z5rNAU6K-lwrltKxh%!2bTbaW3zdSoN`cvrUTOYvJcV zdk3ONoYNh7J@Hr!dUHoW++v#{b;Z_wdkymx3qWj$PXOLcdvBpuZP}V7-=&;8%N#om z!d1>2CW#``k}q+LP|;cruVTMKF2uH%u3n(aDIeP)ijK|aO|2=d`uyWfP8xon$9uUt zxw;jf+g{Bh8{fw!BYlQ6)0}Emmm=?p9*;b)T;_#JT^Us^2O3m)w(L=i&{_~xw=+_R zlTby}Pl4WioM;W}BdsUqf0M2M)9mbP!*h;c58d{cj9&!Ki8n}o6nA{Ew1(n(d}g@xx})_&&YhyqPem$p8(jNBY7P|Hp!-nia9{ECu4hi zmHgbu_&-7h>i%lT;F|sn_F}R_ea5?(Vwukv;D9GlM(uSRnshtV1y|4Ad+#{kL*H^Y zeQ$UNJFJZzAzYn2@~6vW`|CCNv3mLnR(mqs%}{&!Z1Gea@e}0c zbSPF&+-azr{VjFDTcVWR8Ov99!M`&ol}`2~n;<`5N9w?P^T81H5$lxC?rnp=tp6%1 zuM08T6?fDd`vvfwq`Mt)9@E19joG<5HRAcRR?eXNQ%3P6t6OwEMh}>>Dx>U+eQTXY z+F1uQjoLgk@vzoAQ8y=3!vL8lcyHC@63FgUx0hl}k1I~TG>^IvR%1Az zYI1>5*9tmE-_I?_OXvC|vhM1M1i0W?%KqHYdvg7}x0UpZPoy7JTG@;hGN z1%;0c?D}EH5Yvb(1HaE7LSOv#?bI44>e#&)5hMDE!J;1l_FDUC)#);zl|P!0%Q$XL zo%;rj1`!u!^UdwG#UNwDvUL~?uONvApin@GewE|#?4pnHGX@c#V>nN_Ox@3V#{`3# zLKW3g$x~x*S_D7S3v!GMGd3gWge!Gb%xWi?Io_N{+-`qzV@5sg6>H7i90upvK!c+P zj;yplST^9r80NiNrZC_AHI=`1Ss@e|I$iy~kd%*Gh3bu3UgILEn_1lv7;3ru?*J8L z@+LK{v1KDG>nxMDW%~BL^Sg=bLLtZ|WkLJ4jR|b~R=DywyPfvbYR^)c`~-!(<>DUH z5%EL^725mr7!;}z<6sr#m&Y~2(lZ-pZh;|0=GUasz>tDN8yM}&T0xqxM= zdg?|UtnIPX1}jh34q8Xd8z$-65Edrbe=Y4{wORW~7#oH3f@e&H<9q~Ss+bt6 zPtHPVyoB*YB0~JHD58MO4ns~0J#>e4V-chOk}bJ zOGCtdUSc4&xmx6PPHm87`KBd_FWXzA=5&#^B;qNCIyUV~iYt9rb_xago0fg+hR_&kQu{4h}i00WQc{S2y@oEYASw9a^ z`y8~nFDy21&eHoR+-tiAsPgC;iSbn4{i1G2zo|6&nQ{vrEo^1Slg6-W?JrAK~Wk8p`?zND$U&tXXd_lGL!?O7l8RPj>l6Dt<67?f81}F7tpF>g?UEX1V3&2 z-ga|1DnJHxa5>fuo$3!+Guj)VMnQ~$tjMcrzv&raQhI)l_*K>pD%VGYcM`sC%J+vP&pnFejK5k4Hu5hLzPOrkSK&@^k9pR@pY}b zO_cF9bU-L`n)Q{x^iB^E&9d;G05=xE!pn(G86!Mtq^e-n&rGMMzE*5N7-RV22W45? zoQ~;jyF>)Szg}2b9R@84$EY%%3hx2q`}QWrH1Xn^fxPQ#;y+5|eY*tr_aT+X+ciiD zNampWbdH5B8ZoXCrR}O2GuEDyOv6x;a~4qbbr`{}vcZyBuBPTcHO0vsRMNQ$o(=E} zHq4pqxb?1}6#5MM@ibT~gT0)rn4rY+i`%zHk}n2UDAvhhfmO@XbFC3JDjAzeDZz*v6 zXF*)S@QwR?8GGKxrrATkZ@A_-r5RtqIY9fV58>ysl8(9!G40;mbarS09BW-mJ*lDH zWgF8nmJekcQoGD~J37)bM2*(|eT|6hUTlW=AT1Sj3Qn5P7x0|>$_aa5eEE*#Tu)&O-GY_3HiZ$V9Dea#S;`ff#XA2arVp*KD<27<-WOpf_ba$OV@uIzYl}=|j^g-B{)GN4WKA3ph#!;0^Ib zgO>KN4K2ClWe&nPL%OEcO$vw7t`DL&{n)pJTKcLqqzU!s9{wt4Xu z7Db20Puyre#L{8KtR=E9tmt9TG2epmA}#@U&e5>CCUy19pU1Rq8 z!a8%(KhC#Ir~pVvNC@bEpZ_}OLO=qbpwZA_P%+5J+1Ni}QiySglTvbGu}XZLdEq{e z!VoZ!ri!JxC|A1p-E1=+_sD^upp>#VuA$H$`3c7m7f$`!YcYX^V;dbE#8ay>BMA*c zOC9m}eVIztCQ=N4W-s^16<_U*A{L~c!Z~#}tF$CWF%;FGM!pdzep$i$GQVJ#TusldmycO4C7_{PlkMB%)_Mk2?uSH>3|`z``gWN1 zCOTx$bSbC{Xl~&{&!57B?5J{s@0B`1mWiKDs?RrQ)`-_q-@HlUTusm30VWmifT8xl zB3!eGj+6X^WVd^*$%6f3gRB#}CiRWD@hkZWr#+sPK0c*>(~v1?$2-gWTRv&WfmQP< zC(?zRcffFagI7@fqRIAIxhkYJW>lDA6TG%wl-)?}GWd;9&cS1|-Mi&t@~DOV&n`Zb z7^DI!M7{N2@RTxZ4J1Mv9@pCVXu@jGZ+wQqyOsaFCg~%(!(Kn<--IRC>)#D`z&Tk3 zz*Zry7$sjV-R|0>Rf^CR1ka_<%?S?SdgCaqPbWRrf7|YA3vIXTPw<;he)2G>$SiJb zY-q6kXhr!j*x8nmi&MEtT&Sd?ynlTTI!J5JQ5i$S;hX+TQuZLDPC5;YM%zFqQ*B-O zsJ!qU_b5_l1LEr!m8KiNprC~>on@%!9<9aPLy32&jKeP%LHIj;o86t~RS}IzniLu& zluJzG1~eUYvSSst?r=Z`JBawn;h)HHCYwmmBh4;Tz)P))sZ*y#>y24cTMqrGyTBHF z_;x>`f{AANenk#7b(cj*O_6li%Q{A)^}n~U5A=@GkIb?QuD4N9z-ye6;lo?J4@+|( zmR{f)(O1)`9-$~c77lm(TozAzDY%}{Uw}I1P@3w!>Vj^Df~Iy4>%v%n?rzm=I!T;79~~Q{%z62>S1Z*1rS(=tRyXFffn^s(5JJ>#_xS z*(}utSLk0oRk?oQ7&}@Idc!?!v@YsLgS9?QQSbcK&27;=vH6>WFo^kot>_r#WmXsz zcxk&a@M8N?DHLIiI@$LQaIehsKEGdA>q2=@U$ef$SrLl5^W#>a9c@Y_o`EAJ$T8EM zsEpp42z^+_{(O47{0_M0d7~9&MoAXWc)$Dgb+-3a_H#=~)Hu+P7G|{&$Gkmg}sjK^y%vbnl z*AWJiz0svSqu?mG(}XugmVXZ8T-W~n$TzPI+|A6nDT60LaDl$}8YaioFI`=-usbzV zKW5;u1jBD6<#I7am)vt}V?f{gH=d-jeAE82+0S$1L!I_FvE;WT*Kx7&-rPNWt4atNP(6w%Eo$_CiGr_=X6V8utf9OFW6qR)-DutWJkE|8?0k8R*m)L=;w^N_LNl96}NY~K{yx;g1QJ}>y?P2A&TZOXIO>4yZ4+tXT8 zjBoD_f%j1R)nJPrALDqT6JD-}dTDo3zzG5NnHtsfaNu&P-3tc}okMCa$|6HuNvrRX z55~YA9!Yy;L&r*o$`Jb*`+c+7;4{Tsn%KIPJBQ18i`v_x(sj2-1G~UT6@20Y-f2%erkG6K8q1@aqd-nL31*$apKo!-YVUvT)Zx{ZlaSbK9hy=pElZ+w@wvcL70$aorED>fJHpm1s^xPimR;H7zs zbqk{~Z~3zc>D10lE76LDoO%xS^m`&DmGjd&J^AmYH6!l%Lpl{s7Q0)?52>|spy&=G z5e~e{7Pc7-1*nAhnz3L#!&qlbb+cysyQ0-EWV%}E;DL1)BJs?iOJD!-Y&MnN|-2Zjg6(&QFpO0%_1tc6GfMUyRirk z^c>q13;e1i9Rl=(H!3GzZ>;3v=^qlmprEbVfys27!T+V^&=jxKrdUl>#_V~-Z>7Jk zwTcz>oJzfpS)Yk@%^&@>4g>AWqIT5}?Irzu4#oI;1zf(}Uv#hKL^I9IwML%3h2u3`TdVDXZ3RqH(JL$Ed}I^2XcRRl*N-w}T)S)7(B4cH5+9vua8#=Z?+9iXQy{;|F z*B{PszS)(!ybH+_ypPq5_-%&e80A(hh#VMtI#hAV05cYtuoiG*-uA{S1|svg0Y#moPXYmryItkQ^xx_<2YT;tIf*18kEy1CN4>%5)=;-R5 z9bl6_87q~N4b;a--c;$hvo}#PxwKyo2$WGxP&mAS-A$hR3-F}YZ|d19V|k@kozF-N<0lXusGvy-vJVa+34aG5|ho&tWpX6Lv&`!B;U3zY4n+D?(J%GI6z zkAtpJ^^+M`rocinT?FCqK~0Q6kP1YWwv%Vfo#qJl%rvb2Y{D*CGg4#E#JR9#H``>f z9H92K+2r1&_)+baZ8uLca?9(LW)zK35ql{E+lTe^29$3mzC8D+W&I9VxJ3;5Y2$|? zFB}=y&^uE);W$B}rd*~pNur0;ZEx>n7AZ2q-J9jR;~q9QOA4A4=uHrCyx<3_)DvN^bTGX+b+1pd z-jU?nlPj#pdE`@Tk2&dQ9H!OrR~Y7KHtIJSAauwK6FO9l|7v}#uGVg4&jNe2S<)do zH}pdhHQS7}b~U+4>@qG_8N?j;yV*Kcz2aG~q{UOIkeNoD-)wG8r1D5Xsoct=xAHu4 zY>j23m~HN$1W5N{knBoXIa{N?+})0!P|3vhM} zDcv`U3$^}wD+u!0V@X_ciy4#G#WfLK5Bba>C7j2zk2xePuqIOco|c=QVl zSZaQ7ZXNQq^?_J4S>Gl++0yq7{Pl0yYB8oSSDHs0 z9&mNKpOV?X2oK-A185cBddi6NHBM7OpqPyf1z~E;s;Xlg!|$`9Ov|yfG~q>tzqjmN z%au^Z^lovV8O5shcXZJY*s`uD7)QR>s2edCt&B_7shWn{x0Y@V1+A#W-1z&R!^?L?R&14gD^)Y_vu?1&a`_N>_2DR zC?z7GOS!To{cR(OIgD&+Qm~_M-@*pRi;s_HEW20%>HI3A=-G_jqD_UsILYS13x~U4 zAMS~iMIvRhcrVM_%65YV8TQVh`+21OK`eb zdqpP~)aNB8>w_9|qe{=5)VA;Tk{&3G!|d^P%=iopU#A97tXH;TNE5YN84w}j%UWAT z5xRap^O&0@&^aMgEfd-;NzEJ=_Av|6OT7s$R5U_YDqpP2X$rm;2Cf)tLLlUTRmSG!6l)&Y+QLv@A2un6?>ahp97sr2Dzeox25+0r z$6WSRmOeFeAX=71fLe6lGJVQ-gYTB5+STUE%%uz_cd|VS_ZVGqeJ@^`3*)M@ocW-* zl`m|CX(U?flbW|fIXvw68qQebwY3Gif*0T^BES9l>v1mZ+Nc0OBJ?d{Y-_zs%L7j_ zH;eVlpcFeD%?Tqel)=ga{05+JjX@@J%Sry);2p|dv6}TQfP;yeP-qv|K=Ve%oneUJ*k<{=Du~~k)`pj7C@eQ3IoC|jp_KhOj^Hi84)b~uacOAjMl_O z{L@b*Y?p~L?Vr4))9uYEMHFDo(1Y|8DkIl@Uq{jc#6Iti#NlgP+OZ(=Rgzfu;=2|_ zf$R-b6ndOT%&OCu*s(=A%!yiLCvq3i4wP7=l87y|mqq0JIb$yzr!Xf2X`TH_^K7py zw!ylkrZGI1XjZS0)WcxiNw%W^sJktR#+bhdy zWJVbtWRMPsU0iH9Ohna#D6NXbe_SHM9Q&^*$nh zA`o9kBexC%2*N3unp5OKz-PnRUw_MTbMSS8}$ijXI_7MY8HV9E3|T8**K2H%_3KH75&Cj5DzFpb6K3En+N<#0w;Z*5}^1#M*M2ZUqvPDRCbny7|imy zn-@L7WD2Iuglh6tVX4)WZ)9;9tDKokq?_62GM_YV1nN)RMdK!g8Bp+G8^t;ecF;tvoS&L`6+toh!8B9?cbx=NHa$}O_WhvEq$}Z9zjoT zCZRQla&wrnw|=az`-98k(jRY^_sU}WZ!#Z#ZWFQh=txo#yAmPBI{>cwh0(a?ZJkFh zS}q%l#GIRVoZM}_uTz@tLT5X$gF&1sVeeZOaiF|h6uGKmtWSOKO;CsuGxXr>?@T(h z6eEJe%kvws)&ibHa*;nfre*0EtlKL~MWD5%L-O7joFm&1r!w=X*OOkc8x?e<0U=|u zhlM(U?Ui)>P3dH8W6&qc*?k!T#{_ao@H$&ynl0xDXeCFVFnu~Du8`#@oTX=e0(s!; zq$ka2rbP(2GBE9&pFK#<%_5HE!!;=X%QYZBV&4B<+VSBUs8AoSK`KW6&o40k;~0?t z9HYPAeDZ0^N-8E?wM(?w!Q#G-6EqnlvwH$hZx!K%`Etr z<|CB(yl%z*x>+>5NngUYLY_-HhBrqZ)YLcoi136*ZBI3ICN8pQ4;91U98~gK9@?gH zhv+%~bbR;*jWgHX?2Ng0cGJh65Jm++KtX;~DSi4VQ-b|ZrO!u|5GolIIw>2um>LEv zyO}GrsJeM@5`}o-1&2iAC8k^7wuXgA|J?l5|H_Sg5`ok%TMNN|>-0LS!330(`=2X; zx>n29hI{G*3GH5TqOWxB@$kcY>f6uq&N-1Oy)HcCf{gFz8nspFh|f@edIG1IuMC|? zZ?ygDo5LPu|7IGMi`q(jqeDVuS>Iq5NDOZ(;i?*+CIb$>h>dGy$mB4Me4Zo60Y(o0 zx|-F2Z-K-ErN)i?K(>}7?dxRkZvGk=Cd*o6a7))=kTLxG8}Sx=fvqYUKc!b1{cEp; zUdcQjaBx+fTj$oe5C>idyn`N-G26G`Ibe4dXR#TAzo}ai+}|GEk_xNm3U`b-G#5zJ zA4>M=M`7PDxyeJVkC@J~(}C$d8M0HQSRpr;I5RS;m&BOwa}E}ezaM{7Lo~dOGzJi< zC~S0cOy=VSf$UsZKpUSskh_=l7N6k0b0&_zbtEC0cOoNxAf$6?aIej|X|yfNp7Ump z)*X1@5P2ru_C)%tni}Ubga5rzzIY9DJhcEQXTPf^6sjiJ7QB5I(*C0eVaLlh+=o%( zs%{1rsXc{C00phXcypvzlMpMB>%?JZ33v5V1!dV*G*SH%!H914!` zH$nhqt(I;|oT&pbRb+6E}MBzg@wbW+_chxg*2d$oQ6C(`0uB zVV}CHEAg51v~@}=4mXVS_sz}R$#6{fU5V6~heOC`^ZcZF(wYdYCDRWV6nN1Vn{K_c!E0&&n@Q}f`f8fr6mN#K*AO3op;-pl62=XqcLZTEfdz1}L6v^IpD^`Qrm~k-a%CjVW zDvY5J=IK%^8%CyQ(i!4Z#v8_{eY+`Uz?Ar-vLAB;D-}eK`9s0qFl6X1VoX5ZiI0H9YqSXlY@Nv;mC8U2dA+?utk2oQI(ZTk17VO((0UqNmZv!& zxIQ394VlA8*FTev5`G@<_qI(k@)`Myp;$Nt%T|!)hKcncWu`luO4vJqG4Sz50v%C> zJ9mh+A)=N_A?Ifu(iSj-^!p;gBSlK^I5GAypAEX2YOUS^`62E1n!#!;fn~eZpVx+3 zg9A65C+oMmUpc71O#6#q_&$w0QL}p4AerrN+|2xa2e`Sf%@GL3<(w6M$q3TQ&0iJR zM>CwZ$*bxUj~;izsOM4Q4TN<&{LWT1UniefU*sX)SaKzSVsr7xaIS~HO4tXZ=Tp`d z!wLzdlHf0#)ct#Q{$|nSy|2AYMK2Xy!XuasEn~{%Et5|+sw8VgeQ8!(zUn{TUTA2<)A@`t6YFu14Svg+9;f&bq zVN2}T_WV4okx^kFr2`{N9=Ya*SZ`Ejjj9$pE6{qzacj>(D65NKE8Fhb_}7>H<&k7S zL|zbNRioVvVhzG2aCvl`GHVDOe7rLwMlm_PRqoIHWcZPzJI8b)89XI$3QwGg8plep z$WULx4Z&Oh68@A#{xZj`9k#~mTcpB|s;$?Zp{K%N<44nPeHa83nB!VGMIN-Du}Htp z%Wu~$yiZqYeg{n4ylolVBf3YB)qKDE`sQ2&ANxSSFT@GTP7yyYl<1%}VEkUaS5kr5 zolV`vwkeQXh3y=LO!f|tC}4Lu7+DgTQ(*J+R|xkH-FfZ*y=$-d4p=0)eGbsb%@(%k zKYySpd^_}Ew0@bp(=IP7!gg}1@vKMHE}O73P`+u<)n$4Iu+5HmsL9n}ifw4sr}P8G zV+A?B9`aC_36tFFQnmY74u3-OHd?H)mbPmBHFy1Fa+6=gTbF_B9wZeoB@x&O10}e~ zsjIE2;oF}PJ^J%Ew+)n-Q^Rk@^S{OLTZ{o|taq`+5b>deo7}HtT;(heMZb9WW~jm< z$4=HPR?ofo1bM&SO9TZeVJzvVF?a&X`O{RtDi44>`+SWXj)65(i{gK1;nQmLfeaj9 zDi*GtFqc-oJfv})N4}ilItcDfzCAHde!pYtx(uYaC^PRuxin-6z4%-Wi-?HRY(tr@ zG;^jT;d|KmRW06sJPg8cOfQ;Pp?U8&oG6itwwW9PnGta$^v?ODRwZa$w=TTsm-Mam z6cYnphEuG%e-M<2`yA}v3tTKC?WI8dnQu+lZVRL)Jqs^{*|>2X^#UvSR`MGLUcyU&M|Se z0OhX@DoTi=bE?gCzM*K@AO32HCmDF9XJbcq$q+&De+z7V2Y5nZJbahHs2>d~y=IRMp!wblVs3ZPy-^zO*DW0Jv!WycFCNcS zGj92*=$!)9;8tLFlmUaG&3J5eH9}vdMeA94Qi03nH$HHFOo-*mF0tCxmDGyH>YJ8_ zioO*09KF%DHY&Kq#FHdrp3|XKM;*Fa50(JNym0QXc9@+kdO?dL(dPX@q|)GUV{f1$ z?Z&#r>zsQrM{I_ur-6MKa|6Op8$AQ?A0ve(n*J@4E0sWphkLqTnX9UPd zR?nERoVJk0Bny)wNz8nIhYwg>uAY^!-qAU(Rj9CtoXUkU?V#YJ$^B)#Jv_50>^VT0RjcOtC+zw2BVj9l8G$Ybn9=Qy$g} z7duoZ3{4d>|5*uQO$q{&PFPcnSN$RlpET(q zE=)z`)K>Cy{4hyF(Z=Bt z=~~0SKJ~3S!Ws`VO0VHsJYvDK^W$JngZfcu|BoP`|JUC&2ml%xo0uA^nQL%TVdLBd zY2Wtce^)1okj-O=u$hWElH0La*`>?pQ?f5!5pyf-G4!XAXVkK9{XQ@`sKTHWNb`-I zS5a%%!@?;-AD@3!9N8u$wbJQ`NH$*bnC&Rco zfC1>&omSsMlN$abFWsC09@JZ@2!X~$2jp`!ecG7qy6;eM!_2H!yaT=#7+^XUI<5&?d7f{PVNbxblX= zr*-FylF|#mv~(;e(bif;(s>=6*L^ABQ21&I(cP{4b>fA*Np~{xGP7|&Wope1er#MQ z+v0;QrYwVo%>>w;&!!$tvlgrIds9?0vN-)a09S?JJB{YJc+o)}XOCMHtPPxr$w$KD z+or`z=JyapdI{aX$H)XUjD@+z)Ned^Fs#TM9<5hT05RSo1KebsRm%OryusASK(_vJ_A}`7^d5cQUIF- zg=<-U(ohOaL{k=Fw%y>uZY7qZg!3s%~2> zABdpXQCPQCMA=_a*{7!niEyI)kaUPX4B5hR9t7={bXqkmxaH%y@Ma2frx{T@QtNUE z4YgWEA0Vb9r`hEQM#L@9FD2(S*Nw(iRfy=&rfX~*$`+Lqi5FEY1)Z!U%}2Zz6^PI| z*=|(Zf^)V-(7T^4LdzPVx%H)k{80%0v((3ubg`-SW zPg`e+oh0 zbeL2SPWkv|yz5ys=vzHJO-c;n9om^KPX`2hzi$Mrv@&;_zRYFI1hah-?f7DcE(xm2 z*xWQ#jE<+9<32Hc89_I7>5mOUC0hk3`ZIdRYp#Y9DQ&y4{mw8~*e9z(qrvNr-cZLM z*-l5@fr$2t=3!z&qly^|gG^-I&tY2ZUgCgr5qbygQBkuiH6?Bh&SyOAqDU$-pT|>p z_q9R*MGMfnFmI3HRGPJaDCHU#@MFSyZCIJY?Pe&GSEJ2NGfqtopqa-YZ(xGf_-%Po zp%vxT(VpNXzHM6%6VL&me+{1EupDLI%(t@|Dtt!egJU4KVV32T{?holsFK9wYPX@2 zO=j3ssM$ifg#)1a$(32*>X^~ckvjV8sh*CYId+-6mhRTmR}S4znm@~sLg(CyKPeFR zWco9J+NI^%rFV5RauryGYxCgfN9{3uyi8`pQN#$c{$wW0)_mi* zlD~6agk&B&<4yZS(-);bnnvFPKf*J$tI@9?L7+e!Li}`~HU9@9q9xSgpgHg;*WdvAyk)_5#(<-NsGF zsLie2D9`Lvcp1k#je28J+mqAdF*~S}zZK!MVHnUfk(@3XIq{>bSGjpJFx(1U#0H@J zD%FC$VgMCn2u=a0;>vDAPH6n06&TpzINp^Ch^eQ{kS{FtEE`ykI0Nqhv|_rK4qb{A zN*E|_FNQe~;6X6Epnf`wWqXdacT|Taf0pFPK8M@qQ#H}w z9C}QJwhd~0eAI9zu7p4~PAM;qGTc#U?!LcW4E%|KQSSgM%kYajxddmaw=}$&1$=OZ zLdGmCeB_~}*O}3TS!W<1Y}-;%tl^e7&41~*bo=_>M9${O>ms3`4ARGn+CUZ6kuDQL35q}dtE zH@X0}qW*x|f~@~};;zG>!|a4r`B(i#e^QtMV}g@S_?3Srxiu^;07~@8CQ4J+vUllXp&!1+N%TQWfTX3# zT(NhBrnP){U!*1*SoG492)O^CuDnP!O2O5naAE5Iu)nDcp~6Mfk(?PcT?;E3zIyor zoYlCA2#4}#%b?Q2=6A>b)hM$DPzv2GQ9V@@*_(CwFc}B8Rc!`ps1wx7gqTbb)4_JB zq?RnaJYzKY)|FLnVSv-6Hluca(wK_38mBX!3@^7Ecx{5ig-IY-1CLBhhz9LIaVH~L#FSG5P`7ELvklaHX{RWis!s;rF znn6tEo;($m$|RmC6**aiy%X6Ru2Je&l$u-yo0vc&>t^tAWTw!|XpgrBX9B&cXg{dIGPx=A3io6gE0-R4-Djcdjjn-3fK#i5-;$8(Dqs1N=)GKZ)Y_oBwIcu z(EMT?{;XZDKf~AJK5izL)U4UysW5op#c(9<%RyJ3SJuLL=p6p}8|>%5 zs`MFuJxM0Pb{SwU%*LD5r+2_we%suSw}llc#vD(qc=DV-ib^`HX|lnQRsL9tQu0=$ z68RzKs=p-}fFN6+5)c-nSf%*J#KCFkjVn5*a~XxOS!vGX3Q)m2B9k*d^pQ;CkE6VJ zdpfew2+Y#jaoN&c!<=S~%VzyH@)QDLY?rn2)!DUbAe^97ecPLYVWsnJZBRfzu@y01MBTo!cJNXD+CG21 zpckD39^Q_Qky)D>1c!d1r!kuegZ*j@VSi-Sz2EY0MX;F55X<&ksWrUJ0kZx9)aHRP zmDQADRogWqjt&H!3(M#$)gydELo=_!YUf$tQI2UmO<0)6XzbFs&@NIV8(yV#W`&G< zOzLQ`hq0dYs>p0m`)l8z8U~tUEO5{yqJn)*aB*y;VnJPl!2$DSqMop|j26PP`Oi%| z(@x@q5pip|j;@8*r{p&m{OiZEy0ibMske%X!u!9!hoO6@p^=tmXb_}J$^q%_ZX^YS zp}QNU8>C_A&KXMSl2#f-N(3K%pYQ+TxjWbAtoJ%+?fu&OaPDVqaC8LIP(=Y_N+9dD zi#>=skC+@#bA0UIk3n)G*=41FX5ghD*HFlTp=TqZ)ki@i0E z^61_j_J!H$=jvU8l~lGu#`I)DI+A=CBirS8TPl2L1Ch(F-l-9%BA#%Bvbl2_fzB=U z>&Hn{7?s|`(2+j5z)L{i%lac6iSG*sz#xJ3 zeE3=6@oJg!-RDuJo{>~Ujc8)H6w%PUs_@u6qMPX5yo!EA+0O$U(5pBiMd6pIWZ*0W z%9hF&8F~npfJW2T3<}bgax+@bcCm0DhaBZHr0}rA=6yIu(+*xkj2)ZspkgPhCl5*c zNB#kSSiwES`Eftt)seaQN2{EUEaXJ~3g01x=zYOlJ+z_q z^Wfm-Th&bV?ScJ)nqa@^^2#Hgh>Vl$j1{FC%a%vWF0wP-P$lXd3S}9iC|vIVM&I$> zylY_u3mTi8l6-F|;4r6Wcwd5#-7}9`_f_~r#A2NNjS#;;U#y|umc z7qgPbvbo(DlRGx0Lr1MuY|^DcMm&)OPZ2AHAT6gn}DFm6T$7xPSzA=X)H%1 ztEe@SFHfpxTj*83nbO#H@B@Cop!80o(soPMA*aL5@JjcHa{G?I)C}*ZuSUesWIj=F8`xy6d*%|MYM4CmXjG(=g8|Lk*w5h8c6KFHnmYXi*_6YfU zfZjk!_lM86mnkD^e*HP@Fj9>2Ax1AC9dIdyR;^($Rl@=INcXk*wnp(q>-?g6Cu_-x zV`$m3?&i0}3OK9Md1RmEZdlzCa&EfYA+`;5QYFH~t(4kCcB%VvtI?`lAJ|4;?Vc$c zOT&oii_p`p4`?@Dh1h5xzSa5*>b}EDLDbeCq7iv|`Op;7Pg%Z?z+}sDB=V}7FyLUV zkeU>7vXN%b)hOvcd`Oo{U&)y<4t8-s{#1XL+S|BE?kj_ z0;RN~X(q*9?r6qXj3B(2BetrdbGPgadFD|?K?3Kh*z`7$^rraP@zvB!wK3!jl_O{t zT3^TI0s;wWC!NFUhPdvSI(7%X3BP31StksC`@R;pRb@buM}*vVN(JNUaaf=9?6cGj z{*S^>?~e4v9^#ym;$nX9NF8^md^)p~aqns6XqiVE1u6D$&ki(nvZ5-1dO1GZIm)$h z#V(kFIw2LBmbWc)Xgrlj%LUsngvVWkvJRhJVSKmWPn`b4_0Io$zsw?;V&LYu~Rul@(T^Dq~kkkAN}A z!u!c^gMjjAf6NciWi|OVtYrMm$dkTOW@!C#d^bFk#}Qi(bxksokLQi8QY+!$aTzWJ zizUMDW2!3$GRb|+Q3I8RD&11e41ai0tn2TdF*ZzJlXmk6RHcPeWCXw;Q9EvGL=FPa zcjz1BlFCsg7326r-&pahC^N`tlG*X4zBk?q>8}#Yh*ldHf3WISYbxE(ayK#-BNNWJ z+X7)qXGFLHq@qLXE`+#V`w=`9<(i5n>}gXe`)o{!_)>^{*<`iOTTo|l%6TtLulH!1 z@JWph(@<@9%bY?y+%@#iG%0UoTw0D20=^~f`IH*UB+0=Kj8((ym5=UM{*?Bt^8eSn z^Izi-h}!iFBNkaahD1Ro!_N6F4i>&yYw#np`vu{`dPTd!6WW|>nb&kI}c={sVi*e}7yh$GmsvM;W;J)?M)i%x?+qD+@ zZp2XZTPaMF;l3ZFeW3m)IMuh2FaaNbd~Wu`DjQ+RpJ9{3>iKKrK7_HR)I$F=Xc`vnDk8lI#l{V8p0 zv(OdKg&9`$7@1fI#fFf?h+3NK_JYCA+1F6w6$|DRQc)D#e*g>mAnbuJy2@z9{S98& z`I;YnK5}Qw`lrivfOZrs9WhH+rxTs(`L#FZ{SnpfaiBpgQ8^77jUF^0+*wQB8j(b5 zkBKIZ5pu~?_3hd7VIcayN~Zr;zVu(a)PJ52h+ak$^6dH){pa@lAGQiow0!#_mS97S zE|7S514McAtBd*hAYBB5fE_=(3P)kpf!?_OQ2y@0^PRQY{R{rbe4 z@Zh!hasw|o3T!KqFdpdomRTpVFN|h%%JsE^cW6Xp{SEzc=M9x&~S6lzBA9U%qf=e}i?*Y#@933MC@rV2_N|YV2Kb~`!tMd6TD)L_^AU`*M zlr^5Qg4ZNwXM|4%{{YC;t2TUGr4nTV8u;@1NvqV&U*SO8WtmAYhP?oV+|;a-bWzn^ zE9*~*wfM__8vL1G8NfEAJ;mKV#=z7}k%=s0#I{WF+5F#94nGXI?~xLy-3(ekgC8B3 zsTbpv?@^@=DYyOs<|LTpPpM552Ptr~6)DHf+A*!UmPg|vnSZXmjXz#?<64vc2gsC( zFa2cKlS)Dt$8qv?(SRS9h_-$u&8vyLeGh|toT;qS`NIkmwQbTl(=}%7jKVPEZjJ9`^leRwt%LGfC`+D9KU*!g0Y6;ee3My^368 z6!ep)LV^O{r13v5sF{gZkY@qvC%@dEC0M^w7rXU9!V4MAmoGo~gCj)>TZ$A#hn0qY z<^KZ^ABNa*yKW4viOLzKNvN4kND?;wm@i0Zow;BcYcmc8UH2rTozbJYAQ%cN5%sfw z2y(Fgf*=GU4{&mXB1LY67mjZBL6%?hF$^>0wp zrc&v6x6|k0dhx&E`ftMi*KPK{;gX@Z(DX?8 zZ?ygod<89g4!$kmmFgF;36u0|Nv;yQi)A&s-KII6r)h074Zd%@GYd3~_qSZ6Oqd@2 z6hj;5D%0o}(O%GN)eIcQK zj|&-MeP8q4KK*pZ`-Zb^@0vVm%gb$!#gEs&O>~NGs&90EPtjJz8I;28VKI#eNc6nC z9jQoBQXkZKD?HxK3{Y~(;Y;_91l>w*`@=&vrNVHZD*9Fa0rcZi>Z~4omK86e%%WB- z`cNfpV`t}NkKy|=i7d|U+`L=4dN+2@m1>kP@^vP1!a79q^&F5SWLoMt~=dR;baf#OTWP# z;Py;06ndhi*}ZUGL$jDT(oD<@?*ARnm)@y}nv5AtusLkJpWFgsS|h}=5W|r6Ssf4N zK9cB4donBa&!Qx`K|g6Odg%k0b?N)wM3cPyW7NF}w8lLr$zHBz#+}S#NY?1eS#nATOFM&7F2dbCR{(KdUANLko z>Zi^x9$z5*gY`c@Z^*+A32f;!oUL!Qzu?!+`^exl!i!6s2_Aml{k;@rQn^$vAl>o= zZ`91njZ}#z_2Texa1KG9z+c%w`8H>a)pcfYq&Lm{O*nT ze*CWAKY*myAN;K3L2`Z`)0rlFLoS2MhriDnDPiyj60@eef(ca&v*!_E{U3AizgCq0 z5b^)V9Q+SCxBv~z{r`{y5FarkijAJf28Sn~Be^x%;8bZD}O!#~*vM=;PhUF0F7du)%Pb1qmYw%j8D(ni)H6t9AK_{(B7ErwZ z6;mF?w$3TLPyPj6oj)>IcThZY2tWRs8e|+d%%#Coj^<$biji8^?)95S%1+1?UM?K* zqEVdX10M6HHB2DeKvPsahcBnOvEzib(p}x+33G(U=mw6N>dCZ%Wgd|}Z&jVAK$9xY z%D=)Yo{oLM_!n4ac_Y$ch#G)oo)T$<%yZBSVN_6;x*xD4sD(T74Me?lcNNX~tnEQF zY7$3g*=$Zg0gkvN3d&AD!Y6UIFl9mY>nJExCy9sr1H3TAIG4M^u%H?V z*mJ^Xl^kDd=X0FgdK{i~;^rv1s#4i9>u}xL|B2A<)tWUK!eCrP8?+_Ms6!S^10tEQ z?yN?Rl|fu8#pDn>;`}S#(L^Se6<`mRd#;9nGRcv&{uA;5Hs>hh7g;-RsZC)cY_(Y2 z!~67M+WD@`-~04F6u)@L4#g$eE&1S!k&C0!&ypr7sV|5*NdKs-Uzl_@AJ!;4Q6qR6 zg3mv4riU%4-!{q=86#bR2j)M9)^-Y)4UbqWgs-Z!>+EQ6vfG9*wy-)YvHKuq+5NMt z&@qhYi!TXC!3Wr5w>gkG{_+47o)Lrot%fyncKUq4O zC|!5igJ|Lb2&N~zWkuhQn}8+O`->@s!_rv6ecdX09Mu_~ znLpq0y{h4#qAFPT(!Yls(ORCiq*8WZTxLuexOxi6D zTQ0}D#RJFVU@0^Yxd%eG1?iv63@Kk1(!xY|7)3Zyrm0^sYRQGPare}eQX6df{ zAk$eGC{2;5E;t=E0C19bMgjCD8*6_wjX$J+oAu3-Xm?r@Qm~H8Ez;f}3>Zq6o)ZX0 zM@^C!%*$&|?yWcNvQcm8r-6Q(m#uEKHz16H!o)h@PQ&x^HR+KexuJK1+eJ{JNEl$4 zI2pAGyc8N)*VAqr z6Bh}raCTnEJoD@0bkKffx)A60fSc%ZyWi|LAwDNW+aG_QPe26_p*thb98i%es@w0$ zSGk0sRZgldGm#OusBY_QyTLgiqBu$C1+o;ChoPE~fLtUfU9Q(CXEJXj26Vva2@Pp# z5v|m3T^Rl_exUbdLcy@NT)kKrof*Jr4qxRSm{RJ(2{SdHRn+Kghs68a)=gQ?J0mC^ zUm?wR%HN2_=NeCSgUn&r^%s(CQf`ovR>GEWbfC0D`eF+K!(?Q4$rn8q#)!gFGxrSv zOUHoSMJoy>3k&^&_8Ehufc2-35MO~I2v=eF+d!uyC(R~yKb?p!!NK`ZIlH9lFhv7A zp2V`A&|$`UzIPt_{OfK_+I83Lvsz}+F$9p&0j6r6*Tyz1(;)beZ}_j}B{fwJ9HJ=% z4W5S3lhOd3{Ijyt9BU~BL#}j~NHq6fP!r?aI$8g6pvN^q9OT{aFZ6juAxv0p4S6*X z7Q^aW77@kIl3}IM;wQA} z4@sMhLIiUqG)f|TrUqd1GFF@L`LF7XIBOgYDh*=x%^r2&Afgz$c}hp zP?L6>@6A^w9f~QReSWFoI3@larC5p|jHf)lJDKaS`;$d+m#KX$56Eb_GLrZQC`HNia%19? znI}`#R_mCXw;|?R%7hWvavhrZnfFffeQahEu z7|W3ZQQ(I_Rwgu4QXuj}<9b*ovhm zy@2G=?zuw*QlVL;C~gjZ(r(rB6bb2$w$4tkzx|1A(eBy){3+lI=oW{sA5H%)Hr7(I z+(ssvP>z-xzUh?dcxWqbA#Ll$2N_~;^OPkGb!L_ZKSs}WwxnyW@rs|0@a!Z$MnAzf z@vAHMSP(rm2Zp|VwTNYHhEkJ>z*#r@ho@-;#4Z&gMIV0Lgestf#dld#^l?*q|9w1UC z+Om-rJagu#J55gqoUTyRqtzRaq6iw%?PrnsObHNe!c3er&9wq)>x`f;pu=o+D7tWn zwc*Z@tto$g{-eU(&`vr9)x=ntf*v!d?)ZcC-!rGrT7)!GGjCkqfO+lBuBl4^(l~r% z;97D0dkT!kuk*MeNx2xDZ$7iL@xyaGYM7=?Oq)V1?A71s=sKkfp2T~SRcgMXuTgX? zu_^kBB}5d49@5Ng&8@yF3&-La5fJGLdgQl2h#-Kv7*K(HSLO0oH4ugM(2!8*mUgjqqve3i73&8H z_Mj8Xvb<%Bqp%ebS*;3keso)jy?X%99yV+aj`bcp7Ie-OsE0DVBwUGsIb&ZHnM`=;|$ec->N#T59W zyV)@6UH%@F!qwk$x)jTzQDbd`nNDWeGyPb=-@g9<43jE|_LPM?z#f2`LWW!OF z4L8(V_1q~LR*>oUXM-=c1*etu#kYuRWqAr(;Ih)*%OK%p5C#l zRWHR@R_+pSFQ-;us*HJ1iL`kWTC#0tmQRV`3?Qk2ouSiVNTBR#M|LqV?V8ep$BCd2 z#dqHIh*#5595PCJHmoBTlVT#mQ}N~o$$M|k@kOcs$;yxTi^lX>;ffF?0CGF(6^)xv zii1fpp?bjNstYX1Ts5kUY1cCNn{GEOvll)|Z2?^3=*;%Be^nH?@c6z*%a8g6wiz?K z4K5Koc^u;Y3UmrgJ44c6!`L~j)s5d^`9WWRJo|*^4b;x4U|`kkpH;aQ0^$*#sYTr3 z7R88**H&cCx%4?2hU34_*yZ)JVPe{2D6uiP(4?k(ZN&zf z7@o=e14~kLjL-@9dL{-y_m1dqmzZdDa6jwtTbs!Pia#7R#QB%-P^=P|1L95IBMnT1 z#0l||u!XPLkLE+r%69=v0rLK0R&`;*Dl$$v%hFom-V)EcNt6Z^CEPLh(8m1OCHK#2 zmF{Xi-bd2gV9dn4i^J+F4~t+WMy>Q}PSP}XQrba_l*op{!Pa`!kk>n6nxK*x-HOkS zA3>`)mDt7^pdFb)9SxrPJ8WIWHwDV}Y4}j|?I)G*nAtpqLX_Hb^jXM?GL|#~R2IaZ zijw2}kXCV$vPBk4=?G3O^1Zu;0BXzvNno{hUpYeA;D~<*gUbDrf{BdIB2cj^<{C9YI8aNg>r>+9%r z_E*hdAICX9CaP~>kbi|CXHIFGXI#kcdEIHzJi+UgyM(<)s#Q}HKUu38Z9rfvp5C#; za`uuPmY_!4T6NU?SD~{3ZjmK#2ns{zzNE(U@Qg$5{50e*ka@pu?YlP+%|wRB?QdY; zM&@e8(in-U?_NsCMhIG-Sjo!&S{v>+^Ck>CfHI17^i+VMViiT~WpqmduSB+$d#g_r zylqZFrX2si&c4H=p@D^?3(q&KLi4=Mo-1Ng%3EuXB++PXRN%YuXum)j3R$uko|liF zoF>#Vp*^Kqr|SdMS(Lz`9g)=q4o#Xv6;{f&A*U<#+IeLdJ;+ebzS*|i< zDfJ7ri7&$1+0sz0Gxqt^Y)?cESl4$H)gkc3HB$#3X}hjyaixkS%?I=kd{|+#oVsP3 zj5&P)%JU%Ku0FiW;MtrJfS3bSl_=eT+?yyZF^3(SJIK^^-yHl)FXI=KD2XQ`NcZ z*%67?z8(M`X`_L!8+T{hmqKLih)uUMfj#Yx`VM8&SCHs#UA^CFZ^nw*eye!1#eSNn z!L_^y4JEw@$nca@HXp=s)sI9Zwcrh+F{Mvp`^b5a2t`*Ar|_WK3~P6^RHA2lu$vd{ z1Fuk1Nl+BMh_(I_uVx*P;H1$a&^v76LtY_Qa7A!$DeZ(wj|^knyTaq9Q^_!vW6MqK z`MgO>2S@k^&uDNtQBdC~TXcEv?>t%MS#ob`(Z`#riu}Y+2?cynmWlD*!Dajwbzqc9 zNB*64iv`>YkOOn(@6rx+dg!_7py4=f@+yt3e>E&MF3DmX3mznKgdCnEgt5OH=aG(5 z(jJ?sj>e%&X_bDJEfcK}!QZJ{s6Uo%%;-?w&f~<$Y)lM7;*O}`s~>Q{ONF6dvYgp$ zN!|Mwd`8W)WUx^sQyW^gas=FkA_WPIwOI@)Sfa55J&CncGXGvEh*mJOwkujvbUtJb zSRQ7RGZY^9grFSx-2DSgn9DM8KKX^bGM+(`5T;XSv#LoL87WR^C{cdIUmIn$Nijm8`z03fO z@5y<*qhe=TP^bj|ptX3$JP@I_5t~${3_K7IZ@BsF@5K{#`JyBWRMi>2sEsvmMyVm~ z7w4l`)x0T1QtE8`m2cPY1I&MCfZ?9xp-X|`f9R^zbTd(E!OAVyMmsMaHVfFUPjB*#30;1 zmUFOuexs};=5aOrqZVdX?k57AvoJ90&Yks6*-(7G2$H-`L9U5-6UyIlMNHP*;ySY_J zrp@89RBq8(D@k5o^Z|ic>Yu6`GFgwAok~X@KR&4qC+);`gLCu2!FYL8g$^v2!UnY4 z28Cw;Q<5M?maoAOe>B-^k;;mT7m;Q*9_pQESgp7y+O!1ipC#q%NX*AHfI2AbCSTH9 zPoaiJQWcF?L??4@i6v(P`ZSVrNL(~prfB)_?#w?Pr(uzJ5+ zGFrM{^<0&qWdy92TDY)@AR0vx2UbT$@J+uk`#(U^kv5xy%u-ItuzH(W_SXb^YTOg< zh&nj>`P(xVRNLkO@K>>tGYqjCM|QoWPD71$4m|Yg(V6Q@1P(JAhzK}xZgY}Fo!-fz z4g~dA^R-CgP{@)5%v+`S>l7L>W_L01d<%V)z4`}eO04Qw>pP>ZfhB(Dol+sY@VYv) z&Q7b<(Swy)fNo-;KX2guEE z6cVcDQdTJ6p>XVfF0-%^B7`1Sj#l9sjzy7dctPAbJ@Ya+vAjv(g(w^3D7 zdy_R9$5;SNfEY+rf-JNk;x^N5%J=VmMbO0^4{7?cQ7LG6-)X;g4xD_0Yga00pz2*2 z4ZT>`(K_Mp_ybjHdpw*qhYkprD z6KwA@+kC<9%(h-LuC7^U4 zMbuN8;W)aGZ|<2_kwo}pf*XU_jmAC)eHLx+ARGuE6&;qKBiA0z9pmSqF5ep^_YKVS zXZ_e!AT@_JK(X3$)y$n81OI0?VXirfthMcYW^Vm{5-bb;Wfp(=6 zK)9a4B<7liRik2YhO>}Zj8zvN1||kPIolh~4)iY?XInoZlYusJH<)A(2c3X7J}g zPVCTKrtj{nuD6Y55K=bO-$xeE+N@!H7dD{wp{46^)!4M2_bmoJdp~2|x+YY|VfgMIcw$^>@YEwnC|&`S>(yxu#-Q zG^e!RxjnkIYTMDFDE5bU@uh%b)Y1J7wsXpkxLkI#*S8W)H_n3J%Ra2LXquumiU`wZ z93EF`>JIJ_Z>s#F$DDk95U*w7padeaC&r;-m~~^V)*s5KRwby!=kG)xE!KxhAPcF1 zlU3gYd!SMHCIMwtEnOpSo$2hY1Fp|m>H_8oI*xdg@7XO72*q=!BJF+ra2p~XZ&*}k z1&)og+_m=bh@{|M`t~?~@UopUG1FL&(&_S+dOg35W{{y1_Cq1?id~_@BunoussShF zu(`6~ew?RxmCGADPbjh&PdGP+xO_uVfEZ&y4QusNQ$Ef~mPN=}GCz@cmhDSO49Fxr zb6u-B>jlgA7GE#X_^7>00)?;wzWzIJNP*lr`;j((&boG3nZxf;I^PvV%W<+%PO;ya zAf&)|y32WdsJ(HoA&f&|QOxO87Nn_eue@@97cgbwlC4v~tBj?0=50+SuoK zyRfP?QTbId`|*xo7R%qTP$q)XfXpVvpwY5z)&SbTrXV&Tz?K%*4$oo=-< z3&>Drk63qqs#!xEw;z$NPUv**vxNG0Z@fOB;CdIYNmbbnYdIpDO7uKmiXP^gsn;q6 zW(oEcTZckSs|EXYGGASCRtlbWxyu(ZZ_AB*S4KBBHXhvLlf{{(2vhZ$!-TwM(h|Bt zS0|Op$Z>3})NYl1^OItQG}!0rFQh#}B8f1>;;33%Bg&$BW1#j_Naj zQME35Upr201$q`WPW9FidCr!|XJ48Jt#{r=ul@ndSCN2PNblKOY?|6)olVXXIz|+z zil|r#{2qBUxMP+3db^}SG6TfRgR%?{h(yD0DM*$Tty1$5W^2VVC)qL|t)`{oktetE zMF&>XCxySpmliu+&s_7L8rJv6X%hf_4~z0ZKdXzUtL>l7aQe7JbY|pOrfaDQ9B^x) zMfvskw8O9H0w1G{pH5WmRu7ae``DmkPU$!H)W4#ysVZ8>HSK!-rLR&1XtfDed3}pX z4Agd~_w6Hz-4u^KB~N7yQAUG_vsjN9chSdF0CBxJBOKO2L_z&Qu*bMlrH~&a!pfVn znoi=K`k}*Iqq{g?Go>wj6P)V5gH%GqRPX;vo41=X0C;PoUi9((?f_>L)Emf*QhCU1 z|G1EjU^A&dkDl!O7DisLjH;yMYpl0!jN0dkYufQ)2#{CR2wZJF%Gc1Gs>qWw3RYZ}lJnZ&uT*g)I`050tod6OwBn$&?n9buGzs}l)X|XeL)?qVDwft z-k^o&*j_O4L{H$-Eu=qA$AnD5DkUD)oM)WH;pUZ`m62u22s6rhI3|ilO6=}Hf72i3 zOH`SPFyQq$;D*QH5&Bi4dbEPagNFF)S9O?KnX+?J zDPzLiTn&qEt?Fj@$#3xY!zA285&-x9tg&uaj;CL z+i#AJ?heV6@3%Uobn43rzm)helq=BY3B`|uIzL!QOu%gnJE!^B(h2&%55b3uG>mr_ zwYQsKv1CKj?FpmRJ}3?^2nyN#Zr1w9%-n1KT7UlLU_YLJ#W%67u7*8TK)?v|Bc7LM z3C+2V4x+xDx08(^716{;Pf+?9BDiF?V-vGOqLFAh%%b^={zLNAq~$Reorp+>JaGq$ zu{VwhWjQTOR1rG3t;ajdKTlweCxQkX5t+kxFdP*(ZJfZeqP^r|6weML)8r7?;n6ZM z&54cYuf?r>KBeItiKufvg$5^A3@aBdUY?Xi78c=GPi2&}D4$T*EjpFmoO}P&3{x4h#eH?Wp*bDsSA9xKSGU!jf z_~tf$HA@H|Ef9X<5W^9kn|`ztRrl1F|C&jy(TRoT(6Cn5+cZFAC|OqZb6}V-5=9Ko z@eNNW9?YjpBRI&a#Khg%l3$52%b%2!^7`@wufJ4tm;=Qm#V6f56g?L0@$j>9%c!2? zHO5-(Y;HuBYtKP4`x_aiZ;VoC!{TPh(r2@q>alV<9b@^~WJzBA4kKELM?QMfOFQ`QmchlcYHbSbkTCE5ry7suz8_`ZJbP2^SD60FFYla~l2;xeuo^ zOjm#)jWMH^fmWv|){P&v#UV5Ufu0`Gr1CufxH`UJ2OS#p4P72y$K{?QEVFxLTKnX0!MF5#7EE z;gm-|zzEIe7>f&Ef6sK=$`PA|AtrQq`h}U4tGl*rSsTvs>SLcJ?zRgCKU`$(n4I&1 z%<1WT6WnQU+4yIrF#$gFeSJjXh6q9$P2lDunR?MZvNxmY%!4yL#bSJIbj+3nx&k;ye}r@jeGT8L`^7lWD2hE=S^Zo zYhl4jU*jj+Jili3R3@!P4r|wQPbc_A7GEWGnXE$M`{r=r?l+gL9QXstAuY zp{vTR%%%n3hXYPPHn1rJ9aVqyY?>Y=L-6To9zG`*FLKGQaoWVHU%ZsG7HLoi+@!O_ z!PIbQE#!LsYJ^X7ZG(NJo!ga@OPU7wchp{gLKANk%{~+Dnb-A|?}3PV5t{T^!`Ntt zKTkwa^`!pMY!Q$bF$j@|9#MwC;7~G&ZzMJt<$xaifd=Nl09DkHuU@3Tjugv9zSE@@ z)Ou?O2$MGV9dY9+J}|DS@2rz-dXW|WbiVQCBT^jo_DD+?vdwe&`}xY;Ws!Y*Y^)oz zS^Hdkv8U)fUAh)>nLzqSruM4Z)eC>%O>CnBA<(8YEvKQX?K=`4$Enx|1$l&1MFOp3uSfll{UFobVa!vNmx!dCfZ=12gH`p-|mE-U9*j&?n(p~S) zAqZ~>xS-Ud%TJ_AnfQSAuQzub%EK*Aq0Y`b5)~1O=btYOtwSJ@3px|Hv`kcvIl#}C z1UJ?WH#yhp@uk{qxaLkDXQkkLsI&Qg3vwx-FV|1cfw|lsHvwKKl?N`vG|Jd;8*0S< z6*(ZfFnpxp2nBB>0E-jkHWx+8Ngeon-U`fAFG$#UX-=eWphj;oop9@5bQuqqD8!j- zyY*-98C!7_uSbw&3dA9sG**>Ao7gN^BjW&$IF;Ne61dH8yAa$uDO;SM-^-Ne-|D}8 z48x}!x1&oT9VyS(rA(9Qn(m>9paEBJc-%jSN{ve>@DWyTH%8vKY`r#DarmrUQo{Z9 z7}|>q%*Z~3HPQB3R$51G-^UOI>Gu=jY2RV4H|aalsCk&jE}*qAXgYT=DRyLqn3c}S zYFFk94R?5ZGC9azMmXvwAHR?D0{8^>XXM=zKpu60_S{nu( zoW3AJuAc;C0kq0$`yIdGg%YD=AwOJrobx4flp}h31SDYOS#bTPug&#eu5s0)Cw9GW zFL#WXQKQbRhz8@9jy1#59n0PGH+Sag>A_IarqIH&=$)GAZ28D*@9U52IJ#7{bY@Ja zyo@a0l-pfd(9rdY+cC(54b**aJB)Pjs$#t5f=%Smqd76z(W z)(Fw|Y4gHu{q2WnMp(04FpK42E5Iosc*iiMLF@=sJya?8EgV>Pl=`ziCSHHYE>Oi2 z!g<9VPTRkX7i>J<*)~(9KhgeezL_d^j_NZ`m~$0Fp)dCU%Itf!d`$qs8Y z4V^ki1H#lr5A^1Sr)2X@L}lc9g9k7k>JLxSVH^*zaNEE(v!KPlo6 z=vX9QH2ux*d=tXa;t#$tstk1=OuE7P$pUXtKYf6&xHz`##@0daV$5Wa-*>O%LAd?w zLr4oTZZbzcD4C-iFoEhe$~Mc1_Rk-=WXG!72LJruemLLj&pq2}yjLh9GUib<6$)!` zlj9c7O%0Yt#-aXe+=tt1q3lK9?L{9ahL-wvN ze*!&J3^ZE{p0?gA&R`JD6i7-aX_&^40?iMcw%afZIuTL(J!YCa{~%_+fuI z0ASQ~e5B}f)aTZf`c&-u|E9Yv5|Zf@s%bwFMLDGUeUbeZ96?<_SXOhtVfPpI!TN zvtOj7>F9MEXU5Xy$J9wHW9qZCA5teOyz1F-s9Kj)dHBw=VL7O`bg1&U$4GeC-qRD~ zcNG*3kHA4{$V$?N3X-k&4WHkl$#7|Hcid9poWIp+NqIh0ETq4#C?3x#w2z3<8U!*tK$i8uy>WQZ?7*qP7Uw3 zM}=pN^1Q(!Xp_osdUx(YKDuFCS?C(GpnOZ5%;kkH&j6u9`(f$6A*aL)kN zoO;Zk$#_nI+82Eu2fDc0QpQ7~DP>QQR8!eC-*fa;Qj+&6LlbwJ`ErgVag7_@QBD#s zfYk*LoM4*BT@*OZ7t0-0)dAjnjy0zDD82myr*ESH40<`zod*6(NLgrAuMJN2U)la8 zKx?LKR?Z*Uu>p@A6R==fX5N!OynB=f!CI_tg@|Kl(nSKde@HfK$E{FQ*fn{=Ngl`#|w8tYWvzr>i3y|xfO%YJA0R90R% zRj?8%I(7FfXkBd=HRlfgj0_hzY%B9K&E-< z;xpSwJ(A-ipb+g$lzw%ks)$OO-$8)`nd|6>K6*c5ye-FB0-|1c9I}Rht}qTcdkOCJ zL&kh`{3;O@*(*lCuh8z>j_6M&tov%NFp9@@1tJ(r(725n0q*e&&uUTLZ<12MC7@ZI zegE47nmVp{xoZ^NeC{8uvGYd@pT{Kh9y~)aEk3@?SBdtp=&iY}ENdbAS^MXYY@4b| zPv5w%Q@j3c9CzHOrp=te{NcJEInIpeWXGC2A1r&ML>^zkox+R!HS=PHJT1}|^#;@T ue}4?J;zMIt=)HQIT|x#fz}bc-x;|^SRTx{9@@J$Bu3zXa4&MG-`Tqcj5?j~+ literal 0 HcmV?d00001 diff --git a/packages/zeego/package.json b/packages/zeego/package.json index 9c87898..34e419f 100644 --- a/packages/zeego/package.json +++ b/packages/zeego/package.json @@ -22,7 +22,9 @@ "!**/__fixtures__", "!**/__mocks__", "!examples", - "index.d.ts" + "index.d.ts", + "context-menu", + "dropdown-menu" ], "scripts": { "test": "jest", @@ -78,7 +80,7 @@ "@react-native-menu/menu": "*", "react": "*", "react-native": "*", - "react-native-ios-context-menu": "*", + "react-native-ios-context-menu": "^1.12.0", "@radix-ui/react-context-menu": "*" }, "jest": { diff --git a/packages/zeego/src/dropdown-menu/dropdown-menu.web.tsx b/packages/zeego/src/dropdown-menu/dropdown-menu.web.tsx index 8ecdd49..e30fb28 100644 --- a/packages/zeego/src/dropdown-menu/dropdown-menu.web.tsx +++ b/packages/zeego/src/dropdown-menu/dropdown-menu.web.tsx @@ -17,8 +17,12 @@ import React, { forwardRef } from 'react' import * as DropdownMenu from '@radix-ui/react-dropdown-menu' -const Root = ({ children }: MenuRootProps) => { - return {children} +const Root = ({ children, onOpenChange }: MenuRootProps) => { + return ( + + {children} + + ) } Root.displayName = MenuDisplayName.Root diff --git a/packages/zeego/src/menu/create-ios-menu/index.ios.tsx b/packages/zeego/src/menu/create-ios-menu/index.ios.tsx index de3416c..ace8bcd 100644 --- a/packages/zeego/src/menu/create-ios-menu/index.ios.tsx +++ b/packages/zeego/src/menu/create-ios-menu/index.ios.tsx @@ -22,11 +22,12 @@ import { pickChildren, isInstanceOfComponent, } from '../children' +import { Image } from 'react-native' import { filterNull } from '../filter-null' import { ContextMenuButton, ContextMenuView, - IconConfig, + MenuActionConfig, } from 'react-native-ios-context-menu' import { menuify } from '../display-names' @@ -161,7 +162,7 @@ If you want to use a custom component as your , you can use the menui menuItems: (MenuItem | MenuConfig)[] menuAttributes?: MenuAttributes menuOptions?: MenuOptions - icon?: IconConfig + icon?: MenuActionConfig['icon'] } type MenuItem = { @@ -170,7 +171,7 @@ If you want to use a custom component as your , you can use the menui discoverabilityTitle?: string menuAttributes?: MenuAttributes menuOptions?: MenuOptions - icon?: IconConfig + icon?: MenuActionConfig['icon'] menuState?: 'on' | 'off' | 'mixed' } @@ -243,19 +244,20 @@ If you want to use a custom component as your , you can use the menui if (imageChild) { const { iosIconName } = imageChild.props if (iosIconName) { + // @deprecated remove icon config for newer versions icon = { iconType: 'SYSTEM', iconValue: iosIconName, } - } else { - // require('react-native/Libraries/Network/RCTNetworking') - // const { Image } = - // require('react-native') as typeof import('react-native') - // const iconValue = Image.resolveAssetSource(source) - // icon = { - // iconType: 'REQUIRE', - // iconValue, - // } + } else if (imageChild.props.source) { + const imageValue = Image.resolveAssetSource( + imageChild.props.source + ) + + icon = { + type: 'IMAGE_REQUIRE', + imageValue, + } } } } @@ -406,6 +408,17 @@ If you want to use a custom component as your , you can use the menui const previewProps = preview?.props as ContextMenuPreviewProps | undefined + const onMenuDidHide = + props.onOpenChange && + (() => { + props.onOpenChange?.(false) + }) + const onMenuDidShow = + props.onOpenChange && + (() => { + props.onOpenChange?.(true) + }) + return ( { @@ -453,6 +466,8 @@ If you want to use a custom component as your , you can use the menui } : undefined } + onMenuDidHide={onMenuDidHide} + onMenuDidShow={onMenuDidShow} > {trigger.targetChildren?.[0]} diff --git a/packages/zeego/src/menu/types.ts b/packages/zeego/src/menu/types.ts index 65fced3..7de1382 100644 --- a/packages/zeego/src/menu/types.ts +++ b/packages/zeego/src/menu/types.ts @@ -8,6 +8,7 @@ type TextStyle = React.ComponentProps['style'] export type MenuRootProps = { children: React.ReactNode style?: ViewStyle + onOpenChange?: (isOpen: boolean) => void } export type MenuTriggerProps = { children: React.ReactElement diff --git a/yarn.lock b/yarn.lock index 92fc2ef..2736c40 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2227,6 +2227,11 @@ resolved "https://registry.yarnpkg.com/@commitlint/types/-/types-11.0.0.tgz#719cf05fcc1abb6533610a2e0f5dd1e61eac14fe" integrity sha512-VoNqai1vR5anRF5Tuh/+SWDFk7xi7oMwHrHrbm1BprYXjB2RJsWLhUrStMssDxEl5lW/z3EUdg8RvH/IUBccSQ== +"@dominicstop/ts-event-emitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@dominicstop/ts-event-emitter/-/ts-event-emitter-1.1.0.tgz#1f3d3fa878a1ccab686931280757954719cf88e4" + integrity sha512-CcxmJIvUb1vsFheuGGVSQf4KdPZC44XolpUT34+vlal+LyQoBUOn31pjFET5M9ctOxEpt8xa0M3/2M7uUiAoJw== + "@egjs/hammerjs@^2.0.17": version "2.0.17" resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" @@ -18152,10 +18157,12 @@ react-native-gesture-handler@~1.10.2: invariant "^2.2.4" prop-types "^15.7.2" -react-native-ios-context-menu@^1.3.0: - version "1.7.6" - resolved "https://registry.yarnpkg.com/react-native-ios-context-menu/-/react-native-ios-context-menu-1.7.6.tgz#f59d05fbd000c2030c620940ffb062dad16807cb" - integrity sha512-bYtHWM5Gtc1/Gn1jrTXN3btFi2aHYvcChCJARNmgS5lpwxFbEKyCzCH2VFN7Cv0/WoEdU5eO1EM6NxBjz45ANA== +react-native-ios-context-menu@^1.12.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/react-native-ios-context-menu/-/react-native-ios-context-menu-1.12.0.tgz#6aba0f681fb7fdab2690d57ce2850532b0b040f9" + integrity sha512-9rqenxOP/mwk2gZMPZcbDh7kLC0barbusC/EJgYVaOsk0MR5wy6LvpWS5dsNLqzJg5jsnbq18SNZM+xvV9Mpvw== + dependencies: + "@dominicstop/ts-event-emitter" "^1.1.0" react-native-reanimated@2.2.2: version "2.2.2"