{"version":3,"sources":["webpack:///C:/a/1/s/Cognito.Web.Client/node_modules/.pnpm/what-input@5.2.6/node_modules/what-input/dist/what-input.js"],"names":["factory","modules","installedModules","__webpack_require__","moduleId","exports","module","id","loaded","call","m","c","p","document","window","ask","element","ignoreKeys","specificKeys","registerOnChange","unRegisterOnChange","docElem","documentElement","currentElement","currentInput","currentIntent","currentTimestamp","Date","now","shouldPersist","formInputs","functionList","ignoreMap","specificMap","inputMap","keydown","keyup","mousedown","mousemove","MSPointerDown","MSPointerMove","pointerdown","pointermove","touchstart","touchend","isScrolling","mousePos","x","y","pointerMap","2","3","4","supportsPassive","opts","Object","defineProperty","get","addEventListener","e","addListeners","options","passive","setPersist","PointerEvent","setInput","setIntent","MSPointerEvent","detectWheel","setElement","clearElement","getAttribute","body","sessionStorage","getItem","doUpdate","event","eventKey","which","value","type","pointerType","ignoreMatch","length","indexOf","specificMatch","shouldUpdate","validateTouch","persistInput","activeElem","activeElement","nodeName","toLowerCase","checkClosest","setAttribute","fireFunctions","detectScrolling","target","classList","toString","replace","removeAttribute","setItem","timestamp","touchIsValid","createElement","undefined","onmousewheel","i","len","fn","screenX","screenY","elem","tag","ElementPrototype","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","parentElement","parentNode","nodeType","Array","opt","arr","eventType","push","position","match","objPos","splice","clearStorage","clear"],"mappings":"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","file":"npm.what-input5.2.6.835b390300d5f1e80bc6.js","sourcesContent":["/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.6\n * @link https://github.com/ten1seven/what-input\n * @license MIT\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"whatInput\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"whatInput\"] = factory();\n\telse\n\t\troot[\"whatInput\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tmodule.exports = function () {\n\t /*\n\t * bail out if there is no document or window\n\t * (i.e. in a node/non-DOM environment)\n\t *\n\t * Return a stubbed API instead\n\t */\n\t if (typeof document === 'undefined' || typeof window === 'undefined') {\n\t return {\n\t // always return \"initial\" because no interaction will ever be detected\n\t ask: function ask() {\n\t return 'initial';\n\t },\n\n\t // always return null\n\t element: function element() {\n\t return null;\n\t },\n\n\t // no-op\n\t ignoreKeys: function ignoreKeys() {},\n\n\t // no-op\n\t specificKeys: function specificKeys() {},\n\n\t // no-op\n\t registerOnChange: function registerOnChange() {},\n\n\t // no-op\n\t unRegisterOnChange: function unRegisterOnChange() {}\n\t };\n\t }\n\n\t /*\n\t * variables\n\t */\n\n\t // cache document.documentElement\n\t var docElem = document.documentElement;\n\n\t // currently focused dom element\n\t var currentElement = null;\n\n\t // last used input type\n\t var currentInput = 'initial';\n\n\t // last used input intent\n\t var currentIntent = currentInput;\n\n\t // UNIX timestamp of current event\n\t var currentTimestamp = Date.now();\n\n\t // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`\n\t var shouldPersist = 'false';\n\n\t // form input types\n\t var formInputs = ['button', 'input', 'select', 'textarea'];\n\n\t // empty array for holding callback functions\n\t var functionList = [];\n\n\t // list of modifier keys commonly used with the mouse and\n\t // can be safely ignored to prevent false keyboard detection\n\t var ignoreMap = [16, // shift\n\t 17, // control\n\t 18, // alt\n\t 91, // Windows key / left Apple cmd\n\t 93 // Windows menu / right Apple cmd\n\t ];\n\n\t var specificMap = [];\n\n\t // mapping of events to input types\n\t var inputMap = {\n\t keydown: 'keyboard',\n\t keyup: 'keyboard',\n\t mousedown: 'mouse',\n\t mousemove: 'mouse',\n\t MSPointerDown: 'pointer',\n\t MSPointerMove: 'pointer',\n\t pointerdown: 'pointer',\n\t pointermove: 'pointer',\n\t touchstart: 'touch',\n\t touchend: 'touch'\n\n\t // boolean: true if the page is being scrolled\n\t };var isScrolling = false;\n\n\t // store current mouse position\n\t var mousePos = {\n\t x: null,\n\t y: null\n\n\t // map of IE 10 pointer events\n\t };var pointerMap = {\n\t 2: 'touch',\n\t 3: 'touch', // treat pen like touch\n\t 4: 'mouse'\n\n\t // check support for passive event listeners\n\t };var supportsPassive = false;\n\n\t try {\n\t var opts = Object.defineProperty({}, 'passive', {\n\t get: function get() {\n\t supportsPassive = true;\n\t }\n\t });\n\n\t window.addEventListener('test', null, opts);\n\t } catch (e) {}\n\t // fail silently\n\n\n\t /*\n\t * set up\n\t */\n\n\t var setUp = function setUp() {\n\t // add correct mouse wheel event mapping to `inputMap`\n\t inputMap[detectWheel()] = 'mouse';\n\n\t addListeners();\n\t };\n\n\t /*\n\t * events\n\t */\n\n\t var addListeners = function addListeners() {\n\t // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding\n\t // can only demonstrate potential, but not actual, interaction\n\t // and are treated separately\n\t var options = supportsPassive ? { passive: true } : false;\n\n\t document.addEventListener('DOMContentLoaded', setPersist);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput);\n\t window.addEventListener('pointermove', setIntent);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput);\n\t window.addEventListener('MSPointerMove', setIntent);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput);\n\t window.addEventListener('mousemove', setIntent);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput);\n\t }\n\t }\n\n\t // mouse wheel\n\t window.addEventListener(detectWheel(), setIntent, options);\n\n\t // keyboard events\n\t window.addEventListener('keydown', setInput);\n\t window.addEventListener('keyup', setInput);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement);\n\t window.addEventListener('focusout', clearElement);\n\t };\n\n\t // checks if input persistence should happen and\n\t // get saved state from session storage if true (defaults to `false`)\n\t var setPersist = function setPersist() {\n\t shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');\n\n\t if (shouldPersist) {\n\t // check for session variables and use if available\n\t try {\n\t if (window.sessionStorage.getItem('what-input')) {\n\t currentInput = window.sessionStorage.getItem('what-input');\n\t }\n\n\t if (window.sessionStorage.getItem('what-intent')) {\n\t currentIntent = window.sessionStorage.getItem('what-intent');\n\t }\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\n\t // always run these so at least `initial` state is set\n\t doUpdate('input');\n\t doUpdate('intent');\n\t };\n\n\t // checks conditions before updating new input\n\t var setInput = function setInput(event) {\n\t var eventKey = event.which;\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1;\n\n\t var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1;\n\n\t var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch';\n\n\t // prevent touch detection from being overridden by event execution order\n\t if (validateTouch(value)) {\n\t shouldUpdate = false;\n\t }\n\n\t if (shouldUpdate && currentInput !== value) {\n\t currentInput = value;\n\n\t persistInput('input', currentInput);\n\t doUpdate('input');\n\t }\n\n\t if (shouldUpdate && currentIntent !== value) {\n\t // preserve intent for keyboard interaction with form fields\n\t var activeElem = document.activeElement;\n\t var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form'));\n\n\t if (notFormInput) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t }\n\t };\n\n\t // updates the doc and `inputTypes` array with new input\n\t var doUpdate = function doUpdate(which) {\n\t docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent);\n\n\t fireFunctions(which);\n\t };\n\n\t // updates input intent for `mousemove` and `pointermove`\n\t var setIntent = function setIntent(event) {\n\t var value = inputMap[event.type];\n\n\t if (value === 'pointer') {\n\t value = pointerType(event);\n\t }\n\n\t // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove\n\t detectScrolling(event);\n\n\t // only execute if scrolling isn't happening\n\t if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) {\n\t currentIntent = value;\n\n\t persistInput('intent', currentIntent);\n\t doUpdate('intent');\n\t }\n\t };\n\n\t var setElement = function setElement(event) {\n\t if (!event.target.nodeName) {\n\t // If nodeName is undefined, clear the element\n\t // This can happen if click inside an element.\n\t clearElement();\n\t return;\n\t }\n\n\t currentElement = event.target.nodeName.toLowerCase();\n\t docElem.setAttribute('data-whatelement', currentElement);\n\n\t if (event.target.classList && event.target.classList.length) {\n\t docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ','));\n\t }\n\t };\n\n\t var clearElement = function clearElement() {\n\t currentElement = null;\n\n\t docElem.removeAttribute('data-whatelement');\n\t docElem.removeAttribute('data-whatclasses');\n\t };\n\n\t var persistInput = function persistInput(which, value) {\n\t if (shouldPersist) {\n\t try {\n\t window.sessionStorage.setItem('what-' + which, value);\n\t } catch (e) {\n\t // fail silently\n\t }\n\t }\n\t };\n\n\t /*\n\t * utilities\n\t */\n\n\t var pointerType = function pointerType(event) {\n\t if (typeof event.pointerType === 'number') {\n\t return pointerMap[event.pointerType];\n\t } else {\n\t // treat pen like touch\n\t return event.pointerType === 'pen' ? 'touch' : event.pointerType;\n\t }\n\t };\n\n\t // prevent touch detection from being overridden by event execution order\n\t var validateTouch = function validateTouch(value) {\n\t var timestamp = Date.now();\n\n\t var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200;\n\n\t currentTimestamp = timestamp;\n\n\t return touchIsValid;\n\t };\n\n\t // detect version of mouse wheel event to use\n\t // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event\n\t var detectWheel = function detectWheel() {\n\t var wheelType = null;\n\n\t // Modern browsers support \"wheel\"\n\t if ('onwheel' in document.createElement('div')) {\n\t wheelType = 'wheel';\n\t } else {\n\t // Webkit and IE support at least \"mousewheel\"\n\t // or assume that remaining browsers are older Firefox\n\t wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll';\n\t }\n\n\t return wheelType;\n\t };\n\n\t // runs callback functions\n\t var fireFunctions = function fireFunctions(type) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].type === type) {\n\t functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent);\n\t }\n\t }\n\t };\n\n\t // finds matching element in an object\n\t var objPos = function objPos(match) {\n\t for (var i = 0, len = functionList.length; i < len; i++) {\n\t if (functionList[i].fn === match) {\n\t return i;\n\t }\n\t }\n\t };\n\n\t var detectScrolling = function detectScrolling(event) {\n\t if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {\n\t isScrolling = false;\n\n\t mousePos.x = event.screenX;\n\t mousePos.y = event.screenY;\n\t } else {\n\t isScrolling = true;\n\t }\n\t };\n\n\t // manual version of `closest()`\n\t var checkClosest = function checkClosest(elem, tag) {\n\t var ElementPrototype = window.Element.prototype;\n\n\t if (!ElementPrototype.matches) {\n\t ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector;\n\t }\n\n\t if (!ElementPrototype.closest) {\n\t do {\n\t if (elem.matches(tag)) {\n\t return elem;\n\t }\n\n\t elem = elem.parentElement || elem.parentNode;\n\t } while (elem !== null && elem.nodeType === 1);\n\n\t return null;\n\t } else {\n\t return elem.closest(tag);\n\t }\n\t };\n\n\t /*\n\t * init\n\t */\n\n\t // don't start script unless browser cuts the mustard\n\t // (also passes if polyfills are used)\n\t if ('addEventListener' in window && Array.prototype.indexOf) {\n\t setUp();\n\t }\n\n\t /*\n\t * api\n\t */\n\n\t return {\n\t // returns string: the current input type\n\t // opt: 'intent'|'input'\n\t // 'input' (default): returns the same value as the `data-whatinput` attribute\n\t // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`\n\t ask: function ask(opt) {\n\t return opt === 'intent' ? currentIntent : currentInput;\n\t },\n\n\t // returns string: the currently focused element or null\n\t element: function element() {\n\t return currentElement;\n\t },\n\n\t // overwrites ignored keys with provided array\n\t ignoreKeys: function ignoreKeys(arr) {\n\t ignoreMap = arr;\n\t },\n\n\t // overwrites specific char keys to update on\n\t specificKeys: function specificKeys(arr) {\n\t specificMap = arr;\n\t },\n\n\t // attach functions to input and intent \"events\"\n\t // funct: function to fire on change\n\t // eventType: 'input'|'intent'\n\t registerOnChange: function registerOnChange(fn, eventType) {\n\t functionList.push({\n\t fn: fn,\n\t type: eventType || 'input'\n\t });\n\t },\n\n\t unRegisterOnChange: function unRegisterOnChange(fn) {\n\t var position = objPos(fn);\n\n\t if (position || position === 0) {\n\t functionList.splice(position, 1);\n\t }\n\t },\n\n\t clearStorage: function clearStorage() {\n\t window.sessionStorage.clear();\n\t }\n\t };\n\t}();\n\n/***/ })\n/******/ ])\n});\n;"],"sourceRoot":""}