Skip to content

Commit 3f253a4

Browse files
author
Matthew Toohey
committed
Make handle_binary compliant with the KernelMessage.IMessage spec
Since Jupyterlab v4.0.0a21 the buffers deserialized from a KernelMessage are now of type ArrayBuffer instead of the DataView type handle_binary expects. However, it turns out that the spec for KernelMessage.IMessage has always specifed that buffers could be either an ArrayBuffer or an ArrayBufferView. This commit ensures either type is accepted.
1 parent a90cf76 commit 3f253a4

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/mpl_widget.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,10 @@ export class MPLCanvasModel extends DOMWidgetModel {
234234
this.send_draw_message();
235235
}
236236

237-
handle_binary(msg: any, dataviews: any) {
237+
handle_binary(msg: any, buffers: (ArrayBuffer | ArrayBufferView)[]) {
238238
const url_creator = window.URL || window.webkitURL;
239239

240-
const buffer = new Uint8Array(dataviews[0].buffer);
240+
const buffer = new Uint8Array(ArrayBuffer.isView(buffers[0]) ? buffers[0].buffer : buffers[0]);
241241
const blob = new Blob([buffer], { type: 'image/png' });
242242
const image_url = url_creator.createObjectURL(blob);
243243

@@ -263,7 +263,7 @@ export class MPLCanvasModel extends DOMWidgetModel {
263263
// button to toggle?
264264
}
265265

266-
on_comm_message(evt: any, dataviews: any) {
266+
on_comm_message(evt: any, buffers: (ArrayBuffer | ArrayBufferView)[]) {
267267
const msg = JSON.parse(evt.data);
268268
const msg_type = msg['type'];
269269
let callback;
@@ -281,7 +281,7 @@ export class MPLCanvasModel extends DOMWidgetModel {
281281
}
282282

283283
if (callback) {
284-
callback(msg, dataviews);
284+
callback(msg, buffers);
285285
}
286286
}
287287

0 commit comments

Comments
 (0)