@gravity-ui/uikit
Version:
Gravity UI base styling and components
29 lines (28 loc) • 972 B
JavaScript
export function mergeProps(...propsList) {
const eventMap = new Map();
return propsList.reduce((acc, props) => {
Object.entries(props).forEach(([key, value]) => {
if (key.startsWith('on') &&
key.charCodeAt(2) >= /* A */ 65 &&
key.charCodeAt(2) <= /* Z */ 90) {
if (!eventMap.has(key)) {
eventMap.set(key, []);
}
if (typeof value === 'function') {
eventMap.get(key)?.push(value);
acc[key] = (...args) => {
return eventMap
.get(key)
?.map((fn) => fn(...args))
.find((v) => v !== undefined);
};
}
}
else {
acc[key] = value;
}
});
return acc;
}, {});
}
//# sourceMappingURL=mergeProps.js.map