@kadira/react-storybook-addon-info
Version:
A React Storybook addon to show additional information for your stories.
104 lines (82 loc) • 2.63 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Story = undefined;
var _assign = require('babel-runtime/core-js/object/assign');
var _assign2 = _interopRequireDefault(_assign);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.setDefaults = setDefaults;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _Story2 = require('./components/Story');
var _Story3 = _interopRequireDefault(_Story2);
var _markdown = require('./components/markdown');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Story = exports.Story = _Story3.default;
var defaultOptions = {
inline: false,
header: true,
source: true,
propTables: []
};
var defaultMtrcConf = {
h1: _markdown.H1,
h2: _markdown.H2,
h3: _markdown.H3,
h4: _markdown.H4,
h5: _markdown.H5,
h6: _markdown.H6,
code: _markdown.Code,
p: _markdown.P,
a: _markdown.A,
li: _markdown.LI,
ul: _markdown.UL
};
exports.default = {
addWithInfo: function addWithInfo(storyName, info, storyFn, _options) {
if (typeof storyFn !== 'function') {
if (typeof info === 'function') {
_options = storyFn;
storyFn = info;
info = '';
} else {
throw new Error('No story defining function has been specified');
}
}
var options = (0, _extends3.default)({}, defaultOptions, _options);
// props.propTables can only be either an array of components or null
// propTables option is allowed to be set to 'false' (a boolean)
// if the option is false, replace it with null to avoid react warnings
if (!options.propTables) {
options.propTables = null;
}
var mtrcConf = (0, _extends3.default)({}, defaultMtrcConf);
if (options && options.mtrcConf) {
(0, _assign2.default)(mtrcConf, options.mtrcConf);
}
return this.add(storyName, function (context) {
var props = {
info: info,
context: context,
showInline: Boolean(options.inline),
showHeader: Boolean(options.header),
showSource: Boolean(options.source),
propTables: options.propTables,
styles: typeof options.styles === 'function' ? options.styles : function (s) {
return s;
},
mtrcConf: mtrcConf
};
return _react2.default.createElement(
Story,
props,
storyFn(context)
);
});
}
};
function setDefaults(newDefaults) {
return (0, _assign2.default)(defaultOptions, newDefaults);
};
;