Files
safekat/httpdocs/themes/vuexy/vendor/libs/idletimer/idletimer.js

44 lines
36 KiB
JavaScript
Executable File

/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else {
var a = factory();
for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(self, function() {
return /******/ (function() { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./libs/idletimer/idletimer.js":
/*!*************************************!*\
!*** ./libs/idletimer/idletimer.js ***!
\*************************************/
/***/ (function() {
eval("function _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n/*! Idle Timer - v1.1.1 - 2020-06-25\n * https://github.com/thorst/jquery-idletimer\n * Copyright (c) 2020 Paul Irish; Licensed MIT */\n/*\n\tmousewheel (deprecated) -> IE6.0, Chrome, Opera, Safari\n\tDOMMouseScroll (deprecated) -> Firefox 1.0\n\twheel (standard) -> Chrome 31, Firefox 17, IE9, Firefox Mobile 17.0\n\n\t//No need to use, use DOMMouseScroll\n\tMozMousePixelScroll -> Firefox 3.5, Firefox Mobile 1.0\n\n\t//Events\n\tWheelEvent -> see wheel\n\tMouseWheelEvent -> see mousewheel\n\tMouseScrollEvent -> Firefox 3.5, Firefox Mobile 1.0\n*/\n(function ($) {\n $.idleTimer = function (firstParam, elem) {\n var opts;\n if (_typeof(firstParam) === 'object') {\n opts = firstParam;\n firstParam = null;\n } else if (typeof firstParam === 'number') {\n opts = {\n timeout: firstParam\n };\n firstParam = null;\n }\n\n // element to watch\n elem = elem || document;\n\n // defaults that are to be stored as instance props on the elem\n opts = $.extend({\n idle: false,\n // indicates if the user is idle\n timeout: 30000,\n // the amount of time (ms) before the user is considered idle\n events: 'mousemove keydown wheel DOMMouseScroll mousewheel mousedown touchstart touchmove MSPointerDown MSPointerMove' // define active events\n }, opts);\n var jqElem = $(elem),\n obj = jqElem.data('idleTimerObj') || {},\n /* (intentionally not documented)\n * Toggles the idle state and fires an appropriate event.\n * @return {void}\n */\n toggleIdleState = function toggleIdleState(e) {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n // toggle the state\n obj.idle = !obj.idle;\n\n // store toggle state date time\n obj.olddate = +new Date();\n\n // create a custom event, with state and name space\n var event = $.Event((obj.idle ? 'idle' : 'active') + '.idleTimer');\n\n // trigger event on object with elem and copy of obj\n $(elem).trigger(event, [elem, $.extend({}, obj), e]);\n },\n /**\n * Handle event triggers\n * @return {void}\n * @method event\n * @static\n */\n handleEvent = function handleEvent(e) {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n // ignore writting to storage unless related to idleTimer\n if (e.type === 'storage' && e.originalEvent.key !== obj.timerSyncId) {\n return;\n }\n\n // this is already paused, ignore events for now\n if (obj.remaining != null) {\n return;\n }\n\n /*\n mousemove is kinda buggy, it can be triggered when it should be idle.\n Typically is happening between 115 - 150 milliseconds after idle triggered.\n @psyafter & @kaellis report \"always triggered if using modal (jQuery ui, with overlay)\"\n @thorst has similar issues on ios7 \"after $.scrollTop() on text area\"\n */\n if (e.type === 'mousemove') {\n // if coord are same, it didn't move\n if (e.pageX === obj.pageX && e.pageY === obj.pageY) {\n return;\n }\n // if coord don't exist how could it move\n if (typeof e.pageX === 'undefined' && typeof e.pageY === 'undefined') {\n return;\n }\n // under 200 ms is hard to do, and you would have to stop, as continuous activity will bypass this\n var elapsed = +new Date() - obj.olddate;\n if (elapsed < 200) {\n return;\n }\n }\n\n // clear any existing timeout\n clearTimeout(obj.tId);\n\n // if the idle timer is enabled, flip\n if (obj.idle) {\n toggleIdleState(e);\n }\n\n // store when user was last active\n obj.lastActive = +new Date();\n\n // update mouse coord\n obj.pageX = e.pageX;\n obj.pageY = e.pageY;\n\n // sync lastActive\n if (e.type !== 'storage' && obj.timerSyncId) {\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(obj.timerSyncId, obj.lastActive);\n }\n }\n\n // set a new timeout\n obj.tId = setTimeout(toggleIdleState, obj.timeout);\n },\n /**\n * Restore initial settings and restart timer\n * @return {void}\n * @method reset\n * @static\n */\n reset = function reset() {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n // reset settings\n obj.idle = obj.idleBackup;\n obj.olddate = +new Date();\n obj.lastActive = obj.olddate;\n obj.remaining = null;\n\n // reset Timers\n clearTimeout(obj.tId);\n if (!obj.idle) {\n obj.tId = setTimeout(toggleIdleState, obj.timeout);\n }\n },\n /**\n * Store remaining time, stop timer\n * You can pause from an idle OR active state\n * @return {void}\n * @method pause\n * @static\n */\n pause = function pause() {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n // this is already paused\n if (obj.remaining != null) {\n return;\n }\n\n // define how much is left on the timer\n obj.remaining = obj.timeout - (+new Date() - obj.olddate);\n\n // clear any existing timeout\n clearTimeout(obj.tId);\n },\n /**\n * Start timer with remaining value\n * @return {void}\n * @method resume\n * @static\n */\n resume = function resume() {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n // this isn't paused yet\n if (obj.remaining == null) {\n return;\n }\n\n // start timer\n if (!obj.idle) {\n obj.tId = setTimeout(toggleIdleState, obj.remaining);\n }\n\n // clear remaining\n obj.remaining = null;\n },\n /**\n * Stops the idle timer. This removes appropriate event handlers\n * and cancels any pending timeouts.\n * @return {void}\n * @method destroy\n * @static\n */\n destroy = function destroy() {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n //clear any pending timeouts\n clearTimeout(obj.tId);\n\n //Remove data\n jqElem.removeData('idleTimerObj');\n\n //detach the event handlers\n jqElem.off('._idleTimer');\n },\n /**\n * Returns the time until becoming idle\n * @return {number}\n * @method remainingtime\n * @static\n */\n remainingtime = function remainingtime() {\n var obj = $.data(elem, 'idleTimerObj') || {};\n\n //If idle there is no time remaining\n if (obj.idle) {\n return 0;\n }\n\n //If its paused just return that\n if (obj.remaining != null) {\n return obj.remaining;\n }\n\n //Determine remaining, if negative idle didn't finish flipping, just return 0\n var remaining = obj.timeout - (+new Date() - obj.lastActive);\n if (remaining < 0) {\n remaining = 0;\n }\n\n //If this is paused return that number, else return current remaining\n return remaining;\n };\n\n // determine which function to call\n if (firstParam === null && typeof obj.idle !== 'undefined') {\n // they think they want to init, but it already is, just reset\n reset();\n return jqElem;\n } else if (firstParam === null) {\n // they want to init\n } else if (firstParam !== null && typeof obj.idle === 'undefined') {\n // they want to do something, but it isnt init\n // not sure the best way to handle this\n return false;\n } else if (firstParam === 'destroy') {\n destroy();\n return jqElem;\n } else if (firstParam === 'pause') {\n pause();\n return jqElem;\n } else if (firstParam === 'resume') {\n resume();\n return jqElem;\n } else if (firstParam === 'reset') {\n reset();\n return jqElem;\n } else if (firstParam === 'getRemainingTime') {\n return remainingtime();\n } else if (firstParam === 'getElapsedTime') {\n return +new Date() - obj.olddate;\n } else if (firstParam === 'getLastActiveTime') {\n return obj.lastActive;\n } else if (firstParam === 'isIdle') {\n return obj.idle;\n }\n\n // Test via a getter in the options object to see if the passive property is accessed\n // This isnt working in jquery, though is planned for 4.0\n // https://github.com/jquery/jquery/issues/2871\n /*var supportsPassive = false;\n try {\n var Popts = Object.defineProperty({}, \"passive\", {\n get: function() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"test\", null, Popts);\n } catch (e) {}\n */\n\n /* (intentionally not documented)\n * Handles a user event indicating that the user isn't idle. namespaced with internal idleTimer\n * @param {Event} event A DOM2-normalized event object.\n * @return {void}\n */\n jqElem.on((opts.events + ' ').split(' ').join('._idleTimer ').trim(), function (e) {\n handleEvent(e);\n });\n //}, supportsPassive ? { passive: true } : false);\n\n if (opts.timerSyncId) {\n $(window).on('storage', handleEvent);\n }\n\n // Internal Object Properties, This isn't all necessary, but we\n // explicitly define all keys here so we know what we are working with\n obj = $.extend({}, {\n olddate: +new Date(),\n // the last time state changed\n lastActive: +new Date(),\n // the last time timer was active\n idle: opts.idle,\n // current state\n idleBackup: opts.idle,\n // backup of idle parameter since it gets modified\n timeout: opts.timeout,\n // the interval to change state\n remaining: null,\n // how long until state changes\n timerSyncId: opts.timerSyncId,\n // localStorage key to use for syncing this timer\n tId: null,\n // the idle timer setTimeout\n pageX: null,\n // used to store the mouse coord\n pageY: null\n });\n\n // set a timeout to toggle state. May wish to omit this in some situations\n if (!obj.idle) {\n obj.tId = setTimeout(toggleIdleState, obj.timeout);\n }\n\n // store our instance on the object\n $.data(elem, 'idleTimerObj', obj);\n return jqElem;\n };\n\n // This allows binding to element\n $.fn.idleTimer = function (firstParam) {\n if (this[0]) {\n return $.idleTimer(firstParam, this[0]);\n }\n return this;\n };\n})(jQuery);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9saWJzL2lkbGV0aW1lci9pZGxldGltZXIuanMuanMiLCJuYW1lcyI6WyIkIiwiaWRsZVRpbWVyIiwiZmlyc3RQYXJhbSIsImVsZW0iLCJvcHRzIiwiX3R5cGVvZiIsInRpbWVvdXQiLCJkb2N1bWVudCIsImV4dGVuZCIsImlkbGUiLCJldmVudHMiLCJqcUVsZW0iLCJvYmoiLCJkYXRhIiwidG9nZ2xlSWRsZVN0YXRlIiwiZSIsIm9sZGRhdGUiLCJEYXRlIiwiZXZlbnQiLCJFdmVudCIsInRyaWdnZXIiLCJoYW5kbGVFdmVudCIsInR5cGUiLCJvcmlnaW5hbEV2ZW50Iiwia2V5IiwidGltZXJTeW5jSWQiLCJyZW1haW5pbmciLCJwYWdlWCIsInBhZ2VZIiwiZWxhcHNlZCIsImNsZWFyVGltZW91dCIsInRJZCIsImxhc3RBY3RpdmUiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwic2V0VGltZW91dCIsInJlc2V0IiwiaWRsZUJhY2t1cCIsInBhdXNlIiwicmVzdW1lIiwiZGVzdHJveSIsInJlbW92ZURhdGEiLCJvZmYiLCJyZW1haW5pbmd0aW1lIiwib24iLCJzcGxpdCIsImpvaW4iLCJ0cmltIiwid2luZG93IiwiZm4iLCJqUXVlcnkiXSwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsid2VicGFjazovL1Z1ZXh5Ly4vbGlicy9pZGxldGltZXIvaWRsZXRpbWVyLmpzP2Q5MzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyohIElkbGUgVGltZXIgLSB2MS4xLjEgLSAyMDIwLTA2LTI1XG4gKiBodHRwczovL2dpdGh1Yi5jb20vdGhvcnN0L2pxdWVyeS1pZGxldGltZXJcbiAqIENvcHlyaWdodCAoYykgMjAyMCBQYXVsIElyaXNoOyBMaWNlbnNlZCBNSVQgKi9cbi8qXG5cdG1vdXNld2hlZWwgKGRlcHJlY2F0ZWQpIC0+IElFNi4wLCBDaHJvbWUsIE9wZXJhLCBTYWZhcmlcblx0RE9NTW91c2VTY3JvbGwgKGRlcHJlY2F0ZWQpIC0+IEZpcmVmb3ggMS4wXG5cdHdoZWVsIChzdGFuZGFyZCkgLT4gQ2hyb21lIDMxLCBGaXJlZm94IDE3LCBJRTksIEZpcmVmb3ggTW9iaWxlIDE3LjBcblxuXHQvL05vIG5lZWQgdG8gdXNlLCB1c2UgRE9NTW91c2VTY3JvbGxcblx0TW96TW91c2VQaXhlbFNjcm9sbCAtPiBGaXJlZm94IDMuNSwgRmlyZWZveCBNb2JpbGUgMS4wXG5cblx0Ly9FdmVudHNcblx0V2hlZWxFdmVudCAtPiBzZWUgd2hlZWxcblx0TW91c2VXaGVlbEV2ZW50IC0+IHNlZSBtb3VzZXdoZWVsXG5cdE1vdXNlU2Nyb2xsRXZlbnQgLT4gRmlyZWZveCAzLjUsIEZpcmVmb3ggTW9iaWxlIDEuMFxuKi9cbihmdW5jdGlvbiAoJCkge1xuICAkLmlkbGVUaW1lciA9IGZ1bmN0aW9uIChmaXJzdFBhcmFtLCBlbGVtKSB7XG4gICAgdmFyIG9wdHM7XG4gICAgaWYgKHR5cGVvZiBmaXJzdFBhcmFtID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0cyA9IGZpcnN0UGFyYW07XG4gICAgICBmaXJzdFBhcmFtID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaXJzdFBhcmFtID09PSAnbnVtYmVyJykge1xuICAgICAgb3B0cyA9IHsgdGltZW91dDogZmlyc3RQYXJhbSB9O1xuICAgICAgZmlyc3RQYXJhbSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gZWxlbWVudCB0byB3YXRjaFxuICAgIGVsZW0gPSBlbGVtIHx8IGRvY3VtZW50O1xuXG4gICAgLy8gZGVmYXVsdHMgdGhhdCBhcmUgdG8gYmUgc3RvcmVkIGFzIGluc3RhbmNlIHByb3BzIG9uIHRoZSBlbGVtXG4gICAgb3B0cyA9ICQuZXh0ZW5kKFxuICAgICAge1xuICAgICAgICBpZGxlOiBmYWxzZSwgLy8gaW5kaWNhdGVzIGlmIHRoZSB1c2VyIGlzIGlkbGVcbiAgICAgICAgdGltZW91dDogMzAwMDAsIC8vIHRoZSBhbW91bnQgb2YgdGltZSAobXMpIGJlZm9yZSB0aGUgdXNlciBpcyBjb25zaWRlcmVkIGlkbGVcbiAgICAgICAgZXZlbnRzOlxuICAgICAgICAgICdtb3VzZW1vdmUga2V5ZG93biB3aGVlbCBET01Nb3VzZVNjcm9sbCBtb3VzZXdoZWVsIG1vdXNlZG93biB0b3VjaHN0YXJ0IHRvdWNobW92ZSBNU1BvaW50ZXJEb3duIE1TUG9pbnRlck1vdmUnIC8vIGRlZmluZSBhY3RpdmUgZXZlbnRzXG4gICAgICB9LFxuICAgICAgb3B0c1xuICAgICk7XG5cbiAgICB2YXIganFFbGVtID0gJChlbGVtKSxcbiAgICAgIG9iaiA9IGpxRWxlbS5kYXRhKCdpZGxlVGltZXJPYmonKSB8fCB7fSxcbiAgICAgIC8qIChpbnRlbnRpb25hbGx5IG5vdCBkb2N1bWVudGVkKVxuICAgICAgICogVG9nZ2xlcyB0aGUgaWRsZSBzdGF0ZSBhbmQgZmlyZXMgYW4gYXBwcm9wcmlhdGUgZXZlbnQuXG4gICAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAgICovXG4gICAgICB0b2dnbGVJZGxlU3RhdGUgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgb2JqID0gJC5kYXRhKGVsZW0sICdpZGxlVGltZXJPYmonKSB8fCB7fTtcblxuICAgICAgICAvLyB0b2dnbGUgdGhlIHN0YXRlXG4gICAgICAgIG9iai5pZGxlID0gIW9iai5pZGxlO1xuXG4gICAgICAgIC8vIHN0b3JlIHRvZ2dsZSBzdGF0ZSBkYXRlIHRpbWVcbiAgICAgICAgb2JqLm9sZGRhdGUgPSArbmV3IERhdGUoKTtcblxuICAgICAgICAvLyBjcmVhdGUgYSBjdXN0b20gZXZlbnQsIHdpdGggc3RhdGUgYW5kIG5hbWUgc3BhY2VcbiAgICAgICAgdmFyIGV2ZW50ID0gJC5FdmVudCgob2JqLmlkbGUgPyAnaWRsZScgOiAnYWN0aXZlJykgKyAnLmlkbGVUaW1lcicpO1xuXG4gICAgICAgIC8vIHRyaWdnZXIgZXZlbnQgb24gb2JqZWN0IHdpdGggZWxlbSBhbmQgY29weSBvZiBvYmpcbiAgICAgICAgJChlbGVtKS50cmlnZ2VyKGV2ZW50LCBbZWxlbSwgJC5leHRlbmQoe30sIG9iaiksIGVdKTtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIEhhbmRsZSBldmVudCB0cmlnZ2Vyc1xuICAgICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgICAqIEBtZXRob2QgZXZlbnRcbiAgICAgICAqIEBzdGF0aWNcbiAgICAgICAqL1xuICAgICAgaGFuZGxlRXZlbnQgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgb2JqID0gJC5kYXRhKGVsZW0sICdpZGxlVGltZXJPYmonKSB8fCB7fTtcblxuICAgICAgICAvLyBpZ25vcmUgd3JpdHRpbmcgdG8gc3RvcmFnZSB1bmxlc3MgcmVsYXRlZCB0byBpZGxlVGltZXJcbiAgICAgICAgaWYgKGUudHlwZSA9PT0gJ3N0b3JhZ2UnICYmIGUub3JpZ2luYWxFdmVudC5rZXkgIT09IG9iai50aW1lclN5bmNJZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHRoaXMgaXMgYWxyZWFkeSBwYXVzZWQsIGlnbm9yZSBldmVudHMgZm9yIG5vd1xuICAgICAgICBpZiAob2JqLnJlbWFpbmluZyAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgICAgICAgbW91c2Vtb3ZlIGlzIGtpbmRhIGJ1Z2d5LCBpdCBjYW4gYmUgdHJpZ2dlcmVkIHdoZW4gaXQgc2hvdWxkIGJlIGlkbGUuXG4gICAgICAgICAgICAgIFR5cGljYWxseSBpcyBoYXBwZW5pbmcgYmV0d2VlbiAxMTUgLSAxNTAgbWlsbGlzZWNvbmRzIGFmdGVyIGlkbGUgdHJpZ2dlcmVkLlxuICAgICAgICAgICAgICBAcHN5YWZ0ZXIgJiBAa2FlbGxpcyByZXBvcnQgXCJhbHdheXMgdHJpZ2dlcmVkIGlmIHVzaW5nIG1vZGFsIChqUXVlcnkgdWksIHdpdGggb3ZlcmxheSlcIlxuICAgICAgICAgICAgICBAdGhvcnN0IGhhcyBzaW1pbGFyIGlzc3VlcyBvbiBpb3M3IFwiYWZ0ZXIgJC5zY3JvbGxUb3AoKSBvbiB0ZXh0IGFyZWFcIlxuICAgICAgICAgICAgICAqL1xuICAgICAgICBpZiAoZS50eXBlID09PSAnbW91c2Vtb3ZlJykge1xuICAgICAgICAgIC8vIGlmIGNvb3JkIGFyZSBzYW1lLCBpdCBkaWRuJ3QgbW92ZVxuICAgICAgICAgIGlmIChlLnBhZ2VYID09PSBvYmoucGFnZVggJiYgZS5wYWdlWSA9PT0gb2JqLnBhZ2VZKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIGlmIGNvb3JkIGRvbid0IGV4aXN0IGhvdyBjb3VsZCBpdCBtb3ZlXG4gICAgICAgICAgaWYgKHR5cGVvZiBlLnBhZ2VYID09PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZS5wYWdlWSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gdW5kZXIgMjAwIG1zIGlzIGhhcmQgdG8gZG8sIGFuZCB5b3Ugd291bGQgaGF2ZSB0byBzdG9wLCBhcyBjb250aW51b3VzIGFjdGl2aXR5IHdpbGwgYnlwYXNzIHRoaXNcbiAgICAgICAgICB2YXIgZWxhcHNlZCA9ICtuZXcgRGF0ZSgpIC0gb2JqLm9sZGRhdGU7XG4gICAgICAgICAgaWYgKGVsYXBzZWQgPCAyMDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjbGVhciBhbnkgZXhpc3RpbmcgdGltZW91dFxuICAgICAgICBjbGVhclRpbWVvdXQob2JqLnRJZCk7XG5cbiAgICAgICAgLy8gaWYgdGhlIGlkbGUgdGltZXIgaXMgZW5hYmxlZCwgZmxpcFxuICAgICAgICBpZiAob2JqLmlkbGUpIHtcbiAgICAgICAgICB0b2dnbGVJZGxlU3RhdGUoZSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdG9yZSB3aGVuIHVzZXIgd2FzIGxhc3QgYWN0aXZlXG4gICAgICAgIG9iai5sYXN0QWN0aXZlID0gK25ldyBEYXRlKCk7XG5cbiAgICAgICAgLy8gdXBkYXRlIG1vdXNlIGNvb3JkXG4gICAgICAgIG9iai5wYWdlWCA9IGUucGFnZVg7XG4gICAgICAgIG9iai5wYWdlWSA9IGUucGFnZVk7XG5cbiAgICAgICAgLy8gc3luYyBsYXN0QWN0aXZlXG4gICAgICAgIGlmIChlLnR5cGUgIT09ICdzdG9yYWdlJyAmJiBvYmoudGltZXJTeW5jSWQpIHtcbiAgICAgICAgICBpZiAodHlwZW9mIGxvY2FsU3RvcmFnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKG9iai50aW1lclN5bmNJZCwgb2JqLmxhc3RBY3RpdmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNldCBhIG5ldyB0aW1lb3V0XG4gICAgICAgIG9iai50SWQgPSBzZXRUaW1lb3V0KHRvZ2dsZUlkbGVTdGF0ZSwgb2JqLnRpbWVvdXQpO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogUmVzdG9yZSBpbml0aWFsIHNldHRpbmdzIGFuZCByZXN0YXJ0IHRpbWVyXG4gICAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAgICogQG1ldGhvZCByZXNldFxuICAgICAgICogQHN0YXRpY1xuICAgICAgICovXG4gICAgICByZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9iaiA9ICQuZGF0YShlbGVtLCAnaWRsZVRpbWVyT2JqJykgfHwge307XG5cbiAgICAgICAgLy8gcmVzZXQgc2V0dGluZ3NcbiAgICAgICAgb2JqLmlkbGUgPSBvYmouaWRsZUJhY2t1cDtcbiAgICAgICAgb2JqLm9sZGRhdGUgPSArbmV3IERhdGUoKTtcbiAgICAgICAgb2JqLmxhc3RBY3RpdmUgPSBvYmoub2xkZGF0ZTtcbiAgICAgICAgb2JqLnJlbWFpbmluZyA9IG51bGw7XG5cbiAgICAgICAgLy8gcmVzZXQgVGltZXJzXG4gICAgICAgIGNsZWFyVGltZW91dChvYmoudElkKTtcbiAgICAgICAgaWYgKCFvYmouaWRsZSkge1xuICAgICAgICAgIG9iai50SWQgPSBzZXRUaW1lb3V0KHRvZ2dsZUlkbGVTdGF0ZSwgb2JqLnRpbWVvdXQpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBTdG9yZSByZW1haW5pbmcgdGltZSwgc3RvcCB0aW1lclxuICAgICAgICogWW91IGNhbiBwYXVzZSBmcm9tIGFuIGlkbGUgT1IgYWN0aXZlIHN0YXRlXG4gICAgICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgICAgICogQG1ldGhvZCBwYXVzZVxuICAgICAgICogQHN0YXRpY1xuICAgICAgICovXG4gICAgICBwYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9iaiA9ICQuZGF0YShlbGVtLCAnaWRsZVRpbWVyT2JqJykgfHwge307XG5cbiAgICAgICAgLy8gdGhpcyBpcyBhbHJlYWR5IHBhdXNlZFxuICAgICAgICBpZiAob2JqLnJlbWFpbmluZyAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZGVmaW5lIGhvdyBtdWNoIGlzIGxlZnQgb24gdGhlIHRpbWVyXG4gICAgICAgIG9iai5yZW1haW5pbmcgPSBvYmoudGltZW91dCAtICgrbmV3IERhdGUoKSAtIG9iai5vbGRkYXRlKTtcblxuICAgICAgICAvLyBjbGVhciBhbnkgZXhpc3RpbmcgdGltZW91dFxuICAgICAgICBjbGVhclRpbWVvdXQob2JqLnRJZCk7XG4gICAgICB9LFxuICAgICAgLyoqXG4gICAgICAgKiBTdGFydCB0aW1lciB3aXRoIHJlbWFpbmluZyB2YWx1ZVxuICAgICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgICAqIEBtZXRob2QgcmVzdW1lXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKi9cbiAgICAgIHJlc3VtZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIG9iaiA9ICQuZGF0YShlbGVtLCAnaWRsZVRpbWVyT2JqJykgfHwge307XG5cbiAgICAgICAgLy8gdGhpcyBpc24ndCBwYXVzZWQgeWV0XG4gICAgICAgIGlmIChvYmoucmVtYWluaW5nID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGFydCB0aW1lclxuICAgICAgICBpZiAoIW9iai5pZGxlKSB7XG4gICAgICAgICAgb2JqLnRJZCA9IHNldFRpbWVvdXQodG9nZ2xlSWRsZVN0YXRlLCBvYmoucmVtYWluaW5nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNsZWFyIHJlbWFpbmluZ1xuICAgICAgICBvYmoucmVtYWluaW5nID0gbnVsbDtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFN0b3BzIHRoZSBpZGxlIHRpbWVyLiBUaGlzIHJlbW92ZXMgYXBwcm9wcmlhdGUgZXZlbnQgaGFuZGxlcnNcbiAgICAgICAqIGFuZCBjYW5jZWxzIGFueSBwZW5kaW5nIHRpbWVvdXRzLlxuICAgICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgICAqIEBtZXRob2QgZGVzdHJveVxuICAgICAgICogQHN0YXRpY1xuICAgICAgICovXG4gICAgICBkZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgb2JqID0gJC5kYXRhKGVsZW0sICdpZGxlVGltZXJPYmonKSB8fCB7fTtcblxuICAgICAgICAvL2NsZWFyIGFueSBwZW5kaW5nIHRpbWVvdXRzXG4gICAgICAgIGNsZWFyVGltZW91dChvYmoudElkKTtcblxuICAgICAgICAvL1JlbW92ZSBkYXRhXG4gICAgICAgIGpxRWxlbS5yZW1vdmVEYXRhKCdpZGxlVGltZXJPYmonKTtcblxuICAgICAgICAvL2RldGFjaCB0aGUgZXZlbnQgaGFuZGxlcnNcbiAgICAgICAganFFbGVtLm9mZignLl9pZGxlVGltZXInKTtcbiAgICAgIH0sXG4gICAgICAvKipcbiAgICAgICAqIFJldHVybnMgdGhlIHRpbWUgdW50aWwgYmVjb21pbmcgaWRsZVxuICAgICAgICogQHJldHVybiB7bnVtYmVyfVxuICAgICAgICogQG1ldGhvZCByZW1haW5pbmd0aW1lXG4gICAgICAgKiBAc3RhdGljXG4gICAgICAgKi9cbiAgICAgIHJlbWFpbmluZ3RpbWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBvYmogPSAkLmRhdGEoZWxlbSwgJ2lkbGVUaW1lck9iaicpIHx8IHt9O1xuXG4gICAgICAgIC8vSWYgaWRsZSB0aGVyZSBpcyBubyB0aW1lIHJlbWFpbmluZ1xuICAgICAgICBpZiAob2JqLmlkbGUpIHtcbiAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vSWYgaXRzIHBhdXNlZCBqdXN0IHJldHVybiB0aGF0XG4gICAgICAgIGlmIChvYmoucmVtYWluaW5nICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gb2JqLnJlbWFpbmluZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vRGV0ZXJtaW5lIHJlbWFpbmluZywgaWYgbmVnYXRpdmUgaWRsZSBkaWRuJ3QgZmluaXNoIGZsaXBwaW5nLCBqdXN0IHJldHVybiAwXG4gICAgICAgIHZhciByZW1haW5pbmcgPSBvYmoudGltZW91dCAtICgrbmV3IERhdGUoKSAtIG9iai5sYXN0QWN0aXZlKTtcbiAgICAgICAgaWYgKHJlbWFpbmluZyA8IDApIHtcbiAgICAgICAgICByZW1haW5pbmcgPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9JZiB0aGlzIGlzIHBhdXNlZCByZXR1cm4gdGhhdCBudW1iZXIsIGVsc2UgcmV0dXJuIGN1cnJlbnQgcmVtYWluaW5nXG4gICAgICAgIHJldHVybiByZW1haW5pbmc7XG4gICAgICB9O1xuXG4gICAgLy8gZGV0ZXJtaW5lIHdoaWNoIGZ1bmN0aW9uIHRvIGNhbGxcbiAgICBpZiAoZmlyc3RQYXJhbSA9PT0gbnVsbCAmJiB0eXBlb2Ygb2JqLmlkbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyB0aGV5IHRoaW5rIHRoZXkgd2FudCB0byBpbml0LCBidXQgaXQgYWxyZWFkeSBpcywganVzdCByZXNldFxuICAgICAgcmVzZXQoKTtcbiAgICAgIHJldHVybiBqcUVsZW07XG4gICAgfSBlbHNlIGlmIChmaXJzdFBhcmFtID09PSBudWxsKSB7XG4gICAgICAvLyB0aGV5IHdhbnQgdG8gaW5pdFxuICAgIH0gZWxzZSBpZiAoZmlyc3RQYXJhbSAhPT0gbnVsbCAmJiB0eXBlb2Ygb2JqLmlkbGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyB0aGV5IHdhbnQgdG8gZG8gc29tZXRoaW5nLCBidXQgaXQgaXNudCBpbml0XG4gICAgICAvLyBub3Qgc3VyZSB0aGUgYmVzdCB3YXkgdG8gaGFuZGxlIHRoaXNcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGVsc2UgaWYgKGZpcnN0UGFyYW0gPT09ICdkZXN0cm95Jykge1xuICAgICAgZGVzdHJveSgpO1xuICAgICAgcmV0dXJuIGpxRWxlbTtcbiAgICB9IGVsc2UgaWYgKGZpcnN0UGFyYW0gPT09ICdwYXVzZScpIHtcbiAgICAgIHBhdXNlKCk7XG4gICAgICByZXR1cm4ganFFbGVtO1xuICAgIH0gZWxzZSBpZiAoZmlyc3RQYXJhbSA9PT0gJ3Jlc3VtZScpIHtcbiAgICAgIHJlc3VtZSgpO1xuICAgICAgcmV0dXJuIGpxRWxlbTtcbiAgICB9IGVsc2UgaWYgKGZpcnN0UGFyYW0gPT09ICdyZXNldCcpIHtcbiAgICAgIHJlc2V0KCk7XG4gICAgICByZXR1cm4ganFFbGVtO1xuICAgIH0gZWxzZSBpZiAoZmlyc3RQYXJhbSA9PT0gJ2dldFJlbWFpbmluZ1RpbWUnKSB7XG4gICAgICByZXR1cm4gcmVtYWluaW5ndGltZSgpO1xuICAgIH0gZWxzZSBpZiAoZmlyc3RQYXJhbSA9PT0gJ2dldEVsYXBzZWRUaW1lJykge1xuICAgICAgcmV0dXJuICtuZXcgRGF0ZSgpIC0gb2JqLm9sZGRhdGU7XG4gICAgfSBlbHNlIGlmIChmaXJzdFBhcmFtID09PSAnZ2V0TGFzdEFjdGl2ZVRpbWUnKSB7XG4gICAgICByZXR1cm4gb2JqLmxhc3RBY3RpdmU7XG4gICAgfSBlbHNlIGlmIChmaXJzdFBhcmFtID09PSAnaXNJZGxlJykge1xuICAgICAgcmV0dXJuIG9iai5pZGxlO1xuICAgIH1cblxuICAgIC8vIFRlc3QgdmlhIGEgZ2V0dGVyIGluIHRoZSBvcHRpb25zIG9iamVjdCB0byBzZWUgaWYgdGhlIHBhc3NpdmUgcHJvcGVydHkgaXMgYWNjZXNzZWRcbiAgICAvLyBUaGlzIGlzbnQgd29ya2luZyBpbiBqcXVlcnksIHRob3VnaCBpcyBwbGFubmVkIGZvciA0LjBcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9pc3N1ZXMvMjg3MVxuICAgIC8qdmFyIHN1cHBvcnRzUGFzc2l2ZSA9IGZhbHNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgICB2YXIgUG9wdHMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sIFwicGFzc2l2ZVwiLCB7XG4gICAgICAgICAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICBzdXBwb3J0c1Bhc3NpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0ZXN0XCIsIG51bGwsIFBvcHRzKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHt9XG4qL1xuXG4gICAgLyogKGludGVudGlvbmFsbHkgbm90IGRvY3VtZW50ZWQpXG4gICAgICogSGFuZGxlcyBhIHVzZXIgZXZlbnQgaW5kaWNhdGluZyB0aGF0IHRoZSB1c2VyIGlzbid0IGlkbGUuIG5hbWVzcGFjZWQgd2l0aCBpbnRlcm5hbCBpZGxlVGltZXJcbiAgICAgKiBAcGFyYW0ge0V2ZW50fSBldmVudCBBIERPTTItbm9ybWFsaXplZCBldmVudCBvYmplY3QuXG4gICAgICogQHJldHVybiB7dm9pZH1cbiAgICAgKi9cbiAgICBqcUVsZW0ub24oKG9wdHMuZXZlbnRzICsgJyAnKS5zcGxpdCgnICcpLmpvaW4oJy5faWRsZVRpbWVyICcpLnRyaW0oKSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGhhbmRsZUV2ZW50KGUpO1xuICAgIH0pO1xuICAgIC8vfSwgc3VwcG9ydHNQYXNzaXZlID8geyBwYXNzaXZlOiB0cnVlIH0gOiBmYWxzZSk7XG5cbiAgICBpZiAob3B0cy50aW1lclN5bmNJZCkge1xuICAgICAgJCh3aW5kb3cpLm9uKCdzdG9yYWdlJywgaGFuZGxlRXZlbnQpO1xuICAgIH1cblxuICAgIC8vIEludGVybmFsIE9iamVjdCBQcm9wZXJ0aWVzLCBUaGlzIGlzbid0IGFsbCBuZWNlc3NhcnksIGJ1dCB3ZVxuICAgIC8vIGV4cGxpY2l0bHkgZGVmaW5lIGFsbCBrZXlzIGhlcmUgc28gd2Uga25vdyB3aGF0IHdlIGFyZSB3b3JraW5nIHdpdGhcbiAgICBvYmogPSAkLmV4dGVuZChcbiAgICAgIHt9LFxuICAgICAge1xuICAgICAgICBvbGRkYXRlOiArbmV3IERhdGUoKSwgLy8gdGhlIGxhc3QgdGltZSBzdGF0ZSBjaGFuZ2VkXG4gICAgICAgIGxhc3RBY3RpdmU6ICtuZXcgRGF0ZSgpLCAvLyB0aGUgbGFzdCB0aW1lIHRpbWVyIHdhcyBhY3RpdmVcbiAgICAgICAgaWRsZTogb3B0cy5pZGxlLCAvLyBjdXJyZW50IHN0YXRlXG4gICAgICAgIGlkbGVCYWNrdXA6IG9wdHMuaWRsZSwgLy8gYmFja3VwIG9mIGlkbGUgcGFyYW1ldGVyIHNpbmNlIGl0IGdldHMgbW9kaWZpZWRcbiAgICAgICAgdGltZW91dDogb3B0cy50aW1lb3V0LCAvLyB0aGUgaW50ZXJ2YWwgdG8gY2hhbmdlIHN0YXRlXG4gICAgICAgIHJlbWFpbmluZzogbnVsbCwgLy8gaG93IGxvbmcgdW50aWwgc3RhdGUgY2hhbmdlc1xuICAgICAgICB0aW1lclN5bmNJZDogb3B0cy50aW1lclN5bmNJZCwgLy8gbG9jYWxTdG9yYWdlIGtleSB0byB1c2UgZm9yIHN5bmNpbmcgdGhpcyB0aW1lclxuICAgICAgICB0SWQ6IG51bGwsIC8vIHRoZSBpZGxlIHRpbWVyIHNldFRpbWVvdXRcbiAgICAgICAgcGFnZVg6IG51bGwsIC8vIHVzZWQgdG8gc3RvcmUgdGhlIG1vdXNlIGNvb3JkXG4gICAgICAgIHBhZ2VZOiBudWxsXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIHNldCBhIHRpbWVvdXQgdG8gdG9nZ2xlIHN0YXRlLiBNYXkgd2lzaCB0byBvbWl0IHRoaXMgaW4gc29tZSBzaXR1YXRpb25zXG4gICAgaWYgKCFvYmouaWRsZSkge1xuICAgICAgb2JqLnRJZCA9IHNldFRpbWVvdXQodG9nZ2xlSWRsZVN0YXRlLCBvYmoudGltZW91dCk7XG4gICAgfVxuXG4gICAgLy8gc3RvcmUgb3VyIGluc3RhbmNlIG9uIHRoZSBvYmplY3RcbiAgICAkLmRhdGEoZWxlbSwgJ2lkbGVUaW1lck9iaicsIG9iaik7XG5cbiAgICByZXR1cm4ganFFbGVtO1xuICB9O1xuXG4gIC8vIFRoaXMgYWxsb3dzIGJpbmRpbmcgdG8gZWxlbWVudFxuICAkLmZuLmlkbGVUaW1lciA9IGZ1bmN0aW9uIChmaXJzdFBhcmFtKSB7XG4gICAgaWYgKHRoaXNbMF0pIHtcbiAgICAgIHJldHVybiAkLmlkbGVUaW1lcihmaXJzdFBhcmFtLCB0aGlzWzBdKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn0pKGpRdWVyeSk7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsVUFBVUEsQ0FBQyxFQUFFO0VBQ1pBLENBQUMsQ0FBQ0MsU0FBUyxHQUFHLFVBQVVDLFVBQVUsRUFBRUMsSUFBSSxFQUFFO0lBQ3hDLElBQUlDLElBQUk7SUFDUixJQUFJQyxPQUFBLENBQU9ILFVBQVUsTUFBSyxRQUFRLEVBQUU7TUFDbENFLElBQUksR0FBR0YsVUFBVTtNQUNqQkEsVUFBVSxHQUFHLElBQUk7SUFDbkIsQ0FBQyxNQUFNLElBQUksT0FBT0EsVUFBVSxLQUFLLFFBQVEsRUFBRTtNQUN6Q0Us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\n//# sourceURL=webpack-internal:///./libs/idletimer/idletimer.js\n");
/***/ })
/******/ });
/************************************************************************/
/******/
/******/ // startup
/******/ // Load entry module and return exports
/******/ // This entry module can't be inlined because the eval-source-map devtool is used.
/******/ var __webpack_exports__ = {};
/******/ __webpack_modules__["./libs/idletimer/idletimer.js"]();
/******/
/******/ return __webpack_exports__;
/******/ })()
;
});