fragment: VaporFragment,
fallback: BlockFn,
): void {
- // stop recursion if fragment has its own fallback
- if (fragment.fallback) return
+ if (fragment.fallback) {
+ const originalFallback = fragment.fallback
+ // if the original fallback also renders invalid blocks,
+ // this ensures proper fallback chaining
+ fragment.fallback = () => {
+ const fallbackNodes = originalFallback()
+ if (isValidBlock(fallbackNodes)) {
+ return fallbackNodes
+ }
+ return fallback()
+ }
+ } else {
+ fragment.fallback = fallback
+ }
- fragment.fallback = fallback
if (isFragment(fragment.nodes)) {
- setFragmentFallback(fragment.nodes, fallback)
+ setFragmentFallback(fragment.nodes, fragment.fallback)
}
}