import React from "react"; import { connect } from "react-redux"; import * as Actions from "../actionCreators"; import { Hr, Node, Parent } from "./ContextMenu"; import { AppState, Skin, Dispatch } from "../types"; interface StateProps { availableSkins: Skin[]; } interface DispatchProps { loadDefaultSkin(): void; setSkin(url: string): void; openSkinFileDialog(): void; } type Props = StateProps & DispatchProps; const SkinContextMenu = (props: Props) => (
"} /> {props.availableSkins.map(skin => ( props.setSkin(skin.url)} label={skin.name} /> ))}
); const mapStateToProps = (state: AppState): StateProps => ({ availableSkins: state.settings.availableSkins }); const mapDispatchToProps = (dispatch: Dispatch): DispatchProps => { return { loadDefaultSkin() { dispatch(Actions.loadDefaultSkin()); }, openSkinFileDialog() { dispatch(Actions.openSkinFileDialog()); }, setSkin(url: string) { dispatch(Actions.setSkinFromUrl(url)); } }; }; export default connect( mapStateToProps, mapDispatchToProps )(SkinContextMenu);