@ -173,38 +173,60 @@ export function handle_event_propagation(handler_element, event) {
}
} ) ;
/** @param {Element} next_target */
function next ( next _target ) {
current _target = next _target ;
try {
/ * *
* @ type { unknown }
* /
var throw _error ;
/ * *
* @ type { unknown [ ] }
* /
var other _errors = [ ] ;
yield _event _updates ( ( ) => {
while ( current _target !== null ) {
/** @type {null | Element} */
var parent _element = next _target . parentNode || /** @type {any} */ ( next _target ) . host || null ;
var parent _element =
current _target . parentNode || /** @type {any} */ ( current _target ) . host || null ;
try {
// @ts-expect-error
var delegated = next _target [ '__' + event _name ] ;
var delegated = curren t_target [ '__' + event _name ] ;
if ( delegated !== undefined && ! ( /** @type {any} */ ( next _target ) . disabled ) ) {
if ( delegated !== undefined && ! ( /** @type {any} */ ( curren t_target ) . disabled ) ) {
if ( is _array ( delegated ) ) {
var [ fn , ... data ] = delegated ;
fn . apply ( nex t_target , [ event , ... data ] ) ;
fn . apply ( curren t_target , [ event , ... data ] ) ;
} else {
delegated . call ( next _target , event ) ;
delegated . call ( current _target , event ) ;
}
}
} catch ( error ) {
if ( throw _error ) {
other _errors . push ( error ) ;
} else {
throw _error = error ;
}
}
} finally {
if (
! event . cancelBubble &&
parent _element !== handler _element &&
parent _element !== null &&
next _target ! == handler _element
event . cancelBubble ||
parent _element === handler _element ||
parent _element === null ||
current _target = == handler _element
) {
next ( parent _element ) ;
break ;
}
current _target = parent _element ;
}
} ) ;
if ( throw _error ) {
for ( let error of other _errors ) {
// Throw the rest of the errors, one-by-one on a microtask
queueMicrotask ( ( ) => {
throw error ;
} ) ;
}
throw throw _error ;
}
try {
yield _event _updates ( ( ) => next ( /** @type {Element} */ ( current _target ) ) ) ;
} finally {
// @ts-expect-error is used above
event . _ _root = handler _element ;