{"version":3,"sources":["webpack://fair-labour/./node_modules/what-input/dist/what-input.js"],"names":["factory","modules","installedModules","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","supportsPassive","opts","Object","defineProperty","get","addEventListener","e","options","setInput","event","eventKey","which","value","type","pointerType","ignoreMatch","length","indexOf","specificMatch","shouldUpdate","validateTouch","persistInput","doUpdate","activeElem","activeElement","nodeName","toLowerCase","checkClosest","setAttribute","fireFunctions","setIntent","detectScrolling","clearElement","removeAttribute","sessionStorage","setItem","timestamp","touchIsValid","detectWheel","createElement","undefined","onmousewheel","i","len","fn","screenX","screenY","elem","tag","ElementPrototype","Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","parentElement","parentNode","nodeType","Array","passive","capture","getAttribute","body","getItem","PointerEvent","MSPointerEvent","target","classList","toString","replace","opt","arr","eventType","push","position","match","objPos","splice","clearStorage","clear"],"mappings":"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","file":"6474.6dfe5c5499189576b32d.js","sourcesContent":["/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.12\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, capture: true } : true;\n\n\t document.addEventListener('DOMContentLoaded', setPersist, true);\n\n\t // pointer events (mouse, pen, touch)\n\t if (window.PointerEvent) {\n\t window.addEventListener('pointerdown', setInput, true);\n\t window.addEventListener('pointermove', setIntent, true);\n\t } else if (window.MSPointerEvent) {\n\t window.addEventListener('MSPointerDown', setInput, true);\n\t window.addEventListener('MSPointerMove', setIntent, true);\n\t } else {\n\t // mouse events\n\t window.addEventListener('mousedown', setInput, true);\n\t window.addEventListener('mousemove', setIntent, true);\n\n\t // touch events\n\t if ('ontouchstart' in window) {\n\t window.addEventListener('touchstart', setInput, options);\n\t window.addEventListener('touchend', setInput, true);\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, true);\n\t window.addEventListener('keyup', setInput, true);\n\n\t // focus events\n\t window.addEventListener('focusin', setElement, true);\n\t window.addEventListener('focusout', clearElement, true);\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') === 'false' || 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":""}