about summary refs log tree commit diff
path: root/app/assets/javascripts/mastodon-logo.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/mastodon-logo.coffee')
-rw-r--r--app/assets/javascripts/mastodon-logo.coffee48
1 files changed, 48 insertions, 0 deletions
diff --git a/app/assets/javascripts/mastodon-logo.coffee b/app/assets/javascripts/mastodon-logo.coffee
new file mode 100644
index 000000000..3fb8c0a13
--- /dev/null
+++ b/app/assets/javascripts/mastodon-logo.coffee
@@ -0,0 +1,48 @@
+defaultClass = 'mastodon-shape'
+pieces = [
+  'path#mastodon-tusk-front, path#mastodon-tusk-back',
+  'path#mastodon-nose',
+  'path#mastodon-cheek',
+  'path#mastodon-forehead',
+  'path#mastodon-backhead',
+  'path#mastodon-ear',
+]
+pieceIndex = 0
+firstPiece = pieces[0]
+
+currentTimer = null
+delay        = 100
+runs         = 0
+stop_at_run  = 1
+
+clearHighlights = ->
+  $(".#{defaultClass}.highlight").attr('class', defaultClass)
+
+start = ->
+  clearHighlights()
+  pieceIndex = 0
+  runs = 0
+  pieces.reverse() unless pieces[0] == firstPiece
+  clearInterval(currentTimer) if currentTimer
+  currentTimer = setInterval(work, delay)
+
+stop = ->
+  clearInterval(currentTimer)
+  clearHighlights()
+
+work = ->
+  clearHighlights()
+  $(pieces[pieceIndex]).attr('class', "#{defaultClass} highlight")
+
+  if pieceIndex == pieces.length - 1
+    pieceIndex = 0
+    pieces.reverse()
+    runs++
+  else
+    pieceIndex++
+
+  if runs == stop_at_run
+    stop()
+
+$ ->
+  setTimeout(start, 500)