Play then reverse second animation (click)

by ShaCP

HTML

<div id="one" class="anim-zero" tabindex="-1">
<span onclick="((event) => event.stopPropagation())(event)">Test</span>
</div>
<p>
some text
</p>
<!-- <div id="counter">
</div> -->

CSS

body {
  height: 100vh;
}

div {
  width: 200px;
  height: 200px;
  background-color: lightskyblue;
  animation-fill-mode: forwards;
  animation-duration: 1.65s;
  animation-timing-function: linear;
}

#one.anim-zero {
  animation-name: zero;
}


#one.anim-one {
  animation-name: one;
}

#one.animZeroEndPosition {
 transform: translateY(100%);
}

#one.animOneEndPosition {
 transform: translateX(100%) translateY(100%);
}

#one.pointerEventsOff {
  pointer-events: none;
}


@keyframes zero {
  0% {
    transform: none;
  }
  
  100% {
    transform: translateY(100%);
  }
}

@keyframes one {
  0% {
    transform: translateY(100%);
  }
  
  100% {
    transform: translateY(100%) translateX(100%);
  }
}

#one.reverseAnim {
  animation-direction: reverse;
}

p {
  margin-top: 50%;
}

JavaScript

const toggleAnim = (e, name) => {
  debugger;
  e.target.classList.toggle(name)
}

const toggleAnimOneEndPosition = (e) => {
  if (e.animationName === "one") {
    e.target.classList.toggle("animOneEndPosition");
  } else if (e.animationName === "zero") {
    e.target.classList.toggle("animZeroEndPosition");
  }
}

const toggleReverseAnim = (e) => {
  e.target.classList.toggle("reverseAnim");
}

const togglePointerEvents = (e) => {
  e.target.classList.toggle("pointerEventsOff");
}

const preventDefault = (e) => {
  e.preventDefault();
}

const animationStart = (e) => {
  if (e.animationName === "one") {
    /* togglePointerEvents() */
    e.target.removeEventListener("click", toggleAnimOne);
  }
}

const animationEnd = (e) => {
  /* togglePointerEvents() */
  ;
  if (e.animationName === "one") {
    toggleAnim(e, "anim-one");
    toggleAnimOneEndPosition(e);
    toggleReverseAnim(e);
  } else {
    if (e.animationName === "zero") {
      toggleAnim(e, "anim-zero");
      toggleAnimOneEndPosition(e);
    }
  }
  e.target.addEventListener("click", toggleAnimOne);
}

const toggleAnimOne = (e) => {
  toggleAnim(e, "anim-one")
}

one.addEventListener("animationend", animationEnd)
one.addEventListener("animationstart", animationStart)


/* window.removeEventListener("blur", preventDefault); */