mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-07 20:31:06 -05:00
01439641ca
React IDE page: working editor GitOrigin-RevId: 3ba8cb787a6f7f8435686d8962adb7444d09acb5
69 lines
2.2 KiB
TypeScript
69 lines
2.2 KiB
TypeScript
import React, { useCallback, useState } from 'react'
|
|
import TwoColumnMainContent from '@/features/ide-react/components/layout/two-column-main-content'
|
|
import Editor from '@/features/ide-react/components/editor/editor'
|
|
import EditorSidebar from '@/features/ide-react/components/editor-sidebar'
|
|
import customLocalStorage from '@/infrastructure/local-storage'
|
|
import { useProjectContext } from '@/shared/context/project-context'
|
|
import { FileTreeFindResult } from '@/features/ide-react/types/file-tree'
|
|
|
|
type EditorAndSidebarProps = {
|
|
shouldPersistLayout: boolean
|
|
leftColumnDefaultSize: number
|
|
setLeftColumnDefaultSize: React.Dispatch<React.SetStateAction<number>>
|
|
}
|
|
|
|
export function EditorAndSidebar({
|
|
shouldPersistLayout,
|
|
leftColumnDefaultSize,
|
|
setLeftColumnDefaultSize,
|
|
}: EditorAndSidebarProps) {
|
|
const [leftColumnIsOpen, setLeftColumnIsOpen] = useState(true)
|
|
const { rootDocId, _id: projectId } = useProjectContext()
|
|
|
|
const [openDocId, setOpenDocId] = useState(
|
|
() => customLocalStorage.getItem(`doc.open_id.${projectId}`) || rootDocId
|
|
)
|
|
const [fileTreeReady, setFileTreeReady] = useState(false)
|
|
|
|
const handleFileTreeInit = useCallback(() => {
|
|
setFileTreeReady(true)
|
|
}, [])
|
|
|
|
const handleFileTreeSelect = useCallback(
|
|
(selectedEntities: FileTreeFindResult[]) => {
|
|
const firstDocId =
|
|
selectedEntities.find(result => result.type === 'doc')?.entity._id ||
|
|
null
|
|
setOpenDocId(firstDocId)
|
|
},
|
|
[]
|
|
)
|
|
|
|
const leftColumnContent = (
|
|
<EditorSidebar
|
|
shouldPersistLayout={shouldPersistLayout}
|
|
onFileTreeInit={handleFileTreeInit}
|
|
onFileTreeSelect={handleFileTreeSelect}
|
|
/>
|
|
)
|
|
const rightColumnContent = (
|
|
<Editor
|
|
shouldPersistLayout={shouldPersistLayout}
|
|
openDocId={openDocId}
|
|
fileTreeReady={fileTreeReady}
|
|
/>
|
|
)
|
|
|
|
return (
|
|
<TwoColumnMainContent
|
|
leftColumnId="editor-left-column"
|
|
leftColumnContent={leftColumnContent}
|
|
leftColumnDefaultSize={leftColumnDefaultSize}
|
|
setLeftColumnDefaultSize={setLeftColumnDefaultSize}
|
|
rightColumnContent={rightColumnContent}
|
|
leftColumnIsOpen={leftColumnIsOpen}
|
|
setLeftColumnIsOpen={setLeftColumnIsOpen}
|
|
shouldPersistLayout={shouldPersistLayout}
|
|
/>
|
|
)
|
|
}
|