import React, { useEffect, useState } from 'react'; import { LogoIcon, MoreIcon, ExportIcon, Export2Markdown, Export2HTML, RightArrow, } from './icons'; import { StyledHeader, StyledTitle, StyledTitleWrapper, StyledLogo, StyledHeaderRightSide, IconButton, StyledHeaderContainer, StyledBrowserWarning, StyledCloseButton, StyledMenuItemWrapper, } from './styles'; import { useEditor } from '@/components/editor-provider'; import EditorModeSwitch from '@/components/editor-mode-switch'; import { EdgelessIcon, PaperIcon } from '../editor-mode-switch/icons'; import ThemeModeSwitch from '@/components/theme-mode-switch'; import { useModal } from '@/components/global-modal-provider'; import CloseIcon from '@mui/icons-material/Close'; import { getWarningMessage, shouldShowWarning } from './utils'; import { Menu, MenuItem } from '@/ui/menu'; const PopoverContent = () => { const { editor, mode, setMode } = useEditor(); return ( <> { setMode(mode === 'page' ? 'edgeless' : 'page'); }} > {mode === 'page' ? : } Convert to {mode === 'page' ? 'Edgeless' : 'Page'} { editor && editor.contentParser.onExportHtml(); }} > Export to HTML { editor && editor.contentParser.onExportMarkdown(); }} > Export to Markdown } > Export ); }; const BrowserWarning = ({ onClose }: { onClose: () => void }) => { return ( {getWarningMessage()} ); }; export const Header = () => { const [title, setTitle] = useState(''); const [isHover, setIsHover] = useState(false); const [showWarning, setShowWarning] = useState(shouldShowWarning()); const { contactModalHandler } = useModal(); const { editor } = useEditor(); useEffect(() => { if (editor) { setTitle(editor.model.title || ''); editor.model.propsUpdated.on(() => { setTitle(editor.model.title); }); } }, [editor]); return ( { setShowWarning(false); }} /> { contactModalHandler(true); }} > {title ? ( { setIsHover(true); }} onMouseLeave={() => { setIsHover(false); }} > {title} ) : null} } placement="bottom-end"> ); };