/
v8.min.js
9 lines (9 loc) · 1.62 KB
/
v8.min.js
1
2
3
4
5
6
7
8
9
/*!
* V8 - Event Frequency API
* https://github.com/lukesnowden/v8
* http://luke.sno.wden.co.uk/v8
* Copyright 2014 Luke Snowden
* Released under the MIT license:
* http://www.opensource.org/licenses/mit-license.php
*/
(function(e){e.fn.v8=function(t){var t=e.extend({maxFrequency:10,milliseconds:1e3,updateFrequency:100,keyBind:[],preventClickAndTouch:false},t);var n="touchstart"in window;var r=n?"touchstart":"mousedown";var i=n?"touchend":"mouseup";var s=function(e,t,n){function u(t,n){e.on(r+"."+t,function(a){if(!s){s=true;o++;n(o);e.off(r+"."+t).on(i+"."+t,function(r){s=false;e.off(i+"."+t);u(t,n)})}else{a.preventDefault();return false}})}var s=false;var o=0;u(t,n)};var o=function(n){var r=n;var i=e(r);var o=0;var u=[];var a=null;var f=0;var l=0;var c=t.milliseconds;var h=function(){var n=(new Date).getTime();o+=n;u.push(n);if(a===null){a=setInterval(function(){if(c===t.milliseconds&&u.length===0){clearInterval(a);a=null;o=0;l=0;f=0;u=[]}else{var n=(new Date).getTime();while(u.length&&n-u[0]>t.milliseconds){o-=u.shift()}if(u.length>0){c=u[u.length-1]-u[0]}else{c=t.milliseconds}var r=e.Event("tick.v8");r.milliseconds=c;r.clickCount=u.length;r.updateFrequency=t.updateFrequency;r.targetPercentage=Number((u.length*100/t.maxFrequency).toFixed(0));if(r.targetPercentage>100){r.targetPercentage=100}if(r.targetPercentage>f){f=r.targetPercentage}if(r.targetPercentage==100){l++}else{l=0}r.peaks=l;r.highestPercentage=f;i.trigger(r)}},t.updateFrequency)}};if(!t.preventClickAndTouch){new s(i,"v8",h)}if(t.keyBind.length!==0){i.keyup(function(n){if(e.inArray(n.which,t.keyBind)!==-1){h()}})}};return e(this).each(function(e){o(this)})}})(jQuery)