import React from "react"; import { connect } from "react-redux"; import classnames from "classnames"; import { WINDOWS, MEDIA_STATUS } from "../../constants"; import { loadFilesFromReferences, toggleMainWindowShadeMode, scrollVolume } from "../../actionCreators"; import { getWindowShade } from "../../selectors"; import DropTarget from "../DropTarget"; import MiniTime from "../MiniTime"; import { SET_FOCUSED_WINDOW } from "../../actionTypes"; import ClickedDiv from "../ClickedDiv"; import ContextMenuTarget from "../ContextMenuTarget"; import Visualizer from "../Visualizer"; import ActionButtons from "./ActionButtons"; import MainBalance from "./MainBalance"; import Close from "./Close"; import ClutterBar from "./ClutterBar"; import MainContextMenu from "./MainContextMenu"; import Eject from "./Eject"; import EqToggleButton from "./EqToggleButton"; import PlaylistToggleButton from "./PlaylistToggleButton"; import Kbps from "./Kbps"; import Khz from "./Khz"; import Marquee from "./Marquee"; import MonoStereo from "./MonoStereo"; import Position from "./Position"; import Repeat from "./Repeat"; import Shade from "./Shade"; import Minimize from "./Minimize"; import Shuffle from "./Shuffle"; import Time from "./Time"; import MainVolume from "./MainVolume"; import "../../../css/main-window.css"; import { MediaStatus, WindowId, AppState, Dispatch, FilePicker } from "../../types"; interface StateProps { focused: WindowId; loading: boolean; doubled: boolean; mainShade: boolean; llama: boolean; working: boolean; status: MediaStatus | null; } interface DispatchProps { setFocus(): void; loadFilesFromReferences(files: FileList): void; scrollVolume(e: React.WheelEvent): void; toggleMainWindowShadeMode(): void; } interface OwnProps { analyser: AnalyserNode; filePickers: FilePicker[]; } type Props = StateProps & DispatchProps & OwnProps; export class MainWindow extends React.Component { _handleClick = () => { this.props.setFocus(); }; _handleDrop = (e: React.DragEvent): void => { this.props.loadFilesFromReferences(e.dataTransfer.files); }; render() { const { focused, loading, doubled, mainShade, llama, status, working, filePickers } = this.props; const className = classnames({ window: true, play: status === MEDIA_STATUS.PLAYING, stop: status === MEDIA_STATUS.STOPPED, pause: status === MEDIA_STATUS.PAUSED, selected: focused === WINDOWS.MAIN, shade: mainShade, draggable: true, loading, doubled, llama }); return (
} > {mainShade && }
{!working &&