import React from 'react'; import PropTypes from 'prop-types'; import classNames from 'classnames'; import {FormattedMessage, defineMessages, injectIntl, intlShape} from 'react-intl'; import DragConstants from '../../lib/drag-constants'; import {ComingSoonTooltip} from '../coming-soon/coming-soon.jsx'; import SpriteSelectorItem from '../../containers/sprite-selector-item.jsx'; import styles from './backpack.css'; // TODO make sprite selector item not require onClick const noop = () => {}; const dragTypeMap = { // Keys correspond with the backpack-server item types costume: DragConstants.BACKPACK_COSTUME, sound: DragConstants.BACKPACK_SOUND, script: DragConstants.BACKPACK_CODE, sprite: DragConstants.BACKPACK_SPRITE }; const labelMap = defineMessages({ costume: { id: 'gui.backpack.costumeLabel', defaultMessage: 'costume', description: 'Label for costume backpack item' }, sound: { id: 'gui.backpack.soundLabel', defaultMessage: 'sound', description: 'Label for sound backpack item' }, script: { id: 'gui.backpack.scriptLabel', defaultMessage: 'script', description: 'Label for script backpack item' }, sprite: { id: 'gui.backpack.spriteLabel', defaultMessage: 'sprite', description: 'Label for sprite backpack item' } }); const Backpack = ({ blockDragOver, containerRef, contents, dragOver, error, expanded, intl, loading, showMore, onToggle, onDelete, onExport, onRename, onMouseEnter, onMouseLeave, onMore }) => (
{onToggle ? ( ) : ( )}
{expanded ? (
{/* eslint-disable-next-line no-negated-condition */} {error !== false ? (
{error}
) : ( loading ? (
) : ( contents.length > 0 ? (
{contents.map(item => ( ))} {showMore && ( )}
) : (
) ) )}
) : null}
); Backpack.propTypes = { blockDragOver: PropTypes.bool, containerRef: PropTypes.func, contents: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.string, thumbnailUrl: PropTypes.string, type: PropTypes.string, name: PropTypes.string })), dragOver: PropTypes.bool, error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), expanded: PropTypes.bool, intl: intlShape, loading: PropTypes.bool, onDelete: PropTypes.func, onExport: PropTypes.func, onRename: PropTypes.func, onMore: PropTypes.func, onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, onToggle: PropTypes.func, showMore: PropTypes.bool }; Backpack.defaultProps = { blockDragOver: false, contents: [], dragOver: false, expanded: false, loading: false, showMore: false, onMore: null, onToggle: null }; export default injectIntl(Backpack);