@storybook/addon-docs 7.0.0-alpha.11 → 7.0.0-alpha.16

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.
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.defaultComponents = exports.DocsRenderer = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _reactDom = _interopRequireDefault(require("react-dom"));
11
+
12
+ var _components = require("@storybook/components");
13
+
14
+ var _blocks = require("@storybook/blocks");
15
+
16
+ var _react2 = require("@mdx-js/react");
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ // TS doesn't like that we export a component with types that it doesn't know about (TS4203)
21
+ const defaultComponents = Object.assign({}, _components.components, {
22
+ code: _blocks.CodeOrSourceMdx,
23
+ a: _blocks.AnchorMdx
24
+ }, _blocks.HeadersMdx);
25
+ exports.defaultComponents = defaultComponents;
26
+
27
+ class DocsRenderer {
28
+ constructor() {
29
+ this.render = void 0;
30
+ this.unmount = void 0;
31
+
32
+ this.render = (context, docsParameter, element, callback) => {
33
+ // Use a random key to force the container to re-render each time we call `renderDocs`
34
+ // TODO: do we still need this? It was needed for angular (legacy) inline rendering:
35
+ // https://github.com/storybookjs/storybook/pull/16149
36
+ _reactDom.default.render( /*#__PURE__*/_react.default.createElement(_react2.MDXProvider, {
37
+ components: defaultComponents
38
+ }, /*#__PURE__*/_react.default.createElement(_blocks.Docs, {
39
+ key: Math.random(),
40
+ context: context,
41
+ docsParameter: docsParameter
42
+ })), element, callback);
43
+ };
44
+
45
+ this.unmount = element => {
46
+ _reactDom.default.unmountComponentAtNode(element);
47
+ };
48
+ }
49
+
50
+ }
51
+
52
+ exports.DocsRenderer = DocsRenderer;
package/dist/cjs/index.js CHANGED
@@ -3,11 +3,21 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ var _exportNames = {
7
+ DocsRenderer: true
8
+ };
9
+ Object.defineProperty(exports, "DocsRenderer", {
10
+ enumerable: true,
11
+ get: function () {
12
+ return _DocsRenderer.DocsRenderer;
13
+ }
14
+ });
6
15
 
7
16
  var _blocks = require("./blocks");
8
17
 
9
18
  Object.keys(_blocks).forEach(function (key) {
10
19
  if (key === "default" || key === "__esModule") return;
20
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
11
21
  if (key in exports && exports[key] === _blocks[key]) return;
12
22
  Object.defineProperty(exports, key, {
13
23
  enumerable: true,
@@ -15,4 +25,6 @@ Object.keys(_blocks).forEach(function (key) {
15
25
  return _blocks[key];
16
26
  }
17
27
  });
18
- });
28
+ });
29
+
30
+ var _DocsRenderer = require("./DocsRenderer");
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.storyIndexers = void 0;
6
+ exports.storyIndexers = exports.docs = void 0;
7
7
  exports.webpack = webpack;
8
8
 
9
9
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
@@ -64,6 +64,7 @@ async function webpack(webpackConfig = {}, options) {
64
64
  transcludeMarkdown = false
65
65
  } = options;
66
66
  const mdxLoaderOptions = {
67
+ // whether to skip storybook files, useful for docs only mdx or md files
67
68
  skipCsf: true,
68
69
  remarkPlugins: [_remarkSlug.default, _remarkExternalLinks.default]
69
70
  };
@@ -116,7 +117,10 @@ async function webpack(webpackConfig = {}, options) {
116
117
  configureJSX
117
118
  })
118
119
  }, {
119
- loader: mdxLoader
120
+ loader: mdxLoader,
121
+ options: Object.assign({}, mdxLoaderOptions, {
122
+ skipCsf: false
123
+ })
120
124
  }]
