@@ -196,38 +196,23 @@ function _mount(Component, { target, anchor, props = {}, events, context, intro
196
196
197
197
const registered_events = new Set ( ) ;
198
198
199
- const bound_event_listener = handle_event_propagation . bind ( null , target ) ;
200
- const bound_document_event_listener = handle_event_propagation . bind ( null , document ) ;
201
-
202
199
/** @param {Array<string> } events */
203
200
const event_handle = ( events ) => {
204
201
for ( let i = 0 ; i < events . length ; i ++ ) {
205
202
const event_name = events [ i ] ;
203
+ const passive = PassiveDelegatedEvents . includes ( event_name ) ;
204
+
206
205
if ( ! registered_events . has ( event_name ) ) {
207
206
registered_events . add ( event_name ) ;
207
+
208
208
// Add the event listener to both the container and the document.
209
209
// The container listener ensures we catch events from within in case
210
210
// the outer content stops propagation of the event.
211
- target . addEventListener (
212
- event_name ,
213
- bound_event_listener ,
214
- PassiveDelegatedEvents . includes ( event_name )
215
- ? {
216
- passive : true
217
- }
218
- : undefined
219
- ) ;
211
+ target . addEventListener ( event_name , handle_event_propagation , { passive } ) ;
212
+
220
213
// The document listener ensures we catch events that originate from elements that were
221
214
// manually moved outside of the container (e.g. via manual portals).
222
- document . addEventListener (
223
- event_name ,
224
- bound_document_event_listener ,
225
- PassiveDelegatedEvents . includes ( event_name )
226
- ? {
227
- passive : true
228
- }
229
- : undefined
230
- ) ;
215
+ document . addEventListener ( event_name , handle_event_propagation , { passive } ) ;
231
216
}
232
217
}
233
218
} ;
@@ -264,9 +249,10 @@ function _mount(Component, { target, anchor, props = {}, events, context, intro
264
249
265
250
return ( ) => {
266
251
for ( const event_name of registered_events ) {
267
- target . removeEventListener ( event_name , bound_event_listener ) ;
268
- document . removeEventListener ( event_name , bound_document_event_listener ) ;
252
+ target . removeEventListener ( event_name , handle_event_propagation ) ;
253
+ document . removeEventListener ( event_name , handle_event_propagation ) ;
269
254
}
255
+
270
256
root_event_handles . delete ( event_handle ) ;
271
257
mounted_components . delete ( component ) ;
272
258
} ;
0 commit comments