slide.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import type { VariantsType } from '../types'
  2. //
  3. import { varTranEnter, varTranExit } from './transition'
  4. // ----------------------------------------------------------------------
  5. export const varSlide = (props?: VariantsType) => {
  6. const distance = props?.distance || 160
  7. const durationIn = props?.durationIn
  8. const durationOut = props?.durationOut
  9. const easeIn = props?.easeIn
  10. const easeOut = props?.easeOut
  11. return {
  12. // IN
  13. inUp: {
  14. initial: { y: distance },
  15. animate: { y: 0, transition: varTranEnter({ durationIn, easeIn }) },
  16. exit: { y: distance, transition: varTranExit({ durationOut, easeOut }) }
  17. },
  18. inDown: {
  19. initial: { y: -distance },
  20. animate: { y: 0, transition: varTranEnter({ durationIn, easeIn }) },
  21. exit: { y: -distance, transition: varTranExit({ durationOut, easeOut }) }
  22. },
  23. inLeft: {
  24. initial: { x: -distance },
  25. animate: { x: 0, transition: varTranEnter({ durationIn, easeIn }) },
  26. exit: { x: -distance, transition: varTranExit({ durationOut, easeOut }) }
  27. },
  28. inRight: {
  29. initial: { x: distance },
  30. animate: { x: 0, transition: varTranEnter({ durationIn, easeIn }) },
  31. exit: { x: distance, transition: varTranExit({ durationOut, easeOut }) }
  32. },
  33. // OUT
  34. outUp: {
  35. initial: { y: 0 },
  36. animate: {
  37. y: -distance,
  38. transition: varTranEnter({ durationIn, easeIn })
  39. },
  40. exit: { y: 0, transition: varTranExit({ durationOut, easeOut }) }
  41. },
  42. outDown: {
  43. initial: { y: 0 },
  44. animate: {
  45. y: distance,
  46. transition: varTranEnter({ durationIn, easeIn })
  47. },
  48. exit: { y: 0, transition: varTranExit({ durationOut, easeOut }) }
  49. },
  50. outLeft: {
  51. initial: { x: 0 },
  52. animate: {
  53. x: -distance,
  54. transition: varTranEnter({ durationIn, easeIn })
  55. },
  56. exit: { x: 0, transition: varTranExit({ durationOut, easeOut }) }
  57. },
  58. outRight: {
  59. initial: { x: 0 },
  60. animate: {
  61. x: distance,
  62. transition: varTranEnter({ durationIn, easeIn })
  63. },
  64. exit: { x: 0, transition: varTranExit({ durationOut, easeOut }) }
  65. }
  66. }
  67. }