121
125
  }, {
122
126
  test: /\.mdx$/,
@@ -155,8 +159,19 @@ const storyIndexers = async indexers => {
155
159
 
156
160
  return [{
157
161
  test: /(stories|story)\.mdx$/,
158
- indexer: mdxIndexer
162
+ indexer: mdxIndexer,
163
+ addDocsTemplate: true
159
164
  }, ...(indexers || [])];
160
165
  };
161
166
 
162
- exports.storyIndexers = storyIndexers;
167
+ exports.storyIndexers = storyIndexers;
168
+
169
+ const docs = docsOptions => {
170
+ return Object.assign({}, docsOptions, {
171
+ enabled: true,
172
+ defaultName: 'Docs',
173
+ docsPage: true
174
+ });
175
+ };
176
+
177
+ exports.docs = docs;
@@ -14,7 +14,7 @@ const parameters = {
14
14
  renderer: async () => {
15
15
  const {
16
16
  DocsRenderer
17
- } = await Promise.resolve().then(() => _interopRequireWildcard(require('./blocks')));
17
+ } = await Promise.resolve().then(() => _interopRequireWildcard(require('./DocsRenderer')));
18
18
  return new DocsRenderer();
19
19
  }
20
20
  }
@@ -0,0 +1,34 @@
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom';
3
+ import { components as htmlComponents } from '@storybook/components';
4
+ import { Docs, CodeOrSourceMdx, AnchorMdx, HeadersMdx } from '@storybook/blocks';
5
+ import { MDXProvider } from '@mdx-js/react'; // TS doesn't like that we export a component with types that it doesn't know about (TS4203)
6
+
7
+ export const defaultComponents = Object.assign({}, htmlComponents, {
8
+ code: CodeOrSourceMdx,
9
+ a: AnchorMdx
10
+ }, HeadersMdx);
11
+ export class DocsRenderer {
12
+ constructor() {
13
+ this.render = void 0;
14
+ this.unmount = void 0;
15
+
16
+ this.render = (context, docsParameter, element, callback) => {
17
+ // Use a random key to force the container to re-render each time we call `renderDocs`
18
+ // TODO: do we still need this? It was needed for angular (legacy) inline rendering:
19
+ // https://github.com/storybookjs/storybook/pull/16149
20
+ ReactDOM.render( /*#__PURE__*/React.createElement(MDXProvider, {
21
+ components: defaultComponents
22
+ }, /*#__PURE__*/React.createElement(Docs, {
23
+ key: Math.random(),
24
+ context: context,
25
+ docsParameter: docsParameter
26
+ })), element, callback);
27
+ };
28
+
29
+ this.unmount = element => {
30
+ ReactDOM.unmountComponentAtNode(element);
31
+ };
32
+ }
33
+
34
+ }
package/dist/esm/index.js CHANGED
@@ -1 +1,2 @@
1
- export * from './blocks';
1
+ export * from './blocks';
2
+ export { DocsRenderer } from './DocsRenderer';
@@ -45,6 +45,7 @@ export async function webpack(webpackConfig = {}, options) {
45
45
  transcludeMarkdown = false
46
46
  } = options;
47
47
  const mdxLoaderOptions = {
48
+ // whether to skip storybook files, useful for docs only mdx or md files
48
49
  skipCsf: true,
49
50
  remarkPlugins: [remarkSlug, remarkExternalLinks]
50
51
  };
@@ -91,7 +92,10 @@ export async function webpack(webpackConfig = {}, options) {
91
92
  configureJSX
92
93
  })
93
94
  }, {
94
- loader: mdxLoader
95
+ loader: mdxLoader,
96
+ options: Object.assign({}, mdxLoaderOptions, {
97
+ skipCsf: false
98
+ })
95
99
  }]
