wix-storybook-utils
Version:
Utilities for automated component documentation within Storybook
79 lines • 3.07 kB
JavaScript
import { __assign } from "tslib";
import * as React from 'react';
import { SectionType } from '../typings/story-section';
import merge from 'lodash/merge';
import { View as SectionsView } from '../Sections/view';
import omit from '../AutoExample/utils/omit';
import { createDefaultSections } from '../Sections/create-default-sections';
import { storyPage } from './../Sections/views/story-page';
import { useStorybookBuilderApi } from './hooks/useStorybokBuilderApi';
var prepareMetadata = function (props) { return (__assign(__assign({}, props.metadata), { displayName: props.displayName || props.metadata.displayName, props: omit(props.metadata.props)(function (prop) { return props.hiddenProps.includes(prop); }) })); };
var makeSections = function (props) {
return [
{
when: props.loading && props.enabled,
make: function () {
return storyPage({
type: SectionType.StoryPage,
content: {
description: '',
do: ['do'],
dont: ['dont'],
},
demo: '<div></div>',
loading: props.loading,
}, props);
},
},
{
when: props.story && props.story.content,
make: function () {
return storyPage({
type: 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 merge(createDefaultSections(props), props.sections); },
},
{
when: props.sections && !props.componentPath,
make: function () { return props.sections; },
},
{
// default case
when: true,
make: function () { return createDefaultSections(props); },
},
]
.find(function (_a) {
var when = _a.when;
return when;
})
.make();
};
var StoryPage = function (props) {
React.useEffect(function () {
window.sessionStorage.clear();
}, []);
var _a = useStorybookBuilderApi({
library: props.config.moduleName,
storyName: props.storyName,
}), loading = _a.loading, response = _a.response, enabled = _a.enabled;
return (React.createElement(SectionsView, __assign({}, __assign(__assign({}, props), { metadata: prepareMetadata(props), sections: makeSections(__assign(__assign({ loading: loading, enabled: !!enabled }, props), { story: __assign(__assign({}, props.story), (response && response)) })) }))));
};
StoryPage.defaultProps = {
config: {
importFormat: '',
moduleName: '',
repoBaseURL: '',
},
hiddenProps: [],
};
export default StoryPage;
//# sourceMappingURL=index.js.map