@storybook/react 6.5.0-alpha.9 → 6.5.0-beta.2

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 (195) hide show
  1. package/README.md +2 -2
  2. package/dist/cjs/client/docs/config.js +29 -0
  3. package/dist/cjs/client/docs/extractArgTypes.js +54 -0
  4. package/dist/cjs/client/docs/extractProps.js +77 -0
  5. package/dist/cjs/client/docs/jsxDecorator.js +277 -0
  6. package/dist/cjs/client/docs/lib/captions.js +18 -0
  7. package/dist/cjs/client/docs/lib/componentTypes.js +24 -0
  8. package/dist/cjs/client/docs/lib/defaultValues/createDefaultValue.js +81 -0
  9. package/dist/cjs/client/docs/lib/defaultValues/createFromRawDefaultProp.js +225 -0
  10. package/dist/cjs/client/docs/lib/defaultValues/generateArray.js +29 -0
  11. package/dist/cjs/client/docs/lib/defaultValues/generateObject.js +29 -0
  12. package/dist/cjs/client/docs/lib/defaultValues/index.js +37 -0
  13. package/dist/cjs/client/docs/lib/defaultValues/prettyIdentifier.js +34 -0
  14. package/dist/cjs/client/docs/lib/generateCode.js +89 -0
  15. package/dist/cjs/client/docs/lib/index.js +63 -0
  16. package/dist/cjs/client/docs/lib/inspection/acornParser.js +254 -0
  17. package/dist/cjs/client/docs/lib/inspection/index.js +37 -0
  18. package/dist/cjs/client/docs/lib/inspection/inspectValue.js +26 -0
  19. package/dist/cjs/client/docs/lib/inspection/types.js +19 -0
  20. package/dist/cjs/client/docs/lib/isHtmlTag.js +18 -0
  21. package/dist/cjs/client/docs/propTypes/createType.js +469 -0
  22. package/dist/cjs/client/docs/propTypes/generateFuncSignature.js +78 -0
  23. package/dist/cjs/client/docs/propTypes/handleProp.js +54 -0
  24. package/dist/cjs/client/docs/propTypes/rawDefaultPropResolvers.js +47 -0
  25. package/dist/cjs/client/docs/propTypes/sortProps.js +37 -0
  26. package/dist/cjs/client/docs/react-argtypes.stories.js +129 -0
  27. package/dist/cjs/client/docs/typeScript/handleProp.js +38 -0
  28. package/dist/cjs/client/index.js +30 -14
  29. package/dist/cjs/client/preview/config.js +1 -1
  30. package/dist/cjs/client/preview/index.js +3 -3
  31. package/dist/cjs/client/preview/render.js +117 -34
  32. package/dist/cjs/client/preview/types-6-0.js +5 -1
  33. package/dist/cjs/client/preview/types-6-3.js +2 -0
  34. package/dist/cjs/client/preview/types-7-0.js +5 -1
  35. package/dist/cjs/client/preview/types.js +5 -1
  36. package/dist/cjs/client/testing/index.js +112 -0
  37. package/dist/cjs/demo/Welcome.js +7 -3
  38. package/dist/cjs/server/{framework-preset-react-docgen.js → framework-preset-react-docs.js} +21 -11
  39. package/dist/cjs/server/framework-preset-react-dom-hack.js +31 -0
  40. package/dist/cjs/server/framework-preset-react.js +2 -2
  41. package/dist/cjs/server/preset.js +4 -4
  42. package/dist/esm/client/docs/config.js +16 -0
  43. package/dist/esm/client/docs/extractArgTypes.js +39 -0
  44. package/dist/esm/client/docs/extractProps.js +54 -0
  45. package/dist/esm/client/docs/jsxDecorator.js +218 -0
  46. package/dist/esm/client/docs/lib/captions.js +6 -0
  47. package/dist/esm/client/docs/lib/componentTypes.js +9 -0
  48. package/dist/esm/client/docs/lib/defaultValues/createDefaultValue.js +67 -0
  49. package/dist/esm/client/docs/lib/defaultValues/createFromRawDefaultProp.js +191 -0
  50. package/dist/esm/client/docs/lib/defaultValues/generateArray.js +19 -0
  51. package/dist/esm/client/docs/lib/defaultValues/generateObject.js +19 -0
  52. package/dist/esm/client/docs/lib/defaultValues/index.js +2 -0
  53. package/dist/esm/client/docs/lib/defaultValues/prettyIdentifier.js +22 -0
  54. package/dist/esm/client/docs/lib/generateCode.js +68 -0
  55. package/dist/esm/client/docs/lib/index.js +4 -0
  56. package/dist/esm/client/docs/lib/inspection/acornParser.js +213 -0
  57. package/dist/esm/client/docs/lib/inspection/index.js +2 -0
  58. package/dist/esm/client/docs/lib/inspection/inspectValue.js +16 -0
  59. package/dist/esm/client/docs/lib/inspection/types.js +12 -0
  60. package/dist/esm/client/docs/lib/isHtmlTag.js +6 -0
  61. package/dist/esm/client/docs/propTypes/createType.js +449 -0
  62. package/dist/esm/client/docs/propTypes/generateFuncSignature.js +62 -0
  63. package/dist/esm/client/docs/propTypes/handleProp.js +39 -0
  64. package/dist/esm/client/docs/propTypes/rawDefaultPropResolvers.js +32 -0
  65. package/dist/esm/client/docs/propTypes/sortProps.js +24 -0
  66. package/dist/esm/client/docs/react-argtypes.stories.js +97 -0
  67. package/dist/esm/client/docs/typeScript/handleProp.js +27 -0
  68. package/dist/esm/client/index.js +1 -0
  69. package/dist/esm/client/preview/index.js +1 -1
  70. package/dist/esm/client/preview/render.js +106 -28
  71. package/dist/esm/client/preview/types-6-0.js +1 -0
  72. package/dist/esm/client/preview/types-6-3.js +3 -1
  73. package/dist/esm/client/preview/types-7-0.js +1 -0
  74. package/dist/esm/client/preview/types.js +1 -0
  75. package/dist/esm/client/testing/index.js +96 -0
  76. package/dist/esm/demo/Welcome.js +7 -4
  77. package/dist/{modern/server/framework-preset-react-docgen.js → esm/server/framework-preset-react-docs.js} +15 -11
  78. package/dist/esm/server/framework-preset-react-dom-hack.js +21 -0
  79. package/dist/esm/server/framework-preset-react.js +2 -2
  80. package/dist/esm/server/preset.js +2 -2
  81. package/dist/modern/client/docs/config.js +14 -0
  82. package/dist/modern/client/docs/extractArgTypes.js +38 -0
  83. package/dist/modern/client/docs/extractProps.js +42 -0
  84. package/dist/modern/client/docs/jsxDecorator.js +177 -0
  85. package/dist/modern/client/docs/lib/captions.js +6 -0
  86. package/dist/modern/client/docs/lib/componentTypes.js +2 -0
  87. package/dist/modern/client/docs/lib/defaultValues/createDefaultValue.js +72 -0
  88. package/dist/modern/client/docs/lib/defaultValues/createFromRawDefaultProp.js +181 -0
  89. package/dist/modern/client/docs/lib/defaultValues/generateArray.js +21 -0
  90. package/dist/modern/client/docs/lib/defaultValues/generateObject.js +21 -0
  91. package/dist/modern/client/docs/lib/defaultValues/index.js +2 -0
  92. package/dist/modern/client/docs/lib/defaultValues/prettyIdentifier.js +24 -0
  93. package/dist/modern/client/docs/lib/generateCode.js +59 -0
  94. package/dist/modern/client/docs/lib/index.js +4 -0
  95. package/dist/modern/client/docs/lib/inspection/acornParser.js +211 -0
  96. package/dist/modern/client/docs/lib/inspection/index.js +2 -0
  97. package/dist/modern/client/docs/lib/inspection/inspectValue.js +15 -0
  98. package/dist/modern/client/docs/lib/inspection/types.js +12 -0
  99. package/dist/modern/client/docs/lib/isHtmlTag.js +4 -0
  100. package/dist/modern/client/docs/propTypes/createType.js +446 -0
  101. package/dist/modern/client/docs/propTypes/generateFuncSignature.js +57 -0
  102. package/dist/modern/client/docs/propTypes/handleProp.js +39 -0
  103. package/dist/modern/client/docs/propTypes/rawDefaultPropResolvers.js +31 -0
  104. package/dist/modern/client/docs/propTypes/sortProps.js +14 -0
  105. package/dist/modern/client/docs/react-argtypes.stories.js +54 -0
  106. package/dist/modern/client/docs/typeScript/handleProp.js +28 -0
  107. package/dist/modern/client/index.js +1 -0
  108. package/dist/modern/client/preview/index.js +1 -1
  109. package/dist/modern/client/preview/render.js +51 -6
  110. package/dist/modern/client/preview/types-6-0.js +1 -0
  111. package/dist/modern/client/preview/types-6-3.js +3 -1
  112. package/dist/modern/client/preview/types-7-0.js +1 -0
  113. package/dist/modern/client/preview/types.js +1 -0
  114. package/dist/modern/client/testing/index.js +96 -0
  115. package/dist/modern/demo/Welcome.js +10 -6
  116. package/dist/{esm/server/framework-preset-react-docgen.js → modern/server/framework-preset-react-docs.js} +15 -11
  117. package/dist/modern/server/framework-preset-react-dom-hack.js +21 -0
  118. package/dist/modern/server/framework-preset-react.js +2 -2
  119. package/dist/modern/server/preset.js +2 -2
  120. package/dist/ts3.4/client/docs/config.d.ts +13 -0
  121. package/dist/ts3.4/client/docs/extractArgTypes.d.ts +2 -0
  122. package/dist/ts3.4/client/docs/extractProps.d.ts +5 -0
  123. package/dist/ts3.4/client/docs/jsxDecorator.d.ts +23 -0
  124. package/dist/ts3.4/client/docs/lib/captions.d.ts +6 -0
  125. package/dist/ts3.4/client/docs/lib/componentTypes.d.ts +2 -0
  126. package/dist/ts3.4/client/docs/lib/defaultValues/createDefaultValue.d.ts +2 -0
  127. package/dist/ts3.4/client/docs/lib/defaultValues/createFromRawDefaultProp.d.ts +11 -0
  128. package/dist/ts3.4/client/docs/lib/defaultValues/generateArray.d.ts +3 -0
  129. package/dist/ts3.4/client/docs/lib/defaultValues/generateObject.d.ts +3 -0
  130. package/dist/ts3.4/client/docs/lib/defaultValues/index.d.ts +2 -0
  131. package/dist/ts3.4/client/docs/lib/defaultValues/prettyIdentifier.d.ts +4 -0
  132. package/dist/ts3.4/client/docs/lib/generateCode.d.ts +3 -0
  133. package/dist/ts3.4/client/docs/lib/index.d.ts +4 -0
  134. package/dist/ts3.4/client/docs/lib/inspection/acornParser.d.ts +7 -0
  135. package/dist/ts3.4/client/docs/lib/inspection/index.d.ts +2 -0
  136. package/dist/ts3.4/client/docs/lib/inspection/inspectValue.d.ts +2 -0
  137. package/dist/ts3.4/client/docs/lib/inspection/types.d.ts +50 -0
  138. package/dist/ts3.4/client/docs/lib/isHtmlTag.d.ts +1 -0
  139. package/dist/ts3.4/client/docs/propTypes/createType.d.ts +2 -0
  140. package/dist/ts3.4/client/docs/propTypes/generateFuncSignature.d.ts +4 -0
  141. package/dist/ts3.4/client/docs/propTypes/handleProp.d.ts +5 -0
  142. package/dist/ts3.4/client/docs/propTypes/rawDefaultPropResolvers.d.ts +1 -0
  143. package/dist/ts3.4/client/docs/propTypes/sortProps.d.ts +4 -0
  144. package/dist/ts3.4/client/docs/react-argtypes.stories.d.ts +1 -0
  145. package/dist/ts3.4/client/docs/typeScript/handleProp.d.ts +3 -0
  146. package/dist/ts3.4/client/index.d.ts +1 -0
  147. package/dist/ts3.4/client/testing/index.d.ts +84 -0
  148. package/dist/ts3.4/server/framework-preset-react-docs.d.ts +6 -0
  149. package/dist/ts3.4/server/framework-preset-react-dom-hack.d.ts +32 -0
  150. package/dist/ts3.4/server/framework-preset-react.d.ts +1 -46
  151. package/dist/ts3.4/server/preset.d.ts +1 -1
  152. package/dist/ts3.9/client/docs/config.d.ts +13 -0
  153. package/dist/ts3.9/client/docs/extractArgTypes.d.ts +2 -0
  154. package/dist/ts3.9/client/docs/extractProps.d.ts +5 -0
  155. package/dist/ts3.9/client/docs/jsxDecorator.d.ts +23 -0
  156. package/dist/ts3.9/client/docs/lib/captions.d.ts +6 -0
  157. package/dist/ts3.9/client/docs/lib/componentTypes.d.ts +2 -0
  158. package/dist/ts3.9/client/docs/lib/defaultValues/createDefaultValue.d.ts +2 -0
  159. package/dist/ts3.9/client/docs/lib/defaultValues/createFromRawDefaultProp.d.ts +11 -0
  160. package/dist/ts3.9/client/docs/lib/defaultValues/generateArray.d.ts +3 -0
  161. package/dist/ts3.9/client/docs/lib/defaultValues/generateObject.d.ts +3 -0
  162. package/dist/ts3.9/client/docs/lib/defaultValues/index.d.ts +2 -0
  163. package/dist/ts3.9/client/docs/lib/defaultValues/prettyIdentifier.d.ts +4 -0
  164. package/dist/ts3.9/client/docs/lib/generateCode.d.ts +3 -0
  165. package/dist/ts3.9/client/docs/lib/index.d.ts +4 -0
  166. package/dist/ts3.9/client/docs/lib/inspection/acornParser.d.ts +7 -0
  167. package/dist/ts3.9/client/docs/lib/inspection/index.d.ts +2 -0
  168. package/dist/ts3.9/client/docs/lib/inspection/inspectValue.d.ts +2 -0
  169. package/dist/ts3.9/client/docs/lib/inspection/types.d.ts +50 -0
  170. package/dist/ts3.9/client/docs/lib/isHtmlTag.d.ts +1 -0
  171. package/dist/ts3.9/client/docs/propTypes/createType.d.ts +2 -0
  172. package/dist/ts3.9/client/docs/propTypes/generateFuncSignature.d.ts +4 -0
  173. package/dist/ts3.9/client/docs/propTypes/handleProp.d.ts +5 -0
  174. package/dist/ts3.9/client/docs/propTypes/rawDefaultPropResolvers.d.ts +1 -0
  175. package/dist/ts3.9/client/docs/propTypes/sortProps.d.ts +4 -0
  176. package/dist/ts3.9/client/docs/react-argtypes.stories.d.ts +1 -0
  177. package/dist/ts3.9/client/docs/typeScript/handleProp.d.ts +3 -0
  178. package/dist/ts3.9/client/index.d.ts +1 -0
  179. package/dist/ts3.9/client/preview/render.d.ts +1 -1
  180. package/dist/ts3.9/client/preview/types-6-0.d.ts +3 -3
  181. package/dist/ts3.9/client/preview/types-7-0.d.ts +2 -2
  182. package/dist/ts3.9/client/testing/index.d.ts +84 -0
  183. package/dist/ts3.9/server/framework-preset-cra.d.ts +1 -1
  184. package/dist/ts3.9/server/framework-preset-react-docs.d.ts +6 -0
  185. package/dist/ts3.9/server/framework-preset-react-dom-hack.d.ts +32 -0
  186. package/dist/ts3.9/server/framework-preset-react.d.ts +1 -46
  187. package/dist/ts3.9/server/options.d.ts +1 -1
  188. package/dist/ts3.9/server/preset.d.ts +2 -2
  189. package/package.json +38 -14
  190. package/types/index.ts +9 -1
  191. package/dist/cjs/typings.d.js +0 -1
  192. package/dist/esm/typings.d.js +0 -0
  193. package/dist/modern/typings.d.js +0 -0
  194. package/dist/ts3.4/server/framework-preset-react-docgen.d.ts +0 -5
  195. package/dist/ts3.9/server/framework-preset-react-docgen.d.ts +0 -5
