11import { useEditor , ROOT_NODE } from '@craftjs/core' ;
2- import React , { useRef , useEffect } from 'react' ;
2+ import React , { useRef , useEffect , useLayoutEffect , useState } from 'react' ;
33
44import { LayerContextProvider } from './LayerContextProvider' ;
55import { useLayer } from './useLayer' ;
@@ -18,12 +18,21 @@ export const LayerNode: React.FC = () => {
1818 query . node ( state . events . selected ) . ancestors ( true ) . includes ( id ) ,
1919 } ) ) ;
2020
21- const { actions, renderLayer, expandRootOnLoad } = useLayerManager (
22- ( state ) => ( {
23- renderLayer : state . options . renderLayer ,
24- expandRootOnLoad : state . options . expandRootOnLoad ,
25- } )
26- ) ;
21+ const {
22+ actions : { registerLayer, toggleLayer } ,
23+ renderLayer,
24+ expandRootOnLoad,
25+ } = useLayerManager ( ( state ) => ( {
26+ renderLayer : state . options . renderLayer ,
27+ expandRootOnLoad : state . options . expandRootOnLoad ,
28+ } ) ) ;
29+
30+ const [ isRegistered , setRegistered ] = useState ( false ) ;
31+
32+ useLayoutEffect ( ( ) => {
33+ registerLayer ( id ) ;
34+ setRegistered ( true ) ;
35+ } , [ registerLayer , id ] ) ;
2736
2837 const expandedRef = useRef < boolean > ( expanded ) ;
2938 expandedRef . current = expanded ;
@@ -34,24 +43,17 @@ export const LayerNode: React.FC = () => {
3443
3544 useEffect ( ( ) => {
3645 if ( ! expandedRef . current && shouldBeExpanded ) {
37- actions . toggleLayer ( id ) ;
46+ toggleLayer ( id ) ;
3847 }
39- } , [ actions , id , shouldBeExpanded ] ) ;
48+ } , [ toggleLayer , id , shouldBeExpanded ] ) ;
4049
4150 useEffect ( ( ) => {
4251 if ( shouldBeExpandedOnLoad . current ) {
43- actions . toggleLayer ( id ) ;
52+ toggleLayer ( id ) ;
4453 }
45- } , [ actions , id ] ) ;
46-
47- const initRef = useRef < boolean > ( false ) ;
48-
49- if ( ! initRef . current ) {
50- actions . registerLayer ( id ) ;
51- initRef . current = true ;
52- }
54+ } , [ toggleLayer , id ] ) ;
5355
54- return data ? (
56+ return data && isRegistered ? (
5557 < div className = { `craft-layer-node ${ id } ` } >
5658 { React . createElement (
5759 renderLayer ,
0 commit comments