what-input 5.2.11 → 5.2.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -221,13 +221,17 @@ _What Input_ works in all modern browsers.
221
221
 
222
222
  ## Changelog
223
223
 
224
+ ### v5.2.12
225
+
226
+ - **Fixed:** Improved detection and respect for of `data-whatpersist` before `DOMContentLoaded`. Fix via [FanFataL](https://github.com/FanFataL).
227
+
224
228
  ### v5.2.11
225
229
 
226
230
  - **Fixed:** Adds `useCapture` so events can be detected before `preventDefault` cancels them on local listeners (h/t [jojo080889](https://github.com/jojo080889)).
227
231
 
228
232
  ### v5.2.8 - 5.2.10
229
233
 
230
- - **Added:** TypeScript definitions via @greypants
234
+ - **Added:** TypeScript definitions via [greypants](https://github.com/greypants).
231
235
 
232
236
  ### v5.2.7
233
237
 
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).
3
- * @version v5.2.11
3
+ * @version v5.2.12
4
4
  * @link https://github.com/ten1seven/what-input
5
5
  * @license MIT
6
6
  */
@@ -115,7 +115,7 @@ return /******/ (function(modules) { // webpackBootstrap
115
115
  var currentTimestamp = Date.now();
116
116
 
117
117
  // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`
118
- var shouldPersist = 'false';
118
+ var shouldPersist = false;
119
119
 
120
120
  // form input types
121
121
  var formInputs = ['button', 'input', 'select', 'textarea'];
@@ -233,7 +233,7 @@ return /******/ (function(modules) { // webpackBootstrap
233
233
  // checks if input persistence should happen and
234
234
  // get saved state from session storage if true (defaults to `false`)
235
235
  var setPersist = function setPersist() {
236
- shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false');
236
+ shouldPersist = !(docElem.getAttribute('data-whatpersist') === 'false' || document.body.getAttribute('data-whatpersist') === 'false');
237
237
 
238
238
  if (shouldPersist) {
239
239
  // check for session variables and use if available
@@ -514,4 +514,4 @@ return /******/ (function(modules) { // webpackBootstrap
514
514
  /***/ })
515
515
  /******/ ])
516
516
  });
517
- ;
517
+ ;
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).
3
- * @version v5.2.11
3
+ * @version v5.2.12
4
4
  * @link https://github.com/ten1seven/what-input
5
5
  * @license MIT
6
6
  */
7
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("whatInput",[],t):"object"==typeof exports?exports.whatInput=t():e.whatInput=t()}(this,function(){return i={},n.m=o=[function(e,t){"use strict";e.exports=function(){if("undefined"==typeof document||"undefined"==typeof window)return{ask:function(){return"initial"},element:function(){return null},ignoreKeys:function(){},specificKeys:function(){},registerOnChange:function(){},unRegisterOnChange:function(){}};var t=document.documentElement,n=null,u="initial",s=u,o=Date.now(),i="false",d=["button","input","select","textarea"],r=[],c=[16,17,18,91,93],w=[],p={keydown:"keyboard",keyup:"keyboard",mousedown:"mouse",mousemove:"mouse",MSPointerDown:"pointer",MSPointerMove:"pointer",pointerdown:"pointer",pointermove:"pointer",touchstart:"touch",touchend:"touch"},a=!1,f={x:null,y:null},l={2:"touch",3:"touch",4:"mouse"},m=!1;try{var e=Object.defineProperty({},"passive",{get:function(){m=!0}});window.addEventListener("test",null,e)}catch(e){}var h=function(){var e=!m||{passive:!0,capture:!0};document.addEventListener("DOMContentLoaded",v,!0),window.PointerEvent?(window.addEventListener("pointerdown",y,!0),window.addEventListener("pointermove",E,!0)):window.MSPointerEvent?(window.addEventListener("MSPointerDown",y,!0),window.addEventListener("MSPointerMove",E,!0)):(window.addEventListener("mousedown",y,!0),window.addEventListener("mousemove",E,!0),"ontouchstart"in window&&(window.addEventListener("touchstart",y,e),window.addEventListener("touchend",y,!0))),window.addEventListener(O(),E,e),window.addEventListener("keydown",y,!0),window.addEventListener("keyup",y,!0),window.addEventListener("focusin",L,!0),window.addEventListener("focusout",b,!0)},v=function(){if(i=!(t.getAttribute("data-whatpersist")||"false"===document.body.getAttribute("data-whatpersist")))try{window.sessionStorage.getItem("what-input")&&(u=window.sessionStorage.getItem("what-input")),window.sessionStorage.getItem("what-intent")&&(s=window.sessionStorage.getItem("what-intent"))}catch(e){}g("input"),g("intent")},y=function(e){var t=e.which,n=p[e.type];"pointer"===n&&(n=S(e));var o=!w.length&&-1===c.indexOf(t),i=w.length&&-1!==w.indexOf(t),r="keyboard"===n&&t&&(o||i)||"mouse"===n||"touch"===n;if(M(n)&&(r=!1),r&&u!==n&&(x("input",u=n),g("input")),r&&s!==n){var a=document.activeElement;a&&a.nodeName&&(-1===d.indexOf(a.nodeName.toLowerCase())||"button"===a.nodeName.toLowerCase()&&!C(a,"form"))&&(x("intent",s=n),g("intent"))}},g=function(e){t.setAttribute("data-what"+e,"input"===e?u:s),k(e)},E=function(e){var t=p[e.type];"pointer"===t&&(t=S(e)),A(e),(!a&&!M(t)||a&&"wheel"===e.type||"mousewheel"===e.type||"DOMMouseScroll"===e.type)&&s!==t&&(x("intent",s=t),g("intent"))},L=function(e){e.target.nodeName?(n=e.target.nodeName.toLowerCase(),t.setAttribute("data-whatelement",n),e.target.classList&&e.target.classList.length&&t.setAttribute("data-whatclasses",e.target.classList.toString().replace(" ",","))):b()},b=function(){n=null,t.removeAttribute("data-whatelement"),t.removeAttribute("data-whatclasses")},x=function(e,t){if(i)try{window.sessionStorage.setItem("what-"+e,t)}catch(e){}},S=function(e){return"number"==typeof e.pointerType?l[e.pointerType]:"pen"===e.pointerType?"touch":e.pointerType},M=function(e){var t=Date.now(),n="mouse"===e&&"touch"===u&&t-o<200;return o=t,n},O=function(){return"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll"},k=function(e){for(var t=0,n=r.length;t<n;t++)r[t].type===e&&r[t].fn.call(void 0,"input"===e?u:s)},A=function(e){f.x!==e.screenX||f.y!==e.screenY?(a=!1,f.x=e.screenX,f.y=e.screenY):a=!0},C=function(e,t){var n=window.Element.prototype;if(n.matches||(n.matches=n.msMatchesSelector||n.webkitMatchesSelector),n.closest)return e.closest(t);do{if(e.matches(t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null};return"addEventListener"in window&&Array.prototype.indexOf&&(p[O()]="mouse",h()),{ask:function(e){return"intent"===e?s:u},element:function(){return n},ignoreKeys:function(e){c=e},specificKeys:function(e){w=e},registerOnChange:function(e,t){r.push({fn:e,type:t||"input"})},unRegisterOnChange:function(e){var t=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].fn===e)return t}(e);!t&&0!==t||r.splice(t,1)},clearStorage:function(){window.sessionStorage.clear()}}}()}],n.c=i,n.p="",n(0);function n(e){if(i[e])return i[e].exports;var t=i[e]={exports:{},id:e,loaded:!1};return o[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}var o,i});
7
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("whatInput",[],t):"object"==typeof exports?exports.whatInput=t():e.whatInput=t()}(this,function(){return i={},n.m=o=[function(e,t){"use strict";e.exports=function(){if("undefined"==typeof document||"undefined"==typeof window)return{ask:function(){return"initial"},element:function(){return null},ignoreKeys:function(){},specificKeys:function(){},registerOnChange:function(){},unRegisterOnChange:function(){}};var t=document.documentElement,n=null,u="initial",s=u,o=Date.now(),i=!1,d=["button","input","select","textarea"],r=[],c=[16,17,18,91,93],w=[],p={keydown:"keyboard",keyup:"keyboard",mousedown:"mouse",mousemove:"mouse",MSPointerDown:"pointer",MSPointerMove:"pointer",pointerdown:"pointer",pointermove:"pointer",touchstart:"touch",touchend:"touch"},a=!1,f={x:null,y:null},l={2:"touch",3:"touch",4:"mouse"},m=!1;try{var e=Object.defineProperty({},"passive",{get:function(){m=!0}});window.addEventListener("test",null,e)}catch(e){}var h=function(){var e=!m||{passive:!0,capture:!0};document.addEventListener("DOMContentLoaded",v,!0),window.PointerEvent?(window.addEventListener("pointerdown",y,!0),window.addEventListener("pointermove",E,!0)):window.MSPointerEvent?(window.addEventListener("MSPointerDown",y,!0),window.addEventListener("MSPointerMove",E,!0)):(window.addEventListener("mousedown",y,!0),window.addEventListener("mousemove",E,!0),"ontouchstart"in window&&(window.addEventListener("touchstart",y,e),window.addEventListener("touchend",y,!0))),window.addEventListener(O(),E,e),window.addEventListener("keydown",y,!0),window.addEventListener("keyup",y,!0),window.addEventListener("focusin",L,!0),window.addEventListener("focusout",b,!0)},v=function(){if(i=!("false"===t.getAttribute("data-whatpersist")||"false"===document.body.getAttribute("data-whatpersist")))try{window.sessionStorage.getItem("what-input")&&(u=window.sessionStorage.getItem("what-input")),window.sessionStorage.getItem("what-intent")&&(s=window.sessionStorage.getItem("what-intent"))}catch(e){}g("input"),g("intent")},y=function(e){var t=e.which,n=p[e.type];"pointer"===n&&(n=S(e));var o=!w.length&&-1===c.indexOf(t),i=w.length&&-1!==w.indexOf(t),r="keyboard"===n&&t&&(o||i)||"mouse"===n||"touch"===n;if(M(n)&&(r=!1),r&&u!==n&&(x("input",u=n),g("input")),r&&s!==n){var a=document.activeElement;a&&a.nodeName&&(-1===d.indexOf(a.nodeName.toLowerCase())||"button"===a.nodeName.toLowerCase()&&!C(a,"form"))&&(x("intent",s=n),g("intent"))}},g=function(e){t.setAttribute("data-what"+e,"input"===e?u:s),k(e)},E=function(e){var t=p[e.type];"pointer"===t&&(t=S(e)),A(e),(!a&&!M(t)||a&&"wheel"===e.type||"mousewheel"===e.type||"DOMMouseScroll"===e.type)&&s!==t&&(x("intent",s=t),g("intent"))},L=function(e){e.target.nodeName?(n=e.target.nodeName.toLowerCase(),t.setAttribute("data-whatelement",n),e.target.classList&&e.target.classList.length&&t.setAttribute("data-whatclasses",e.target.classList.toString().replace(" ",","))):b()},b=function(){n=null,t.removeAttribute("data-whatelement"),t.removeAttribute("data-whatclasses")},x=function(e,t){if(i)try{window.sessionStorage.setItem("what-"+e,t)}catch(e){}},S=function(e){return"number"==typeof e.pointerType?l[e.pointerType]:"pen"===e.pointerType?"touch":e.pointerType},M=function(e){var t=Date.now(),n="mouse"===e&&"touch"===u&&t-o<200;return o=t,n},O=function(){return"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll"},k=function(e){for(var t=0,n=r.length;t<n;t++)r[t].type===e&&r[t].fn.call(void 0,"input"===e?u:s)},A=function(e){f.x!==e.screenX||f.y!==e.screenY?(a=!1,f.x=e.screenX,f.y=e.screenY):a=!0},C=function(e,t){var n=window.Element.prototype;if(n.matches||(n.matches=n.msMatchesSelector||n.webkitMatchesSelector),n.closest)return e.closest(t);do{if(e.matches(t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null};return"addEventListener"in window&&Array.prototype.indexOf&&(p[O()]="mouse",h()),{ask:function(e){return"intent"===e?s:u},element:function(){return n},ignoreKeys:function(e){c=e},specificKeys:function(e){w=e},registerOnChange:function(e,t){r.push({fn:e,type:t||"input"})},unRegisterOnChange:function(e){var t=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].fn===e)return t}(e);!t&&0!==t||r.splice(t,1)},clearStorage:function(){window.sessionStorage.clear()}}}()}],n.c=i,n.p="",n(0);function n(e){if(i[e])return i[e].exports;var t=i[e]={exports:{},id:e,loaded:!1};return o[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}var o,i});
8
8
  //# sourceMappingURL=what-input.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["what-input.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","m","modules","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","capture","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","call","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","c","p","moduleId","id","loaded"],"mappings":"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","file":"what-input.min.js","sourcesContent":["/**\n * what-input - A global utility for tracking the current input method (mouse, keyboard or touch).\n * @version v5.2.11\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') || 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 <svg> 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;"]}
1
+ {"version":3,"sources":["what-input.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","m","modules","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","capture","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","call","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","c","p","moduleId","id","loaded"],"mappings":"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","file":"what-input.min.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 <svg> 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;"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "what-input",
3
- "version": "5.2.11",
3
+ "version": "5.2.12",
4
4
  "description": "A global utility for tracking the current input method (mouse, keyboard or touch).",
5
5
  "main": "dist/what-input.js",
6
6
  "types": "src/scripts/what-input.d.ts",
@@ -47,7 +47,7 @@ module.exports = (() => {
47
47
  let currentTimestamp = Date.now()
48
48
 
49
49
  // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true`
50
- let shouldPersist = 'false'
50
+ let shouldPersist = false
51
51
 
52
52
  // form input types
53
53
  const formInputs = ['button', 'input', 'select', 'textarea']
@@ -170,7 +170,7 @@ module.exports = (() => {
170
170
  // get saved state from session storage if true (defaults to `false`)
171
171
  const setPersist = () => {
172
172
  shouldPersist = !(
173
- docElem.getAttribute('data-whatpersist') ||
173
+ docElem.getAttribute('data-whatpersist') === 'false' ||
174
174
  document.body.getAttribute('data-whatpersist') === 'false'
175
175
  )
176
176
 
@@ -195,7 +195,7 @@ module.exports = (() => {
195
195
  }
196
196
 
197
197
  // checks conditions before updating new input
198
- const setInput = event => {
198
+ const setInput = (event) => {
199
199
  const eventKey = event.which
200
200
  let value = inputMap[event.type]
201
201
 
@@ -246,7 +246,7 @@ module.exports = (() => {
246
246
  }
247
247
 
248
248
  // updates the doc and `inputTypes` array with new input
249
- const doUpdate = which => {
249
+ const doUpdate = (which) => {
250
250
  docElem.setAttribute(
251
251
  'data-what' + which,
252
252
  which === 'input' ? currentInput : currentIntent
@@ -256,7 +256,7 @@ module.exports = (() => {
256
256
  }
257
257
 
258
258
  // updates input intent for `mousemove` and `pointermove`
259
- const setIntent = event => {
259
+ const setIntent = (event) => {
260
260
  let value = inputMap[event.type]
261
261
 
262
262
  if (value === 'pointer') {
@@ -269,9 +269,9 @@ module.exports = (() => {
269
269
  // only execute if scrolling isn't happening
270
270
  if (
271
271
  ((!isScrolling && !validateTouch(value)) ||
272
- ((isScrolling && event.type === 'wheel') ||
273
- event.type === 'mousewheel' ||
274
- event.type === 'DOMMouseScroll')) &&
272
+ (isScrolling && event.type === 'wheel') ||
273
+ event.type === 'mousewheel' ||
274
+ event.type === 'DOMMouseScroll') &&
275
275
  currentIntent !== value
276
276
  ) {
277
277
  currentIntent = value
@@ -281,7 +281,7 @@ module.exports = (() => {
281
281
  }
282
282
  }
283
283
 
284
- const setElement = event => {
284
+ const setElement = (event) => {
285
285
  if (!event.target.nodeName) {
286
286
  // If nodeName is undefined, clear the element
287
287
  // This can happen if click inside an <svg> element.
@@ -321,7 +321,7 @@ module.exports = (() => {
321
321
  * utilities
322
322
  */
323
323
 
324
- const pointerType = event => {
324
+ const pointerType = (event) => {
325
325
  if (typeof event.pointerType === 'number') {
326
326
  return pointerMap[event.pointerType]
327
327
  } else {
@@ -331,7 +331,7 @@ module.exports = (() => {
331
331
  }
332
332
 
333
333
  // prevent touch detection from being overridden by event execution order
334
- const validateTouch = value => {
334
+ const validateTouch = (value) => {
335
335
  const timestamp = Date.now()
336
336
 
337
337
  const touchIsValid =
@@ -363,7 +363,7 @@ module.exports = (() => {
363
363
  }
364
364
 
365
365
  // runs callback functions
366
- const fireFunctions = type => {
366
+ const fireFunctions = (type) => {
367
367
  for (let i = 0, len = functionList.length; i < len; i++) {
368
368
  if (functionList[i].type === type) {
369
369
  functionList[i].fn.call(
@@ -375,7 +375,7 @@ module.exports = (() => {
375
375
  }
376
376
 
377
377
  // finds matching element in an object
378
- const objPos = match => {
378
+ const objPos = (match) => {
379
379
  for (let i = 0, len = functionList.length; i < len; i++) {
380
380
  if (functionList[i].fn === match) {
381
381
  return i
@@ -383,7 +383,7 @@ module.exports = (() => {
383
383
  }
384
384
  }
385
385
 
386
- const detectScrolling = event => {
386
+ const detectScrolling = (event) => {
387
387
  if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) {
388
388
  isScrolling = false
389
389
 
@@ -438,7 +438,7 @@ module.exports = (() => {
438
438
  // opt: 'intent'|'input'
439
439
  // 'input' (default): returns the same value as the `data-whatinput` attribute
440
440
  // 'intent': includes `data-whatintent` value if it's different than `data-whatinput`
441
- ask: opt => {
441
+ ask: (opt) => {
442
442
  return opt === 'intent' ? currentIntent : currentInput
443
443
  },
444
444
 
@@ -448,12 +448,12 @@ module.exports = (() => {
448
448
  },
449
449
 
450
450
  // overwrites ignored keys with provided array
451
- ignoreKeys: arr => {
451
+ ignoreKeys: (arr) => {
452
452
  ignoreMap = arr
453
453
  },
454
454
 
455
455
  // overwrites specific char keys to update on
456
- specificKeys: arr => {
456
+ specificKeys: (arr) => {
457
457
  specificMap = arr
458
458
  },
459
459
 
@@ -467,7 +467,7 @@ module.exports = (() => {
467
467
  })
468
468
  },
469
469
 
470
- unRegisterOnChange: fn => {
470
+ unRegisterOnChange: (fn) => {
471
471
  const position = objPos(fn)
472
472
 
473
473
  if (position || position === 0) {