@@ -182,7 +182,28 @@ module.exports = function(modules) {
182
182
var Fragment = function ( props , children ) {
183
183
return children ;
184
184
} ;
185
- var _ADD_CHILDREN ;
185
+ var _ELEMENT_DEFAULT_XML_ , _ATTRIBUTE_DEFAULT_XM , _ADD_CHILDREN ;
186
+ var ELEMENT_DEFAULT_XML_NAMESPACE = ( ( _ELEMENT_DEFAULT_XML_ = { } ) . svg = "http://www.w3.org/2000/svg" ,
187
+ _ELEMENT_DEFAULT_XML_ ) ;
188
+ var ATTRIBUTE_DEFAULT_XML_NAMESPACE = ( ( _ATTRIBUTE_DEFAULT_XM = { } ) [ "xlink:href" ] = "http://www.w3.org/1999/xlink" ,
189
+ _ATTRIBUTE_DEFAULT_XM ) ;
190
+ function createTextElement ( doc , node ) {
191
+ return doc . createTextNode ( node . text ) ;
192
+ }
193
+ function addProps ( el , node ) {
194
+ var props = node . props ;
195
+ for ( var _i4 = 0 , _Object$keys2 = Object . keys ( props ) ; _i4 < _Object$keys2 . length ; _i4 ++ ) {
196
+ var prop = _Object$keys2 [ _i4 ] ;
197
+ var val = props [ prop ] ;
198
+ if ( null != val && "el" !== prop && "innerHTML" !== prop ) if ( prop . match ( / ^ o n [ A - Z ] [ a - z ] / ) && "function" == typeof val ) el . addEventListener ( prop . slice ( 2 ) . toLowerCase ( ) , val ) ; else if ( "string" == typeof val || "number" == typeof val ) {
199
+ var xmlNamespace = ATTRIBUTE_DEFAULT_XML_NAMESPACE [ prop ] ;
200
+ xmlNamespace ? el . setAttributeNS ( xmlNamespace , prop , val . toString ( ) ) : el . setAttribute ( prop , val . toString ( ) ) ;
201
+ } else "boolean" == typeof val && ! 0 === val && el . setAttribute ( prop , "" ) ;
202
+ }
203
+ "iframe" !== el . tagName . toLowerCase ( ) || props . id || el . setAttribute ( "id" , "jsx-iframe-" + "xxxxxxxxxx" . replace ( / ./ g, ( function ( ) {
204
+ return "0123456789abcdef" . charAt ( Math . floor ( Math . random ( ) * "0123456789abcdef" . length ) ) ;
205
+ } ) ) ) ;
206
+ }
186
207
var ADD_CHILDREN = ( ( _ADD_CHILDREN = { } ) . iframe = function ( el , node ) {
187
208
var firstChild = node . children [ 0 ] ;
188
209
if ( 1 !== node . children . length || ! firstChild || "element" !== firstChild . type || "html" !== firstChild . name ) throw new Error ( "Expected only single html element node as child of iframe element" ) ;
@@ -197,46 +218,31 @@ module.exports = function(modules) {
197
218
var _opts$doc = opts . doc , doc = void 0 === _opts$doc ? document : _opts$doc ;
198
219
return function domRenderer ( node ) {
199
220
if ( "component" === node . type ) return node . renderComponent ( domRenderer ) ;
200
- if ( "text" === node . type ) return function ( doc , node ) {
201
- return doc . createTextNode ( node . text ) ;
202
- } ( doc , node ) ;
221
+ if ( "text" === node . type ) return createTextElement ( doc , node ) ;
203
222
if ( "element" === node . type ) {
223
+ var xmlNamespace = ELEMENT_DEFAULT_XML_NAMESPACE [ node . name . toLowerCase ( ) ] ;
224
+ if ( xmlNamespace ) return function xmlNamespaceDomRenderer ( node , xmlNamespace ) {
225
+ if ( "component" === node . type ) return node . renderComponent ( ( function ( childNode ) {
226
+ return xmlNamespaceDomRenderer ( childNode , xmlNamespace ) ;
227
+ } ) ) ;
228
+ if ( "text" === node . type ) return createTextElement ( doc , node ) ;
229
+ if ( "element" === node . type ) {
230
+ var el = function ( doc , node , xmlNamespace ) {
231
+ return doc . createElementNS ( xmlNamespace , node . name ) ;
232
+ } ( doc , node , xmlNamespace ) ;
233
+ addProps ( el , node ) ;
234
+ addChildren ( el , node , doc , ( function ( childNode ) {
235
+ return xmlNamespaceDomRenderer ( childNode , xmlNamespace ) ;
236
+ } ) ) ;
237
+ return el ;
238
+ }
239
+ throw new TypeError ( "Unhandleable node" ) ;
240
+ } ( node , xmlNamespace ) ;
204
241
var el = function ( doc , node ) {
205
242
return node . props . el ? node . props . el : doc . createElement ( node . name ) ;
206
243
} ( doc , node ) ;
207
- ! function ( el , node ) {
208
- var props = node . props ;
209
- for ( var _i4 = 0 , _Object$keys2 = Object . keys ( props ) ; _i4 < _Object$keys2 . length ; _i4 ++ ) {
210
- var prop = _Object$keys2 [ _i4 ] ;
211
- var val = props [ prop ] ;
212
- null != val && "el" !== prop && "innerHTML" !== prop && ( prop . match ( / ^ o n [ A - Z ] [ a - z ] / ) && "function" == typeof val ? el . addEventListener ( prop . slice ( 2 ) . toLowerCase ( ) , val ) : "string" == typeof val || "number" == typeof val ? el . setAttribute ( prop , val . toString ( ) ) : "boolean" == typeof val && ! 0 === val && el . setAttribute ( prop , "" ) ) ;
213
- }
214
- "iframe" !== el . tagName . toLowerCase ( ) || props . id || el . setAttribute ( "id" , "jsx-iframe-" + "xxxxxxxxxx" . replace ( / ./ g, ( function ( ) {
215
- return "0123456789abcdef" . charAt ( Math . floor ( Math . random ( ) * "0123456789abcdef" . length ) ) ;
216
- } ) ) ) ;
217
- } ( el , node ) ;
218
- ! function ( el , node , doc , renderer ) {
219
- if ( node . props . hasOwnProperty ( "innerHTML" ) ) {
220
- if ( node . children . length ) throw new Error ( "Expected no children to be passed when innerHTML prop is set" ) ;
221
- var html = node . props . innerHTML ;
222
- if ( "string" != typeof html ) throw new TypeError ( "innerHTML prop must be string" ) ;
223
- if ( "script" === node . name ) el . text = html ; else {
224
- el . innerHTML = html ;
225
- ! function ( el , doc ) {
226
- void 0 === doc && ( doc = window . document ) ;
227
- for ( var _i2 = 0 , _el$querySelectorAll2 = el . querySelectorAll ( "script" ) ; _i2 < _el$querySelectorAll2 . length ; _i2 ++ ) {
228
- var script = _el$querySelectorAll2 [ _i2 ] ;
229
- var parentNode = script . parentNode ;
230
- if ( parentNode ) {
231
- var newScript = doc . createElement ( "script" ) ;
232
- newScript . text = script . textContent ;
233
- parentNode . replaceChild ( newScript , script ) ;
234
- }
235
- }
236
- } ( el , doc ) ;
237
- }
238
- } else ( ADD_CHILDREN [ node . name ] || ADD_CHILDREN . default ) ( el , node , renderer ) ;
239
- } ( el , node , doc , domRenderer ) ;
244
+ addProps ( el , node ) ;
245
+ addChildren ( el , node , doc , domRenderer ) ;
240
246
return el ;
241
247
}
242
248
throw new TypeError ( "Unhandleable node" ) ;
@@ -253,6 +259,28 @@ module.exports = function(modules) {
253
259
} , _ADD_CHILDREN . default = function ( el , node , renderer ) {
254
260
for ( var _i6 = 0 , _node$renderChildren2 = node . renderChildren ( renderer ) ; _i6 < _node$renderChildren2 . length ; _i6 ++ ) el . appendChild ( _node$renderChildren2 [ _i6 ] ) ;
255
261
} , _ADD_CHILDREN ) ;
262
+ function addChildren ( el , node , doc , renderer ) {
263
+ if ( node . props . hasOwnProperty ( "innerHTML" ) ) {
264
+ if ( node . children . length ) throw new Error ( "Expected no children to be passed when innerHTML prop is set" ) ;
265
+ var html = node . props . innerHTML ;
266
+ if ( "string" != typeof html ) throw new TypeError ( "innerHTML prop must be string" ) ;
267
+ if ( "script" === node . name ) el . text = html ; else {
268
+ el . innerHTML = html ;
269
+ ! function ( el , doc ) {
270
+ void 0 === doc && ( doc = window . document ) ;
271
+ for ( var _i2 = 0 , _el$querySelectorAll2 = el . querySelectorAll ( "script" ) ; _i2 < _el$querySelectorAll2 . length ; _i2 ++ ) {
272
+ var script = _el$querySelectorAll2 [ _i2 ] ;
273
+ var parentNode = script . parentNode ;
274
+ if ( parentNode ) {
275
+ var newScript = doc . createElement ( "script" ) ;
276
+ newScript . text = script . textContent ;
277
+ parentNode . replaceChild ( newScript , script ) ;
278
+ }
279
+ }
280
+ } ( el , doc ) ;
281
+ }
282
+ } else ( ADD_CHILDREN [ node . name ] || ADD_CHILDREN . default ) ( el , node , renderer ) ;
283
+ }
256
284
function Spinner ( _ref ) {
257
285
return node_node ( "div" , {
258
286
class : "preloader spinner"
0 commit comments