DisplaySwitcher.jsx 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react';
  2. import { TabContent, TabPane } from 'reactstrap';
  3. import propTypes from 'prop-types';
  4. import { withUnstatedContainers } from '../UnstatedUtils';
  5. import NavigationContainer from '../../services/NavigationContainer';
  6. import PageContainer from '../../services/PageContainer';
  7. import Editor from '../PageEditor';
  8. import Page from '../Page';
  9. import UserInfo from '../User/UserInfo';
  10. import TableOfContents from '../TableOfContents';
  11. import ContentLinkButtons from '../ContentLinkButtons';
  12. import PageAccessories from '../PageAccessories';
  13. import PageEditorByHackmd from '../PageEditorByHackmd';
  14. import EditorNavbarBottom from '../PageEditor/EditorNavbarBottom';
  15. const DisplaySwitcher = (props) => {
  16. const {
  17. navigationContainer, pageContainer,
  18. } = props;
  19. const { editorMode } = navigationContainer.state;
  20. const { isPageExist, pageUser } = pageContainer.state;
  21. return (
  22. <>
  23. <TabContent activeTab={editorMode}>
  24. <TabPane tabId="view">
  25. <div className="d-flex flex-column flex-lg-row-reverse">
  26. <div className="grw-side-contents-container">
  27. <div className="grw-side-contents-sticky-container">
  28. <div className="border-bottom pb-1">
  29. <PageAccessories isNotFoundPage={!isPageExist} />
  30. </div>
  31. <div className="d-none d-lg-block">
  32. <div id="revision-toc" className="revision-toc">
  33. <TableOfContents />
  34. </div>
  35. <ContentLinkButtons />
  36. </div>
  37. </div>
  38. </div>
  39. <div className="flex-grow-1 flex-basis-0 mw-0">
  40. {pageUser && <UserInfo pageUser={pageUser} />}
  41. <Page />
  42. </div>
  43. </div>
  44. </TabPane>
  45. <TabPane tabId="edit">
  46. <div id="page-editor">
  47. <Editor />
  48. </div>
  49. </TabPane>
  50. <TabPane tabId="hackmd">
  51. <div id="page-editor-with-hackmd">
  52. <PageEditorByHackmd />
  53. </div>
  54. </TabPane>
  55. </TabContent>
  56. {editorMode !== 'view' && <EditorNavbarBottom /> }
  57. </>
  58. );
  59. };
  60. DisplaySwitcher.propTypes = {
  61. navigationContainer: propTypes.instanceOf(NavigationContainer).isRequired,
  62. pageContainer: propTypes.instanceOf(PageContainer).isRequired,
  63. };
  64. export default withUnstatedContainers(DisplaySwitcher, [NavigationContainer, PageContainer]);