@storybook/addon-docs 8.0.0-alpha.0 → 8.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -17
- package/dist/{DocsRenderer-NNNQARDV.mjs → DocsRenderer-56ZJCE2Q.mjs} +1 -0
- package/dist/chunk-FG2YIYKM.mjs +3 -0
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -0
- package/dist/mdx-loader.d.ts +5184 -0
- package/dist/mdx-loader.js +50 -0
- package/dist/mdx-loader.mjs +53 -0
- package/dist/preset.d.ts +14 -4
- package/dist/preset.js +47 -41
- package/dist/preview.js +1 -1
- package/dist/preview.mjs +4 -1
- package/ember/README.md +1 -1
- package/package.json +22 -28
- package/react/README.md +6 -34
- package/jest-transform-mdx.js +0 -22
- package/jest.config.js +0 -7
- package/postinstall/presets.js +0 -36
- package/template/stories/stories-mdx/csf-in-mdx.non-stories.js +0 -19
package/dist/preview.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var DocsRenderer_exports={};__export(DocsRenderer_exports,{DocsRenderer:()=>DocsRenderer,defaultComponents:()=>defaultComponents});var import_react,import_react_dom_shim,import_blocks,defaultComponents,ErrorBoundary,DocsRenderer,init_DocsRenderer=__esm({"src/DocsRenderer.tsx"(){"use strict";import_react=__toESM(require("react")),import_react_dom_shim=require("@storybook/react-dom-shim"),import_blocks=require("@storybook/blocks"),defaultComponents={code:import_blocks.CodeOrSourceMdx,a:import_blocks.AnchorMdx,...import_blocks.HeadersMdx},ErrorBoundary=class extends import_react.Component{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(err){let{showException}=this.props;showException(err)}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:import_react.default.createElement(import_react.default.Fragment,null,children)}},DocsRenderer=class{constructor(){this.render=async(context,docsParameter,element)=>{let components={...defaultComponents,...docsParameter
|
|
1
|
+
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var DocsRenderer_exports={};__export(DocsRenderer_exports,{DocsRenderer:()=>DocsRenderer,defaultComponents:()=>defaultComponents});var import_react,import_react_dom_shim,import_blocks,defaultComponents,ErrorBoundary,DocsRenderer,init_DocsRenderer=__esm({"src/DocsRenderer.tsx"(){"use strict";import_react=__toESM(require("react")),import_react_dom_shim=require("@storybook/react-dom-shim"),import_blocks=require("@storybook/blocks"),defaultComponents={code:import_blocks.CodeOrSourceMdx,a:import_blocks.AnchorMdx,...import_blocks.HeadersMdx},ErrorBoundary=class extends import_react.Component{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(err){let{showException}=this.props;showException(err)}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:import_react.default.createElement(import_react.default.Fragment,null,children)}},DocsRenderer=class{constructor(){this.render=async(context,docsParameter,element)=>{let components={...defaultComponents,...docsParameter?.components},TDocs=import_blocks.Docs;return new Promise((resolve,reject)=>{import("@mdx-js/react").then(({MDXProvider})=>(0,import_react_dom_shim.renderElement)(import_react.default.createElement(ErrorBoundary,{showException:reject,key:Math.random()},import_react.default.createElement(MDXProvider,{components},import_react.default.createElement(TDocs,{context,docsParameter}))),element)).then(()=>resolve())})},this.unmount=element=>{(0,import_react_dom_shim.unmountElement)(element)}}}}});var preview_exports={};__export(preview_exports,{parameters:()=>parameters});module.exports=__toCommonJS(preview_exports);var import_global=require("@storybook/global"),excludeTags=Object.entries(import_global.global.TAGS_OPTIONS??{}).reduce((acc,entry)=>{let[tag,option]=entry;return option.excludeFromDocsStories&&(acc[tag]=!0),acc},{}),parameters={docs:{renderer:async()=>{let{DocsRenderer:DocsRenderer2}=await Promise.resolve().then(()=>(init_DocsRenderer(),DocsRenderer_exports));return new DocsRenderer2},stories:{filter:story=>(story.tags||[]).filter(tag=>excludeTags[tag]).length===0&&!story.parameters.docs?.disable}}};0&&(module.exports={parameters});
|
package/dist/preview.mjs
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import './chunk-FG2YIYKM.mjs';
|
|
2
|
+
import { global } from '@storybook/global';
|
|
3
|
+
|
|
4
|
+
var excludeTags=Object.entries(global.TAGS_OPTIONS??{}).reduce((acc,entry)=>{let[tag,option]=entry;return option.excludeFromDocsStories&&(acc[tag]=!0),acc},{}),parameters={docs:{renderer:async()=>{let{DocsRenderer}=await import('./DocsRenderer-56ZJCE2Q.mjs');return new DocsRenderer},stories:{filter:story=>(story.tags||[]).filter(tag=>excludeTags[tag]).length===0&&!story.parameters.docs?.disable}}};
|
|
2
5
|
|
|
3
6
|
export { parameters };
|
package/ember/README.md
CHANGED
|
@@ -51,7 +51,7 @@ Next, add the following to your `.storybook/preview.js` to load the generated js
|
|
|
51
51
|
|
|
52
52
|
```js
|
|
53
53
|
import { setJSONDoc } from '@storybook/addon-docs/ember';
|
|
54
|
-
import docJson from '../storybook-docgen/index.json';
|
|
54
|
+
import docJson from '../dist/storybook-docgen/index.json';
|
|
55
55
|
setJSONDoc(docJson);
|
|
56
56
|
```
|
|
57
57
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@storybook/addon-docs",
|
|
3
|
-
"version": "8.0.0-alpha.
|
|
3
|
+
"version": "8.0.0-alpha.10",
|
|
4
4
|
"description": "Document component usage and properties in Markdown",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"addon",
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
},
|
|
39
39
|
"./preset": {
|
|
40
40
|
"types": "./dist/preset.d.ts",
|
|
41
|
-
"require": "./dist/preset.js"
|
|
41
|
+
"require": "./dist/preset.js",
|
|
42
|
+
"import": "./dist/preset.js"
|
|
42
43
|
},
|
|
43
44
|
"./blocks": {
|
|
44
45
|
"types": "./dist/blocks.d.ts",
|
|
@@ -64,13 +65,13 @@
|
|
|
64
65
|
"require": "./dist/shims/mdx-react-shim.js",
|
|
65
66
|
"import": "./dist/shims/mdx-react-shim.mjs"
|
|
66
67
|
},
|
|
68
|
+
"./mdx-loader": "./dist/mdx-loader.js",
|
|
67
69
|
"./svelte/HOC.svelte": "./svelte/HOC.svelte",
|
|
68
70
|
"./ember": "./ember/index.js",
|
|
69
71
|
"./ember/index.js": "./ember/index.js",
|
|
70
72
|
"./angular": "./angular/index.js",
|
|
71
73
|
"./angular/index.js": "./angular/index.js",
|
|
72
74
|
"./web-components/index.js": "./web-components/index.js",
|
|
73
|
-
"./jest-transform-mdx": "./jest-transform-mdx.js",
|
|
74
75
|
"./package.json": "./package.json"
|
|
75
76
|
},
|
|
76
77
|
"main": "dist/index.js",
|
|
@@ -83,7 +84,6 @@
|
|
|
83
84
|
"ember/**/*",
|
|
84
85
|
"html/**/*",
|
|
85
86
|
"svelte/**/*",
|
|
86
|
-
"postinstall/**/*",
|
|
87
87
|
"react/**/*",
|
|
88
88
|
"vue/**/*",
|
|
89
89
|
"web-components/**/*",
|
|
@@ -98,37 +98,33 @@
|
|
|
98
98
|
"prep": "node --loader ../../../scripts/node_modules/esbuild-register/loader.js -r ../../../scripts/node_modules/esbuild-register/register.js ../../../scripts/prepare/bundle.ts"
|
|
99
99
|
},
|
|
100
100
|
"dependencies": {
|
|
101
|
-
"@
|
|
102
|
-
"@mdx-js/react": "^
|
|
103
|
-
"@storybook/blocks": "8.0.0-alpha.
|
|
104
|
-
"@storybook/client-logger": "8.0.0-alpha.
|
|
105
|
-
"@storybook/components": "8.0.0-alpha.
|
|
106
|
-
"@storybook/csf-plugin": "8.0.0-alpha.
|
|
107
|
-
"@storybook/csf-tools": "8.0.0-alpha.
|
|
101
|
+
"@babel/core": "^7.12.3",
|
|
102
|
+
"@mdx-js/react": "^3.0.0",
|
|
103
|
+
"@storybook/blocks": "8.0.0-alpha.10",
|
|
104
|
+
"@storybook/client-logger": "8.0.0-alpha.10",
|
|
105
|
+
"@storybook/components": "8.0.0-alpha.10",
|
|
106
|
+
"@storybook/csf-plugin": "8.0.0-alpha.10",
|
|
107
|
+
"@storybook/csf-tools": "8.0.0-alpha.10",
|
|
108
108
|
"@storybook/global": "^5.0.0",
|
|
109
|
-
"@storybook/
|
|
110
|
-
"@storybook/
|
|
111
|
-
"@storybook/
|
|
112
|
-
"@storybook/
|
|
113
|
-
"@storybook/
|
|
114
|
-
"@storybook/theming": "8.0.0-alpha.0",
|
|
115
|
-
"@storybook/types": "8.0.0-alpha.0",
|
|
109
|
+
"@storybook/node-logger": "8.0.0-alpha.10",
|
|
110
|
+
"@storybook/preview-api": "8.0.0-alpha.10",
|
|
111
|
+
"@storybook/react-dom-shim": "8.0.0-alpha.10",
|
|
112
|
+
"@storybook/theming": "8.0.0-alpha.10",
|
|
113
|
+
"@storybook/types": "8.0.0-alpha.10",
|
|
116
114
|
"fs-extra": "^11.1.0",
|
|
115
|
+
"react": "^18.2.0",
|
|
116
|
+
"react-dom": "^18.2.0",
|
|
117
117
|
"remark-external-links": "^8.0.0",
|
|
118
118
|
"remark-slug": "^6.0.0",
|
|
119
119
|
"ts-dedent": "^2.0.0"
|
|
120
120
|
},
|
|
121
121
|
"devDependencies": {
|
|
122
|
+
"@mdx-js/mdx": "^3.0.0",
|
|
122
123
|
"@rollup/pluginutils": "^5.0.2",
|
|
123
|
-
"
|
|
124
|
-
"react-dom": "^18.2.0",
|
|
124
|
+
"@storybook/test": "8.0.0-alpha.10",
|
|
125
125
|
"typescript": "^5.3.2",
|
|
126
126
|
"vite": "^4.0.4"
|
|
127
127
|
},
|
|
128
|
-
"peerDependencies": {
|
|
129
|
-
"react": "^16.8.0 || ^17.0.0 || ^18.0.0",
|
|
130
|
-
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
|
|
131
|
-
},
|
|
132
128
|
"publishConfig": {
|
|
133
129
|
"access": "public"
|
|
134
130
|
},
|
|
@@ -138,10 +134,8 @@
|
|
|
138
134
|
"./src/preset.ts",
|
|
139
135
|
"./src/preview.ts",
|
|
140
136
|
"./src/blocks.ts",
|
|
141
|
-
"./src/shims/mdx-react-shim.ts"
|
|
142
|
-
|
|
143
|
-
"externals": [
|
|
144
|
-
"@storybook/mdx1-csf"
|
|
137
|
+
"./src/shims/mdx-react-shim.ts",
|
|
138
|
+
"./src/mdx-loader.ts"
|
|
145
139
|
]
|
|
146
140
|
},
|
|
147
141
|
"gitHead": "e6a7fd8a655c69780bc20b9749c2699e44beae17",
|
package/react/README.md
CHANGED
|
@@ -15,7 +15,7 @@ To learn more about Storybook Docs, read the [general documentation](../README.m
|
|
|
15
15
|
- [Props tables](#props-tables)
|
|
16
16
|
- [MDX](#mdx)
|
|
17
17
|
- [Inline stories](#inline-stories)
|
|
18
|
-
- [TypeScript props with `react-docgen`](#typescript-props-with-react-docgen)
|
|
18
|
+
- [TypeScript props with `react-docgen-typescript`](#typescript-props-with-react-docgen-typescript)
|
|
19
19
|
- [More resources](#more-resources)
|
|
20
20
|
|
|
21
21
|
## Installation
|
|
@@ -108,17 +108,17 @@ To do so for all stories, update `.storybook/preview.js`:
|
|
|
108
108
|
export const parameters = { docs: { story: { inline: false } } };
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
## TypeScript props with `react-docgen`
|
|
111
|
+
## TypeScript props with `react-docgen-typescript`
|
|
112
112
|
|
|
113
|
-
If you're using TypeScript, there are two different options for generating props: `react-docgen
|
|
113
|
+
If you're using TypeScript, there are two different options for generating props: `react-docgen` (default) or `react-docgen-typescript`.
|
|
114
114
|
|
|
115
115
|
You can add the following lines to your `.storybook/main.js` to switch between the two (or disable docgen):
|
|
116
116
|
|
|
117
117
|
```js
|
|
118
118
|
export default {
|
|
119
119
|
typescript: {
|
|
120
|
-
// also valid 'react-docgen
|
|
121
|
-
reactDocgen: 'react-docgen',
|
|
120
|
+
// also valid 'react-docgen' | false
|
|
121
|
+
reactDocgen: 'react-docgen-typescript',
|
|
122
122
|
},
|
|
123
123
|
};
|
|
124
124
|
```
|
|
@@ -129,7 +129,7 @@ Neither option is perfect, so here's everything you should know if you're thinki
|
|
|
129
129
|
| --------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
|
130
130
|
| **Features** | **Great**. The analysis produces great results which gives the best props table experience. | **OK**. React-docgen produces basic results that are fine for most use cases. |
|
|
131
131
|
| **Performance** | **Slow**. It's doing a lot more work to produce those results, and may also have an inefficient implementation. | **Blazing fast**. Adding it to your project increases build time negligibly. |
|
|
132
|
-
| **Bugs** | **
|
|
132
|
+
| **Bugs** | **Some**. There are corner cases that are not handled properly, and are annoying for developers. | **Some**. There are corner cases that are not handled properly, and are annoying for developers. |
|
|
133
133
|
| **SB docs** | **Good**. Our prop tables have supported `react-docgen-typescript` results from the beginning, so it's relatively stable. | **OK**. There are some obvious improvements to fully support `react-docgen`, and they're coming soon. |
|
|
134
134
|
|
|
135
135
|
**Performance** is a common question, so here are build times from a random project to quantify. Your mileage may vary:
|
|
@@ -140,34 +140,6 @@ Neither option is perfect, so here's everything you should know if you're thinki
|
|
|
140
140
|
| react-docgen | 29s |
|
|
141
141
|
| none | 28s |
|
|
142
142
|
|
|
143
|
-
The biggest limitation of `react-docgen` is lack of support for imported types. What that means is that when a component uses a type defined in another file or package, `react-docgen` is unable to extract props information for that type.
|
|
144
|
-
|
|
145
|
-
```tsx
|
|
146
|
-
import React, { FC } from 'react';
|
|
147
|
-
import SomeType from './someFile';
|
|
148
|
-
|
|
149
|
-
type NewType = SomeType & { foo: string };
|
|
150
|
-
const MyComponent: FC<NewType> = ...
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
So in the previous example, `SomeType` would simply be ignored! There's an [open PR for this in the `react-docgen` repo](https://github.com/reactjs/react-docgen/pull/352) which you can upvote if it affects you.
|
|
154
|
-
|
|
155
|
-
Another common pitfall when switching to `react-docgen` is [lack of support for `React.FC`](https://github.com/reactjs/react-docgen/issues/387). This means that the following common pattern **DOESN'T WORK**:
|
|
156
|
-
|
|
157
|
-
```tsx
|
|
158
|
-
import React, { FC } from 'react';
|
|
159
|
-
interface IProps { ... };
|
|
160
|
-
const MyComponent: FC<IProps> = ({ ... }) => ...
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
Fortunately, the following workaround works:
|
|
164
|
-
|
|
165
|
-
```tsx
|
|
166
|
-
const MyComponent: FC<IProps> = ({ ... }: IProps) => ...
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
Please upvote [the issue](https://github.com/reactjs/react-docgen/issues/387) if this is affecting your productivity, or better yet, submit a fix!
|
|
170
|
-
|
|
171
143
|
## More resources
|
|
172
144
|
|
|
173
145
|
Want to learn more? Here are some more articles on Storybook Docs:
|
package/jest-transform-mdx.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const path = require('path');
|
|
2
|
-
const { ScriptTransformer } = require('@jest/transform');
|
|
3
|
-
const { dedent } = require('ts-dedent');
|
|
4
|
-
|
|
5
|
-
const { compile } = require('@storybook/mdx2-csf');
|
|
6
|
-
|
|
7
|
-
module.exports = {
|
|
8
|
-
async processAsync(src, filename, config, { instrument }) {
|
|
9
|
-
const code = await compile(src, { skipCsf: false });
|
|
10
|
-
const result = dedent`
|
|
11
|
-
/* @jsx mdx */
|
|
12
|
-
import React from 'react'
|
|
13
|
-
import { mdx } from '@mdx-js/react'
|
|
14
|
-
${code}
|
|
15
|
-
`;
|
|
16
|
-
|
|
17
|
-
const extension = path.extname(filename);
|
|
18
|
-
const jsFileName = `${filename.slice(0, -extension.length)}.js`;
|
|
19
|
-
|
|
20
|
-
return new ScriptTransformer(config).transformSource(jsFileName, result, instrument);
|
|
21
|
-
},
|
|
22
|
-
};
|
package/jest.config.js
DELETED
package/postinstall/presets.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import { presetsAddPreset, getFrameworks } from '@storybook/postinstall';
|
|
3
|
-
import { logger } from '@storybook/node-logger';
|
|
4
|
-
|
|
5
|
-
export default function transformer(file, api) {
|
|
6
|
-
const packageJson = JSON.parse(fs.readFileSync('./package.json'));
|
|
7
|
-
const frameworks = getFrameworks(packageJson);
|
|
8
|
-
|
|
9
|
-
let err = null;
|
|
10
|
-
let framework = null;
|
|
11
|
-
let presetOptions = null;
|
|
12
|
-
if (frameworks.length !== 1) {
|
|
13
|
-
err = `${frameworks.length === 0 ? 'No' : 'Multiple'} frameworks found: ${frameworks}`;
|
|
14
|
-
logger.error(`${err}, please configure '@storybook/addon-docs' manually.`);
|
|
15
|
-
return file.source;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// eslint-disable-next-line prefer-destructuring
|
|
19
|
-
framework = frameworks[0];
|
|
20
|
-
|
|
21
|
-
const { dependencies, devDependencies } = packageJson;
|
|
22
|
-
if (
|
|
23
|
-
framework === 'react' &&
|
|
24
|
-
((dependencies && dependencies['react-scripts']) ||
|
|
25
|
-
(devDependencies && devDependencies['react-scripts']))
|
|
26
|
-
) {
|
|
27
|
-
presetOptions = {};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const j = api.jscodeshift;
|
|
31
|
-
const root = j(file.source);
|
|
32
|
-
|
|
33
|
-
presetsAddPreset(`@storybook/addon-docs/preset`, presetOptions, { root, api });
|
|
34
|
-
|
|
35
|
-
return root.toSource({ quote: 'single' });
|
|
36
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
// NOTE: commented out default since these stories are re-exported
|
|
2
|
-
// in the primary file './csf-docs-with-mdx-docs.stories.mdx'
|
|
3
|
-
//
|
|
4
|
-
// export default {
|
|
5
|
-
// title: 'Addons/Docs/csf-with-mdx-docs',
|
|
6
|
-
// component: Button,
|
|
7
|
-
// };
|
|
8
|
-
|
|
9
|
-
export const Primary = {
|
|
10
|
-
args: { label: 'Primary' },
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export const Secondary = {
|
|
14
|
-
args: { label: 'Secondary' },
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export const ImplicitName = {
|
|
18
|
-
args: { label: 'Implicit Name' },
|
|
19
|
-
};
|