Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi
, '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: handle imported/exported components by KaiVandivier · Pull Request #116 · dhis2/cli-utils-docsite · GitHub
Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi
, '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: handle imported/exported components by KaiVandivier · Pull Request #116 · dhis2/cli-utils-docsite · GitHub
Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi
, '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: handle imported/exported components by KaiVandivier · Pull Request #116 · dhis2/cli-utils-docsite · GitHub
Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi
, '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: handle imported/exported components by KaiVandivier · Pull Request #116 · dhis2/cli-utils-docsite · GitHub
Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi
, '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: handle imported/exported components by KaiVandivier · Pull Request #116 · dhis2/cli-utils-docsite · GitHub
Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi
, '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); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat: handle imported/exported components by KaiVandivier · Pull Request #116 · dhis2/cli-utils-docsite · GitHub
Skip to content

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

feat: handle imported/exported components - #116

Merged
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports
Aug 9, 2021
Merged

feat: handle imported/exported components#116
KaiVandivier merged 4 commits into
feat-add-react-docgenfrom
feat-add-react-docgen-handle-imports

Conversation

@KaiVandivier

Copy link
Copy Markdown
Contributor

Updates the CLI to only generate docs for components that are exported from a library

Instead of specifying one or more directories to parse all JS files for component definitions, you can specify one or more package entrypoints that export components. For the UI library, this might look like ./components/**/src/index.js. This script will find the definitions of all those exported components and generate docs for them.

The current React Docgen alpha version includes an importer that resolves imported types and values, which can be used to traverse imports to find exported component definitions. Tools that are built in to React Docgen already support parsing some exported components, but only when they use this syntax:

import{Component}from'./Component.js'export{Component}

Most of the exports in the UI library are in this syntax though, which is not currently handled in React Docgen:

export{Component}from'./Component.js'

I added a custom resolver for React Docgen to use when resolving component definitions that handles that latter syntax.

I also added a custom handler that adds each component's filepath to its documentation object.

SIDE NOTE: I noticed in the UI library that there are a few components whose display names don't match their exported names - I propose that we make sure those match for documentation purposes and for clarity when inspecting a component tree. These are what I noticed:

  1. CenteredContent: display name = Center
  2. ComponentCover: display name = Cover
  3. Table elements in DataTable (TableBody, TableFoot, TableHead, and TableToolbar): exported as DataTable___, but display name = Table___

Comment threadpackage.json
"marked": "^2.1.3",
"match-all": "^1.2.5",
"react-docgen": "^5.4.0",
"react-docgen": "^6.0.0-alpha.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Let's add ast-types as an explicit dependency:

Suggested change
"react-docgen": "^6.0.0-alpha.0",
"react-docgen": "^6.0.0-alpha.0",
"ast-types": "^0.14.2",

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Woops! Thought I did 😅

@mediremimediremi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

This is a really big improvement to our existing docs 🥇

Thanks for this Kai!


Since the only change I think needs to be done is adding ast-types to package.json I'll approve now.

@KaiVandivier
KaiVandivier merged commit 3f21601 into feat-add-react-docgenAug 9, 2021
@KaiVandivier
KaiVandivier deleted the feat-add-react-docgen-handle-imports branch August 9, 2021 14:48
@mediremimediremi mentioned this pull request Aug 9, 2021
2 tasks
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@KaiVandivier@mediremi