import type { NavigationContainerRef } from '@react-navigation/core' ; import * as React from 'react' ; import useDevToolsBase from './useDevToolsBase' ; type DevToolsConnection = { init ( value ) : void ; send ( action , value ) : void ; subscribe ( listener ) : ( ) => void ; } ; type DevToolsExtension = { connect ( options ) : DevToolsConnection ; disconnect ( ) : void ; } ; declare const __REDUX_DEVTOOLS_EXTENSION__ ; export default function useReduxDevToolsExtension ( ref ) { const devToolsRef = React . useRef < DevToolsConnection > ( ) ; if ( devToolsRef . current === undefined && typeof __REDUX_DEVTOOLS_EXTENSION__ !== 'undefined' ) { devToolsRef . current = __REDUX_DEVTOOLS_EXTENSION__ . connect ( { name : '@react-navigation/devtools' , } ) ; } const { resetRoot } = useDevToolsBase ( ref , ( result ) => { const devTools = devToolsRef . current ; if ( ! devTools ) { return ; } switch ( result . type ) { case 'init' : devTools . init ( result . state ) ; break ; case 'action' : devTools . send ( result . action , result . state ) ; break ; } } ) ; React . useEffect ( ( ) => devToolsRef . current ?. subscribe ( ( message ) => { if ( message . type === 'DISPATCH' && message . state ) { const state = JSON . parse ( message . state ) ; resetRoot ( state ) ; } } ) , [ resetRoot ] ) ; }