UNPKG

@kubb/react

Version:

React integration for Kubb, providing JSX runtime support and React component generation capabilities for code generation plugins.

35 lines (30 loc) 975 B
import { getFiles } from './utils/getFiles.ts' import { squashExportNodes } from './utils/squashExportNodes.ts' import { squashImportNodes } from './utils/squashImportNodes.ts' import { squashTextNodes } from './utils/squashTextNodes.ts' import type { KubbFile } from '@kubb/core/fs' import type { DOMElement } from './types.ts' export type RendererResult = { output: string imports: Array<KubbFile.Import> exports: Array<KubbFile.Export> files: Array<KubbFile.File> } export function renderer(node: DOMElement): RendererResult { const imports = squashImportNodes(node) const exports = squashExportNodes(node) const files = getFiles(node) const text = squashTextNodes(node) const output = files.size ? [...files] .flatMap((file) => [...file.sources].map((item) => item.value)) .filter(Boolean) .join('\n\n') : text return { output, files: [...files], imports: [...imports], exports: [...exports], } }