@@ -1628,7 +1628,34 @@ namespace ts {
16281628 return react ;
16291629 }
16301630
1631- export function createReactCreateElement ( reactNamespace : string , tagName : Expression , props : Expression , children : Expression [ ] , parentElement : JsxOpeningLikeElement , location : TextRange ) : LeftHandSideExpression {
1631+ function createJsxFactoryExpressionFromEntityName ( jsxFactory : EntityName , parent : JsxOpeningLikeElement ) : Expression {
1632+ if ( isQualifiedName ( jsxFactory ) ) {
1633+ return createPropertyAccess (
1634+ createJsxFactoryExpressionFromEntityName (
1635+ jsxFactory . left ,
1636+ parent
1637+ ) ,
1638+ setEmitFlags (
1639+ getMutableClone ( jsxFactory . right ) ,
1640+ EmitFlags . NoSourceMap
1641+ )
1642+ ) ;
1643+ }
1644+ else {
1645+ return createReactNamespace ( jsxFactory . text , parent ) ;
1646+ }
1647+ }
1648+
1649+ function createJsxFactoryExpression ( jsxFactoryEntity : EntityName , reactNamespace : string , parent : JsxOpeningLikeElement ) : Expression {
1650+ return jsxFactoryEntity ?
1651+ createJsxFactoryExpressionFromEntityName ( jsxFactoryEntity , parent ) :
1652+ createPropertyAccess (
1653+ createReactNamespace ( reactNamespace , parent ) ,
1654+ "createElement"
1655+ ) ;
1656+ }
1657+
1658+ export function createExpressionForJsxElement ( jsxFactoryEntity : EntityName , reactNamespace : string , tagName : Expression , props : Expression , children : Expression [ ] , parentElement : JsxOpeningLikeElement , location : TextRange ) : LeftHandSideExpression {
16321659 const argumentsList = [ tagName ] ;
16331660 if ( props ) {
16341661 argumentsList . push ( props ) ;
@@ -1651,10 +1678,7 @@ namespace ts {
16511678 }
16521679
16531680 return createCall (
1654- createPropertyAccess (
1655- createReactNamespace ( reactNamespace , parentElement ) ,
1656- "createElement"
1657- ) ,
1681+ createJsxFactoryExpression ( jsxFactoryEntity , reactNamespace , parentElement ) ,
16581682 /*typeArguments*/ undefined ,
16591683 argumentsList ,
16601684 location
0 commit comments