@yamada-ui/transitions
Version:
Yamada UI transitions components
113 lines (111 loc) • 2.84 kB
JavaScript
"use client"
// src/slide-fade.tsx
import { omitThemeProps, useComponentStyle } from "@yamada-ui/core";
import {
AnimatePresence,
motion,
motionForwardRef,
transitionEnter,
transitionExit
} from "@yamada-ui/motion";
import { useValue } from "@yamada-ui/use-value";
import { cx } from "@yamada-ui/utils";
import { jsx } from "react/jsx-runtime";
var variants = {
enter: ({ delay, duration, enter, transition, transitionEnd } = {}) => ({
opacity: 1,
transition: transitionEnter(transition == null ? void 0 : transition.enter)(delay, duration),
transitionEnd: transitionEnd == null ? void 0 : transitionEnd.enter,
x: 0,
y: 0,
...enter
}),
exit: ({
delay,
duration,
exit,
offsetX,
offsetY,
reverse,
transition,
transitionEnd
} = {}) => ({
opacity: 0,
transition: transitionExit(transition == null ? void 0 : transition.exit)(delay, duration),
...reverse ? { transitionEnd: transitionEnd == null ? void 0 : transitionEnd.exit, x: offsetX, y: offsetY } : { transitionEnd: { x: offsetX, y: offsetY, ...transitionEnd == null ? void 0 : transitionEnd.exit } },
...exit
}),
initial: ({
delay,
duration,
initial,
offsetX,
offsetY,
transition,
transitionEnd
}) => ({
opacity: 0,
transition: transitionExit(transition == null ? void 0 : transition.exit)(delay, duration),
transitionEnd: transitionEnd == null ? void 0 : transitionEnd.exit,
x: offsetX,
y: offsetY,
...initial
})
};
var slideFadeProps = {
animate: "enter",
exit: "exit",
initial: "exit",
variants
};
var SlideFade = motionForwardRef(
(props, ref) => {
const [style, mergedProps] = useComponentStyle("SlideFade", props);
const {
className,
delay,
duration,
isOpen,
offsetX: _offsetX,
offsetY: _offsetY,
open = isOpen,
reverse,
transition,
transitionEnd,
unmountOnExit,
...rest
} = omitThemeProps(mergedProps);
const animate = open || unmountOnExit ? "enter" : "exit";
const offsetX = useValue(_offsetX);
const offsetY = useValue(_offsetY);
const custom = {
delay,
duration,
offsetX,
offsetY,
reverse,
transition,
transitionEnd
};
const resolvedOpen = unmountOnExit ? open && unmountOnExit : true;
return /* @__PURE__ */ jsx(AnimatePresence, { custom, children: resolvedOpen ? /* @__PURE__ */ jsx(
motion.div,
{
ref,
className: cx("ui-slide-fade", className),
custom,
...slideFadeProps,
animate,
__css: style,
...rest
}
) : null });
}
);
SlideFade.displayName = "SlideFade";
SlideFade.__ui__ = "SlideFade";
export {
slideFadeProps,
SlideFade
};
//# sourceMappingURL=chunk-FVWMS4CP.mjs.map