1 | "use strict";
|
2 |
|
3 | require("core-js/modules/es.symbol.js");
|
4 |
|
5 | require("core-js/modules/es.symbol.description.js");
|
6 |
|
7 | require("core-js/modules/es.symbol.iterator.js");
|
8 |
|
9 | require("core-js/modules/es.array.concat.js");
|
10 |
|
11 | require("core-js/modules/es.array.iterator.js");
|
12 |
|
13 | require("core-js/modules/es.object.to-string.js");
|
14 |
|
15 | require("core-js/modules/es.set.js");
|
16 |
|
17 | require("core-js/modules/es.string.iterator.js");
|
18 |
|
19 | require("core-js/modules/web.dom-collections.iterator.js");
|
20 |
|
21 | Object.defineProperty(exports, "__esModule", {
|
22 | value: true
|
23 | });
|
24 | exports.inferArgTypes = void 0;
|
25 |
|
26 | var _mapValues = _interopRequireDefault(require("lodash/mapValues"));
|
27 |
|
28 | var _tsDedent = _interopRequireDefault(require("ts-dedent"));
|
29 |
|
30 | var _clientLogger = require("@storybook/client-logger");
|
31 |
|
32 | var _parameters = require("./parameters");
|
33 |
|
34 | var _templateObject;
|
35 |
|
36 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
37 |
|
38 | function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
39 |
|
40 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
41 |
|
42 | var inferType = function inferType(value, name, visited) {
|
43 | var type = _typeof(value);
|
44 |
|
45 | switch (type) {
|
46 | case 'boolean':
|
47 | case 'string':
|
48 | case 'number':
|
49 | case 'function':
|
50 | return {
|
51 | name: type
|
52 | };
|
53 |
|
54 | case 'symbol':
|
55 | return {
|
56 | name: 'other',
|
57 | value: 'symbol'
|
58 | };
|
59 |
|
60 | default:
|
61 | break;
|
62 | }
|
63 |
|
64 | if (value) {
|
65 | if (visited.has(value)) {
|
66 | _clientLogger.logger.warn((0, _tsDedent.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n We've detected a cycle in arg '", "'. Args should be JSON-serializable.\n\n More info: https://storybook.js.org/docs/react/essentials/controls#fully-custom-args\n "])), name));
|
67 |
|
68 | return {
|
69 | name: 'other',
|
70 | value: 'cyclic object'
|
71 | };
|
72 | }
|
73 |
|
74 | visited.add(value);
|
75 |
|
76 | if (Array.isArray(value)) {
|
77 | var childType = value.length > 0 ? inferType(value[0], name, new Set(visited)) : {
|
78 | name: 'other',
|
79 | value: 'unknown'
|
80 | };
|
81 | return {
|
82 | name: 'array',
|
83 | value: childType
|
84 | };
|
85 | }
|
86 |
|
87 | var fieldTypes = (0, _mapValues.default)(value, function (field) {
|
88 | return inferType(field, name, new Set(visited));
|
89 | });
|
90 | return {
|
91 | name: 'object',
|
92 | value: fieldTypes
|
93 | };
|
94 | }
|
95 |
|
96 | return {
|
97 | name: 'object',
|
98 | value: {}
|
99 | };
|
100 | };
|
101 |
|
102 | var inferArgTypes = function inferArgTypes(context) {
|
103 | var id = context.id,
|
104 | parameters = context.parameters;
|
105 | var _parameters$argTypes = parameters.argTypes,
|
106 | userArgTypes = _parameters$argTypes === void 0 ? {} : _parameters$argTypes,
|
107 | _parameters$args = parameters.args,
|
108 | args = _parameters$args === void 0 ? {} : _parameters$args;
|
109 | if (!args) return userArgTypes;
|
110 | var argTypes = (0, _mapValues.default)(args, function (arg, key) {
|
111 | return {
|
112 | type: inferType(arg, "".concat(id, ".").concat(key), new Set())
|
113 | };
|
114 | });
|
115 | return (0, _parameters.combineParameters)(argTypes, userArgTypes);
|
116 | };
|
117 |
|
118 | exports.inferArgTypes = inferArgTypes; |
\ | No newline at end of file |