@@ -185,15 +185,18 @@ class CellExecution {
185185 result : Result
186186 onStdout ?: ( out : ProcessMessage ) => Promise < void > | void
187187 onStderr ?: ( out : ProcessMessage ) => Promise < void > | void
188+ onDisplayData ?: ( data : Data ) => Promise < void > | void
188189 inputAccepted : boolean = false
189190
190191 constructor (
191192 onStdout ?: ( out : ProcessMessage ) => Promise < void > | void ,
192- onStderr ?: ( out : ProcessMessage ) => Promise < void > | void
193+ onStderr ?: ( out : ProcessMessage ) => Promise < void > | void ,
194+ onDisplayData ?: ( data : Data ) => Promise < void > | void
193195 ) {
194196 this . result = new Result ( [ ] , { stdout : [ ] , stderr : [ ] } )
195197 this . onStdout = onStdout
196198 this . onStderr = onStderr
199+ this . onDisplayData = onDisplayData
197200 }
198201}
199202
@@ -288,6 +291,9 @@ export class JupyterKernelWebSocket {
288291 }
289292 } else if ( message . msg_type == 'display_data' ) {
290293 result . data . push ( new Data ( message . content . data , false ) )
294+ if ( cell . onDisplayData ) {
295+ cell . onDisplayData ( new Data ( message . content . data , false ) )
296+ }
291297 } else if ( message . msg_type == 'execute_result' ) {
292298 result . data . push ( new Data ( message . content . data , true ) )
293299 } else if ( message . msg_type == 'status' ) {
@@ -327,13 +333,15 @@ export class JupyterKernelWebSocket {
327333 * @param code Code to be executed.
328334 * @param onStdout Callback for stdout messages.
329335 * @param onStderr Callback for stderr messages.
336+ * @param onDisplayData Callback for display data messages.
330337 * @param timeout Time in milliseconds to wait for response.
331338 * @returns Promise with execution result.
332339 */
333340 public sendExecutionMessage (
334341 code : string ,
335342 onStdout ?: ( out : ProcessMessage ) => Promise < void > | void ,
336343 onStderr ?: ( out : ProcessMessage ) => Promise < void > | void ,
344+ onDisplayData ?: ( data : Data ) => Promise < void > | void ,
337345 timeout ?: number
338346 ) {
339347 return new Promise < Result > ( ( resolve , reject ) => {
@@ -355,7 +363,7 @@ export class JupyterKernelWebSocket {
355363 }
356364
357365 // expect response
358- this . cells [ msg_id ] = new CellExecution ( onStdout , onStderr )
366+ this . cells [ msg_id ] = new CellExecution ( onStdout , onStderr , onDisplayData )
359367 this . idAwaiter [ msg_id ] = ( responseData : Result ) => {
360368 // stop timeout
361369 clearInterval ( timeoutSet as number )
0 commit comments