@@ -2201,22 +2201,12 @@ export const Paper = View.extend({
2201
2201
view . preventDefaultInteraction ( evt ) ;
2202
2202
}
2203
2203
2204
- const rootViewEl = view . el ;
2205
-
2206
2204
// Custom event
2207
- const eventNode = target . closest ( '[event]' ) ;
2208
- if ( eventNode && rootViewEl !== eventNode && view . el . contains ( eventNode ) ) {
2209
- const eventEvt = normalizeEvent ( $ . Event ( evt . originalEvent , {
2210
- data : evt . data ,
2211
- // Originally the event listener was attached to the event element.
2212
- currentTarget : eventNode
2213
- } ) ) ;
2214
- this . onevent ( eventEvt ) ;
2215
- if ( eventEvt . isDefaultPrevented ( ) ) {
2216
- evt . preventDefault ( ) ;
2217
- }
2218
- // `onevent` can stop propagation
2205
+ const eventEvt = this . customEventTrigger ( evt , view ) ;
2206
+ if ( eventEvt ) {
2207
+ // `onevent` could have stopped propagation
2219
2208
if ( eventEvt . isPropagationStopped ( ) ) return ;
2209
+
2220
2210
evt . data = eventEvt . data ;
2221
2211
}
2222
2212
@@ -2548,15 +2538,24 @@ export const Paper = View.extend({
2548
2538
onlabel : function ( evt ) {
2549
2539
2550
2540
var labelNode = evt . currentTarget ;
2541
+
2551
2542
var view = this . findView ( labelNode ) ;
2552
- if ( view ) {
2543
+ if ( ! view ) return ;
2553
2544
2554
- evt = normalizeEvent ( evt ) ;
2555
- if ( this . guard ( evt , view ) ) return ;
2545
+ evt = normalizeEvent ( evt ) ;
2546
+ if ( this . guard ( evt , view ) ) return ;
2556
2547
2557
- var localPoint = this . snapToGrid ( evt . clientX , evt . clientY ) ;
2558
- view . onlabel ( evt , localPoint . x , localPoint . y ) ;
2548
+ // Custom event
2549
+ const eventEvt = this . customEventTrigger ( evt , view , labelNode ) ;
2550
+ if ( eventEvt ) {
2551
+ // `onevent` could have stopped propagation
2552
+ if ( eventEvt . isPropagationStopped ( ) ) return ;
2553
+
2554
+ evt . data = eventEvt . data ;
2559
2555
}
2556
+
2557
+ var localPoint = this . snapToGrid ( evt . clientX , evt . clientY ) ;
2558
+ view . onlabel ( evt , localPoint . x , localPoint . y ) ;
2560
2559
} ,
2561
2560
2562
2561
getPointerArgs ( evt ) {
@@ -3082,6 +3081,29 @@ export const Paper = View.extend({
3082
3081
markerContentVEl . appendTo ( markerVEl ) ;
3083
3082
markerVEl . appendTo ( defs ) ;
3084
3083
return id ;
3084
+ } ,
3085
+
3086
+ customEventTrigger : function ( evt , view , rootNode = view . el ) {
3087
+
3088
+ const eventNode = evt . target . closest ( '[event]' ) ;
3089
+
3090
+ if ( eventNode && rootNode !== eventNode && view . el . contains ( eventNode ) ) {
3091
+ const eventEvt = normalizeEvent ( $ . Event ( evt . originalEvent , {
3092
+ data : evt . data ,
3093
+ // Originally the event listener was attached to the event element.
3094
+ currentTarget : eventNode
3095
+ } ) ) ;
3096
+
3097
+ this . onevent ( eventEvt ) ;
3098
+
3099
+ if ( eventEvt . isDefaultPrevented ( ) ) {
3100
+ evt . preventDefault ( ) ;
3101
+ }
3102
+
3103
+ return eventEvt ;
3104
+ }
3105
+
3106
+ return null ;
3085
3107
}
3086
3108
3087
3109
} , {
0 commit comments