UNPKG

@kadira/react-storybook-addon-info

Version:

A React Storybook addon to show additional information for your stories.

195 lines (161 loc) 5.33 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _values = require('babel-runtime/core-js/object/values'); var _values2 = _interopRequireDefault(_values); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _map = require('babel-runtime/core-js/map'); var _map2 = _interopRequireDefault(_map); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _PropVal = require('./PropVal'); var _PropVal2 = _interopRequireDefault(_PropVal); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PropTypesMap = new _map2.default(); for (var typeName in _react2.default.PropTypes) { if (!_react2.default.PropTypes.hasOwnProperty(typeName)) { continue; } var type = _react2.default.PropTypes[typeName]; PropTypesMap.set(type, typeName); PropTypesMap.set(type.isRequired, typeName); } var stylesheet = { propTable: { marginLeft: -10, borderSpacing: '10px 5px', borderCollapse: 'separate' } }; var PropTable = function (_React$Component) { (0, _inherits3.default)(PropTable, _React$Component); function PropTable() { (0, _classCallCheck3.default)(this, PropTable); return (0, _possibleConstructorReturn3.default)(this, (PropTable.__proto__ || (0, _getPrototypeOf2.default)(PropTable)).apply(this, arguments)); } (0, _createClass3.default)(PropTable, [{ key: 'render', value: function render() { var type = this.props.type; if (!type) { return null; } var props = {}; if (type.propTypes) { for (var property in type.propTypes) { if (!type.propTypes.hasOwnProperty(property)) { continue; } var typeInfo = type.propTypes[property]; var propType = PropTypesMap.get(typeInfo) || 'other'; var required = typeInfo.isRequired === undefined ? 'yes' : 'no'; props[property] = { property: property, propType: propType, required: required }; } } if (type.defaultProps) { for (var _property in type.defaultProps) { if (!type.defaultProps.hasOwnProperty(_property)) { continue; } var value = type.defaultProps[_property]; if (value === undefined) { continue; } if (!props[_property]) { props[_property] = { property: _property }; } props[_property].defaultValue = value; } } var array = (0, _values2.default)(props); if (!array.length) { return _react2.default.createElement( 'small', null, 'No propTypes defined!' ); } array.sort(function (a, b) { return a.property > b.property; }); return _react2.default.createElement( 'table', { style: stylesheet.propTable }, _react2.default.createElement( 'thead', null, _react2.default.createElement( 'tr', null, _react2.default.createElement( 'th', null, 'property' ), _react2.default.createElement( 'th', null, 'propType' ), _react2.default.createElement( 'th', null, 'required' ), _react2.default.createElement( 'th', null, 'default' ) ) ), _react2.default.createElement( 'tbody', null, array.map(function (row) { return _react2.default.createElement( 'tr', { key: row.property }, _react2.default.createElement( 'td', null, row.property ), _react2.default.createElement( 'td', null, row.propType ), _react2.default.createElement( 'td', null, row.required ), _react2.default.createElement( 'td', null, row.defaultValue === undefined ? '-' : _react2.default.createElement(_PropVal2.default, { val: row.defaultValue }) ) ); }) ) ); } }]); return PropTable; }(_react2.default.Component); exports.default = PropTable; PropTable.displayName = 'PropTable'; PropTable.propTypes = { type: _react2.default.PropTypes.func };