UNPKG

1.66 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.DocsRenderer = void 0;
4const preview_api_1 = require("@storybook/preview-api");
5const core_events_1 = require("@storybook/core-events");
6const AbstractRenderer_1 = require("./AbstractRenderer");
7class DocsRenderer extends AbstractRenderer_1.AbstractRenderer {
8 async render(options) {
9 const channel = preview_api_1.addons.getChannel();
10 /**
11 * Destroy and recreate the PlatformBrowserDynamic of angular
12 * For several stories to be rendered in the same docs we should
13 * not destroy angular between each rendering but do it when the
14 * rendered stories are not needed anymore.
15 *
16 * Note for improvement: currently there is one event per story
17 * rendered in the doc. But one event could be enough for the whole docs
18 *
19 */
20 channel.once(core_events_1.STORY_CHANGED, async () => {
21 await DocsRenderer.resetApplications();
22 });
23 /**
24 * Destroy and recreate the PlatformBrowserDynamic of angular
25 * when doc re render. Allows to call ngOnDestroy of angular
26 * for previous component
27 */
28 channel.once(core_events_1.DOCS_RENDERED, async () => {
29 await DocsRenderer.resetApplications();
30 });
31 await super.render({ ...options, forced: false });
32 }
33 async beforeFullRender(domNode) {
34 DocsRenderer.resetApplications(domNode);
35 }
36 async afterFullRender() {
37 await AbstractRenderer_1.AbstractRenderer.resetCompiledComponents();
38 }
39}
40exports.DocsRenderer = DocsRenderer;