1
1
import { useRecoilState } from 'recoil' ;
2
- import { focusState , blockRefState } from '@/stores' ;
2
+ import { focusState } from '@/stores' ;
3
3
import { useManager } from '@/hooks' ;
4
- import { Block , BlockType } from '@/schemes' ;
4
+ import { BlockType } from '@/schemes' ;
5
5
6
6
const useCommand = ( ) => {
7
- const [ focusId , setFocusId ] = useRecoilState ( focusState ) ;
7
+ const [ focusId ] = useRecoilState ( focusState ) ;
8
8
const [
9
- { block, blockIndex, siblingsIdList, parent , grandParent, blockMap } ,
9
+ { block, blockIndex, siblingsIdList, grandParent } ,
10
10
{
11
11
getPrevBlock,
12
12
getNextBlock,
@@ -19,30 +19,11 @@ const useCommand = () => {
19
19
startTransaction,
20
20
commitTransaction,
21
21
deleteBlock,
22
+ setFocus,
23
+ setCaretOffset,
22
24
} ,
23
25
] = useManager ( focusId ) ;
24
26
25
- const setFocus = ( targetBlock : Block ) => {
26
- if ( ! targetBlock ) {
27
- return null ;
28
- }
29
- const beforeOffset = window . getSelection ( ) . focusOffset ;
30
- setFocusId ( targetBlock . id ) ;
31
- const targetRef = blockRefState [ targetBlock . id ] ;
32
- targetRef
33
- ? targetRef . current . focus ( )
34
- : blockRefState [ block . id ] . current . blur ( ) ;
35
- return beforeOffset ;
36
- } ;
37
-
38
- const setCaretOffset = ( offset : number ) => {
39
- const sel = window . getSelection ( ) ;
40
- const { focusNode : node } = sel ;
41
- const { length } = node as any ;
42
- ! ( node instanceof HTMLElement ) &&
43
- sel . collapse ( node , offset > length ? length : offset ) ;
44
- } ;
45
-
46
27
const getSlicedValueToCaretOffset = ( ) => {
47
28
const { focusNode, anchorOffset, focusOffset } = window . getSelection ( ) ;
48
29
return [
0 commit comments