41
41
ComponentType ,
42
42
Context ,
43
43
EventHandlerDict ,
44
- JavaScript ,
45
44
Key ,
46
45
LayoutEventMessage ,
47
46
LayoutUpdateMessage ,
@@ -119,7 +118,7 @@ async def deliver(self, event: LayoutEventMessage | dict[str, Any]) -> None:
119
118
# we just ignore the event.
120
119
handler = self ._event_handlers .get (event ["target" ])
121
120
122
- if handler is not None and not isinstance ( handler , JavaScript ) :
121
+ if handler is not None :
123
122
try :
124
123
await handler .function (event ["data" ])
125
124
except Exception :
@@ -282,23 +281,16 @@ def _render_model_attributes(
282
281
283
282
model_event_handlers = new_state .model .current ["eventHandlers" ] = {}
284
283
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 ]
289
286
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
296
288
new_state .targets_by_event [event ] = target
297
289
self ._event_handlers [target ] = handler
298
290
model_event_handlers [event ] = {
299
291
"target" : target ,
300
- "preventDefault" : prevent_default ,
301
- "stopPropagation" : stop_propagation ,
292
+ "preventDefault" : handler . prevent_default ,
293
+ "stopPropagation" : handler . stop_propagation ,
302
294
}
303
295
304
296
return None
@@ -313,20 +305,13 @@ def _render_model_event_handlers_without_old_state(
313
305
314
306
model_event_handlers = new_state .model .current ["eventHandlers" ] = {}
315
307
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
324
309
new_state .targets_by_event [event ] = target
325
310
self ._event_handlers [target ] = handler
326
311
model_event_handlers [event ] = {
327
312
"target" : target ,
328
- "preventDefault" : prevent_default ,
329
- "stopPropagation" : stop_propagation ,
313
+ "preventDefault" : handler . prevent_default ,
314
+ "stopPropagation" : handler . stop_propagation ,
330
315
}
331
316
332
317
return None
0 commit comments