@@ -0,0 +1,57 @@
1
+ export function generateFuncSignature(params, returns) {
2
+ const hasParams = params != null;
3
+ const hasReturns = returns != null;
4
+
5
+ if (!hasParams && !hasReturns) {
6
+ return '';
7
+ }
8
+
9
+ const funcParts = [];
10
+
11
+ if (hasParams) {
12
+ const funcParams = params.map(x => {
13
+ const prettyName = x.getPrettyName();
14
+ const typeName = x.getTypeName();
15
+
16
+ if (typeName != null) {
17
+ return `${prettyName}: ${typeName}`;
18
+ }
19
+
20
+ return prettyName;
21
+ });
22
+ funcParts.push(`(${funcParams.join(', ')})`);
23
+ } else {
24
+ funcParts.push('()');
25
+ }
26
+
27
+ if (hasReturns) {
28
+ funcParts.push(`=> ${returns.getTypeName()}`);
29
+ }
30
+
31
+ return funcParts.join(' ');
32
+ }
33
+ export function generateShortFuncSignature(params, returns) {
34
+ const hasParams = params != null;
35
+ const hasReturns = returns != null;
36
+
37
+ if (!hasParams && !hasReturns) {
38
+ return '';
39
+ }
40
+
41
+ const funcParts = [];
42
+
43
+ if (hasParams) {
44
+ funcParts.push('( ... )');
45
+ } else {
46
+ funcParts.push('()');
47
+ }
48
+
49
+ if (hasReturns) {
50
+ funcParts.push(`=> ${returns.getTypeName()}`);
51
+ }
52
+
53
+ return funcParts.join(' ');
54
+ }
55
+ export function toMultilineSignature(signature) {
56
+ return signature.replace(/,/g, ',\r\n');
57
+ }
@@ -0,0 +1,39 @@
1
+ import { createType } from './createType';
2
+ import { createDefaultValue, createDefaultValueFromRawDefaultProp } from '../lib/defaultValues';
3
+ import { keepOriginalDefinitionOrder } from './sortProps';
4
+ import { rawDefaultPropTypeResolvers } from './rawDefaultPropResolvers';
5
+ export function enhancePropTypesProp(extractedProp, rawDefaultProp) {
6
+ const {
7
+ propDef
8
+ } = extractedProp;
9
+ const newtype = createType(extractedProp);
10
+
11
+ if (newtype != null) {
12
+ propDef.type = newtype;
13
+ }
14
+
15
+ const {
16
+ defaultValue
17
+ } = extractedProp.docgenInfo;
18
+
19
+ if (defaultValue != null && defaultValue.value != null) {
20
+ const newDefaultValue = createDefaultValue(defaultValue.value);
21
+
22
+ if (newDefaultValue != null) {
23
+ propDef.defaultValue = newDefaultValue;
24
+ }
25
+ } else if (rawDefaultProp != null) {
26
+ const newDefaultValue = createDefaultValueFromRawDefaultProp(rawDefaultProp, propDef, rawDefaultPropTypeResolvers);
27
+
28
+ if (newDefaultValue != null) {
29
+ propDef.defaultValue = newDefaultValue;
30
+ }
31
+ }
32
+
33
+ return propDef;
34
+ }
35
+ export function enhancePropTypesProps(extractedProps, component) {
36
+ const rawDefaultProps = component.defaultProps != null ? component.defaultProps : {};
37
+ const enhancedProps = extractedProps.map(x => enhancePropTypesProp(x, rawDefaultProps[x.propDef.name]));
38
+ return keepOriginalDefinitionOrder(enhancedProps, component);
39
+ }
@@ -0,0 +1,31 @@
1
+ import { createSummaryValue } from '@storybook/docs-tools';
2
+ import { extractFunctionName, createTypeResolvers } from '../lib/defaultValues';
3
+ import { FUNCTION_CAPTION, ELEMENT_CAPTION } from '../lib';
4
+ import { getPrettyElementIdentifier, getPrettyFuncIdentifier } from '../lib/defaultValues/prettyIdentifier';
5
+ import { inspectValue } from '../lib/inspection';
6
+
7
+ const funcResolver = (rawDefaultProp, {
8
+ name,
9
+ type
10
+ }) => {
11
+ const isElement = type.summary === 'element' || type.summary === 'elementType';
12
+ const funcName = extractFunctionName(rawDefaultProp, name);
13
+
14
+ if (funcName != null) {
15
+ // Try to display the name of the component. The body of the component is omitted since the code has been transpiled.
16
+ if (isElement) {
17
+ return createSummaryValue(getPrettyElementIdentifier(funcName));
18
+ }
19
+
20
+ const {
21
+ hasParams
22
+ } = inspectValue(rawDefaultProp.toString()).inferredType;
23
+ return createSummaryValue(getPrettyFuncIdentifier(funcName, hasParams));
24
+ }
25
+
26
+ return createSummaryValue(isElement ? ELEMENT_CAPTION : FUNCTION_CAPTION);
27
+ };
28
+
29
+ export const rawDefaultPropTypeResolvers = createTypeResolvers({
30
+ function: funcResolver
31
+ });
@@ -0,0 +1,14 @@
1
+ // react-docgen doesn't returned the props in the order they were defined in the "propTypes" object of the component.
2
+ // This function re-order them by their original definition order.
3
+ export function keepOriginalDefinitionOrder(extractedProps, component) {
4
+ // eslint-disable-next-line react/forbid-foreign-prop-types
5
+ const {
6
+ propTypes
7
+ } = component;
8
+
9
+ if (propTypes != null) {
10
+ return Object.keys(propTypes).map(x => extractedProps.find(y => y.name === x)).filter(x => x);
11
+ }
12
+
13
+ return extractedProps;
14
+ }
@@ -0,0 +1,54 @@
1
+ import React, { useState } from 'react';
2
+ import mapValues from 'lodash/mapValues';
3
+ import { ArgsTable } from '@storybook/components';
4
+ import { inferControls } from '@storybook/store';
5
+ import { storiesOf } from '..';
6
+ import { extractArgTypes } from './extractArgTypes'; // FIXME
7
+
8
+ const argsTableProps = component => {
9
+ const argTypes = extractArgTypes(component);
10
+ const parameters = {
11
+ __isArgsStory: true
12
+ };
13
+ const rows = inferControls({
14
+ argTypes,
15
+ parameters
16
+ });
17
+ return {
18
+ rows
19
+ };
20
+ };
21
+
22
+ const ArgsStory = ({
23
+ component
24
+ }) => {
25
+ const {
26
+ rows
27
+ } = argsTableProps(component);
28
+ const initialArgs = mapValues(rows, argType => argType.defaultValue);
29
+ const [args, setArgs] = useState(initialArgs);
30
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement("b", null, "NOTE:"), " these stories are to help visualise the snapshot tests in", ' ', /*#__PURE__*/React.createElement("code", null, "./react-properties.test.js"), "."), /*#__PURE__*/React.createElement(ArgsTable, {
31
+ rows: rows,
32
+ args: args,
33
+ updateArgs: val => setArgs(Object.assign({}, args, val))
34
+ }), /*#__PURE__*/React.createElement("table", null, /*#__PURE__*/React.createElement("thead", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("th", null, "arg name"), /*#__PURE__*/React.createElement("th", null, "argType"))), /*#__PURE__*/React.createElement("tbody", null, Object.entries(args).map(([key, val]) => /*#__PURE__*/React.createElement("tr", {
35
+ key: key
36
+ }, /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("code", null, key)), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("pre", null, JSON.stringify(rows[key]))))))));
37
+ };
38
+
39
+ const issuesFixtures = ['js-class-component', 'js-function-component', 'js-function-component-inline-defaults', 'js-function-component-inline-defaults-no-propTypes', 'ts-function-component', 'ts-function-component-inline-defaults', '9399-js-proptypes-shape', '8663-js-styled-components', '9626-js-default-values', '9668-js-proptypes-no-jsdoc', '8143-ts-react-fc-generics', '8143-ts-imported-types', '8279-js-styled-docgen', '8140-js-prop-types-oneof', '9023-js-hoc', '8740-ts-multi-props', '9556-ts-react-default-exports', '9592-ts-styled-props', '9591-ts-import-types', '9721-ts-deprecated-jsdoc', '9827-ts-default-values', '9586-js-react-memo', '9575-ts-camel-case', '9493-ts-display-name', '8894-9511-ts-forward-ref', '9465-ts-type-props', '8428-js-static-prop-types', '9764-ts-extend-props', '9922-ts-component-props'];
40
+ const issuesStories = storiesOf('ArgTypes/Issues', module);
41
+ issuesFixtures.forEach(fixture => {
42
+ // eslint-disable-next-line import/no-dynamic-require, global-require
43
+ const {
44
+ component
45
+ } = require(`./__testfixtures__/${fixture}/input`);
46
+
47
+ issuesStories.add(fixture, () => /*#__PURE__*/React.createElement(ArgsStory, {
48
+ component: component
49
+ }), {
50
+ chromatic: {
51
+ disable: true
52
+ }
53
+ });
54
+ });
@@ -0,0 +1,28 @@
1
+ import { createDefaultValue, createDefaultValueFromRawDefaultProp } from '../lib/defaultValues';
2
+ export function enhanceTypeScriptProp(extractedProp, rawDefaultProp) {
3
+ const {
4
+ propDef
5
+ } = extractedProp;
6
+ const {
7
+ defaultValue
8
+ } = extractedProp.docgenInfo;
9
+
10
+ if (defaultValue != null && defaultValue.value != null) {
11
+ const newDefaultValue = createDefaultValue(defaultValue.value);
12
+
13
+ if (newDefaultValue != null) {
14
+ propDef.defaultValue = newDefaultValue;
15
+ }
16
+ } else if (rawDefaultProp != null) {
17
+ const newDefaultValue = createDefaultValueFromRawDefaultProp(rawDefaultProp, propDef);
18
+
19
+ if (newDefaultValue != null) {
20
+ propDef.defaultValue = newDefaultValue;
21
+ }
22
+ }
23
+
24
+ return propDef;
25
+ }
26
+ export function enhanceTypeScriptProps(extractedProps) {
27
+ return extractedProps.map(prop => enhanceTypeScriptProp(prop));
28
+ }
@@ -1,4 +1,5 @@
1
1
  export { storiesOf, setAddon, addDecorator, addParameters, configure, getStorybook, raw, forceReRender } from './preview';
