@storybook/addon-docs 7.0.0-alpha.7 → 7.0.0-beta.0

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.
Files changed (134) hide show
  1. package/README.md +14 -77
  2. package/angular/index.js +1 -1
  3. package/dist/DocsRenderer-FLOC7YSC.mjs +1 -0
  4. package/dist/chunk-HXSBEJGO.mjs +1 -0
  5. package/dist/chunk-MA2MUXQN.mjs +1 -0
  6. package/dist/index.d.ts +10 -0
  7. package/dist/index.js +1 -0
  8. package/dist/index.mjs +1 -0
  9. package/dist/preset.d.ts +5 -0
  10. package/dist/preset.js +7 -0
  11. package/dist/preset.mjs +7 -0
  12. package/dist/preview.d.ts +3 -0
  13. package/dist/preview.js +1 -0
  14. package/dist/preview.mjs +1 -0
  15. package/dist/shims/mdx-react-shim.d.ts +1 -0
  16. package/dist/shims/mdx-react-shim.js +1 -0
  17. package/dist/shims/mdx-react-shim.mjs +1 -0
  18. package/jest-transform-mdx.js +4 -3
  19. package/jest.config.js +7 -0
  20. package/package.json +80 -46
  21. package/preset.js +1 -1
  22. package/preview.js +2 -1
  23. package/web-components/README.md +1 -0
  24. package/LICENSE +0 -21
  25. package/blocks.d.ts +0 -2
  26. package/blocks.js +0 -14
  27. package/dist/cjs/blocks/Anchor.js +0 -23
  28. package/dist/cjs/blocks/ArgsTable.js +0 -329
  29. package/dist/cjs/blocks/Canvas.js +0 -119
  30. package/dist/cjs/blocks/Description.js +0 -126
  31. package/dist/cjs/blocks/DocsContainer.js +0 -134
  32. package/dist/cjs/blocks/DocsContext.js +0 -25
  33. package/dist/cjs/blocks/DocsPage.js +0 -30
  34. package/dist/cjs/blocks/DocsRenderer.js +0 -48
  35. package/dist/cjs/blocks/DocsStory.js +0 -66
  36. package/dist/cjs/blocks/ExternalDocsContainer.js +0 -64
  37. package/dist/cjs/blocks/ExternalPreview.js +0 -99
  38. package/dist/cjs/blocks/Heading.js +0 -31
  39. package/dist/cjs/blocks/Meta.js +0 -64
  40. package/dist/cjs/blocks/Preview.js +0 -23
  41. package/dist/cjs/blocks/Primary.js +0 -39
  42. package/dist/cjs/blocks/Props.js +0 -29
  43. package/dist/cjs/blocks/Source.js +0 -175
  44. package/dist/cjs/blocks/SourceContainer.js +0 -67
  45. package/dist/cjs/blocks/Stories.js +0 -47
  46. package/dist/cjs/blocks/Story.js +0 -152
  47. package/dist/cjs/blocks/Subheading.js +0 -31
  48. package/dist/cjs/blocks/Subtitle.js +0 -39
  49. package/dist/cjs/blocks/Title.js +0 -44
  50. package/dist/cjs/blocks/Wrapper.js +0 -20
  51. package/dist/cjs/blocks/enhanceSource.js +0 -90
  52. package/dist/cjs/blocks/index.js +0 -394
  53. package/dist/cjs/blocks/mdx.js +0 -234
  54. package/dist/cjs/blocks/types.js +0 -10
  55. package/dist/cjs/blocks/useStory.js +0 -44
  56. package/dist/cjs/blocks/utils.js +0 -40
  57. package/dist/cjs/index.js +0 -18
  58. package/dist/cjs/manager.js +0 -20
  59. package/dist/cjs/preset.js +0 -154
  60. package/dist/cjs/preview.js +0 -22
  61. package/dist/cjs/shared.js +0 -22
  62. package/dist/esm/blocks/Anchor.js +0 -8
  63. package/dist/esm/blocks/ArgsTable.js +0 -292
  64. package/dist/esm/blocks/Canvas.js +0 -93
  65. package/dist/esm/blocks/Description.js +0 -107
  66. package/dist/esm/blocks/DocsContainer.js +0 -105
  67. package/dist/esm/blocks/DocsContext.js +0 -16
  68. package/dist/esm/blocks/DocsPage.js +0 -11
  69. package/dist/esm/blocks/DocsRenderer.js +0 -32
  70. package/dist/esm/blocks/DocsStory.js +0 -46
  71. package/dist/esm/blocks/ExternalDocsContainer.js +0 -48
  72. package/dist/esm/blocks/ExternalPreview.js +0 -89
  73. package/dist/esm/blocks/Heading.js +0 -17
  74. package/dist/esm/blocks/Meta.js +0 -45
  75. package/dist/esm/blocks/Preview.js +0 -9
  76. package/dist/esm/blocks/Primary.js +0 -23
  77. package/dist/esm/blocks/Props.js +0 -14
  78. package/dist/esm/blocks/Source.js +0 -150
  79. package/dist/esm/blocks/SourceContainer.js +0 -44
  80. package/dist/esm/blocks/Stories.js +0 -30
  81. package/dist/esm/blocks/Story.js +0 -123
  82. package/dist/esm/blocks/Subheading.js +0 -17
  83. package/dist/esm/blocks/Subtitle.js +0 -23
  84. package/dist/esm/blocks/Title.js +0 -24
  85. package/dist/esm/blocks/Wrapper.js +0 -8
  86. package/dist/esm/blocks/enhanceSource.js +0 -87
  87. package/dist/esm/blocks/index.js +0 -27
  88. package/dist/esm/blocks/mdx.js +0 -203
  89. package/dist/esm/blocks/types.js +0 -2
  90. package/dist/esm/blocks/useStory.js +0 -34
  91. package/dist/esm/blocks/utils.js +0 -29
  92. package/dist/esm/index.js +0 -1
  93. package/dist/esm/manager.js +0 -16
  94. package/dist/esm/preset.js +0 -132
  95. package/dist/esm/preview.js +0 -10
  96. package/dist/esm/shared.js +0 -11
  97. package/dist/types/blocks/Anchor.d.ts +0 -6
  98. package/dist/types/blocks/ArgsTable.d.ts +0 -33
  99. package/dist/types/blocks/Canvas.d.ts +0 -9
  100. package/dist/types/blocks/Description.d.ts +0 -20
  101. package/dist/types/blocks/DocsContainer.d.ts +0 -7
  102. package/dist/types/blocks/DocsContext.d.ts +0 -5
  103. package/dist/types/blocks/DocsPage.d.ts +0 -2
  104. package/dist/types/blocks/DocsRenderer.d.ts +0 -7
  105. package/dist/types/blocks/DocsStory.d.ts +0 -3
  106. package/dist/types/blocks/ExternalDocsContainer.d.ts +0 -4
  107. package/dist/types/blocks/ExternalPreview.d.ts +0 -19
  108. package/dist/types/blocks/Heading.d.ts +0 -6
  109. package/dist/types/blocks/Meta.d.ts +0 -12
  110. package/dist/types/blocks/Preview.d.ts +0 -3
  111. package/dist/types/blocks/Primary.d.ts +0 -6
  112. package/dist/types/blocks/Props.d.ts +0 -3
  113. package/dist/types/blocks/Source.d.ts +0 -38
  114. package/dist/types/blocks/SourceContainer.d.ts +0 -14
  115. package/dist/types/blocks/Stories.d.ts +0 -7
  116. package/dist/types/blocks/Story.d.ts +0 -30
  117. package/dist/types/blocks/Subheading.d.ts +0 -3
  118. package/dist/types/blocks/Subtitle.d.ts +0 -6
  119. package/dist/types/blocks/Title.d.ts +0 -8
  120. package/dist/types/blocks/Wrapper.d.ts +0 -2
  121. package/dist/types/blocks/enhanceSource.d.ts +0 -3
  122. package/dist/types/blocks/index.d.ts +0 -26
  123. package/dist/types/blocks/mdx.d.ts +0 -20
  124. package/dist/types/blocks/types.d.ts +0 -13
  125. package/dist/types/blocks/useStory.d.ts +0 -5
  126. package/dist/types/blocks/utils.d.ts +0 -3
  127. package/dist/types/index.d.ts +0 -1
  128. package/dist/types/manager.d.ts +0 -1
  129. package/dist/types/preset.d.ts +0 -12
  130. package/dist/types/preview.d.ts +0 -5
  131. package/dist/types/shared.d.ts +0 -24
  132. package/manager.js +0 -1
  133. package/mdx-compiler-plugin.js +0 -1
  134. package/register.js +0 -6
