1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.createArgTypes = exports.extractArgTypes = void 0;
|
7 |
|
8 | require("core-js/modules/es.array.find.js");
|
9 |
|
10 | require("core-js/modules/es.function.name.js");
|
11 |
|
12 | require("core-js/modules/web.dom-collections.for-each.js");
|
13 |
|
14 | require("core-js/modules/es.symbol.js");
|
15 |
|
16 | require("core-js/modules/es.symbol.description.js");
|
17 |
|
18 | require("core-js/modules/es.array.join.js");
|
19 |
|
20 | require("core-js/modules/es.array.filter.js");
|
21 |
|
22 | require("core-js/modules/es.array.map.js");
|
23 |
|
24 | var _clientLogger = require("@storybook/client-logger");
|
25 |
|
26 | function hasKeyword(keyword, keywords) {
|
27 | return keywords ? keywords.find(function (k) {
|
28 | return k.name === keyword;
|
29 | }) != null : false;
|
30 | }
|
31 |
|
32 | var extractArgTypes = function extractArgTypes(component) {
|
33 | try {
|
34 |
|
35 | var docgen = component.__docgen;
|
36 |
|
37 | if (docgen) {
|
38 | return createArgTypes(docgen);
|
39 | }
|
40 | } catch (err) {
|
41 | _clientLogger.logger.log("Error extracting argTypes: ".concat(err));
|
42 | }
|
43 |
|
44 | return {};
|
45 | };
|
46 |
|
47 | exports.extractArgTypes = extractArgTypes;
|
48 |
|
49 | var createArgTypes = function createArgTypes(docgen) {
|
50 | var results = {};
|
51 | docgen.data.forEach(function (item) {
|
52 | var _item$type, _item$type2;
|
53 |
|
54 | results[item.name] = {
|
55 | control: parseTypeToControl(item.type),
|
56 | name: item.name,
|
57 | description: item.description,
|
58 | type: {
|
59 | required: hasKeyword('required', item.keywords),
|
60 | name: (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.text
|
61 | },
|
62 | table: {
|
63 | type: {
|
64 | summary: (_item$type2 = item.type) === null || _item$type2 === void 0 ? void 0 : _item$type2.text
|
65 | },
|
66 | defaultValue: {
|
67 | summary: item.defaultValue
|
68 | },
|
69 | category: 'properties'
|
70 | }
|
71 | };
|
72 | });
|
73 | docgen.events.forEach(function (item) {
|
74 | results["event_".concat(item.name)] = {
|
75 | name: item.name,
|
76 | description: item.description,
|
77 | type: {
|
78 | name: 'other',
|
79 | value: 'void'
|
80 | },
|
81 | table: {
|
82 | category: 'events'
|
83 | }
|
84 | };
|
85 | });
|
86 | docgen.slots.forEach(function (item) {
|
87 | var _item$params;
|
88 |
|
89 | results["slot_".concat(item.name)] = {
|
90 | name: item.name,
|
91 | description: [item.description, (_item$params = item.params) === null || _item$params === void 0 ? void 0 : _item$params.map(function (p) {
|
92 | return "`".concat(p.name, "`");
|
93 | }).join(' ')].filter(function (p) {
|
94 | return p;
|
95 | }).join('\n\n'),
|
96 | type: {
|
97 | name: 'other',
|
98 | value: 'void'
|
99 | },
|
100 | table: {
|
101 | category: 'slots'
|
102 | }
|
103 | };
|
104 | });
|
105 | return results;
|
106 | };
|
107 |
|
108 |
|
109 |
|
110 |
|
111 |
|
112 |
|
113 |
|
114 | exports.createArgTypes = createArgTypes;
|
115 |
|
116 | var parseTypeToControl = function parseTypeToControl(type) {
|
117 | if (!type) {
|
118 | return null;
|
119 | }
|
120 |
|
121 | if (type.kind === 'type') {
|
122 | switch (type.type) {
|
123 | case 'string':
|
124 | return {
|
125 | type: 'text'
|
126 | };
|
127 |
|
128 | case 'enum':
|
129 | return {
|
130 | type: 'radio'
|
131 | };
|
132 |
|
133 | case 'any':
|
134 | return {
|
135 | type: 'object'
|
136 | };
|
137 |
|
138 | default:
|
139 | return {
|
140 | type: type.type
|
141 | };
|
142 | }
|
143 | } else if (type.kind === 'union') {
|
144 | if (Array.isArray(type.type) && !type.type.find(function (t) {
|
145 | return t.type !== 'string';
|
146 | })) {
|
147 | return {
|
148 | type: 'radio',
|
149 | options: type.type.filter(function (t) {
|
150 | return t.kind === 'const';
|
151 | }).map(function (t) {
|
152 | return t.value;
|
153 | })
|
154 | };
|
155 | }
|
156 | }
|
157 |
|
158 | return null;
|
159 | }; |
\ | No newline at end of file |