UNPKG

merge-props

Version:

Merges className, style, and DOM event handlers for React elements

11 lines (10 loc) 798 B
type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never; /** * Merges sets of props together: * - duplicate `className` props get concatenated * - duplicate `style` props get shallow merged (later props have precedence for conflicting rules) * - duplicate functions (to be used for event handlers) get called in order from left to right * @param props Sets of props to merge together. Later props have precedence. */ declare const _default: <T extends {}[]>(...props: T) => UnionToIntersection<T[number]> extends infer T_1 ? { [K in keyof T_1]: K extends "className" ? string : K extends "style" ? UnionToIntersection<T[number]>[K] : Exclude<Extract<T[number], { [Q in K]: unknown; }>[K], undefined>; } : never; export = _default;