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 }