@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/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==null?void 0: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 parameters={docs:{renderer:async()=>{let{DocsRenderer:DocsRenderer2}=await Promise.resolve().then(()=>(init_DocsRenderer(),DocsRenderer_exports));return new DocsRenderer2}}};0&&(module.exports={parameters});
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
- var parameters={docs:{renderer:async()=>{let{DocsRenderer}=await import('./DocsRenderer-NNNQARDV.mjs');return new DocsRenderer}}};
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.0",
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
- "@jest/transform": "^29.3.1",
102
- "@mdx-js/react": "^2.1.5",
103
- "@storybook/blocks": "8.0.0-alpha.0",
104
- "@storybook/client-logger": "8.0.0-alpha.0",
105
- "@storybook/components": "8.0.0-alpha.0",
106
- "@storybook/csf-plugin": "8.0.0-alpha.0",
107
- "@storybook/csf-tools": "8.0.0-alpha.0",
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/mdx2-csf": "^1.0.0",
110
- "@storybook/node-logger": "8.0.0-alpha.0",
111
- "@storybook/postinstall": "8.0.0-alpha.0",
112
- "@storybook/preview-api": "8.0.0-alpha.0",
113
- "@storybook/react-dom-shim": "8.0.0-alpha.0",
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
- "react": "^18.2.0",
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-typescript` (default) or `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-typescript' | false
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** | **Many**. There are a lot of corner cases that are not handled properly, and are annoying for developers. | **Few**. But there's a dealbreaker, which is lack for imported types (see below). |
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:
@@ -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
@@ -1,7 +0,0 @@
1
- const path = require('path');
2
- const baseConfig = require('../../jest.config.browser');
3
-
4
- module.exports = {
5
- ...baseConfig,
6
- displayName: __dirname.split(path.sep).slice(-2).join(path.posix.sep),
7
- };
@@ -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
- };