4141 ComponentType ,
4242 Context ,
4343 EventHandlerDict ,
44- JavaScript ,
4544 Key ,
4645 LayoutEventMessage ,
4746 LayoutUpdateMessage ,
@@ -119,7 +118,7 @@ async def deliver(self, event: LayoutEventMessage | dict[str, Any]) -> None:
119118 # we just ignore the event.
120119 handler = self ._event_handlers .get (event ["target" ])
121120
122- if handler is not None and not isinstance ( handler , JavaScript ) :
121+ if handler is not None :
123122 try :
124123 await handler .function (event ["data" ])
125124 except Exception :
@@ -282,23 +281,16 @@ def _render_model_attributes(
282281
283282 model_event_handlers = new_state .model .current ["eventHandlers" ] = {}
284283 for event , handler in handlers_by_event .items ():
285- if isinstance (handler , JavaScript ):
286- target = "__javascript__: " + handler
287- prevent_default = False
288- stop_propagation = False
284+ if event in old_state .targets_by_event :
285+ target = old_state .targets_by_event [event ]
289286 else :
290- prevent_default = handler .prevent_default
291- stop_propagation = handler .stop_propagation
292- if event in old_state .targets_by_event :
293- target = old_state .targets_by_event [event ]
294- else :
295- target = uuid4 ().hex if handler .target is None else handler .target
287+ target = uuid4 ().hex if handler .target is None else handler .target
296288 new_state .targets_by_event [event ] = target
297289 self ._event_handlers [target ] = handler
298290 model_event_handlers [event ] = {
299291 "target" : target ,
300- "preventDefault" : prevent_default ,
301- "stopPropagation" : stop_propagation ,
292+ "preventDefault" : handler . prevent_default ,
293+ "stopPropagation" : handler . stop_propagation ,
302294 }
303295
304296 return None
@@ -313,20 +305,13 @@ def _render_model_event_handlers_without_old_state(
313305
314306 model_event_handlers = new_state .model .current ["eventHandlers" ] = {}
315307 for event , handler in handlers_by_event .items ():
316- if isinstance (handler , JavaScript ):
317- target = "__javascript__: " + handler
318- prevent_default = False
319- stop_propagation = False
320- else :
321- target = uuid4 ().hex if handler .target is None else handler .target
322- prevent_default = handler .prevent_default
323- stop_propagation = handler .stop_propagation
308+ target = uuid4 ().hex if handler .target is None else handler .target
324309 new_state .targets_by_event [event ] = target
325310 self ._event_handlers [target ] = handler
326311 model_event_handlers [event ] = {
327312 "target" : target ,
328- "preventDefault" : prevent_default ,
329- "stopPropagation" : stop_propagation ,
313+ "preventDefault" : handler . prevent_default ,
314+ "stopPropagation" : handler . stop_propagation ,
330315 }
331316
332317 return None
0 commit comments