import * as React from "react"; import * as cx from "classnames"; import * as path from "path"; import { BaseChromeProps } from "./chrome.pc"; import { Dispatch } from "redux"; import { ProjectInfo, IS_MAC_OS, IS_WINDOWS } from "../../state"; import { CHROME_HEADER_MOUSE_DOWN, CHROME_CLOSE_BUTTON_CLICKED, CHROME_MINIMIZE_BUTTON_CLICKED, CHROME_MAXIMIZE_BUTTON_CLICKED } from "../../actions"; export type Props = { content: any; dispatch: Dispatch; projectInfo: ProjectInfo; unsaved: boolean; } & BaseChromeProps; export default (Base: React.ComponentClass) => class ChromeController extends React.PureComponent { onHeaderClick = (event: React.MouseEvent) => { this.props.dispatch({ type: CHROME_HEADER_MOUSE_DOWN }); }; onCloseClick = (event: React.MouseEvent) => { const { unsaved } = this.props; this.props.dispatch({ type: CHROME_CLOSE_BUTTON_CLICKED, unsaved, "@@public": true }); event.stopPropagation(); }; onMinimizeClick = (event: React.MouseEvent) => { this.props.dispatch({ type: CHROME_MINIMIZE_BUTTON_CLICKED, "@@public": true }); event.stopPropagation(); }; onMaximizeClick = (event: React.MouseEvent) => { this.props.dispatch({ type: CHROME_MAXIMIZE_BUTTON_CLICKED, "@@public": true }); event.stopPropagation(); }; render() { const { projectInfo, unsaved, ...rest } = this.props; const { onHeaderClick, onCloseClick, onMinimizeClick, onMaximizeClick } = this; let title: string = ""; if (projectInfo) { title = path.basename(projectInfo.path); } else { title = "Welcome"; } return ( ); } }; // prevents pushing content up when auto scrolling file navigator and layers const resetScroll = event => { event.preventDefault(); event.currentTarget.scrollTop = event.currentTarget.scrollLeft = 0; };