mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-12 23:56:36 +08:00
6c2c7dcd48
- document folder - full-text search - blob storage - basic edgeless support Co-authored-by: tzhangchi <terry.zhangchi@outlook.com> Co-authored-by: QiShaoXuan <qishaoxuan777@gmail.com> Co-authored-by: DiamondThree <diamond.shx@gmail.com> Co-authored-by: MingLiang Wang <mingliangwang0o0@gmail.com> Co-authored-by: JimmFly <yangjinfei001@gmail.com> Co-authored-by: Yifeng Wang <doodlewind@toeverything.info> Co-authored-by: Himself65 <himself65@outlook.com> Co-authored-by: lawvs <18554747+lawvs@users.noreply.github.com> Co-authored-by: Qi <474021214@qq.com>
78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
import React, { useEffect, useState } from 'react';
|
|
import {
|
|
StyledSearchArrowWrapper,
|
|
StyledSwitchWrapper,
|
|
StyledTitle,
|
|
StyledTitleWrapper,
|
|
} from './styles';
|
|
import { Content } from '@/ui/layout';
|
|
import { useAppState } from '@/providers/app-state-provider/context';
|
|
import EditorModeSwitch from '@/components/editor-mode-switch';
|
|
import QuickSearchButton from './quick-search-button';
|
|
import Header from './header';
|
|
import usePropsUpdated from '@/hooks/use-props-updated';
|
|
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
|
|
|
|
export const EditorHeader = () => {
|
|
const [title, setTitle] = useState('');
|
|
const [isHover, setIsHover] = useState(false);
|
|
const { editor } = useAppState();
|
|
const { trash: isTrash = false } = useCurrentPageMeta() || {};
|
|
const onPropsUpdated = usePropsUpdated();
|
|
|
|
useEffect(() => {
|
|
onPropsUpdated(editor => {
|
|
setTitle(editor.model?.title || 'Untitled');
|
|
});
|
|
}, [onPropsUpdated]);
|
|
|
|
useEffect(() => {
|
|
setTimeout(() => {
|
|
// If first time in, need to wait for editor to be inserted into DOM
|
|
setTitle(editor?.model?.title || 'Untitled');
|
|
}, 300);
|
|
}, [editor]);
|
|
|
|
return (
|
|
<Header
|
|
rightItems={
|
|
isTrash
|
|
? ['trashButtonGroup']
|
|
: ['syncUser', 'themeModeSwitch', 'editorOptionMenu']
|
|
}
|
|
>
|
|
{title && (
|
|
<StyledTitle
|
|
onMouseEnter={() => {
|
|
if (isTrash) return;
|
|
|
|
setIsHover(true);
|
|
}}
|
|
onMouseLeave={() => {
|
|
if (isTrash) return;
|
|
|
|
setIsHover(false);
|
|
}}
|
|
>
|
|
<StyledTitleWrapper>
|
|
<StyledSwitchWrapper>
|
|
<EditorModeSwitch
|
|
isHover={isHover}
|
|
style={{
|
|
marginRight: '12px',
|
|
}}
|
|
/>
|
|
</StyledSwitchWrapper>
|
|
<Content ellipsis={true}>{title}</Content>
|
|
<StyledSearchArrowWrapper>
|
|
<QuickSearchButton />
|
|
</StyledSearchArrowWrapper>
|
|
</StyledTitleWrapper>
|
|
</StyledTitle>
|
|
)}
|
|
</Header>
|
|
);
|
|
};
|
|
|
|
export default EditorHeader;
|