import React from "react"; import { connect } from "react-redux"; import classnames from "classnames"; import { WINDOWS, MEDIA_STATUS, LOAD_STYLE } from "../../constants"; import { loadFilesFromReferences, toggleMainWindowShadeMode, scrollVolume, loadMedia, } from "../../actionCreators"; import { getWindowShade } from "../../selectors"; import DropTarget from "../DropTarget"; import MiniTime from "../MiniTime"; 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"; import FocusTarget from "../FocusTarget"; interface StateProps { focused: WindowId | null; loading: boolean; doubled: boolean; mainShade: boolean; llama: boolean; working: boolean; status: MediaStatus | null; } interface DispatchProps { loadFilesFromReferences(files: FileList): void; scrollVolume(e: React.WheelEvent): void; toggleMainWindowShadeMode(): void; loadMedia(e: React.DragEvent): void; } interface OwnProps { analyser: AnalyserNode; filePickers: FilePicker[]; } type Props = StateProps & DispatchProps & OwnProps; export class MainWindow extends React.Component { 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 && }