import React, { ChangeEvent } from "react"; import { connect } from "react-redux"; import { AppState, Dispatch } from "../types"; import * as Actions from "../actionCreators"; import * as Selectors from "../selectors"; interface Props { id?: string; volume: number; showMarquee(): void; hideMarquee(): void; setVolume(e: ChangeEvent): void; style?: React.CSSProperties; className?: string; } const Volume = (props: Props) => ( ); const mapStateToProps = (state: AppState) => ({ volume: Selectors.getVolume(state), }); const mapDispatchToProps = (dispatch: Dispatch) => ({ showMarquee: () => dispatch(Actions.setFocus("volume")), hideMarquee: () => dispatch(Actions.unsetFocus()), setVolume: (e: ChangeEvent) => dispatch(Actions.setVolume(Number((e.target as HTMLInputElement).value))), }); export default connect( mapStateToProps, mapDispatchToProps )(Volume);