From 3b50df948dd5ac152f07c43bc98d560cc63e38dc Mon Sep 17 00:00:00 2001 From: Spencer Nowak Date: Mon, 21 Aug 2017 11:23:47 -0400 Subject: [PATCH] Add log check to logTable method --- dist/dist-min.tar.gz | Bin 30592 -> 30722 bytes dist/dist-min.zip | Bin 31188 -> 31324 bytes dist/dist-min/react-console.min.js | 2 +- dist/dist-min/react-console.min.js.map | 2 +- dist/dist.tar.gz | Bin 26060 -> 26187 bytes dist/dist.zip | Bin 26466 -> 26589 bytes dist/dist/react-console.js | 20 ++++++++++---------- dist/dist/react-console.js.map | 2 +- lib/react-console.js | 20 ++++++++++---------- lib/react-console.js.map | 2 +- src/react-console.tsx | 20 ++++++++++---------- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/dist/dist-min.tar.gz b/dist/dist-min.tar.gz index 548e2e7bd80c1054dd4797c88af0ed9334f4d254..ff68a428a2e7a24ecf3892e0e429b0d90c98c2fe 100644 GIT binary patch literal 30722 zcmV(%K;pk2iwFP!000046YRa~T3flYF1&y5t8lZv)q%z~5E4j8NVaVV(8M{BV~0Fh z#vXtZW7GB^B%!&NbuH`4zW1$?G^BB`O%8MRoX?^=_OOOjD%DA)(rFmA+Hs{l=#K`y zsCv@vS3ivY&kz1vTwGkaaijEq@QuIp_l>0+H&;tb%S$&_Zmuj}U%pXV#EBe25=sz>-r`E94Q0}iEp7q;tchH}W=PvAXDViP5U33p;2XBY( z=7v#xHtd)9T#Y`T4uoYUuXm)Y#a`vr7eHO3F zgSm^Dvr$wU#lvnpo)K(^>+x}S^y{zutiFFAeU77kXY|)!enF1{gW0(Y$x1DWhiC10 z00@_dgW)WZ8kV~KQZyG;k6WY1=lv(c!D%#%zkqDN{yNL%u1ENoyAxMWhl6+!e>siT z`)9r0`uciw|M9_xs2x|^!>AQUv(enz?7+*0cG)83eso?M%w3j2>e=gacLuXdbJCc8 z5!--twRL*h`!Y-9%dO$j*-6xoM{{Lu%yGBZ0X_BC*=Yv|>_sQ7)8oM~T3@_0{2I)1wwP4ggOk%iAD}k6o#x=IA14?XLUlX6Xco8@m3kqyO;wDb{EVb{Ed0BZG^5%+ z8;%A;(0g%R-c?iWAt%V}HXChnSKGbTX!NLc60OgG{D~E;D6|12psfDTa%5+>nS%0s$Bdd-0JOVRRNiUUJPc{F_4 z>YWu))aocn1%996bI|R_cNg!!74m7?Cqj6)=A}q3LwPSxwHNh|;^S;#sI^M`W-p>l z&d!WZTm6~x#V|TtbF_@+@LTLnNSO8LvivdnvNmJ*RCbJ9%V*?edFFrqduHz4TBa4% z(b)klL;q-YQ5C^!HZ9RV7EO<&LSzp;@0CzHgYEp%oDo=`14;YR0FeJ(sG%w!`O0R* zq1QTydUwzpc+jk2nY*BFMv!#qRlEaP`~3KDc4ogn1KYPA-CJM0AA1d2EJr|LZDz(= znhdc!-A@pSLgu2GC#P}cVDNbcRE!c`A*x8 zBXrxt(ftfbV!oLv6IhmB@zA`9s|G+7-AQ5_lNxg1g43fmdQNEdpf@A>9g{7WXtP1S z7a&U^taeAwTL(QD3M+a-gSU(Cth994&dbGR}3ouYL)v7T8(z^Dsa zP#Ds=htW_$tF!KZ;`f(g#=+lL9+}w#4w|ATJp(u~*0MdygMgwQb!)I7iSa`5zxf0W!s> z6Pl|ENL*DTA1X=0xM>)mm|0$aBL@N?na2Mh76g^#^WaXe8k#l=j3~dcZExR|jmFE6 zf=b^FjDqzYFlsSIVPJek9dpn?gTQL2#Tj%SFub|?+2~6GZth}07jG}7XMWLYx1&?^ zYNuy0>xO=dv4=43wGN|)gCoD7kt396VGL)Ej4SllUw+!@+30xo!dUB>GW_b3R=-0F zZY;{$+jlSmUJ+BPdYBK<&88~0W0H6sq=FZJC%S7pB8;lU8@m(D&(FngqsrpDb@%RV z^v;Zo2GyiVvoJvG!?#}j21aG+UDcpyQtmC@pDtr%X>IY&gsg8z7)okyhCTq*J1&5d zYePwD4+p*8&S8BJ$Ac4ejD|AE;4|V!(_<3mRb{EgU3hmTlK*fi5How~%l;j6QV-XQS=z2mzTdPi(?ZZzZol1mEY1;rnGxeYq*DzXVfp>VwrSHSJ|?lrPq-Fa=>Rt45u}0A3GY5 zxTenV%?g2dWLRYjK6ZOOp~5X`k3ntMrLsX^TK$jZ71E&H>bIjFh7;_z7@3;A@M&&~ zU6wEWroS2tJLRD1k|Hhb5BfWOw46bKR_|F}i?s1Uz6UBAVf&VDlXOIu{bX%;RF)RA zg<2opTInFBnrIvNWN->a@2_7h-I69H@?a^e@P)fB>6R^Ss=UMi>%t{IijRTDdh3$jL0=hA1ceZX)A1mBK{&>v zv@wy0R)m z5CdZ>G>l8pK5q4of`}RPNg}^79IW`RWv3cbb+QoLL%MHd)z!CegEHt;*3rvlawGjt zjNV;5vnVfz7fwL{gI%RcmXAs$zOzK|#ubGw7=^u$G}lFs#A-Z;^@LhzR!!RJcjNmJ z5;?Tm>5mZFMnpKw!(!zj1d`nevSwPsUIe|*(NQ#1C7oj}wsI2#M=-W~)MwwM(-E#R zK)xshjbMjs(b}SR&eBu5{>rfN6!|DIr?iTmg>%m`g)B&Ery|{6kDAClIDu*9mhkr@}@CA%9|N?d|RzvCp@X% zlfkFx34`F6Z~3;$Y$rqKWBS@E-&&n%8@sbfwb6xOKJ+DaB&eh9P-qI7XInN+UDk*B zp866e(Qg^&CbK4o^MNvzhDi(Ad4%=w$g8`fcZuSwx5BEYZxYsjB+?h36zRPiu zA_|07Q|Rts*qhkHJS=kR%T{NEERUo=l4?sCs+k)95mZ|$rdk$@t5D4w0{g@Q^PTZx zD3IY%tIWZO@LA5t(Fc@U=t0gfGN+Ky=RNV5>t={NDW8EoCYzmzo*Hggptu4KfpzGa zQ@b}l&Uu@J2mF^-1*MyC!=I$HFqZDuUww8Zuc?PJ{!Nm+am*q$Nng|JnsW-Dn>)yh z>EuLjWs1_b33;I`BL>!wNrFUvb0^z1V@;%Iv>2&55l=OlgHIagy|x|vl?MR{mF_L3 zh)vRg&WZC%cQT>il~{nHS75?7vVdV32A+Jvb9|O~PRw!VdeW_VyuBY|#&?|`S3wlf zfwR6uOLF`|Pa-WxMclE*0>7OR`bLt@mD!rLSiZ)4OxJTFuqm-+^y)il=h`T1Dhj1m zNia`JPfNW-NB9?_HXdoMKCb`$AwPZ;2|bfI>+xmNz@ zze~mMmh*-+rZZsmn6&UQKwxA!x4+cTC%aZ18b9Ou$0g@@N!`IOJ9g#N#Wyr6eiuMX zHPQmdLLxRAy`tB(ujRMdG}=zdrCM!+2KIF_k)F5{iD*?vr@bzgpq8-U7fU7(MrZ$K zu)>VH<&X4Vh{?<^-L=ujJ9EQ%1ga4^S{| zq8ndN=OHtORRWF{!Fx+8Jv|p+V63V)WiZOo(h(quPDzZP%m0L6n6;jGnkH{{ zkdd;?oC*S*B5H|9lM$E`^pazYPmm;%|>o%myO%49g zY*-o0&Byb8;?PzcSnQx~XoIa#CM8j!u!XVQ1YKx<4#kssH1&mV}mUGvMLor zhZ6&*MO-A?(`;2evViVzroDZvO#x%#`%73SFa0VDpzj{d-5D}?GQ8`$vydcrB+~_< z_S0F4s5pFw-nw7KCL!4YVYMU)`G}yj?jf+EGZ}`^Ex*eK$`W97t%YBtDH@_)N(5tg zX%;SLqS~nO9-37f&!ep765I}xqx-a>*@ zD#j><8Wn;`V{Y@FPH419C}mm!$U-|VI;dkOT?dYMqu0ffo@bb>nVq}C9S4KcyC5^o z{vmc^@##Poz22KOEB&xiEgCAx{`#wf<$zp0RkaUhixpOt5w2##8o;=U^%%!-2;^0_ z6CY26A-U$TyV15mmzx;6_v69KZgf5iWi(WDPMJ?YmHf;SciZu+Q509s%>jC8u$1`4 z{b}Mzx@D3o01S+-WAQ8&Mq;gY+4H10wUcpYoOh&K+8nwN4F%75Sk4S+qR@PqR#)94 zBRXs~R;Mhi;$rr~J~9Nz!4H#k5ai83<@o7#qrx|B&Q!v+&fF=b2wpW@NysgA;CC z^N0QgsLtO1rTQCjo|_VBvmMa$Utq3t5XW-%5Seki=xn<)dn|Nw#H8Ji*1~cFWZ}j( zXNODNkAmLJj5&qD_fs1rC2=ObZL+VDf${L54|CN1sJxKOMyFMX&Z8cNYf)1-O=Y(S zX|oDZHCqT$yQvINyZq9`u0hDqhO8D(OvpjpT| zhYjk3e!CUJ`r2I%MSFBgY3Mz(A4(UU!+c{+oU1_=0lFabQ`Em?XuoAP!Pf9XYQ7g!`UJnRk5*Jh5p zolbDRHeUUiO(?2)jm%jY!> zYgoCKp2{gpQ#DnWsUq%kX~}7XG6&8k`N=Q4_}{zyo{n z?BRN_x859!LId;9JgVcT)SYc;d-S6ZfWgryW6pnBTv}OKN}vC7eRb)7&wu$T3{L@t zA;5aD;PeaYX265)#}zSF)mt~C6AYa3`>=J=?R{BmM*ZHPTvP5QCyR^!c?Vnni5^sT?LbT{4+FSkdYUVmZd~&4iWCt|MsYBdj_2ATt}ZU-z!ghd%7KG^ z9S56S`0ZF;UcO^0kD@#zjr%qoIQBvo9NKaRr1Ae;D4}2lU~sQ`dWqW zuig+jp5&s{@1C@{FKsO)dD7U5dtF)@VebmM0kGxr|DoGE9OAT=QOaLb5+$WB7XNb` zy>3o;y%dyAk>@fV_^{J&a|mJ_NGmS4Z{JQNkR<%S3%^a({lF@-|M_hprN7_%GvL5a z>gdMW|K-I+9`=TYs=*s^@Bz;Yj0=HqXU@Vk82AH z3wbg!Q}%P1%nJvD0d0Ki6lb{IJh*kxSzPY4mT#;av{qL-D`A;x3T{059A-e&B^vfy zz0&^7GxkvXGc)hXGkux>BG}MvLMU@0PT>eo@826t-VdWc&#>hA{d@O*2WLRcbo&_5 z_j(ZyuA(E!GR7lx`Iw7Y^$;>V@U$|%P27?T8QW$=P z2ZJF2y@MVEhG%tmSq5Z|;o53r@ogFi7Z~T<;P?B{8GKallHNJravmqQ$I4%w2))@{v@x_B! z^b4O7(ZV6A5Y4^TD&|v<=ehHEBDCga9FCCsuxEGb%9qveUkybowBudf8-fY>nP8fqdAqpS4yAa0w0iNTTRP<6TG9FNzDGH@}g z68I9^gl!X72y}%-R*BpSL9X({TS$*zxA=0E$lkh+kGvfnd`Eg2O6*AhJ89?&3$L;^ z#;FaexA@yOf7eSVLR^@HuNC4Stb4%k6KtQiO)wR5u^8T1XyzvztqJ?WQ6|jvAZIl{ zGGW^`KD}k{_{FBA>SZfTl37`Wd_;GT+p8_k*c^^zk9P^7{QW)1vviBJkoJ0PBWPWk zkC(au91mvCGMW?9?)iCoD zl}HE)nT(|p(|4@;=RYHdH&c#ZCJ(}o=yPQQ8MFA?zwkRXQR7k)-Wf0|`*mX`2vbqe zbR%D0a=0NQr(BpJ0YLc!9J96+PfTDVL@@2zWc*GRN#MshG==6(mapNPmX%*>GvLwj zCD(m1QP$Dmfj=;c#^>pP@7dunjoUW;%#cEcE+$t-+z`}BVxhQlxNOXj!n zq!!st(jtXCl*wTC_W9t{J?kVSe)_Y$?yWzui$un4@s&G6igZkm;*)cu_|l0{Ja|*0 z_+_U;y~o7)@aIL5L1slQ1exi?56xqLg%h24twJtQQ2cT;Yj{>!!viPE@MY#x@Dxs+ zAOR%9lmi|l>dd?*rjADqY2ZPEANcme-0r7@xa}_&-bO+a+QttvkjIk*5%5i0>jkfw zBGD8)Xsj9!8k3fXT@63Wvj(8$QNqr6g1h3yZ8d?X71DQyo5cVt-1nIp{>odm+D@&! zS8MFzqxPav-fC?1>*c3-hiCJ-CHauBiG&R#H)`dk%fWzaza-+m$Nt_@ah_k7`d05awu>ck#Jx$}1{_yCG$^k#noIBX2h?l&zYr?rH5) zUD4eDm_LE(3VQY&y-$c>KB}`y z%8?ZtVGKD?yHQtC3t?)1Fsar8VID8n599|4^s3g8=cs&CuhkY=*Y(D79kg8CxKTe= z@UMu0h~=y0y08Jl1axaJ${$gxMj>k;FKXEBQieAlk+T#z=6X{;ak+Y4uALy)E5W1O zMuAOf6trQdwh1KxUw7O5Y*HK=ZNB|nKUGK(QD{6ll*(-`B{zv%KCjm{7wRA)k<-i% z9~*u^NZt_lUR`*w`@6tWntrYeYmwFk^5^E)!vu|`hEQVHCV6$9Y}7VaDF9m!Uwd?b zOhDRd(!_^J6B{BJP+_+73rSD;z~@usX&fvm>gENtz406jVsl(()V-I^r(mAe8lM_B zgY2790~kRL4eEjpr3RHkG{qbNNznK)GuB@7(QoD63rSJkqvY+qB%5E5)HM+Aac%SK zmLa&qn%Ib9h?;L6ixT<`Xe=~7{2Y|dE%$SfN#j8@LqZBCnxIVM)9>LMrK2_~4-Qzg zwLrBSymrN#Vn3T(6s|WYySZGa zZQ9rrHKMU-Y-pAT$|vBnCBnUfY%nVL+Wk&!d7b+Bb>nNJBl&MoejAVe z5RGP2p9sSq6O$(*z>i5zqzdVpweyWXfZvvwH&Ni`tvYPL$IaVnF28JuNFNfwP*|*; zaPx?Ut+4@4r}1P3FJX@Sbg1VR(>KJjXyMw^L}#G%r~oF8WCxdhvLk6H5+#+714=^k z4YRyrr@H%zO?>*h^lV*47qtW2s(1vz7nn5v6ldZorA5s+^cx@^$AV~6rI!=~IcU3J z5PT#Y?_ZTyz_s~?NKErgc~@QpQx@xx9ad!%(ca-Uu=5E)!$Lwl3<%Vap6&!B$NN3) z=pIoJunZx;{O_=yfV(SrKNWe#Gp(TXggfL~L;Q?4LfX$N2TNJfZi<6L(377!;#XVinq4A#b@|Nq>w&KBQ;?MFE`@{3nA1D>N`TshUohv7?W2Y zHbgqnBEdM`GQy&Q7bO&j#{jhH0oT;?s3C>k$P*=bPdyIXQ&BLL zGez=rt;Ww(k`s25W(~xKqY10lc_Edu0gqra;ri4djO=iM(wB{wtgjXcbC_BK zp+G`WsoFSG6hnS5u!2eLiIiBDMvcegb=dpW;3@jdyrUJm(km zm7c2x?B1|gx9C-(*IBI}i$2!69CV1Mx$_4EXnW_j2+;1lsFQjbJ5T{w(_Wopf?D`W zv%x0PG!o|>=n&0>JU7ZM^jQt%S5goN^y_^^;B1pV4ea%+2dA*VJDYv?~Y`S&ve|OBQ zbjwkXG;C{88uk=M3Q1CO=S=GSmXfseU$;@7B%8A49k%174ml;U(RK*X!UhIPNrAOGfY}DD0<7FDMRizwZ@_NIMcTF z0r7#3*~Y@D>s`6AH>AyvrN4n=z4hQGy2hQ&8x3)bF;e(ZjfTqS2^m`bT3f9;^u$Pv zw5mB)ZTb!A5Uxfp9cMMwsQ^w!P(ZueSEk*{Cdu|nXeV+$U%ySO)6i~u2j&gJ>uD4k z`v-;v$ngO0Ae2|b9lnk+mo+#%G;*#PP`IZj94Bwy-jqSww?l?WO`!ERm#?Tj^BmJb z`(a$4!OD1=M~ebO3WIY1YX%$j3LYNc!yd!dbZ+Y})y6%mjUPqKpAz0S-~smIl?@4B zh=uxE{~(^D8PdU6QYp4+jz82Fy!vaeKysEQPoA1LP<4#Ax8g?pKzfNY`FhOC9-S&& z?HOEQQ22Abr@7A`(2&b8MjYUsmxPT`5C;0&YPdctkT2{+HlJ(SlBQkXM5}GuO-+MD zy>V%`H4OxX`(QI3tFPF7U@}sOfDXxc@<7d))^e(ee?IVPMk|>St$g7Ce%7=v4{R;S zv9+X$*B?OOHlHcLo0_&FH9umSZRA1-LVLMmi7VN<#G34U&@|IZxb!4fPZJF}U~rh& z*Teybfwt*GO|$fXo6elErW%5%-@5Zj6VJEGet1;<6?RnVvp3FmGz&$`+e% zxOQ99=C?Rvvx&#*l6DzkvuQm|JK2Vi-l&66JGEYY8thuZqVafxdak5nye{wD$V8Gz?vb zhtrL1wygQ=56Nj-wz3UTxy4o}yJ5n27ZmW(j)>b!8L-&ex;w=7rDD(%?{OCxv}(;K zba*zmP2&vs!49Oe`Q(&Ccjq@zz#7ltzX7?;dHQON4b|7pBSva5Y8B1cglk4CBEyhl zL~D`1ttN%9pu@+;IBb3tJ>PuX(}GZYxS!A9V6h4V<~ewX5&|arESAH7`A`7H6hxCy zlF>{+dja>*00jbnsByCOZ=3oRoyJr16RjdTVXMHL1fLh5l^WWt>7W|y#ErGs?fK1m z9U|BCu|bFe)z>;cPB45bF@@Mbrni1yCO_bL>WG5YhvU%=iNWnaD8XrtkQ)z$UQG>? zS=Sdfx{3E+)kBv7u+5>7Nn_xbWH1Ns8{)9A5xCt31crMM)~5!1USSI4#u?bQTib=} zNBw}P;%jeN1vjsd2FNI{=;fhDWcf|aZv5h;3G4?YV)2@&EY-uN-V!-KSk=PDJN>u? zg4N#K4j>*$BIF#EJvO)<{mzW99y0BzNizt{)8yCQaIT{9`2l(xP}E3%*h_+l2*1Yl zX9Tj_{T&8t^VtUt9s?ix8qfpwnYYNy#%aB$FHe5wkfbf;Bns46s*kUy2~_HT%KStN z#Av)U&4wnz=~pR(!(x<54F85y$kr?6)a5iDT3i5`H}>u7_BNx);N9xHZ+ z3_p{;Fiyy(;I-t6w(XMz}9Q&jEq^?+BPb8L&F9LEy47BsDIUN*+|w< z#|a={1Ev@R=5W065(ZxC0I6RGJlTA1c!K^CR#s*fUVq91DT70+!02)*mk?m^WwkB? zi)m|uoCB9Ou|HT9R@*_FL0)S*mw6a^6p-D|66cz>2FL__(1N*Ma)L`-9a+j2cbCL@Yl~ zrB8dz^d@W|vMs~$=Nov8==654bIx?Lqy8fX0x)~@{AeZ)ebTg{QfTOFU{TwHfXi9lLC{B_19=|aVtZ@S`!}A` ztA%hQ{pGRnEvr2g&If@xXgpAFX;&G3{dW@Z;Ddw{{j}Os21^jVGR#1Psa4y3zM!EM zbZ-oWS__3#%FD-Hj_2AS>*i^FD6z?!c>cx~Kpspsn*AUfxWL(1&;}Tv){nK{RDe-W zv9sNx(BSEiP2T)$W)W+H-+`aesSmC+>lstp&Oz1&yEZmgYoJjO!rOJzftp$e+iY>; zps%<#jSQof>L#ZFm+91sJ88wOO{Cz= zp$}PZKz@bwBdJ8^@~pP1*YJWO8*gmnDIGhWmqrSVcw!tveoD+6Dudt(l=Tfo>ko_) zq%K6&$MiB=FHJ9lekjxQB{SsGSkS+1(?LYn?VW0qg}k*_Tt%_@!3KgCG2m)I)@c*A zh7H(v`q|gRRJejnJ%3mxlQEh`-p}>Vs#ISdS|TI$Q~j%^E*TvB{JzlG}(}Bs5+QkWAXVQ2+ROL1DtMgb`?m>k%X^G1K zld{}UXWj@H3@UwD(}jcuKma%;14Je0N8*jVT1=sI{w4<{u%M?K)A&YCYDY4T zH|9qo`b+hG(BO>J!tno|>*cEgzJd|TZ`r z_$PZqvKHy;{IK-Bc@?IBiMJcm@MFhX5yT{5bY4;LG!}>M2lnsr*PtiBC=cdPy78rY z_{y*g^Y9c97Te!H+2D|AVgIjRZdKaInT%JJ44r*moAcpTOg&O7d-{m6hXaLs@WWbGRwq*%VaH zg$7bDhott0O2)eyXMnQkH9q|yiqAhx{0oiXNr2+JO&D& z*q+r*<-alWL8L>9HU8MXiVuV`9B>?Ogl!n#-AGUSV>$_h^dSH`h4#S(DT;?FCYIO_ zD2^T)KvISV6BG!OuQo8pniCR0&$RX03?^W-Wnzy0CpBA_)-2UA%%W}?H&Xig+MvNW z0;0vpw}ZuV_rClGWiTVgY+@iM>jrfO3ierzOC&N@wAwP zHH2aeT<8#DxC-jr+yobinvDCOe}1RJ%bUBM5@ zaQY>Sgcx)U=I)vNXnx|76s%iBpa_um&J-;CeEizN`a!xotnnt67a=L-qbsA0n}Wyz zTGbR4q|1kSACU{NusGO@U|Qn=@!WwhptxzJEa2H<#fli$@}T;>VA&9pD0nq(z)P3F zSv6F0pVl$-MK^_zE>*u-#)<$g6GP*lsuW-$By9pza%;KXQ;r#rl9*wqeF0Uj9)>(JF(I^|F!Y!V zJs9NW94%#D%@GXpi`vdXtUG&7#5}ji*oKJ1QC%m(+h-!jf7V5Z8koau);6xo3cuQ) zJ49c^6+uH3tsxUqj_R=e5dK|o5eDY=rWpca;?)kvw;nOWQ$PSluVf~5&&<4=TwK_N z;fPv*+QKll5LIOi95al>CgJ}uPRPQSn)^wBe$f-c_mU5i6&yQ5dx2ugpi~^ zb%7-puZtj=;D z$!KUUQzJEo$>Bl?I#{y;!bb%92jYLg=Yc7b=d&6xP<4iaF(pgivTkI?2)CaHU6k5p zk*Dd*0yygCeg@);v_ida>u>?o@Ef=z#@9_t;z2`tlvC0eN?0_!OOW)K*4K}W_PGQ zI9$9C(DJD`V=PLv$r>yrK^gc1_IE7VSDxF^}5ZumzK>DaVAiDK* zeyC#y{uMj-kBuI*^Q>FB*d+ zlYwaiYlFduEmRL0>I}hS^sUJ7RE(;horypPqbT(YEhOKo!hjXiZywGV1hxX4HO{_g zx`N4A6PVqXnxM`W5M{(kits0@3^m_)@LZPAo*BCj}^TSmIAp@H(keG(z1q(4!HxA z9Zs;bi<==qq_&1b9s@WSvV*c{2z+vWVrrFX*oX9BVWZc8m_Eh=*C!f`z-WN}7e*uK z++1bI-{m$%5X=M$m!%rhHb!4jX`~}x?T)#Jw$_v&mh2v@HG!^IJ;a;8FsVao(wwl{ zi)vU^j-{*~6J)vKYp5i0*!rZA4LT)+fjEJe->h*FpBbUDfT1G$@RG6qgat#z&_PVE zu8tNCGVp*Rumd%gO&pusD3;(N?)dJ!m~>ciu}b_9`J@8!*aTKaq3v(LWcX##D?ySi zsl}~FPGk=@jB5w*6f^(>77&h+p&_KQ@$&kka*Ng&%O?(uH-X1L*z2IDz~iCx=j3YR z^%H6zmWGnz6rB&~odh-X-q_n~EH8fW1+qS6rf1&cYi%D^2fThG8NSL{4qR;ydwqbB zF?DH46J?tM%sx^{kY!Cp=nOy)F{?~0ZkqDUvUOZn$2riL$<)!#`{}9n?tuRFdcEJ6 zH?~-JHp7*WAP2Do8HGzS>Ow0`hpry(Q+P68uGe2;h1`~Q6@Uwlaep(~h6A%@HmNpx zLJHSn;jkV?fQT-jVejOFk6-Hz>={I{r)NU#7w}28YP$zgv92b?=xn#vL}#kP!n|Pb z*1|&lGl-9$=Dd)Pb)0~5*u|06sYCY7QJZ*c&RlHZ$Q+&}j*|^}#R7ivsHM{Set+RN z`CBN>y2Gr^iHCEgi_*eE$((suw}&r!MfPL7e|{X5v_z@hY9B|zdsdb{6|uBly12ZP zWJ{h(4xl+;v1D-y^4P>u&Vh`xipow0*e8XOCsZMo$XV>Tdd{NWBO!|@pyGUivb@4wgLMg?d zypTMN1*vXWvOWeAG9rV&!EOyaDra7HJ8K5;PAB_T&$L`C9rA$tRM|p?OLI4IfYDhT zNsA2PmdPnN`gY`zvyB5Z4c9Gc%LYmNouubT%-mQ;Jm|HKe6(7lk~T9Jud2QSVR1fZ zG#2nPb4dw!Xh>cf9C|gS;2W{h=G*po6+o^plOlOfs$8rKcP>(N3@J;4gAX_bt2CR? z#=Lp|J`}7ZgFFAUdV;o^>>f5r{ROq=Xj&fhHlU}KZ%j1_h|{wJTrKkcv=tw}e;;6z zN(yXt-h+7}R54d7mkE*86o1d>f(Ll^ zEq|02OTU@atc@>Q*(>MSQZb?XeOSzyGsp}N5al_!Kz=`_iE-!Df_!orOzGEOAz8Q- z#=V&<{q>hK;-%S6xpbgV;}ZUGDq~45Aw30``3ClQ_MjS`Xghm4H&^PsJ$;8-4)7(_ zOX;(|9OMZ+X4zLs%{b`Ho{fwAojWCH#lBS5;dM@WFfJjLaEW7ymyeY0m&~OQdUEV6 z@K~cZg!z+SWiiUElzfEVIfBSR!T_Gf^y`{A?-eeVvm`Yg^AkDP5RhD_420x>UXOZ? z$g@Eyuu^ko2^Hic%`9z5PAyfH<9~&l<&r%S7Z=(2IhD}I-ChS6N>{EFCKNaXI8&_D zZ1r155w8l%6il5V3=oSBx?>i=H0%MprH9?asQm?pjapbiI}*n5j-Bu@VgR@ONGaW3 zX$6le#!YAzu(Fcvn5GIn)cD8OL8Qh(72PBH$iy#)zF|NeXY7A0=?TlF^WzBK2q4-v zG86SI;bK*@rsN^Wmth*XmXn`lGH`J@oH^nd`0nG>zu-OyIhEfS6&AODP84i{z)j&X zKOeN6SRWSxpR}%^T7t`Fo`PEW zR}=`3)i@Kf|CgcVWx2G3bMq6yXKt5kvKDwpa(}a+IvIpn=3RTdq`h=ESFB85`c_0h zvwz|ZJxN~>;LjiCW@#hleih(T8jiVxG>1<`HJ3|b>r>ZO?c*@aR)2q{T#_rNJllh# zl>y!Q3t6s%ipYZAs$9acylYSs)k(r~>cixG?Lo2qng99kecWIjNUdY3Bgutt2AEpZ zLhp*b#j;N^y-gV2e`53rhkt)Jnq>Iw&VN_y=ZQtOiKY1x?&QmD=M~@zlmezqt7nr` zOb)O|CJ!x13Pd5LZnkUBk$D-jcRmB4K*2qB?il=8c*$V=OlUaBdV^g1KNd}G01yEYz50MbZ*zTo199?|773J3|p^$EPPXCGGz zPEvr$fTR%uN}lF^07%Pef$E8fP5%LPB%r;H0q$|a&mvLxFI9lR1&kF#vsS7s1v)5( zpOz4;@okXMi|P09FL+}cx+ddU<1wy}&yDOx78uXYT zos~j__#4oH{^5c^PYf)_Omo>DrL=r{bTzkPOi5F7b4IFB1jm~+07MBQvh#K^G{<8p zKZOY}*Ia;uzF#ZXQ|!;csu{NPf(Z;YkrZY$#Ve9m(Uhzz;(6CX}g~U%2P6sG5U8=Sxxz$yw!nB=mIMkCcSrJxn?;C{HnDvXqGoUx-u*05l)a zQt)}_3EU!k^GQx6tVlXM5FJr9W|i^&HN6DoT0xP?_=y%Oey)Dt$mc}L3C8{fy^T#w zoYORZ8jHI|>Jp}0@T!<|O!vd_&hPhHqUyX&W=*l+BOD|c(kM1b`U3*3Xv!;uO|D%t z)Tr{#2T${D)A?OYlM8Df{Oo)ltE6!OS9tMFRXL7pZ)Sx_Q*sGbD`Uly6xV>PH!>E{ z>8;6+u^gV&OQ{enAyhO+4Lq$u9u8_J=*(0NR)vOW0A@l)%VbARn~>HI#RRB$>VdQ= zwc~0SPF4xl9BPE%qAGBoO{^O2F!~@V`Rb70^jtN#S~F6z4-`@oODick7Syp!<6lC$NCF(=6B+e!2tkKL9&KT65 z>{x2>jg&I?ZlPRZu#$N-YJkjgHP`G#$-A1%khF9eA{C+`l_fWLO{$Nk;1^S=y9Qma zSxZrm*zqr&nOA}VPve?jyM~T(a6&RrF)%r&H=j{N(ufmUAe~Gw8jz|bU{y|oHLmv% zgV=|Iqe*S192m4H-f!Op(20bbvv}V{hQ&K2eBVtXrVCnE8Wl^zQpj-DU|QwW#8)>DgEgYzER%hKF3OZ|4+pqe z?@;f7vr|1TTObyqSIUmD3jFUVTvPJ0YD__feWAS~egApV2gf5=}{+xpW;b|hT!icNfH$brHR9JURQ~6RIy-z9w?<6 zFxIA9H$6u{4XdWI?uMPtFXO5eMQ}~fbYy<(uG^fhtIiILh!+2@$nq3w)~CE8I{ze_ zVjLFVs^luVt?`n+hpmICw`OFhk5Pvt%w{JtzNxE&C%eh3B1_xw;(EB- z*+)bALA`8#LX*Ydn3-D2xxJHhcCKpgWJQ-7hJ#gnZ2zG1t5l_7RjSN!d{`n)T=;M8 zGeo~gL(aCD_tM)xA82o%wIqQ97P=hLXkHQ zg}ic$C^BF89I`Y78&x**UM?+L@ky?=%{WSg1Sq^3F%QP_s)fP(|Lm=|MNs5g#9T19 zEf~1nlc1cP=7P9oLD-u>xAmgUB4j!savq=?ixv>IY61|p8gs$zVAX}CzQf4UCb`tN z5GiO#oD1y6ibX5A2)GCeu8qxW+44;b!rdHP1OZn*5AzxB(C{v-$+8vyo;@i8y57CY%c$9ITLHRq__S~Fe;5ouKKRH)=jnmjmn>;=Z`lY z=e2NQ;nos5Mg+L3f1VBEsG~PA7dP$GI8b2!6+p$~K;1B);$f>l;__u&3_BbZW`Cu#JLobf)gjTVNRqx2!Yd%YGgESHR54!QuorVG%8c@;Zb}%UEK^Qm;ts- zReAA}oS`_eWr?WT>czX!mx3%wHVzHO=S%XMu{U?LNcUx_F{Tn0=3kKiZB#X&-W9|) zw2*#A*am?Pr5|tT?CFFeK|sTYQ~1Ko$w$@EarbZn*$7f8oFYe}D^t=VDe(6tNUDt@ z{1ckzJe%oTbp;j|b8$K`$t~|mz+`>MFyD=?ClJQv`PcaZ4Ge7iI{9-Luc*eHglfK8tA z(Z|ZGyq@L?te&FnK{Lb7T3xE+R{v=1zA73mc4AzO&Z+%0&KRqgX79-ByEbqvy^V&U zb!h}iNdPv7AE=hu3%5c5xeAvEP<{OVOlo+G67NdC*a@NxWO-k}Hn!~mD^EXWTE#a3 z?Q#=@F8xt7j6oX3EK|R?WdxXJqv(V&j81#-&KwW~6yr!1at-ZTg9_=FK{HJe?n=PA zY*|!;RccEmY<1PK6!yCo5Fs6cPcxV;=iex54co`h5$3gHAVpKtcly|Xe;+C!)UY|Y z-ciRkJT3rqa&rsP!UQB%v?>jXsD#f@*uwag}2Y~|}7^^I`0^&E**yIuS8Cm)FJH?)w&Jf>q|30ZF39q>G#ELhlV+VP!J zJg1Pi(0UY2z8Jw+hed7ox~B(&*095w-zsLh_&s}#vT`lUn|~V-|2LIv$kIiT$@oV} zCbeKfXBhTWLoQj&{+-2K#k33F zQfo%pJo|Sgk~;f08l&eSWu)D1p5+I&*bqnTK9*o(gBZIK)4lzzso~8T{cw7m3_e9q zxXE{RDc?T)T|~mhv^mT06RA-7o0GxF0^@W)oC=(VBjB86Db)VInelAvIshzaP{9T}_1E5q8=oy~ew*d*+&Phl zLTVR?EosmhyE2}6z2LdoS5k=cG!j474`h9bvgYjTW(NB=j3{=I4$Q}E+2AODfxiW1 z#9%Fvhr%|RtbL3)3-e6TW3lF|D}Q;sA8wnIXCTH*0i>Qcoq&B?7HM+t&_IfDV)C2y;Fo37)+p<)POnIg0B>H04@;T!A;1`<|82O@R{ zSZm8Ooe*U*Yc(cC7V}ny<%n${hT|1M31M7ujpsq-yi z*F0BC!=tuoDVk$P0#<8}i@qf0cYkKqG_%sJDAc+ClHJt4Oz8{uBRHU8f94wdokH90 zHF+)7;M_7l#bGnpPwcz3Wln-klr)jwT#P9^T9C1Atg7HPkUYnN87I*C2h;MKeBT_| z&r_klrRQEE4H&ll?5M|E99>Lf7yt;8x<%l(;*CtP_$8dK~X6&Z)cBZSxxI7BEZWhA-m?i|Et$a?1xL*zFvjaW% z-2l@OF@%ZxM~sHio$xJ;w>EK_P;%NAm0`16Mxg#_ zGE%mlc>au3T8(|Q*oWJ{1fHF3&eRi})93q8f*;PV4x@7xGQa0-+$ud2lEBOWlw$y= z@IB-tw4%xbk8P@H;veN^*tvsbN7p2IOS9d>{aYREiz2#cKd0dnpYln%w}b=7G8W`9 z3te!$L;ge#dH)R){B8;_7{W~$=CCfep2^2o)d%NR6a+O)-iZ#iiC$^;WDcun_J;U; zw^s28jvuaB#k@*9`oEu6!P;`sIqfTt&v}E6A#eJc3*D!gw`TB~d7+iQurMhI+mMYD zH1j$G1H`R3DnPI}ZV;8(r*AQd(`rDj+Oy*7Szngy7R-=%I`7j&?fVp!PoqiStrGdt z%hs(4adW#2zAg;gP9gQ4EnX}6{La+oY}XZ+AK3n47nuH?QX*B`oyyX#!a`7*1xJ9t1SQ_)M=x|uaKUt+Sh17hPRE~2& zahKkVonCOR z925HQie_em;nOmQ%N)MvZPl1=$~0#(fKA3`?MbbkFqHRkD+m`^yTtRilq9 zkn4yCJvuvya1&vvHax;pKMqdV(dax+j>-!YVYQMRDmA^lz;@wsDqF5VI8f={X%D-? zVy-A)oazu~*YXB7+=mjE&fzEeEn*Y-N15U~o;2*MSz<4%BZ9@PJ6NBPHQp8m>j8-D zhDDnJ`|0prs=`>@a6eZJ&vC0?q&NB44UC@MlxqoC8Sd)A%!B~6vXnm&K@3>?ysdtI zp4eI(2q+hiOnAUH#c%@Cy9w1o9?c3`*pP~PLTyOsnomnw2@k$$nMC0W7*DLg{3p>6 zlffrkxG9o1$UTLMnUx1Z0&pbBKgx@dumJxkC*oY7NF|?M%mx(nHcfLdHO{3*6`%sP ztQKxGWkLQae8;BlL=Le~E|>TsWzBLUlg!6Isd-Jm3N4LfbZ*(25xo!S%#Cu4EjdM~ zPf)=}VA7_UI%2`8qJOrAT%x%t3{NDi{N2N3K(Tf~{IKWx+?S<1Tf^EZN7JvsW{Jrw zoh6rl10(Hvx z3cJx4*?)@*X|XRb?I|?7BVG#A>PLgK;GIm}V*qm4{oIV?0;#dPAt$((-?B)uP^hQm z#+B_@jwlACrMSS>aDh%qXrknac-8~fKl>6MazSVroKuHx>`LVH_9GM+LRFTjw-B){ zS2Ko_4dM4~`M9D1OpITyY02Rwn>?*a`B&f6Q8?vCBK$P{alYo54ah_wqgBO`Q)QTO zZ(BS@WzuT$Q1zg%+fff^NjQDWS~(6`^!$cEE$tZ=eC4iP)0>E)sN~Y~BXI$H$lu45Tl^w5SOPll6iK7>(Lj*~SS8U~T7-yJM8Riva zGI6Ob3I-t|5!HVA2VLY6${u?0<7gvpzw>!fsft6wu-t=2l0lBgw!pjy3xftzEDbGl z`yHW?^(~S$FiKMEraEf#?mr%Yl6g@)A!cqB%5_7M24Rrk$dQ{h*dI0_?-X|6N_}W3 zG~q81AxF1BeEPTssg-w6A~geVF#7bhNm8sKPcN%eD&}aJ4j_{Ovp=MtFZDCBpjtV? z5Wi^kl#!Nf$e}>PN2PlO?et_1jmw~tfmduT4Nf>9cs!IG-XyWSG;@XsBY{W!LP()I zY-8_p-aa{!%)UEN{5kw#Vb;J~y#>yZDXTT$K2m8Cbg@5I`cG+? z{T@#?GHML*Nhc6bfmd>bisfxX`(s3l`3jrMml=^@q8mUf0=R~n4+Ruq0aFEYW!la6 z#kE}czAm%cKM!P9rUIBDcdJhPD-MD{yhVdx}1T5U%|&VA7Ia+Y;tou6|sRu?dH+!po%8zaRT@)LqwMZ|Cej z?$|AvNk03wkD2m;$ItY8!G&QTBAsA5TWF7*(X**LqqgE11*OMN3^PxS`(YoM)5*c~c z-0M2q!CG>7L|oWdObQLZpt(8J8LyIPLcTVNw$rf(RDoWV%M%|T25Wwkb^cj{E_4DJ zb?9^tR4!-$Gn$_6qR1XIj~O(`SE2SwM(5P8Dehx)r(_oQm^;-Nhm97~?XA+KjjhC* zzBRJ5FlVU2YzqG}!jwrEN4+aHZ*sFjB*R~b4{SVc!ZGi+jv`K_`V^Ewi!Nv0i%wdn z$2fTd(iOV=UM722Ch|-h-IGX30-UObgI-iCG?>T3eOfq=ZdkPot1;Ja6(>K-cGNvO zjhn2@PC zEFmV7*y6XqUWAqtZSu1@&Q&S_f`#~4xYOa1&)(;<+C$OE&!M~xFe0aDB6+R@D)&pv zeQ-RQvpzWMcQ6`g^t#Z5XULh;d>O#t6|Si}cTZ@T%L1kBO)STL543 zjXy3+2`=$rqmVoOc<{0tozE7G69Re95e)X)GE+54CP;Z!JUBG$gKvnH8R{V#2(S$M zGrI8=6La|kl0acIFfvjT;7?9Y)K?X*4CEYP3Sj5ZM%)b0 z;`=#EvrV6!J?F@qVHEq~*p_pGpR(jR7%SI&r;+!Db-C}gODim%=^%6WtWEA0W$M$r zo1VPopXvI8d+YU$dzU-Ezy(veh0IE-EKMhjCZ`@nCX(X>3LSd`Yf%P$n2plI?qSsa zfAu>p5fU#j5!4&Z*fXNC6mJvhJ0o> zq0$2iEbQ;U+TTB4s79Zo_N?}->8NWmmEgaZAbaR#lWGb%hfc;U>3enF5u!^&L{d2T zaa1Jg`KHN0_CYy^+m2m)0yvQ48RIX{9VaUxb8^WaFet+ujHS?h%3WDLnt6Phz5h$~ zH)Yw}lsv;^kxv;JLUH%)ceCzW`4sxsQ!)d~3_B3lGT#?9o&D~w%%w&G#ES0!S zDL>aOdp5%Juci~30(;;m}%N?Hda%OfjP<0X6) zf9XMCFG@JMdwAFzoKxS9yPZzdr$soHfi_NADwobV#Nc^Lmyqpzpq#dDK_RYYOT<;3 z&W=b{LZ>@I?}xVs6Jw0{lVq&OZo@APQ{82I-iy&GR)#f>BN~wX8F94sBfyf)#vM{eLk>P0QxK{5LFr(sk!~FviJ*kvrvtcrdn7Rg=Lah9>t);oeo4H92V7?*+Xs zP(*~Coli(z_m(b^Z7JR%|9 zzmG=ELFWukKl^TYwXlF-1Oq|F)}YP0^N*4QmQc>MVJ<})mAlvJ3g#5t*+boK-!Ou%oS&~ zWEFC{>Omr0h10@J)VW1rmYZJWO0XEX!~+O^>>hFVh{1B7au7{Z+aZ(?Q;vBWn}G%z@3>PdZuwKWA zynZL?IUH1JvxIxlYw4N!rux26tY_kPc-VqK<8f4%Ywublt z5b)r50{`I&LP;1SpCF^s;NS!LN8CN;q*0-a-oIByCNG?rR!@Md$!5{bgYHRa9u&_1 zrRBl{mlQcYJAhyR{A} zT|{kg$J%ct2!~j*(jol6(ls$l*N`QXfipN>o=RtM;^n(mT?j4Os686-Js|ZF7CGc) zY=MWWJ>vy(#Nu4ur?Yr+5Di%f#!fmC4YEp#86|ir*6&0~mkPm?0aI8PI|dA0O;f9` zo4cFEsC;pGPkU=RzS#a}dMiP9Ed;AgFrB+;2Iq~XYj$mL2gvWorVaZu_aHMSmu-c2 zLy?TeB?b%HX)y0YI zCT6Dfdih_Rc3^@h6hPIKjb<>rcP1s>%#GzO5Z1th)@oY^5OsLDAGwVT%`BZCM|}+3 zG?XaajB)t7y-rp0xJD$eQ+4{wg-AlvUNe~^6=BB1#0x}=0|~BZJ*qEKT*%|#q-rzs zc6@DST`>LkynBKzAMtDnBwROQ<)M-SVWzh<1G-jeb1IKCiVFqC5yatm#kQsb2}*#9 z@IkDGP(h8m5~N&OT3l39g#@9Gd}y5LC3QFv9^0Z*olubwShDhyI2(KTR@$c7#16a@ zX-5Ug@;fh!SP#<0OOs+I>gY*IQ3d6@qth0{e~0UgKap1%`a(kR>av8<$ol?_6^&XXUaQV)< zLP9udgiQ;b=rb0$z>K4Avpt#(p!18oSORKSFDoM~67ub}3L#+R2QdsbPM)0%m<|Hf zUz4s=l}tMTV|7;0M9T@j3> zu0ZnmVbe?B1~&m0+L#d9-38F+p3oU|Bk8hU$n(}gFWQda7Z0DvAYIsSED0m$QoN<$ z0RSb#I166EHT9jUdk-4cmGIsQ*n8ln_5Wu<;?t3HBGOssE+9Y9CJ?7vf_jwL;+M<(v^$O+pqQKbEj9kbI_6vjQcbT_zMOG*!2OfjGw};kAjiA`vce zFKX%PXt7soI4C&EGK3rA?$Br3bf8`C~zSV62fezaAkjHKFPL5Cw1=93DI2v=6*uLvchj9V6=Y0 zCRt&Hcoa)M4xqY{y7+?y;8egA>)7I&nk;<^RlgYDqukNq!Vcw;hbEd6G#>htk)B#7gaGbZdL-h zDMAxRls->GLyT*N@e=V9G!(BSrtw_ExkSU(m%Gxfsfp1ZnZAp@QYGWNeDDtkN2USa z+o5JK2k1>%d@d{zm(uzjKnLLrdm@Jm-0a7uV_GXEc-annzn`hWa6m{dm0&W6cgwBG z**bdMhXS8lzXu{|wX(Sx1e)~|%^V(+<=h;LDR?F4+E~TIyr`QawRr$XYY|l0FrB<1 zu-x3fXW|w#A-A8d1s`%SgEtDl^jB$?SerIUbHarME-T)F;f7*B2u??Y(3(Zz0l4xR@!sP~rwdAj z%(SIw;Z1|5-cZ395mSl?L2?3#7^v$BF{zx6lVQ5IYA}4EE2g+yFfZNF054Ni5yZ4K zw*?@B&uXl(K#EltBSdCxpsOfM?jzlclyco)I;X4!471sBm&+=6d5iz>!swI{5M=P! zZl~`wx;i*YfWNu`}R_`AlZA8Q{SPMpl0XQ{Tue);!FrQ{IY37(ut@V*7dXA=S8sVUZt9 z*UDuR2vmW&!nf8qrQc+N@M2tRPj-X|Snq!};vTFZ0<5y^Hme5mDvdOA=R!!h>wB%k z2sR=O2EN}fiCSPn@5qKcoqnWV%U#5F!4(!}+dF_oF8%9%?d&~Rs;XvK5W-8itzqhi zh?f~Wt5v%w3$BVdDgF>nf_2g$0hlz=%tRm(#!wtbfX@fdqSGFyj}Vm`9BFV^?10zc z%F;Vqogo2sCoIB~yh;hI$HY=Uou2>#Q`Ge~#E>^|(5I%OXS|t_ilUi&aMyr4{-BoR z0$~u_E&-EGL3W1^WJj%_@B&3B2;WWMDcWbQpH4R^G|5hktxf*6Hoaz})M?fpyyziL49$u7J7WW(6yC6WI=wX9O;u-yV0l%j?5cJ95dv+@ z<#@Yq6(+F%LK^#KvNJM`#rUSlVe+|n?*;t{c`eyElue5!JK1kQ3 z1@_hL6STURpwE?vX+%@fVF62rZTm}sfcOd*EV4X$f?abqppYYIxEtuBKoiS1T(9sJ z3D(Jfr=wM#bfr=uRcHr^Y>h!DLhB3!&oc%CR0ypsEiD_5R>h4sr8vJBnYpvjW?f!2 zS?#gmATOu`LZ)X4ve1ncQ%gsZ)97R2h{b35rpYN6kEbaJr(~Fr z&;s>tNlzDmA+nGy3AtK>xcS&dqqfa<-7+RQG}7d>eg@aSwc}xLoLn?2EemkPwrC8R zjf$i1ip4XR0FBC_g}Z7wS0EFOifj6cqm;S)G|hlUrRTufyxv{2KB*cNCu_GX24iHc zQE{TSYDKd^)EbqcMdH?VBL!x=kPi5B#IsQmt0#hKmCw*)Oc^I_D;6bBF5TIfn~xt@ zd}!V)f4VzuS>3|IttErxpJ#(O>g>o-X(6dTrHfeN78i-rMQ)f{bnQ8o`H^{}u%3?= z(N!yK9C)Ucp;0-r`EJ>KR*QFY^M47Dxn)I@XZ42&IQ3bv>Jyw38fHEZpn{OL43T~U zmUnT8>#O5#9Es%#3%^ShzJA@Zp$)oV#cwoJ&WFW5r;6ROoL4n(K%ZZm5@|huol$fr zA~Hy_G!-HFTzYnPfCWi5(N;5_&Yw%ODg16)nuy8UJ?O}>x9K*`rApnf)xmfam5EYi zoWbD|Sq?9Y3POBRMV%C3%fldzTcc7)^XM~pg^dMIxI(GcN85&0p3=nMJMJFF83tJD z3d!H6uv&6*nnmmXrSjgiCJf`o0xV8&Z16Y)n#CrW+g*LKG{>0aY~HM$#V(PZK6dr- zXn|JGgn5(41xS<#|-% z_xdIxTddG%p7pz*nO*HpC~o`vsg_*7ZrP|k-u7VF{mN~dy*)a4Vd*cH`A(tCB`smL z#Z(B6LXOv}e_<>|q1a zW~$J#^`{E2>AxD4seQ}38ApXe)2Muq29yBDo;^L1P~gH`#OaI5=>tSUcLn7M5B88Fii)t&9`|2&smQ*VZe98HaGd;as5`GCs45v zW8t=Z=+Gw}`IN~xSr>0-#}LMty~E}2cQxLora=R;dOkQ?>SgdFwi1Xpvodm?rMotY zDj8ZE0r?hy-j#ka3;Q#mNNXh0U(8)u!sODc&?X7wUzpEvh=s@mi4zH(MUtl>wZ?Ho+Gq{z#VZ$Ql#vq1FTf zmvHL%#+~D@khzqis)Y#49pj(4Cy1pp!ftBGP|5W#b`Ao;`lBNo;V@H{&cwRlcGxam z*H*`T5v;vlHKdzq@K<)*Ji(e57qChN1TF!Ww5U|Kn-RXwWxc&1o4HH3vb` zGXLW!{f#)=nWuj^-Wj{n>UU3ZqX@@$a9pC28CTQNB(uS}T*>tM$Yswv@SHU$vD{y) ztDpVD)e`m2%;LM{P*-pQ>^98MfSb;rh&hS=d0oAC0-{s`zp!lKmAAws!B8Tk8MzorUUF`(zey*c?_=cQ`squZea3 zUrGcrJt9{8dW&~cxq}6~sdu2gzfzC1F|>9!dU!1~uY&crg%;~-E-AcijV@j!lu;Q8 z9MmA@VO>X6Q?pef5C=o{AOmkH=4w_P$-?IHKQpBDsx}36tw~U+lOe}jNs$k08n>M; z1Z|S`=xs?R$1FN4kxnV@P15IDt+1$H(sQh?P`9UphO>52VS<2um4ZaM)1er98Oh*4+SlvS6Kv$5`8TX{73 z`LgA$ElZ1(8eF$PSTDAI`z~1hIe8sK8YHGALP#mj)Gf zW#V{-(ecFbw9Z4a;x{E&iKZll0*5Fwcgb=M)&QIgvMy+;yU zXR=4GfZkpXodEHpD{goq6wZvP9g!_{LdVZ_fA;*VV0`Ygs_ZiX8@TJDwDaB;+;O`&?Inx?{_x?fM#bjp1F(wt@ zzLJ^n<%kNKsl?SXp8ZY+C)iN6>E(pbrbLZ%+J0gvZovKKPU&od_k!wDKxrcBZ@70ZgVifb>c z*VgO6e|%6oU<$?yS6xVj0ofySzh2Gk(2)I<8l#a#+qzf=(^Rr)HZ7Kxlh9t7oYq_( zzW{0PwAYPGF$VTB>cd4R9Xa%iTi4HFaIFO(Yx$d3Zg_l53`2E9NH``K)8p3efIgfX z#t~E~WtUEBB9}(4D@6F`hU$**=f_=~%FaB&`bzPM^Q2K2dt! zRxv+MENne2>gu8{nE5@yHdzmEn;Ozj4@uLb(E@==XpyuZEHK=`mj01JlZs@o{Z>H& zBc9;UyTR~;v&CjTzQqbBs*~_v8xw=e9poGHffrr z1w5-sW~K{#!+?OvVuOG+;2RdV@_MU8o>Hqv+!YRQlPsgEVbnf2Ff;cqsOs`vLIOAG zJwZe$hjP@PX$u`u`R%QA5@u)DANUh-sgUfC7Y=Qibe!@5mEAQbTj1^o$dt9s&F+YY zy0-eb`asg)2_1GnH?g$?>i5lEt?$AM)^HPzY^VBi%Fv?`Y%537$V|K#u(>+Lned6~mZxmfsoK!jA{g4a8WqwLQW{IHb zlWz!jZlh_fJ9vAXyk@8u21~|M5UV4ySF2y?Ztr|ze$%bqek&=AnEteu07IWCiEGDV z1>)ue*9lt^R!HdeaI_pQ*cM!2(lT2KE@;(dtcW3 zCp}5Cg$%=7J5)Y%#-@J1q~_P_8*DZIe|y*7+cXly`6!kTbe!abq)7`zsyI980lMR% zQb36CN7}e;Xkz!`nNvA%K+}$Q;eu&#pj|l^Su%9GEf+2h>r^ zy68DiefUSlTIJdcRmfkIlm3SGEAEZMz~*|V9fDq92dJi)+yZ5W@N&&?_lS&6j`2#N zV%Ywx;$PvxIwYjXIs%Rs3+;`fTjDi{(Fwb@BJ#*p5gXkSBPmOeq#L)*#F_3Y0Mg6g zumP^DO-zM1csNhC`q=X<*b{lvTuMQhS!I{{63^1f$>{>CW-SzirpFB(DdUWJ9X3uJ zOC_jN%Jl3&BL>3;SrxTfNn?4D;fm)FfBEDgAXO4MZ5ijRcDL)~S=wpHOb5EDRtveF zb_aY0#Ng`-2;m&DLqZS@I91rmEWNj#r+JV_xi|pzQ$0pDMzw?K$mGXw3PU zJg;hknR}dm$ami{QSYmJ+)0+Da~)|^9>cLMIa_O*AA3{gP((mJ z_mlDBln^qYHo)X^dX@=Baw))u9Oc*N2+jR&lCJKHm`AjFLV>@md9yk|G&^9B2giY}K=*Q+7GvD7gly{dLfYyp{?wbh-lD|Rf)4oMtB zOmr2TiVeqbuM%Mzu^tD zp~jttLUW>3lH}Ojp2dyAe^L0RvVGdjOsD4A78F>b@{u)^qH6^bUh5wXR^-ZRYFrKpLIBH}sA*Kh&1_LQxZs9^F!V*7Ed zP_r+qBIY1x@X=}-+H3sflHIBc9yF~y#281IL5c(N5-)}HfsoaSLakuZIyV$2DLvhXghs3Ov=mYokH&f`GZ<@nkF$~4QFo=}l*sW5C zE=irtY2oePs5nlO$*avUtZfo|TDZ{Mm|Z)@E^#kC9?G)>uH=>1$g6xM7iVbXD_#r0 z=M+6v%J54lU@%=m$T@AL#A~=bH3iuJjFV5X8)_wPU$0&r?Cs;ogHxLiJi*^w6koz9oaN)?G;Kg6N954~+*hK*FmYZ^Py3Ed~xmNfo3X6O>KT7xWd=d7-@bb>> z-!DS}pQmP%ta(%vw6Olb9w5;DPPZG}!GHW!|F=31w;l%VPP@Caz0=w1bc0sA+uGhj zxgUtbMo>$vo^znKvA_*8s-3%GwVz$=BBb}SalQCE8GXN}uauuT^#lE!@y`+cJd*r) zl0^Nu|2c_vlK5#Hy^YV4GfMh5nI_RmpVHDe=A=GS&IXhs4ZV%q$&$)$CI2N+?&NUe zD{d@L;+PBdQD(_yP%Igu^$w&=swfkmB0>+USia`vi^cw{fq zY?>oN+3#?{KANV%3*^z`ApJagw+!BlvZ73zBRYzoluQtT4o%O3cj@<(@*bq&n)qJ#_&Zr_nXd?A^G@DGn_JWe0oTtj? zPD{(;oU>sR(pKvpmpRP85Ku5bS!+p8Y9NWTj2gRT>X!sUQ{{tnhO3;9#$*e@MUJLH zuvDK&2^G93m_kFx9VdZEB=x0+1WI*aBs9=*@kYbc2E437L9Nca4u^;<)z1&}>Dbg> zC%-5{HBe=A1zt%7ki;E!?x;amGs=C8O zcS8UhCYcH`0c=>-lWfdH&fEqQnZcoXyHWYSb_u>!!GE?Ub=&?e1%5pW{0{>*7ux{d F0RU$?KC=J- literal 30592 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 -GH%WRxqRFmT4k`4KK;*d3IBT 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 ffp0FsH#+%`)}(Igzu~~o$ASL09Qz6n;& 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 S{|(wsEbwH2;_&=0^M3$sXKPjf delta 29827 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 ZUJGcx#86ru|3Ww^V!rrrRo?$e{y+K?P?i7y diff --git a/dist/dist-min/react-console.min.js b/dist/dist-min/react-console.min.js index 70f0766..0b89b95 100644 --- a/dist/dist-min/react-console.min.js +++ b/dist/dist-min/react-console.min.js @@ -1,2 +1,2 @@ -var Console=function(t){function e(r){if(o[r])return o[r].exports;var s=o[r]={exports:{},id:r,loaded:!1};return t[r].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var o={};return e.m=t,e.c=o,e.p="",e(0)}([function(t,e,o){"use strict";var r=this&&this.__extends||function(t,e){function o(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)},s=o(2);o(1);var n=function(t){function e(){t.apply(this,arguments),this.child={},this.updateSemaphore=0}return r(e,t),e.prototype.componentDidMount=function(){this.idle()},e.prototype.componentDidUpdate=function(){this.idle()},e.prototype.idle=function(){var t=this;this.child.cursor&&(0==this.updateSemaphore&&(this.child.cursor.className="react-console-cursor"),this.updateSemaphore++,window.setTimeout(function(){t.updateSemaphore--,0==t.updateSemaphore&&t.child.cursor&&(t.child.cursor.className="react-console-cursor react-console-cursor-idle")},1e3))},e.prototype.renderValue=function(){var t=this;return this.props.point<0?[this.props.value]:this.props.point==this.props.value.length?[this.props.value,s.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),s.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"},this.props.value.substring(this.props.point,this.props.point+1)),this.props.value.substring(this.props.point+1)]},e.prototype.render=function(){var t=this.props.label;if(this.props.argument){var e=t.lastIndexOf("\n");t=e>=0?t.substring(0,e+1):""}return s.createElement("div",{className:"react-console-prompt-box"},s.createElement("span",{className:"react-console-prompt-label"},t),s.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),s.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(s.Component),a=function(t){return t.headers?s.createElement("thead",null,s.createElement("tr",null,t.headers.map(function(t){return s.createElement("th",{scope:"col",key:t},t)}))):null},l=function(t){if(t.isTable){var e=t.value[0];return s.createElement("div",{className:"react-console-message react-console-table"+(t.type?" react-console-message-"+t.type:"")},s.createElement("table",null,s.createElement(a,{headers:e.headers}),s.createElement("tbody",null,e.rows&&e.rows.map(function(t,e){return s.createElement("tr",{key:e},t.map(function(t,e){return"string"==typeof t?s.createElement("td",{key:e},t):"object"==typeof t&&"link"===t.type?s.createElement("td",{key:e},s.createElement("a",{href:t.href,target:t.target?t.target:""},t.text)):s.createElement("td",{key:e},JSON.stringify(t))}))}))))}return s.createElement("div",{className:"react-console-message"+(t.type?" react-console-message-"+t.type:"")},t.value.map(function(t,e){return"string"==typeof t?s.createElement("div",{key:e},t):"object"==typeof t&&"link"===t.type?s.createElement("div",{key:e},s.createElement("a",{href:t.href,target:t.target?t.target:""},t.text)):s.createElement("div",{key:e},JSON.stringify(t))}))};l.defaultProps={type:null,value:[],isTable:!1};var i=function(t){function e(e){var o=this;t.call(this,e),this.child={},this.setBusy=function(){o.setState({acceptInput:!1})},this.updateLastLog=function(){for(var t=[],e=0;e0?r[o.state.log.length-1].message.length-1:0;r[o.state.log.length-1].message[s]={value:t},o.setState({log:r},o.scrollIfBottom())},this.log=function(){for(var t=[],e=0;e0&&o.setState({point:o.movePoint(-1),promptText:o.state.promptText.substring(0,o.state.point-1)+o.state.promptText.substring(o.state.point),argument:null,lastCommand:0},o.scrollToBottom)},this.killLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText.substring(o.state.point)),o.setState({promptText:o.state.promptText.substring(0,o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]:t.unshift(o.state.promptText.substring(0,o.state.point)),o.setState({point:0,promptText:o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWholeLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText),o.setState({point:0,promptText:"",kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point,o.nextWord()):t.unshift(o.state.promptText.substring(o.state.point,o.nextWord())),o.setState({promptText:o.state.promptText.substring(0,o.state.point)+o.state.promptText.substring(o.nextWord()),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(o.previousWord(),o.state.point)+t[0]:t.unshift(o.state.promptText.substring(o.previousWord(),o.state.point)),o.setState({point:o.previousWord(),promptText:o.state.promptText.substring(0,o.previousWord())+o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.yank=function(){o.setState(Object.assign(o.consoleInsert(o.state.kill[o.state.killn]),{lastCommand:3}),o.scrollToBottom)},this.yankPop=function(){if(3==o.state.lastCommand){var t=o.rotateRing(1,o.state.killn,o.state.kill.length);o.setState(Object.assign(o.consoleInsert(o.state.kill[t],o.state.kill[o.state.killn].length),{killn:t,lastCommand:3}),o.scrollToBottom)}},this.complete=function(){if(o.props.complete){for(var t=o.state.promptText.split(" "),e=0,r=t[0].length;r1){var l=o.state.log;l.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[s.join("\t")]}]}),o.setState({currLabel:o.nextLabel(),log:l,argument:null,lastCommand:0},o.scrollToBottom)}}},this.prefixMeta=function(){1==o.state.lastCommand&&o.setState({argument:null,lastCommand:0})},this.cancelCommand=function(){if(o.state.acceptInput){o.child.typer.value="";var t=o.state.log;t.push({label:o.state.currLabel,command:o.state.promptText,message:[]}),o.setState({typer:"",point:0,promptText:"",restoreText:"",log:t,historyn:0,argument:null,lastCommand:0},o.scrollToBottom)}else o.props.cancel()},this.textInsert=function(t,e,o,r){return void 0===o&&(o=0),void 0===r&&(r=e.length),e.substring(0,r-o)+t+e.substring(r)},this.consoleInsert=function(t,e){void 0===e&&(e=0);var r=o.textInsert(t,o.state.promptText,e,o.state.point);return{point:o.movePoint(t.length-e,t.length-e+o.state.promptText.length),promptText:r,restoreText:r,argument:null,lastCommand:0}},this.movePoint=function(t,e){void 0===e&&(e=o.state.promptText.length);var r=o.state.point+t;return r<0?0:r>e?e:r},this.rotateRing=function(t,e,o,r){return void 0===r&&(r=!0),0==o?0:r?(o+(e+t)%o)%o:(e-=t,e<0?0:e>=o?o:e)},this.rotateHistory=function(t){var e=o.rotateRing(t,o.state.historyn,o.state.history.length,!1);if(0==e)o.setState({point:o.state.restoreText.length,promptText:o.state.restoreText,historyn:e,argument:null,lastCommand:0},o.scrollToBottom);else{var r=o.state.history[o.state.history.length-e];o.setState({point:r.length,promptText:r,historyn:e,argument:null,lastCommand:0},o.scrollToBottom)}},this.searchHistory=function(t,e){void 0===t&&(t=o.state.searchDirection),void 0===e&&(e=!1);var r=o.state.historyn,s=0==t?1:-1;for(e&&(r+=s);r>0&&r<=o.state.history.length;r+=s){var n=o.state.history[o.state.history.length-r],a=n.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:n,searchDirection:t,searchInit:!1,historyn:r}}return{searchDirection:t,searchInit:!1}},this.scrollSemaphore=0,this.scrollIfBottom=function(){return o.scrollSemaphore>0||o.child.container.scrollTop==o.child.container.scrollHeight-o.child.container.offsetHeight?(o.scrollSemaphore++,o.scrollIfBottomTrue):null},this.scrollIfBottomTrue=function(){o.scrollToBottom(),o.scrollSemaphore--},this.scrollToBottom=function(){o.child.container.scrollTop=o.child.container.scrollHeight;var t=o.child.focus.getBoundingClientRect();(t.top<0||t.left<0||t.bottom>(window.innerHeight||document.documentElement.clientHeight)||t.right>(window.innerWidth||document.documentElement.clientWidth))&&o.child.typer.scrollIntoView(!1)},this.nextLabel=function(){return"string"==typeof o.props.promptLabel?o.props.promptLabel:o.props.promptLabel()},this.state={focus:!1,acceptInput:!0,typer:"",point:0,currLabel:this.nextLabel(),promptText:"",restoreText:"",searchText:"",searchDirection:null,searchInit:!1,log:[],history:[],historyn:0,kill:[],killn:0,argument:null,lastCommand:0}}return r(e,t),e.prototype.componentDidMount=function(){this.props.autofocus&&this.focus()},e.prototype.nextWord=function(){var t=/\W\w/.exec(this.state.promptText.substring(this.state.point));return t?t.index+this.state.point+1:this.state.promptText.length},e.prototype.previousWord=function(){var t=/\W\w(?!.*\W\w)/.exec(this.state.promptText.substring(0,this.state.point-1));return t?t.index+1:0},e.prototype.render=function(){var t=this;return s.createElement("div",{ref:function(e){return t.child.container=e},className:"react-console-container "+(this.state.focus?"react-console-focus":"react-console-nofocus"),onClick:this.focus},this.props.welcomeMessage?s.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[s.createElement(n,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return s.createElement(l,{key:e,type:t.type,value:t.value,isTable:t.isTable})}))}),this.state.acceptInput?s.createElement(n,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,s.createElement("div",{style:{overflow:"hidden",height:1,width:1}},s.createElement("textarea",{ref:function(e){return t.child.typer=e},className:"react-console-typer",autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",style:{outline:"none",color:"transparent",backgroundColor:"transparent",border:"none",resize:"none",overflow:"hidden"},onBlur:this.blur,onKeyDown:this.keyDown,onChange:this.change,onPaste:this.paste})),s.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(s.Component);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e){},function(t,e){t.exports=React}]); +var Console=function(t){function e(r){if(o[r])return o[r].exports;var s=o[r]={exports:{},id:r,loaded:!1};return t[r].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var o={};return e.m=t,e.c=o,e.p="",e(0)}([function(t,e,o){"use strict";var r=this&&this.__extends||function(t,e){function o(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)},s=o(2);o(1);var n=function(t){function e(){t.apply(this,arguments),this.child={},this.updateSemaphore=0}return r(e,t),e.prototype.componentDidMount=function(){this.idle()},e.prototype.componentDidUpdate=function(){this.idle()},e.prototype.idle=function(){var t=this;this.child.cursor&&(0==this.updateSemaphore&&(this.child.cursor.className="react-console-cursor"),this.updateSemaphore++,window.setTimeout(function(){t.updateSemaphore--,0==t.updateSemaphore&&t.child.cursor&&(t.child.cursor.className="react-console-cursor react-console-cursor-idle")},1e3))},e.prototype.renderValue=function(){var t=this;return this.props.point<0?[this.props.value]:this.props.point==this.props.value.length?[this.props.value,s.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),s.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"},this.props.value.substring(this.props.point,this.props.point+1)),this.props.value.substring(this.props.point+1)]},e.prototype.render=function(){var t=this.props.label;if(this.props.argument){var e=t.lastIndexOf("\n");t=e>=0?t.substring(0,e+1):""}return s.createElement("div",{className:"react-console-prompt-box"},s.createElement("span",{className:"react-console-prompt-label"},t),s.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),s.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(s.Component),a=function(t){return t.headers?s.createElement("thead",null,s.createElement("tr",null,t.headers.map(function(t){return s.createElement("th",{scope:"col",key:t},t)}))):null},l=function(t){if(t.isTable){var e=t.value[0];return s.createElement("div",{className:"react-console-message react-console-table"+(t.type?" react-console-message-"+t.type:"")},s.createElement("table",null,s.createElement(a,{headers:e.headers}),s.createElement("tbody",null,e.rows&&e.rows.map(function(t,e){return s.createElement("tr",{key:e},t.map(function(t,e){return"string"==typeof t?s.createElement("td",{key:e},t):"object"==typeof t&&"link"===t.type?s.createElement("td",{key:e},s.createElement("a",{href:t.href,target:t.target?t.target:""},t.text)):s.createElement("td",{key:e},JSON.stringify(t))}))}))))}return s.createElement("div",{className:"react-console-message"+(t.type?" react-console-message-"+t.type:"")},t.value.map(function(t,e){return"string"==typeof t?s.createElement("div",{key:e},t):"object"==typeof t&&"link"===t.type?s.createElement("div",{key:e},s.createElement("a",{href:t.href,target:t.target?t.target:""},t.text)):s.createElement("div",{key:e},JSON.stringify(t))}))};l.defaultProps={type:null,value:[],isTable:!1};var i=function(t){function e(e){var o=this;t.call(this,e),this.child={},this.setBusy=function(){o.setState({acceptInput:!1})},this.getSafeLog=function(){return o.state.log.length||o.state.log.push({label:"",command:"",message:[]}),o.state.log},this.updateLastLog=function(){for(var t=[],e=0;e0?r[o.state.log.length-1].message.length-1:0;r[o.state.log.length-1].message[s]={value:t},o.setState({log:r},o.scrollIfBottom())},this.log=function(){for(var t=[],e=0;e0&&o.setState({point:o.movePoint(-1),promptText:o.state.promptText.substring(0,o.state.point-1)+o.state.promptText.substring(o.state.point),argument:null,lastCommand:0},o.scrollToBottom)},this.killLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText.substring(o.state.point)),o.setState({promptText:o.state.promptText.substring(0,o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]:t.unshift(o.state.promptText.substring(0,o.state.point)),o.setState({point:0,promptText:o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWholeLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText),o.setState({point:0,promptText:"",kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point,o.nextWord()):t.unshift(o.state.promptText.substring(o.state.point,o.nextWord())),o.setState({promptText:o.state.promptText.substring(0,o.state.point)+o.state.promptText.substring(o.nextWord()),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(o.previousWord(),o.state.point)+t[0]:t.unshift(o.state.promptText.substring(o.previousWord(),o.state.point)),o.setState({point:o.previousWord(),promptText:o.state.promptText.substring(0,o.previousWord())+o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.yank=function(){o.setState(Object.assign(o.consoleInsert(o.state.kill[o.state.killn]),{lastCommand:3}),o.scrollToBottom)},this.yankPop=function(){if(3==o.state.lastCommand){var t=o.rotateRing(1,o.state.killn,o.state.kill.length);o.setState(Object.assign(o.consoleInsert(o.state.kill[t],o.state.kill[o.state.killn].length),{killn:t,lastCommand:3}),o.scrollToBottom)}},this.complete=function(){if(o.props.complete){for(var t=o.state.promptText.split(" "),e=0,r=t[0].length;r1){var l=o.state.log;l.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[s.join("\t")]}]}),o.setState({currLabel:o.nextLabel(),log:l,argument:null,lastCommand:0},o.scrollToBottom)}}},this.prefixMeta=function(){1==o.state.lastCommand&&o.setState({argument:null,lastCommand:0})},this.cancelCommand=function(){if(o.state.acceptInput){o.child.typer.value="";var t=o.state.log;t.push({label:o.state.currLabel,command:o.state.promptText,message:[]}),o.setState({typer:"",point:0,promptText:"",restoreText:"",log:t,historyn:0,argument:null,lastCommand:0},o.scrollToBottom)}else o.props.cancel()},this.textInsert=function(t,e,o,r){return void 0===o&&(o=0),void 0===r&&(r=e.length),e.substring(0,r-o)+t+e.substring(r)},this.consoleInsert=function(t,e){void 0===e&&(e=0);var r=o.textInsert(t,o.state.promptText,e,o.state.point);return{point:o.movePoint(t.length-e,t.length-e+o.state.promptText.length),promptText:r,restoreText:r,argument:null,lastCommand:0}},this.movePoint=function(t,e){void 0===e&&(e=o.state.promptText.length);var r=o.state.point+t;return r<0?0:r>e?e:r},this.rotateRing=function(t,e,o,r){return void 0===r&&(r=!0),0==o?0:r?(o+(e+t)%o)%o:(e-=t,e<0?0:e>=o?o:e)},this.rotateHistory=function(t){var e=o.rotateRing(t,o.state.historyn,o.state.history.length,!1);if(0==e)o.setState({point:o.state.restoreText.length,promptText:o.state.restoreText,historyn:e,argument:null,lastCommand:0},o.scrollToBottom);else{var r=o.state.history[o.state.history.length-e];o.setState({point:r.length,promptText:r,historyn:e,argument:null,lastCommand:0},o.scrollToBottom)}},this.searchHistory=function(t,e){void 0===t&&(t=o.state.searchDirection),void 0===e&&(e=!1);var r=o.state.historyn,s=0==t?1:-1;for(e&&(r+=s);r>0&&r<=o.state.history.length;r+=s){var n=o.state.history[o.state.history.length-r],a=n.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:n,searchDirection:t,searchInit:!1,historyn:r}}return{searchDirection:t,searchInit:!1}},this.scrollSemaphore=0,this.scrollIfBottom=function(){return o.scrollSemaphore>0||o.child.container.scrollTop==o.child.container.scrollHeight-o.child.container.offsetHeight?(o.scrollSemaphore++,o.scrollIfBottomTrue):null},this.scrollIfBottomTrue=function(){o.scrollToBottom(),o.scrollSemaphore--},this.scrollToBottom=function(){o.child.container.scrollTop=o.child.container.scrollHeight;var t=o.child.focus.getBoundingClientRect();(t.top<0||t.left<0||t.bottom>(window.innerHeight||document.documentElement.clientHeight)||t.right>(window.innerWidth||document.documentElement.clientWidth))&&o.child.typer.scrollIntoView(!1)},this.nextLabel=function(){return"string"==typeof o.props.promptLabel?o.props.promptLabel:o.props.promptLabel()},this.state={focus:!1,acceptInput:!0,typer:"",point:0,currLabel:this.nextLabel(),promptText:"",restoreText:"",searchText:"",searchDirection:null,searchInit:!1,log:[],history:[],historyn:0,kill:[],killn:0,argument:null,lastCommand:0}}return r(e,t),e.prototype.componentDidMount=function(){this.props.autofocus&&this.focus()},e.prototype.nextWord=function(){var t=/\W\w/.exec(this.state.promptText.substring(this.state.point));return t?t.index+this.state.point+1:this.state.promptText.length},e.prototype.previousWord=function(){var t=/\W\w(?!.*\W\w)/.exec(this.state.promptText.substring(0,this.state.point-1));return t?t.index+1:0},e.prototype.render=function(){var t=this;return s.createElement("div",{ref:function(e){return t.child.container=e},className:"react-console-container "+(this.state.focus?"react-console-focus":"react-console-nofocus"),onClick:this.focus},this.props.welcomeMessage?s.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[s.createElement(n,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return s.createElement(l,{key:e,type:t.type,value:t.value,isTable:t.isTable})}))}),this.state.acceptInput?s.createElement(n,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,s.createElement("div",{style:{overflow:"hidden",height:1,width:1}},s.createElement("textarea",{ref:function(e){return t.child.typer=e},className:"react-console-typer",autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",style:{outline:"none",color:"transparent",backgroundColor:"transparent",border:"none",resize:"none",overflow:"hidden"},onBlur:this.blur,onKeyDown:this.keyDown,onChange:this.change,onPaste:this.paste})),s.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(s.Component);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e){},function(t,e){t.exports=React}]); //# sourceMappingURL=react-console.min.js.map \ No newline at end of file diff --git a/dist/dist-min/react-console.min.js.map b/dist/dist-min/react-console.min.js.map index 5eaaec9..066fd56 100644 --- a/dist/dist-min/react-console.min.js.map +++ b/dist/dist-min/react-console.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///react-console.min.js","webpack:///webpack/bootstrap 83ef826307f11bba8644","webpack:///./react-console.tsx","webpack:///external \"React\""],"names":["Console","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","__extends","this","d","b","__","constructor","hasOwnProperty","prototype","Object","create","React","ConsolePrompt","_super","apply","arguments","child","updateSemaphore","componentDidMount","idle","componentDidUpdate","_this","cursor","className","window","setTimeout","renderValue","props","point","value","length","createElement","ref","key","substring","render","label","argument","idx","lastIndexOf","defaultProps","Component","ConsoleTableHeader","headers","map","header","scope","ConsoleMessage","isTable","data","type","rows","row","index","cell","cellIndex","href","target","text","JSON","stringify","val","i","default_1","setBusy","setState","acceptInput","updateLastLog","messages","_i","log","state","push","command","message","indexToReplace","scrollIfBottom","logX","logTable","tableData","return","currLabel","nextLabel","focus","getSelection","toString","typer","scrollToBottom","blur","keyDown","e","keyCodes","13","acceptLine","37","backwardChar","39","forwardChar","38","previousHistory","40","nextHistory","8","backwardDeleteChar","46","deleteChar","35","endOfLine","36","beginningOfLine","9","complete","27","prefixMeta","ctrlCodes","65","69","70","66","76","clearScreen","80","78","82","reverseSearchHistory","83","forwardSearchHistory","68","75","killLine","85","backwardKillLine","89","yank","67","cancelCommand","metaCodes","forwardWord","backwardWord","nonIncrementalReverseSearchHistory","nonIncrementalForwardSearchHistory","190","yankLastArg","killWord","backwardKillWord","yankPop","metaShiftCodes","188","beginningOfHistory","endOfHistory","189","metaCtrlCodes","yankNthArg","altKey","ctrlKey","keyCode","preventDefault","shiftKey","change","insert","replace","lastCommand","searchText","searchInit","textInsert","triggerSearch","assign","consoleInsert","paste","clipboardData","getData","promptText","movePoint","nextWord","previousWord","continue","command_1","history_1","history","restoreText","historyn","handler","rotateHistory","searchDirection","searchHistory","historySearchBackward","historySearchForward","historySubstringSearchBackward","historySubstringSearchForward","kill","unshift","killn","killWholeLine","rotateRing","words","split","curr","completions","join","cancel","n","max","pos","ringn","ring","circular","direction","next","inc","entry","indexOf","scrollSemaphore","container","scrollTop","scrollHeight","offsetHeight","scrollIfBottomTrue","rect","getBoundingClientRect","top","left","bottom","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollIntoView","promptLabel","autofocus","search","exec","onClick","welcomeMessage","concat","style","overflow","height","width","autoComplete","autoCorrect","autoCapitalize","spellCheck","outline","color","backgroundColor","border","resize","onBlur","onKeyDown","onChange","onPaste","defineProperty","default"],"mappings":"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","file":"react-console.min.js","sourcesContent":["var Console =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar React = __webpack_require__(2);\n\t__webpack_require__(1);\n\tvar ConsolePrompt = (function (_super) {\n\t __extends(ConsolePrompt, _super);\n\t function ConsolePrompt() {\n\t _super.apply(this, arguments);\n\t this.child = {};\n\t // DOM Management\n\t this.updateSemaphore = 0;\n\t }\n\t // Component Lifecycle\n\t ConsolePrompt.prototype.componentDidMount = function () {\n\t this.idle();\n\t };\n\t ConsolePrompt.prototype.componentDidUpdate = function () {\n\t this.idle();\n\t };\n\t ConsolePrompt.prototype.idle = function () {\n\t var _this = this;\n\t // Blink cursor when idle\n\t if (this.child.cursor) {\n\t if (this.updateSemaphore == 0) {\n\t this.child.cursor.className = \"react-console-cursor\";\n\t }\n\t this.updateSemaphore++;\n\t window.setTimeout(function () {\n\t _this.updateSemaphore--;\n\t if (_this.updateSemaphore == 0 && _this.child.cursor) {\n\t _this.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t }\n\t }, 1000);\n\t }\n\t };\n\t ConsolePrompt.prototype.renderValue = function () {\n\t var _this = this;\n\t if (this.props.point < 0) {\n\t return [this.props.value];\n\t }\n\t else if (this.props.point == this.props.value.length) {\n\t return [this.props.value, React.createElement(\"span\", {ref: function (ref) { return _this.child.cursor = ref; }, key: \"cursor\", className: \"react-console-cursor\"}, \" \")];\n\t }\n\t else {\n\t return [this.props.value.substring(0, this.props.point),\n\t React.createElement(\"span\", {ref: function (ref) { return _this.child.cursor = ref; }, key: \"cursor\", className: \"react-console-cursor\"}, this.props.value.substring(this.props.point, this.props.point + 1)),\n\t this.props.value.substring(this.props.point + 1)];\n\t }\n\t };\n\t ConsolePrompt.prototype.render = function () {\n\t var label = this.props.label;\n\t if (this.props.argument) {\n\t var idx = label.lastIndexOf(\"\\n\");\n\t if (idx >= 0) {\n\t label = label.substring(0, idx + 1);\n\t }\n\t else {\n\t label = '';\n\t }\n\t }\n\t return React.createElement(\"div\", {className: \"react-console-prompt-box\"}, React.createElement(\"span\", {className: \"react-console-prompt-label\"}, label), React.createElement(\"span\", {className: \"react-console-prompt-argument\"}, this.props.argument), React.createElement(\"span\", {className: \"react-console-prompt\"}, this.renderValue()));\n\t };\n\t ConsolePrompt.defaultProps = {\n\t point: -1,\n\t value: \"\",\n\t label: \"> \",\n\t argument: null,\n\t };\n\t return ConsolePrompt;\n\t}(React.Component));\n\tvar ConsoleTableHeader = function (props) {\n\t if (props.headers) {\n\t return React.createElement(\"thead\", null, React.createElement(\"tr\", null, props.headers.map(function (header) {\n\t return React.createElement(\"th\", {scope: \"col\", key: header}, header);\n\t })));\n\t }\n\t return null;\n\t};\n\tvar ConsoleMessage = function (props) {\n\t if (props.isTable) {\n\t var data = props.value[0];\n\t return React.createElement(\"div\", {className: \"react-console-message react-console-table\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, React.createElement(\"table\", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement(\"tbody\", null, data.rows && data.rows.map(function (row, index) {\n\t return React.createElement(\"tr\", {key: index}, row.map(function (cell, cellIndex) {\n\t if (typeof cell === 'string') {\n\t return React.createElement(\"td\", {key: cellIndex}, cell);\n\t }\n\t else if (typeof cell === 'object' && cell.type === 'link') {\n\t return React.createElement(\"td\", {key: cellIndex}, React.createElement(\"a\", {href: cell.href, target: cell.target ? cell.target : ''}, cell.text));\n\t }\n\t else {\n\t return React.createElement(\"td\", {key: cellIndex}, JSON.stringify(cell));\n\t }\n\t }));\n\t }))));\n\t }\n\t else {\n\t return React.createElement(\"div\", {className: \"react-console-message\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, props.value.map(function (val, i) {\n\t if (typeof val == 'string') {\n\t return React.createElement(\"div\", {key: i}, val);\n\t }\n\t else if (typeof val === 'object' && val.type === 'link') {\n\t return React.createElement(\"div\", {key: i}, React.createElement(\"a\", {href: val.href, target: val.target ? val.target : ''}, val.text));\n\t }\n\t else {\n\t return React.createElement(\"div\", {key: i}, JSON.stringify(val));\n\t }\n\t }));\n\t }\n\t};\n\tConsoleMessage.defaultProps = {\n\t type: null,\n\t value: [],\n\t isTable: false\n\t};\n\t;\n\t;\n\tvar default_1 = (function (_super) {\n\t __extends(default_1, _super);\n\t function default_1(props) {\n\t var _this = this;\n\t _super.call(this, props);\n\t this.child = {};\n\t // Command API\n\t this.setBusy = function () {\n\t _this.setState({ acceptInput: false });\n\t };\n\t this.updateLastLog = function () {\n\t var messages = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t messages[_i - 0] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t if (!log.length) {\n\t log.push({ label: '', command: '', message: [] });\n\t }\n\t var indexToReplace = log[_this.state.log.length - 1].message.length > 0 ? log[_this.state.log.length - 1].message.length - 1 : 0;\n\t log[_this.state.log.length - 1].message[indexToReplace] = { value: messages };\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.log = function () {\n\t var messages = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t messages[_i - 0] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t if (!log.length) {\n\t log.push({ label: '', command: '', message: [] });\n\t }\n\t log[_this.state.log.length - 1].message.push({ value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logX = function (type) {\n\t var messages = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t messages[_i - 1] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t if (!log.length) {\n\t log.push({ label: '', command: '', message: [] });\n\t }\n\t log[_this.state.log.length - 1].message.push({ type: type, value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logTable = function (tableData, type) {\n\t var log = _this.state.log;\n\t if (type) {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, type: type, value: [tableData] });\n\t }\n\t else {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\n\t }\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.return = function () {\n\t _this.setState({\n\t acceptInput: true,\n\t currLabel: _this.nextLabel(),\n\t }, _this.scrollIfBottom());\n\t };\n\t // Event Handlers\n\t this.focus = function () {\n\t if (!window.getSelection().toString()) {\n\t _this.child.typer.focus();\n\t _this.setState({ focus: true }, _this.scrollToBottom);\n\t }\n\t };\n\t this.blur = function () {\n\t _this.setState({ focus: false });\n\t };\n\t this.keyDown = function (e) {\n\t var keyCodes = {\n\t // return\n\t 13: _this.acceptLine,\n\t // left\n\t 37: _this.backwardChar,\n\t // right\n\t 39: _this.forwardChar,\n\t // up\n\t 38: _this.previousHistory,\n\t // down\n\t 40: _this.nextHistory,\n\t // backspace\n\t 8: _this.backwardDeleteChar,\n\t // delete\n\t 46: _this.deleteChar,\n\t // end\n\t 35: _this.endOfLine,\n\t // start\n\t 36: _this.beginningOfLine,\n\t // tab\n\t 9: _this.complete,\n\t // esc\n\t 27: _this.prefixMeta,\n\t };\n\t var ctrlCodes = {\n\t // C-a\n\t 65: _this.beginningOfLine,\n\t // C-e\n\t 69: _this.endOfLine,\n\t // C-f\n\t 70: _this.forwardChar,\n\t // C-b\n\t 66: _this.backwardChar,\n\t // C-l\n\t 76: _this.clearScreen,\n\t // C-p\n\t 80: _this.previousHistory,\n\t // C-n\n\t 78: _this.nextHistory,\n\t // C-r\n\t 82: _this.reverseSearchHistory,\n\t // C-s\n\t 83: _this.forwardSearchHistory,\n\t // C-d\n\t 68: _this.deleteChar,\n\t // C-q TODO\n\t //81: this.quotedInsert,\n\t // C-v TODO\n\t //86: this.quotedInsert,\n\t // C-t TODO\n\t //84: this.transposeChars,\n\t // C-k\n\t 75: _this.killLine,\n\t // C-u\n\t 85: _this.backwardKillLine,\n\t // C-y TODO\n\t 89: _this.yank,\n\t // C-c\n\t 67: _this.cancelCommand,\n\t };\n\t var ctrlXCodes = {\n\t // C-x Rubout\n\t 8: _this.backwardKillLine,\n\t };\n\t var ctrlShiftCodes = {};\n\t var metaCodes = {\n\t // M-f\n\t 70: _this.forwardWord,\n\t // M-b\n\t 66: _this.backwardWord,\n\t // M-p\n\t 80: _this.nonIncrementalReverseSearchHistory,\n\t // M-n\n\t 78: _this.nonIncrementalForwardSearchHistory,\n\t // M-.\n\t 190: _this.yankLastArg,\n\t // M-TAB TODO\n\t //9: this.tabInsert,\n\t // M-t TODO\n\t //84: this.transposeWords,\n\t // M-u TODO\n\t //85: this.upcaseWord,\n\t // M-l TODO\n\t //76: this.downcaseWord,\n\t // M-c TODO\n\t //67: this.capitalizeWord,\n\t // M-d\n\t 68: _this.killWord,\n\t // M-backspace\n\t 8: _this.backwardKillWord,\n\t // M-w TODO\n\t //87: this.unixWordRubout,\n\t // M-\\ TODO\n\t //220: this.deleteHorizontalSpace,\n\t // M-y\n\t 89: _this.yankPop,\n\t };\n\t var metaShiftCodes = {\n\t // M-<\n\t 188: _this.beginningOfHistory,\n\t // M->\n\t 190: _this.endOfHistory,\n\t // M-_\n\t 189: _this.yankLastArg,\n\t };\n\t var metaCtrlCodes = {\n\t // M-C-y\n\t 89: _this.yankNthArg,\n\t };\n\t if (_this.state.acceptInput) {\n\t if (e.altKey) {\n\t if (e.ctrlKey) {\n\t if (e.keyCode in metaCtrlCodes) {\n\t metaCtrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.shiftKey) {\n\t if (e.keyCode in metaShiftCodes) {\n\t metaShiftCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.keyCode in metaCodes) {\n\t metaCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.ctrlKey) {\n\t if (e.keyCode in ctrlCodes) {\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.keyCode in keyCodes) {\n\t keyCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.ctrlKey && e.keyCode === 67) {\n\t // if input is blocked, ctrl+c should still call cancel\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t };\n\t this.change = function () {\n\t var idx = 0;\n\t for (; idx < _this.state.typer.length && idx < _this.child.typer.value.length; idx++) {\n\t if (_this.state.typer[idx] != _this.child.typer.value[idx]) {\n\t break;\n\t }\n\t }\n\t var insert = _this.child.typer.value.substring(idx);\n\t var replace = _this.state.typer.length - idx;\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText, replace),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert, replace), {\n\t typer: _this.child.typer.value,\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t this.paste = function (e) {\n\t var insert = e.clipboardData.getData('text');\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert), {\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t e.preventDefault();\n\t };\n\t // Commands for Moving\n\t this.beginningOfLine = function () {\n\t _this.setState({\n\t point: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.endOfLine = function () {\n\t _this.setState({\n\t point: _this.state.promptText.length,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardWord = function () {\n\t _this.setState({\n\t point: _this.nextWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardWord = function () {\n\t _this.setState({\n\t point: _this.previousWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t // Commands for Manipulating the History\n\t this.acceptLine = function () {\n\t _this.child.typer.value = \"\";\n\t if (_this.props.continue(_this.state.promptText)) {\n\t _this.setState(Object.assign(_this.consoleInsert(\"\\n\"), {\n\t typer: \"\",\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t var command_1 = _this.state.promptText;\n\t var history_1 = _this.state.history;\n\t var log = _this.state.log;\n\t if (!history_1 || history_1[history_1.length - 1] != command_1) {\n\t history_1.push(command_1);\n\t }\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: command_1,\n\t message: []\n\t });\n\t _this.setState({\n\t acceptInput: false,\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t history: history_1,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, function () {\n\t _this.scrollToBottom();\n\t if (_this.props.handler) {\n\t _this.props.handler(command_1);\n\t }\n\t else {\n\t _this.return();\n\t }\n\t });\n\t }\n\t };\n\t this.previousHistory = function () {\n\t _this.rotateHistory(-1);\n\t };\n\t this.nextHistory = function () {\n\t _this.rotateHistory(1);\n\t };\n\t this.beginningOfHistory = function () {\n\t _this.rotateHistory(-_this.state.history.length);\n\t };\n\t this.endOfHistory = function () {\n\t _this.rotateHistory(_this.state.history.length);\n\t };\n\t this.triggerSearch = function () {\n\t if (_this.state.searchDirection == 0 /* Reverse */) {\n\t _this.reverseSearchHistory();\n\t }\n\t else {\n\t _this.forwardSearchHistory();\n\t }\n\t };\n\t this.reverseSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(0 /* Reverse */, true), {\n\t argument: \"(reverse-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 0 /* Reverse */,\n\t searchInit: true,\n\t argument: \"(reverse-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.forwardSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(1 /* Forward */, true), {\n\t argument: \"(forward-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 1 /* Forward */,\n\t searchInit: true,\n\t argument: \"(forward-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.clearScreen = function () {\n\t _this.setState({ log: [] });\n\t };\n\t this.nonIncrementalReverseSearchHistory = function () {\n\t // TODO\n\t };\n\t this.nonIncrementalForwardSearchHistory = function () {\n\t // TODO\n\t };\n\t this.historySearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySearchForward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchForward = function () {\n\t // TODO\n\t };\n\t this.yankNthArg = function () {\n\t // TODO\n\t };\n\t this.yankLastArg = function () {\n\t // TODO\n\t };\n\t // Commands for Changing Text\n\t this.deleteChar = function () {\n\t if (_this.state.point < _this.state.promptText.length) {\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.state.point + 1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.backwardDeleteChar = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchText.substring(0, _this.state.searchText.length - 1),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else if (_this.state.point > 0) {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t promptText: _this.state.promptText.substring(0, _this.state.point - 1)\n\t + _this.state.promptText.substring(_this.state.point),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t // Killing and Yanking\n\t this.killLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(0, _this.state.point));\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWholeLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point)\n\t + kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText);\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: '',\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point, _this.nextWord());\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point, _this.nextWord()));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.nextWord()),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(_this.previousWord(), _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.previousWord(), _this.state.point));\n\t }\n\t _this.setState({\n\t point: _this.previousWord(),\n\t promptText: _this.state.promptText.substring(0, _this.previousWord())\n\t + _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.yank = function () {\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[_this.state.killn]), {\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t };\n\t this.yankPop = function () {\n\t if (_this.state.lastCommand == 3 /* Yank */) {\n\t var killn = _this.rotateRing(1, _this.state.killn, _this.state.kill.length);\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[killn], _this.state.kill[_this.state.killn].length), {\n\t killn: killn,\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t // Numeric Arguments\n\t // Completing\n\t this.complete = function () {\n\t if (_this.props.complete) {\n\t // Split text and find current word\n\t var words = _this.state.promptText.split(\" \");\n\t var curr = 0;\n\t var idx = words[0].length;\n\t while (idx < _this.state.point && curr + 1 < words.length) {\n\t idx += words[++curr].length + 1;\n\t }\n\t var completions = _this.props.complete(words, curr, _this.state.promptText);\n\t if (completions.length == 1) {\n\t // Perform completion\n\t words[curr] = completions[0];\n\t var point = -1;\n\t for (var i = 0; i <= curr; i++) {\n\t point += words[i].length + 1;\n\t }\n\t _this.setState({\n\t point: point,\n\t promptText: words.join(\" \"),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else if (completions.length > 1) {\n\t // show completions\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: [{\n\t type: \"completion\",\n\t value: [completions.join(\"\\t\")],\n\t }]\n\t });\n\t _this.setState({\n\t currLabel: _this.nextLabel(),\n\t log: log,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t }\n\t };\n\t // Keyboard Macros\n\t // Miscellaneous\n\t this.prefixMeta = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t });\n\t }\n\t // TODO Meta prefixed state\n\t };\n\t this.cancelCommand = function () {\n\t if (_this.state.acceptInput) {\n\t _this.child.typer.value = \"\";\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: []\n\t });\n\t _this.setState({\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t _this.props.cancel();\n\t }\n\t };\n\t // Helper functions\n\t this.textInsert = function (insert, text, replace, point) {\n\t if (replace === void 0) { replace = 0; }\n\t if (point === void 0) { point = text.length; }\n\t return text.substring(0, point - replace) + insert + text.substring(point);\n\t };\n\t this.consoleInsert = function (insert, replace) {\n\t if (replace === void 0) { replace = 0; }\n\t var promptText = _this.textInsert(insert, _this.state.promptText, replace, _this.state.point);\n\t return {\n\t point: _this.movePoint(insert.length - replace, insert.length - replace + _this.state.promptText.length),\n\t promptText: promptText,\n\t restoreText: promptText,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t };\n\t this.movePoint = function (n, max) {\n\t if (max === void 0) { max = _this.state.promptText.length; }\n\t var pos = _this.state.point + n;\n\t if (pos < 0) {\n\t return 0;\n\t }\n\t if (pos > max) {\n\t return max;\n\t }\n\t else {\n\t return pos;\n\t }\n\t };\n\t this.rotateRing = function (n, ringn, ring, circular) {\n\t if (circular === void 0) { circular = true; }\n\t if (ring == 0)\n\t return 0;\n\t if (circular) {\n\t return (ring + (ringn + n) % ring) % ring;\n\t }\n\t else {\n\t ringn = ringn - n;\n\t if (ringn < 0) {\n\t return 0;\n\t }\n\t else if (ringn >= ring) {\n\t return ring;\n\t }\n\t else {\n\t return ringn;\n\t }\n\t }\n\t };\n\t this.rotateHistory = function (n) {\n\t var historyn = _this.rotateRing(n, _this.state.historyn, _this.state.history.length, false);\n\t if (historyn == 0) {\n\t _this.setState({\n\t point: _this.state.restoreText.length,\n\t promptText: _this.state.restoreText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t var promptText = _this.state.history[_this.state.history.length - historyn];\n\t _this.setState({\n\t point: promptText.length,\n\t promptText: promptText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.searchHistory = function (direction, next) {\n\t if (direction === void 0) { direction = _this.state.searchDirection; }\n\t if (next === void 0) { next = false; }\n\t var idx = _this.state.historyn;\n\t var inc = (direction == 0 /* Reverse */) ? 1 : -1;\n\t if (next) {\n\t idx = idx + inc;\n\t }\n\t for (; idx > 0 && idx <= _this.state.history.length; idx = idx + inc) {\n\t var entry = _this.state.history[_this.state.history.length - idx];\n\t var point = entry.indexOf(_this.state.searchText);\n\t if (point > -1) {\n\t return {\n\t point: point,\n\t promptText: entry,\n\t searchDirection: direction,\n\t searchInit: false,\n\t historyn: idx,\n\t };\n\t }\n\t }\n\t return {\n\t searchDirection: direction,\n\t searchInit: false,\n\t };\n\t };\n\t // DOM management\n\t this.scrollSemaphore = 0;\n\t this.scrollIfBottom = function () {\n\t if (_this.scrollSemaphore > 0 || _this.child.container.scrollTop == _this.child.container.scrollHeight - _this.child.container.offsetHeight) {\n\t _this.scrollSemaphore++;\n\t return _this.scrollIfBottomTrue;\n\t }\n\t else {\n\t return null;\n\t }\n\t };\n\t this.scrollIfBottomTrue = function () {\n\t _this.scrollToBottom();\n\t _this.scrollSemaphore--;\n\t };\n\t this.scrollToBottom = function () {\n\t _this.child.container.scrollTop = _this.child.container.scrollHeight;\n\t var rect = _this.child.focus.getBoundingClientRect();\n\t if (rect.top < 0 || rect.left < 0 ||\n\t rect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t rect.right > (window.innerWidth || document.documentElement.clientWidth)) {\n\t _this.child.typer.scrollIntoView(false);\n\t }\n\t };\n\t this.nextLabel = function () {\n\t if (typeof _this.props.promptLabel === \"string\") {\n\t return _this.props.promptLabel;\n\t }\n\t else {\n\t return _this.props.promptLabel();\n\t }\n\t };\n\t this.state = {\n\t focus: false,\n\t acceptInput: true,\n\t typer: '',\n\t point: 0,\n\t currLabel: this.nextLabel(),\n\t promptText: '',\n\t restoreText: '',\n\t searchText: '',\n\t searchDirection: null,\n\t searchInit: false,\n\t log: [],\n\t history: [],\n\t historyn: 0,\n\t kill: [],\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t }\n\t // Component Lifecycle\n\t default_1.prototype.componentDidMount = function () {\n\t if (this.props.autofocus) {\n\t this.focus();\n\t }\n\t };\n\t default_1.prototype.nextWord = function () {\n\t // Find first alphanumeric char after first non-alphanumeric char\n\t var search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t if (search) {\n\t return search.index + this.state.point + 1;\n\t }\n\t else {\n\t return this.state.promptText.length;\n\t }\n\t };\n\t default_1.prototype.previousWord = function () {\n\t // Find first non-alphanumeric char after first alphanumeric char in reverse\n\t var search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0, this.state.point - 1));\n\t if (search) {\n\t return search.index + 1;\n\t }\n\t else {\n\t return 0;\n\t }\n\t };\n\t default_1.prototype.render = function () {\n\t var _this = this;\n\t return React.createElement(\"div\", {ref: function (ref) { return _this.child.container = ref; }, className: \"react-console-container \" + (this.state.focus ? \"react-console-focus\" : \"react-console-nofocus\"), onClick: this.focus}, this.props.welcomeMessage ?\n\t React.createElement(\"div\", {className: \"react-console-message react-console-welcome\"}, this.props.welcomeMessage)\n\t : null, this.state.log.map(function (val) {\n\t return [\n\t React.createElement(ConsolePrompt, {label: val.label, value: val.command})\n\t ].concat(val.message.map(function (val, idx) {\n\t return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value, isTable: val.isTable});\n\t }));\n\t }), this.state.acceptInput ?\n\t React.createElement(ConsolePrompt, {label: this.state.currLabel, value: this.state.promptText, point: this.state.point, argument: this.state.argument})\n\t : null, React.createElement(\"div\", {style: { overflow: \"hidden\", height: 1, width: 1 }}, React.createElement(\"textarea\", {ref: function (ref) { return _this.child.typer = ref; }, className: \"react-console-typer\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: \"false\", style: { outline: \"none\",\n\t color: \"transparent\",\n\t backgroundColor: \"transparent\",\n\t border: \"none\",\n\t resize: \"none\",\n\t overflow: \"hidden\",\n\t }, onBlur: this.blur, onKeyDown: this.keyDown, onChange: this.change, onPaste: this.paste})), React.createElement(\"div\", {ref: function (ref) { return _this.child.focus = ref; }}, \" \"));\n\t };\n\t default_1.defaultProps = {\n\t promptLabel: '> ',\n\t continue: function () { return false; },\n\t cancel: function () { },\n\t };\n\t return default_1;\n\t}(React.Component));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = default_1;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = React;\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// react-console.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 83ef826307f11bba8644","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn

\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: any[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: any, cellIndex: number) => {\n\t\t\t\t\t\t\tif(typeof cell === 'string'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else if(typeof cell === 'object' && cell.type === 'link'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}{cell.text}{JSON.stringify(cell)}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any, i: number)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn
{val}
;\n\t\t\t\t} else if(typeof val === 'object' && val.type === 'link') {\n\t\t\t\t\treturn ;\n\t\t\t\t} else {\n\t\t\t\t\treturn
{JSON.stringify(val)}
;\n\t\t\t\t}\n\t\t\t})}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tsetBusy = () => {\n\t\tthis.setState({acceptInput: false});\n\t}\n\tupdateLastLog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlet indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0;\n\t\tlog[this.state.log.length-1].message[indexToReplace] = {value: messages};\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///react-console.min.js","webpack:///webpack/bootstrap 015b8bd03da346ba76d6","webpack:///./react-console.tsx","webpack:///external \"React\""],"names":["Console","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","__extends","this","d","b","__","constructor","hasOwnProperty","prototype","Object","create","React","ConsolePrompt","_super","apply","arguments","child","updateSemaphore","componentDidMount","idle","componentDidUpdate","_this","cursor","className","window","setTimeout","renderValue","props","point","value","length","createElement","ref","key","substring","render","label","argument","idx","lastIndexOf","defaultProps","Component","ConsoleTableHeader","headers","map","header","scope","ConsoleMessage","isTable","data","type","rows","row","index","cell","cellIndex","href","target","text","JSON","stringify","val","i","default_1","setBusy","setState","acceptInput","getSafeLog","state","log","push","command","message","updateLastLog","messages","_i","indexToReplace","scrollIfBottom","logX","logTable","tableData","return","currLabel","nextLabel","focus","getSelection","toString","typer","scrollToBottom","blur","keyDown","e","keyCodes","13","acceptLine","37","backwardChar","39","forwardChar","38","previousHistory","40","nextHistory","8","backwardDeleteChar","46","deleteChar","35","endOfLine","36","beginningOfLine","9","complete","27","prefixMeta","ctrlCodes","65","69","70","66","76","clearScreen","80","78","82","reverseSearchHistory","83","forwardSearchHistory","68","75","killLine","85","backwardKillLine","89","yank","67","cancelCommand","metaCodes","forwardWord","backwardWord","nonIncrementalReverseSearchHistory","nonIncrementalForwardSearchHistory","190","yankLastArg","killWord","backwardKillWord","yankPop","metaShiftCodes","188","beginningOfHistory","endOfHistory","189","metaCtrlCodes","yankNthArg","altKey","ctrlKey","keyCode","preventDefault","shiftKey","change","insert","replace","lastCommand","searchText","searchInit","textInsert","triggerSearch","assign","consoleInsert","paste","clipboardData","getData","promptText","movePoint","nextWord","previousWord","continue","command_1","history_1","history","restoreText","historyn","handler","rotateHistory","searchDirection","searchHistory","historySearchBackward","historySearchForward","historySubstringSearchBackward","historySubstringSearchForward","kill","unshift","killn","killWholeLine","rotateRing","words","split","curr","completions","join","cancel","n","max","pos","ringn","ring","circular","direction","next","inc","entry","indexOf","scrollSemaphore","container","scrollTop","scrollHeight","offsetHeight","scrollIfBottomTrue","rect","getBoundingClientRect","top","left","bottom","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollIntoView","promptLabel","autofocus","search","exec","onClick","welcomeMessage","concat","style","overflow","height","width","autoComplete","autoCorrect","autoCapitalize","spellCheck","outline","color","backgroundColor","border","resize","onBlur","onKeyDown","onChange","onPaste","defineProperty","default"],"mappings":"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","file":"react-console.min.js","sourcesContent":["var Console =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar React = __webpack_require__(2);\n\t__webpack_require__(1);\n\tvar ConsolePrompt = (function (_super) {\n\t __extends(ConsolePrompt, _super);\n\t function ConsolePrompt() {\n\t _super.apply(this, arguments);\n\t this.child = {};\n\t // DOM Management\n\t this.updateSemaphore = 0;\n\t }\n\t // Component Lifecycle\n\t ConsolePrompt.prototype.componentDidMount = function () {\n\t this.idle();\n\t };\n\t ConsolePrompt.prototype.componentDidUpdate = function () {\n\t this.idle();\n\t };\n\t ConsolePrompt.prototype.idle = function () {\n\t var _this = this;\n\t // Blink cursor when idle\n\t if (this.child.cursor) {\n\t if (this.updateSemaphore == 0) {\n\t this.child.cursor.className = \"react-console-cursor\";\n\t }\n\t this.updateSemaphore++;\n\t window.setTimeout(function () {\n\t _this.updateSemaphore--;\n\t if (_this.updateSemaphore == 0 && _this.child.cursor) {\n\t _this.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t }\n\t }, 1000);\n\t }\n\t };\n\t ConsolePrompt.prototype.renderValue = function () {\n\t var _this = this;\n\t if (this.props.point < 0) {\n\t return [this.props.value];\n\t }\n\t else if (this.props.point == this.props.value.length) {\n\t return [this.props.value, React.createElement(\"span\", {ref: function (ref) { return _this.child.cursor = ref; }, key: \"cursor\", className: \"react-console-cursor\"}, \" \")];\n\t }\n\t else {\n\t return [this.props.value.substring(0, this.props.point),\n\t React.createElement(\"span\", {ref: function (ref) { return _this.child.cursor = ref; }, key: \"cursor\", className: \"react-console-cursor\"}, this.props.value.substring(this.props.point, this.props.point + 1)),\n\t this.props.value.substring(this.props.point + 1)];\n\t }\n\t };\n\t ConsolePrompt.prototype.render = function () {\n\t var label = this.props.label;\n\t if (this.props.argument) {\n\t var idx = label.lastIndexOf(\"\\n\");\n\t if (idx >= 0) {\n\t label = label.substring(0, idx + 1);\n\t }\n\t else {\n\t label = '';\n\t }\n\t }\n\t return React.createElement(\"div\", {className: \"react-console-prompt-box\"}, React.createElement(\"span\", {className: \"react-console-prompt-label\"}, label), React.createElement(\"span\", {className: \"react-console-prompt-argument\"}, this.props.argument), React.createElement(\"span\", {className: \"react-console-prompt\"}, this.renderValue()));\n\t };\n\t ConsolePrompt.defaultProps = {\n\t point: -1,\n\t value: \"\",\n\t label: \"> \",\n\t argument: null,\n\t };\n\t return ConsolePrompt;\n\t}(React.Component));\n\tvar ConsoleTableHeader = function (props) {\n\t if (props.headers) {\n\t return React.createElement(\"thead\", null, React.createElement(\"tr\", null, props.headers.map(function (header) {\n\t return React.createElement(\"th\", {scope: \"col\", key: header}, header);\n\t })));\n\t }\n\t return null;\n\t};\n\tvar ConsoleMessage = function (props) {\n\t if (props.isTable) {\n\t var data = props.value[0];\n\t return React.createElement(\"div\", {className: \"react-console-message react-console-table\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, React.createElement(\"table\", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement(\"tbody\", null, data.rows && data.rows.map(function (row, index) {\n\t return React.createElement(\"tr\", {key: index}, row.map(function (cell, cellIndex) {\n\t if (typeof cell === 'string') {\n\t return React.createElement(\"td\", {key: cellIndex}, cell);\n\t }\n\t else if (typeof cell === 'object' && cell.type === 'link') {\n\t return React.createElement(\"td\", {key: cellIndex}, React.createElement(\"a\", {href: cell.href, target: cell.target ? cell.target : ''}, cell.text));\n\t }\n\t else {\n\t return React.createElement(\"td\", {key: cellIndex}, JSON.stringify(cell));\n\t }\n\t }));\n\t }))));\n\t }\n\t else {\n\t return React.createElement(\"div\", {className: \"react-console-message\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, props.value.map(function (val, i) {\n\t if (typeof val == 'string') {\n\t return React.createElement(\"div\", {key: i}, val);\n\t }\n\t else if (typeof val === 'object' && val.type === 'link') {\n\t return React.createElement(\"div\", {key: i}, React.createElement(\"a\", {href: val.href, target: val.target ? val.target : ''}, val.text));\n\t }\n\t else {\n\t return React.createElement(\"div\", {key: i}, JSON.stringify(val));\n\t }\n\t }));\n\t }\n\t};\n\tConsoleMessage.defaultProps = {\n\t type: null,\n\t value: [],\n\t isTable: false\n\t};\n\t;\n\t;\n\tvar default_1 = (function (_super) {\n\t __extends(default_1, _super);\n\t function default_1(props) {\n\t var _this = this;\n\t _super.call(this, props);\n\t this.child = {};\n\t // Command API\n\t this.setBusy = function () {\n\t _this.setState({ acceptInput: false });\n\t };\n\t this.getSafeLog = function () {\n\t if (!_this.state.log.length) {\n\t _this.state.log.push({ label: '', command: '', message: [] });\n\t }\n\t return _this.state.log;\n\t };\n\t this.updateLastLog = function () {\n\t var messages = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t messages[_i - 0] = arguments[_i];\n\t }\n\t var log = _this.getSafeLog();\n\t var indexToReplace = log[_this.state.log.length - 1].message.length > 0 ? log[_this.state.log.length - 1].message.length - 1 : 0;\n\t log[_this.state.log.length - 1].message[indexToReplace] = { value: messages };\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.log = function () {\n\t var messages = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t messages[_i - 0] = arguments[_i];\n\t }\n\t var log = _this.getSafeLog();\n\t log[_this.state.log.length - 1].message.push({ value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logX = function (type) {\n\t var messages = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t messages[_i - 1] = arguments[_i];\n\t }\n\t var log = _this.getSafeLog();\n\t if (!log.length) {\n\t log.push({ label: '', command: '', message: [] });\n\t }\n\t log[_this.state.log.length - 1].message.push({ type: type, value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logTable = function (tableData, type) {\n\t var log = _this.getSafeLog();\n\t if (type) {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, type: type, value: [tableData] });\n\t }\n\t else {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\n\t }\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.return = function () {\n\t _this.setState({\n\t acceptInput: true,\n\t currLabel: _this.nextLabel(),\n\t }, _this.scrollIfBottom());\n\t };\n\t // Event Handlers\n\t this.focus = function () {\n\t if (!window.getSelection().toString()) {\n\t _this.child.typer.focus();\n\t _this.setState({ focus: true }, _this.scrollToBottom);\n\t }\n\t };\n\t this.blur = function () {\n\t _this.setState({ focus: false });\n\t };\n\t this.keyDown = function (e) {\n\t var keyCodes = {\n\t // return\n\t 13: _this.acceptLine,\n\t // left\n\t 37: _this.backwardChar,\n\t // right\n\t 39: _this.forwardChar,\n\t // up\n\t 38: _this.previousHistory,\n\t // down\n\t 40: _this.nextHistory,\n\t // backspace\n\t 8: _this.backwardDeleteChar,\n\t // delete\n\t 46: _this.deleteChar,\n\t // end\n\t 35: _this.endOfLine,\n\t // start\n\t 36: _this.beginningOfLine,\n\t // tab\n\t 9: _this.complete,\n\t // esc\n\t 27: _this.prefixMeta,\n\t };\n\t var ctrlCodes = {\n\t // C-a\n\t 65: _this.beginningOfLine,\n\t // C-e\n\t 69: _this.endOfLine,\n\t // C-f\n\t 70: _this.forwardChar,\n\t // C-b\n\t 66: _this.backwardChar,\n\t // C-l\n\t 76: _this.clearScreen,\n\t // C-p\n\t 80: _this.previousHistory,\n\t // C-n\n\t 78: _this.nextHistory,\n\t // C-r\n\t 82: _this.reverseSearchHistory,\n\t // C-s\n\t 83: _this.forwardSearchHistory,\n\t // C-d\n\t 68: _this.deleteChar,\n\t // C-q TODO\n\t //81: this.quotedInsert,\n\t // C-v TODO\n\t //86: this.quotedInsert,\n\t // C-t TODO\n\t //84: this.transposeChars,\n\t // C-k\n\t 75: _this.killLine,\n\t // C-u\n\t 85: _this.backwardKillLine,\n\t // C-y TODO\n\t 89: _this.yank,\n\t // C-c\n\t 67: _this.cancelCommand,\n\t };\n\t var ctrlXCodes = {\n\t // C-x Rubout\n\t 8: _this.backwardKillLine,\n\t };\n\t var ctrlShiftCodes = {};\n\t var metaCodes = {\n\t // M-f\n\t 70: _this.forwardWord,\n\t // M-b\n\t 66: _this.backwardWord,\n\t // M-p\n\t 80: _this.nonIncrementalReverseSearchHistory,\n\t // M-n\n\t 78: _this.nonIncrementalForwardSearchHistory,\n\t // M-.\n\t 190: _this.yankLastArg,\n\t // M-TAB TODO\n\t //9: this.tabInsert,\n\t // M-t TODO\n\t //84: this.transposeWords,\n\t // M-u TODO\n\t //85: this.upcaseWord,\n\t // M-l TODO\n\t //76: this.downcaseWord,\n\t // M-c TODO\n\t //67: this.capitalizeWord,\n\t // M-d\n\t 68: _this.killWord,\n\t // M-backspace\n\t 8: _this.backwardKillWord,\n\t // M-w TODO\n\t //87: this.unixWordRubout,\n\t // M-\\ TODO\n\t //220: this.deleteHorizontalSpace,\n\t // M-y\n\t 89: _this.yankPop,\n\t };\n\t var metaShiftCodes = {\n\t // M-<\n\t 188: _this.beginningOfHistory,\n\t // M->\n\t 190: _this.endOfHistory,\n\t // M-_\n\t 189: _this.yankLastArg,\n\t };\n\t var metaCtrlCodes = {\n\t // M-C-y\n\t 89: _this.yankNthArg,\n\t };\n\t if (_this.state.acceptInput) {\n\t if (e.altKey) {\n\t if (e.ctrlKey) {\n\t if (e.keyCode in metaCtrlCodes) {\n\t metaCtrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.shiftKey) {\n\t if (e.keyCode in metaShiftCodes) {\n\t metaShiftCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.keyCode in metaCodes) {\n\t metaCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.ctrlKey) {\n\t if (e.keyCode in ctrlCodes) {\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.keyCode in keyCodes) {\n\t keyCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.ctrlKey && e.keyCode === 67) {\n\t // if input is blocked, ctrl+c should still call cancel\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t };\n\t this.change = function () {\n\t var idx = 0;\n\t for (; idx < _this.state.typer.length && idx < _this.child.typer.value.length; idx++) {\n\t if (_this.state.typer[idx] != _this.child.typer.value[idx]) {\n\t break;\n\t }\n\t }\n\t var insert = _this.child.typer.value.substring(idx);\n\t var replace = _this.state.typer.length - idx;\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText, replace),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert, replace), {\n\t typer: _this.child.typer.value,\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t this.paste = function (e) {\n\t var insert = e.clipboardData.getData('text');\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert), {\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t e.preventDefault();\n\t };\n\t // Commands for Moving\n\t this.beginningOfLine = function () {\n\t _this.setState({\n\t point: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.endOfLine = function () {\n\t _this.setState({\n\t point: _this.state.promptText.length,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardWord = function () {\n\t _this.setState({\n\t point: _this.nextWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardWord = function () {\n\t _this.setState({\n\t point: _this.previousWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t // Commands for Manipulating the History\n\t this.acceptLine = function () {\n\t _this.child.typer.value = \"\";\n\t if (_this.props.continue(_this.state.promptText)) {\n\t _this.setState(Object.assign(_this.consoleInsert(\"\\n\"), {\n\t typer: \"\",\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t var command_1 = _this.state.promptText;\n\t var history_1 = _this.state.history;\n\t var log = _this.state.log;\n\t if (!history_1 || history_1[history_1.length - 1] != command_1) {\n\t history_1.push(command_1);\n\t }\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: command_1,\n\t message: []\n\t });\n\t _this.setState({\n\t acceptInput: false,\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t history: history_1,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, function () {\n\t _this.scrollToBottom();\n\t if (_this.props.handler) {\n\t _this.props.handler(command_1);\n\t }\n\t else {\n\t _this.return();\n\t }\n\t });\n\t }\n\t };\n\t this.previousHistory = function () {\n\t _this.rotateHistory(-1);\n\t };\n\t this.nextHistory = function () {\n\t _this.rotateHistory(1);\n\t };\n\t this.beginningOfHistory = function () {\n\t _this.rotateHistory(-_this.state.history.length);\n\t };\n\t this.endOfHistory = function () {\n\t _this.rotateHistory(_this.state.history.length);\n\t };\n\t this.triggerSearch = function () {\n\t if (_this.state.searchDirection == 0 /* Reverse */) {\n\t _this.reverseSearchHistory();\n\t }\n\t else {\n\t _this.forwardSearchHistory();\n\t }\n\t };\n\t this.reverseSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(0 /* Reverse */, true), {\n\t argument: \"(reverse-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 0 /* Reverse */,\n\t searchInit: true,\n\t argument: \"(reverse-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.forwardSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(1 /* Forward */, true), {\n\t argument: \"(forward-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 1 /* Forward */,\n\t searchInit: true,\n\t argument: \"(forward-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.clearScreen = function () {\n\t _this.setState({ log: [] });\n\t };\n\t this.nonIncrementalReverseSearchHistory = function () {\n\t // TODO\n\t };\n\t this.nonIncrementalForwardSearchHistory = function () {\n\t // TODO\n\t };\n\t this.historySearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySearchForward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchForward = function () {\n\t // TODO\n\t };\n\t this.yankNthArg = function () {\n\t // TODO\n\t };\n\t this.yankLastArg = function () {\n\t // TODO\n\t };\n\t // Commands for Changing Text\n\t this.deleteChar = function () {\n\t if (_this.state.point < _this.state.promptText.length) {\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.state.point + 1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.backwardDeleteChar = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchText.substring(0, _this.state.searchText.length - 1),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else if (_this.state.point > 0) {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t promptText: _this.state.promptText.substring(0, _this.state.point - 1)\n\t + _this.state.promptText.substring(_this.state.point),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t // Killing and Yanking\n\t this.killLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(0, _this.state.point));\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWholeLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point)\n\t + kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText);\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: '',\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point, _this.nextWord());\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point, _this.nextWord()));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.nextWord()),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(_this.previousWord(), _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.previousWord(), _this.state.point));\n\t }\n\t _this.setState({\n\t point: _this.previousWord(),\n\t promptText: _this.state.promptText.substring(0, _this.previousWord())\n\t + _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.yank = function () {\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[_this.state.killn]), {\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t };\n\t this.yankPop = function () {\n\t if (_this.state.lastCommand == 3 /* Yank */) {\n\t var killn = _this.rotateRing(1, _this.state.killn, _this.state.kill.length);\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[killn], _this.state.kill[_this.state.killn].length), {\n\t killn: killn,\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t // Numeric Arguments\n\t // Completing\n\t this.complete = function () {\n\t if (_this.props.complete) {\n\t // Split text and find current word\n\t var words = _this.state.promptText.split(\" \");\n\t var curr = 0;\n\t var idx = words[0].length;\n\t while (idx < _this.state.point && curr + 1 < words.length) {\n\t idx += words[++curr].length + 1;\n\t }\n\t var completions = _this.props.complete(words, curr, _this.state.promptText);\n\t if (completions.length == 1) {\n\t // Perform completion\n\t words[curr] = completions[0];\n\t var point = -1;\n\t for (var i = 0; i <= curr; i++) {\n\t point += words[i].length + 1;\n\t }\n\t _this.setState({\n\t point: point,\n\t promptText: words.join(\" \"),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else if (completions.length > 1) {\n\t // show completions\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: [{\n\t type: \"completion\",\n\t value: [completions.join(\"\\t\")],\n\t }]\n\t });\n\t _this.setState({\n\t currLabel: _this.nextLabel(),\n\t log: log,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t }\n\t };\n\t // Keyboard Macros\n\t // Miscellaneous\n\t this.prefixMeta = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t });\n\t }\n\t // TODO Meta prefixed state\n\t };\n\t this.cancelCommand = function () {\n\t if (_this.state.acceptInput) {\n\t _this.child.typer.value = \"\";\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: []\n\t });\n\t _this.setState({\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t _this.props.cancel();\n\t }\n\t };\n\t // Helper functions\n\t this.textInsert = function (insert, text, replace, point) {\n\t if (replace === void 0) { replace = 0; }\n\t if (point === void 0) { point = text.length; }\n\t return text.substring(0, point - replace) + insert + text.substring(point);\n\t };\n\t this.consoleInsert = function (insert, replace) {\n\t if (replace === void 0) { replace = 0; }\n\t var promptText = _this.textInsert(insert, _this.state.promptText, replace, _this.state.point);\n\t return {\n\t point: _this.movePoint(insert.length - replace, insert.length - replace + _this.state.promptText.length),\n\t promptText: promptText,\n\t restoreText: promptText,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t };\n\t this.movePoint = function (n, max) {\n\t if (max === void 0) { max = _this.state.promptText.length; }\n\t var pos = _this.state.point + n;\n\t if (pos < 0) {\n\t return 0;\n\t }\n\t if (pos > max) {\n\t return max;\n\t }\n\t else {\n\t return pos;\n\t }\n\t };\n\t this.rotateRing = function (n, ringn, ring, circular) {\n\t if (circular === void 0) { circular = true; }\n\t if (ring == 0)\n\t return 0;\n\t if (circular) {\n\t return (ring + (ringn + n) % ring) % ring;\n\t }\n\t else {\n\t ringn = ringn - n;\n\t if (ringn < 0) {\n\t return 0;\n\t }\n\t else if (ringn >= ring) {\n\t return ring;\n\t }\n\t else {\n\t return ringn;\n\t }\n\t }\n\t };\n\t this.rotateHistory = function (n) {\n\t var historyn = _this.rotateRing(n, _this.state.historyn, _this.state.history.length, false);\n\t if (historyn == 0) {\n\t _this.setState({\n\t point: _this.state.restoreText.length,\n\t promptText: _this.state.restoreText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t var promptText = _this.state.history[_this.state.history.length - historyn];\n\t _this.setState({\n\t point: promptText.length,\n\t promptText: promptText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.searchHistory = function (direction, next) {\n\t if (direction === void 0) { direction = _this.state.searchDirection; }\n\t if (next === void 0) { next = false; }\n\t var idx = _this.state.historyn;\n\t var inc = (direction == 0 /* Reverse */) ? 1 : -1;\n\t if (next) {\n\t idx = idx + inc;\n\t }\n\t for (; idx > 0 && idx <= _this.state.history.length; idx = idx + inc) {\n\t var entry = _this.state.history[_this.state.history.length - idx];\n\t var point = entry.indexOf(_this.state.searchText);\n\t if (point > -1) {\n\t return {\n\t point: point,\n\t promptText: entry,\n\t searchDirection: direction,\n\t searchInit: false,\n\t historyn: idx,\n\t };\n\t }\n\t }\n\t return {\n\t searchDirection: direction,\n\t searchInit: false,\n\t };\n\t };\n\t // DOM management\n\t this.scrollSemaphore = 0;\n\t this.scrollIfBottom = function () {\n\t if (_this.scrollSemaphore > 0 || _this.child.container.scrollTop == _this.child.container.scrollHeight - _this.child.container.offsetHeight) {\n\t _this.scrollSemaphore++;\n\t return _this.scrollIfBottomTrue;\n\t }\n\t else {\n\t return null;\n\t }\n\t };\n\t this.scrollIfBottomTrue = function () {\n\t _this.scrollToBottom();\n\t _this.scrollSemaphore--;\n\t };\n\t this.scrollToBottom = function () {\n\t _this.child.container.scrollTop = _this.child.container.scrollHeight;\n\t var rect = _this.child.focus.getBoundingClientRect();\n\t if (rect.top < 0 || rect.left < 0 ||\n\t rect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t rect.right > (window.innerWidth || document.documentElement.clientWidth)) {\n\t _this.child.typer.scrollIntoView(false);\n\t }\n\t };\n\t this.nextLabel = function () {\n\t if (typeof _this.props.promptLabel === \"string\") {\n\t return _this.props.promptLabel;\n\t }\n\t else {\n\t return _this.props.promptLabel();\n\t }\n\t };\n\t this.state = {\n\t focus: false,\n\t acceptInput: true,\n\t typer: '',\n\t point: 0,\n\t currLabel: this.nextLabel(),\n\t promptText: '',\n\t restoreText: '',\n\t searchText: '',\n\t searchDirection: null,\n\t searchInit: false,\n\t log: [],\n\t history: [],\n\t historyn: 0,\n\t kill: [],\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t }\n\t // Component Lifecycle\n\t default_1.prototype.componentDidMount = function () {\n\t if (this.props.autofocus) {\n\t this.focus();\n\t }\n\t };\n\t default_1.prototype.nextWord = function () {\n\t // Find first alphanumeric char after first non-alphanumeric char\n\t var search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t if (search) {\n\t return search.index + this.state.point + 1;\n\t }\n\t else {\n\t return this.state.promptText.length;\n\t }\n\t };\n\t default_1.prototype.previousWord = function () {\n\t // Find first non-alphanumeric char after first alphanumeric char in reverse\n\t var search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0, this.state.point - 1));\n\t if (search) {\n\t return search.index + 1;\n\t }\n\t else {\n\t return 0;\n\t }\n\t };\n\t default_1.prototype.render = function () {\n\t var _this = this;\n\t return React.createElement(\"div\", {ref: function (ref) { return _this.child.container = ref; }, className: \"react-console-container \" + (this.state.focus ? \"react-console-focus\" : \"react-console-nofocus\"), onClick: this.focus}, this.props.welcomeMessage ?\n\t React.createElement(\"div\", {className: \"react-console-message react-console-welcome\"}, this.props.welcomeMessage)\n\t : null, this.state.log.map(function (val) {\n\t return [\n\t React.createElement(ConsolePrompt, {label: val.label, value: val.command})\n\t ].concat(val.message.map(function (val, idx) {\n\t return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value, isTable: val.isTable});\n\t }));\n\t }), this.state.acceptInput ?\n\t React.createElement(ConsolePrompt, {label: this.state.currLabel, value: this.state.promptText, point: this.state.point, argument: this.state.argument})\n\t : null, React.createElement(\"div\", {style: { overflow: \"hidden\", height: 1, width: 1 }}, React.createElement(\"textarea\", {ref: function (ref) { return _this.child.typer = ref; }, className: \"react-console-typer\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: \"false\", style: { outline: \"none\",\n\t color: \"transparent\",\n\t backgroundColor: \"transparent\",\n\t border: \"none\",\n\t resize: \"none\",\n\t overflow: \"hidden\",\n\t }, onBlur: this.blur, onKeyDown: this.keyDown, onChange: this.change, onPaste: this.paste})), React.createElement(\"div\", {ref: function (ref) { return _this.child.focus = ref; }}, \" \"));\n\t };\n\t default_1.defaultProps = {\n\t promptLabel: '> ',\n\t continue: function () { return false; },\n\t cancel: function () { },\n\t };\n\t return default_1;\n\t}(React.Component));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = default_1;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = React;\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// react-console.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 015b8bd03da346ba76d6","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: any[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: any, cellIndex: number) => {\n\t\t\t\t\t\t\tif(typeof cell === 'string'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else if(typeof cell === 'object' && cell.type === 'link'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}{cell.text}{JSON.stringify(cell)}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any, i: number)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn
{val}
;\n\t\t\t\t} else if(typeof val === 'object' && val.type === 'link') {\n\t\t\t\t\treturn ;\n\t\t\t\t} else {\n\t\t\t\t\treturn
{JSON.stringify(val)}
;\n\t\t\t\t}\n\t\t\t})}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tsetBusy = () => {\n\t\tthis.setState({acceptInput: false});\n\t}\n\tgetSafeLog = () => {\n\t\tif(!this.state.log.length){\n\t\t\tthis.state.log.push({label: '', command: '', message: [] });\n\t\t}\n\t\treturn this.state.log;\n\t}\n\tupdateLastLog = (...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tlet indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0;\n\t\tlog[this.state.log.length-1].message[indexToReplace] = {value: messages};\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject, type?: string) => {\n\t\tlet log = this.getSafeLog();\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/dist.tar.gz b/dist/dist.tar.gz index 4eb47623e6e2993d44093748b5d342b90535cfa4..8074278c9b09998538ca9b841ca415e6c19a1534 100644 GIT binary patch literal 26187 zcmV)1K+V4&iwFP!000046YYI@e-lTx_WV2ZDLTG)1`{NCV>N+XTXq6N92j7d%wT?8 zS!&w?SyHrM9ER_5Kg;{c-sd@|wyv($!jdqHGb6gIt4^K0PMxZ*9_6j}q~0F%$Aezp zcsc&vC-_@mU%!6!YW6$)i@)gKjm`Cq>s#5z*2dNA*RF4EZe7jRH#WDnHc{^r;8FrP z9Zy;#pjLXYWI;^alFfgs>aSa)tf|t^?)+ixOZi*NR*$Fs_M|)LubvG$(_TKloW0G~ z*0S^bXxM7M+8qog=k zg!S*c$Ez{c&y>RZo#&TBn7<$8lj*2mBGOlHvVMMU@mg*5 zJK1nL$-4Moe=^7>;IS~b&^y^{IDcmb3gmbJX@k->1W_wI=ytXZ!26xzlir}!$?^2K z)f0C@(VlFN8^BFZK#WprsZDEK(PP%@`NT_uH^MMz1B&H zPivehVP%9G`T)F}jHY=d#K$Us(rCDv4UU5@Lcm5>lweDNhn)TXovU5G5c6OcY-S&%N zYjXPHMSzB{;ZYx=hn1BonBPHJv%EhUU0B7VJsI{JF$Eo%2Z?@G*8^S3-Z_SYcEdHRTD6qlqr3aV?^mYK3pnR)djhuno}S^wi~P+b?{~)F)#~IF zzV1(df@XHd4fo`7_K$x!Kbx&~YS|IN{XWCr@nDp#63!5^WI5dC>QUpgHGX*Be>55l z^U>sDb$I!5)_FF3jy{g?54x7NW*h+ys~kh5SB4v~rS=4X?_{0Z**mS=X$(h$$zXCZ z%n2pCbLURhpZ0p$*V#i+?nYZ&n=ji$p62AwDQS!;MYz*u`H zTQ{wZP&inE8v+ugcdHbT>%N0ribI<-p+cwziVz8g0;hjLa3KR+w-A*rGwe(o* z7XkiP!Tw`HCo0wO#F~gQs_>s8qj!7V{;RA#9gU&b=chTM0YLK%r`-s>ZAz-46${*; zEM2XVXds(X?V|Jz%tpJ{8jrtkospCk*o=?y>)I<_1Do1EBW!ysSVsL{xe~QG@Af-` z^Ts%zJnf$4gXttNi6ovcQef-#2rO|R50bUv6W}1>zVzu#Mp|OZRp;{uV?>#0b&50Q z9D9kl_pX+0U_M|KI;b&Ew@2{O`RIpMZ~A^p=yV5;bU1Dd2Z$N7uM%owM!IJr5v}~1 zy*>|w5m1#Q*7J%P0*5?e7>!=uKbf4CRG_NQS|*;^IQRXYxT)2Z@vzljsbz0R`7xqR zJC3a47Le^2UY0F19#t@=)UsFk#dfx06uy=@qd;Lwyenw3^8fyCr?2_qqd z#jIzx_wKch@}BYD9I;>}QWWTYWJGqrE$K4{gKp;yfC&V^8BgxRe&0MiUR^otuY~qb z2@@{s->vfF7B>awxeg6tJ8~sJlOO{V<*k@$q@gUgfG=IDZXbX$N}bfmPWLs9vf7rw zQv^u$qrn^6Qxb-??72V$Z-SAF%O48PN|F!*owLOs3g3YZyf`9IE3>rrcJkxav^RM~ zO@t-|!V^>2&gvV1vk=RH`&tRggf}R=n}wy8sBMX$O?8Wc5pW^Gf@Zv1RdKm^PjC-{ z->0pkUVbk}0)TM&OWH;YFVdJmB}OT?`A0%CeN)7)QdrXg|H_h_q@ivI`vJIKdlgy9SE zt~(ZP7f2u|gzGH;P~t@&o~=I*P?|;JT;n}62#yNT&xB%Mf&VdLl?mF{*-8{7nZ|Y2 zRP>}G)%9|fD^Sq0ByN;6P(4UVB{AL>ZZyo@yD9^o91S`bPHo7*#%ORZvtV}<=?|X6 z>C%}O1Ta^JsGV;`YosyA2BZjfJEwN@S4N9c2kb<~Ak2f2LSjXk3SZKI;!?7~T+C=! zika&f*zwvrD1xwm!DwKMd<+=lrJ1Ko49f|xp%ZvShL<=Y`l$FO$CDOGJC!(5`sXD) zJX~Nt*)}N24H5~8px$j~mo6C|G$u%qI9F{+=D$^(c^OJ|)H&nLW zSKlznONh0Fi2* z5Io>nmRS)-(vEdrF#rmI%A;%{jb8?{d1}r+i&`#NSS1f`jE+l5O2tzICscbGHvwNZ$e_^^~UszQ+sY(G%}*nPB(QB@A6kIu#s?K^nMF z0g4C{R;1%bmm_3m5viH5?=ZicODAP*kYPOkEDX(vi%X`z=;HDE?F|2Z<&(OGB`m&j zr6eu_u)v?8VLe-Cz8z+-DPfew{YA7BJ#Ze4lzcBfmw#m^{9{!KVxA5j=fhsB&A1h9 zpGAx_C|=M96MExU_k-Pg-D0wARKZ5mpU!5nt6o}U#_CVSq}(bG9t)@7j<6TYFy znSnQ@p!aQ}5X`&y2!n`e+a3)N&mHd$CX>OLt~=PaVQ*qHDu5Yg`LCly3rekF%)2D0 z(D#s^zrLh?f(Cg}aoj1H<#OWM_)weQ_;fZeUK%o+<(c{TBYNW{HADw~{!08-H0$49 zTV$GA)EG{l_b}(gjHF6=zyq{V-Jao*Z75t)Kw8Fob{~6Z82) zYCP2-Lj3zMq-;#L1R}q(e=wm$=pjnNnU7K-=n{F92Oz9sjJ{*;dfVtpAJM!Ntj5{) zr3WQ$(Rt0~-FpZnd--VWyO;6mc+j3QnDK6~M5H(lvmi(f&U@I4!u?~H8g9D}%2@5;>F*s|)OI`v(*pGP4Jp#VZJ zKMuA6SkPNHZ2Kc@^E+>iI?dD8C=FrMJvmK*xMe{g)SV4sIxJJLb<;K5gfbN%pTwS+7XeBcNkWQ>ew1Z`O%M6E!<;5PfdXiUjq$AH0=v=qxXpL$J zSpF?H-@0a-&ImbZaD3m zYXQxAg4fr*yyhBVv))S}-~eE!PHXf8yQcDf#Bs8UTYKsW8@%ZVSjYyO^@IuDaMm-| z1e^6ynTDI2R_WmeFeG7%Qft&cooUO>dN6X4K>poyF40J1AwUT;yzVHPXT{C>&)L(5 zdk@Q0t*zbMz;J~`Pvht5V3K$4_s7^hS0$U*)nFjvg~3d!!CW<9u$j9*=9W_Wrg0TM zugVnNaOU=^+v`>Pre=LwZhX@Ln%yd8fLH~Xq-i!MdTfN5%JA#8b9;pEK8x2zya0>_ZMwty8x16`6 z>M=>UGm7&>CSG22CuC_g~g;X0MBv@2lZv_nY^#C=Y#sR5*J#gATu4dTjP9| z1bdZ0ZdfP9C~Y2?b|n~^sNm9W4ZF~T?k_X(nd!Req-GJbOgKniH4D~xB}F$aMbm!w z4MC`rs4}v{NNP(I;}j!E|hqwX&Q8p{*Lv{e8v%4%G6ppOQ_sBM*lDY~IDT+#Zk z%HuNRuE8IkMCM#U6egxOX}vb$wx)T&r_jz=GX{|xn?XJ6R0ixOOUUZTc&<|Aw~d=;#_+wy>0EQ)T0 z7cy;jYbK?BgU#i@Firsz!pJRYheK+CX?5}}LNDe5_k7zu7}%P$k>LeCok`#=z9ivs z2Dz+uqA=LO~%sNNh?} z>f@CI_RK$Fg9Te+ZWI}^fm?DwrvKz5A1MoBzDI(rS~Q9{WM2Kl3r*dVz6pTZ`pSAl zt)nWn&hTDzu~8sm>`I`3O&|gZr&xhqsD=XB6YxIk5JPBHahGscpj34*wEL{4b@u(3!;2*sr5~>}BQv7LHgLTaCLL%T}g?!D}oh zcpoMsS}>twLa?ylRq~0EwI|qMUW8ar7@OVsRM-kgg6!WC#_N38xYBMzP6(xLdEg__ zXqX|c9y?|6A`OQCGdh2U^al$ZAC&`VgV*^ZzPz})k+SpOTI@Du%VhZ{qPzZC5^m(p zl+{P2n`=Y_TH4D%JN{gx{n4qmt81SlUW3JUTXq(kBnoUnM7OU`u(2fzf(IhaKi^b#Ci(^m6rx!On*&#~rLm}be8xYs>pbM6 z+mDqPmD$9gfY*;K@)Z@$reyA1FLz$pdrz?ZGic1%t;||McG&FXuRvg)F3$+R*pIio z=)F`vw114K4glxKd;gZ*ok(auF}+BbvhW&1T9txo8Y4=2V-#OEV9DYu;uA` z&rS>JpV_^7-3~KbdpPe;Hje5+FG#kSRsY%PwA3D;Z68Il-WBJ@-D$3C;pe0DsS)Rk#2acVz)yW9&Hdk;Ci)_oPck2rB^8fPP z&`@u*oIW29RxV+9sPM)Cq1zFei54F@STY#T8BLWIr=2Dd7;vsUc2hyL8Pl~`rsqcc zbhX)h{dk;PI?60*b;>M0JFON=`9`<(FiE?FRvY^MU9~#qTv}bN(->(gLdg#M9G=LSOE3iP3j4YneF0H`<#gnVZoZxEbh9MrvU2sWV2&xpoxpG+^^ z%CyFUeokp4-PH0(Y>XZu4!!oz!?FvSr9KKLZG{nx;C49;m+*`6j_)a0elCGSqhxBA z@O&H~Cm^LeE<{TUtVe$Mpl{RNd+z<0**X=AIKcS*0@=4|PUtwKNrjNlzB~{F4pFP9 zWA;cO+mu>spj>{%_3)T?Y94rxJ~`<(6wL`;qfQ1noR6oX(O~nj zw3I92>7@2j3S8hIVgAc#FGc+0DL!TMucW%^;K%9ndqtshJmv>D>N$`X@WqR1IZk~l zGlug2r*pZYv~zb<{Ii7uHr)1GJLYJ{2k6|a;2?p=97GmSQ8(iOLqIpqvbs_suV|q*qFL zlTf^;I-Axx)8Y`PWP-)|8J^msRO{Y?$C%Nt@-$G%eX1UjHT`mtO<_h8c1|`-Yn#4# z4@pR$&&!<_4r$a%7LUqJZBk96r_^a7M0inwvhE^6m3rPcgfd1J<$IiJiSJltJNA4_ zUsE&FJc*{9TET7?IihA!&44GuS0HSwq#B^RC&M0Ix|wh_n^~P>oHNN!{ot(sNp_Ct z&ErO*_($F06CUFf>WTM!jWL0)u4JWeMcDT20nOvLzU*VXpoFK=31+rN!U;t?#|MXU z{rZG`2Q2V?a&R|0LTVbBcmZd%C6#z*@9g=C?fS|U;%WOQm;?^dMB9>J_>Qx}JfDgZ zSrvrv{vP@$YP#oSJa`F;*lQR-Hxx+*Iw@qffuJAdBdk`QapRuo*C27a4XY~Gg>cBg z*B+O146M#SYJ`LUXi!h_h?UT}es0Yi5R3C+0UosDEx(F)^Vp1k3fqaLJ4YgHl8_3E zBhU1)Rt0;BVOLatMyt80FblrmnC35vu-O9HF$+DxB$=&n zbO{7+HS8{u-&J-41;Y!d=b^r&c}rbcbXP6$oVSNn>VyXfsso^6$uWX6qyQ4R|F&wb zGoz*7+&V*pESI^;B46IHc2~7u$Tr}=_Ke6-460d&6MV^O25xNq?s=N|r45R#%)iC$ z!ZFsejdQm2fsG1Ue`P}fer6#4c^XAvBhfJaAit0|6Y&v3yjc|-(FI#L=#KflgH|8k zj|-kiRE1dIoE8UnIp^%jaC{AX!AD(gT!`;M=Zn298jX|z8>tXr5qExM2RO?K%W`B$ z&Ue?bz13@O$Zz3X;V7%+m=|mtPx>%r^g=Ig5dUSo*gOyRA-nKH{qRvkg^_u$m2eM9 z*RYsd_-ET`U$H(#xqcE`aKT;W3z+OWvXH8@p^C&rl5(`$tPR1T3Bl&>zq#P znK%p3ch3vPW#78zWA~0dzUUzNg*YH!?BEU|!1mtPgKkGw`R&X30FBQBMAWjCi69GY zOqtA2>@*;5YYrU+Xh^ONkcujzjr zjz~=HvT^881@A?aJPaZ50hVm1efsvT2rVF#s%JQuh-HK?cBJ=PER>BlE_58`r=@s6 zL+JrHpY~LyW@@3%lY%JRF(TpG3NPWztU1@Zml)+j1qrW3SsbSdih?A{S*!fvE$TkX zF{X#sA|^&_dP&5bcLPH)07S`p9Dla@Qq?j~sqv_fLu{S0aUG zYIgG`^RH2|)mAM!a#Ly?DBjU);akRWx`^_!%~c)a!HHxp7UdO&0`)9`=e2mG`Ru*2 z9ZO085{{j?S?t~0kyR<&xxSsymhkVazF;aP&U?elFXT9;mTJ}&k8}b$m#OSNmzN6`S_E3@uu^@?9#~ATzaS4vhHZ~xi zvNN$_2GM{iup9DaE_@q1?7?rW?5EaHW3kkrF*!=3bfegp+0P8!bO_!viyXr-j~8dE6ZcI8Us1}Ie{ zx3Ga_!Bf0g8nuXoUNzDhpyp%M?8g2D07CI41i;>B3n9eWo`zS-#e|idlt_nOX z#6@sO3-PIJB2Wa5RbB1@}b7q?)N8yAG-PZYBD~brH&k1 zWnE>q29Ve65MR_*aUo8_vcE=arai2EML)#6k~G(X5tiCV`Vrtv$<49B3Yd^BPQm=gIqQ&I7fb+&KS%PyP61G-nhU4H9!_kvOwwya^5)I5oo0xkuXJ!k|$gEBn zHNkM(#5RUOA10rD*FDbL7kJlMx$VAKOdFUCC~DaRBbE2ModftUI=719RqP2&VQbh? zYdRT-qLmCsG(jE}l-Xct5l&%4_4#q;#%R#@4L9N(cSmFF%jpgAf~wgx)aKcIt>X#P z`0^AlVb@DFyyDTFt7d@awZk6|&(|9Ho4mcMW1c33U3?fM(8K4FG!7$Ka!H|<_+p%i zKGonDNvaqcio%T|f%&H#ih&sd@hIzij)9k2Km_4_%W7RHiXqA9f+$L2z{~^#pByMM zOCqaZf6@4oqPe`FY_PZy@zFHnW#1tK*H zko5RMM3BWwJ?iD9vFUT{C(?;8#QoxcY9Jd zTSfV=M$Z|~feEcfY#+1ZsDTu(V8$Gk_tlTAU`y$skKn2O%6#HP8UP28sCu3AyoZe+ z`GJ1@JNw!z51sQYE>sg@R)0ZqNS^6wWmf-D4%-Yqp$2k^8&jL$lk?cWQso(*6{)GB zsHqEXkHpX+U$aaOzzw-{A9Q7j*~;@SLiITw;0ryIRn{>KC?kqxD;%aChZn?ahT0kQ zjEI0AJ|v)1T6wK{n>%&^dN9bh8BWa|9rp(3u&L8- zr<3<#@24_F#koqg?402{Pgr^fElvXDs%Z;~zm%VlAaNldAvFP;!2;tFen=9yVw&s< zv7xq&z%DFvUwv}L<01A8HBWQ8h82lx(cW`mI>F1=1dNd=k2jIE2fe`v&-9CTAhth= ztMFBnlM$zH%>^nWK*-EcLaB&67Va-r^Ebo6Xfg)TFJ9#1gF$E7gQ~#>#dCq-OpA!CGBq2fCm2f5=O6yC z_T`sfu5q(Gu3(y9u9*@yMy#F*@LFa7(E)8 zfh+MLLgVF_W6JOT^Y{61peUgBc>D=aTVG$le)VehJN%2k_}}%-&5g}$V{7B;^=sF+ zHn*;3>l>Tbq~0gMr37+{p?L(2UW`EOMnKEF}Wfgp~5`v<;^(4W+G3|nv9 zyq2HcwuQ&7vu+QO+{!`T?+xJkR(ATG7Tz*B81&_KFMrwkVVXU`hh=@)h`ZbhMZ4Vz zQf_(cEc+oJwTjQ0@F!i&guc(u(Sf+64HjibRE zk^q;qjcbn9brkW5jg2-rUUY>I<7%X~-q^^`Fnsi&9sgzUFc0gx zh=PSxsq}ut*1I@2St!Oa_GdW6et-xn(tF`b-967X#>h%w%!gd1)Bi!Rbv(ki?sgQ$uUW^igN4LEebQR5(raR zw)W-Rm;gf#gMu&Dek%|7@7-^~20l@MhM}=~{NG&1xPL7g|FeMwRwr+5 zuGGRdjkTg?O~!AE6)>^LNBveWJ6w6pNx~t%3NQ=67>;7)d2OXn2Mh#p3Ae#{2JTjF z-`>F=ewsVH+%I3ok9c33?(Xd5Y;~+n<4UtY;n}z4ZqhAo%im6Of<9Y2JAbP+(UU3M z**~g1U>SZM2u25d{7~zFmbKm5&%jd(#=ExoFSmAYqs7(TS{Jp)P2TkOZ$FWuo2ZYX zCp!;c?$`cGxZm#V@74AJP1`@&`OBkP7qz;(sMUPATN{uSsJ8Q?)X-`Vb~c+gOqUOK z`g=RIF(I?(=47{afu6g&Z1hsVG;8;FcJ6C?x$+&N!I6d8+^emlv{SplqYDA|%dXOj{zIIE!|1tLJJ{I~E;j>WTSAkd9JR~I8c&)) za6h+!LG#vb@I2KGaD76ozcn0GUa-qOcexk9kS+xmc61vRU+)H3L#BUayM5`sw@c+Q zjE`CpJ2Vwg_-V#9Jy~+);iRbWL_;H+{k;HKs=6ooWN&BZ#866%PQP(f>y;wtkrAq) znLlVfsE=uZtG(J89{)&o{^XS4uT+AkI{~2{n8!`7L=27;>A+zF&53lQ5{!d@j+CMQ2A7PiqK*i)#AXUVbJD$V zPJYk=S_LG|MYlYhX6-LKJAa`Vnl+KXT&dfrJ>1!82mA)#daAV)W5_p4-J^wx6CO#2 zawR{~^-Qjc`Hc3&!Tx4k0Ymo#)Av00SDvs+a%K~YKD@7!LExd#{_??x_gsMOd!a!# zd&cM^1LgpAK;8SEl?>;-aaIy3dVv-gltAyks#&VGD52K`Y1e|a7(b1kzg5-uJpR#* zeIB4~*J}p-N#kOjK&k28WJKqni(Y&OUWkI25MU7r*e0-O+I=m=W!W~^%Oiy?AOx7j z_U{S;d@@cGSD~9wA7IG{?Q|V-S?9RiTx*t$Lhu(g;~>x^-?tLSXRTFXHjs#$o>5aWj z8L=M-PU)&DloM$bQZSB)C^RICqiogX$- z>QWsT|6tfFq~TtAH3)e?!eQYEFp#jRP0f56Mo_Zm^ z>LG;$&uo7s>~TM&<64>R(puPK?P0&RiAI}d7NVVQMQjN z&0p>rsah$2r`lKZ%GBf_ObaWFIVh7cn~K%EVNKsc`ExKvNYDPqV;P$WD z6+pG9IT&kWjkKuv7-FBQF2e(nnd49slup4^=xe~O!Yt5uIfr(oUeG+meO&r`{S;WgyL1h<_^Z06F3i#&UKSb4beQU&0yCA~Fze2?5?n zEE1v)fpCnCK%LDb9PPvuq#{#F)&PK^44Mp3U?aJk$6=}{fz-FGjHq0?7xD6ng+Ih0 z6w00kgAgTq8>3DKpiht=qgvo{x~t(5JNyQ4cCPQ%uEU9}3tE%?+8J&nX?DgKZtt|o zRM6SgU7Gew{3B!Dfp#wZ5SBhcc-yflvHQi87@sn!f zwLyB3D!7t~llk%CfPauG^F#r4#QD4@72)VKlK}Ena|RNd?umd}md9YF1}V4s4>DR{ zEW%&(f@{Y6?gliylHs0DnEb>Y5y2cy$Q6#sk4Fby(F7tEZNz9&yKSOGGack(>dZVj z0KUpq_@F<+H38tggWP(IJ{@?0%pbC1>s}ByeK0j`XYE2rq)9&AV|)KaY#}xm8B&fE zFVQptyWOUXkz0?Z^e1J2Xj~C=2NIJW#E{UdN(|&e5+A5K$+UnWAgMaS2x9Z$x>9MP zMaC-akS$Elv&sdvAD6orIwZ&bEj^`})!)eH{SW2y>t#(;v;aTG);!yNV8W+D{c)i4 zl}xn&_k$5=c9}?76c5a|=`39C1>Jdp;7X&=;HmWnGaN>QuiOe+{z@QAS%qT!8fFJ2 zFtc}24Co1lWs9gx@GyrLoJCaftHeFSMV(u*JWxiA<*L)zRX8fl!}-*@>#-u z(HXA~u8hM8W-Zab%&Red% zbi%3>j65Fg%IsFIO`H)iiCQL)hnkX=>+g~Xl>9kQKLIl#$!$pbSmPJAKz&OeyOS<)pMYRGMZD>i4giUr|J?=mmq5isNBdg&~zx~ z<8!cGs&Z(64xyiF=jiZUJA`2@@<3OaM0MZ{=Ah_w*DPkt(6|#|0v|(Dg6j-0Nok53 zRF39hfYH2#k>w#=RHVq{h*xA#FICz9kyMSX#~|3=`4M#^SZy;A{Sl2G*tyR8+l-?g zer*nim(cE4K>C%2W?Pz(m?4hJ$`TfeOuUUdd|_e%7Xt+aA+FL-vV@1_9P%1E6g)6H zl=uJw3m#PJ>3gdqMJ5<@W=Wfv6b+-;VSr-5F=R95h)sr|HUe>8@sUnfrA$cY z)ooS>Nxo(~jC7lV3#>-!k`xp3X&PCOkfsh`07)K5geF(+M_^*au52Sb5!h`a;~FX! z#27(h;!!1m#uX|gY3Ta?U;;g|5|Tv7Qk2+(k$99umeoyuGl?uE5K2Q+sL86-Ra+I; zP~ionmC{D`2{UyZ)80It^BDm4|5GtQ7?o07vI0&u@hB-x!#U5YNcBPy!MFK|e@Rwg zzL_}+Fwb%iTgno1DiN3X@L!s>DfUoK_v8*qmPLg^JZEVoaJQNk%?jZ}!-={uRt69G zamdrN|6P+CLaF@tdVYi#`lOk^5~mwMp4}p9E1K+ABa23CaUIbA=4is|BF?-W@E0xfU)O zr|^<-R(fjh?ED;#L{0|7bV`Z*IbveK?++i0s-kw0dVGG_y|F>^7M&BKN{+P)5ihf#)*0Y(k5R9_141qSX(6;c>R!Ezj!*Cd zDni<)z?wM=dDlYNDLjk4SBaY*Z9htho;WsRLj1`vX2fhZrGU|$B^jN-I0(Z&A=)3t zXva+v2F$<}h`;@aYW!jBW%fY4gJ1-A@yYN!hq9f^S_JlJ!WD%ZZ@hwfyNa$P5)y+F zrG+M8DkS&#Ne?_iis*R?zPDSc;(mk?*lzFJcsL7(1u~`zNMa|h7$znpS)BK!^l8bJ zz1L`89o+~fFe2SO6;S2*>o_5#V{769ZCtb?ZIDBdHXvSi*_h|P52|2x!_D6xHkf&0J#U$ac<)l?AU+CEJI0)~h zd-5n8NnN4YxgjtqGwJDZfPF}l_ZP0G(%TntPk9*Dx^5-tGGkf0m^mW=n>RuI&^U!s zb{(V*CH6f}UJ^ z5X!_8AWjhk9hFiFKkj`VX~R42w0i{oe&SxhUfP!s2aY7mOv2^zKVs*k?B8AN)h^sA zt!k>oQ=(k{hkB%X1!b~BnYi029=+1{FQ{_}^Ed+1`P+)>%JBa;YiiWi_?l!m6*G!I()I=y1a@ChaSPStWL)u;@U(m z-rl85Z2?qNlr?A(TI(6u0i6AqE(pk=n8-g}7rM6!rfBf-cU z{*{(+Z=LX6sb^heh^3ULXeW5&qFy=a!tvf+#>NaT#Hnx)OcYxv;%L6 zn9EP0ri-E}^(;z#hY}V^JVRoI6?GT+OG8zi<(;(eKmZCR?n<;2Z&-Z>x{I`|?vsHU8tvYN~s(2Qi?O%XS(Itj}mNbIi>rwX0a63jz=`yk;8DN zS%?~owt1GiPDS~!lKpXP$AMMTrP&~u_T369Lc?rH`g-n45XB7fGl*{B+~&P<=vQ;* zEDfZ1S`PvZHJK9(o8FC#Vw zNU?SN7r5|^$av^x^6G&}P)qe6btSNccY?TN>&zw!&kDguDoL3~Pg*Bvv#%~=T8R_G zq>&hH4wQ)vvD_flrFD@jQd6M&?HOTW%hz_Y2(-tS$(6g6S9Y+NA|3j!6ZolX z@x8E$po6ov-E}xHI)O+ZN7{vS%+93n@5M3N=x)R?0nU9FNKE?Jla&NUc_jhK&>5RS z%|uhAZ7|1mAs%wvQR#SzC6qN1Ancz9VPT-6IPr>{5F=cZACO+sL&sBTgM^tY(AJIt z3vEC$oRXBL<#wq{s=ja!!t*tyBb?xb;Ze|*=8S)Cv#_w$h*i~9%as?IzY=ITShxxG zl55IEy|P!B^mZrGaHOx)L?p;0jAep7G(vbKm3Sqkr35CyeFQaWS@b!2gu@F{Lpbyb zrQi|Q7xB_FZm>}xFRn)lp7=?RFh1yL%j&9d*8Pa*p857hWE@n$GS%VkLXirnGFy^x zwO7Lm$j+vqUsybjvtJ8P;xJcf)8HVllmUqIk?L~gMJfogA#hpBkl3cekjR#W42czi zus4qs>S9Q&SuiAWXX)L2Lc8Vbr`*Tq^+fnf?3drM7YMRlO!`BOY|LPo?o z@oI9!O=)AT=Y(gp=a}!b@@YhvM^#hrP%V~?TF%& zx@CWh`6^-pD?vX!30^-@`JswAKN)!AR87clLxYKR*|dWjP}&acu8JV4Cl(z=r-TQU zj1UO&ln5%8Xp8|{h;@ZJ$`&h1ZEZr{>8TyQ&;c`F3;{W2wJ-%W0b2N3I56E+B7x>i zeF5vOhp?q#cuZ@mUFcEHc7uaJV_|?rt=OMH@Hk)vU1RR2r&y3dxXI0fCiZFw2k{fm z;T-A25l_78`X`_by5(Dombu3>81CgQwG*;cF?wzZW85vdibF)$n6!mnP0A=`aopjD z6dZ3oVu*n}_9-kJF%s`~l3ZYCMst)^4owB_VCb|$p86{8sq}#9u4lBXBx-Wx&@R)< zaWPaQA;ob*j~F4(d?e_v%I+Br<=|%wje>%RRk#PZCD$ti2p9cR*MH!6QcwLLBUD=` zL1KVd{}R57Eyy^|2v7WvFiL}egQrtTVQ)0EE6p{E((3OhictO?U$L<9W&}DaGI=P<|c$g^nsR?oA?%e@uj+DZqcxxmMwyw8E^8Pk+B7P9E>1(K_ z8B1^#9Ox}B;`_Ki%BtKS0#B<+Fv~FT> zL1-5>68>5#mej;Y^WM5r3ghcB@ub$WK)s@H)s@~4+=v&EQxim4J}mHEXfnr{pjmpL zfNd~*)2S_FyOsCVi5@d43{r8afxs6#nSREab;}D zb62iJZnNu&6f8d0BM70DjeU2pEI8*PO-Nx0jra)}D$pW5a{LVDGJ*;<9+MRR+>WVc zJF=In1Rqk*Ies-C!r|CqzWqsvTj8rrLWIZ1Llm>FglK}DCdP5;!TnHK&|`|(o?mSf znMl22z=pPjMbo_HFN0YmZS<#rwc<8Y-3f})r)Nn4O@3?4(^~-oVikPQE6zePmj#JR z8Tsl>Bn)mm)j()HQWCguX&ze77G63DL@wMXlyeihrElog<%Y8%Z`)vayMvL6nd%gmR4XUVCd2el@E5-2bjt8TX?dn`o*&RmIhAwrq)y;$L+NI`zk0wE*tLZTZV z`+>ie3Ia%vL)FkrFi%Oy^V=%JzPfW~h|^yn$ZX#LEe%mWY^`G$VhW6L~3IU&mDz4XLxtYvrw zQLI3Ho6tf9!R>v;MYwKZ_|JOD0Gh_s(;apa~7U^FRk8Bw+8a!PlgAk5!$!Ekm(co?4S%pDiAE8;07$Y9&g-BMlSDHHhU znhM7Wtty=T1gppq4MPSCA3a!qCGwP~!Wp^pc-k_4a))2(R5Ov*=+%6rL)y%C3Ib8^ zk{`4H!vP#73_`GO;qA>>If@Z@OWcgwjub9@+i1%dBHC)3IgKxb(TjJN=0=%{dkX|{ zuV!Qgbpi7=&jA@G=Gg(zC1wd|xeKIhA<{aYf3~^FGYfEE<~hzQhB!bPM4Ht-sqKZ0 zE7}OrwVVm(48{zqR0X}tr*y$%Pn`#D740eQg`Y9NrypYfXT`K%dvC#_>lS;kM{!_0 zcVAW9+T1;m!`sYpT^#nkV3kx3^Wc$Z97Nm-{Ex^;6x98&3BI>Mu7fPtJ(`$#7rx7j z9#|9Klsn(ty(jx8il680U){ZGWG^6v_22T_a$Bs3$9uOC^~ty9Zp$BlzJdi}k;dF& zJY8?D)K-qWy?kYRWt6wtlX`p59}jwY zo}CRk(_WsnTkX^Qu#fWBtx?wPk0-5OFYg@4({Xkud;9M8VP7hkhNJxFX?K)o$J2g$ z(jDkCdy~C*ah@LyTkTgbOuZK`R<*19oy*x<14^)Hp62aWS@+nY(jBA!0HMQ4_jonN z=$Qrf{IVc*I60h*^2v16FCp)%Hu5*a!DuqJlxX*0*d)(dSwBCwD6F>nooqOrWL^BP zKN(~ba7tKYdn1<&>+a0xk&JWrncla-%bF|fcD4UG;MhONozix)zRf98=I0^H%s z;YtAFJLpITdmdd_1)$a%ZW)FOJX4eaySlC-B@;p8kNdlicA5{eZyr8;y8k#^Ta!{_ z$ZJP~!DKucwT4+|GtW0#H`kAE9pBo@Z`|tStxdR@!<8xck1E~v#9-PzqrqigW>AjD zbWGXtXmFNY5+`*D#FQ%RJv<2O)H{Q-px&j%TG79a+v72x0}`Cu=(yF+Gx$0BzDMY3 zIKl65EDmQf9H7qE+gX2lc9f6U2+poI&9?>T{)v?IT1R=WP|_NmOwYh)v?Og(4~p0B zwZ`LOUr<3f*p4B!(M11)K3aZN#;Er8-Ce~Bo_5l0XPx}GHSH<7+eNTSf_M_TIU!>^ zt8c(v@ZQis?Jy;VhQpP+&>2%^sUZ2io)pr0ChgO1502)o!fH=P#zeC zJf{J=rfwXx`mGbejlE8#<&*rZH9Q@RAW4-i5MCG5wO30WKkd^|a??)?q zR1l&V2Gm6kD*$g@)kK zyX;kdap!QwDo5rt2!$#3!PfuOKN=5jf3?Ow?nbn{RSkDBQi=A)czUGXZFRjCP$>Mn zY%kR$OcB~wYv9ja;WPL~)|I1>r>&!2elJHjKYHXtky9xc zyO81;6%PQY875c=8g6Us)Ohku(}ohkQvrJy%4FmJRj_zCc0oj3_3~TD8|n?kl8Oz3 z49ZdJT*Oz1%Uc~MRzCS^GAi63PTm$EG%yUWt|~YiEX5-d;e>r;f)71@nhb!Xt z-ew9Sdk5{XmtU<-PL$)r==`@-z5Y`Lz-LPBKJP zE$D>GM{s+#ZoOODy5Ghl%bD^b8m=c)Xh`ZxX4FR*go5I*WE$5GSFR`ythUV{_3}HX zL|+LocMAf&yr!)E*7a#|&fKjjAY$jihRrq`~pp zz%iw*mRpmNYNs@SY66HtYv(=87$Eps#!Kiew#Gx^vvFxO zxa&0c&fS3JjA>MhP?b|2r>}N$r3?(|VF>%S3mKycSntM4t?8odB49ucv=c2$$~nJ7 zr;u!3)JFlR3ix#v+!$??60eMDlmoVS+oS*;!IAO-Ds?Z0W|huqQBVZ~7XD|vp>h6= zFh>C2E_jGr^>cc3#e~MQ=Mn;&k-_B=ISlqSHN?DTF<&Bs+C$Bl31~Xc?QCZ>YF&IK z!>AY$fPx$42}owDMc2RYs2rD@N)9V z{*kQ`YwbQ2a=*U5VjbD)`B70Qkdz#%6rF@dNM(tC%e9$$i zsK2%PuTb(1Fv|e7!5$VHWT8PJKF(j~qj4@^z8Q?pTO+2=Jwhe*eu6xkdfgN+TJ3f| z#3T$!|A<&Fnv6mdnm z)7JO<-I$2p-~>&qxrn|Wa<&8{E*t{I;y%g)0$)K?aZQ#*)$F{>RTaEA!8Q7T2ga+J z0#pdZZd{yBIv2>N4#zbEPULHnU!skpX&dB4lOZu=Hx(aGAzQ6sr^_;jWKNd3y0_Lv zi^>=`Dk{e@EYO*4S>13?L}xgpxDrvB?QGo@IE6t|=GdV36H%a5pKS>(JAf4^PoWR5 zJBebaI+UuhIuhYkCMFL$;|3DeH0qKn>xYz4D+-lFO~M*hNg`ANEs2$+5jqfrXQEXc zZm=RzN}qed1s)D8xtm#eKtIHNf@HIL$pjB(FtUIsi*C0wF4B?iws`YmReh#t6f@}7 zUEF(m@Ey%~2h*Z3na)9}KWTOQ;#63x_|!V5_(>@VFV1!6(S2b;KG~g)FF-ix@EKs$ z<$NNhvHG^4uR`QI)p}th!u2Pu;~YLB27}n|3vU)!&^xgyPiG&|Hp{fAXB(LO==uZ@SfHW{CHUc{J=}7jSYVV5+4D@M=0yCt z_dvn4d@;K;(v7;aQ?OJQYLDvOK88XYcRAbdTPINP|H2ykWPUKRh{t%Z#bL^s@ehV- zEZ4cIiVM+eEs8PhAh>KX9T)VXaxXuY)dxmaTQ^MABWx7o46b?F8ikcd z-IG&a`xUUj=Lt--9|$@))Czlv=E=UN^mHaayE$IEuKjRH0#F}?hPxs3Y}=y9qHE{rz(`KS?@Wpwk|fev_?d*;)LOq*x@p`nVo7VUYKW4OX+IHQd z6zC=Peq~P|?mf)*AAV!;K~b~*vlRQHn;QnnpQnRK-nri&=c7rHRj=bFmbukUCUKLi zrWb5K>yNq3kJd9T_VdbOb;BwfC!VqOH0x7a@20J1t@uH*{zUps%D zGoS0$e01t)5*y3Y6LuGylnH_Za!J>JhkEe-UA|;q|y+ouaxO9!8XGZdx(wh<9%= z>i)u{T<-~kykhGMD|}~Al>MW@uvl$9>Vr;5ryoLAr+d<+vdBha?7A*C-iRARXDSfKxl}g37B#*eH%5F=+4y?Y z_(t3qVL)Z$8&Tt%abp-#W#gMs<6CiKjBk~VZ$*vkQDgD&m8~z;FGcN-qxLt7qHY~w zqkd5>M^TGnKst#dtAqLzygjfVHQKUK?CilMJ;b>f<8&~jX~P|x3X*`b5oD`^v%=_ zpV((6ivcx4b~NBy0SqNxc={}Fn1;_?`bpK|aFQcyg}GUOVpgZ33Pw;8(fKXqd1K6Q zZb2-)T_n-;k3RvPF~b;uMp(GGu)6!1ObS>uqn_I;R3%~+et@q_O+@&*@?Q_%04sA@ zWTGvs!e|y>)W95jya8}$pHp1f*?0X$zzX0mxr+S&MY zFzt1);{mZ7UUQQl?r5?0Jco;w7>l&!N2fk<=2I5qWM8~p9YY#p^)|P^e`OM?T$q;~ zVI#W$2TFqqVa8Sx@uu2s*%W^z;6c&bNRIaz06ovXFdO?zpyY7?;c#+<#obr3Iw?kO z#G(J_$|7Aj$dn+k1Tc8J0X^H58a5ocwMfkdm&vY^Ak%e`lwcX18}-cg2$O_p=sYK& zLOUoeM%bMJx(g}5Vk|pUWRHoCP}}lwg4C(bZ}_e*lR%-wv=L#|ENwnKK`xycc9Y^M zamkG@Hmi%RoF4Cp@+8TIeuY1y8wTf)A_}ngnjocCXMh2H_4kU%V z7^qRVxUX8P3NJ zxoAVq4oaJuK72z@Qu$RQg#@<{upEkk-}0NO%#h&x%BRQPWaF8%eh>W52Cp?sxEjp; zKRwbm74yMZ*MC*C4X>FEdJkT6S%yu6U3kA9r{5E2yYlp_<6ZJAt$uen?O{V+Ur&ZG z^J;n;zZ#sBN@>(bEqmSp#!@>b=`I1geNT4|=ycJWcWD*hZHHPS2(YhVCI^2a=Df$J z8|tHghC_MVY^pX9WlXw>2X)o{R2RL$$iNGl!a_yttSMGPfvW({e_36~NGmoZC#!38u~{T~Wg<$pvCpHYav5I621hmKJ6t zSNK*wc9!C0%oJR_JtAg|RZMl5K^(sP40+}tqU^D_R&WNfF7_oxa|3U)|GR1^s(0%O z@ABc{|Ngh0ji3Z*F{jh-E^TN38#sj7Hm(Q-)!!{R>x_mXRfx)*fzyT3TPjvL0u+=M z<`a+r;C@Z-1?KT2qCF66X~G>*Zc_=m0oqQs%es|P!Ov5-zA^7W&C@MI(Z8Z@Sr&K& zT2QxAJo)sx73?jGRVuPC?%d}aHHF=u^Y=l-P!X z9ruB!4IccC-$=2%rT9iB4I57_f?TyZAjs6<_N5?lJDgkz=Nlew06?*joVMVP!)lUV zzwn~k?2#=_s4nW@ZIWZpZQz~F?_i8sK6D5oY4uE$c7fl%IAB+S-$4yMcPh-Txao;- zxHPABOt#!927Ye%vx}95`8DOtx1Hj+&dsg^>dbUVu<+TdBBow53LNmoRU8oDfaR6< zeRS?O(>Rzu_nFez`Fix<;9g8JmRqG#Sy)c|`3#yFSPn~MrsA_Bi$u5VI}jnE;9wYl zwpYuWZ=^R)4+ya_?aOj^L6zLhI1q6_nF#o@gQ{}Y=cSO-tIPXnkyirZiq{+P>x_gq zg^9HfM+=TAa0#Wb^MMCwZ7vmZ%5ZF55!?KBY7ojHC8vTjQc2+`Ao9weFBH$__;g`K zNOZ8ED$qlPuNg0+8zI>;q7~HOH`WaD@5fWDQ2tY?h4;@+KcFcgqf`17J{Lh4AGf?t zeFUuuUb?3YJ_j{OENgu3gm2aJzW=gx(@Le^N7_AyOYAv+b@;aynq>6&C-gS$fX%;YRzV? z^0U-ondKIR;`*vI*HPBLZ^`wbfIX!cyC4*#wiZlj)8<4zn2>#s_cCy5Jq|R}H#FpZ zO3l&8rfuCUgOx^kX|_s|uwJ~vZfgbd0;DIy9=;{PeO5B-JI09~a_ARdT|dW|Zan}+ z%X@xuBhXv#7#d?j!ZE>ERJ48v{NdU#j-Wy-yLD0vxi#{RLPUISxbEbBj>F$`IbOK1 zzf!__IUJH8ui(6ruM~upnolTU@`)a<*e6K(vUU+F~}=gk8tSSV06aSVzVFLVucgc$@phN0dVp)#(rue z$_QpFi|*hQen%kB9T=^WwyuZ)|9k}~;0HFJUJ19J5{LqDjO!+OW;B%bVv|4GN;slpMDJczud?kGM}bJo8n? z4I`*SNMPl%9_L75@V|G@Jqz5THyruX6v0Fn3FB=?FZ6Nb8hM@SV#w4ZG>r#xSv?XW zOZj5J=I#{d;pUoK%Gee&HG@w@5-%_`Z)VRe@{Wfy48UyLjyBtf!wgeKpJ3ZgA%!@@ zl$O$(q>r`3p-q)g+=j1w%OjUBMnU)(Q~6GZ*?nWVC@NrvU^(&5Z_aR<2Y~nT9`@?H zbMwUV7}n_Kd1|9>|F;Kb0#jM!u!n7#UG?_Z88leOfu}k((&Hvk#3nY@uz-Sd?d&0O ztX25%fexy5_lf}m5XA-;0@K%)szH=qh-*`1BoM#sV$mlw&;UbPijPxB5td5jnCs{z z1NANvtNZ%y9SJLDeJ;~mV~mCc&cz!J3OK*wqQu*w)$xUgp7Rxr(gU)Ih?=E67d%*5 zI6L&XZU=O_$At}UzOH*-;W`&L0exjqyrH9(LW8lX65*7=)*E|c`Cmm=EVw}&eUtOx zjUM!`?-Sy^&h%$xZ2bLBJ|M$tcZo|dq8Qns&}odPCT^nbzQKt5McE#;G9YDfSN3OEt82YOby^f@^Dshd&-3p073NJKlc@ z2jj1TEHgpN8*;#5qQXu4J`H>kLV#$*|98=3`-ucqoF{!M-g8%+zs2v2&W z?V2q)snk$05o9YC#u!s*{C!QoKN)D6ZDa)I=uj(6OgzGIN!@QSHrQ^IT5`jW6@^GJ zXye8Zw=WusXweEDRtz!AO<3m4Wn-6=9`%)MgJPHoD>A!oiFoeRU>;XJw`OzF*9#bA zyZi09=lqNg0{8qL?T$U`y|jUpz66+?2t^yZ?WQ$+!<8Fqyx);S6K98Mnjs5-TE-YL zP^jHLKj*pX(4zW3k@sL--*#u~<*zrkT~Y`hj2H!OL3@*&8KIg!#Ktv$ByT(OP+|LC zbAe!kn-RCX)C|NNxS%7VjpQOe4w?cmLk$7UYoKVf48(U7nvT@?PFcV(mBLdJ>Qon$ zYcPHnDY5`9=kVToqhBz8CDa58Y~N6JBG}HHfD+Yohp{L`;i(n(HrW_Fv8Pg)Nw@pQ zIBbW1q=P9Wv`QI)Ac{rw#;;pqP9A*SQn!k@uUkTrIs|FCJ+_&e8IA&Ay$VMXaK1H_ z3UBbpGo9-5Jt{egykR$`V3oqCOS;CroF{T()J#Gd93Nv5LF)uEPhk^$$I>t~sAVa8 zim1U_NIZ(`QSIhiUK~37U|D1jfy68d`m%e!-E22_=6Gj5nJHaZR+%$hBj!u%H1D3u z8qkai$~Z$XEsr0(u;!~U<&asvx4nx`tacDt;LUH?#bZ=-1VH|5h+}PsoS{(Wa?g`j zO@XyNDL<0KzcEW$HOJ%P9MODaB#p)$d^&`Otu^e$zJ42)FO#F#iu)h`C_t5?TVtR< zb~}?(B4j~Tz?6DsEfb0qYMUf-jK1E-r@4RV=I5*G=5b`d8&c?YCA}Gop4NfW2INE2 z?$}`+AWeN(z~PFfE0B5hOC6z}q5(fHDidUFh7TNTo7oDhrkQLWe0Igj(i5cLA%vkD z$78UOFEk=enEarqHE-|$RRk6-1!--}w8#7&?VZw>rkqaz6A)F0eqNOC>-Z~iQhK<8 zPrDUA0N2-V&hUG0Rxu7IgFY0t{p!wJF#~Dpp1Q-C^r7-7`u2>6H0RTlCQS&s!%xi` zXu;Pi$&Kp%9B%yl7eC+R`{!h)*R%JoqQcUUkJ(UuT`OC~NhJR3E1|Du_ePS>EG(AU z@8CTW4bx9#-r<@5_*N)ZF5c-e?^b!X;$EqtHG^+w)a{da^Ao{sPtz>S9tT7b!0`DE{T=3zC`!bdlk}@{P zYJcsyW^q)W`Es+`V{}d-xYZCRI3ghk7wSO?&6k)86(zJOR%DP=sADG}g=)62P&53J zVTD?WwvQ(lJy`794Ceuij(hxu;o-_@x6{e-!PpwUlgP1oJHrlubNX3aW$*mA7NJy3 zfwo`~A#W;thq&32-v~WNZ12(n`E|3#OMdb+_oi7i#}_^k9;BX+I0{uhZrQ^oQ#Hmz ztN=Anb9j`)6&VDI9e9pSC)ja~lTr>>kk`TID+`vwb-vyJ35&xOJzyA2>SNh0s>DrF zCnFBL&4sFCHJPW{RCI|sEsoHve4LbV$lP}Y9UAm^ag@B#HJ&OTJ;fRt&x$t{aOM>6 zqB`;t3KYzQC_J1ts_}?t&X@{v{!H+k-)=Pe<=kY^Y0es}WGFED=DuX@J#OjCc;E#7 zL)84^{w_`(e2{(f@Zr<_$5`@^(#BfB@i!*pH!HQ3vq5Lt%aP0+;;cjFcpr0gpdS)g zYtdfsy;!SF`nvtu|a2Ld&}zEcxC(9ic$P+*k5p2R2QoA3e>cZ zsFjUy3GLxpHttq-cAo6q-rs39Yp-^9c3$oBy0=?fzrXX-^geF>_WFM9Z#z4GWBK1} zC#Z8GbxwC{Q`}7D=Jjr^wX@S=ouk@dcc*i~;{2E0TE4TBv-mi;>Y`nDw}#S}ySH!e z?CkHcMibo(cVDsm=iOf6fnvr6#c}}JKnt|qL<_Xv*qyTd=I-l4d+m^&ykxCjQ`(#f zox3|P_4XBSl_d65gfQOQ*%|M#e6kmyeEUA}2KcRJcNaHTwS%qZm`GhG5L;tSYn&139T zgP@B_L7i}#)WmcL!!{M_zt0B!ft;I<&%Pbx{oVkd9lL}>)?2+Cr(gBub}xU~`eB+q z!50O5*$Cf1DHiQ^@r^ljdzSr>k6OiNP58_%R@J`G&(VRo!_uSeU51wb_Hjeq#2NpU zAM-yv{%?&i-Gi%Fud>tx?XLLNty?Tc*g77JTS86cZbQ!X^*>6Tqrn>j zg?%y~%Sfn>B6(y3)lJ*pGYDPz8>Lg43|k#$JFr!wVG;BJ62nZzi=RuV8@Xex4}}a+ z5-c!W2S&;R!?uDnY-_;lM;tWGWiA#l@!UkD*aiMJ_adQInD3wGg5&QPmf1rZ^ literal 26060 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 XaNs{2_zwsEkR15`wbyvQ0LTFVC39uU diff --git a/dist/dist.zip b/dist/dist.zip index 435d5068c187110c2ffb72b76e912604e0d4fcd4..75fb47aadf9942adc47c75c742dc43a528f199a2 100644 GIT binary patch delta 24898 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

