@storybook/angular 6.4.0-alpha.7 → 6.4.0-beta.1

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 (85) hide show
  1. package/dist/ts3.4/builders/build-storybook/index.d.ts +2 -1
  2. package/dist/ts3.4/builders/start-storybook/index.d.ts +2 -1
  3. package/dist/ts3.4/builders/utils/build-standalone-errors-handler.d.ts +1 -0
  4. package/dist/ts3.4/client/preview/angular/helpers.d.ts +3 -3
  5. package/dist/ts3.4/client/preview/angular-beta/AbstractRenderer.d.ts +3 -1
  6. package/dist/ts3.4/client/preview/angular-beta/CanvasRenderer.d.ts +1 -0
  7. package/dist/ts3.4/client/preview/angular-beta/DocsRenderer.d.ts +1 -0
  8. package/dist/ts3.4/client/preview/angular-beta/StorybookModule.d.ts +2 -3
  9. package/dist/ts3.4/client/preview/config.d.ts +4 -0
  10. package/dist/ts3.4/client/preview/decorateStory.d.ts +3 -3
  11. package/dist/ts3.4/client/preview/decorators.d.ts +5 -4
  12. package/dist/ts3.4/client/preview/index.d.ts +3 -2
  13. package/dist/ts3.4/client/preview/render.d.ts +5 -11
  14. package/dist/ts3.4/client/preview/types-6-0.d.ts +25 -9
  15. package/dist/ts3.4/client/preview/types-7-0.d.ts +9 -0
  16. package/dist/ts3.4/client/preview/types.d.ts +2 -1
  17. package/dist/ts3.4/renderer.d.ts +0 -1
  18. package/dist/ts3.4/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.d.ts +1 -0
  19. package/dist/ts3.4/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.d.ts +1 -0
  20. package/dist/ts3.4/server/__mocks-ng-workspace__/without-tsConfig/src/main.d.ts +1 -0
  21. package/dist/ts3.4/server/framework-preset-angular-cli.d.ts +1 -0
  22. package/dist/ts3.9/builders/build-storybook/index.d.ts +2 -1
  23. package/dist/ts3.9/builders/build-storybook/index.js +35 -16
  24. package/dist/ts3.9/builders/build-storybook/schema.json +14 -2
  25. package/dist/ts3.9/builders/start-storybook/index.d.ts +2 -1
  26. package/dist/ts3.9/builders/start-storybook/index.js +35 -16
  27. package/dist/ts3.9/builders/start-storybook/schema.json +14 -2
  28. package/dist/ts3.9/builders/utils/build-standalone-errors-handler.d.ts +1 -0
  29. package/dist/ts3.9/builders/utils/build-standalone-errors-handler.js +36 -0
  30. package/dist/ts3.9/client/preview/angular/helpers.d.ts +3 -3
  31. package/dist/ts3.9/client/preview/angular-beta/AbstractRenderer.d.ts +3 -1
  32. package/dist/ts3.9/client/preview/angular-beta/AbstractRenderer.js +5 -3
  33. package/dist/ts3.9/client/preview/angular-beta/CanvasRenderer.d.ts +1 -0
  34. package/dist/ts3.9/client/preview/angular-beta/ComputesTemplateFromComponent.js +3 -1
  35. package/dist/ts3.9/client/preview/angular-beta/DocsRenderer.d.ts +1 -0
  36. package/dist/ts3.9/client/preview/angular-beta/StorybookModule.d.ts +2 -3
  37. package/dist/ts3.9/client/preview/angular-beta/StorybookModule.js +2 -2
  38. package/dist/ts3.9/client/preview/angular-beta/utils/NgComponentAnalyzer.js +12 -1
  39. package/dist/ts3.9/client/preview/config.d.ts +4 -0
  40. package/dist/ts3.9/client/preview/config.js +7 -0
  41. package/dist/ts3.9/client/preview/decorateStory.d.ts +3 -3
  42. package/dist/ts3.9/client/preview/decorateStory.js +7 -28
  43. package/dist/ts3.9/client/preview/decorators.d.ts +5 -4
  44. package/dist/ts3.9/client/preview/index.d.ts +3 -2
  45. package/dist/ts3.9/client/preview/index.js +2 -3
  46. package/dist/ts3.9/client/preview/render.d.ts +5 -11
  47. package/dist/ts3.9/client/preview/render.js +10 -9
  48. package/dist/ts3.9/client/preview/types-6-0.d.ts +25 -9
  49. package/dist/ts3.9/client/preview/types-7-0.d.ts +9 -0
  50. package/dist/ts3.9/client/preview/types-7-0.js +2 -0
  51. package/dist/ts3.9/client/preview/types.d.ts +2 -1
  52. package/dist/ts3.9/renderer.d.ts +0 -1
  53. package/dist/ts3.9/renderer.js +0 -2
  54. package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/angular.json +28 -0
  55. package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.d.ts +1 -0
  56. package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.js +5 -0
  57. package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/tsconfig.lib.json +25 -0
  58. package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/tsconfig.json +13 -0
  59. package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.d.ts +1 -0
  60. package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.js +5 -0
  61. package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/tsconfig.lib.json +25 -0
  62. package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/tsconfig.json +13 -0
  63. package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/angular.json +16 -0
  64. package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/src/main.d.ts +1 -0
  65. package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/src/main.js +5 -0
  66. package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/src/tsconfig.app.json +9 -0
  67. package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/tsconfig.json +13 -0
  68. package/dist/ts3.9/server/angular-devkit-build-webpack.js +2 -2
  69. package/dist/ts3.9/server/build.js +58 -1
  70. package/dist/ts3.9/server/framework-preset-angular-cli.d.ts +1 -0
  71. package/dist/ts3.9/server/framework-preset-angular-cli.js +20 -11
  72. package/package.json +13 -10
  73. package/preset.js +7 -0
  74. package/standalone.d.ts +2 -1
  75. package/dist/ts3.4/client/preview/angular-beta/ElementRendererService.d.ts +0 -17
  76. package/dist/ts3.4/client/preview/angular-beta/RendererService.d.ts +0 -35
  77. package/dist/ts3.4/element-renderer.d.ts +0 -1
  78. package/dist/ts3.9/client/preview/angular-beta/ElementRendererService.d.ts +0 -17
  79. package/dist/ts3.9/client/preview/angular-beta/ElementRendererService.js +0 -115
  80. package/dist/ts3.9/client/preview/angular-beta/RendererService.d.ts +0 -35
  81. package/dist/ts3.9/client/preview/angular-beta/RendererService.js +0 -170
  82. package/dist/ts3.9/element-renderer.d.ts +0 -1
  83. package/dist/ts3.9/element-renderer.js +0 -4
  84. package/element-renderer.d.ts +0 -1
  85. package/element-renderer.js +0 -1
