From 724dbd1131c356fe9d0076df774cf6d41caa3334 Mon Sep 17 00:00:00 2001 From: Spencer Nowak Date: Mon, 12 Jun 2017 12:49:15 -0400 Subject: [PATCH] Initial commit for logTable method --- README.md | 1 + dist/dist-min.tar.gz | Bin 27862 -> 29123 bytes dist/dist-min.zip | Bin 28483 -> 29683 bytes dist/dist-min/react-console.min.js | 2 +- dist/dist-min/react-console.min.js.map | 2 +- dist/dist.tar.gz | Bin 23712 -> 24777 bytes dist/dist.zip | Bin 24114 -> 25194 bytes dist/dist/react-console.js | 44 ++++++++++++---- dist/dist/react-console.js.map | 2 +- lib/react-console.js | 44 ++++++++++++---- lib/react-console.js.map | 2 +- server.js | 2 + src/react-console.tsx | 67 +++++++++++++++++++++---- 13 files changed, 134 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 8c1a7e8..a64df7b 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ Properties you can pass to the console element | ---- | ---- | ---- | log | (...messages: any)=>void | Log messages to the console. If string, print the value, otherwise, print the JSON value of the message. | logX | (type: string, ...messages: any)=>void | Log messages of a particular type to the console. The messages will be given the class `react-console-message-{type}`. +| logTable | (tableObject: Object)=>void | Log tabular data to the console. `tableObject` has the format `{ headers: ['header 1', 'header 2'], rows: [['row 1, col 1', 'row 1, col 2'], ['row 2, col 1', 'row 2, col 2']]}`. `headers` is optional. | return | ()=>void | Signal the current command has finished and a new prompt should be displayed. | clearScreen | ()=>void | Clear the visible log in the console. Does not clear command history. diff --git a/dist/dist-min.tar.gz b/dist/dist-min.tar.gz index 1faf5e92a326f24d7c967a0c2ddc61de187ad208..46b3c502c88c3c724deb1d4e31199434b61d3374 100644 GIT binary patch literal 29123 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%0DCfgspA*GaE$6kH*U_I}n-a-> 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 diff --git a/dist/dist-min/react-console.min.js b/dist/dist-min/react-console.min.js index 627cd64..031ccf6 100644 --- a/dist/dist-min/react-console.min.js +++ b/dist/dist-min/react-console.min.js @@ -1,2 +1,2 @@ -var Console=function(t){function e(r){if(o[r])return o[r].exports;var s=o[r]={exports:{},id:r,loaded:!1};return t[r].call(s.exports,s,s.exports,e),s.loaded=!0,s.exports}var o={};return e.m=t,e.c=o,e.p="",e(0)}([function(t,e,o){"use strict";var r=this&&this.__extends||function(t,e){function o(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)},s=o(2);o(1);var n=function(t){function e(){t.apply(this,arguments),this.child={},this.updateSemaphore=0}return r(e,t),e.prototype.componentDidMount=function(){this.idle()},e.prototype.componentDidUpdate=function(){this.idle()},e.prototype.idle=function(){var t=this;this.child.cursor&&(0==this.updateSemaphore&&(this.child.cursor.className="react-console-cursor"),this.updateSemaphore++,window.setTimeout(function(){t.updateSemaphore--,0==t.updateSemaphore&&t.child.cursor&&(t.child.cursor.className="react-console-cursor react-console-cursor-idle")},1e3))},e.prototype.renderValue=function(){var t=this;return this.props.point<0?[this.props.value]:this.props.point==this.props.value.length?[this.props.value,s.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),s.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"},this.props.value.substring(this.props.point,this.props.point+1)),this.props.value.substring(this.props.point+1)]},e.prototype.render=function(){var t=this.props.label;if(this.props.argument){var e=t.lastIndexOf("\n");t=e>=0?t.substring(0,e+1):""}return s.createElement("div",{className:"react-console-prompt-box"},s.createElement("span",{className:"react-console-prompt-label"},t),s.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),s.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(s.Component),a=function(t){return s.createElement("div",{className:"react-console-message"+(t.type?" react-console-message-"+t.type:"")},t.value.map(function(t){return"string"==typeof t?t:JSON.stringify(t)}).join("\n"))};a.defaultProps={type:null,value:[]};var i=function(t){function e(e){var o=this;t.call(this,e),this.child={},this.log=function(){for(var t=[],e=0;e0&&o.setState({point:o.movePoint(-1),promptText:o.state.promptText.substring(0,o.state.point-1)+o.state.promptText.substring(o.state.point),argument:null,lastCommand:0},o.scrollToBottom)},this.killLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText.substring(o.state.point)),o.setState({promptText:o.state.promptText.substring(0,o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]:t.unshift(o.state.promptText.substring(0,o.state.point)),o.setState({point:0,promptText:o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWholeLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText),o.setState({point:0,promptText:"",kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point,o.nextWord()):t.unshift(o.state.promptText.substring(o.state.point,o.nextWord())),o.setState({promptText:o.state.promptText.substring(0,o.state.point)+o.state.promptText.substring(o.nextWord()),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(o.previousWord(),o.state.point)+t[0]:t.unshift(o.state.promptText.substring(o.previousWord(),o.state.point)),o.setState({point:o.previousWord(),promptText:o.state.promptText.substring(0,o.previousWord())+o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.yank=function(){o.setState(Object.assign(o.consoleInsert(o.state.kill[o.state.killn]),{lastCommand:3}),o.scrollToBottom)},this.yankPop=function(){if(3==o.state.lastCommand){var t=o.rotateRing(1,o.state.killn,o.state.kill.length);o.setState(Object.assign(o.consoleInsert(o.state.kill[t],o.state.kill[o.state.killn].length),{killn:t,lastCommand:3}),o.scrollToBottom)}},this.complete=function(){if(o.props.complete){for(var t=o.state.promptText.split(" "),e=0,r=t[0].length;r1){var i=o.state.log;i.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[s.join("\t")]}]}),o.setState({currLabel:o.nextLabel(),log:i,argument:null,lastCommand:0},o.scrollToBottom)}}},this.prefixMeta=function(){1==o.state.lastCommand&&o.setState({argument:null,lastCommand:0})},this.cancelCommand=function(){if(o.state.acceptInput){o.child.typer.value="";var t=o.state.log;t.push({label:o.state.currLabel,command:o.state.promptText,message:[]}),o.setState({typer:"",point:0,promptText:"",restoreText:"",log:t,historyn:0,argument:null,lastCommand:0},o.scrollToBottom)}else o.props.cancel()},this.textInsert=function(t,e,o,r){return void 0===o&&(o=0),void 0===r&&(r=e.length),e.substring(0,r-o)+t+e.substring(r)},this.consoleInsert=function(t,e){void 0===e&&(e=0);var r=o.textInsert(t,o.state.promptText,e,o.state.point);return{point:o.movePoint(t.length-e,t.length-e+o.state.promptText.length),promptText:r,restoreText:r,argument:null,lastCommand:0}},this.movePoint=function(t,e){void 0===e&&(e=o.state.promptText.length);var r=o.state.point+t;return r<0?0:r>e?e:r},this.rotateRing=function(t,e,o,r){return void 0===r&&(r=!0),0==o?0:r?(o+(e+t)%o)%o:(e-=t,e<0?0:e>=o?o:e)},this.rotateHistory=function(t){var e=o.rotateRing(t,o.state.historyn,o.state.history.length,!1);if(0==e)o.setState({point:o.state.restoreText.length,promptText:o.state.restoreText,historyn:e,argument:null,lastCommand:0},o.scrollToBottom);else{var r=o.state.history[o.state.history.length-e];o.setState({point:r.length,promptText:r,historyn:e,argument:null,lastCommand:0},o.scrollToBottom)}},this.searchHistory=function(t,e){void 0===t&&(t=o.state.searchDirection),void 0===e&&(e=!1);var r=o.state.historyn,s=0==t?1:-1;for(e&&(r+=s);r>0&&r<=o.state.history.length;r+=s){var n=o.state.history[o.state.history.length-r],a=n.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:n,searchDirection:t,searchInit:!1,historyn:r}}return{searchDirection:t,searchInit:!1}},this.scrollSemaphore=0,this.scrollIfBottom=function(){return o.scrollSemaphore>0||o.child.container.scrollTop==o.child.container.scrollHeight-o.child.container.offsetHeight?(o.scrollSemaphore++,o.scrollIfBottomTrue):null},this.scrollIfBottomTrue=function(){o.scrollToBottom(),o.scrollSemaphore--},this.scrollToBottom=function(){o.child.container.scrollTop=o.child.container.scrollHeight;var t=o.child.focus.getBoundingClientRect();(t.top<0||t.left<0||t.bottom>(window.innerHeight||document.documentElement.clientHeight)||t.right>(window.innerWidth||document.documentElement.clientWidth))&&o.child.typer.scrollIntoView(!1)},this.nextLabel=function(){return"string"==typeof o.props.promptLabel?o.props.promptLabel:o.props.promptLabel()},this.state={focus:!1,acceptInput:!0,typer:"",point:0,currLabel:this.nextLabel(),promptText:"",restoreText:"",searchText:"",searchDirection:null,searchInit:!1,log:[],history:[],historyn:0,kill:[],killn:0,argument:null,lastCommand:0}}return r(e,t),e.prototype.componentDidMount=function(){this.props.autofocus&&this.focus()},e.prototype.nextWord=function(){var t=/\W\w/.exec(this.state.promptText.substring(this.state.point));return t?t.index+this.state.point+1:this.state.promptText.length},e.prototype.previousWord=function(){var t=/\W\w(?!.*\W\w)/.exec(this.state.promptText.substring(0,this.state.point-1));return t?t.index+1:0},e.prototype.render=function(){var t=this;return s.createElement("div",{ref:function(e){return t.child.container=e},className:"react-console-container "+(this.state.focus?"react-console-focus":"react-console-nofocus"),onClick:this.focus},this.props.welcomeMessage?s.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[s.createElement(n,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return s.createElement(a,{key:e,type:t.type,value:t.value})}))}),this.state.acceptInput?s.createElement(n,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,s.createElement("div",{style:{overflow:"hidden",height:1,width:1}},s.createElement("textarea",{ref:function(e){return t.child.typer=e},className:"react-console-typer",autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",style:{outline:"none",color:"transparent",backgroundColor:"transparent",border:"none",resize:"none",overflow:"hidden"},onBlur:this.blur,onKeyDown:this.keyDown,onChange:this.change,onPaste:this.paste})),s.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(s.Component);Object.defineProperty(e,"__esModule",{value:!0}),e.default=i},function(t,e){},function(t,e){t.exports=React}]); +var Console=function(t){function e(r){if(o[r])return o[r].exports;var n=o[r]={exports:{},id:r,loaded:!1};return t[r].call(n.exports,n,n.exports,e),n.loaded=!0,n.exports}var o={};return e.m=t,e.c=o,e.p="",e(0)}([function(t,e,o){"use strict";var r=this&&this.__extends||function(t,e){function o(){this.constructor=t}for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)},n=o(2);o(1);var s=function(t){function e(){t.apply(this,arguments),this.child={},this.updateSemaphore=0}return r(e,t),e.prototype.componentDidMount=function(){this.idle()},e.prototype.componentDidUpdate=function(){this.idle()},e.prototype.idle=function(){var t=this;this.child.cursor&&(0==this.updateSemaphore&&(this.child.cursor.className="react-console-cursor"),this.updateSemaphore++,window.setTimeout(function(){t.updateSemaphore--,0==t.updateSemaphore&&t.child.cursor&&(t.child.cursor.className="react-console-cursor react-console-cursor-idle")},1e3))},e.prototype.renderValue=function(){var t=this;return this.props.point<0?[this.props.value]:this.props.point==this.props.value.length?[this.props.value,n.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"}," ")]:[this.props.value.substring(0,this.props.point),n.createElement("span",{ref:function(e){return t.child.cursor=e},key:"cursor",className:"react-console-cursor"},this.props.value.substring(this.props.point,this.props.point+1)),this.props.value.substring(this.props.point+1)]},e.prototype.render=function(){var t=this.props.label;if(this.props.argument){var e=t.lastIndexOf("\n");t=e>=0?t.substring(0,e+1):""}return n.createElement("div",{className:"react-console-prompt-box"},n.createElement("span",{className:"react-console-prompt-label"},t),n.createElement("span",{className:"react-console-prompt-argument"},this.props.argument),n.createElement("span",{className:"react-console-prompt"},this.renderValue()))},e.defaultProps={point:-1,value:"",label:"> ",argument:null},e}(n.Component),a=function(t){return t.headers?n.createElement("thead",null,n.createElement("tr",null,t.headers.map(function(t){return n.createElement("th",{scope:"col",key:t},t)}))):null},i=function(t){if(t.isTable){var e=t.value[0];return n.createElement("div",{className:"react-console-message react-console-table"},n.createElement("table",null,n.createElement(a,{headers:e.headers}),n.createElement("tbody",null,e.rows&&e.rows.map(function(t,e){return n.createElement("tr",{key:e},t.map(function(t,e){return n.createElement("td",{key:e},t)}))}))))}return n.createElement("div",{className:"react-console-message"+(t.type?" react-console-message-"+t.type:"")},t.value.map(function(t){return"string"==typeof t?t:JSON.stringify(t)}).join("\n"))};i.defaultProps={type:null,value:[],isTable:!1};var l=function(t){function e(e){var o=this;t.call(this,e),this.child={},this.log=function(){for(var t=[],e=0;e0&&o.setState({point:o.movePoint(-1),promptText:o.state.promptText.substring(0,o.state.point-1)+o.state.promptText.substring(o.state.point),argument:null,lastCommand:0},o.scrollToBottom)},this.killLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText.substring(o.state.point)),o.setState({promptText:o.state.promptText.substring(0,o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]:t.unshift(o.state.promptText.substring(0,o.state.point)),o.setState({point:0,promptText:o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWholeLine=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(0,o.state.point)+t[0]+o.state.promptText.substring(o.state.point):t.unshift(o.state.promptText),o.setState({point:0,promptText:"",kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.killWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=t[0]+o.state.promptText.substring(o.state.point,o.nextWord()):t.unshift(o.state.promptText.substring(o.state.point,o.nextWord())),o.setState({promptText:o.state.promptText.substring(0,o.state.point)+o.state.promptText.substring(o.nextWord()),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.backwardKillWord=function(){var t=o.state.kill;2==o.state.lastCommand?t[0]=o.state.promptText.substring(o.previousWord(),o.state.point)+t[0]:t.unshift(o.state.promptText.substring(o.previousWord(),o.state.point)),o.setState({point:o.previousWord(),promptText:o.state.promptText.substring(0,o.previousWord())+o.state.promptText.substring(o.state.point),kill:t,killn:0,argument:null,lastCommand:2},o.scrollToBottom)},this.yank=function(){o.setState(Object.assign(o.consoleInsert(o.state.kill[o.state.killn]),{lastCommand:3}),o.scrollToBottom)},this.yankPop=function(){if(3==o.state.lastCommand){var t=o.rotateRing(1,o.state.killn,o.state.kill.length);o.setState(Object.assign(o.consoleInsert(o.state.kill[t],o.state.kill[o.state.killn].length),{killn:t,lastCommand:3}),o.scrollToBottom)}},this.complete=function(){if(o.props.complete){for(var t=o.state.promptText.split(" "),e=0,r=t[0].length;r1){var i=o.state.log;i.push({label:o.state.currLabel,command:o.state.promptText,message:[{type:"completion",value:[n.join("\t")]}]}),o.setState({currLabel:o.nextLabel(),log:i,argument:null,lastCommand:0},o.scrollToBottom)}}},this.prefixMeta=function(){1==o.state.lastCommand&&o.setState({argument:null,lastCommand:0})},this.cancelCommand=function(){if(o.state.acceptInput){o.child.typer.value="";var t=o.state.log;t.push({label:o.state.currLabel,command:o.state.promptText,message:[]}),o.setState({typer:"",point:0,promptText:"",restoreText:"",log:t,historyn:0,argument:null,lastCommand:0},o.scrollToBottom)}else o.props.cancel()},this.textInsert=function(t,e,o,r){return void 0===o&&(o=0),void 0===r&&(r=e.length),e.substring(0,r-o)+t+e.substring(r)},this.consoleInsert=function(t,e){void 0===e&&(e=0);var r=o.textInsert(t,o.state.promptText,e,o.state.point);return{point:o.movePoint(t.length-e,t.length-e+o.state.promptText.length),promptText:r,restoreText:r,argument:null,lastCommand:0}},this.movePoint=function(t,e){void 0===e&&(e=o.state.promptText.length);var r=o.state.point+t;return r<0?0:r>e?e:r},this.rotateRing=function(t,e,o,r){return void 0===r&&(r=!0),0==o?0:r?(o+(e+t)%o)%o:(e-=t,e<0?0:e>=o?o:e)},this.rotateHistory=function(t){var e=o.rotateRing(t,o.state.historyn,o.state.history.length,!1);if(0==e)o.setState({point:o.state.restoreText.length,promptText:o.state.restoreText,historyn:e,argument:null,lastCommand:0},o.scrollToBottom);else{var r=o.state.history[o.state.history.length-e];o.setState({point:r.length,promptText:r,historyn:e,argument:null,lastCommand:0},o.scrollToBottom)}},this.searchHistory=function(t,e){void 0===t&&(t=o.state.searchDirection),void 0===e&&(e=!1);var r=o.state.historyn,n=0==t?1:-1;for(e&&(r+=n);r>0&&r<=o.state.history.length;r+=n){var s=o.state.history[o.state.history.length-r],a=s.indexOf(o.state.searchText);if(a>-1)return{point:a,promptText:s,searchDirection:t,searchInit:!1,historyn:r}}return{searchDirection:t,searchInit:!1}},this.scrollSemaphore=0,this.scrollIfBottom=function(){return o.scrollSemaphore>0||o.child.container.scrollTop==o.child.container.scrollHeight-o.child.container.offsetHeight?(o.scrollSemaphore++,o.scrollIfBottomTrue):null},this.scrollIfBottomTrue=function(){o.scrollToBottom(),o.scrollSemaphore--},this.scrollToBottom=function(){o.child.container.scrollTop=o.child.container.scrollHeight;var t=o.child.focus.getBoundingClientRect();(t.top<0||t.left<0||t.bottom>(window.innerHeight||document.documentElement.clientHeight)||t.right>(window.innerWidth||document.documentElement.clientWidth))&&o.child.typer.scrollIntoView(!1)},this.nextLabel=function(){return"string"==typeof o.props.promptLabel?o.props.promptLabel:o.props.promptLabel()},this.state={focus:!1,acceptInput:!0,typer:"",point:0,currLabel:this.nextLabel(),promptText:"",restoreText:"",searchText:"",searchDirection:null,searchInit:!1,log:[],history:[],historyn:0,kill:[],killn:0,argument:null,lastCommand:0}}return r(e,t),e.prototype.componentDidMount=function(){this.props.autofocus&&this.focus()},e.prototype.nextWord=function(){var t=/\W\w/.exec(this.state.promptText.substring(this.state.point));return t?t.index+this.state.point+1:this.state.promptText.length},e.prototype.previousWord=function(){var t=/\W\w(?!.*\W\w)/.exec(this.state.promptText.substring(0,this.state.point-1));return t?t.index+1:0},e.prototype.render=function(){var t=this;return n.createElement("div",{ref:function(e){return t.child.container=e},className:"react-console-container "+(this.state.focus?"react-console-focus":"react-console-nofocus"),onClick:this.focus},this.props.welcomeMessage?n.createElement("div",{className:"react-console-message react-console-welcome"},this.props.welcomeMessage):null,this.state.log.map(function(t){return[n.createElement(s,{label:t.label,value:t.command})].concat(t.message.map(function(t,e){return n.createElement(i,{key:e,type:t.type,value:t.value,isTable:t.isTable})}))}),this.state.acceptInput?n.createElement(s,{label:this.state.currLabel,value:this.state.promptText,point:this.state.point,argument:this.state.argument}):null,n.createElement("div",{style:{overflow:"hidden",height:1,width:1}},n.createElement("textarea",{ref:function(e){return t.child.typer=e},className:"react-console-typer",autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:"false",style:{outline:"none",color:"transparent",backgroundColor:"transparent",border:"none",resize:"none",overflow:"hidden"},onBlur:this.blur,onKeyDown:this.keyDown,onChange:this.change,onPaste:this.paste})),n.createElement("div",{ref:function(e){return t.child.focus=e}}," "))},e.defaultProps={promptLabel:"> ",continue:function(){return!1},cancel:function(){}},e}(n.Component);Object.defineProperty(e,"__esModule",{value:!0}),e.default=l},function(t,e){},function(t,e){t.exports=React}]); //# 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 200497a..d50cc8d 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 f59adf676ff7a2cc770a","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","ConsoleMessage","type","map","val","JSON","stringify","join","default_1","log","messages","_i","state","message","push","setState","scrollIfBottom","logX","return","acceptInput","currLabel","nextLabel","focus","getSelection","toString","typer","scrollToBottom","blur","keyDown","e","keyCodes","13","acceptLine","37","backwardChar","39","forwardChar","38","previousHistory","40","nextHistory","8","backwardDeleteChar","46","deleteChar","35","endOfLine","36","beginningOfLine","9","complete","27","prefixMeta","ctrlCodes","65","69","70","66","76","clearScreen","80","78","82","reverseSearchHistory","83","forwardSearchHistory","68","75","killLine","85","backwardKillLine","89","yank","67","cancelCommand","metaCodes","forwardWord","backwardWord","nonIncrementalReverseSearchHistory","nonIncrementalForwardSearchHistory","190","yankLastArg","killWord","backwardKillWord","yankPop","metaShiftCodes","188","beginningOfHistory","endOfHistory","189","metaCtrlCodes","yankNthArg","altKey","ctrlKey","keyCode","preventDefault","shiftKey","change","insert","replace","lastCommand","searchText","searchInit","textInsert","triggerSearch","assign","consoleInsert","paste","clipboardData","getData","promptText","movePoint","nextWord","previousWord","continue","command_1","history_1","history","command","restoreText","historyn","handler","rotateHistory","searchDirection","searchHistory","historySearchBackward","historySearchForward","historySubstringSearchBackward","historySubstringSearchForward","kill","unshift","killn","killWholeLine","rotateRing","words","split","curr","completions","i","cancel","text","n","max","pos","ringn","ring","circular","direction","next","inc","entry","indexOf","scrollSemaphore","container","scrollTop","scrollHeight","offsetHeight","scrollIfBottomTrue","rect","getBoundingClientRect","top","left","bottom","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollIntoView","promptLabel","autofocus","search","exec","index","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,WAmE9BC,EAAiD,SAASf,GAC7D,MAAOhB,GAAAoB,cAAA,OAAKR,UAAW,yBAA2BI,EAAMgB,KAAK,0BAA0BhB,EAAMgB,KAAK,KAChGhB,EAAME,MAAMe,IAAI,SAACC,GACjB,MAAiB,gBAAPA,GACFA,EAEAC,KAAKC,UAAUF,KAErBG,KAAK,OAGVN,GAAeF,cACdG,KAAM,KACNd,SAmDD,IAAAoB,GAAA,SAAApC,GACC,QAAAoC,GAAYtB,GADb,GAAAN,GAAAnB,IAEEW,GAAAhB,KAAAK,KAAMyB,GA0BPzB,KAAAc,SAMAd,KAAAgD,IAAM,WF/BM,IE+BL,GAAAC,MAAAC,EAAA,EAAAA,EAAArC,UAAAe,OAAAsB,IAAAD,EAAAC,EAAA,GAAArC,UAAAqC,EACN,IAAIF,GAAM7B,EAAKgC,MAAMH,GACrBA,GAAI7B,EAAKgC,MAAMH,IAAIpB,OAAO,GAAGwB,QAAQC,MAAM1B,MAAOsB,IAClD9B,EAAKmC,UACJN,IAAKA,GACH7B,EAAKoC,mBAETvD,KAAAwD,KAAO,SAACf,GF3BI,IE2BU,GAAAQ,MAAAC,EAAA,EAAAA,EAAArC,UAAAe,OAAAsB,IAAAD,EAAAC,EAAA,GAAArC,UAAAqC,EACrB,IAAIF,GAAM7B,EAAKgC,MAAMH,GACrBA,GAAI7B,EAAKgC,MAAMH,IAAIpB,OAAO,GAAGwB,QAAQC,MAAMZ,KAAMA,EAAMd,MAAOsB,IAC9D9B,EAAKmC,UACJN,IAAKA,GACH7B,EAAKoC,mBAETvD,KAAAyD,OAAS,WACRtC,EAAKmC,UACJI,aAAa,EACbC,UAAWxC,EAAKyC,aACdzC,EAAKoC,mBASTvD,KAAA6D,MAAQ,WACHvC,OAAOwC,eAAeC,aACzB5C,EAAKL,MAAMkD,MAAMH,QACjB1C,EAAKmC,UAAWO,OAAO,GAAQ1C,EAAK8C,kBAGtCjE,KAAAkE,KAAO,WACN/C,EAAKmC,UAAWO,OAAO,KAExB7D,KAAAmE,QAAU,SAACC,GAIV,GAAIC,IAEHC,GAAInD,EAAKoD,WAETC,GAAIrD,EAAKsD,aAETC,GAAIvD,EAAKwD,YAETC,GAAIzD,EAAK0D,gBAETC,GAAI3D,EAAK4D,YAETC,EAAI7D,EAAK8D,mBAETC,GAAI/D,EAAKgE,WAETC,GAAIjE,EAAKkE,UAETC,GAAInE,EAAKoE,gBAETC,EAAGrE,EAAKsE,SAERC,GAAIvE,EAAKwE,YAENC,GAEHC,GAAI1E,EAAKoE,gBAETO,GAAI3E,EAAKkE,UAETU,GAAI5E,EAAKwD,YAETqB,GAAI7E,EAAKsD,aAETwB,GAAI9E,EAAK+E,YAETC,GAAIhF,EAAK0D,gBAETuB,GAAIjF,EAAK4D,YAETsB,GAAIlF,EAAKmF,qBAETC,GAAIpF,EAAKqF,qBAETC,GAAItF,EAAKgE,WAQTuB,GAAIvF,EAAKwF,SAETC,GAAIzF,EAAK0F,iBAETC,GAAI3F,EAAK4F,KAETC,GAAI7F,EAAK8F,eA4BNC,IAlBHlC,EAAG7D,EAAK0F,mBAoBRd,GAAI5E,EAAKgG,YAETnB,GAAI7E,EAAKiG,aAETjB,GAAIhF,EAAKkG,mCAETjB,GAAIjF,EAAKmG,mCAETC,IAAKpG,EAAKqG,YAYVf,GAAItF,EAAKsG,SAETzC,EAAG7D,EAAKuG,iBAMRZ,GAAI3F,EAAKwG,UA8BNC,GAEHC,IAAK1G,EAAK2G,mBAEVP,IAAKpG,EAAK4G,aAEVC,IAAK7G,EAAKqG,aAMPS,GAEHnB,GAAI3F,EAAK+G,WAMP/G,GAAKgC,MAAMO,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,oBAILtI,KAAAwI,OAAS,WAER,IADA,GAAIpG,GAAM,EACLA,EAAMjB,EAAKgC,MAAMa,MAAMpC,QAAUQ,EAAMjB,EAAKL,MAAMkD,MAAMrC,MAAMC,QAC/DT,EAAKgC,MAAMa,MAAM5B,IAAQjB,EAAKL,MAAMkD,MAAMrC,MAAMS,GADuBA,KAK3E,GAAIqG,GAAStH,EAAKL,MAAMkD,MAAMrC,MAAMK,UAAUI,GAC1CsG,EAAUvH,EAAKgC,MAAMa,MAAMpC,OAASQ,CACX,IAA1BjB,EAAKgC,MAAMwF,YACbxH,EAAKmC,UACJsF,WAAYzH,EAAKgC,MAAM0F,WAAWJ,EAAOtH,EAAK2H,WAAWL,EAAQtH,EAAKgC,MAAMyF,WAAYF,GACxF1E,MAAO7C,EAAKL,MAAMkD,MAAMrC,OACtBR,EAAK4H,eAER5H,EAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAK8H,cAAcR,EAAQC,IAC1B1E,MAAO7C,EAAKL,MAAMkD,MAAMrC,MACxBgH,YAAa,IACVxH,EAAK8C,iBAIZjE,KAAAkJ,MAAQ,SAAC9E,GACR,GAAIqE,GAASrE,EAAE+E,cAAcC,QAAQ,OACR,IAA1BjI,EAAKgC,MAAMwF,YACbxH,EAAKmC,UACJsF,WAAYzH,EAAKgC,MAAM0F,WAAWJ,EAAOtH,EAAK2H,WAAWL,EAAQtH,EAAKgC,MAAMyF,YAC5E5E,MAAO7C,EAAKL,MAAMkD,MAAMrC,OACtBR,EAAK4H,eAER5H,EAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAK8H,cAAcR,IAClBE,YAAa,IACVxH,EAAK8C,gBAGXG,EAAEkE,kBAGHtI,KAAAuF,gBAAkB,WACjBpE,EAAKmC,UACJ5B,MAAO,EACPS,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAAqF,UAAY,WACXlE,EAAKmC,UACJ5B,MAAOP,EAAKgC,MAAMkG,WAAWzH,OAC7BO,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAA2E,YAAc,WACbxD,EAAKmC,UACJ5B,MAAOP,EAAKmI,UAAU,GACtBnH,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAAyE,aAAe,WACdtD,EAAKmC,UACJ5B,MAAOP,EAAKmI,WAAU,GACtBnH,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAAmH,YAAc,WACbhG,EAAKmC,UACJ5B,MAAOP,EAAKoI,WACZpH,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAAoH,aAAe,WACdjG,EAAKmC,UACJ5B,MAAOP,EAAKqI,eACZrH,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAGTjE,KAAAuE,WAAa,WAEZ,GADApD,EAAKL,MAAMkD,MAAMrC,MAAQ,GACtBR,EAAKM,MAAMgI,SAAStI,EAAKgC,MAAMkG,YACjClI,EAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAK8H,cAAc,OAClBjF,MAAO,GACP2E,YAAa,IACVxH,EAAK8C,oBAEJ,CACN,GAAIyF,GAAUvI,EAAKgC,MAAMkG,WACrBM,EAAUxI,EAAKgC,MAAMyG,QACrB5G,EAAM7B,EAAKgC,MAAMH,GACjB2G,IAAWA,EAAQA,EAAQ/H,OAAO,IAAM8H,GAC3CC,EAAQtG,KAAKqG,GAEd1G,EAAIK,MACHnB,MAAOf,EAAKgC,MAAMQ,UAClBkG,QAASH,EACTtG,aAEDjC,EAAKmC,UACJI,aAAa,EACbM,MAAO,GACPtC,MAAO,EACP2H,WAAY,GACZS,YAAa,GACb9G,IAAKA,EACL4G,QAASD,EACTI,SAAU,EACV5H,SAAU,KACVwG,YAAa,GACX,WACFxH,EAAK8C,iBACF9C,EAAKM,MAAMuI,QACb7I,EAAKM,MAAMuI,QAAQN,GAEnBvI,EAAKsC,aAKTzD,KAAA6E,gBAAkB,WACjB1D,EAAK8I,eAAc,IAEpBjK,KAAA+E,YAAc,WACb5D,EAAK8I,cAAc,IAEpBjK,KAAA8H,mBAAqB,WACpB3G,EAAK8I,eAAe9I,EAAKgC,MAAMyG,QAAQhI,SAExC5B,KAAA+H,aAAe,WACd5G,EAAK8I,cAAc9I,EAAKgC,MAAMyG,QAAQhI,SAEvC5B,KAAA+I,cAAgB,WACkB,GAA9B5H,EAAKgC,MAAM+G,gBACb/I,EAAKmF,uBAELnF,EAAKqF,wBAGPxG,KAAAsG,qBAAuB,WACO,GAA1BnF,EAAKgC,MAAMwF,YACbxH,EAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAKgJ,cAAc,GAAyB,IAC3ChI,SAAU,sBAAuBhB,EAAKgC,MAAMyF,WAAU,MACtDD,YAAa,IACVxH,EAAK8C,gBAGV9C,EAAKmC,UACJ4G,gBAAiB,EACjBrB,YAAY,EACZ1G,SAAU,yBACVwG,YAAa,GACXxH,EAAK8C,iBAGVjE,KAAAwG,qBAAuB,WACO,GAA1BrF,EAAKgC,MAAMwF,YACbxH,EAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAKgJ,cAAc,GAAyB,IAC3ChI,SAAU,sBAAuBhB,EAAKgC,MAAMyF,WAAU,MACtDD,YAAa,IACVxH,EAAK8C,gBAGV9C,EAAKmC,UACJ4G,gBAAiB,EACjBrB,YAAY,EACZ1G,SAAU,yBACVwG,YAAa,GACXxH,EAAK8C,iBAGVjE,KAAAkG,YAAc,WACb/E,EAAKmC,UAAWN,UAEjBhD,KAAAqH,mCAAqC,aAGrCrH,KAAAsH,mCAAqC,aAGrCtH,KAAAoK,sBAAwB,aAGxBpK,KAAAqK,qBAAuB,aAGvBrK,KAAAsK,+BAAiC,aAGjCtK,KAAAuK,8BAAgC,aAGhCvK,KAAAkI,WAAa,aAGblI,KAAAwH,YAAc,aAIdxH,KAAAmF,WAAa,WACThE,EAAKgC,MAAMzB,MAAQP,EAAKgC,MAAMkG,WAAWzH,QAC3CT,EAAKmC,UACJ+F,WAAYlI,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,OACtDP,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,MAAM,GACpDS,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAGVjE,KAAAiF,mBAAqB,WACS,GAA1B9D,EAAKgC,MAAMwF,YACbxH,EAAKmC,UACJsF,WAAYzH,EAAKgC,MAAMyF,WAAW5G,UAAU,EAAEb,EAAKgC,MAAMyF,WAAWhH,OAAO,GAC3EoC,MAAO7C,EAAKL,MAAMkD,MAAMrC,OACtBR,EAAK4H,eACC5H,EAAKgC,MAAMzB,MAAQ,GAC5BP,EAAKmC,UACJ5B,MAAOP,EAAKmI,WAAU,GACtBD,WAAYlI,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,MAAM,GAC5DP,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,OAC9CS,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAIVjE,KAAA2G,SAAW,WACV,GAAI6D,GAAOrJ,EAAKgC,MAAMqH,IACO,IAA1BrJ,EAAKgC,MAAMwF,YACb6B,EAAK,GAAKA,EAAK,GAAKrJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,OAE/D8I,EAAKC,QAAQtJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,QAEzDP,EAAKmC,UACJ+F,WAAYlI,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,OACzD8I,KAAMA,EACNE,MAAO,EACPvI,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAA6G,iBAAmB,WAClB,GAAI2D,GAAOrJ,EAAKgC,MAAMqH,IACO,IAA1BrJ,EAAKgC,MAAMwF,YACb6B,EAAK,GAAKrJ,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,OAAS8I,EAAK,GAErEA,EAAKC,QAAQtJ,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,QAE3DP,EAAKmC,UACJ5B,MAAO,EACP2H,WAAYlI,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,OACvD8I,KAAMA,EACNE,MAAO,EACPvI,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAA2K,cAAgB,WACf,GAAIH,GAAOrJ,EAAKgC,MAAMqH,IACO,IAA1BrJ,EAAKgC,MAAMwF,YACb6B,EAAK,GAAKrJ,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,OACpD8I,EAAK,GAAKrJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,OAExD8I,EAAKC,QAAQtJ,EAAKgC,MAAMkG,YAEzBlI,EAAKmC,UACJ5B,MAAO,EACP2H,WAAY,GACZmB,KAAMA,EACNE,MAAO,EACPvI,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAAyH,SAAW,WACV,GAAI+C,GAAOrJ,EAAKgC,MAAMqH,IACO,IAA1BrJ,EAAKgC,MAAMwF,YACb6B,EAAK,GAAKA,EAAK,GAAKrJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,MAAMP,EAAKoI,YAE1EiB,EAAKC,QAAQtJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,MAAMP,EAAKoI,aAEpEpI,EAAKmC,UACJ+F,WAAYlI,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKgC,MAAMzB,OACtDP,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKoI,YACxCiB,KAAMA,EACNE,MAAO,EACPvI,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAA0H,iBAAmB,WAClB,GAAI8C,GAAOrJ,EAAKgC,MAAMqH,IACO,IAA1BrJ,EAAKgC,MAAMwF,YACb6B,EAAK,GAAKrJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKqI,eAAerI,EAAKgC,MAAMzB,OAAS8I,EAAK,GAEvFA,EAAKC,QAAQtJ,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKqI,eAAerI,EAAKgC,MAAMzB,QAE7EP,EAAKmC,UACJ5B,MAAOP,EAAKqI,eACZH,WAAYlI,EAAKgC,MAAMkG,WAAWrH,UAAU,EAAEb,EAAKqI,gBAChDrI,EAAKgC,MAAMkG,WAAWrH,UAAUb,EAAKgC,MAAMzB,OAC9C8I,KAAMA,EACNE,MAAO,EACPvI,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,iBAETjE,KAAA+G,KAAO,WACN5F,EAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAK8H,cAAc9H,EAAKgC,MAAMqH,KAAKrJ,EAAKgC,MAAMuH,SAC7C/B,YAAa,IACVxH,EAAK8C,iBAGXjE,KAAA2H,QAAU,WACT,GAA6B,GAA1BxG,EAAKgC,MAAMwF,YAAoC,CACjD,GAAI+B,GAAQvJ,EAAKyJ,WAAW,EAAGzJ,EAAKgC,MAAMuH,MAAOvJ,EAAKgC,MAAMqH,KAAK5I,OACjET,GAAKmC,SAAS/C,OAAOyI,OACpB7H,EAAK8H,cAAc9H,EAAKgC,MAAMqH,KAAKE,GAAQvJ,EAAKgC,MAAMqH,KAAKrJ,EAAKgC,MAAMuH,OAAO9I,SAC5E8I,MAAOA,EACP/B,YAAa,IACVxH,EAAK8C,kBAMZjE,KAAAyF,SAAW,WACV,GAAGtE,EAAKM,MAAMgE,SAAU,CAKvB,IAHA,GAAIoF,GAAQ1J,EAAKgC,MAAMkG,WAAWyB,MAAM,KACpCC,EAAO,EACP3I,EAAMyI,EAAM,GAAGjJ,OACbQ,EAAMjB,EAAKgC,MAAMzB,OAASqJ,EAAO,EAAIF,EAAMjJ,QAChDQ,GAAOyI,IAAQE,GAAMnJ,OAAS,CAG/B,IAAIoJ,GAAc7J,EAAKM,MAAMgE,SAASoF,EAAOE,EAAM5J,EAAKgC,MAAMkG,WAC9D,IAAyB,GAAtB2B,EAAYpJ,OAAa,CAE3BiJ,EAAME,GAAQC,EAAY,EAE1B,KAAI,GADAtJ,IAAQ,EACJuJ,EAAI,EAAGA,GAAKF,EAAME,IACzBvJ,GAASmJ,EAAMI,GAAGrJ,OAAS,CAE5BT,GAAKmC,UACJ5B,MAAOA,EACP2H,WAAYwB,EAAM/H,KAAK,KACvBX,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,oBACF,IAAI+G,EAAYpJ,OAAS,EAAG,CAElC,GAAIoB,GAAM7B,EAAKgC,MAAMH,GACrBA,GAAIK,MACHnB,MAAOf,EAAKgC,MAAMQ,UAClBkG,QAAS1I,EAAKgC,MAAMkG,WACpBjG,UACCX,KAAM,aACNd,OAAQqJ,EAAYlI,KAAK,WAG3B3B,EAAKmC,UACJK,UAAWxC,EAAKyC,YAChBZ,IAAKA,EACLb,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,mBAMXjE,KAAA2F,WAAa,WACiB,GAA1BxE,EAAKgC,MAAMwF,aACbxH,EAAKmC,UACJnB,SAAU,KACVwG,YAAa,KAKhB3I,KAAAiH,cAAgB,WACf,GAAG9F,EAAKgC,MAAMO,YAAa,CAC1BvC,EAAKL,MAAMkD,MAAMrC,MAAQ,EACzB,IAAIqB,GAAM7B,EAAKgC,MAAMH,GACrBA,GAAIK,MACHnB,MAAOf,EAAKgC,MAAMQ,UAClBkG,QAAS1I,EAAKgC,MAAMkG,WACpBjG,aAEDjC,EAAKmC,UACJU,MAAO,GACPtC,MAAO,EACP2H,WAAY,GACZS,YAAa,GACb9G,IAAKA,EACL+G,SAAU,EACV5H,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,oBAER9C,GAAKM,MAAMyJ,UAIblL,KAAA8I,WAAa,SAACL,EAAgB0C,EAAczC,EAAqBhH,GAChE,MAD2C,UAAAgH,MAAA,GAAqB,SAAAhH,MAAgByJ,EAAKvJ,QAC9EuJ,EAAKnJ,UAAU,EAAGN,EAAQgH,GAAWD,EAAS0C,EAAKnJ,UAAUN,IAErE1B,KAAAiJ,cAAgB,SAACR,EAAgBC,GAAA,SAAAA,MAAA,EAChC,IAAIW,GAAalI,EAAK2H,WAAWL,EAAQtH,EAAKgC,MAAMkG,WAAYX,EAASvH,EAAKgC,MAAMzB,MACpF,QACCA,MAAOP,EAAKmI,UAAUb,EAAO7G,OAAS8G,EAASD,EAAO7G,OAAS8G,EAAUvH,EAAKgC,MAAMkG,WAAWzH,QAC/FyH,WAAYA,EACZS,YAAaT,EACblH,SAAU,KACVwG,YAAa,IAGf3I,KAAAsJ,UAAY,SAAC8B,EAAWC,GAAA,SAAAA,MAAclK,EAAKgC,MAAMkG,WAAWzH,OAC3D,IAAI0J,GAAMnK,EAAKgC,MAAMzB,MAAQ0J,CAC7B,OAAIE,GAAM,EACF,EACFA,EAAMD,EACJA,EAEAC,GAqBTtL,KAAA4K,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,IAIVvL,KAAAiK,cAAgB,SAACmB,GAChB,GAAIrB,GAAW5I,EAAKyJ,WAAWQ,EAAGjK,EAAKgC,MAAM4G,SAAU5I,EAAKgC,MAAMyG,QAAQhI,QAAQ,EAClF,IAAe,GAAZmI,EACF5I,EAAKmC,UACJ5B,MAAOP,EAAKgC,MAAM2G,YAAYlI,OAC9ByH,WAAYlI,EAAKgC,MAAM2G,YACvBC,SAAUA,EACV5H,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,oBACF,CACN,GAAIoF,GAAalI,EAAKgC,MAAMyG,QAAQzI,EAAKgC,MAAMyG,QAAQhI,OAAOmI,EAC9D5I,GAAKmC,UACJ5B,MAAO2H,EAAWzH,OAClByH,WAAYA,EACZU,SAAUA,EACV5H,SAAU,KACVwG,YAAa,GACXxH,EAAK8C,kBAGVjE,KAAAmK,cAAgB,SAACuB,EAAyDC,GAAzD,SAAAD,MAA6BvK,EAAKgC,MAAM+G,iBAAiB,SAAAyB,OAAA,EACzE,IAAIvJ,GAAMjB,EAAKgC,MAAM4G,SACjB6B,EAAoB,GAAbF,EAAsC,GAAE,CAInD,KAHGC,IACFvJ,GAAYwJ,GAERxJ,EAAM,GAAKA,GAAOjB,EAAKgC,MAAMyG,QAAQhI,OAAQQ,GAAYwJ,EAAK,CAClE,GAAIC,GAAQ1K,EAAKgC,MAAMyG,QAAQzI,EAAKgC,MAAMyG,QAAQhI,OAAOQ,GACrDV,EAAQmK,EAAMC,QAAQ3K,EAAKgC,MAAMyF,WACrC,IAAGlH,GAAQ,EACV,OACCA,MAAOA,EACP2H,WAAYwC,EACZ3B,gBAAiBwB,EACjB7C,YAAY,EACZkB,SAAU3H,GAIb,OACC8H,gBAAiBwB,EACjB7C,YAAY,IAId7I,KAAA+L,gBAAkB,EAClB/L,KAAAuD,eAAiB,WAChB,MAAGpC,GAAK4K,gBAAkB,GAAK5K,EAAKL,MAAMkL,UAAUC,WAAa9K,EAAKL,MAAMkL,UAAUE,aAAe/K,EAAKL,MAAMkL,UAAUG,cACzHhL,EAAK4K,kBACE5K,EAAKiL,oBAEL,MAGTpM,KAAAoM,mBAAqB,WACpBjL,EAAK8C,iBACL9C,EAAK4K,mBAEN/L,KAAAiE,eAAiB,WAChB9C,EAAKL,MAAMkL,UAAUC,UAAY9K,EAAKL,MAAMkL,UAAUE,YACtD,IAAIG,GAAOlL,EAAKL,MAAM+C,MAAMyI,yBACzBD,EAAKE,IAAM,GAAKF,EAAKG,KAAO,GAC9BH,EAAKI,QAAUnL,OAAOoL,aAAeC,SAASC,gBAAgBC,eAC9DR,EAAKS,OAASxL,OAAOyL,YAAcJ,SAASC,gBAAgBI,eACzD7L,EAAKL,MAAMkD,MAAMiJ,gBAAe,IAErCjN,KAAA4D,UAAY,WACX,MAAqC,gBAA3BzC,GAAKM,MAAMyL,YACb/L,EAAKM,MAAMyL,YAEV/L,EAAKM,MAAMyL,eAtyBpBlN,KAAKmD,OACJU,OAAO,EACPH,aAAa,EACbM,MAAO,GACPtC,MAAO,EACPiC,UAAW3D,KAAK4D,YAChByF,WAAY,GACZS,YAAa,GACblB,WAAY,GACZsB,gBAAiB,KACjBrB,YAAY,EACZ7F,OACA4G,WACAG,SAAU,EACVS,QACAE,MAAO,EACPvI,SAAU,KACVwG,YAAa,GA40BhB,MAh2B6B5I,GAAAgD,EAAApC,GAuD5BoC,EAAAzC,UAAAU,kBAAA,WACIhB,KAAKyB,MAAM0L,WACbnN,KAAK6D,SAwoBPd,EAAAzC,UAAAiJ,SAAA,WAEC,GAAI6D,GAAS,OAAOC,KAAKrN,KAAKmD,MAAMkG,WAAWrH,UAAUhC,KAAKmD,MAAMzB,OACpE,OAAG0L,GACKA,EAAOE,MAAQtN,KAAKmD,MAAMzB,MAAQ,EAElC1B,KAAKmD,MAAMkG,WAAWzH,QAG/BmB,EAAAzC,UAAAkJ,aAAA,WAEC,GAAI4D,GAAS,iBAAiBC,KAAKrN,KAAKmD,MAAMkG,WAAWrH,UAAU,EAAEhC,KAAKmD,MAAMzB,MAAM,GACtF,OAAG0L,GACKA,EAAOE,MAAQ,EAEf,GA4FTvK,EAAAzC,UAAA2B,OAAA,cAAAd,GAAAnB,IACC,OAAOS,GAAAoB,cAAA,OAAKC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAMkL,UAAYlK,GAC7CT,UAAW,4BAA8BrB,KAAKmD,MAAMU,MAAM,sBAAsB,yBAChF0J,QAASvN,KAAK6D,OAEd7D,KAAKyB,MAAM+L,eACX/M,EAAAoB,cAAA,OAAKR,UAAU,+CACbrB,KAAKyB,MAAM+L,gBAEX,KAEFxN,KAAKmD,MAAMH,IAAIN,IAAK,SAACC,GACrB,OACClC,EAAAoB,cAACnB,GAAcwB,MAAOS,EAAIT,MAAOP,MAAOgB,EAAIkH,WFhDlC4D,OEiDP9K,EAAIS,QAAQV,IAAK,SAACC,EAAiBP,GACrC,MAAO3B,GAAAoB,cAACW,GAAeT,IAAKK,EAAKK,KAAME,EAAIF,KAAMd,MAAOgB,EAAIhB,aAI9D3B,KAAKmD,MAAMO,YACXjD,EAAAoB,cAACnB,GACAwB,MAAOlC,KAAKmD,MAAMQ,UAClBhC,MAAO3B,KAAKmD,MAAMkG,WAClB3H,MAAO1B,KAAKmD,MAAMzB,MAClBS,SAAUnC,KAAKmD,MAAMhB,WAEpB,KAEH1B,EAAAoB,cAAA,OAAK6L,OAASC,SAAU,SAAUC,OAAQ,EAAGC,MAAO,IACnDpN,EAAAoB,cAAA,YACCC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAMkD,MAAQlC,GAC/BT,UAAU,sBACVyM,aAAa,MACbC,YAAY,MACZC,eAAe,MACfC,WAAW,QACXP,OAASQ,QAAS,OACjBC,MAAO,cACPC,gBAAiB,cACjBC,OAAQ,OACRC,OAAQ,OACRX,SAAU,UAEXY,OAAQvO,KAAKkE,KACbsK,UAAWxO,KAAKmE,QAChBsK,SAAUzO,KAAKwI,OACfkG,QAAS1O,KAAKkJ,SAGhBzI,EAAAoB,cAAA,OAAKC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAM+C,MAAQ/B,IAAI,OAt0BnCiB,EAAAT,cACN4K,YAAa,KACbzD,SAAU,WAAa,OAAO,GAC9ByB,OAAQ,cAs0BVnI,GAh2B6BtC,EAAM8B,UAAnChC,QAAAoO,eAAApP,EAAA,cAAAoC,OAAA,IF8xBCpC,EAAQqP,QAAU7L,GAKb,SAAUvD,EAAQD,KAMlB,SAAUC,EAAQD,GGx7BxBC,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 ConsoleMessage = function (props) {\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\tConsoleMessage.defaultProps = {\n\t type: null,\n\t value: [],\n\t};\n\t;\n\t;\n\tvar default_1 = (function (_super) {\n\t __extends(default_1, _super);\n\t function default_1(props) {\n\t var _this = this;\n\t _super.call(this, props);\n\t this.child = {};\n\t // Command API\n\t this.log = function () {\n\t var messages = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t messages[_i - 0] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logX = function (type) {\n\t var messages = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t messages[_i - 1] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ type: type, value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.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});\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 f59adf676ff7a2cc770a","\"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}\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\treturn
\n\t\t{props.value.map((val: any)=>{\n\t\t\tif(typeof val == 'string') {\n\t\t\t\treturn val;\n\t\t\t} else {\n\t\t\t\treturn JSON.stringify(val);\n\t\t\t}\n\t\t}).join(\"\\n\")}\n\t
;\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\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 051c9faad82129278752","webpack:///./react-console.tsx","webpack:///external \"React\""],"names":["Console","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","__extends","this","d","b","__","constructor","hasOwnProperty","prototype","Object","create","React","ConsolePrompt","_super","apply","arguments","child","updateSemaphore","componentDidMount","idle","componentDidUpdate","_this","cursor","className","window","setTimeout","renderValue","props","point","value","length","createElement","ref","key","substring","render","label","argument","idx","lastIndexOf","defaultProps","Component","ConsoleTableHeader","headers","map","header","scope","ConsoleMessage","isTable","data","rows","row","index","cell","cellIndex","type","val","JSON","stringify","join","default_1","log","messages","_i","state","message","push","setState","scrollIfBottom","logX","logTable","tableData","return","acceptInput","currLabel","nextLabel","focus","getSelection","toString","typer","scrollToBottom","blur","keyDown","e","keyCodes","13","acceptLine","37","backwardChar","39","forwardChar","38","previousHistory","40","nextHistory","8","backwardDeleteChar","46","deleteChar","35","endOfLine","36","beginningOfLine","9","complete","27","prefixMeta","ctrlCodes","65","69","70","66","76","clearScreen","80","78","82","reverseSearchHistory","83","forwardSearchHistory","68","75","killLine","85","backwardKillLine","89","yank","67","cancelCommand","metaCodes","forwardWord","backwardWord","nonIncrementalReverseSearchHistory","nonIncrementalForwardSearchHistory","190","yankLastArg","killWord","backwardKillWord","yankPop","metaShiftCodes","188","beginningOfHistory","endOfHistory","189","metaCtrlCodes","yankNthArg","altKey","ctrlKey","keyCode","preventDefault","shiftKey","change","insert","replace","lastCommand","searchText","searchInit","textInsert","triggerSearch","assign","consoleInsert","paste","clipboardData","getData","promptText","movePoint","nextWord","previousWord","continue","command_1","history_1","history","command","restoreText","historyn","handler","rotateHistory","searchDirection","searchHistory","historySearchBackward","historySearchForward","historySubstringSearchBackward","historySubstringSearchForward","kill","unshift","killn","killWholeLine","rotateRing","words","split","curr","completions","i","cancel","text","n","max","pos","ringn","ring","circular","direction","next","inc","entry","indexOf","scrollSemaphore","container","scrollTop","scrollHeight","offsetHeight","scrollIfBottomTrue","rect","getBoundingClientRect","top","left","bottom","innerHeight","document","documentElement","clientHeight","right","innerWidth","clientWidth","scrollIntoView","promptLabel","autofocus","search","exec","onClick","welcomeMessage","concat","style","overflow","height","width","autoComplete","autoCorrect","autoCapitalize","spellCheck","outline","color","backgroundColor","border","resize","onBlur","onKeyDown","onChange","onPaste","defineProperty","default"],"mappings":"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,UAAU,6CACrBZ,EAAAoB,cAAA,QAAM,KACLpB,EAAAoB,cAACW,GAAmBC,QAASM,EAAKN,UAClChC,EAAAoB,cAAA,QAAM,KACJkB,EAAKC,MAAQD,EAAKC,KAAKN,IAAI,SAACO,EAAeC,GAC3C,MAAOzC,GAAAoB,cAAA,MAAIE,IAAKmB,GAAQD,EAAIP,IAAI,SAACS,EAAcC,GAC7C,MAAO3C,GAAAoB,cAAA,MAAIE,IAAKqB,GAAYD,WAOlC,MAAO1C,GAAAoB,cAAA,OAAKR,UAAW,yBAA2BI,EAAM4B,KAAK,0BAA0B5B,EAAM4B,KAAK,KAChG5B,EAAME,MAAMe,IAAI,SAACY,GACjB,MAAiB,gBAAPA,GACFA,EAEAC,KAAKC,UAAUF,KAErBG,KAAK,OAIXZ,GAAeP,cACde,KAAM,KACN1B,SACAmB,SAAS,EAyDV,IAAAY,GAAA,SAAA/C,GACC,QAAA+C,GAAYjC,GADb,GAAAN,GAAAnB,IAEEW,GAAAhB,KAAAK,KAAMyB,GA0BPzB,KAAAc,SAMAd,KAAA2D,IAAM,WFpDM,IEoDL,GAAAC,MAAAC,EAAA,EAAAA,EAAAhD,UAAAe,OAAAiC,IAAAD,EAAAC,EAAA,GAAAhD,UAAAgD,EACN,IAAIF,GAAMxC,EAAK2C,MAAMH,GACrBA,GAAIxC,EAAK2C,MAAMH,IAAI/B,OAAO,GAAGmC,QAAQC,MAAMrC,MAAOiC,IAClDzC,EAAK8C,UACJN,IAAKA,GACHxC,EAAK+C,mBAETlE,KAAAmE,KAAO,SAACd,GFhDI,IEgDU,GAAAO,MAAAC,EAAA,EAAAA,EAAAhD,UAAAe,OAAAiC,IAAAD,EAAAC,EAAA,GAAAhD,UAAAgD,EACrB,IAAIF,GAAMxC,EAAK2C,MAAMH,GACrBA,GAAIxC,EAAK2C,MAAMH,IAAI/B,OAAO,GAAGmC,QAAQC,MAAMX,KAAMA,EAAM1B,MAAOiC,IAC9DzC,EAAK8C,UACJN,IAAKA,GACHxC,EAAK+C,mBAETlE,KAAAoE,SAAW,SAACC,GACX,GAAIV,GAAMxC,EAAK2C,MAAMH,GACrBA,GAAIxC,EAAK2C,MAAMH,IAAI/B,OAAO,GAAGmC,QAAQC,MAAMlB,SAAS,EAAMnB,OAAQ0C,KAClElD,EAAK8C,UACJN,IAAKA,GACHxC,EAAK+C,mBAETlE,KAAAsE,OAAS,WACRnD,EAAK8C,UACJM,aAAa,EACbC,UAAWrD,EAAKsD,aACdtD,EAAK+C,mBASTlE,KAAA0E,MAAQ,WACHpD,OAAOqD,eAAeC,aACzBzD,EAAKL,MAAM+D,MAAMH,QACjBvD,EAAK8C,UAAWS,OAAO,GAAQvD,EAAK2D,kBAGtC9E,KAAA+E,KAAO,WACN5D,EAAK8C,UAAWS,OAAO,KAExB1E,KAAAgF,QAAU,SAACC,GAIV,GAAIC,IAEHC,GAAIhE,EAAKiE,WAETC,GAAIlE,EAAKmE,aAETC,GAAIpE,EAAKqE,YAETC,GAAItE,EAAKuE,gBAETC,GAAIxE,EAAKyE,YAETC,EAAI1E,EAAK2E,mBAETC,GAAI5E,EAAK6E,WAETC,GAAI9E,EAAK+E,UAETC,GAAIhF,EAAKiF,gBAETC,EAAGlF,EAAKmF,SAERC,GAAIpF,EAAKqF,YAENC,GAEHC,GAAIvF,EAAKiF,gBAETO,GAAIxF,EAAK+E,UAETU,GAAIzF,EAAKqE,YAETqB,GAAI1F,EAAKmE,aAETwB,GAAI3F,EAAK4F,YAETC,GAAI7F,EAAKuE,gBAETuB,GAAI9F,EAAKyE,YAETsB,GAAI/F,EAAKgG,qBAETC,GAAIjG,EAAKkG,qBAETC,GAAInG,EAAK6E,WAQTuB,GAAIpG,EAAKqG,SAETC,GAAItG,EAAKuG,iBAETC,GAAIxG,EAAKyG,KAETC,GAAI1G,EAAK2G,eA4BNC,IAlBHlC,EAAG1E,EAAKuG,mBAoBRd,GAAIzF,EAAK6G,YAETnB,GAAI1F,EAAK8G,aAETjB,GAAI7F,EAAK+G,mCAETjB,GAAI9F,EAAKgH,mCAETC,IAAKjH,EAAKkH,YAYVf,GAAInG,EAAKmH,SAETzC,EAAG1E,EAAKoH,iBAMRZ,GAAIxG,EAAKqH,UA8BNC,GAEHC,IAAKvH,EAAKwH,mBAEVP,IAAKjH,EAAKyH,aAEVC,IAAK1H,EAAKkH,aAMPS,GAEHnB,GAAIxG,EAAK4H,WAMP5H,GAAK2C,MAAMS,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,oBAILnJ,KAAAqJ,OAAS,WAER,IADA,GAAIjH,GAAM,EACLA,EAAMjB,EAAK2C,MAAMe,MAAMjD,QAAUQ,EAAMjB,EAAKL,MAAM+D,MAAMlD,MAAMC,QAC/DT,EAAK2C,MAAMe,MAAMzC,IAAQjB,EAAKL,MAAM+D,MAAMlD,MAAMS,GADuBA,KAK3E,GAAIkH,GAASnI,EAAKL,MAAM+D,MAAMlD,MAAMK,UAAUI,GAC1CmH,EAAUpI,EAAK2C,MAAMe,MAAMjD,OAASQ,CACX,IAA1BjB,EAAK2C,MAAM0F,YACbrI,EAAK8C,UACJwF,WAAYtI,EAAK2C,MAAM4F,WAAWJ,EAAOnI,EAAKwI,WAAWL,EAAQnI,EAAK2C,MAAM2F,WAAYF,GACxF1E,MAAO1D,EAAKL,MAAM+D,MAAMlD,OACtBR,EAAKyI,eAERzI,EAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK2I,cAAcR,EAAQC,IAC1B1E,MAAO1D,EAAKL,MAAM+D,MAAMlD,MACxB6H,YAAa,IACVrI,EAAK2D,iBAIZ9E,KAAA+J,MAAQ,SAAC9E,GACR,GAAIqE,GAASrE,EAAE+E,cAAcC,QAAQ,OACR,IAA1B9I,EAAK2C,MAAM0F,YACbrI,EAAK8C,UACJwF,WAAYtI,EAAK2C,MAAM4F,WAAWJ,EAAOnI,EAAKwI,WAAWL,EAAQnI,EAAK2C,MAAM2F,YAC5E5E,MAAO1D,EAAKL,MAAM+D,MAAMlD,OACtBR,EAAKyI,eAERzI,EAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK2I,cAAcR,IAClBE,YAAa,IACVrI,EAAK2D,gBAGXG,EAAEkE,kBAGHnJ,KAAAoG,gBAAkB,WACjBjF,EAAK8C,UACJvC,MAAO,EACPS,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAkG,UAAY,WACX/E,EAAK8C,UACJvC,MAAOP,EAAK2C,MAAMoG,WAAWtI,OAC7BO,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAwF,YAAc,WACbrE,EAAK8C,UACJvC,MAAOP,EAAKgJ,UAAU,GACtBhI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAsF,aAAe,WACdnE,EAAK8C,UACJvC,MAAOP,EAAKgJ,WAAU,GACtBhI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAgI,YAAc,WACb7G,EAAK8C,UACJvC,MAAOP,EAAKiJ,WACZjI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAiI,aAAe,WACd9G,EAAK8C,UACJvC,MAAOP,EAAKkJ,eACZlI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAGT9E,KAAAoF,WAAa,WAEZ,GADAjE,EAAKL,MAAM+D,MAAMlD,MAAQ,GACtBR,EAAKM,MAAM6I,SAASnJ,EAAK2C,MAAMoG,YACjC/I,EAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK2I,cAAc,OAClBjF,MAAO,GACP2E,YAAa,IACVrI,EAAK2D,oBAEJ,CACN,GAAIyF,GAAUpJ,EAAK2C,MAAMoG,WACrBM,EAAUrJ,EAAK2C,MAAM2G,QACrB9G,EAAMxC,EAAK2C,MAAMH,GACjB6G,IAAWA,EAAQA,EAAQ5I,OAAO,IAAM2I,GAC3CC,EAAQxG,KAAKuG,GAEd5G,EAAIK,MACH9B,MAAOf,EAAK2C,MAAMU,UAClBkG,QAASH,EACTxG,aAED5C,EAAK8C,UACJM,aAAa,EACbM,MAAO,GACPnD,MAAO,EACPwI,WAAY,GACZS,YAAa,GACbhH,IAAKA,EACL8G,QAASD,EACTI,SAAU,EACVzI,SAAU,KACVqH,YAAa,GACX,WACFrI,EAAK2D,iBACF3D,EAAKM,MAAMoJ,QACb1J,EAAKM,MAAMoJ,QAAQN,GAEnBpJ,EAAKmD,aAKTtE,KAAA0F,gBAAkB,WACjBvE,EAAK2J,eAAc,IAEpB9K,KAAA4F,YAAc,WACbzE,EAAK2J,cAAc,IAEpB9K,KAAA2I,mBAAqB,WACpBxH,EAAK2J,eAAe3J,EAAK2C,MAAM2G,QAAQ7I,SAExC5B,KAAA4I,aAAe,WACdzH,EAAK2J,cAAc3J,EAAK2C,MAAM2G,QAAQ7I,SAEvC5B,KAAA4J,cAAgB,WACkB,GAA9BzI,EAAK2C,MAAMiH,gBACb5J,EAAKgG,uBAELhG,EAAKkG,wBAGPrH,KAAAmH,qBAAuB,WACO,GAA1BhG,EAAK2C,MAAM0F,YACbrI,EAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK6J,cAAc,GAAyB,IAC3C7I,SAAU,sBAAuBhB,EAAK2C,MAAM2F,WAAU,MACtDD,YAAa,IACVrI,EAAK2D,gBAGV3D,EAAK8C,UACJ8G,gBAAiB,EACjBrB,YAAY,EACZvH,SAAU,yBACVqH,YAAa,GACXrI,EAAK2D,iBAGV9E,KAAAqH,qBAAuB,WACO,GAA1BlG,EAAK2C,MAAM0F,YACbrI,EAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK6J,cAAc,GAAyB,IAC3C7I,SAAU,sBAAuBhB,EAAK2C,MAAM2F,WAAU,MACtDD,YAAa,IACVrI,EAAK2D,gBAGV3D,EAAK8C,UACJ8G,gBAAiB,EACjBrB,YAAY,EACZvH,SAAU,yBACVqH,YAAa,GACXrI,EAAK2D,iBAGV9E,KAAA+G,YAAc,WACb5F,EAAK8C,UAAWN,UAEjB3D,KAAAkI,mCAAqC,aAGrClI,KAAAmI,mCAAqC,aAGrCnI,KAAAiL,sBAAwB,aAGxBjL,KAAAkL,qBAAuB,aAGvBlL,KAAAmL,+BAAiC,aAGjCnL,KAAAoL,8BAAgC,aAGhCpL,KAAA+I,WAAa,aAGb/I,KAAAqI,YAAc,aAIdrI,KAAAgG,WAAa,WACT7E,EAAK2C,MAAMpC,MAAQP,EAAK2C,MAAMoG,WAAWtI,QAC3CT,EAAK8C,UACJiG,WAAY/I,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,OACtDP,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,MAAM,GACpDS,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAGV9E,KAAA8F,mBAAqB,WACS,GAA1B3E,EAAK2C,MAAM0F,YACbrI,EAAK8C,UACJwF,WAAYtI,EAAK2C,MAAM2F,WAAWzH,UAAU,EAAEb,EAAK2C,MAAM2F,WAAW7H,OAAO,GAC3EiD,MAAO1D,EAAKL,MAAM+D,MAAMlD,OACtBR,EAAKyI,eACCzI,EAAK2C,MAAMpC,MAAQ,GAC5BP,EAAK8C,UACJvC,MAAOP,EAAKgJ,WAAU,GACtBD,WAAY/I,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,MAAM,GAC5DP,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,OAC9CS,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAIV9E,KAAAwH,SAAW,WACV,GAAI6D,GAAOlK,EAAK2C,MAAMuH,IACO,IAA1BlK,EAAK2C,MAAM0F,YACb6B,EAAK,GAAKA,EAAK,GAAKlK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,OAE/D2J,EAAKC,QAAQnK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,QAEzDP,EAAK8C,UACJiG,WAAY/I,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,OACzD2J,KAAMA,EACNE,MAAO,EACPpJ,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAA0H,iBAAmB,WAClB,GAAI2D,GAAOlK,EAAK2C,MAAMuH,IACO,IAA1BlK,EAAK2C,MAAM0F,YACb6B,EAAK,GAAKlK,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,OAAS2J,EAAK,GAErEA,EAAKC,QAAQnK,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,QAE3DP,EAAK8C,UACJvC,MAAO,EACPwI,WAAY/I,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,OACvD2J,KAAMA,EACNE,MAAO,EACPpJ,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAwL,cAAgB,WACf,GAAIH,GAAOlK,EAAK2C,MAAMuH,IACO,IAA1BlK,EAAK2C,MAAM0F,YACb6B,EAAK,GAAKlK,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,OACpD2J,EAAK,GAAKlK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,OAExD2J,EAAKC,QAAQnK,EAAK2C,MAAMoG,YAEzB/I,EAAK8C,UACJvC,MAAO,EACPwI,WAAY,GACZmB,KAAMA,EACNE,MAAO,EACPpJ,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAsI,SAAW,WACV,GAAI+C,GAAOlK,EAAK2C,MAAMuH,IACO,IAA1BlK,EAAK2C,MAAM0F,YACb6B,EAAK,GAAKA,EAAK,GAAKlK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,MAAMP,EAAKiJ,YAE1EiB,EAAKC,QAAQnK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,MAAMP,EAAKiJ,aAEpEjJ,EAAK8C,UACJiG,WAAY/I,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAK2C,MAAMpC,OACtDP,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAKiJ,YACxCiB,KAAMA,EACNE,MAAO,EACPpJ,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAAuI,iBAAmB,WAClB,GAAI8C,GAAOlK,EAAK2C,MAAMuH,IACO,IAA1BlK,EAAK2C,MAAM0F,YACb6B,EAAK,GAAKlK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAKkJ,eAAelJ,EAAK2C,MAAMpC,OAAS2J,EAAK,GAEvFA,EAAKC,QAAQnK,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAKkJ,eAAelJ,EAAK2C,MAAMpC,QAE7EP,EAAK8C,UACJvC,MAAOP,EAAKkJ,eACZH,WAAY/I,EAAK2C,MAAMoG,WAAWlI,UAAU,EAAEb,EAAKkJ,gBAChDlJ,EAAK2C,MAAMoG,WAAWlI,UAAUb,EAAK2C,MAAMpC,OAC9C2J,KAAMA,EACNE,MAAO,EACPpJ,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,iBAET9E,KAAA4H,KAAO,WACNzG,EAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK2I,cAAc3I,EAAK2C,MAAMuH,KAAKlK,EAAK2C,MAAMyH,SAC7C/B,YAAa,IACVrI,EAAK2D,iBAGX9E,KAAAwI,QAAU,WACT,GAA6B,GAA1BrH,EAAK2C,MAAM0F,YAAoC,CACjD,GAAI+B,GAAQpK,EAAKsK,WAAW,EAAGtK,EAAK2C,MAAMyH,MAAOpK,EAAK2C,MAAMuH,KAAKzJ,OACjET,GAAK8C,SAAS1D,OAAOsJ,OACpB1I,EAAK2I,cAAc3I,EAAK2C,MAAMuH,KAAKE,GAAQpK,EAAK2C,MAAMuH,KAAKlK,EAAK2C,MAAMyH,OAAO3J,SAC5E2J,MAAOA,EACP/B,YAAa,IACVrI,EAAK2D,kBAMZ9E,KAAAsG,SAAW,WACV,GAAGnF,EAAKM,MAAM6E,SAAU,CAKvB,IAHA,GAAIoF,GAAQvK,EAAK2C,MAAMoG,WAAWyB,MAAM,KACpCC,EAAO,EACPxJ,EAAMsJ,EAAM,GAAG9J,OACbQ,EAAMjB,EAAK2C,MAAMpC,OAASkK,EAAO,EAAIF,EAAM9J,QAChDQ,GAAOsJ,IAAQE,GAAMhK,OAAS,CAG/B,IAAIiK,GAAc1K,EAAKM,MAAM6E,SAASoF,EAAOE,EAAMzK,EAAK2C,MAAMoG,WAC9D,IAAyB,GAAtB2B,EAAYjK,OAAa,CAE3B8J,EAAME,GAAQC,EAAY,EAE1B,KAAI,GADAnK,IAAQ,EACJoK,EAAI,EAAGA,GAAKF,EAAME,IACzBpK,GAASgK,EAAMI,GAAGlK,OAAS,CAE5BT,GAAK8C,UACJvC,MAAOA,EACPwI,WAAYwB,EAAMjI,KAAK,KACvBtB,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,oBACF,IAAI+G,EAAYjK,OAAS,EAAG,CAElC,GAAI+B,GAAMxC,EAAK2C,MAAMH,GACrBA,GAAIK,MACH9B,MAAOf,EAAK2C,MAAMU,UAClBkG,QAASvJ,EAAK2C,MAAMoG,WACpBnG,UACCV,KAAM,aACN1B,OAAQkK,EAAYpI,KAAK,WAG3BtC,EAAK8C,UACJO,UAAWrD,EAAKsD,YAChBd,IAAKA,EACLxB,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,mBAMX9E,KAAAwG,WAAa,WACiB,GAA1BrF,EAAK2C,MAAM0F,aACbrI,EAAK8C,UACJ9B,SAAU,KACVqH,YAAa,KAKhBxJ,KAAA8H,cAAgB,WACf,GAAG3G,EAAK2C,MAAMS,YAAa,CAC1BpD,EAAKL,MAAM+D,MAAMlD,MAAQ,EACzB,IAAIgC,GAAMxC,EAAK2C,MAAMH,GACrBA,GAAIK,MACH9B,MAAOf,EAAK2C,MAAMU,UAClBkG,QAASvJ,EAAK2C,MAAMoG,WACpBnG,aAED5C,EAAK8C,UACJY,MAAO,GACPnD,MAAO,EACPwI,WAAY,GACZS,YAAa,GACbhH,IAAKA,EACLiH,SAAU,EACVzI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,oBAER3D,GAAKM,MAAMsK,UAIb/L,KAAA2J,WAAa,SAACL,EAAgB0C,EAAczC,EAAqB7H,GAChE,MAD2C,UAAA6H,MAAA,GAAqB,SAAA7H,MAAgBsK,EAAKpK,QAC9EoK,EAAKhK,UAAU,EAAGN,EAAQ6H,GAAWD,EAAS0C,EAAKhK,UAAUN,IAErE1B,KAAA8J,cAAgB,SAACR,EAAgBC,GAAA,SAAAA,MAAA,EAChC,IAAIW,GAAa/I,EAAKwI,WAAWL,EAAQnI,EAAK2C,MAAMoG,WAAYX,EAASpI,EAAK2C,MAAMpC,MACpF,QACCA,MAAOP,EAAKgJ,UAAUb,EAAO1H,OAAS2H,EAASD,EAAO1H,OAAS2H,EAAUpI,EAAK2C,MAAMoG,WAAWtI,QAC/FsI,WAAYA,EACZS,YAAaT,EACb/H,SAAU,KACVqH,YAAa,IAGfxJ,KAAAmK,UAAY,SAAC8B,EAAWC,GAAA,SAAAA,MAAc/K,EAAK2C,MAAMoG,WAAWtI,OAC3D,IAAIuK,GAAMhL,EAAK2C,MAAMpC,MAAQuK,CAC7B,OAAIE,GAAM,EACF,EACFA,EAAMD,EACJA,EAEAC,GAqBTnM,KAAAyL,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,IAIVpM,KAAA8K,cAAgB,SAACmB,GAChB,GAAIrB,GAAWzJ,EAAKsK,WAAWQ,EAAG9K,EAAK2C,MAAM8G,SAAUzJ,EAAK2C,MAAM2G,QAAQ7I,QAAQ,EAClF,IAAe,GAAZgJ,EACFzJ,EAAK8C,UACJvC,MAAOP,EAAK2C,MAAM6G,YAAY/I,OAC9BsI,WAAY/I,EAAK2C,MAAM6G,YACvBC,SAAUA,EACVzI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,oBACF,CACN,GAAIoF,GAAa/I,EAAK2C,MAAM2G,QAAQtJ,EAAK2C,MAAM2G,QAAQ7I,OAAOgJ,EAC9DzJ,GAAK8C,UACJvC,MAAOwI,EAAWtI,OAClBsI,WAAYA,EACZU,SAAUA,EACVzI,SAAU,KACVqH,YAAa,GACXrI,EAAK2D,kBAGV9E,KAAAgL,cAAgB,SAACuB,EAAyDC,GAAzD,SAAAD,MAA6BpL,EAAK2C,MAAMiH,iBAAiB,SAAAyB,OAAA,EACzE,IAAIpK,GAAMjB,EAAK2C,MAAM8G,SACjB6B,EAAoB,GAAbF,EAAsC,GAAE,CAInD,KAHGC,IACFpK,GAAYqK,GAERrK,EAAM,GAAKA,GAAOjB,EAAK2C,MAAM2G,QAAQ7I,OAAQQ,GAAYqK,EAAK,CAClE,GAAIC,GAAQvL,EAAK2C,MAAM2G,QAAQtJ,EAAK2C,MAAM2G,QAAQ7I,OAAOQ,GACrDV,EAAQgL,EAAMC,QAAQxL,EAAK2C,MAAM2F,WACrC,IAAG/H,GAAQ,EACV,OACCA,MAAOA,EACPwI,WAAYwC,EACZ3B,gBAAiBwB,EACjB7C,YAAY,EACZkB,SAAUxI,GAIb,OACC2I,gBAAiBwB,EACjB7C,YAAY,IAId1J,KAAA4M,gBAAkB,EAClB5M,KAAAkE,eAAiB,WAChB,MAAG/C,GAAKyL,gBAAkB,GAAKzL,EAAKL,MAAM+L,UAAUC,WAAa3L,EAAKL,MAAM+L,UAAUE,aAAe5L,EAAKL,MAAM+L,UAAUG,cACzH7L,EAAKyL,kBACEzL,EAAK8L,oBAEL,MAGTjN,KAAAiN,mBAAqB,WACpB9L,EAAK2D,iBACL3D,EAAKyL,mBAEN5M,KAAA8E,eAAiB,WAChB3D,EAAKL,MAAM+L,UAAUC,UAAY3L,EAAKL,MAAM+L,UAAUE,YACtD,IAAIG,GAAO/L,EAAKL,MAAM4D,MAAMyI,yBACzBD,EAAKE,IAAM,GAAKF,EAAKG,KAAO,GAC9BH,EAAKI,QAAUhM,OAAOiM,aAAeC,SAASC,gBAAgBC,eAC9DR,EAAKS,OAASrM,OAAOsM,YAAcJ,SAASC,gBAAgBI,eACzD1M,EAAKL,MAAM+D,MAAMiJ,gBAAe,IAErC9N,KAAAyE,UAAY,WACX,MAAqC,gBAA3BtD,GAAKM,MAAMsM,YACb5M,EAAKM,MAAMsM,YAEV5M,EAAKM,MAAMsM,eA7yBpB/N,KAAK8D,OACJY,OAAO,EACPH,aAAa,EACbM,MAAO,GACPnD,MAAO,EACP8C,UAAWxE,KAAKyE,YAChByF,WAAY,GACZS,YAAa,GACblB,WAAY,GACZsB,gBAAiB,KACjBrB,YAAY,EACZ/F,OACA8G,WACAG,SAAU,EACVS,QACAE,MAAO,EACPpJ,SAAU,KACVqH,YAAa,GAm1BhB,MAv2B6BzJ,GAAA2D,EAAA/C,GA8D5B+C,EAAApD,UAAAU,kBAAA,WACIhB,KAAKyB,MAAMuM,WACbhO,KAAK0E,SAwoBPhB,EAAApD,UAAA8J,SAAA,WAEC,GAAI6D,GAAS,OAAOC,KAAKlO,KAAK8D,MAAMoG,WAAWlI,UAAUhC,KAAK8D,MAAMpC,OACpE,OAAGuM,GACKA,EAAO/K,MAAQlD,KAAK8D,MAAMpC,MAAQ,EAElC1B,KAAK8D,MAAMoG,WAAWtI,QAG/B8B,EAAApD,UAAA+J,aAAA,WAEC,GAAI4D,GAAS,iBAAiBC,KAAKlO,KAAK8D,MAAMoG,WAAWlI,UAAU,EAAEhC,KAAK8D,MAAMpC,MAAM,GACtF,OAAGuM,GACKA,EAAO/K,MAAQ,EAEf,GA4FTQ,EAAApD,UAAA2B,OAAA,cAAAd,GAAAnB,IACC,OAAOS,GAAAoB,cAAA,OAAKC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAM+L,UAAY/K,GAC7CT,UAAW,4BAA8BrB,KAAK8D,MAAMY,MAAM,sBAAsB,yBAChFyJ,QAASnO,KAAK0E,OAEd1E,KAAKyB,MAAM2M,eACX3N,EAAAoB,cAAA,OAAKR,UAAU,+CACbrB,KAAKyB,MAAM2M,gBAEX,KAEFpO,KAAK8D,MAAMH,IAAIjB,IAAK,SAACY,GACrB,OACC7C,EAAAoB,cAACnB,GAAcwB,MAAOoB,EAAIpB,MAAOP,MAAO2B,EAAIoH,WFrElC2D,OEsEP/K,EAAIS,QAAQrB,IAAK,SAACY,EAAiBlB,GACrC,MAAO3B,GAAAoB,cAACgB,GAAed,IAAKK,EAAKiB,KAAMC,EAAID,KAAM1B,MAAO2B,EAAI3B,MAAOmB,QAASQ,EAAIR,eAIlF9C,KAAK8D,MAAMS,YACX9D,EAAAoB,cAACnB,GACAwB,MAAOlC,KAAK8D,MAAMU,UAClB7C,MAAO3B,KAAK8D,MAAMoG,WAClBxI,MAAO1B,KAAK8D,MAAMpC,MAClBS,SAAUnC,KAAK8D,MAAM3B,WAEpB,KAEH1B,EAAAoB,cAAA,OAAKyM,OAASC,SAAU,SAAUC,OAAQ,EAAGC,MAAO,IACnDhO,EAAAoB,cAAA,YACCC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAM+D,MAAQ/C,GAC/BT,UAAU,sBACVqN,aAAa,MACbC,YAAY,MACZC,eAAe,MACfC,WAAW,QACXP,OAASQ,QAAS,OACjBC,MAAO,cACPC,gBAAiB,cACjBC,OAAQ,OACRC,OAAQ,OACRX,SAAU,UAEXY,OAAQnP,KAAK+E,KACbqK,UAAWpP,KAAKgF,QAChBqK,SAAUrP,KAAKqJ,OACfiG,QAAStP,KAAK+J,SAGhBtJ,EAAAoB,cAAA,OAAKC,IAAK,SAAAA,GAAO,MAAAX,GAAKL,MAAM4D,MAAQ5C,IAAI,OA70BnC4B,EAAApB,cACNyL,YAAa,KACbzD,SAAU,WAAa,OAAO,GAC9ByB,OAAQ,cA60BVrI,GAv2B6BjD,EAAM8B,UAAnChC,QAAAgP,eAAAhQ,EAAA,cAAAoC,OAAA,IFgxBCpC,EAAQiQ,QAAU9L,GAKb,SAAUlE,EAAQD,KAMlB,SAAUC,EAAQD,GGl9BxBC,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\"}, React.createElement(\"table\", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement(\"tbody\", null, data.rows && data.rows.map(function (row, index) {\n\t return React.createElement(\"tr\", {key: index}, row.map(function (cell, cellIndex) {\n\t return React.createElement(\"td\", {key: cellIndex}, cell);\n\t }));\n\t }))));\n\t }\n\t else {\n\t return React.createElement(\"div\", {className: \"react-console-message\" + (props.type ? \" react-console-message-\" + props.type : \"\")}, props.value.map(function (val) {\n\t if (typeof val == 'string') {\n\t return val;\n\t }\n\t else {\n\t return JSON.stringify(val);\n\t }\n\t }).join(\"\\n\"));\n\t }\n\t};\n\tConsoleMessage.defaultProps = {\n\t type: null,\n\t value: [],\n\t isTable: false\n\t};\n\t;\n\t;\n\tvar default_1 = (function (_super) {\n\t __extends(default_1, _super);\n\t function default_1(props) {\n\t var _this = this;\n\t _super.call(this, props);\n\t this.child = {};\n\t // Command API\n\t this.log = function () {\n\t var messages = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t messages[_i - 0] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logX = function (type) {\n\t var messages = [];\n\t for (var _i = 1; _i < arguments.length; _i++) {\n\t messages[_i - 1] = arguments[_i];\n\t }\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ type: type, value: messages });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.logTable = function (tableData) {\n\t var log = _this.state.log;\n\t log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] });\n\t _this.setState({\n\t log: log,\n\t }, _this.scrollIfBottom());\n\t };\n\t this.return = function () {\n\t _this.setState({\n\t acceptInput: true,\n\t currLabel: _this.nextLabel(),\n\t }, _this.scrollIfBottom());\n\t };\n\t // Event Handlers\n\t this.focus = function () {\n\t if (!window.getSelection().toString()) {\n\t _this.child.typer.focus();\n\t _this.setState({ focus: true }, _this.scrollToBottom);\n\t }\n\t };\n\t this.blur = function () {\n\t _this.setState({ focus: false });\n\t };\n\t this.keyDown = function (e) {\n\t var keyCodes = {\n\t // return\n\t 13: _this.acceptLine,\n\t // left\n\t 37: _this.backwardChar,\n\t // right\n\t 39: _this.forwardChar,\n\t // up\n\t 38: _this.previousHistory,\n\t // down\n\t 40: _this.nextHistory,\n\t // backspace\n\t 8: _this.backwardDeleteChar,\n\t // delete\n\t 46: _this.deleteChar,\n\t // end\n\t 35: _this.endOfLine,\n\t // start\n\t 36: _this.beginningOfLine,\n\t // tab\n\t 9: _this.complete,\n\t // esc\n\t 27: _this.prefixMeta,\n\t };\n\t var ctrlCodes = {\n\t // C-a\n\t 65: _this.beginningOfLine,\n\t // C-e\n\t 69: _this.endOfLine,\n\t // C-f\n\t 70: _this.forwardChar,\n\t // C-b\n\t 66: _this.backwardChar,\n\t // C-l\n\t 76: _this.clearScreen,\n\t // C-p\n\t 80: _this.previousHistory,\n\t // C-n\n\t 78: _this.nextHistory,\n\t // C-r\n\t 82: _this.reverseSearchHistory,\n\t // C-s\n\t 83: _this.forwardSearchHistory,\n\t // C-d\n\t 68: _this.deleteChar,\n\t // C-q TODO\n\t //81: this.quotedInsert,\n\t // C-v TODO\n\t //86: this.quotedInsert,\n\t // C-t TODO\n\t //84: this.transposeChars,\n\t // C-k\n\t 75: _this.killLine,\n\t // C-u\n\t 85: _this.backwardKillLine,\n\t // C-y TODO\n\t 89: _this.yank,\n\t // C-c\n\t 67: _this.cancelCommand,\n\t };\n\t var ctrlXCodes = {\n\t // C-x Rubout\n\t 8: _this.backwardKillLine,\n\t };\n\t var ctrlShiftCodes = {};\n\t var metaCodes = {\n\t // M-f\n\t 70: _this.forwardWord,\n\t // M-b\n\t 66: _this.backwardWord,\n\t // M-p\n\t 80: _this.nonIncrementalReverseSearchHistory,\n\t // M-n\n\t 78: _this.nonIncrementalForwardSearchHistory,\n\t // M-.\n\t 190: _this.yankLastArg,\n\t // M-TAB TODO\n\t //9: this.tabInsert,\n\t // M-t TODO\n\t //84: this.transposeWords,\n\t // M-u TODO\n\t //85: this.upcaseWord,\n\t // M-l TODO\n\t //76: this.downcaseWord,\n\t // M-c TODO\n\t //67: this.capitalizeWord,\n\t // M-d\n\t 68: _this.killWord,\n\t // M-backspace\n\t 8: _this.backwardKillWord,\n\t // M-w TODO\n\t //87: this.unixWordRubout,\n\t // M-\\ TODO\n\t //220: this.deleteHorizontalSpace,\n\t // M-y\n\t 89: _this.yankPop,\n\t };\n\t var metaShiftCodes = {\n\t // M-<\n\t 188: _this.beginningOfHistory,\n\t // M->\n\t 190: _this.endOfHistory,\n\t // M-_\n\t 189: _this.yankLastArg,\n\t };\n\t var metaCtrlCodes = {\n\t // M-C-y\n\t 89: _this.yankNthArg,\n\t };\n\t if (_this.state.acceptInput) {\n\t if (e.altKey) {\n\t if (e.ctrlKey) {\n\t if (e.keyCode in metaCtrlCodes) {\n\t metaCtrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.shiftKey) {\n\t if (e.keyCode in metaShiftCodes) {\n\t metaShiftCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t else if (e.keyCode in metaCodes) {\n\t metaCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.ctrlKey) {\n\t if (e.keyCode in ctrlCodes) {\n\t ctrlCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t e.preventDefault();\n\t }\n\t else if (e.keyCode in keyCodes) {\n\t keyCodes[e.keyCode]();\n\t e.preventDefault();\n\t }\n\t }\n\t };\n\t this.change = function () {\n\t var idx = 0;\n\t for (; idx < _this.state.typer.length && idx < _this.child.typer.value.length; idx++) {\n\t if (_this.state.typer[idx] != _this.child.typer.value[idx]) {\n\t break;\n\t }\n\t }\n\t var insert = _this.child.typer.value.substring(idx);\n\t var replace = _this.state.typer.length - idx;\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText, replace),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert, replace), {\n\t typer: _this.child.typer.value,\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t this.paste = function (e) {\n\t var insert = e.clipboardData.getData('text');\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchInit ? insert : _this.textInsert(insert, _this.state.searchText),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else {\n\t _this.setState(Object.assign(_this.consoleInsert(insert), {\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t e.preventDefault();\n\t };\n\t // Commands for Moving\n\t this.beginningOfLine = function () {\n\t _this.setState({\n\t point: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.endOfLine = function () {\n\t _this.setState({\n\t point: _this.state.promptText.length,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardChar = function () {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.forwardWord = function () {\n\t _this.setState({\n\t point: _this.nextWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardWord = function () {\n\t _this.setState({\n\t point: _this.previousWord(),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t };\n\t // Commands for Manipulating the History\n\t this.acceptLine = function () {\n\t _this.child.typer.value = \"\";\n\t if (_this.props.continue(_this.state.promptText)) {\n\t _this.setState(Object.assign(_this.consoleInsert(\"\\n\"), {\n\t typer: \"\",\n\t lastCommand: 0 /* Default */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t var command_1 = _this.state.promptText;\n\t var history_1 = _this.state.history;\n\t var log = _this.state.log;\n\t if (!history_1 || history_1[history_1.length - 1] != command_1) {\n\t history_1.push(command_1);\n\t }\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: command_1,\n\t message: []\n\t });\n\t _this.setState({\n\t acceptInput: false,\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t history: history_1,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, function () {\n\t _this.scrollToBottom();\n\t if (_this.props.handler) {\n\t _this.props.handler(command_1);\n\t }\n\t else {\n\t _this.return();\n\t }\n\t });\n\t }\n\t };\n\t this.previousHistory = function () {\n\t _this.rotateHistory(-1);\n\t };\n\t this.nextHistory = function () {\n\t _this.rotateHistory(1);\n\t };\n\t this.beginningOfHistory = function () {\n\t _this.rotateHistory(-_this.state.history.length);\n\t };\n\t this.endOfHistory = function () {\n\t _this.rotateHistory(_this.state.history.length);\n\t };\n\t this.triggerSearch = function () {\n\t if (_this.state.searchDirection == 0 /* Reverse */) {\n\t _this.reverseSearchHistory();\n\t }\n\t else {\n\t _this.forwardSearchHistory();\n\t }\n\t };\n\t this.reverseSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(0 /* Reverse */, true), {\n\t argument: \"(reverse-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 0 /* Reverse */,\n\t searchInit: true,\n\t argument: \"(reverse-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.forwardSearchHistory = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState(Object.assign(_this.searchHistory(1 /* Forward */, true), {\n\t argument: \"(forward-i-search)`\" + _this.state.searchText + \"': \",\n\t lastCommand: 1 /* Search */,\n\t }), _this.scrollToBottom);\n\t }\n\t else {\n\t _this.setState({\n\t searchDirection: 1 /* Forward */,\n\t searchInit: true,\n\t argument: \"(forward-i-search)`': \",\n\t lastCommand: 1 /* Search */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.clearScreen = function () {\n\t _this.setState({ log: [] });\n\t };\n\t this.nonIncrementalReverseSearchHistory = function () {\n\t // TODO\n\t };\n\t this.nonIncrementalForwardSearchHistory = function () {\n\t // TODO\n\t };\n\t this.historySearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySearchForward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchBackward = function () {\n\t // TODO\n\t };\n\t this.historySubstringSearchForward = function () {\n\t // TODO\n\t };\n\t this.yankNthArg = function () {\n\t // TODO\n\t };\n\t this.yankLastArg = function () {\n\t // TODO\n\t };\n\t // Commands for Changing Text\n\t this.deleteChar = function () {\n\t if (_this.state.point < _this.state.promptText.length) {\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.state.point + 1),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.backwardDeleteChar = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t searchText: _this.state.searchText.substring(0, _this.state.searchText.length - 1),\n\t typer: _this.child.typer.value,\n\t }, _this.triggerSearch);\n\t }\n\t else if (_this.state.point > 0) {\n\t _this.setState({\n\t point: _this.movePoint(-1),\n\t promptText: _this.state.promptText.substring(0, _this.state.point - 1)\n\t + _this.state.promptText.substring(_this.state.point),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t // Killing and Yanking\n\t this.killLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(0, _this.state.point));\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWholeLine = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(0, _this.state.point)\n\t + kill[0] + _this.state.promptText.substring(_this.state.point);\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText);\n\t }\n\t _this.setState({\n\t point: 0,\n\t promptText: '',\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.killWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = kill[0] + _this.state.promptText.substring(_this.state.point, _this.nextWord());\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.state.point, _this.nextWord()));\n\t }\n\t _this.setState({\n\t promptText: _this.state.promptText.substring(0, _this.state.point)\n\t + _this.state.promptText.substring(_this.nextWord()),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.backwardKillWord = function () {\n\t var kill = _this.state.kill;\n\t if (_this.state.lastCommand == 2 /* Kill */) {\n\t kill[0] = _this.state.promptText.substring(_this.previousWord(), _this.state.point) + kill[0];\n\t }\n\t else {\n\t kill.unshift(_this.state.promptText.substring(_this.previousWord(), _this.state.point));\n\t }\n\t _this.setState({\n\t point: _this.previousWord(),\n\t promptText: _this.state.promptText.substring(0, _this.previousWord())\n\t + _this.state.promptText.substring(_this.state.point),\n\t kill: kill,\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 2 /* Kill */,\n\t }, _this.scrollToBottom);\n\t };\n\t this.yank = function () {\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[_this.state.killn]), {\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t };\n\t this.yankPop = function () {\n\t if (_this.state.lastCommand == 3 /* Yank */) {\n\t var killn = _this.rotateRing(1, _this.state.killn, _this.state.kill.length);\n\t _this.setState(Object.assign(_this.consoleInsert(_this.state.kill[killn], _this.state.kill[_this.state.killn].length), {\n\t killn: killn,\n\t lastCommand: 3 /* Yank */,\n\t }), _this.scrollToBottom);\n\t }\n\t };\n\t // Numeric Arguments\n\t // Completing\n\t this.complete = function () {\n\t if (_this.props.complete) {\n\t // Split text and find current word\n\t var words = _this.state.promptText.split(\" \");\n\t var curr = 0;\n\t var idx = words[0].length;\n\t while (idx < _this.state.point && curr + 1 < words.length) {\n\t idx += words[++curr].length + 1;\n\t }\n\t var completions = _this.props.complete(words, curr, _this.state.promptText);\n\t if (completions.length == 1) {\n\t // Perform completion\n\t words[curr] = completions[0];\n\t var point = -1;\n\t for (var i = 0; i <= curr; i++) {\n\t point += words[i].length + 1;\n\t }\n\t _this.setState({\n\t point: point,\n\t promptText: words.join(\" \"),\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else if (completions.length > 1) {\n\t // show completions\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: [{\n\t type: \"completion\",\n\t value: [completions.join(\"\\t\")],\n\t }]\n\t });\n\t _this.setState({\n\t currLabel: _this.nextLabel(),\n\t log: log,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t }\n\t };\n\t // Keyboard Macros\n\t // Miscellaneous\n\t this.prefixMeta = function () {\n\t if (_this.state.lastCommand == 1 /* Search */) {\n\t _this.setState({\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t });\n\t }\n\t // TODO Meta prefixed state\n\t };\n\t this.cancelCommand = function () {\n\t if (_this.state.acceptInput) {\n\t _this.child.typer.value = \"\";\n\t var log = _this.state.log;\n\t log.push({\n\t label: _this.state.currLabel,\n\t command: _this.state.promptText,\n\t message: []\n\t });\n\t _this.setState({\n\t typer: \"\",\n\t point: 0,\n\t promptText: \"\",\n\t restoreText: \"\",\n\t log: log,\n\t historyn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t _this.props.cancel();\n\t }\n\t };\n\t // Helper functions\n\t this.textInsert = function (insert, text, replace, point) {\n\t if (replace === void 0) { replace = 0; }\n\t if (point === void 0) { point = text.length; }\n\t return text.substring(0, point - replace) + insert + text.substring(point);\n\t };\n\t this.consoleInsert = function (insert, replace) {\n\t if (replace === void 0) { replace = 0; }\n\t var promptText = _this.textInsert(insert, _this.state.promptText, replace, _this.state.point);\n\t return {\n\t point: _this.movePoint(insert.length - replace, insert.length - replace + _this.state.promptText.length),\n\t promptText: promptText,\n\t restoreText: promptText,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t };\n\t this.movePoint = function (n, max) {\n\t if (max === void 0) { max = _this.state.promptText.length; }\n\t var pos = _this.state.point + n;\n\t if (pos < 0) {\n\t return 0;\n\t }\n\t if (pos > max) {\n\t return max;\n\t }\n\t else {\n\t return pos;\n\t }\n\t };\n\t this.rotateRing = function (n, ringn, ring, circular) {\n\t if (circular === void 0) { circular = true; }\n\t if (ring == 0)\n\t return 0;\n\t if (circular) {\n\t return (ring + (ringn + n) % ring) % ring;\n\t }\n\t else {\n\t ringn = ringn - n;\n\t if (ringn < 0) {\n\t return 0;\n\t }\n\t else if (ringn >= ring) {\n\t return ring;\n\t }\n\t else {\n\t return ringn;\n\t }\n\t }\n\t };\n\t this.rotateHistory = function (n) {\n\t var historyn = _this.rotateRing(n, _this.state.historyn, _this.state.history.length, false);\n\t if (historyn == 0) {\n\t _this.setState({\n\t point: _this.state.restoreText.length,\n\t promptText: _this.state.restoreText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t else {\n\t var promptText = _this.state.history[_this.state.history.length - historyn];\n\t _this.setState({\n\t point: promptText.length,\n\t promptText: promptText,\n\t historyn: historyn,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t }, _this.scrollToBottom);\n\t }\n\t };\n\t this.searchHistory = function (direction, next) {\n\t if (direction === void 0) { direction = _this.state.searchDirection; }\n\t if (next === void 0) { next = false; }\n\t var idx = _this.state.historyn;\n\t var inc = (direction == 0 /* Reverse */) ? 1 : -1;\n\t if (next) {\n\t idx = idx + inc;\n\t }\n\t for (; idx > 0 && idx <= _this.state.history.length; idx = idx + inc) {\n\t var entry = _this.state.history[_this.state.history.length - idx];\n\t var point = entry.indexOf(_this.state.searchText);\n\t if (point > -1) {\n\t return {\n\t point: point,\n\t promptText: entry,\n\t searchDirection: direction,\n\t searchInit: false,\n\t historyn: idx,\n\t };\n\t }\n\t }\n\t return {\n\t searchDirection: direction,\n\t searchInit: false,\n\t };\n\t };\n\t // DOM management\n\t this.scrollSemaphore = 0;\n\t this.scrollIfBottom = function () {\n\t if (_this.scrollSemaphore > 0 || _this.child.container.scrollTop == _this.child.container.scrollHeight - _this.child.container.offsetHeight) {\n\t _this.scrollSemaphore++;\n\t return _this.scrollIfBottomTrue;\n\t }\n\t else {\n\t return null;\n\t }\n\t };\n\t this.scrollIfBottomTrue = function () {\n\t _this.scrollToBottom();\n\t _this.scrollSemaphore--;\n\t };\n\t this.scrollToBottom = function () {\n\t _this.child.container.scrollTop = _this.child.container.scrollHeight;\n\t var rect = _this.child.focus.getBoundingClientRect();\n\t if (rect.top < 0 || rect.left < 0 ||\n\t rect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t rect.right > (window.innerWidth || document.documentElement.clientWidth)) {\n\t _this.child.typer.scrollIntoView(false);\n\t }\n\t };\n\t this.nextLabel = function () {\n\t if (typeof _this.props.promptLabel === \"string\") {\n\t return _this.props.promptLabel;\n\t }\n\t else {\n\t return _this.props.promptLabel();\n\t }\n\t };\n\t this.state = {\n\t focus: false,\n\t acceptInput: true,\n\t typer: '',\n\t point: 0,\n\t currLabel: this.nextLabel(),\n\t promptText: '',\n\t restoreText: '',\n\t searchText: '',\n\t searchDirection: null,\n\t searchInit: false,\n\t log: [],\n\t history: [],\n\t historyn: 0,\n\t kill: [],\n\t killn: 0,\n\t argument: null,\n\t lastCommand: 0 /* Default */,\n\t };\n\t }\n\t // Component Lifecycle\n\t default_1.prototype.componentDidMount = function () {\n\t if (this.props.autofocus) {\n\t this.focus();\n\t }\n\t };\n\t default_1.prototype.nextWord = function () {\n\t // Find first alphanumeric char after first non-alphanumeric char\n\t var search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t if (search) {\n\t return search.index + this.state.point + 1;\n\t }\n\t else {\n\t return this.state.promptText.length;\n\t }\n\t };\n\t default_1.prototype.previousWord = function () {\n\t // Find first non-alphanumeric char after first alphanumeric char in reverse\n\t var search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0, this.state.point - 1));\n\t if (search) {\n\t return search.index + 1;\n\t }\n\t else {\n\t return 0;\n\t }\n\t };\n\t default_1.prototype.render = function () {\n\t var _this = this;\n\t return React.createElement(\"div\", {ref: function (ref) { return _this.child.container = ref; }, className: \"react-console-container \" + (this.state.focus ? \"react-console-focus\" : \"react-console-nofocus\"), onClick: this.focus}, this.props.welcomeMessage ?\n\t React.createElement(\"div\", {className: \"react-console-message react-console-welcome\"}, this.props.welcomeMessage)\n\t : null, this.state.log.map(function (val) {\n\t return [\n\t React.createElement(ConsolePrompt, {label: val.label, value: val.command})\n\t ].concat(val.message.map(function (val, idx) {\n\t return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value, isTable: val.isTable});\n\t }));\n\t }), this.state.acceptInput ?\n\t React.createElement(ConsolePrompt, {label: this.state.currLabel, value: this.state.promptText, point: this.state.point, argument: this.state.argument})\n\t : null, React.createElement(\"div\", {style: { overflow: \"hidden\", height: 1, width: 1 }}, React.createElement(\"textarea\", {ref: function (ref) { return _this.child.typer = ref; }, className: \"react-console-typer\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: \"false\", style: { outline: \"none\",\n\t color: \"transparent\",\n\t backgroundColor: \"transparent\",\n\t border: \"none\",\n\t resize: \"none\",\n\t overflow: \"hidden\",\n\t }, onBlur: this.blur, onKeyDown: this.keyDown, onChange: this.change, onPaste: this.paste})), React.createElement(\"div\", {ref: function (ref) { return _this.child.focus = ref; }}, \" \"));\n\t };\n\t default_1.defaultProps = {\n\t promptLabel: '> ',\n\t continue: function () { return false; },\n\t cancel: function () { },\n\t };\n\t return default_1;\n\t}(React.Component));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = default_1;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = React;\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// react-console.min.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 051c9faad82129278752","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/dist.tar.gz b/dist/dist.tar.gz index 6e2496abc9401e4c4b5b9b14eb3379274004acd9..7b32ba4776e762e4ed941e84d8bf47a8a78bdba3 100644 GIT binary patch literal 24777 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 literal 23712 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 W0s!#;pG&QV$p}XD@6}EJv;Hr(pv`6g delta 22302 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 J8eISY005A`%qai> diff --git a/dist/dist/react-console.js b/dist/dist/react-console.js index eadd933..4971fa3 100644 --- a/dist/dist/react-console.js +++ b/dist/dist/react-console.js @@ -119,19 +119,38 @@ var Console = }; return ConsolePrompt; }(React.Component)); + var ConsoleTableHeader = function (props) { + if (props.headers) { + return React.createElement("thead", null, React.createElement("tr", null, props.headers.map(function (header) { + return React.createElement("th", {scope: "col", key: header}, header); + }))); + } + return null; + }; var ConsoleMessage = function (props) { - return React.createElement("div", {className: "react-console-message" + (props.type ? " react-console-message-" + props.type : "")}, props.value.map(function (val) { - if (typeof val == 'string') { - return val; - } - else { - return JSON.stringify(val); - } - }).join("\n")); + if (props.isTable) { + var data = props.value[0]; + return React.createElement("div", {className: "react-console-message react-console-table"}, React.createElement("table", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement("tbody", null, data.rows && data.rows.map(function (row, index) { + return React.createElement("tr", {key: index}, row.map(function (cell, cellIndex) { + return React.createElement("td", {key: cellIndex}, cell); + })); + })))); + } + else { + return React.createElement("div", {className: "react-console-message" + (props.type ? " react-console-message-" + props.type : "")}, props.value.map(function (val) { + if (typeof val == 'string') { + return val; + } + else { + return JSON.stringify(val); + } + }).join("\n")); + } }; ConsoleMessage.defaultProps = { type: null, value: [], + isTable: false }; ; ; @@ -164,6 +183,13 @@ var Console = log: log, }, _this.scrollIfBottom()); }; + this.logTable = function (tableData) { + var log = _this.state.log; + log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] }); + _this.setState({ + log: log, + }, _this.scrollIfBottom()); + }; this.return = function () { _this.setState({ acceptInput: true, @@ -919,7 +945,7 @@ var Console = return [ React.createElement(ConsolePrompt, {label: val.label, value: val.command}) ].concat(val.message.map(function (val, idx) { - return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value}); + return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value, isTable: val.isTable}); })); }), this.state.acceptInput ? React.createElement(ConsolePrompt, {label: this.state.currLabel, value: this.state.promptText, point: this.state.point, argument: this.state.argument}) diff --git a/dist/dist/react-console.js.map b/dist/dist/react-console.js.map index 562f39e..b530995 100644 --- a/dist/dist/react-console.js.map +++ b/dist/dist/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap dbe28ddacabc3ba712cc","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 dbe28ddacabc3ba712cc","\"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 ConsoleMessageProps {\n\ttype?: string;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\treturn
\n\t\t{props.value.map((val: any)=>{\n\t\t\tif(typeof val == 'string') {\n\t\t\t\treturn val;\n\t\t\t} else {\n\t\t\t\treturn JSON.stringify(val);\n\t\t\t}\n\t\t}).join(\"\\n\")}\n\t
;\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\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 9bfb7587d8ab92c74a5a","webpack:///./react-console.tsx","webpack:///external \"React\"","webpack:///./react-console.scss"],"names":[],"mappings":";;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uBAAe;AACf;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;;;;;;ACtCA,aAAY,CAAC;;;;;;AAEb,KAAY,KAAK,uBAAM,CAAO,CAAC;AAE/B,qBAAO,CAAsB,CAAC;AAQ9B;KAA4B,iCAAsC;KAAlE;SAA4B,8BAAsC;SAOjE,UAAK,GAED,EAAE,CAAC;SAQP,iBAAiB;SACjB,oBAAe,GAAW,CAAC,CAAC;KA2C7B,CAAC;KAnDA,sBAAsB;KACtB,yCAAiB,GAAjB;SACC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb,CAAC;KACD,0CAAkB,GAAlB;SACC,IAAI,CAAC,IAAI,EAAE,CAAC;KACb,CAAC;KAGD,4BAAI,GAAJ;SAAA,iBAcC;SAbA,yBAAyB;SACzB,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aACtB,EAAE,EAAC,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC;iBAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,sBAAsB,CAAC;aACtD,CAAC;aACD,IAAI,CAAC,eAAe,EAAE,CAAC;aACvB,MAAM,CAAC,UAAU,CAAE;iBAClB,KAAI,CAAC,eAAe,EAAE,CAAC;iBACvB,EAAE,EAAC,KAAI,CAAC,eAAe,IAAI,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;qBACnD,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,gDAAgD,CAAC;iBAChF,CAAC;aACF,CAAC,EAAE,IAAI,CAAC,CAAC;SACV,CAAC;KACF,CAAC;KACD,mCAAW,GAAX;SAAA,iBAUC;SATA,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;aACzB,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SAC3B,CAAC;SAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,qBAAC,IAAI,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAvB,CAAwB,EAAC,GAAG,EAAC,QAAQ,EAAC,SAAS,EAAC,sBAAsB,OAAc,CAAC,CAAC;SAClI,CAAC;SAAC,IAAI,CAAC,CAAC;aACP,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBACrD,qBAAC,IAAI,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,EAAvB,CAAwB,EAAC,GAAG,EAAC,QAAQ,EAAC,SAAS,EAAC,sBAAsB,GAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAE,CAAO;iBACjK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC;SAClD,CAAC;KACF,CAAC;KACD,8BAAM,GAAN;SACC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;SAC7B,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;aACxB,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aAClC,EAAE,EAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBACb,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,GAAC,CAAC,CAAC,CAAC;aACnC,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAK,GAAG,EAAE,CAAC;aACZ,CAAC;SACF,CAAC;SACD,MAAM,CAAC,qBAAC,GAAG,IAAC,SAAS,EAAC,0BAA0B,GAC/C,qBAAC,IAAI,IAAC,SAAS,EAAC,4BAA4B,GAAG,KAAO,CAAO,EAC7D,qBAAC,IAAI,IAAC,SAAS,EAAC,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,QAAU,CAAO,EAC9E,qBAAC,IAAI,IAAC,SAAS,EAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,EAAI,CAAO,CAC/D,CAAC;KACR,CAAC;KA3DM,0BAAY,GAAuB;SACzC,KAAK,EAAE,CAAC,CAAC;SACT,KAAK,EAAE,EAAE;SACT,KAAK,EAAE,IAAI;SACX,QAAQ,EAAE,IAAI;MACd;KAuDF,oBAAC;AAAD,EAAC,CA7D2B,KAAK,CAAC,SAAS,GA6D1C;AAKD,KAAI,kBAAkB,GAAuC,UAAS,KAA8B;KACnG,EAAE,EAAC,KAAK,CAAC,OAAO,CAAC,EAAC;SACjB,MAAM,CAAC,qBAAC,KAAK,SACV,qBAAC,EAAE,SACD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAc;aACjC,MAAM,CAAC,qBAAC,EAAE,IAAC,KAAK,EAAC,KAAK,EAAC,GAAG,EAAG,MAAQ,GAAG,MAAQ,CAAK,CAAC;SACvD,CAAC,CAAE,CACC,CACE;KACX,CAAC;KACD,MAAM,CAAC,IAAI,CAAC;AACb,EAAC;AAOD,KAAI,cAAc,GAAmC,UAAS,KAA0B;KACvF,EAAE,EAAC,KAAK,CAAC,OAAO,CAAC,EAAC;SACjB,IAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC5B,MAAM,CAAC,qBAAC,GAAG,IAAC,SAAS,EAAC,2CAA2C,GAChE,qBAAC,KAAK,SACL,oBAAC,kBAAkB,GAAC,OAAO,EAAE,IAAI,CAAC,OAAQ,EAAG,EAC7C,qBAAC,KAAK,SACJ,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAC,GAAa,EAAE,KAAa;aACxD,MAAM,CAAC,qBAAC,EAAE,IAAC,GAAG,EAAE,KAAM,GAAE,GAAG,CAAC,GAAG,CAAC,UAAC,IAAY,EAAE,SAAiB;iBAC9D,MAAM,CAAC,qBAAC,EAAE,IAAC,GAAG,EAAE,SAAU,GAAE,IAAK,CAAK,CAAC;aAAC,CAAC,CACzC,CAAK,CAAC;SACT,CAAC,CAAE,CACI,CACD,CACH,CAAC;KACR,CAAC;KAAA,IAAI,EAAC;SACL,MAAM,CAAC,qBAAC,GAAG,IAAC,SAAS,EAAE,uBAAuB,GAAG,CAAC,KAAK,CAAC,IAAI,GAAC,yBAAyB,GAAC,KAAK,CAAC,IAAI,GAAC,EAAE,CAAE,GACpG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAC,GAAQ;aACzB,EAAE,EAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,CAAC;iBAC3B,MAAM,CAAC,GAAG,CAAC;aACZ,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC5B,CAAC;SACF,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAE,CACT,CAAC;KACR,CAAC;AACF,EAAC;AACD,eAAc,CAAC,YAAY,GAAG;KAC7B,IAAI,EAAE,IAAI;KACV,KAAK,EAAE,EAAE;KACT,OAAO,EAAE,KAAK;EACd;AAgCA,EAAC;AAuBD,EAAC;AACF;KAA6B,6BAA0C;KACtE,mBAAY,KAAmB;SADhC,iBAu2BC;SAr2BC,kBAAM,KAAK,CAAC,CAAC;SA0Bd,UAAK,GAID,EAAE,CAAC;SACP,cAAc;SACd,QAAG,GAAG;aAAC,kBAAkB;kBAAlB,WAAkB,CAAlB,sBAAkB,CAAlB,IAAkB;iBAAlB,iCAAkB;;aACxB,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;aAC7D,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,SAAI,GAAG,UAAC,IAAY;aAAE,kBAAkB;kBAAlB,WAAkB,CAAlB,sBAAkB,CAAlB,IAAkB;iBAAlB,iCAAkB;;aACvC,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAC,CAAC,CAAC;aACzE,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,aAAQ,GAAG,UAAC,SAA6B;aACxC,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;aACzB,GAAG,CAAC,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAC,CAAC,CAAC;aAC/E,KAAI,CAAC,QAAQ,CAAC;iBACb,GAAG,EAAE,GAAG;cACR,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SACD,WAAM,GAAG;aACR,KAAI,CAAC,QAAQ,CAAC;iBACb,WAAW,EAAE,IAAI;iBACjB,SAAS,EAAE,KAAI,CAAC,SAAS,EAAE;cAC3B,EAAE,KAAI,CAAC,cAAc,EAAE,CAAE,CAAC;SAC5B,CAAC;SAOD,iBAAiB;SACjB,UAAK,GAAG;aACP,EAAE,EAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBACtC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;iBACzB,KAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;aACtD,CAAC;SACF,CAAC;SACD,SAAI,GAAG;aACN,KAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACjC,CAAC;SACD,YAAO,GAAG,UAAC,CAAgB;aAI1B,IAAI,QAAQ,GAAW;iBACtB,SAAS;iBACT,EAAE,EAAE,KAAI,CAAC,UAAU;iBACnB,OAAO;iBACP,EAAE,EAAE,KAAI,CAAC,YAAY;iBACrB,QAAQ;iBACR,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,KAAK;iBACL,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,OAAO;iBACP,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,YAAY;iBACZ,CAAC,EAAG,KAAI,CAAC,kBAAkB;iBAC3B,SAAS;iBACT,EAAE,EAAE,KAAI,CAAC,UAAU;iBACnB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,SAAS;iBAClB,QAAQ;iBACR,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,MAAM;iBACN,CAAC,EAAE,KAAI,CAAC,QAAQ;iBAChB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,UAAU;cACnB,CAAC;aACF,IAAI,SAAS,GAAW;iBACvB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,SAAS;iBAClB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,YAAY;iBACrB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,eAAe;iBACxB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,oBAAoB;iBAC7B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,oBAAoB;iBAC7B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,UAAU;iBACnB,WAAW;iBACX,wBAAwB;iBACxB,WAAW;iBACX,wBAAwB;iBACxB,WAAW;iBACX,0BAA0B;iBAC1B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,QAAQ;iBACjB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,gBAAgB;iBACzB,WAAW;iBACX,EAAE,EAAE,KAAI,CAAC,IAAI;iBACb,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,aAAa;cAOtB,CAAC;aACF,IAAI,UAAU,GAAW;iBACxB,aAAa;iBACb,CAAC,EAAE,KAAI,CAAC,gBAAgB;cAWxB,CAAC;aACF,IAAI,cAAc,GAAW,EAK5B,CAAC;aACF,IAAI,SAAS,GAAW;iBACvB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,WAAW;iBACpB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,YAAY;iBACrB,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,kCAAkC;iBAC3C,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,kCAAkC;iBAC3C,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,WAAW;iBACrB,aAAa;iBACb,oBAAoB;iBACpB,WAAW;iBACX,0BAA0B;iBAC1B,WAAW;iBACX,sBAAsB;iBACtB,WAAW;iBACX,wBAAwB;iBACxB,WAAW;iBACX,0BAA0B;iBAC1B,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,QAAQ;iBACjB,cAAc;iBACd,CAAC,EAAE,KAAI,CAAC,gBAAgB;iBACxB,WAAW;iBACX,0BAA0B;iBAC1B,WAAW;iBACX,kCAAkC;iBAClC,MAAM;iBACN,EAAE,EAAE,KAAI,CAAC,OAAO;cA6BhB,CAAC;aACF,IAAI,cAAc,GAAW;iBAC5B,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,kBAAkB;iBAC5B,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,YAAY;iBACtB,MAAM;iBACN,GAAG,EAAE,KAAI,CAAC,WAAW;cAKrB;aACD,IAAI,aAAa,GAAW;iBAC3B,QAAQ;iBACR,EAAE,EAAE,KAAI,CAAC,UAAU;cAKnB,CAAC;aACF,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC3B,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;qBACd,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;yBACf,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,CAAC,CAAC;6BAChC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;6BAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;yBACpB,CAAC;qBACF,CAAC;qBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;yBACvB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC,CAAC;6BACjC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;6BAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;yBACpB,CAAC;qBACF,CAAC;qBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC;yBACnC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;yBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;qBACpB,CAAC;qBACD,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;qBACtB,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC;yBAC5B,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;yBACvB,CAAC,CAAC,cAAc,EAAE,CAAC;qBACpB,CAAC;qBACD,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC;qBAClC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;qBACtB,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB,CAAC;aACF,CAAC;SACF,CAAC;SACD,WAAM,GAAG;aACR,IAAI,GAAG,GAAG,CAAC,CAAC;aACZ,GAAG,EAAC,EAAC,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;iBAClF,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;qBACzD,KAAK,CAAC;iBACP,CAAC;aACF,CAAC;aACD,IAAI,MAAM,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aACnD,IAAI,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;aAC5C,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,GAAC,MAAM,GAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;qBAChG,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;kBAC7B,EAAE,KAAI,CAAC,aAAa,CAAE,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAAC;qBACnC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;qBAC7B,WAAW,EAAE,eAAsB;kBACnC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;SACF,CAAC;SACD,UAAK,GAAG,UAAC,CAAiB;aACzB,IAAI,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAC7C,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,GAAC,MAAM,GAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;qBACvF,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;kBAC7B,EAAE,KAAI,CAAC,aAAa,CAAE,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAC;qBAC1B,WAAW,EAAE,eAAsB;kBACnC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aACD,CAAC,CAAC,cAAc,EAAE,CAAC;SACpB,CAAC;SACD,sBAAsB;SACtB,oBAAe,GAAG;aACjB,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,cAAS,GAAG;aACX,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;iBACnC,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,iBAAY,GAAG;aACd,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;iBACzB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,QAAQ,EAAE;iBACtB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,iBAAY,GAAG;aACd,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,YAAY,EAAE;iBAC1B,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,wCAAwC;SACxC,eAAU,GAAG;aACZ,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;aAC5B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBAC/C,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAC;qBACxB,KAAK,EAAE,EAAE;qBACT,WAAW,EAAE,eAAsB;kBACnC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,SAAO,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;iBACpC,IAAI,SAAO,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC;iBACjC,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;iBACzB,EAAE,EAAC,CAAC,SAAO,IAAI,SAAO,CAAC,SAAO,CAAC,MAAM,GAAC,CAAC,CAAC,IAAI,SAAO,CAAC,CAAC,CAAC;qBACrD,SAAO,CAAC,IAAI,CAAC,SAAO,CAAC,CAAC;iBACvB,CAAC;iBACD,GAAG,CAAC,IAAI,CAAC;qBACR,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS;qBAC3B,OAAO,EAAE,SAAO;qBAChB,OAAO,EAAE,EAAE;kBACX,CAAC,CAAC;iBACH,KAAI,CAAC,QAAQ,CAAC;qBACb,WAAW,EAAE,KAAK;qBAClB,KAAK,EAAE,EAAE;qBACT,KAAK,EAAE,CAAC;qBACR,UAAU,EAAE,EAAE;qBACd,WAAW,EAAE,EAAE;qBACf,GAAG,EAAE,GAAG;qBACR,OAAO,EAAE,SAAO;qBAChB,QAAQ,EAAE,CAAC;qBACX,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE;qBACF,KAAI,CAAC,cAAc,EAAE,CAAC;qBACtB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;yBACvB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAO,CAAC;qBAC5B,CAAC;qBAAC,IAAI,CAAC,CAAC;yBACP,KAAI,CAAC,MAAM,EAAE,CAAC;qBACf,CAAC;iBACF,CAAC,CAAC,CAAC;aACJ,CAAC;SACF,CAAC;SACD,oBAAe,GAAG;aACjB,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SACvB,CAAC;SACD,uBAAkB,GAAG;aACpB,KAAI,CAAC,aAAa,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAChD,CAAC;SACD,iBAAY,GAAG;aACd,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;SAC/C,CAAC;SACD,kBAAa,GAAG;aACf,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,eAAe,IAAI,eAAuB,CAAC,CAAC,CAAC;iBAC1D,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B,CAAC;SACF,CAAC;SACD,yBAAoB,GAAG;aACtB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,eAAuB,EAAE,IAAI,CAAC,EAAC;qBACjD,QAAQ,EAAE,wBAAuB,KAAI,CAAC,KAAK,CAAC,UAAU,QAAK;qBAC3D,WAAW,EAAE,cAAqB;kBAClC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC;qBACb,eAAe,EAAE,eAAuB;qBACxC,UAAU,EAAE,IAAI;qBAChB,QAAQ,EAAE,wBAAyB;qBACnC,WAAW,EAAE,cAAqB;kBAClC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,yBAAoB,GAAG;aACtB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,eAAuB,EAAE,IAAI,CAAC,EAAC;qBACjD,QAAQ,EAAE,wBAAuB,KAAI,CAAC,KAAK,CAAC,UAAU,QAAK;qBAC3D,WAAW,EAAE,cAAqB;kBAClC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,QAAQ,CAAC;qBACb,eAAe,EAAE,eAAuB;qBACxC,UAAU,EAAE,IAAI;qBAChB,QAAQ,EAAE,wBAAyB;qBACnC,WAAW,EAAE,cAAqB;kBAClC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,gBAAW,GAAG;aACb,KAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;SAC5B,CAAC;SACD,uCAAkC,GAAG;aACpC,OAAO;SACR,CAAC;SACD,uCAAkC,GAAG;aACpC,OAAO;SACR,CAAC;SACD,0BAAqB,GAAG;aACvB,OAAO;SACR,CAAC;SACD,yBAAoB,GAAG;aACtB,OAAO;SACR,CAAC;SACD,mCAA8B,GAAG;aAChC,OAAO;SACR,CAAC;SACD,kCAA6B,GAAG;aAC/B,OAAO;SACR,CAAC;SACD,eAAU,GAAG;aACZ,OAAO;SACR,CAAC;SACD,gBAAW,GAAG;aACb,OAAO;SACR,CAAC;SACD,6BAA6B;SAC7B,eAAU,GAAG;aACZ,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;2BAC5D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;qBACtD,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,uBAAkB,GAAG;aACpB,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAC,CAAC,CAAC;qBAC7E,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;kBAC7B,EAAE,KAAI,CAAC,aAAa,CAAE,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;iBAChC,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qBACzB,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC;2BAC9D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;qBACpD,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;SACF,CAAC;SACD,sBAAsB;SACtB,aAAQ,GAAG;aACV,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACvE,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACjE,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC/D,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,qBAAgB,GAAG;aAClB,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACzE,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACnE,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,CAAC;iBACR,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC7D,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,kBAAa,GAAG;aACf,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;uBAC1D,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAChE,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;aACrC,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,CAAC;iBACR,UAAU,EAAE,EAAE;iBACd,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,aAAQ,GAAG;aACV,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,EAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aACvF,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,EAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;aACjF,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;uBAC5D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC;iBACnD,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,qBAAgB,GAAG;aAClB,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;aAC3B,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,YAAY,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aAC3F,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,YAAY,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aACrF,CAAC;aACD,KAAI,CAAC,QAAQ,CAAC;iBACb,KAAK,EAAE,KAAI,CAAC,YAAY,EAAE;iBAC1B,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,KAAI,CAAC,YAAY,EAAE,CAAC;uBAC/D,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;iBACpD,IAAI,EAAE,IAAI;iBACV,KAAK,EAAE,CAAC;iBACR,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,YAAmB;cAChC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;SACzB,CAAC;SACD,SAAI,GAAG;aACN,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAC;iBACrD,WAAW,EAAE,YAAmB;cAChC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;SACH,CAAC;SACD,YAAO,GAAG;aACT,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,YAAmB,CAAC,CAAC,CAAC;iBAClD,IAAI,KAAK,GAAG,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzE,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAC1B,KAAI,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,EAAC;qBACpF,KAAK,EAAE,KAAK;qBACZ,WAAW,EAAE,YAAmB;kBAChC,CAAC,EAAE,KAAI,CAAC,cAAc,CACvB,CAAC;aACH,CAAC;SACF,CAAC;SACD,oBAAoB;SACpB,aAAa;SACb,aAAQ,GAAG;aACV,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACxB,mCAAmC;iBACnC,IAAI,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC7C,IAAI,IAAI,GAAG,CAAC,CAAC;iBACb,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC1B,OAAM,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;qBACzD,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjC,CAAC;iBAED,IAAI,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBAC1E,EAAE,EAAC,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC5B,qBAAqB;qBACrB,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;qBAC7B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;qBACf,GAAG,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;yBAC/B,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;qBAC9B,CAAC;qBACD,KAAI,CAAC,QAAQ,CAAC;yBACb,KAAK,EAAE,KAAK;yBACZ,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;yBAC3B,QAAQ,EAAE,IAAI;yBACd,WAAW,EAAE,eAAsB;sBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;iBAC1B,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;qBACnC,mBAAmB;qBACnB,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;qBACzB,GAAG,CAAC,IAAI,CAAC;yBACR,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS;yBAC3B,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU;yBAC9B,OAAO,EAAE,CAAC;iCACT,IAAI,EAAE,YAAY;iCAClB,KAAK,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;8BAC/B,CAAC;sBACF,CAAC,CAAC;qBACH,KAAI,CAAC,QAAQ,CAAC;yBACb,SAAS,EAAE,KAAI,CAAC,SAAS,EAAE;yBAC3B,GAAG,EAAE,GAAG;yBACR,QAAQ,EAAE,IAAI;yBACd,WAAW,EAAE,eAAsB;sBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;iBAC1B,CAAC;aACF,CAAC;SACF,CAAC;SACD,kBAAkB;SAClB,gBAAgB;SAChB,eAAU,GAAG;aACZ,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,cAAqB,CAAC,CAAC,CAAC;iBACpD,KAAI,CAAC,QAAQ,CAAC;qBACb,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,CAAC,CAAC;aACJ,CAAC;aACD,2BAA2B;SAC5B,CAAC;SACD,kBAAa,GAAG;aACf,EAAE,EAAC,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;iBAC3B,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;iBAC5B,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,GAAG,CAAC;iBACzB,GAAG,CAAC,IAAI,CAAC;qBACR,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS;qBAC3B,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU;qBAC9B,OAAO,EAAE,EAAE;kBACX,CAAC,CAAC;iBACH,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,EAAE;qBACT,KAAK,EAAE,CAAC;qBACR,UAAU,EAAE,EAAE;qBACd,WAAW,EAAE,EAAE;qBACf,GAAG,EAAE,GAAG;qBACR,QAAQ,EAAE,CAAC;qBACX,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAC,CAAC;aACzB,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;aACrB,CAAC;SACF,CAAC;SACD,mBAAmB;SACnB,eAAU,GAAG,UAAC,MAAc,EAAE,IAAY,EAAE,OAAmB,EAAE,KAA2B;aAAhD,uBAAmB,GAAnB,WAAmB;aAAE,qBAA2B,GAA3B,QAAgB,IAAI,CAAC,MAAM;aAC3F,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAC5E,CAAC;SACD,kBAAa,GAAG,UAAC,MAAc,EAAE,OAAmB;aAAnB,uBAAmB,GAAnB,WAAmB;aACnD,IAAI,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aAC3F,MAAM,CAAC;iBACN,KAAK,EAAE,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;iBACtG,UAAU,EAAE,UAAU;iBACtB,WAAW,EAAE,UAAU;iBACvB,QAAQ,EAAE,IAAI;iBACd,WAAW,EAAE,eAAsB;cACnC,CAAC;SACH,CAAC;SACD,cAAS,GAAG,UAAC,CAAS,EAAE,GAA0C;aAA1C,mBAA0C,GAA1C,MAAc,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;aACjE,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;aAC/B,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;iBACb,MAAM,CAAC,CAAC,CAAC;aACV,CAAC;aAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;iBACjB,MAAM,CAAC,GAAG,CAAC;aACZ,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAC,GAAG,CAAC;aACZ,CAAC;SACF,CAAC;SAmBD,eAAU,GAAG,UAAC,CAAS,EAAE,KAAa,EAAE,IAAY,EAAE,QAAwB;aAAxB,wBAAwB,GAAxB,eAAwB;aAC7E,EAAE,EAAC,IAAI,IAAI,CAAC,CAAC;iBAAC,MAAM,CAAC,CAAC,CAAC;aACvB,EAAE,EAAC,QAAQ,CAAC,CAAC,CAAC;iBACb,MAAM,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;aAC3C,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;iBAClB,EAAE,EAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;qBACd,MAAM,CAAC,CAAC,CAAC;iBACV,CAAC;iBAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC;qBAC1B,MAAM,CAAC,IAAI,CAAC;iBACb,CAAC;iBAAC,IAAI,CAAC,CAAC;qBACP,MAAM,CAAC,KAAK,CAAC;iBACd,CAAC;aACF,CAAC;SACF,CAAC;SACD,kBAAa,GAAG,UAAC,CAAS;aACzB,IAAI,QAAQ,GAAG,KAAI,CAAC,UAAU,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACzF,EAAE,EAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC;iBAClB,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM;qBACpC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW;qBAClC,QAAQ,EAAE,QAAQ;qBAClB,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;aAC1B,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,IAAI,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAC,QAAQ,CAAC,CAAC;iBACxE,KAAI,CAAC,QAAQ,CAAC;qBACb,KAAK,EAAE,UAAU,CAAC,MAAM;qBACxB,UAAU,EAAE,UAAU;qBACtB,QAAQ,EAAE,QAAQ;qBAClB,QAAQ,EAAE,IAAI;qBACd,WAAW,EAAE,eAAsB;kBACnC,EAAE,KAAI,CAAC,cAAc,CAAE,CAAC;aAC1B,CAAC;SACF,CAAC;SACD,kBAAa,GAAG,UAAC,SAAuD,EAAE,IAAqB;aAA9E,yBAAuD,GAAvD,YAA6B,KAAI,CAAC,KAAK,CAAC,eAAe;aAAE,oBAAqB,GAArB,YAAqB;aAC9F,IAAI,GAAG,GAAG,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;aAC9B,IAAI,GAAG,GAAG,CAAC,SAAS,IAAI,eAAuB,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC,CAAC;aACtD,EAAE,EAAC,IAAI,CAAC,CAAC,CAAC;iBACT,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;aACjB,CAAC;aACD,GAAG,EAAC,EAAC,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;iBACnE,IAAI,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAC,GAAG,CAAC,CAAC;iBAC9D,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;iBACjD,EAAE,EAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;qBACf,MAAM,CAAC;yBACN,KAAK,EAAE,KAAK;yBACZ,UAAU,EAAE,KAAK;yBACjB,eAAe,EAAE,SAAS;yBAC1B,UAAU,EAAE,KAAK;yBACjB,QAAQ,EAAE,GAAG;sBACb,CAAC;iBACH,CAAC;aACF,CAAC;aACD,MAAM,CAAC;iBACN,eAAe,EAAE,SAAS;iBAC1B,UAAU,EAAE,KAAK;cACjB,CAAC;SACH,CAAC;SACD,iBAAiB;SACjB,oBAAe,GAAG,CAAC,CAAC;SACpB,mBAAc,GAAG;aAChB,EAAE,EAAC,KAAI,CAAC,eAAe,GAAG,CAAC,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;iBACxI,KAAI,CAAC,eAAe,EAAE,CAAC;iBACvB,MAAM,CAAC,KAAI,CAAC,kBAAkB,CAAC;aAChC,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAC,IAAI,CAAC;aACb,CAAC;SACF,CAAC;SACD,uBAAkB,GAAG;aACpB,KAAI,CAAC,cAAc,EAAE,CAAC;aACtB,KAAI,CAAC,eAAe,EAAE,CAAC;SACxB,CAAC;SACD,mBAAc,GAAG;aAChB,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;aACnE,IAAI,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;aACpD,EAAE,EAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;iBAC/B,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC;iBAC3E,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CACxE,CAAC,CAAC,CAAC;iBAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;aAAC,CAAC;SAC9C,CAAC;SACD,cAAS,GAAG;aACX,EAAE,EAAC,OAAO,KAAI,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC;iBAC/C,MAAM,CAAC,KAAI,CAAC,KAAK,CAAC,WAAqB,CAAC;aACzC,CAAC;aAAC,IAAI,CAAC,CAAC;iBACP,MAAM,CAAE,KAAI,CAAC,KAAK,CAAC,WAA0B,EAAE,CAAC;aACjD,CAAC;SACF,CAAC;SA/yBA,IAAI,CAAC,KAAK,GAAG;aACZ,KAAK,EAAE,KAAK;aACZ,WAAW,EAAE,IAAI;aACjB,KAAK,EAAE,EAAE;aACT,KAAK,EAAE,CAAC;aACR,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;aAC3B,UAAU,EAAE,EAAE;aACd,WAAW,EAAE,EAAE;aACf,UAAU,EAAE,EAAE;aACd,eAAe,EAAE,IAAI;aACrB,UAAU,EAAE,KAAK;aACjB,GAAG,EAAE,EAAE;aACP,OAAO,EAAE,EAAE;aACX,QAAQ,EAAE,CAAC;aACX,IAAI,EAAE,EAAE;aACR,KAAK,EAAE,CAAC;aACR,QAAQ,EAAE,IAAI;aACd,WAAW,EAAE,eAAsB;UACnC,CAAC;KACH,CAAC;KAuCD,sBAAsB;KACtB,qCAAiB,GAAjB;SACC,EAAE,EAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;aACzB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd,CAAC;KACF,CAAC;KAsoBD,4BAAQ,GAAR;SACC,iEAAiE;SACjE,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5E,EAAE,EAAC,MAAM,CAAC,CAAC,CAAC;aACX,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAC5C,CAAC;SAAC,IAAI,CAAC,CAAC;aACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC;SACrC,CAAC;KACF,CAAC;KACD,gCAAY,GAAZ;SACC,4EAA4E;SAC5E,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,CAAC,CAAC,CAAC,CAAC;SAC1F,EAAE,EAAC,MAAM,CAAC,CAAC,CAAC;aACX,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;SACzB,CAAC;SAAC,IAAI,CAAC,CAAC;aACP,MAAM,CAAC,CAAC,CAAC;SACV,CAAC;KACF,CAAC;KA0FD,0BAAM,GAAN;SAAA,iBAmDC;SAlDA,MAAM,CAAC,qBAAC,GAAG,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,EAA1B,CAA2B,EACjD,SAAS,EAAE,0BAA0B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAC,qBAAqB,GAAC,uBAAuB,CAAE,EACzG,OAAO,EAAE,IAAI,CAAC,KAAM,GAEpB,IAAI,CAAC,KAAK,CAAC,cAAc;aACzB,qBAAC,GAAG,IAAC,SAAS,EAAC,6CAA6C,GAC1D,IAAI,CAAC,KAAK,CAAC,cAAe,CACtB;eACJ,IACF,EACA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,UAAC,GAAa;aAClC,MAAM,CAAC;iBACN,oBAAC,aAAa,GAAC,KAAK,EAAE,GAAG,CAAC,KAAM,EAAC,KAAK,EAAE,GAAG,CAAC,OAAQ,EAAG;sBACpD,GAAG,CAAC,OAAO,CAAC,GAAG,CAAE,UAAC,GAAe,EAAE,GAAW;iBAChD,MAAM,CAAC,oBAAC,cAAc,GAAC,GAAG,EAAE,GAAI,EAAC,IAAI,EAAE,GAAG,CAAC,IAAK,EAAC,KAAK,EAAE,GAAG,CAAC,KAAM,EAAC,OAAO,EAAE,GAAG,CAAC,OAAQ,EAAG,CAAC;aAC7F,CAAC,CAAC,CACF,CAAC;SACH,CAAC,CAAE,EACF,IAAI,CAAC,KAAK,CAAC,WAAW;aACtB,oBAAC,aAAa,GACb,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAU,EAC5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAW,EAC7B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAM,EACxB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAS,EAC5B;eACD,IACF,EACD,qBAAC,GAAG,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAG,GACvD,qBAAC,QAAQ,IACR,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,EAAtB,CAAuB,EACnC,SAAS,EAAC,qBAAqB,EAC/B,YAAY,EAAC,KAAK,EAClB,WAAW,EAAC,KAAK,EACjB,cAAc,EAAC,KAAK,EACpB,UAAU,EAAC,OAAO,EAClB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM;aACvB,KAAK,EAAE,aAAa;aACpB,eAAe,EAAE,aAAa;aAC9B,MAAM,EAAE,MAAM;aACd,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,QAAQ;UACjB,EACF,MAAM,EAAE,IAAI,CAAC,IAAK,EAClB,SAAS,EAAE,IAAI,CAAC,OAAQ,EACxB,QAAQ,EAAE,IAAI,CAAC,MAAO,EACtB,OAAO,EAAE,IAAI,CAAC,KAAM,EACT,CACP,EACN,qBAAC,GAAG,IAAC,GAAG,EAAE,aAAG,IAAI,YAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,EAAtB,CAAuB,OAAa,CAChD,CAAC;KACR,CAAC;KA/0BM,sBAAY,GAAG;SACrB,WAAW,EAAE,IAAI;SACjB,QAAQ,EAAE,cAAa,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACtC,MAAM,EAAE,cAAY,CAAC;MACrB,CAAC;KA40BH,gBAAC;AAAD,EAAC,CAv2B4B,KAAK,CAAC,SAAS,GAu2B3C;AAv2BD;4BAu2BC;;;;;;;AC9hCD,wB;;;;;;ACAA,0C","file":"react-console.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 9bfb7587d8ab92c74a5a","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/lib/react-console.js b/lib/react-console.js index f1f3db5..31933cb 100644 --- a/lib/react-console.js +++ b/lib/react-console.js @@ -119,19 +119,38 @@ module.exports = }; return ConsolePrompt; }(React.Component)); + var ConsoleTableHeader = function (props) { + if (props.headers) { + return React.createElement("thead", null, React.createElement("tr", null, props.headers.map(function (header) { + return React.createElement("th", {scope: "col", key: header}, header); + }))); + } + return null; + }; var ConsoleMessage = function (props) { - return React.createElement("div", {className: "react-console-message" + (props.type ? " react-console-message-" + props.type : "")}, props.value.map(function (val) { - if (typeof val == 'string') { - return val; - } - else { - return JSON.stringify(val); - } - }).join("\n")); + if (props.isTable) { + var data = props.value[0]; + return React.createElement("div", {className: "react-console-message react-console-table"}, React.createElement("table", null, React.createElement(ConsoleTableHeader, {headers: data.headers}), React.createElement("tbody", null, data.rows && data.rows.map(function (row, index) { + return React.createElement("tr", {key: index}, row.map(function (cell, cellIndex) { + return React.createElement("td", {key: cellIndex}, cell); + })); + })))); + } + else { + return React.createElement("div", {className: "react-console-message" + (props.type ? " react-console-message-" + props.type : "")}, props.value.map(function (val) { + if (typeof val == 'string') { + return val; + } + else { + return JSON.stringify(val); + } + }).join("\n")); + } }; ConsoleMessage.defaultProps = { type: null, value: [], + isTable: false }; ; ; @@ -164,6 +183,13 @@ module.exports = log: log, }, _this.scrollIfBottom()); }; + this.logTable = function (tableData) { + var log = _this.state.log; + log[_this.state.log.length - 1].message.push({ isTable: true, value: [tableData] }); + _this.setState({ + log: log, + }, _this.scrollIfBottom()); + }; this.return = function () { _this.setState({ acceptInput: true, @@ -919,7 +945,7 @@ module.exports = return [ React.createElement(ConsolePrompt, {label: val.label, value: val.command}) ].concat(val.message.map(function (val, idx) { - return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value}); + return React.createElement(ConsoleMessage, {key: idx, type: val.type, value: val.value, isTable: val.isTable}); })); }), this.state.acceptInput ? React.createElement(ConsolePrompt, {label: this.state.currLabel, value: this.state.promptText, point: this.state.point, argument: this.state.argument}) diff --git a/lib/react-console.js.map b/lib/react-console.js.map index f48895b..f902420 100644 --- a/lib/react-console.js.map +++ b/lib/react-console.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap 2ee6f46c4382e9843e73","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 2ee6f46c4382e9843e73","\"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 ConsoleMessageProps {\n\ttype?: string;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\treturn
\n\t\t{props.value.map((val: any)=>{\n\t\t\tif(typeof val == 'string') {\n\t\t\t\treturn val;\n\t\t\t} else {\n\t\t\t\treturn JSON.stringify(val);\n\t\t\t}\n\t\t}).join(\"\\n\")}\n\t
;\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\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 d7c7dadb9edc7a5b0668","webpack:///./react-console.tsx","webpack:///external \"react\"","webpack:///./react-console.scss"],"names":[],"mappings":"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","file":"react-console.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap d7c7dadb9edc7a5b0668","\"use strict\";\n\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport './react-console.scss';\n\ninterface ConsolePromptProps {\n\tpoint?: number;\n\tvalue: string;\n\tlabel: string;\n\targument?: string;\n}\nclass ConsolePrompt extends React.Component {\n\tstatic defaultProps: ConsolePromptProps = {\n\t\tpoint: -1,\n\t\tvalue: \"\",\n\t\tlabel: \"> \",\n\t\targument: null,\n\t}\n\tchild: {\n\t\tcursor?: Element;\n\t} = {};\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tthis.idle();\n\t}\n\tcomponentDidUpdate() {\n\t\tthis.idle();\n\t}\n\t// DOM Management\n\tupdateSemaphore: number = 0;\n\tidle() {\n\t\t// Blink cursor when idle\n\t\tif(this.child.cursor) {\n\t\t\tif(this.updateSemaphore == 0) {\n\t\t\t\tthis.child.cursor.className = \"react-console-cursor\";\n\t\t\t}\n\t\t\tthis.updateSemaphore++;\n\t\t\twindow.setTimeout( () => {\n\t\t\t\tthis.updateSemaphore--;\n\t\t\t\tif(this.updateSemaphore == 0 && this.child.cursor) {\n\t\t\t\t\tthis.child.cursor.className = \"react-console-cursor react-console-cursor-idle\";\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}\n\t}\n\trenderValue() {\n\t\tif(this.props.point < 0) {\n\t\t\treturn [this.props.value];\n\t\t} else if (this.props.point == this.props.value.length) {\n\t\t\treturn [this.props.value, this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\"> ];\n\t\t} else {\n\t\t\treturn [this.props.value.substring(0,this.props.point),\n\t\t\t\t this.child.cursor = ref} key=\"cursor\" className=\"react-console-cursor\">{this.props.value.substring(this.props.point,this.props.point+1)},\n\t\t\t\tthis.props.value.substring(this.props.point+1)];\n\t\t}\n\t}\n\trender() {\n\t\tlet label = this.props.label;\n\t\tif(this.props.argument) {\n\t\t\tlet idx = label.lastIndexOf(\"\\n\");\n\t\t\tif(idx >= 0) {\n\t\t\t\tlabel = label.substring(0, idx+1);\n\t\t\t} else {\n\t\t\t\tlabel = '';\n\t\t\t}\n\t\t}\n\t\treturn
\n\t\t\t{ label }\n\t\t\t{ this.props.argument }\n\t\t\t{ this.renderValue() }\n\t\t
;\n\t}\n}\n\ninterface ConsoleTableHeaderProps {\n\theaders?: string[];\n}\nlet ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){\t\n\tif(props.headers){\n\t\treturn \n\t\t\t\t\t\n\t\t\t\t\t\t{props.headers.map((header: string) => {\n\t\t\t\t\t\t\treturn { header };\n\t\t\t\t\t\t})}\n\t\t\t\t\t\n\t\t\t\t\n\t}\n\treturn null;\n}\n\ninterface ConsoleMessageProps {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nlet ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) {\n\tif(props.isTable){\n\t\tconst data = props.value[0];\n\t\treturn
\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t{data.rows && data.rows.map((row: string[], index: number) => {\n\t\t\t\t\t\treturn {row.map((cell: string, cellIndex: number) => { \n\t\t\t\t\t\t\t\treturn ; })\n\t\t\t\t\t\t\t};\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t
{cell}
\n\t\t
;\n\t}else{\n\t\treturn
\n\t\t\t{props.value.map((val: any)=>{\n\t\t\t\tif(typeof val == 'string') {\n\t\t\t\t\treturn val;\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}).join(\"\\n\")}\n\t\t
;\n\t}\n}\nConsoleMessage.defaultProps = {\n\ttype: null,\n\tvalue: [],\n\tisTable: false\n}\n\nexport interface ConsoleTableObject {\n\trows: Array;\n\theaders?: Array;\n}\n\nexport interface LogMessage {\n\ttype?: string;\n\tisTable?: boolean;\n\tvalue: any[];\n}\nexport interface LogEntry {\n\tlabel: string;\n\tcommand: string;\n\tmessage: LogMessage[];\n}\n\nexport interface ConsoleProps{\n\thandler: (command: string)=>any;\n\tcancel?: ()=>any;\n\tcomplete?: (words: string[], curr: number, promptText: string)=>string[];\n\tcontinue?: (promptText: string)=>boolean;\n\tautofocus?: boolean;\n\tpromptLabel?: string | (()=>string);\n\twelcomeMessage?: string;\n}\nexport const enum ConsoleCommand {\n\tDefault,\n\tSearch,\n\tKill,\n\tYank,\n};\nexport const enum SearchDirection {\n\tReverse,\n\tForward,\n}\nexport interface ConsoleState{\n\tfocus?: boolean;\n\tacceptInput?: boolean;\n\ttyper?: string;\n\tpoint?: number;\n\tcurrLabel?: string;\n\tpromptText?: string;\n\trestoreText?: string;\n\tsearchText?: string;\n\tsearchDirection?: SearchDirection;\n\tsearchInit?: boolean;\n\tlog?: LogEntry[];\n\thistory?: string[];\n\thistoryn?: number;\n\tkill?: string[];\n\tkilln?: number;\n\targument?: string;\n\tlastCommand?: ConsoleCommand;\n};\nexport default class extends React.Component {\n\tconstructor(props: ConsoleProps) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tfocus: false,\n\t\t\tacceptInput: true,\n\t\t\ttyper: '',\n\t\t\tpoint: 0,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t\tpromptText: '',\n\t\t\trestoreText: '',\n\t\t\tsearchText: '',\n\t\t\tsearchDirection: null,\n\t\t\tsearchInit: false,\n\t\t\tlog: [],\n\t\t\thistory: [],\n\t\t\thistoryn: 0,\n\t\t\tkill: [],\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tstatic defaultProps = {\n\t\tpromptLabel: '> ',\n\t\tcontinue: function() { return false; },\n\t\tcancel: function() {},\n\t};\n\tchild: {\n\t\ttyper?: HTMLTextAreaElement;\n\t\tcontainer?: HTMLElement;\n\t\tfocus?: HTMLElement;\n\t} = {};\n\t// Command API\n\tlog = (...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogX = (type: string, ...messages: any[]) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({type: type, value: messages});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\tlogTable = (tableData: ConsoleTableObject) => {\n\t\tlet log = this.state.log;\n\t\tlog[this.state.log.length-1].message.push({isTable: true, value: [tableData]});\n\t\tthis.setState({\n\t\t\tlog: log,\n\t\t}, this.scrollIfBottom() );\n\t}\n\treturn = () => {\n\t\tthis.setState({\n\t\t\tacceptInput: true,\n\t\t\tcurrLabel: this.nextLabel(),\n\t\t}, this.scrollIfBottom() );\n\t}\n\t// Component Lifecycle\n\tcomponentDidMount() {\n\t\tif(this.props.autofocus) {\n\t\t\tthis.focus();\n\t\t}\n\t}\n\t// Event Handlers\n\tfocus = () => {\n\t\tif(!window.getSelection().toString()) {\n\t\t\tthis.child.typer.focus();\n\t\t\tthis.setState({ focus: true }, this.scrollToBottom );\n\t\t}\n\t}\n\tblur = () => {\n\t\tthis.setState({ focus: false });\n\t}\n\tkeyDown = (e: KeyboardEvent) => {\n\t\tinterface keyMap {\n\t\t\t[key: number]: ()=>void\n\t\t}\n\t\tlet keyCodes: keyMap = {\n\t\t\t// return\n\t\t\t13: this.acceptLine,\n\t\t\t// left\n\t\t\t37: this.backwardChar,\n\t\t\t// right\n\t\t\t39: this.forwardChar,\n\t\t\t// up\n\t\t\t38: this.previousHistory,\n\t\t\t// down\n\t\t\t40: this.nextHistory,\n\t\t\t// backspace\n\t\t\t8: this.backwardDeleteChar,\n\t\t\t// delete\n\t\t\t46: this.deleteChar,\n\t\t\t// end\n\t\t\t35: this.endOfLine,\n\t\t\t// start\n\t\t\t36: this.beginningOfLine,\n\t\t\t// tab\n\t\t\t9: this.complete,\n\t\t\t// esc\n\t\t\t27: this.prefixMeta,\n\t\t};\n\t\tvar ctrlCodes: keyMap = {\n\t\t\t// C-a\n\t\t\t65: this.beginningOfLine,\n\t\t\t// C-e\n\t\t\t69: this.endOfLine,\n\t\t\t// C-f\n\t\t\t70: this.forwardChar,\n\t\t\t// C-b\n\t\t\t66: this.backwardChar,\n\t\t\t// C-l\n\t\t\t76: this.clearScreen,\n\t\t\t// C-p\n\t\t\t80: this.previousHistory,\n\t\t\t// C-n\n\t\t\t78: this.nextHistory,\n\t\t\t// C-r\n\t\t\t82: this.reverseSearchHistory,\n\t\t\t// C-s\n\t\t\t83: this.forwardSearchHistory,\n\t\t\t// C-d\n\t\t\t68: this.deleteChar, // TODO EOF\n\t\t\t// C-q TODO\n\t\t\t//81: this.quotedInsert,\n\t\t\t// C-v TODO\n\t\t\t//86: this.quotedInsert,\n\t\t\t// C-t TODO\n\t\t\t//84: this.transposeChars,\n\t\t\t// C-k\n\t\t\t75: this.killLine,\n\t\t\t// C-u\n\t\t\t85: this.backwardKillLine,\n\t\t\t// C-y TODO\n\t\t\t89: this.yank,\n\t\t\t// C-c\n\t\t\t67: this.cancelCommand,\n\t\t\t// C-w TODO\n\t\t\t//87: this.killPreviousWhitespace,\n\t\t\t// C-] TODO\n\t\t\t//221: this.characterSearch,\n\t\t\t// C-x TODO\n\t\t\t//88: this.prefixCtrlX,\n\t\t};\n\t\tvar ctrlXCodes: keyMap = { // TODO state\n\t\t\t// C-x Rubout\n\t\t\t8: this.backwardKillLine,\n\t\t\t// C-x ( TODO\n\t\t\t//57: this.startKbdMacro,\n\t\t\t// C-x ) TODO\n\t\t\t//48: this.endKbdMacro,\n\t\t\t// C-x e TODO\n\t\t\t//69: this.callLastKbdMacro,\n\t\t\t// C-x C-u TODO\n\t\t\t//85: this.undo,\n\t\t\t// C-x C-x TODO\n\t\t\t//88: this.exchangePointAndMark,\n\t\t};\n\t\tvar ctrlShiftCodes: keyMap = {\n\t\t\t// C-_ TODO\n\t\t\t//189: this.undo,\n\t\t\t// C-@ TODO\n\t\t\t//50: this.setMark,\n\t\t};\n\t\tvar metaCodes: keyMap = {\n\t\t\t// M-f\n\t\t\t70: this.forwardWord,\n\t\t\t// M-b\n\t\t\t66: this.backwardWord,\n\t\t\t// M-p\n\t\t\t80: this.nonIncrementalReverseSearchHistory,\n\t\t\t// M-n\n\t\t\t78: this.nonIncrementalForwardSearchHistory,\n\t\t\t// M-.\n\t\t\t190: this.yankLastArg,\n\t\t\t// M-TAB TODO\n\t\t\t//9: this.tabInsert,\n\t\t\t// M-t TODO\n\t\t\t//84: this.transposeWords,\n\t\t\t// M-u TODO\n\t\t\t//85: this.upcaseWord,\n\t\t\t// M-l TODO\n\t\t\t//76: this.downcaseWord,\n\t\t\t// M-c TODO\n\t\t\t//67: this.capitalizeWord,\n\t\t\t// M-d\n\t\t\t68: this.killWord,\n\t\t\t// M-backspace\n\t\t\t8: this.backwardKillWord,\n\t\t\t// M-w TODO\n\t\t\t//87: this.unixWordRubout,\n\t\t\t// M-\\ TODO\n\t\t\t//220: this.deleteHorizontalSpace,\n\t\t\t// M-y\n\t\t\t89: this.yankPop,\n\t\t\t// M-0 TODO\n\t\t\t//48: () => this.digitArgument(0),\n\t\t\t// M-1 TODO\n\t\t\t//49: () => this.digitArgument(1),\n\t\t\t// M-2 TODO\n\t\t\t//50: () => this.digitArgument(2),\n\t\t\t// M-3 TODO\n\t\t\t//51: () => this.digitArgument(3),\n\t\t\t// M-4 TODO\n\t\t\t//52: () => this.digitArgument(4),\n\t\t\t// M-5 TODO\n\t\t\t//53: () => this.digitArgument(5),\n\t\t\t// M-6 TODO\n\t\t\t//54: () => this.digitArgument(6),\n\t\t\t// M-7 TODO\n\t\t\t//55: () => this.digitArgument(7),\n\t\t\t// M-8 TODO\n\t\t\t//56: () => this.digitArgument(8),\n\t\t\t// M-9 TODO\n\t\t\t//57: () => this.digitArgument(9),\n\t\t\t// M-- TODO\n\t\t\t//189: () => this.digitArgument('-'),\n\t\t\t// M-f TODO\n\t\t\t//71: () => this.abort,\n\t\t\t// M-r TODO\n\t\t\t//82: this.revertLine,\n\t\t\t// M-SPACE TODO\n\t\t\t//32: this.setMark,\n\t\t};\n\t\tvar metaShiftCodes: keyMap = { // TODO hook in\n\t\t\t// M-<\n\t\t\t188: this.beginningOfHistory,\n\t\t\t// M->\n\t\t\t190: this.endOfHistory,\n\t\t\t// M-_\n\t\t\t189: this.yankLastArg,\n\t\t\t// M-? TODO\n\t\t\t//191: this.possibleCompletions,\n\t\t\t// M-* TODO\n\t\t\t//56: this.insertCompletions,\n\t\t}\n\t\tvar metaCtrlCodes: keyMap = {\n\t\t\t// M-C-y\n\t\t\t89: this.yankNthArg,\n\t\t\t// M-C-] TODO\n\t\t\t//221: this.characterSearchBackward,\n\t\t\t// M-C-j TODO !!!\n\t\t\t//74: this.viEditingMode,\n\t\t};\n\t\tif(this.state.acceptInput) {\n\t\t\tif (e.altKey) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\tif (e.keyCode in metaCtrlCodes) {\n\t\t\t\t\t\tmetaCtrlCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.shiftKey) {\n\t\t\t\t\tif (e.keyCode in metaShiftCodes) {\n\t\t\t\t\t\tmetaShiftCodes[e.keyCode]();\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t} else if (e.keyCode in metaCodes) {\n\t\t\t\t\tmetaCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.ctrlKey) {\n\t\t\t\tif (e.keyCode in ctrlCodes) {\n\t\t\t\t\tctrlCodes[e.keyCode]();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t\te.preventDefault();\n\t\t\t} else if (e.keyCode in keyCodes) {\n\t\t\t\tkeyCodes[e.keyCode]();\n\t\t\t\te.preventDefault();\n\t\t\t}\n\t\t}\n\t}\n\tchange = () => {\n\t\tlet idx = 0;\n\t\tfor(;idx < this.state.typer.length && idx < this.child.typer.value.length; idx++) {\n\t\t\tif(this.state.typer[idx] != this.child.typer.value[idx]) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tlet insert = this.child.typer.value.substring(idx);\n\t\tlet replace = this.state.typer.length - idx;\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText, replace),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert, replace),{\n\t\t\t\t\ttyper: this.child.typer.value,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\tpaste = (e: ClipboardEvent) => {\n\t\tlet insert = e.clipboardData.getData('text');\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchInit?insert:this.textInsert(insert, this.state.searchText),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(insert),{\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t\te.preventDefault();\n\t}\n\t// Commands for Moving\n\tbeginningOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tendOfLine = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.state.promptText.length,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardChar = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.movePoint(-1),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tforwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.nextWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardWord = () => {\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t}, this.scrollToBottom);\n\t}\n\t// Commands for Manipulating the History\n\tacceptLine = () => {\n\t\tthis.child.typer.value = \"\";\n\t\tif(this.props.continue(this.state.promptText)) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(\"\\n\"),{\n\t\t\t\t\ttyper: \"\",\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tlet command = this.state.promptText;\n\t\t\tlet history = this.state.history;\n\t\t\tlet log = this.state.log;\n\t\t\tif(!history || history[history.length-1] != command) {\n\t\t\t\thistory.push(command);\n\t\t\t}\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: command,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\tacceptInput: false,\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistory: history,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, () => {\n\t\t\t\tthis.scrollToBottom();\n\t\t\t\tif(this.props.handler) {\n\t\t\t\t\tthis.props.handler(command)\n\t\t\t\t} else {\n\t\t\t\t\tthis.return();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\tpreviousHistory = () => {\n\t\tthis.rotateHistory(-1);\n\t}\n\tnextHistory = () => {\n\t\tthis.rotateHistory(1);\n\t}\n\tbeginningOfHistory = () => {\n\t\tthis.rotateHistory(-this.state.history.length);\n\t}\n\tendOfHistory = () => {\n\t\tthis.rotateHistory(this.state.history.length);\n\t}\n\ttriggerSearch = () => {\n\t\tif(this.state.searchDirection == SearchDirection.Reverse) {\n\t\t\tthis.reverseSearchHistory();\n\t\t} else {\n\t\t\tthis.forwardSearchHistory();\n\t\t}\n\t}\n\treverseSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Reverse, true),{\n\t\t\t\t\targument: `(reverse-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Reverse,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(reverse-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tforwardSearchHistory = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.searchHistory(SearchDirection.Forward, true),{\n\t\t\t\t\targument: `(forward-i-search)\\`${this.state.searchText}': `,\n\t\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tsearchDirection: SearchDirection.Forward,\n\t\t\t\tsearchInit: true,\n\t\t\t\targument: `(forward-i-search)\\`': `,\n\t\t\t\tlastCommand: ConsoleCommand.Search,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tclearScreen = () => {\n\t\tthis.setState({ log: [] });\n\t}\n\tnonIncrementalReverseSearchHistory = () => {\n\t\t// TODO\n\t}\n\tnonIncrementalForwardSearchHistory = () => {\n\t\t// TODO\n\t}\n\thistorySearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySearchForward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchBackward = () => {\n\t\t// TODO\n\t}\n\thistorySubstringSearchForward = () => {\n\t\t// TODO\n\t}\n\tyankNthArg = () => {\n\t\t// TODO\n\t}\n\tyankLastArg = () => {\n\t\t// TODO\n\t}\n\t// Commands for Changing Text\n\tdeleteChar = () => {\n\t\tif(this.state.point < this.state.promptText.length) {\n\t\t\tthis.setState({\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point+1),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\tbackwardDeleteChar = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\tsearchText: this.state.searchText.substring(0,this.state.searchText.length-1),\n\t\t\t\ttyper: this.child.typer.value,\n\t\t\t}, this.triggerSearch );\n\t\t} else if(this.state.point > 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.movePoint(-1),\n\t\t\t\tpromptText: this.state.promptText.substring(0,this.state.point-1)\n\t\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t}\n\t}\n\t// Killing and Yanking\n\tkillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(0,this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWholeLine = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ kill[0] + this.state.promptText.substring(this.state.point);\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText);\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: 0,\n\t\t\tpromptText: '',\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tkillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = kill[0] + this.state.promptText.substring(this.state.point,this.nextWord());\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.state.point,this.nextWord()));\n\t\t}\n\t\tthis.setState({\n\t\t\tpromptText: this.state.promptText.substring(0,this.state.point)\n\t\t\t\t+ this.state.promptText.substring(this.nextWord()),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tbackwardKillWord = () => {\n\t\tlet kill = this.state.kill;\n\t\tif(this.state.lastCommand == ConsoleCommand.Kill) {\n\t\t\tkill[0] = this.state.promptText.substring(this.previousWord(),this.state.point) + kill[0];\n\t\t} else {\n\t\t\tkill.unshift(this.state.promptText.substring(this.previousWord(),this.state.point));\n\t\t}\n\t\tthis.setState({\n\t\t\tpoint: this.previousWord(),\n\t\t\tpromptText: this.state.promptText.substring(0,this.previousWord())\n\t\t\t\t+ this.state.promptText.substring(this.state.point),\n\t\t\tkill: kill,\n\t\t\tkilln: 0,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Kill,\n\t\t}, this.scrollToBottom);\n\t}\n\tyank = () => {\n\t\tthis.setState(Object.assign(\n\t\t\tthis.consoleInsert(this.state.kill[this.state.killn]),{\n\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t}), this.scrollToBottom\n\t\t);\n\t}\n\tyankPop = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Yank) {\n\t\t\tlet killn = this.rotateRing(1, this.state.killn, this.state.kill.length);\n\t\t\tthis.setState(Object.assign(\n\t\t\t\tthis.consoleInsert(this.state.kill[killn], this.state.kill[this.state.killn].length),{\n\t\t\t\t\tkilln: killn,\n\t\t\t\t\tlastCommand: ConsoleCommand.Yank,\n\t\t\t\t}), this.scrollToBottom\n\t\t\t);\n\t\t}\n\t}\n\t// Numeric Arguments\n\t// Completing\n\tcomplete = () => {\n\t\tif(this.props.complete) {\n\t\t\t// Split text and find current word\n\t\t\tlet words = this.state.promptText.split(\" \");\n\t\t\tlet curr = 0;\n\t\t\tlet idx = words[0].length;\n\t\t\twhile(idx < this.state.point && curr + 1 < words.length) {\n\t\t\t\tidx += words[++curr].length + 1;\n\t\t\t}\n\n\t\t\tlet completions = this.props.complete(words, curr, this.state.promptText);\n\t\t\tif(completions.length == 1) {\n\t\t\t\t// Perform completion\n\t\t\t\twords[curr] = completions[0];\n\t\t\t\tlet point = -1;\n\t\t\t\tfor(let i = 0; i <= curr; i++) {\n\t\t\t\t\tpoint += words[i].length + 1;\n\t\t\t\t}\n\t\t\t\tthis.setState({\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: words.join(\" \"),\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t} else if (completions.length > 1) {\n\t\t\t\t// show completions\n\t\t\t\tlet log = this.state.log;\n\t\t\t\tlog.push({\n\t\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\t\tcommand: this.state.promptText,\n\t\t\t\t\tmessage: [{\n\t\t\t\t\t\ttype: \"completion\",\n\t\t\t\t\t\tvalue: [completions.join(\"\\t\")],\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t\tthis.setState({\n\t\t\t\t\tcurrLabel: this.nextLabel(),\n\t\t\t\t\tlog: log,\n\t\t\t\t\targument: null,\n\t\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t\t}, this.scrollToBottom );\n\t\t\t}\n\t\t}\n\t}\n\t// Keyboard Macros\n\t// Miscellaneous\n\tprefixMeta = () => {\n\t\tif(this.state.lastCommand == ConsoleCommand.Search) {\n\t\t\tthis.setState({\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t});\n\t\t}\n\t\t// TODO Meta prefixed state\n\t}\n\tcancelCommand = () => {\n\t\tif(this.state.acceptInput) { // Typing command\n\t\t\tthis.child.typer.value = \"\";\n\t\t\tlet log = this.state.log;\n\t\t\tlog.push({\n\t\t\t\tlabel: this.state.currLabel,\n\t\t\t\tcommand: this.state.promptText,\n\t\t\t\tmessage: []\n\t\t\t});\n\t\t\tthis.setState({\n\t\t\t\ttyper: \"\",\n\t\t\t\tpoint: 0,\n\t\t\t\tpromptText: \"\",\n\t\t\t\trestoreText: \"\",\n\t\t\t\tlog: log,\n\t\t\t\thistoryn: 0,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom);\n\t\t} else { // command is executing, call handler\n\t\t\tthis.props.cancel();\n\t\t}\n\t}\n\t// Helper functions\n\ttextInsert = (insert: string, text: string, replace: number = 0, point: number = text.length): string => {\n\t\treturn text.substring(0, point - replace) + insert + text.substring(point);\n\t}\n\tconsoleInsert = (insert: string, replace: number = 0): ConsoleState => {\n\t\tlet promptText = this.textInsert(insert, this.state.promptText, replace, this.state.point);\n\t\treturn {\n\t\t\tpoint: this.movePoint(insert.length - replace, insert.length - replace + this.state.promptText.length),\n\t\t\tpromptText: promptText,\n\t\t\trestoreText: promptText,\n\t\t\targument: null,\n\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t};\n\t}\n\tmovePoint = (n: number, max: number = this.state.promptText.length) => {\n\t\tlet pos = this.state.point + n;\n\t\tif (pos < 0) {\n\t\t\treturn 0;\n\t\t} if (pos > max) {\n\t\t\treturn max;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n\tnextWord(): number {\n\t\t// Find first alphanumeric char after first non-alphanumeric char\n\t\tlet search = /\\W\\w/.exec(this.state.promptText.substring(this.state.point));\n\t\tif(search) {\n\t\t\treturn search.index + this.state.point + 1;\n\t\t} else {\n\t\t\treturn this.state.promptText.length;\n\t\t}\n\t}\n\tpreviousWord(): number {\n\t\t// Find first non-alphanumeric char after first alphanumeric char in reverse\n\t\tlet search = /\\W\\w(?!.*\\W\\w)/.exec(this.state.promptText.substring(0,this.state.point-1));\n\t\tif(search) {\n\t\t\treturn search.index + 1;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\trotateRing = (n: number, ringn: number, ring: number, circular: boolean = true): number => {\n\t\tif(ring == 0) return 0;\n\t\tif(circular) {\n\t\t\treturn (ring + (ringn + n) % ring) % ring;\n\t\t} else {\n\t\t\tringn = ringn - n;\n\t\t\tif(ringn < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else if (ringn >= ring) {\n\t\t\t\treturn ring;\n\t\t\t} else {\n\t\t\t\treturn ringn;\n\t\t\t}\n\t\t}\n\t}\n\trotateHistory = (n: number) => {\n\t\tlet historyn = this.rotateRing(n, this.state.historyn, this.state.history.length, false);\n\t\tif(historyn == 0) {\n\t\t\tthis.setState({\n\t\t\t\tpoint: this.state.restoreText.length,\n\t\t\t\tpromptText: this.state.restoreText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t} else {\n\t\t\tlet promptText = this.state.history[this.state.history.length-historyn];\n\t\t\tthis.setState({\n\t\t\t\tpoint: promptText.length,\n\t\t\t\tpromptText: promptText,\n\t\t\t\thistoryn: historyn,\n\t\t\t\targument: null,\n\t\t\t\tlastCommand: ConsoleCommand.Default,\n\t\t\t}, this.scrollToBottom );\n\t\t}\n\t}\n\tsearchHistory = (direction: SearchDirection = this.state.searchDirection, next: boolean = false): ConsoleState => {\n\t\tlet idx = this.state.historyn;\n\t\tlet inc = (direction == SearchDirection.Reverse)?1:-1;\n\t\tif(next) {\n\t\t\tidx = idx + inc;\n\t\t}\n\t\tfor(;idx > 0 && idx <= this.state.history.length; idx = idx + inc) {\n\t\t\tlet entry = this.state.history[this.state.history.length-idx];\n\t\t\tlet point = entry.indexOf(this.state.searchText);\n\t\t\tif(point > -1) {\n\t\t\t\treturn {\n\t\t\t\t\tpoint: point,\n\t\t\t\t\tpromptText: entry,\n\t\t\t\t\tsearchDirection: direction,\n\t\t\t\t\tsearchInit: false,\n\t\t\t\t\thistoryn: idx,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tsearchDirection: direction,\n\t\t\tsearchInit: false,\n\t\t};\n\t}\n\t// DOM management\n\tscrollSemaphore = 0;\n\tscrollIfBottom = () => {\n\t\tif(this.scrollSemaphore > 0 || this.child.container.scrollTop == this.child.container.scrollHeight - this.child.container.offsetHeight) {\n\t\t\tthis.scrollSemaphore++;\n\t\t\treturn this.scrollIfBottomTrue;\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t}\n\tscrollIfBottomTrue = () => {\n\t\tthis.scrollToBottom();\n\t\tthis.scrollSemaphore--;\n\t}\n\tscrollToBottom = () => {\n\t\tthis.child.container.scrollTop = this.child.container.scrollHeight;\n\t\tlet rect = this.child.focus.getBoundingClientRect();\n\t\tif(rect.top < 0 || rect.left < 0 ||\n\t\t\trect.bottom > (window.innerHeight || document.documentElement.clientHeight) ||\n\t\t\trect.right > (window.innerWidth || document.documentElement.clientWidth)\n\t\t) { this.child.typer.scrollIntoView(false); }\n\t}\n\tnextLabel = () => {\n\t\tif(typeof this.props.promptLabel === \"string\") {\n\t\t\treturn this.props.promptLabel as string;\n\t\t} else {\n\t\t\treturn (this.props.promptLabel as ()=>string)();\n\t\t}\n\t}\n\trender() {\n\t\treturn
this.child.container = ref}\n\t\t\t\tclassName={\"react-console-container \" + (this.state.focus?\"react-console-focus\":\"react-console-nofocus\")}\n\t\t\t\tonClick={this.focus}\n\t\t\t>\n\t\t\t{this.props.welcomeMessage?\n\t\t\t\t
\n\t\t\t\t\t{this.props.welcomeMessage}\n\t\t\t\t
\n\t\t\t\t: null\n\t\t\t}\n\t\t\t{this.state.log.map( (val: LogEntry) => {\n\t\t\t\treturn [\n\t\t\t\t\t,\n\t\t\t\t\t...val.message.map( (val: LogMessage, idx: number) => {\n\t\t\t\t\t\treturn ;\n\t\t\t\t\t})\n\t\t\t\t];\n\t\t\t})}\n\t\t\t{this.state.acceptInput?\n\t\t\t\t\n\t\t\t\t: null\n\t\t\t}\n\t\t\t
\n\t\t\t\t this.child.typer = ref}\n\t\t\t\t\tclassName=\"react-console-typer\"\n\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\tautoCorrect=\"off\"\n\t\t\t\t\tautoCapitalize=\"off\"\n\t\t\t\t\tspellCheck=\"false\"\n\t\t\t\t\tstyle={{ outline: \"none\",\n\t\t\t\t\t\tcolor: \"transparent\",\n\t\t\t\t\t\tbackgroundColor: \"transparent\",\n\t\t\t\t\t\tborder: \"none\",\n\t\t\t\t\t\tresize: \"none\",\n\t\t\t\t\t\toverflow: \"hidden\",\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={this.blur}\n\t\t\t\t\tonKeyDown={this.keyDown}\n\t\t\t\t\tonChange={this.change}\n\t\t\t\t\tonPaste={this.paste}\n\t\t\t\t>\n\t\t\t
\n\t\t\t
this.child.focus = ref}> 
\n\t\t
;\n\t}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./react-console.tsx","module.exports = require(\"react\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"react\"\n// module id = 1\n// module chunks = 0","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./react-console.scss\n// module id = 2\n// module chunks = 0"],"sourceRoot":""} \ No newline at end of file diff --git a/server.js b/server.js index fda9663..aed3e51 100755 --- a/server.js +++ b/server.js @@ -55,6 +55,7 @@ compiler.watch({},function(err,stats) { }); // Karma test server +/* let karmaServer = new karma.Server({ configFile: `${__dirname}/karma.conf.js`, singleRun: false, @@ -66,3 +67,4 @@ karmaServer.on('run_complete', function() { logEnd(); }); karmaServer.start(); +*/ \ No newline at end of file diff --git a/src/react-console.tsx b/src/react-console.tsx index d2bb870..5a62008 100644 --- a/src/react-console.tsx +++ b/src/react-console.tsx @@ -73,28 +73,68 @@ class ConsolePrompt extends React.Component { } } +interface ConsoleTableHeaderProps { + headers?: string[]; +} +let ConsoleTableHeader: React.SFC = function(props: ConsoleTableHeaderProps){ + if(props.headers){ + return + + {props.headers.map((header: string) => { + return { header }; + })} + + + } + return null; +} + interface ConsoleMessageProps { type?: string; + isTable?: boolean; value: any[]; } let ConsoleMessage: React.SFC = function(props: ConsoleMessageProps) { - return
- {props.value.map((val: any)=>{ - if(typeof val == 'string') { - return val; - } else { - return JSON.stringify(val); - } - }).join("\n")} -
; + if(props.isTable){ + const data = props.value[0]; + return
+ + + + {data.rows && data.rows.map((row: string[], index: number) => { + return {row.map((cell: string, cellIndex: number) => { + return ; }) + }; + })} + +
{cell}
+
; + }else{ + return
+ {props.value.map((val: any)=>{ + if(typeof val == 'string') { + return val; + } else { + return JSON.stringify(val); + } + }).join("\n")} +
; + } } ConsoleMessage.defaultProps = { type: null, value: [], + isTable: false +} + +export interface ConsoleTableObject { + rows: Array; + headers?: Array; } export interface LogMessage { type?: string; + isTable?: boolean; value: any[]; } export interface LogEntry { @@ -189,6 +229,13 @@ export default class extends React.Component { log: log, }, this.scrollIfBottom() ); } + logTable = (tableData: ConsoleTableObject) => { + let log = this.state.log; + log[this.state.log.length-1].message.push({isTable: true, value: [tableData]}); + this.setState({ + log: log, + }, this.scrollIfBottom() ); + } return = () => { this.setState({ acceptInput: true, @@ -968,7 +1015,7 @@ export default class extends React.Component { return [ , ...val.message.map( (val: LogMessage, idx: number) => { - return ; + return ; }) ]; })}