{"version":3,"file":"foundation.util.keyboard.min.js","sources":["foundation.util.keyboard.min.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"./foundation.core\"), require(\"jquery\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"./foundation.core\", \"jquery\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"__FOUNDATION_EXTERNAL__\"] = factory(require(\"./foundation.core\"), require(\"jquery\"));\n\telse\n\t\troot[\"__FOUNDATION_EXTERNAL__\"] = root[\"__FOUNDATION_EXTERNAL__\"] || {}, root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.util.keyboard\"] = factory(root[\"__FOUNDATION_EXTERNAL__\"][\"foundation.core\"], root[\"jQuery\"]);\n})(self, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./js/foundation.util.keyboard.js\":\n/*!****************************************!*\\\n !*** ./js/foundation.util.keyboard.js ***!\n \\****************************************/\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Keyboard: function() { return /* binding */ Keyboard; }\n/* harmony export */ });\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ \"jquery\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ \"./foundation.core\");\n/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__);\n/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\n\n\nvar keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n};\nvar commands = {};\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if (!$element) {\n return false;\n }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () {\n if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':visible') || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('tabindex') < 0) {\n return false;\n } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n }).sort(function (a, b) {\n if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).attr('tabindex') === jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).attr('tabindex')) {\n return 0;\n }\n var aTabIndex = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).attr('tabindex'), 10),\n bTabIndex = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).attr('tabindex'), 10);\n // Undefined is treated the same as 0\n if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(a).attr('tabindex') === 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(b).attr('tabindex') === 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex === 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex === 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n if (event.shiftKey) key = \"SHIFT_\".concat(key);\n if (event.ctrlKey) key = \"CTRL_\".concat(key);\n if (event.altKey) key = \"ALT_\".concat(key);\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n return key;\n}\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey: function handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else {\n // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if ((0,_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__.rtl)()) cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, commandList.ltr, commandList.rtl);else cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default().extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n register: function register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus: function trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n $element.on('keydown.zf.trapfocus', function (event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n } else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus: function releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n};\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) {\n if (kcs.hasOwnProperty(kc)) k[kcs[kc]] = kcs[kc];\n }\n return k;\n}\n\n\n/***/ }),\n\n/***/ \"./foundation.core\":\n/*!****************************************************************************************************************************************************************!*\\\n !*** external {\"root\":[\"__FOUNDATION_EXTERNAL__\",\"foundation.core\"],\"amd\":\"./foundation.core\",\"commonjs\":\"./foundation.core\",\"commonjs2\":\"./foundation.core\"} ***!\n \\****************************************************************************************************************************************************************/\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__;\n\n/***/ }),\n\n/***/ \"jquery\":\n/*!********************************************************************************************!*\\\n !*** external {\"root\":[\"jQuery\"],\"amd\":\"jquery\",\"commonjs\":\"jquery\",\"commonjs2\":\"jquery\"} ***!\n \\********************************************************************************************/\n/***/ (function(module) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_jquery__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/*!********************************************************!*\\\n !*** ./js/entries/plugins/foundation.util.keyboard.js ***!\n \\********************************************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Foundation: function() { return /* reexport safe */ _foundation_core__WEBPACK_IMPORTED_MODULE_0__.Foundation; },\n/* harmony export */ Keyboard: function() { return /* reexport safe */ _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__.Keyboard; }\n/* harmony export */ });\n/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ \"./foundation.core\");\n/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.keyboard */ \"./js/foundation.util.keyboard.js\");\n\n\n_foundation_core__WEBPACK_IMPORTED_MODULE_0__.Foundation.Keyboard = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__.Keyboard;\n\n}();\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=foundation.util.keyboard.js.map"],"names":["root","factory","exports","module","require","define","amd","self","__WEBPACK_EXTERNAL_MODULE__foundation_core__","__WEBPACK_EXTERNAL_MODULE_jquery__","__webpack_modules__","./js/foundation.util.keyboard.js","__unused_webpack_module","__webpack_exports__","__webpack_require__","r","d","Keyboard","jquery__WEBPACK_IMPORTED_MODULE_0__","jquery__WEBPACK_IMPORTED_MODULE_0___default","n","_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__","keyCodes","9","13","27","32","35","36","37","38","39","40","commands","findFocusable","$element","find","filter","this","is","attr","sort","a","b","aTabIndex","bTabIndex","parseInt","parseKey","event","key","which","keyCode","String","fromCharCode","toUpperCase","replace","shiftKey","concat","ctrlKey","altKey","keys","kcs","kc","k","hasOwnProperty","handleKey","component","functions","commandList","console","warn","zfIsKeyHandled","fn","ltr","rtl","extend","returnValue","apply","handled","unhandled","register","componentName","cmds","trapFocus","$focusable","$firstFocusable","eq","$lastFocusable","on","target","preventDefault","focus","releaseFocus","off","./foundation.core","jquery","__webpack_module_cache__","moduleId","cachedModule","undefined","getter","__esModule","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","call","_foundation_core__WEBPACK_IMPORTED_MODULE_0__","_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__","Symbol","toStringTag","value","Foundation"],"mappings":"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"}