react-transition-preset
Version:
Lightweight, zero-dependency transition component for React with common preset transition
158 lines (156 loc) • 5.03 kB
JavaScript
// src/presets.ts
var pop = {
center: 0,
top: -16,
bottom: 16
};
var popIn = (from) => ({
in: { opacity: 1, transform: "scale(1)" },
out: {
opacity: 0,
transform: `scale(var(--transition-preset-pop-in-${from}-scale, 0.9)) translateY(var(--transition-preset-pop-in-${from}, ${pop[from]}px))`
},
transitionProperty: "transform, opacity"
});
var presets = {
"fade": {
in: { opacity: 1 },
out: { opacity: 0 },
transitionProperty: "opacity"
},
"fade-up": {
in: { opacity: 1, transform: "translateY(0)" },
out: { opacity: 0, transform: `translateY(var(--transition-preset-fade-up, -16px))` },
transitionProperty: "opacity, transform"
},
"fade-down": {
in: { opacity: 1, transform: "translateY(0)" },
out: { opacity: 0, transform: `translateY(var(--transtion-preset-fade-down, 16px)` },
transitionProperty: "opacity, transform"
},
"fade-left": {
in: { opacity: 1, transform: "translateX(0)" },
out: { opacity: 0, transform: `translateX(var(--transition-preset-fade-left, -16px))` },
transitionProperty: "opacity, transform"
},
"fade-right": {
in: { opacity: 1, transform: "translateX(0)" },
out: { opacity: 0, transform: `translateX(var(--transition-preset-fade-right, 16px)` },
transitionProperty: "opacity, transform"
},
"scale": {
in: { opacity: 1, transform: "scale(1)" },
out: { opacity: 0, transform: "scale(0)" },
common: { transformOrigin: "top" },
transitionProperty: "transform, opacity"
},
"scale-y": {
in: { opacity: 1, transform: "scaleY(1)" },
out: { opacity: 0, transform: "scaleY(0)" },
common: { transformOrigin: "top" },
transitionProperty: "transform, opacity"
},
"scale-x": {
in: { opacity: 1, transform: "scaleX(1)" },
out: { opacity: 0, transform: "scaleX(0)" },
common: { transformOrigin: "left" },
transitionProperty: "transform, opacity"
},
"skew-up": {
in: { opacity: 1, transform: "translateY(0) skew(0deg, 0deg)" },
out: {
opacity: 0,
transform: `translateY(var(--transition-preset-skew-up, -20px)) skew(var(--transition-preset-skew-up-deg, -10deg, -5deg))`
},
common: { transformOrigin: "top" },
transitionProperty: "transform, opacity"
},
"skew-down": {
in: { opacity: 1, transform: "translateY(0) skew(0deg, 0deg)" },
out: {
opacity: 0,
transform: `translateY(var(--transition-preset-skew-down, 20px)) skew(var(--transition-preset-skew-down-deg, -10deg, -5deg))`
},
common: { transformOrigin: "bottom" },
transitionProperty: "transform, opacity"
},
"rotate-left": {
in: { opacity: 1, transform: "translateY(0) rotate(0deg)" },
out: {
opacity: 0,
transform: `translateY(var(--transition-preset-rotate-left, 20px)) rotate(var(--transition-preset-rotate-left-deg, -5deg))`
},
common: { transformOrigin: "bottom" },
transitionProperty: "transform, opacity"
},
"rotate-right": {
in: { opacity: 1, transform: "translateY(0) rotate(0deg)" },
out: {
opacity: 0,
transform: `translateY(var(--transition-preset-rotate-right, 20px)) rotate(var(--transition-preset-rotate-right-deg, 5deg))`
},
common: { transformOrigin: "top" },
transitionProperty: "transform, opacity"
},
"slide-down": {
in: { opacity: 1, transform: "translateY(0)" },
out: { opacity: 0, transform: "translateY(100%)" },
common: { transformOrigin: "top" },
transitionProperty: "transform, opacity"
},
"slide-up": {
in: { opacity: 1, transform: "translateY(0)" },
out: { opacity: 0, transform: "translateY(-100%)" },
common: { transformOrigin: "bottom" },
transitionProperty: "transform, opacity"
},
"slide-left": {
in: { opacity: 1, transform: "translateX(0)" },
out: { opacity: 0, transform: "translateX(-100%)" },
common: { transformOrigin: "left" },
transitionProperty: "transform, opacity"
},
"slide-right": {
in: { opacity: 1, transform: "translateX(0)" },
out: { opacity: 0, transform: "translateX(100%)" },
common: { transformOrigin: "right" },
transitionProperty: "transform, opacity"
},
"pop": {
...popIn("center"),
common: { transformOrigin: "center center" }
},
"pop-top": {
...popIn("top"),
common: { transformOrigin: "top center" }
},
"pop-bottom": {
...popIn("bottom"),
common: { transformOrigin: "bottom center" }
},
"pop-left": {
...popIn("center"),
common: { transformOrigin: "center left" }
},
"pop-right": {
...popIn("center"),
common: { transformOrigin: "center right" }
},
"pop-bottom-left": {
...popIn("bottom"),
common: { transformOrigin: "bottom left" }
},
"pop-bottom-right": {
...popIn("bottom"),
common: { transformOrigin: "bottom right" }
},
"pop-top-left": {
...popIn("top"),
common: { transformOrigin: "top left" }
},
"pop-top-right": {
...popIn("top"),
common: { transformOrigin: "top right" }
}
};
export { presets };