@analytics/activity-utils
Version:
User activity listener utilities
3 lines (2 loc) • 1.78 kB
JavaScript
var t=require("@analytics/listener-utils"),n=require("analytics-plugin-tab-events");function e(){return e=Object.assign?Object.assign.bind():function(t){for(var n=1;n<arguments.length;n++){var e=arguments[n];for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},e.apply(null,arguments)}var o=["mousemove","mousedown","touchmove","touchstart","touchend","keydown"];function r(e,r){void 0===r&&(r={});var i=function(t,n){var e=this,o=!1;return function(r){o||(t.call(e,r),o=!0,setTimeout(function(){return o=!1},n))}}(e,r.throttle||1e4),u=[];function a(){var e=n.onTabChange(function(t){t||i({type:"tabVisible"})});return u=[e].concat(o.map(function(n){return t.addListener(document,n,i)})).concat(t.addListener(window,"load",i)).concat(t.addListener(window,"scroll",i,{capture:!0,passive:!0})),c}function c(){u.map(function(t){return t()})}return a(),function(){return c(),a}}function i(t){var n,e,o=t.onIdle,i=t.onWakeUp,a=t.onHeartbeat,c=t.timeout,s=void 0===c?1e4:c,l=t.throttle,d=void 0===l?2e3:l,f=!1,v=!1,p=new Date,m=function(){return clearTimeout(n)};function w(t){m(),a&&!f&&a(u(p,v),t),i&&f&&(f=!1,i(u(e,v),t),p=new Date),n=setTimeout(function(){f=!0,o&&(e=new Date,o(u(p,v),t))},s)}var h=r(w,{throttle:d});return w({type:"init"}),{disable:function(){v=!0,f=!1,m();var t=h();return function(){return v=!1,p=new Date,w({type:"load"}),t()}},getStatus:function(){return{isIdle:f,isDisabled:v,active:f?0:u(p,v),idle:f?u(e,v):0}}}}function u(t,n){return n?0:Math.round(((new Date).getTime()-t.getTime())/1e3)}exports.onDomActivity=r,exports.onIdle=function(t,n){return void 0===n&&(n={}),i(e({onIdle:t},n))},exports.onUserActivity=i,exports.onWakeUp=function(t,n){return void 0===n&&(n={}),i(e({onWakeUp:t},n))};
//# sourceMappingURL=analytics-util-activity.js.map