@@ -415,14 +415,15 @@ modules["editor/realtime"] = class {
415415 }
416416 return this . removeRealtime ( memberID ) ;
417417 }
418- clearInterval ( member . interval ) ;
419- member . interval = setInterval ( ( ) => {
418+ clearTimeout ( member . timeout ) ;
419+ member . timeout = setTimeout ( ( ) => {
420420 this . removeRealtime ( memberID ) ;
421421 } , 120000 ) ; // Remove realtime member elements if inactive for 2 minutes
422422 let cursorHolder = member . elements . cursor ;
423423 if ( cursorHolder == null ) {
424- realtimeHolder . insertAdjacentHTML ( "beforeend" , `<div class="eCursor" member="${ memberID } " scale notransition></div>` ) ;
425- cursorHolder = realtimeHolder . querySelector ( '.eCursor[member="' + memberID + '"]' ) ;
424+ realtimeHolder . insertAdjacentHTML ( "beforeend" , `<div class="eCursor" member="${ memberID } " scale notransition new></div>` ) ;
425+ cursorHolder = realtimeHolder . querySelector ( '.eCursor[member="' + memberID + '"][new]' ) ;
426+ cursorHolder . removeAttribute ( "new" ) ;
426427 member . elements . cursor = cursorHolder ;
427428 cursorHolder . offsetHeight ;
428429 cursorHolder . style . opacity = 1 ;
@@ -847,15 +848,19 @@ modules["editor/realtime"] = class {
847848 if ( editor . realtime . observing == memberID ) {
848849 this . exitObserve ( ) ;
849850 }
850- if ( member == null || member . elements == null ) {
851+ if ( member == null ) {
851852 return ;
852853 }
853- let memberElements = [ ] ;
854- let elementKeys = Object . keys ( member . elements ) ;
855- for ( let i = 0 ; i < elementKeys . length ; i ++ ) {
856- memberElements . push ( member . elements [ elementKeys [ i ] ] ) ;
854+
855+ clearTimeout ( member . timeout ) ;
856+
857+ if ( member . elements == null ) {
858+ return ;
857859 }
860+
861+ let memberElements = Object . values ( member . elements ) ;
858862 member . elements = { } ;
863+
859864 ( async function ( ) {
860865 for ( let i = 0 ; i < memberElements . length ; i ++ ) {
861866 let elem = memberElements [ i ] ;
0 commit comments