vue-styleguidist
Version:
Vue components style guide generator
117 lines • 3.82 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["classes"];
import "core-js/modules/es.array.join.js";
import "core-js/modules/es.array.map.js";
import "core-js/modules/es.symbol.js";
import "core-js/modules/es.symbol.description.js";
import "core-js/modules/es.function.name.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/es.regexp.to-string.js";
import React from 'react';
import PropTypes from 'prop-types';
import map from 'lodash/map';
import capitalize from 'lodash/capitalize';
import Markdown from 'rsg-components/Markdown';
import Argument from 'rsg-components/Argument';
import Styled from 'rsg-components/Styled';
import SubComponents from 'rsg-components/SubComponents';
var styles = function styles(_ref) {
var space = _ref.space,
color = _ref.color;
return {
wrapper: {
color: color.base,
fontSize: 'inherit',
lineHeight: 1.5
},
name: {
marginRight: space[1]
}
};
};
var list = function list(array) {
return array.map(function (item) {
return item.description;
}).join(', ');
};
var paragraphs = function paragraphs(array) {
return array.map(function (item) {
return item.description;
}).join('\n\n');
};
var fields = {
deprecated: function deprecated(value) {
return typeof value[0].description === 'string' ? "".concat(value[0].description) : '';
},
see: function see(value) {
return paragraphs(value);
},
link: function link(value) {
return paragraphs(value);
},
author: function author(value) {
return "".concat(list(value));
},
version: function version(value) {
return "".concat(value[0].description);
},
since: function since(value) {
return "".concat(value[0].description);
}
};
var JsDocRenderer = function JsDocRenderer(_ref2) {
var classes = _ref2.classes,
field = _ref2.field,
children = _ref2.children;
return /*#__PURE__*/React.createElement("div", {
className: "vsg-jsdoc-tag ".concat(classes.wrapper),
key: field
}, /*#__PURE__*/React.createElement("span", {
className: "vsg-tag-name ".concat(classes.name)
}, capitalize(field)), /*#__PURE__*/React.createElement("span", {
className: "vsg-tag-value ".concat(classes.value)
}, children));
};
export var JsDoc = function JsDoc(_ref3) {
var classes = _ref3.classes,
props = _objectWithoutProperties(_ref3, _excluded);
return /*#__PURE__*/React.createElement(React.Fragment, null, props.subComponents && /*#__PURE__*/React.createElement(SubComponents, {
subComponents: props.subComponents
}), props["throws"] && props["throws"].map(function (_throws, i) {
return /*#__PURE__*/React.createElement(JsDocRenderer, {
key: i,
field: "throws",
classes: classes
}, /*#__PURE__*/React.createElement(Argument, _extends({
name: ""
}, _throws, {
description: typeof _throws.description === 'boolean' ? _throws.description.toString() : _throws.description
})));
}), map(fields, function (format, field) {
var value = props[field];
if (!value || !Array.isArray(value)) {
return null;
}
return /*#__PURE__*/React.createElement(JsDocRenderer, {
key: field,
field: field,
classes: classes
}, /*#__PURE__*/React.createElement(Markdown, {
text: format(value) || '',
inline: true
}));
}));
};
JsDoc.propTypes = {
classes: PropTypes.objectOf(PropTypes.string.isRequired).isRequired,
subComponents: PropTypes.array,
deprecated: PropTypes.array,
see: PropTypes.array,
link: PropTypes.array,
author: PropTypes.array,
version: PropTypes.array,
since: PropTypes.array,
"throws": PropTypes.array
};
export default Styled(styles)(JsDoc);