wix-storybook-utils
Version:
Utilities for automated component documentation within Storybook
81 lines • 3.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var React = tslib_1.__importStar(require("react"));
var story_section_1 = require("../typings/story-section");
var merge_1 = tslib_1.__importDefault(require("lodash/merge"));
var view_1 = require("../Sections/view");
var omit_1 = tslib_1.__importDefault(require("../AutoExample/utils/omit"));
var create_default_sections_1 = require("../Sections/create-default-sections");
var story_page_1 = require("./../Sections/views/story-page");
var useStorybokBuilderApi_1 = require("./hooks/useStorybokBuilderApi");
var prepareMetadata = function (props) { return (tslib_1.__assign(tslib_1.__assign({}, props.metadata), { displayName: props.displayName || props.metadata.displayName, props: (0, omit_1.default)(props.metadata.props)(function (prop) { return props.hiddenProps.includes(prop); }) })); };
var makeSections = function (props) {
return [
{
when: props.loading && props.enabled,
make: function () {
return (0, story_page_1.storyPage)({
type: story_section_1.SectionType.StoryPage,
content: {
description: '',
do: ['do'],
dont: ['dont'],
},
demo: '<div></div>',
loading: props.loading,
}, props);
},
},
{
when: props.story && props.story.content,
make: function () {
return (0, story_page_1.storyPage)({
type: story_section_1.SectionType.StoryPage,
content: props.story.content,
examples: props.story.examples,
demo: props.story.demo,
tabs: props.story.tabs,
}, props);
},
},
{
when: props.sections && props.componentPath,
make: function () { return (0, merge_1.default)((0, create_default_sections_1.createDefaultSections)(props), props.sections); },
},
{
when: props.sections && !props.componentPath,
make: function () { return props.sections; },
},
{
// default case
when: true,
make: function () { return (0, create_default_sections_1.createDefaultSections)(props); },
},
]
.find(function (_a) {
var when = _a.when;
return when;
})
.make();
};
var StoryPage = function (props) {
React.useEffect(function () {
window.sessionStorage.clear();
}, []);
var _a = (0, useStorybokBuilderApi_1.useStorybookBuilderApi)({
library: props.config.moduleName,
storyName: props.storyName,
}), loading = _a.loading, response = _a.response, enabled = _a.enabled;
return (React.createElement(view_1.View, tslib_1.__assign({}, tslib_1.__assign(tslib_1.__assign({}, props), { metadata: prepareMetadata(props), sections: makeSections(tslib_1.__assign(tslib_1.__assign({ loading: loading, enabled: !!enabled }, props), { story: tslib_1.__assign(tslib_1.__assign({}, props.story), (response && response)) })) }))));
};
StoryPage.defaultProps = {
config: {
importFormat: '',
moduleName: '',
repoBaseURL: '',
},
hiddenProps: [],
};
exports.default = StoryPage;
//# sourceMappingURL=index.js.map