@@ -307,25 +307,26 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
307307 addCsiHandler ( flag : string , callback : ( params : number [ ] , collect : string ) => boolean ) : IDisposable {
308308 const index = flag . charCodeAt ( 0 ) ;
309309 const oldHead = this . _csiHandlers [ index ] ;
310- const newHead = Object . assign (
310+ const parser = this ;
311+ const newHead =
311312 ( params : number [ ] , collect : string ) : void => {
312- if ( callback ( params , collect ) ) { }
313- else if ( newHead . nextHandler ) { newHead . nextHandler ( params , collect ) ; }
314- else { this . _csiHandlerFb ( collect , params , index ) ; }
315- } ,
316- { nextHandler : oldHead ,
317- dispose ( ) : void {
318- let previous = null ; let cur = this . _csiHandlers [ index ] ;
313+ if ( ! callback ( params , collect ) ) {
314+ if ( newHead . nextHandler ) { newHead . nextHandler ( params , collect ) ; }
315+ else { this . _csiHandlerFb ( collect , params , index ) ; }
316+ }
317+ } ;
318+ newHead . nextHandler = oldHead ;
319+ newHead . dispose = function ( ) : void {
320+ let previous = null ; let cur = parser . _csiHandlers [ index ] ;
319321 for ( ; cur && cur . nextHandler ;
320322 previous = cur , cur = cur . nextHandler ) {
321323 if ( cur === newHead ) {
322324 if ( previous ) { previous . nextHandler = cur . nextHandler ; }
323- else { this . _csiHandlers [ index ] = cur . nextHandler ; }
325+ else { parser . _csiHandlers [ index ] = cur . nextHandler ; }
324326 break ;
325327 }
326328 }
327- }
328- } ) ;
329+ } ;
329330 this . _csiHandlers [ index ] = newHead ;
330331 return newHead ;
331332 }
@@ -352,25 +353,27 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
352353
353354 addOscHandler ( ident : number , callback : ( data : string ) => boolean ) : IDisposable {
354355 const oldHead = this . _oscHandlers [ ident ] ;
355- const newHead = Object . assign (
356+ const parser = this ;
357+ const newHead =
356358 ( data : string ) : void => {
357- if ( callback ( data ) ) { }
358- else if ( newHead . nextHandler ) { newHead . nextHandler ( data ) ; }
359- else { this . _oscHandlerFb ( ident , data ) ; }
360- } ,
361- { nextHandler : oldHead ,
362- dispose ( ) : void {
363- let previous = null ; let cur = this . _oscHandlers [ ident ] ;
359+ if ( ! callback ( data ) ) {
360+ if ( newHead . nextHandler ) { newHead . nextHandler ( data ) ; }
361+ else { this . _oscHandlerFb ( ident , data ) ; }
362+ }
363+ } ;
364+ newHead . nextHandler = oldHead ;
365+ newHead . dispose =
366+ function ( ) : void {
367+ let previous = null ; let cur = parser . _oscHandlers [ ident ] ;
364368 for ( ; cur && cur . nextHandler ;
365369 previous = cur , cur = cur . nextHandler ) {
366370 if ( cur === newHead ) {
367371 if ( previous ) { previous . nextHandler = cur . nextHandler ; }
368- else { this . _oscHandlers [ ident ] = cur . nextHandler ; }
372+ else { parser . _oscHandlers [ ident ] = cur . nextHandler ; }
369373 break ;
370374 }
371375 }
372- }
373- } ) ;
376+ } ;
374377 this . _oscHandlers [ ident ] = newHead ;
375378 return newHead ;
376379 }
0 commit comments