vue-styleguidist
Version:
Vue components style guide generator
115 lines • 4.72 kB
JavaScript
import "core-js/modules/es.object.keys.js";
import "core-js/modules/es.array.filter.js";
import "core-js/modules/es.object.get-own-property-descriptor.js";
import "core-js/modules/web.dom-collections.for-each.js";
import "core-js/modules/es.object.get-own-property-descriptors.js";
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
import "core-js/modules/es.symbol.js";
import "core-js/modules/es.symbol.description.js";
import "core-js/modules/es.array.reduce.js";
import "core-js/modules/es.object.to-string.js";
import "core-js/modules/es.function.name.js";
import "core-js/modules/es.array.join.js";
import "core-js/modules/es.array.concat.js";
import React from 'react';
import PropTypes from 'prop-types';
import map from 'lodash/map';
import Styled from 'rsg-components/Styled';
import Arguments from 'rsg-components/Arguments';
import JsDoc from 'rsg-components/JsDoc';
import Markdown from 'rsg-components/Markdown';
import Name from 'rsg-components/Name';
import Table from 'rsg-components/Table';
import getOriginColumn from 'rsg-components/OriginColumn';
import propStyles from '../../utils/propStyles';
function renderDescription(myClasses) {
return function renderDesc(prop) {
var description = prop.description,
_prop$tags = prop.tags,
tags = _prop$tags === void 0 ? {} : _prop$tags;
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
className: myClasses.descriptionWrapper
}, description && /*#__PURE__*/React.createElement(Markdown, {
text: description
})), /*#__PURE__*/React.createElement(JsDoc, tags));
};
}
function renderProperties(prop) {
var properties = prop.properties;
if (Array.isArray(properties)) {
properties = properties.reduce(function (total, current) {
total.push({
name: current.name,
type: {
name: total.length || current.type.names[0] !== 'undefined' ? current.type.names.join(' | ') : prop.type.names.join(' | ')
},
description: current.description,
// make each arguments display on its own line
block: true
});
return total;
}, []);
} else if (prop.type) {
properties = [{
name: '<anonymous>',
type: {
name: prop.type.names.join(' | ')
}
}];
}
return properties && properties.length > 0 ? /*#__PURE__*/React.createElement(Arguments, {
args: properties
}) : null;
}
function renderName(prop) {
var name = prop.name,
_prop$tags2 = prop.tags,
tags = _prop$tags2 === void 0 ? {} : _prop$tags2;
return /*#__PURE__*/React.createElement(Name, {
deprecated: !!tags.deprecated
}, name);
}
export function getRowKey(row) {
return row.name;
}
export function propsToArray(props) {
return map(props, function (prop, name) {
return _objectSpread(_objectSpread({}, prop), {}, {
name: name
});
});
}
export var columns = function columns(events, classes) {
return [{
caption: 'Event name',
render: renderName,
className: classes.name
}, {
caption: 'Description',
render: renderDescription(classes),
className: classes.description
}].concat(_toConsumableArray(events.some(function (p) {
return p.properties || p.type;
}) ? [{
caption: 'Properties',
render: renderProperties
}] : []), _toConsumableArray(getOriginColumn(events)));
};
function EventsRenderer(_ref) {
var props = _ref.props,
classes = _ref.classes;
var evts = propsToArray(props);
return /*#__PURE__*/React.createElement(Table, {
columns: columns(evts, classes),
rows: evts,
getRowKey: getRowKey
});
}
EventsRenderer.propTypes = {
props: PropTypes.object.isRequired,
classes: PropTypes.object.isRequired
};
export default Styled(propStyles)(EventsRenderer);