Skip to content

Commit 9c4f01a

Browse files
committed
Allow React DevTools extension to handle links across Chrome DevTools
1 parent fc515bf commit 9c4f01a

1 file changed

Lines changed: 32 additions & 1 deletion

File tree

  • packages/react-devtools-extensions/src/main

packages/react-devtools-extensions/src/main/index.js

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ import {
1818
LOCAL_STORAGE_TRACE_UPDATES_ENABLED_KEY,
1919
} from 'react-devtools-shared/src/constants';
2020
import {logEvent} from 'react-devtools-shared/src/Logger';
21-
import {normalizeUrlIfValid} from 'react-devtools-shared/src/utils';
21+
import {
22+
getAlwaysOpenInEditor,
23+
getOpenInEditorURL,
24+
normalizeUrlIfValid,
25+
} from 'react-devtools-shared/src/utils';
26+
import {checkConditions} from 'react-devtools-shared/src/devtools/views/Editor/utils';
2227

2328
import {
2429
setBrowserSelectionFromReact,
@@ -530,3 +535,29 @@ if (__IS_FIREFOX__) {
530535
connectExtensionPort();
531536

532537
mountReactDevToolsWhenReactHasLoaded();
538+
539+
chrome.devtools.panels.setOpenResourceHandler(
540+
(
541+
resource,
542+
lineNumber = 1,
543+
// The column is a new feature so we have to specify a default if it doesn't exist
544+
columnNumber = 1,
545+
) => {
546+
const alwaysOpenInEditor = getAlwaysOpenInEditor();
547+
const editorURL = getOpenInEditorURL();
548+
if (alwaysOpenInEditor && editorURL) {
549+
const location = ['', resource.url, lineNumber, columnNumber];
550+
const {url, shouldDisableButton} = checkConditions(editorURL, location);
551+
if (!shouldDisableButton) {
552+
window.open(url);
553+
return;
554+
}
555+
}
556+
// Otherwise fallback to the built-in behavior.
557+
chrome.devtools.panels.openResource(
558+
resource.url,
559+
lineNumber - 1,
560+
columnNumber - 1,
561+
);
562+
},
563+
);

0 commit comments

Comments
 (0)