Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat: use and initialize RDT Frontend in RDT panel by hoxyq · Pull Request #23 · react/react-native-devtools-frontend · GitHub
Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: use and initialize RDT Frontend in RDT panel by hoxyq · Pull Request #23 · react/react-native-devtools-frontend · GitHub
Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: use and initialize RDT Frontend in RDT panel by hoxyq · Pull Request #23 · react/react-native-devtools-frontend · GitHub
Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat: use and initialize RDT Frontend in RDT panel by hoxyq · Pull Request #23 · react/react-native-devtools-frontend · GitHub
Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: use and initialize RDT Frontend in RDT panel by hoxyq · Pull Request #23 · react/react-native-devtools-frontend · GitHub
Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); feat: use and initialize RDT Frontend in RDT panel by hoxyq · Pull Request #23 · react/react-native-devtools-frontend · GitHub
Skip to content

feat: use and initialize RDT Frontend in RDT panel - #23

Merged
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend
Apr 15, 2024
Merged

feat: use and initialize RDT Frontend in RDT panel#23
hoxyq merged 1 commit into
react:mainfrom
hoxyq:react-devtools/initialize-react-devtools-frontend

Conversation

@hoxyq

@hoxyqhoxyq commented Mar 14, 2024

Copy link
Copy Markdown

Summary

Stacked on #22.

Last PR in this series of PRs. Uses react-devtools-fusebox as a dependency to initialize React DevTools Frontend.

Loader is rendered while React DevTools is initialized:

  • While we create global bindng and perform some initial Runtime.evaluate calls, this can be throttled by current performance problems with initial load of source maps

Potential improvements, will probably add later:

  • Adding catch block in case if initialization failed, for displaying error message
  • Removing worker CSP patch, and moving in to entrypoints build script, so only rn_fusebox is updated

Test plan

Demo:

Screen.Recording.2024-04-12.at.18.24.50.mov

Upstreaming plan

  • This commit should be sent as a patch to the upstream devtools-frontend repo. I've reviewed the contribution guide.
  • This commit is React Native-specific and cannot be upstreamed.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from 1976b59 to a19a4baCompareApril 15, 2024 08:01
@hoxyqhoxyq changed the title [WIP] feat: use and initialize RDT Frontend in RDT panelfeat: use and initialize RDT Frontend in RDT panelApr 15, 2024
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from f8ecde2 to da012d6CompareApril 15, 2024 08:08
@hoxyq
hoxyq marked this pull request as ready for review April 15, 2024 08:10
@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch 2 times, most recently from 243b4e7 to a28a2f2CompareApril 15, 2024 14:51

@motiz88motiz88 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shipittttt

ReactDevTools.initialize(this.contentElement, {
bridge: this.bridge,
store: this.store,
theme: usingDarkTheme ? 'dark' : 'light',

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nits - can be filed as followup tasks IMO:

  1. Is this reactive to theme changes?
  2. Does CDT allow the user to override the theme? Will this honour that setting?

@hoxyqhoxyqApr 15, 2024

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this reactive to theme changes?

Nope, it doesn't, unfortunately. I am keeping this in T185412086, because we can reuse it for browser extension.

Does CDT allow the user to override the theme? Will this honour that setting?

Yes, I've specified using dark theme in my Chrome and my Fusebox window is opened in dark mode across different reloads.

Comment threadfront_end/entrypoint_template.html Outdated
}
</style>
<meta http-equiv="Content-Security-Policy" content="object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">
<meta http-equiv="Content-Security-Policy" content="worker-src 'self' blob: ; object-src 'none'; script-src 'self' 'unsafe-eval' https://chrome-devtools-frontend.appspot.com">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wish this was more self-documenting. Might be worth an explanatory comment as part of the file.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I thought about moving this to build_entrypoints script, so only rn_fusebox.html entrypoint gets this.

Will add this tomorrow and add an explanatory comment, basically RDT frontend is using workers API for file uploads.

@hoxyq
hoxyqforce-pushed the react-devtools/initialize-react-devtools-frontend branch from a28a2f2 to 2cc2cc3CompareApril 15, 2024 20:28
@hoxyq
hoxyq merged commit 9222797 into react:mainApr 15, 2024
@hoxyq
hoxyq deleted the react-devtools/initialize-react-devtools-frontend branch April 15, 2024 20:57
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@hoxyq@motiz88@facebook-github-bot