Skip to content
Snippets Groups Projects
Commit 5169f97d authored by Ray Schamp's avatar Ray Schamp
Browse files

Add default blocks options and validation

Add skeleton toolbox component
parent 882a6107
Branches
Tags
No related merge requests found
import defaultsDeep from 'lodash.defaultsDeep';
import React from 'react';
import ScratchBlocks from 'scratch-blocks/blocks_compressed_vertical';
export default class Blocks extends React.Component {
constructor (props) {
super(props);
this.mountBlocks = this.mountBlocks.bind(this);
}
mountBlocks (component) {
ScratchBlocks.inject(component, {});
this.workspace = ScratchBlocks.inject(
component,
defaultsDeep({}, this.props.options, Blocks.defaultOptions)
);
}
render () {
return (
......@@ -13,3 +21,48 @@ export default class Blocks extends React.Component {
);
}
}
Blocks.propTypes = {
options: React.PropTypes.shape({
toolbox: React.PropTypes.element,
media: React.PropTypes.string,
zoom: React.PropTypes.shape({
controls: React.PropTypes.boolean,
wheel: React.PropTypes.boolean,
startScale: React.PropTypes.number
}),
colours: React.PropTypes.shape({
workspace: React.PropTypes.string,
flyout: React.PropTypes.string,
scrollbar: React.PropTypes.string,
scrollbarHover: React.PropTypes.string,
insertionMarker: React.PropTypes.string,
insertionMarkerOpacity: React.PropTypes.number,
fieldShadow: React.PropTypes.string,
dragShadowOpacity: React.PropTypes.number
})
}),
vm: React.PropTypes.object
};
Blocks.defaultOptions = {
zoom: {
controls: true,
wheel: true,
startScale: 0.75
},
colours: {
workspace: '#334771',
flyout: '#283856',
scrollbar: '#24324D',
scrollbarHover: '#0C111A',
insertionMarker: '#FFFFFF',
insertionMarkerOpacity: 0.3,
fieldShadow: 'rgba(255, 255, 255, 0.3)',
dragShadowOpacity: 0.6
}
};
Blocks.defaultProps = {
options: Blocks.defaultOptions
};
import React from 'react';
import VM from 'scratch-vm';
import Blocks from './blocks';
import Toolbox from './toolbox';
export default class GUI extends React.Component {
render () {
return (
<div className="scratch-gui">
<Blocks />
<Toolbox ref={toolbox => this.toolbox = toolbox} />
<Blocks
options={{
toolbox: this.toolbox
}}
/>
</div>
);
}
......
import React from 'react';
export default class Toolbox extends React.Component {
render () {
return (
<div className="scratch-toolbox" />
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment