Skip to content

Commit 217d04e

Browse files
committed
Fallback to using the JSX location for View Source button if no source location exists
This is useful to jump to the creation of a built-in like <div> or <Suspense>.
1 parent 7c294f6 commit 217d04e

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

packages/react-devtools-shared/src/devtools/views/Components/InspectedElement.js

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,16 @@ export default function InspectedElementWrapper(_: Props): React.Node {
5151

5252
const fetchFileWithCaching = useContext(FetchFileWithCachingContext);
5353

54+
const source = inspectedElement == null ? null :
55+
inspectedElement.source != null ?
56+
inspectedElement.source :
57+
inspectedElement.stack != null && inspectedElement.stack.length > 0 ?
58+
inspectedElement.stack[0] : null;
59+
5460
const symbolicatedSourcePromise: null | Promise<ReactFunctionLocation | null> =
5561
React.useMemo(() => {
56-
if (inspectedElement == null) return null;
5762
if (fetchFileWithCaching == null) return Promise.resolve(null);
5863

59-
const {source} = inspectedElement;
6064
if (source == null) return Promise.resolve(null);
6165

6266
const [, sourceURL, line, column] = source;
@@ -66,7 +70,7 @@ export default function InspectedElementWrapper(_: Props): React.Node {
6670
line,
6771
column,
6872
);
69-
}, [inspectedElement]);
73+
}, [source]);
7074

7175
const element =
7276
inspectedElementID !== null
@@ -223,13 +227,12 @@ export default function InspectedElementWrapper(_: Props): React.Node {
223227

224228
{!alwaysOpenInEditor &&
225229
!!editorURL &&
226-
inspectedElement != null &&
227-
inspectedElement.source != null &&
230+
source != null &&
228231
symbolicatedSourcePromise != null && (
229232
<React.Suspense fallback={<Skeleton height={16} width={24} />}>
230233
<OpenInEditorButton
231234
editorURL={editorURL}
232-
source={inspectedElement.source}
235+
source={source}
233236
symbolicatedSourcePromise={symbolicatedSourcePromise}
234237
/>
235238
</React.Suspense>
@@ -276,7 +279,7 @@ export default function InspectedElementWrapper(_: Props): React.Node {
276279

277280
{!hideViewSourceAction && (
278281
<InspectedElementViewSourceButton
279-
source={inspectedElement ? inspectedElement.source : null}
282+
source={source}
280283
symbolicatedSourcePromise={symbolicatedSourcePromise}
281284
/>
282285
)}

0 commit comments

Comments
 (0)