import React from "react"; import PropTypes from "prop-types"; import { connect } from "react-redux"; import { objectMap } from "../utils"; import Emitter from "../emitter"; import ContextMenuWrapper from "./ContextMenuWrapper"; import MainContextMenu from "./MainWindow/MainContextMenu"; import WindowManager from "./WindowManager"; import MainWindow from "./MainWindow"; import PlaylistWindow from "./PlaylistWindow"; import EqualizerWindow from "./EqualizerWindow"; import GenWindow from "./GenWindow"; import Skin from "./Skin"; import "../../css/webamp.css"; class App extends React.Component { constructor() { super(); this._handleKeyDown = this._handleKeyDown.bind(this); this._emitter = new Emitter(); } componentDidMount() { document.addEventListener("keydown", this._handleKeyDown); } componentWillUnmount() { document.removeEventListener("keydown", this._handleKeyDown); } _handleKeyDown(e) { this._emitter.trigger(this.props.focused, e); } _renderWindows() { const { media, genWindowsInfo, filePickers, genWindowComponents } = this.props; return objectMap(genWindowsInfo, (w, id) => { if (!w.open) { return null; } switch (id) { case "main": return ( ); case "equalizer": return ; case "playlist": return ; default: if (!w.generic) { throw new Error("Tried to render an unknown window:", id); } const Component = genWindowComponents[id]; return ( {({ height, width }) => ( this._emitter.on(id, listener)} analyser={media.getAnalyser()} width={width} height={height} /> )} ); } }); } render() { const { closed, container, filePickers } = this.props; if (closed) { return null; } return (
} >
); } } App.propTypes = { container: PropTypes.instanceOf(Element) }; const mapStateToProps = state => ({ focused: state.windows.focused, closed: state.display.closed, genWindowsInfo: state.windows.genWindows }); export default connect(mapStateToProps)(App);