@builder.io/mitosis
Version:
Write components once, run everywhere. Compiles to Vue, React, Solid, and Liquid. Import code from Figma and Builder.io
26 lines (25 loc) • 1.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getInitEmbedViewCode = exports.getDynamicTemplateRefs = void 0;
const getViewContainerRefName = (component) => {
return component.split('.')[1].toLowerCase() + 'TemplateRef';
};
const getNgTemplateRefName = (component) => {
return component.split('.')[1].toLowerCase() + 'Template';
};
const getDynamicTemplateRefs = (dynamicComponents) => {
return `
myContent = signal<any[]>([]);
${Array.from(dynamicComponents)
.map((component) => `${getViewContainerRefName(component)} = viewChild<TemplateRef<any>>('${getNgTemplateRefName(component)}');`)
.join('\n')}
`;
};
exports.getDynamicTemplateRefs = getDynamicTemplateRefs;
const getInitEmbedViewCode = (dynamicComponents) => {
return `
this.myContent.set([${Array.from(dynamicComponents)
.map((component) => `this.viewContainer.createEmbeddedView(this.${getViewContainerRefName(component)}()).rootNodes`)
.join(', ')}]);`;
};
exports.getInitEmbedViewCode = getInitEmbedViewCode;