@@ -188,6 +188,32 @@ export default function jsxToHtmBabelPlugin({ types: t }, options = {}) {
188188 }
189189 }
190190
191+ function jsxVisitorHandler ( path , state , isFragment ) {
192+ let quasisBefore = quasis . slice ( ) ;
193+ let expressionsBefore = expressions . slice ( ) ;
194+ let bufferBefore = buffer ;
195+
196+ buffer = '' ;
197+ quasis . length = 0 ;
198+ expressions . length = 0 ;
199+
200+ if ( isFragment ) {
201+ processChildren ( path . node , '' , true ) ;
202+ commit ( ) ;
203+ const template = t . templateLiteral ( quasis , expressions ) ;
204+ const replacement = t . taggedTemplateExpression ( tag , template ) ;
205+ path . replaceWith ( replacement ) ;
206+ } else {
207+ processNode ( path . node , path , true ) ;
208+ }
209+
210+ quasis = quasisBefore ;
211+ expressions = expressionsBefore ;
212+ buffer = bufferBefore ;
213+
214+ state . set ( 'jsxElement' , true ) ;
215+ }
216+
191217 return {
192218 name : 'transform-jsx-to-htm' ,
193219 inherits : jsx ,
@@ -201,44 +227,11 @@ export default function jsxToHtmBabelPlugin({ types: t }, options = {}) {
201227 } ,
202228
203229 JSXElement ( path , state ) {
204- let quasisBefore = quasis . slice ( ) ;
205- let expressionsBefore = expressions . slice ( ) ;
206- let bufferBefore = buffer ;
207-
208- buffer = '' ;
209- quasis . length = 0 ;
210- expressions . length = 0 ;
211-
212- processNode ( path . node , path , true ) ;
213-
214- quasis = quasisBefore ;
215- expressions = expressionsBefore ;
216- buffer = bufferBefore ;
217-
218- state . set ( 'jsxElement' , true ) ;
230+ jsxVisitorHandler ( path , state , false ) ;
219231 } ,
220232
221233 JSXFragment ( path , state ) {
222- let quasisBefore = quasis . slice ( ) ;
223- let expressionsBefore = expressions . slice ( ) ;
224- let bufferBefore = buffer ;
225-
226- buffer = '' ;
227- quasis . length = 0 ;
228- expressions . length = 0 ;
229-
230- processChildren ( path . node , '' , true ) ;
231-
232- commit ( ) ;
233- const template = t . templateLiteral ( quasis , expressions ) ;
234- const replacement = t . taggedTemplateExpression ( tag , template ) ;
235- path . replaceWith ( replacement ) ;
236-
237- quasis = quasisBefore ;
238- expressions = expressionsBefore ;
239- buffer = bufferBefore ;
240-
241- state . set ( 'jsxElement' , true ) ;
234+ jsxVisitorHandler ( path , state , true ) ;
242235 }
243236 }
244237 } ;
0 commit comments