import PropTypes from "prop-types"; import PubSub from "pubsub-js"; import React, { Component, Fragment } from "react"; import { Page } from "../page/page"; import { TableOfContents } from "../table-of-contents/table-of-contents"; import { Tools } from "../tools/tools"; import { IDmScreenProps } from "./interfaces/i-dm-screen-props"; import { IDmScreenState } from "./interfaces/i-dm-screen-state"; class DmScreen extends Component { static propTypes = { contentsList: PropTypes.arrayOf(PropTypes.object), hashReferencesSupported: PropTypes.bool }; constructor(props) { super(props); this.state = { display: false }; } closeDmScreen = (): void => { this.setState({ display: false }); }; openDmScreen = (): void => { this.setState({ display: true }); }; getTableOfContents(): any { const { contentsList, hashReferencesSupported } = this.props; if (contentsList && hashReferencesSupported !== null) { return (

Table of Contents

); } return null; } getTools(): any { return (

Tools

); } componentDidMount() { PubSub.subscribe("dm-screen:close", this.closeDmScreen); PubSub.subscribe("dm-screen:open", this.openDmScreen); } render() { if (!this.state.display) return null; return (
X
{this.getTableOfContents()} {this.getTools()}
); } } export { DmScreen };