UNPKG

wix-storybook-utils

Version:

Utilities for automated component documentation within Storybook

58 lines 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getComponentsHints = void 0; var tslib_1 = require("tslib"); var parse_prop_types_1 = tslib_1.__importDefault(require("parse-prop-types")); var omit_1 = tslib_1.__importDefault(require("lodash/omit")); var isUpperCaseLetter = function (char) { return /[A-Z]/.test(char); }; var getCompoundComponents = function (componentsScope, componentName) { var component = componentsScope[componentName]; return Object.keys(component).reduce(function (result, componentProperty) { var _a; if (isUpperCaseLetter(componentProperty[0])) { return tslib_1.__assign(tslib_1.__assign({}, result), (_a = {}, _a["".concat(componentName, ".").concat(componentProperty)] = component[componentProperty], _a)); } return result; }, {}); }; var getParsedComponent = function (componentsScope, componentName) { var _a; var component = componentsScope[componentName]; if (!component.propTypes && !component.displayName) { return {}; } var parsedPropTypes = (0, parse_prop_types_1.default)(component); var filteredPropTypes = (0, omit_1.default)(parsedPropTypes, 'children', 'className'); var propNames = Object.keys(filteredPropTypes); return _a = {}, _a[componentName] = { attrs: Object.assign.apply(Object, tslib_1.__spreadArray([{}], propNames.sort().map(function (propName) { var _a; var propType = filteredPropTypes[propName].type; return _a = {}, _a[propName] = propType.name === 'oneOf' ? propType.value.filter(function (x) { return typeof x === 'string'; }) : null, _a; }), false)), }, _a; }; var getCompoundComponentsHints = function (componentsScope, componentName) { var compoundComponents = getCompoundComponents(componentsScope, componentName); return Object.keys(compoundComponents) .sort() .reduce(function (result, compoundComponentName) { return (tslib_1.__assign(tslib_1.__assign({}, result), getParsedComponent(compoundComponents, compoundComponentName))); }, {}); }; var getComponentsHints = function (componentsScope) { if (!componentsScope) { return null; } return Object.keys(componentsScope) .sort() .reduce(function (result, componentName) { return (!componentsScope[componentName] ? result : tslib_1.__assign(tslib_1.__assign(tslib_1.__assign({}, result), getParsedComponent(componentsScope, componentName)), getCompoundComponentsHints(componentsScope, componentName))); }, {}); }; exports.getComponentsHints = getComponentsHints; //# sourceMappingURL=components-hints-builder.js.map