diff --git a/packages/react-devtools-shared/src/devtools/views/SearchInput.js b/packages/react-devtools-shared/src/devtools/views/SearchInput.js index d50026d73bebe..3d94128bd67b9 100644 --- a/packages/react-devtools-shared/src/devtools/views/SearchInput.js +++ b/packages/react-devtools-shared/src/devtools/views/SearchInput.js @@ -64,8 +64,9 @@ export default function SearchInput({ const handleKeyDown = (event: KeyboardEvent) => { const {key, metaKey} = event; if (key === 'f' && metaKey) { - if (inputRef.current !== null) { - inputRef.current.focus(); + const inputElement = inputRef.current; + if (inputElement !== null) { + inputElement.focus(); event.preventDefault(); event.stopPropagation(); } @@ -75,10 +76,14 @@ export default function SearchInput({ // It's important to listen to the ownerDocument to support the browser extension. // Here we use portals to render individual tabs (e.g. Profiler), // and the root document might belong to a different window. - const ownerDocument = inputRef.current.ownerDocument; - ownerDocument.addEventListener('keydown', handleKeyDown); + const ownerDocumentElement = inputRef.current.ownerDocument.documentElement; + if (ownerDocumentElement === null) { + return; + } + ownerDocumentElement.addEventListener('keydown', handleKeyDown); - return () => ownerDocument.removeEventListener('keydown', handleKeyDown); + return () => + ownerDocumentElement.removeEventListener('keydown', handleKeyDown); }, []); return ( diff --git a/packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.js b/packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.js index f698f0ae16549..f7b63fa2c62c2 100644 --- a/packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.js +++ b/packages/react-devtools-shared/src/devtools/views/SuspenseTab/SuspenseTab.js @@ -34,10 +34,6 @@ import { SuspenseTreeStateContext, } from './SuspenseTreeContext'; import {StoreContext, OptionsContext} from '../context'; -import { - TreeDispatcherContext, - TreeStateContext, -} from '../Components/TreeContext'; import Button from '../Button'; import Toggle from '../Toggle'; import typeof {SyntheticPointerEvent} from 'react-dom-bindings/src/events/SyntheticEvent'; @@ -185,18 +181,6 @@ function SuspenseTab(_: {}) { treeListHorizontalFraction, } = state; - const {inspectedElementID} = useContext(TreeStateContext); - const {timeline} = useContext(SuspenseTreeStateContext); - const treeDispatch = useContext(TreeDispatcherContext); - useLayoutEffect(() => { - // If the inspected element is still null and we've loaded a timeline, we can set the initial selection. - // TODO: This tab should use its own source of truth instead so we only show suspense boundaries. - if (inspectedElementID === null && timeline.length > 0) { - const milestone = timeline[timeline.length - 1]; - treeDispatch({type: 'SELECT_ELEMENT_BY_ID', payload: milestone}); - } - }, [timeline, inspectedElementID]); - useLayoutEffect(() => { const wrapperElement = wrapperTreeRef.current;