Skip to content

Commit b663b7d

Browse files
committed
Fix binary buffers
1 parent 6c1fae8 commit b663b7d

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

packages/voila/src/manager.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -203,12 +203,20 @@ export class WidgetManager extends JupyterLabManager {
203203
{ widgets: null }
204204
);
205205

206-
const [widgetsInfo, buffers]: any = await new Promise(resolve => {
206+
let [widgetsInfo, buffers]: any = await new Promise(resolve => {
207207
initComm.on_msg(msg => {
208208
const info = JSON.parse(
209209
Buffer.from(new Int8Array(msg.buffers[0].buffer)).toString('utf-8')
210210
);
211-
resolve([info, msg.buffers.slice(1)]);
211+
212+
const buffers = (msg.buffers.slice(1) || []).map((b: any) => {
213+
if (b instanceof DataView) {
214+
return b;
215+
} else {
216+
return new DataView(b instanceof ArrayBuffer ? b : b.buffer);
217+
}
218+
});
219+
resolve([info, buffers]);
212220
});
213221
});
214222

@@ -234,9 +242,11 @@ export class WidgetManager extends JupyterLabManager {
234242
try {
235243
const comm = await this._create_comm('jupyter.widget', widget_id);
236244

237-
// If we have binary buffers
245+
// Put binary buffers
238246
if (widget_id in bufferPaths) {
239-
base.put_buffers(state, bufferPaths[widget_id], buffers);
247+
const nBuffers = bufferPaths[widget_id].length;
248+
base.put_buffers(state, bufferPaths[widget_id], buffers.slice(0, nBuffers));
249+
buffers = buffers.slice(nBuffers);
240250
}
241251

242252
const modelPromise = this.new_model(

0 commit comments

Comments
 (0)