55
66import type { ITerminalAddon , IDisposable } from '@xterm/xterm' ;
77import type { ImageAddon as IImageApi } from '@xterm/addon-image' ;
8+ import { Emitter , type IEvent } from 'common/Event' ;
89import { IIPHandler } from './IIPHandler' ;
910import { ImageRenderer } from './ImageRenderer' ;
1011import { ImageStorage , CELL_SIZE_DEFAULT } from './ImageStorage' ;
@@ -62,6 +63,8 @@ export class ImageAddon implements ITerminalAddon, IImageApi {
6263 private _disposables : IDisposable [ ] = [ ] ;
6364 private _terminal : ITerminalExt | undefined ;
6465 private _handlers : Map < String , IResetHandler > = new Map ( ) ;
66+ private readonly _onImageAdded = new Emitter < void > ( ) ;
67+ public readonly onImageAdded : IEvent < void > = this . _onImageAdded . event ;
6568
6669 constructor ( opts ?: Partial < IImageAddonOptions > ) {
6770 this . _opts = Object . assign ( { } , DEFAULT_OPTIONS , opts ) ;
@@ -74,6 +77,7 @@ export class ImageAddon implements ITerminalAddon, IImageApi {
7477 }
7578 this . _disposables . length = 0 ;
7679 this . _handlers . clear ( ) ;
80+ this . _onImageAdded . dispose ( ) ;
7781 }
7882
7983 private _disposeLater ( ...args : IDisposable [ ] ) : void {
@@ -88,6 +92,7 @@ export class ImageAddon implements ITerminalAddon, IImageApi {
8892 // internal data structures
8993 this . _renderer = new ImageRenderer ( terminal ) ;
9094 this . _storage = new ImageStorage ( terminal , this . _renderer , this . _opts ) ;
95+ this . _storage . onImageAdded = ( ) => this . _onImageAdded . fire ( ) ;
9196
9297 // enable size reports
9398 if ( this . _opts . enableSizeReports ) {
0 commit comments