react-transition-preset
Version:
Lightweight, zero-dependency transition component for React with common preset transition
43 lines (40 loc) • 1.1 kB
JavaScript
import { presets } from '../presets.js';
import { TransitionStatus } from '../use-transition.js';
// src/get-transition-styles/get-transition-styles.ts
var transitionStatuses = {
[TransitionStatus.entering]: "in",
[TransitionStatus.entered]: "in",
[TransitionStatus.exiting]: "out",
[TransitionStatus.exited]: "out",
[TransitionStatus.preEntering]: "out",
[TransitionStatus.preExiting]: "out"
};
function getTransitionStyles({
transition,
state,
duration,
timingFunction
}) {
const shared = {
transitionDuration: `${duration}ms`,
transitionTimingFunction: timingFunction
};
if (typeof transition === "string") {
if (!(transition in presets)) {
return {};
}
return {
transitionProperty: presets[transition].transitionProperty,
...shared,
...presets[transition].common,
...presets[transition][transitionStatuses[state]]
};
}
return {
transitionProperty: transition.transitionProperty,
...shared,
...transition.common,
...transition[transitionStatuses[state]]
};
}
export { getTransitionStyles };