| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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}
- />
- )
- }
|