UNPKG

wix-storybook-utils

Version:

Utilities for automated component documentation within Storybook

49 lines 2.81 kB
"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