@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
37 lines (34 loc) • 1.32 kB
JavaScript
import React from 'react';
import { Transition } from 'react-transition-group';
import { getTransitionStyles } from './get-transition-styles/get-transition-styles.js';
import { useMantineTheme } from '../../theme/use-mantine-theme/use-mantine-theme.js';
function GroupedTransition({
transitions,
mounted,
children,
themeOverride
}) {
const theme = useMantineTheme(themeOverride);
const duration = Math.max(...Object.keys(transitions).map((transition) => transitions[transition].duration));
return /* @__PURE__ */ React.createElement(Transition, {
in: mounted,
timeout: duration,
unmountOnExit: true,
mountOnEnter: true,
onEnter: (node) => node.offsetHeight
}, (transitionState) => {
const transitionsStyles = Object.keys(transitions).reduce((acc, transition) => {
acc[transition] = getTransitionStyles({
duration: transitions[transition].duration,
transition: transitions[transition].transition,
timingFunction: transitions[transition].timingFunction || theme.transitionTimingFunction,
state: transitionState
});
return acc;
}, {});
return children(transitionsStyles);
});
}
GroupedTransition.displayName = "@mantine/core/GroupedTransition";
export { GroupedTransition };
//# sourceMappingURL=GroupedTransition.js.map