| 123456789101112131415161718192021222324252627282930313233 |
- import { useCallback } from 'react'
- import { useProjectContext } from '@/shared/context/project-context'
- import { useEditorOpenDocContext } from '@/features/ide-react/context/editor-open-doc-context'
- import { useFileTreePathContext } from '@/features/file-tree/contexts/file-tree-path'
- import { isMainFile } from '@/features/pdf-preview/util/editor-files'
- export type RootDocInfo = {
- rootDocId: string | null
- rootResourcePath: string
- }
- export function useRootDoc(): () => RootDocInfo {
- const { project } = useProjectContext()
- const projectRootDocId = project?.rootDocId ?? null
- const { currentDocument } = useEditorOpenDocContext()
- const { pathInFolder } = useFileTreePathContext()
- // Inspecting the document content is too expensive to perform on every update.
- // Compute the rootDoc on-demand instead.
- return useCallback((): RootDocInfo => {
- let rootDocId: string | null = projectRootDocId
- if (
- currentDocument &&
- currentDocument.doc_id !== projectRootDocId &&
- isMainFile(currentDocument.getSnapshot())
- ) {
- rootDocId = currentDocument.doc_id
- }
- const rootResourcePath =
- (rootDocId && pathInFolder(rootDocId)) || 'main.tex'
- return { rootDocId, rootResourcePath }
- }, [projectRootDocId, currentDocument, pathInFolder])
- }
|