@@ -1,150 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { Source as PureSource, SourceError } from '@storybook/components';
3
- import { DocsContext } from './DocsContext';
4
- import { SourceContext } from './SourceContainer';
5
- import { CURRENT_SELECTION } from './types';
6
- import { SourceType } from '../shared';
7
- import { enhanceSource } from './enhanceSource';
8
- import { useStories } from './useStory';
9
- export let SourceState;
10
-
11
- (function (SourceState) {
12
- SourceState["OPEN"] = "open";
13
- SourceState["CLOSED"] = "closed";
14
- SourceState["NONE"] = "none";
15
- })(SourceState || (SourceState = {}));
16
-
17
- const getSourceState = stories => {
18
- const states = stories.map(story => story.parameters.docs?.source?.state).filter(Boolean);
19
- if (states.length === 0) return SourceState.CLOSED; // FIXME: handling multiple stories is a pain
20
-
21
- return states[0];
22
- };
23
-
24
- const getStorySource = (storyId, sourceContext) => {
25
- const {
26
- sources
27
- } = sourceContext; // source rendering is async so source is unavailable at the start of the render cycle,
28
- // so we fail gracefully here without warning
29
-
30
- return sources?.[storyId] || {
31
- code: '',
32
- format: false
33
- };
34
- };
35
-
36
- const getSnippet = (snippet, story) => {
37
- if (!story) {
38
- return snippet;
39
- }
40
-
41
- const {
42
- parameters
43
- } = story; // eslint-disable-next-line no-underscore-dangle
44
-
45
- const isArgsStory = parameters.__isArgsStory;
46
- const type = parameters.docs?.source?.type || SourceType.AUTO; // if user has hard-coded the snippet, that takes precedence
47
-
48
- const userCode = parameters.docs?.source?.code;
49
-
50
- if (userCode !== undefined) {
51
- return userCode;
52
- } // if user has explicitly set this as dynamic, use snippet
53
-
54
-
55
- if (type === SourceType.DYNAMIC) {
56
- return parameters.docs?.transformSource?.(snippet, story) || snippet;
57
- } // if this is an args story and there's a snippet
58
-
59
-
60
- if (type === SourceType.AUTO && snippet && isArgsStory) {
61
- return parameters.docs?.transformSource?.(snippet, story) || snippet;
62
- } // otherwise, use the source code logic
63
-
64
-
65
- const enhanced = enhanceSource(story) || parameters;
66
- return enhanced?.docs?.source?.code || '';
67
- };
68
-
69
- export const getSourceProps = (props, docsContext, sourceContext) => {
70
- const {
71
- id: currentId,
72
- storyById
73
- } = docsContext;
74
- let parameters = {};
75
-
76
- try {
77
- ({
78
- parameters
79
- } = storyById(currentId));
80
- } catch (err) {// TODO: in external mode, there is no "current"
81
- }
82
-
83
- const codeProps = props;
84
- const singleProps = props;
85
- const multiProps = props;
86
- let source = codeProps.code; // prefer user-specified code
87
-
88
- let {
89
- format
90
- } = codeProps; // prefer user-specified code
91
-
92
- const targetIds = multiProps.ids || [singleProps.id || currentId];
93
- const storyIds = targetIds.map(targetId => targetId === CURRENT_SELECTION ? currentId : targetId);
94
- const stories = useStories(storyIds, docsContext);
95
-
96
- if (!stories.every(Boolean)) {
97
- return {
98
- error: SourceError.SOURCE_UNAVAILABLE,
99
- state: SourceState.NONE
100
- };
101
- }
102
-
103
- if (!source) {
104
- // just take the format from the first story, given how they're all concatinated together...
105
- // TODO: we should consider sending an event with all the sources separately, instead of concatenating them here
106
- ({
107
- format
108
- } = getStorySource(storyIds[0], sourceContext));
109
- source = storyIds.map((storyId, idx) => {
110
- const {
111
- code: storySource
112
- } = getStorySource(storyId, sourceContext);
113
- const storyObj = stories[idx];
114
- return getSnippet(storySource, storyObj);
115
- }).join('\n\n');
116
- }
117
-
118
- const state = getSourceState(stories);
119
- const {
120
- docs: docsParameters = {}
121
- } = parameters;
122
- const {
123
- source: sourceParameters = {}
124
- } = docsParameters;
125
- const {
126
- language: docsLanguage = null
127
- } = sourceParameters;
128
- return source ? {
129
- code: source,
130
- state,
131
- format,
132
- language: props.language || docsLanguage || 'jsx',
133
- dark: props.dark || false
134
- } : {
135
- error: SourceError.SOURCE_UNAVAILABLE,
136
- state
137
- };
138
- };
139
- /**
140
- * Story source doc block renders source code if provided,
141
- * or the source for a story if `storyId` is provided, or
142
- * the source for the current story if nothing is provided.
143
- */
144
-
145
- export const Source = props => {
146
- const sourceContext = useContext(SourceContext);
147
- const docsContext = useContext(DocsContext);
148
- const sourceProps = getSourceProps(props, docsContext, sourceContext);
149
- return /*#__PURE__*/React.createElement(PureSource, sourceProps);
150
- };
@@ -1,44 +0,0 @@
1
- import React, { createContext, useEffect, useState } from 'react';
2
- import deepEqual from 'fast-deep-equal';
3
- import { addons } from '@storybook/addons';
4
- import { SNIPPET_RENDERED } from '../shared';
5
- export const SourceContext = /*#__PURE__*/createContext({
6
- sources: {}
7
- });
8
- export const SourceContainer = ({
9
- children
10
- }) => {
11
- const [sources, setSources] = useState({});
12
- const channel = addons.getChannel();
13
- useEffect(() => {
14
- const handleSnippetRendered = (id, newSource, format = false) => {
15
- // optimization: if the source is the same, ignore the incoming event
16
- if (sources[id] && sources[id].code === newSource) {
17
- return;
18
- }
19
-
20
- setSources(current => {
21
- const newSources = Object.assign({}, current, {
22
- [id]: {
23
- code: newSource,
24
- format
25
- }
26
- });
27
-
28
- if (!deepEqual(current, newSources)) {
29
- return newSources;
30
- }
31
-
32
- return current;
33
- });
34
- };
35
-
36
- channel.on(SNIPPET_RENDERED, handleSnippetRendered);
37
- return () => channel.off(SNIPPET_RENDERED, handleSnippetRendered);
38
- }, []);
39
- return /*#__PURE__*/React.createElement(SourceContext.Provider, {
40
- value: {
41
- sources
42
- }
43
- }, children);
44
- };
@@ -1,30 +0,0 @@
1
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
-
3
- import React, { useContext } from 'react';
4
- import { DocsContext } from './DocsContext';
5
- import { DocsStory } from './DocsStory';
6
- import { Heading } from './Heading';
7
- export const Stories = ({
8
- title,
9
- includePrimary = false
10
- }) => {
11
- const {
12
- componentStories
13
- } = useContext(DocsContext);
14
- let stories = componentStories();
15
- stories = stories.filter(story => !story.parameters?.docs?.disable);
16
- if (!includePrimary) stories = stories.slice(1);
17
-
18
- if (!stories || stories.length === 0) {
19
- return null;
20
- }
21
-
22
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Heading, null, title), stories.map(story => story && /*#__PURE__*/React.createElement(DocsStory, _extends({
23
- key: story.id
24
- }, story, {
25
- expanded: true
26
- }))));
27
- };
28
- Stories.defaultProps = {
29
- title: 'Stories'
30
- };
@@ -1,123 +0,0 @@
1
- import React, { useContext, useRef, useEffect, useState } from 'react';
2
- import { MDXProvider } from '@mdx-js/react';
3
- import { resetComponents, Story as PureStory, StorySkeleton } from '@storybook/components';
4
- import { toId, storyNameFromExport } from '@storybook/csf';
5
- import { CURRENT_SELECTION } from './types';
6
- import { DocsContext } from './DocsContext';
7
- import { useStory } from './useStory';
8
- export const storyBlockIdFromId = storyId => `story--${storyId}`;
9
- export const lookupStoryId = (storyName, {
10
- mdxStoryNameToKey,
11
- mdxComponentAnnotations
12
- }) => toId(mdxComponentAnnotations.id || mdxComponentAnnotations.title, storyNameFromExport(mdxStoryNameToKey[storyName]));
13
- export const getStoryId = (props, context) => {
14
- const {
15
- id,
16
- of,
17
- meta
18
- } = props;
19
-
20
- if (of) {
21
- return context.storyIdByModuleExport(of, meta);
22
- }
23
-
24
- const {
25
- name
26
- } = props;
27
- const inputId = id === CURRENT_SELECTION ? context.id : id;
28
- return inputId || lookupStoryId(name, context);
29
- };
30
- export const getStoryProps = ({
31
- height,
32
- inline
33
- }, story) => {
34
- const {
35
- name: storyName,
36
- parameters = {}
37
- } = story || {};
38
- const {
39
- docs = {}
40
- } = parameters;
41
-
42
- if (docs.disable) {
43
- return null;
44
- } // prefer block props, then story parameters defined by the framework-specific settings and optionally overridden by users
45
-
46
-
47
- const {
48
- inlineStories = false,
49
- iframeHeight = 100
50
- } = docs;
51
- const storyIsInline = typeof inline === 'boolean' ? inline : inlineStories;
52
- return Object.assign({
53
- inline: storyIsInline,
54
- id: story?.id,
55
- height: height || (storyIsInline ? undefined : iframeHeight),
56
- title: storyName
57
- }, storyIsInline && {
58
- parameters
59
- });
60
- };
61
-
62
- const Story = props => {
63
- const context = useContext(DocsContext);
64
- const storyRef = useRef();
65
- const storyId = getStoryId(props, context);
66
- const story = useStory(storyId, context);
67
- const [showLoader, setShowLoader] = useState(true);
68
- useEffect(() => {
69
- let cleanup;
70
-
71
- if (story && storyRef.current) {
72
- const element = storyRef.current;
73
- cleanup = context.renderStoryToElement(story, element);
74
- setShowLoader(false);
75
- }
76
-
77
- return () => cleanup && cleanup();
78
- }, [story]);
79
-
80
- if (!story) {
81
- return /*#__PURE__*/React.createElement(StorySkeleton, null);
82
- }
83
-
84
- const storyProps = getStoryProps(props, story);
85
-
86
- if (!storyProps) {
87
- return null;
88
- }
89
-
90
- const inline = context.type === 'external' || storyProps.inline;
91
-
92
- if (inline) {
93
- // We do this so React doesn't complain when we replace the span in a secondary render
94
- const htmlContents = `<span></span>`; // FIXME: height/style/etc. lifted from PureStory
95
-
96
- const {
97
- height
98
- } = storyProps;
99
- return /*#__PURE__*/React.createElement("div", {
100
- id: storyBlockIdFromId(story.id)
101
- }, /*#__PURE__*/React.createElement(MDXProvider, {
102
- components: resetComponents
103
- }, height ? /*#__PURE__*/React.createElement("style", null, `#story--${story.id} { min-height: ${height}px; transform: translateZ(0); overflow: auto }`) : null, showLoader && /*#__PURE__*/React.createElement(StorySkeleton, null), /*#__PURE__*/React.createElement("div", {
104
- ref: storyRef,
105
- "data-name": story.name,
106
- dangerouslySetInnerHTML: {
107
- __html: htmlContents
108
- }
109
- })));
110
- }
111
-
112
- return /*#__PURE__*/React.createElement("div", {
113
- id: storyBlockIdFromId(story.id)
114
- }, /*#__PURE__*/React.createElement(MDXProvider, {
115
- components: resetComponents
116
- }, /*#__PURE__*/React.createElement(PureStory, storyProps)));
117
- };
118
-
119
- Story.defaultProps = {
120
- children: null,
121
- name: null
122
- };
123
- export { Story };
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { H3 } from '@storybook/components';
3
- import { HeaderMdx } from './mdx';
4
- export const Subheading = ({
5
- children,
6
- disableAnchor
7
- }) => {
8
- if (disableAnchor || typeof children !== 'string') {
9
- return /*#__PURE__*/React.createElement(H3, null, children);
10
- }
11
-
12
- const tagID = children.toLowerCase().replace(/[^a-z0-9]/gi, '-');
13
- return /*#__PURE__*/React.createElement(HeaderMdx, {
14
- as: "h3",
15
- id: tagID
16
- }, children);
17
- };
@@ -1,23 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { Subtitle as PureSubtitle } from '@storybook/components';
3
- import { DocsContext } from './DocsContext';
4
- export const Subtitle = ({
5
- children
6
- }) => {
7
- const {
8
- id,
9
- storyById
10
- } = useContext(DocsContext);
11
- const {
12
- parameters
13
- } = storyById(id);
14
- let text = children;
15
-
16
- if (!text) {
17
- text = parameters?.componentSubtitle;
18
- }
19
-
20
- return text ? /*#__PURE__*/React.createElement(PureSubtitle, {
21
- className: "sbdocs-subtitle"
22
- }, text) : null;
23
- };
@@ -1,24 +0,0 @@
1
- import React, { useContext } from 'react';
2
- import { Title as PureTitle } from '@storybook/components';
3
- import { DocsContext } from './DocsContext';
4
- const STORY_KIND_PATH_SEPARATOR = /\s*\/\s*/;
5
- export const extractTitle = ({
6
- title
7
- }) => {
8
- const groups = title.trim().split(STORY_KIND_PATH_SEPARATOR);
9
- return groups && groups[groups.length - 1] || title;
10
- };
11
- export const Title = ({
12
- children
13
- }) => {
14
- const context = useContext(DocsContext);
15
- let text = children;
16
-
17
- if (!text) {
18
- text = extractTitle(context);
19
- }
20
-
21
- return text ? /*#__PURE__*/React.createElement(PureTitle, {
22
- className: "sbdocs-title"
23
- }, text) : null;
24
- };
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- export const Wrapper = ({
3
- children
4
- }) => /*#__PURE__*/React.createElement("div", {
5
- style: {
6
- fontFamily: 'sans-serif'
7
- }
8
- }, children);
@@ -1,87 +0,0 @@
1
- import { combineParameters } from '@storybook/store'; // ============================================================
2
- // START @storybook/source-loader/extract-source
3
- //
4
- // This code duplicated because tree-shaking isn't working.
5
- // It's not DRY, but source-loader is on the chopping block for
6
- // the next version of addon-docs, so it's not the worst sin.
7
- // ============================================================
8
-
9
- /**
10
- * given a location, extract the text from the full source
11
- */
12
- function extractSource(location, lines) {
13
- const {
14
- startBody: start,
15
- endBody: end
16
- } = location;
17
-
18
- if (start.line === end.line && lines[start.line - 1] !== undefined) {
19
- return lines[start.line - 1].substring(start.col, end.col);
20
- } // NOTE: storysource locations are 1-based not 0-based!
21
-
22
-
23
- const startLine = lines[start.line - 1];
24
- const endLine = lines[end.line - 1];
25
-
26
- if (startLine === undefined || endLine === undefined) {
27
- return null;
28
- }
29
-
30
- return [startLine.substring(start.col), ...lines.slice(start.line, end.line - 1), endLine.substring(0, end.col)].join('\n');
31
- } // ============================================================
32
- // END @storybook/source-loader/extract-source
33
- // ============================================================
34
-
35
-
36
- /**
37
- * Replaces full story id name like: story-kind--story-name -> story-name
38
- * @param id
39
- */
40
- const storyIdToSanitizedStoryName = id => id.replace(/^.*?--/, '');
41
-
42
- const extract = (targetId, {
43
- source,
44
- locationsMap
45
- }) => {
46
- if (!locationsMap) {
47
- return source;
48
- }
49
-
50
- const sanitizedStoryName = storyIdToSanitizedStoryName(targetId);
51
- const location = locationsMap[sanitizedStoryName];
52
-
53
- if (!location) {
54
- return source;
55
- }
56
-
57
- const lines = source.split('\n');
58
- return extractSource(location, lines);
59
- };
60
-
61
- export const enhanceSource = story => {
62
- const {
63
- id,
64
- parameters
65
- } = story;
66
- const {
67
- storySource,
68
- docs = {}
69
- } = parameters;
70
- const {
71
- transformSource
72
- } = docs; // no input or user has manually overridden the output
73
-
74
- if (!storySource?.source || docs.source?.code) {
75
- return null;
76
- }
77
-
78
- const input = extract(id, storySource);
79
- const code = transformSource ? transformSource(input, story) : input;
80
- return {
81
- docs: combineParameters(docs, {
82
- source: {
83
- code
84
- }
85
- })
86
- };
87
- };
@@ -1,27 +0,0 @@
1
- export { ColorPalette, ColorItem, IconGallery, IconItem, Typeset } from '@storybook/components';
2
- export * from './Anchor';
3
- export * from './ArgsTable';
4
- export * from './Canvas';
5
- export * from './Description';
6
- export * from './DocsContext';
7
- export * from './DocsPage';
8
- export * from './DocsContainer';
9
- export * from './DocsRenderer'; // For testing
10
-
11
- export * from './ExternalDocsContainer';
12
- export * from './DocsStory';
13
- export * from './Heading';
14
- export * from './Meta';
15
- export * from './Preview';
16
- export * from './Primary';
17
- export * from './Props';
18
- export * from './Source';
19
- export * from './SourceContainer';
20
- export * from './Stories';
21
- export * from './Story';
22
- export * from './Subheading';
23
- export * from './Subtitle';
24
- export * from './Title';
25
- export * from './Wrapper';
26
- export * from './types';
27
- export * from './mdx';