export const composeEventHandlers = ( theirsHandler?: (event: E) => boolean | void, oursHandler?: (event: E) => void, { checkForDefaultPrevented = true } = {}, ) => { const handleEvent = (event: E) => { const shouldPrevent = theirsHandler?.(event); if (checkForDefaultPrevented === false || !shouldPrevent) { return oursHandler?.(event); } }; return handleEvent; }; type WhenMouseHandler = (e: PointerEvent) => any; export const whenMouse = (handler: WhenMouseHandler): WhenMouseHandler => { return (e: PointerEvent) => (e.pointerType === 'mouse' ? handler(e) : undefined); };