UNPKG

@yamada-ui/transitions

Version:

Yamada UI transitions components

113 lines (111 loc) 2.84 kB
"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