{"version":3,"file":"Transition.cjs","sources":["../../../src/components/Transition/Transition.tsx"],"sourcesContent":["import { getTransitionStyles } from './get-transition-styles/get-transition-styles';\nimport { RaikouTransition } from './transitions';\nimport { useTransition } from './use-transition';\n\nexport interface TransitionProps {\n  /** If set element will not be unmounted from the DOM when it is hidden, `display: none` styles will be applied instead */\n  keepMounted?: boolean;\n\n  /** Transition name or object */\n  transition?: RaikouTransition;\n\n  /** Transition duration in ms, `250` by default */\n  duration?: number;\n\n  /** Exit transition duration in ms, `250` by default */\n  exitDuration?: number;\n\n  /** Transition timing function, `theme.transitionTimingFunction` by default */\n  timingFunction?: string;\n\n  /** Determines whether component should be mounted to the DOM */\n  mounted: boolean;\n\n  /** Render function with transition styles argument */\n  children: (styles: React.CSSProperties) => React.JSX.Element;\n\n  /** Called when exit transition ends */\n  onExited?: () => void;\n\n  /** Called when exit transition starts */\n  onExit?: () => void;\n\n  /** Called when enter transition starts */\n  onEnter?: () => void;\n\n  /** Called when enter transition ends */\n  onEntered?: () => void;\n\n  /** Delay in ms before enter transition starts */\n  enterDelay?: number;\n\n  /** Delay in ms before exit transition starts */\n  exitDelay?: number;\n}\n\nexport type TransitionOverride = Partial<Omit<TransitionProps, 'mounted'>>;\n\nexport function Transition({\n  keepMounted,\n  transition = 'fade',\n  duration = 250,\n  exitDuration = duration,\n  mounted,\n  children,\n  timingFunction = 'ease',\n  onExit,\n  onEntered,\n  onEnter,\n  onExited,\n  enterDelay,\n  exitDelay,\n}: TransitionProps) {\n  const { transitionDuration, transitionStatus, transitionTimingFunction } = useTransition({\n    mounted,\n    exitDuration,\n    duration,\n    timingFunction,\n    onExit,\n    onEntered,\n    onEnter,\n    onExited,\n    enterDelay,\n    exitDelay,\n  });\n\n  if (transitionDuration === 0) {\n    return mounted ? <>{children({})}</> : keepMounted ? children({ display: 'none' }) : null;\n  }\n\n  return transitionStatus === 'exited' ? (\n    keepMounted ? (\n      children({ display: 'none' })\n    ) : null\n  ) : (\n    <>\n      {children(\n        getTransitionStyles({\n          transition,\n          duration: transitionDuration,\n          state: transitionStatus,\n          timingFunction: transitionTimingFunction,\n        })\n      )}\n    </>\n  );\n}\n\nTransition.displayName = '@raikou/core/Transition';\n"],"names":["useTransition","jsx","Fragment","getTransitionStyles"],"mappings":";;;;;;AA+CO,SAAS,UAAW,CAAA;AAAA,EACzB,WAAA;AAAA,EACA,UAAa,GAAA,MAAA;AAAA,EACb,QAAW,GAAA,GAAA;AAAA,EACX,YAAe,GAAA,QAAA;AAAA,EACf,OAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAiB,GAAA,MAAA;AAAA,EACjB,MAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAoB,EAAA;AAClB,EAAA,MAAM,EAAE,kBAAA,EAAoB,gBAAkB,EAAA,wBAAA,KAA6BA,2BAAc,CAAA;AAAA,IACvF,OAAA;AAAA,IACA,YAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,IAAI,uBAAuB,CAAG,EAAA;AAC5B,IAAA,OAAO,OAAU,mBAAAC,cAAA,CAAAC,mBAAA,EAAA,EAAG,QAAS,EAAA,QAAA,CAAA,EAAE,CAAA,EAAE,CAAM,GAAA,WAAA,GAAc,QAAS,CAAA,EAAE,OAAS,EAAA,MAAA,EAAQ,CAAI,GAAA,IAAA;AAAA;AAGvF,EAAO,OAAA,gBAAA,KAAqB,QAC1B,GAAA,WAAA,GACE,QAAS,CAAA,EAAE,SAAS,MAAO,EAAC,CAC1B,GAAA,IAAA,mBAGDD,cAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,QAAA;AAAA,IACCC,uCAAoB,CAAA;AAAA,MAClB,UAAA;AAAA,MACA,QAAU,EAAA,kBAAA;AAAA,MACV,KAAO,EAAA,gBAAA;AAAA,MACP,cAAgB,EAAA;AAAA,KACjB;AAAA,GAEL,EAAA,CAAA;AAEJ;AAEA,UAAA,CAAW,WAAc,GAAA,yBAAA;;;;"}