diff options
Diffstat (limited to 'src/main/scala/reading/component/widget/Animate.scala')
-rw-r--r-- | src/main/scala/reading/component/widget/Animate.scala | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/scala/reading/component/widget/Animate.scala b/src/main/scala/reading/component/widget/Animate.scala index 0e848aa..6328177 100644 --- a/src/main/scala/reading/component/widget/Animate.scala +++ b/src/main/scala/reading/component/widget/Animate.scala @@ -14,16 +14,16 @@ object Animate { transition: (Double, Double) => Double, animate: (Double, HTMLElement) => Unit, onEnd: => Unit = () - ): Unit = { + ): Unit = animationFrames.get(id) match { - case Some(animationFrame) => window.cancelAnimationFrame(animationFrame) - case None => () + case Some(animationFrame) => + () + case None => + val animationFrame = window.requestAnimationFrame(ts => + frame(id, ts, duration, transition, animate, onEnd)(ts)) + animationFrames.put(id, animationFrame) + () } - val animationFrame = window.requestAnimationFrame(ts => - frame(id, ts, duration, transition, animate, onEnd)(ts)) - animationFrames.put(id, animationFrame) - () - } private def frame( id: String, @@ -44,6 +44,7 @@ object Animate { animationFrames.put(id, animationFrame) } else { animate(1, element) + animationFrames.remove(id) onEnd } case _ => |