39
startTransition,
40
} from 'react';
41
import {createRegExp} from '../utils';
42
-import {BridgeContext, StoreContext} from '../context';
42
+import {StoreContext} from '../context';
43
import Store from '../../store';
44
45
import type {Element} from 'react-devtools-shared/src/frontend/types';
836
defaultSelectedElementID,
837
defaultSelectedElementIndex,
838
}: Props): React.Node {
839
- const bridge = useContext(BridgeContext);
839
const store = useContext(StoreContext);
840
841
const initialRevision = useMemo(() => store.revision, [store]);
898
numElements: store.numElements,
899
ownerSubtreeLeafElementID: null,
900
selectedElementID:
902
- defaultSelectedElementID == null ? null : defaultSelectedElementID,
901
+ defaultSelectedElementID != null
902
+ ? defaultSelectedElementID
903
+ : store.lastSelectedHostInstanceElementId,
904
selectedElementIndex:
904
- defaultSelectedElementIndex == null ? null : defaultSelectedElementIndex,
905
+ defaultSelectedElementIndex != null
906
+ ? defaultSelectedElementIndex
907
+ : store.lastSelectedHostInstanceElementId
908
+ ? store.getIndexOfElementID(store.lastSelectedHostInstanceElementId)
909
+ : null,
910
911
// Search
912
searchIndex: null,
919
920
// Inspection element panel
921
inspectedElementID:
917
- defaultInspectedElementID == null ? null : defaultInspectedElementID,
922
+ defaultInspectedElementID != null
923
+ ? defaultInspectedElementID
924
+ : store.lastSelectedHostInstanceElementId,
925
});
926
927
const dispatchWrapper = useCallback(
936
937
// Listen for host element selections.
938
useEffect(() => {
932
- const handleSelectElement = (id: number) =>
939
+ const handler = (id: Element['id']) =>
940
dispatchWrapper({type: 'SELECT_ELEMENT_BY_ID', payload: id});
934
- bridge.addListener('selectElement', handleSelectElement);
935
- return () => bridge.removeListener('selectElement', handleSelectElement);
936
- }, [bridge, dispatchWrapper]);
941
+
942
+ store.addListener('hostInstanceSelected', handler);
943
+ return () => store.removeListener('hostInstanceSelected', handler);
944
+ }, [store, dispatchWrapper]);
945
946
// If a newly-selected search result or inspection selection is inside of a collapsed subtree, auto expand it.
947
// This needs to be a layout effect to avoid temporarily flashing an incorrect selection.