Skip to content

Commit 4187fdf

Browse files
authored
Merge pull request #3832 from martinRenou/revert_3689_3738
Revert #3689 and #3738
2 parents a2147e2 + c26f2a0 commit 4187fdf

File tree

1 file changed

+4
-18
lines changed

1 file changed

+4
-18
lines changed

packages/base/src/widget.ts

+4-18
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414

1515
import { Panel, Widget } from '@lumino/widgets';
1616

17-
import { JSONObject, JSONValue } from '@lumino/coreutils';
17+
import { JSONObject } from '@lumino/coreutils';
1818

1919
import { Dict } from './utils';
2020

@@ -37,13 +37,6 @@ import {
3737
*/
3838
const IPY_MODEL_ = 'IPY_MODEL_';
3939

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-
4740
/**
4841
* Replace model ids with models recursively.
4942
*/
@@ -538,18 +531,11 @@ class WidgetModel extends Backbone.Model {
538531
const serializers = (this.constructor as typeof WidgetModel).serializers || {};
539532
for (const k of Object.keys(state)) {
540533
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);
550536
} else {
551537
// the default serializer just deep-copies the object
552-
state[k] = deepcopy(state[k]);
538+
state[k] = JSON.parse(JSON.stringify(state[k]));
553539
}
554540

555541
if (state[k] && state[k].toJSON) {

0 commit comments

Comments
 (0)