zoom.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import type { VariantsType } from '../types'
  2. //
  3. import { varTranEnter, varTranExit } from './transition'
  4. // ----------------------------------------------------------------------
  5. export const varZoom = (props?: VariantsType) => {
  6. const distance = props?.distance || 720
  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. in: {
  14. initial: { scale: 0, opacity: 0 },
  15. animate: {
  16. scale: 1,
  17. opacity: 1,
  18. transition: varTranEnter({ durationIn, easeIn })
  19. },
  20. exit: {
  21. scale: 0,
  22. opacity: 0,
  23. transition: varTranExit({ durationOut, easeOut })
  24. }
  25. },
  26. inUp: {
  27. initial: { scale: 0, opacity: 0, translateY: distance },
  28. animate: {
  29. scale: 1,
  30. opacity: 1,
  31. translateY: 0,
  32. transition: varTranEnter({ durationIn, easeIn })
  33. },
  34. exit: {
  35. scale: 0,
  36. opacity: 0,
  37. translateY: distance,
  38. transition: varTranExit({ durationOut, easeOut })
  39. }
  40. },
  41. inDown: {
  42. initial: { scale: 0, opacity: 0, translateY: -distance },
  43. animate: {
  44. scale: 1,
  45. opacity: 1,
  46. translateY: 0,
  47. transition: varTranEnter({ durationIn, easeIn })
  48. },
  49. exit: {
  50. scale: 0,
  51. opacity: 0,
  52. translateY: -distance,
  53. transition: varTranExit({ durationOut, easeOut })
  54. }
  55. },
  56. inLeft: {
  57. initial: { scale: 0, opacity: 0, translateX: -distance },
  58. animate: {
  59. scale: 1,
  60. opacity: 1,
  61. translateX: 0,
  62. transition: varTranEnter({ durationIn, easeIn })
  63. },
  64. exit: {
  65. scale: 0,
  66. opacity: 0,
  67. translateX: -distance,
  68. transition: varTranExit({ durationOut, easeOut })
  69. }
  70. },
  71. inRight: {
  72. initial: { scale: 0, opacity: 0, translateX: distance },
  73. animate: {
  74. scale: 1,
  75. opacity: 1,
  76. translateX: 0,
  77. transition: varTranEnter({ durationIn, easeIn })
  78. },
  79. exit: {
  80. scale: 0,
  81. opacity: 0,
  82. translateX: distance,
  83. transition: varTranExit({ durationOut, easeOut })
  84. }
  85. },
  86. // OUT
  87. out: {
  88. initial: { scale: 1, opacity: 1 },
  89. animate: {
  90. scale: 0,
  91. opacity: 0,
  92. transition: varTranEnter({ durationIn, easeIn })
  93. }
  94. },
  95. outUp: {
  96. initial: { scale: 1, opacity: 1 },
  97. animate: {
  98. scale: 0,
  99. opacity: 0,
  100. translateY: -distance,
  101. transition: varTranEnter({ durationIn, easeIn })
  102. }
  103. },
  104. outDown: {
  105. initial: { scale: 1, opacity: 1 },
  106. animate: {
  107. scale: 0,
  108. opacity: 0,
  109. translateY: distance,
  110. transition: varTranEnter({ durationIn, easeIn })
  111. }
  112. },
  113. outLeft: {
  114. initial: { scale: 1, opacity: 1 },
  115. animate: {
  116. scale: 0,
  117. opacity: 0,
  118. translateX: -distance,
  119. transition: varTranEnter({ durationIn, easeIn })
  120. }
  121. },
  122. outRight: {
  123. initial: { scale: 1, opacity: 1 },
  124. animate: {
  125. scale: 0,
  126. opacity: 0,
  127. translateX: distance,
  128. transition: varTranEnter({ durationIn, easeIn })
  129. }
  130. }
  131. }
  132. }