Newer
Older
const MediaLibrary = require('../../lib/media-library');
const BackdropLibrary = require('../../containers/backdrop-library.jsx');
const CostumeLibrary = require('../../containers/costume-library.jsx');
const SpriteLibrary = require('../../containers/sprite-library.jsx');
const SpriteSelectorComponent = require('../sprite-selector/sprite-selector.jsx');
const StageSelector = require('../../containers/stage-selector.jsx');
const styles = require('./target-pane.css');
/*
* 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 = function (props) {
const {
editingTarget,
mediaLibrary,
backdropLibraryVisible,
costumeLibraryVisible,
spriteLibraryVisible,
onNewSpriteClick,
onNewCostumeClick,
onNewBackdropClick,
onRequestCloseBackdropLibrary,
onRequestCloseCostumeLibrary,
onRequestCloseSpriteLibrary,
onSelectSprite,
stage,
sprites,
vm,
...componentProps
} = props;
return (
<div
{...componentProps}
>
<SpriteSelectorComponent
selectedId={editingTarget}
sprites={sprites}
onSelectSprite={onSelectSprite}
/>
<StageSelector
backdropCount={stage.costumeCount}
id={stage.id}
selected={stage.id === editingTarget}
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<button onClick={onNewSpriteClick}>New Sprite</button>
{editingTarget === stage.id ? (
<button onClick={onNewBackdropClick}>New Backdrop</button>
) : (
<button onClick={onNewCostumeClick}>New Costume</button>
)}
<SpriteLibrary
mediaLibrary={mediaLibrary}
visible={spriteLibraryVisible}
vm={vm}
onRequestClose={onRequestCloseSpriteLibrary}
/>
<CostumeLibrary
mediaLibrary={mediaLibrary}
visible={costumeLibraryVisible}
vm={vm}
onRequestClose={onRequestCloseCostumeLibrary}
/>
<BackdropLibrary
mediaLibrary={mediaLibrary}
visible={backdropLibraryVisible}
vm={vm}
onRequestClose={onRequestCloseBackdropLibrary}
/>
</p>
</div>
);
};
const spriteShape = React.PropTypes.shape({
costume: React.PropTypes.shape({
skin: React.PropTypes.string,
name: React.PropTypes.string,
bitmapResolution: React.PropTypes.number,
rotationCenterX: React.PropTypes.number,
rotationCenterY: React.PropTypes.number
}),
id: React.PropTypes.string,
name: React.PropTypes.string,
order: React.PropTypes.number
});
TargetPane.propTypes = {
backdropLibraryVisible: React.PropTypes.bool,
costumeLibraryVisible: React.PropTypes.bool,
editingTarget: React.PropTypes.string,
mediaLibrary: React.PropTypes.instanceOf(MediaLibrary),
onNewBackdropClick: React.PropTypes.func,
onNewCostumeClick: React.PropTypes.func,
onNewSpriteClick: React.PropTypes.func,
onRequestCloseBackdropLibrary: React.PropTypes.func,
onRequestCloseCostumeLibrary: React.PropTypes.func,
onRequestCloseSpriteLibrary: React.PropTypes.func,
onSelectSprite: React.PropTypes.func,
spriteLibraryVisible: React.PropTypes.bool,
sprites: React.PropTypes.objectOf(spriteShape),
stage: spriteShape,
vm: React.PropTypes.instanceOf(VM)
};
module.exports = TargetPane;