wix-storybook-utils
Version:
Utilities for automated component documentation within Storybook
49 lines • 2.81 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importDefault(require("react"));
var methods_table_1 = require("./methods-table");
var props_table_1 = require("./props-table");
var SectionHelper_1 = tslib_1.__importDefault(require("../SectionHelper"));
var styles_scss_1 = tslib_1.__importDefault(require("./styles.scss"));
var splitDeprecated = function (props) {
return Object.keys(props).reduce(function (output, name) {
var prop = props[name];
var isDeprecated = (prop.tags || []).some(function (_a) {
var title = _a.title;
return title === 'deprecated';
});
if (isDeprecated) {
output.deprecatedProps[name] = prop;
}
else {
output.supportedProps[name] = prop;
}
return output;
}, { deprecatedProps: {}, supportedProps: {} });
};
var Table = function (_a) {
var properties = _a.properties, publicMethods = _a.publicMethods, title = _a.title, deprecated = _a.deprecated, dataHook = _a.dataHook;
return (react_1.default.createElement("div", { className: styles_scss_1.default.table },
react_1.default.createElement("div", { className: styles_scss_1.default.title, "data-hook": dataHook }, title),
deprecated && (react_1.default.createElement(SectionHelper_1.default, null, "The following properties were deprecated and will be removed in near future. Do not use them!")),
publicMethods && react_1.default.createElement(methods_table_1.MethodsTable, { methods: publicMethods }),
properties && react_1.default.createElement(props_table_1.PropsTable, { props: properties })));
};
var AutoDocs = function (_a) {
var metadata = _a.metadata;
var props = metadata.props, _b = metadata.methods, methods = _b === void 0 ? [] : _b;
var publicMethods = methods.filter(function (_a) {
var name = _a.name;
return !name.startsWith('_');
});
var _c = splitDeprecated(props), deprecatedProps = _c.deprecatedProps, supportedProps = _c.supportedProps;
var containsDeprecated = Object.keys(deprecatedProps).length > 0;
var containsPublicMethods = publicMethods.length > 0;
return (react_1.default.createElement("div", { className: "markdown-body" },
react_1.default.createElement(Table, { properties: supportedProps, title: "Properties" }),
containsPublicMethods && (react_1.default.createElement(Table, { dataHook: "autodocs-methods-table-title", title: "Public methods", publicMethods: publicMethods })),
containsDeprecated && (react_1.default.createElement(Table, { properties: deprecatedProps, title: "Deprecated Props", deprecated: true }))));
};
exports.default = AutoDocs;
//# sourceMappingURL=index.js.map