import * as React from "react"; import { connect } from "react-redux"; import GenWindow from "../GenWindow"; import { WINDOWS } from "../../constants"; import "../../../css/media-library-window.css"; import { AppState, SkinGenExColors } from "../../types"; import * as Selectors from "../../selectors"; import Sidebar from "./Sidebar"; import ArtistsTable from "./ArtistsTable"; import AlbumsTable from "./AlbumsTable"; import TracksTable from "./TracksTable"; interface Props { skinGenExColors: SkinGenExColors; } interface State { sidebarWidth: number; topPlaylistSectionHeight: number; artistsPanelWidth: number; } class MediaLibraryWindow extends React.Component { constructor(props: Props) { super(props); this.state = { sidebarWidth: 100, topPlaylistSectionHeight: 200, artistsPanelWidth: 150 }; } _onMouseMove(cb: (e: MouseEvent) => void) { const handleMouseUp = () => { document.removeEventListener("mousemove", cb); document.removeEventListener("mouseup", handleMouseUp); }; document.addEventListener("mousemove", cb); document.addEventListener("mouseup", handleMouseUp); } _handleSidebarMouseDown = (e: React.MouseEvent) => { const { pageX: startX } = e; const initialWidth = this.state.sidebarWidth; this._onMouseMove((moveEvent: MouseEvent) => { this.setState({ sidebarWidth: initialWidth + moveEvent.pageX - startX }); }); }; _handlePlaylistResizeMouseDown = (e: React.MouseEvent) => { const { pageY: startY } = e; const initialHeight = this.state.topPlaylistSectionHeight; this._onMouseMove((moveEvent: MouseEvent) => { this.setState({ topPlaylistSectionHeight: initialHeight + moveEvent.pageY - startY }); }); }; _handleArtistsResizeMouseDown = (e: React.MouseEvent) => { const { pageX: startX } = e; const initialWidth = this.state.artistsPanelWidth; this._onMouseMove((moveEvent: MouseEvent) => { this.setState({ artistsPanelWidth: initialWidth + moveEvent.pageX - startX }); }); }; render() { const colors = this.props.skinGenExColors; return ( {({ height, width }: { height: number; width: number }) => (
{/*
*/}
{/*
*/}
)} ); } } const mapStateToProps = (state: AppState) => { return { skinGenExColors: Selectors.getSkinGenExColors(state) }; }; export default connect(mapStateToProps)(MediaLibraryWindow);