2
+ export * from './testing';
2
3
  export * from './preview/types-6-3';
3
4
 
4
5
  if (module && module.hot && module.hot.decline) {
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable prefer-destructuring */
2
- import { start } from '@storybook/core/client';
2
+ import { start } from '@storybook/core';
3
3
  import './globals';
4
4
  import { renderToDOM, render } from './render';
5
5
  const framework = 'react';
@@ -1,9 +1,11 @@
1
1
  import global from 'global';
2
2
  import React, { Component as ReactComponent, StrictMode, Fragment } from 'react';
3
- import ReactDOM from 'react-dom';
3
+ import ReactDOM, { version as reactDomVersion } from 'react-dom';
4
4
  const {
5
5
  FRAMEWORK_OPTIONS
6
- } = global;
6
+ } = global; // A map of all rendered React 18 nodes
7
+
8
+ const nodes = new Map();
7
9
  export const render = (args, context) => {
8
10
  const {
9
11
  id,
@@ -17,9 +19,52 @@ export const render = (args, context) => {
17
19
  return /*#__PURE__*/React.createElement(Component, args);
18
20
  };
19
21
 
20
- const renderElement = async (node, el) => new Promise(resolve => {
21
- ReactDOM.render(node, el, () => resolve(null));
22
- });
22
+ const renderElement = async (node, el) => {
23
+ // Create Root Element conditionally for new React 18 Root Api
24
+ const root = await getReactRoot(el);
25
+ return new Promise(resolve => {
26
+ if (root) {
27
+ root.render(node);
28
+ setTimeout(() => {
29
+ resolve(null);
30
+ }, 0);
31
+ } else {
32
+ ReactDOM.render(node, el, () => resolve(null));
33
+ }
34
+ });
35
+ };
36
+
37
+ const canUseNewReactRootApi = reactDomVersion && (reactDomVersion.startsWith('18') || reactDomVersion.startsWith('0.0.0'));
38
+ const shouldUseNewRootApi = (FRAMEWORK_OPTIONS === null || FRAMEWORK_OPTIONS === void 0 ? void 0 : FRAMEWORK_OPTIONS.legacyRootApi) !== true;
39
+ const isUsingNewReactRootApi = shouldUseNewRootApi && canUseNewReactRootApi;
40
+
41
+ const unmountElement = el => {
42
+ const root = nodes.get(el);
43
+
44
+ if (root && isUsingNewReactRootApi) {
45
+ root.unmount();
46
+ nodes.delete(el);
47
+ } else {
48
+ ReactDOM.unmountComponentAtNode(el);
49
+ }
50
+ };
51
+
52
+ const getReactRoot = async el => {
53
+ if (!isUsingNewReactRootApi) {
54
+ return null;
55
+ }
56
+
57
+ let root = nodes.get(el);
58
+
59
+ if (!root) {
60
+ // eslint-disable-next-line import/no-unresolved
61
+ const reactDomClient = (await import('react-dom/client')).default;
62
+ root = reactDomClient.createRoot(el);
63
+ nodes.set(el, root);
64
+ }
65
+
66
+ return root;
67
+ };
23
68
 
24
69
  class ErrorBoundary extends ReactComponent {
25
70
  constructor(...args) {
@@ -89,7 +134,7 @@ export async function renderToDOM({
89
134
  // (This is not the case when we change args or globals to the story however)
90
135
 
91
136
  if (forceRemount) {
92
- ReactDOM.unmountComponentAtNode(domElement);
137
+ unmountElement(domElement);
93
138
  }
94
139
 
95
140
  await renderElement(element, domElement);
@@ -0,0 +1 @@
1
+ export {};
@@ -5,4 +5,6 @@ export * from './types-6-0';
5
5
  * ```tsx
6
6
  * export default { ... } as ComponentMeta<typeof Button>;
7
7
  * ```
8
- */
8
+ */
9
+
10
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,96 @@
1
+ import { composeStory as originalComposeStory, composeStories as originalComposeStories, setProjectAnnotations as originalSetProjectAnnotations } from '@storybook/store';
2
+ import { once } from '@storybook/client-logger';
3
+ import { render } from '../preview/render';
4
+
5
+ /** Function that sets the globalConfig of your storybook. The global config is the preview module of your .storybook folder.
6
+ *
7
+ * It should be run a single time, so that your global config (e.g. decorators) is applied to your stories when using `composeStories` or `composeStory`.
8
+ *
9
+ * Example:
10
+ *```jsx
11
+ * // setup.js (for jest)
12
+ * import { setProjectAnnotations } from '@storybook/react';
13
+ * import * as projectAnnotations from './.storybook/preview';
14
+ *
15
+ * setProjectAnnotations(projectAnnotations);
16
+ *```
17
+ *
18
+ * @param projectAnnotations - e.g. (import * as projectAnnotations from '../.storybook/preview')
19
+ */
20
+ export function setProjectAnnotations(projectAnnotations) {
21
+ originalSetProjectAnnotations(projectAnnotations);
22
+ }
23
+ /** Preserved for users migrating from `@storybook/testing-react`.
24
+ *
25
+ * @deprecated Use setProjectAnnotations instead
26
+ */
27
+
28
+ export function setGlobalConfig(projectAnnotations) {
29
+ once.warn(`setGlobalConfig is deprecated. Use setProjectAnnotations instead.`);
30
+ setProjectAnnotations(projectAnnotations);
31
+ } // This will not be necessary once we have auto preset loading
32
+
33
+ const defaultProjectAnnotations = {
34
+ render
35
+ };
36
+ /**
37
+ * Function that will receive a story along with meta (e.g. a default export from a .stories file)
38
+ * and optionally projectAnnotations e.g. (import * from '../.storybook/preview)
39
+ * and will return a composed component that has all args/parameters/decorators/etc combined and applied to it.
40
+ *
41
+ *
42
+ * It's very useful for reusing a story in scenarios outside of Storybook like unit testing.
43
+ *
44
+ * Example:
45
+ *```jsx
46
+ * import { render } from '@testing-library/react';
47
+ * import { composeStory } from '@storybook/react';
48
+ * import Meta, { Primary as PrimaryStory } from './Button.stories';
49
+ *
50
+ * const Primary = composeStory(PrimaryStory, Meta);
51
+ *
52
+ * test('renders primary button with Hello World', () => {
53
+ * const { getByText } = render(<Primary>Hello world</Primary>);
54
+ * expect(getByText(/Hello world/i)).not.toBeNull();
55
+ * });
56
+ *```
57
+ *
58
+ * @param story
59
+ * @param componentAnnotations - e.g. (import Meta from './Button.stories')
60
+ * @param [projectAnnotations] - e.g. (import * as projectAnnotations from '../.storybook/preview') this can be applied automatically if you use `setProjectAnnotations` in your setup files.
61
+ * @param [exportsName] - in case your story does not contain a name and you want it to have a name.
62
+ */
63
+
64
+ export function composeStory(story, componentAnnotations, projectAnnotations, exportsName) {
65
+ return originalComposeStory(story, componentAnnotations, projectAnnotations, defaultProjectAnnotations, exportsName);
66
+ }
67
+ /**
68
+ * Function that will receive a stories import (e.g. `import * as stories from './Button.stories'`)
69
+ * and optionally projectAnnotations (e.g. `import * from '../.storybook/preview`)
70
+ * and will return an object containing all the stories passed, but now as a composed component that has all args/parameters/decorators/etc combined and applied to it.
71
+ *
72
+ *
73
+ * It's very useful for reusing stories in scenarios outside of Storybook like unit testing.
74
+ *
75
+ * Example:
76
+ *```jsx
77
+ * import { render } from '@testing-library/react';
78
+ * import { composeStories } from '@storybook/react';
79
+ * import * as stories from './Button.stories';
80
+ *
81
+ * const { Primary, Secondary } = composeStories(stories);
82
+ *
83
+ * test('renders primary button with Hello World', () => {
84
+ * const { getByText } = render(<Primary>Hello world</Primary>);
85
+ * expect(getByText(/Hello world/i)).not.toBeNull();
86
+ * });
87
+ *```
88
+ *
89
+ * @param csfExports - e.g. (import * as stories from './Button.stories')
90
+ * @param [projectAnnotations] - e.g. (import * as projectAnnotations from '../.storybook/preview') this can be applied automatically if you use `setProjectAnnotations` in your setup files.
91
+ */
92
+
93
+ export function composeStories(csfExports, projectAnnotations) {
94
+ const composedStories = originalComposeStories(csfExports, projectAnnotations, composeStory);
95
+ return composedStories;
96
+ }
@@ -1,3 +1,7 @@
1
+ const _excluded = ["children"],
2
+ _excluded2 = ["children", "href", "target", "rel"],
3
+ _excluded3 = ["children", "onClick"];
4
+
1
5
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
2
6
 
3
7
  function _extends() { _extends = Object.assign || 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); }
@@ -14,11 +18,11 @@ const Main = props => /*#__PURE__*/React.createElement("article", _extends({}, p
14
18
  }
15
19
  }));
16
20
 
17
- const Title = (_ref) => {
21
+ const Title = _ref => {
18
22
  let {
19
23
  children
20
24
  } = _ref,
21
- props = _objectWithoutPropertiesLoose(_ref, ["children"]);
25
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
22
26
 
23
27
  return /*#__PURE__*/React.createElement("h1", props, children);
24
28
  };
@@ -41,14 +45,14 @@ const InlineCode = props => /*#__PURE__*/React.createElement("code", _extends({}
41
45
  }
42
46
  }));
43
47
 
44
- const Link = (_ref2) => {
48
+ const Link = _ref2 => {
45
49
  let {
46
50
  children,
47
51
  href,
48
52
  target,
49
53
  rel
50
54
  } = _ref2,
51
- props = _objectWithoutPropertiesLoose(_ref2, ["children", "href", "target", "rel"]);
55
+ props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
52
56
 
53
57
  return /*#__PURE__*/React.createElement("a", _extends({
54
58
  href: href
@@ -64,12 +68,12 @@ const Link = (_ref2) => {
64
68
  }), children);
65
69
  };
66
70
 
67
- const NavButton = (_ref3) => {
71
+ const NavButton = _ref3 => {
68
72
  let {
69
73
  children,
70
74
  onClick
71
75
  } = _ref3,
72
- props = _objectWithoutPropertiesLoose(_ref3, ["children", "onClick"]);
76
+ props = _objectWithoutPropertiesLoose(_ref3, _excluded3);
73
77
 
74
78
  return /*#__PURE__*/React.createElement("button", _extends({}, props, {
75
79
  type: "button",
@@ -1,15 +1,16 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
7
7
  import "core-js/modules/es.promise.js";
8
+ import { findDistEsm } from '@storybook/core-common';
8
9
  import ReactDocgenTypescriptPlugin from '@storybook/react-docgen-typescript-plugin';
9
- export async function babel(config, {
10
- presets: presets
11
- }) {
12
- var typescriptOptions = await presets.apply('typescript', {});
10
+ import { hasDocsOrControls } from '@storybook/docs-tools';
11
+ export async function babel(config, options) {
12
+ if (!hasDocsOrControls(options)) return config;
13
+ var typescriptOptions = await options.presets.apply('typescript', {});
13
14
  var reactDocgen = typescriptOptions.reactDocgen;
14
15
 
15
16
  if (typeof reactDocgen !== 'string') {
@@ -25,10 +26,9 @@ export async function babel(config, {
25
26
  }]
26
27
  });
27
28
  }
28
- export async function webpackFinal(config, {
29
- presets: presets
30
- }) {
31
- var typescriptOptions = await presets.apply('typescript', {});
29
+ export async function webpackFinal(config, options) {
30
+ if (!hasDocsOrControls(options)) return config;
31
+ var typescriptOptions = await options.presets.apply('typescript', {});
32
32
  var reactDocgen = typescriptOptions.reactDocgen,
33
33
  reactDocgenTypescriptOptions = typescriptOptions.reactDocgenTypescriptOptions;
34
34
 
@@ -42,4 +42,8 @@ export async function webpackFinal(config, {
42
42
  savePropValueAsString: true
43
43
  }))]
44
44
  });
45
- }
45
+ }
46
+ export var previewAnnotations = function (entry = [], options) {
47
+ if (!hasDocsOrControls(options)) return entry;
48
+ return [...entry, findDistEsm(__dirname, 'client/docs/config')];
49
+ };
@@ -0,0 +1,21 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
7
+ import "core-js/modules/es.promise.js";
8
+ import { readJSON } from 'fs-extra';
9
+ import { IgnorePlugin } from 'webpack'; // this is a hack to allow importing react-dom/client even when it's not available
10
+ // this should be removed once we drop support for react-dom < 18
11
+
12
+ export async function webpackFinal(config) {
13
+ var reactDomPkg = await readJSON(require.resolve('react-dom/package.json'));
14
+ return _objectSpread(_objectSpread({}, config), {}, {
15
+ plugins: [...config.plugins, reactDomPkg.version.startsWith('18') || reactDomPkg.version.startsWith('0.0.0') ? null : new IgnorePlugin({
16
+ resourceRegExp: /react-dom\/client$/,
17
+ contextRegExp: /(app\/react|app\\react|@storybook\/react|@storybook\\react)/ // TODO this needs to work for both in our MONOREPO and in the user's NODE_MODULES
18
+
19
+ })].filter(Boolean)
20
+ });
21
+ }
@@ -1,6 +1,6 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
2
 
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
4
 
5
5
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { findDistEsm } from '@storybook/core-common';
2
- export var config = function (entries = []) {
2
+ export var previewAnnotations = function (entries = []) {
3
3
  return [...entries, findDistEsm(__dirname, 'client/preview/config')];
4
4
  };
5
- export var addons = [require.resolve('./framework-preset-react'), require.resolve('./framework-preset-cra'), require.resolve('./framework-preset-react-docgen')];
5
+ export var addons = [require.resolve('./framework-preset-react'), require.resolve('./framework-preset-react-dom-hack'), require.resolve('./framework-preset-cra'), require.resolve('./framework-preset-react-docs')];
@@ -0,0 +1,13 @@
1
+ import { PartialStoryFn } from '@storybook/csf';
2
+ import { extractComponentDescription } from '@storybook/docs-tools';
3
+ import { ReactFramework } from '..';
4
+ export declare const parameters: {
5
+ docs: {
6
+ inlineStories: boolean;
7
+ prepareForInline: (storyFn: PartialStoryFn<ReactFramework>) => import("../preview/types").StoryFnReactReturnType;
8
+ extractArgTypes: import("@storybook/docs-tools").ArgTypesExtractor;
9
+ extractComponentDescription: typeof extractComponentDescription;
10
+ };
11
+ };
12
+ export declare const decorators: ((storyFn: PartialStoryFn<ReactFramework, import("@storybook/csf").Args>, context: import("@storybook/csf").StoryContext<ReactFramework, import("@storybook/csf").Args>) => import("../preview/types").StoryFnReactReturnType)[];
13
+ export declare const argTypesEnhancers: (<TFramework extends import("@storybook/csf").AnyFramework>(context: import("@storybook/csf").StoryContextForEnhancers<TFramework, import("@storybook/csf").Args>) => import("@storybook/addons").Parameters | import("@storybook/csf").StrictArgTypes<import("@storybook/csf").Args>)[];
@@ -0,0 +1,2 @@
1
+ import { ArgTypesExtractor } from '@storybook/docs-tools';
2
+ export declare const extractArgTypes: ArgTypesExtractor;
@@ -0,0 +1,5 @@
1
+ import { PropDef, PropsExtractor } from '@storybook/docs-tools';
2
+ export interface PropDefMap {
3
+ [p: string]: PropDef;
4
+ }
5
+ export declare const extractProps: PropsExtractor;
@@ -0,0 +1,23 @@
1
+ import React, { ReactElement } from 'react';
2
+ import { Options } from 'react-element-to-jsx-string';
3
+ import { StoryContext, PartialStoryFn } from '@storybook/csf';
4
+ import { ReactFramework } from '..';
5
+ declare type JSXOptions = Options & {
6
+ /** How many wrappers to skip when rendering the jsx */
7
+ skip?: number;
8
+ /** Whether to show the function in the jsx tab */
9
+ showFunctions?: boolean;
10
+ /** Whether to format HTML or Vue markup */
11
+ enableBeautify?: boolean;
12
+ /** Override the display name used for a component */
13
+ displayName?: string | Options['displayName'];
14
+ /** Deprecated: A function ran after the story is rendered */
15
+ onBeforeRender?(dom: string): string;
16
+ /** A function ran after a story is rendered (prefer this over `onBeforeRender`) */
17
+ transformSource?(dom: string, context?: StoryContext<ReactFramework>): string;
18
+ };
19
+ /** Apply the users parameters and render the jsx for a story */
20
+ export declare const renderJsx: (code: React.ReactElement, options: JSXOptions) => string;
21
+ export declare const skipJsxRender: (context: StoryContext<ReactFramework>) => any;
22
+ export declare const jsxDecorator: (storyFn: PartialStoryFn<ReactFramework>, context: StoryContext<ReactFramework>) => import("../preview/types").StoryFnReactReturnType;
23
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare const CUSTOM_CAPTION = "custom";
2
+ export declare const OBJECT_CAPTION = "object";
3
+ export declare const ARRAY_CAPTION = "array";
4
+ export declare const CLASS_CAPTION = "class";
5
+ export declare const FUNCTION_CAPTION = "func";
6
+ export declare const ELEMENT_CAPTION = "element";
@@ -0,0 +1,2 @@
1
+ export declare const isMemo: (component: any) => boolean;
2
+ export declare const isForwardRef: (component: any) => boolean;
@@ -0,0 +1,2 @@
1
+ import { PropDefaultValue } from '@storybook/docs-tools';
2
+ export declare function createDefaultValue(defaultValue: string): PropDefaultValue;