33/** @import { ComponentContext } from '../types' */
44import * as b from '../../../../utils/builders.js' ;
55
6- /**
7- * @param {AST.Fragment } fragment
8- * @return {Namespace }
9- */
10- function get_namespace ( fragment ) {
11- const elements = fragment . nodes . filter ( ( n ) => n . type === 'RegularElement' ) ;
12- /** @type {Namespace | null } */
13- let namespace = null ;
14-
15- // Check the elements within the fragment and look for consistent namespaces.
16- // If we have no namespaces or they are mixed, then fallback to `html`
17- for ( const element of elements ) {
18- const metadata = element . metadata ;
19-
20- if ( metadata . mathml ) {
21- if ( namespace === null || namespace === 'mathml' ) {
22- namespace = 'mathml' ;
23- } else {
24- namespace = 'html' ;
25- }
26- } else if ( metadata . svg ) {
27- if ( namespace === null || namespace === 'svg' ) {
28- namespace = 'svg' ;
29- } else {
30- namespace = 'html' ;
31- }
32- } else {
33- namespace = 'html' ;
34- }
35- }
36-
37- return namespace ?? 'html' ;
38- }
39-
406/**
417 * @param {AST.IfBlock } node
428 * @param {ComponentContext } context
@@ -45,27 +11,15 @@ export function IfBlock(node, context) {
4511 context . state . template . push ( '<!>' ) ;
4612 const statements = [ ] ;
4713
48- const consequent_namespace = get_namespace ( node . consequent ) ;
49- const consequent = /** @type {BlockStatement } */ (
50- context . visit ( node . consequent , {
51- ...context . state ,
52- metadata : { ...context . state . metadata , namespace : consequent_namespace }
53- } )
54- ) ;
14+ const consequent = /** @type {BlockStatement } */ ( context . visit ( node . consequent ) ) ;
5515 const consequent_id = context . state . scope . generate ( 'consequent' ) ;
5616
5717 statements . push ( b . var ( b . id ( consequent_id ) , b . arrow ( [ b . id ( '$$anchor' ) ] , consequent ) ) ) ;
5818
5919 let alternate_id ;
6020
6121 if ( node . alternate ) {
62- const alternate_namespace = get_namespace ( node . consequent ) ;
63- const alternate = /** @type {BlockStatement } */ (
64- context . visit ( node . alternate , {
65- ...context . state ,
66- metadata : { ...context . state . metadata , namespace : alternate_namespace }
67- } )
68- ) ;
22+ const alternate = /** @type {BlockStatement } */ ( context . visit ( node . alternate ) ) ;
6923 alternate_id = context . state . scope . generate ( 'alternate' ) ;
7024 statements . push ( b . var ( b . id ( alternate_id ) , b . arrow ( [ b . id ( '$$anchor' ) ] , alternate ) ) ) ;
7125 }
0 commit comments