diff --git a/src/components/blocks.js b/src/components/blocks.js index fdd6f146760a2014b5fb5d7018b9bc618da18955..357ae71b1f14617ed7cbb99e8abe624cbb5b89b0 100644 --- a/src/components/blocks.js +++ b/src/components/blocks.js @@ -2,9 +2,13 @@ const React = require('react'); class BlocksComponent extends React.Component { render () { + const { + componentRef, + ...props + } = this.props; return ( <div - ref={this.props.componentRef} + ref={componentRef} className="scratch-blocks" style={{ position: 'absolute', @@ -13,6 +17,7 @@ class BlocksComponent extends React.Component { bottom: 0, left: 0 }} + {...props} /> ); } diff --git a/src/components/green-flag.js b/src/components/green-flag.js index 20be45505677b855656029225b7b7a5ae04a9a64..ce7b490a57a746ec1e28e36fa3def732c3d76074 100644 --- a/src/components/green-flag.js +++ b/src/components/green-flag.js @@ -2,6 +2,11 @@ const React = require('react'); class GreenFlagComponent extends React.Component { render () { + const { + onClick, + title, + ...props + } = this.props; return ( <div className="scratch-green-flag" @@ -11,8 +16,9 @@ class GreenFlagComponent extends React.Component { right: 440, width: 50 }} + {...props} > - <button onClick={this.props.onClick}>{this.props.title}</button> + <button onClick={onClick}>{title}</button> </div> ); } diff --git a/src/components/gui.js b/src/components/gui.js index 861cda6928161dbb7ff460e8253698894c5ad30c..4e23bada095ce0cf216c52300b4aee438763e3a4 100644 --- a/src/components/gui.js +++ b/src/components/gui.js @@ -2,6 +2,10 @@ const React = require('react'); class GUIComponent extends React.Component { render () { + const { + children, + ...props + } = this.props; return ( <div className="scratch-gui" @@ -12,15 +16,16 @@ class GUIComponent extends React.Component { bottom: 0, left: 0 }} + {...props} > - {this.props.children} + {children} </div> ); } } GUIComponent.propTypes = { - children: React.PropTypes.arrayOf(React.PropTypes.node) + children: React.PropTypes.node }; module.exports = GUIComponent; diff --git a/src/components/sprite-selector.js b/src/components/sprite-selector.js index 93ddcb389b2237828aa7e5e8e684d5631e395933..a37213d9b25db729ea3736eab486ee28f942bc98 100644 --- a/src/components/sprite-selector.js +++ b/src/components/sprite-selector.js @@ -2,6 +2,12 @@ const React = require('react'); class SpriteSelectorComponent extends React.Component { render () { + const { + onChange, + sprites, + value, + ...props + } = this.props; return ( <div style={{ @@ -9,13 +15,14 @@ class SpriteSelectorComponent extends React.Component { top: 380, right: 10, }} + {...props} > <select multiple - value={this.props.value} - onChange={this.props.onChange} + value={value} + onChange={onChange} > - {this.props.sprites.map(sprite => ( + {sprites.map(sprite => ( <option value={sprite.id} key={sprite.id}> {sprite.name} </option> diff --git a/src/components/stage.js b/src/components/stage.js index 4cdbc78959e633ee286bb64ff3e1905976d53577..89cfa4d156220ecc7f31699c159dcb114b207ef2 100644 --- a/src/components/stage.js +++ b/src/components/stage.js @@ -2,17 +2,24 @@ const React = require('react'); class StageComponent extends React.Component { render () { + const { + canvasRef, + width, + height, + ...props + } = this.props; return ( <canvas className="scratch-stage" - ref={this.props.canvasRef} + ref={canvasRef} style={{ position: 'absolute', top: 10, right: 10, - width: this.props.width, - height: this.props.height, + width: width, + height: height, }} + {...props} /> ); } diff --git a/src/components/stop-all.js b/src/components/stop-all.js index 10ed6c397a13a57b393b6cb42dcc2ab583e6a408..6b8f616bc01211d1e1efa38372e9c98ac249ca4c 100644 --- a/src/components/stop-all.js +++ b/src/components/stop-all.js @@ -2,6 +2,11 @@ const React = require('react'); class StopAllComponent extends React.Component { render () { + const { + onClick, + title, + ...props + } = this.props; return ( <div className="scratch-stop-all" @@ -11,8 +16,9 @@ class StopAllComponent extends React.Component { right: 400, width: 50 }} + {...props} > - <button onClick={this.props.onClick}>{this.props.title}</button> + <button onClick={onClick}>{title}</button> </div> ); } diff --git a/src/containers/blocks.js b/src/containers/blocks.js index a43f18b9a3e927d500d8914fe3e29fdb5525aceb..c9f07ce13868b913d5336ea629629639248b9945 100644 --- a/src/containers/blocks.js +++ b/src/containers/blocks.js @@ -67,13 +67,21 @@ class Blocks extends React.Component { onWorkspaceUpdate (data) { ScratchBlocks.Events.disable(); this.workspace.clear(); - let dom = ScratchBlocks.Xml.textToDom(data.xml); + const dom = ScratchBlocks.Xml.textToDom(data.xml); ScratchBlocks.Xml.domToWorkspace(dom, this.workspace); ScratchBlocks.Events.enable(); } render () { + const { + options, // eslint-disable-line no-unused-vars + vm, // eslint-disable-line no-unused-vars + ...props + } = this.props; return ( - <BlocksComponent componentRef={c => this.blocks = c} /> + <BlocksComponent + componentRef={c => this.blocks = c} + {...props} + /> ); } } diff --git a/src/containers/green-flag.js b/src/containers/green-flag.js index da97dff719430c9c8fbab906cdf4463304ae0ba1..233313b7950bd4a387361e199fa25c666a403a15 100644 --- a/src/containers/green-flag.js +++ b/src/containers/green-flag.js @@ -13,7 +13,16 @@ class GreenFlag extends React.Component { this.props.vm.greenFlag(); } render () { - return <GreenFlagComponent onClick={this.onClick} />; + const { + vm, // eslint-disable-line no-unused-vars + ...props + } = this.props; + return ( + <GreenFlagComponent + onClick={this.onClick} + {...props} + /> + ); } } diff --git a/src/containers/sprite-selector.js b/src/containers/sprite-selector.js index b3c8ee744a269d72921305792b7b7b8853415dc0..2f5c83d44f702f089f5f7019c68772dbc5fbd0f4 100644 --- a/src/containers/sprite-selector.js +++ b/src/containers/sprite-selector.js @@ -23,6 +23,10 @@ class SpriteSelector extends React.Component { this.setState({targets: data}); } render () { + const { + vm, // eslint-disable-line no-unused-vars + ...props + } = this.props; return ( <SpriteSelectorComponent value={this.state.targets.editingTarget && [this.state.targets.editingTarget]} @@ -33,6 +37,7 @@ class SpriteSelector extends React.Component { name: target[1] } ))} + {...props} /> ); } diff --git a/src/containers/stage.js b/src/containers/stage.js index 11cf4b9e26e4c57b1e534a43a9cc0f964713f5e1..3a195ccf77a8d04b7145258a0b5baf27346dbb53 100644 --- a/src/containers/stage.js +++ b/src/containers/stage.js @@ -84,8 +84,15 @@ class Stage extends React.Component { this.animationFrame = requestAnimationFrame(this.animate); } render () { + const { + vm, // eslint-disable-line no-unused-vars + ...props + } = this.props; return ( - <StageComponent canvasRef={canvas => this.canvas = canvas} /> + <StageComponent + canvasRef={canvas => this.canvas = canvas} + {...props} + /> ); } } diff --git a/src/containers/stop-all.js b/src/containers/stop-all.js index 9e08aa16a9fc1de20337a3ef1f0a8268f44ad87a..9b4f0f95d41c9489de41694113df949c3d225f98 100644 --- a/src/containers/stop-all.js +++ b/src/containers/stop-all.js @@ -13,10 +13,14 @@ class StopAll extends React.Component { this.props.vm.stopAll(); } render () { + const { + vm, // eslint-disable-line no-unused-vars + ...props + } = this.props; return ( <StopAllComponent onClick={this.onClick} - {... this.props} + {...props} /> ); }