{"version":3,"file":"index.mjs","sources":["../src/constants.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/mousetrap/mousetrap.js","../node_modules/mousetrap-global-bind/mousetrap-global-bind.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/platform/platform.js","../src/utils.js","../src/index.js"],"sourcesContent":["export const MODES = {\n  default: \"default\",\n  global: \"global\",\n  scoped: \"scoped\",\n};\n\nexport const DEFAULT_CONFIG = {\n  mode: MODES.default,\n  unbindOnUnmount: true,\n  enabled: true,\n  document: undefined,\n};\n\nexport const MAC_TO_WINDOWS_KEYS_MAP = {\n  option: \"alt\",\n  command: \"ctrl\",\n  return: \"enter\",\n  delete: \"backspace\",\n};\n\n// eslint-disable-next-line @bigbinary/neeto/hard-coded-strings-should-be-localized\nexport const OS = { mac: \"OS X\", windows: \"Windows\" };\n\nexport const KEY_NAMES = { delete: \"delete\", backspace: \"backspace\" };\n","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n  var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (null != t) {\n    var e,\n      n,\n      i,\n      u,\n      a = [],\n      f = !0,\n      o = !1;\n    try {\n      if (i = (t = t.call(r)).next, 0 === l) {\n        if (Object(t) !== t) return;\n        f = !1;\n      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n    } catch (r) {\n      o = !0, n = r;\n    } finally {\n      try {\n        if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n      } finally {\n        if (o) throw n;\n      }\n    }\n    return a;\n  }\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","/*global define:false */\n/**\n * Copyright 2012-2017 Craig Campbell\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * Mousetrap is a simple keyboard shortcut library for Javascript with\n * no external dependencies\n *\n * @version 1.6.5\n * @url craig.is/killing/mice\n */\n(function(window, document, undefined) {\n\n    // Check if mousetrap is used inside browser, if not, return\n    if (!window) {\n        return;\n    }\n\n    /**\n     * mapping of special keycodes to their corresponding keys\n     *\n     * everything in this dictionary cannot use keypress events\n     * so it has to be here to map to the correct keycodes for\n     * keyup/keydown events\n     *\n     * @type {Object}\n     */\n    var _MAP = {\n        8: 'backspace',\n        9: 'tab',\n        13: 'enter',\n        16: 'shift',\n        17: 'ctrl',\n        18: 'alt',\n        20: 'capslock',\n        27: 'esc',\n        32: 'space',\n        33: 'pageup',\n        34: 'pagedown',\n        35: 'end',\n        36: 'home',\n        37: 'left',\n        38: 'up',\n        39: 'right',\n        40: 'down',\n        45: 'ins',\n        46: 'del',\n        91: 'meta',\n        93: 'meta',\n        224: 'meta'\n    };\n\n    /**\n     * mapping for special characters so they can support\n     *\n     * this dictionary is only used incase you want to bind a\n     * keyup or keydown event to one of these keys\n     *\n     * @type {Object}\n     */\n    var _KEYCODE_MAP = {\n        106: '*',\n        107: '+',\n        109: '-',\n        110: '.',\n        111 : '/',\n        186: ';',\n        187: '=',\n        188: ',',\n        189: '-',\n        190: '.',\n        191: '/',\n        192: '`',\n        219: '[',\n        220: '\\\\',\n        221: ']',\n        222: '\\''\n    };\n\n    /**\n     * this is a mapping of keys that require shift on a US keypad\n     * back to the non shift equivelents\n     *\n     * this is so you can use keyup events with these keys\n     *\n     * note that this will only work reliably on US keyboards\n     *\n     * @type {Object}\n     */\n    var _SHIFT_MAP = {\n        '~': '`',\n        '!': '1',\n        '@': '2',\n        '#': '3',\n        '$': '4',\n        '%': '5',\n        '^': '6',\n        '&': '7',\n        '*': '8',\n        '(': '9',\n        ')': '0',\n        '_': '-',\n        '+': '=',\n        ':': ';',\n        '\\\"': '\\'',\n        '<': ',',\n        '>': '.',\n        '?': '/',\n        '|': '\\\\'\n    };\n\n    /**\n     * this is a list of special strings you can use to map\n     * to modifier keys when you specify your keyboard shortcuts\n     *\n     * @type {Object}\n     */\n    var _SPECIAL_ALIASES = {\n        'option': 'alt',\n        'command': 'meta',\n        'return': 'enter',\n        'escape': 'esc',\n        'plus': '+',\n        'mod': /Mac|iPod|iPhone|iPad/.test(navigator.platform) ? 'meta' : 'ctrl'\n    };\n\n    /**\n     * variable to store the flipped version of _MAP from above\n     * needed to check if we should use keypress or not when no action\n     * is specified\n     *\n     * @type {Object|undefined}\n     */\n    var _REVERSE_MAP;\n\n    /**\n     * loop through the f keys, f1 to f19 and add them to the map\n     * programatically\n     */\n    for (var i = 1; i < 20; ++i) {\n        _MAP[111 + i] = 'f' + i;\n    }\n\n    /**\n     * loop through to map numbers on the numeric keypad\n     */\n    for (i = 0; i <= 9; ++i) {\n\n        // This needs to use a string cause otherwise since 0 is falsey\n        // mousetrap will never fire for numpad 0 pressed as part of a keydown\n        // event.\n        //\n        // @see https://github.com/ccampbell/mousetrap/pull/258\n        _MAP[i + 96] = i.toString();\n    }\n\n    /**\n     * cross browser add event method\n     *\n     * @param {Element|HTMLDocument} object\n     * @param {string} type\n     * @param {Function} callback\n     * @returns void\n     */\n    function _addEvent(object, type, callback) {\n        if (object.addEventListener) {\n            object.addEventListener(type, callback, false);\n            return;\n        }\n\n        object.attachEvent('on' + type, callback);\n    }\n\n    /**\n     * takes the event and returns the key character\n     *\n     * @param {Event} e\n     * @return {string}\n     */\n    function _characterFromEvent(e) {\n\n        // for keypress events we should return the character as is\n        if (e.type == 'keypress') {\n            var character = String.fromCharCode(e.which);\n\n            // if the shift key is not pressed then it is safe to assume\n            // that we want the character to be lowercase.  this means if\n            // you accidentally have caps lock on then your key bindings\n            // will continue to work\n            //\n            // the only side effect that might not be desired is if you\n            // bind something like 'A' cause you want to trigger an\n            // event when capital A is pressed caps lock will no longer\n            // trigger the event.  shift+a will though.\n            if (!e.shiftKey) {\n                character = character.toLowerCase();\n            }\n\n            return character;\n        }\n\n        // for non keypress events the special maps are needed\n        if (_MAP[e.which]) {\n            return _MAP[e.which];\n        }\n\n        if (_KEYCODE_MAP[e.which]) {\n            return _KEYCODE_MAP[e.which];\n        }\n\n        // if it is not in the special map\n\n        // with keydown and keyup events the character seems to always\n        // come in as an uppercase character whether you are pressing shift\n        // or not.  we should make sure it is always lowercase for comparisons\n        return String.fromCharCode(e.which).toLowerCase();\n    }\n\n    /**\n     * checks if two arrays are equal\n     *\n     * @param {Array} modifiers1\n     * @param {Array} modifiers2\n     * @returns {boolean}\n     */\n    function _modifiersMatch(modifiers1, modifiers2) {\n        return modifiers1.sort().join(',') === modifiers2.sort().join(',');\n    }\n\n    /**\n     * takes a key event and figures out what the modifiers are\n     *\n     * @param {Event} e\n     * @returns {Array}\n     */\n    function _eventModifiers(e) {\n        var modifiers = [];\n\n        if (e.shiftKey) {\n            modifiers.push('shift');\n        }\n\n        if (e.altKey) {\n            modifiers.push('alt');\n        }\n\n        if (e.ctrlKey) {\n            modifiers.push('ctrl');\n        }\n\n        if (e.metaKey) {\n            modifiers.push('meta');\n        }\n\n        return modifiers;\n    }\n\n    /**\n     * prevents default for this event\n     *\n     * @param {Event} e\n     * @returns void\n     */\n    function _preventDefault(e) {\n        if (e.preventDefault) {\n            e.preventDefault();\n            return;\n        }\n\n        e.returnValue = false;\n    }\n\n    /**\n     * stops propogation for this event\n     *\n     * @param {Event} e\n     * @returns void\n     */\n    function _stopPropagation(e) {\n        if (e.stopPropagation) {\n            e.stopPropagation();\n            return;\n        }\n\n        e.cancelBubble = true;\n    }\n\n    /**\n     * determines if the keycode specified is a modifier key or not\n     *\n     * @param {string} key\n     * @returns {boolean}\n     */\n    function _isModifier(key) {\n        return key == 'shift' || key == 'ctrl' || key == 'alt' || key == 'meta';\n    }\n\n    /**\n     * reverses the map lookup so that we can look for specific keys\n     * to see what can and can't use keypress\n     *\n     * @return {Object}\n     */\n    function _getReverseMap() {\n        if (!_REVERSE_MAP) {\n            _REVERSE_MAP = {};\n            for (var key in _MAP) {\n\n                // pull out the numeric keypad from here cause keypress should\n                // be able to detect the keys from the character\n                if (key > 95 && key < 112) {\n                    continue;\n                }\n\n                if (_MAP.hasOwnProperty(key)) {\n                    _REVERSE_MAP[_MAP[key]] = key;\n                }\n            }\n        }\n        return _REVERSE_MAP;\n    }\n\n    /**\n     * picks the best action based on the key combination\n     *\n     * @param {string} key - character for key\n     * @param {Array} modifiers\n     * @param {string=} action passed in\n     */\n    function _pickBestAction(key, modifiers, action) {\n\n        // if no action was picked in we should try to pick the one\n        // that we think would work best for this key\n        if (!action) {\n            action = _getReverseMap()[key] ? 'keydown' : 'keypress';\n        }\n\n        // modifier keys don't work as expected with keypress,\n        // switch to keydown\n        if (action == 'keypress' && modifiers.length) {\n            action = 'keydown';\n        }\n\n        return action;\n    }\n\n    /**\n     * Converts from a string key combination to an array\n     *\n     * @param  {string} combination like \"command+shift+l\"\n     * @return {Array}\n     */\n    function _keysFromString(combination) {\n        if (combination === '+') {\n            return ['+'];\n        }\n\n        combination = combination.replace(/\\+{2}/g, '+plus');\n        return combination.split('+');\n    }\n\n    /**\n     * Gets info for a specific key combination\n     *\n     * @param  {string} combination key combination (\"command+s\" or \"a\" or \"*\")\n     * @param  {string=} action\n     * @returns {Object}\n     */\n    function _getKeyInfo(combination, action) {\n        var keys;\n        var key;\n        var i;\n        var modifiers = [];\n\n        // take the keys from this pattern and figure out what the actual\n        // pattern is all about\n        keys = _keysFromString(combination);\n\n        for (i = 0; i < keys.length; ++i) {\n            key = keys[i];\n\n            // normalize key names\n            if (_SPECIAL_ALIASES[key]) {\n                key = _SPECIAL_ALIASES[key];\n            }\n\n            // if this is not a keypress event then we should\n            // be smart about using shift keys\n            // this will only work for US keyboards however\n            if (action && action != 'keypress' && _SHIFT_MAP[key]) {\n                key = _SHIFT_MAP[key];\n                modifiers.push('shift');\n            }\n\n            // if this key is a modifier then add it to the list of modifiers\n            if (_isModifier(key)) {\n                modifiers.push(key);\n            }\n        }\n\n        // depending on what the key combination is\n        // we will try to pick the best event for it\n        action = _pickBestAction(key, modifiers, action);\n\n        return {\n            key: key,\n            modifiers: modifiers,\n            action: action\n        };\n    }\n\n    function _belongsTo(element, ancestor) {\n        if (element === null || element === document) {\n            return false;\n        }\n\n        if (element === ancestor) {\n            return true;\n        }\n\n        return _belongsTo(element.parentNode, ancestor);\n    }\n\n    function Mousetrap(targetElement) {\n        var self = this;\n\n        targetElement = targetElement || document;\n\n        if (!(self instanceof Mousetrap)) {\n            return new Mousetrap(targetElement);\n        }\n\n        /**\n         * element to attach key events to\n         *\n         * @type {Element}\n         */\n        self.target = targetElement;\n\n        /**\n         * a list of all the callbacks setup via Mousetrap.bind()\n         *\n         * @type {Object}\n         */\n        self._callbacks = {};\n\n        /**\n         * direct map of string combinations to callbacks used for trigger()\n         *\n         * @type {Object}\n         */\n        self._directMap = {};\n\n        /**\n         * keeps track of what level each sequence is at since multiple\n         * sequences can start out with the same sequence\n         *\n         * @type {Object}\n         */\n        var _sequenceLevels = {};\n\n        /**\n         * variable to store the setTimeout call\n         *\n         * @type {null|number}\n         */\n        var _resetTimer;\n\n        /**\n         * temporary state where we will ignore the next keyup\n         *\n         * @type {boolean|string}\n         */\n        var _ignoreNextKeyup = false;\n\n        /**\n         * temporary state where we will ignore the next keypress\n         *\n         * @type {boolean}\n         */\n        var _ignoreNextKeypress = false;\n\n        /**\n         * are we currently inside of a sequence?\n         * type of action (\"keyup\" or \"keydown\" or \"keypress\") or false\n         *\n         * @type {boolean|string}\n         */\n        var _nextExpectedAction = false;\n\n        /**\n         * resets all sequence counters except for the ones passed in\n         *\n         * @param {Object} doNotReset\n         * @returns void\n         */\n        function _resetSequences(doNotReset) {\n            doNotReset = doNotReset || {};\n\n            var activeSequences = false,\n                key;\n\n            for (key in _sequenceLevels) {\n                if (doNotReset[key]) {\n                    activeSequences = true;\n                    continue;\n                }\n                _sequenceLevels[key] = 0;\n            }\n\n            if (!activeSequences) {\n                _nextExpectedAction = false;\n            }\n        }\n\n        /**\n         * finds all callbacks that match based on the keycode, modifiers,\n         * and action\n         *\n         * @param {string} character\n         * @param {Array} modifiers\n         * @param {Event|Object} e\n         * @param {string=} sequenceName - name of the sequence we are looking for\n         * @param {string=} combination\n         * @param {number=} level\n         * @returns {Array}\n         */\n        function _getMatches(character, modifiers, e, sequenceName, combination, level) {\n            var i;\n            var callback;\n            var matches = [];\n            var action = e.type;\n\n            // if there are no events related to this keycode\n            if (!self._callbacks[character]) {\n                return [];\n            }\n\n            // if a modifier key is coming up on its own we should allow it\n            if (action == 'keyup' && _isModifier(character)) {\n                modifiers = [character];\n            }\n\n            // loop through all callbacks for the key that was pressed\n            // and see if any of them match\n            for (i = 0; i < self._callbacks[character].length; ++i) {\n                callback = self._callbacks[character][i];\n\n                // if a sequence name is not specified, but this is a sequence at\n                // the wrong level then move onto the next match\n                if (!sequenceName && callback.seq && _sequenceLevels[callback.seq] != callback.level) {\n                    continue;\n                }\n\n                // if the action we are looking for doesn't match the action we got\n                // then we should keep going\n                if (action != callback.action) {\n                    continue;\n                }\n\n                // if this is a keypress event and the meta key and control key\n                // are not pressed that means that we need to only look at the\n                // character, otherwise check the modifiers as well\n                //\n                // chrome will not fire a keypress if meta or control is down\n                // safari will fire a keypress if meta or meta+shift is down\n                // firefox will fire a keypress if meta or control is down\n                if ((action == 'keypress' && !e.metaKey && !e.ctrlKey) || _modifiersMatch(modifiers, callback.modifiers)) {\n\n                    // when you bind a combination or sequence a second time it\n                    // should overwrite the first one.  if a sequenceName or\n                    // combination is specified in this call it does just that\n                    //\n                    // @todo make deleting its own method?\n                    var deleteCombo = !sequenceName && callback.combo == combination;\n                    var deleteSequence = sequenceName && callback.seq == sequenceName && callback.level == level;\n                    if (deleteCombo || deleteSequence) {\n                        self._callbacks[character].splice(i, 1);\n                    }\n\n                    matches.push(callback);\n                }\n            }\n\n            return matches;\n        }\n\n        /**\n         * actually calls the callback function\n         *\n         * if your callback function returns false this will use the jquery\n         * convention - prevent default and stop propogation on the event\n         *\n         * @param {Function} callback\n         * @param {Event} e\n         * @returns void\n         */\n        function _fireCallback(callback, e, combo, sequence) {\n\n            // if this event should not happen stop here\n            if (self.stopCallback(e, e.target || e.srcElement, combo, sequence)) {\n                return;\n            }\n\n            if (callback(e, combo) === false) {\n                _preventDefault(e);\n                _stopPropagation(e);\n            }\n        }\n\n        /**\n         * handles a character key event\n         *\n         * @param {string} character\n         * @param {Array} modifiers\n         * @param {Event} e\n         * @returns void\n         */\n        self._handleKey = function(character, modifiers, e) {\n            var callbacks = _getMatches(character, modifiers, e);\n            var i;\n            var doNotReset = {};\n            var maxLevel = 0;\n            var processedSequenceCallback = false;\n\n            // Calculate the maxLevel for sequences so we can only execute the longest callback sequence\n            for (i = 0; i < callbacks.length; ++i) {\n                if (callbacks[i].seq) {\n                    maxLevel = Math.max(maxLevel, callbacks[i].level);\n                }\n            }\n\n            // loop through matching callbacks for this key event\n            for (i = 0; i < callbacks.length; ++i) {\n\n                // fire for all sequence callbacks\n                // this is because if for example you have multiple sequences\n                // bound such as \"g i\" and \"g t\" they both need to fire the\n                // callback for matching g cause otherwise you can only ever\n                // match the first one\n                if (callbacks[i].seq) {\n\n                    // only fire callbacks for the maxLevel to prevent\n                    // subsequences from also firing\n                    //\n                    // for example 'a option b' should not cause 'option b' to fire\n                    // even though 'option b' is part of the other sequence\n                    //\n                    // any sequences that do not match here will be discarded\n                    // below by the _resetSequences call\n                    if (callbacks[i].level != maxLevel) {\n                        continue;\n                    }\n\n                    processedSequenceCallback = true;\n\n                    // keep a list of which sequences were matches for later\n                    doNotReset[callbacks[i].seq] = 1;\n                    _fireCallback(callbacks[i].callback, e, callbacks[i].combo, callbacks[i].seq);\n                    continue;\n                }\n\n                // if there were no sequence matches but we are still here\n                // that means this is a regular match so we should fire that\n                if (!processedSequenceCallback) {\n                    _fireCallback(callbacks[i].callback, e, callbacks[i].combo);\n                }\n            }\n\n            // if the key you pressed matches the type of sequence without\n            // being a modifier (ie \"keyup\" or \"keypress\") then we should\n            // reset all sequences that were not matched by this event\n            //\n            // this is so, for example, if you have the sequence \"h a t\" and you\n            // type \"h e a r t\" it does not match.  in this case the \"e\" will\n            // cause the sequence to reset\n            //\n            // modifier keys are ignored because you can have a sequence\n            // that contains modifiers such as \"enter ctrl+space\" and in most\n            // cases the modifier key will be pressed before the next key\n            //\n            // also if you have a sequence such as \"ctrl+b a\" then pressing the\n            // \"b\" key will trigger a \"keypress\" and a \"keydown\"\n            //\n            // the \"keydown\" is expected when there is a modifier, but the\n            // \"keypress\" ends up matching the _nextExpectedAction since it occurs\n            // after and that causes the sequence to reset\n            //\n            // we ignore keypresses in a sequence that directly follow a keydown\n            // for the same character\n            var ignoreThisKeypress = e.type == 'keypress' && _ignoreNextKeypress;\n            if (e.type == _nextExpectedAction && !_isModifier(character) && !ignoreThisKeypress) {\n                _resetSequences(doNotReset);\n            }\n\n            _ignoreNextKeypress = processedSequenceCallback && e.type == 'keydown';\n        };\n\n        /**\n         * handles a keydown event\n         *\n         * @param {Event} e\n         * @returns void\n         */\n        function _handleKeyEvent(e) {\n\n            // normalize e.which for key events\n            // @see http://stackoverflow.com/questions/4285627/javascript-keycode-vs-charcode-utter-confusion\n            if (typeof e.which !== 'number') {\n                e.which = e.keyCode;\n            }\n\n            var character = _characterFromEvent(e);\n\n            // no character found then stop\n            if (!character) {\n                return;\n            }\n\n            // need to use === for the character check because the character can be 0\n            if (e.type == 'keyup' && _ignoreNextKeyup === character) {\n                _ignoreNextKeyup = false;\n                return;\n            }\n\n            self.handleKey(character, _eventModifiers(e), e);\n        }\n\n        /**\n         * called to set a 1 second timeout on the specified sequence\n         *\n         * this is so after each key press in the sequence you have 1 second\n         * to press the next key before you have to start over\n         *\n         * @returns void\n         */\n        function _resetSequenceTimer() {\n            clearTimeout(_resetTimer);\n            _resetTimer = setTimeout(_resetSequences, 1000);\n        }\n\n        /**\n         * binds a key sequence to an event\n         *\n         * @param {string} combo - combo specified in bind call\n         * @param {Array} keys\n         * @param {Function} callback\n         * @param {string=} action\n         * @returns void\n         */\n        function _bindSequence(combo, keys, callback, action) {\n\n            // start off by adding a sequence level record for this combination\n            // and setting the level to 0\n            _sequenceLevels[combo] = 0;\n\n            /**\n             * callback to increase the sequence level for this sequence and reset\n             * all other sequences that were active\n             *\n             * @param {string} nextAction\n             * @returns {Function}\n             */\n            function _increaseSequence(nextAction) {\n                return function() {\n                    _nextExpectedAction = nextAction;\n                    ++_sequenceLevels[combo];\n                    _resetSequenceTimer();\n                };\n            }\n\n            /**\n             * wraps the specified callback inside of another function in order\n             * to reset all sequence counters as soon as this sequence is done\n             *\n             * @param {Event} e\n             * @returns void\n             */\n            function _callbackAndReset(e) {\n                _fireCallback(callback, e, combo);\n\n                // we should ignore the next key up if the action is key down\n                // or keypress.  this is so if you finish a sequence and\n                // release the key the final key will not trigger a keyup\n                if (action !== 'keyup') {\n                    _ignoreNextKeyup = _characterFromEvent(e);\n                }\n\n                // weird race condition if a sequence ends with the key\n                // another sequence begins with\n                setTimeout(_resetSequences, 10);\n            }\n\n            // loop through keys one at a time and bind the appropriate callback\n            // function.  for any key leading up to the final one it should\n            // increase the sequence. after the final, it should reset all sequences\n            //\n            // if an action is specified in the original bind call then that will\n            // be used throughout.  otherwise we will pass the action that the\n            // next key in the sequence should match.  this allows a sequence\n            // to mix and match keypress and keydown events depending on which\n            // ones are better suited to the key provided\n            for (var i = 0; i < keys.length; ++i) {\n                var isFinal = i + 1 === keys.length;\n                var wrappedCallback = isFinal ? _callbackAndReset : _increaseSequence(action || _getKeyInfo(keys[i + 1]).action);\n                _bindSingle(keys[i], wrappedCallback, action, combo, i);\n            }\n        }\n\n        /**\n         * binds a single keyboard combination\n         *\n         * @param {string} combination\n         * @param {Function} callback\n         * @param {string=} action\n         * @param {string=} sequenceName - name of sequence if part of sequence\n         * @param {number=} level - what part of the sequence the command is\n         * @returns void\n         */\n        function _bindSingle(combination, callback, action, sequenceName, level) {\n\n            // store a direct mapped reference for use with Mousetrap.trigger\n            self._directMap[combination + ':' + action] = callback;\n\n            // make sure multiple spaces in a row become a single space\n            combination = combination.replace(/\\s+/g, ' ');\n\n            var sequence = combination.split(' ');\n            var info;\n\n            // if this pattern is a sequence of keys then run through this method\n            // to reprocess each pattern one key at a time\n            if (sequence.length > 1) {\n                _bindSequence(combination, sequence, callback, action);\n                return;\n            }\n\n            info = _getKeyInfo(combination, action);\n\n            // make sure to initialize array if this is the first time\n            // a callback is added for this key\n            self._callbacks[info.key] = self._callbacks[info.key] || [];\n\n            // remove an existing match if there is one\n            _getMatches(info.key, info.modifiers, {type: info.action}, sequenceName, combination, level);\n\n            // add this call back to the array\n            // if it is a sequence put it at the beginning\n            // if not put it at the end\n            //\n            // this is important because the way these are processed expects\n            // the sequence ones to come first\n            self._callbacks[info.key][sequenceName ? 'unshift' : 'push']({\n                callback: callback,\n                modifiers: info.modifiers,\n                action: info.action,\n                seq: sequenceName,\n                level: level,\n                combo: combination\n            });\n        }\n\n        /**\n         * binds multiple combinations to the same callback\n         *\n         * @param {Array} combinations\n         * @param {Function} callback\n         * @param {string|undefined} action\n         * @returns void\n         */\n        self._bindMultiple = function(combinations, callback, action) {\n            for (var i = 0; i < combinations.length; ++i) {\n                _bindSingle(combinations[i], callback, action);\n            }\n        };\n\n        // start!\n        _addEvent(targetElement, 'keypress', _handleKeyEvent);\n        _addEvent(targetElement, 'keydown', _handleKeyEvent);\n        _addEvent(targetElement, 'keyup', _handleKeyEvent);\n    }\n\n    /**\n     * binds an event to mousetrap\n     *\n     * can be a single key, a combination of keys separated with +,\n     * an array of keys, or a sequence of keys separated by spaces\n     *\n     * be sure to list the modifier keys first to make sure that the\n     * correct key ends up getting bound (the last key in the pattern)\n     *\n     * @param {string|Array} keys\n     * @param {Function} callback\n     * @param {string=} action - 'keypress', 'keydown', or 'keyup'\n     * @returns void\n     */\n    Mousetrap.prototype.bind = function(keys, callback, action) {\n        var self = this;\n        keys = keys instanceof Array ? keys : [keys];\n        self._bindMultiple.call(self, keys, callback, action);\n        return self;\n    };\n\n    /**\n     * unbinds an event to mousetrap\n     *\n     * the unbinding sets the callback function of the specified key combo\n     * to an empty function and deletes the corresponding key in the\n     * _directMap dict.\n     *\n     * TODO: actually remove this from the _callbacks dictionary instead\n     * of binding an empty function\n     *\n     * the keycombo+action has to be exactly the same as\n     * it was defined in the bind method\n     *\n     * @param {string|Array} keys\n     * @param {string} action\n     * @returns void\n     */\n    Mousetrap.prototype.unbind = function(keys, action) {\n        var self = this;\n        return self.bind.call(self, keys, function() {}, action);\n    };\n\n    /**\n     * triggers an event that has already been bound\n     *\n     * @param {string} keys\n     * @param {string=} action\n     * @returns void\n     */\n    Mousetrap.prototype.trigger = function(keys, action) {\n        var self = this;\n        if (self._directMap[keys + ':' + action]) {\n            self._directMap[keys + ':' + action]({}, keys);\n        }\n        return self;\n    };\n\n    /**\n     * resets the library back to its initial state.  this is useful\n     * if you want to clear out the current keyboard shortcuts and bind\n     * new ones - for example if you switch to another page\n     *\n     * @returns void\n     */\n    Mousetrap.prototype.reset = function() {\n        var self = this;\n        self._callbacks = {};\n        self._directMap = {};\n        return self;\n    };\n\n    /**\n     * should we stop this event before firing off callbacks\n     *\n     * @param {Event} e\n     * @param {Element} element\n     * @return {boolean}\n     */\n    Mousetrap.prototype.stopCallback = function(e, element) {\n        var self = this;\n\n        // if the element has the class \"mousetrap\" then no need to stop\n        if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n            return false;\n        }\n\n        if (_belongsTo(element, self.target)) {\n            return false;\n        }\n\n        // Events originating from a shadow DOM are re-targetted and `e.target` is the shadow host,\n        // not the initial event target in the shadow tree. Note that not all events cross the\n        // shadow boundary.\n        // For shadow trees with `mode: 'open'`, the initial event target is the first element in\n        // the event’s composed path. For shadow trees with `mode: 'closed'`, the initial event\n        // target cannot be obtained.\n        if ('composedPath' in e && typeof e.composedPath === 'function') {\n            // For open shadow trees, update `element` so that the following check works.\n            var initialEventTarget = e.composedPath()[0];\n            if (initialEventTarget !== e.target) {\n                element = initialEventTarget;\n            }\n        }\n\n        // stop for input, select, and textarea\n        return element.tagName == 'INPUT' || element.tagName == 'SELECT' || element.tagName == 'TEXTAREA' || element.isContentEditable;\n    };\n\n    /**\n     * exposes _handleKey publicly so it can be overwritten by extensions\n     */\n    Mousetrap.prototype.handleKey = function() {\n        var self = this;\n        return self._handleKey.apply(self, arguments);\n    };\n\n    /**\n     * allow custom key mappings\n     */\n    Mousetrap.addKeycodes = function(object) {\n        for (var key in object) {\n            if (object.hasOwnProperty(key)) {\n                _MAP[key] = object[key];\n            }\n        }\n        _REVERSE_MAP = null;\n    };\n\n    /**\n     * Init the global mousetrap functions\n     *\n     * This method is needed to allow the global mousetrap functions to work\n     * now that mousetrap is a constructor function.\n     */\n    Mousetrap.init = function() {\n        var documentMousetrap = Mousetrap(document);\n        for (var method in documentMousetrap) {\n            if (method.charAt(0) !== '_') {\n                Mousetrap[method] = (function(method) {\n                    return function() {\n                        return documentMousetrap[method].apply(documentMousetrap, arguments);\n                    };\n                } (method));\n            }\n        }\n    };\n\n    Mousetrap.init();\n\n    // expose mousetrap to the global object\n    window.Mousetrap = Mousetrap;\n\n    // expose as a common js module\n    if (typeof module !== 'undefined' && module.exports) {\n        module.exports = Mousetrap;\n    }\n\n    // expose mousetrap as an AMD module\n    if (typeof define === 'function' && define.amd) {\n        define(function() {\n            return Mousetrap;\n        });\n    }\n}) (typeof window !== 'undefined' ? window : null, typeof  window !== 'undefined' ? document : null);\n","/**\r\n * adds a bindGlobal method to Mousetrap that allows you to\r\n * bind specific keyboard shortcuts that will still work\r\n * inside a text input field\r\n *\r\n * usage:\r\n * Mousetrap.bindGlobal('ctrl+s', _saveChanges);\r\n */\r\n/* global Mousetrap:true */\r\n(function(Mousetrap) {\r\n    var _globalCallbacks = {};\r\n    var _originalStopCallback = Mousetrap.prototype.stopCallback;\r\n\r\n    Mousetrap.prototype.stopCallback = function(e, element, combo, sequence) {\r\n        var self = this;\r\n\r\n        if (self.paused) {\r\n            return true;\r\n        }\r\n\r\n        if (_globalCallbacks[combo] || _globalCallbacks[sequence]) {\r\n            return false;\r\n        }\r\n\r\n        return _originalStopCallback.call(self, e, element, combo);\r\n    };\r\n\r\n    Mousetrap.prototype.bindGlobal = function(keys, callback, action) {\r\n        var self = this;\r\n        self.bind(keys, callback, action);\r\n\r\n        if (keys instanceof Array) {\r\n            for (var i = 0; i < keys.length; i++) {\r\n                _globalCallbacks[keys[i]] = true;\r\n            }\r\n            return;\r\n        }\r\n\r\n        _globalCallbacks[keys] = true;\r\n    };\r\n\t\r\n\tMousetrap.prototype.unbindGlobal = function(keys, action) {\r\n\t\tvar self = this;\r\n\t\tself.unbind(keys, action);\r\n\r\n\t\tif (keys instanceof Array) {\r\n\t\t\tfor (var i = 0; i < keys.length; i++) {\r\n\t\t\t\t_globalCallbacks[keys[i]] = false;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t_globalCallbacks[keys] = false;\r\n\t};\r\n\r\n    Mousetrap.init();\r\n}) (Mousetrap);\r\n","export default function _typeof(o) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n    return typeof o;\n  } : function (o) {\n    return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n  }, _typeof(o);\n}","/*!\n * Platform.js v1.3.6\n * Copyright 2014-2020 Benjamin Tan\n * Copyright 2011-2013 John-David Dalton\n * Available under MIT license\n */\n;(function() {\n  'use strict';\n\n  /** Used to determine if values are of the language type `Object`. */\n  var objectTypes = {\n    'function': true,\n    'object': true\n  };\n\n  /** Used as a reference to the global object. */\n  var root = (objectTypes[typeof window] && window) || this;\n\n  /** Backup possible global object. */\n  var oldRoot = root;\n\n  /** Detect free variable `exports`. */\n  var freeExports = objectTypes[typeof exports] && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = objectTypes[typeof module] && module && !module.nodeType && module;\n\n  /** Detect free variable `global` from Node.js or Browserified code and use it as `root`. */\n  var freeGlobal = freeExports && freeModule && typeof global == 'object' && global;\n  if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {\n    root = freeGlobal;\n  }\n\n  /**\n   * Used as the maximum length of an array-like object.\n   * See the [ES6 spec](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength)\n   * for more details.\n   */\n  var maxSafeInteger = Math.pow(2, 53) - 1;\n\n  /** Regular expression to detect Opera. */\n  var reOpera = /\\bOpera/;\n\n  /** Possible global object. */\n  var thisBinding = this;\n\n  /** Used for native method references. */\n  var objectProto = Object.prototype;\n\n  /** Used to check for own properties of an object. */\n  var hasOwnProperty = objectProto.hasOwnProperty;\n\n  /** Used to resolve the internal `[[Class]]` of values. */\n  var toString = objectProto.toString;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Capitalizes a string value.\n   *\n   * @private\n   * @param {string} string The string to capitalize.\n   * @returns {string} The capitalized string.\n   */\n  function capitalize(string) {\n    string = String(string);\n    return string.charAt(0).toUpperCase() + string.slice(1);\n  }\n\n  /**\n   * A utility function to clean up the OS name.\n   *\n   * @private\n   * @param {string} os The OS name to clean up.\n   * @param {string} [pattern] A `RegExp` pattern matching the OS name.\n   * @param {string} [label] A label for the OS.\n   */\n  function cleanupOS(os, pattern, label) {\n    // Platform tokens are defined at:\n    // http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n    // http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx\n    var data = {\n      '10.0': '10',\n      '6.4':  '10 Technical Preview',\n      '6.3':  '8.1',\n      '6.2':  '8',\n      '6.1':  'Server 2008 R2 / 7',\n      '6.0':  'Server 2008 / Vista',\n      '5.2':  'Server 2003 / XP 64-bit',\n      '5.1':  'XP',\n      '5.01': '2000 SP1',\n      '5.0':  '2000',\n      '4.0':  'NT',\n      '4.90': 'ME'\n    };\n    // Detect Windows version from platform tokens.\n    if (pattern && label && /^Win/i.test(os) && !/^Windows Phone /i.test(os) &&\n        (data = data[/[\\d.]+$/.exec(os)])) {\n      os = 'Windows ' + data;\n    }\n    // Correct character case and cleanup string.\n    os = String(os);\n\n    if (pattern && label) {\n      os = os.replace(RegExp(pattern, 'i'), label);\n    }\n\n    os = format(\n      os.replace(/ ce$/i, ' CE')\n        .replace(/\\bhpw/i, 'web')\n        .replace(/\\bMacintosh\\b/, 'Mac OS')\n        .replace(/_PowerPC\\b/i, ' OS')\n        .replace(/\\b(OS X) [^ \\d]+/i, '$1')\n        .replace(/\\bMac (OS X)\\b/, '$1')\n        .replace(/\\/(\\d)/, ' $1')\n        .replace(/_/g, '.')\n        .replace(/(?: BePC|[ .]*fc[ \\d.]+)$/i, '')\n        .replace(/\\bx86\\.64\\b/gi, 'x86_64')\n        .replace(/\\b(Windows Phone) OS\\b/, '$1')\n        .replace(/\\b(Chrome OS \\w+) [\\d.]+\\b/, '$1')\n        .split(' on ')[0]\n    );\n\n    return os;\n  }\n\n  /**\n   * An iteration utility for arrays and objects.\n   *\n   * @private\n   * @param {Array|Object} object The object to iterate over.\n   * @param {Function} callback The function called per iteration.\n   */\n  function each(object, callback) {\n    var index = -1,\n        length = object ? object.length : 0;\n\n    if (typeof length == 'number' && length > -1 && length <= maxSafeInteger) {\n      while (++index < length) {\n        callback(object[index], index, object);\n      }\n    } else {\n      forOwn(object, callback);\n    }\n  }\n\n  /**\n   * Trim and conditionally capitalize string values.\n   *\n   * @private\n   * @param {string} string The string to format.\n   * @returns {string} The formatted string.\n   */\n  function format(string) {\n    string = trim(string);\n    return /^(?:webOS|i(?:OS|P))/.test(string)\n      ? string\n      : capitalize(string);\n  }\n\n  /**\n   * Iterates over an object's own properties, executing the `callback` for each.\n   *\n   * @private\n   * @param {Object} object The object to iterate over.\n   * @param {Function} callback The function executed per own property.\n   */\n  function forOwn(object, callback) {\n    for (var key in object) {\n      if (hasOwnProperty.call(object, key)) {\n        callback(object[key], key, object);\n      }\n    }\n  }\n\n  /**\n   * Gets the internal `[[Class]]` of a value.\n   *\n   * @private\n   * @param {*} value The value.\n   * @returns {string} The `[[Class]]`.\n   */\n  function getClassOf(value) {\n    return value == null\n      ? capitalize(value)\n      : toString.call(value).slice(8, -1);\n  }\n\n  /**\n   * Host objects can return type values that are different from their actual\n   * data type. The objects we are concerned with usually return non-primitive\n   * types of \"object\", \"function\", or \"unknown\".\n   *\n   * @private\n   * @param {*} object The owner of the property.\n   * @param {string} property The property to check.\n   * @returns {boolean} Returns `true` if the property value is a non-primitive, else `false`.\n   */\n  function isHostType(object, property) {\n    var type = object != null ? typeof object[property] : 'number';\n    return !/^(?:boolean|number|string|undefined)$/.test(type) &&\n      (type == 'object' ? !!object[property] : true);\n  }\n\n  /**\n   * Prepares a string for use in a `RegExp` by making hyphens and spaces optional.\n   *\n   * @private\n   * @param {string} string The string to qualify.\n   * @returns {string} The qualified string.\n   */\n  function qualify(string) {\n    return String(string).replace(/([ -])(?!$)/g, '$1?');\n  }\n\n  /**\n   * A bare-bones `Array#reduce` like utility function.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} callback The function called per iteration.\n   * @returns {*} The accumulated result.\n   */\n  function reduce(array, callback) {\n    var accumulator = null;\n    each(array, function(value, index) {\n      accumulator = callback(accumulator, value, index, array);\n    });\n    return accumulator;\n  }\n\n  /**\n   * Removes leading and trailing whitespace from a string.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} The trimmed string.\n   */\n  function trim(string) {\n    return String(string).replace(/^ +| +$/g, '');\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Creates a new platform object.\n   *\n   * @memberOf platform\n   * @param {Object|string} [ua=navigator.userAgent] The user agent string or\n   *  context object.\n   * @returns {Object} A platform object.\n   */\n  function parse(ua) {\n\n    /** The environment context object. */\n    var context = root;\n\n    /** Used to flag when a custom context is provided. */\n    var isCustomContext = ua && typeof ua == 'object' && getClassOf(ua) != 'String';\n\n    // Juggle arguments.\n    if (isCustomContext) {\n      context = ua;\n      ua = null;\n    }\n\n    /** Browser navigator object. */\n    var nav = context.navigator || {};\n\n    /** Browser user agent string. */\n    var userAgent = nav.userAgent || '';\n\n    ua || (ua = userAgent);\n\n    /** Used to flag when `thisBinding` is the [ModuleScope]. */\n    var isModuleScope = isCustomContext || thisBinding == oldRoot;\n\n    /** Used to detect if browser is like Chrome. */\n    var likeChrome = isCustomContext\n      ? !!nav.likeChrome\n      : /\\bChrome\\b/.test(ua) && !/internal|\\n/i.test(toString.toString());\n\n    /** Internal `[[Class]]` value shortcuts. */\n    var objectClass = 'Object',\n        airRuntimeClass = isCustomContext ? objectClass : 'ScriptBridgingProxyObject',\n        enviroClass = isCustomContext ? objectClass : 'Environment',\n        javaClass = (isCustomContext && context.java) ? 'JavaPackage' : getClassOf(context.java),\n        phantomClass = isCustomContext ? objectClass : 'RuntimeObject';\n\n    /** Detect Java environments. */\n    var java = /\\bJava/.test(javaClass) && context.java;\n\n    /** Detect Rhino. */\n    var rhino = java && getClassOf(context.environment) == enviroClass;\n\n    /** A character to represent alpha. */\n    var alpha = java ? 'a' : '\\u03b1';\n\n    /** A character to represent beta. */\n    var beta = java ? 'b' : '\\u03b2';\n\n    /** Browser document object. */\n    var doc = context.document || {};\n\n    /**\n     * Detect Opera browser (Presto-based).\n     * http://www.howtocreate.co.uk/operaStuff/operaObject.html\n     * http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini\n     */\n    var opera = context.operamini || context.opera;\n\n    /** Opera `[[Class]]`. */\n    var operaClass = reOpera.test(operaClass = (isCustomContext && opera) ? opera['[[Class]]'] : getClassOf(opera))\n      ? operaClass\n      : (opera = null);\n\n    /*------------------------------------------------------------------------*/\n\n    /** Temporary variable used over the script's lifetime. */\n    var data;\n\n    /** The CPU architecture. */\n    var arch = ua;\n\n    /** Platform description array. */\n    var description = [];\n\n    /** Platform alpha/beta indicator. */\n    var prerelease = null;\n\n    /** A flag to indicate that environment features should be used to resolve the platform. */\n    var useFeatures = ua == userAgent;\n\n    /** The browser/environment version. */\n    var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();\n\n    /** A flag to indicate if the OS ends with \"/ Version\" */\n    var isSpecialCasedOS;\n\n    /* Detectable layout engines (order is important). */\n    var layout = getLayout([\n      { 'label': 'EdgeHTML', 'pattern': 'Edge' },\n      'Trident',\n      { 'label': 'WebKit', 'pattern': 'AppleWebKit' },\n      'iCab',\n      'Presto',\n      'NetFront',\n      'Tasman',\n      'KHTML',\n      'Gecko'\n    ]);\n\n    /* Detectable browser names (order is important). */\n    var name = getName([\n      'Adobe AIR',\n      'Arora',\n      'Avant Browser',\n      'Breach',\n      'Camino',\n      'Electron',\n      'Epiphany',\n      'Fennec',\n      'Flock',\n      'Galeon',\n      'GreenBrowser',\n      'iCab',\n      'Iceweasel',\n      'K-Meleon',\n      'Konqueror',\n      'Lunascape',\n      'Maxthon',\n      { 'label': 'Microsoft Edge', 'pattern': '(?:Edge|Edg|EdgA|EdgiOS)' },\n      'Midori',\n      'Nook Browser',\n      'PaleMoon',\n      'PhantomJS',\n      'Raven',\n      'Rekonq',\n      'RockMelt',\n      { 'label': 'Samsung Internet', 'pattern': 'SamsungBrowser' },\n      'SeaMonkey',\n      { 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n      'Sleipnir',\n      'SlimBrowser',\n      { 'label': 'SRWare Iron', 'pattern': 'Iron' },\n      'Sunrise',\n      'Swiftfox',\n      'Vivaldi',\n      'Waterfox',\n      'WebPositive',\n      { 'label': 'Yandex Browser', 'pattern': 'YaBrowser' },\n      { 'label': 'UC Browser', 'pattern': 'UCBrowser' },\n      'Opera Mini',\n      { 'label': 'Opera Mini', 'pattern': 'OPiOS' },\n      'Opera',\n      { 'label': 'Opera', 'pattern': 'OPR' },\n      'Chromium',\n      'Chrome',\n      { 'label': 'Chrome', 'pattern': '(?:HeadlessChrome)' },\n      { 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },\n      { 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },\n      { 'label': 'Firefox for iOS', 'pattern': 'FxiOS' },\n      { 'label': 'IE', 'pattern': 'IEMobile' },\n      { 'label': 'IE', 'pattern': 'MSIE' },\n      'Safari'\n    ]);\n\n    /* Detectable products (order is important). */\n    var product = getProduct([\n      { 'label': 'BlackBerry', 'pattern': 'BB10' },\n      'BlackBerry',\n      { 'label': 'Galaxy S', 'pattern': 'GT-I9000' },\n      { 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },\n      { 'label': 'Galaxy S3', 'pattern': 'GT-I9300' },\n      { 'label': 'Galaxy S4', 'pattern': 'GT-I9500' },\n      { 'label': 'Galaxy S5', 'pattern': 'SM-G900' },\n      { 'label': 'Galaxy S6', 'pattern': 'SM-G920' },\n      { 'label': 'Galaxy S6 Edge', 'pattern': 'SM-G925' },\n      { 'label': 'Galaxy S7', 'pattern': 'SM-G930' },\n      { 'label': 'Galaxy S7 Edge', 'pattern': 'SM-G935' },\n      'Google TV',\n      'Lumia',\n      'iPad',\n      'iPod',\n      'iPhone',\n      'Kindle',\n      { 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },\n      'Nexus',\n      'Nook',\n      'PlayBook',\n      'PlayStation Vita',\n      'PlayStation',\n      'TouchPad',\n      'Transformer',\n      { 'label': 'Wii U', 'pattern': 'WiiU' },\n      'Wii',\n      'Xbox One',\n      { 'label': 'Xbox 360', 'pattern': 'Xbox' },\n      'Xoom'\n    ]);\n\n    /* Detectable manufacturers. */\n    var manufacturer = getManufacturer({\n      'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },\n      'Alcatel': {},\n      'Archos': {},\n      'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },\n      'Asus': { 'Transformer': 1 },\n      'Barnes & Noble': { 'Nook': 1 },\n      'BlackBerry': { 'PlayBook': 1 },\n      'Google': { 'Google TV': 1, 'Nexus': 1 },\n      'HP': { 'TouchPad': 1 },\n      'HTC': {},\n      'Huawei': {},\n      'Lenovo': {},\n      'LG': {},\n      'Microsoft': { 'Xbox': 1, 'Xbox One': 1 },\n      'Motorola': { 'Xoom': 1 },\n      'Nintendo': { 'Wii U': 1,  'Wii': 1 },\n      'Nokia': { 'Lumia': 1 },\n      'Oppo': {},\n      'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1, 'Galaxy S3': 1, 'Galaxy S4': 1 },\n      'Sony': { 'PlayStation': 1, 'PlayStation Vita': 1 },\n      'Xiaomi': { 'Mi': 1, 'Redmi': 1 }\n    });\n\n    /* Detectable operating systems (order is important). */\n    var os = getOS([\n      'Windows Phone',\n      'KaiOS',\n      'Android',\n      'CentOS',\n      { 'label': 'Chrome OS', 'pattern': 'CrOS' },\n      'Debian',\n      { 'label': 'DragonFly BSD', 'pattern': 'DragonFly' },\n      'Fedora',\n      'FreeBSD',\n      'Gentoo',\n      'Haiku',\n      'Kubuntu',\n      'Linux Mint',\n      'OpenBSD',\n      'Red Hat',\n      'SuSE',\n      'Ubuntu',\n      'Xubuntu',\n      'Cygwin',\n      'Symbian OS',\n      'hpwOS',\n      'webOS ',\n      'webOS',\n      'Tablet OS',\n      'Tizen',\n      'Linux',\n      'Mac OS X',\n      'Macintosh',\n      'Mac',\n      'Windows 98;',\n      'Windows '\n    ]);\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Picks the layout engine from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected layout engine.\n     */\n    function getLayout(guesses) {\n      return reduce(guesses, function(result, guess) {\n        return result || RegExp('\\\\b' + (\n          guess.pattern || qualify(guess)\n        ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n      });\n    }\n\n    /**\n     * Picks the manufacturer from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An object of guesses.\n     * @returns {null|string} The detected manufacturer.\n     */\n    function getManufacturer(guesses) {\n      return reduce(guesses, function(result, value, key) {\n        // Lookup the manufacturer by product or scan the UA for the manufacturer.\n        return result || (\n          value[product] ||\n          value[/^[a-z]+(?: +[a-z]+\\b)*/i.exec(product)] ||\n          RegExp('\\\\b' + qualify(key) + '(?:\\\\b|\\\\w*\\\\d)', 'i').exec(ua)\n        ) && key;\n      });\n    }\n\n    /**\n     * Picks the browser name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected browser name.\n     */\n    function getName(guesses) {\n      return reduce(guesses, function(result, guess) {\n        return result || RegExp('\\\\b' + (\n          guess.pattern || qualify(guess)\n        ) + '\\\\b', 'i').exec(ua) && (guess.label || guess);\n      });\n    }\n\n    /**\n     * Picks the OS name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected OS name.\n     */\n    function getOS(guesses) {\n      return reduce(guesses, function(result, guess) {\n        var pattern = guess.pattern || qualify(guess);\n        if (!result && (result =\n              RegExp('\\\\b' + pattern + '(?:/[\\\\d.]+|[ \\\\w.]*)', 'i').exec(ua)\n            )) {\n          result = cleanupOS(result, pattern, guess.label || guess);\n        }\n        return result;\n      });\n    }\n\n    /**\n     * Picks the product name from an array of guesses.\n     *\n     * @private\n     * @param {Array} guesses An array of guesses.\n     * @returns {null|string} The detected product name.\n     */\n    function getProduct(guesses) {\n      return reduce(guesses, function(result, guess) {\n        var pattern = guess.pattern || qualify(guess);\n        if (!result && (result =\n              RegExp('\\\\b' + pattern + ' *\\\\d+[.\\\\w_]*', 'i').exec(ua) ||\n              RegExp('\\\\b' + pattern + ' *\\\\w+-[\\\\w]*', 'i').exec(ua) ||\n              RegExp('\\\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\\\d+|[^ ();-]*)', 'i').exec(ua)\n            )) {\n          // Split by forward slash and append product version if needed.\n          if ((result = String((guess.label && !RegExp(pattern, 'i').test(guess.label)) ? guess.label : result).split('/'))[1] && !/[\\d.]+/.test(result[0])) {\n            result[0] += ' ' + result[1];\n          }\n          // Correct character case and cleanup string.\n          guess = guess.label || guess;\n          result = format(result[0]\n            .replace(RegExp(pattern, 'i'), guess)\n            .replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')\n            .replace(RegExp('(' + guess + ')[-_.]?(\\\\w)', 'i'), '$1 $2'));\n        }\n        return result;\n      });\n    }\n\n    /**\n     * Resolves the version using an array of UA patterns.\n     *\n     * @private\n     * @param {Array} patterns An array of UA patterns.\n     * @returns {null|string} The detected version.\n     */\n    function getVersion(patterns) {\n      return reduce(patterns, function(result, pattern) {\n        return result || (RegExp(pattern +\n          '(?:-[\\\\d.]+/|(?: for [\\\\w-]+)?[ /-])([\\\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;\n      });\n    }\n\n    /**\n     * Returns `platform.description` when the platform object is coerced to a string.\n     *\n     * @name toString\n     * @memberOf platform\n     * @returns {string} Returns `platform.description` if available, else an empty string.\n     */\n    function toStringPlatform() {\n      return this.description || '';\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Convert layout to an array so we can add extra details.\n    layout && (layout = [layout]);\n\n    // Detect Android products.\n    // Browsers on Android devices typically provide their product IDS after \"Android;\"\n    // up to \"Build\" or \") AppleWebKit\".\n    // Example:\n    // \"Mozilla/5.0 (Linux; Android 8.1.0; Moto G (5) Plus) AppleWebKit/537.36\n    // (KHTML, like Gecko) Chrome/70.0.3538.80 Mobile Safari/537.36\"\n    if (/\\bAndroid\\b/.test(os) && !product &&\n        (data = /\\bAndroid[^;]*;(.*?)(?:Build|\\) AppleWebKit)\\b/i.exec(ua))) {\n      product = trim(data[1])\n        // Replace any language codes (eg. \"en-US\").\n        .replace(/^[a-z]{2}-[a-z]{2};\\s*/i, '')\n        || null;\n    }\n    // Detect product names that contain their manufacturer's name.\n    if (manufacturer && !product) {\n      product = getProduct([manufacturer]);\n    } else if (manufacturer && product) {\n      product = product\n        .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.\\\\s]', 'i'), manufacturer + ' ')\n        .replace(RegExp('^(' + qualify(manufacturer) + ')[-_.]?(\\\\w)', 'i'), manufacturer + ' $2');\n    }\n    // Clean up Google TV.\n    if ((data = /\\bGoogle TV\\b/.exec(product))) {\n      product = data[0];\n    }\n    // Detect simulators.\n    if (/\\bSimulator\\b/i.test(ua)) {\n      product = (product ? product + ' ' : '') + 'Simulator';\n    }\n    // Detect Opera Mini 8+ running in Turbo/Uncompressed mode on iOS.\n    if (name == 'Opera Mini' && /\\bOPiOS\\b/.test(ua)) {\n      description.push('running in Turbo/Uncompressed mode');\n    }\n    // Detect IE Mobile 11.\n    if (name == 'IE' && /\\blike iPhone OS\\b/.test(ua)) {\n      data = parse(ua.replace(/like iPhone OS/, ''));\n      manufacturer = data.manufacturer;\n      product = data.product;\n    }\n    // Detect iOS.\n    else if (/^iP/.test(product)) {\n      name || (name = 'Safari');\n      os = 'iOS' + ((data = / OS ([\\d_]+)/i.exec(ua))\n        ? ' ' + data[1].replace(/_/g, '.')\n        : '');\n    }\n    // Detect Kubuntu.\n    else if (name == 'Konqueror' && /^Linux\\b/i.test(os)) {\n      os = 'Kubuntu';\n    }\n    // Detect Android browsers.\n    else if ((manufacturer && manufacturer != 'Google' &&\n        ((/Chrome/.test(name) && !/\\bMobile Safari\\b/i.test(ua)) || /\\bVita\\b/.test(product))) ||\n        (/\\bAndroid\\b/.test(os) && /^Chrome/.test(name) && /\\bVersion\\//i.test(ua))) {\n      name = 'Android Browser';\n      os = /\\bAndroid\\b/.test(os) ? os : 'Android';\n    }\n    // Detect Silk desktop/accelerated modes.\n    else if (name == 'Silk') {\n      if (!/\\bMobi/i.test(ua)) {\n        os = 'Android';\n        description.unshift('desktop mode');\n      }\n      if (/Accelerated *= *true/i.test(ua)) {\n        description.unshift('accelerated');\n      }\n    }\n    // Detect UC Browser speed mode.\n    else if (name == 'UC Browser' && /\\bUCWEB\\b/.test(ua)) {\n      description.push('speed mode');\n    }\n    // Detect PaleMoon identifying as Firefox.\n    else if (name == 'PaleMoon' && (data = /\\bFirefox\\/([\\d.]+)\\b/.exec(ua))) {\n      description.push('identifying as Firefox ' + data[1]);\n    }\n    // Detect Firefox OS and products running Firefox.\n    else if (name == 'Firefox' && (data = /\\b(Mobile|Tablet|TV)\\b/i.exec(ua))) {\n      os || (os = 'Firefox OS');\n      product || (product = data[1]);\n    }\n    // Detect false positives for Firefox/Safari.\n    else if (!name || (data = !/\\bMinefield\\b/i.test(ua) && /\\b(?:Firefox|Safari)\\b/.exec(name))) {\n      // Escape the `/` for Firefox 1.\n      if (name && !product && /[\\/,]|^[^(]+?\\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {\n        // Clear name of false positives.\n        name = null;\n      }\n      // Reassign a generic name.\n      if ((data = product || manufacturer || os) &&\n          (product || manufacturer || /\\b(?:Android|Symbian OS|Tablet OS|webOS)\\b/.test(os))) {\n        name = /[a-z]+(?: Hat)?/i.exec(/\\bAndroid\\b/.test(os) ? os : data) + ' Browser';\n      }\n    }\n    // Add Chrome version to description for Electron.\n    else if (name == 'Electron' && (data = (/\\bChrome\\/([\\d.]+)\\b/.exec(ua) || 0)[1])) {\n      description.push('Chromium ' + data);\n    }\n    // Detect non-Opera (Presto-based) versions (order is important).\n    if (!version) {\n      version = getVersion([\n        '(?:Cloud9|CriOS|CrMo|Edge|Edg|EdgA|EdgiOS|FxiOS|HeadlessChrome|IEMobile|Iron|Opera ?Mini|OPiOS|OPR|Raven|SamsungBrowser|Silk(?!/[\\\\d.]+$)|UCBrowser|YaBrowser)',\n        'Version',\n        qualify(name),\n        '(?:Firefox|Minefield|NetFront)'\n      ]);\n    }\n    // Detect stubborn layout engines.\n    if ((data =\n          layout == 'iCab' && parseFloat(version) > 3 && 'WebKit' ||\n          /\\bOpera\\b/.test(name) && (/\\bOPR\\b/.test(ua) ? 'Blink' : 'Presto') ||\n          /\\b(?:Midori|Nook|Safari)\\b/i.test(ua) && !/^(?:Trident|EdgeHTML)$/.test(layout) && 'WebKit' ||\n          !layout && /\\bMSIE\\b/i.test(ua) && (os == 'Mac OS' ? 'Tasman' : 'Trident') ||\n          layout == 'WebKit' && /\\bPlayStation\\b(?! Vita\\b)/i.test(name) && 'NetFront'\n        )) {\n      layout = [data];\n    }\n    // Detect Windows Phone 7 desktop mode.\n    if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\\d+)/i.exec(ua) || 0)[1])) {\n      name += ' Mobile';\n      os = 'Windows Phone ' + (/\\+$/.test(data) ? data : data + '.x');\n      description.unshift('desktop mode');\n    }\n    // Detect Windows Phone 8.x desktop mode.\n    else if (/\\bWPDesktop\\b/i.test(ua)) {\n      name = 'IE Mobile';\n      os = 'Windows Phone 8.x';\n      description.unshift('desktop mode');\n      version || (version = (/\\brv:([\\d.]+)/.exec(ua) || 0)[1]);\n    }\n    // Detect IE 11 identifying as other browsers.\n    else if (name != 'IE' && layout == 'Trident' && (data = /\\brv:([\\d.]+)/.exec(ua))) {\n      if (name) {\n        description.push('identifying as ' + name + (version ? ' ' + version : ''));\n      }\n      name = 'IE';\n      version = data[1];\n    }\n    // Leverage environment features.\n    if (useFeatures) {\n      // Detect server-side environments.\n      // Rhino has a global function while others have a global object.\n      if (isHostType(context, 'global')) {\n        if (java) {\n          data = java.lang.System;\n          arch = data.getProperty('os.arch');\n          os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');\n        }\n        if (rhino) {\n          try {\n            version = context.require('ringo/engine').version.join('.');\n            name = 'RingoJS';\n          } catch(e) {\n            if ((data = context.system) && data.global.system == context.system) {\n              name = 'Narwhal';\n              os || (os = data[0].os || null);\n            }\n          }\n          if (!name) {\n            name = 'Rhino';\n          }\n        }\n        else if (\n          typeof context.process == 'object' && !context.process.browser &&\n          (data = context.process)\n        ) {\n          if (typeof data.versions == 'object') {\n            if (typeof data.versions.electron == 'string') {\n              description.push('Node ' + data.versions.node);\n              name = 'Electron';\n              version = data.versions.electron;\n            } else if (typeof data.versions.nw == 'string') {\n              description.push('Chromium ' + version, 'Node ' + data.versions.node);\n              name = 'NW.js';\n              version = data.versions.nw;\n            }\n          }\n          if (!name) {\n            name = 'Node.js';\n            arch = data.arch;\n            os = data.platform;\n            version = /[\\d.]+/.exec(data.version);\n            version = version ? version[0] : null;\n          }\n        }\n      }\n      // Detect Adobe AIR.\n      else if (getClassOf((data = context.runtime)) == airRuntimeClass) {\n        name = 'Adobe AIR';\n        os = data.flash.system.Capabilities.os;\n      }\n      // Detect PhantomJS.\n      else if (getClassOf((data = context.phantom)) == phantomClass) {\n        name = 'PhantomJS';\n        version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);\n      }\n      // Detect IE compatibility modes.\n      else if (typeof doc.documentMode == 'number' && (data = /\\bTrident\\/(\\d+)/i.exec(ua))) {\n        // We're in compatibility mode when the Trident version + 4 doesn't\n        // equal the document mode.\n        version = [version, doc.documentMode];\n        if ((data = +data[1] + 4) != version[1]) {\n          description.push('IE ' + version[1] + ' mode');\n          layout && (layout[1] = '');\n          version[1] = data;\n        }\n        version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];\n      }\n      // Detect IE 11 masking as other browsers.\n      else if (typeof doc.documentMode == 'number' && /^(?:Chrome|Firefox)\\b/.test(name)) {\n        description.push('masking as ' + name + ' ' + version);\n        name = 'IE';\n        version = '11.0';\n        layout = ['Trident'];\n        os = 'Windows';\n      }\n      os = os && format(os);\n    }\n    // Detect prerelease phases.\n    if (version && (data =\n          /(?:[ab]|dp|pre|[ab]\\d+pre)(?:\\d+\\+?)?$/i.exec(version) ||\n          /(?:alpha|beta)(?: ?\\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||\n          /\\bMinefield\\b/i.test(ua) && 'a'\n        )) {\n      prerelease = /b/i.test(data) ? 'beta' : 'alpha';\n      version = version.replace(RegExp(data + '\\\\+?$'), '') +\n        (prerelease == 'beta' ? beta : alpha) + (/\\d+\\+?/.exec(data) || '');\n    }\n    // Detect Firefox Mobile.\n    if (name == 'Fennec' || name == 'Firefox' && /\\b(?:Android|Firefox OS|KaiOS)\\b/.test(os)) {\n      name = 'Firefox Mobile';\n    }\n    // Obscure Maxthon's unreliable version.\n    else if (name == 'Maxthon' && version) {\n      version = version.replace(/\\.[\\d.]+/, '.x');\n    }\n    // Detect Xbox 360 and Xbox One.\n    else if (/\\bXbox\\b/i.test(product)) {\n      if (product == 'Xbox 360') {\n        os = null;\n      }\n      if (product == 'Xbox 360' && /\\bIEMobile\\b/.test(ua)) {\n        description.unshift('mobile mode');\n      }\n    }\n    // Add mobile postfix.\n    else if ((/^(?:Chrome|IE|Opera)$/.test(name) || name && !product && !/Browser|Mobi/.test(name)) &&\n        (os == 'Windows CE' || /Mobi/i.test(ua))) {\n      name += ' Mobile';\n    }\n    // Detect IE platform preview.\n    else if (name == 'IE' && useFeatures) {\n      try {\n        if (context.external === null) {\n          description.unshift('platform preview');\n        }\n      } catch(e) {\n        description.unshift('embedded');\n      }\n    }\n    // Detect BlackBerry OS version.\n    // http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp\n    else if ((/\\bBlackBerry\\b/.test(product) || /\\bBB10\\b/.test(ua)) && (data =\n          (RegExp(product.replace(/ +/g, ' *') + '/([.\\\\d]+)', 'i').exec(ua) || 0)[1] ||\n          version\n        )) {\n      data = [data, /BB10/.test(ua)];\n      os = (data[1] ? (product = null, manufacturer = 'BlackBerry') : 'Device Software') + ' ' + data[0];\n      version = null;\n    }\n    // Detect Opera identifying/masking itself as another browser.\n    // http://www.opera.com/support/kb/view/843/\n    else if (this != forOwn && product != 'Wii' && (\n          (useFeatures && opera) ||\n          (/Opera/.test(name) && /\\b(?:MSIE|Firefox)\\b/i.test(ua)) ||\n          (name == 'Firefox' && /\\bOS X (?:\\d+\\.){2,}/.test(os)) ||\n          (name == 'IE' && (\n            (os && !/^Win/.test(os) && version > 5.5) ||\n            /\\bWindows XP\\b/.test(os) && version > 8 ||\n            version == 8 && !/\\bTrident\\b/.test(ua)\n          ))\n        ) && !reOpera.test((data = parse.call(forOwn, ua.replace(reOpera, '') + ';'))) && data.name) {\n      // When \"identifying\", the UA contains both Opera and the other browser's name.\n      data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');\n      if (reOpera.test(name)) {\n        if (/\\bIE\\b/.test(data) && os == 'Mac OS') {\n          os = null;\n        }\n        data = 'identify' + data;\n      }\n      // When \"masking\", the UA contains only the other browser's name.\n      else {\n        data = 'mask' + data;\n        if (operaClass) {\n          name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));\n        } else {\n          name = 'Opera';\n        }\n        if (/\\bIE\\b/.test(data)) {\n          os = null;\n        }\n        if (!useFeatures) {\n          version = null;\n        }\n      }\n      layout = ['Presto'];\n      description.push(data);\n    }\n    // Detect WebKit Nightly and approximate Chrome/Safari versions.\n    if ((data = (/\\bAppleWebKit\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n      // Correct build number for numeric comparison.\n      // (e.g. \"532.5\" becomes \"532.05\")\n      data = [parseFloat(data.replace(/\\.(\\d)$/, '.0$1')), data];\n      // Nightly builds are postfixed with a \"+\".\n      if (name == 'Safari' && data[1].slice(-1) == '+') {\n        name = 'WebKit Nightly';\n        prerelease = 'alpha';\n        version = data[1].slice(0, -1);\n      }\n      // Clear incorrect browser versions.\n      else if (version == data[1] ||\n          version == (data[2] = (/\\bSafari\\/([\\d.]+\\+?)/i.exec(ua) || 0)[1])) {\n        version = null;\n      }\n      // Use the full Chrome version when available.\n      data[1] = (/\\b(?:Headless)?Chrome\\/([\\d.]+)/i.exec(ua) || 0)[1];\n      // Detect Blink layout engine.\n      if (data[0] == 537.36 && data[2] == 537.36 && parseFloat(data[1]) >= 28 && layout == 'WebKit') {\n        layout = ['Blink'];\n      }\n      // Detect JavaScriptCore.\n      // http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi\n      if (!useFeatures || (!likeChrome && !data[1])) {\n        layout && (layout[1] = 'like Safari');\n        data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : data < 537 ? 6 : data < 538 ? 7 : data < 601 ? 8 : data < 602 ? 9 : data < 604 ? 10 : data < 606 ? 11 : data < 608 ? 12 : '12');\n      } else {\n        layout && (layout[1] = 'like Chrome');\n        data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : data < 537.11 ? '21+' : data < 537.13 ? 23 : data < 537.18 ? 24 : data < 537.24 ? 25 : data < 537.36 ? 26 : layout != 'Blink' ? '27' : '28');\n      }\n      // Add the postfix of \".x\" or \"+\" for approximate versions.\n      layout && (layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+'));\n      // Obscure version for some Safari 1-2 releases.\n      if (name == 'Safari' && (!version || parseInt(version) > 45)) {\n        version = data;\n      } else if (name == 'Chrome' && /\\bHeadlessChrome/i.test(ua)) {\n        description.unshift('headless');\n      }\n    }\n    // Detect Opera desktop modes.\n    if (name == 'Opera' &&  (data = /\\bzbov|zvav$/.exec(os))) {\n      name += ' ';\n      description.unshift('desktop mode');\n      if (data == 'zvav') {\n        name += 'Mini';\n        version = null;\n      } else {\n        name += 'Mobile';\n      }\n      os = os.replace(RegExp(' *' + data + '$'), '');\n    }\n    // Detect Chrome desktop mode.\n    else if (name == 'Safari' && /\\bChrome\\b/.exec(layout && layout[1])) {\n      description.unshift('desktop mode');\n      name = 'Chrome Mobile';\n      version = null;\n\n      if (/\\bOS X\\b/.test(os)) {\n        manufacturer = 'Apple';\n        os = 'iOS 4.3+';\n      } else {\n        os = null;\n      }\n    }\n    // Newer versions of SRWare Iron uses the Chrome tag to indicate its version number.\n    else if (/\\bSRWare Iron\\b/.test(name) && !version) {\n      version = getVersion('Chrome');\n    }\n    // Strip incorrect OS versions.\n    if (version && version.indexOf((data = /[\\d.]+$/.exec(os))) == 0 &&\n        ua.indexOf('/' + data + '-') > -1) {\n      os = trim(os.replace(data, ''));\n    }\n    // Ensure OS does not include the browser name.\n    if (os && os.indexOf(name) != -1 && !RegExp(name + ' OS').test(os)) {\n      os = os.replace(RegExp(' *' + qualify(name) + ' *'), '');\n    }\n    // Add layout engine.\n    if (layout && !/\\b(?:Avant|Nook)\\b/.test(name) && (\n        /Browser|Lunascape|Maxthon/.test(name) ||\n        name != 'Safari' && /^iOS/.test(os) && /\\bSafari\\b/.test(layout[1]) ||\n        /^(?:Adobe|Arora|Breach|Midori|Opera|Phantom|Rekonq|Rock|Samsung Internet|Sleipnir|SRWare Iron|Vivaldi|Web)/.test(name) && layout[1])) {\n      // Don't add layout details to description if they are falsey.\n      (data = layout[layout.length - 1]) && description.push(data);\n    }\n    // Combine contextual information.\n    if (description.length) {\n      description = ['(' + description.join('; ') + ')'];\n    }\n    // Append manufacturer to description.\n    if (manufacturer && product && product.indexOf(manufacturer) < 0) {\n      description.push('on ' + manufacturer);\n    }\n    // Append product to description.\n    if (product) {\n      description.push((/^on /.test(description[description.length - 1]) ? '' : 'on ') + product);\n    }\n    // Parse the OS into an object.\n    if (os) {\n      data = / ([\\d.+]+)$/.exec(os);\n      isSpecialCasedOS = data && os.charAt(os.length - data[0].length - 1) == '/';\n      os = {\n        'architecture': 32,\n        'family': (data && !isSpecialCasedOS) ? os.replace(data[0], '') : os,\n        'version': data ? data[1] : null,\n        'toString': function() {\n          var version = this.version;\n          return this.family + ((version && !isSpecialCasedOS) ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');\n        }\n      };\n    }\n    // Add browser/OS architecture.\n    if ((data = /\\b(?:AMD|IA|Win|WOW|x86_|x)64\\b/i.exec(arch)) && !/\\bi686\\b/i.test(arch)) {\n      if (os) {\n        os.architecture = 64;\n        os.family = os.family.replace(RegExp(' *' + data), '');\n      }\n      if (\n          name && (/\\bWOW64\\b/i.test(ua) ||\n          (useFeatures && /\\w(?:86|32)$/.test(nav.cpuClass || nav.platform) && !/\\bWin64; x64\\b/i.test(ua)))\n      ) {\n        description.unshift('32-bit');\n      }\n    }\n    // Chrome 39 and above on OS X is always 64-bit.\n    else if (\n        os && /^OS X/.test(os.family) &&\n        name == 'Chrome' && parseFloat(version) >= 39\n    ) {\n      os.architecture = 64;\n    }\n\n    ua || (ua = null);\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The platform object.\n     *\n     * @name platform\n     * @type Object\n     */\n    var platform = {};\n\n    /**\n     * The platform description.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.description = ua;\n\n    /**\n     * The name of the browser's layout engine.\n     *\n     * The list of common layout engines include:\n     * \"Blink\", \"EdgeHTML\", \"Gecko\", \"Trident\" and \"WebKit\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.layout = layout && layout[0];\n\n    /**\n     * The name of the product's manufacturer.\n     *\n     * The list of manufacturers include:\n     * \"Apple\", \"Archos\", \"Amazon\", \"Asus\", \"Barnes & Noble\", \"BlackBerry\",\n     * \"Google\", \"HP\", \"HTC\", \"LG\", \"Microsoft\", \"Motorola\", \"Nintendo\",\n     * \"Nokia\", \"Samsung\" and \"Sony\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.manufacturer = manufacturer;\n\n    /**\n     * The name of the browser/environment.\n     *\n     * The list of common browser names include:\n     * \"Chrome\", \"Electron\", \"Firefox\", \"Firefox for iOS\", \"IE\",\n     * \"Microsoft Edge\", \"PhantomJS\", \"Safari\", \"SeaMonkey\", \"Silk\",\n     * \"Opera Mini\" and \"Opera\"\n     *\n     * Mobile versions of some browsers have \"Mobile\" appended to their name:\n     * eg. \"Chrome Mobile\", \"Firefox Mobile\", \"IE Mobile\" and \"Opera Mobile\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.name = name;\n\n    /**\n     * The alpha/beta release indicator.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.prerelease = prerelease;\n\n    /**\n     * The name of the product hosting the browser.\n     *\n     * The list of common products include:\n     *\n     * \"BlackBerry\", \"Galaxy S4\", \"Lumia\", \"iPad\", \"iPod\", \"iPhone\", \"Kindle\",\n     * \"Kindle Fire\", \"Nexus\", \"Nook\", \"PlayBook\", \"TouchPad\" and \"Transformer\"\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.product = product;\n\n    /**\n     * The browser's user agent string.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.ua = ua;\n\n    /**\n     * The browser/environment version.\n     *\n     * @memberOf platform\n     * @type string|null\n     */\n    platform.version = name && version;\n\n    /**\n     * The name of the operating system.\n     *\n     * @memberOf platform\n     * @type Object\n     */\n    platform.os = os || {\n\n      /**\n       * The CPU architecture the OS is built for.\n       *\n       * @memberOf platform.os\n       * @type number|null\n       */\n      'architecture': null,\n\n      /**\n       * The family of the OS.\n       *\n       * Common values include:\n       * \"Windows\", \"Windows Server 2008 R2 / 7\", \"Windows Server 2008 / Vista\",\n       * \"Windows XP\", \"OS X\", \"Linux\", \"Ubuntu\", \"Debian\", \"Fedora\", \"Red Hat\",\n       * \"SuSE\", \"Android\", \"iOS\" and \"Windows Phone\"\n       *\n       * @memberOf platform.os\n       * @type string|null\n       */\n      'family': null,\n\n      /**\n       * The version of the OS.\n       *\n       * @memberOf platform.os\n       * @type string|null\n       */\n      'version': null,\n\n      /**\n       * Returns the OS string.\n       *\n       * @memberOf platform.os\n       * @returns {string} The OS string.\n       */\n      'toString': function() { return 'null'; }\n    };\n\n    platform.parse = parse;\n    platform.toString = toStringPlatform;\n\n    if (platform.version) {\n      description.unshift(version);\n    }\n    if (platform.name) {\n      description.unshift(name);\n    }\n    if (os && name && !(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product))) {\n      description.push(product ? '(' + os + ')' : 'on ' + os);\n    }\n    if (description.length) {\n      platform.description = description.join(' ');\n    }\n    return platform;\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export platform.\n  var platform = parse();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like the following:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose platform on the global object to prevent errors when platform is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    root.platform = platform;\n\n    // Define as an anonymous module so platform can be aliased through path mapping.\n    define(function() {\n      return platform;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds an `exports` object.\n  else if (freeExports && freeModule) {\n    // Export for CommonJS support.\n    forOwn(platform, function(value, key) {\n      freeExports[key] = value;\n    });\n  }\n  else {\n    // Export to the global object.\n    root.platform = platform;\n  }\n}.call(this));\n","import Mousetrap from \"mousetrap\";\nimport \"mousetrap-global-bind\";\nimport platform from \"platform\";\nimport { toPairs } from \"ramda\";\n\nimport { MAC_TO_WINDOWS_KEYS_MAP, OS, KEY_NAMES, MODES } from \"./constants\";\n\nconst isMultipleHotkey = Array.isArray;\n\nconst replaceKeys = (hotkey, keyName, replaceWith) => {\n  const keyNamePattern = new RegExp(keyName, \"g\");\n\n  return isMultipleHotkey(hotkey)\n    ? hotkey.map(item => item.replace(keyNamePattern, replaceWith))\n    : hotkey.replace(keyNamePattern, replaceWith);\n};\n\nconst convertHotKeyToWindows = hotkey => {\n  toPairs(MAC_TO_WINDOWS_KEYS_MAP).forEach(([macKey, windowsKey]) => {\n    hotkey = replaceKeys(hotkey, macKey, windowsKey);\n  });\n\n  return hotkey;\n};\n\nexport const convertHotkeyToUsersPlatform = hotkey => {\n  const platformInfo = platform.parse(navigator.userAgent);\n  const isOSX = platformInfo.os?.family?.includes(OS.mac);\n  if (isOSX) return replaceKeys(hotkey, KEY_NAMES.delete, KEY_NAMES.backspace);\n\n  return convertHotKeyToWindows(hotkey);\n};\n\nexport const bindHotKey = ({ mode, hotkey, handler, ref, targetDocument }) => {\n  let mousetrapInstance;\n\n  switch (mode) {\n    case MODES.global:\n      Mousetrap.bindGlobal(hotkey, handler);\n      break;\n    case MODES.scoped:\n      mousetrapInstance = Mousetrap(targetDocument ?? ref.current).bind(\n        hotkey,\n        handler\n      );\n      break;\n    default:\n      mousetrapInstance = Mousetrap(targetDocument ?? document).bind(\n        hotkey,\n        handler\n      );\n  }\n\n  return mousetrapInstance;\n};\n\nexport const unBindHotKey = ({ mousetrapInstance, mode, hotkey }) =>\n  mode === MODES.global\n    ? Mousetrap.unbindGlobal(hotkey)\n    : mousetrapInstance?.unbind(hotkey);\n","import { useEffect, useMemo, useRef } from \"react\";\n\nimport { mergeLeft } from \"ramda\";\n\nimport { DEFAULT_CONFIG, MODES } from \"src/constants\";\nimport {\n  bindHotKey,\n  convertHotkeyToUsersPlatform,\n  unBindHotKey,\n} from \"src/utils\";\n\nconst useHotKeys = (hotkey, handler, config) => {\n  const ref = useRef(null);\n  const handlerRef = useRef(handler);\n\n  handlerRef.current = handler;\n\n  const convertedHotkey = useMemo(\n    () => convertHotkeyToUsersPlatform(hotkey),\n    [hotkey]\n  );\n\n  const memoizedConfig = useMemo(\n    () => mergeLeft(config, DEFAULT_CONFIG),\n    [config?.enabled, config?.mode, config?.unbindOnUnmount, config?.document]\n  );\n\n  useEffect(() => {\n    if (!memoizedConfig.enabled) return undefined;\n\n    const mousetrapInstance = bindHotKey({\n      mode: memoizedConfig.mode,\n      hotkey: convertedHotkey,\n      handler: (...args) => handlerRef.current(...args),\n      ref,\n      targetDocument: memoizedConfig.document,\n    });\n\n    return () => {\n      unBindHotKey({\n        mousetrapInstance,\n        mode: memoizedConfig.mode,\n        hotkey: convertedHotkey,\n      });\n    };\n  }, [convertedHotkey, memoizedConfig]);\n\n  return memoizedConfig.mode === MODES.scoped ? ref : null;\n};\n\nexport default useHotKeys;\n"],"names":["MODES","global","scoped","DEFAULT_CONFIG","mode","unbindOnUnmount","enabled","document","undefined","MAC_TO_WINDOWS_KEYS_MAP","option","command","OS","mac","windows","KEY_NAMES","backspace","_arrayWithHoles","arr","Array","isArray","_iterableToArrayLimit","r","l","t","Symbol","iterator","e","n","i","u","a","f","o","call","next","Object","done","push","value","length","_arrayLikeToArray","len","arr2","_unsupportedIterableToArray","minLen","arrayLikeToArray","prototype","toString","slice","constructor","name","from","test","_nonIterableRest","TypeError","_slicedToArray","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","window","_MAP","_KEYCODE_MAP","_SHIFT_MAP","_SPECIAL_ALIASES","navigator","platform","_REVERSE_MAP","_addEvent","object","type","callback","addEventListener","attachEvent","_characterFromEvent","character","String","fromCharCode","which","shiftKey","toLowerCase","_modifiersMatch","modifiers1","modifiers2","sort","join","_eventModifiers","modifiers","altKey","ctrlKey","metaKey","_preventDefault","preventDefault","returnValue","_stopPropagation","stopPropagation","cancelBubble","_isModifier","key","_getReverseMap","hasOwnProperty","_pickBestAction","action","_keysFromString","combination","replace","split","_getKeyInfo","keys","_belongsTo","element","ancestor","parentNode","Mousetrap","targetElement","self","target","_callbacks","_directMap","_sequenceLevels","_resetTimer","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","level","matches","seq","deleteCombo","combo","deleteSequence","splice","_fireCallback","sequence","stopCallback","srcElement","_handleKey","callbacks","maxLevel","processedSequenceCallback","Math","max","ignoreThisKeypress","_handleKeyEvent","keyCode","handleKey","_resetSequenceTimer","clearTimeout","setTimeout","_bindSequence","_increaseSequence","nextAction","_callbackAndReset","isFinal","wrappedCallback","_bindSingle","info","_bindMultiple","combinations","bind","unbind","trigger","reset","className","indexOf","composedPath","initialEventTarget","tagName","isContentEditable","apply","arguments","addKeycodes","init","documentMousetrap","method","charAt","module","exports","define","amd","_globalCallbacks","_originalStopCallback","paused","bindGlobal","unbindGlobal","_typeof","objectTypes","root","freeExports","freeModule","nodeType","freeGlobal","maxSafeInteger","pow","reOpera","objectProto","capitalize","string","toUpperCase","cleanupOS","os","pattern","label","data","exec","RegExp","format","each","index","forOwn","trim","getClassOf","isHostType","property","qualify","reduce","array","accumulator","parse","ua","context","isCustomContext","nav","userAgent","likeChrome","objectClass","airRuntimeClass","enviroClass","javaClass","java","phantomClass","rhino","environment","alpha","beta","doc","opera","operamini","operaClass","arch","description","prerelease","useFeatures","version","isSpecialCasedOS","layout","getLayout","getName","product","getProduct","manufacturer","getManufacturer","getOS","guesses","result","guess","getVersion","patterns","toStringPlatform","unshift","parseFloat","lang","System","getProperty","require","system","process","browser","versions","electron","node","nw","runtime","flash","Capabilities","phantom","major","minor","patch","documentMode","toFixed","appMinorVersion","external","parseInt","family","architecture","cpuClass","this","isMultipleHotkey","replaceKeys","hotkey","keyName","replaceWith","keyNamePattern","map","item","convertHotKeyToWindows","toPairs","forEach","_ref","_ref2","macKey","windowsKey","convertHotkeyToUsersPlatform","_platformInfo$os","platformInfo","isOSX","includes","bindHotKey","_ref3","handler","ref","targetDocument","mousetrapInstance","current","unBindHotKey","_ref4","useHotKeys","config","useRef","handlerRef","convertedHotkey","useMemo","memoizedConfig","mergeLeft","useEffect"],"mappings":"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"}