From a7933b755c3ff5eea64851e1303e4210e121d360 Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 28 Sep 2015 11:43:03 -0400 Subject: [PATCH] feature(cloudcmd) add --html-dialogs --- HELP.md | 3 + bin/cloudcmd.js | 6 +- bower.json | 17 +- img/screen/config.png | Bin 55747 -> 63966 bytes json/bin.json | 4 +- json/config.json | 3 +- lib/client.js | 25 +- lib/client/buffer.js | 10 +- lib/client/cloudcmd.js | 7 +- lib/client/config.js | 12 +- lib/client/dialog.js | 54 ++++ lib/client/dom.js | 130 ++++----- lib/client/edit.js | 9 +- lib/client/key.js | 2 + lib/client/konsole.js | 4 +- lib/client/menu.js | 29 +- lib/client/operation.js | 69 +++-- lib/client/rest.js | 2 +- man/cloudcmd.1 | 6 +- modules/smalltalk/.bower.json | 41 +++ modules/smalltalk/ChangeLog | 67 +++++ modules/smalltalk/LICENSE | 21 ++ modules/smalltalk/README.md | 76 ++++++ modules/smalltalk/bower.json | 31 +++ modules/smalltalk/css/smalltalk.css | 181 ++++++++++++ modules/smalltalk/dist/smalltalk.min.css | 1 + modules/smalltalk/dist/smalltalk.min.js | 1 + .../smalltalk/dist/smalltalk.native.min.js | 1 + modules/smalltalk/dist/smalltalk.poly.min.js | 2 + modules/smalltalk/example/index.html | 15 + modules/smalltalk/img/IDR_CLOSE_DIALOG.png | Bin 0 -> 139 bytes modules/smalltalk/img/IDR_CLOSE_DIALOG_H.png | Bin 0 -> 214 bytes modules/smalltalk/lib/smalltalk.js | 219 +++++++++++++++ modules/smalltalk/lib/smalltalk.native.js | 54 ++++ modules/smalltalk/package.json | 47 ++++ modules/smalltalk/src/smalltalk.js | 257 ++++++++++++++++++ tmpl/config.hbs | 6 + 37 files changed, 1271 insertions(+), 141 deletions(-) create mode 100644 lib/client/dialog.js create mode 100644 modules/smalltalk/.bower.json create mode 100644 modules/smalltalk/ChangeLog create mode 100644 modules/smalltalk/LICENSE create mode 100644 modules/smalltalk/README.md create mode 100644 modules/smalltalk/bower.json create mode 100644 modules/smalltalk/css/smalltalk.css create mode 100644 modules/smalltalk/dist/smalltalk.min.css create mode 100644 modules/smalltalk/dist/smalltalk.min.js create mode 100644 modules/smalltalk/dist/smalltalk.native.min.js create mode 100644 modules/smalltalk/dist/smalltalk.poly.min.js create mode 100644 modules/smalltalk/example/index.html create mode 100644 modules/smalltalk/img/IDR_CLOSE_DIALOG.png create mode 100644 modules/smalltalk/img/IDR_CLOSE_DIALOG_H.png create mode 100644 modules/smalltalk/lib/smalltalk.js create mode 100644 modules/smalltalk/lib/smalltalk.native.js create mode 100644 modules/smalltalk/package.json create mode 100644 modules/smalltalk/src/smalltalk.js diff --git a/HELP.md b/HELP.md index c2bc28fb..c9e43274 100644 --- a/HELP.md +++ b/HELP.md @@ -71,11 +71,13 @@ Cloud Commander supports command line parameters: | `--port` | set port number | `--minify` | enable minification | `--progress` | show progress of file operations +| `--html-dialogs` | show html dialogs | `--no-server` | do not start server | `--no-auth` | disable authorization | `--no-online` | load scripts from local server | `--no-minify` | disable minification | `--no-progress` | do not show progress of file operations +| `--no-html-dialogs` | do not use html dialogs If no parameters given Cloud Commander reads information from `~/.cloudcmd.json` and use port from it (`8000` default). if port variables `PORT` or `VCAP_APP_PORT` isn't exist. @@ -218,6 +220,7 @@ Here is description of options: "root" : "/", /* root directory */ "prefix" : "", /* url prefix */ "progress" : true /* show progress of file operations */ + "htmlDialogs" : false /* show html dialogs */ } ``` diff --git a/bin/cloudcmd.js b/bin/cloudcmd.js index 8a7557df..0606c526 100755 --- a/bin/cloudcmd.js +++ b/bin/cloudcmd.js @@ -32,7 +32,8 @@ 'online', 'minify', 'progress', - 'progress-of-copying' + 'progress-of-copying', + 'html-dialogs' ], default: { server : true, @@ -45,6 +46,8 @@ root : config('root') || '/', prefix : config('prefix') || '', progress : config('progress') || config('progressOfCopying'), + + 'html-dialogs' : config('htmlDialogs') }, alias: { v: 'version', @@ -80,6 +83,7 @@ config('progress', args.progress); config('prefix', args.prefix); config('root', args.root); + config('htmlDialogs', args['html-dialogs']); deprecate('progress-of-copying', 'progress'); diff --git a/bower.json b/bower.json index f1a0b89b..2a8889e6 100644 --- a/bower.json +++ b/bower.json @@ -21,16 +21,17 @@ "test" ], "dependencies": { - "fancybox": "~2.1.5", - "jquery": "~2.1.4", - "format-io": "~0.9.6", - "rendy": "~1.1.0", - "github": "~0.10.6", - "vk-openapi": "~0.0.1", "domtokenlist-shim": "~1.1.0", - "promise-polyfill": "~2.1.0", "emitify": "~1.2.0", + "fancybox": "~2.1.5", + "format-io": "~0.9.6", + "github": "~0.10.6", + "jquery": "~2.1.4", + "menu": "~0.7.9", "philip": "~1.3.0", - "menu": "~0.7.9" + "promise-polyfill": "~2.1.0", + "rendy": "~1.1.0", + "vk-openapi": "~0.0.1", + "smalltalk": "~1.5.0" } } diff --git a/img/screen/config.png b/img/screen/config.png index 21db334f960d387d46eb77a1be9fb8b4d0a604ab..8c4fd69c438a0136310474808ed252182b02b882 100644 GIT binary patch literal 63966 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 literal 55747 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 z zKZItiJ-$FQ65uQVERPY0CquaAnP*$~$}nIO1*eBZ|MI;ZRWzdR%@7rE)MbDI2%z3X)vJuGVuz(~cq^8|e z#T*V4GWE=+=e>`lNvGeeb@*`%sb zH~E=`GcQ;=A_oIH*x^FwrACDMYuFrysOwyPmO+?gM-M~=%?WuRF1=lhS7T;%aQg-x zmBMnZ2M{D(5z}+Hw^1RlmFaR^{6NX7rf(;Mx0oEohX=PYXa4&ZH?Ec9xnlJXYTu3Vv+#*BwgA2sW(RxkmNK+-PV8h=j_}d4jhlkJh z$iY2doKP@Pgf%GJNX6@o^Xs*aH#hop3)gBUwNr~3r8E)AnbxCkIF05=-Zlm)iNGL0 z&;r5|Y4;r(mo|hIw6XifE2^c^%MMP0fs#Nw8>qT?=-S?Vnkgj8&auuq4{Q2syTzNG z(_A1J5ooZLKGjZLlXD}8-;F`nd;;m17)tHfcxS=E_2P#&F$CLhA#8{H1U*!|`Jh@Q z-xSu7G|VP66lYI4v{DAQ)A=L@6Q%B9iU%iGebr|01h37B-j0X(_?>tBfzv&mpk;0! zqml%=>^{2E9sx{oEP0Z87>u_Eeg-6s>XZ|D|)>jzWol2_#P5s#gZGgfsEJN-=E{ge-+}S|-vwXN+8Sw$X$G1H_Kv;v7LKN#2rvr?{}LIQ)GlHPT3{KdjOPAg2tlk zh{7%-^^g8ITwjj}$~Z9aoo%cLjD{uGxT)|7u9PgeU$2LOLZn<|tf|{ddeh<>Av`7_ zq-Wd%qD}>ZGX&I6p%GG`YHD18$&-=TA}?GFBGhKZWocGz?t?>+2($`SN<4pkqpjNV zMx_o}sQ7YeUez&a5eq!ZB(8I^JM}!6;|THr6Vi>$T)OWIUyDDiqQFVc{}`gLy3+F- zqB9g8P0}n& z`FI*A8y_TRl*Tt9px-STqB0?07B~z`t~V`sg*}=I#(~+w%T?xw0^(Q(PhfcR z(vQOi4vJUG?I?m4$DcR@TBN*4vSp)K?SIxDA5y^4*`uUQFl!$49+1?xz#vxFL-HpO z!dg`E6SUd>2WH32mV28gVLi9BwX8#%oSrRo=&weY>%#3tv;_usm);)wNX~w;+0EPT_~WKc zhTQkd*p~RG)|b46wv^6|02-#L8K0y1#n|&6DEuwya4h_n{5g%Q6BqhyVikVMu49 zwq`&2IsCy4%2!aSneF(QN=qV3@x$P|YNMnOlw`-_MHKvan%V$1+8ylLF1d_&Ls)=0VQ{X&ln^?l(($yq2C&FL$&_pDCZ&lh3`pFb*6Thr&KOyxzjpV(*9> zqhrFuKQZN0>L)n4*32f!jmGY^`p`uWK0tJ0$%O+e!u0AuSfr2c15f~?@0C0`HI4DXZ;ThCh0<2VdpQ+pMkSwyevzRYaqI_Om&MslIhp%Inr3^TCdPoGOZi%g?~D z+-f^c9xWke=+qB`M=6P4uRNC~k~1XF>Sygc&xrTBoy9f%gFnVAS>&)b6;0qg6{696 z9IwhfWl9T2_cv`q^Iy0*Mzu*+!o0|#@Z{K-*mO&AWo1Pr_xg&TvAPZ-M+xtxk*!aw z(}fFLS1|k^L6nD%<;eg>OlUpw9DHxX|5WYPNy_CrJ`0jn#kxm1^CYHxC(mEtdl+eD z=({sG(^vZK-1{yFj3VK2tHe)q)%}A_mbV|)%xn+OtpDaRb#8wQCDwsUN)Bd3b1vm<1U*=m=dI>tu+rGx-%-ao=r4pI?&7A}xC; z*1<4sV++A=>SrDk1!gsc@v5OVVcHDr;SmSZ7my`Op6!9{HWmJ5nlGl9AsC~m$_^Gq4 z*m_=~+phbL0}Laq(l|p7&0GmZ)3m)br)y=gk^8r++rVhv@y%K%p6R7fovG;VXa3Ws z)YX|Sa2KCm-E-~X5L>|n{+W*zw!tcGS>n75zyDgH8WCh0ASP>-q!W?q|rJlDa!g^%|0Y*`^zB0Y;! zgDe;yPOyxYN`?rKLm%pm_i!PsC(w)XR@$t`U5#J_NZQczoeM#aUn!0*+LJKdqg z3_kAo3XOZQc0L&T8D8-D-#%eS>QVf~2+7qZ0^9RD;nD*Ola)JcA&r$MhlTn-rEb5& z#%HdF3tKydK%@lP7{KP2W)|We($FyF99#@YUq>zZFrDhfvNu`vJu@iJO&B9wCM+}< z67mI|I*rx6LP$di9|nE-+W~bNP|-FUla{u8*~~X97HzPP9khJgcfmI?T5MuK`Utrr zdp06M1T2c8g_}@hoiJnq2xt-Z;Xzz z2bgAT>3UC5#UU1|THIxElMqIcVxj3qXl`shV-Hu4uXv9eq;=MvaCM^1KiC+*R;FUO zrjL73yaS1T^f%7vv}>fpBR#_kXm zB%Z+z#5aq|kFH^(1Y$A`ZFZ?s?SoR$Dc?31g8@QGeP$@Xc(fZ2SU|>mXl)<+c729( zbw7C~1i zE5_P0wJqsL8DyB`nUbMZ_9ZpclTh`)twN$|fxBoUHNxHxU@j)?Ru5y?_X( z(xZ=K!$)Ik6isIaFDAn73A$KI$T$zUdRnEfYUv}ND^`17B!yB|qglcJy23+&>eQSR3E=$mqaa4!q zkUEM&*A^bylAq+8m92@q#mHX5(_6}RED8?T&zWmW`O;|{pKg+N#C?5?%BqMbxN4p< ze(lKR_|V6N3vG(?C2yn@9oJ0ZX=M9pu?S|iYgQ>G$l$}|)d$B%7<{ZrIj3Y9EcD_0 zfr$YdxksG*bM+%vVIG+UG3;XfSx=r5*71CiGo1LfqHiP4n}_0iI3H^LBYqfZ)n=Go z2K~EZUK--~2)lqVc>$VHD`B`|z7Y{HrTXuLW~XalkFomC;!R=g8C=^>2t9IUtC|r3 z0oYA9ca3WT#6?~jDOAI_ZdgKu*|A`AGi7^4U-yxh(wW`b|5cs_6RL+7|1Y=LUDKe; zM>WzSzhWZ_xY20(GS!?gMBnG`qD?T!3T;+A1+DUEc+OhYI=4jCdV^)_7uQP!NO~k} z;UZBO$g4!HB72IzF*ChFQKjC-KqARx_J5VL2W6kxUuY*?zlw*Yy5dPUhaQ1OIdIJVsRnEQ4F zX^SpridLiY(jjYXI=8~A}VaEF;vpQ`U@CeT9(3O&4Vy#kj+bTvnS&@ls zr|TP5LVYucJbz^EQ-CLcP%Oe(<@eYQn0H&y!06<1Z68`6g(E8d~Wk=rqfpr6B<(3Nw64Dt+0}2J6CV9>U zL2k(ygEZG4W4+&n!mxtJWy7^Vu#<1FGn`uG*3kgk;{F~-cPi`zcbSr{@Lw!(B2>v~ zY&QI=G5exT1Duc!pKqAifxtVp3)LOC1qi8=iEth}XI6%%9q^c{h*;x}QvKDk>$1vK zm<_4V9VLqDZ%5N9sn|GH03Tm5(+sYTP~uoqTHMnO)jsnOqt4)TFezPB;p>Mutxi4t zB7V89`Zz65*v7SiLNTsvexsFr%pd5Tps07J9I_L2bQ{=vAis7`b%KroelOb}KVJMs zSnzNri%p=7`kR3x7bX;nQX@se{n}<%lp4}!?JIZxZW~>K%gAS3^j~>P3DyOUrsygb zcPQi!^qss#WYaIzbzYuPrMpQtCLp!o;E>Z*iUB1C?&^{GVaN77P77hgyVo~Rvh87{0?KJ#Q>56+ zv{Ag9_SbJ{4G)s|Y&$yAW44zO*M3_UasyyOWT9k`uuI4q;rslGvNn!=hu10kIBwG> zR3&_b6DZ7VDY#ST)02zp5OJt0!2?8minrD9X#)j}m{Nl4vvJZuuV<<5#G%>S;Lf4& z$BuPHfmdxq)f_xZ(S|8hb4(^8`;kZOJebU}XV{m77=Z0xjSXaK(PU(>gHJ zI=bJr5gn7)6lPSYo@P`yGYS#QmXV$8=5mVPBNGr zeVzB)}v-vsWD-Uh5Pia^w1MW3X~>#U3*~0_dDt;I1{Zrfrq~{K^Bb6_!W+?kyRoKD5Jbi@)xx-4MNm znIG*ANZVJITFsT-*xC?xd)1tdJeP0<50$~(8X9y z_Kv{Yv&V#PCx7Rz?Y>x~Zi&^F-V9Sld`OXMXj>UQhpUYtl_lQ?V(r zU(&p*N3U8Blr0m1i0S}1>U#K;O{f6-YT(Dj!xkv{L5ZVC4kSS2aY;S=d7lag*5_tE z{@uo}C$B?_3{X8X6Fv^5_$NpbUNMk7ov!f0m+Vi&_N&Ne>|g4R6#2dd(A55V3`RKC zExNd|S9ZEvY&EBj27UYz2!KJPb#DA*{9ItS`ajq~RTd=wa%eQ#9eyxd>L76GY}}bg z*3L>2XQ42Cur=wzOc#b56#;@OnvT(mg0dS5I&q0v%${T#1Am(g}D7 z*IfGSt1Ti!)p9;w5xH0JX`(??Jogh;mtB$}R%J?y-TKY%tW=+yjK3JNT!CMMy@DP# z-%LFN%LZSaZZQJO5q3}Lm8^Wac;rRN2vD!YQR*V5{#RD&_GYh4H6vOJT$3e+sRMnM zwAEv9Ldow#Nmt8OBJ5P9F)7IE`YbJ5Sdx-d0_zWMLWp{Qe4D|oHHPStW`nb%?rw29 zR?G&?i*SKND_j$9&8(Frvn4!0S;BRB@Ly#vu#|I)r)2mJ{VOYAm-kD?|iC@YfPp?mwhzP{zv%{Il|#X2su0|dw# ziN3IXtbqgjkYzIwLnoHB&YP;JAb5c``aWWsugbMB?Q*{a-Lv8YGVfK!7rkp39C?qm zE=FCV7(FHhEZ@d(q+#zI#>6@y@*LptFC_2k?2&S@Mxx>;)ylF!{PoAz8$W3-)%Wk3 zyUxamPz`(*Ni$zbTE(mW)BjOj3|Su(BXUbIU`*)f6KsY%`RxP>=Sv5L%0B-GOk|c= z=*!E>P_cCd{Rv+s&tdK#V3W=}(LUtfdJgUb6?<+DSoLkR?2we)5B@O;Qphel#V^={ z;Yb7`Z{L0xgmAtEBd#x<-7-{OgF;ZhkB^Bb+KXgJS8M#N&5!qa=UpXQdDuGSoXK7( zG0L7y4ekoWciDl=V+N|VaNcR3GiAt&x8kfT9^sNC-k%25v5;oh?U{9|_yeDx1l57P z&@SmB{fk6rxsczVN7cw44y+LhBFMxG5|gicrs@N1YeTJ^XH9wSLq2 z(?yC+1mr=SdSdOfyr&YxGApyAeY-fn$`$4lT#s%zhV2kkEUd#7CbecSxgr?ZD588- z{tYW>HIS>hZpdv%lP8UF7i)7p$#IzMJFD{D2(eE&mEie@A=x%;xi(=kB7`w zYVOe$9d}s#0J%P|kA-3yJoCZEZIfS)*m?UqjP&E`_b+p?XJmEt4&t$xtJ>((r*W9s zJQ-AxxNgSo4ayR$f&+tnGBAD;SQTEHZI^&ykV`_rm4tcuJ7e1c%aEoA0#?bBbFn$m!@6D z=B*ROm3w9%+W6S7&f?iE`pmgAYQp#k2$on|{xAuyxYPK{8v5ud)|;wSIFsb*Sr zPhT?;O= z`2PT^&ybkEbXo^}Uwo+~G-;{)r1=9w_9rbAFVt*g3)C5l8Di@XJVoVVqYq@BKDM4+ z`vNF%_WA|m{`4&jAlue*Hz^p{Yyhl88HTqla`%V{*Rc- z`UMq#0bO0hHbFqK2(sx5?dG8b!y+_y{80?Iv)uGQ6uS*SzWKgle$gi?wPs#6_MVd} z@XF@y!V(8+O_^$Jq{vz7NkL^wZ^*&87B8Lz!Yn`poyyGE|9QLaT{heFVpNHL;M>1+ zii2#w(++JYdiVpCZmeUO7w(EUeq7U<=qOYj5C*kRI+8RXIfxqYN6}G7KXQJ?H_iUGzdk2=6_&;(; zCJ%;KC4BFTp8;zh7lmVn6u|)9371!F+^fyOGfCnYP%`BIi&S|_zENYa+Z_2#ytuM8 z(vkBq*VhEk=7s!Eq`FE2Xxp9Fd@AiR^2hkp`4rst)#~V(OfAt|Xs-_y!%Y3E(Zd8w zmq{gc)AD<&l~wlF!5O@Gc^pnHX^6~Q$GW%PF=9p@E45eR~a<|JJ}g6y^A9s*oYi-wj&Dda?`s45juNgF`Wr5=R)j<7FQC)Yu! z>GmVW>lY@B(pp~0J6lO1%ikM{lFW*aGQWtS!ZF%lX#eP#<{lD*TS=ieC9~CjrE(8{7h^5qe){}Hbsv0$XnA{{WOF=#{u)TnwD<%U z8u0$xbZPsFtkFM~EV;e5fi50pW$mWdhsCA4jT6tJ!R9Z{dkt)K?-F@c{lhNxMyR5W z`B5ij;(x-FA9TpWIw_Gtv+u02ktvUI$dqlfkx7`nX%r&?wD&DA9U4!hL< zHKU(+^qR1Mc%t+b!zGPvza7k7kl$*2P1ULb$dtOY1&M)6Z4&WB3glFpfJIe=6$t9kBfXz6K1-=XnueCL92X%kn$YhU zW)Nx5LJ5>Q18KHDPfrI@*jNhz)n_#Hi>B#ktB&|#tKlBOa1s84NlLL9#N zybtL`TqXqbPW`p$*;TKa=J8qpc`3#e_%?YjDq}?q*I$v770s>%|BYSizb-pCDPE7j zuGLO(N5}r?x`+S^PX?; zxWgua<$px`3&f?K#N#OFVFOa)Qn`fU*HI&MobyLh?~UWn?xVjRR9r>0xZRcGGnbX! z!ZH3YPG!iW>pM`Lq(!5geTlo{mq{7v@3yY26(LZYsn(E>r${aZlr`oyE$CRY z{D5I0)plw2;wc&=gSf z=TEXUe$WO@42%&TYAAWyF|C4wF$P{w;5xC%{Tuy|5)2~@f!SanAC!fY2KiWKVbQT-(GUh(o#$1kO$U-wB(oXU+tf1HOPBrlhTo8_d^_?vD# zvk{aQ{5#p0M>07w&>jD^0j6(xFByXc`%DGwMa8*{qVtB#^qj?(6NvQ(R?^CMeV;P*_MGd8@<_ZhxaX1Jr8P8^Z`Hq*3zPN)Ng?FE-N=ELN zlq}dPohNL*J;6v0RRmtRe^%|+h|Ak6vJxe{zfh%6JW6m&NNS`t^*`qSxL;jSD*kWX z{8+xZDMH}2#7=F8ion)z*+qP7$H2faQ~#qZ{5a(8s4Avl zKcha@L#ofpXXC&3b(0C*(@yGZ0mX>7ePjH^}Gj2OX zyz{DG!IO3BPRy<4MH%QZ%F4XDA-VYQ>SF`m(mNmNsC$$n*QrUx2(rD+9{=1b^mdiKDkiYzkWSV6Fl^{_%2ZdZl*r{j@x9T=tM*qsEmH`9bJH^frb z&IGb=KG!n^50HR0CSodOIU*V8bh=^r$f1oEilEmvj{TOc+6Kk1sqm`=ji_>om6h_& z(iPx0sS(lZZiMG7sCEP^=>`kR?ga6J6UXOk{<;NVkIGd`Gsb0 z2+-4Vl$)shZ9KMe39fcRC64MYM}Ew-Lt?$%(7!lRXLPx(8vId>C;Nq=TK2$!$7#e@ zWyPNe&RQg}LIC$;?t6WdaV8&)cq0e94W%Oa`}WucObO{%1&CE|dNVT$MQm-^Ao7lQ z%7aDMrLC(?O_Y4F&rF{(x?Pi#@y!mSEi+QNg(uBW)J0X;K=q4bc(=X?WGy$IAoapdK zNi~z*7K<-6|E+crH);Ru*K`h}f+pd2T1xYbu5=&Ygx;O()VKcJTi)b<~BL{l&ioDd9 zRG&@`as1FZYWDF~J?krr4@s$c58s4$PE0*C93B*&wc(k&wj?IKAaz|3^qUeE3O{ap z_VQC@hBB*t%bgy<_8B>XDa%|eQx5`l70owV70yiBSVZIYr7|H(to=v7$AZ+}MfZdmg+_5BQC;;3FcehoyljKNJ@R}ZYXGB8`~68mfB zro0T}Y@cS4!bRGLyHf+}`djvf;`|G0b|jyg=Odls4pUAvYf1Nwd-b%eIwe*@M3w1t z1@sTLNr&hAvR?%F%=G+T*{06McKdKvozH?YsmxiIsl7^k z0$Vs1bbseRqm}THJzw?x9-ETYx z9-}rXcgjZk%LduJev3_9=|AgiqljeyNXr1?66T8BN35{fe!b>*t&RP7jsD6 zdu_(*M^p~(g)AXwX5=e43Ojwf`6tZURT95^fSc_!#c*Eds)FlukaN?8@^cdl0Ld*zYwRX}0DxVnV8%~N50nAZT-%d0Dp zW3IX;_p{HmGw?(On>i2>{MChwsrZ8T$SPdB`QiSCn037YCXM}zbL0zNj3rQPAN~r!|FtQQoslE5(fikMZ{VxHpK(&F+c*|EG$~k47T}`4 zjb+4!4@Zf%UN@T-y~!b{bdWqPE~{4ePkW786YB5vZ(-2hxTA;jgd2o>e5rY>QJ{R% zNJbE{9((j&*lNFw_-g+vGP%mIwi~JaQZe6ZnhdIq&c|Non1K8eUGZE1)tz*(9QeCv z#pDCm!>dAAQTcYF_7Rq}Ok%K%Yz<-7!MgOl2Y<@#y<$NJLG`r)Fxcy5#P60vAW+=M zbBe>=`dhHL_Vfdlo6@J{V#c6Gq!4;-jeXFn0r@4<^-t7Cf{@GK8;E1Us;s79^QLck zPvFUMNXcQi^cPibNmQT=;p&{Q>Nl1yNf^79)2LzG>DP|WoLk0m%aVQJoX<2So?#`E zj)fzn(z1JGAu7?xFUGXh;RyQ024RFEkn=0tjpkXe4sNn8RUx^p~kTx}qS=kLXGdwPH))>NO0_%~;19EZYHwNC~ripgPSko9+fDnsb6`iB`_6gII% zR*5*|m&Hl97&(+y20pAWiuTUh%YZF0EZ7(AY=ZGvl?n$QQKh8_oh$=+NE8L}_i?q5y5 zW=`@*cX@h8(0_VbbpMP7&WzfcBX!;xv-sUY0%89!fLjpfJ+a_Plr{bG7l9)pJx<>W z52Bc;Jpk{r6KAGeD+jlg{w<9dsH%?Dn}b`iM&9mwGC|89-4{?_(qbJyEq_sp*b||P z<=qI?{&rVw3uh2E5rznvJKIZ&Wn+;lX#%=Tx5;)E(BTv$T}gz1jrOmcd*ZXQaaxg= zpDfX77E|e_`C-XE!1r$}?-*nk_Uz!=qoGlWUM5-^1KRJG^lx`b__3Lbq{zwIG-lNe z9sN#06wsgV#9)VS>y$96Nrx0hbkVpX&Kq$TH6=wq@M_+K$Bk_}2KoGSUBpnj459!e zq>(w=*+$m-1dJv-m=Cph(7mqXP~&;Mpzrs~Za{68jvYVzr?pQ~>5u&ZC?`BZ(V2Zc zRoQq!v3Sf){l~)$Kgw{*Ze7VLx-=QxB5mN8+U%1fEP+aEnFRv)Kn9!OMLbgIX5r6F zGP%AL0HKEMpp1ZupY`->;2Zopa|O1j%q4{<#5v&-O3y4Kk#`tah_&Szp(jU|c~9)+ zVDgX9v##-lB!wdyktzAYB`6?hY=u8X=~$bPKHR|f@ioIG$X$i>v|r21g|GP@xh)}f zZoIIS;5`sU$0we!qB9De>Z#G!Cw7d%N@a_>B zy~)uj{p`uxo}17a*KaFE2kti#+*Dfk`WgYf02ZJ$FTpGHIJnyMMssR&qR6?xYkgCtmaHLbtK+2-DJj zD#AA0V)du%DLgOAXY{~K`-BIT;YTMXm5BUbT#JWp#X*80&>A>V2)v8ilI$L7DPwsT z?3|sg51-Dy)npCSF_fZBYx8)N$(}YB{Jti;IVac!V3Rd&rfS0uZ`u_N_apz`7+diK zPC<_shbNngy^Ha~oa2>n4r`K~Bx;7&Fvs`mZnaW=(q_{E#1I!QkV=O5a1E)n39^UqG~cv@FlHq3{)#gF##oyS|!X8o?6}{3ra+T|TSyvO}OK%t)2% za2mH&*jd)slZC96WVd3cQE&9_@ws9oWS2iW@r9TIXOnOz-7o(c?Y~ zF1&$q)vm-+Qg%4auz%+Swt(~EXALva(?Qv-U?Ar?Ac&3@D5A)MR<&BAKl{=)uY4gn zHPjo~W%PV8s}1wsKKoHe$9B1ddI7#in8y4nGSmLTqGr?~Y%fAkD6tJ4W1UB2L3<)k zySSkP;L)@UBHJIk$Bq+0xQ~xl2}nBcFu5j{S}qyexjtkh@}gEh!U?~A9hy?iCt7(Q zt9+DXwe>E5E28uI#D|RPR`0m}O)(mxVj95SVZG<(;KtWh{cjQy9!Yp-3l0-l*~anXF@ z&mGH0WN~;P+~<*%8?xSkU(L+nre&W~lA)W{Hi9QV3qc%@MSknsCl8PlcSrLJqnu2> z$M>Hn4Vsyo2jYe2Otj|&)%qOc>?s5i_x@u6#e;B5-#c6RO|WS*2L<3vNb3Vt7(@CW z(ZqB_@Yx%MwT5AW!G0QfcrHDpDnIK%13e&mHdr*pP$Xxj^6SN9%;u?c5?iuht9jp1m8Nl4I zp#$8r0)>y^IpXH!$eq%n!tharIS-n)lx(R{-L&>>s*Hb?$%$6x z7N^nOX=1JV=E?MqUo1LG(=B(FBu7xrUm_B=wi$-}Vq#x!TPbC`Ngq^a4g7ea;4(tl z*771>4_-X+b?Hja^YE;-PH%JANKj;WET&kFw|${p2-0f*h~GN}&e{%*D3&mi6oCb# z=wF8WWo7K7XGvKld9`@zt8d-3I$JV_O5%s%&{dv1g+)?iSp%xt)d-|RCR-&OVM!=E zE3P`v0vCgEBZH^@d=K7MRr-2M+K@CEq|`=m_-_&15u}d-xi#?jIcIZxztG1guWMOdB-&a-s+6o!G4}YYQ}RiF_>n!-8r1cH;5W~aVq}}TaLX69Wfob@TJ7xsb%+Kp=q z;1NJ3_<~;oG8iH-EbQc6TFN$p5hNJ_0YpeN9j+Ws2R$XEguZou32+NWC_hD)9Pj-A zzpN*@>WlQi)WrL*8YGv)n{1P4zYF?y}+|8e%$QBi(T`#7vJ#888TATfYaf`W91lr%^qEiK)Hl*}j{ z3ep0CAkryaLyDAi!_W;w5Bs{;pXV$EVeV_Z>=j>}=*WTxx!Fz6N zI49iH|F6-+r@QJKqKqjhta?MO?*vUw50%lWs+TPijdEz5k4=yOWF5}k7s$u&LJZO0 zJBhx@QeKw3tDXUS-1(`#nLbRl^z72(QW9d$iTl_EdJ6kVd-{P6m-Dl;(@{pqqpR^} zSyVzsZF8*KMu+axdl=clzz8Vi6$D?E8|a-7RL_SGW)~(;j-VQ71?dg4I8?VWu!J#$ z5mt6$Y@g2rd+zwnLb|r*^Y7#Dqp#`kUKfo~hi(d^mVkHCqYK3QLE*IhB3F27nCFle0c)!j2ySwIF_D%09WK&3Re}C8^Y6`Qy!Jht#lO$2Y@{;8D#f}!sDgg-7 z8cNyv7a9Y9$@d9O7y!~j%U10$z~VpqV5{>UXp^m|ojGYL*x;Es20p^%9yFmv-xs}h zAb49eV1`34;z7egS}PhIkGq*ec)i&*E~gC~3OfK#lZXk7i(D_#t!9lSe^^~e}RMgA}=hZr2-rB#4iS?vx%%muks*EfVgz-Zz;gs{BS)*Qb@>n3_ngSnTu<0 zf(^U;*H3ur8{oCtPgv=Fes}*-;A}3+VGy@aC4Ox3@dWmCkRdFjS=H_6j*_*t2U6y^ zUOf7t*!?QYO?*{2Zt<50OF<$t9Cc0gEbn}jF?MXhBkU5MSqiodG`I=73Z%3Qp5F3~ zjr&lz#0i^t=<-Q5S5PIe?$ejB-=?Pz__b?>srKLUby*NW7g+Zn`pq*Z`&00|jIsg; z_{;ayL&s5!BHKxc6*wgi#O_Qs<2*+|?u#W|nWcNMX`+Wa?I|wBM)|Z#ebz;G;od`9 zxsz(u^b3*T8a9zd+Ya~@LUVW{yv!mX@*oS_y&5s4p7;Lf+D7Jhvw*4Ulz zi>z1cbMIA4 zjIaZ;Yl;PI$W())j@{t=nyzv{teY+FCUfjn%0Q@IrZ^Nkru~kZ2M=CnKWYP^=0+K1 z@kr(tl2qa9^G`hcg<5tP?Z5Rq-r&N$3(s`rPp->|IPr#h#v-TapXo&{NVIa+>(iX1N1}>f$M|IFEcFVUVL6w zZSh5F@sejBif)^6N!N>t`nb;vlk$l@=H6hyjq7d^A%^3osDH}U%ZSk{3Q{iVT@~>4 z!-n*w#iPkSaU}W5?wS=o@(~Cr^(6=9vQP`*oWfBoAr$F7$PkRhi%|g3Bp?X>l8_kR z1RDSmZ0r~+>R!}iBq8*yd#<*lioDCUp-WmTYKw|E#DH6QhKo)ltlvsyQ}eV(e@n#O zpiZ%jJh_i~%$x^^cgt!(h6uSwockywg7T58IU|`RYz}Y3p$2hpyB>=0G2Hpk-Ga|iLeJ`1u z&Gd+opqOu{&x9{4P-mA81u8cU4xB_PPe=<=RESw_vGaLWAbjuhtnnLI;;z>U;k!UC z0`Yo?Uz`S75S38sN;EEH)>|F+_47YF_vMe&(O2cZVT6?VZf*y|46vzA@*6YsX6V4( z1wLGdnziLf!v8g!p)-TMzHoSUZoP6Pj+C)774~Z!`EyrPxsMHoklsUN)KyKvfySwX znFR1_Fcg6(z%Y^pg30PWgRK1{}XU60_F#dg|>%?+5k1PnKGys>u7fSPWG#g!s3!|Hsb#UHp@mjkCx7q9 zp2upA_B)o|Tn;`fG=s+!ZN~wyh6fLEl1Pmb5b^mvpV&9c9oJayeExTO&0%5qfvcw* z?&V-|!ognI|&9WiUgN^|F@CHWK|nBch515?Wk%B(Zw2} zXQ5kOuO4vmnXDHcAqz>C#N58=I!uz1IUtA$&Lr!6R%XU839dl~*h)&sJ-CLu_B-KG zBOJ3CkmSgVBQ=T!`{?z27?MN9`+k*2B{)FxDfsCZ>Z%^EPpo0oxyI;H9u0*DbjIT6 zNWOAa*?@W*r{lM$X7OiAn&~mV=uj_U_8C+hR9GHdoY+huxIEc^!1(dfx6|rlcaY91 zHLFR?_Sp@@zUVE(+Q1lBGBJt<+Ysy6K=-C&t z*#b%nJVdNrW>U1#;rt6dcJIhq>&=+OE!#jWu#N{rzsgbos>Jt@9fPcN_dWUjXzhzH z8Lon}&E~|t+&_NjZ#F_2pY(TW@d2ZX730)cr*VFy@)Yyqe#;=n9nHT?>sOC^&#N@q znQ)uTYUWJ*Mt=Qwo~;h2Rt2mbuUTXB%at*`9gVAM84E?jo4#_vdyJSGIKmy>I=b~N z0}C4cPz4;AZe83tAz(ia$-CoQs_GJGtRt6Cah>U8K4OrPvm?qQ3N+IKbH&zk9Xr zClhyRZa~-xDEoAiOBjyN00+f8vHm3q3yGvfJ?l&2V2esaZ9qg6b8YcM@(9wezme6W zLU#2x;G@W$R~BZu(`S?*)0)jK&GM7eBJ__3{l>hGvE$;Vsij&Ox54M@(lCg??wnmGaO~(v3ujN%jPR5$PQCthwF*ra!v1>FHgi(*gd%Xo%NcB zlW;B-Z_ip_wZDxsSZ>jLi|dT5uL3R;u9KDcqj%B)m^pS~8omJp>OQ$x7KI8L2a8M$ zfV)ZrcuvC%{t|Gyy3dg`gew1dAOK@BL0~9=dy(rIDA7alfLOs&j*x%9QwaWUfc6Wh z()kf+BG4uOvrL!d?H`NI8}L8Vt)bW8rk7scVGG7}(-qo#)C4BtZ5@M$X{C$rl-(73 zF_L%xU6*Q55_#IQ%gkf+^G|oTUgNU~Qw|tuCGQSb81;>yTh~8?CI2gl9AMwQcl3U7 zr%>#;DdvfsCt?xsLDrX&=J_D?{|nrGUfi*SbGeVyE^kfcH0|W=+0Y97fVsGa}wZ1pa{ca>OKkj=$^@(#|_4C3&iB2^Y3`o*)V zEJv{cuBEIlmo(?<3$vLDZMvmTJkyfab?v;#nKKKr5;Z z8Z80-Yq@~ZE%Af_6THT9wLZEIHp&10fFJ7_!igC=-bs#&ACN}>{s$6{_w`u4Tj)Svo)IeMf`0Rck0pHsA?WEIJ zQ-=JH>Di5uwwOSh+(RpkinSP$GJS0jL_1EI8hf7MH=zXb@Eb;qcT`jhovD*m(28C1 z+?Z8m!cT`P}vCl9y# z9pnH8O`1Y6_tPCcjfDUX!)^g_rChbU?Q7JaY*fQ^&;%5tD#%sjP7Ohm&;i*;H7q|u zMKtgbna*q}FENpRo#li1@Q{uet5RLJ5QYiKxSs{K%YX8|<7A@FG#dEi+8hcwVJqaS z;rJ4)>m3N^InH#^;gt15SDkx_1O@eW|A$kV?%J3EcQxG=?D?gutK zpIJd@pc@$GEJu@2ld8JJpui>@Y8RdBpXJoM8!Q+gPRK%xOhe}6WySPRL07pnP1)xL zI_URXHe8HNS~R$ss9Md-lP3JrE7m+X z-G5N=wVXw2J}2x%j`a#YAgZAQYD7#UrdnQv@DIX)K&L$W?*^Ol(XC@Ady<0se8Yq6 zS$5J_J&pf)4v6-U9zR2o9(}=ZaQgiS)aV$p$IEZjzj*C!D+sbz$ZmKpI0%f$&p}Ag z0OchsOzN6t>yU-SFX6?#DOVD)zcXHaC|_~8L7d`KYC;M7MUW|MiV<3zBP@FRxBEn9 z@U^fTCgkH9N}^V}Bw)cTDCP(O(3tC#8Nrk-;}X5dmludsHjqvM9UxOtwwoyH#j)Jf&;yTe;RLNi)9 zBpV<@&N88icTaLsp?}^udjn;j|5b68^Y@+YGap zp$3palTKW&`XMkTfJ{MROYz=^7K@GF0eY#4nC3Qw^;8y32f?Fp`*o}ViX=-{vd?dX z8ls>ljl^ulp65NwEyS#H>}&Z&^qFUCPSTgparW`g;HWZlIK4hP-cFJ6^fbEi2A5nc zRy%l|)bAYcobp~dltD>TGP0*GHISG``(Z$xVUjoB61a`IQ3_F~=loY^%{iV5US zKEc$hvS_8jnwlR6l4)NM)OvlcfAOt`xY9a=1@q2JN=vd;aWAdQnE$G4n%>Llkuysq z;X@i03>#dXoniog=$al-%v!R&;2~Ml2NoCpF*7y#d`| zlPw;t&xo~))>V|aUgb$!cuOnpz5VTbQ-|Z;%$XK#KotIuYM>wQ^7Y9gfkBqd1j9q4 z1@lo0xteH{`sauA=lb}GSphXk_KljFH%bHMx>XbcQEhk^$iUzSHc$8q~6!l^%P{F;*?|h?%hBy zpVzh*x>3^%lqJzv28R{ZqbmHc;#E%D_nU}RyA`&&X8$qmvJ~iL=pB6MLJAeB-#ZUv z^#_9Mm1cL#*AWcnHX-=w$%%Ak@bH9zXVIekYe}{e5tI zU4S}@+4cTq@3gYIc*AAh?|>jLlQJhygOsb*uoa)xWL=ofyQlYnDP!Tm0(2Vn58Hk= z?B=a`VP};`^7)(RJIq-4&|)j0aq_=LO`4&yYg(FlMfCM?mGiu6w(wj#?>)f)yT>cH zk73}5lfbaJJB1>XrGT-f{M8yXDm;YK>%?YtCgKg!m`L>W^S&*qkKF-S@*1r6+BWKytb1g~!JH{(A1s zOnn}-dJ-F`p5Z~ZC``j6U?lhWv(1lpHuw^i>_kRXoUo4%Ma`97rlMkG5~V(Bn@@Yb zZ&J_@-Gzsw-=*2{@M_ymR9@%1?+>f2%$&*;A@~4)StIxIe?dXZ82xK*i5XxN`$7HX zr8LE6x9EV6TuU}=9?hV7B71MOKZ5V5t#gGOThgX2L26>cg(6BCZFWM|(;>3}&){d) zMRI9t18fAhdWjSB=442?mU5ty_O%YjiOD)&OBV@+1{$x+_QC(+M{`pp_e+iYVhW9} zl7_#Bq<k* zP1Gr%8z#F}xfT3`$=?F2)_v~);$6%4a5r-cmGPx#?%2~?wV9?WAkCO#b*FPI3q5{Z z7$QzOrq6$jmFAH&HPa=Ftd}5FT1u_Ebt`%^mZJ#(RE>S1Y`AKbp1#}`CJ49b*?Y@B zGpytG54?(sPH%B5MEe%E*wVW^@42LeYSgnc?VL|4hpNxTI_#0LkBi!4Z`}1?R7g(h z7W4@#dHhY`Mv82M?2Ci_wCZ|%shXytq~OV4SCiUTri9HFm$}fCx_}yW5d3z6)T+ex zA-Oat8|JKH|H{R#p$yiYQani#1{$90DXDK)7ik$Yg#iSu8V$^9@M_?qLd1yadXeE* z1mq?wt|7crK*t!p9ieuPo#Fj0AMYJ5aQI~qg4q5Z$a(s*Aok?ShQ1*$eCU}nep)n7 ze9!H}bYX^#>(vC&y!?95pvHe`3Ahhd@3yyfF*2iEBn|%htJ6aUoprBN(2@F}k|tu4 z%DsYJcX7R?rcgBY(Qz*xm+Tb z<2UjP>ECDsDrmLJ9%p{*Nw|PZAUi2pl}MKotO* z_pI+D(mLN?9>cw{7_JqleiLD#f(`}JObgWMq?dNmW@XAoL3AGt9_BLuICkr!Xahh4 zPyS;l@yJw^F!ukUDCr#kAst5&O89?y%fAl;Cq=6#sIs0%dn-70c6#RR^8A|ac)J)d zDOasHo+DS0r#!2)kx-*G8UKZ^$l6$`(uwF_R{RySQc9?@7;K&6{-ga5-p&oe^Swe| zHr`1O?aST$B*UWjt*R~#4!uu~E&&NitydjgTl_-u3GHNt%)h2E^$b3R0p)^m-CQ0n zfveyC?sr|NI!3`us}n4!{v%OgXW)QO77QKfPFb%v>j>~7u3lqHVj4>~$0m7KXxsh= zk^#$)X=T`ankwPWxD|U&>nHBi$(0q!cC{A&SlM0R2Zw7X-?MitizLV$R%$f&JjLPj z?PbJT;PiA{NnhiqxByR^j7}eNRCYzv}wQa)qaS`17$E^@@chP0t@=g0U&0s z$Aywu8YSk0c%#zC4d-&uN4R@jZ!4>z95p4BZSLzoOBJx^b6QCSC~=H{66fc;Mpae> zY5LjA;Y5>utIlvsB1N^aZ_2(~>%GiJ`7$Ltv*}S@=A_X$eG+lN5ggSQMFLA-{=&#b z+#RfZwN=o15)DQQ*z*BdZ4ulh!@$8fGXV5_;) z?fS)`xaEa-U)0AkFYqzshZdp$D0{R`DZFWqeXfZ;uC zb;DPJ0-UI%wm)E?zTiRCO!ubBaQ7cp0Y>9F!til6%=&KN+NLxg%d8VSdVJb-(zDZnB=4A2iXHWO%Slm1jVH|7?gL{b@^AL=-qcw^Heg zn7h6p(zii&PaAn`l~te#5Sm#l{h>h?j5Ul&;|agR_;x;*azlR&YN1=|y_m-vhc^SX z*QqcS zm4}k6sO}|m&cP38wfzpy$g@?(PGvQ*F+wvRI+ABdSUiN>5WNE04FfU` zNikkXNFPUbFI|!e+A`5Ml9vI7l4_gi)QuJgY;KSO%2+-sUYXB;9dmE0w$aS*uVjI5 zoz^?i3RcQ9oz)FNWyx)Rp%|cGfDY(qT*8f)4+Vr8QQ{`%Axsz!`U8=VHpPy$_{ial zC-98Q21b+KvJg))v8zuy7Vup9a_dHvvU)$E3LU@Q>u%XI<7crF^E#9#`)d|=Cm1X| zfEKPZT=XMYfh~!-PL$!2j}%DqSn(t_nx4Y`1Ozpzq93TEJyMyB5g9)?VU5#F3-?({ zkXm>5GD>Nx2EX}Gs^2*mQZ+x#Ls&TJ^E_9-wRRmD|CusoNSLm%O$ z5rXF`lxKv=?o_iHVb#lA2Qpw9tFX+xy%SytP)Zt*ofoU5-du+|0cKYfQC7JeUDu!Bh4!7L-o*4B8RV)l{pZgjTm z>BM^u$7~zk|6}Z$umF7hz6CJFLMp~^!?g9d96_tXa(Db8z@J9Ef+UYTDi^71Fz_|V z8E|Cr#Eb#KJRnx_Mt^9Zrcvx4W7uv^0VWx>*>j|~v3-P-8Ba?^ERb=Iz$v4hj77!Z zwN^ON#+3pe0e(olTn0^u_@_O+Hs?k1{+If&#U*RVY5AvP6`8@Ssr~~AIu&%ny?+?t z@g@L1;7N3@xS)We?th8R0+YqTj?t&>gL|LR3M5}jNIj*086CX%yD8k%-E5v zcunkG)`>a5P>HkDw4erXxTMWz(mP=c#RQ6)!t5f7FSY>vZE z@0YrCX3ZUxUy2bLGvh_3$}zKa!%8CNakww$=z*U&7j}@@b$FzA5)TvM zLhsNG*&QwuV!j``#g>$e$@$bah+usR-Z}QPz%;JS4!`*;Q4`Gf^7G+Nn#F%);Se(91bfIR&R)%8RUKXg+MZk%(pXNA=QCnkkS+e8;R#Ds&d|AZtGW;V3ZAPi7desXawK!EL0;kEzjl)Cs(*5;}-o=VFxOHdY4>b{u z7Rm*{bllXfB+jb#eSo+T>u?+uwvae=he(+(l@Bky|C8^4(W4U@S_^$)B-w2tzNkT( zoru9%yY=^;)EE2I*z{+~L9@B-&@qH^tK#@Wu33}q#Nuy>e|#3rlN$6Xx(^Ifd&K7W zJJ=8LBL|j9iQb5aR4K0Bub`Zg^^-V;7%UXrMRp0vmpQ>tVPSK5@U0$My&QZK^SYkW z?C+}RKD5F&&9@W9lRBmeurya>TU^i`pY`^M_H<#(COKRHNbN6r zc4C`Ko7T1X=O0V?Ps;Ca@Fwh|=Skvyu!Gltu;^Bc`r9D=XC`PP@Nb^<^$S+O-O2yDm|d$sLcd%SQCLW z7zBh%EuR9um?Hw+weJdvE23*9C;lh6qmixnk7u=Y&cgFLMz3pEKR7l+;kZ8(CO{C{Bou!+rEX~jQ$oOFWa4oj%)n&bNnsVf zHUU(JOThY~)%WOkcf-q21WK>AtN>2o8Ly%Zx z49JKNGNfWH27FRNpMae%;JAzoFa{x#24W^yOAspPF9T3r27*XSp`~0HU~~%T_gF}* z%op$&5E%O5Jt_z#g%r&V;omO}Y35`ro%V&|x@zihu^A`doT?I+vV9 zpoWuS3o#+F)PLVs0sqbrZlwRL6jglz%bKn~B=K*CQNX=z;cIJ1b%V(X0x2}ZVA+U= z?>o(mRgp26Xg&(p@00pI{p;qTH>$pfY?tCDIVUHP?|9epjZX!QwIW0&_zGP4qLt9* z@RAJ*%JSxtjTKr37>V9HL(Ud}pTugrJw!fKVD`P$$9OWt^F+iXy*~d~ zLTviKeHtZ>q{72ulnt>5T~2ep@yr1o+rJD?tQ3jmk3c0=+r#~c8(DbnoF6CU-a0v3 z{X>s4`hn89@)Ewa69c`qC&!gOUO1PT4;$Y_bB*E}zdqcgY7ucL$){g=yZMLnZT2pr zM}LjYtLdurm6D+NxwS?~YLziCSP0q!iP8xrnYzECoS)9kJ?de?lo2E&Yf%|!i9!hj zi+R3oWM~@d*N^Fu&%Xl?(2M=wVo_WHeg^&6H`(VKSM|qtX;iBv*Px97r%0BiXtg3I z@8X-L>78^kGGt7X(NMtF(S@B=*F;Cbs$Q?vY;_+0mMzznj)0BEy!%wZ?JOp_;fGmc zuoc_)5^QZJuhu(a#C>G3GGX8EsEaJW}u=dKnb?jX^al}yED8=05dh0vQ z21VrfM;@0G*Br>!^;r;fDM@g)_$dGJrZWHbI^xcS1^?3?=NWNP*2IGbV3OA#>u23{ z?P?Y1_OSL+kCkp>-F)zS*8GuPcGFi@%ul%UmuswcRkU!e%AOH&+M1&nIF7U5gVI*9 z>nqB8m^qC7SDV*Pf@4Kn7dNF}l)yn*M6@04p(VQ^%NxmEHfN(Trd!sW za}X(DG=1=TP#A17^|+*l`U#9BV2A#LWp{UID(Z}ssJbi@b*#(>X2;xbSUV|%lkP2t zkcH$`^IFZ=mb?(ZDZMl=>3g@Gb@xFiFomHLF}$$%ooX!S{WX3VCo1iuq1{FA(hT)6Wvbty&BKwcQd3|U z4}bd}_Z%3fXAx?foYeDdSja=lGzYMRO+>kS=SwFD4VmH9Tr&e~zTBCAdrDGZNL44k zBb!ht8>;sZ8$>}!rKs`q9?kkrp$J~DCT<8H7eCoGx{Nwb3(-^LtW zFYFdm5j1_v{ut%o2Vosbd)BAfoI+N01w5HcC=;xVL=s6hm0B1xLF~qpj2~se0L%J? zXly)p$aYfs>bv0f%Lh2MdTORNSmJIyVi7CA>fN)RNtO>+FK;0TSeUIK#Dv89Du?v} z3oJp(1S7cz$Ax1dx1`{>w0KZFB2qsl1vCQ)1Oef~$Adr+ArdhXY9@@rC)5i(;Co_F z2^JU%xOE1;2c&-Uy(1*)3s=nVK@bMmCsfh{KkIbkal)elWdseD$6#m3DpeKnom3U_|2 zx-vi7*f%%cWf*SfOpmlKz#g~^u+ky(;c+DCJcKi*Yt*GaCEAj*_?d!-%t&+fFuF4q zQWYe)TaBcOp8qtDa8r%LlaR{<5-bu2vhzm(O<_s|(&0a7lgjiB(Pn*r2vq78x$~zv zYdx@*-lR;giJvQx@9Z7@#8z+GAjf$B_2r>YSbt<)O;&+et2ZNV_u(J8kUQGOE<|#G z0y}&)itR{|xv`6x3n5UXOk2zc_vg6S0MCv6j0!=_7rZ+OW5G0tz9`G{$z_^VgAg76 zD$2fF{iRiMEGoIGr$=0QuNVV^vK?a?vncJY%h-ZBj_UsD&Jq&rc0Ugy3_ej z%Q$Xt#2rt<^V92-?ty=m%yWM577-Dj?&f+_KrFp)k3{0m9CPLd?MuC8rV;vqwYr!R zZ1_Fq2<1E3Z6`lkV3`M5n`q3vlQ-Ld*i4GmT>=z%g`AqhW3tajv0nK}bCr8t?l%6h zoGP6$uW(+u`t^*UqUDGkId3d?Nh~CnTxX>DdQxXhNdimbqm47=*0lJmw>Org$7egS z{^oUk#%Itk_9-&xyewGlhJXi?n_vc;9sUp~@VKo&ngv6AGkj9@UNHK{wCQ%P(=YMD z(7D09sW)Zy)6X76urk62YMapOvxj?bqgJ`JxL+yMZ2z~JWNjteKt@ZoN2V-EQSTY7 zDYGz9T>E@b)H##mO+-%33?sqynQb^WX>A7i7LY}PF+fthCFk>=VKhZQd#9Uf9jt%qP|I4N^PRQe+qT0ml?jKfZ7M zX$4;j%5erRphSLrsiyNjF~9Yf9@!^rtFY=k4DM6AR{y!v#mkUZ04%e6i&o21+0!F{ zj`78#w19fjwR`_p#`|NYfA4v0h+rV^)I2nPI>w1{t{IL zt}O+M*@hlWO2@H`-NFN(oKwtXQgDqYIShvS|fwk+g>7c4wHbb!+Q zgxBcjrc-hi%rkN^KS3q>!%T2>qK;uwqKYyovWJ;E4qrmq)orC?`fS*pR(_z%m`{O_ z2~g_jXHvNxNa(|~3XOza-`r8!P^x7=LCQc&rtm}BOo)&&*t5!~g%N^IX*bj#xWAa> zFLQh+I?ixHLcNRp(c|X+BDFpq7U)k(=-Kh@WAh`!{qE4TB0s+8$O6vtO(pd9BYS+j z>*WY=i`?1wKRh)*?9u-w#Hug!@<*p*7TYfC1(S~3N`Z3g8-I6>_(~WtA6Fe82tui3 z_ZQgLNt1jlruf=8ZX*^a5zG8@;Zj(`Z>2rUoURfF%5JAij`|U}jeV=4Y*1SXmk!~fIwvZk97j8nX(($&&)Q{5YJ=qDQ@?r%SYRsX-=;vBL!N2_yxNO%g$GdGfFuq#w<{|~Zm+&3lJ$^O40x)SQH;bu zBEp(g4XJ*yzQ~i_s|;i>DcuzrFS@Kb{Q(O%orK^3Wh;@ZIlv#vp%pt$Z3Pk~fYLO& zBnIT3k3>QbjE4#E?htW!NH9Hk&5Rfykb9Vfk<(Sa!c31z8%E021E7~SBw|OaWT3IZ z?o@A9wwjFPuDS97t9oxmTam88Q7-Ut*J17Ml6}xOsqRJ6_nxasszLkGD;?VgjO!9L zoQX@n4|j@|2!!r6P>J0Rj>Q{RjQw=D5EHQ1%!~((2x)Dq`WHTIJ9zW?f(|2@U&xJ} zuVD+#%i$fa6RqkgsIKhZy0&B4#O%(4h>kcC}dDQyVfVSd$Eb4C%mR%_}7_$ zZ!}iFQZ(RHKqdFEV?4UZ!PhQpRK$uGAobgH^=|ju(e-Y2Hc^^i4&!++{j3HlsC7oB zzkW<1+KYy@VdKOtgb&`NJ*EX|T(<0Bvfuk@@U}u`PQWi{@7LU zoHZ+ug`TVbf~6;iZ(>#VfNf))%#Y|P7?Vvrom1bfNWS!e0IG}g)p9T|Gmnly0g#7| zrOa&`MSE^biez!E70{FP970U9WMX7u{JxG7;^a>-Pb`)wE{${qwMuK<06$qjkylYZ zKr7ndz44&#oVNK6y$oSGfWRIH^JEPrJZV(|Kozie7>+~XOSD^9XEr<}K1a~_xlg9W z-1kXcU|#`A@h|r5h-j+LmXvql|L*BS%)yq%D#*I10`RFM+B#I$NOCZFi8O%CW4OM5_?*{!A*OjP-B%)p36_SM%Rgy454I!qvs{_#{&VjpOh+1hj{`0^ zk2|mTa$haeF*76=eTEFJ~EQXIQq)t0LAI^H;na{#8iWRlkGDSu_Va)I-jY-V;Czt z^eG6SU78HYX&hj!%pD}w+Fj&hB$gJCZ?XJ@`iw%-N}*dOZzYlzay+QeLnauoqz#uu z%te4ij8yD7HXK(?o(GAT1Oy%uu~J@=%XjB>O*EtLO1 zUqMAu;wjRV(Tif39bDHp00L}7K+b8mA3cGWXeE3=?Xh%-1KJS&HliA9ZW?z0yE(f( zWOjs(6pmYNMt@np^w}Rhf|ij7ULG$Q^@gArVedg)A;zFR+R6m~b04&%0(vBMV2z9} z?d_wIfwQddWoOmf9DV*5Bi?JDTTRo_?#|!W8tQ5ca|agJ#opD&-EIr>Y_imIQReWZ zpJ~>5HF0(l6XiDxC{PJud1QkRspn#qQ|0?pA9jra)?$H-F3e@%A|8T8fs7)l$ zWd&nEZmCx1J$`j$ZgZ99E{2r65iocHx+(T@D3yF=k-2d)&`@7;9-@}w?NPUVx+aHv z6>w7=i6_xql6}>;#3lOpbRwebR9mNFcVa|@Us87O&s&zm;hwQI8MM?rQ6|j$^F`Gg zsd9ydBVrey2zD-J-0_iu7=37}zWPW3JqLN>!Z}bDQ%qpE*G-+2!&<=gtK!wbE6s*% zRLqyHHkAKd$nkl4N~LROs?#2^9iUK9)QD=g%@syloh|9HyB)F(r1lD$c}gVMz9;Vi zA|l*Q16m(}=g=idqE{m71@aPctB+0NRKw+W*RoT`G{rxo+z*rHKEemIUG)0M8;~C2 zmD!J3F&q@<&x<`LBs?}%p`KG)`l$?A2=m^&AR!)Qcg0Q>vtJDrYP9y zhvngjE1*-e&xwe_ZpKD=Df%u)BkcW;oI|_)uo7;2EY?aLO^w_;N}MTFyJE=A)$vrT z{iuLCZKqvcN!5SdNj;EZIqV3b5cGZ4 z-^EGI(0#xPYdmXII_+Ad}%MT zT7h5v#c8A@KYVv1Wq{HDg$Ij9E z!^_i`DXX(JAvpiOAJbPsTm1q?EquceZ%)I}DYL@1(m(bimc#L26ax|q4?00@Z;!U> zBF(Scv-+c1UpCdI7N_FXUMc6}J!c{Jp9ciabpS(q?}8v-i9o;(Au52@9rxl^vHzu#A?g4J$%*_sz~$)hpy0V!)YcbfM$EKomyr}2sC=oINCGNf>eHUfTRcOI z<-GpV-sDlJm^&8xLz`b4N9&E^vp#LjA$@84Fg3@|pEMYm@TNLR!}J%C2wX1N(DsNG zAUk5xe%9aU-fQGu+t@kEdw9ca-82{Q<2F6wKJXQy-?9&aEXLJ==eU)eScgl!0LLE@ zh6>`>e1sfsfpEZcgXqCFYizd)vVbB2brTM3&gW-ox-5o)Fu_v#*7ifg)H<-orJ*;o zlRNa2g7)iCyy6CL5+iYt$kcIp&~8n|loo3&{O zZD;PrV4Py}LitVr9#sD>*o0+S4SoLCF-2in(zQm6b`gAi37i1{z(o9W%5IT)s5Ix)-zL9L@!ztm)#_CF6~G zH)0wcn(5)VfgrF6kEI$~Wv{OEIJppOsn_yYHiKfSA)Va$6&k64(=XAvR=R6yM61Q> zw|>&JYC-e7-$OdloZ>@Eo{_VKJgr1M z_!6}bX7jHD_vb6 zKxMQjKq)4^lbXqysV%Q^BfA*`~7r?g1*# zILcXJY1=t+M3g;=fs9B>4=CCaxqhTN`w@lh1#)hJq)+b$OfS65C3}kb%)6z(Q_v_L zHaB_jV(L4;`Sc#(*xIsxDWkax8b^^R*HdR~dRQ(PD6Z9-&KpDEk1mi2udrWmj;fBQ z_Kb%3*LR$JHKew_#@ng?eroDBQs*0>o#p^fgj_3*i8|m4C#xVfL3rsCqrW8@&&@(J zS^6bTV4H_z|4F_9SSQ3R^ytGLdxQQeph{yCxVqI>bu<^E9n(5b5HO{3(%x=lNL$CDtTev;L-C>?mhh~nI-EMD%h7j*7WamSu~=>sP}TFCafh zqYC&LU}ksM#!$%%i8X!L>eEclKTLJ`kR=h1Vc~}ZiH(lh5k%q=$L1^{H^*?IqWtqu z^DY#>Dgj^qV%)avF%l6NbL<#vVtqm@$jUX~N0k1YvY}iuJAWGTq#3VCJ}hW9H0KMw zP7gj1>Efr;K!K@EyGGVvua>UNS~7pf9xhmn9HtwOPh2{R^ecPa{B$C(KRnM08w|y( z!_P0nfzY?uKia07rGbxPD63DB7RYLhnR7VkCANtvrZY26_{A))}0cVHk2HcCQcxzIZ#$ zfD6jF@>I=Tz6-co*;Ps_AG^ZUUjT`RpqZ?g&jxAi; zA?@pbMIr`*00S#8gb)n%U|_iA1rQ*K@%Qt46p-2w`-kNExL_0Z|Lz(N;`%Rrd;@00 z6qAUpW#Bh)kct60Xp8I@Xn|5Lfbjs(jr&{`{gK2k3)?jGwgXXOcKe{ck0`Rxo>Y^6 zp8$-*LKZYH`Uta&uRt>U7`{h$-;esAA+qd_`+f=Iqk4D2StUKGR=3m%u>W`+zW3l6 z=BW26HdAO}?~yIiTjn;1aKSlHsYG4W%mQpnFZdp*bZ`Xd29YKz??{V(?|DO60)IOd zGY8YdTrwE8NbsvP0oFhNPj6Qq4t4bP$1wIWma=Bh*dkFF%b+X~SyPlf63Q-SM#e5g zwuI~vl`ScRVTNoaNueg0nQUWizEYWH#5?`of8OVL|9zkL{&$~q&pDrSp7WghJolb^ z59Az!%Uvd}*5mNszWdlpUY?<0l9BHIqw4da=XM1b6o%sVP~4S#a4xttgDXLdla4MR z%~u-l7HiNY?t5Dg6DeB#DMZ8_l01;2T^c=uwDbCeBSp_y?%p4zTtA7-zq8WavaxO$ zR*H0ovm&G@?)j&bgpyAC{#2iKZFjes()1}X#<)|T$2@xo-(Yb<%4+Q^dRO#ITp7zzPCtnujm@Rrb(hSr) zswp-9{RYlz0fCqB5~VCQbfi~3lfyo-{P7)^%ZU#QEcv%$bT!A)3Zscv@>+a(2BAnN zqh+WRz5mvKko0~~_D(L~g|Wj2g}bQd=HYKraEZlGsF)F3b?MN)-c@(T>gZF}bEGq}vu8TXs(^8GDG*OBehXCYp*gzkfDpHTwGVlM!^FQ7cM;ZA*n18-wjD zaM*Rm<@vg;8hsNE`rXbgLOxUXZI1?3in^6sfpUuwzEz`Y$QO9pvF7JKA$s}HQt6Sp zc3dE{)m4!RDPswnQ@4VS_xAt`UKk~>JKi_DQumTk%!M(RX-_PgVocB`rVwlS^i25W zGSLgg)3HV`LVGk?ZZ7t&v0$8RSDC2q8;hs8&i9b=J0U8bde7Hd@N^taLPZ#(Q?Ne{ zK4cYfo9K_LgqtS zg#rXwW6D|hs6=iqIMlxxv2`s@vLj7JSz~tHYsoVrAekr0ij!1!rl4jtSB$Ks_FZWj zOXFe(oLfZv+Ms*Bh~|-kK`f0S$ZOPR-ttfe0;>~_ctn>62pdJF{I9eGxiW!fxfOS2 z#;zRmKJ!4}2mX<^%dX_fx)m+So1|qq|3i_KD7tBfHcKDrAcPK29C;X-mBt@mZv7n< zn$?CXYn{Dh3O9;y99Wq!hd7i>a)n;Eg3v)*C6OwpAh5fLn9gZ~_=~V1lEo3ECmfwH zclk?oYu6K}{#T2tDYI+4#4q)qgCc^N!+PU|oiFFc%rLfHV%5p%ubo6YJ$bgj@=An$ zN{Y4ZBK?Qs*=%WjX}R49qyGL6OT8t(W3+n9e_Faev673+h<11Q;mTH#jnpOX8_u== zgdE#pIbr(}Cn`1umMj}#yy9vM7>XvoV0K`53o9RS7>}9EvzJj)YhDjVqw{W@SRKFR zpVjoe#`Nn)^+LIJ^TgX5HgTxB z=gU=(+m{F<29zBXEiNFIX_+m&ZjiIrhL-#4KN{g+@qBg@*sy=}@mZ1K_qz#NCE)eY zvk;r`Y+LV}#TT`RA;f)$M3_muDQ~7R!I=>8)3tXlY!s$(7D*UQ8xQF;f1_{kPWR)b z5!|^y8kglO$g$Z^Nj~-!uYJQ?(!fi$DqZSP>Y@3*gT5T0oO=W?zOk%OQI_`R$K8Sh z+<>AT2AdCE5S}d$WIqh#v5c$$M(U7hFI=ErL)mX(} zH@w^j=PFcRq$INWdm>$Pg0P}5@rX~5EYH)=L3Rp^C{IQv5H#Bt__8UfLF-!=nGlevs0!SHz* zx47e zkm!(yJK5)W!=t$8j@R(J5ba?EK4{G73i+W`>KWFO4G~qcI`vCIkZMlc*;J{KrQMPu zHepM7AdKnBS7Iv0k!tGm^P~AZ^Y8e1HHVisyEE0A4;KQ4bW8ufvr7ZKM0IDKz^|v9 z^=#!Y+rCOEUKncIN;1$xFfR}%xo6g-Bzf8QzAjTkodlJ)@dI(GdbYCRrM`uFcBqw} ze#CVPuGBet&Zk3wnOX197I!ew-Hj>YE2wzoIBjp&i{yhmRc-bzbXSXm53@Wcc1uU* z;%5`DvYuA6vb2mz?FxzdXu$+qj)Z-Ysq;F-eon6;^x<|%j3#|ALw%9~b7pu6d^Aj8 z6$`I>fsAyp$B`e*YG#d4WsA*px?|oThUnl)*}jZ(!2D_aS#;@zxV71r$d+8q6m4l{6n)vi z^Tm9)k6X~RNU(aD{{>pLnLGDwJxSiGs^`3nmTfN_iaHF2Uxl-KSPE#LKirh%dkx^Lxu;kC>*|}><;Xx{0Pg2!(j+L+6=EIkqaffYb{!C=B%hSH z%6fJZY^48IV>7E7rS^jxRCStzTmsm2o=K`q{~f=;1Hr6ZZH~i3F#=Hgy=T83nu+034RU&Zf#j(+oAadXg}Mz8ujZ=|x2M}gQHO<_ zf2{^pso1izU4Ygn{fo`vvfXX>wmcW?IGzR*osBc3@hO3)lOW{xfm%oipn!RfIpfwOIj;sblfo;gK!lU>1H)vPpj zzDNk;x);cW(Jwl+*j%mg%LVMUx@O5qUt9Ju`}vS7Op-qCp#h?F*PiB+f5fL$>U3yO zkNui(+uksCAYldf=VQ=?%;j)`V4u9Ujm`~U^&jm=Ctv1>HX~=1q}9g&`NFk7qw61i zFm~X$@f~D0_G5Qr3`210;aSP9B4EqKz7$IX8lP_pMHA%>SONoriPESlfO(JA8I=X ze%0VwrI%sua+I=#EBGX|(e@CEVZ%6X-Qbw%c8;h+bbeLYdLoH|`K+2Qk4~b?jz)F) zxPMcm^_fK2oTP=`U3MvCXV8NU+$A(B$vpjMMXER;|C8Sf3lBGoCVmvxo?jI9Zw#rV z97;9BTO)O)u`*?@ls7EKZ4>LGWu9dRcg>L9c2RD&7~9B9lRjsY%ApmLR5aqout$p_ z)m?yN(64~E55b}N;z_M#EYSxke12pgI!m+i;POMvc zM$TmPB&*nR3>W559?Jf&_+{62tu0J_M*+Y6Vp%|{W5R<-lMq$*BbqzuD;S87Zz$^C zZePKB&Y8rH+MrRqM8f-6df_x#t8Sh{GkcynSRD*vP-P6^JUuwwC;fVpub5<4-mqWg zv?hMc@b9k`J_9nuQy45d|LI?ziXToZm8?e_FvCmkmWUVNm*K8DP+<52EtLNR*TUvr z+$;0rF%Kx!se%7?#ohvg0EHEGu9Fzjo=EYyyEBi+zS>8e z@uy_x>UF(h=}h#O-6UPirzP`Eypi@sa_@6?iDw?!P_kGPy~1jH_Mln~p(rS)XW2qK zyMC*rbAQj`^u|nbckqrky)f$J_fynn?UMe8%S#A5aj4nL6Dl1lz7%Bx3!TAJK^N#L zFqNWT_nwZ$z}kg6dmF7^k~P14g21GpuO-`iLx{8F-#CE1SISs*bV4z+Jwm-28Ztn% z*#DaDpkvlbctMi4l0Ki?D>++}vS|Z~lZw;?IygHU`QqNnk;E~xNwd>jCd;|O0{Bhh z<~6X~wp9m&97B!KP0Ia)m<5NS!h1@IBfI$_Nu9DUJwuKI^v`f|i}BYE;{G8FRhuT2 z#8aI_" + ], + "description": "Promise-based Alert, Confirm and Prompt replacement", + "main": "dist/smalltalk.min.js", + "moduleType": [ + "globals", + "node" + ], + "keywords": [ + "modal", + "alert", + "prompt", + "confirm" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "modules", + "test", + "tests", + "screen" + ], + "dependencies": {}, + "_release": "1.5.0", + "_resolution": { + "type": "version", + "tag": "v1.5.0", + "commit": "04b5b3474dde87c4bdcb57b1040006050511f79b" + }, + "_source": "git://github.com/coderaiser/smalltalk.git", + "_target": "~1.5.0", + "_originalSource": "smalltalk", + "_direct": true +} \ No newline at end of file diff --git a/modules/smalltalk/ChangeLog b/modules/smalltalk/ChangeLog new file mode 100644 index 00000000..3633c315 --- /dev/null +++ b/modules/smalltalk/ChangeLog @@ -0,0 +1,67 @@ +2015.09.28, v1.5.0 + +feature: +- (smalltalk) add native + + +2015.09.26, v1.4.1 + +feature: +- (bower) rm promise-polyfill + + +2015.09.26, v1.4.0 + +feature: +- (smalltalk) Cancel, OK -> OK, Cancel + + +2015.09.26, v1.3.4 + +fix: +- (smalltalk) keyDown enter: prevent pass next + +feature: +- (package) add jscs +- (package) add jshint support + + +2015.09.24, v1.3.3 + +feature: +- (smalltalk) header: add font-weight + + +2015.09.24, v1.3.2 + +feature: +- (smalltalk) h1 -> header +- (smalltalk) .content-area: add max-width + + +2015.09.23, v1.3.1 + +fix: +- (smalltalk) changeButtonFocus: left, right, up, down do not work with confirm + + +2015.09.23, v1.3.0 + +feature: +- (smalltalk) add handling of keys: left, right, up, down + + +2015.09.23, v1.2.0 + +feature: +- (smalltalk) keyDown: add stopPropogation +- (smalltalk) .smalltalk: rm background-color + + +2015.09.22, v1.1.0 + +feature: +- (package) scripts build: add build-poly +- (smalltalk) add options {cancel} +- (screen) add + diff --git a/modules/smalltalk/LICENSE b/modules/smalltalk/LICENSE new file mode 100644 index 00000000..a103b669 --- /dev/null +++ b/modules/smalltalk/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 coderaiser + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/modules/smalltalk/README.md b/modules/smalltalk/README.md new file mode 100644 index 00000000..0b5800e7 --- /dev/null +++ b/modules/smalltalk/README.md @@ -0,0 +1,76 @@ +Smalltalk [![License][LicenseIMGURL]][LicenseURL] [![NPM version][NPMIMGURL]][NPMURL] [![Dependency Status][DependencyStatusIMGURL]][DependencyStatusURL] [![Build Status][BuildStatusIMGURL]][BuildStatusURL] +==== + +Simple [Promise](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise)-based replacement of native Alert, Confirm and Prompt. + +# Install +With help of [bower](http://bower.io "Bower"). + +``` +bower install smalltalk +``` + +Or npm: + +``` +npm i smalltalk +``` + +# API + +In every method of `smalltalk` last parameter *options* is optional and could be used +for preventing of handling cancel event. + +```js +{ + cancel: true /* default */ +} +``` + +## smalltalk.alert(title, message [, options]) + +![Alert](https://raw.githubusercontent.com/coderaiser/smalltalk/master/screen/alert.png "Alert") + +```js +smalltalk.alert('Error', 'There was an error!').then(function() { + console.log('ok'); +}, function() { + console.log('cancel'); +}); +``` + +## smalltalk.confirm(title, message [, options]) + +![Confirm](https://raw.githubusercontent.com/coderaiser/smalltalk/master/screen/confirm.png "Confirm") + +```js +smalltalk.confirm('Question', 'Are you sure?').then(function() { + console.log('yes'); +}, function() { + console.log('no'); +}); +``` + +## smalltalk.prompt(title, message, value [, options]) + +![Prompt](https://raw.githubusercontent.com/coderaiser/smalltalk/master/screen/prompt.png "Prompt") + +```js +smalltalk.prompt('Question', 'How old are you?', '10').then(function(value) { + console.log(value); +}, function() { + console.log('cancel'); +}); +``` + +#License +MIT + +[NPMIMGURL]: https://img.shields.io/npm/v/smalltalk.svg?style=flat +[BuildStatusIMGURL]: https://img.shields.io/travis/coderaiser/smalltalk/master.svg?style=flat +[DependencyStatusIMGURL]: https://img.shields.io/gemnasium/coderaiser/smalltalk.svg?style=flat +[LicenseIMGURL]: https://img.shields.io/badge/license-MIT-317BF9.svg?style=flat +[NPMURL]: https://npmjs.org/package/smalltalk "npm" +[BuildStatusURL]: https://travis-ci.org/coderaiser/smalltalk "Build Status" +[DependencyStatusURL]: https://gemnasium.com/coderaiser/smalltalk "Dependency Status" +[LicenseURL]: https://tldrlegal.com/license/mit-license "MIT License" diff --git a/modules/smalltalk/bower.json b/modules/smalltalk/bower.json new file mode 100644 index 00000000..39f7cea7 --- /dev/null +++ b/modules/smalltalk/bower.json @@ -0,0 +1,31 @@ +{ + "name": "smalltalk", + "version": "1.5.0", + "homepage": "https://github.com/coderaiser/smalltalk", + "authors": [ + "coderaiser " + ], + "description": "Promise-based Alert, Confirm and Prompt replacement", + "main": "dist/smalltalk.min.js", + "moduleType": [ + "globals", + "node" + ], + "keywords": [ + "modal", + "alert", + "prompt", + "confirm" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "modules", + "test", + "tests", + "screen" + ], + "dependencies": {} +} diff --git a/modules/smalltalk/css/smalltalk.css b/modules/smalltalk/css/smalltalk.css new file mode 100644 index 00000000..ecc56128 --- /dev/null +++ b/modules/smalltalk/css/smalltalk.css @@ -0,0 +1,181 @@ +.smalltalk { + display: -webkit-flex; + display: -moz-box; + display: -ms-flexbox; + display: flex; + + align-items: center; + flex-direction: column; + justify-content: center; + + -webkit-transition: 200ms opacity; + -moz-transition: 200ms opacity; + -ms-transition: 200ms opacity; + -o-transition: 200ms opacity; + transition: 200ms opacity; + + bottom: 0; + left: 0; + overflow: auto; + padding: 20px; + position: fixed; + right: 0; + top: 0; +} + +.smalltalk .page { + border-radius: 3px; + background: white; + box-shadow: 0 4px 23px 5px rgba(0, 0, 0, 0.2), 0 2px 6px rgba(0,0,0,0.15); + color: #333; + min-width: 400px; + padding: 0; + position: relative; + z-index: 0; +} + +@media only screen and (max-width: 500px) { + .smalltalk .page { + min-width: 0; + } +} + +.smalltalk .page > .close-button { + background-image: url(../img/IDR_CLOSE_DIALOG.png); + background-position: center; + background-repeat: no-repeat; + height: 14px; + position: absolute; + right: 7px; + top: 7px; + width: 14px; + z-index: 1; +} + +.smalltalk .page > .close-button:hover { + background-image: url(../img/IDR_CLOSE_DIALOG_H.png); +} + +.smalltalk .page header { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + color: #333; + font-size: 120%; + font-weight: bold; + margin: 0; + padding: 14px 17px 14px; + text-shadow: white 0 1px 2px; +} + +.smalltalk .page .content-area { + overflow: auto; + padding: 6px 17px 6px; + position: relative; + max-width: 500px; +} + +.smalltalk .page .action-area { + padding: 14px 17px; +} + +.smalltalk .page .button-strip { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display:flex; + + flex-direction: row; + justify-content: flex-end; +} + +.smalltalk .page .button-strip > button { + -webkit-margin-start: 10px; + -moz-margin-start: 10px; + -ms-margin-start: 10px; +} + +.smalltalk button:enabled:focus, .smalltalk input:enabled:focus { + -webkit-transition: border-color 200ms; + -moz-transition: border-color 200ms; + -ms-transition: border-color 200ms; + -o-transition: border-color 200ms; + transition: border-color 200ms; + border-color: rgb(77, 144, 254); + outline: none; +} + +.smalltalk button:enabled:active { + background-image: -webkit-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); + background-image: -moz-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); + background-image: -ms-linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); + background-image: linear-gradient(#e7e7e7, #e7e7e7 38%, #d7d7d7); + + box-shadow: none; + text-shadow: none; +} + +.smalltalk button, .smalltalk .smalltalk { + min-height: 2em; + min-width: 4em; +} + +.smalltalk button::-moz-focus-inner { + border: 0; +} + +.smalltalk button { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-image: -webkit-linear-gradient(#ededed, #ededed 38%, #dedede); + background-image: -moz-linear-gradient(#ededed, #ededed 38%, #dedede); + background-image: -ms-linear-gradient(#ededed, #ededed 38%, #dedede); + background-image: linear-gradient(#ededed, #ededed 38%, #dedede); + + border: 1px solid rgb(0, 0, 0); + border: 1px solid rgba(0, 0, 0, 0.25); + border-radius: 2px; + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08), inset 0 1px 2px rgba(255, 255, 255, 0.75); + color: #444; + font: inherit; + margin: 0 1px 0 0; + outline: none; + text-shadow: 0 1px 0 rgb(240, 240, 240); +} + +.smalltalk button:enabled:focus, .smalltalk input:enabled:focus { + -webkit-transition: border-color 200ms; + -moz-transition: border-color 200ms; + -ms-transition: border-color 200ms; + -o-transition: border-color 200ms; + transition: border-color 200ms; + border-color: rgb(77, 144, 254); + outline: none; +} + +.smalltalk input { + width: 100%; + border: 1px solid #bfbfbf; + border-radius: 2px; + box-sizing: border-box; + color: #444; + font: inherit; + margin: 0; + min-height: 2em; + padding: 3px; + outline: none; +} + + +button { + font-family: Ubuntu, Arial, sans-serif; +} diff --git a/modules/smalltalk/dist/smalltalk.min.css b/modules/smalltalk/dist/smalltalk.min.css new file mode 100644 index 00000000..b7e98e3c --- /dev/null +++ b/modules/smalltalk/dist/smalltalk.min.css @@ -0,0 +1 @@ +.smalltalk{display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex;align-items:center;flex-direction:column;justify-content:center;-webkit-transition:.2s opacity;-moz-transition:.2s opacity;-ms-transition:.2s opacity;-o-transition:.2s opacity;transition:.2s opacity;bottom:0;left:0;overflow:auto;padding:20px;position:fixed;right:0;top:0}.smalltalk .page{border-radius:3px;background:#fff;box-shadow:0 4px 23px 5px rgba(0,0,0,.2),0 2px 6px rgba(0,0,0,.15);color:#333;min-width:400px;padding:0;position:relative;z-index:0}@media only screen and (max-width:500px){.smalltalk .page{min-width:0}}.smalltalk .page>.close-button{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAUklEQVR4XqXPYQrAIAhAYW/gXd8NJxTopVqsGEhtf+L9/ERU2k/HSMFQpKcYJeNFI9Be0LCMij8cYyjj5EHIivGBkwLfrbX3IF8PqumVmnDpEG+eDsKibPG2JwAAAABJRU5ErkJggg==);background-position:center;background-repeat:no-repeat;height:14px;position:absolute;right:7px;top:7px;width:14px;z-index:1}.smalltalk .page>.close-button:hover{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAQAAAC1QeVaAAAAnUlEQVR4XoWQQQ6CQAxFewjkJkMCyXgJPMk7AiYczyBeZEAX6AKctGIaN+bt+trk9wtGQc/IkhnoKGxqqiWxOSZalapWFZ6VrIUDExsN0a5JRBq9LoVOR0eEQMoEhKizXhhsn0p1sCWVo7CwOf1RytPL8CPvwuBUoHL6ugeK30CVD1TqK7V/hdpe+VNChhOzV8xWny/+xosHF8578W/Hmc1OOC3wmwAAAABJRU5ErkJggg==)}.smalltalk .page header{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#333;font-size:120%;font-weight:700;margin:0;padding:14px 17px;text-shadow:#fff 0 1px 2px}.smalltalk .page .content-area{overflow:auto;padding:6px 17px;position:relative;max-width:500px}.smalltalk .page .action-area{padding:14px 17px}.smalltalk .page .button-strip{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:flex;flex-direction:row;justify-content:flex-end}.smalltalk .page .button-strip>button{-webkit-margin-start:10px;-moz-margin-start:10px;-ms-margin-start:10px}.smalltalk button:enabled:active{background-image:-webkit-linear-gradient(#e7e7e7,#e7e7e7 38%,#d7d7d7);background-image:-moz-linear-gradient(#e7e7e7,#e7e7e7 38%,#d7d7d7);background-image:-ms-linear-gradient(#e7e7e7,#e7e7e7 38%,#d7d7d7);background-image:linear-gradient(#e7e7e7,#e7e7e7 38%,#d7d7d7);box-shadow:none;text-shadow:none}.smalltalk .smalltalk,.smalltalk button{min-height:2em;min-width:4em}.smalltalk button::-moz-focus-inner{border:0}.smalltalk button{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:-webkit-linear-gradient(#ededed,#ededed 38%,#dedede);background-image:-moz-linear-gradient(#ededed,#ededed 38%,#dedede);background-image:-ms-linear-gradient(#ededed,#ededed 38%,#dedede);background-image:linear-gradient(#ededed,#ededed 38%,#dedede);border:1px solid #000;border:1px solid rgba(0,0,0,.25);border-radius:2px;box-shadow:0 1px 0 rgba(0,0,0,.08),inset 0 1px 2px rgba(255,255,255,.75);color:#444;font:inherit;margin:0 1px 0 0;outline:0;text-shadow:0 1px 0 #f0f0f0}.smalltalk button:enabled:focus,.smalltalk input:enabled:focus{-webkit-transition:border-color .2s;-moz-transition:border-color .2s;-ms-transition:border-color .2s;-o-transition:border-color .2s;transition:border-color .2s;border-color:#4d90fe;outline:0}.smalltalk input{width:100%;border:1px solid #bfbfbf;border-radius:2px;box-sizing:border-box;color:#444;font:inherit;margin:0;min-height:2em;padding:3px;outline:0}button{font-family:Ubuntu,Arial,sans-serif} diff --git a/modules/smalltalk/dist/smalltalk.min.js b/modules/smalltalk/dist/smalltalk.min.js new file mode 100644 index 00000000..3574eb91 --- /dev/null +++ b/modules/smalltalk/dist/smalltalk.min.js @@ -0,0 +1 @@ +"use strict";!function(n){function t(n){function e(n,t,e,r){if(!Array.isArray(r))throw Error("buttons should be array!");return'
\n
\n
'+n+'
\n
\n '+t+"\n "+e+'\n
\n
\n
'+r.map(function(n,t){return""}).join("")+"\n
\n
\n
"}function r(n,t,r,o,u){var c=document.createElement("div"),s=["cancel","close","ok"],d=void 0,v=void 0,m=new Promise(function(n,t){var e=u&&!u.cancel,r=function(){};d=n,v=t,e&&(v=r)}),p=e(n,t,r,o);return c.innerHTML=p,c.className="smalltalk",document.body.appendChild(c),l(c,["ok"]).forEach(function(n){return n.focus()}),l(c,["input"]).forEach(function(n){return n.setSelectionRange(0,r.length)}),f("click",c,s,function(n){return i(n.target,c,d,v)}),["click","contextmenu"].forEach(function(n){return c.addEventListener(n,function(){return l(c,["ok","input"]).forEach(function(n){return n.focus()})})}),c.addEventListener("keydown",a(c,d,v)),m}function a(n,t,e){return function(r){var a={ENTER:13,ESC:27,TAB:9,LEFT:37,UP:38,RIGHT:39,DOWN:40},f=r.keyCode,s=r.target,d=["ok","cancel","input"],m=l(n,d).map(function(n){return o(n)});switch(f){case a.ENTER:i(s,n,t,e),r.preventDefault();break;case a.ESC:v(),e();break;case a.TAB:r.shiftKey&&c(n,m),c(n,m),r.preventDefault();break;default:var p=["left","right","up","down"].some(function(n){return f===a[n.toUpperCase()]});p&&u(n,m)}r.stopPropagation()}}function o(n){return n.getAttribute("data-name").replace("js-","")}function u(n,t){var e="",r=document.activeElement,a=o(r),u=/ok|cancel/.test(a),c=t.length-1;c&&u&&(e="cancel"===a?"ok":"cancel",l(n,[e]).forEach(function(n){return n.focus()}))}function c(n,t){var e=document.activeElement,r=o(e),a=t.length-1,u=t.indexOf(r);u===a?u=0:a>u&&++u;var c=t[u];l(n,[c]).forEach(function(n){return n.focus()})}function i(n,t,e,r){var a=void 0,o=n.getAttribute("data-name").replace("js-","");/close|cancel/.test(o)?r():(a=l(t,["input"]).reduce(function(n,t){return t.value},null),e(a)),v()}function l(n,t){var e=t.map(function(t){return n.querySelector('[data-name="js-'+t+'"]')}).filter(function(n){return n});return e}function f(n,t,e,r){l(t,e).forEach(function(t){return t.addEventListener(n,function(n){return r(n)})})}function s(n){var t=document.querySelector(n);t.parentElement.removeChild(t)}function d(n){var t=[].slice.call(arguments,1);return n.bind(null,t)}if(!(this instanceof t))return new t(n);var v=d(s,".smalltalk"),m=["OK"],p=["OK","Cancel"];this.alert=function(n,t,e){return r(n,t,"",m,e)},this.prompt=function(n,t,e,a){var o=e||"",u='';return r(n,t,u,p,a)},this.confirm=function(n,t,e){return r(n,t,"",p,e)}}"undefined"!=typeof module&&module.exports?module.exports=t():n.smalltalk=t()}("undefined"!=typeof window&&window); diff --git a/modules/smalltalk/dist/smalltalk.native.min.js b/modules/smalltalk/dist/smalltalk.native.min.js new file mode 100644 index 00000000..6bb18af6 --- /dev/null +++ b/modules/smalltalk/dist/smalltalk.native.min.js @@ -0,0 +1 @@ +!function(n){"use strict";function t(){return this instanceof t?(this.alert=function(n,t){var e=new Promise(function(n){alert(t),n()});return e},this.prompt=function(n,t,e,r){var o=r,i=new Promise(function(n,r){var i=o&&!o.cancel,u=prompt(t,e);null!==u?n(u):i||r()});return i},void(this.confirm=function(n,t,e){var r=e,o=r&&!r.noCancel,i=new Promise(function(n,e){var r=confirm(t);r?n():o||e()});return i})):new t}"undefined"!=typeof module&&module.exports?module.exports=t():n.smalltalk=t()}(this); diff --git a/modules/smalltalk/dist/smalltalk.poly.min.js b/modules/smalltalk/dist/smalltalk.poly.min.js new file mode 100644 index 00000000..d4929644 --- /dev/null +++ b/modules/smalltalk/dist/smalltalk.poly.min.js @@ -0,0 +1,2 @@ +/*! promise-polyfill 2.1.0 */ +!function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void j(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError("A promise cannot be resolved with itself.");if(a&&("object"==typeof a||"function"==typeof a)){var c=a.then;if("function"==typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j="function"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},k=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};c.prototype["catch"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&k(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){j=a},"undefined"!=typeof module&&module.exports?module.exports=c:a.Promise||(a.Promise=c)}(this);"use strict";!function(n){function t(n){function e(n,t,e,r){if(!Array.isArray(r))throw Error("buttons should be array!");return'
\n
\n
'+n+'
\n
\n '+t+"\n "+e+'\n
\n
\n
'+r.map(function(n,t){return""}).join("")+"\n
\n
\n
"}function r(n,t,r,o,u){var c=document.createElement("div"),s=["cancel","close","ok"],d=void 0,v=void 0,m=new Promise(function(n,t){var e=u&&!u.cancel,r=function(){};d=n,v=t,e&&(v=r)}),p=e(n,t,r,o);return c.innerHTML=p,c.className="smalltalk",document.body.appendChild(c),l(c,["ok"]).forEach(function(n){return n.focus()}),l(c,["input"]).forEach(function(n){return n.setSelectionRange(0,r.length)}),f("click",c,s,function(n){return i(n.target,c,d,v)}),["click","contextmenu"].forEach(function(n){return c.addEventListener(n,function(){return l(c,["ok","input"]).forEach(function(n){return n.focus()})})}),c.addEventListener("keydown",a(c,d,v)),m}function a(n,t,e){return function(r){var a={ENTER:13,ESC:27,TAB:9,LEFT:37,UP:38,RIGHT:39,DOWN:40},f=r.keyCode,s=r.target,d=["ok","cancel","input"],m=l(n,d).map(function(n){return o(n)});switch(f){case a.ENTER:i(s,n,t,e),r.preventDefault();break;case a.ESC:v(),e();break;case a.TAB:r.shiftKey&&c(n,m),c(n,m),r.preventDefault();break;default:var p=["left","right","up","down"].some(function(n){return f===a[n.toUpperCase()]});p&&u(n,m)}r.stopPropagation()}}function o(n){return n.getAttribute("data-name").replace("js-","")}function u(n,t){var e="",r=document.activeElement,a=o(r),u=/ok|cancel/.test(a),c=t.length-1;c&&u&&(e="cancel"===a?"ok":"cancel",l(n,[e]).forEach(function(n){return n.focus()}))}function c(n,t){var e=document.activeElement,r=o(e),a=t.length-1,u=t.indexOf(r);u===a?u=0:a>u&&++u;var c=t[u];l(n,[c]).forEach(function(n){return n.focus()})}function i(n,t,e,r){var a=void 0,o=n.getAttribute("data-name").replace("js-","");/close|cancel/.test(o)?r():(a=l(t,["input"]).reduce(function(n,t){return t.value},null),e(a)),v()}function l(n,t){var e=t.map(function(t){return n.querySelector('[data-name="js-'+t+'"]')}).filter(function(n){return n});return e}function f(n,t,e,r){l(t,e).forEach(function(t){return t.addEventListener(n,function(n){return r(n)})})}function s(n){var t=document.querySelector(n);t.parentElement.removeChild(t)}function d(n){var t=[].slice.call(arguments,1);return n.bind(null,t)}if(!(this instanceof t))return new t(n);var v=d(s,".smalltalk"),m=["OK"],p=["OK","Cancel"];this.alert=function(n,t,e){return r(n,t,"",m,e)},this.prompt=function(n,t,e,a){var o=e||"",u='';return r(n,t,u,p,a)},this.confirm=function(n,t,e){return r(n,t,"",p,e)}}"undefined"!=typeof module&&module.exports?module.exports=t():n.smalltalk=t()}("undefined"!=typeof window&&window); diff --git a/modules/smalltalk/example/index.html b/modules/smalltalk/example/index.html new file mode 100644 index 00000000..1bd3e1a4 --- /dev/null +++ b/modules/smalltalk/example/index.html @@ -0,0 +1,15 @@ + + + + + + diff --git a/modules/smalltalk/img/IDR_CLOSE_DIALOG.png b/modules/smalltalk/img/IDR_CLOSE_DIALOG.png new file mode 100644 index 0000000000000000000000000000000000000000..9e2956d9de2f4f0943ef75448a25d96b6420f93b GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh0wlLOK8*rWL7py-Ar)~;&nI#nP~dP#%zqGj zpI2Sv#nPxX5+1qrkN*B~3AyEe+~Z)tlI0Srk6o27#9i3X(`7G{tnv7X>ru6{1-oD!M-z=NloUwLR^Z2_zR{vTau*ApS}Hc>&bU+H^=iQCP}`~$jMrzy3tZCYU-*m z(RowXv@#1z^Ilx%=_0jPuhq}py~W`aOUsJQaS}Q6y-GKzPF=iVgXQ1AQ'; + + return showDialog(title, msg, valueStr, BUTTON_OK_CANCEL, options); + }; + + this.confirm = function (title, msg, options) { + return showDialog(title, msg, '', BUTTON_OK_CANCEL, options); + }; + + function getTemplate(title, msg, value, buttons) { + if (!Array.isArray(buttons)) throw Error('buttons should be array!'); + + return '
\n
\n
' + title + '
\n
\n ' + msg + '\n ' + value + '\n
\n
\n
' + buttons.map(function (name, i) { + return ''; + }).join('') + '\n
\n
\n
'; + } + + function showDialog(title, msg, value, buttons, options) { + var dialog = document.createElement('div'), + closeButtons = ['cancel', 'close', 'ok'], + ok = undefined, + cancel = undefined, + promise = new Promise(function (resolve, reject) { + var noCancel = options && !options.cancel; + var empty = function empty() {}; + + ok = resolve; + cancel = reject; + + if (noCancel) cancel = empty; + }), + tmpl = getTemplate(title, msg, value, buttons); + + dialog.innerHTML = tmpl; + dialog.className = 'smalltalk'; + + document.body.appendChild(dialog); + + find(dialog, ['ok']).forEach(function (el) { + return el.focus(); + }); + + find(dialog, ['input']).forEach(function (el) { + return el.setSelectionRange(0, value.length); + }); + + addListeterAll('click', dialog, closeButtons, function (event) { + return closeDialog(event.target, dialog, ok, cancel); + }); + + ['click', 'contextmenu'].forEach(function (event) { + return dialog.addEventListener(event, function () { + return find(dialog, ['ok', 'input']).forEach(function (el) { + return el.focus(); + }); + }); + }); + + dialog.addEventListener('keydown', keyDown(dialog, ok, cancel)); + + return promise; + } + + function keyDown(dialog, ok, cancel) { + return function (event) { + var KEY = { + ENTER: 13, + ESC: 27, + TAB: 9, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40 + }; + + var keyCode = event.keyCode, + el = event.target; + + var namesAll = ['ok', 'cancel', 'input'], + names = find(dialog, namesAll).map(function (el) { + return getDataName(el); + }); + + switch (keyCode) { + case KEY.ENTER: + closeDialog(el, dialog, ok, cancel); + event.preventDefault(); + break; + + case KEY.ESC: + remove(); + cancel(); + break; + + case KEY.TAB: + if (event.shiftKey) tab(dialog, names); + + tab(dialog, names); + event.preventDefault(); + break; + + default: + var is = ['left', 'right', 'up', 'down'].some(function (name) { + return keyCode === KEY[name.toUpperCase()]; + }); + + if (is) changeButtonFocus(dialog, names); + + break; + } + + event.stopPropagation(); + }; + } + + function getDataName(el) { + return el.getAttribute('data-name').replace('js-', ''); + } + + function changeButtonFocus(dialog, names) { + var name = '', + active = document.activeElement, + activeName = getDataName(active), + isButton = /ok|cancel/.test(activeName), + count = names.length - 1; + + if (count && isButton) { + if (activeName === 'cancel') name = 'ok';else name = 'cancel'; + + find(dialog, [name]).forEach(function (el) { + return el.focus(); + }); + } + } + + function tab(dialog, names) { + var active = document.activeElement, + activeName = getDataName(active), + count = names.length - 1, + index = names.indexOf(activeName); + + if (index === count) index = 0;else if (index < count) ++index; + + var name = names[index]; + + find(dialog, [name]).forEach(function (el) { + return el.focus(); + }); + } + + function closeDialog(el, dialog, ok, cancel) { + var value = undefined, + name = el.getAttribute('data-name').replace('js-', ''); + + if (/close|cancel/.test(name)) { + cancel(); + } else { + value = find(dialog, ['input']).reduce(function (value, el) { + return el.value; + }, null); + + ok(value); + } + + remove(); + } + + function find(element, names) { + var elements = names.map(function (name) { + return element.querySelector('[data-name="js-' + name + '"]'); + }).filter(function (el) { + return el; + }); + + return elements; + } + + function addListeterAll(event, parent, elements, fn) { + find(parent, elements).forEach(function (el) { + return el.addEventListener(event, function (event) { + return fn(event); + }); + }); + } + + function removeEl(name) { + var el = document.querySelector(name); + + el.parentElement.removeChild(el); + } + + function bind(fn) { + var args = [].slice.call(arguments, 1); + + return fn.bind(null, args); + } + } +})(typeof window !== 'undefined' && window); \ No newline at end of file diff --git a/modules/smalltalk/lib/smalltalk.native.js b/modules/smalltalk/lib/smalltalk.native.js new file mode 100644 index 00000000..100264b7 --- /dev/null +++ b/modules/smalltalk/lib/smalltalk.native.js @@ -0,0 +1,54 @@ +(function(global) { + 'use strict'; + + if (typeof module !== 'undefined' && module.exports) + module.exports = Smalltalk(); + else + global.smalltalk = Smalltalk(); + + + function Smalltalk() { + if (!(this instanceof Smalltalk)) + return new Smalltalk(); + + this.alert = function(title, message) { + var promise = new Promise(function(resolve) { + alert(message); + resolve(); + }); + + return promise; + }; + + this.prompt = function(title, message, value, options) { + var o = options, + promise = new Promise(function(resolve, reject) { + var noCancel = o && !o.cancel, + result = prompt(message, value); + + if (result !== null) + resolve(result); + else if (!noCancel) + reject(); + }); + + return promise; + }; + + this.confirm = function(title, message, options) { + var o = options, + noCancel = o && !o.noCancel, + promise = new Promise(function(resolve, reject) { + var is = confirm(message); + + if (is) + resolve(); + else if (!noCancel) + reject(); + }); + + return promise; + }; + } + +})(this); diff --git a/modules/smalltalk/package.json b/modules/smalltalk/package.json new file mode 100644 index 00000000..5a34bb97 --- /dev/null +++ b/modules/smalltalk/package.json @@ -0,0 +1,47 @@ +{ + "name": "smalltalk", + "version": "1.5.0", + "description": "Promise-based Alert, Confirm and Prompt replacement", + "homepage": "http://github.com/coderaiser/smalltalk", + "repository": { + "type": "git", + "url": "git://github.com/coderaiser/smalltalk.git" + }, + "main": "dist/smalltalk.min.js", + "scripts": { + "watch": "watch 'npm run 6to5' dist", + "6to5": "babel -d lib src", + "build-css": "minify css/smalltalk.css > dist/smalltalk.min.css", + "build-js": "npm run 6to5 && minify lib/smalltalk.js > dist/smalltalk.min.js", + "build-js-native": "minify lib/smalltalk.native.js > dist/smalltalk.native.min.js", + "build-poly": "cat node_modules/promise-polyfill/Promise.min.js dist/smalltalk.min.js > dist/smalltalk.poly.min.js", + "build-poly-native": "cat node_modules/promise-polyfill/Promise.min.js dist/smalltalk.native.min.js > dist/smalltalk.native.poly.min.js", + "build-js-full": "npm run build-js && npm run build-poly", + "build-native-full": "npm run build-js-native && npm run build-js-native", + "build": "npm run build-css && npm run build-js-full && npm run build-native-full", + "bower": "bower", + "babel": "babel", + "minify": "minify", + "wisdom": "npm run build", + "test": "jshint src && jscs --esnext src" + }, + "keywords": [ + "modal", + "alert", + "confirm", + "prompt" + ], + "author": "coderaiser (http://coderaiser.github.io/)", + "license": "MIT", + "bugs": { + "url": "https://github.com/coderaiser/smalltalk/issues" + }, + "devDependencies": { + "babel": "~5.8.23", + "jscs": "~2.1.1", + "jshint": "~2.8.0", + "minify": "~1.4.20", + "promise-polyfill": "^2.1.0", + "watch": "~0.16.0" + } +} diff --git a/modules/smalltalk/src/smalltalk.js b/modules/smalltalk/src/smalltalk.js new file mode 100644 index 00000000..a46b8702 --- /dev/null +++ b/modules/smalltalk/src/smalltalk.js @@ -0,0 +1,257 @@ +(function(global) { + 'use strict'; + + if (typeof module !== 'undefined' && module.exports) + module.exports = SmallTalk(); + else + global.smalltalk = SmallTalk(); + + function SmallTalk(callback) { + if (!(this instanceof SmallTalk)) + return new SmallTalk(callback); + + let remove = bind(removeEl, '.smalltalk'); + + const BUTTON_OK = ['OK']; + const BUTTON_OK_CANCEL = ['OK', 'Cancel']; + + this.alert = (title, msg, options) => { + return showDialog(title, msg, '', BUTTON_OK, options); + }; + + this.prompt = (title, msg, value, options) => { + let val = value || ''; + let valueStr = ``; + + return showDialog(title, msg, valueStr, BUTTON_OK_CANCEL, options); + }; + + this.confirm = (title, msg, options) => { + return showDialog(title, msg, '', BUTTON_OK_CANCEL, options); + }; + + function getTemplate(title, msg, value, buttons) { + if (!Array.isArray(buttons)) + throw Error('buttons should be array!'); + + return `
+
+
${ title }
+
+ ${ msg } + ${ value } +
+
+
${ + buttons.map((name, i) => + `` + ).join('') + } +
+
+
`; + } + + function showDialog(title, msg, value, buttons, options) { + let dialog = document.createElement('div'), + + closeButtons = [ + 'cancel', + 'close', + 'ok' + ], + + ok, cancel, + + promise = new Promise((resolve, reject) => { + let noCancel = options && !options.cancel; + let empty = () => {}; + + ok = resolve; + cancel = reject; + + if (noCancel) + cancel = empty; + }), + + tmpl = getTemplate(title, msg, value, buttons); + + dialog.innerHTML = tmpl; + dialog.className = 'smalltalk'; + + document.body.appendChild(dialog); + + find(dialog, ['ok']).forEach(el => + el.focus() + ); + + find(dialog, ['input']).forEach(el => + el.setSelectionRange(0, value.length) + ); + + addListeterAll('click', dialog, closeButtons, event => + closeDialog(event.target, dialog, ok, cancel) + ); + + ['click', 'contextmenu'].forEach(event => + dialog.addEventListener(event, () => + find(dialog, ['ok', 'input']).forEach(el => + el.focus() + ) + ) + ); + + dialog.addEventListener('keydown', keyDown(dialog, ok, cancel)); + + return promise; + } + + function keyDown(dialog, ok, cancel) { + return event => { + const KEY = { + ENTER : 13, + ESC : 27, + TAB : 9, + LEFT : 37, + UP : 38, + RIGHT : 39, + DOWN : 40 + }; + + let keyCode = event.keyCode, + el = event.target; + + let namesAll = ['ok', 'cancel', 'input'], + names = find(dialog, namesAll).map(el => + getDataName(el) + ); + + switch(keyCode) { + case KEY.ENTER: + closeDialog(el, dialog, ok, cancel); + event.preventDefault(); + break; + + case KEY.ESC: + remove(); + cancel(); + break; + + case KEY.TAB: + if (event.shiftKey) + tab(dialog, names); + + tab(dialog, names); + event.preventDefault(); + break; + + default: + let is = ['left', 'right', 'up', 'down'].some(name => + keyCode === KEY[name.toUpperCase()] + ); + + if (is) + changeButtonFocus(dialog, names); + + break; + } + + event.stopPropagation(); + }; + } + + function getDataName(el) { + return el + .getAttribute('data-name') + .replace('js-', ''); + } + + function changeButtonFocus(dialog, names) { + let name = '', + active = document.activeElement, + activeName = getDataName(active), + isButton = /ok|cancel/.test(activeName), + count = names.length - 1; + + if (count && isButton) { + if (activeName === 'cancel') + name = 'ok'; + else + name = 'cancel'; + + find(dialog, [name]).forEach(el => + el.focus() + ); + } + } + + function tab(dialog, names) { + let active = document.activeElement, + activeName = getDataName(active), + + count = names.length - 1, + index = names.indexOf(activeName); + + if (index === count) + index = 0; + else if (index < count) + ++index; + + let name = names[index]; + + find(dialog, [name]).forEach(el => + el.focus() + ); + } + + function closeDialog(el, dialog, ok, cancel) { + let value, + name = el + .getAttribute('data-name') + .replace('js-', ''); + + if (/close|cancel/.test(name)) { + cancel(); + } else { + value = find(dialog, ['input']).reduce((value, el) => { + return el.value; + }, null); + + ok(value); + } + + remove(); + } + + function find(element, names) { + let elements = names.map(name => + element.querySelector(`[data-name="js-${ name }"]`) + ).filter(el => + el + ); + + return elements; + } + + function addListeterAll(event, parent, elements, fn) { + find(parent, elements).forEach(el => + el.addEventListener(event, event => + fn(event) + ) + ); + } + + function removeEl(name) { + var el = document.querySelector(name); + + el.parentElement.removeChild(el); + } + + function bind(fn) { + var args = [].slice.call(arguments, 1); + + return fn.bind(null, args); + } + } + +})(typeof window !== 'undefined' && window); diff --git a/tmpl/config.hbs b/tmpl/config.hbs index 281279b3..ae37f02c 100644 --- a/tmpl/config.hbs +++ b/tmpl/config.hbs @@ -127,4 +127,10 @@ Progress +
  • + +