From 8fd6bae786d1b839c7c88e92abcf782c48db6ca8 Mon Sep 17 00:00:00 2001 From: Spencer Nowak Date: Tue, 25 Jul 2017 16:23:46 -0400 Subject: [PATCH] Allow cancel handler to be called while a command is in progress --- dist/dist-min.tar.gz | Bin 29703 -> 29883 bytes dist/dist-min.zip | Bin 30292 -> 30468 bytes dist/dist-min/react-console.min.js | 2 +- dist/dist-min/react-console.min.js.map | 2 +- dist/dist.tar.gz | Bin 25308 -> 25458 bytes dist/dist.zip | Bin 25710 -> 25865 bytes dist/dist/react-console.js | 5 +++++ dist/dist/react-console.js.map | 2 +- lib/react-console.js | 5 +++++ lib/react-console.js.map | 2 +- src/react-console.tsx | 4 ++++ 11 files changed, 18 insertions(+), 4 deletions(-) diff --git a/dist/dist-min.tar.gz b/dist/dist-min.tar.gz index 75126e4afc1bcfe286685d76c44c5bb7db2f92f7..4ebca92ee8c2ece2631ed3d131cbb615d6ad996f 100644 GIT binary patch literal 29883 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

+kX%1+P*g5P+F?i&xskyxn7!s<3Gmkg{f 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 diff --git a/dist/dist-min/react-console.min.js b/dist/dist-min/react-console.min.js index d4f60a8..905e11f 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(s){if(o[s])return o[s].exports;var r=o[s]={exports:{},id:s,loaded:!1};return t[s].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var o={};return e.m=t,e.c=o,e.p="",e(0)}([function(t,e,o){"use strict";var s=this&&this.__extends||function(t,e){function o(){this.constructor=t}for(var s in e)e.hasOwnProperty(s)&&(t[s]=e[s]);t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)},r=o(2);o(1);var n=function(t){function e(){t.apply(this,arguments),this.child={},this.updateSemaphore=0}return s(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,r.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),r.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 r.createElement("div",{className:"react-console-prompt-box"},r.createElement("span",{className:"react-console-prompt-label"},t),r.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),r.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(r.Component),a=function(t){return t.headers?r.createElement("thead",null,r.createElement("tr",null,t.headers.map(function(t){return r.createElement("th",{scope:"col",key:t},t)}))):null},l=function(t){if(t.isTable){var e=t.value[0];return r.createElement("div",{className:"react-console-message react-console-table"+(t.type?" react-console-message-"+t.type:"")},r.createElement("table",null,r.createElement(a,{headers:e.headers}),r.createElement("tbody",null,e.rows&&e.rows.map(function(t,e){return r.createElement("tr",{key:e},t.map(function(t,e){return r.createElement("td",{key:e},t)}))}))))}return r.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?s[o.state.log.length-1].message.length-1:0;s[o.state.log.length-1].message[r]={value:t},o.setState({log:s},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,s=t[0].length;s1){var l=o.state.log;l.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[r.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,s){return void 0===o&&(o=0),void 0===s&&(s=e.length),e.substring(0,s-o)+t+e.substring(s)},this.consoleInsert=function(t,e){void 0===e&&(e=0);var s=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:s,restoreText:s,argument:null,lastCommand:0}},this.movePoint=function(t,e){void 0===e&&(e=o.state.promptText.length);var s=o.state.point+t;return s<0?0:s>e?e:s},this.rotateRing=function(t,e,o,s){return void 0===s&&(s=!0),0==o?0:s?(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 s=o.state.history[o.state.history.length-e];o.setState({point:s.length,promptText:s,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 s=o.state.historyn,r=0==t?1:-1;for(e&&(s+=r);s>0&&s<=o.state.history.length;s+=r){var n=o.state.history[o.state.history.length-s],a=n.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:n,searchDirection:t,searchInit:!1,historyn:s}}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 s(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 r.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?r.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[r.createElement(n,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return r.createElement(l,{key:e,type:t.type,value:t.value,isTable:t.isTable})}))}),this.state.acceptInput?r.createElement(n,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,r.createElement("div",{style:{overflow:"hidden",height:1,width:1}},r.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})),r.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(r.Component);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e){},function(t,e){t.exports=React}]); +var Console=function(t){function e(s){if(o[s])return o[s].exports;var r=o[s]={exports:{},id:s,loaded:!1};return t[s].call(r.exports,r,r.exports,e),r.loaded=!0,r.exports}var o={};return e.m=t,e.c=o,e.p="",e(0)}([function(t,e,o){"use strict";var s=this&&this.__extends||function(t,e){function o(){this.constructor=t}for(var s in e)e.hasOwnProperty(s)&&(t[s]=e[s]);t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)},r=o(2);o(1);var n=function(t){function e(){t.apply(this,arguments),this.child={},this.updateSemaphore=0}return s(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,r.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),r.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 r.createElement("div",{className:"react-console-prompt-box"},r.createElement("span",{className:"react-console-prompt-label"},t),r.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),r.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(r.Component),a=function(t){return t.headers?r.createElement("thead",null,r.createElement("tr",null,t.headers.map(function(t){return r.createElement("th",{scope:"col",key:t},t)}))):null},l=function(t){if(t.isTable){var e=t.value[0];return r.createElement("div",{className:"react-console-message react-console-table"+(t.type?" react-console-message-"+t.type:"")},r.createElement("table",null,r.createElement(a,{headers:e.headers}),r.createElement("tbody",null,e.rows&&e.rows.map(function(t,e){return r.createElement("tr",{key:e},t.map(function(t,e){return r.createElement("td",{key:e},t)}))}))))}return r.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?s[o.state.log.length-1].message.length-1:0;s[o.state.log.length-1].message[r]={value:t},o.setState({log:s},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,s=t[0].length;s1){var l=o.state.log;l.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[r.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,s){return void 0===o&&(o=0),void 0===s&&(s=e.length),e.substring(0,s-o)+t+e.substring(s)},this.consoleInsert=function(t,e){void 0===e&&(e=0);var s=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:s,restoreText:s,argument:null,lastCommand:0}},this.movePoint=function(t,e){void 0===e&&(e=o.state.promptText.length);var s=o.state.point+t;return s<0?0:s>e?e:s},this.rotateRing=function(t,e,o,s){return void 0===s&&(s=!0),0==o?0:s?(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 s=o.state.history[o.state.history.length-e];o.setState({point:s.length,promptText:s,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 s=o.state.historyn,r=0==t?1:-1;for(e&&(s+=r);s>0&&s<=o.state.history.length;s+=r){var n=o.state.history[o.state.history.length-s],a=n.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:n,searchDirection:t,searchInit:!1,historyn:s}}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 s(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 r.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?r.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[r.createElement(n,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return r.createElement(l,{key:e,type:t.type,value:t.value,isTable:t.isTable})}))}),this.state.acceptInput?r.createElement(n,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,r.createElement("div",{style:{overflow:"hidden",height:1,width:1}},r.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})),r.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(r.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 481399a..e7a021a 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 6620d61878a57e14e7ae","webpack:///./react-console.tsx","webpack:///external \"React\""],"names":["Console","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","__extends","this","d","b","__","constructor","hasOwnProperty","prototype","Object","create","React","ConsolePrompt","_super","apply","arguments","child","updateSemaphore","componentDidMount","idle","componentDidUpdate","_this","cursor","className","window","setTimeout","renderValue","props","point","value","length","createElement","ref","key","substring","render","label","argument","idx","lastIndexOf","defaultProps","Component","ConsoleTableHeader","headers","map","header","scope","ConsoleMessage","isTable","data","type","rows","row","index","cell","cellIndex","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":"AAAA,GAAIA,SACK,SAAUC,GCGnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,QAAA,EAGAF,EAAAD,QAvBA,GAAAD,KAqCA,OATAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAU,EAAA,GAGAV,EAAA,KDOM,SAAUI,EAAQD,EAASH,GE7CjC,YFgDC,IAAIW,GAAaC,MAAQA,KAAKD,WAAc,SAAUE,EAAGC,GAErD,QAASC,KAAOH,KAAKI,YAAcH,EADnC,IAAK,GAAIH,KAAKI,GAAOA,EAAEG,eAAeP,KAAIG,EAAEH,GAAKI,EAAEJ,GAEnDG,GAAEK,UAAkB,OAANJ,EAAaK,OAAOC,OAAON,IAAMC,EAAGG,UAAYJ,EAAEI,UAAW,GAAIH,KEjDxEM,EAAKrB,EAAM,EAEvBA,GAAO,EAQP,IAAAsB,GAAA,SAAAC,GAAA,QAAAD,KAA4BC,EAAAC,MAAAZ,KAAAa,WAO3Bb,KAAAc,SAWAd,KAAAe,gBAA0B,EA2C3B,MA7D4BhB,GAAAW,EAAAC,GAW3BD,EAAAJ,UAAAU,kBAAA,WACChB,KAAKiB,QAENP,EAAAJ,UAAAY,mBAAA,WACClB,KAAKiB,QAINP,EAAAJ,UAAAW,KAAA,cAAAE,GAAAnB,IAEIA,MAAKc,MAAMM,SACc,GAAxBpB,KAAKe,kBACPf,KAAKc,MAAMM,OAAOC,UAAY,wBAE/BrB,KAAKe,kBACLO,OAAOC,WAAY,WAClBJ,EAAKJ,kBACsB,GAAxBI,EAAKJ,iBAAwBI,EAAKL,MAAMM,SAC1CD,EAAKL,MAAMM,OAAOC,UAAY,mDAE7B,OAGLX,EAAAJ,UAAAkB,YAAA,cAAAL,GAAAnB,IACC,OAAGA,MAAKyB,MAAMC,MAAQ,GACb1B,KAAKyB,MAAME,OACT3B,KAAKyB,MAAMC,OAAS1B,KAAKyB,MAAME,MAAMC,QACvC5B,KAAKyB,MAAME,MAAMlB,EAAAoB,cAAA,QAAMC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAMM,OAASU,GAAKC,IAAI,SAASV,UAAU,wBAAsB,OAEzGrB,KAAKyB,MAAME,MAAMK,UAAU,EAAEhC,KAAKyB,MAAMC,OAC/CjB,EAAAoB,cAAA,QAAMC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAMM,OAASU,GAAKC,IAAI,SAASV,UAAU,wBAAwBrB,KAAKyB,MAAME,MAAMK,UAAUhC,KAAKyB,MAAMC,MAAM1B,KAAKyB,MAAMC,MAAM,IACvJ1B,KAAKyB,MAAME,MAAMK,UAAUhC,KAAKyB,MAAMC,MAAM,KAG/ChB,EAAAJ,UAAA2B,OAAA,WACC,GAAIC,GAAQlC,KAAKyB,MAAMS,KACvB,IAAGlC,KAAKyB,MAAMU,SAAU,CACvB,GAAIC,GAAMF,EAAMG,YAAY,KAE3BH,GADEE,GAAO,EACDF,EAAMF,UAAU,EAAGI,EAAI,GAEvB,GAGV,MAAO3B,GAAAoB,cAAA,OAAKR,UAAU,4BACrBZ,EAAAoB,cAAA,QAAMR,UAAU,8BAA+Ba,GAC/CzB,EAAAoB,cAAA,QAAMR,UAAU,iCAAkCrB,KAAKyB,MAAMU,UAC7D1B,EAAAoB,cAAA,QAAMR,UAAU,wBAAyBrB,KAAKwB,iBAzDzCd,EAAA4B,cACNZ,OAAO,EACPC,MAAO,GACPO,MAAO,KACPC,SAAU,MAwDZzB,GA7D4BD,EAAM8B,WAkE9BC,EAAyD,SAASf,GACrE,MAAGA,GAAMgB,QACDhC,EAAAoB,cAAA,QAAM,KACVpB,EAAAoB,cAAA,KAAG,KACDJ,EAAMgB,QAAQC,IAAI,SAACC,GACnB,MAAOlC,GAAAoB,cAAA,MAAIe,MAAM,MAAMb,IAAMY,GAAWA,OAKvC,MAQJE,EAAiD,SAASpB,GAC7D,GAAGA,EAAMqB,QAAQ,CAChB,GAAMC,GAAOtB,EAAME,MAAM,EACzB,OAAOlB,GAAAoB,cAAA,OAAKR,UAAW,6CAA+CI,EAAMuB,KAAK,0BAA0BvB,EAAMuB,KAAK,KACrHvC,EAAAoB,cAAA,QAAM,KACLpB,EAAAoB,cAACW,GAAmBC,QAASM,EAAKN,UAClChC,EAAAoB,cAAA,QAAM,KACJkB,EAAKE,MAAQF,EAAKE,KAAKP,IAAI,SAACQ,EAAeC,GAC3C,MAAO1C,GAAAoB,cAAA,MAAIE,IAAKoB,GAAQD,EAAIR,IAAI,SAACU,EAAcC,GAC7C,MAAO5C,GAAAoB,cAAA,MAAIE,IAAKsB,GAAYD,WAOlC,MAAO3C,GAAAoB,cAAA,OAAKR,UAAW,yBAA2BI,EAAMuB,KAAK,0BAA0BvB,EAAMuB,KAAK,KAChGvB,EAAME,MAAMe,IAAI,SAACY,GACjB,MAAiB,gBAAPA,GACFA,EAEAC,KAAKC,UAAUF,KAErBG,KAAK,OAIXZ,GAAeP,cACdU,KAAM,KACNrB,SACAmB,SAAS,EAyDV,IAAAY,GAAA,SAAA/C,GACC,QAAA+C,GAAYjC,GADb,GAAAN,GAAAnB,IAEEW,GAAAhB,KAAAK,KAAMyB,GA0BPzB,KAAAc,SAMAd,KAAA2D,cAAgB,WFpDJ,IEoDK,GAAAC,MAAAC,EAAA,EAAAA,EAAAhD,UAAAe,OAAAiC,IAAAD,EAAAC,EAAA,GAAAhD,UAAAgD,EAChB,IAAIC,GAAM3C,EAAK4C,MAAMD,GACjBA,GAAIlC,QACPkC,EAAIE,MAAM9B,MAAO,GAAI+B,QAAS,GAAIC,YAEnC,IAAIC,GAAiBL,EAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQtC,OAAS,EAAIkC,EAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQtC,OAAS,EAAI,CACzHkC,GAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQC,IAAmBxC,MAAOiC,GAC/DzC,EAAKiD,UACJN,IAAKA,GACH3C,EAAKkD,mBAETrE,KAAA8D,IAAM,WFhDM,IEgDL,GAAAF,MAAAC,EAAA,EAAAA,EAAAhD,UAAAe,OAAAiC,IAAAD,EAAAC,EAAA,GAAAhD,UAAAgD,EACN,IAAIC,GAAM3C,EAAK4C,MAAMD,GACjBA,GAAIlC,QACPkC,EAAIE,MAAM9B,MAAO,GAAI+B,QAAS,GAAIC,aAEnCJ,EAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQF,MAAMrC,MAAOiC,IAClDzC,EAAKiD,UACJN,IAAKA,GACH3C,EAAKkD,mBAETrE,KAAAsE,KAAO,SAACtB,GF5CI,IE4CU,GAAAY,MAAAC,EAAA,EAAAA,EAAAhD,UAAAe,OAAAiC,IAAAD,EAAAC,EAAA,GAAAhD,UAAAgD,EACrB,IAAIC,GAAM3C,EAAK4C,MAAMD,GACjBA,GAAIlC,QACPkC,EAAIE,MAAM9B,MAAO,GAAI+B,QAAS,GAAIC,aAEnCJ,EAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQF,MAAMhB,KAAMA,EAAMrB,MAAOiC,IAC9DzC,EAAKiD,UACJN,IAAKA,GACH3C,EAAKkD,mBAETrE,KAAAuE,SAAW,SAACC,EAA+BxB,GAC1C,GAAIc,GAAM3C,EAAK4C,MAAMD,GAClBd,GACFc,EAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQF,MAAMlB,SAAS,EAAME,KAAMA,EAAMrB,OAAQ6C,KAE9EV,EAAI3C,EAAK4C,MAAMD,IAAIlC,OAAO,GAAGsC,QAAQF,MAAMlB,SAAS,EAAMnB,OAAQ6C,KAEnErD,EAAKiD,UACJN,IAAKA,GACH3C,EAAKkD,mBAETrE,KAAAyE,OAAS,WACRtD,EAAKiD,UACJM,aAAa,EACbC,UAAWxD,EAAKyD,aACdzD,EAAKkD,mBASTrE,KAAA6E,MAAQ,WACHvD,OAAOwD,eAAeC,aACzB5D,EAAKL,MAAMkE,MAAMH,QACjB1D,EAAKiD,UAAWS,OAAO,GAAQ1D,EAAK8D,kBAGtCjF,KAAAkF,KAAO,WACN/D,EAAKiD,UAAWS,OAAO,KAExB7E,KAAAmF,QAAU,SAACC,GAIV,GAAIC,IAEHC,GAAInE,EAAKoE,WAETC,GAAIrE,EAAKsE,aAETC,GAAIvE,EAAKwE,YAETC,GAAIzE,EAAK0E,gBAETC,GAAI3E,EAAK4E,YAETC,EAAI7E,EAAK8E,mBAETC,GAAI/E,EAAKgF,WAETC,GAAIjF,EAAKkF,UAETC,GAAInF,EAAKoF,gBAETC,EAAGrF,EAAKsF,SAERC,GAAIvF,EAAKwF,YAENC,GAEHC,GAAI1F,EAAKoF,gBAETO,GAAI3F,EAAKkF,UAETU,GAAI5F,EAAKwE,YAETqB,GAAI7F,EAAKsE,aAETwB,GAAI9F,EAAK+F,YAETC,GAAIhG,EAAK0E,gBAETuB,GAAIjG,EAAK4E,YAETsB,GAAIlG,EAAKmG,qBAETC,GAAIpG,EAAKqG,qBAETC,GAAItG,EAAKgF,WAQTuB,GAAIvG,EAAKwG,SAETC,GAAIzG,EAAK0G,iBAETC,GAAI3G,EAAK4G,KAETC,GAAI7G,EAAK8G,eA4BNC,IAlBHlC,EAAG7E,EAAK0G,mBAoBRd,GAAI5F,EAAKgH,YAETnB,GAAI7F,EAAKiH,aAETjB,GAAIhG,EAAKkH,mCAETjB,GAAIjG,EAAKmH,mCAETC,IAAKpH,EAAKqH,YAYVf,GAAItG,EAAKsH,SAETzC,EAAG7E,EAAKuH,iBAMRZ,GAAI3G,EAAKwH,UA8BNC,GAEHC,IAAK1H,EAAK2H,mBAEVP,IAAKpH,EAAK4H,aAEVC,IAAK7H,EAAKqH,aAMPS,GAEHnB,GAAI3G,EAAK+H,WAMP/H,GAAK4C,MAAMW,cACTU,EAAE+D,QACD/D,EAAEgE,QACDhE,EAAEiE,UAAWJ,KAChBA,EAAc7D,EAAEiE,WAChBjE,EAAEkE,kBAEOlE,EAAEmE,SACRnE,EAAEiE,UAAWT,KAChBA,EAAexD,EAAEiE,WACjBjE,EAAEkE,kBAEOlE,EAAEiE,UAAWnB,KACvBA,EAAU9C,EAAEiE,WACZjE,EAAEkE,kBAEHlE,EAAEkE,kBACQlE,EAAEgE,SACRhE,EAAEiE,UAAWzC,KAChBA,EAAUxB,EAAEiE,WACZjE,EAAEkE,kBAEHlE,EAAEkE,kBACQlE,EAAEiE,UAAWhE,KACvBA,EAASD,EAAEiE,WACXjE,EAAEkE,oBAILtJ,KAAAwJ,OAAS,WAER,IADA,GAAIpH,GAAM,EACLA,EAAMjB,EAAK4C,MAAMiB,MAAMpD,QAAUQ,EAAMjB,EAAKL,MAAMkE,MAAMrD,MAAMC,QAC/DT,EAAK4C,MAAMiB,MAAM5C,IAAQjB,EAAKL,MAAMkE,MAAMrD,MAAMS,GADuBA,KAK3E,GAAIqH,GAAStI,EAAKL,MAAMkE,MAAMrD,MAAMK,UAAUI,GAC1CsH,EAAUvI,EAAK4C,MAAMiB,MAAMpD,OAASQ,CACX,IAA1BjB,EAAK4C,MAAM4F,YACbxI,EAAKiD,UACJwF,WAAYzI,EAAK4C,MAAM8F,WAAWJ,EAAOtI,EAAK2I,WAAWL,EAAQtI,EAAK4C,MAAM6F,WAAYF,GACxF1E,MAAO7D,EAAKL,MAAMkE,MAAMrD,OACtBR,EAAK4I,eAER5I,EAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK8I,cAAcR,EAAQC,IAC1B1E,MAAO7D,EAAKL,MAAMkE,MAAMrD,MACxBgI,YAAa,IACVxI,EAAK8D,iBAIZjF,KAAAkK,MAAQ,SAAC9E,GACR,GAAIqE,GAASrE,EAAE+E,cAAcC,QAAQ,OACR,IAA1BjJ,EAAK4C,MAAM4F,YACbxI,EAAKiD,UACJwF,WAAYzI,EAAK4C,MAAM8F,WAAWJ,EAAOtI,EAAK2I,WAAWL,EAAQtI,EAAK4C,MAAM6F,YAC5E5E,MAAO7D,EAAKL,MAAMkE,MAAMrD,OACtBR,EAAK4I,eAER5I,EAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK8I,cAAcR,IAClBE,YAAa,IACVxI,EAAK8D,gBAGXG,EAAEkE,kBAGHtJ,KAAAuG,gBAAkB,WACjBpF,EAAKiD,UACJ1C,MAAO,EACPS,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAAqG,UAAY,WACXlF,EAAKiD,UACJ1C,MAAOP,EAAK4C,MAAMsG,WAAWzI,OAC7BO,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAA2F,YAAc,WACbxE,EAAKiD,UACJ1C,MAAOP,EAAKmJ,UAAU,GACtBnI,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAAyF,aAAe,WACdtE,EAAKiD,UACJ1C,MAAOP,EAAKmJ,WAAU,GACtBnI,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAAmI,YAAc,WACbhH,EAAKiD,UACJ1C,MAAOP,EAAKoJ,WACZpI,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAAoI,aAAe,WACdjH,EAAKiD,UACJ1C,MAAOP,EAAKqJ,eACZrI,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAGTjF,KAAAuF,WAAa,WAEZ,GADApE,EAAKL,MAAMkE,MAAMrD,MAAQ,GACtBR,EAAKM,MAAMgJ,SAAStJ,EAAK4C,MAAMsG,YACjClJ,EAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK8I,cAAc,OAClBjF,MAAO,GACP2E,YAAa,IACVxI,EAAK8D,oBAEJ,CACN,GAAIyF,GAAUvJ,EAAK4C,MAAMsG,WACrBM,EAAUxJ,EAAK4C,MAAM6G,QACrB9G,EAAM3C,EAAK4C,MAAMD,GACjB6G,IAAWA,EAAQA,EAAQ/I,OAAO,IAAM8I,GAC3CC,EAAQ3G,KAAK0G,GAEd5G,EAAIE,MACH9B,MAAOf,EAAK4C,MAAMY,UAClBV,QAASyG,EACTxG,aAED/C,EAAKiD,UACJM,aAAa,EACbM,MAAO,GACPtD,MAAO,EACP2I,WAAY,GACZQ,YAAa,GACb/G,IAAKA,EACL8G,QAASD,EACTG,SAAU,EACV3I,SAAU,KACVwH,YAAa,GACX,WACFxI,EAAK8D,iBACF9D,EAAKM,MAAMsJ,QACb5J,EAAKM,MAAMsJ,QAAQL,GAEnBvJ,EAAKsD,aAKTzE,KAAA6F,gBAAkB,WACjB1E,EAAK6J,eAAc,IAEpBhL,KAAA+F,YAAc,WACb5E,EAAK6J,cAAc,IAEpBhL,KAAA8I,mBAAqB,WACpB3H,EAAK6J,eAAe7J,EAAK4C,MAAM6G,QAAQhJ,SAExC5B,KAAA+I,aAAe,WACd5H,EAAK6J,cAAc7J,EAAK4C,MAAM6G,QAAQhJ,SAEvC5B,KAAA+J,cAAgB,WACkB,GAA9B5I,EAAK4C,MAAMkH,gBACb9J,EAAKmG,uBAELnG,EAAKqG,wBAGPxH,KAAAsH,qBAAuB,WACO,GAA1BnG,EAAK4C,MAAM4F,YACbxI,EAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK+J,cAAc,GAAyB,IAC3C/I,SAAU,sBAAuBhB,EAAK4C,MAAM6F,WAAU,MACtDD,YAAa,IACVxI,EAAK8D,gBAGV9D,EAAKiD,UACJ6G,gBAAiB,EACjBpB,YAAY,EACZ1H,SAAU,yBACVwH,YAAa,GACXxI,EAAK8D,iBAGVjF,KAAAwH,qBAAuB,WACO,GAA1BrG,EAAK4C,MAAM4F,YACbxI,EAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK+J,cAAc,GAAyB,IAC3C/I,SAAU,sBAAuBhB,EAAK4C,MAAM6F,WAAU,MACtDD,YAAa,IACVxI,EAAK8D,gBAGV9D,EAAKiD,UACJ6G,gBAAiB,EACjBpB,YAAY,EACZ1H,SAAU,yBACVwH,YAAa,GACXxI,EAAK8D,iBAGVjF,KAAAkH,YAAc,WACb/F,EAAKiD,UAAWN,UAEjB9D,KAAAqI,mCAAqC,aAGrCrI,KAAAsI,mCAAqC,aAGrCtI,KAAAmL,sBAAwB,aAGxBnL,KAAAoL,qBAAuB,aAGvBpL,KAAAqL,+BAAiC,aAGjCrL,KAAAsL,8BAAgC,aAGhCtL,KAAAkJ,WAAa,aAGblJ,KAAAwI,YAAc,aAIdxI,KAAAmG,WAAa,WACThF,EAAK4C,MAAMrC,MAAQP,EAAK4C,MAAMsG,WAAWzI,QAC3CT,EAAKiD,UACJiG,WAAYlJ,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,OACtDP,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,MAAM,GACpDS,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAGVjF,KAAAiG,mBAAqB,WACS,GAA1B9E,EAAK4C,MAAM4F,YACbxI,EAAKiD,UACJwF,WAAYzI,EAAK4C,MAAM6F,WAAW5H,UAAU,EAAEb,EAAK4C,MAAM6F,WAAWhI,OAAO,GAC3EoD,MAAO7D,EAAKL,MAAMkE,MAAMrD,OACtBR,EAAK4I,eACC5I,EAAK4C,MAAMrC,MAAQ,GAC5BP,EAAKiD,UACJ1C,MAAOP,EAAKmJ,WAAU,GACtBD,WAAYlJ,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,MAAM,GAC5DP,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,OAC9CS,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAIVjF,KAAA2H,SAAW,WACV,GAAI4D,GAAOpK,EAAK4C,MAAMwH,IACO,IAA1BpK,EAAK4C,MAAM4F,YACb4B,EAAK,GAAKA,EAAK,GAAKpK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,OAE/D6J,EAAKC,QAAQrK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,QAEzDP,EAAKiD,UACJiG,WAAYlJ,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,OACzD6J,KAAMA,EACNE,MAAO,EACPtJ,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAA6H,iBAAmB,WAClB,GAAI0D,GAAOpK,EAAK4C,MAAMwH,IACO,IAA1BpK,EAAK4C,MAAM4F,YACb4B,EAAK,GAAKpK,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,OAAS6J,EAAK,GAErEA,EAAKC,QAAQrK,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,QAE3DP,EAAKiD,UACJ1C,MAAO,EACP2I,WAAYlJ,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,OACvD6J,KAAMA,EACNE,MAAO,EACPtJ,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAA0L,cAAgB,WACf,GAAIH,GAAOpK,EAAK4C,MAAMwH,IACO,IAA1BpK,EAAK4C,MAAM4F,YACb4B,EAAK,GAAKpK,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,OACpD6J,EAAK,GAAKpK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,OAExD6J,EAAKC,QAAQrK,EAAK4C,MAAMsG,YAEzBlJ,EAAKiD,UACJ1C,MAAO,EACP2I,WAAY,GACZkB,KAAMA,EACNE,MAAO,EACPtJ,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAAyI,SAAW,WACV,GAAI8C,GAAOpK,EAAK4C,MAAMwH,IACO,IAA1BpK,EAAK4C,MAAM4F,YACb4B,EAAK,GAAKA,EAAK,GAAKpK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,MAAMP,EAAKoJ,YAE1EgB,EAAKC,QAAQrK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,MAAMP,EAAKoJ,aAEpEpJ,EAAKiD,UACJiG,WAAYlJ,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAK4C,MAAMrC,OACtDP,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAKoJ,YACxCgB,KAAMA,EACNE,MAAO,EACPtJ,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAA0I,iBAAmB,WAClB,GAAI6C,GAAOpK,EAAK4C,MAAMwH,IACO,IAA1BpK,EAAK4C,MAAM4F,YACb4B,EAAK,GAAKpK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAKqJ,eAAerJ,EAAK4C,MAAMrC,OAAS6J,EAAK,GAEvFA,EAAKC,QAAQrK,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAKqJ,eAAerJ,EAAK4C,MAAMrC,QAE7EP,EAAKiD,UACJ1C,MAAOP,EAAKqJ,eACZH,WAAYlJ,EAAK4C,MAAMsG,WAAWrI,UAAU,EAAEb,EAAKqJ,gBAChDrJ,EAAK4C,MAAMsG,WAAWrI,UAAUb,EAAK4C,MAAMrC,OAC9C6J,KAAMA,EACNE,MAAO,EACPtJ,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,iBAETjF,KAAA+H,KAAO,WACN5G,EAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK8I,cAAc9I,EAAK4C,MAAMwH,KAAKpK,EAAK4C,MAAM0H,SAC7C9B,YAAa,IACVxI,EAAK8D,iBAGXjF,KAAA2I,QAAU,WACT,GAA6B,GAA1BxH,EAAK4C,MAAM4F,YAAoC,CACjD,GAAI8B,GAAQtK,EAAKwK,WAAW,EAAGxK,EAAK4C,MAAM0H,MAAOtK,EAAK4C,MAAMwH,KAAK3J,OACjET,GAAKiD,SAAS7D,OAAOyJ,OACpB7I,EAAK8I,cAAc9I,EAAK4C,MAAMwH,KAAKE,GAAQtK,EAAK4C,MAAMwH,KAAKpK,EAAK4C,MAAM0H,OAAO7J,SAC5E6J,MAAOA,EACP9B,YAAa,IACVxI,EAAK8D,kBAMZjF,KAAAyG,SAAW,WACV,GAAGtF,EAAKM,MAAMgF,SAAU,CAKvB,IAHA,GAAImF,GAAQzK,EAAK4C,MAAMsG,WAAWwB,MAAM,KACpCC,EAAO,EACP1J,EAAMwJ,EAAM,GAAGhK,OACbQ,EAAMjB,EAAK4C,MAAMrC,OAASoK,EAAO,EAAIF,EAAMhK,QAChDQ,GAAOwJ,IAAQE,GAAMlK,OAAS,CAG/B,IAAImK,GAAc5K,EAAKM,MAAMgF,SAASmF,EAAOE,EAAM3K,EAAK4C,MAAMsG,WAC9D,IAAyB,GAAtB0B,EAAYnK,OAAa,CAE3BgK,EAAME,GAAQC,EAAY,EAE1B,KAAI,GADArK,IAAQ,EACJsK,EAAI,EAAGA,GAAKF,EAAME,IACzBtK,GAASkK,EAAMI,GAAGpK,OAAS,CAE5BT,GAAKiD,UACJ1C,MAAOA,EACP2I,WAAYuB,EAAMnI,KAAK,KACvBtB,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,oBACF,IAAI8G,EAAYnK,OAAS,EAAG,CAElC,GAAIkC,GAAM3C,EAAK4C,MAAMD,GACrBA,GAAIE,MACH9B,MAAOf,EAAK4C,MAAMY,UAClBV,QAAS9C,EAAK4C,MAAMsG,WACpBnG,UACClB,KAAM,aACNrB,OAAQoK,EAAYtI,KAAK,WAG3BtC,EAAKiD,UACJO,UAAWxD,EAAKyD,YAChBd,IAAKA,EACL3B,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,mBAMXjF,KAAA2G,WAAa,WACiB,GAA1BxF,EAAK4C,MAAM4F,aACbxI,EAAKiD,UACJjC,SAAU,KACVwH,YAAa,KAKhB3J,KAAAiI,cAAgB,WACf,GAAG9G,EAAK4C,MAAMW,YAAa,CAC1BvD,EAAKL,MAAMkE,MAAMrD,MAAQ,EACzB,IAAImC,GAAM3C,EAAK4C,MAAMD,GACrBA,GAAIE,MACH9B,MAAOf,EAAK4C,MAAMY,UAClBV,QAAS9C,EAAK4C,MAAMsG,WACpBnG,aAED/C,EAAKiD,UACJY,MAAO,GACPtD,MAAO,EACP2I,WAAY,GACZQ,YAAa,GACb/G,IAAKA,EACLgH,SAAU,EACV3I,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,oBAER9D,GAAKM,MAAMwK,UAIbjM,KAAA8J,WAAa,SAACL,EAAgByC,EAAcxC,EAAqBhI,GAChE,MAD2C,UAAAgI,MAAA,GAAqB,SAAAhI,MAAgBwK,EAAKtK,QAC9EsK,EAAKlK,UAAU,EAAGN,EAAQgI,GAAWD,EAASyC,EAAKlK,UAAUN,IAErE1B,KAAAiK,cAAgB,SAACR,EAAgBC,GAAA,SAAAA,MAAA,EAChC,IAAIW,GAAalJ,EAAK2I,WAAWL,EAAQtI,EAAK4C,MAAMsG,WAAYX,EAASvI,EAAK4C,MAAMrC,MACpF,QACCA,MAAOP,EAAKmJ,UAAUb,EAAO7H,OAAS8H,EAASD,EAAO7H,OAAS8H,EAAUvI,EAAK4C,MAAMsG,WAAWzI,QAC/FyI,WAAYA,EACZQ,YAAaR,EACblI,SAAU,KACVwH,YAAa,IAGf3J,KAAAsK,UAAY,SAAC6B,EAAWC,GAAA,SAAAA,MAAcjL,EAAK4C,MAAMsG,WAAWzI,OAC3D,IAAIyK,GAAMlL,EAAK4C,MAAMrC,MAAQyK,CAC7B,OAAIE,GAAM,EACF,EACFA,EAAMD,EACJA,EAEAC,GAqBTrM,KAAA2L,WAAa,SAACQ,EAAWG,EAAeC,EAAcC,GACrD,MADqD,UAAAA,OAAA,GAC1C,GAARD,EAAkB,EAClBC,GACMD,GAAQD,EAAQH,GAAKI,GAAQA,GAErCD,GAAgBH,EACbG,EAAQ,EACH,EACGA,GAASC,EACZA,EAEAD,IAIVtM,KAAAgL,cAAgB,SAACmB,GAChB,GAAIrB,GAAW3J,EAAKwK,WAAWQ,EAAGhL,EAAK4C,MAAM+G,SAAU3J,EAAK4C,MAAM6G,QAAQhJ,QAAQ,EAClF,IAAe,GAAZkJ,EACF3J,EAAKiD,UACJ1C,MAAOP,EAAK4C,MAAM8G,YAAYjJ,OAC9ByI,WAAYlJ,EAAK4C,MAAM8G,YACvBC,SAAUA,EACV3I,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,oBACF,CACN,GAAIoF,GAAalJ,EAAK4C,MAAM6G,QAAQzJ,EAAK4C,MAAM6G,QAAQhJ,OAAOkJ,EAC9D3J,GAAKiD,UACJ1C,MAAO2I,EAAWzI,OAClByI,WAAYA,EACZS,SAAUA,EACV3I,SAAU,KACVwH,YAAa,GACXxI,EAAK8D,kBAGVjF,KAAAkL,cAAgB,SAACuB,EAAyDC,GAAzD,SAAAD,MAA6BtL,EAAK4C,MAAMkH,iBAAiB,SAAAyB,OAAA,EACzE,IAAItK,GAAMjB,EAAK4C,MAAM+G,SACjB6B,EAAoB,GAAbF,EAAsC,GAAE,CAInD,KAHGC,IACFtK,GAAYuK,GAERvK,EAAM,GAAKA,GAAOjB,EAAK4C,MAAM6G,QAAQhJ,OAAQQ,GAAYuK,EAAK,CAClE,GAAIC,GAAQzL,EAAK4C,MAAM6G,QAAQzJ,EAAK4C,MAAM6G,QAAQhJ,OAAOQ,GACrDV,EAAQkL,EAAMC,QAAQ1L,EAAK4C,MAAM6F,WACrC,IAAGlI,GAAQ,EACV,OACCA,MAAOA,EACP2I,WAAYuC,EACZ3B,gBAAiBwB,EACjB5C,YAAY,EACZiB,SAAU1I,GAIb,OACC6I,gBAAiBwB,EACjB5C,YAAY,IAId7J,KAAA8M,gBAAkB,EAClB9M,KAAAqE,eAAiB,WAChB,MAAGlD,GAAK2L,gBAAkB,GAAK3L,EAAKL,MAAMiM,UAAUC,WAAa7L,EAAKL,MAAMiM,UAAUE,aAAe9L,EAAKL,MAAMiM,UAAUG,cACzH/L,EAAK2L,kBACE3L,EAAKgM,oBAEL,MAGTnN,KAAAmN,mBAAqB,WACpBhM,EAAK8D,iBACL9D,EAAK2L,mBAEN9M,KAAAiF,eAAiB,WAChB9D,EAAKL,MAAMiM,UAAUC,UAAY7L,EAAKL,MAAMiM,UAAUE,YACtD,IAAIG,GAAOjM,EAAKL,MAAM+D,MAAMwI,yBACzBD,EAAKE,IAAM,GAAKF,EAAKG,KAAO,GAC9BH,EAAKI,QAAUlM,OAAOmM,aAAeC,SAASC,gBAAgBC,eAC9DR,EAAKS,OAASvM,OAAOwM,YAAcJ,SAASC,gBAAgBI,eACzD5M,EAAKL,MAAMkE,MAAMgJ,gBAAe,IAErChO,KAAA4E,UAAY,WACX,MAAqC,gBAA3BzD,GAAKM,MAAMwM,YACb9M,EAAKM,MAAMwM,YAEV9M,EAAKM,MAAMwM,eAl0BpBjO,KAAK+D,OACJc,OAAO,EACPH,aAAa,EACbM,MAAO,GACPtD,MAAO,EACPiD,UAAW3E,KAAK4E,YAChByF,WAAY,GACZQ,YAAa,GACbjB,WAAY,GACZqB,gBAAiB,KACjBpB,YAAY,EACZ/F,OACA8G,WACAE,SAAU,EACVS,QACAE,MAAO,EACPtJ,SAAU,KACVwH,YAAa,GAw2BhB,MA53B6B5J,GAAA2D,EAAA/C,GAmF5B+C,EAAApD,UAAAU,kBAAA,WACIhB,KAAKyB,MAAMyM,WACblO,KAAK6E,SAwoBPnB,EAAApD,UAAAiK,SAAA,WAEC,GAAI4D,GAAS,OAAOC,KAAKpO,KAAK+D,MAAMsG,WAAWrI,UAAUhC,KAAK+D,MAAMrC,OACpE,OAAGyM,GACKA,EAAOhL,MAAQnD,KAAK+D,MAAMrC,MAAQ,EAElC1B,KAAK+D,MAAMsG,WAAWzI,QAG/B8B,EAAApD,UAAAkK,aAAA,WAEC,GAAI2D,GAAS,iBAAiBC,KAAKpO,KAAK+D,MAAMsG,WAAWrI,UAAU,EAAEhC,KAAK+D,MAAMrC,MAAM,GACtF,OAAGyM,GACKA,EAAOhL,MAAQ,EAEf,GA4FTO,EAAApD,UAAA2B,OAAA,cAAAd,GAAAnB,IACC,OAAOS,GAAAoB,cAAA,OAAKC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAMiM,UAAYjL,GAC7CT,UAAW,4BAA8BrB,KAAK+D,MAAMc,MAAM,sBAAsB,yBAChFwJ,QAASrO,KAAK6E,OAEd7E,KAAKyB,MAAM6M,eACX7N,EAAAoB,cAAA,OAAKR,UAAU,+CACbrB,KAAKyB,MAAM6M,gBAEX,KAEFtO,KAAK+D,MAAMD,IAAIpB,IAAK,SAACY,GACrB,OACC7C,EAAAoB,cAACnB,GAAcwB,MAAOoB,EAAIpB,MAAOP,MAAO2B,EAAIW,WFhElCsK,OEiEPjL,EAAIY,QAAQxB,IAAK,SAACY,EAAiBlB,GACrC,MAAO3B,GAAAoB,cAACgB,GAAed,IAAKK,EAAKY,KAAMM,EAAIN,KAAMrB,MAAO2B,EAAI3B,MAAOmB,QAASQ,EAAIR,eAIlF9C,KAAK+D,MAAMW,YACXjE,EAAAoB,cAACnB,GACAwB,MAAOlC,KAAK+D,MAAMY,UAClBhD,MAAO3B,KAAK+D,MAAMsG,WAClB3I,MAAO1B,KAAK+D,MAAMrC,MAClBS,SAAUnC,KAAK+D,MAAM5B,WAEpB,KAEH1B,EAAAoB,cAAA,OAAK2M,OAASC,SAAU,SAAUC,OAAQ,EAAGC,MAAO,IACnDlO,EAAAoB,cAAA,YACCC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAMkE,MAAQlD,GAC/BT,UAAU,sBACVuN,aAAa,MACbC,YAAY,MACZC,eAAe,MACfC,WAAW,QACXP,OAASQ,QAAS,OACjBC,MAAO,cACPC,gBAAiB,cACjBC,OAAQ,OACRC,OAAQ,OACRX,SAAU,UAEXY,OAAQrP,KAAKkF,KACboK,UAAWtP,KAAKmF,QAChBoK,SAAUvP,KAAKwJ,OACfgG,QAASxP,KAAKkK,SAGhBzJ,EAAAoB,cAAA,OAAKC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAM+D,MAAQ/C,IAAI,OAl2BnC4B,EAAApB,cACN2L,YAAa,KACbxD,SAAU,WAAa,OAAO,GAC9BwB,OAAQ,cAk2BVvI,GA53B6BjD,EAAM8B,UAAnChC,QAAAkP,eAAAlQ,EAAA,cAAAoC,OAAA,IF0yBCpC,EAAQmQ,QAAUhM,GAKb,SAAUlE,EAAQD,KAMlB,SAAUC,EAAQD,GG5+BxBC,EAAAD,QAAAkB","file":"react-console.min.js","sourcesContent":["var Console =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar React = __webpack_require__(2);\n\t__webpack_require__(1);\n\tvar ConsolePrompt = (function (_super) {\n\t __extends(ConsolePrompt, _super);\n\t function ConsolePrompt() {\n\t _super.apply(this, arguments);\n\t this.child = {};\n\t // DOM Management\n\t this.updateSemaphore = 0;\n\t }\n\t // Component Lifecycle\n\t ConsolePrompt.prototype.componentDidMount = function () {\n\t this.idle();\n\t };\n\t ConsolePrompt.prototype.componentDidUpdate = function () {\n\t this.idle();\n\t };\n\t ConsolePrompt.prototype.idle = function () {\n\t var _this = this;\n\t // Blink cursor when idle\n\t if (this.child.cursor) {\n\t if (this.updateSemaphore == 0) {\n\t this.child.cursor.className = \"react-console-cursor\";\n\t }\n\t this.updateSemaphore++;\n\t window.setTimeout(function () {\n\t _this.updateSemaphore--;\n\t if (_this.updateSemaphore == 0 && _this.child.cursor) {\n\t _this.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t }\n\t }, 1000);\n\t }\n\t };\n\t ConsolePrompt.prototype.renderValue = function () {\n\t var _this = this;\n\t if (this.props.point < 0) {\n\t return [this.props.value];\n\t }\n\t else if (this.props.point == this.props.value.length) {\n\t return [this.props.value, React.createElement(\"span\", {ref: function (ref) { return _this.child.cursor = ref; }, key: \"cursor\", className: \"react-console-cursor\"}, \" \")];\n\t }\n\t else {\n\t return [this.props.value.substring(0, this.props.point),\n\t React.createElement(\"span\", {ref: function (ref) { return _this.child.cursor = ref; }, key: \"cursor\", className: \"react-console-cursor\"}, this.props.value.substring(this.props.point, this.props.point + 1)),\n\t this.props.value.substring(this.props.point + 1)];\n\t }\n\t };\n\t ConsolePrompt.prototype.render = function () {\n\t var label = this.props.label;\n\t if (this.props.argument) {\n\t var idx = label.lastIndexOf(\"\\n\");\n\t if (idx >= 0) {\n\t label = label.substring(0, idx + 1);\n\t }\n\t else {\n\t label = '';\n\t }\n\t }\n\t return React.createElement(\"div\", {className: \"react-console-prompt-box\"}, React.createElement(\"span\", {className: \"react-console-prompt-label\"}, label), React.createElement(\"span\", {className: \"react-console-prompt-argument\"}, this.props.argument), React.createElement(\"span\", {className: \"react-console-prompt\"}, this.renderValue()));\n\t };\n\t ConsolePrompt.defaultProps = {\n\t point: -1,\n\t value: \"\",\n\t label: \"> \",\n\t argument: null,\n\t };\n\t return ConsolePrompt;\n\t}(React.Component));\n\tvar ConsoleTableHeader = function (props) {\n\t if (props.headers) {\n\t return React.createElement(\"thead\", null, React.createElement(\"tr\", null, props.headers.map(function (header) {\n\t return React.createElement(\"th\", {scope: \"col\", key: header}, header);\n\t })));\n\t }\n\t return null;\n\t};\n\tvar ConsoleMessage = function (props) {\n\t if (props.isTable) {\n\t var data = props.value[0];\n\t return React.createElement(\"div\", {className: \"react-console-message react-console-table\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, React.createElement(\"table\", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement(\"tbody\", null, data.rows && data.rows.map(function (row, index) {\n\t return React.createElement(\"tr\", {key: index}, row.map(function (cell, cellIndex) {\n\t 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, type) {\n\t var log = _this.state.log;\n\t if (type) {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, type: type, value: [tableData] });\n\t }\n\t else {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\n\t }\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.return = function () {\n\t _this.setState({\n\t acceptInput: true,\n\t currLabel: _this.nextLabel(),\n\t }, _this.scrollIfBottom());\n\t };\n\t // Event Handlers\n\t this.focus = function () {\n\t if (!window.getSelection().toString()) {\n\t _this.child.typer.focus();\n\t _this.setState({ focus: true }, _this.scrollToBottom);\n\t }\n\t };\n\t this.blur = function () {\n\t _this.setState({ focus: false });\n\t };\n\t this.keyDown = function (e) {\n\t var keyCodes = {\n\t // return\n\t 13: _this.acceptLine,\n\t // left\n\t 37: _this.backwardChar,\n\t // right\n\t 39: _this.forwardChar,\n\t // up\n\t 38: _this.previousHistory,\n\t // down\n\t 40: _this.nextHistory,\n\t // backspace\n\t 8: _this.backwardDeleteChar,\n\t // delete\n\t 46: _this.deleteChar,\n\t // end\n\t 35: _this.endOfLine,\n\t // start\n\t 36: _this.beginningOfLine,\n\t // tab\n\t 9: _this.complete,\n\t // esc\n\t 27: _this.prefixMeta,\n\t };\n\t var ctrlCodes = {\n\t // C-a\n\t 65: _this.beginningOfLine,\n\t // C-e\n\t 69: _this.endOfLine,\n\t // C-f\n\t 70: _this.forwardChar,\n\t // C-b\n\t 66: _this.backwardChar,\n\t // C-l\n\t 76: _this.clearScreen,\n\t // C-p\n\t 80: _this.previousHistory,\n\t // C-n\n\t 78: _this.nextHistory,\n\t // C-r\n\t 82: _this.reverseSearchHistory,\n\t // C-s\n\t 83: _this.forwardSearchHistory,\n\t // C-d\n\t 68: _this.deleteChar,\n\t // C-q TODO\n\t //81: this.quotedInsert,\n\t // C-v TODO\n\t //86: this.quotedInsert,\n\t // C-t TODO\n\t //84: this.transposeChars,\n\t // C-k\n\t 75: _this.killLine,\n\t // C-u\n\t 85: _this.backwardKillLine,\n\t // C-y TODO\n\t 89: _this.yank,\n\t // C-c\n\t 67: _this.cancelCommand,\n\t };\n\t var ctrlXCodes = {\n\t // C-x Rubout\n\t 8: _this.backwardKillLine,\n\t };\n\t var ctrlShiftCodes = {};\n\t var metaCodes = {\n\t // M-f\n\t 70: _this.forwardWord,\n\t // M-b\n\t 66: _this.backwardWord,\n\t // M-p\n\t 80: _this.nonIncrementalReverseSearchHistory,\n\t // M-n\n\t 78: _this.nonIncrementalForwardSearchHistory,\n\t // M-.\n\t 190: _this.yankLastArg,\n\t // M-TAB TODO\n\t //9: this.tabInsert,\n\t // M-t TODO\n\t //84: this.transposeWords,\n\t // M-u TODO\n\t //85: this.upcaseWord,\n\t // M-l TODO\n\t //76: this.downcaseWord,\n\t // M-c TODO\n\t //67: this.capitalizeWord,\n\t // M-d\n\t 68: _this.killWord,\n\t // M-backspace\n\t 8: _this.backwardKillWord,\n\t // M-w TODO\n\t //87: this.unixWordRubout,\n\t // M-\\ TODO\n\t //220: this.deleteHorizontalSpace,\n\t // M-y\n\t 89: _this.yankPop,\n\t };\n\t var metaShiftCodes = {\n\t // M-<\n\t 188: _this.beginningOfHistory,\n\t // M->\n\t 190: _this.endOfHistory,\n\t // M-_\n\t 189: _this.yankLastArg,\n\t };\n\t var metaCtrlCodes = {\n\t // M-C-y\n\t 89: _this.yankNthArg,\n\t };\n\t if (_this.state.acceptInput) {\n\t if (e.altKey) {\n\t if (e.ctrlKey) {\n\t if (e.keyCode in metaCtrlCodes) {\n\t metaCtrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.shiftKey) {\n\t if (e.keyCode in metaShiftCodes) {\n\t metaShiftCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.keyCode in metaCodes) {\n\t metaCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.ctrlKey) {\n\t if (e.keyCode in ctrlCodes) {\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.keyCode in keyCodes) {\n\t keyCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t };\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 6620d61878a57e14e7ae","\"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, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\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 bc552c96d8b5f9661626","webpack:///./react-console.tsx","webpack:///external \"React\""],"names":["Console","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","__extends","this","d","b","__","constructor","hasOwnProperty","prototype","Object","create","React","ConsolePrompt","_super","apply","arguments","child","updateSemaphore","componentDidMount","idle","componentDidUpdate","_this","cursor","className","window","setTimeout","renderValue","props","point","value","length","createElement","ref","key","substring","render","label","argument","idx","lastIndexOf","defaultProps","Component","ConsoleTableHeader","headers","map","header","scope","ConsoleMessage","isTable","data","type","rows","row","index","cell","cellIndex","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\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, React.createElement(\"table\", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement(\"tbody\", null, data.rows && data.rows.map(function (row, index) {\n\t return React.createElement(\"tr\", {key: index}, row.map(function (cell, cellIndex) {\n\t 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, type) {\n\t var log = _this.state.log;\n\t if (type) {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, type: type, value: [tableData] });\n\t }\n\t else {\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\n\t }\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.return = function () {\n\t _this.setState({\n\t acceptInput: true,\n\t currLabel: _this.nextLabel(),\n\t }, _this.scrollIfBottom());\n\t };\n\t // Event Handlers\n\t this.focus = function () {\n\t if (!window.getSelection().toString()) {\n\t _this.child.typer.focus();\n\t _this.setState({ focus: true }, _this.scrollToBottom);\n\t }\n\t };\n\t this.blur = function () {\n\t _this.setState({ focus: false });\n\t };\n\t this.keyDown = function (e) {\n\t var keyCodes = {\n\t // return\n\t 13: _this.acceptLine,\n\t // left\n\t 37: _this.backwardChar,\n\t // right\n\t 39: _this.forwardChar,\n\t // up\n\t 38: _this.previousHistory,\n\t // down\n\t 40: _this.nextHistory,\n\t // backspace\n\t 8: _this.backwardDeleteChar,\n\t // delete\n\t 46: _this.deleteChar,\n\t // end\n\t 35: _this.endOfLine,\n\t // start\n\t 36: _this.beginningOfLine,\n\t // tab\n\t 9: _this.complete,\n\t // esc\n\t 27: _this.prefixMeta,\n\t };\n\t var ctrlCodes = {\n\t // C-a\n\t 65: _this.beginningOfLine,\n\t // C-e\n\t 69: _this.endOfLine,\n\t // C-f\n\t 70: _this.forwardChar,\n\t // C-b\n\t 66: _this.backwardChar,\n\t // C-l\n\t 76: _this.clearScreen,\n\t // C-p\n\t 80: _this.previousHistory,\n\t // C-n\n\t 78: _this.nextHistory,\n\t // C-r\n\t 82: _this.reverseSearchHistory,\n\t // C-s\n\t 83: _this.forwardSearchHistory,\n\t // C-d\n\t 68: _this.deleteChar,\n\t // C-q TODO\n\t //81: this.quotedInsert,\n\t // C-v TODO\n\t //86: this.quotedInsert,\n\t // C-t TODO\n\t //84: this.transposeChars,\n\t // C-k\n\t 75: _this.killLine,\n\t // C-u\n\t 85: _this.backwardKillLine,\n\t // C-y TODO\n\t 89: _this.yank,\n\t // C-c\n\t 67: _this.cancelCommand,\n\t };\n\t var ctrlXCodes = {\n\t // C-x Rubout\n\t 8: _this.backwardKillLine,\n\t };\n\t var ctrlShiftCodes = {};\n\t var metaCodes = {\n\t // M-f\n\t 70: _this.forwardWord,\n\t // M-b\n\t 66: _this.backwardWord,\n\t // M-p\n\t 80: _this.nonIncrementalReverseSearchHistory,\n\t // M-n\n\t 78: _this.nonIncrementalForwardSearchHistory,\n\t // M-.\n\t 190: _this.yankLastArg,\n\t // M-TAB TODO\n\t //9: this.tabInsert,\n\t // M-t TODO\n\t //84: this.transposeWords,\n\t // M-u TODO\n\t //85: this.upcaseWord,\n\t // M-l TODO\n\t //76: this.downcaseWord,\n\t // M-c TODO\n\t //67: this.capitalizeWord,\n\t // M-d\n\t 68: _this.killWord,\n\t // M-backspace\n\t 8: _this.backwardKillWord,\n\t // M-w TODO\n\t //87: this.unixWordRubout,\n\t // M-\\ TODO\n\t //220: this.deleteHorizontalSpace,\n\t // M-y\n\t 89: _this.yankPop,\n\t };\n\t var metaShiftCodes = {\n\t // M-<\n\t 188: _this.beginningOfHistory,\n\t // M->\n\t 190: _this.endOfHistory,\n\t // M-_\n\t 189: _this.yankLastArg,\n\t };\n\t var metaCtrlCodes = {\n\t // M-C-y\n\t 89: _this.yankNthArg,\n\t };\n\t if (_this.state.acceptInput) {\n\t if (e.altKey) {\n\t if (e.ctrlKey) {\n\t if (e.keyCode in metaCtrlCodes) {\n\t metaCtrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.shiftKey) {\n\t if (e.keyCode in metaShiftCodes) {\n\t metaShiftCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.keyCode in metaCodes) {\n\t metaCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.ctrlKey) {\n\t if (e.keyCode in ctrlCodes) {\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.keyCode in keyCodes) {\n\t keyCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.ctrlKey && e.keyCode === 67) {\n\t // if input is blocked, ctrl+c should still call cancel\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t };\n\t this.change = function () {\n\t var idx = 0;\n\t for (; idx < _this.state.typer.length && idx < _this.child.typer.value.length; idx++) {\n\t if (_this.state.typer[idx] != _this.child.typer.value[idx]) {\n\t break;\n\t }\n\t }\n\t var insert = _this.child.typer.value.substring(idx);\n\t var replace = _this.state.typer.length - idx;\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText, replace),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert, replace), {\n\t typer: _this.child.typer.value,\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t this.paste = function (e) {\n\t var insert = e.clipboardData.getData('text');\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert), {\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t e.preventDefault();\n\t };\n\t // Commands for Moving\n\t this.beginningOfLine = function () {\n\t _this.setState({\n\t point: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.endOfLine = function () {\n\t _this.setState({\n\t point: _this.state.promptText.length,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardWord = function () {\n\t _this.setState({\n\t point: _this.nextWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardWord = function () {\n\t _this.setState({\n\t point: _this.previousWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t // Commands for Manipulating the History\n\t this.acceptLine = function () {\n\t _this.child.typer.value = \"\";\n\t if (_this.props.continue(_this.state.promptText)) {\n\t _this.setState(Object.assign(_this.consoleInsert(\"\\n\"), {\n\t typer: \"\",\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t var command_1 = _this.state.promptText;\n\t var history_1 = _this.state.history;\n\t var log = _this.state.log;\n\t if (!history_1 || history_1[history_1.length - 1] != command_1) {\n\t history_1.push(command_1);\n\t }\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: command_1,\n\t message: []\n\t });\n\t _this.setState({\n\t acceptInput: false,\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t history: history_1,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, function () {\n\t _this.scrollToBottom();\n\t if (_this.props.handler) {\n\t _this.props.handler(command_1);\n\t }\n\t else {\n\t _this.return();\n\t }\n\t });\n\t }\n\t };\n\t this.previousHistory = function () {\n\t _this.rotateHistory(-1);\n\t };\n\t this.nextHistory = function () {\n\t _this.rotateHistory(1);\n\t };\n\t this.beginningOfHistory = function () {\n\t _this.rotateHistory(-_this.state.history.length);\n\t };\n\t this.endOfHistory = function () {\n\t _this.rotateHistory(_this.state.history.length);\n\t };\n\t this.triggerSearch = function () {\n\t if (_this.state.searchDirection == 0 /* Reverse */) {\n\t _this.reverseSearchHistory();\n\t }\n\t else {\n\t _this.forwardSearchHistory();\n\t }\n\t };\n\t this.reverseSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(0 /* Reverse */, true), {\n\t argument: \"(reverse-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 0 /* Reverse */,\n\t searchInit: true,\n\t argument: \"(reverse-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.forwardSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(1 /* Forward */, true), {\n\t argument: \"(forward-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 1 /* Forward */,\n\t searchInit: true,\n\t argument: \"(forward-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.clearScreen = function () {\n\t _this.setState({ log: [] });\n\t };\n\t this.nonIncrementalReverseSearchHistory = function () {\n\t // TODO\n\t };\n\t this.nonIncrementalForwardSearchHistory = function () {\n\t // TODO\n\t };\n\t this.historySearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySearchForward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchForward = function () {\n\t // TODO\n\t };\n\t this.yankNthArg = function () {\n\t // TODO\n\t };\n\t this.yankLastArg = function () {\n\t // TODO\n\t };\n\t // Commands for Changing Text\n\t this.deleteChar = function () {\n\t if (_this.state.point < _this.state.promptText.length) {\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.state.point + 1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.backwardDeleteChar = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchText.substring(0, _this.state.searchText.length - 1),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else if (_this.state.point > 0) {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t promptText: _this.state.promptText.substring(0, _this.state.point - 1)\n\t + _this.state.promptText.substring(_this.state.point),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t // Killing and Yanking\n\t this.killLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(0, _this.state.point));\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWholeLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point)\n\t + kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText);\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: '',\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point, _this.nextWord());\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point, _this.nextWord()));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.nextWord()),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(_this.previousWord(), _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.previousWord(), _this.state.point));\n\t }\n\t _this.setState({\n\t point: _this.previousWord(),\n\t promptText: _this.state.promptText.substring(0, _this.previousWord())\n\t + _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.yank = function () {\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[_this.state.killn]), {\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t };\n\t this.yankPop = function () {\n\t if (_this.state.lastCommand == 3 /* Yank */) {\n\t var killn = _this.rotateRing(1, _this.state.killn, _this.state.kill.length);\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[killn], _this.state.kill[_this.state.killn].length), {\n\t killn: killn,\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t // Numeric Arguments\n\t // Completing\n\t this.complete = function () {\n\t if (_this.props.complete) {\n\t // Split text and find current word\n\t var words = _this.state.promptText.split(\" \");\n\t var curr = 0;\n\t var idx = words[0].length;\n\t while (idx < _this.state.point && curr + 1 < words.length) {\n\t idx += words[++curr].length + 1;\n\t }\n\t var completions = _this.props.complete(words, curr, _this.state.promptText);\n\t if (completions.length == 1) {\n\t // Perform completion\n\t words[curr] = completions[0];\n\t var point = -1;\n\t for (var i = 0; i <= curr; i++) {\n\t point += words[i].length + 1;\n\t }\n\t _this.setState({\n\t point: point,\n\t promptText: words.join(\" \"),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else if (completions.length > 1) {\n\t // show completions\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: [{\n\t type: \"completion\",\n\t value: [completions.join(\"\\t\")],\n\t }]\n\t });\n\t _this.setState({\n\t currLabel: _this.nextLabel(),\n\t log: log,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t }\n\t };\n\t // Keyboard Macros\n\t // Miscellaneous\n\t this.prefixMeta = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t });\n\t }\n\t // TODO Meta prefixed state\n\t };\n\t this.cancelCommand = function () {\n\t if (_this.state.acceptInput) {\n\t _this.child.typer.value = \"\";\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: []\n\t });\n\t _this.setState({\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t _this.props.cancel();\n\t }\n\t };\n\t // Helper functions\n\t this.textInsert = function (insert, text, replace, point) {\n\t if (replace === void 0) { replace = 0; }\n\t if (point === void 0) { point = text.length; }\n\t return text.substring(0, point - replace) + insert + text.substring(point);\n\t };\n\t this.consoleInsert = function (insert, replace) {\n\t if (replace === void 0) { replace = 0; }\n\t var promptText = _this.textInsert(insert, _this.state.promptText, replace, _this.state.point);\n\t return {\n\t point: _this.movePoint(insert.length - replace, insert.length - replace + _this.state.promptText.length),\n\t promptText: promptText,\n\t restoreText: promptText,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t };\n\t this.movePoint = function (n, max) {\n\t if (max === void 0) { max = _this.state.promptText.length; }\n\t var pos = _this.state.point + n;\n\t if (pos < 0) {\n\t return 0;\n\t }\n\t if (pos > max) {\n\t return max;\n\t }\n\t else {\n\t return pos;\n\t }\n\t };\n\t this.rotateRing = function (n, ringn, ring, circular) {\n\t if (circular === void 0) { circular = true; }\n\t if (ring == 0)\n\t return 0;\n\t if (circular) {\n\t return (ring + (ringn + n) % ring) % ring;\n\t }\n\t else {\n\t ringn = ringn - n;\n\t if (ringn < 0) {\n\t return 0;\n\t }\n\t else if (ringn >= ring) {\n\t return ring;\n\t }\n\t else {\n\t return ringn;\n\t }\n\t }\n\t };\n\t this.rotateHistory = function (n) {\n\t var historyn = _this.rotateRing(n, _this.state.historyn, _this.state.history.length, false);\n\t if (historyn == 0) {\n\t _this.setState({\n\t point: _this.state.restoreText.length,\n\t promptText: _this.state.restoreText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t var promptText = _this.state.history[_this.state.history.length - historyn];\n\t _this.setState({\n\t point: promptText.length,\n\t promptText: promptText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.searchHistory = function (direction, next) {\n\t if (direction === void 0) { direction = _this.state.searchDirection; }\n\t if (next === void 0) { next = false; }\n\t var idx = _this.state.historyn;\n\t var inc = (direction == 0 /* Reverse */) ? 1 : -1;\n\t if (next) {\n\t idx = idx + inc;\n\t }\n\t for (; idx > 0 && idx <= _this.state.history.length; idx = idx + inc) {\n\t var entry = _this.state.history[_this.state.history.length - idx];\n\t var point = entry.indexOf(_this.state.searchText);\n\t if (point > -1) {\n\t return {\n\t point: point,\n\t promptText: entry,\n\t searchDirection: direction,\n\t searchInit: false,\n\t historyn: idx,\n\t };\n\t }\n\t }\n\t return {\n\t searchDirection: direction,\n\t searchInit: false,\n\t };\n\t };\n\t // DOM management\n\t this.scrollSemaphore = 0;\n\t this.scrollIfBottom = function () {\n\t if (_this.scrollSemaphore > 0 || _this.child.container.scrollTop == _this.child.container.scrollHeight - _this.child.container.offsetHeight) {\n\t _this.scrollSemaphore++;\n\t return _this.scrollIfBottomTrue;\n\t }\n\t else {\n\t return null;\n\t }\n\t };\n\t this.scrollIfBottomTrue = function () {\n\t _this.scrollToBottom();\n\t _this.scrollSemaphore--;\n\t };\n\t this.scrollToBottom = function () {\n\t _this.child.container.scrollTop = _this.child.container.scrollHeight;\n\t var rect = _this.child.focus.getBoundingClientRect();\n\t if (rect.top < 0 || rect.left < 0 ||\n\t rect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t rect.right > (window.innerWidth || document.documentElement.clientWidth)) {\n\t _this.child.typer.scrollIntoView(false);\n\t }\n\t };\n\t this.nextLabel = function () {\n\t if (typeof _this.props.promptLabel === \"string\") {\n\t return _this.props.promptLabel;\n\t }\n\t else {\n\t return _this.props.promptLabel();\n\t }\n\t };\n\t this.state = {\n\t focus: false,\n\t acceptInput: true,\n\t typer: '',\n\t point: 0,\n\t currLabel: this.nextLabel(),\n\t promptText: '',\n\t restoreText: '',\n\t searchText: '',\n\t searchDirection: null,\n\t searchInit: false,\n\t log: [],\n\t history: [],\n\t historyn: 0,\n\t kill: [],\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t }\n\t // Component Lifecycle\n\t default_1.prototype.componentDidMount = function () {\n\t if (this.props.autofocus) {\n\t this.focus();\n\t }\n\t };\n\t default_1.prototype.nextWord = function () {\n\t // Find first alphanumeric char after first non-alphanumeric char\n\t var search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t if (search) {\n\t return search.index + this.state.point + 1;\n\t }\n\t else {\n\t return this.state.promptText.length;\n\t }\n\t };\n\t default_1.prototype.previousWord = function () {\n\t // Find first non-alphanumeric char after first alphanumeric char in reverse\n\t var search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0, this.state.point - 1));\n\t if (search) {\n\t return search.index + 1;\n\t }\n\t else {\n\t return 0;\n\t }\n\t };\n\t default_1.prototype.render = function () {\n\t var _this = this;\n\t return React.createElement(\"div\", {ref: function (ref) { return _this.child.container = ref; }, className: \"react-console-container \" + (this.state.focus ? \"react-console-focus\" : \"react-console-nofocus\"), onClick: this.focus}, this.props.welcomeMessage ?\n\t React.createElement(\"div\", {className: \"react-console-message react-console-welcome\"}, this.props.welcomeMessage)\n\t : null, this.state.log.map(function (val) {\n\t return [\n\t React.createElement(ConsolePrompt, {label: val.label, value: val.command})\n\t ].concat(val.message.map(function (val, idx) {\n\t return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value, isTable: val.isTable});\n\t }));\n\t }), this.state.acceptInput ?\n\t React.createElement(ConsolePrompt, {label: this.state.currLabel, value: this.state.promptText, point: this.state.point, argument: this.state.argument})\n\t : null, React.createElement(\"div\", {style: { overflow: \"hidden\", height: 1, width: 1 }}, React.createElement(\"textarea\", {ref: function (ref) { return _this.child.typer = ref; }, className: \"react-console-typer\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: \"false\", style: { outline: \"none\",\n\t color: \"transparent\",\n\t backgroundColor: \"transparent\",\n\t border: \"none\",\n\t resize: \"none\",\n\t overflow: \"hidden\",\n\t }, onBlur: this.blur, onKeyDown: this.keyDown, onChange: this.change, onPaste: this.paste})), React.createElement(\"div\", {ref: function (ref) { return _this.child.focus = ref; }}, \" \"));\n\t };\n\t default_1.defaultProps = {\n\t promptLabel: '> ',\n\t continue: function () { return false; },\n\t cancel: function () { },\n\t };\n\t return default_1;\n\t}(React.Component));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = default_1;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = React;\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// react-console.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap bc552c96d8b5f9661626","\"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, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/dist.tar.gz b/dist/dist.tar.gz index 31cee259bc2a19b7cb2c2ff9387e286c7cbffdb7..527ab81e3b68c4508b149239f94ddfca37dd5090 100644 GIT binary patch delta 20130 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 Z$Jl>x;13S`!GVYa{~u?s^5g)%0RY%_1#AES diff --git a/dist/dist.zip b/dist/dist.zip index 1982b813c109408cc2a6c87e83456057e066f315..d07103be56b3d50389afea25dbe0c037d5c51cb8 100644 GIT binary patch delta 23800 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 delta 23591 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 diff --git a/dist/dist/react-console.js b/dist/dist/react-console.js index 0c644e7..f8d4d35 100644 --- a/dist/dist/react-console.js +++ b/dist/dist/react-console.js @@ -374,6 +374,11 @@ var Console = e.preventDefault(); } } + else if (e.ctrlKey && e.keyCode === 67) { + // if input is blocked, ctrl+c should still call cancel + ctrlCodes[e.keyCode](); + e.preventDefault(); + } }; this.change = function () { var idx = 0; diff --git a/dist/dist/react-console.js.map b/dist/dist/react-console.js.map index 9a5b478..83beb6a 100644 --- a/dist/dist/react-console.js.map +++ b/dist/dist/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 9628d64841ca63a4f97f","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 9628d64841ca63a4f97f","\"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, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\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 0528d5f9c29b80bcd3d1","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 0528d5f9c29b80bcd3d1","\"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, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/react-console.js b/lib/react-console.js index 758f67c..422d27c 100644 --- a/lib/react-console.js +++ b/lib/react-console.js @@ -374,6 +374,11 @@ module.exports = e.preventDefault(); } } + else if (e.ctrlKey && e.keyCode === 67) { + // if input is blocked, ctrl+c should still call cancel + ctrlCodes[e.keyCode](); + e.preventDefault(); + } }; this.change = function () { var idx = 0; diff --git a/lib/react-console.js.map b/lib/react-console.js.map index aebcf2d..33f1b81 100644 --- a/lib/react-console.js.map +++ b/lib/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 9342be2e3857029b2d74","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 9342be2e3857029b2d74","\"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, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\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 8d9024a6dcbb35988f56","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 8d9024a6dcbb35988f56","\"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, type?: string) => {\n\t\tlet log = this.state.log;\n\t\tif(type){\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, type: type, value: [tableData]});\n\t\t}else{\n\t\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\t}\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t} else if(e.ctrlKey && e.keyCode === 67) {\n\t\t\t// if input is blocked, ctrl+c should still call cancel\n\t\t\tctrlCodes[e.keyCode]();\n\t\t\te.preventDefault();\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = require(\"react\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/src/react-console.tsx b/src/react-console.tsx index ee541a4..31a4ae1 100644 --- a/src/react-console.tsx +++ b/src/react-console.tsx @@ -476,6 +476,10 @@ export default class extends React.Component { keyCodes[e.keyCode](); e.preventDefault(); } + } else if(e.ctrlKey && e.keyCode === 67) { + // if input is blocked, ctrl+c should still call cancel + ctrlCodes[e.keyCode](); + e.preventDefault(); } } change = () => {