@ffsm/native-animate
Version:
Simple animation for React Native, only React native and JavaScript
31 lines (30 loc) • 971 B
JavaScript
export function flattenStyle(...styles) {
if (!styles.length) {
return {};
}
if (styles.some((item) => typeof item === 'function')) {
return ((state) => {
return styles.reduce((acc, item) => {
if (typeof item === 'function') {
return Object.assign(acc, item(state));
}
if (Array.isArray(item)) {
return Object.assign(acc, flattenStyle(...item));
}
if (item && typeof item === 'object') {
return Object.assign(acc, item);
}
return acc;
}, {});
});
}
return styles.reduce((acc, item) => {
if (Array.isArray(item)) {
return Object.assign(acc, flattenStyle(...item));
}
if (item && typeof item === 'object') {
return Object.assign(acc, item);
}
return acc;
}, {});
}