aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/component/widget/Animate.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/component/widget/Animate.scala')
-rw-r--r--src/main/scala/reading/component/widget/Animate.scala17
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 _ =>