/** * Copyright (c) 2017-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ const React = require("react"); const Container = require("./Container.js"); const Doc = require("./Doc.js"); const DocsSidebar = require("./DocsSidebar.js"); const Site = require("./Site.js"); const translation = require("../server/translation.js"); // component used to generate whole webpage for docs, including sidebar/header/footer class DocsLayout extends React.Component { render() { const metadata = this.props.metadata; const content = this.props.children; const i18n = translation[this.props.metadata.language]; return ( <Site config={this.props.config} className="sideNavVisible" title={ i18n ? translation[this.props.metadata.language]["localized-strings"][ this.props.metadata.localized_id ] || this.props.metadata.title : this.props.metadata.title } description={content.trim().split("\n")[0]} language={metadata.language} version={metadata.version} > <div className="docMainWrapper wrapper"> <DocsSidebar metadata={metadata} /> <Container className="mainContainer"> <Doc content={content} config={this.props.config} source={metadata.source} title={ i18n ? translation[this.props.metadata.language][ "localized-strings" ][this.props.metadata.localized_id] || this.props.metadata.title : this.props.metadata.title } language={metadata.language} /> <div className="docs-prevnext"> {metadata.previous_id && <a className="docs-prev button" href={metadata.previous_id + ".html#content"} > ←{" "} {i18n ? translation[this.props.metadata.language][ "localized-strings" ]["previous"] || "Previous" : "Previous"} </a>} {metadata.next_id && <a className="docs-next button" href={metadata.next_id + ".html#content"} > {i18n ? translation[this.props.metadata.language][ "localized-strings" ]["next"] || "Next" : "Next"}{" "} → </a>} </div> </Container> </div> </Site> ); } } module.exports = DocsLayout;