96
100
  }, {
97
101
  test: /\.mdx$/,
@@ -127,6 +131,14 @@ export const storyIndexers = async indexers => {
127
131
 
128
132
  return [{
129
133
  test: /(stories|story)\.mdx$/,
130
- indexer: mdxIndexer
134
+ indexer: mdxIndexer,
135
+ addDocsTemplate: true
131
136
  }, ...(indexers || [])];
137
+ };
138
+ export const docs = docsOptions => {
139
+ return Object.assign({}, docsOptions, {
140
+ enabled: true,
141
+ defaultName: 'Docs',
142
+ docsPage: true
143
+ });
132
144
  };
@@ -3,7 +3,7 @@ export const parameters = {
3
3
  renderer: async () => {
4
4
  const {
5
5
  DocsRenderer
6
- } = await import('./blocks');
6
+ } = await import('./DocsRenderer');
7
7
  return new DocsRenderer();
8
8
  }
9
9
  }
@@ -0,0 +1,8 @@
1
+ import { AnyFramework } from '@storybook/csf';
2
+ import { DocsRenderFunction } from '@storybook/preview-web';
3
+ export declare const defaultComponents: Record<string, any>;
4
+ export declare class DocsRenderer<TFramework extends AnyFramework> {
5
+ render: DocsRenderFunction<TFramework>;
6
+ unmount: (element: HTMLElement) => void;
7
+ constructor();
8
+ }
@@ -1 +1,2 @@
1
1
  export * from './blocks';
2
+ export { DocsRenderer } from './DocsRenderer';
@@ -1,4 +1,4 @@
1
- import type { Options, StoryIndexer } from '@storybook/core-common';
1
+ import type { DocsOptions, Options, StoryIndexer } from '@storybook/core-common';
2
2
  declare type BabelParams = {
3
3
  babelOptions?: any;
4
4
  mdxBabelOptions?: any;
@@ -8,5 +8,10 @@ export declare function webpack(webpackConfig: any, options: Options & BabelPara
8
8
  sourceLoaderOptions: any;
9
9
  transcludeMarkdown: boolean;
10
10
  }): Promise<any>;
11
- export declare const storyIndexers: (indexers?: StoryIndexer[]) => Promise<StoryIndexer[]>;
11
+ export declare const storyIndexers: (indexers: StoryIndexer[] | null) => Promise<StoryIndexer[]>;
12
+ export declare const docs: (docsOptions: DocsOptions) => {
13
+ enabled: boolean;
14
+ defaultName: string;
15
+ docsPage: boolean;
16
+ };
12
17
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/addon-docs",
3
- "version": "7.0.0-alpha.11",
3
+ "version": "7.0.0-alpha.16",
4
4
  "description": "Document component usage and properties in Markdown",
5
5
  "keywords": [
6
6
  "addon",
@@ -53,25 +53,25 @@
53
53
  "@babel/preset-env": "^7.12.11",
54
54
  "@jest/transform": "^26.6.2",
55
55
  "@mdx-js/react": "^1.6.22",
56
- "@storybook/addons": "7.0.0-alpha.11",
57
- "@storybook/api": "7.0.0-alpha.11",
58
- "@storybook/blocks": "7.0.0-alpha.11",
59
- "@storybook/components": "7.0.0-alpha.11",
60
- "@storybook/core-common": "7.0.0-alpha.11",
61
- "@storybook/core-events": "7.0.0-alpha.11",
56
+ "@storybook/addons": "7.0.0-alpha.16",
57
+ "@storybook/api": "7.0.0-alpha.16",
58
+ "@storybook/blocks": "7.0.0-alpha.16",
59
+ "@storybook/components": "7.0.0-alpha.16",
60
+ "@storybook/core-common": "7.0.0-alpha.16",
61
+ "@storybook/core-events": "7.0.0-alpha.16",
62
62
  "@storybook/csf": "0.0.2--canary.4566f4d.1",
63
- "@storybook/csf-tools": "7.0.0-alpha.11",
64
- "@storybook/docs-tools": "7.0.0-alpha.11",
65
- "@storybook/mdx1-csf": "^0.0.1",
66
- "@storybook/node-logger": "7.0.0-alpha.11",
67
- "@storybook/postinstall": "7.0.0-alpha.11",
68
- "@storybook/preview-web": "7.0.0-alpha.11",
69
- "@storybook/source-loader": "7.0.0-alpha.11",
70
- "@storybook/store": "7.0.0-alpha.11",
71
- "@storybook/theming": "7.0.0-alpha.11",
63
+ "@storybook/csf-tools": "7.0.0-alpha.16",
64
+ "@storybook/docs-tools": "7.0.0-alpha.16",
65
+ "@storybook/mdx1-csf": "0.0.5-canary.13.9ce928a.0",
66
+ "@storybook/node-logger": "7.0.0-alpha.16",
67
+ "@storybook/postinstall": "7.0.0-alpha.16",
68
+ "@storybook/preview-web": "7.0.0-alpha.16",
69
+ "@storybook/source-loader": "7.0.0-alpha.16",
70
+ "@storybook/store": "7.0.0-alpha.16",
71
+ "@storybook/theming": "7.0.0-alpha.16",
72
72
  "babel-loader": "^8.2.5",
73
73
  "core-js": "^3.8.2",
74
- "fast-deep-equal": "^3.1.3",
74
+ "dequal": "^2.0.2",
75
75
  "global": "^4.4.0",
76
76
  "lodash": "^4.17.21",
77
77
  "remark-external-links": "^8.0.0",
@@ -81,12 +81,12 @@
81
81
  },
