@@ -374,7 +374,7 @@ export class DataGridModel extends DOMWidgetModel {
374374 transforms : { deserialize : unpack_models as any } ,
375375 renderers : {
376376 deserialize : unpack_models as any ,
377- serialize : pack_models as any ,
377+ serialize : debug as any ,
378378 } ,
379379 corner_renderer : { deserialize : unpack_models as any } ,
380380 default_renderer : { deserialize : unpack_models as any } ,
@@ -400,6 +400,40 @@ export class DataGridModel extends DOMWidgetModel {
400400 _view_callbacks : ICallbacks ;
401401}
402402
403+ function debug ( value : any ) {
404+ const upm = debug_pack_models ( value ) ;
405+ console . log ( 'first' , value ) ;
406+ console . log ( 'upm' , upm ) ;
407+ return upm ;
408+ }
409+ const IPY_MODEL_ = 'IPY_MODEL_' ;
410+
411+ function debug_pack_models (
412+ value : WidgetModel | Dict < WidgetModel > | WidgetModel [ ] | any ,
413+ widget ?: WidgetModel ,
414+ ) : any | Dict < unknown > | string | ( Dict < unknown > | string ) [ ] {
415+ if ( Array . isArray ( value ) ) {
416+ console . log ( 'array' ) ;
417+ const model_ids : string [ ] = [ ] ;
418+ for ( const model of value ) {
419+ model_ids . push ( pack_models ( model , widget ) ) ;
420+ }
421+ return model_ids ;
422+ } else if ( value instanceof WidgetModel ) {
423+ console . log ( 'widget model' ) ;
424+ return `${ IPY_MODEL_ } ${ value . model_id } ` ;
425+ } else if ( value instanceof Object && typeof value !== 'string' ) {
426+ console . log ( 'object' ) ;
427+ const packed : { [ key : string ] : string } = { } ;
428+ for ( const [ key , sub_value ] of Object . entries ( value ) ) {
429+ packed [ key ] = pack_models ( sub_value , widget ) ;
430+ }
431+ return packed ;
432+ } else {
433+ return value ;
434+ }
435+ }
436+
403437/**
404438 * Helper function to convert snake_case strings to camelCase.
405439 * Assumes all strings are valid snake_case (all lowercase).
0 commit comments