@@ -2,7 +2,8 @@ import { BuilderOutput } from '@angular-devkit/architect';
2
2
  import { JsonObject } from '@angular-devkit/core';
3
3
  import { CLIOptions } from '@storybook/core-common';
4
4
  export declare type StorybookBuilderOptions = JsonObject & {
5
- browserTarget: string;
5
+ browserTarget?: string | null;
6
+ tsConfig?: string;
6
7
  compodoc: boolean;
7
8
  compodocArgs: string[];
8
9
  } & Pick<CLIOptions, 'staticDir' | 'outputDir' | 'configDir' | 'loglevel' | 'quiet' | 'docs'>;
@@ -2,7 +2,8 @@ import { BuilderOutput } from '@angular-devkit/architect';
2
2
  import { JsonObject } from '@angular-devkit/core';
3
3
  import { CLIOptions } from '@storybook/core-common';
4
4
  export declare type StorybookBuilderOptions = JsonObject & {
5
- browserTarget: string;
5
+ browserTarget?: string | null;
6
+ tsConfig?: string;
6
7
  compodoc: boolean;
7
8
  compodocArgs: string[];
8
9
  } & Pick<CLIOptions, 'port' | 'host' | 'staticDir' | 'configDir' | 'https' | 'sslCa' | 'sslCert' | 'sslKey' | 'smokeTest' | 'ci' | 'quiet' | 'docs'>;
@@ -0,0 +1 @@
1
+ export declare const buildStandaloneErrorHandler: (error: any) => any;
@@ -1,8 +1,8 @@
1
- import { StoryFn } from '@storybook/addons';
2
- import { StoryFnAngularReturnType } from '../types';
1
+ import { PartialStoryFn } from '@storybook/csf';
2
+ import { AngularFramework } from '../types-6-0';
3
3
  declare global {
4
4
  interface Window {
5
5
  NODE_ENV: 'string' | 'development' | undefined;
6
6
  }
7
7
  }
