DisplaySwitcher.jsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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 Editor from '../PageEditor';
  7. import Page from '../Page';
  8. import PageEditorByHackmd from '../PageEditorByHackmd';
  9. import EditorNavbarBottom from '../PageEditor/EditorNavbarBottom';
  10. const DisplaySwitcher = (props) => {
  11. const { navigationContainer } = props;
  12. const { editorMode } = navigationContainer.state;
  13. $('#view').on('click', () => {
  14. $('body').removeClass('on-edit');
  15. $('body').removeClass('builtin-editor');
  16. $('body').removeClass('hackmd');
  17. });
  18. $('#edit').on('click', () => {
  19. $('body').addClass('on-edit');
  20. $('body').addClass('builtin-editor');
  21. $('body').removeClass('hackmd');
  22. });
  23. $('#hackmd').on('click', () => {
  24. $('body').addClass('on-edit');
  25. $('body').addClass('hackmd');
  26. $('body').removeClass('builtin-editor');
  27. });
  28. return (
  29. <>
  30. <TabContent activeTab={editorMode}>
  31. <TabPane tabId="view">
  32. <Page />
  33. </TabPane>
  34. <TabPane tabId="edit">
  35. <div id="page-editor" className="page-editor-preview-container page-editor-preview-body">
  36. <Editor />
  37. <EditorNavbarBottom />
  38. </div>
  39. </TabPane>
  40. <TabPane tabId="hackmd">
  41. <div id="page-editor-with-hackmd" className="hackmd-preinit hackmd-error">
  42. <PageEditorByHackmd />
  43. <EditorNavbarBottom />
  44. </div>
  45. </TabPane>
  46. </TabContent>
  47. </>
  48. );
  49. };
  50. DisplaySwitcher.propTypes = {
  51. navigationContainer: propTypes.instanceOf(NavigationContainer).isRequired,
  52. };
  53. export default withUnstatedContainers(DisplaySwitcher, [NavigationContainer]);