22 lines
646 B
JavaScript
22 lines
646 B
JavaScript
/**
|
|
* Composes event handlers into a single function that can be called with an event.
|
|
* If the previous handler cancels the event using `event.preventDefault()`, the handlers
|
|
* that follow will not be called.
|
|
*/
|
|
export function composeHandlers(...handlers) {
|
|
return function (e) {
|
|
for (const handler of handlers) {
|
|
if (!handler)
|
|
continue;
|
|
if (e.defaultPrevented)
|
|
return;
|
|
if (typeof handler === "function") {
|
|
handler.call(this, e);
|
|
}
|
|
else {
|
|
handler.current?.call(this, e);
|
|
}
|
|
}
|
|
};
|
|
}
|