&;jJG3HygzBq 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 delta 24786 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 l|KDE;6q_8e`+@K 0 ? log[_this.state.log.length - 1].message.length - 1 : 0; log[_this.state.log.length - 1].message[indexToReplace] = { value: messages }; _this.setState({ @@ -195,10 +198,7 @@ var Console = for (var _i = 0; _i < arguments.length; _i++) { messages[_i - 0] = arguments[_i]; } - var log = _this.state.log; - if (!log.length) { - log.push({ label: '', command: '', message: [] }); - } + var log = _this.getSafeLog(); log[_this.state.log.length - 1].message.push({ value: messages }); _this.setState({ log: log, @@ -209,7 +209,7 @@ var Console = for (var _i = 1; _i < arguments.length; _i++) { messages[_i - 1] = arguments[_i]; } - var log = _this.state.log; + var log = _this.getSafeLog(); if (!log.length) { log.push({ label: '', command: '', message: [] }); } @@ -219,7 +219,7 @@ var Console = }, _this.scrollIfBottom()); }; this.logTable = function (tableData, type) { - var log = _this.state.log; + var log = _this.getSafeLog(); if (type) { log[_this.state.log.length - 1].message.push({ isTable: true, type: type, value: [tableData] }); } diff --git a/dist/dist/react-console.js.map b/dist/dist/react-console.js.map index 8e8729a..f5d683f 100644 --- a/dist/dist/react-console.js.map +++ b/dist/dist/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap a3bc3f0e05f39690f239","webpack:///./react-console.tsx","webpack:///external \"React\"","webpack:///./react-console.scss"],"names":[],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA,aAAY,CAAC;;;;;;AAEb,KAAY,KAAK,uBAAM,CAAO,CAAC;AAE/B,qBAAO,CAAsB,CAAC;AAQ9B;KAA4B,iCAAsC;KAAlE;SAA4B,8BAAsC;SAOjE,UAAK,GAED,EAAE,CAAC;SAQP,iBAAiB;SACjB,oBAAe,GAAW,CAAC,CAAC;KA2C7B,CAAC;KAnDA,sBAAsB;KACtB,yCAAiB,GAAjB;SACC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb,CAAC;KACD,0CAAkB,GAAlB;SACC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb,CAAC;KAGD,4BAAI,GAAJ;SAAA,iBAcC;SAbA,yBAAyB;SACzB,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aACtB,EAAE,EAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,sBAAsB,CAAC;aACtD,CAAC;aACD,IAAI,CAAC,eAAe,EAAE,CAAC;aACvB,MAAM,CAAC,UAAU,CAAE;iBAClB,KAAI,CAAC,eAAe,EAAE,CAAC;iBACvB,EAAE,EAAC,KAAI,CAAC,eAAe,IAAI,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;qBACnD,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,gDAAgD,CAAC;iBAChF,CAAC;aACF,CAAC,EAAE,IAAI,CAAC,CAAC;SACV,CAAC;KACF,CAAC;KACD,mCAAW,GAAX;SAAA,iBAUC;SATA,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3B,CAAC;SAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,qBAAC,IAAI,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAvB,CAAwB,EAAC,GAAG,EAAC,QAAQ,EAAC,SAAS,EAAC,sBAAsB,OAAc,CAAC,CAAC;SAClI,CAAC;SAAC,IAAI,CAAC,CAAC;aACP,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBACrD,qBAAC,IAAI,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAvB,CAAwB,EAAC,GAAG,EAAC,QAAQ,EAAC,SAAS,EAAC,sBAAsB,GAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAE,CAAO;iBACjK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC;SAClD,CAAC;KACF,CAAC;KACD,8BAAM,GAAN;SACC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SAC7B,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;aACxB,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAClC,EAAE,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBACb,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,CAAC;aACnC,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAK,GAAG,EAAE,CAAC;aACZ,CAAC;SACF,CAAC;SACD,MAAM,CAAC,qBAAC,GAAG,IAAC,SAAS,EAAC,0BAA0B,GAC/C,qBAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,GAAG,KAAO,CAAO,EAC7D,qBAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,QAAU,CAAO,EAC9E,qBAAC,IAAI,IAAC,SAAS,EAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAI,CAAO,CAC/D,CAAC;KACR,CAAC;KA3DM,0BAAY,GAAuB;SACzC,KAAK,EAAE,CAAC,CAAC;SACT,KAAK,EAAE,EAAE;SACT,KAAK,EAAE,IAAI;SACX,QAAQ,EAAE,IAAI;MACd;KAuDF,oBAAC;AAAD,EAAC,CA7D2B,KAAK,CAAC,SAAS,GA6D1C;AAKD,KAAI,kBAAkB,GAAuC,UAAS,KAA8B;KACnG,EAAE,EAAC,KAAK,CAAC,OAAO,CAAC,EAAC;SACjB,MAAM,CAAC,qBAAC,KAAK,SACV,qBAAC,EAAE,SACD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAc;aACjC,MAAM,CAAC,qBAAC,EAAE,IAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAG,MAAQ,GAAG,MAAQ,CAAK,CAAC;SACvD,CAAC,CAAE,CACC,CACE;KACX,CAAC;KACD,MAAM,CAAC,IAAI,CAAC;AACb,EAAC;AAOD,KAAI,cAAc,GAAmC,UAAS,KAA0B;KACvF,EAAE,EAAC,KAAK,CAAC,OAAO,CAAC,EAAC;SACjB,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5B,MAAM,CAAC,qBAAC,GAAG,IAAC,SAAS,EAAE,2CAA2C,GAAG,CAAC,KAAK,CAAC,IAAI,GAAC,yBAAyB,GAAC,KAAK,CAAC,IAAI,GAAC,EAAE,CAAE,GACzH,qBAAC,KAAK,SACL,oBAAC,kBAAkB,GAAC,OAAO,EAAE,IAAI,CAAC,OAAQ,EAAG,EAC7C,qBAAC,KAAK,SACJ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,GAAU,EAAE,KAAa;aACrD,MAAM,CAAC,qBAAC,EAAE,IAAC,GAAG,EAAE,KAAM,GAAE,GAAG,CAAC,GAAG,CAAC,UAAC,IAAS,EAAE,SAAiB;iBAC5D,EAAE,EAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAC;qBAC5B,MAAM,CAAC,qBAAC,EAAE,IAAC,GAAG,EAAE,SAAU,GAAE,IAAK,CAAK,CAAC;iBACxC,CAAC;iBAAA,IAAI,CAAC,EAAE,EAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,EAAC;qBAC1D,MAAM,CAAC,qBAAC,EAAE,IAAC,GAAG,EAAE,SAAU,GAAC,qBAAC,CAAC,IAAC,IAAI,EAAE,IAAI,CAAC,IAAK,EAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,EAAG,GAAE,IAAI,CAAC,IAAK,CAAI,CAAK,CAAC;iBAC7G,CAAC;iBAAA,IAAI,EAAC;qBACL,MAAM,CAAC,qBAAC,EAAE,IAAC,GAAG,EAAE,SAAU,GAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,CAAK,CAAC;iBACxD,CAAC;aAED,CAAC,CAAE,CACE,CAAC;SAER,CAAC,CAAE,CACI,CACD,CACH,CAAC;KACR,CAAC;KAAA,IAAI,EAAC;SACL,MAAM,CAAC,qBAAC,GAAG,IAAC,SAAS,EAAE,uBAAuB,GAAG,CAAC,KAAK,CAAC,IAAI,GAAC,yBAAyB,GAAC,KAAK,CAAC,IAAI,GAAC,EAAE,CAAE,GACpG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,GAAQ,EAAE,CAAS;aACpC,EAAE,EAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;iBAC3B,MAAM,CAAC,qBAAC,GAAG,IAAC,GAAG,EAAE,CAAE,GAAE,GAAI,CAAM,CAAC;aACjC,CAAC;aAAC,IAAI,CAAC,EAAE,EAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;iBAC1D,MAAM,CAAC,qBAAC,GAAG,IAAC,GAAG,EAAE,CAAE,GAAC,qBAAC,CAAC,IAAC,IAAI,EAAE,GAAG,CAAC,IAAK,EAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,EAAG,GAAE,GAAG,CAAC,IAAK,CAAI,CAAM,CAAC;aACnG,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAC,qBAAC,GAAG,IAAC,GAAG,EAAE,CAAE,GAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAE,CAAM,CAAC;aACjD,CAAC;SACF,CAAC,CAAE,CACE,CAAC;KACR,CAAC;AACF,EAAC;AACD,eAAc,CAAC,YAAY,GAAG;KAC7B,IAAI,EAAE,IAAI;KACV,KAAK,EAAE,EAAE;KACT,OAAO,EAAE,KAAK;EACd;AAgCA,EAAC;AAuBD,EAAC;AACF;KAA6B,6BAA0C;KACtE,mBAAY,KAAmB;SADhC,iBAm4BC;SAj4BC,kBAAM,KAAK,CAAC,CAAC;SA0Bd,UAAK,GAID,EAAE,CAAC;SACP,cAAc;SACd,YAAO,GAAG;aACT,KAAI,CAAC,QAAQ,CAAC,EAAC,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;SACrC,CAAC;SACD,kBAAa,GAAG;aAAC,kBAAkB;kBAAlB,WAAkB,CAAlB,sBAAkB,CAAlB,IAAkB;iBAAlB,iCAAkB;;aAClC,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,EAAE,EAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;aAClD,CAAC;aACD,IAAI,cAAc,GAAG,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;aAC3H,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;aACzE,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,QAAG,GAAG;aAAC,kBAAkB;kBAAlB,WAAkB,CAAlB,sBAAkB,CAAlB,IAAkB;iBAAlB,iCAAkB;;aACxB,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,EAAE,EAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;aAClD,CAAC;aACD,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;aAC7D,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,SAAI,GAAG,UAAC,IAAY;aAAE,kBAAkB;kBAAlB,WAAkB,CAAlB,sBAAkB,CAAlB,IAAkB;iBAAlB,iCAAkB;;aACvC,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,EAAE,EAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAC;iBACf,GAAG,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;aAClD,CAAC;aACD,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;aACzE,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,aAAQ,GAAG,UAAC,SAA6B,EAAE,IAAa;aACvD,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,EAAE,EAAC,IAAI,CAAC,EAAC;iBACR,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC;aAC5F,CAAC;aAAA,IAAI,EAAC;iBACL,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC;aAChF,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,WAAM,GAAG;aACR,KAAI,CAAC,QAAQ,CAAC;iBACb,WAAW,EAAE,IAAI;iBACjB,SAAS,EAAE,KAAI,CAAC,SAAS,EAAE;cAC3B,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SAOD,iBAAiB;SACjB,UAAK,GAAG;aACP,EAAE,EAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBACtC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;iBACzB,KAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;aACtD,CAAC;SACF,CAAC;SACD,SAAI,GAAG;aACN,KAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACjC,CAAC;SACD,YAAO,GAAG,UAAC,CAAgB;aAI1B,IAAI,QAAQ,GAAW;iBACtB,SAAS;iBACT,EAAE,EAAE,KAAI,CAAC,UAAU;iBACnB,OAAO;iBACP,EAAE,EAAE,KAAI,CAAC,YAAY;iBACrB,QAAQ;iBACR,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,KAAK;iBACL,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,OAAO;iBACP,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,YAAY;iBACZ,CAAC,EAAG,KAAI,CAAC,kBAAkB;iBAC3B,SAAS;iBACT,EAAE,EAAE,KAAI,CAAC,UAAU;iBACnB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,SAAS;iBAClB,QAAQ;iBACR,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,MAAM;iBACN,CAAC,EAAE,KAAI,CAAC,QAAQ;iBAChB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,UAAU;cACnB,CAAC;aACF,IAAI,SAAS,GAAW;iBACvB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,SAAS;iBAClB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,YAAY;iBACrB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,oBAAoB;iBAC7B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,oBAAoB;iBAC7B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,UAAU;iBACnB,WAAW;iBACX,wBAAwB;iBACxB,WAAW;iBACX,wBAAwB;iBACxB,WAAW;iBACX,0BAA0B;iBAC1B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,QAAQ;iBACjB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,gBAAgB;iBACzB,WAAW;iBACX,EAAE,EAAE,KAAI,CAAC,IAAI;iBACb,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,aAAa;cAOtB,CAAC;aACF,IAAI,UAAU,GAAW;iBACxB,aAAa;iBACb,CAAC,EAAE,KAAI,CAAC,gBAAgB;cAWxB,CAAC;aACF,IAAI,cAAc,GAAW,EAK5B,CAAC;aACF,IAAI,SAAS,GAAW;iBACvB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,YAAY;iBACrB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,kCAAkC;iBAC3C,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,kCAAkC;iBAC3C,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,WAAW;iBACrB,aAAa;iBACb,oBAAoB;iBACpB,WAAW;iBACX,0BAA0B;iBAC1B,WAAW;iBACX,sBAAsB;iBACtB,WAAW;iBACX,wBAAwB;iBACxB,WAAW;iBACX,0BAA0B;iBAC1B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,QAAQ;iBACjB,cAAc;iBACd,CAAC,EAAE,KAAI,CAAC,gBAAgB;iBACxB,WAAW;iBACX,0BAA0B;iBAC1B,WAAW;iBACX,kCAAkC;iBAClC,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,OAAO;cA6BhB,CAAC;aACF,IAAI,cAAc,GAAW;iBAC5B,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,kBAAkB;iBAC5B,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,YAAY;iBACtB,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,WAAW;cAKrB;aACD,IAAI,aAAa,GAAW;iBAC3B,QAAQ;iBACR,EAAE,EAAE,KAAI,CAAC,UAAU;cAKnB,CAAC;aACF,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC3B,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;qBACd,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;yBACf,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC;6BAChC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;6BAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;yBACpB,CAAC;qBACF,CAAC;qBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;yBACvB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;6BACjC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;6BAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;yBACpB,CAAC;qBACF,CAAC;qBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC;yBACnC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;yBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;qBACpB,CAAC;qBACD,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;qBACtB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC;yBAC5B,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;yBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;qBACpB,CAAC;qBACD,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC;qBAClC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;qBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB,CAAC;aACF,CAAC;aAAC,IAAI,CAAC,EAAE,EAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;iBACzC,uDAAuD;iBACvD,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;iBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB,CAAC;SACF,CAAC;SACD,WAAM,GAAG;aACR,IAAI,GAAG,GAAG,CAAC,CAAC;aACZ,GAAG,EAAC,EAAC,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;iBAClF,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACzD,KAAK,CAAC;iBACP,CAAC;aACF,CAAC;aACD,IAAI,MAAM,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aACnD,IAAI,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;aAC5C,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,GAAC,MAAM,GAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;qBAChG,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;kBAC7B,EAAE,KAAI,CAAC,aAAa,CAAE,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAAC;qBACnC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;qBAC7B,WAAW,EAAE,eAAsB;kBACnC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;SACF,CAAC;SACD,UAAK,GAAG,UAAC,CAAiB;aACzB,IAAI,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC7C,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,GAAC,MAAM,GAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;qBACvF,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;kBAC7B,EAAE,KAAI,CAAC,aAAa,CAAE,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAC;qBAC1B,WAAW,EAAE,eAAsB;kBACnC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aACD,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB,CAAC;SACD,sBAAsB;SACtB,oBAAe,GAAG;aACjB,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,cAAS,GAAG;aACX,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;iBACnC,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,iBAAY,GAAG;aACd,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBACzB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,QAAQ,EAAE;iBACtB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,iBAAY,GAAG;aACd,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,YAAY,EAAE;iBAC1B,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,wCAAwC;SACxC,eAAU,GAAG;aACZ,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;aAC5B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBAC/C,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC;qBACxB,KAAK,EAAE,EAAE;qBACT,WAAW,EAAE,eAAsB;kBACnC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,SAAO,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACpC,IAAI,SAAO,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC;iBACjC,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;iBACzB,EAAE,EAAC,CAAC,SAAO,IAAI,SAAO,CAAC,SAAO,CAAC,MAAM,GAAC,CAAC,CAAC,IAAI,SAAO,CAAC,CAAC,CAAC;qBACrD,SAAO,CAAC,IAAI,CAAC,SAAO,CAAC,CAAC;iBACvB,CAAC;iBACD,GAAG,CAAC,IAAI,CAAC;qBACR,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS;qBAC3B,OAAO,EAAE,SAAO;qBAChB,OAAO,EAAE,EAAE;kBACX,CAAC,CAAC;iBACH,KAAI,CAAC,QAAQ,CAAC;qBACb,WAAW,EAAE,KAAK;qBAClB,KAAK,EAAE,EAAE;qBACT,KAAK,EAAE,CAAC;qBACR,UAAU,EAAE,EAAE;qBACd,WAAW,EAAE,EAAE;qBACf,GAAG,EAAE,GAAG;qBACR,OAAO,EAAE,SAAO;qBAChB,QAAQ,EAAE,CAAC;qBACX,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE;qBACF,KAAI,CAAC,cAAc,EAAE,CAAC;qBACtB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;yBACvB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAO,CAAC;qBAC5B,CAAC;qBAAC,IAAI,CAAC,CAAC;yBACP,KAAI,CAAC,MAAM,EAAE,CAAC;qBACf,CAAC;iBACF,CAAC,CAAC,CAAC;aACJ,CAAC;SACF,CAAC;SACD,oBAAe,GAAG;aACjB,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACvB,CAAC;SACD,uBAAkB,GAAG;aACpB,KAAI,CAAC,aAAa,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAChD,CAAC;SACD,iBAAY,GAAG;aACd,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC/C,CAAC;SACD,kBAAa,GAAG;aACf,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,eAAe,IAAI,eAAuB,CAAC,CAAC,CAAC;iBAC1D,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC;SACF,CAAC;SACD,yBAAoB,GAAG;aACtB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,eAAuB,EAAE,IAAI,CAAC,EAAC;qBACjD,QAAQ,EAAE,wBAAuB,KAAI,CAAC,KAAK,CAAC,UAAU,QAAK;qBAC3D,WAAW,EAAE,cAAqB;kBAClC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC;qBACb,eAAe,EAAE,eAAuB;qBACxC,UAAU,EAAE,IAAI;qBAChB,QAAQ,EAAE,wBAAyB;qBACnC,WAAW,EAAE,cAAqB;kBAClC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,yBAAoB,GAAG;aACtB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,eAAuB,EAAE,IAAI,CAAC,EAAC;qBACjD,QAAQ,EAAE,wBAAuB,KAAI,CAAC,KAAK,CAAC,UAAU,QAAK;qBAC3D,WAAW,EAAE,cAAqB;kBAClC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC;qBACb,eAAe,EAAE,eAAuB;qBACxC,UAAU,EAAE,IAAI;qBAChB,QAAQ,EAAE,wBAAyB;qBACnC,WAAW,EAAE,cAAqB;kBAClC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;SAC5B,CAAC;SACD,uCAAkC,GAAG;aACpC,OAAO;SACR,CAAC;SACD,uCAAkC,GAAG;aACpC,OAAO;SACR,CAAC;SACD,0BAAqB,GAAG;aACvB,OAAO;SACR,CAAC;SACD,yBAAoB,GAAG;aACtB,OAAO;SACR,CAAC;SACD,mCAA8B,GAAG;aAChC,OAAO;SACR,CAAC;SACD,kCAA6B,GAAG;aAC/B,OAAO;SACR,CAAC;SACD,eAAU,GAAG;aACZ,OAAO;SACR,CAAC;SACD,gBAAW,GAAG;aACb,OAAO;SACR,CAAC;SACD,6BAA6B;SAC7B,eAAU,GAAG;aACZ,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;2BAC5D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;qBACtD,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,uBAAkB,GAAG;aACpB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC;qBAC7E,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;kBAC7B,EAAE,KAAI,CAAC,aAAa,CAAE,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChC,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qBACzB,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;2BAC9D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;qBACpD,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,sBAAsB;SACtB,aAAQ,GAAG;aACV,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACvE,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACjE,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC/D,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,qBAAgB,GAAG;aAClB,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACzE,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACnE,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,CAAC;iBACR,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC7D,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,kBAAa,GAAG;aACf,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;uBAC1D,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAChE,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aACrC,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,CAAC;iBACR,UAAU,EAAE,EAAE;iBACd,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,aAAQ,GAAG;aACV,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,EAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aACvF,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,EAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACjF,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;uBAC5D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC;iBACnD,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,qBAAgB,GAAG;aAClB,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,YAAY,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aAC3F,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,YAAY,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACrF,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,YAAY,EAAE;iBAC1B,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,YAAY,EAAE,CAAC;uBAC/D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBACpD,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,SAAI,GAAG;aACN,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAC;iBACrD,WAAW,EAAE,YAAmB;cAChC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;SACH,CAAC;SACD,YAAO,GAAG;aACT,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,KAAK,GAAG,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzE,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAC;qBACpF,KAAK,EAAE,KAAK;qBACZ,WAAW,EAAE,YAAmB;kBAChC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;SACF,CAAC;SACD,oBAAoB;SACpB,aAAa;SACb,aAAQ,GAAG;aACV,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACxB,mCAAmC;iBACnC,IAAI,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC7C,IAAI,IAAI,GAAG,CAAC,CAAC;iBACb,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC1B,OAAM,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;qBACzD,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjC,CAAC;iBAED,IAAI,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBAC1E,EAAE,EAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC5B,qBAAqB;qBACrB,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;qBAC7B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;qBACf,GAAG,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;yBAC/B,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;qBAC9B,CAAC;qBACD,KAAI,CAAC,QAAQ,CAAC;yBACb,KAAK,EAAE,KAAK;yBACZ,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;yBAC3B,QAAQ,EAAE,IAAI;yBACd,WAAW,EAAE,eAAsB;sBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;iBAC1B,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;qBACnC,mBAAmB;qBACnB,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;qBACzB,GAAG,CAAC,IAAI,CAAC;yBACR,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS;yBAC3B,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU;yBAC9B,OAAO,EAAE,CAAC;iCACT,IAAI,EAAE,YAAY;iCAClB,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;8BAC/B,CAAC;sBACF,CAAC,CAAC;qBACH,KAAI,CAAC,QAAQ,CAAC;yBACb,SAAS,EAAE,KAAI,CAAC,SAAS,EAAE;yBAC3B,GAAG,EAAE,GAAG;yBACR,QAAQ,EAAE,IAAI;yBACd,WAAW,EAAE,eAAsB;sBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;iBAC1B,CAAC;aACF,CAAC;SACF,CAAC;SACD,kBAAkB;SAClB,gBAAgB;SAChB,eAAU,GAAG;aACZ,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,CAAC,CAAC;aACJ,CAAC;aACD,2BAA2B;SAC5B,CAAC;SACD,kBAAa,GAAG;aACf,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC3B,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;iBAC5B,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;iBACzB,GAAG,CAAC,IAAI,CAAC;qBACR,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS;qBAC3B,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU;qBAC9B,OAAO,EAAE,EAAE;kBACX,CAAC,CAAC;iBACH,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,EAAE;qBACT,KAAK,EAAE,CAAC;qBACR,UAAU,EAAE,EAAE;qBACd,WAAW,EAAE,EAAE;qBACf,GAAG,EAAE,GAAG;qBACR,QAAQ,EAAE,CAAC;qBACX,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACrB,CAAC;SACF,CAAC;SACD,mBAAmB;SACnB,eAAU,GAAG,UAAC,MAAc,EAAE,IAAY,EAAE,OAAmB,EAAE,KAA2B;aAAhD,uBAAmB,GAAnB,WAAmB;aAAE,qBAA2B,GAA3B,QAAgB,IAAI,CAAC,MAAM;aAC3F,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC5E,CAAC;SACD,kBAAa,GAAG,UAAC,MAAc,EAAE,OAAmB;aAAnB,uBAAmB,GAAnB,WAAmB;aACnD,IAAI,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC3F,MAAM,CAAC;iBACN,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;iBACtG,UAAU,EAAE,UAAU;iBACtB,WAAW,EAAE,UAAU;iBACvB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,CAAC;SACH,CAAC;SACD,cAAS,GAAG,UAAC,CAAS,EAAE,GAA0C;aAA1C,mBAA0C,GAA1C,MAAc,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;aACjE,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;aAC/B,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBACb,MAAM,CAAC,CAAC,CAAC;aACV,CAAC;aAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;iBACjB,MAAM,CAAC,GAAG,CAAC;aACZ,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAC,GAAG,CAAC;aACZ,CAAC;SACF,CAAC;SAmBD,eAAU,GAAG,UAAC,CAAS,EAAE,KAAa,EAAE,IAAY,EAAE,QAAwB;aAAxB,wBAAwB,GAAxB,eAAwB;aAC7E,EAAE,EAAC,IAAI,IAAI,CAAC,CAAC;iBAAC,MAAM,CAAC,CAAC,CAAC;aACvB,EAAE,EAAC,QAAQ,CAAC,CAAC,CAAC;iBACb,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;aAC3C,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;iBAClB,EAAE,EAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;qBACd,MAAM,CAAC,CAAC,CAAC;iBACV,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;qBAC1B,MAAM,CAAC,IAAI,CAAC;iBACb,CAAC;iBAAC,IAAI,CAAC,CAAC;qBACP,MAAM,CAAC,KAAK,CAAC;iBACd,CAAC;aACF,CAAC;SACF,CAAC;SACD,kBAAa,GAAG,UAAC,CAAS;aACzB,IAAI,QAAQ,GAAG,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACzF,EAAE,EAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;iBAClB,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;qBACpC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW;qBAClC,QAAQ,EAAE,QAAQ;qBAClB,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;aAC1B,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAC,QAAQ,CAAC,CAAC;iBACxE,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,UAAU,CAAC,MAAM;qBACxB,UAAU,EAAE,UAAU;qBACtB,QAAQ,EAAE,QAAQ;qBAClB,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;aAC1B,CAAC;SACF,CAAC;SACD,kBAAa,GAAG,UAAC,SAAuD,EAAE,IAAqB;aAA9E,yBAAuD,GAAvD,YAA6B,KAAI,CAAC,KAAK,CAAC,eAAe;aAAE,oBAAqB,GAArB,YAAqB;aAC9F,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC9B,IAAI,GAAG,GAAG,CAAC,SAAS,IAAI,eAAuB,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,CAAC;aACtD,EAAE,EAAC,IAAI,CAAC,CAAC,CAAC;iBACT,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;aACjB,CAAC;aACD,GAAG,EAAC,EAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;iBACnE,IAAI,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAC,GAAG,CAAC,CAAC;iBAC9D,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBACjD,EAAE,EAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;qBACf,MAAM,CAAC;yBACN,KAAK,EAAE,KAAK;yBACZ,UAAU,EAAE,KAAK;yBACjB,eAAe,EAAE,SAAS;yBAC1B,UAAU,EAAE,KAAK;yBACjB,QAAQ,EAAE,GAAG;sBACb,CAAC;iBACH,CAAC;aACF,CAAC;aACD,MAAM,CAAC;iBACN,eAAe,EAAE,SAAS;iBAC1B,UAAU,EAAE,KAAK;cACjB,CAAC;SACH,CAAC;SACD,iBAAiB;SACjB,oBAAe,GAAG,CAAC,CAAC;SACpB,mBAAc,GAAG;aAChB,EAAE,EAAC,KAAI,CAAC,eAAe,GAAG,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;iBACxI,KAAI,CAAC,eAAe,EAAE,CAAC;iBACvB,MAAM,CAAC,KAAI,CAAC,kBAAkB,CAAC;aAChC,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAC,IAAI,CAAC;aACb,CAAC;SACF,CAAC;SACD,uBAAkB,GAAG;aACpB,KAAI,CAAC,cAAc,EAAE,CAAC;aACtB,KAAI,CAAC,eAAe,EAAE,CAAC;SACxB,CAAC;SACD,mBAAc,GAAG;aAChB,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;aACnE,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;aACpD,EAAE,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;iBAC/B,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;iBAC3E,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CACxE,CAAC,CAAC,CAAC;iBAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAAC,CAAC;SAC9C,CAAC;SACD,cAAS,GAAG;aACX,EAAE,EAAC,OAAO,KAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC;iBAC/C,MAAM,CAAC,KAAI,CAAC,KAAK,CAAC,WAAqB,CAAC;aACzC,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAE,KAAI,CAAC,KAAK,CAAC,WAA0B,EAAE,CAAC;aACjD,CAAC;SACF,CAAC;SA30BA,IAAI,CAAC,KAAK,GAAG;aACZ,KAAK,EAAE,KAAK;aACZ,WAAW,EAAE,IAAI;aACjB,KAAK,EAAE,EAAE;aACT,KAAK,EAAE,CAAC;aACR,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;aAC3B,UAAU,EAAE,EAAE;aACd,WAAW,EAAE,EAAE;aACf,UAAU,EAAE,EAAE;aACd,eAAe,EAAE,IAAI;aACrB,UAAU,EAAE,KAAK;aACjB,GAAG,EAAE,EAAE;aACP,OAAO,EAAE,EAAE;aACX,QAAQ,EAAE,CAAC;aACX,IAAI,EAAE,EAAE;aACR,KAAK,EAAE,CAAC;aACR,QAAQ,EAAE,IAAI;aACd,WAAW,EAAE,eAAsB;UACnC,CAAC;KACH,CAAC;KA+DD,sBAAsB;KACtB,qCAAiB,GAAjB;SACC,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;aACzB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAC;KACF,CAAC;KA0oBD,4BAAQ,GAAR;SACC,iEAAiE;SACjE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5E,EAAE,EAAC,MAAM,CAAC,CAAC,CAAC;aACX,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAC5C,CAAC;SAAC,IAAI,CAAC,CAAC;aACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;SACrC,CAAC;KACF,CAAC;KACD,gCAAY,GAAZ;SACC,4EAA4E;SAC5E,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC;SAC1F,EAAE,EAAC,MAAM,CAAC,CAAC,CAAC;aACX,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;SACzB,CAAC;SAAC,IAAI,CAAC,CAAC;aACP,MAAM,CAAC,CAAC,CAAC;SACV,CAAC;KACF,CAAC;KA0FD,0BAAM,GAAN;SAAA,iBAmDC;SAlDA,MAAM,CAAC,qBAAC,GAAG,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,EAA1B,CAA2B,EACjD,SAAS,EAAE,0BAA0B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,qBAAqB,GAAC,uBAAuB,CAAE,EACzG,OAAO,EAAE,IAAI,CAAC,KAAM,GAEpB,IAAI,CAAC,KAAK,CAAC,cAAc;aACzB,qBAAC,GAAG,IAAC,SAAS,EAAC,6CAA6C,GAC1D,IAAI,CAAC,KAAK,CAAC,cAAe,CACtB;eACJ,IACF,EACA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,UAAC,GAAa;aAClC,MAAM,CAAC;iBACN,oBAAC,aAAa,GAAC,KAAK,EAAE,GAAG,CAAC,KAAM,EAAC,KAAK,EAAE,GAAG,CAAC,OAAQ,EAAG;sBACpD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAE,UAAC,GAAe,EAAE,GAAW;iBAChD,MAAM,CAAC,oBAAC,cAAc,GAAC,GAAG,EAAE,GAAI,EAAC,IAAI,EAAE,GAAG,CAAC,IAAK,EAAC,KAAK,EAAE,GAAG,CAAC,KAAM,EAAC,OAAO,EAAE,GAAG,CAAC,OAAQ,EAAG,CAAC;aAC7F,CAAC,CAAC,CACF,CAAC;SACH,CAAC,CAAE,EACF,IAAI,CAAC,KAAK,CAAC,WAAW;aACtB,oBAAC,aAAa,GACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAU,EAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAW,EAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAM,EACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAS,EAC5B;eACD,IACF,EACD,qBAAC,GAAG,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAG,GACvD,qBAAC,QAAQ,IACR,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,EAAtB,CAAuB,EACnC,SAAS,EAAC,qBAAqB,EAC/B,YAAY,EAAC,KAAK,EAClB,WAAW,EAAC,KAAK,EACjB,cAAc,EAAC,KAAK,EACpB,UAAU,EAAC,OAAO,EAClB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM;aACvB,KAAK,EAAE,aAAa;aACpB,eAAe,EAAE,aAAa;aAC9B,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,QAAQ;UACjB,EACF,MAAM,EAAE,IAAI,CAAC,IAAK,EAClB,SAAS,EAAE,IAAI,CAAC,OAAQ,EACxB,QAAQ,EAAE,IAAI,CAAC,MAAO,EACtB,OAAO,EAAE,IAAI,CAAC,KAAM,EACT,CACP,EACN,qBAAC,GAAG,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,EAAtB,CAAuB,OAAa,CAChD,CAAC;KACR,CAAC;KA32BM,sBAAY,GAAG;SACrB,WAAW,EAAE,IAAI;SACjB,QAAQ,EAAE,cAAa,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACtC,MAAM,EAAE,cAAY,CAAC;MACrB,CAAC;KAw2BH,gBAAC;AAAD,EAAC,CAn4B4B,KAAK,CAAC,SAAS,GAm4B3C;AAn4BD;4BAm4BC;;;;;;;ACrkCD,wB;;;;;;ACAA,0C","file":"react-console.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap a3bc3f0e05f39690f239","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn

\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: any[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: any, cellIndex: number) => {\n\t\t\t\t\t\t\tif(typeof cell === 'string'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else if(typeof cell === 'object' && cell.type === 'link'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}{cell.text}{JSON.stringify(cell)}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any, i: number)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn
{val}
;\n\t\t\t\t} else if(typeof val === 'object' && val.type === 'link') {\n\t\t\t\t\treturn ;\n\t\t\t\t} else {\n\t\t\t\t\treturn
{JSON.stringify(val)}
;\n\t\t\t\t}\n\t\t\t})}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tsetBusy = () => {\n\t\tthis.setState({acceptInput: false});\n\t}\n\tupdateLastLog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlet indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0;\n\t\tlog[this.state.log.length-1].message[indexToReplace] = {value: messages};\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap d2ee1a80f9f93e79dea2","webpack:///./react-console.tsx","webpack:///external \"React\"","webpack:///./react-console.scss"],"names":[],"mappings":"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","file":"react-console.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap d2ee1a80f9f93e79dea2","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: any[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: any, cellIndex: number) => {\n\t\t\t\t\t\t\tif(typeof cell === 'string'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else if(typeof cell === 'object' && cell.type === 'link'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}{cell.text}{JSON.stringify(cell)}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any, i: number)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn
{val}
;\n\t\t\t\t} else if(typeof val === 'object' && val.type === 'link') {\n\t\t\t\t\treturn ;\n\t\t\t\t} else {\n\t\t\t\t\treturn
{JSON.stringify(val)}
;\n\t\t\t\t}\n\t\t\t})}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tsetBusy = () => {\n\t\tthis.setState({acceptInput: false});\n\t}\n\tgetSafeLog = () => {\n\t\tif(!this.state.log.length){\n\t\t\tthis.state.log.push({label: '', command: '', message: [] });\n\t\t}\n\t\treturn this.state.log;\n\t}\n\tupdateLastLog = (...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tlet indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0;\n\t\tlog[this.state.log.length-1].message[indexToReplace] = {value: messages};\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject, type?: string) => {\n\t\tlet log = this.getSafeLog();\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/react-console.js b/lib/react-console.js index 33cbeda..cdaa602 100644 --- a/lib/react-console.js +++ b/lib/react-console.js @@ -175,15 +175,18 @@ module.exports = this.setBusy = function () { _this.setState({ acceptInput: false }); }; + this.getSafeLog = function () { + if (!_this.state.log.length) { + _this.state.log.push({ label: '', command: '', message: [] }); + } + return _this.state.log; + }; this.updateLastLog = function () { var messages = []; for (var _i = 0; _i < arguments.length; _i++) { messages[_i - 0] = arguments[_i]; } - var log = _this.state.log; - if (!log.length) { - log.push({ label: '', command: '', message: [] }); - } + var log = _this.getSafeLog(); var indexToReplace = log[_this.state.log.length - 1].message.length > 0 ? log[_this.state.log.length - 1].message.length - 1 : 0; log[_this.state.log.length - 1].message[indexToReplace] = { value: messages }; _this.setState({ @@ -195,10 +198,7 @@ module.exports = for (var _i = 0; _i < arguments.length; _i++) { messages[_i - 0] = arguments[_i]; } - var log = _this.state.log; - if (!log.length) { - log.push({ label: '', command: '', message: [] }); - } + var log = _this.getSafeLog(); log[_this.state.log.length - 1].message.push({ value: messages }); _this.setState({ log: log, @@ -209,7 +209,7 @@ module.exports = for (var _i = 1; _i < arguments.length; _i++) { messages[_i - 1] = arguments[_i]; } - var log = _this.state.log; + var log = _this.getSafeLog(); if (!log.length) { log.push({ label: '', command: '', message: [] }); } @@ -219,7 +219,7 @@ module.exports = }, _this.scrollIfBottom()); }; this.logTable = function (tableData, type) { - var log = _this.state.log; + var log = _this.getSafeLog(); if (type) { log[_this.state.log.length - 1].message.push({ isTable: true, type: type, value: [tableData] }); } diff --git a/lib/react-console.js.map b/lib/react-console.js.map index 5ac4d5f..c3e9afe 100644 --- a/lib/react-console.js.map +++ b/lib/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 43356396305df869af75","webpack:///./react-console.tsx","webpack:///external \"react\"","webpack:///./react-console.scss"],"names":[],"mappings":"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","file":"react-console.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 43356396305df869af75","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: any[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: any, cellIndex: number) => {\n\t\t\t\t\t\t\tif(typeof cell === 'string'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else if(typeof cell === 'object' && cell.type === 'link'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}{cell.text}{JSON.stringify(cell)}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any, i: number)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn
{val}
;\n\t\t\t\t} else if(typeof val === 'object' && val.type === 'link') {\n\t\t\t\t\treturn ;\n\t\t\t\t} else {\n\t\t\t\t\treturn
{JSON.stringify(val)}
;\n\t\t\t\t}\n\t\t\t})}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tsetBusy = () => {\n\t\tthis.setState({acceptInput: false});\n\t}\n\tupdateLastLog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlet indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0;\n\t\tlog[this.state.log.length-1].message[indexToReplace] = {value: messages};\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = require(\"react\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap aa45043607b465c48011","webpack:///./react-console.tsx","webpack:///external \"react\"","webpack:///./react-console.scss"],"names":[],"mappings":"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","file":"react-console.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap aa45043607b465c48011","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: any[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: any, cellIndex: number) => {\n\t\t\t\t\t\t\tif(typeof cell === 'string'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else if(typeof cell === 'object' && cell.type === 'link'){\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}else{\n\t\t\t\t\t\t\t\treturn ;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t;\n\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}{cell.text}{JSON.stringify(cell)}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any, i: number)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn
{val}
;\n\t\t\t\t} else if(typeof val === 'object' && val.type === 'link') {\n\t\t\t\t\treturn ;\n\t\t\t\t} else {\n\t\t\t\t\treturn
{JSON.stringify(val)}
;\n\t\t\t\t}\n\t\t\t})}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tsetBusy = () => {\n\t\tthis.setState({acceptInput: false});\n\t}\n\tgetSafeLog = () => {\n\t\tif(!this.state.log.length){\n\t\t\tthis.state.log.push({label: '', command: '', message: [] });\n\t\t}\n\t\treturn this.state.log;\n\t}\n\tupdateLastLog = (...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tlet indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0;\n\t\tlog[this.state.log.length-1].message[indexToReplace] = {value: messages};\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.getSafeLog();\n\t\tif(!log.length){\n\t\t\tlog.push({label: '', command: '', message: [] });\n\t\t}\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject, type?: string) => {\n\t\tlet log = this.getSafeLog();\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = require(\"react\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/src/react-console.tsx b/src/react-console.tsx index 3e5acd1..881e85b 100644 --- a/src/react-console.tsx +++ b/src/react-console.tsx @@ -229,11 +229,14 @@ export default class extends React.Component { setBusy = () => { this.setState({acceptInput: false}); } - updateLastLog = (...messages: any[]) => { - let log = this.state.log; - if(!log.length){ - log.push({label: '', command: '', message: [] }); + getSafeLog = () => { + if(!this.state.log.length){ + this.state.log.push({label: '', command: '', message: [] }); } + return this.state.log; + } + updateLastLog = (...messages: any[]) => { + let log = this.getSafeLog(); let indexToReplace = log[this.state.log.length-1].message.length > 0 ? log[this.state.log.length-1].message.length - 1 : 0; log[this.state.log.length-1].message[indexToReplace] = {value: messages}; this.setState({ @@ -241,17 +244,14 @@ export default class extends React.Component { }, this.scrollIfBottom() ); } log = (...messages: any[]) => { - let log = this.state.log; - if(!log.length){ - log.push({label: '', command: '', message: [] }); - } + let log = this.getSafeLog(); log[this.state.log.length-1].message.push({value: messages}); this.setState({ log: log, }, this.scrollIfBottom() ); } logX = (type: string, ...messages: any[]) => { - let log = this.state.log; + let log = this.getSafeLog(); if(!log.length){ log.push({label: '', command: '', message: [] }); } @@ -261,7 +261,7 @@ export default class extends React.Component { }, this.scrollIfBottom() ); } logTable = (tableData: ConsoleTableObject, type?: string) => { - let log = this.state.log; + let log = this.getSafeLog(); if(type){ log[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]}); }else{