Skip to content

astralarya/react-console

Repository files navigation

react-console

Simple React.js console emulator.

NPM Version NPM Downloads Travis Build Coverage Status

Demo Image

Example

Simple prompt that echoes back input:

let EchoConsole = React.createClass({
	echo: function(text) {
		this.refs.console.log(text);
		this.refs.console.return();
	},
	render: function() {
		return <Console ref="console"
			handler={this.echo}
			autofocus={true}
		/>;
	}
});

See the example project used in the live demo.

Installation

npm install --save-dev react-console-component

Features

  • Readline emulation
  • Mobile friendly
  • Input Method Editor (IME) support

Props

Properties you can pass to the console element

Prop Type Description
autofocus? bool Autofocus the console on component mount.
cancel? ()=>any Function that should stop execution of the current command and call this.return().
complete? (words: string[], cursor: number, prompt: string)=>string[] Return a list of possible completions given a list of (words), index of the word containing the cursor (cursor) , and the full prompt text (prompt).
continue? (prompt: string)=>bool Return a boolean indicating whether to continue asking for user input on a newline given the current prompt text (prompt).
handler (command: string)=>any Handle a command (command), logging data with this.log() or this.logX(), and calling this.return() when finished.
promptLabel? string | ()=>string String or function that generates a string displayed to prompt user for input.
welcomeMessage? string Initial message displayed after mount.

Public members

Member Type Description
log (...messages: any)=>void Log messages to the console. If string, print the value, otherwise, print the JSON value of the message.
logX (type: string, ...messages: any)=>void Log messages of a particular type to the console. The messages will be given the class react-console-message-{type}.
return ()=>void Signal the current command has finished and a new prompt should be displayed.

Awknoledgements

React-console is inspired by chrisdone/jquery-console.