@@ -14,7 +14,7 @@ import {
14
14
15
15
import { Panel , Widget } from '@lumino/widgets' ;
16
16
17
- import { JSONObject , JSONValue } from '@lumino/coreutils' ;
17
+ import { JSONObject } from '@lumino/coreutils' ;
18
18
19
19
import { Dict } from './utils' ;
20
20
@@ -37,13 +37,6 @@ import {
37
37
*/
38
38
const IPY_MODEL_ = 'IPY_MODEL_' ;
39
39
40
- /**
41
- * A best-effort method for performing deep copies.
42
- */
43
- const deepcopyJSON = ( x : JSONValue ) => JSON . parse ( JSON . stringify ( x ) ) ;
44
-
45
- const deepcopy = ( globalThis as any ) . structuredClone || deepcopyJSON ;
46
-
47
40
/**
48
41
* Replace model ids with models recursively.
49
42
*/
@@ -538,18 +531,11 @@ class WidgetModel extends Backbone.Model {
538
531
const serializers = ( this . constructor as typeof WidgetModel ) . serializers || { } ;
539
532
for ( const k of Object . keys ( state ) ) {
540
533
try {
541
- const keySerializers : any = serializers [ k ] || null ;
542
- let serialize = keySerializers ?. serialize || null ;
543
- if ( serialize == null && keySerializers ?. deserialize === unpack_models ) {
544
- // handle https://github.com/jupyter-widgets/ipywidgets/issues/3735
545
- serialize = deepcopyJSON ;
546
- }
547
-
548
- if ( serialize ) {
549
- state [ k ] = serialize ( state [ k ] , this ) ;
534
+ if ( serializers [ k ] && serializers [ k ] . serialize ) {
535
+ state [ k ] = serializers [ k ] . serialize ! ( state [ k ] , this ) ;
550
536
} else {
551
537
// the default serializer just deep-copies the object
552
- state [ k ] = deepcopy ( state [ k ] ) ;
538
+ state [ k ] = JSON . parse ( JSON . stringify ( state [ k ] ) ) ;
553
539
}
554
540
555
541
if ( state [ k ] && state [ k ] . toJSON ) {
0 commit comments