UNPKG

2.98 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4 return new (P || (P = Promise))(function (resolve, reject) {
5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8 step((generator = generator.apply(thisArg, _arguments || [])).next());
9 });
10};
11var __importDefault = (this && this.__importDefault) || function (mod) {
12 return (mod && mod.__esModule) ? mod : { "default": mod };
13};
14Object.defineProperty(exports, "__esModule", { value: true });
15exports.DocsRenderer = void 0;
16const addons_1 = require("@storybook/addons");
17const core_events_1 = __importDefault(require("@storybook/core-events"));
18const AbstractRenderer_1 = require("./AbstractRenderer");
19class DocsRenderer extends AbstractRenderer_1.AbstractRenderer {
20 render(options) {
21 const _super = Object.create(null, {
22 render: { get: () => super.render }
23 });
24 return __awaiter(this, void 0, void 0, function* () {
25 const channel = addons_1.addons.getChannel();
26 /**
27 * Destroy and recreate the PlatformBrowserDynamic of angular
28 * For several stories to be rendered in the same docs we should
29 * not destroy angular between each rendering but do it when the
30 * rendered stories are not needed anymore.
31 *
32 * Note for improvement: currently there is one event per story
33 * rendered in the doc. But one event could be enough for the whole docs
34 *
35 */
36 channel.once(core_events_1.default.STORY_CHANGED, () => __awaiter(this, void 0, void 0, function* () {
37 yield DocsRenderer.resetPlatformBrowserDynamic();
38 }));
39 /**
40 * Destroy and recreate the PlatformBrowserDynamic of angular
41 * when doc re render. Allows to call ngOnDestroy of angular
42 * for previous component
43 */
44 channel.once(core_events_1.default.DOCS_RENDERED, () => __awaiter(this, void 0, void 0, function* () {
45 yield DocsRenderer.resetPlatformBrowserDynamic();
46 }));
47 yield _super.render.call(this, Object.assign(Object.assign({}, options), { forced: false }));
48 });
49 }
50 beforeFullRender() {
51 return __awaiter(this, void 0, void 0, function* () { });
52 }
53 afterFullRender() {
54 return __awaiter(this, void 0, void 0, function* () {
55 yield AbstractRenderer_1.AbstractRenderer.resetCompiledComponents();
56 });
57 }
58}
59exports.DocsRenderer = DocsRenderer;