From ae5e7da55677ee80b3fa8f4d2c3dd9fc101e2420 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 14 Jun 2023 18:05:17 +0200 Subject: [PATCH 1/3] Handle comm_open messages containing new widget state --- ipywidgets_bokeh/src/manager.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ipywidgets_bokeh/src/manager.ts b/ipywidgets_bokeh/src/manager.ts index 4c55cef..0e40f6a 100644 --- a/ipywidgets_bokeh/src/manager.ts +++ b/ipywidgets_bokeh/src/manager.ts @@ -128,8 +128,16 @@ export class WidgetManager extends HTMLManager { this.kernel = this.kernel_manager.connectTo({model: kernel_model, handleComms: true}) this.kernel.registerCommTarget(this.comm_target_name, (comm, msg) => { const model = this._model_objs.get(msg.content.comm_id) + const comm_wrapper = new shims.services.Comm(comm) + if (model == null) { + this.handle_comm_open(comm_wrapper, msg).then((model) => { + if (model != null && !model.comm_live) { + const comm_wrapper = new shims.services.Comm(comm) + this._attach_comm(comm_wrapper, model) + } + }) + } if (model != null && !model.comm_live) { - const comm_wrapper = new shims.services.Comm(comm) this._attach_comm(comm_wrapper, model) } this._model_objs.delete(msg.content.comm_id) From 5623ed064f87571c0ddaa9062407129b6ceb9a6a Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 14 Jun 2023 18:19:40 +0200 Subject: [PATCH 2/3] Add additional guards --- ipywidgets_bokeh/src/manager.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ipywidgets_bokeh/src/manager.ts b/ipywidgets_bokeh/src/manager.ts index 0e40f6a..11b8e5c 100644 --- a/ipywidgets_bokeh/src/manager.ts +++ b/ipywidgets_bokeh/src/manager.ts @@ -130,12 +130,12 @@ export class WidgetManager extends HTMLManager { const model = this._model_objs.get(msg.content.comm_id) const comm_wrapper = new shims.services.Comm(comm) if (model == null) { - this.handle_comm_open(comm_wrapper, msg).then((model) => { + this.handle_comm_open(comm_wrapper, msg).then((model) => { if (model != null && !model.comm_live) { const comm_wrapper = new shims.services.Comm(comm) this._attach_comm(comm_wrapper, model) } - }) + }) } if (model != null && !model.comm_live) { this._attach_comm(comm_wrapper, model) From cc24586ccb0285d14f782149acf38e2f2ff1783a Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Wed, 14 Jun 2023 19:03:42 +0200 Subject: [PATCH 3/3] Do not drop defaults --- ipywidgets_bokeh/widget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipywidgets_bokeh/widget.py b/ipywidgets_bokeh/widget.py index 86646ce..232ad98 100644 --- a/ipywidgets_bokeh/widget.py +++ b/ipywidgets_bokeh/widget.py @@ -37,5 +37,5 @@ def __init__(self, *, widget: Widget, **kwargs): spec = widget.get_view_spec() state = Widget.get_manager_state(widgets=[widget]) state["full_state"] = state["state"] - state["state"] = embed.dependency_state([widget], drop_defaults=True) + state["state"] = embed.dependency_state([widget], drop_defaults=False) self.bundle = dict(spec=spec, state=state)