From 7195ec0576e839cf6722901d3e72bbb711bdd22f Mon Sep 17 00:00:00 2001 From: Spencer Nowak Date: Wed, 12 Jul 2017 11:30:44 -0400 Subject: [PATCH 1/2] Add updateLastLog method, prevent exceptions for programmatic calls to log in empty console --- README.md | 1 + src/react-console.tsx | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/README.md b/README.md index 8c1a7e8..1f172da 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ Properties you can pass to the console element | Member | Type | Description | ---- | ---- | ---- | log | (...messages: any)=>void | Log messages to the console. If string, print the value, otherwise, print the JSON value of the message. +| updateLastLog| (...messages: any)=>void | Replace the last message in the console. Useful for progress indicators. | logX | (type: string, ...messages: any)=>void | Log messages of a particular type to the console. The messages will be given the class `react-console-message-{type}`. | return | ()=>void | Signal the current command has finished and a new prompt should be displayed. | clearScreen | ()=>void | Clear the visible log in the console. Does not clear command history. diff --git a/src/react-console.tsx b/src/react-console.tsx index d2bb870..d378cbf 100644 --- a/src/react-console.tsx +++ b/src/react-console.tsx @@ -175,8 +175,22 @@ export default class extends React.Component { focus?: HTMLElement; } = {}; // Command API + updateLastLog = (...messages: any[]) => { + let log = this.state.log; + if(!log.length){ + log.push({label: '', command: '', message: [] }); + } + 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({ + log: log, + }, this.scrollIfBottom() ); + } log = (...messages: any[]) => { let log = this.state.log; + if(!log.length){ + log.push({label: '', command: '', message: [] }); + } log[this.state.log.length-1].message.push({value: messages}); this.setState({ log: log, @@ -184,6 +198,9 @@ export default class extends React.Component { } logX = (type: string, ...messages: any[]) => { let log = this.state.log; + if(!log.length){ + log.push({label: '', command: '', message: [] }); + } log[this.state.log.length-1].message.push({type: type, value: messages}); this.setState({ log: log, From 2fe9ef5e10b855917956dc61fc599de64f723eaa Mon Sep 17 00:00:00 2001 From: Spencer Nowak Date: Wed, 12 Jul 2017 11:38:21 -0400 Subject: [PATCH 2/2] Include built files --- dist/dist-min.tar.gz | Bin 29123 -> 29597 bytes dist/dist-min.zip | Bin 29683 -> 30183 bytes dist/dist-min/react-console.min.js | 2 +- dist/dist-min/react-console.min.js.map | 2 +- dist/dist.tar.gz | Bin 24777 -> 25121 bytes dist/dist.zip | Bin 25194 -> 25540 bytes dist/dist/react-console.js | 21 +++++++++++++++++++++ dist/dist/react-console.js.map | 2 +- lib/react-console.js | 21 +++++++++++++++++++++ lib/react-console.js.map | 2 +- 10 files changed, 46 insertions(+), 4 deletions(-) diff --git a/dist/dist-min.tar.gz b/dist/dist-min.tar.gz index 46b3c502c88c3c724deb1d4e31199434b61d3374..1748ef48cb0b822a0064843a4b2ea0d09b06853f 100644 GIT binary patch literal 29597 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�XeNttdoK1++^XESV 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 Y+jti9tbu0@{7)MA3%XFc007Pb0P3uW)&Kwi literal 29123 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%0DCfgspA*GaE$6kH*U_I}n-a-> z{yNpsors8;YiTM%^11Nr{17YHHqllyp3a{O#RPu0Elot_?H;z|oWx|CW)r1u+3KJ? z^2$VsGEU(zrs@&a@A3*ld=f>S6d^{om&C1J&ZT+u8N5Oy>K>Q0t6j8hVC5-E{QcAR z@hHUrOI;!P`vg{tPEONk{qIEH+g62P#*u@?8P1s;hd?7=C3An2PnO0Qm7LC-*0TsJ z-sxf+2=}5kJH~sJtLGY7syBdOd|qQ9R4kM-D32iSbUo=oh3YJw zFUz75yVq9{>0-G`^Ss;s%u0L{2Z>fM-n9l9f|!SG_@dyXH>d9>bonodqPMMTMz}FHPNd73 ziMfQVb6B1*3u~0?YAu8~e_9F(5_-F=s5@0x;xv z@b+y~F$Lc__mhgn!6?EObL{=?j*L@1k-;#ExxE;~s3O;$PKjmQFEY`LU;hPoCJ9Ct zPy!2Q7v@(#mPj6n#^ejAm&Ib03J+gq5_>g)uS@^?@b$1Vk0B9lVjf20=%O7=h$tUA zqewaw>B7_aM2({6D%_xWk4e9p6$CER$b`XN3)t@oW1T#8e>m{7TYQX(2Jf#&DQD4g6MGE`h#1 zin`=LQf#I}l{q~=xV0U#0-jjh6vgYdM+XO=TTHER#9c@>f*O}PcIfxzf`*h&J&;12 zPhvB2orlLY@w@mlnfJ4;;$KOcesCe04Q1!AlZf0QUgU+27mdvs%JoK#-X|C~6fMsV zrInmi$YCFH{U8)L2OWkej%BrxwRue98@s0J|L~RN!Xt zCt^;b|GJ^xJBdmvfn9iHLM)Amsuo$?bYlK+O%Y+1%0oK4z z77`9WG>>o1cN{Q8v)N$h8J8}GOyh`b1_xbqyEG2LNB#5RY4OThJT#!>LNpIC7yjW< z-@sh6wR^8z;P2aa7OD$vNySCj99C3!y4Z-HjF5BoUqS>@BO>DeyimSG?jW2m@eZ{2 zL#Id^Lu+@ky4OPUDu~9*)mS$(NnvfP)6V0FvLY~016P7I9krX9!0A974B3MWye*Qk zZQe$OteAVLTthg5N}UWj-b#vmSk<`g`a;kq1=-^i#pEbruoCH%;@;YKrq#~9Lm7fMc`dx zZV+1;|BXZ8q($X+S>eqd9Q^nHr+ZZWIXI`&*FUcn{@YUsS(n6mXyW6dVYmTA$yqik6c!~!&>Y-Q2pua_+^WGg9Bs&HLgtX?qs_FWKEIXS!_ z2^Hr0bKE=Wggb;_sHYtzXUs}MFoTqqvCAxzstpR6TBj{@eyEY*Usq#TddjM~imnS# zlaTacEhc46&YUpE?&1`$lLB=*85D=OB|(KlnHZj-cRV&ct?>{C(k28e?kRDhz}Xuo zd%o%gJp#c@J{T3`S#AfT@Vs4T1$zJ#3o&y9e;gX%4G8f_$Q{$(i*for+${p_J;tGA zbh{{c>*UyQp|0cU?cs29(;+oblG_2jRbesNBUeCgFNa=K=X+P&^h79}no~PkTIz&` zpBw({IV8dSS`IY9-4aQ=F3Sus(;>kk_FjdU#-bHaAWqJsfB*-qSa`oi=Kg6Chpx}? zO?Gx}mV5*CVw|yzK+5vM(udD?kW8=VFhyo6$)&9EBFefw77_|J=mWHUx_S3a$c>Y7 zLady3WfeIPrD=46Iik_@)!f;7EG}OoMX?YNSL_SYYlCwF!omvnAZ6|$wT2Y{e@;4pE_)nG%zu7XP z1!C||mJHJG)hSje|E0tt*3V8pASphfr_uvP$K70}oLW*uv|?vdTkOnGrT0qE+vZD+ zw*{9x_z}b)V_D-zA0O0Qj8|41V-gPT8>tCjj@V&SmAG2Qv){?!WF3*AnXD8|ZGm`H z_>nY>HG_AlY5r*<=JV9?#T$F%y>;oD)h@q`DDLk&8ckK@l%l5NQx-%kM!xRx8k(^8?r(#MHtHQG#v63eY=58*uCt2JX@$$CAb-70)uPb`g#FWxTV8i7Q6ak6|O#rg%z(3&)^ zvk7Z*jVGl(M0dn#kD6b%hA~+)&-|{o=HZ({Y(6 zh_4izh=G*?5|<_6wIF4=7CV$M`9$eCTgBWQi`aUgiuL{;vXFfNjxFJ)u4LOVbKBIA zetKk*9+VUaR7{Jw{a}IN4tB~94Vvso_WD(=7>wA%DOkP18CQ!<{T3^nY)itwl@{0dablT$F(6)Tm%`T3hmNZyG$L-Gz>@-35`|6=qR~9_wo!jkl zd(2Jxi({WOR`zCcjiw;Y&=%qD4{^1VGLkFUtUbQ1;ocP4rF7Y+>(L0dl_P0n%3loF zj81XG#l-HG)!C-&YEyT#xSPGR$U7R2(UIAaTdB!^IQ>tA=6qe)PT)cu)0J){HJLir z4u{rNLUtRv;?gc$62O}~z$~xTYH$Ei~hH#xu5_Jjy8PI!{?C1BG%ThMZFW|&0#{4D?X^(!oi)@ zHgq2bh+;#>6Jf@=rAp6A5A52kW*C@0;Z zxNPoq&{Hzr=cvxTV;JpL8ghI>6342b!MY!tviBuoV=!}7dlJEQxMS+=__t;bjNBo zF~90|Rlk)KMl63?O@OJ-l*F}ju^e%8g6o7Wb}JBMCaZ+bsr3FXJ;i6N)g`IP@@LvV~u-}&Z2`{te$88sE z1I7y5sYOgRG3?h))GUFVEV6@Z3EYyv2MYOLN1tuIgJ zy)tf$adFWQM2nX9GG~an*@R`nTsGN}vPXSwwn5SNgoVT|+eW-|(lUvv@yI%!l5swd zK(@Mn9`&4_QT??Y$7r{3!Jiy@mt|h|=}3+HVmyK=7oM}B zPIS?7>H3BHaFKavIfZu>cY5Oto8-Te)_4MJcPKj+tQ8!CGO}reu?R%)*0NjgKaR1o zhdmfI?7qw(osRwOGAb-J`REPhr8EV-mFAJTy2RJjtln_)t%b!jdzsOm z_*V3)vh^z*Xo5T2uyS#&H&JVfaq;n5qhMge+374`9Ht3O8hXi++}UR5Wl6+5 zn7PWR_4&HM&ZKzoDL_olUx6EBC?}e0Ci8>HnvTL+&}qHMh1mS?t|jsb>v^>w#8k65 zD$U|_n*5-dkvV0JTMcoHBNBpekPkwLo91ZR1R2G&2{Y123i8+qNRZ7Y208ufsB*+g zq54A&v4AjG3;XnNbd2*TNwnx3Sx?#j}UQ< z!^aP1;Md`8?mnJe=j-&~usE2}b9+G~SYXLa43at-aNw;^l^v_eJk=(rO3Z0-GG*@T zOdk74Uk5VO>(+2WyOA{>)}DBaHM9+!plLGTC@20(zQHMuRRc5<8d?0F*gkVlKmO^Vo?cKjrB3y!(;WEzGa~ zrLefXxVUnAd3j}Jv9PdsYvJ}X@_k1fazUMA5E%fq+zeB`NH%WDV*l)HS2Nt6j6j>2 zwPh>M!zjHS{CzF%%bGoX&30h4sloc!cC|O&Y&us@45!=~k^;ua{2nSuG8> z`T2?;k^Gj_H+(#k$0i?-^nJBmE7hy@54F;rT6L>hdQt7yJ~HW#TBlYzsWUCARwb#9 zl#d%s(TZMF7i;ItyHxvBEA_lLQu&2c)~i*klBte7=aL6GtHTXeJK88MNEKT#`Y)=> z^&z3&`M>R5-)q7!5dK#JQ+%^hXR*zOA~FAKxANrM}VsZcb2TC^m(K$jXDm1T2R zHopT1rrZNp#$%H}?XpZP#dsT^G{&!GTFs$n-3weE_-MZVdpytArr*d;pY znX9%{qrm+F%ssrWy}xV8VkPvNlBl&mPOl(b1o zh4yrl+u7VrHkl;tcE;;zX$g|Jp$QEL#qpK(F85jbWc?j{5u_-~cGI2Cbg~u*9N>I^ z;Gmy#arA;$H7{8dB{)2StOWTi|UB}PS}?f7qXsw2824J zp=^I+#?s9;E@r8SOPUPl6zi$vfUuo&5z>F5#8FWlv4|zhyncIGy%T)JguDXT9zF~S z-HhR%Xd;u9;F8O$70ar1S!P+rPTrpX%%(D#3YJS2vM3F?Hw}2%C2_?rk9f3=LF({P zG~wYmQpi;M*oH$V`D#^Og>?8h7mM`;t7IL;8kuEL&OlH7YrUG`03X;zzFKm@veAFm z@Joa&mJw0do+O#_ixsZ`>SZx|!`GE;PGAUC%t{vGtov5|MeTO0WdzEfNEDZff0G7{ zWV#kL7ohhjQ{R#fKEw%P_LPt|vy*9=*Yywi1U+BS5LkkR{I-mxF__C;G z{4%MT{8(HtzLuer93pyW!EhMUsk(o|5Wm)O=!mU>L+3l{JM@s~6@c_(_BiTrKtRfw z_-kIS_fgd9D3J>MUg2L}RPy=gbCS%+96T38CWGVN#NHV*#z|3P$??qGkB)a!Gy z4AmkWX+`kRCQJ0o9@8VKBC>Zp?~|hT&S?kZ$Ox>@fd;=W0L(vYYp9lweq}S_Q0C{X zoWL7+(5zvJHl&*jk`BF+uOMq*-p<3|rz(K$%h+)?I*}eiqnP0cX%JXTvqS7z@fjkq zm$^XmVkL*?{7V34P&Ll0bVx}L&wLaTWhDE*eimMw5Lhc8=)B_V%Iiuz-IUcyjV z(Ni=y9i7>5V`rxWLUqCFI$yAkZI!f1pOonj{q)G=jUhvd*g#Ws+anJ0oX@TdU#80ZO* zRyZk{XlvImErB-B0sMapK=S#KJdx@Det7#sqCXUKL^wEi@-uvuwl~psQYLLJp|whm zjGCOD#YT8kbV~A5wB*aWAq2oizPJfHboffT4vuJ@S8+urn0gH>_?j;opa>~V$S5;x zk05Kpo?APCpjSD|2^$O|dCG>Pv&?-vWoIUELrbCF_^h7i|Yd{R(8CF zxi;zk>DjH0;?#O%Rb4{#cMb$Y3D|pNPJ6=UIMK$(C!bE)3K7m~EmP#E2t&nd3XD>o zR7fV(-<1CBhd<}jb?t*UDa8V6!AfL=l!Zr$Rf@JouBB{IZ>3YOZX?kAbYF!|S4A@#ClXeV$K0UFKr; zVwsEh@gFe)>1_s{VPGZL=Yp^6?}{2(^i}-(5eA89c7P^XI4?m8$rQBTKf(B{`Th70 z_>Fw#?OcCvPoK}(qNpmw@@9|@K)EUbi67AcvHQIE@`lNL3tiegAt2pVPiR>K`6(UH zN8^dw%E$C6jZ90Hiw{T_SQS5`HC;@f5@sz-A7KFGK%j-hI~UWXqX7}u?AiYEgn)Qt zcuE+2D#}t(;hDn69PN8IN(f!$)u;Fg(O{ZaQ&xW>1|$bT<%DqK)7&oG#v32?AGw&t zE!5SB!nESms|uJ?CYP7*`!LeTx90s>i$)v2@gIqFbXfA9e-evWVN4k6{qWUF2c1+8 zS_I$m6%@V7HsfasrA8hsWi@=oT{ra1E;n0l5fyLT;16<%V{9i-6y71R9}yqQiK2x)h1gvY0DKZZ0jau)Mm> za&Jq7k70dq&7NaeB!G_xk}50Wz92m~3~<;%IM)13mwB~ll`5bUs^lgSI?3mjCE6hB z@Cj8FjQfUChnDthYt5-V%itb&W@CIJ;ZuKA%*Fa53*P= zp%pEnUF_zj_=qZ4v8c$u==zu243IZ_K_km_7^NfaV3jv@KF7pwE6nq_h?vGEYtw(S zSe}541*$zYRxcDo3=)b zqUhF!NR<$+B~scK@lrYEU z=qa;*Rp|jsU<(?!&B9q)rds6@*c2>-&&3UbfRAeZ2IBA>IxRwK6K$<=Z^!e#cwjoG zkjVsEAr#9j@}l6I7P$GIJv6{>S~j#SF(fjKw43|E-%Vg{hSGAXJ{Vl}*p=Fkzbu5# z=RnfFXg?&v8rz|Lv?Z85ao>L`f6K#;vg_#e$?QI(_`wJc%UPlzG&>H9p`IE2BN()? zB4Hc^zfDnM_H7n&$6cf4ha8&@Q6RK>gu)$4rf)n&&wjhx86oQ<>DQ#%c!z3c$6tbK zRt5bo>Z`Bk{h6Y!$SHj9?ABb|<28D#?uLAu&{vK!VqoK#rqJV~d)TfSYoa`(J&`si zDpGAOKO5w{&(^`;ISGGgsB}E)5SvH`Iyb>9g_8{h@5BNuy#o{O$pR{^Q1QqoJmqIi zE3)7EOP5PGuXu3KfYHKQ7U4 z^NW-4s|jmICU2O5oFY{xul&y{DU_{AQmH<9ca3d>=#a{Z`<*P}L3`+(`Ku7# zIw;cgZnAwx1~?6JsJBdACrx*=mA>6c@tdm$lk&G=br_*!c4x_5%xnAP2U+CD7+-}) z6iNBs3+P%m(anE*+67Ka7t$_wvq(Rxvrhf)abH?voB?f*iwFM%D2zPr^_RNzNv>6= z#_y@|Z0rIrwRh{6&0XpG;T}lIvlg@tk`_1`KnQ7gMbEXT{Wu$>?X_A5Yg;t1pPTFJ zCY)$QE2&pyf!@C(bXuYr0%dgaZ{}3E=eGP&{tGpk!T5ifZ6$jv8vY7 zbvJfUwI_Y^r@Me{XzP?OqAoT>nD#~-jhpDQ$ZDKmf)q+!GgKM6s&d>l&sSuD$tI- zZ=$bFR$G^!{syX+sZEntoTEzF&YcPhoJ!OhktRmqR?q9Fu;g|ma#cb5rBQ>15nTf7 zyO+Dv1?8=)fjCF21Q>0Vz&Y(vx5U)Mpn4i5*sFi9g&Lx%?t0ul*|x#YyqF!K{FQOs z^6?BMB{!n(4>Ma*rEYRRH4{S~4dlQd6n5j5#cu5lZLk}vYej6R*h013=D5)Q9*Q^j zXgW4F-GWAg{q)TmoFTg4jb$3LzW7lmldW7&v?{maMvX9Zc6sB?sP3XI%qr`s%}D1GSerm6Fim#=z+%u9EF(wpKl20foam_*UpI0b}IJ7!AtGuhIhe?mC(X zDxQev&YiVMGEtK@1hwi;*+)fj25(&@c%7kI&#jg;B_Aay`7sJB`X<8=I`=7zBddP` zqr(<)ksi?{>Tx3&Vrv>@cdFW*C64q;P`p<*S_QTI*v`j>CC;>35pye#N7vWZHPIzo zjtY)&a=4=4Q~Ry%$M0CNSV~-xbU*X?9P+0>L#GWaw;^7=*fD#~k7AAYO1iIHS&}vy z^w~$nF1Huax_7Njkm1l6rM5=3!E}F5Zs)EJAgv^nWLg7I-EP!$@GYJ&%@BycC<`>@ zyvJot7)_{wnXjIM%w+cGcmhLzovYT=EdW#)&Cs%n=0>{L^dc#`+Sv(bTy&)061n3-G&Fds zhxOcmHVRE2yXvYRCnz1Z8mq4?tm5MK!v0AmKuUgSNGCzw4OCB@ZX4t8^(syiE?-No zC}iFrs=vFBJyns+S9%wP+$Hf{&i1n3@oxOYRi#H1H5 zK0cn!+97L$K*L>U!|Z=v&8NnOnZ^!JC{*6j1aRIL8`NzLt-DkVG;eEpRkC!0CMhv5 z`DGd`i`k4JbzdqEpN{cL6+R^$Blg$ClX9xoR6VNOR5AFD8XfhR>Uo50?UMdh21hA8sBRvv!k@Fwb0#fY%Khqxeq?>9 z)v9?uYxNM1?_+;m_wc^~cIPqR#8gZ1ZVE(y2QROlv9mb96Z!fLpRMr*E=EL-*T3}0 zfYNyL#wshev1>0v`WN9@dHc77$5Q`y0oi+cYQ4pK_+NeV&99GYz7|vV2Jh4nf&JzE z>#X&tIk_mRnlI5&!_GKmY(xO9Ki76aWYS2mtqc?6W))-~j{o zd+d`R6fA#wQ#sNud@Jre|Nc4*IS@{POn1+=9h0PkNgy1X@bEeIN@8$qx9yMs!@cZl z*;n?zZ&gW4S_j(!dWLVFP0u*CmQ*U$StTv$^TLN@H0}=i3mdnV7RH0~Q9BtgY`k8$ zNREcB_WO<1)zwkbYEPEigZ_BXOIFUh{grp)g{6P6hE-lY8Vn}m$*47~+`V=0_Il?| zvVOnQKDx2qX}9hi$8ADwfi!@+36)(VHUShY83brODQ zqXB=P@+8{KJ|@@(3TK)ns(uo(x9#b=n&5UG(=ygJCk7d_=); zG?)w~ABPFP?;X8M+7q?`nI|lf!Q!tC5be%}tnhYx4gmPl8V-8|(;A(epCx_4y?xs4 z5ry+%2T%@@v)1r*Fe11%nh*M@w%Ns~&-;G_)$R1MkDf_GJbP;cYM+nBf_}T#8jl}= z?09(5?RN$j_%co=PrGNy;GEz_AVo5I-s+vR4n{X5MTUc}boRl@drALfa*78!(nc>K z^3t55@jl_0#^*<%T(^HBLbgz&B92g+HUg1>55f zpAr-NZ6_iy{3FPr$e0aM;K%O=dynu($JssRu-}1J_+uk@yN2(|$%h!>!vU!Qu_qSn z?rj$zJt>7ai_i?u$3oh{*;%VkL9l=7_$FvQ9Xv^fy;hr}0Pha0*|!LO4 z)K6P%e(OFyjt8T#=pKrOqvS((a6aDdj-jGt!0j9OAns`qD>`_aK!1`L)Z2IQq!X6h zx`PrZ!QQb$hEM?R~e`vk~0m zZ#VqipqvPOZ1vyc&t2l*ZuKGQP&O}kla?ETb@*a167y)xv7h}xf2WU8&cXL9`sFCBh;{b|L)1G1;SWx`#}kM1+C6_^e9F6&h{ECY z=h{8ef&l6P+X(v65t(x@Nney zmsT&O_gFan6rxKA@?)pp<&O!z()z2`;R~6JKZJbN zy2R&jz&doHEHhWy?vC2$J+X zzi%hqlT!j593R8U_@DaJd6}mpkpr>{RUuY2L?s>ITkmy&!xJr^h<5gpV^%tH?g{oZ z8F{!J_!o;I+}D3Js(}0gny(A-7t{p8i*83F5vk*T8Jhjc;CVNpLsvm}-mG;#890xo z(uFF?WkT8w`ar%-n|P7*z^x>W86f)Y76&n&e3YmQ3Nt$HNyKpK2zFrzu@9)Wa}fG- zWTcW`tzj3|vipfDIvyg#sGla%F+#DPdcyXgCxIKS_sM^V#I3s$h?nY5GFA|SeoZ~? zpbx`iz80f#=4a5~H+z8C1mGE5Srlu*3WIXQPeU*e6NiN={w-})t2@=DgKB*jAJu2| zrLFo_zqa%k&+y$ox1=5l8YtLAalN|K^fg#etu~hSs;IZ)iyv6+9n@|ty^v2<{2k@> z>aKKwug`y~X!xkQZ$Mb1xwMPVZELTn5bmb5*+$K+>W(~ZI4E0H*WKglhnk|h2{3;G z)4l3bJSE`A(&#BZF$DR3AfNkEq7a@*iS+SYzwU1CHHA3R=i^P59srBRdi`B}>D7ai z%{qs@^MZY}>ZHu$Du=MUiD6gU(zd}?TO?^?B;$WLsI$u6wp83%dWDJ{@n&Cu?Go0G zdx-CQRRU;iEhW`zvd>04TT()DRCfin#_t5*-`rwRV|VFUwfeq>;a4A#=GE3Nzwg!M z^AS;Q3K6!pSo4+CY3%U3jD)>6-fdnsnryr~s__rMH;ll0`2KibI6khiOUjWG8(|DN zP`!U$Q&J0Is(-Mk+5%zrZq<(D2MP3|+L7_RO?a^TyTDSKUe<)QDC+|G3;XpjMPscll-PAeL7!)v)y6snVC&(_fDVueNLy8g z_%Iz}T?7Lv%yE7s=_w!he2hBvqcug{9#GrsPr)D#$5%$*2ibZG=5e+Dp?)W--jIJD zzzA|^P!n`0HRu$gDdq@Bg2sESSbfQ_;V2KDNr~znCGX%l+5C*8u7Y@b)yAhSBe=(! z*ob0?nm0~G3Bv)@SL^To8k8;^_Y088;z2ZHLJB9EpiKS4@9`6*qYkPF4p_9cO0`He z;igyx)fWS$0p24yQ7WWsRxdXH0DfCy-b8_$_iC^K?;H2kTz=dXkv=AXk+4{uaPx$Q zt-c9PXYphQ&tZ{=l~{;WCxc+vZH7x5haz6BT7Q^6|20U zQ{DZ*AwK?HJX=@MMehK&E)jnL@C7E#KP8xWOleUw4*dp*y@?>&ROuzfKn~h27=#ds zfcJL+qKNk#-@|C!b#Y*4pd{?cf%>mUn=>LKbP2mu{f!Mh!-nY;c93)#;X%DeV&?tk{vcG=Jy|{*#_~pBA|OfUE?I z1a4h4@d3U!Ml}i-y4tJmy!?acA~b;>bP^UbjH^F_Lcv*9K@gf~!1=iOoIS!uaNI1d zt_nefTh;3_##e}}U^{<~q|PJxR6pDh)>hTaqi6O5gSv&0?n8p`Qv$B0#S=F-=~tjL zFCGk`13Qhuri4})3kHc#&_?9cK2J9}x@tmEtae3D5O%VXRVB_=>4Xm`)TEza-2^jH zclWkHZ%U;6PNUHsun>B?|6Xc<#pu3yU-gc|+qo`!av9jGM?th z6ARwGcV%LYg=T+yVxgeBTMzEkcR;h-b%~EGdNS#yAgj1vUC`k!{{lh(TB5xa%~ux# z6GQ7L>RP{lWdfczNV^w8KoM98HFus;&k`*z?XC7c*%LWfz zFQ~CK(!%ir$VB6b0{oz57Y~TyBbK>AuEik4((l~TLhDOZedmsWP~@q*kWAm3U6uQZAKZcY+cLlF%xpT214yrd$nyiK@!$j1t@SQgW8jhjMnIK zvMt<)_K^fem+rQR2@NL-jRx7Of(f$)JW40oXFSL>X3i( z>VsA{u}g}mliCv{-wq5-gb3Wb~~{gw0u{FRhtgj}P4LzolO3r>H0>!tXH zh8lpaZBx1PEt$$XNq@Eqs$6F$o5Mc0Sy(ZE6ygl8dMqpNpo{lax?1+)qp3Wr8%}4;U+m{Lb zyght;u!O)dVGo_j)E=N*U)6uZnXYii7*5r16^&u=J8S$gyb|_A!!Eyv|^F&bR1XwY$QR)&%u2QO@Lnv>;1_HlZ2-x`qaR{8=F5)o+C!IS2c8B(%zHPaW zijV1QQ*hwB}hc84?1a*}gggNof7?*z5Aq zs$h@g13fKbNOnZ8U4MVdU=*^Aug`ClhzMo#L1Yc;5AN$MM)^Jdo%B1pqeKnLs*jn# zX!L8wi!mo;yH7C%VN3we#9W&*P;eO>>Rrk!)E={)VeRyx)RchTOabhyRio31s(}ey z>cR{F7!PZ=R4Ei-vYuyo_3c>mbYF47L;?Xv<6&O}WEZ9t$@Z=NOIiP{BAmc9ql(D`;K}S~t!6b1 zT+XMJYn0;FCQ?Wn!iC(bLwtqxW9dW}N}S!+py3%McCxvta+LQw&rJ$UI-w%uCn6q5 z6C94Lx4q(zKM;T1OJB&>PH{3@&&|oe4dsSDQX>7Q4;>=nz20izU#l;e$#1-?f#y`6 zKOyUN{9&?UYgC7MXX!XDMI^}5vxiG$GA6;Ods*wNQVkwDBBS&}ZK$PxK3uv^CJNkl z^^um2A1-l?=|oCT>k}<~Pq&4L1nrMt*4fpCIlNYNrvrbJA-zisKwnaSda5HbCTa!{ zYw1*ID@!8=n3P*}jpa?ix&rByd62jP2q3GV0M$4O0iqMQk;!IJFV-kqzsWfX%=vJ0 zp3ulkEznENk7TshY6x3{!Q~W|dEvq!Uls5Lj8O5Y?D?s=Ao?EU_{9&*8Qa(Ev28MD zaNKulN-TdPyTyt=+)9HX+30a~emMHxxe8Oj#QXJm__5=x2vP|!Ixi@AlGNO}Eemve z!`+Z4ur;u3;>Fi$@grjw){w|U+D`GH_BF0+a$6!%Sd?Gggd-vxov4f=B&N5?&^V2 z7947f8WNn%LFGbdAoZ=7)Zt9&rcAS^3VhaTM2qwSIWJI7akr+0HYJI-lfXv}a1^xPE9q4}t4&B&cRw%YKSVV$3 z{w5~P=8R08tH~&uIY>ManVb)@Phft-UIrGnXT4GGd2J%k+;(-U2?`7w+Hk^gx*3mQ zy1Nli`+b}QGVu@qUHH;zFsHKcGSgFu_oIJ=CpI`{f|9rNjetQh2F>!nR5 zV6mxQOoB<>*=W8lJ^1g5K?&YcFhNYupD?-!E_OBhX;a7BOa zA&Qu`CK|6>T8Ha)$Q580v+R%C)+9dGD@mqL5lu|OFy){n0{`km&5dZvaZOaJd7*#U ze(RLmY3fH&lHW#ZDmRcGWH-`|;MGJM%o0vFnS-kC0UA;`AQNypGS`G_Bi>%Whsx`?@MaNE@paSs&Mo*_$sbMRh)vUzn2jOG#oySr2K z@)S5o<+8;nNE={CO(aCAJ7mCz8up&e2=I_et3M!?J4h0ty^T?})NHY5EI5Ax7w)dX zpQ22e+a)k(wo4bboDz!EAajE>2gX%DBJRw2$#yCX{;`U{E1lO;A-8VTCQ*uPj}xX~ z0|0W4r?n1;WZ5rlvYbH#OyZi}c%+k8eBy9d7yUzY{hUBx6uf(>1D4052 zF$IY=X(12>P?~m3GmgyfK7k5?{JW~RFvicSJ4f&Im5FplL|feks4tZOBzI|&nfgYB1;MJ% zg-d&CWM9c9_k(!ZQD*aXtodLF`qs*xpTBb$5}EIH~z%j77xmShks?s~>;$3Npz%)vaR_e^3-Sydu%-@W!C!i!3?X?}U*~A<~ZFBW{T? z-uWmtve}C&%DAhK@eIndE*p-Jcn7Ivk(rvSyE?1brHJpp6LN`XY>GV1XBObB{IU=B8Ue9Z4A}L9XAaiL+TsWs zrvdIUh=xD1$)oysEe6Hq$~tr(WY~i7VP~j}v>#;7%%AYdt&g3nHX#HKVs;C7A#(%qes`cTIXVs85Odrhh1)c?LJDYh&m!aCpy?S!A%>ZwD6 zwIL3=V6=Nn$EDuB+Z2~m7jv{;@PvE)s>%I=CtL71*u}i6kI)Ciuih}|C(R|gRCcoU zwEsxZK6?}-ud(nZ>!iE7A*24#7J2}Oo3kF-pt^q#!a-S`4C*xW#i%1PL)bvUl^6H+ z;LIsC+8#T!K%*v>6S!pbNnd;06**^WzN+E!uB@}lD(HPNo_r&alf7P(%CUDQ3#KsK zP#73c(wUw&fg#$|Z7#BR^WcM4zi5*CZC$-~)wvI*{%P}0h@I`2!8$iVCKv>4_$gm? zsaAinWl)?O82yrC_)`JhszJ4hxCJom3JZY>H7IL5&z2?C`=79w_D;a>f-sQj-`g@i z%IQA$#@X&yfsIX)aS<%DV6!56R za$}%)We^nBRpbN41}MPLb*@*ORvz5s>y3ZS>g6q%CafHTG}W8pIQ6xN>zL$R7mr)T z_AgKr;332Cv*>RJO+jn-0^3JynP=3Y6vD>dgX+bgwvR1z5GdCiK^V;@YBt0g*=m4p z-qlw;hMvTfJ&QR;y0C=Mj6IrM!qi~&*c1UN+d}uCp)L*VA#OqA$58ILItzggCQyGG z6go(0Wb>FaRpcB3oH74vML2^(Ak=~Rf!SCSn0wnVMV+G~%9!1k;ZIaKGr9fXsRRs; zitZIUEOg^l6EY1{hS!icFZN{7D|&xTO!Cy18r8_X0^NYoI#M*?^@}CE@P-Yd_Ntm; z-X>+6vXqGpxwH$X4>0HFUWSopJyw5OI=YeCNyptLHTdPa1nm)W_J-Sa_^Bi73SO0+ zpbZ4S!QJ+a2a`xF)MR0C8gQd-@u@-9-NBd!2m23?yo67Gw{Fc(#M4=mOz5 zKS58HA^rT|9b^NM@gDYZ?Q8VA^NNFejBT1hU#Q-#$$ASN9$~W|e>Vm2{+y zI%0S-2qQcvyAr|VTb4ohfWTh}9!X4L_|6khZKwAD6ZAlkIWeu<7Ejlq46@GEWx_y$ zAgFIUTkzI}AsRdr$wz>UZ6|yftAz{=4>iWZJ3&FiJG4;P9D=gOHkx5n5nFGHHHWjx3PC*FWfR;3V+%SX}uFTF96C)IHFe6sPFCgJTlZ;JER=q}g5k-~&{B%t}v! zuP=3c*c9;cl~fqX`|;d|4{LpdR0%a{qJ{EO0gOIMNstd(3he>V;}d_~5OitnS!L_A zrZICw+1b=lReg+YOLXjjejl4w>binj1d^vh6(rted4VG24HwHuYT<2n*|iy;~oy*DgVP{IoL|-q&!Z#c>yhWNhFJn8GvX z?0`BPjfUgbCOoI^Lu*vQPaaKI`Sq~B`ZxKvT3I|k@5@;*i*`KRwaVwp>T1Ofh^x7i z>VhVR6Fh%`6g@fHuF|UXlM9F9A`bJZ;QX*k7yrYVE0qZ-FC@=mL8==|ew~5|8Ii-^u-gES zmU0ifoecxL)5(87)dK)GD#xwfI2MD$Nh!l+xD6Z%b3RFAM25Iyas~%|Iu6L$#%Y7b zbw}DIL(=_C%L^pt+Ehk7=(SElv|8he4zm!i6@3Q6;xNNxD&Qw7C*+}#yfQcrddk2z zvC`qY@dO<}uD_&BioU6Gv9EDR=y7Er2P#$;Q`#7j-@bp11uL!K4~twm!&t3)fKA$e zNv{Q(Rs_8b=vn2P(oG6tcz%TAh29QZlhe0vBW%(-=^%#a=5XO~VG8JnINY)#2R=E? zqBa^=jDb-<_Nbt{#T%i>RlcM|R#W^fpQ`~5i?8{ka-;G$E6v;ZB`14JMYdE-=wTlg zbKx8^!{dJ!d8jC;bU2}j@rQbXe2Y8;v+`g61qtqsSNxM}m4E)z8}Z6wXQ^_eP$w1q z!)bSwMM4^a%X|WRym+({AOE>Hymqb9c|ClCUXJibx|i1GuYkuQeU&RxWz9rjJMnbIdq23J1mkl6T5LNKP{isOO2i7_|Z`wPv1BQ9aVk z(T3#IRx5H=s&I3u;*Jj;D}t=We@bYcp9&1cl`Dn$3;_YoX{t0^eH^{XqsGE6q+#a3 zRe*oE;W72h0vMj^CC9K<9(IqD_D3Az=wL4qMph4ee`f+yt)>%*SF)WQJj(;0*%DE`Y=o`YI&J3*{(BwQ9At8rG? z>1U3XUzRFsH*Sa@N>$g_nym%F`Ndx?s9pwPmWSgNIsCZtOQBeqFMTZ{pw)3O@Ogid z`T~yCOk0o}z5d9H(sr~+@bRKanl8&DIc7)uqeJ}fR`{ow+d9WMOe|8ux-Z5ByBhh~6; zDjVU7KUjM4#!^TzVbnE5|Ec5<4*!4sXf(<3IUQ5*NCuQ2V&!^e?OO3TgT^9<0j+{Z zD$#^e!jyUSY?g}2Y2T<6^esh^0n4bHbL|B(Pxpe;!U0gAtORFy26A1Ua-F(5on`B^6Fb|mUP zT>u0wVyx)TMrC;|vNfV`w1i+yXoG}aEdLGvkDj=JZb-QAAEhXn5JVxL$k3NXWvCBD zZA3w&9vqM#si}CJK)I-X>V<#w(EM@mjM6(*5RoKkbtsCQuat?zWR%v3dRoC@vq2D~ z{b#zL0|i3=EC>CIdm8juAkIo5!Uq}XNdLY>V&FJt!{vCC(()P5)s6$6lcsjfKxR+` z$7=@wLTtl9s>yj1C)Qn;|&?uiv9Xh zs>73`LFZ#C7o^4tuV7%H>VISe1kYiSc{M|Zp0kBSMDVi+g#ds|09pn7j_`YQ^c1L>X&OPywk%+7#RkswKkP7~Xo8WF zi;NIAFH=x}$Y*Ha&v>IirMkZpvOrqtG}vxYLF;r5lfjbx5L1&}y6@MqWn~SY;(Oag zg&Tjb;O{SKV##J+EWUodpaX(%9lS=<<;o4_0i8=9qb%R2*J!rpKcb0yTF_8uUUCNv za`h(>Wm%I-^Amp_l+OrRixqf(%;IN_IyWjm{|w`!RMj7bG$ju9C)ZCQit)WOz!v?y z&R}eafe>qNR;&|O_8Srq|F~)+07AMmO~G+|{5NOcuVbXioX@m3R5r)BiYl+d)lVCh z-K(?sITS-z4;X9^4X?580gR!wk1peJ`B+~qqPhq-paFlu|0mM7DISH>UDs)-@CgroJbcWTQ2f5%1whdXI&p8&75_wm> znr*|JOdo$&{ygMeZHxJ2;8%GftZg-Tja6kEF&J)V8i&qL+>~6J6NyQIbV#UTs~zEe zaf{bh+s~>a$$G^HmYof>~myWyXC|u zy>hQm+yI4FHWk6RweDcJTjhA2UKtd*uBi~reFp}yxVzV{49fYi5X3zP!rfA~t(Sn6 zfx(rR{USiOZ#Y2Isu@5yYNSrv(aNPGu*b;JCcSX56sd%_2o|Ds*P)eOQdkBBSK1YU zxOIQWfsi}zcvV>$1k650#SHgoWG+H1g9L+Jgo|f5*TXsHvi8ZiUDW=j7rgYU#T>M^3tx( zo2I<=}mja+meYYs}eoqIVeJg6^UR-T+6;hw=lS~y*p zNs4k5(tB8GZ;R{6b*sDtc#27G&S?mFIcbhUR7TjJ=Ddb*I*=JgEWX~h=nmX+{ASs; z=z84;1vlrGgI+1(FmBm(JPxkfEeC({v|1~b_0?4fyBGsF{pm)fxqLNCKz@{3g68u1 z6r8Bfg4Fr2-5Mv;Ioq28Xx*7QMvk*VwWolhVhc`ffAi;bykVCqjBCXy51MhOEAB%tFJ+{ZV zEjrh}+(N~ctO&Z8m|u#X-~wu=XF=#VBM@jV|5gYq)maH2XF|d5@_aTG7hOAyrfGgT zIsE}Zu?432^fFFiwC0X{1E|{NxvMLS&DGW ztJ@@jjWcT%yho+!1-ySuRYHVpZn`Kg;ONImYt%k{iu|Vw5fn`=-|6G+&VM*+xEd4G z)}Wv7qJmC7=`JFYg2a9+r9pnJf_?L!ki!AakvSJ9u!+y{;|;KrlVqf%$nzk_>GEwt z8EV-ZSgrB6d(t=IZ0k$PnQ{B^6=&tYa)fLaFdZ8r$nwqPxOIQtn}FxVWWlyO8^<@U zeGDOQ@hd-Ns}f#K61*tV9Ucu@qYjtsR>Pg2av;a z|E{F$-u{iJ=y`uk85y@k;l`{-nG zt=K;NC?esKy-dIVg;ZGn!O38?PVi?h6S>3zSw2uCSe51 zrdT|k3`QSwO|87N-F#c+*bBM*Q`!xVsPI2t`)_VnHFsKbUQJzNaG=4KjcsRQ+nLz5 zolK00ZG5q9XJXs7lZowQVjC0eyjQig+duoB>K|R*b?f4sYqQb0Qc#noGQ3RF zCzZ^DU1*!Yyi{N5>FYf(q`Mb?f{k$}ckTRtm+fi7mQ3R-BpA3NfQ;=|vP08+*&olz z3eISAp9WzQ`XRSdO?HoFqdo7RDt-$V0!ZSqw#HmS`5gbM+DFgPjs(%a8(cE{-iff+qax*gR9mET$2TdBmBgbnB+3m6j4d%_IDat#IFy- zZ&Y3O#HgQcmV56WKxlP~?>S?a1-2V(kR86(K|0y%3;h%ps7MYM?hN6ff4|d~o8bM3 zccs%GBf0)M)WvCVQG4w7gr|^3#M_wiUvJRV;r}s6tJ}S|+N)jZ;WFgDQstyyjQSB* zs$SQ!86*F9;y_8ip9O=#z#005?|fNKzmc(t6~hio+!C*Wg-#iFx@-KB3K**9qZ6v* znuN<~w>L0Bvygj;u<`^8AgIlLHe<3Lhm-zwPa?nAGc)(fm-#SFt4!aGzZHtoI%{_0 zXu0l&RF2HmqYV3+bAD;vO2h@!!^;7tuQ3p0Tl4WechRj%djV`z@C~Ew%EpCyOV1d4 zBL66f7|wr1)>!*e#P|xRfc(#}3C^{zeT?Vy_hVRh?VD4x&&vHBZt};h=nwpxvET2hR|eV}O%t3TJodg^P)e-QHXlre|9=qRhmNe4#7e;WT}iehLx!S{OYdecZ> zX#Y!&9~L~@vqkx%^MS%?OrO!o=~N@!c0q$Z;^ldmFY?`HvnOpED7$64XdYWNpkckc z)#b~cKfT$kFwdy|+BJ;Q{;hpl68(c-Co0C^3{HuTD;b3 zs?}7d4yTXgfZ<5HFqb6-*^y2fo4a!;s5}|0uRtDXuH8Hz|y|=5+ZSM$urACZv_O!n)taX5LQ@M|CiRHImiu0LA z_$K83kb@XL>6dcJOZ2E;uujVQWC~0FexKQe;uxMibdWAQ0808bP*Care0rnTF`&2E zWn<^@P2jAdB3V zk3&`0m8HUPG*|E|q|t9qu?msqN0g;B9co`|f;3i7@a+)X)Q+Nr7J|URhIEx#83h0$Z7 z>P{K9S{5(s6JKwh7gdz^_@d~wJu6t8Dna{JXEP`^qd->bBxlPlS)r)ZFKIe|q|IYI z*xmrtgozZ4UzCe|`VATjwYv$wkCX;QDWy)7$#Z7{05r#KPWOVg)$Pf&2b_3)5;}M3 z9pv4N=B)eEW3bQ+8?oJdU5lzEM1YQ*Dp>nFDp4RL?>2WZ~`?tU8#hcL>%zF zfT!w6LLh%d&7Qj2nCgad;=)7&xbhF^ce+mA8n$O5Iz1MZvj2bx$jDWpWRTxS}>(dZc&h|Wc?R+@=ZFt$m9t~Yh@yv2T}eIN=3ue2OR3C({~fD4HUl(I-=n{ zgL0jck=ofNjGIK!+?AqtMWDRUWjs#oW%2|8VY}1EgXB~-* z4PE(C(_>bgB!4p>dnb+q?dfkic1{IX5dt0GPjZ;N&6{r1GXZ)dBX+~c;<<*|YnT{4 zn}n+X<-`ul#8M9Xl6_F>cIZQRW4CsT{BBw3VCg_ANu#Bck2+k}<2rE7yZrjupYn9{LcloUke4l>x z!R0;$DO)|d-HSht;U>c_e4?oXj*zlgCrVqkJX%f1-mhx@y6Qmo?%cgR zi1ntxY)v3tXHfE^Evikq6%uY&m5Lx}68vf~jIb~c!}ZrGYRUhFX{NXW;LFJraZ)LA zJ0_leaCAwsgYoY&_`2SHL)tnJ_kg5vKNQVhf8i|2 z(}BXLLYibz{ZU!tR+k1wh>DGb6(v#_hhqooT2e_Ks#FzIaEWjMs{X5XtQhbfoy*;E z$pf~3!RH7`$n-i44wMlC%V9S z=gi-{D%+aMbGVeZh#xdhRdt{u?u}Aj!5~+c9p0 z!xW)Ch*&BO6xxJ?v_)=}kC*C(pY8*$f8%YEG(paGe{)#vMgE;XiO{&iQO4lS_&64n z^^V6IVP1;m`NyM^Q-~-7*99{;lNV%^g=Ks-QXR|rG`;D{0`%xpr_jw|X}eph)TR?* zRdNXqYHZAiHlf_i%kG(B>JY-<-}dRSjv}eZ69$e9{}fRU8Lm*1|2@bx0q+m{LXX6sA7)vy|tm^>Sua5hV+G4;As!z=H+s= zR3yPxCH$M-4E%YYUGq~;6$t7a$tlS^kGmq7;iJktHoU_3;PAkj8qa~I~ z4=kaStJsiRa}YJurzA`16ckbe8QB1zP`|2%JWbkLncte@Jd=?kc!pw}P;#v(Q-twX zQU--@O+T-Si*`75{l0eke5hDpG-`Ht1Z0oT?Qc5~^$e%czWD}$# z6^DAKB0w?R95oN?>vmycC)sS}=nw9{A2czB5oy2U$9CS6s_5v$PsJv|;n1S%Q(TkMbYya@Ti2m@%+kO;C3|AmX-u0zp;#YJeJrT?)nKQ4Tw?q7(gUv?ttEQ;W3t%_qUS?*@$$T!T7oH`>ZRISg_+C^S z8jd$W8zdmo{^Z@sFTD1-jX{2`r{TsL?0WH3O- zJq&)KZp`d!x<5o^Vj3nro}px_kFwY)>yC%FrlEexHNn|n3Y^PM_Zx_hc+Z=4nYOWa zE70=?#qZxEC$ec6(~*ea>(C+}!bE+Y4Q-Q0l@y)Rg2H!f4Of^y911{8zutx;&8y?7R?uztt6jzbNj~x8SZa;U{a^#DA3&x`FPp1aZ2v16Reu?^B}pncmlE%htK{L z-n0{kI;~n)DZFwG4OacQkxV6J7B`mpZLhgw2#4*n$zv!(t7UOV1e*^Bxt^`cFLTx( zpHZqzo|;DfHx*Zk5RbpA><#@tXD)2dY;4j!iykByNMR6TFO?I`^;$Kv2C}C_3i!+N zNCa5#_=TPXMFsgGw)$pO-R|3C8SxS@9k-~Q5CRd!ha_AlDn-b`*nV{$d1>Za z<$AwBw`kGh>HgwABK;l(IUEf6`U@Dos;>ON=+}yeCF7j>(OOHU@?(lP? zg6_V?;#Q7Fy8?&3`GgA{#%PCnFEvcz@PsT^1bX-05+ao;k!(}%#m{q<7Z`1q{-se; zn5B6pg(~FFXfjG2Y+RHJUAbe*Y%j+3V$*zApuADL>`sUL^pwkyYv^2>X zZF%AQve7D$)~a!RsY`aH0F0KwDS^pVp{>j#rd*}7I7QCx6?so}3!_TZHs2{6Bl5Kf z@nok@rD(dEVmiHD36uVz(9w$MaG<8YD^A;cEecFCtb=3mCy~M+Tfr+geKAfb!r*4U zX&jwNhrH>@K>r1pxNZUp)?N-2grK*m**X2%2PNz ztn?g;`uqscJwLKiu^p6(r%|tjYl|(8bf2qPI1JG*%f2ufz)8xgQ4jOTlkSxbBzFH0 zoYuJrL5;3{JAfAI3%ZAW53@&+8NdmHz}1A3yxt{pd`?f32x0a6tAU##aAVvtkld^8 ze1av6Ox^?oxAN8C1fcrMW+BYPp{(>0v{07XJ2q2|BnrqT?DGa(eS+X!i=u2SZ{tG~ zH%l;(mGw0ifYn8DW`kxJi^wHt#z6(aHY8LV9bQ#?x32KICqDkod76uPROoa)#*sL5 z*u#IY7-)zY6N1_hUxsq8`ltrmLy^_smU!2E)t;K4DNC&U=U}sc{dTf&z*_w4Y4*M4 z=fRW5)Up4fq|Tr8w0d#W3a^owGM0qhJ0b+Enb<^By#Cb)vN`g~L8H#2^e->19*;%5AczP}_}w_1M)m7P!6>&yQvZ3<8%ThKs|SQ^HmwhfKYC zC;x2@ARA1sHf62`aFSl05O4WmtD&9?cR-lUPc_5_6eYXXJxqG68oyn?XddN_RpR@S zka#>42d<6PhQTXv%}1ldMI9cuew`7;gaKb>DZcNixKZWqud9WK$Ney7i*Gyya8m|6 z!85`$G8=L{Jcef~N}6?DJ#Lp#G21q|*t7n?c)t)lh)2U5J``(eBzDQ(Dry)fM1L8G zKSsv;5ZVcXJuy*m|0QoPEqPJlh=*l!bLO+1NX#D=#+OzX>Nn&N zGZJ1-lK)tBpoKIcQt2w$1qGoP3=H|T7doOq2aSBjm<*E(x4P3OkNw3II5b#~OxmDc z>l+Fp+(n|L;y4^H+&%;n`wTOrOE3dyz-=)lDL?#mxZ@5a_M8)kJPs_bl2qA~|63Nl zk$%0fi0CyIuyElk!5I5c;S=D}R@+;pppdc%7m#OAlhI~{S`qwGAA%RK*r;F&EyL1D zk4eYAR2LAzHAA)6e5j)w9^aPMzMR`No{}2+Qlb&9M`xk;HmQKTKON{L&A3MkLsz9SnFj%b;)08>{mm1u zwb#$YGR`s;$);G2;?+k0d7%q{arF+G%JKA)BvH!3Tk?k2!c>JP)5Vg1izCb2<&3ar zhl@c@lVMxO)4iHmE9+0Mv{s`fCq1DKf3?L-L&mNtUE<(cYkL}Yo}BXUu&Ft8XclwX zTd(cKHO439FSPUOcOFp@JdZv*?&EIAox?~0JJZs_^1sIf1XsPA3Vs0{qeN?-XCG5> z=oe|$r=3?1_2&E{GLe`Z@HRZhDv?&`Hs3~!AXI4{#)6A%`)=siQhQKU3)!4XlJ+et z(k-U_EBf>M?031+mCp~DcuH367w^g$idJCq?zA0|k)f$LLhZksasL7BAldK>A=sbF zxr3QxCRl7lc~5?IFfIU^l%;Q-O780N&Pj6EkVofX=Wn`}tVI>R!v=_s7`is=dRAjV z=pew`J_Zjv8Al8zhk~PW2wBO1(5d*jPAq}qk3!(3mrTP})w!LZziXf^B26~$iH0V4 z6x`5#Rnenae-z*0F`d3u2tgolMwYiLGJ|1r8-^;}QO|HbN;m=$;mCh`gRXCU5ZL0C45o6@5)l8z1tnY&<)38H4)@?L6b zijCwrO@T2nw1$kT!OYsivy!2dTq8D=ti-@;IT?u-baPh!d$=%F7AWyAv)& zA;r=8XQak`Q@pf$ZH1JcM@WS(>SI7$5grba;D1C!_)EqTJaMvrg2}PRa%t60TH9~J zR6+38*&A-mtLqrf;I^)@*hHJU2q+}YoTLL~ABA@|gim8Bz1+0JPwXA2!4hC5pKz?*mo>h4`?uc#Eh zeif%$FQ@J_p4@+Bsi_@%loFEKsQ$9p*jp~j{c@F+M3UV>5LY6I zQX{pS1&9H|hU}d?#Yf(o+ZE~Xrx0zxSUL+*2%N)(APN}E1;G@tb>-6TG$YB2#A9;2 z2_S15PRrF>(mmH$%6XaQof(+8vrDY?-LX25--uc+ORDw}c=&#;E#JE5qgx6_0-PYZ z<+s1J+H3hrlta2k5MueP-*G^MfZr@#a}OCka)8KQ#pmqF8<6ol!ZX%G2Oet+4so)qX{YbJg1faHdjgxQu zX?ZNzFs=uWn8F+V=yDIQ;Wav#qOU}FJapE)&aFId@@TF59EHj7R$%vx_K5b^%nMD8&>-@QYaCXb+$bqbWtLaHg!s@S_a_`X$X1QmXIxgu2bT@*^`EMvT1X{cK-|Vo_>vixG z2d)7=f}W)!&Z)JU0EV*kCSGQ^Poqkq=k~RJL&tiK)+Q1%8(F*OLcKEo_LJe_#}Ma) z7c|1%{xT84eYeQk2dZN;UWUNWV3#+N!7~@d4h$?$O(HyzgAwbsk@$@H5x0PfjvX22 zSMw5<=JuxBX}Ou!hL}A`8N8hd_MRNuX#e7-+e^6v-nEf%K=0q~ID1c)ZS>2prrRyK zgGU>aV9?^26}FgbGd$6Rf96T{o;+KGFOBsVzmk8xvR>~Ia{ zAF9`iWo6j+cS($?%AADu;4Db6beR;dU&xWIkGf|WIW@c?tn5(0-n+}3>}@l!7Knv4 z$A)xtat79Fi%V1W%yB|e>J_tPLUC=2-a^d3h%%IGx7BV)p?j96Ud^8|TGD`gJ-SMvDX4wFylt-+@4^q-QC&swS_btv@D87laNnnZEnE z+F0Pm!D47d)J*NQf;l&bwW!|VNaE2iR%%Q@(i zYD{o*aztN{9_Fwk7)ns^MA)hBf+QmVtgqjQwY{r%h}gl01Sbi)u};S;mLbfj zwD1xd@(OkL*uzTmCKRcQr`8V-C3i`-htmOxqo{eYb!9Kx8t3m|SrL&467*!DH1+C8 zhINYA{GCN~cy9+IvSHm*zTL~Ne943ZzJTt+aY=Dk?@t zLwJvEr`K#pzM2=tHkWvns11xdSGJ%Y-UpxYprX~OFj{LUpBro5k+dn+4jlb2Qozq; zsAq5yRFqT?lxTwbsZW3yqd4@6OaCzTDe zyZyx&n)g=N0#5fcL|J_68ADAZpw|EAE)_KFsLlGy%F~J*javkZ4aY^`?)< z{8rTIL2oq7A3jpIOsFggHlVpMrZB@I15w+wYi>Pnk0^SUQ2eieEW`4Wh>F-oW)nPD zK~*@|B6Z5Hh@`seMgdVoPy&BNpSN^-6sreC$;lVP zB_#JQ#;_IrfOdq7%)Q}d=d9J~5^as;Dl1G?&1~zurny{cWIc_RKcJcpoef^@DKvs! z@$Oax5~}d$ozh%^*;V2+O2ej@&ag8P7q)DUYi>Q()b4k}VQUlh`nO%~yu0*_YWiJz zqin;9euVv-%9;359#o1rydSV;DCfopKg{joC2+rD4xr7%Cb!H&+%Io#dcOpH@p!U> zoOwPDk7FhPXegtOSb$DM`0?STRjNFPA$x-GS_2$B|HVstteapjm`q4G>tye-fn?5= zaJ}9*({zNe?mOq+@9529w9Wo=uZ~V4Mr9OGI<$Tw)fU1N{l<(2GqN|uWCqDVHUFdJ zYSPU2#|BKBwTZ~&Z+g8D7YI6&(l5v4Ja`KxIYD;vow&lJul` z4!aC9jaFr{bJuN-W66%4_j9jk-I=xTnsct8R#=Js`cc~Ijcim?^?$jTu8Ksm6rhTA zHyeH#Yf=VSWD_WYD`N8%;aRc;rdY|WQ_DP+3=7x1g%Y+HB_UtI!I8EOO8Yc4#sz|d zM1}-&2MWfP!T|UpXRxn!em91hzHvLUfseU~N~{}yT93L7hrw>RDZC)qw&dGn= z#O%Lo(Ibsv&heJzYm$bpVG8o2!W|zi=BCE-IPM;A=^faq@M8Lh_oj7U$({ zJ~0@@B0_q%%OC>Xi8qq$^^7cXpxw?!$98bDr+Ug`xEZ7^ug?*}#6~o>r4^)1#FW+Z z=;95H+<-uiE()nNRfj+=^{hxpZEMNPOlpk7>i!%l%L}J0)amm+23_)3;Sg!_jJ^Od z4N3lS1GxD?4WsHdJq_u4eOx(#+fl^>6uS9_NI9(j6D6`A1Pis+^2^*uP-xWYM5Kir zWxp>48|nlqCdW#|wHeRfZiL@0sF11S(sP@rQh-nh(fB|cvqxI$(GI0Ci6XxN*bdpu z51AE>&H)bNw%%IK%*sh_arqBbR52=v{7YD94KakIk#u}vrFYDdC&@%9g_1^97K#YA zz2OM0a&-F>SZZl>bV7l?oexfBS~nf8QNt~CORFn2aglwVSW^SWr>JGZeNUfR>;A69 z4**KIlkKGoMi(kg|F$O_o{sfkm;fpREe)G_B@?kG3f8*0BuV2mPkG2D?`x%qn2(*>vrjMASFSjNFjw69jq9;ed(ogd>AI zwb5O~^2!hFmD8IPm>tm}$5@-6j1aF~N-HeRc&& ze2qLQo#iNXZ^N*QE9~a*BcD+MLXHzptO|7JkAo1Q^8ZNB{xn_U!_A^wY+g%=uM!&61X#Ed6>}1?CZTd!6ulU!znm+u{IZ4NDSLVlUoMGmLnX;Nrq_d0*UmfK8I^ISQDk#p zzP=fmTCs)~)>XQPfv4T&49Fswr?Wn}r zHH#gU0K2w|4g_QT;W*dNyK?p~-b;L)(7ys57ZbC!oFV(;vDdA{!y!h{lL_Ek%Jko( zEpYe3on(0!BYylG2iU2z;85*Yt$uV6#eSL%PO#d=$MkSJL)*TY!@go+>!*pS;n#%X z%Idv;grsRnH}8bY?kZQ2!Xf6WYL!N6fc|KM^C2yiznAoLpah?tw(q6J`NU7Gw2uC@ z?%qzSwOoo}nhT>N@K?c*h-3ZdhtbT!pYM|0T-vNTfvW@wy@1@SOzSHa`hDfqEuy5f z(a>FKBSiY!l(ZfvHXSM_Q=9(ke3OVos|SqsFRS;{aM)=T)T4c(F*Caj=JAffq@81;jr{Ow^B|oUW|_)g5q*NrN7lNz-r!6HejfNn?_eVe zyZnSimereDqNHa#YS0#^eR|`u5oMVQ9v;$n3-UN9HUqHKRcCl|5-q#^g=#thqQ|Zr z<-g52S94dpw9?!U%&h^*EfDFt!3BsPZVMEf>tkAM&Ad)ndk@U=Y^I<}k~k*d8S9t# zV7=mTSi@gJ+d+@MojKJjpY<*E7xWDDI4p2eflrj&Y$DA9ayuDYGJ$|}Xlxg;rUX5F-)I_hkdkl`|6(+1G={mES~z+B?{<`MFeQ2(69Hax!(-x) zjylXf>gi1EWMACsUb3On69(fy!9d;YslBmm)cAtnDo&A1P{U8kObSUD4P=-mp4t(7_5W!lT?}w;K3jkg5cVD;Nq7GsP_b?n)R#7I9c{*ou z(6p8kr9DJK&k|MNDbEMDH_TQVNNm~6F3gqHRO|Y^@9_D%tX3CL3p}7RQFX9(HEe-U z&6{Jn>je2@LT2*S-y1f((+klE664bOAQCB*XVZA^7iZjpEOOo4r1e3zzS9Nk$#s@C zKmp{tQFPRMV2z?=;Yfj$PHuEN8#T8IwqjTw_jm($5SSkzeE`RhWxeQcr7`E%X>j@K zKI!&kB1B5`&4E|En!&yb2*$qCr@!N4TrndA+1RoXdX5I)_!E?R3H9CQ(9 zobcSV!#55mYt=Q(K!t8$@NLqQm!KvN^YsJC>c&4So9aT_l>RW`6{5UM1J7|6TY#{N zSDU}A|9)lQ8@TsA<8po?(i_U^(_aI@C^=ckxKzP=DI(e!R`=W@(U*$z3IrVoBg_Qa z>zRYljo*LVTAKg`b1(kq4NWzzZ+9$s6X$WXUSD&fo#a$aOBdT*uj~EB8J!%~22ONd zG~2a&8w9Q3#)tb++nzNP|2kqIb$|qu!H5eRL)ZlbO8M^JvUboe_YL&MpiW3c*5+yE zu8h5EWpa_wz2f2HuXIvD(T8Hr)uw{sRWxwk0rOD2*z-4JZ6I{yHt|cJk}}`J3g_t= zEXI&CGp1;)->t$e@Dosi3%yW8HZ8|yDJ!V+<@FMTRn$i1g$k@{m@9DgeE4RXMUmknPTUgVMr9=Zk1;=Dw`SYU;?x7~iF}EmmLQW=p zxsmAMyizo70{yYp_yT@y{y-O!T~!o&$hl89C>mB6yq6tQcrXmTZbVj*f`m)gV|#_k z_l(l@WS0nT289xOU%jz|_%;Jl+;0!oT=`q3F=5RXxyFdL=u|&-An^}}3^I7`(BL4Z z_7QVmGt2Aa3PbcDxdBR#PdvsVw%5BDc;a_oy1UP0i6J_}nU3@Q4 z9yIdnOo8_HR>V`R`$JN^7S&I6Agd=`gI!pAGOaOnD$9kkyZiPK5)%@_^d L6sTU8|5*M9cq#pq delta 28357 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 PB#*h_!i+orSNDGaiSXof diff --git a/dist/dist-min/react-console.min.js b/dist/dist-min/react-console.min.js index 031ccf6..18d061a 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 n=o[r]={exports:{},id:r,loaded:!1};return t[r].call(n.exports,n,n.exports,e),n.loaded=!0,n.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)},n=o(2);o(1);var s=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,n.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),n.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 n.createElement("div",{className:"react-console-prompt-box"},n.createElement("span",{className:"react-console-prompt-label"},t),n.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),n.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(n.Component),a=function(t){return t.headers?n.createElement("thead",null,n.createElement("tr",null,t.headers.map(function(t){return n.createElement("th",{scope:"col",key:t},t)}))):null},i=function(t){if(t.isTable){var e=t.value[0];return n.createElement("div",{className:"react-console-message react-console-table"},n.createElement("table",null,n.createElement(a,{headers:e.headers}),n.createElement("tbody",null,e.rows&&e.rows.map(function(t,e){return n.createElement("tr",{key:e},t.map(function(t,e){return n.createElement("td",{key:e},t)}))}))))}return n.createElement("div",{className:"react-console-message"+(t.type?" react-console-message-"+t.type:"")},t.value.map(function(t){return"string"==typeof t?t:JSON.stringify(t)}).join("\n"))};i.defaultProps={type:null,value:[],isTable:!1};var l=function(t){function e(e){var o=this;t.call(this,e),this.child={},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 i=o.state.log;i.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[n.join("\t")]}]}),o.setState({currLabel:o.nextLabel(),log:i,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,n=0==t?1:-1;for(e&&(r+=n);r>0&&r<=o.state.history.length;r+=n){var s=o.state.history[o.state.history.length-r],a=s.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:s,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 n.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?n.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[n.createElement(s,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return n.createElement(i,{key:e,type:t.type,value:t.value,isTable:t.isTable})}))}),this.state.acceptInput?n.createElement(s,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,n.createElement("div",{style:{overflow:"hidden",height:1,width:1}},n.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})),n.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(n.Component);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},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"},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 s.createElement("td",{key:e},t)}))}))))}return s.createElement("div",{className:"react-console-message"+(t.type?" react-console-message-"+t.type:"")},t.value.map(function(t){return"string"==typeof t?t:JSON.stringify(t)}).join("\n"))};l.defaultProps={type:null,value:[],isTable:!1};var i=function(t){function e(e){var o=this;t.call(this,e),this.child={},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 d50cc8d..938a104 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 051c9faad82129278752","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","rows","row","index","cell","cellIndex","type","val","JSON","stringify","join","default_1","log","messages","_i","state","message","push","setState","scrollIfBottom","logX","logTable","tableData","return","acceptInput","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","command","restoreText","historyn","handler","rotateHistory","searchDirection","searchHistory","historySearchBackward","historySearchForward","historySubstringSearchBackward","historySubstringSearchForward","kill","unshift","killn","killWholeLine","rotateRing","words","split","curr","completions","i","cancel","text","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\"}, 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 return React.createElement(\"td\", {key: cellIndex}, cell);\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) {\n\t if (typeof val == 'string') {\n\t return val;\n\t }\n\t else {\n\t return JSON.stringify(val);\n\t }\n\t }).join(\"\\n\"));\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.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 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 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) {\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\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 };\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 051c9faad82129278752","\"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: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\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\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\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\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) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\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}\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 63847d5e79dcb07dca5f","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","rows","row","index","cell","cellIndex","type","val","JSON","stringify","join","default_1","updateLastLog","messages","_i","log","state","push","command","message","indexToReplace","setState","scrollIfBottom","logX","logTable","tableData","return","acceptInput","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","i","cancel","text","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\"}, 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 return React.createElement(\"td\", {key: cellIndex}, cell);\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) {\n\t if (typeof val == 'string') {\n\t return val;\n\t }\n\t else {\n\t return JSON.stringify(val);\n\t }\n\t }).join(\"\\n\"));\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.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) {\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\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 };\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 63847d5e79dcb07dca5f","\"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: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\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\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) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\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}\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 7b32ba4776e762e4ed941e84d8bf47a8a78bdba3..7ed2c9163330612396b920151b0f645a6aea9c18 100644 GIT binary patch delta 23804 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%0A(Y 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 D;b#3L delta 23417 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 diff --git a/dist/dist.zip b/dist/dist.zip index 40492dffcde5e2b6885e2726442ef273ecfee570..f7ab6c8e190a433ed808901fbf816f3e8c65e493 100644 GIT binary patch delta 23921 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%0AC3wio2z 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 diff --git a/dist/dist/react-console.js b/dist/dist/react-console.js index 4971fa3..ad86b2a 100644 --- a/dist/dist/react-console.js +++ b/dist/dist/react-console.js @@ -161,12 +161,30 @@ var Console = _super.call(this, props); this.child = {}; // Command API + 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 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({ + log: log, + }, _this.scrollIfBottom()); + }; this.log = 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: [] }); + } log[_this.state.log.length - 1].message.push({ value: messages }); _this.setState({ log: log, @@ -178,6 +196,9 @@ var Console = messages[_i - 1] = arguments[_i]; } var log = _this.state.log; + if (!log.length) { + log.push({ label: '', command: '', message: [] }); + } log[_this.state.log.length - 1].message.push({ type: type, value: messages }); _this.setState({ log: log, diff --git a/dist/dist/react-console.js.map b/dist/dist/react-console.js.map index b530995..65d1bd3 100644 --- a/dist/dist/react-console.js.map +++ b/dist/dist/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 9bfb7587d8ab92c74a5a","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 9bfb7587d8ab92c74a5a","\"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: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\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\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\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\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) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\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}\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 91b3599f80f579d73d26","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 91b3599f80f579d73d26","\"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: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\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\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) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\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}\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 31933cb..a333c4e 100644 --- a/lib/react-console.js +++ b/lib/react-console.js @@ -161,12 +161,30 @@ module.exports = _super.call(this, props); this.child = {}; // Command API + 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 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({ + log: log, + }, _this.scrollIfBottom()); + }; this.log = 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: [] }); + } log[_this.state.log.length - 1].message.push({ value: messages }); _this.setState({ log: log, @@ -178,6 +196,9 @@ module.exports = messages[_i - 1] = arguments[_i]; } var log = _this.state.log; + if (!log.length) { + log.push({ label: '', command: '', message: [] }); + } log[_this.state.log.length - 1].message.push({ type: type, value: messages }); _this.setState({ log: log, diff --git a/lib/react-console.js.map b/lib/react-console.js.map index f902420..8e4dbb4 100644 --- a/lib/react-console.js.map +++ b/lib/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap d7c7dadb9edc7a5b0668","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 d7c7dadb9edc7a5b0668","\"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: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\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\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\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\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) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\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}\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 9d5298dac52a5ac16d8c","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 9d5298dac52a5ac16d8c","\"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: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\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\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) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\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}\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