File tree Expand file tree Collapse file tree 4 files changed +19
-29
lines changed Expand file tree Collapse file tree 4 files changed +19
-29
lines changed Original file line number Diff line number Diff line change @@ -133,14 +133,7 @@ export abstract class LabWidgetManager extends ManagerBase
133
133
) {
134
134
const data = msg . content . data as any ;
135
135
const buffer_paths = data . buffer_paths || [ ] ;
136
- // Make sure the buffers are DataViews
137
- const buffers = ( msg . buffers || [ ] ) . map ( b => {
138
- if ( b instanceof DataView ) {
139
- return b ;
140
- } else {
141
- return new DataView ( b instanceof ArrayBuffer ? b : b . buffer ) ;
142
- }
143
- } ) ;
136
+ const buffers = msg . buffers || [ ] ;
144
137
put_buffers ( data . state , buffer_paths , buffers ) ;
145
138
info . resolve ( { comm, msg } ) ;
146
139
}
Original file line number Diff line number Diff line change @@ -157,14 +157,7 @@ export abstract class ManagerBase implements IWidgetManager {
157
157
}
158
158
const data = ( msg . content . data as unknown ) as ISerializedState ;
159
159
const buffer_paths = data . buffer_paths || [ ] ;
160
- // Make sure the buffers are DataViews
161
- const buffers = ( msg . buffers || [ ] ) . map ( b => {
162
- if ( b instanceof DataView ) {
163
- return b ;
164
- } else {
165
- return new DataView ( b instanceof ArrayBuffer ? b : b . buffer ) ;
166
- }
167
- } ) ;
160
+ const buffers = msg . buffers || [ ] ;
168
161
put_buffers ( data . state , buffer_paths , buffers ) ;
169
162
return this . new_model (
170
163
{
Original file line number Diff line number Diff line change @@ -100,18 +100,30 @@ export function reject(message: string, log: boolean) {
100
100
export function put_buffers (
101
101
state : Dict < BufferJSON > ,
102
102
buffer_paths : ( string | number ) [ ] [ ] ,
103
- buffers : DataView [ ]
103
+ buffers : (
104
+ | DataView
105
+ | ArrayBuffer
106
+ | ArrayBufferView
107
+ | { buffer : ArrayBuffer }
108
+ ) [ ]
104
109
) : void {
105
110
for ( let i = 0 ; i < buffer_paths . length ; i ++ ) {
106
111
const buffer_path = buffer_paths [ i ] ;
107
- // say we want to set state[x][y][z] = buffers[i]
112
+ // make sure the buffers are DataViews
113
+ let buffer = buffers [ i ] ;
114
+ if ( ! ( buffer instanceof DataView ) ) {
115
+ buffer = new DataView (
116
+ buffer instanceof ArrayBuffer ? buffer : buffer . buffer
117
+ ) ;
118
+ }
119
+ // say we want to set state[x][y][z] = buffer
108
120
let obj = state as any ;
109
121
// we first get obj = state[x][y]
110
122
for ( let j = 0 ; j < buffer_path . length - 1 ; j ++ ) {
111
123
obj = obj [ buffer_path [ j ] ] ;
112
124
}
113
- // and then set: obj[z] = buffers[i]
114
- obj [ buffer_path [ buffer_path . length - 1 ] ] = buffers [ i ] ;
125
+ // and then set: obj[z] = buffer
126
+ obj [ buffer_path [ buffer_path . length - 1 ] ] = buffer ;
115
127
}
116
128
}
117
129
Original file line number Diff line number Diff line change @@ -216,15 +216,7 @@ export class WidgetModel extends Backbone.Model {
216
216
. then ( ( ) => {
217
217
const state = data . state ;
218
218
const buffer_paths = data . buffer_paths || [ ] ;
219
- // Make sure the buffers are DataViews
220
- const buffers = ( msg . buffers || [ ] ) . map ( b => {
221
- if ( b instanceof DataView ) {
222
- return b ;
223
- } else {
224
- return new DataView ( b instanceof ArrayBuffer ? b : b . buffer ) ;
225
- }
226
- } ) ;
227
-
219
+ const buffers = msg . buffers || [ ] ;
228
220
utils . put_buffers ( state , buffer_paths , buffers ) ;
229
221
return ( this . constructor as typeof WidgetModel ) . _deserialize_state (
230
222
state ,
You can’t perform that action at this time.
0 commit comments