const bindAll = require('lodash.bindall'); const React = require('react'); const VM = require('scratch-vm'); const MediaLibrary = require('../lib/media-library'); const LibaryComponent = require('../components/library'); class CostumeLibrary extends React.Component { constructor (props) { super(props); bindAll(this, ['setData', 'selectItem']); this.state = {costumeData: []}; } componentWillReceiveProps (nextProps) { if (nextProps.visible && this.state.costumeData.length === 0) { this.props.mediaLibrary.getMediaLibrary('costume', this.setData); } } setData (data) { this.setState({costumeData: data}); } selectItem (item) { var vmCostume = { skin: 'https://cdn.assets.scratch.mit.edu/internalapi/asset/' + item.md5 + '/get/', name: item.name, rotationCenterX: item.info[0], rotationCenterY: item.info[1] }; if (item.info.length > 2) { vmCostume.bitmapResolution = item.info[2]; } this.props.vm.addCostume(vmCostume); } render () { return <LibaryComponent title="Costume Library" visible={this.props.visible} data={this.state.costumeData} onRequestClose={this.props.onRequestClose} onItemSelected={this.selectItem} />; } } CostumeLibrary.propTypes = { vm: React.PropTypes.instanceOf(VM).isRequired, mediaLibrary: React.PropTypes.instanceOf(MediaLibrary), visible: React.PropTypes.bool, onRequestClose: React.PropTypes.func }; module.exports = CostumeLibrary;