2020-06-12 19:22:27 -04:00
|
|
|
import React, { useEffect, useState } from 'react'
|
2020-05-29 09:44:45 -04:00
|
|
|
import { useSelector } from 'react-redux'
|
2020-06-12 19:22:27 -04:00
|
|
|
import useMedia from 'use-media'
|
2020-05-29 09:44:45 -04:00
|
|
|
import { ApplicationState } from '../../redux'
|
2020-06-12 19:22:27 -04:00
|
|
|
import { setEditorModeConfig } from '../../redux/editor/methods'
|
|
|
|
import { Splitter } from '../common/splitter/splitter'
|
2020-05-29 09:44:45 -04:00
|
|
|
import { EditorWindow } from './editor-window/editor-window'
|
|
|
|
import { MarkdownPreview } from './markdown-preview/markdown-preview'
|
2020-05-31 16:51:36 -04:00
|
|
|
import { EditorMode } from './task-bar/editor-view-mode'
|
2020-05-29 09:44:45 -04:00
|
|
|
import { TaskBar } from './task-bar/task-bar'
|
|
|
|
|
|
|
|
interface RouteParameters {
|
|
|
|
id: string
|
|
|
|
}
|
|
|
|
|
|
|
|
const Editor: React.FC = () => {
|
|
|
|
const editorMode: EditorMode = useSelector((state: ApplicationState) => state.editorConfig.editorMode)
|
2020-06-12 19:22:27 -04:00
|
|
|
const isWide = useMedia({ minWidth: 576 })
|
|
|
|
const [firstDraw, setFirstDraw] = useState(true)
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
setFirstDraw(false)
|
|
|
|
}, [])
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
if (!firstDraw && !isWide && editorMode === EditorMode.BOTH) {
|
|
|
|
setEditorModeConfig(EditorMode.PREVIEW)
|
|
|
|
}
|
|
|
|
}, [editorMode, firstDraw, isWide])
|
2020-05-29 09:44:45 -04:00
|
|
|
|
|
|
|
return (
|
|
|
|
<div className={'d-flex flex-column vh-100'}>
|
|
|
|
<TaskBar/>
|
2020-06-12 19:22:27 -04:00
|
|
|
<Splitter
|
|
|
|
showLeft={editorMode === EditorMode.EDITOR || editorMode === EditorMode.BOTH}
|
|
|
|
left={<EditorWindow/>}
|
|
|
|
showRight={editorMode === EditorMode.PREVIEW || (editorMode === EditorMode.BOTH)}
|
|
|
|
right={<MarkdownPreview/>}
|
|
|
|
containerClassName={'overflow-hidden'}/>
|
2020-05-29 09:44:45 -04:00
|
|
|
</div>
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export { Editor }
|