UNPKG

@storybook/react

Version:
104 lines (98 loc) 3.81 kB
import CJS_COMPAT_NODE_URL_0ccojhbbgp74 from 'node:url'; import CJS_COMPAT_NODE_PATH_0ccojhbbgp74 from 'node:path'; import CJS_COMPAT_NODE_MODULE_0ccojhbbgp74 from "node:module"; var __filename = CJS_COMPAT_NODE_URL_0ccojhbbgp74.fileURLToPath(import.meta.url); var __dirname = CJS_COMPAT_NODE_PATH_0ccojhbbgp74.dirname(__filename); var require = CJS_COMPAT_NODE_MODULE_0ccojhbbgp74.createRequire(import.meta.url); // ------------------------------------------------------------ // end of CJS compatibility banner, injected by Storybook's esbuild configuration // ------------------------------------------------------------ import { ComponentMetaManager, buildComponentDocgenFromResolved, extractArgTypes, path, resolveStoryFileComponents } from "../_node-chunks/chunk-ZUN4ALWM.js"; // src/docgen/docgen-worker.ts import { STORY_FILE_TEST_REGEXP, getStoryImportPathFromEntry as getStoryImportPathFromEntry2 } from "storybook/internal/common"; // src/docgen/buildDocgen.ts import { getStoryImportPathFromEntry } from "storybook/internal/common"; function extractArgTypesFromComponentMeta(componentMeta) { return componentMeta ? extractArgTypes({ __docgenInfo: componentMeta }) ?? void 0 : void 0; } function addArgTypesFromComponentMeta(payload) { let argTypes = extractArgTypesFromComponentMeta(payload.reactComponentMeta), subcomponents = payload.subcomponents ? Object.fromEntries( Object.entries(payload.subcomponents).map(([name, subcomponent]) => [ name, { ...subcomponent, argTypes: extractArgTypesFromComponentMeta(subcomponent.reactComponentMeta) } ]) ) : void 0; return { ...payload, ...argTypes ? { argTypes } : {}, ...subcomponents ? { subcomponents } : {} }; } async function buildDocgenPayload(input, context) { let storyFilePath = getStoryImportPathFromEntry(input.entry); if (!storyFilePath) return; let storyPath = (context.resolvePath ?? ((importPath) => path.join(process.cwd(), importPath)))(storyFilePath), resolved; try { resolved = await resolveStoryFileComponents({ storyPath, title: input.entry.title, typescriptOptions: context.typescriptOptions, docgenEngine: "react-component-meta" }); } catch { return; } let { csf, componentName, component, subcomponents, storyFile } = resolved, usableSubcomponents = subcomponents.filter( (sub) => sub.component !== void 0 ), storyRefs = [ ...component ? [{ storyPath, component }] : [], ...usableSubcomponents.map((sub) => ({ storyPath, component: sub.component })) ]; storyRefs.length > 0 && context.componentMetaManager.batchExtract(storyRefs); let componentDocgen = buildComponentDocgenFromResolved({ entry: input.entry, storyPath, storyFilePath, storyFile, csf, componentName, component, subcomponents, docgenEngine: "react-component-meta" }); return addArgTypesFromComponentMeta(componentDocgen); } // src/docgen/docgen-worker.ts var createDocgenProvider = () => { let managerPromise, getManager = () => (managerPromise || (managerPromise = (async () => { try { let ts = await import("typescript"); return new ComponentMetaManager(ts); } catch { return; } })()), managerPromise); return (nextDocgen) => async (input) => { let storyImportPath = getStoryImportPathFromEntry2(input.entry); if (!storyImportPath || !STORY_FILE_TEST_REGEXP.test(storyImportPath)) return nextDocgen(input); let componentMetaManager = await getManager(); if (!componentMetaManager) return nextDocgen(input); let ours = await buildDocgenPayload(input, { componentMetaManager }); return ours ? { ...await nextDocgen(input), ...ours } : nextDocgen(input); }; }; export { createDocgenProvider };