8
- export declare const renderNgApp: (storyFn: StoryFn<StoryFnAngularReturnType>, forced: boolean) => void;
8
+ export declare const renderNgApp: (storyFn: PartialStoryFn<AngularFramework>, forced: boolean) => void;
@@ -28,11 +28,13 @@ export declare abstract class AbstractRenderer {
28
28
  * @param forced {boolean} If :
29
29
  * - true render will only use the StoryFn `props' in storyProps observable that will update sotry's component/template properties. Improves performance without reloading the whole module&component if props changes
30
30
  * - false fully recharges or initializes angular module & component
31
+ * @param component {Component}
31
32
  * @param parameters {Parameters}
32
33
  */
33
- render({ storyFnAngular, forced, parameters, targetDOMNode, }: {
34
+ render({ storyFnAngular, forced, parameters, component, targetDOMNode, }: {
34
35
  storyFnAngular: StoryFnAngularReturnType;
35
36
  forced: boolean;
37
+ component?: any;
36
38
  parameters: Parameters;
37
39
  targetDOMNode: HTMLElement;
38
40
  }): Promise<void>;
@@ -6,6 +6,7 @@ export declare class CanvasRenderer extends AbstractRenderer {
6
6
  storyFnAngular: StoryFnAngularReturnType;
7
7
  forced: boolean;
8
8
  parameters: Parameters;
9
+ component: any;
9
10
  targetDOMNode: HTMLElement;
10
11
  }): Promise<void>;
11
12
  beforeFullRender(): Promise<void>;
@@ -5,6 +5,7 @@ export declare class DocsRenderer extends AbstractRenderer {
5
5
  render(options: {
6
6
  storyFnAngular: StoryFnAngularReturnType;
7
7
  forced: boolean;
8
+ component: any;
8
9
  parameters: Parameters;
9
10
  targetDOMNode: HTMLElement;
10
11
  }): Promise<void>;
@@ -1,10 +1,9 @@
1
1
  import { NgModule, Type } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import { ICollection, StoryFnAngularReturnType } from '../types';
4
- import { Parameters } from '../types-6-0';
5
- export declare const getStorybookModuleMetadata: ({ storyFnAngular, parameters, targetSelector, }: {
4
+ export declare const getStorybookModuleMetadata: ({ storyFnAngular, component: annotatedComponent, targetSelector, }: {
6
5
  storyFnAngular: StoryFnAngularReturnType;
7
- parameters: Parameters;
6
+ component?: any;
8
7
  targetSelector: string;
9
8
  }, storyProps$: Subject<ICollection>) => NgModule;
10
9
  export declare const createStorybookModule: (ngModule: NgModule) => Type<unknown>;
@@ -0,0 +1,4 @@
1
+ export { render, renderToDOM } from './render';
2
+ export declare const parameters: {
3
+ framework: string;
4
+ };
@@ -1,3 +1,3 @@
1
- import { DecoratorFunction, StoryFn } from '@storybook/addons';
2
- import { StoryFnAngularReturnType } from './types';
3
- export default function decorateStory(mainStoryFn: StoryFn<StoryFnAngularReturnType>, decorators: DecoratorFunction<StoryFnAngularReturnType>[]): StoryFn<StoryFnAngularReturnType>;
1
+ import { DecoratorFunction, LegacyStoryFn } from '@storybook/csf';
2
+ import { AngularFramework } from './types-6-0';
3
+ export default function decorateStory(mainStoryFn: LegacyStoryFn<AngularFramework>, decorators: DecoratorFunction<AngularFramework>[]): LegacyStoryFn<AngularFramework>;
@@ -1,5 +1,6 @@
1
1
  import { Type } from '@angular/core';
2
- import { DecoratorFunction, StoryContext } from '@storybook/addons';
3
- import { ICollection, NgModuleMetadata, StoryFnAngularReturnType } from './types';
4
- export declare const moduleMetadata: (metadata: Partial<NgModuleMetadata>) => DecoratorFunction<StoryFnAngularReturnType>;
5
- export declare const componentWrapperDecorator: (element: Type<unknown> | ((story: string) => string), props?: ICollection | ((storyContext: StoryContext) => ICollection)) => DecoratorFunction<StoryFnAngularReturnType>;
2
+ import { DecoratorFunction, StoryContext } from '@storybook/csf';
3
+ import { ICollection, NgModuleMetadata } from './types';
4
+ import { AngularFramework } from './types-6-0';
5
+ export declare const moduleMetadata: (metadata: Partial<NgModuleMetadata>) => DecoratorFunction<AngularFramework>;
6
+ export declare const componentWrapperDecorator: (element: Type<unknown> | ((story: string) => string), props?: ICollection | ((storyContext: StoryContext<AngularFramework>) => ICollection)) => DecoratorFunction<AngularFramework>;
@@ -2,8 +2,9 @@
2
2
  /// <reference types="node" />
3
3
  import { ClientStoryApi, Loadable } from '@storybook/addons';
4
4
  import './globals';
5
- import { IStorybookSection, StoryFnAngularReturnType } from './types';
6
- interface ClientApi extends ClientStoryApi<StoryFnAngularReturnType> {
5
+ import { IStorybookSection } from './types';
6
+ import { AngularFramework } from './types-6-0';
7
+ interface ClientApi extends ClientStoryApi<AngularFramework['storyResult']> {
7
8
  setAddon(addon: any): void;
8
9
  configure(loader: Loadable, module: NodeModule): void;
9
10
  getStorybook(): IStorybookSection[];
@@ -1,13 +1,7 @@
1
- import { StoryFn } from '@storybook/addons';
2
- import { StoryFnAngularReturnType } from './types';
3
- import { Parameters } from './types-6-0';
1
+ import { RenderContext } from '@storybook/store';
2
+ import { ArgsStoryFn } from '@storybook/csf';
3
+ import { AngularFramework } from './types-6-0';
4
4
  import { RendererFactory } from './angular-beta/RendererFactory';
5
5
  export declare const rendererFactory: RendererFactory;
6
- export default function renderMain({ storyFn, showMain, forceRender, parameters, targetDOMNode, id, }: {
7
- storyFn: StoryFn<StoryFnAngularReturnType>;
8
- showMain: () => void;
9
- forceRender: boolean;
10
- parameters: Parameters;
11
- targetDOMNode: HTMLElement;
12
- id: string;
13
- }): Promise<void>;
6
+ export declare const render: ArgsStoryFn<AngularFramework>;
7
+ export declare function renderToDOM({ storyFn, showMain, forceRemount, storyContext: { parameters, component }, id, }: RenderContext<AngularFramework>, element: HTMLElement): Promise<void>;
@@ -1,26 +1,42 @@
1
- import { Args as DefaultArgs, Annotations, BaseMeta, BaseStory, Parameters as DefaultParameters, StoryContext as DefaultStoryContext } from '@storybook/addons';
1
+ import { Args, Parameters as DefaultParameters, StoryContext as DefaultStoryContext, ComponentAnnotations, StoryAnnotations, AnnotatedStoryFn } from '@storybook/csf';
2
2
  import { StoryFnAngularReturnType } from './types';
3
- export { Args, ArgTypes } from '@storybook/addons';
4
- declare type AngularComponent = any;
5
- declare type AngularReturnType = StoryFnAngularReturnType;
3
+ export { Args, ArgTypes } from '@storybook/csf';
4
+ export declare type AngularFramework = {
5
+ component: any;
6
+ storyResult: StoryFnAngularReturnType;
7
+ };
6
8
  /**
7
9
  * Metadata to configure the stories for a component.
8
10
  *
9
11
  * @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
10
12
  */
11
- export declare type Meta<Args = DefaultArgs> = BaseMeta<AngularComponent> & Annotations<Args, AngularReturnType>;
13
+ export declare type Meta<TArgs = Args> = ComponentAnnotations<AngularFramework, TArgs>;
14
+ /**
15
+ * Story function that represents a CSFv2 component example.
16
+ *
17
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
18
+ */
19
+ export declare type StoryFn<TArgs = Args> = AnnotatedStoryFn<AngularFramework, TArgs>;
12
20
  /**
13
- * Story function that represents a component example.
21
+ * Story function that represents a CSFv3 component example.
14
22
  *
15
23
  * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
16
24
  */
17
- export declare type Story<Args = DefaultArgs> = BaseStory<Args, AngularReturnType> & Annotations<Args, AngularReturnType>;
25
+ export declare type StoryObj<TArgs = Args> = StoryAnnotations<AngularFramework, TArgs>;
26
+ /**
27
+ * Story function that represents a CSFv2 component example.
28
+ *
29
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
30
+ *
31
+ * NOTE that in Storybook 7.0, this type will be renamed to `StoryFn` and replaced by the current `StoryObj` type.
32
+ *
33
+ */
34
+ export declare type Story<TArgs = Args> = StoryFn<TArgs>;
18
35
  export declare type Parameters = DefaultParameters & {
19
36
  /** Uses legacy angular rendering engine that use dynamic component */
20
37
  angularLegacyRendering?: boolean;
21
- component: unknown;
22
38
  bootstrapModuleOptions?: unknown;
23
39
  };
24
- export declare type StoryContext = DefaultStoryContext & {
40
+ export declare type StoryContext = DefaultStoryContext<AngularFramework> & {
25
41
  parameters: Parameters;
26
42
  };
@@ -0,0 +1,9 @@
1
+ import { Args } from '@storybook/csf';
2
+ import { StoryObj } from './types-6-0';
3
+ export { StoryFn, StoryObj, Meta } from './types-6-0';
4
+ /**
5
+ * Story function that represents a CSFv3 component example.
6
+ *
7
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
8
+ */
9
+ export declare type Story<TArgs = Args> = StoryObj<TArgs>;
@@ -10,7 +10,7 @@ export interface ICollection {
10
10
  }
11
11
  export interface IStorybookStory {
12
12
  name: string;
13
- render: () => any;
13
+ render: (context: any) => any;
14
14
  }
15
15
  export interface IStorybookSection {
16
16
  kind: string;
@@ -25,4 +25,5 @@ export interface StoryFnAngularReturnType {
25
25
  moduleMetadata?: NgModuleMetadata;
26
26
  template?: string;
27
27
  styles?: string[];
28
+ userDefinedTemplate?: boolean;
28
29
  }
@@ -1,5 +1,4 @@
1
1
  export { computesTemplateSourceFromComponent } from './client/preview/angular-beta/ComputesTemplateFromComponent';
2
- export { RendererService } from './client/preview/angular-beta/RendererService';
3
2
  export { rendererFactory } from './client/preview/render';
4
3
  export { AbstractRenderer } from './client/preview/angular-beta/AbstractRenderer';
5
4
  export { getStorybookModuleMetadata } from './client/preview/angular-beta/StorybookModule';
@@ -0,0 +1 @@
1
+ export declare const not = "empty";
@@ -0,0 +1 @@
1
+ export declare const not = "empty";
@@ -3,6 +3,7 @@ import TsconfigPathsPlugin from 'tsconfig-paths-webpack-plugin';
3
3
  import { Options as CoreOptions } from '@storybook/core-common';
4
4
  export declare type Options = CoreOptions & {
5
5
  angularBrowserTarget?: string;
6
+ tsConfig?: string;
6
7
  };
7
8
  export declare function webpackFinal(baseConfig: webpack.Configuration, options: Options): Promise<webpack.Configuration | {
8
9
  entry: any[];
@@ -2,7 +2,8 @@ import { BuilderOutput } from '@angular-devkit/architect';
2
2
  import { JsonObject } from '@angular-devkit/core';
3
3
  import { CLIOptions } from '@storybook/core-common';
4
4
  export declare type StorybookBuilderOptions = JsonObject & {
5
- browserTarget: string;
5
+ browserTarget?: string | null;
6
+ tsConfig?: string;
6
7
  compodoc: boolean;
7
8
  compodocArgs: string[];
8
9
  } & Pick<CLIOptions, 'staticDir' | 'outputDir' | 'configDir' | 'loglevel' | 'quiet' | 'docs'>;
@@ -46,6 +46,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
47
  }
48
48
  };
49
+ var __rest = (this && this.__rest) || function (s, e) {
50
+ var t = {};
51
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
+ t[p] = s[p];
53
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
+ t[p[i]] = s[p[i]];
57
+ }
58
+ return t;
59
+ };
49
60
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
61
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
62
  };
@@ -56,40 +67,48 @@ var operators_1 = require("rxjs/operators");
56
67
  // eslint-disable-next-line import/no-extraneous-dependencies
57
68
  var standalone_1 = __importDefault(require("@storybook/angular/standalone"));
58
69
  var run_compodoc_1 = require("../utils/run-compodoc");
70
+ var build_standalone_errors_handler_1 = require("../utils/build-standalone-errors-handler");
59
71
  exports.default = architect_1.createBuilder(commandBuilder);
60
72
  function commandBuilder(options, context) {
61
73
  return rxjs_1.from(setup(options, context)).pipe(operators_1.switchMap(function (_a) {
62
- var browserOptions = _a.browserOptions;
63
- return options.compodoc
64
- ? run_compodoc_1.runCompodoc({ compodocArgs: options.compodocArgs, tsconfig: browserOptions.tsConfig }, context)
74
+ var tsConfig = _a.tsConfig;
75
+ var runCompodoc$ = options.compodoc
76
+ ? run_compodoc_1.runCompodoc({ compodocArgs: options.compodocArgs, tsconfig: tsConfig }, context).pipe(operators_1.mapTo({ tsConfig: tsConfig }))
65
77
  : rxjs_1.of({});
66
- }), operators_1.map(function () { return (__assign(__assign({}, options), { angularBrowserTarget: options.browserTarget })); }), operators_1.switchMap(function (standaloneOptions) { return runInstance(__assign(__assign({}, standaloneOptions), { mode: 'static' })); }), operators_1.map(function () {
78
+ return runCompodoc$.pipe(operators_1.mapTo({ tsConfig: tsConfig }));
79
+ }), operators_1.map(function (_a) {
80
+ var tsConfig = _a.tsConfig;
81
+ var browserTarget = options.browserTarget, otherOptions = __rest(options, ["browserTarget"]);
82
+ return __assign(__assign({}, otherOptions), { angularBrowserTarget: browserTarget, tsConfig: tsConfig });
83
+ }), operators_1.switchMap(function (standaloneOptions) { return runInstance(__assign(__assign({}, standaloneOptions), { mode: 'static' })); }), operators_1.map(function () {
67
84
  return { success: true };
68
85
  }));
69
86
  }
70
87
  function setup(options, context) {
88
+ var _a, _b;
71
89
  return __awaiter(this, void 0, void 0, function () {
72
- var browserTarget, browserOptions, _a, _b, _c;
73
- return __generator(this, function (_d) {
74
- switch (_d.label) {
90
+ var browserOptions, browserTarget, _c, _d, _e;
91
+ return __generator(this, function (_f) {
92
+ switch (_f.label) {
75
93
  case 0:
94
+ if (!options.browserTarget) return [3 /*break*/, 4];
76
95
  browserTarget = architect_1.targetFromTargetString(options.browserTarget);
77
- _b = (_a = context).validateOptions;
96
+ _d = (_c = context).validateOptions;
78
97
  return [4 /*yield*/, context.getTargetOptions(browserTarget)];
79
98
  case 1:
80
- _c = [_d.sent()];
99
+ _e = [_f.sent()];
81
100
  return [4 /*yield*/, context.getBuilderNameForTarget(browserTarget)];
82
- case 2: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent()]))];
101
+ case 2: return [4 /*yield*/, _d.apply(_c, _e.concat([_f.sent()]))];
83
102
  case 3:
84
- browserOptions = _d.sent();
85
- return [2 /*return*/, {
86
- browserOptions: browserOptions,
87
- browserTarget: browserTarget,
88
- }];
103
+ browserOptions = _f.sent();
104
+ _f.label = 4;
105
+ case 4: return [2 /*return*/, {
106
+ tsConfig: (_b = (_a = options.tsConfig) !== null && _a !== void 0 ? _a : browserOptions.tsConfig) !== null && _b !== void 0 ? _b : undefined,
107
+ }];
89
108
  }
90
109
  });
91
110
  });
92
111
  }
93
112
  function runInstance(options) {
94
- return rxjs_1.from(standalone_1.default(options));
113
+ return rxjs_1.from(standalone_1.default(options)).pipe(operators_1.catchError(function (error) { return rxjs_1.throwError(build_standalone_errors_handler_1.buildStandaloneErrorHandler(error)); }));
95
114
  }
@@ -7,7 +7,12 @@
7
7
  "browserTarget": {
8
8
  "type": "string",
9
9
  "description": "Build target to be served in project-name:builder:config format. Should generally target on the builder: '@angular-devkit/build-angular:browser'. Useful for Storybook to use options (styles, assets, ...).",
10
- "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$"
10
+ "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$",
11
+ "default": null
12
+ },
13
+ "tsConfig": {
14
+ "type": "string",
15
+ "description": "The full path for the TypeScript configuration file, relative to the current workspace."
11
16
  },
12
17
  "staticDir": {
13
18
  "type": "array",
@@ -56,5 +61,12 @@
56
61
  }
57
62
  },
58
63
  "additionalProperties": false,
59
- "required": ["browserTarget"]
64
+ "oneOf": [
65
+ {
66
+ "required": ["browserTarget"]
67
+ },
68
+ {
69
+ "required": ["tsConfig"]
70
+ }
71
+ ]
60
72
  }
@@ -2,7 +2,8 @@ import { BuilderOutput } from '@angular-devkit/architect';
2
2
  import { JsonObject } from '@angular-devkit/core';
3
3
  import { CLIOptions } from '@storybook/core-common';
4
4
  export declare type StorybookBuilderOptions = JsonObject & {
5
- browserTarget: string;
5
+ browserTarget?: string | null;
6
+ tsConfig?: string;
6
7
  compodoc: boolean;
7
8
  compodocArgs: string[];
8
9
  } & Pick<CLIOptions, 'port' | 'host' | 'staticDir' | 'configDir' | 'https' | 'sslCa' | 'sslCert' | 'sslKey' | 'smokeTest' | 'ci' | 'quiet' | 'docs'>;
@@ -46,6 +46,17 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
46
46
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
47
  }
48
48
  };
49
+ var __rest = (this && this.__rest) || function (s, e) {
50
+ var t = {};
51
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
52
+ t[p] = s[p];
53
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
54
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
55
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
56
+ t[p[i]] = s[p[i]];
57
+ }
58
+ return t;
59
+ };
49
60
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
61
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
62
  };
@@ -56,36 +67,44 @@ var operators_1 = require("rxjs/operators");
56
67
  // eslint-disable-next-line import/no-extraneous-dependencies
57
68
  var standalone_1 = __importDefault(require("@storybook/angular/standalone"));
58
69
  var run_compodoc_1 = require("../utils/run-compodoc");
70
+ var build_standalone_errors_handler_1 = require("../utils/build-standalone-errors-handler");
59
71
  exports.default = architect_1.createBuilder(commandBuilder);
60
72
  function commandBuilder(options, context) {
61
73
  return rxjs_1.from(setup(options, context)).pipe(operators_1.switchMap(function (_a) {
62
- var browserOptions = _a.browserOptions;
63
- return options.compodoc
64
- ? run_compodoc_1.runCompodoc({ compodocArgs: options.compodocArgs, tsconfig: browserOptions.tsConfig }, context)
74
+ var tsConfig = _a.tsConfig;
75
+ var runCompodoc$ = options.compodoc
76
+ ? run_compodoc_1.runCompodoc({ compodocArgs: options.compodocArgs, tsconfig: tsConfig }, context).pipe(operators_1.mapTo({ tsConfig: tsConfig }))
65
77
  : rxjs_1.of({});
66
- }), operators_1.map(function () { return (__assign(__assign({}, options), { angularBrowserTarget: options.browserTarget })); }), operators_1.switchMap(function (standaloneOptions) { return runInstance(standaloneOptions); }), operators_1.map(function () {
78
+ return runCompodoc$.pipe(operators_1.mapTo({ tsConfig: tsConfig }));
79
+ }), operators_1.map(function (_a) {
80
+ var tsConfig = _a.tsConfig;
81
+ var browserTarget = options.browserTarget, otherOptions = __rest(options, ["browserTarget"]);
82
+ return __assign(__assign({}, otherOptions), { angularBrowserTarget: browserTarget, tsConfig: tsConfig });
83
+ }), operators_1.switchMap(function (standaloneOptions) { return runInstance(standaloneOptions); }), operators_1.map(function () {
67
84
  return { success: true };
68
85
  }));
69
86
  }
70
87
  function setup(options, context) {
88
+ var _a, _b;
71
89
  return __awaiter(this, void 0, void 0, function () {
72
- var browserTarget, browserOptions, _a, _b, _c;
73
- return __generator(this, function (_d) {
74
- switch (_d.label) {
90
+ var browserOptions, browserTarget, _c, _d, _e;
91
+ return __generator(this, function (_f) {
92
+ switch (_f.label) {
75
93
  case 0:
94
+ if (!options.browserTarget) return [3 /*break*/, 4];
76
95
  browserTarget = architect_1.targetFromTargetString(options.browserTarget);
77
- _b = (_a = context).validateOptions;
96
+ _d = (_c = context).validateOptions;
78
97
  return [4 /*yield*/, context.getTargetOptions(browserTarget)];
79
98
  case 1:
80
- _c = [_d.sent()];
99
+ _e = [_f.sent()];
81
100
  return [4 /*yield*/, context.getBuilderNameForTarget(browserTarget)];
82
- case 2: return [4 /*yield*/, _b.apply(_a, _c.concat([_d.sent()]))];
101
+ case 2: return [4 /*yield*/, _d.apply(_c, _e.concat([_f.sent()]))];
83
102
  case 3:
84
- browserOptions = _d.sent();
85
- return [2 /*return*/, {
86
- browserOptions: browserOptions,
87
- browserTarget: browserTarget,
88
- }];
103
+ browserOptions = _f.sent();
104
+ _f.label = 4;
105
+ case 4: return [2 /*return*/, {
106
+ tsConfig: (_b = (_a = options.tsConfig) !== null && _a !== void 0 ? _a : browserOptions.tsConfig) !== null && _b !== void 0 ? _b : undefined,
107
+ }];
89
108
  }
90
109
  });
91
110
  });
@@ -93,6 +112,6 @@ function setup(options, context) {
93
112
  function runInstance(options) {
94
113
  return new rxjs_1.Observable(function (observer) {
95
114
  // This Observable intentionally never complete, leaving the process running ;)
96
- standalone_1.default(options).then(function () { return observer.next(); }, function (error) { return observer.error(error); });
115
+ standalone_1.default(options).then(function () { return observer.next(); }, function (error) { return observer.error(build_standalone_errors_handler_1.buildStandaloneErrorHandler(error)); });
97
116
  });
98
117
  }
@@ -7,7 +7,12 @@
7
7
  "browserTarget": {
8
8
  "type": "string",
9
9
  "description": "Build target to be served in project-name:builder:config format. Should generally target on the builder: '@angular-devkit/build-angular:browser'. Useful for Storybook to use options (styles, assets, ...).",
10
- "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$"
10
+ "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$",
11
+ "default": null
12
+ },
13
+ "tsConfig": {
14
+ "type": "string",
15
+ "description": "The full path for the TypeScript configuration file, relative to the current workspace."
11
16
  },
12
17
  "port": {
13
18
  "type": "number",
@@ -83,5 +88,12 @@
83
88
  }
84
89
  },
85
90
  "additionalProperties": false,
86
- "required": ["browserTarget"]
91
+ "oneOf": [
92
+ {
93
+ "required": ["browserTarget"]
94
+ },
95
+ {
96
+ "required": ["tsConfig"]
97
+ }
98
+ ]
87
99
  }
@@ -0,0 +1 @@
1
+ export declare const buildStandaloneErrorHandler: (error: any) => any;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.buildStandaloneErrorHandler = void 0;
11
+ var node_logger_1 = require("@storybook/node-logger");
12
+ var ts_dedent_1 = __importDefault(require("ts-dedent"));
13
+ exports.buildStandaloneErrorHandler = function (error) {
14
+ var _a;
15
+ // Duplicate code for Standalone error handling
16
+ // Source: https://github.com/storybookjs/storybook/blob/39c7ba09ad84fbd466f9c25d5b92791a5450b9f6/lib/core-server/src/build-dev.ts#L136
17
+ node_logger_1.instance.heading = '';
18
+ if (error instanceof Error) {
19
+ if (error.error) {
20
+ node_logger_1.logger.error(error.error);
21
+ }
22
+ else if (error.stats && error.stats.compilation.errors) {
23
+ error.stats.compilation.errors.forEach(function (e) { return node_logger_1.logger.plain(e); });
24
+ }
25
+ else {
26
+ node_logger_1.logger.error(error);
27
+ }
28
+ }
29
+ else if ((_a = error.compilation) === null || _a === void 0 ? void 0 : _a.errors) {
30
+ error.compilation.errors.forEach(function (e) { return node_logger_1.logger.plain(e); });
31
+ }
32
+ node_logger_1.logger.line();
33
+ return error.close
34
+ ? ts_dedent_1.default(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n FATAL broken build!, will close the process,\n Fix the error below and restart storybook.\n "], ["\n FATAL broken build!, will close the process,\n Fix the error below and restart storybook.\n "]))) : ts_dedent_1.default(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n Broken build, fix the error above.\n You may need to refresh the browser.\n "], ["\n Broken build, fix the error above.\n You may need to refresh the browser.\n "])));
35
+ };
36
+ var templateObject_1, templateObject_2;
@@ -1,8 +1,8 @@
1
- import { StoryFn } from '@storybook/addons';
2
- import { StoryFnAngularReturnType } from '../types';
1
+ import { PartialStoryFn } from '@storybook/csf';
2
+ import { AngularFramework } from '../types-6-0';
3
3
  declare global {
4
4
  interface Window {
5
5
  NODE_ENV: 'string' | 'development' | undefined;
6
6
  }
7
7
  }
8
- export declare const renderNgApp: (storyFn: StoryFn<StoryFnAngularReturnType>, forced: boolean) => void;
8
+ export declare const renderNgApp: (storyFn: PartialStoryFn<AngularFramework>, forced: boolean) => void;
@@ -28,11 +28,13 @@ export declare abstract class AbstractRenderer {
28
28
  * @param forced {boolean} If :
29
29
  * - true render will only use the StoryFn `props' in storyProps observable that will update sotry's component/template properties. Improves performance without reloading the whole module&component if props changes
30
30
  * - false fully recharges or initializes angular module & component
31
+ * @param component {Component}
31
32
  * @param parameters {Parameters}
32
33
  */
33
- render({ storyFnAngular, forced, parameters, targetDOMNode, }: {
34
+ render({ storyFnAngular, forced, parameters, component, targetDOMNode, }: {
34
35
  storyFnAngular: StoryFnAngularReturnType;
35
36
  forced: boolean;
37
+ component?: any;
36
38
  parameters: Parameters;
37
39
  targetDOMNode: HTMLElement;
38
40
  }): Promise<void>;
@@ -60,6 +60,7 @@ exports.AbstractRenderer = void 0;
60
60
  var core_1 = require("@angular/core");
61
61
  var platform_browser_dynamic_1 = require("@angular/platform-browser-dynamic");
62
62
  var rxjs_1 = require("rxjs");
63
+ var telejson_1 = require("telejson");
63
64
  var StorybookModule_1 = require("./StorybookModule");
64
65
  // platform must be init only if render is called at least once
65
66
  var platformRef;
@@ -113,11 +114,12 @@ var AbstractRenderer = /** @class */ (function () {
113
114
  * @param forced {boolean} If :
114
115
  * - true render will only use the StoryFn `props' in storyProps observable that will update sotry's component/template properties. Improves performance without reloading the whole module&component if props changes
115
116
  * - false fully recharges or initializes angular module & component
117
+ * @param component {Component}
116
118
  * @param parameters {Parameters}
117
119
  */
118
120
  AbstractRenderer.prototype.render = function (_a) {
119
121
  var _b;
120
- var storyFnAngular = _a.storyFnAngular, forced = _a.forced, parameters = _a.parameters, targetDOMNode = _a.targetDOMNode;
122
+ var storyFnAngular = _a.storyFnAngular, forced = _a.forced, parameters = _a.parameters, component = _a.component, targetDOMNode = _a.targetDOMNode;
121
123
  return __awaiter(this, void 0, void 0, function () {
122
124
  var targetSelector, newStoryProps$, moduleMetadata;
123
125
  return __generator(this, function (_c) {
@@ -125,7 +127,7 @@ var AbstractRenderer = /** @class */ (function () {
125
127
  case 0:
126
128
  targetSelector = "" + this.storyId;
127
129
  newStoryProps$ = new rxjs_1.BehaviorSubject(storyFnAngular.props);
128
- moduleMetadata = StorybookModule_1.getStorybookModuleMetadata({ storyFnAngular: storyFnAngular, parameters: parameters, targetSelector: targetSelector }, newStoryProps$);
130
+ moduleMetadata = StorybookModule_1.getStorybookModuleMetadata({ storyFnAngular: storyFnAngular, component: component, targetSelector: targetSelector }, newStoryProps$);
129
131
  if (!this.fullRendererRequired({
130
132
  storyFnAngular: storyFnAngular,
131
133
  moduleMetadata: moduleMetadata,
@@ -166,7 +168,7 @@ var AbstractRenderer = /** @class */ (function () {
166
168
  var previousStoryRenderInfo = this.previousStoryRenderInfo;
167
169
  var currentStoryRender = {
168
170
  storyFnAngular: storyFnAngular,
169
- moduleMetadataSnapshot: JSON.stringify(moduleMetadata),
171
+ moduleMetadataSnapshot: telejson_1.stringify(moduleMetadata),
170
172
  };
171
173
  this.previousStoryRenderInfo = currentStoryRender;
172
174
  if (
@@ -6,6 +6,7 @@ export declare class CanvasRenderer extends AbstractRenderer {
6
6
  storyFnAngular: StoryFnAngularReturnType;
7
7
  forced: boolean;
8
8
  parameters: Parameters;
9
+ component: any;
9
10
  targetDOMNode: HTMLElement;
10
11
  }): Promise<void>;
11
12
  beforeFullRender(): Promise<void>;