@storybook/angular 7.0.0-beta.6 → 7.0.0-beta.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +66 -0
  2. package/dist/builders/build-storybook/index.d.ts +5 -3
  3. package/dist/builders/build-storybook/index.js +7 -3
  4. package/dist/builders/build-storybook/schema.json +14 -6
  5. package/dist/builders/start-storybook/index.d.ts +5 -3
  6. package/dist/builders/start-storybook/index.js +9 -5
  7. package/dist/builders/start-storybook/schema.json +10 -5
  8. package/dist/builders/utils/run-compodoc.js +11 -27
  9. package/dist/builders/utils/run-compodoc.spec.js +42 -0
  10. package/dist/builders/utils/standalone-options.d.ts +2 -2
  11. package/dist/client/angular-beta/AbstractRenderer.d.ts +3 -3
  12. package/dist/client/angular-beta/AbstractRenderer.js +31 -31
  13. package/dist/client/angular-beta/CanvasRenderer.js +1 -1
  14. package/dist/client/angular-beta/DocsRenderer.js +5 -3
  15. package/dist/client/angular-beta/RendererFactory.js +5 -4
  16. package/dist/client/angular-beta/StorybookModule.d.ts +3 -6
  17. package/dist/client/angular-beta/StorybookModule.js +4 -45
  18. package/dist/client/angular-beta/StorybookModule.test.js +51 -36
  19. package/dist/client/angular-beta/StorybookWrapperComponent.d.ts +3 -2
  20. package/dist/client/angular-beta/StorybookWrapperComponent.js +30 -2
  21. package/dist/client/angular-beta/__testfixtures__/test.module.d.ts +2 -0
  22. package/dist/client/angular-beta/__testfixtures__/test.module.js +20 -0
  23. package/dist/client/angular-beta/utils/NgComponentAnalyzer.js +1 -1
  24. package/dist/client/angular-beta/utils/NgComponentAnalyzer.test.js +43 -5
  25. package/dist/client/angular-beta/utils/NgModulesAnalyzer.d.ts +1 -1
  26. package/dist/client/angular-beta/utils/NgModulesAnalyzer.js +4 -4
  27. package/dist/client/angular-beta/utils/NgModulesAnalyzer.test.js +3 -3
  28. package/dist/client/angular-beta/utils/PropertyExtractor.d.ts +32 -0
  29. package/dist/client/angular-beta/utils/PropertyExtractor.js +136 -0
  30. package/dist/client/angular-beta/utils/PropertyExtractor.test.d.ts +1 -0
  31. package/dist/client/angular-beta/utils/PropertyExtractor.test.js +141 -0
  32. package/dist/client/config.d.ts +1 -1
  33. package/dist/client/config.js +1 -1
  34. package/dist/client/decorateStory.js +1 -1
  35. package/dist/client/docs/compodoc.js +5 -7
  36. package/dist/client/docs/config.js +1 -2
  37. package/dist/client/docs/sourceDecorator.js +2 -1
  38. package/dist/client/globals.d.ts +0 -8
  39. package/dist/client/globals.js +2 -29
  40. package/dist/client/public-api.js +3 -3
  41. package/dist/client/public-types.d.ts +2 -1
  42. package/dist/client/render.d.ts +1 -0
  43. package/dist/client/render.js +1 -5
  44. package/dist/client/types.d.ts +1 -2
  45. package/dist/index.mjs +13 -0
  46. package/dist/preset.mjs +26 -0
  47. package/dist/renderer.d.ts +2 -1
  48. package/dist/renderer.js +4 -2
  49. package/dist/renderer.mjs +5 -0
  50. package/dist/server/framework-preset-angular-cli.d.ts +2 -1
  51. package/dist/server/framework-preset-angular-cli.js +21 -92
  52. package/dist/server/plugins/storybook-normalize-angular-entry-plugin.js +15 -13
  53. package/dist/server/preset-options.d.ts +3 -2
  54. package/dist/types.mjs +1 -0
  55. package/jest.config.js +19 -0
  56. package/package.json +46 -45
  57. package/template/cli/Button.stories.ts +1 -1
  58. package/template/cli/Header.stories.ts +2 -2
  59. package/template/cli/button.component.ts +2 -0
  60. package/template/components/index.js +2 -2
  61. package/template/stories/angular-mdx.stories.mdx +1 -1
  62. package/template/stories/argTypes/doc-button/doc-button.component.ts +1 -2
  63. package/template/stories/basics/component-without-selector/without-selector-ng-component-outlet.stories.ts +1 -1
  64. package/template/stories/basics/component-without-selector/without-selector-ng-factory-resolver.stories.ts +1 -1
  65. package/template/stories/basics/component-without-selector/without-selector.stories.ts +1 -1
  66. package/template/stories/basics/ng-module/import-module-chip.stories.ts +23 -0
  67. package/template/stories/basics/ng-module/import-module.stories.ts +2 -13
  68. package/template/stories/core/decorators/componentWrapperDecorator/decorators.stories.ts +0 -18
  69. package/template/stories/core/moduleMetadata/angular-src/open-close-component/open-close.component.css +13 -0
  70. package/template/stories/core/moduleMetadata/angular-src/open-close-component/open-close.component.html +7 -0
  71. package/template/stories/core/moduleMetadata/angular-src/open-close-component/open-close.component.ts +39 -0
  72. package/template/stories/core/moduleMetadata/with-browser-animations.stories.ts +30 -0
  73. package/template/stories/core/moduleMetadata/with-noop-browser-animations.stories.ts +27 -0
  74. package/template/stories/core/parameters/bootstrap-options.stories.ts +1 -5
  75. package/template/stories/others/app-initializer-use-factory/app-initializer-use-factory.stories.ts +34 -0
  76. package/dist/client/angular/helpers.d.ts +0 -8
  77. package/dist/client/angular/helpers.js +0 -150
  78. package/dist/server/angular-read-workspace.d.ts +0 -13
  79. package/dist/server/angular-read-workspace.js +0 -78
  80. package/dist/server/utils/normalize-asset-patterns.d.ts +0 -7
  81. package/dist/server/utils/normalize-asset-patterns.js +0 -64
  82. package/dist/server/utils/normalize-optimization.d.ts +0 -3
  83. package/dist/server/utils/normalize-optimization.js +0 -21
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PropertyExtractor = exports.uniqueArray = exports.REMOVED_MODULES = exports.reflectionCapabilities = void 0;
5
+ const common_1 = require("@angular/common");
6
+ const core_1 = require("@angular/core");
7
+ const platform_browser_1 = require("@angular/platform-browser");
8
+ const animations_1 = require("@angular/platform-browser/animations");
9
+ const NgModulesAnalyzer_1 = require("./NgModulesAnalyzer");
10
+ exports.reflectionCapabilities = new core_1.ɵReflectionCapabilities();
11
+ exports.REMOVED_MODULES = new core_1.InjectionToken('REMOVED_MODULES');
12
+ const uniqueArray = (arr) => {
13
+ return arr
14
+ .flat(Number.MAX_VALUE)
15
+ .filter(Boolean)
16
+ .filter((value, index, self) => self.indexOf(value) === index);
17
+ };
18
+ exports.uniqueArray = uniqueArray;
19
+ class PropertyExtractor {
20
+ /* eslint-enable @typescript-eslint/lines-between-class-members */
21
+ constructor(metadata, component) {
22
+ this.metadata = metadata;
23
+ this.component = component;
24
+ /* eslint-disable @typescript-eslint/lines-between-class-members */
25
+ this.declarations = [];
26
+ /**
27
+ * Analyze NgModule Metadata
28
+ *
29
+ * - Removes Restricted Imports
30
+ * - Extracts providers from ModuleWithProviders
31
+ * - Flattens imports
32
+ * - Returns a new NgModuleMetadata object
33
+ *
34
+ *
35
+ */
36
+ this.analyzeMetadata = (metadata) => {
37
+ const declarations = [...(metadata?.declarations || [])];
38
+ const providers = [...(metadata?.providers || [])];
39
+ const singletons = [...(metadata?.singletons || [])];
40
+ const imports = [...(metadata?.imports || [])].reduce((acc, imported) => {
41
+ // remove ngModule and use only its providers if it is restricted
42
+ // (e.g. BrowserModule, BrowserAnimationsModule, NoopAnimationsModule, ...etc)
43
+ const [isRestricted, restrictedProviders] = PropertyExtractor.analyzeRestricted(imported);
44
+ if (isRestricted) {
45
+ singletons.unshift(restrictedProviders || []);
46
+ return acc;
47
+ }
48
+ acc.push(imported);
49
+ return acc;
50
+ }, []);
51
+ return { ...metadata, imports, providers, singletons, declarations };
52
+ };
53
+ this.init();
54
+ }
55
+ init() {
56
+ const analyzed = this.analyzeMetadata(this.metadata);
57
+ this.imports = (0, exports.uniqueArray)([common_1.CommonModule, analyzed.imports]);
58
+ this.providers = (0, exports.uniqueArray)(analyzed.providers);
59
+ this.singletons = (0, exports.uniqueArray)(analyzed.singletons);
60
+ this.declarations = (0, exports.uniqueArray)(analyzed.declarations);
61
+ if (this.component) {
62
+ const { isDeclarable, isStandalone } = PropertyExtractor.analyzeDecorators(this.component);
63
+ const isDeclared = (0, NgModulesAnalyzer_1.isComponentAlreadyDeclared)(this.component, analyzed.declarations, this.imports);
64
+ if (isStandalone) {
65
+ this.imports.push(this.component);
66
+ }
67
+ else if (isDeclarable && !isDeclared) {
68
+ this.declarations.push(this.component);
69
+ }
70
+ }
71
+ }
72
+ }
73
+ exports.PropertyExtractor = PropertyExtractor;
74
+ _a = PropertyExtractor;
75
+ PropertyExtractor.analyzeRestricted = (ngModule) => {
76
+ /**
77
+ * BrowserModule is restricted,
78
+ * because bootstrapApplication API, which mounts the component to the DOM,
79
+ * automatically imports BrowserModule
80
+ */
81
+ if (ngModule === platform_browser_1.BrowserModule) {
82
+ return [true];
83
+ }
84
+ /**
85
+ * BrowserAnimationsModule imports BrowserModule, which is restricted,
86
+ * because bootstrapApplication API, which mounts the component to the DOM,
87
+ * automatically imports BrowserModule
88
+ */
89
+ if (ngModule === animations_1.BrowserAnimationsModule) {
90
+ return [true, (0, animations_1.provideAnimations)()];
91
+ }
92
+ /**
93
+ * NoopAnimationsModule imports BrowserModule, which is restricted,
94
+ * because bootstrapApplication API, which mounts the component to the DOM,
95
+ * automatically imports BrowserModule
96
+ */
97
+ if (ngModule === animations_1.NoopAnimationsModule) {
98
+ return [true, (0, animations_1.provideNoopAnimations)()];
99
+ }
100
+ return [false];
101
+ };
102
+ PropertyExtractor.analyzeDecorators = (component) => {
103
+ const decorators = exports.reflectionCapabilities.annotations(component);
104
+ const isComponent = decorators.some((d) => _a.isDecoratorInstanceOf(d, 'Component'));
105
+ const isDirective = decorators.some((d) => _a.isDecoratorInstanceOf(d, 'Directive'));
106
+ const isPipe = decorators.some((d) => _a.isDecoratorInstanceOf(d, 'Pipe'));
107
+ const isDeclarable = isComponent || isDirective || isPipe;
108
+ const isStandalone = isComponent && decorators.some((d) => d.standalone);
109
+ return { isDeclarable, isStandalone };
110
+ };
111
+ PropertyExtractor.isDecoratorInstanceOf = (decorator, name) => {
112
+ let factory;
113
+ switch (name) {
114
+ case 'Component':
115
+ factory = core_1.Component;
116
+ break;
117
+ case 'Directive':
118
+ factory = core_1.Directive;
119
+ break;
120
+ case 'Pipe':
121
+ factory = core_1.Pipe;
122
+ break;
123
+ case 'Injectable':
124
+ factory = core_1.Injectable;
125
+ break;
126
+ case 'Input':
127
+ factory = core_1.Input;
128
+ break;
129
+ case 'Output':
130
+ factory = core_1.Output;
131
+ break;
132
+ default:
133
+ throw new Error(`Unknown decorator type: ${name}`);
134
+ }
135
+ return decorator instanceof factory || decorator.ngMetadataName === name;
136
+ };
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const common_1 = require("@angular/common");
4
+ const core_1 = require("@angular/core");
5
+ const platform_browser_1 = require("@angular/platform-browser");
6
+ const animations_1 = require("@angular/platform-browser/animations");
7
+ const PropertyExtractor_1 = require("./PropertyExtractor");
8
+ const test_module_1 = require("../__testfixtures__/test.module");
9
+ const TEST_TOKEN = new core_1.InjectionToken('testToken');
10
+ const TestTokenProvider = { provide: TEST_TOKEN, useValue: 123 };
11
+ const TestService = (0, core_1.Injectable)()(class {
12
+ });
13
+ const TestComponent1 = (0, core_1.Component)({})(class {
14
+ });
15
+ const TestComponent2 = (0, core_1.Component)({})(class {
16
+ });
17
+ const StandaloneTestComponent = (0, core_1.Component)({ standalone: true })(class {
18
+ });
19
+ const TestDirective = (0, core_1.Directive)({})(class {
20
+ });
21
+ const TestModuleWithDeclarations = (0, core_1.NgModule)({ declarations: [TestComponent1] })(class {
22
+ });
23
+ const TestModuleWithImportsAndProviders = (0, core_1.NgModule)({
24
+ imports: [TestModuleWithDeclarations],
25
+ providers: [TestTokenProvider],
26
+ })(class {
27
+ });
28
+ const analyzeMetadata = (metadata, component) => {
29
+ return new PropertyExtractor_1.PropertyExtractor(metadata, component);
30
+ };
31
+ const extractImports = (metadata, component) => {
32
+ const { imports } = new PropertyExtractor_1.PropertyExtractor(metadata, component);
33
+ return imports;
34
+ };
35
+ const extractDeclarations = (metadata, component) => {
36
+ const { declarations } = new PropertyExtractor_1.PropertyExtractor(metadata, component);
37
+ return declarations;
38
+ };
39
+ const extractProviders = (metadata, component) => {
40
+ const { providers } = new PropertyExtractor_1.PropertyExtractor(metadata, component);
41
+ return providers;
42
+ };
43
+ const extractSingletons = (metadata, component) => {
44
+ const { singletons } = new PropertyExtractor_1.PropertyExtractor(metadata, component);
45
+ return singletons;
46
+ };
47
+ describe('PropertyExtractor', () => {
48
+ describe('analyzeMetadata', () => {
49
+ it('should remove BrowserModule', () => {
50
+ const metadata = {
51
+ imports: [platform_browser_1.BrowserModule],
52
+ };
53
+ const { imports, providers, singletons } = analyzeMetadata(metadata);
54
+ expect(imports.flat(Number.MAX_VALUE)).toEqual([common_1.CommonModule]);
55
+ expect(providers.flat(Number.MAX_VALUE)).toEqual([]);
56
+ expect(singletons.flat(Number.MAX_VALUE)).toEqual([]);
57
+ });
58
+ it('should remove BrowserAnimationsModule and use its providers instead', () => {
59
+ const metadata = {
60
+ imports: [animations_1.BrowserAnimationsModule],
61
+ };
62
+ const { imports, providers, singletons } = analyzeMetadata(metadata);
63
+ expect(imports.flat(Number.MAX_VALUE)).toEqual([common_1.CommonModule]);
64
+ expect(providers.flat(Number.MAX_VALUE)).toEqual([]);
65
+ expect(singletons.flat(Number.MAX_VALUE)).toEqual((0, animations_1.provideAnimations)());
66
+ });
67
+ it('should remove NoopAnimationsModule and use its providers instead', () => {
68
+ const metadata = {
69
+ imports: [animations_1.NoopAnimationsModule],
70
+ };
71
+ const { imports, providers, singletons } = analyzeMetadata(metadata);
72
+ expect(imports.flat(Number.MAX_VALUE)).toEqual([common_1.CommonModule]);
73
+ expect(providers.flat(Number.MAX_VALUE)).toEqual([]);
74
+ expect(singletons.flat(Number.MAX_VALUE)).toEqual((0, animations_1.provideNoopAnimations)());
75
+ });
76
+ it('should remove Browser/Animations modules recursively', () => {
77
+ const metadata = {
78
+ imports: [animations_1.BrowserAnimationsModule, platform_browser_1.BrowserModule],
79
+ };
80
+ const { imports, providers, singletons } = analyzeMetadata(metadata);
81
+ expect(imports.flat(Number.MAX_VALUE)).toEqual([common_1.CommonModule]);
82
+ expect(providers.flat(Number.MAX_VALUE)).toEqual([]);
83
+ expect(singletons.flat(Number.MAX_VALUE)).toEqual((0, animations_1.provideAnimations)());
84
+ });
85
+ it('should not destructure Angular official module', () => {
86
+ const metadata = {
87
+ imports: [test_module_1.WithOfficialModule],
88
+ };
89
+ const { imports, providers, singletons } = analyzeMetadata(metadata);
90
+ expect(imports.flat(Number.MAX_VALUE)).toEqual([common_1.CommonModule, test_module_1.WithOfficialModule]);
91
+ expect(providers.flat(Number.MAX_VALUE)).toEqual([]);
92
+ expect(singletons.flat(Number.MAX_VALUE)).toEqual([]);
93
+ });
94
+ });
95
+ describe('extractImports', () => {
96
+ it('should return Angular official modules', () => {
97
+ const imports = extractImports({ imports: [TestModuleWithImportsAndProviders] });
98
+ expect(imports).toEqual([common_1.CommonModule, TestModuleWithImportsAndProviders]);
99
+ });
100
+ it('should return standalone components', () => {
101
+ const imports = extractImports({
102
+ imports: [TestModuleWithImportsAndProviders],
103
+ }, StandaloneTestComponent);
104
+ expect(imports).toEqual([
105
+ common_1.CommonModule,
106
+ TestModuleWithImportsAndProviders,
107
+ StandaloneTestComponent,
108
+ ]);
109
+ });
110
+ });
111
+ describe('extractDeclarations', () => {
112
+ it('should return an array of declarations that contains `storyComponent`', () => {
113
+ const declarations = extractDeclarations({ declarations: [TestComponent1] }, TestComponent2);
114
+ expect(declarations).toEqual([TestComponent1, TestComponent2]);
115
+ });
116
+ });
117
+ describe('analyzeDecorators', () => {
118
+ it('isStandalone should be false', () => {
119
+ const { isStandalone } = PropertyExtractor_1.PropertyExtractor.analyzeDecorators(TestComponent1);
120
+ expect(isStandalone).toBe(false);
121
+ });
122
+ it('isStandalone should be true', () => {
123
+ const { isStandalone } = PropertyExtractor_1.PropertyExtractor.analyzeDecorators(StandaloneTestComponent);
124
+ expect(isStandalone).toBe(true);
125
+ });
126
+ });
127
+ describe('extractProviders', () => {
128
+ it('should return an array of providers', () => {
129
+ const providers = extractProviders({
130
+ providers: [TestService],
131
+ });
132
+ expect(providers).toEqual([TestService]);
133
+ });
134
+ it('should return an array of singletons extracted', () => {
135
+ const singeltons = extractSingletons({
136
+ imports: [animations_1.BrowserAnimationsModule],
137
+ });
138
+ expect(singeltons).toEqual((0, animations_1.provideAnimations)());
139
+ });
140
+ });
141
+ });
@@ -2,5 +2,5 @@ import './globals';
2
2
  export { render, renderToCanvas } from './render';
