UNPKG

3.54 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.extractComponentDescription = extractComponentDescription;
7exports.extractComponentProps = exports.extractComponentSectionObject = exports.extractComponentSectionArray = void 0;
8
9require("core-js/modules/es.array.map.js");
10
11require("core-js/modules/es.object.assign.js");
12
13require("core-js/modules/es.function.name.js");
14
15require("core-js/modules/es.object.keys.js");
16
17require("core-js/modules/es.array.filter.js");
18
19require("core-js/modules/es.symbol.js");
20
21require("core-js/modules/es.symbol.description.js");
22
23var _jsdocParser = require("../jsdocParser");
24
25var _types = require("./types");
26
27var _utils = require("./utils");
28
29var _createPropDef = require("./createPropDef");
30
31var getTypeSystem = function getTypeSystem(docgenInfo) {
32 if (docgenInfo.type != null) {
33 return _types.TypeSystem.JAVASCRIPT;
34 }
35
36 if (docgenInfo.flowType != null) {
37 return _types.TypeSystem.FLOW;
38 }
39
40 if (docgenInfo.tsType != null) {
41 return _types.TypeSystem.TYPESCRIPT;
42 }
43
44 return _types.TypeSystem.UNKNOWN;
45};
46
47var extractComponentSectionArray = function extractComponentSectionArray(docgenSection) {
48 var typeSystem = getTypeSystem(docgenSection[0]);
49 var createPropDef = (0, _createPropDef.getPropDefFactory)(typeSystem);
50 return docgenSection.map(function (item) {
51 var _item$type;
52
53 var sanitizedItem = item;
54
55 if ((_item$type = item.type) !== null && _item$type !== void 0 && _item$type.elements) {
56 sanitizedItem = Object.assign({}, item, {
57 type: Object.assign({}, item.type, {
58 value: item.type.elements
59 })
60 });
61 }
62
63 return extractProp(sanitizedItem.name, sanitizedItem, typeSystem, createPropDef);
64 });
65};
66
67exports.extractComponentSectionArray = extractComponentSectionArray;
68
69var extractComponentSectionObject = function extractComponentSectionObject(docgenSection) {
70 var docgenPropsKeys = Object.keys(docgenSection);
71 var typeSystem = getTypeSystem(docgenSection[docgenPropsKeys[0]]);
72 var createPropDef = (0, _createPropDef.getPropDefFactory)(typeSystem);
73 return docgenPropsKeys.map(function (propName) {
74 var docgenInfo = docgenSection[propName];
75 return docgenInfo != null ? extractProp(propName, docgenInfo, typeSystem, createPropDef) : null;
76 }).filter(Boolean);
77};
78
79exports.extractComponentSectionObject = extractComponentSectionObject;
80
81var extractComponentProps = function extractComponentProps(component, section) {
82 var docgenSection = (0, _utils.getDocgenSection)(component, section);
83
84 if (!(0, _utils.isValidDocgenSection)(docgenSection)) {
85 return [];
86 } // vue-docgen-api has diverged from react-docgen and returns an array
87
88
89 return Array.isArray(docgenSection) ? extractComponentSectionArray(docgenSection) : extractComponentSectionObject(docgenSection);
90};
91
92exports.extractComponentProps = extractComponentProps;
93
94function extractProp(propName, docgenInfo, typeSystem, createPropDef) {
95 var jsDocParsingResult = (0, _jsdocParser.parseJsDoc)(docgenInfo.description);
96 var isIgnored = jsDocParsingResult.includesJsDoc && jsDocParsingResult.ignore;
97
98 if (!isIgnored) {
99 var propDef = createPropDef(propName, docgenInfo, jsDocParsingResult);
100 return {
101 propDef: propDef,
102 jsDocTags: jsDocParsingResult.extractedTags,
103 docgenInfo: docgenInfo,
104 typeSystem: typeSystem
105 };
106 }
107
108 return null;
109}
110
111function extractComponentDescription(component) {
112 return component != null && (0, _utils.getDocgenDescription)(component);
113}
\No newline at end of file