82
82
  "devDependencies": {
83
83
  "@babel/core": "^7.12.10",
84
- "@storybook/mdx2-csf": "^0.0.3",
84
+ "@storybook/mdx2-csf": "0.0.4-canary.14.04ffbe8.0",
85
85
  "@types/util-deprecate": "^1.0.0",
86
86
  "typescript": "~4.6.3"
87
87
  },
88
88
  "peerDependencies": {
89
- "@storybook/mdx2-csf": "^0.0.3",
89
+ "@storybook/mdx2-csf": "0.0.4-canary.14.04ffbe8.0",
90
90
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
91
91
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0"
92
92
  },
@@ -104,7 +104,7 @@
104
104
  "publishConfig": {
105
105
  "access": "public"
106
106
  },
107
- "gitHead": "688d338903e84a7e83cb104472e868e734399f65",
107
+ "gitHead": "df30e7db2b251418af106345e5722477f057ec36",
108
108
  "storybook": {
109
109
  "displayName": "Docs",
110
110
  "icon": "https://user-images.githubusercontent.com/263385/101991672-48355c80-3c7c-11eb-82d9-95fa12438f64.png",
@@ -1,20 +0,0 @@
1
- "use strict";
2
-
3
- var _addons = require("@storybook/addons");
4
-
5
- var _shared = require("./shared");
6
-
7
- _addons.addons.register(_shared.ADDON_ID, () => {
8
- _addons.addons.add(_shared.PANEL_ID, {
9
- type: _addons.types.TAB,
10
- title: 'Docs',
11
- route: ({
12
- storyId,
13
- refId
14
- }) => refId ? `/docs/${refId}_${storyId}` : `/docs/${storyId}`,
15
- match: ({
16
- viewMode
17
- }) => viewMode === 'docs',
18
- render: () => null
19
- });
20
- });
@@ -1,16 +0,0 @@
1
- import { addons, types } from '@storybook/addons';
2
- import { ADDON_ID, PANEL_ID } from './shared';
3
- addons.register(ADDON_ID, () => {
4
- addons.add(PANEL_ID, {
5
- type: types.TAB,
6
- title: 'Docs',
7
- route: ({
8
- storyId,
9
- refId
10
- }) => refId ? `/docs/${refId}_${storyId}` : `/docs/${storyId}`,
11
- match: ({
12
- viewMode
13
- }) => viewMode === 'docs',
14
- render: () => null
15
- });
16
- });
@@ -1 +0,0 @@
1
- export {};
package/manager.js DELETED
@@ -1 +0,0 @@
1
- import './dist/esm/manager';
package/register.js DELETED
@@ -1,6 +0,0 @@
1
- import { once } from '@storybook/client-logger';
2
- import './manager';
3
-
4
- once.warn(
5
- 'register.js is deprecated see https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-registerjs'
6
- );