UNPKG

3.66 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.createArgTypes = exports.extractArgTypes = void 0;
7
8require("core-js/modules/es.array.find.js");
9
10require("core-js/modules/es.function.name.js");
11
12require("core-js/modules/web.dom-collections.for-each.js");
13
14require("core-js/modules/es.symbol.js");
15
16require("core-js/modules/es.symbol.description.js");
17
18require("core-js/modules/es.array.join.js");
19
20require("core-js/modules/es.array.filter.js");
21
22require("core-js/modules/es.array.map.js");
23
24var _clientLogger = require("@storybook/client-logger");
25
26function hasKeyword(keyword, keywords) {
27 return keywords ? keywords.find(function (k) {
28 return k.name === keyword;
29 }) != null : false;
30}
31
32var extractArgTypes = function extractArgTypes(component) {
33 try {
34 // eslint-disable-next-line no-underscore-dangle
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
47exports.extractArgTypes = extractArgTypes;
48
49var 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 * Function to convert the type from sveltedoc-parser to a storybook type
109 * @param typeName
110 * @returns string
111 */
112
113
114exports.createArgTypes = createArgTypes;
115
116var 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