66 HTML_LOWER_CASE ,
77 HTML_ENUMERATED ,
88 SVG_CAMEL_CASE ,
9- createComponent
9+ createComponent ,
10+ flattenTopLevelFragments
1011} from './lib/util.js' ;
1112import { options , h , Fragment } from 'preact' ;
1213import {
@@ -342,6 +343,8 @@ function _renderToString(
342343 // Fragments are the least used components of core that's why
343344 // branching here for comments has the least effect on perf.
344345 return '<!--' + encodeEntities ( props . UNSTABLE_comment ) + '-->' ;
346+ } else if ( 'dangerouslySetInnerHTML' in props ) {
347+ return props . dangerouslySetInnerHTML . __html ;
345348 }
346349
347350 rendered = props . children ;
@@ -395,14 +398,7 @@ function _renderToString(
395398 options . errorBoundaries &&
396399 ( type . getDerivedStateFromError || component . componentDidCatch )
397400 ) {
398- // When a component returns a Fragment node we flatten it in core, so we
399- // need to mirror that logic here too
400- let isTopLevelFragment =
401- rendered != null &&
402- rendered . type === Fragment &&
403- rendered . key == null &&
404- rendered . props . tpl == null ;
405- rendered = isTopLevelFragment ? rendered . props . children : rendered ;
401+ rendered = flattenTopLevelFragments ( rendered ) ;
406402
407403 try {
408404 return _renderToString (
@@ -432,12 +428,7 @@ function _renderToString(
432428 context = assign ( { } , context , component . getChildContext ( ) ) ;
433429 }
434430
435- let isTopLevelFragment =
436- rendered != null &&
437- rendered . type === Fragment &&
438- rendered . key == null &&
439- rendered . props . tpl == null ;
440- rendered = isTopLevelFragment ? rendered . props . children : rendered ;
431+ rendered = flattenTopLevelFragments ( rendered ) ;
441432
442433 return _renderToString (
443434 rendered ,
@@ -459,14 +450,7 @@ function _renderToString(
459450 }
460451 }
461452
462- // When a component returns a Fragment node we flatten it in core, so we
463- // need to mirror that logic here too
464- let isTopLevelFragment =
465- rendered != null &&
466- rendered . type === Fragment &&
467- rendered . key == null &&
468- rendered . props . tpl == null ;
469- rendered = isTopLevelFragment ? rendered . props . children : rendered ;
453+ rendered = flattenTopLevelFragments ( rendered ) ;
470454
471455 try {
472456 // Recurse into children before invoking the after-diff hook
@@ -542,7 +526,7 @@ function _renderToString(
542526 : result ;
543527 } catch ( e ) {
544528 if ( ! e || typeof e . then != 'function' ) throw e ;
545-
529+
546530 return e . then ( renderNestedChildren ) ;
547531 }
548532 } ;
0 commit comments