@@ -306,19 +306,24 @@ async function renderTemplate(template, data, key, index, keyPath) {
306306			renderReverse  =  template . element . getAttribute ( "render-reverse" ) ; 
307307	} 
308308
309+ 	let  exclude  =  template . element . getAttribute ( "render-exclude" )  ||  "" ; 
310+ 	if  ( exclude )  { 
311+ 		exclude  =  exclude . replace ( /   / g,  "" ) . split ( "," ) ; 
312+ 	} 
313+ 	let  reference  =  template . element . getAttribute ( "render-reference" ) ; 
314+ 
309315	if  ( ( key  &&  ! Array . isArray ( renderData ) )  ||  renderType  ===  "object" )  { 
310316		if  ( renderType  &&  Array . isArray ( renderData )  &&  renderData . length  ===  1 ) 
311317			renderData  =  renderData [ 0 ] ; 
312318
313- 		let  exclude  =  template . element . getAttribute ( "render-exclude" )  ||  "" ; 
314- 		if  ( exclude )  { 
315- 			exclude  =  exclude . replace ( /   / g,  "" ) . split ( "," ) ; 
316- 			if  ( ! Array . isArray ( exclude ) )  exclude  =  [ exclude ] ; 
317- 		} 
318- 
319319		const  keys  =  Object . keys ( renderData ) ; 
320320		for  ( let  i  =  0 ;  i  <  keys . length ;  i ++ )  { 
321321			if  ( exclude . includes ( keys [ i ] ) )  continue ; 
322+ 			if  ( 
323+ 				reference  ===  "false"  && 
324+ 				[ "$storage" ,  "$database" ,  "$array" ] . includes ( key ) 
325+ 			) 
326+ 				continue ; 
322327
323328			let  value  =  renderData [ keys [ i ] ] ; 
324329			let  type  =  "string" ; 
@@ -364,12 +369,21 @@ async function renderTemplate(template, data, key, index, keyPath) {
364369
365370				clone . keyPath  =  template . keyPath  ||  ""  +  `[${ i }  ]` ; 
366371
367- 				let  object ; 
372+ 				let  object  =  {  ...renderData [ i ]  } ; 
373+ 				for  ( let  j  =  0 ;  j  <  exclude . length ;  j ++ ) 
374+ 					delete  object [ exclude [ j ] ] ; 
375+ 
376+ 				if  ( reference  ===  "false" )  { 
377+ 					delete  object . $storage ; 
378+ 					delete  object . $database ; 
379+ 					delete  object . $array ; 
380+ 				} 
381+ 
368382				if  ( renderAs )  { 
369- 					object  =  {  [ renderAs ] : renderData [ i ]  } ; 
383+ 					object  =  {  [ renderAs ] : object  } ; 
370384					if  ( renderAs . includes ( "." ) ) 
371385						object  =  dotNotationToObject ( object ) ; 
372- 				}  else  object  =  renderData [ i ] ; 
386+ 				}  else  object  =  object ; 
373387
374388				let  index ; 
375389				if  ( key  !==  "data" )  index  =  i ; 
@@ -1018,7 +1032,7 @@ Actions.init({
10181032		let  array  =  action . form . getAttribute ( "array" ) ; 
10191033		if  ( array )  data  =  data . find ( ( obj )  =>  obj . array  ===  array ) ; 
10201034		for  ( let  i  =  0 ;  i  <  elements . length ;  i ++ ) 
1021- 			render ( {  source : elements [ i ] ,  data } ) ; 
1035+ 			await   render ( {  source : elements [ i ] ,  data } ) ; 
10221036
10231037		document . dispatchEvent ( 
10241038			new  CustomEvent ( "render" ,  { 
0 commit comments