UNPKG

2 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.sourceDecorator = exports.skipSourceRender = void 0;
4const preview_api_1 = require("@storybook/preview-api");
5const docs_tools_1 = require("@storybook/docs-tools");
6const renderer_1 = require("../../renderer");
7const skipSourceRender = (context) => {
8 const sourceParams = context?.parameters.docs?.source;
9 // always render if the user forces it
10 if (sourceParams?.type === docs_tools_1.SourceType.DYNAMIC) {
11 return false;
12 }
13 // never render if the user is forcing the block to render code, or
14 // if the user provides code
15 return sourceParams?.code || sourceParams?.type === docs_tools_1.SourceType.CODE;
16};
17exports.skipSourceRender = skipSourceRender;
18/**
19 * Angular source decorator.
20 * @param storyFn Fn
21 * @param context StoryContext
22 */
23const sourceDecorator = (storyFn, context) => {
24 const story = storyFn();
25 if ((0, exports.skipSourceRender)(context)) {
26 return story;
27 }
28 const channel = preview_api_1.addons.getChannel();
29 const { props, template, userDefinedTemplate } = story;
30 const { component, argTypes } = context;
31 let toEmit;
32 (0, preview_api_1.useEffect)(() => {
33 if (toEmit) {
34 const { id, unmappedArgs } = context;
35 channel.emit(docs_tools_1.SNIPPET_RENDERED, { id, args: unmappedArgs, source: toEmit, format: 'angular' });
36 }
37 });
38 if (component && !userDefinedTemplate) {
39 const source = (0, renderer_1.computesTemplateSourceFromComponent)(component, props, argTypes);
40 // We might have a story with a Directive or Service defined as the component
41 // In these cases there might exist a template, even if we aren't able to create source from component
42 if (source || template) {
43 toEmit = source || template;
44 }
45 }
46 else if (template) {
47 toEmit = template;
48 }
49 return story;
50};
51exports.sourceDecorator = sourceDecorator;