If some other process modified the underlying dict, e.g. demo.config["data"]=0, is it possible to force the existing widget to update its content to show the updated value?
I would not say it is a pretty solution, but this will work.
The class will create a new editor every time the config changes. This is done inside a method that is wrapped in a pn.panel to be able to update every time config changes.
The demo.param.trigger("config") is needed because updating a value inside a dictionary does not update trigger param.depends. Alternative it could have been done with demo.config = {'data': 0}