@prosekit/svelte
Version:
Svelte components and utilities for ProseKit
21 lines (20 loc) • 603 B
JavaScript
export function useEventHandlers(element, eventHandlers) {
const disposes = [];
const update = (eventHandlers) => {
disposes.forEach((dispose) => dispose());
disposes.length = 0;
for (const [name, handler] of Object.entries(eventHandlers)) {
element.addEventListener(name, handler);
disposes.push(() => element.removeEventListener(name, handler));
}
};
update(eventHandlers);
return {
update(eventHandlers) {
update(eventHandlers);
},
destroy() {
update({});
},
};
}