{"version":3,"sources":["../src/slide.tsx"],"sourcesContent":["import type { CSSUIObject, ThemeProps, Token } from \"@yamada-ui/core\"\nimport type {\n  MotionProps,\n  MotionTransitionVariants,\n  MotionVariants,\n  WithTransitionProps,\n} from \"@yamada-ui/motion\"\nimport { omitThemeProps, useComponentStyle } from \"@yamada-ui/core\"\nimport {\n  AnimatePresence,\n  motion,\n  MOTION_TRANSITION_VARIANTS,\n  motionForwardRef,\n  transitionEnter,\n  transitionExit,\n} from \"@yamada-ui/motion\"\nimport { useValue } from \"@yamada-ui/use-value\"\nimport { cx } from \"@yamada-ui/utils\"\n\nexport const getSlideProps = (\n  placement: \"bottom\" | \"left\" | \"right\" | \"top\" = \"right\",\n) => {\n  switch (placement) {\n    case \"right\":\n      return MOTION_TRANSITION_VARIANTS.slideRight\n    case \"left\":\n      return MOTION_TRANSITION_VARIANTS.slideLeft\n    case \"bottom\":\n      return MOTION_TRANSITION_VARIANTS.slideDown\n    case \"top\":\n      return MOTION_TRANSITION_VARIANTS.slideUp\n  }\n}\n\nconst variants: MotionVariants = {\n  enter: ({\n    delay,\n    duration,\n    enter,\n    placement,\n    transition,\n    transitionEnd,\n  } = {}) => ({\n    ...getSlideProps(placement).enter,\n    transition: transitionEnter(transition?.enter)(delay, duration),\n    transitionEnd: transitionEnd?.enter,\n    ...enter,\n  }),\n  exit: ({\n    delay,\n    duration,\n    exit,\n    placement,\n    transition,\n    transitionEnd,\n  } = {}) => ({\n    ...getSlideProps(placement).exit,\n    transition: transitionExit(transition?.exit)(delay, duration),\n    transitionEnd: transitionEnd?.exit,\n    ...exit,\n  }),\n} satisfies MotionTransitionVariants\n\nexport const slideProps = {\n  animate: \"enter\",\n  exit: \"exit\",\n  initial: \"exit\",\n  variants,\n}\n\ninterface SlideOptions {\n  /**\n   * The placement of the slide.\n   *\n   * @default 'right'\n   */\n  placement?: Token<\"bottom\" | \"left\" | \"right\" | \"top\">\n}\n\nexport interface SlideProps\n  extends WithTransitionProps<MotionProps>,\n    SlideOptions,\n    ThemeProps<\"Slide\"> {}\n\n/**\n * `Slide` is a component that shows or hides an element from the corners of the page.\n *\n * @see Docs https://yamada-ui.com/components/transitions/slide\n */\nexport const Slide = motionForwardRef<SlideProps, \"div\">((props, ref) => {\n  const [style, mergedProps] = useComponentStyle(\"Slide\", props)\n  const {\n    className,\n    delay,\n    duration = { enter: 0.4, exit: 0.3 },\n    isOpen,\n    open = isOpen,\n    placement: _placement,\n    transition,\n    transitionEnd,\n    unmountOnExit,\n    __css,\n    ...rest\n  } = omitThemeProps(mergedProps)\n  const animate = open || unmountOnExit ? \"enter\" : \"exit\"\n  const placement = useValue(_placement)\n  const custom = { delay, duration, placement, transition, transitionEnd }\n  const { position } = getSlideProps(placement)\n  const resolvedOpen = unmountOnExit ? open && unmountOnExit : true\n  const css: CSSUIObject = {\n    ...style,\n    ...__css,\n    ...position,\n  }\n\n  return (\n    <AnimatePresence custom={custom}>\n      {resolvedOpen ? (\n        <motion.div\n          ref={ref}\n          className={cx(\"ui-slide\", className)}\n          custom={custom}\n          {...slideProps}\n          animate={animate}\n          __css={css}\n          {...rest}\n        />\n      ) : null}\n    </AnimatePresence>\n  )\n})\n\nSlide.displayName = \"Slide\"\nSlide.__ui__ = \"Slide\"\n"],"mappings":";;;AAOA,SAAS,gBAAgB,yBAAyB;AAClD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,gBAAgB;AACzB,SAAS,UAAU;AAqGX;AAnGD,IAAM,gBAAgB,CAC3B,YAAiD,YAC9C;AACH,UAAQ,WAAW;AAAA,IACjB,KAAK;AACH,aAAO,2BAA2B;AAAA,IACpC,KAAK;AACH,aAAO,2BAA2B;AAAA,IACpC,KAAK;AACH,aAAO,2BAA2B;AAAA,IACpC,KAAK;AACH,aAAO,2BAA2B;AAAA,EACtC;AACF;AAEA,IAAM,WAA2B;AAAA,EAC/B,OAAO,CAAC;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,CAAC,OAAO;AAAA,IACV,GAAG,cAAc,SAAS,EAAE;AAAA,IAC5B,YAAY,gBAAgB,yCAAY,KAAK,EAAE,OAAO,QAAQ;AAAA,IAC9D,eAAe,+CAAe;AAAA,IAC9B,GAAG;AAAA,EACL;AAAA,EACA,MAAM,CAAC;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,IAAI,CAAC,OAAO;AAAA,IACV,GAAG,cAAc,SAAS,EAAE;AAAA,IAC5B,YAAY,eAAe,yCAAY,IAAI,EAAE,OAAO,QAAQ;AAAA,IAC5D,eAAe,+CAAe;AAAA,IAC9B,GAAG;AAAA,EACL;AACF;AAEO,IAAM,aAAa;AAAA,EACxB,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT;AACF;AAqBO,IAAM,QAAQ,iBAAoC,CAAC,OAAO,QAAQ;AACvE,QAAM,CAAC,OAAO,WAAW,IAAI,kBAAkB,SAAS,KAAK;AAC7D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA,WAAW,EAAE,OAAO,KAAK,MAAM,IAAI;AAAA,IACnC;AAAA,IACA,OAAO;AAAA,IACP,WAAW;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,eAAe,WAAW;AAC9B,QAAM,UAAU,QAAQ,gBAAgB,UAAU;AAClD,QAAM,YAAY,SAAS,UAAU;AACrC,QAAM,SAAS,EAAE,OAAO,UAAU,WAAW,YAAY,cAAc;AACvE,QAAM,EAAE,SAAS,IAAI,cAAc,SAAS;AAC5C,QAAM,eAAe,gBAAgB,QAAQ,gBAAgB;AAC7D,QAAM,MAAmB;AAAA,IACvB,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SACE,oBAAC,mBAAgB,QACd,yBACC;AAAA,IAAC,OAAO;AAAA,IAAP;AAAA,MACC;AAAA,MACA,WAAW,GAAG,YAAY,SAAS;AAAA,MACnC;AAAA,MACC,GAAG;AAAA,MACJ;AAAA,MACA,OAAO;AAAA,MACN,GAAG;AAAA;AAAA,EACN,IACE,MACN;AAEJ,CAAC;AAED,MAAM,cAAc;AACpB,MAAM,SAAS;","names":[]}