1
- import { useCallback , useContext } from "react" ;
1
+ import { useCallback } from "react" ;
2
2
import { useAppContext } from "../components/Puck/context" ;
3
3
import { getItem , ItemSelector } from "./get-item" ;
4
- import { dropZoneContext } from "../components/DropZone" ;
5
4
import { convertPathDataToBreadcrumbs } from "./use-breadcrumbs" ;
6
5
import { PathData } from "../components/DropZone/context" ;
7
- import { Data } from "../types" ;
6
+ import { ComponentData , Data } from "../types" ;
8
7
9
- export const getParent = (
10
- itemSelector : ItemSelector | null ,
8
+ export const getParentByItem = (
9
+ item : ComponentData | undefined ,
11
10
pathData : PathData | undefined ,
12
11
data : Data
13
12
) => {
14
- if ( ! itemSelector ) return null ;
15
-
16
- const item = getItem ( itemSelector , data ) ;
17
13
const breadcrumbs = convertPathDataToBreadcrumbs ( item , pathData , data ) ;
18
14
19
15
const lastItem = breadcrumbs [ breadcrumbs . length - 1 ] ;
@@ -24,16 +20,40 @@ export const getParent = (
24
20
return parent || null ;
25
21
} ;
26
22
23
+ export const getParent = (
24
+ itemSelector : ItemSelector | null ,
25
+ pathData : PathData | undefined ,
26
+ data : Data
27
+ ) => {
28
+ if ( ! itemSelector ) return null ;
29
+
30
+ const item = getItem ( itemSelector , data ) ;
31
+
32
+ return getParentByItem ( item , pathData , data ) ;
33
+ } ;
34
+
27
35
export const useGetParent = ( ) => {
28
- const { state } = useAppContext ( ) ;
29
- const { pathData } = useContext ( dropZoneContext ) || { } ;
36
+ const { state, pathData } = useAppContext ( ) ;
37
+
38
+ return useCallback (
39
+ ( itemSelector : ItemSelector | null ) =>
40
+ getParent ( itemSelector , pathData , state . data ) ,
41
+ [ pathData , state . data ]
42
+ ) ;
43
+ } ;
44
+
45
+ export const useGetParentByItem = ( ) => {
46
+ const { state, pathData } = useAppContext ( ) ;
30
47
31
48
return useCallback (
32
- ( ) => getParent ( state . ui . itemSelector , pathData , state . data ) ,
33
- [ state . ui . itemSelector , pathData , state . data ]
49
+ ( item : ComponentData | undefined ) =>
50
+ getParentByItem ( item , pathData , state . data ) ,
51
+ [ pathData , state . data ]
34
52
) ;
35
53
} ;
36
54
37
55
export const useParent = ( ) => {
38
- return useGetParent ( ) ( ) ;
56
+ const { state } = useAppContext ( ) ;
57
+
58
+ return useGetParent ( ) ( state . ui . itemSelector ) ;
39
59
} ;
0 commit comments