I’m creating an app as a param.Parameterized class. The app enables the user to edit some css using the Ace widget and updates the css style of the app accordingly.
My problem is that each change of the text in Ace triggers an update of the css style which slows down my app.
How do I solve this problem?
Example
If I use the app to change “Hello World” to “Handle Panel World” I get 6 updates but would have wanted 1.
import panel as pn
import param
pn.extension("ace")
class Editor(param.Parameterized):
code = param.String("print('Hello World')")
update_count = param.Integer(0)
view = param.Parameter()
def __init__(self, **params):
super().__init__(**params)
self.view = pn.Param(self, parameters=["code", "update_count"], widgets={"code": pn.widgets.Ace})
@param.depends("code", watch=True)
def _update_count(self):
self.update_count+=1
Editor().view.servable()
Additional Context
If I use the TextAreaInput input instead I get the expected behaviour.
import panel as pn
import param
pn.extension("ace")
class Editor(param.Parameterized):
code = param.String("print('Hello World')")
update_count = param.Integer(0)
view = param.Parameter()
def __init__(self, **params):
super().__init__(**params)
self.view = pn.Param(self, parameters=["code", "update_count"], widgets={"code": pn.widgets.TextAreaInput})
@param.depends("code", watch=True)
def _update_count(self):
self.update_count+=1
Editor().view.servable()

