summaryrefslogtreecommitdiff
path: root/public/assets/js/vendor/confetti.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/js/vendor/confetti.js')
-rw-r--r--public/assets/js/vendor/confetti.js124
1 files changed, 124 insertions, 0 deletions
diff --git a/public/assets/js/vendor/confetti.js b/public/assets/js/vendor/confetti.js
new file mode 100644
index 0000000..3abb2e5
--- /dev/null
+++ b/public/assets/js/vendor/confetti.js
@@ -0,0 +1,124 @@
+var made_confetti = false
+var confetti_on = true
+function MAKE_CONFETTI() {
+ if (made_confetti) return
+ made_confetti = true
+
+ var COLORS, Confetti, NUM_CONFETTI, PI_2, canvas, confetti, context, drawCircle, i, range, resizeWindow, xpos;
+
+ NUM_CONFETTI = 350;
+
+ COLORS = [[254, 163, 170], [248, 184, 139], [250, 248, 132], [186, 237, 145], [178, 206, 254], [242, 162, 232]];
+
+ PI_2 = 2 * Math.PI;
+
+ var canvas = document.createElement("canvas")
+ $("#rapper").append(canvas)
+
+ if (! canvas) return;
+
+ context = canvas.getContext("2d");
+
+ window.w = 0;
+
+ window.h = 0;
+
+ resizeWindow = function() {
+ window.w = canvas.width = window.innerWidth;
+ return window.h = canvas.height = window.innerHeight;
+ };
+
+ window.addEventListener('resize', resizeWindow, false);
+
+ setTimeout(resizeWindow, 0);
+
+ range = function(a, b) {
+ return (b - a) * Math.random() + a;
+ };
+
+ drawCircle = function(x, y, r, style) {
+ context.beginPath();
+ context.arc(x, y, r, 0, PI_2, false);
+ context.fillStyle = style;
+ return context.fill();
+ };
+
+ xpos = 0.5;
+
+ document.onmousemove = function(e) {
+ return xpos = e.pageX / w;
+ };
+
+ window.requestAnimationFrame = (function() {
+ return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function(callback) {
+ return window.setTimeout(callback, 1000 / 60);
+ };
+ })();
+
+ Confetti = (function() {
+ function Confetti() {
+ this.style = COLORS[~~range(0, 5)];
+ this.rgb = "rgba(" + this.style[0] + "," + this.style[1] + "," + this.style[2];
+ this.r = ~~range(2, 6);
+ this.r2 = 2 * this.r;
+ this.replace();
+ }
+
+ Confetti.prototype.replace = function() {
+ this.opacity = 0;
+ this.dop = 0.03 * range(1, 4);
+ this.x = range(-this.r2, w - this.r2);
+ this.y = range(-20, h - this.r2);
+ this.xmax = w - this.r;
+ this.ymax = h - this.r;
+ this.vx = range(0, 2) + 8 * xpos - 5;
+ return this.vy = 0.7 * this.r + range(-1, 1);
+ };
+
+ Confetti.prototype.draw = function() {
+ var ref;
+ this.x += this.vx;
+ this.y += this.vy;
+ this.opacity += this.dop;
+ if (this.opacity > 1) {
+ this.opacity = 1;
+ this.dop *= -1;
+ }
+ if (this.opacity < 0 || this.y > this.ymax) {
+ this.replace();
+ }
+ if (!((0 < (ref = this.x) && ref < this.xmax))) {
+ this.x = (this.x + this.xmax) % this.xmax;
+ }
+ return drawCircle(~~this.x, ~~this.y, this.r, this.rgb + "," + this.opacity + ")");
+ };
+
+ return Confetti;
+
+ })();
+
+ confetti = (function() {
+ var j, ref, results;
+ results = [];
+ for (i = j = 1, ref = NUM_CONFETTI; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) {
+ results.push(new Confetti);
+ }
+ return results;
+ })();
+
+ confetti_step = function() {
+ var c, j, len, results;
+ requestAnimationFrame(confetti_step);
+ if (! confetti_on) return
+ context.clearRect(0, 0, w, h);
+ results = [];
+ for (j = 0, len = confetti.length; j < len; j++) {
+ c = confetti[j];
+ results.push(c.draw());
+ }
+ return results;
+ };
+
+ confetti_step();
+
+} \ No newline at end of file