3
3
  export { decorateStory as applyDecorators } from './decorateStory';
4
4
  export declare const parameters: {
5
- framework: "angular";
5
+ renderer: "angular";
6
6
  };
@@ -7,4 +7,4 @@ Object.defineProperty(exports, "render", { enumerable: true, get: function () {
7
7
  Object.defineProperty(exports, "renderToCanvas", { enumerable: true, get: function () { return render_1.renderToCanvas; } });
8
8
  var decorateStory_1 = require("./decorateStory");
9
9
  Object.defineProperty(exports, "applyDecorators", { enumerable: true, get: function () { return decorateStory_1.decorateStory; } });
10
- exports.parameters = { framework: 'angular' };
10
+ exports.parameters = { renderer: 'angular' };
@@ -19,7 +19,7 @@ exports.default = decorateStory;
19
19
  exports.decorateStory = decorateStory;
20
20
  const prepareMain = (story, context) => {
21
21
  let { template } = story;
22
- const component = story.component ?? context.component;
22
+ const { component } = context;
23
23
  const userDefinedTemplate = !hasNoTemplate(template);
24
24
  if (!userDefinedTemplate && component) {
25
25
  template = (0, ComputesTemplateFromComponent_1.computesTemplateFromComponent)(component, story.props, '');
@@ -1,20 +1,18 @@
1
1
  "use strict";
2
- /* eslint-disable no-underscore-dangle */
3
- /* global window */
4
2
  Object.defineProperty(exports, "__esModule", { value: true });
5
3
  exports.extractComponentDescription = exports.extractArgTypes = exports.extractArgTypesFromData = exports.extractType = exports.findComponentByName = exports.checkValidCompodocJson = exports.checkValidComponentOrDirective = exports.getCompodocJson = exports.setCompodocJson = exports.isMethod = void 0;
4
+ /* eslint-disable no-underscore-dangle */
5
+ const global_1 = require("@storybook/global");
6
6
  const client_logger_1 = require("@storybook/client-logger");
7
7
  const isMethod = (methodOrProp) => {
8
8
  return methodOrProp.args !== undefined;
9
9
  };
10
10
  exports.isMethod = isMethod;
11
11
  const setCompodocJson = (compodocJson) => {
12
- // @ts-expect-error (Converted from ts-ignore)
13
- window.__STORYBOOK_COMPODOC_JSON__ = compodocJson;
12
+ global_1.global.__STORYBOOK_COMPODOC_JSON__ = compodocJson;
14
13
  };
15
14
  exports.setCompodocJson = setCompodocJson;
16
- // @ts-expect-error (Converted from ts-ignore)
17
- const getCompodocJson = () => window.__STORYBOOK_COMPODOC_JSON__;
15
+ const getCompodocJson = () => global_1.global.__STORYBOOK_COMPODOC_JSON__;
18
16
  exports.getCompodocJson = getCompodocJson;
19
17
  const checkValidComponentOrDirective = (component) => {
20
18
  if (!component.name) {
@@ -167,7 +165,7 @@ const extractDefaultValueFromComments = (property, value) => {
167
165
  let commentValue = value;
168
166
  property.jsdoctags.forEach((tag) => {
169
167
  if (['default', 'defaultvalue'].includes(tag.tagName.escapedText)) {
170
- const dom = new window.DOMParser().parseFromString(tag.comment, 'text/html');
168
+ const dom = new global_1.global.DOMParser().parseFromString(tag.comment, 'text/html');
171
169
  commentValue = dom.body.textContent;
172
170
  }
173
171
  });
@@ -6,8 +6,7 @@ const compodoc_1 = require("./compodoc");
6
6
  const sourceDecorator_1 = require("./sourceDecorator");
7
7
  exports.parameters = {
8
8
  docs: {
9
- // probably set this to true by default once it's battle-tested
10
- inlineStories: false,
9
+ story: { inline: true },
11
10
  extractArgTypes: compodoc_1.extractArgTypes,
12
11
  extractComponentDescription: compodoc_1.extractComponentDescription,
13
12
  source: {
@@ -31,7 +31,8 @@ const sourceDecorator = (storyFn, context) => {
31
31
  let toEmit;
32
32
  (0, preview_api_1.useEffect)(() => {
33
33
  if (toEmit) {
34
- channel.emit(docs_tools_1.SNIPPET_RENDERED, context.id, toEmit, 'angular');
34
+ const { id, args } = context;
35
+ channel.emit(docs_tools_1.SNIPPET_RENDERED, { id, args, source: toEmit, format: 'angular' });
35
36
  }
36
37
  });
37
38
  if (component && !userDefinedTemplate) {
@@ -13,14 +13,6 @@
13
13
  *
14
14
  * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
15
15
  */
16
- /** *************************************************************************************************
17
- * BROWSER POLYFILLS
18
- */
19
- /** IE9, IE10 and IE11 requires all of the following polyfills. * */
20
- /** IE10 and IE11 requires the following for NgClass support on SVG elements */
21
- /** Evergreen browsers require these. * */
22
- import 'core-js/es/reflect';
23
- import 'core-js/proposals/reflect-metadata';
24
16
  /**
25
17
  * Required to support Web Animations `@angular/animation`.
26
18
  * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
@@ -1,9 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const global_1 = __importDefault(require("global"));
3
+ const global_1 = require("@storybook/global");
7
4
  /**
8
5
  * This file includes polyfills needed by Angular and is loaded before the app.
9
6
  * You can add your own extra polyfills to this file.
@@ -19,29 +16,6 @@ const global_1 = __importDefault(require("global"));
19
16
  *
20
17
  * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
21
18
  */
22
- /** *************************************************************************************************
23
- * BROWSER POLYFILLS
24
- */
25
- /** IE9, IE10 and IE11 requires all of the following polyfills. * */
26
- // import 'core-js/es6/symbol';
27
- // import 'core-js/es6/object';
28
- // import 'core-js/es6/function';
29
- // import 'core-js/es6/parse-int';
30
- // import 'core-js/es6/parse-float';
31
- // import 'core-js/es6/number';
32
- // import 'core-js/es6/math';
33
- // import 'core-js/es6/string';
34
- // import 'core-js/es6/date';
35
- // import 'core-js/es6/array';
36
- // import 'core-js/es6/regexp';
37
- // import 'core-js/es6/map';
38
- // import 'core-js/es6/weak-map';
39
- // import 'core-js/es6/set';
40
- /** IE10 and IE11 requires the following for NgClass support on SVG elements */
41
- // import 'classlist.js'; // Run `npm install --save classlist.js`.
42
- /** Evergreen browsers require these. * */
43
- require("core-js/es/reflect");
44
- require("core-js/proposals/reflect-metadata");
45
19
  /**
46
20
  * Required to support Web Animations `@angular/animation`.
47
21
  * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
@@ -63,5 +37,4 @@ require("zone.js/dist/zone"); // Included with Angular CLI.
63
37
  * Need to import at least one locale-data with intl.
64
38
  */
65
39
  // import 'intl/locale-data/jsonp/en';
66
- const { window: globalWindow } = global_1.default;
67
- globalWindow.STORYBOOK_ENV = 'angular';
40
+ global_1.global.STORYBOOK_ENV = 'angular';
@@ -22,15 +22,15 @@ const core_client_1 = require("@storybook/core-client");
22
22
  const render_1 = require("./render");
23
23
  const decorateStory_1 = __importDefault(require("./decorateStory"));
24
24
  __exportStar(require("./public-types"), exports);
25
- const FRAMEWORK = 'angular';
25
+ const RENDERER = 'angular';
26
26
  const api = (0, core_client_1.start)(render_1.renderToCanvas, { decorateStory: decorateStory_1.default, render: render_1.render });
27
27
  const storiesOf = (kind, m) => {
28
28
  return api.clientApi.storiesOf(kind, m).addParameters({
29
- framework: FRAMEWORK,
29
+ renderer: RENDERER,
30
30
  });
31
31
  };
32
32
  exports.storiesOf = storiesOf;
33
- const configure = (...args) => api.configure(FRAMEWORK, ...args);
33
+ const configure = (...args) => api.configure(RENDERER, ...args);
34
34
  exports.configure = configure;
35
35
  exports.forceReRender = api.forceReRender;
36
36
  exports.raw = api.clientApi.raw;
@@ -1,4 +1,4 @@
1
- import { AnnotatedStoryFn, Args, ComponentAnnotations, DecoratorFunction, LoaderFunction, StoryAnnotations, StoryContext as GenericStoryContext, StrictArgs } from '@storybook/types';
1
+ import { AnnotatedStoryFn, Args, ComponentAnnotations, DecoratorFunction, LoaderFunction, StoryAnnotations, StoryContext as GenericStoryContext, StrictArgs, ProjectAnnotations } from '@storybook/types';
2
2
  import { AngularRenderer } from './types';
3
3
  export type { Args, ArgTypes, Parameters, StrictArgs } from '@storybook/types';
4
4
  export type { Parameters as AngularParameters } from './types';
@@ -34,3 +34,4 @@ export type Story<TArgs = Args> = StoryFn<TArgs>;
34
34
  export type Decorator<TArgs = StrictArgs> = DecoratorFunction<AngularRenderer, TArgs>;
35
35
  export type Loader<TArgs = StrictArgs> = LoaderFunction<AngularRenderer, TArgs>;
36
36
  export type StoryContext<TArgs = StrictArgs> = GenericStoryContext<AngularRenderer, TArgs>;
37
+ export type Preview = ProjectAnnotations<AngularRenderer>;
@@ -1,3 +1,4 @@
1
+ import '@angular/compiler';
1
2
  import { RenderContext, ArgsStoryFn } from '@storybook/types';
2
3
  import { AngularRenderer } from './types';
3
4
  import { RendererFactory } from './angular-beta/RendererFactory';
@@ -1,17 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderToCanvas = exports.render = exports.rendererFactory = void 0;
4
- const helpers_1 = require("./angular/helpers");
4
+ require("@angular/compiler");
5
5
  const RendererFactory_1 = require("./angular-beta/RendererFactory");
6
6
  exports.rendererFactory = new RendererFactory_1.RendererFactory();
7
7
  const render = (props) => ({ props });
8
8
  exports.render = render;
9
9
  async function renderToCanvas({ storyFn, showMain, forceRemount, storyContext: { parameters, component }, id, }, element) {
10
10
  showMain();
11
- if (parameters.angularLegacyRendering) {
12
- (0, helpers_1.renderNgApp)(storyFn, !forceRemount);
13
- return;
14
- }
15
11
  const renderer = await exports.rendererFactory.getRendererInstance(id, element);
16
12
  await renderer.render({
17
13
  storyFnAngular: storyFn(),
@@ -5,6 +5,7 @@ export interface NgModuleMetadata {
5
5
  imports?: any[];
6
6
  schemas?: any[];
7
7
  providers?: any[];
8
+ singletons?: any[];
8
9
  }
9
10
  export interface ICollection {
10
11
  [p: string]: any;
@@ -29,8 +30,6 @@ export interface AngularRenderer extends WebRenderer {
29
30
  storyResult: StoryFnAngularReturnType;
30
31
  }
31
32
  export type Parameters = DefaultParameters & {
32
- /** Uses legacy angular rendering engine that use dynamic component */
33
- angularLegacyRendering?: boolean;
34
33
  bootstrapModuleOptions?: unknown;
35
34
  };
36
35
  export type StoryContext = DefaultStoryContext<AngularRenderer> & {
package/dist/index.mjs ADDED
@@ -0,0 +1,13 @@
1
+ export * from './client/index';
2
+ export * from './types';
3
+ /*
4
+ * ATTENTION:
5
+ * - moduleMetadata
6
+ * - NgModuleMetadata
7
+ * - ICollection
8
+ *
9
+ * These typings are coped out of decorators.d.ts and types.d.ts in order to fix a bug with tsc
10
+ * It was imported out of dist before which was not the proper way of exporting public API
11
+ *
12
+ * This can be fixed by migrating app/angular to typescript
13
+ */
@@ -0,0 +1,26 @@
1
+ import path from 'path';
2
+ export const addons = [
3
+ require.resolve('./server/framework-preset-angular-cli'),
4
+ require.resolve('./server/framework-preset-angular-ivy'),
5
+ require.resolve('./server/framework-preset-angular-docs'),
6
+ ];
7
+ export const previewAnnotations = (entries = []) => [
8
+ ...entries,
9
+ require.resolve('./client/config'),
10
+ ];
11
+ export const core = async (config, options) => {
12
+ const framework = await options.presets.apply('framework');
13
+ return {
14
+ ...config,
15
+ builder: {
16
+ name: path.dirname(require.resolve(path.join('@storybook/builder-webpack5', 'package.json'))),
17
+ options: typeof framework === 'string' ? {} : framework.options.builder || {},
18
+ },
19
+ };
20
+ };
21
+ export const typescript = async (config) => {
22
+ return {
23
+ ...config,
24
+ skipBabel: true,
25
+ };
26
+ };
@@ -1,4 +1,5 @@
1
+ export { storyPropsProvider } from './client/angular-beta/StorybookProvider';
1
2
  export { computesTemplateSourceFromComponent } from './client/angular-beta/ComputesTemplateFromComponent';
2
3
  export { rendererFactory } from './client/render';
3
4
  export { AbstractRenderer } from './client/angular-beta/AbstractRenderer';
4
- export { getStorybookModuleMetadata } from './client/angular-beta/StorybookModule';
5
+ export { getApplication } from './client/angular-beta/StorybookModule';
package/dist/renderer.js CHANGED
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getStorybookModuleMetadata = exports.AbstractRenderer = exports.rendererFactory = exports.computesTemplateSourceFromComponent = void 0;
3
+ exports.getApplication = exports.AbstractRenderer = exports.rendererFactory = exports.computesTemplateSourceFromComponent = exports.storyPropsProvider = void 0;
4
+ var StorybookProvider_1 = require("./client/angular-beta/StorybookProvider");
5
+ Object.defineProperty(exports, "storyPropsProvider", { enumerable: true, get: function () { return StorybookProvider_1.storyPropsProvider; } });
4
6
  var ComputesTemplateFromComponent_1 = require("./client/angular-beta/ComputesTemplateFromComponent");
5
7
  Object.defineProperty(exports, "computesTemplateSourceFromComponent", { enumerable: true, get: function () { return ComputesTemplateFromComponent_1.computesTemplateSourceFromComponent; } });
6
8
  var render_1 = require("./client/render");
@@ -8,4 +10,4 @@ Object.defineProperty(exports, "rendererFactory", { enumerable: true, get: funct
8
10
  var AbstractRenderer_1 = require("./client/angular-beta/AbstractRenderer");
9
11
  Object.defineProperty(exports, "AbstractRenderer", { enumerable: true, get: function () { return AbstractRenderer_1.AbstractRenderer; } });
10
12
  var StorybookModule_1 = require("./client/angular-beta/StorybookModule");
11
- Object.defineProperty(exports, "getStorybookModuleMetadata", { enumerable: true, get: function () { return StorybookModule_1.getStorybookModuleMetadata; } });
13
+ Object.defineProperty(exports, "getApplication", { enumerable: true, get: function () { return StorybookModule_1.getApplication; } });
@@ -0,0 +1,5 @@
1
+ export { storyPropsProvider } from './client/angular-beta/StorybookProvider';
2
+ export { computesTemplateSourceFromComponent } from './client/angular-beta/ComputesTemplateFromComponent';
3
+ export { rendererFactory } from './client/render';
4
+ export { AbstractRenderer } from './client/angular-beta/AbstractRenderer';
5
+ export { getApplication } from './client/angular-beta/StorybookModule';
@@ -1,3 +1,4 @@
1
1
  import webpack from 'webpack';
2
2
  import { PresetOptions } from './preset-options';
3
- export declare function webpackFinal(baseConfig: webpack.Configuration, options: PresetOptions): Promise<webpack.Configuration>;
3
+ export declare function webpackFinal(baseConfig: webpack.Configuration, options: PresetOptions): Promise<any>;
4
+ export declare const migrationToBuilderReferrenceMessage: string;