11/** @import { Effect, TemplateNode } from '#client' */
22import { hydrate_next , hydrate_node , hydrating , set_hydrate_node } from './hydration.js' ;
3- import { create_text , get_first_child , is_firefox } from './operations.js' ;
3+ import {
4+ create_text ,
5+ get_first_child ,
6+ is_firefox ,
7+ create_element ,
8+ create_fragment ,
9+ create_comment ,
10+ set_attribute
11+ } from './operations.js' ;
412import { create_fragment_from_html } from './reconciler.js' ;
513import { active_effect } from '../runtime.js' ;
614import {
@@ -79,14 +87,14 @@ export function template(content, flags) {
7987 * @param {Array<string | undefined> } [namespace_stack]
8088 */
8189function structure_to_fragment ( structure , ns , namespace_stack = [ ] , foreign_object_count = 0 ) {
82- var fragment = document . createDocumentFragment ( ) ;
90+ var fragment = create_fragment ( ) ;
8391 for ( var i = 0 ; i < structure . length ; i += 1 ) {
8492 var item = structure [ i ] ;
8593 if ( item == null || Array . isArray ( item ) ) {
8694 const data = item ? item [ 0 ] : '' ;
87- fragment . insertBefore ( document . createComment ( data ) , null ) ;
95+ fragment . insertBefore ( create_comment ( data ) , null ) ;
8896 } else if ( typeof item === 'string' ) {
89- fragment . appendChild ( document . createTextNode ( item ) ) ;
97+ fragment . appendChild ( create_text ( item ) ) ;
9098 continue ;
9199 } else {
92100 let namespace =
@@ -107,25 +115,10 @@ function structure_to_fragment(structure, ns, namespace_stack = [], foreign_obje
107115 if ( namespace !== namespace_stack [ namespace_stack . length - 1 ] ) {
108116 namespace_stack . push ( namespace ) ;
109117 }
110- var args = [ item . e ] ;
111- if ( item . is ) {
112- // @ts -ignore
113- args . push ( { is : item . is } ) ;
114- }
115- if ( namespace ) {
116- args . unshift ( namespace ) ;
117- }
118- var element = /** @type {HTMLElement } */ (
119- // @ts -ignore
120- ( namespace ? document . createElementNS : document . createElement ) . call ( document , ...args )
121- ) ;
118+ var element = create_element ( item . e , namespace , item . is ) ;
122119
123120 for ( var key in item . p ) {
124- if ( key . startsWith ( 'xlink:' ) ) {
125- element . setAttributeNS ( 'http://www.w3.org/1999/xlink' , key , item . p [ key ] ?? '' ) ;
126- continue ;
127- }
128- element . setAttribute ( key , item . p [ key ] ?? '' ) ;
121+ set_attribute ( element , key , item . p [ key ] ) ;
129122 }
130123 if ( item . c ) {
131124 ( element . tagName === 'TEMPLATE'
0 commit comments