UNPKG

1.97 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.decorateStory = void 0;
4const store_1 = require("@storybook/store");
5const ComputesTemplateFromComponent_1 = require("./angular-beta/ComputesTemplateFromComponent");
6function decorateStory(mainStoryFn, decorators) {
7 const returnDecorators = [cleanArgsDecorator, ...decorators].reduce((previousStoryFn, decorator) => (context) => {
8 const decoratedStory = decorator((update) => {
9 return previousStoryFn(Object.assign(Object.assign({}, context), store_1.sanitizeStoryContextUpdate(update)));
10 }, context);
11 return decoratedStory;
12 }, (context) => prepareMain(mainStoryFn(context), context));
13 return returnDecorators;
14}
15exports.default = decorateStory;
16exports.decorateStory = decorateStory;
17const prepareMain = (story, context) => {
18 var _a;
19 let { template } = story;
20 const component = (_a = story.component) !== null && _a !== void 0 ? _a : context.component;
21 const userDefinedTemplate = !hasNoTemplate(template);
22 if (!userDefinedTemplate && component) {
23 template = ComputesTemplateFromComponent_1.computesTemplateFromComponent(component, story.props, '');
24 }
25 return Object.assign(Object.assign({}, story), (template ? { template, userDefinedTemplate } : {}));
26};
27function hasNoTemplate(template) {
28 return template === null || template === undefined;
29}
30const cleanArgsDecorator = (storyFn, context) => {
31 if (!context.argTypes || !context.args) {
32 return storyFn();
33 }
34 const argsToClean = context.args;
35 context.args = Object.entries(argsToClean).reduce((obj, [key, arg]) => {
36 const argType = context.argTypes[key];
37 // Only keeps args with a control or an action in argTypes
38 if (argType.action || argType.control) {
39 return Object.assign(Object.assign({}, obj), { [key]: arg });
40 }
41 return obj;
42 }, {});
43 return storyFn();
44};