@@ -423,26 +423,26 @@ export class PulsDOMAdapter extends PulsAdapter<Node[]>{
423423 this . afterElement ( el , e )
424424 el = e
425425
426+ // TODO Fix reactive list bugs
426427 const addReplaceListener = ( toRepl : ChildNode ) => {
427428 const events = new Map < string , any > ( )
428429 events . set ( ':replace_with' , ( { detail : { from, to} } : any ) => {
429- console . count ( )
430- console . log ( from , to )
431- events . forEach ( ( value , key ) => toRepl . removeEventListener ( key , value as any ) )
432430 for ( const innerEl of to ) {
433- if ( ! elements . includes ( innerEl ) ) {
434- elements . push ( innerEl )
431+ if ( ! from . includes ( innerEl ) ) {
435432 addReplaceListener ( innerEl )
436433 }
437434 }
438435 } )
439436
440437 events . set ( ':detached' , ( ) => {
441- events . forEach ( ( value , key ) => toRepl . removeEventListener ( key , value as any ) )
442- elements . splice ( elements . findIndex ( el => el === toRepl ) , 1 )
438+ const isEl = elements . findIndex ( el => el === toRepl )
439+
440+ if ( isEl !== - 1 ) {
441+ events . forEach ( ( value , key ) => toRepl . removeEventListener ( key , value as any ) )
442+ elements . splice ( isEl , 1 )
443+ }
443444 } )
444445 events . set ( ':attached' , ( ) => {
445- events . forEach ( ( value , key ) => toRepl . removeEventListener ( key , value as any ) )
446446 if ( ! elements . includes ( toRepl ) ) {
447447 elements . push ( toRepl )
448448 }
0 commit comments