UNPKG

4.54 kBJavaScriptView Raw
1"use strict";
2var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6 return c > 3 && r && Object.defineProperty(target, key, r), r;
7};
8var __importDefault = (this && this.__importDefault) || function (mod) {
9 return (mod && mod.__esModule) ? mod : { "default": mod };
10};
11Object.defineProperty(exports, "__esModule", { value: true });
12exports.createStorybookModule = exports.getStorybookModuleMetadata = void 0;
13const core_1 = require("@angular/core");
14const platform_browser_1 = require("@angular/platform-browser");
15const ts_dedent_1 = __importDefault(require("ts-dedent"));
16const util_deprecate_1 = __importDefault(require("util-deprecate"));
17const StorybookProvider_1 = require("./StorybookProvider");
18const NgModulesAnalyzer_1 = require("./utils/NgModulesAnalyzer");
19const NgComponentAnalyzer_1 = require("./utils/NgComponentAnalyzer");
20const StorybookWrapperComponent_1 = require("./StorybookWrapperComponent");
21const ComputesTemplateFromComponent_1 = require("./ComputesTemplateFromComponent");
22const deprecatedStoryComponentWarning = util_deprecate_1.default(() => { }, ts_dedent_1.default `\`component\` story return value is deprecated, and will be removed in Storybook 7.0.
23 Instead, use \`export const default = () => ({ component: AppComponent });\`
24 or
25 \`\`\`
26 export const Primary: Story = () => ({});
27 Primary.parameters = { component: AppComponent };
28 \`\`\`
29 Read more at
30 - https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#deprecated-angular-story-component).
31 - https://storybook.js.org/docs/angular/writing-stories/parameters
32 `);
33exports.getStorybookModuleMetadata = ({ storyFnAngular, component: annotatedComponent, targetSelector, }, storyProps$) => {
34 var _a, _b, _c, _d, _e;
35 const { component: storyComponent, props, styles, moduleMetadata = {} } = storyFnAngular;
36 let { template } = storyFnAngular;
37 if (storyComponent) {
38 deprecatedStoryComponentWarning();
39 }
40 const component = storyComponent !== null && storyComponent !== void 0 ? storyComponent : annotatedComponent;
41 if (hasNoTemplate(template) && component) {
42 template = ComputesTemplateFromComponent_1.computesTemplateFromComponent(component, props, '');
43 }
44 /**
45 * Create a component that wraps generated template and gives it props
46 */
47 const ComponentToInject = StorybookWrapperComponent_1.createStorybookWrapperComponent(targetSelector, template, component, styles, props);
48 const isStandalone = NgComponentAnalyzer_1.isStandaloneComponent(component);
49 // Look recursively (deep) if the component is not already declared by an import module
50 const requiresComponentDeclaration = NgComponentAnalyzer_1.isDeclarable(component) &&
51 !NgModulesAnalyzer_1.isComponentAlreadyDeclaredInModules(component, moduleMetadata.declarations, moduleMetadata.imports) &&
52 !isStandalone;
53 return {
54 declarations: [
55 ...(requiresComponentDeclaration ? [component] : []),
56 ComponentToInject,
57 ...((_a = moduleMetadata.declarations) !== null && _a !== void 0 ? _a : []),
58 ],
59 imports: [
60 platform_browser_1.BrowserModule,
61 ...(isStandalone ? [component] : []),
62 ...((_b = moduleMetadata.imports) !== null && _b !== void 0 ? _b : []),
63 ],
64 providers: [StorybookProvider_1.storyPropsProvider(storyProps$), ...((_c = moduleMetadata.providers) !== null && _c !== void 0 ? _c : [])],
65 entryComponents: [...((_d = moduleMetadata.entryComponents) !== null && _d !== void 0 ? _d : [])],
66 schemas: [...((_e = moduleMetadata.schemas) !== null && _e !== void 0 ? _e : [])],
67 bootstrap: [ComponentToInject],
68 };
69};
70exports.createStorybookModule = (ngModule) => {
71 let StorybookModule = class StorybookModule {
72 };
73 StorybookModule = __decorate([
74 core_1.NgModule(ngModule)
75 ], StorybookModule);
76 return StorybookModule;
77};
78function hasNoTemplate(template) {
79 return template === null || template === undefined;
80}