Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

207 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Figment

Figment is a developer tool to inspect rendered React components and find the related sorce code!

It lets you inspect the UI to quickly figure out what code is rendering what you see. You can just click the provided link to open the source in VS Code.

Get it from the chrome web store!

figment.0.5.demo.mov

This tool has no dependencies. It's all browser APIs and Vanilla JavaScript with TypeScript to help keep things on the rails. Every bit of functionality was written by me because I'm just tinkering, it's just for fun, and I learn best by making something I find useful. If you would like a feature that doesn't exist, just let me know and I'll take a look. Or you can submit a PR.

I'm currently tinkering with a Figma integration to help correlate React components with Figma designs.

Usage

  1. Open a page on localhost that is using a dev build of React or React Native. Production React will likely be minified and not include source file mappings. I am currently limiting this tool (in the manifest) to only function for localhost.
  2. Toggle enabled/disabled
    • Use the hotkey ALT-f (⌥-f on Mac) (configure here: chrome://extensions/shortcuts)
    • OR click the Figment toolbar icon
    • OR chose "Toggle DOM Inspection" from the browser context menu
  3. Mouse over the page to see elements and components highlighted with a red outline
  4. Click the red outline's label to get the context menu

The context menu that pops up will show you the element/component you are inspecting as well as all of it's parent element/components. A link to the source code will be provided for each element/component where React has provided that information.

Recent & upcoming work

Screen.Recording.2024-03-29.at.5.17.27_PM.mov

Sidepanel stuff

  • Figma integration (wip)
    • Keep Figma API key in local storage (prompt for key if missing)
    • Load Figma data into local storage when visiting a Figma page
    • Get Figma images
    • Keep Figma data synchronized
    • Drag Figma image onto localhost page
    • Manage local Figma docs (list, add, delete)
    • Separate sidepanel pages for managing and using Figma data
    • Functionality to link Figma designs to React components
    • Full text search
    • Favorites/bookmarks?
    • Filter by "Ready for Dev"
    • Filter by designs relevant to the current page?
  • CSS styles for everything
  • Sidepanel Header/Tabs
  • Sidepanel toggle logic
  • React sidepanel
    • List all react components on the page with vsCode links
    • Functionality to link React components to Figma designs
  • Configuration options sidepanel

Menu stuff

  • Menu toolbar
    • option to stop inspecting the DOM
    • option to open/close the sidebar
  • Add Submenus
  • Submenu open/close css animations
  • Scroll behavior
    • Move the menu with the page
    • Move submenus with their parent menu items when scrolling inside the menu
    • Programmatically adjust menu max-height to avoid scrolling for less than a minimum number of items
  • Submenu positioning
    • Slide submenus left to prevent overflowing the right side of the page
    • Make submenus appear on the left of their parents if they would overlap the main menu enough to cover other functionality
  • Submenu mouse interaction refinement
    • allow "shortcutting" over other menu items if the mouse is headed toward an open submenu

Other

  • Display other react info for selected components
  • Custom browser protocols for opening files (currently only suppoprts vscode://file:line:character)

Install (for development)

We're keeping it simple and using just JavaScript, HTML, and CSS. I have intentionally avoided dependencies except for git and TypeScript. We really don't need a package manager or build tool for a project of this size.

  1. Clone the repo locally: git clone https://github.com/dankoster/figment.git
  2. Navigate to the folder that was created by git: cd figment
  3. Run the terminal command: mkdir -p dist && cp -rv ./assets/* ./dist && tsc
    • mkdir -p dist makes the dist folder
    • cp -rv ./assets/* ./dist verbosely copies the contents of the assets folder into dist
    • tsc compiles the typescript to the dist folder
  4. Open chrome://extensions/ in your chromium browser
  5. Turn on "Developer Mode"
  6. Click the "Load unpacked" button
  7. Choose the figment/dist folder
  8. Find the figment extension in your browser extensions toolbar and pin it
  9. Have fun hacking!
    • Use tsc -w to watch for changes while working
    • Use cp -rv ./assets/* ./dist to copy asset files into dist (or use the included Deno script to watch and copy those asset files when they change... deno run --allow-read --allow-write watchAndCopy.ts ./assets ./dist)

About

A Chromium browser plugin to inspect rendered React components and find the associated code! [for older versions of React]

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages