in packages/babel-plugin-fbt/src/fbt-nodes/FbtElementNode.js [255:295]
static fromBabelNode({
moduleName,
node,
}: {|
moduleName: JSModuleNameType,
node: BabelNode,
|}): ?FbtElementNode {
if (!isCallExpression(node)) {
return null;
}
const fbtElement = new FbtElementNode({
moduleName,
node,
});
const {
arguments: [fbtContentsNode],
} = node;
if (!isArrayExpression(fbtContentsNode)) {
throw errorAt(
node,
`${moduleName}: expected callsite's first argument to be an array`,
);
}
for (const elementChild of fbtContentsNode.elements || []) {
if (elementChild == null) {
throw errorAt(node, `${moduleName}: elementChild must not be nullish`);
}
if (isSpreadElement(elementChild)) {
throw errorAt(elementChild, `Array spread syntax is not supported`);
}
fbtElement.appendChild(
this.createChildNode({
moduleName,
node: elementChild,
}),
);
}
return fbtElement;
}