Newer
Older
import PropTypes from 'prop-types';
import React from 'react';
import SpriteLibrary from '../../containers/sprite-library.jsx';
import SpriteSelectorComponent from '../sprite-selector/sprite-selector.jsx';
import StageSelector from '../../containers/stage-selector.jsx';
Steven Dale
committed
/*
* Pane that contains the sprite selector, sprite info, stage selector,
* and the new sprite, costume and backdrop buttons
* @param {object} props Props for the component
* @returns {React.Component} rendered component
*/
const TargetPane = ({
editingTarget,
spriteLibraryVisible,
onChangeSpriteDirection,
onChangeSpriteName,
onChangeSpriteSize,
onChangeSpriteVisibility,
onChangeSpriteX,
onChangeSpriteY,
onDeleteSprite,
onSurpriseSpriteClick,
onPaintSpriteClick,
onRequestCloseSpriteLibrary,
onSelectSprite,
stage,
sprites,
vm,
...componentProps
}) => (
className={styles.targetPane}
{...componentProps}
>
editingTarget={editingTarget}
hoveredTarget={hoveredTarget}
selectedId={editingTarget}
sprites={sprites}
onChangeSpriteDirection={onChangeSpriteDirection}
onChangeSpriteName={onChangeSpriteName}
onChangeSpriteSize={onChangeSpriteSize}
onChangeSpriteVisibility={onChangeSpriteVisibility}
onChangeSpriteX={onChangeSpriteX}
onChangeSpriteY={onChangeSpriteY}
onDeleteSprite={onDeleteSprite}
onDuplicateSprite={onDuplicateSprite}
onNewSpriteClick={onNewSpriteClick}
onPaintSpriteClick={onPaintSpriteClick}
onSelectSprite={onSelectSprite}
<div className={styles.stageSelectorWrapper}>
{stage.id && <StageSelector
assetId={
stage.costume &&
stage.costume.assetId
}
backdropCount={stage.costumeCount}
id={stage.id}
selected={stage.id === editingTarget}
onSelect={onSelectSprite}
/>}
<div>
{spriteLibraryVisible ? (
<SpriteLibrary
vm={vm}
onRequestClose={onRequestCloseSpriteLibrary}
/>
) : null}
</div>
</div>
</div>
const spriteShape = PropTypes.shape({
costume: PropTypes.shape({
url: PropTypes.string,
name: PropTypes.string.isRequired,
bitmapResolution: PropTypes.number.isRequired,
rotationCenterX: PropTypes.number.isRequired,
rotationCenterY: PropTypes.number.isRequired
id: PropTypes.string,
name: PropTypes.string,
order: PropTypes.number,
visibility: PropTypes.bool,
x: PropTypes.number,
y: PropTypes.number
extensionLibraryVisible: PropTypes.bool,
hoveredTarget: PropTypes.shape({
hoveredSprite: PropTypes.string,
receivedBlocks: PropTypes.bool
}),
onChangeSpriteDirection: PropTypes.func,
onChangeSpriteSize: PropTypes.func,
onChangeSpriteVisibility: PropTypes.func,
onChangeSpriteX: PropTypes.func,
onChangeSpriteY: PropTypes.func,
onDeleteSprite: PropTypes.func,
onDuplicateSprite: PropTypes.func,
onRequestCloseExtensionLibrary: PropTypes.func,
onRequestCloseSpriteLibrary: PropTypes.func,
onSelectSprite: PropTypes.func,
spriteLibraryVisible: PropTypes.bool,
sprites: PropTypes.objectOf(spriteShape),