@@ -50,26 +50,26 @@ const titleCss = () => css`
50
50
function Title ( ) : JSX . Element {
51
51
const [ selectedPage , setSelectedPage ] = useRecoilState ( pageState ) ;
52
52
const setPages = useSetRecoilState ( pagesState ) ;
53
- const [ , { setCaretOffset } ] = useManager ( selectedPage . rootId ) ;
54
- const updateSelectedPage = useRef (
55
- debounce ( async ( page : Page ) => {
56
- const { page : updatedPage } = await updatePage ( page ) ;
57
- const updatedPages = await refreshPages ( ) ;
58
- const { focusOffset } = window . getSelection ( ) ;
59
- setTimeout ( ( ) => setCaretOffset ( focusOffset ) ) ;
60
- titleRef . current . blur ( ) ;
53
+ const updateSelectedPage = async ( page : Page ) => {
54
+ const { page : updatedPage } = await updatePage ( page ) ;
55
+ const updatedPages = await refreshPages ( ) ;
56
+
57
+ setSelectedPage ( updatedPage ) ;
58
+ setPages ( updatedPages ) ;
59
+ } ;
61
60
62
- setSelectedPage ( updatedPage ) ;
63
- setPages ( updatedPages ) ;
64
- } , 300 ) ,
65
- ) . current ;
66
61
const titleRef = useRef ( null ) ;
67
62
68
- const handleChange = async ( event : ChangeEvent < HTMLDivElement > ) =>
63
+ const handleChange = async ( ) => {
64
+ const sel = window . getSelection ( ) ;
65
+ const text = ( sel . focusNode as any ) . length
66
+ ? sel . focusNode . textContent
67
+ : sel . focusNode . parentElement . innerText ;
69
68
updateSelectedPage ( {
70
69
...selectedPage ,
71
- title : event . currentTarget . textContent ,
70
+ title : text ,
72
71
} ) ;
72
+ } ;
73
73
74
74
return (
75
75
< div css = { wrapperCss ( ) } >
@@ -79,7 +79,7 @@ function Title(): JSX.Element {
79
79
contentEditable
80
80
suppressContentEditableWarning
81
81
css = { titleCss ( ) }
82
- onInput = { handleChange }
82
+ onBlur = { handleChange }
83
83
>
84
84
{ selectedPage . title }
85
85
</ div >
0 commit comments