import bindAll from 'lodash.bindall'; import PropTypes from 'prop-types'; import React from 'react'; import {injectIntl, intlShape, defineMessages} from 'react-intl'; import VM from 'scratch-vm'; import {getSpriteLibrary} from '../lib/libraries/tw-async-libraries'; import randomizeSpritePosition from '../lib/randomize-sprite-position'; import spriteTags from '../lib/libraries/sprite-tags'; import LibraryComponent from '../components/library/library.jsx'; const messages = defineMessages({ libraryTitle: { defaultMessage: 'Choose a Sprite', description: 'Heading for the sprite library', id: 'gui.spriteLibrary.chooseASprite' } }); class SpriteLibrary extends React.PureComponent { constructor (props) { super(props); bindAll(this, [ 'handleItemSelect' ]); this.state = { data: getSpriteLibrary() }; } componentDidMount () { if (this.state.data.then) { this.state.data.then(data => this.setState({ data })); } } handleItemSelect (item) { // Randomize position of library sprite randomizeSpritePosition(item); this.props.vm.addSprite(JSON.stringify(item)).then(() => { this.props.onActivateBlocksTab(); }); } render () { return ( ); } } SpriteLibrary.propTypes = { intl: intlShape.isRequired, onActivateBlocksTab: PropTypes.func.isRequired, onRequestClose: PropTypes.func, vm: PropTypes.instanceOf(VM).isRequired }; export default injectIntl(SpriteLibrary);