Files
WEBtomaste/Atomaste Reference/public_html/wp-content/plugins/burst-statistics/helpers/timeme/timeme.min.js

1 line
6.3 KiB
JavaScript
Raw Normal View History

2025-12-10 12:17:30 -05:00
(()=>{var e,t;e=this,t=()=>{let e={startStopTimes:{},idleTimeoutMs:3e4,currentIdleTimeMs:0,checkIdleStateRateMs:250,isUserCurrentlyOnPage:!0,isUserCurrentlyIdle:!1,currentPageName:"default-page-name",timeElapsedCallbacks:[],userLeftCallbacks:[],userReturnCallbacks:[],trackTimeOnElement:t=>{let s=document.getElementById(t);s&&(s.addEventListener("mouseover",(()=>{e.startTimer(t)})),s.addEventListener("mousemove",(()=>{e.startTimer(t)})),s.addEventListener("mouseleave",(()=>{e.stopTimer(t)})),s.addEventListener("keypress",(()=>{e.startTimer(t)})),s.addEventListener("focus",(()=>{e.startTimer(t)})))},getTimeOnElementInSeconds:t=>{let s=e.getTimeOnPageInSeconds(t);return s||0},startTimer:(t,s)=>{if(t||(t=e.currentPageName),void 0===e.startStopTimes[t])e.startStopTimes[t]=[];else{let s=e.startStopTimes[t],n=s[s.length-1];if(void 0!==n&&void 0===n.stopTime)return}e.startStopTimes[t].push({startTime:s||new Date,stopTime:void 0})},stopAllTimers:()=>{let t=Object.keys(e.startStopTimes);for(let s=0;s<t.length;s++)e.stopTimer(t[s])},stopTimer:(t,s)=>{t||(t=e.currentPageName);let n=e.startStopTimes[t];void 0!==n&&0!==n.length&&void 0===n[n.length-1].stopTime&&(n[n.length-1].stopTime=s||new Date)},getTimeOnCurrentPageInSeconds:()=>e.getTimeOnPageInSeconds(e.currentPageName),getTimeOnPageInSeconds:t=>{let s=e.getTimeOnPageInMilliseconds(t);return void 0===s?void 0:s/1e3},getTimeOnCurrentPageInMilliseconds:()=>e.getTimeOnPageInMilliseconds(e.currentPageName),getTimeOnPageInMilliseconds:t=>{let s=0,n=e.startStopTimes[t];if(void 0===n)return;let i=0;for(let e=0;e<n.length;e++){let t=n[e].startTime,s=n[e].stopTime;void 0===s&&(s=new Date),i+=s-t}return s=Number(i),s},getTimeOnAllPagesInSeconds:()=>{let t=[],s=Object.keys(e.startStopTimes);for(let n=0;n<s.length;n++){let i=s[n],r=e.getTimeOnPageInSeconds(i);t.push({pageName:i,timeOnPage:r})}return t},setIdleDurationInSeconds:t=>{let s=parseFloat(t);if(!1!==isNaN(s))throw{name:"InvalidDurationException",message:"An invalid duration time ("+t+") was provided."};e.idleTimeoutMs=1e3*t},setCurrentPageName:t=>{e.currentPageName=t},resetRecordedPageTime:t=>{delete e.startStopTimes[t]},resetAllRecordedPageTimes:()=>{let t=Object.keys(e.startStopTimes);for(let s=0;s<t.length;s++)e.resetRecordedPageTime(t[s])},userActivityDetected:()=>{e.isUserCurrentlyIdle&&e.triggerUserHasReturned(),e.resetIdleCountdown()},resetIdleCountdown:()=>{e.isUserCurrentlyIdle=!1,e.currentIdleTimeMs=0},callWhenUserLeaves:(t,s)=>{e.userLeftCallbacks.push({callback:t,numberOfTimesToInvoke:s})},callWhenUserReturns:(t,s)=>{e.userReturnCallbacks.push({callback:t,numberOfTimesToInvoke:s})},triggerUserHasReturned:()=>{if(!e.isUserCurrentlyOnPage){e.isUserCurrentlyOnPage=!0,e.resetIdleCountdown();for(let t=0;t<e.userReturnCallbacks.length;t++){let s=e.userReturnCallbacks[t],n=s.numberOfTimesToInvoke;(isNaN(n)||void 0===n||n>0)&&(s.numberOfTimesToInvoke-=1,s.callback())}}e.startTimer()},triggerUserHasLeftPageOrGoneIdle:()=>{if(e.isUserCurrentlyOnPage){e.isUserCurrentlyOnPage=!1;for(let t=0;t<e.userLeftCallbacks.length;t++){let s=e.userLeftCallbacks[t],n=s.numberOfTimesToInvoke;(isNaN(n)||void 0===n||n>0)&&(s.numberOfTimesToInvoke-=1,s.callback())}}e.stopAllTimers()},callAfterTimeElapsedInSeconds:(t,s)=>{e.timeElapsedCallbacks.push({timeInSeconds:t,callback:s,pending:!0})},checkIdleState:()=>{for(let t=0;t<e.timeElapsedCallbacks.length;t++)e.timeElapsedCallbacks[t].pending&&e.getTimeOnCurrentPageInSeconds()>e.timeElapsedCallbacks[t].timeInSeconds&&(e.timeElapsedCallbacks[t].callback(),e.timeElapsedCallbacks[t].pending=!1);!1===e.isUserCurrentlyIdle&&e.currentIdleTimeMs>e.idleTimeoutMs?(e.isUserCurrentlyIdle=!0,e.triggerUserHasLeftPageOrGoneIdle()):e.currentIdleTimeMs+=e.checkIdleStateRateMs},visibilityChangeEventName:void 0,hiddenPropName:void 0,listenForVisibilityEvents:(t,s)=>{t&&e.listenForUserLeavesOrReturnsEvents(),s&&e.listForIdleEvents()},listenForUserLeavesOrReturnsEvents:()=>{void 0!==document.hidden?(e.hiddenPropName="hidden",e.visibilityChangeEventName="visibilitychange"):void 0!==document.mozHidden?(e.hiddenPropName="mo