wix-storybook-utils
Version:
Utilities for automated component documentation within Storybook
93 lines • 3.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MethodDocumentation = void 0;
var tslib_1 = require("tslib");
var React = tslib_1.__importStar(require("react"));
var FunctionArguments = function (_a) {
var args = _a.args;
return (React.createElement("span", { "data-hook": "auto-testkit-function-arguments" }, args.map(function (argument, i) {
return (React.createElement("span", { key: argument.name },
React.createElement("span", { "data-hook": "auto-testkit-function-argument-name" }, argument.name),
argument.type && (React.createElement("span", { "data-hook": "auto-testkit-function-argument-type" },
": ",
argument.type)),
i < args.length - 1 && ', '));
})));
};
var paramDocumentation = function (_a, index) {
var title = _a.title, name = _a.name, description = _a.description;
return (React.createElement("li", { key: index },
React.createElement("b", null, title),
" ",
name,
description && " - ".concat(description)));
};
var returnsDocumentation = function (_a, index) {
var title = _a.title, type = _a.type, description = _a.description;
// No type
if (!type) {
return;
}
// Basic type
if (!type.applications) {
return (React.createElement("li", { key: index },
React.createElement("b", null, title),
" ",
type.name,
description && " - ".concat(description)));
}
// Promise type
var returnType = type.applications
.map(function (app) {
if (app.name) {
return app.name;
}
if (app.type === 'UnionType') {
return app.elements
.map(function (element) {
if (element.value) {
return "'".concat(element.value, "'");
}
if (element.type === 'NullLiteral') {
return 'null';
}
if (element.type === 'UndefinedLiteral') {
return 'undefined';
}
return element.name;
})
.join(' | ');
}
})
.join(', ');
return (React.createElement("li", { key: index },
React.createElement("b", null, title),
" ", "Promise<".concat(returnType, ">"),
description && " - ".concat(description)));
};
var MethodDocumentation = function (_a) {
var unit = _a.unit;
var args = unit.args, name = unit.name, tags = unit.tags;
return (React.createElement("tr", { className: "auto-testkit-field" },
React.createElement("td", null,
React.createElement("span", { "data-hook": "auto-testkit-function-name" }, name),
"(",
React.createElement(FunctionArguments, { args: args }),
")"),
React.createElement("td", { "data-hook": "auto-testkit-function-description" },
React.createElement("div", null, unit.description),
tags && tags.length > 0 && (React.createElement("ul", null, tags.map(function (tag, index) {
if (tag.title === 'param') {
return paramDocumentation(tag, index);
}
if (tag.title === 'returns' || tag.title === 'return') {
return returnsDocumentation(tag, index);
}
return (React.createElement("li", { key: index },
React.createElement("b", null, tag.title),
" ",
tag.description));
}))))));
};
exports.MethodDocumentation = MethodDocumentation;
//# sourceMappingURL=method-documentation.js.map