in packages/codegen-ui-react/lib/react-component-render-helper.ts [139:176]
export function buildFixedJsxExpression(prop: FixedStudioComponentProperty): StringLiteral | JsxExpression {
const { value, type } = prop;
switch (typeof value) {
case 'number':
return factory.createJsxExpression(undefined, factory.createNumericLiteral(value, undefined));
case 'boolean':
return factory.createJsxExpression(undefined, value ? factory.createTrue() : factory.createFalse());
case 'string':
switch (type) {
case undefined:
return factory.createStringLiteral(value as string);
case 'String':
return factory.createStringLiteral(value as string);
case 'Object':
case 'Number':
case 'Boolean':
try {
const parsedValue = JSON.parse(value as string);
if (typeof parsedValue === 'number') {
return factory.createJsxExpression(undefined, factory.createNumericLiteral(parsedValue, undefined));
}
if (typeof parsedValue === 'boolean') {
return factory.createJsxExpression(undefined, parsedValue ? factory.createTrue() : factory.createFalse());
}
// object, array, and null
if (typeof parsedValue === 'object') {
return factory.createJsxExpression(undefined, jsonToLiteral(parsedValue));
}
} catch {} // eslint-disable-line no-empty
throw new Error(`Failed to parse value "${value}" as type ${type}`);
default:
throw new Error(`Invalid type ${type} for "${value}"`);
}
default:
throw new Error(`Invalid type ${typeof value} for "${value}"`);
}
}