.zoom-motion(@className, @keyframeName) {
  .make-motion(@className, @keyframeName);
  .@{className}-enter,
  .@{className}-appear {
    transform: scale(0); // need this by yiminghe
    animation-timing-function: @ease-out-circ;
  }
  .@{className}-leave {
    animation-timing-function: @ease-in-out-circ;
  }
}

// For Modal
.zoom-motion(zoom, idollZoom);
// For Tooltip、Popover、Popconfirm、Dropdown
.zoom-motion(zoom-big, idollZoomBig);
.zoom-motion(zoom-up, idollZoomUp);
.zoom-motion(zoom-down, idollZoomDown);
.zoom-motion(zoom-left, idollZoomLeft);
.zoom-motion(zoom-right, idollZoomRight);

@keyframes idollZoomIn {
  0% {
    opacity: 0;
    transform: scale(0.2);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

@keyframes idollZoomOut {
  0% {
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(0.2);
  }
}

@keyframes idollZoomBigIn {
  0% {
    opacity: 0;
    transform: scale(.8);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes idollZoomBigOut {
  0% {
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform: scale(.8);
  }
}

@keyframes idollZoomUpIn {
  0% {
    opacity: 0;
    transform-origin: 50% 0%;
    transform: scale(.8);
  }
  100% {
    opacity: 50% 0%;
    transform: scale(1);
  }
}

@keyframes idollZoomUpOut {
  0% {
   transform-origin: 50% 0%;
   transform: scale(1);
  }
  100% {
    opacity: 0;
    transform-origin: 50% 0%;
    transform: scale(.8);
  }
}

@keyframes idollZoomLeftIn {
  0% {
   opacity: 0;
   transform-origin: 0% 50%;
   transform: scale(.8)
  }
  100% {
    transform-origin: 0% 50%;
    transform: scale(1);
  }
}

@keyframes idollZoomLeftOut {
  0% {
    transform-origin: 0% 50%;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform-origin: 0% 50%;
    transform: scale(.8)
  }
}

@keyframes idollZoomRightIn {
  0% {
    opacity: 0;
    transform-origin: 100% 50%;
    transform: scale(.8);
  }
  100% {
    transform-origin: 100% 50%;
    transform: scale(1);
  }
}

@keyframes idollZoomRightOut {
  0% {
    transform-origin: 100% 50%;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform-origin: 100% 50%;
    transform: scale(.8);
  }
}

@keyframes idollZoomDownIn {
  0% {
    opacity: 0;
    transform-origin: 50% 100%;
    transform: scale(.8);
  }
  100% {
    transform-origin: 50% 100%;
    transform: scale(1);
  }
}

@keyframes idollZoomDownOut {
  0% {
    transform-origin: 50% 100%;
    transform: scale(1);
  }
  100% {
    opacity: 0;
    transform-origin: 50% 100%;
    transform: scale(.8);
  }
}
