@storybook/angular 6.4.0-beta.24 → 6.4.0-beta.28
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.
- package/dist/ts3.4/builders/build-storybook/index.d.ts +12 -0
- package/dist/ts3.4/builders/start-storybook/index.d.ts +12 -0
- package/dist/ts3.4/builders/utils/build-standalone-errors-handler.d.ts +1 -0
- package/dist/ts3.4/builders/utils/run-compodoc.d.ts +6 -0
- package/dist/ts3.4/client/index.d.ts +4 -0
- package/dist/ts3.4/client/preview/angular/app.token.d.ts +3 -0
- package/dist/ts3.4/client/preview/angular/components/app.component.d.ts +38 -0
- package/dist/ts3.4/client/preview/angular/helpers.d.ts +8 -0
- package/dist/ts3.4/client/preview/angular-beta/AbstractRenderer.d.ts +44 -0
- package/dist/ts3.4/client/preview/angular-beta/CanvasRenderer.d.ts +14 -0
- package/dist/ts3.4/client/preview/angular-beta/ComputesTemplateFromComponent.d.ts +17 -0
- package/dist/ts3.4/client/preview/angular-beta/DocsRenderer.d.ts +14 -0
- package/dist/ts3.4/client/preview/angular-beta/RendererFactory.d.ts +11 -0
- package/dist/ts3.4/client/preview/angular-beta/StorybookModule.d.ts +9 -0
- package/dist/ts3.4/client/preview/angular-beta/StorybookProvider.d.ts +5 -0
- package/dist/ts3.4/client/preview/angular-beta/StorybookWrapperComponent.d.ts +9 -0
- package/dist/ts3.4/client/preview/angular-beta/utils/NgComponentAnalyzer.d.ts +26 -0
- package/dist/ts3.4/client/preview/angular-beta/utils/NgModulesAnalyzer.d.ts +6 -0
- package/dist/ts3.4/client/preview/angular-polyfills.d.ts +41 -0
- package/dist/ts3.4/client/preview/config.d.ts +5 -0
- package/dist/ts3.4/client/preview/decorateStory.d.ts +4 -0
- package/dist/ts3.4/client/preview/decorators.d.ts +6 -0
- package/dist/ts3.4/client/preview/globals.d.ts +1 -0
- package/dist/ts3.4/client/preview/index.d.ts +25 -0
- package/dist/ts3.4/client/preview/render.d.ts +7 -0
- package/dist/ts3.4/client/preview/types-6-0.d.ts +42 -0
- package/dist/ts3.4/client/preview/types-7-0.d.ts +9 -0
- package/dist/ts3.4/client/preview/types.d.ts +29 -0
- package/dist/ts3.4/demo/button.component.d.ts +5 -0
- package/dist/ts3.4/demo/welcome.component.d.ts +4 -0
- package/dist/ts3.4/public_api.d.ts +1 -0
- package/dist/ts3.4/renderer.d.ts +4 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/minimal-config/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/some-config/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/with-nx/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/with-nx-workspace/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/with-options-styles/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.d.ts +1 -0
- package/dist/ts3.4/server/__mocks-ng-workspace__/without-tsConfig/src/main.d.ts +1 -0
- package/dist/ts3.4/server/angular-devkit-build-webpack.d.ts +30 -0
- package/dist/ts3.4/server/angular-read-workspace.d.ts +13 -0
- package/dist/ts3.4/server/build.d.ts +1 -0
- package/dist/ts3.4/server/create-fork-ts-checker-plugin.d.ts +3 -0
- package/dist/ts3.4/server/framework-preset-angular-cli.d.ts +73 -0
- package/dist/ts3.4/server/framework-preset-angular-ivy.d.ts +10 -0
- package/dist/ts3.4/server/framework-preset-angular.d.ts +4 -0
- package/dist/ts3.4/server/index.d.ts +1 -0
- package/dist/ts3.4/server/ngx-template-loader/index.d.ts +1 -0
- package/dist/ts3.4/server/options.d.ts +3 -0
- package/dist/ts3.4/server/preset.d.ts +3 -0
- package/dist/ts3.4/server/ts_config.d.ts +2 -0
- package/dist/ts3.4/server/utils/filter-out-styling-rules.d.ts +2 -0
- package/dist/ts3.4/server/utils/module-is-available.d.ts +1 -0
- package/dist/ts3.4/server/utils/normalize-asset-patterns.d.ts +6 -0
- package/dist/ts3.4/server/utils/normalize-optimization.d.ts +3 -0
- package/dist/ts3.4/types/index.d.ts +6 -0
- package/dist/ts3.9/builders/build-storybook/index.d.ts +12 -0
- package/dist/ts3.9/builders/build-storybook/index.js +114 -0
- package/dist/ts3.9/builders/build-storybook/schema.json +72 -0
- package/dist/ts3.9/builders/builders.json +14 -0
- package/dist/ts3.9/builders/start-storybook/index.d.ts +12 -0
- package/dist/ts3.9/builders/start-storybook/index.js +117 -0
- package/dist/ts3.9/builders/start-storybook/schema.json +99 -0
- package/dist/ts3.9/builders/utils/build-standalone-errors-handler.d.ts +1 -0
- package/dist/ts3.9/builders/utils/build-standalone-errors-handler.js +36 -0
- package/dist/ts3.9/builders/utils/run-compodoc.d.ts +6 -0
- package/dist/ts3.9/builders/utils/run-compodoc.js +45 -0
- package/dist/ts3.9/client/index.d.ts +4 -0
- package/dist/ts3.9/client/index.js +28 -0
- package/dist/ts3.9/client/preview/angular/app.token.d.ts +3 -0
- package/dist/ts3.9/client/preview/angular/app.token.js +5 -0
- package/dist/ts3.9/client/preview/angular/components/app.component.d.ts +38 -0
- package/dist/ts3.9/client/preview/angular/components/app.component.js +146 -0
- package/dist/ts3.9/client/preview/angular/helpers.d.ts +8 -0
- package/dist/ts3.9/client/preview/angular/helpers.js +165 -0
- package/dist/ts3.9/client/preview/angular-beta/AbstractRenderer.d.ts +44 -0
- package/dist/ts3.9/client/preview/angular-beta/AbstractRenderer.js +215 -0
- package/dist/ts3.9/client/preview/angular-beta/CanvasRenderer.d.ts +14 -0
- package/dist/ts3.9/client/preview/angular-beta/CanvasRenderer.js +97 -0
- package/dist/ts3.9/client/preview/angular-beta/ComputesTemplateFromComponent.d.ts +17 -0
- package/dist/ts3.9/client/preview/angular-beta/ComputesTemplateFromComponent.js +112 -0
- package/dist/ts3.9/client/preview/angular-beta/DocsRenderer.d.ts +14 -0
- package/dist/ts3.9/client/preview/angular-beta/DocsRenderer.js +145 -0
- package/dist/ts3.9/client/preview/angular-beta/RendererFactory.d.ts +11 -0
- package/dist/ts3.9/client/preview/angular-beta/RendererFactory.js +101 -0
- package/dist/ts3.9/client/preview/angular-beta/StorybookModule.d.ts +9 -0
- package/dist/ts3.9/client/preview/angular-beta/StorybookModule.js +78 -0
- package/dist/ts3.9/client/preview/angular-beta/StorybookProvider.d.ts +5 -0
- package/dist/ts3.9/client/preview/angular-beta/StorybookProvider.js +27 -0
- package/dist/ts3.9/client/preview/angular-beta/StorybookWrapperComponent.d.ts +9 -0
- package/dist/ts3.9/client/preview/angular-beta/StorybookWrapperComponent.js +155 -0
- package/dist/ts3.9/client/preview/angular-beta/utils/NgComponentAnalyzer.d.ts +26 -0
- package/dist/ts3.9/client/preview/angular-beta/utils/NgComponentAnalyzer.js +124 -0
- package/dist/ts3.9/client/preview/angular-beta/utils/NgModulesAnalyzer.d.ts +6 -0
- package/dist/ts3.9/client/preview/angular-beta/utils/NgModulesAnalyzer.js +44 -0
- package/dist/ts3.9/client/preview/angular-polyfills.d.ts +41 -0
- package/dist/ts3.9/client/preview/angular-polyfills.js +61 -0
- package/dist/ts3.9/client/preview/config.d.ts +5 -0
- package/dist/ts3.9/client/preview/config.js +9 -0
- package/dist/ts3.9/client/preview/decorateStory.d.ts +4 -0
- package/dist/ts3.9/client/preview/decorateStory.js +64 -0
- package/dist/ts3.9/client/preview/decorators.d.ts +6 -0
- package/dist/ts3.9/client/preview/decorators.js +49 -0
- package/dist/ts3.9/client/preview/globals.d.ts +1 -0
- package/dist/ts3.9/client/preview/globals.js +9 -0
- package/dist/ts3.9/client/preview/index.d.ts +25 -0
- package/dist/ts3.9/client/preview/index.js +40 -0
- package/dist/ts3.9/client/preview/render.d.ts +7 -0
- package/dist/ts3.9/client/preview/render.js +73 -0
- package/dist/ts3.9/client/preview/types-6-0.d.ts +42 -0
- package/dist/ts3.9/client/preview/types-6-0.js +2 -0
- package/dist/ts3.9/client/preview/types-7-0.d.ts +9 -0
- package/dist/ts3.9/client/preview/types-7-0.js +2 -0
- package/dist/ts3.9/client/preview/types.d.ts +29 -0
- package/dist/ts3.9/client/preview/types.js +2 -0
- package/dist/ts3.9/demo/button.component.d.ts +5 -0
- package/dist/ts3.9/demo/button.component.js +37 -0
- package/dist/ts3.9/demo/welcome.component.d.ts +4 -0
- package/dist/ts3.9/demo/welcome.component.js +32 -0
- package/dist/ts3.9/public_api.d.ts +1 -0
- package/dist/ts3.9/public_api.js +24 -0
- package/dist/ts3.9/renderer.d.ts +4 -0
- package/dist/ts3.9/renderer.js +10 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/empty-projects-entry/angular.json +4 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/minimal-config/angular.json +17 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/minimal-config/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/minimal-config/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/minimal-config/src/tsconfig.app.json +9 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/minimal-config/tsconfig.json +13 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/some-config/angular.json +18 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/some-config/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/some-config/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/some-config/src/tsconfig.app.json +9 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/some-config/tsconfig.json +13 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-angularBrowserTarget/angular.json +60 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-angularBrowserTarget/src/tsconfig.app.json +9 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-angularBrowserTarget/tsconfig.json +13 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/angular.json +28 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/projects/pattern-lib/tsconfig.lib.json +25 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-lib/tsconfig.json +13 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/angular.json +17 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/nx.json +3 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/src/tsconfig.app.json +8 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx/tsconfig.json +14 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/nx.json +3 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/src/tsconfig.app.json +8 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/tsconfig.json +14 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-nx-workspace/workspace.json +17 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-options-styles/angular.json +17 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-options-styles/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-options-styles/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-options-styles/src/tsconfig.app.json +9 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/with-options-styles/tsconfig.json +13 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-architect-build/angular.json +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-architect-build-options/angular.json +11 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-compatible-projects/angular.json +7 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/angular.json +3 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/projects/pattern-lib/tsconfig.lib.json +25 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-projects-entry/tsconfig.json +13 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/angular.json +16 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/src/main.d.ts +1 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/src/main.js +5 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/src/tsconfig.app.json +9 -0
- package/dist/ts3.9/server/__mocks-ng-workspace__/without-tsConfig/tsconfig.json +13 -0
- package/dist/ts3.9/server/angular-devkit-build-webpack.d.ts +30 -0
- package/dist/ts3.9/server/angular-devkit-build-webpack.js +213 -0
- package/dist/ts3.9/server/angular-read-workspace.d.ts +13 -0
- package/dist/ts3.9/server/angular-read-workspace.js +118 -0
- package/dist/ts3.9/server/build.d.ts +1 -0
- package/dist/ts3.9/server/build.js +65 -0
- package/dist/ts3.9/server/create-fork-ts-checker-plugin.d.ts +3 -0
- package/dist/ts3.9/server/create-fork-ts-checker-plugin.js +19 -0
- package/dist/ts3.9/server/framework-preset-angular-cli.d.ts +73 -0
- package/dist/ts3.9/server/framework-preset-angular-cli.js +159 -0
- package/dist/ts3.9/server/framework-preset-angular-ivy.d.ts +10 -0
- package/dist/ts3.9/server/framework-preset-angular-ivy.js +111 -0
- package/dist/ts3.9/server/framework-preset-angular.d.ts +4 -0
- package/dist/ts3.9/server/framework-preset-angular.js +74 -0
- package/dist/ts3.9/server/index.d.ts +1 -0
- package/dist/ts3.9/server/index.js +8 -0
- package/dist/ts3.9/server/ngx-template-loader/index.d.ts +1 -0
- package/dist/ts3.9/server/ngx-template-loader/index.js +46 -0
- package/dist/ts3.9/server/options.d.ts +3 -0
- package/dist/ts3.9/server/options.js +8 -0
- package/dist/ts3.9/server/preset.d.ts +3 -0
- package/dist/ts3.9/server/preset.js +21 -0
- package/dist/ts3.9/server/ts_config.d.ts +2 -0
- package/dist/ts3.9/server/ts_config.js +28 -0
- package/dist/ts3.9/server/utils/filter-out-styling-rules.d.ts +2 -0
- package/dist/ts3.9/server/utils/filter-out-styling-rules.js +16 -0
- package/dist/ts3.9/server/utils/module-is-available.d.ts +1 -0
- package/dist/ts3.9/server/utils/module-is-available.js +12 -0
- package/dist/ts3.9/server/utils/normalize-asset-patterns.d.ts +6 -0
- package/dist/ts3.9/server/utils/normalize-asset-patterns.js +79 -0
- package/dist/ts3.9/server/utils/normalize-optimization.d.ts +3 -0
- package/dist/ts3.9/server/utils/normalize-optimization.js +20 -0
- package/dist/ts3.9/types/index.d.ts +6 -0
- package/dist/ts3.9/types/index.js +2 -0
- package/package.json +9 -9
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { OnInit, ViewContainerRef, ComponentFactoryResolver, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { Observable, Subscription } from 'rxjs';
|
|
3
|
+
import { StoryFnAngularReturnType } from '../../types';
|
|
4
|
+
export declare class AppComponent implements OnInit, OnDestroy {
|
|
5
|
+
private cfr;
|
|
6
|
+
private changeDetectorRef;
|
|
7
|
+
private data;
|
|
8
|
+
target: ViewContainerRef;
|
|
9
|
+
readonly previousValues: {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
};
|
|
12
|
+
subscription: Subscription;
|
|
13
|
+
propSubscriptions: Map<any, {
|
|
14
|
+
prop: any;
|
|
15
|
+
sub: Subscription;
|
|
16
|
+
}>;
|
|
17
|
+
constructor(cfr: ComponentFactoryResolver, changeDetectorRef: ChangeDetectorRef, data: Observable<StoryFnAngularReturnType>);
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
ngOnDestroy(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Set inputs and outputs
|
|
22
|
+
*/
|
|
23
|
+
private setProps;
|
|
24
|
+
/**
|
|
25
|
+
* Manually call 'ngOnChanges' hook because angular doesn't do that for dynamic components
|
|
26
|
+
* Issue: [https://github.com/angular/angular/issues/8903]
|
|
27
|
+
*/
|
|
28
|
+
private callNgOnChangesHook;
|
|
29
|
+
/**
|
|
30
|
+
* If component implements ControlValueAccessor interface try to set ngModel
|
|
31
|
+
*/
|
|
32
|
+
private setNgModel;
|
|
33
|
+
/**
|
|
34
|
+
* Store ref to subscription for cleanup in 'ngOnDestroy' and check if
|
|
35
|
+
* observable needs to be resubscribed to, before creating a new subscription.
|
|
36
|
+
*/
|
|
37
|
+
private setPropSubscription;
|
|
38
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __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
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.AppComponent = void 0;
|
|
16
|
+
/* eslint-disable no-useless-constructor */
|
|
17
|
+
// We could use NgComponentOutlet here but there's currently no easy way
|
|
18
|
+
// to provide @Inputs and subscribe to @Outputs, see
|
|
19
|
+
// https://github.com/angular/angular/issues/15360
|
|
20
|
+
// For the time being, the ViewContainerRef approach works pretty well.
|
|
21
|
+
var core_1 = require("@angular/core");
|
|
22
|
+
var rxjs_1 = require("rxjs");
|
|
23
|
+
var operators_1 = require("rxjs/operators");
|
|
24
|
+
var app_token_1 = require("../app.token");
|
|
25
|
+
var AppComponent = /** @class */ (function () {
|
|
26
|
+
function AppComponent(cfr, changeDetectorRef, data) {
|
|
27
|
+
this.cfr = cfr;
|
|
28
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
29
|
+
this.data = data;
|
|
30
|
+
this.previousValues = {};
|
|
31
|
+
this.propSubscriptions = new Map();
|
|
32
|
+
}
|
|
33
|
+
AppComponent.prototype.ngOnInit = function () {
|
|
34
|
+
var _this = this;
|
|
35
|
+
this.data.pipe(operators_1.first()).subscribe(function (data) {
|
|
36
|
+
_this.target.clear();
|
|
37
|
+
var compFactory = _this.cfr.resolveComponentFactory(data.component);
|
|
38
|
+
var componentRef = _this.target.createComponent(compFactory);
|
|
39
|
+
var instance = componentRef.instance;
|
|
40
|
+
// For some reason, manual change detection ref is only working when getting the ref from the injector (rather than componentRef.changeDetectorRef)
|
|
41
|
+
var childChangeDetectorRef = componentRef.injector.get(core_1.ChangeDetectorRef);
|
|
42
|
+
_this.subscription = _this.data.subscribe(function (newData) {
|
|
43
|
+
_this.setProps(instance, newData);
|
|
44
|
+
childChangeDetectorRef.markForCheck();
|
|
45
|
+
// Must detect changes on the current component in order to update any changes in child component's @HostBinding properties (angular/angular#22560)
|
|
46
|
+
_this.changeDetectorRef.detectChanges();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
AppComponent.prototype.ngOnDestroy = function () {
|
|
51
|
+
this.target.clear();
|
|
52
|
+
if (this.subscription) {
|
|
53
|
+
this.subscription.unsubscribe();
|
|
54
|
+
}
|
|
55
|
+
this.propSubscriptions.forEach(function (v) {
|
|
56
|
+
if (!v.sub.closed) {
|
|
57
|
+
v.sub.unsubscribe();
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
this.propSubscriptions.clear();
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Set inputs and outputs
|
|
64
|
+
*/
|
|
65
|
+
AppComponent.prototype.setProps = function (instance, _a) {
|
|
66
|
+
var _this = this;
|
|
67
|
+
var _b = _a.props, props = _b === void 0 ? {} : _b;
|
|
68
|
+
var changes = {};
|
|
69
|
+
var hasNgOnChangesHook = !!instance.ngOnChanges;
|
|
70
|
+
Object.keys(props).forEach(function (key) {
|
|
71
|
+
var value = props[key];
|
|
72
|
+
var instanceProperty = instance[key];
|
|
73
|
+
if (!(instanceProperty instanceof core_1.EventEmitter) && value !== undefined && value !== null) {
|
|
74
|
+
// eslint-disable-next-line no-param-reassign
|
|
75
|
+
instance[key] = value;
|
|
76
|
+
if (hasNgOnChangesHook) {
|
|
77
|
+
var previousValue = _this.previousValues[key];
|
|
78
|
+
if (previousValue !== value) {
|
|
79
|
+
changes[key] = new core_1.SimpleChange(previousValue, value, !Object.prototype.hasOwnProperty.call(_this.previousValues, key));
|
|
80
|
+
_this.previousValues[key] = value;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else if (typeof value === 'function' && key !== 'ngModelChange') {
|
|
85
|
+
_this.setPropSubscription(key, instanceProperty, value);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
this.callNgOnChangesHook(instance, changes);
|
|
89
|
+
this.setNgModel(instance, props);
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Manually call 'ngOnChanges' hook because angular doesn't do that for dynamic components
|
|
93
|
+
* Issue: [https://github.com/angular/angular/issues/8903]
|
|
94
|
+
*/
|
|
95
|
+
AppComponent.prototype.callNgOnChangesHook = function (instance, changes) {
|
|
96
|
+
if (Object.keys(changes).length) {
|
|
97
|
+
instance.ngOnChanges(changes);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* If component implements ControlValueAccessor interface try to set ngModel
|
|
102
|
+
*/
|
|
103
|
+
AppComponent.prototype.setNgModel = function (instance, props) {
|
|
104
|
+
if (props.ngModel) {
|
|
105
|
+
instance.writeValue(props.ngModel);
|
|
106
|
+
}
|
|
107
|
+
if (typeof props.ngModelChange === 'function') {
|
|
108
|
+
instance.registerOnChange(props.ngModelChange);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Store ref to subscription for cleanup in 'ngOnDestroy' and check if
|
|
113
|
+
* observable needs to be resubscribed to, before creating a new subscription.
|
|
114
|
+
*/
|
|
115
|
+
AppComponent.prototype.setPropSubscription = function (key, instanceProperty, value) {
|
|
116
|
+
if (this.propSubscriptions.has(key)) {
|
|
117
|
+
var v = this.propSubscriptions.get(key);
|
|
118
|
+
if (v.prop === value) {
|
|
119
|
+
// Prop hasn't changed, so the existing subscription can stay.
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
// Now that the value has changed, unsubscribe from the previous value's subscription.
|
|
123
|
+
if (!v.sub.closed) {
|
|
124
|
+
v.sub.unsubscribe();
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
var sub = instanceProperty.subscribe(value);
|
|
128
|
+
this.propSubscriptions.set(key, { prop: value, sub: sub });
|
|
129
|
+
};
|
|
130
|
+
__decorate([
|
|
131
|
+
core_1.ViewChild('target', { read: core_1.ViewContainerRef, static: true }),
|
|
132
|
+
__metadata("design:type", core_1.ViewContainerRef)
|
|
133
|
+
], AppComponent.prototype, "target", void 0);
|
|
134
|
+
AppComponent = __decorate([
|
|
135
|
+
core_1.Component({
|
|
136
|
+
selector: 'storybook-dynamic-app-root',
|
|
137
|
+
template: '<ng-template #target></ng-template>',
|
|
138
|
+
}),
|
|
139
|
+
__param(2, core_1.Inject(app_token_1.STORY)),
|
|
140
|
+
__metadata("design:paramtypes", [core_1.ComponentFactoryResolver,
|
|
141
|
+
core_1.ChangeDetectorRef,
|
|
142
|
+
rxjs_1.Observable])
|
|
143
|
+
], AppComponent);
|
|
144
|
+
return AppComponent;
|
|
145
|
+
}());
|
|
146
|
+
exports.AppComponent = AppComponent;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PartialStoryFn } from '@storybook/csf';
|
|
2
|
+
import { AngularFramework } from '../types-6-0';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
NODE_ENV: 'string' | 'development' | undefined;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export declare const renderNgApp: (storyFn: PartialStoryFn<AngularFramework>, forced: boolean) => void;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArrays = (this && this.__spreadArrays) || function () {
|
|
3
|
+
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
|
|
4
|
+
for (var r = Array(s), k = 0, i = 0; i < il; i++)
|
|
5
|
+
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
|
|
6
|
+
r[k] = a[j];
|
|
7
|
+
return r;
|
|
8
|
+
};
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.renderNgApp = void 0;
|
|
14
|
+
// @ts-ignore
|
|
15
|
+
var global_1 = __importDefault(require("global"));
|
|
16
|
+
var core_1 = require("@angular/core");
|
|
17
|
+
var forms_1 = require("@angular/forms");
|
|
18
|
+
var platform_browser_dynamic_1 = require("@angular/platform-browser-dynamic");
|
|
19
|
+
var platform_browser_1 = require("@angular/platform-browser");
|
|
20
|
+
var rxjs_1 = require("rxjs");
|
|
21
|
+
var app_component_1 = require("./components/app.component");
|
|
22
|
+
var app_token_1 = require("./app.token");
|
|
23
|
+
var document = global_1.default.document;
|
|
24
|
+
var platform = null;
|
|
25
|
+
var promises = [];
|
|
26
|
+
var storyData = new rxjs_1.ReplaySubject(1);
|
|
27
|
+
var moduleClass = /** @class */ (function () {
|
|
28
|
+
function DynamicModule() {
|
|
29
|
+
}
|
|
30
|
+
return DynamicModule;
|
|
31
|
+
}());
|
|
32
|
+
var componentClass = /** @class */ (function () {
|
|
33
|
+
function DynamicComponent() {
|
|
34
|
+
}
|
|
35
|
+
return DynamicComponent;
|
|
36
|
+
}());
|
|
37
|
+
function storyDataFactory(data) {
|
|
38
|
+
return function (ngZone) {
|
|
39
|
+
return new rxjs_1.Observable(function (subscriber) {
|
|
40
|
+
var sub = data.subscribe(function (v) {
|
|
41
|
+
ngZone.run(function () { return subscriber.next(v); });
|
|
42
|
+
}, function (err) {
|
|
43
|
+
ngZone.run(function () { return subscriber.error(err); });
|
|
44
|
+
}, function () {
|
|
45
|
+
ngZone.run(function () { return subscriber.complete(); });
|
|
46
|
+
});
|
|
47
|
+
return function () {
|
|
48
|
+
sub.unsubscribe();
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
var getModule = function (declarations, entryComponents, bootstrap, data, moduleMetadata) {
|
|
54
|
+
// Complete last ReplaySubject and create a new one for the current module
|
|
55
|
+
storyData.complete();
|
|
56
|
+
storyData = new rxjs_1.ReplaySubject(1);
|
|
57
|
+
storyData.next(data);
|
|
58
|
+
var moduleMeta = {
|
|
59
|
+
declarations: __spreadArrays(declarations, (moduleMetadata.declarations || [])),
|
|
60
|
+
imports: __spreadArrays([platform_browser_1.BrowserModule, forms_1.FormsModule], (moduleMetadata.imports || [])),
|
|
61
|
+
providers: __spreadArrays([
|
|
62
|
+
{ provide: app_token_1.STORY, useFactory: storyDataFactory(storyData.asObservable()), deps: [core_1.NgZone] }
|
|
63
|
+
], (moduleMetadata.providers || [])),
|
|
64
|
+
entryComponents: __spreadArrays(entryComponents, (moduleMetadata.entryComponents || [])),
|
|
65
|
+
schemas: __spreadArrays((moduleMetadata.schemas || [])),
|
|
66
|
+
bootstrap: __spreadArrays(bootstrap),
|
|
67
|
+
};
|
|
68
|
+
return core_1.NgModule(moduleMeta)(moduleClass);
|
|
69
|
+
};
|
|
70
|
+
var createComponentFromTemplate = function (template, styles) {
|
|
71
|
+
return core_1.Component({
|
|
72
|
+
template: template,
|
|
73
|
+
styles: styles,
|
|
74
|
+
})(componentClass);
|
|
75
|
+
};
|
|
76
|
+
var extractNgModuleMetadata = function (importItem) {
|
|
77
|
+
var target = importItem && importItem.ngModule ? importItem.ngModule : importItem;
|
|
78
|
+
var decoratorKey = '__annotations__';
|
|
79
|
+
var decorators = Reflect &&
|
|
80
|
+
Reflect.getOwnPropertyDescriptor &&
|
|
81
|
+
Reflect.getOwnPropertyDescriptor(target, decoratorKey)
|
|
82
|
+
? Reflect.getOwnPropertyDescriptor(target, decoratorKey).value
|
|
83
|
+
: target[decoratorKey];
|
|
84
|
+
if (!decorators || decorators.length === 0) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
var ngModuleDecorator = decorators.find(function (decorator) { return decorator instanceof core_1.NgModule; });
|
|
88
|
+
if (!ngModuleDecorator) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
return ngModuleDecorator;
|
|
92
|
+
};
|
|
93
|
+
var getExistenceOfComponentInModules = function (component, declarations, imports) {
|
|
94
|
+
if (declarations && declarations.some(function (declaration) { return declaration === component; })) {
|
|
95
|
+
// Found component in declarations array
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
if (!imports) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
return imports.some(function (importItem) {
|
|
102
|
+
var extractedNgModuleMetadata = extractNgModuleMetadata(importItem);
|
|
103
|
+
if (!extractedNgModuleMetadata) {
|
|
104
|
+
// Not an NgModule
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
return getExistenceOfComponentInModules(component, extractedNgModuleMetadata.declarations, extractedNgModuleMetadata.imports);
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
var initModule = function (storyFn) {
|
|
111
|
+
var storyObj = storyFn();
|
|
112
|
+
var component = storyObj.component, template = storyObj.template, props = storyObj.props, styles = storyObj.styles, _a = storyObj.moduleMetadata, moduleMetadata = _a === void 0 ? {} : _a;
|
|
113
|
+
var isCreatingComponentFromTemplate = Boolean(template);
|
|
114
|
+
var AnnotatedComponent = isCreatingComponentFromTemplate
|
|
115
|
+
? createComponentFromTemplate(template, styles)
|
|
116
|
+
: component;
|
|
117
|
+
var componentRequiresDeclaration = isCreatingComponentFromTemplate ||
|
|
118
|
+
!getExistenceOfComponentInModules(component, moduleMetadata.declarations, moduleMetadata.imports);
|
|
119
|
+
var componentDeclarations = componentRequiresDeclaration
|
|
120
|
+
? [app_component_1.AppComponent, AnnotatedComponent]
|
|
121
|
+
: [app_component_1.AppComponent];
|
|
122
|
+
var story = {
|
|
123
|
+
component: AnnotatedComponent,
|
|
124
|
+
props: props,
|
|
125
|
+
};
|
|
126
|
+
return getModule(componentDeclarations, [AnnotatedComponent], [app_component_1.AppComponent], story, moduleMetadata);
|
|
127
|
+
};
|
|
128
|
+
var staticRoot = document.getElementById('root');
|
|
129
|
+
var insertDynamicRoot = function () {
|
|
130
|
+
var app = document.createElement('storybook-dynamic-app-root');
|
|
131
|
+
staticRoot.innerHTML = '';
|
|
132
|
+
staticRoot.appendChild(app);
|
|
133
|
+
};
|
|
134
|
+
var draw = function (newModule) {
|
|
135
|
+
if (!platform) {
|
|
136
|
+
insertDynamicRoot();
|
|
137
|
+
// eslint-disable-next-line no-undef
|
|
138
|
+
if (typeof NODE_ENV === 'string' && NODE_ENV !== 'development') {
|
|
139
|
+
try {
|
|
140
|
+
core_1.enableProdMode();
|
|
141
|
+
}
|
|
142
|
+
catch (e) {
|
|
143
|
+
//
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
platform = platform_browser_dynamic_1.platformBrowserDynamic();
|
|
147
|
+
promises.push(platform.bootstrapModule(newModule));
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
Promise.all(promises).then(function (modules) {
|
|
151
|
+
modules.forEach(function (mod) { return mod.destroy(); });
|
|
152
|
+
insertDynamicRoot();
|
|
153
|
+
promises = [];
|
|
154
|
+
promises.push(platform.bootstrapModule(newModule));
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
exports.renderNgApp = function (storyFn, forced) {
|
|
159
|
+
if (!forced) {
|
|
160
|
+
draw(initModule(storyFn));
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
storyData.next(storyFn());
|
|
164
|
+
}
|
|
165
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Subject } from 'rxjs';
|
|
2
|
+
import { ICollection, StoryFnAngularReturnType } from '../types';
|
|
3
|
+
import { Parameters } from '../types-6-0';
|
|
4
|
+
declare type StoryRenderInfo = {
|
|
5
|
+
storyFnAngular: StoryFnAngularReturnType;
|
|
6
|
+
moduleMetadataSnapshot: string;
|
|
7
|
+
};
|
|
8
|
+
export declare abstract class AbstractRenderer {
|
|
9
|
+
storyId: string;
|
|
10
|
+
/**
|
|
11
|
+
* Wait and destroy the platform
|
|
12
|
+
*/
|
|
13
|
+
static resetPlatformBrowserDynamic(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Reset compiled components because we often want to compile the same component with
|
|
16
|
+
* more than one NgModule.
|
|
17
|
+
*/
|
|
18
|
+
protected static resetCompiledComponents: () => Promise<void>;
|
|
19
|
+
protected previousStoryRenderInfo: StoryRenderInfo;
|
|
20
|
+
protected storyProps$: Subject<ICollection | undefined>;
|
|
21
|
+
constructor(storyId: string);
|
|
22
|
+
protected abstract beforeFullRender(): Promise<void>;
|
|
23
|
+
protected abstract afterFullRender(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Bootstrap main angular module with main component or send only new `props` with storyProps$
|
|
26
|
+
*
|
|
27
|
+
* @param storyFnAngular {StoryFnAngularReturnType}
|
|
28
|
+
* @param forced {boolean} If :
|
|
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
|
+
* - false fully recharges or initializes angular module & component
|
|
31
|
+
* @param component {Component}
|
|
32
|
+
* @param parameters {Parameters}
|
|
33
|
+
*/
|
|
34
|
+
render({ storyFnAngular, forced, parameters, component, targetDOMNode, }: {
|
|
35
|
+
storyFnAngular: StoryFnAngularReturnType;
|
|
36
|
+
forced: boolean;
|
|
37
|
+
component?: any;
|
|
38
|
+
parameters: Parameters;
|
|
39
|
+
targetDOMNode: HTMLElement;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
protected initAngularRootElement(targetDOMNode: HTMLElement, targetSelector: string): void;
|
|
42
|
+
private fullRendererRequired;
|
|
43
|
+
}
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
+
}) : function(o, v) {
|
|
12
|
+
o["default"] = v;
|
|
13
|
+
});
|
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
+
if (mod && mod.__esModule) return mod;
|
|
16
|
+
var result = {};
|
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
+
__setModuleDefault(result, mod);
|
|
19
|
+
return result;
|
|
20
|
+
};
|
|
21
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
22
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
23
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
24
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
25
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
26
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
27
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
31
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
32
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
33
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
34
|
+
function step(op) {
|
|
35
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
36
|
+
while (_) try {
|
|
37
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
38
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
39
|
+
switch (op[0]) {
|
|
40
|
+
case 0: case 1: t = op; break;
|
|
41
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
42
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
43
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
44
|
+
default:
|
|
45
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
46
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
47
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
48
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
49
|
+
if (t[2]) _.ops.pop();
|
|
50
|
+
_.trys.pop(); continue;
|
|
51
|
+
}
|
|
52
|
+
op = body.call(thisArg, _);
|
|
53
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
54
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
58
|
+
exports.AbstractRenderer = void 0;
|
|
59
|
+
/* eslint-disable no-undef */
|
|
60
|
+
var core_1 = require("@angular/core");
|
|
61
|
+
var platform_browser_dynamic_1 = require("@angular/platform-browser-dynamic");
|
|
62
|
+
var rxjs_1 = require("rxjs");
|
|
63
|
+
var telejson_1 = require("telejson");
|
|
64
|
+
var StorybookModule_1 = require("./StorybookModule");
|
|
65
|
+
// platform must be init only if render is called at least once
|
|
66
|
+
var platformRef;
|
|
67
|
+
function getPlatform(newPlatform) {
|
|
68
|
+
if (!platformRef || newPlatform) {
|
|
69
|
+
platformRef = platform_browser_dynamic_1.platformBrowserDynamic();
|
|
70
|
+
}
|
|
71
|
+
return platformRef;
|
|
72
|
+
}
|
|
73
|
+
var AbstractRenderer = /** @class */ (function () {
|
|
74
|
+
function AbstractRenderer(storyId) {
|
|
75
|
+
this.storyId = storyId;
|
|
76
|
+
if (typeof NODE_ENV === 'string' && NODE_ENV !== 'development') {
|
|
77
|
+
try {
|
|
78
|
+
// platform should be set after enableProdMode()
|
|
79
|
+
core_1.enableProdMode();
|
|
80
|
+
}
|
|
81
|
+
catch (e) {
|
|
82
|
+
// eslint-disable-next-line no-console
|
|
83
|
+
console.debug(e);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Wait and destroy the platform
|
|
89
|
+
*/
|
|
90
|
+
AbstractRenderer.resetPlatformBrowserDynamic = function () {
|
|
91
|
+
var _this = this;
|
|
92
|
+
return new Promise(function (resolve) {
|
|
93
|
+
if (platformRef && !platformRef.destroyed) {
|
|
94
|
+
platformRef.onDestroy(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
95
|
+
return __generator(this, function (_a) {
|
|
96
|
+
resolve();
|
|
97
|
+
return [2 /*return*/];
|
|
98
|
+
});
|
|
99
|
+
}); });
|
|
100
|
+
// Destroys the current Angular platform and all Angular applications on the page.
|
|
101
|
+
// So call each angular ngOnDestroy and avoid memory leaks
|
|
102
|
+
platformRef.destroy();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
resolve();
|
|
106
|
+
}).then(function () {
|
|
107
|
+
getPlatform(true);
|
|
108
|
+
});
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Bootstrap main angular module with main component or send only new `props` with storyProps$
|
|
112
|
+
*
|
|
113
|
+
* @param storyFnAngular {StoryFnAngularReturnType}
|
|
114
|
+
* @param forced {boolean} If :
|
|
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
|
|
116
|
+
* - false fully recharges or initializes angular module & component
|
|
117
|
+
* @param component {Component}
|
|
118
|
+
* @param parameters {Parameters}
|
|
119
|
+
*/
|
|
120
|
+
AbstractRenderer.prototype.render = function (_a) {
|
|
121
|
+
var _b;
|
|
122
|
+
var storyFnAngular = _a.storyFnAngular, forced = _a.forced, parameters = _a.parameters, component = _a.component, targetDOMNode = _a.targetDOMNode;
|
|
123
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
124
|
+
var targetSelector, newStoryProps$, moduleMetadata;
|
|
125
|
+
return __generator(this, function (_c) {
|
|
126
|
+
switch (_c.label) {
|
|
127
|
+
case 0:
|
|
128
|
+
targetSelector = "" + this.storyId;
|
|
129
|
+
newStoryProps$ = new rxjs_1.BehaviorSubject(storyFnAngular.props);
|
|
130
|
+
moduleMetadata = StorybookModule_1.getStorybookModuleMetadata({ storyFnAngular: storyFnAngular, component: component, targetSelector: targetSelector }, newStoryProps$);
|
|
131
|
+
if (!this.fullRendererRequired({
|
|
132
|
+
storyFnAngular: storyFnAngular,
|
|
133
|
+
moduleMetadata: moduleMetadata,
|
|
134
|
+
forced: forced,
|
|
135
|
+
})) {
|
|
136
|
+
this.storyProps$.next(storyFnAngular.props);
|
|
137
|
+
return [2 /*return*/];
|
|
138
|
+
}
|
|
139
|
+
return [4 /*yield*/, this.beforeFullRender()];
|
|
140
|
+
case 1:
|
|
141
|
+
_c.sent();
|
|
142
|
+
// Complete last BehaviorSubject and set a new one for the current module
|
|
143
|
+
if (this.storyProps$) {
|
|
144
|
+
this.storyProps$.complete();
|
|
145
|
+
}
|
|
146
|
+
this.storyProps$ = newStoryProps$;
|
|
147
|
+
this.initAngularRootElement(targetDOMNode, targetSelector);
|
|
148
|
+
return [4 /*yield*/, getPlatform().bootstrapModule(StorybookModule_1.createStorybookModule(moduleMetadata), (_b = parameters.bootstrapModuleOptions) !== null && _b !== void 0 ? _b : undefined)];
|
|
149
|
+
case 2:
|
|
150
|
+
_c.sent();
|
|
151
|
+
return [4 /*yield*/, this.afterFullRender()];
|
|
152
|
+
case 3:
|
|
153
|
+
_c.sent();
|
|
154
|
+
return [2 /*return*/];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
};
|
|
159
|
+
AbstractRenderer.prototype.initAngularRootElement = function (targetDOMNode, targetSelector) {
|
|
160
|
+
// Adds DOM element that angular will use as bootstrap component
|
|
161
|
+
// eslint-disable-next-line no-param-reassign
|
|
162
|
+
targetDOMNode.innerHTML = '';
|
|
163
|
+
targetDOMNode.appendChild(document.createElement(targetSelector));
|
|
164
|
+
};
|
|
165
|
+
AbstractRenderer.prototype.fullRendererRequired = function (_a) {
|
|
166
|
+
var _b;
|
|
167
|
+
var storyFnAngular = _a.storyFnAngular, moduleMetadata = _a.moduleMetadata, forced = _a.forced;
|
|
168
|
+
var previousStoryRenderInfo = this.previousStoryRenderInfo;
|
|
169
|
+
var currentStoryRender = {
|
|
170
|
+
storyFnAngular: storyFnAngular,
|
|
171
|
+
moduleMetadataSnapshot: telejson_1.stringify(moduleMetadata),
|
|
172
|
+
};
|
|
173
|
+
this.previousStoryRenderInfo = currentStoryRender;
|
|
174
|
+
if (
|
|
175
|
+
// check `forceRender` of story RenderContext
|
|
176
|
+
!forced ||
|
|
177
|
+
// if it's the first rendering and storyProps$ is not init
|
|
178
|
+
!this.storyProps$) {
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
// force the rendering if the template has changed
|
|
182
|
+
var hasChangedTemplate = !!(storyFnAngular === null || storyFnAngular === void 0 ? void 0 : storyFnAngular.template) &&
|
|
183
|
+
((_b = previousStoryRenderInfo === null || previousStoryRenderInfo === void 0 ? void 0 : previousStoryRenderInfo.storyFnAngular) === null || _b === void 0 ? void 0 : _b.template) !== storyFnAngular.template;
|
|
184
|
+
if (hasChangedTemplate) {
|
|
185
|
+
return true;
|
|
186
|
+
}
|
|
187
|
+
// force the rendering if the metadata structure has changed
|
|
188
|
+
var hasChangedModuleMetadata = currentStoryRender.moduleMetadataSnapshot !== (previousStoryRenderInfo === null || previousStoryRenderInfo === void 0 ? void 0 : previousStoryRenderInfo.moduleMetadataSnapshot);
|
|
189
|
+
return hasChangedModuleMetadata;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Reset compiled components because we often want to compile the same component with
|
|
193
|
+
* more than one NgModule.
|
|
194
|
+
*/
|
|
195
|
+
AbstractRenderer.resetCompiledComponents = function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
196
|
+
var ɵresetCompiledComponents, e_1;
|
|
197
|
+
return __generator(this, function (_a) {
|
|
198
|
+
switch (_a.label) {
|
|
199
|
+
case 0:
|
|
200
|
+
_a.trys.push([0, 2, , 3]);
|
|
201
|
+
return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('@angular/core')); })];
|
|
202
|
+
case 1:
|
|
203
|
+
ɵresetCompiledComponents = (_a.sent()).ɵresetCompiledComponents;
|
|
204
|
+
ɵresetCompiledComponents();
|
|
205
|
+
return [3 /*break*/, 3];
|
|
206
|
+
case 2:
|
|
207
|
+
e_1 = _a.sent();
|
|
208
|
+
return [3 /*break*/, 3];
|
|
209
|
+
case 3: return [2 /*return*/];
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}); };
|
|
213
|
+
return AbstractRenderer;
|
|
214
|
+
}());
|
|
215
|
+
exports.AbstractRenderer = AbstractRenderer;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AbstractRenderer } from './AbstractRenderer';
|
|
2
|
+
import { StoryFnAngularReturnType } from '../types';
|
|
3
|
+
import { Parameters } from '../types-6-0';
|
|
4
|
+
export declare class CanvasRenderer extends AbstractRenderer {
|
|
5
|
+
render(options: {
|
|
6
|
+
storyFnAngular: StoryFnAngularReturnType;
|
|
7
|
+
forced: boolean;
|
|
8
|
+
parameters: Parameters;
|
|
9
|
+
component: any;
|
|
10
|
+
targetDOMNode: HTMLElement;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
beforeFullRender(): Promise<void>;
|
|
13
|
+
afterFullRender(): Promise<void>;
|
|
14
|
+
}
|