@@ -307,25 +307,26 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
307
307
addCsiHandler ( flag : string , callback : ( params : number [ ] , collect : string ) => boolean ) : IDisposable {
308
308
const index = flag . charCodeAt ( 0 ) ;
309
309
const oldHead = this . _csiHandlers [ index ] ;
310
- const newHead = Object . assign (
310
+ const parser = this ;
311
+ const newHead =
311
312
( 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 ] ;
319
321
for ( ; cur && cur . nextHandler ;
320
322
previous = cur , cur = cur . nextHandler ) {
321
323
if ( cur === newHead ) {
322
324
if ( previous ) { previous . nextHandler = cur . nextHandler ; }
323
- else { this . _csiHandlers [ index ] = cur . nextHandler ; }
325
+ else { parser . _csiHandlers [ index ] = cur . nextHandler ; }
324
326
break ;
325
327
}
326
328
}
327
- }
328
- } ) ;
329
+ } ;
329
330
this . _csiHandlers [ index ] = newHead ;
330
331
return newHead ;
331
332
}
@@ -352,25 +353,27 @@ export class EscapeSequenceParser extends Disposable implements IEscapeSequenceP
352
353
353
354
addOscHandler ( ident : number , callback : ( data : string ) => boolean ) : IDisposable {
354
355
const oldHead = this . _oscHandlers [ ident ] ;
355
- const newHead = Object . assign (
356
+ const parser = this ;
357
+ const newHead =
356
358
( 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 ] ;
364
368
for ( ; cur && cur . nextHandler ;
365
369
previous = cur , cur = cur . nextHandler ) {
366
370
if ( cur === newHead ) {
367
371
if ( previous ) { previous . nextHandler = cur . nextHandler ; }
368
- else { this . _oscHandlers [ ident ] = cur . nextHandler ; }
372
+ else { parser . _oscHandlers [ ident ] = cur . nextHandler ; }
369
373
break ;
370
374
}
371
375
}
372
- }
373
- } ) ;
376
+ } ;
374
377
this . _oscHandlers [ ident ] = newHead ;
375
378
return newHead ;
376
379
}
0 commit comments