-
Notifications
You must be signed in to change notification settings - Fork 78
/
Copy pathjquery.idle.min.js
28 lines (28 loc) · 7.18 KB
/
jquery.idle.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/**
* File: jquery.idle.js
* Title: JQuery Idle.
* A dead simple jQuery plugin that executes a callback function if the user is idle.
* About: Author
* Henrique Boaventura ([email protected]).
* About: Version
* 1.2.6
* About: License
* Copyright (C) 2013, Henrique Boaventura ([email protected]).
* MIT License:
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* - The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
* - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
**/
!function(o,n){var i=[];o.fn.idle=function(e){var t=o(this),e=new jQuery_IDLE_Detection_API(t,e);return e.bind_idle_events(),e},o.fn.is_idle=function(){let e=o(this);return Boolean(e.data("jquery_idle"))},this.jQuery_IDLE_Detection_API=function(e,t){var i=this,n={idle:6e4,events:"mousemove keydown mousedown touchstart",onIdle:function(){},onActive:function(){},onHide:function(){},onShow:function(){},keepTracking:!0,startAtIdle:!1,recurIdleCall:!1};i.options="object"==typeof t?t:n,i.idle=i.options.startAtIdle||!1,i.visible=!i.options.startAtIdle||!0,i.settings=o.extend({},n,i.options),i.keepTracking=i.settings.keepTracking,i.idleTime=i.settings.idle,i.idleTime=Number(i.idleTime),i.idleTime=isNaN(i.idleTime)?0:i.idleTime,i.idleTime=Number(i.idleTime),i.idleTime=i.idleTime.jIdle_unique_idle_time(),i.idleTime=Number(i.idleTime),i.idleTimeIndex=!1,i.idSettings={},i.unique=Date.now(),i.element=o(e),i.idleDocument=o(document),i.idleElement=o(i.element),i.idleNode=i.idleElement.get(0),i.idleStartTime=!1,i.idleDurationStart=!1,i.idleEndTime=!1,i.idleDurationTime=!1,i.id=!1,i.documentEvents="visibilitychange webkitvisibilitychange mozvisibilitychange msvisibilitychange"},this.jQuery_IDLE_Detection_API.prototype.isActive=function(){var e,t=this;return t.idle&&(t.changeIdle(!1),e=t.createIdleEventObject("jquery_idle_active_user"),t.settings.onActive.apply(t.idleNode,[t,e]),e.defaultPrevented&&(t.keepTracking=!1)),"number"==typeof t.id&&t.removeIdle(),!!t.keepTracking&&(t.isIdle(),!0)},this.jQuery_IDLE_Detection_API.prototype.isIdle=function(){var t=this;return"number"==typeof t.id||!!t.keepTracking&&(0<t.idleTime&&(t.id=t._runSettingsTimerStart(function(){var e=!0;if(e=(e=t.idleElement.length)&&t.keepTracking,!(e=Boolean(e)))return t.changeIdle(!1),t.removeIdle(),t.keepTracking=!1;t.changeIdle(!0),"boolean"==typeof t.idleStartTime&&t.startIdleClock(),t.settings.onIdle.apply(t.idleNode,[t])},t.idleTime)),"number"==typeof t.id)},this.jQuery_IDLE_Detection_API.prototype.createIdleEventObject=function(e){var t=this,i={};return i.instance=t.unique,i.target=t.idleNode,i.name=String(e).trim(),i.defaultPrevented=!1,i.idleStartTime=!1,i.idleEndTime=!1,i.idleDuration=t.idleDurationTime,i.idleDuration=Number(i.idleDuration),i.window=n,i.document=document,!isNaN(i.idleDuration)&&i.idleDuration||(i.idleDuration=t.stopIdleClock(),i.idleDuration=Number(i.idleDuration)),i.idleDuration=t.idleDurationTime,i.idleStartTime=t.idleDurationStart,i.idleEndTime=t.idleEndTime,i.preventDefault=function(){t.keepTracking=!1,this.defaultPrevented=!0,t.removeIdle()},i.restoreDefault=function(){t.keepTracking=!0,t.removeIdle(),t.isIdle()},i},this.jQuery_IDLE_Detection_API.prototype.removeIdle=function(e){var t=this;return"number"==typeof t.id&&(t._runSettingsTimerEnd(t.id),!(t.id=!1))},this.jQuery_IDLE_Detection_API.prototype._runSettingsTimerStart=function(e,t){return(this.settings.recurIdleCall?setInterval:setTimeout)(e,t)},this.jQuery_IDLE_Detection_API.prototype._runSettingsTimerEnd=function(e){return void 0!==e&&(this.settings.recurIdleCall?clearInterval:clearTimeout)(e)},this.jQuery_IDLE_Detection_API.prototype.stopIdle=function(){var e=this;e.unbind_idle_events(),e.keepTracking=!1,e.isActive()},this.jQuery_IDLE_Detection_API.prototype.bind_idle_events=function(){var e=this;return!(!e.idleElement||!e.idleElement.length)&&(e.idleElement.on("idle:stop",e._triggers_onStopEvent()),e.idleElement.on("idle:active",e._triggers_onActiveEvent()),e._openIdleEvent().call(),!0)},this.jQuery_IDLE_Detection_API.prototype._openIdleEvent=function(){var e=this;return function(){i.push(e.idleTime),e.idleTimeIndex=i.length,e.idle&&e.changeIdle(e.idle),e.isIdle(),e.idleDocument.on(e.settings.events,e._onDocumentAction()),(e.settings.onShow||e.settings.onHide)&&e.idleDocument.on(e.documentEvents,e._onDocumentChange())}},this.jQuery_IDLE_Detection_API.prototype._onDocumentAction=function(){var t=this;return function(e){t.keepTracking?t.isActive():(t.changeIdle(!1),t.removeIdle())}},this.jQuery_IDLE_Detection_API.prototype._onDocumentChange=function(){var e=this;return function(){e.doDocumentChange()}},this.jQuery_IDLE_Detection_API.prototype._triggers_onActiveEvent=function(){var t=this;return function(e){t.isActive()}},this.jQuery_IDLE_Detection_API.prototype._triggers_onStopEvent=function(){var t=this;return function(e){t.stopIdle()}},this.jQuery_IDLE_Detection_API.prototype.unbind_idle_events=function(){var e=this;e.idleElement.off(e.settings.events),e.idleElement.off("idle:active"),e.idleElement.off("idle:stop"),e.changeIdle(!1),"number"==typeof e.idleTimeIndex&&(delete i[e.idleTimeIndex-1],e.idleTimeIndex=!1)},this.jQuery_IDLE_Detection_API.prototype.doDocumentChange=function(){var e=this;document.hidden||document.webkitHidden||document.mozHidden||document.msHidden?e.visible&&e.onHide():e.visible||e.onShow()},this.jQuery_IDLE_Detection_API.prototype.onHide=function(){this.visible=!1,this.settings.onHide.call()},this.jQuery_IDLE_Detection_API.prototype.onShow=function(){this.visible=!0,this.settings.onShow.call()},this.jQuery_IDLE_Detection_API.prototype.changeIdle=function(e){var t=this;t.idle=Boolean(e),t.idleElement.data("jquery_idle",t.idle),t.idleElement.data("jquery_idle_lastId",t.id)},this.jQuery_IDLE_Detection_API.prototype.startIdleClock=function(){var e=this;e.idleStartTime=Date.now(),e.idleDurationStart=!1,e.idleDurationTime=!1,e.idleEndTime=!1},this.jQuery_IDLE_Detection_API.prototype.stopIdleClock=function(){var e=this,t=e.idleStartTime,i=Date.now();return e.idleEndTime=i,e.idleStartTime=!1,(e.idleDurationStart=t)?(e.idleDurationTime=i-t,e.idleDurationTime=Math.round(e.idleDurationTime),e.idleDurationTime=Number(e.idleDurationTime)):e.idleDurationTime=0,e.idleDurationTime},Number.prototype.jIdle_unique_idle_time=function(){var e=Number(this);if(!i.length)return e;for(var t=0;t<i.length;t++)Number(i[t])===e&&(e+=1);return e}}(jQuery,window);