UNPKG

@storybook/html

Version:

Storybook HTML renderer: Develop, document, and test UI components in isolation

71 lines (66 loc) 2.33 kB
import { __export } from "./chunk-4BE7D4DS.js"; // src/entry-preview.ts var entry_preview_exports = {}; __export(entry_preview_exports, { argTypesEnhancers: () => argTypesEnhancers, parameters: () => parameters, render: () => render, renderToCanvas: () => renderToCanvas }); import { enhanceArgTypes } from "storybook/internal/docs-tools"; // src/render.ts import { global } from "@storybook/global"; import { simulateDOMContentLoaded, simulatePageLoad } from "storybook/preview-api"; import { dedent } from "ts-dedent"; var { Node } = global, render = (args, context) => { let { id, component: Component } = context; if (typeof Component == "string") { let output = Component; return Object.keys(args).forEach((key) => { output = output.replace(`{{${key}}}`, args[key]); }), output; } if (Component instanceof HTMLElement) { let output = Component.cloneNode(!0); return Object.keys(args).forEach((key) => { output.setAttribute( key, typeof args[key] == "string" ? args[key] : JSON.stringify(args[key]) ); }), output; } if (typeof Component == "function") return Component(args, context); throw console.warn(dedent` Storybook's HTML renderer only supports rendering DOM elements and strings. Received: ${Component} `), new Error(`Unable to render story ${id}`); }; function renderToCanvas({ storyFn, kind, name, showMain, showError, forceRemount }, canvasElement) { let element = storyFn(); if (showMain(), typeof element == "string") canvasElement.innerHTML = element, simulatePageLoad(canvasElement); else if (element instanceof Node) { if (canvasElement.firstChild === element && forceRemount === !1) return; canvasElement.innerHTML = "", canvasElement.appendChild(element), simulateDOMContentLoaded(); } else showError({ title: `Expecting an HTML snippet or DOM node from the story: "${name}" of "${kind}".`, description: dedent` Did you forget to return the HTML snippet from the story? Use "() => <your snippet or node>" or when defining the story. ` }); } // src/entry-preview.ts var parameters = { renderer: "html" }, argTypesEnhancers = [enhanceArgTypes]; export { render, renderToCanvas, parameters, argTypesEnhancers, entry_preview_exports };