in packages/codegen-ui-react/lib/react-studio-template-renderer.ts [157:202]
renderComponentInternal() {
// This is a react component so we only need a single tsx
const { printer, file } = buildPrinter(this.fileName, this.renderConfig);
const jsx = this.renderJsx(this.component);
const wrappedFunction = this.renderFunctionWrapper(
this.component.name ?? StudioRendererConstants.unknownName,
jsx,
true,
);
const propsDeclaration = this.renderBindingPropsType(this.component);
const imports = this.importCollection.buildImportStatements();
let componentText = `/* eslint-disable */${EOL}`;
imports.forEach((importStatement) => {
const result = printer.printNode(EmitHint.Unspecified, importStatement, file);
componentText += result + EOL;
});
componentText += EOL;
const propsPrinted = printer.printNode(EmitHint.Unspecified, propsDeclaration, file);
componentText += propsPrinted;
componentText += EOL;
const result = printer.printNode(EmitHint.Unspecified, wrappedFunction, file);
componentText += result;
const { componentText: transpiledComponentText, declaration } = transpile(componentText, this.renderConfig);
return {
componentText: transpiledComponentText,
declaration,
renderComponentToFilesystem: async (outputPath: string) => {
await this.renderComponentToFilesystem(transpiledComponentText)(this.fileName)(outputPath);
if (declaration) {
await this.renderComponentToFilesystem(declaration)(getDeclarationFilename(this.fileName))(outputPath);
}
},
};
}