{"version":3,"sources":["webpack:///scripts/plugin--search-dropdown--44b72f616f6b84a4e003.js","webpack:///./client/src/site__fus078/components/search/search-dropdown/keystroke.js","webpack:///./client/src/site__fus078/components/search/search-dropdown/plugin.js"],"names":["webpackJsonp","/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/components/search/search-dropdown/keystroke.js","module","exports","__webpack_require__","keyForKeyCode","keyCode","object","keyLabel","Object","keys","forEach","key","isAlphabet","capAlpha","A","Z","lowAlpha","isEnter","whitespace","ENTER","isEscape","other","ESCAPE","isNavigation","navigation","KEY_PAGE_UP","DOWN_ARROW","isNumber","numbers","isWhitespace","SPACE","TAB","codeToString","String","fromCharCode","defineProperty","value","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","KEY_PAGE_DOWN","KEY_END","KEY_HOME","LEFT_ARROW","UP_ARROW","RIGHT_ARROW","0","1","2","3","4","5","6","7","8","9","DASH","SUBTRACT","/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/components/search/search-dropdown/plugin.js","_interopRequireDefault","obj","__esModule","default","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","protoProps","staticProps","prototype","_jquery","_jquery2","_debug","_debug2","_lib","_lib2","_keystroke","_index","log","PLUGIN_NAME","SearchDropdownPlugin","element","options","this","$element","typingDebounceMs","parseInt","escapeKeyCodes","split","ignoreKeyCodes","hasFocus","focsusedElement","searchCancelled","searchField","selectors","selectTarget","searchInputSelector","submitButton","searchSubmitSelector","cancelButton","searchCancelSelector","resultsContainer","resultsContainerSelector","templateSource","dropdownTemplateSelector","template","text","data","empty","window","strings","watch","$target","_this","debounceImmediate","typingDebounceEdge","on","fn","debounce","send","bind","input","val","setTimeout","cancel","document","event","hasTarget","has","open","close","_this2","query","_options","minQueryLength","errorClass","sendingClass","openClass","url","trigger","includes","attr","addClass","removeClass","ajax","q","success","status","request","render","error","complete","removeAttr","focusedElement","toElement","logger","context","reduce","result","Array","isArray","html","mustache","EmitOnDirty","hasErrorClass","reset","DEFAULTS","placement","placementTarget"],"mappings":"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","file":"scripts/plugin--search-dropdown--44b72f616f6b84a4e003.js","sourcesContent":["webpackJsonp([\"plugin--search-dropdown\"],{\n\n/***/ \"/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/components/search/search-dropdown/keystroke.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.keyForKeyCode = keyForKeyCode;\nexports.isAlphabet = isAlphabet;\nexports.isEnter = isEnter;\nexports.isEscape = isEscape;\nexports.isNavigation = isNavigation;\nexports.isNumber = isNumber;\nexports.isWhitespace = isWhitespace;\nexports.codeToString = codeToString;\nvar capAlpha = exports.capAlpha = {\n A: 65,\n B: 66,\n C: 67,\n D: 68,\n E: 69,\n F: 70,\n G: 71,\n H: 72,\n I: 73,\n J: 74,\n K: 75,\n L: 76,\n M: 77,\n N: 78,\n O: 79,\n P: 80,\n Q: 81,\n R: 82,\n S: 83,\n T: 84,\n U: 85,\n V: 86,\n W: 87,\n X: 88,\n Y: 89,\n Z: 90\n};\n\nvar lowAlpha = exports.lowAlpha = {\n A: 97,\n B: 98,\n C: 99,\n D: 100,\n E: 101,\n F: 102,\n G: 103,\n H: 104,\n I: 105,\n J: 106,\n K: 107,\n L: 108,\n M: 109,\n N: 110,\n O: 111,\n P: 112,\n Q: 113,\n R: 114,\n S: 115,\n T: 116,\n U: 117,\n V: 118,\n W: 119,\n X: 120,\n Y: 121,\n Z: 122\n};\n\nvar navigation = exports.navigation = {\n KEY_PAGE_UP: 33,\n KEY_PAGE_DOWN: 34,\n KEY_END: 35,\n KEY_HOME: 36,\n LEFT_ARROW: 37,\n UP_ARROW: 38,\n RIGHT_ARROW: 39,\n DOWN_ARROW: 40\n};\n\nvar numbers = exports.numbers = {\n 0: 48,\n 1: 49,\n 2: 50,\n 3: 51,\n 4: 52,\n 5: 53,\n 6: 54,\n 7: 55,\n 8: 56,\n 9: 57\n};\n\nvar other = exports.other = {\n DASH: 189,\n ESCAPE: 27,\n SUBTRACT: 109\n};\n\nvar whitespace = exports.whitespace = {\n TAB: 9,\n ENTER: 13,\n SPACE: 32\n};\n\nfunction keyForKeyCode(keyCode, object) {\n var keyLabel = null;\n\n Object.keys(object).forEach(function (key) {\n if (object[key] === keyCode) {\n keyLabel = key;\n }\n });\n\n return keyLabel;\n}\n\nfunction isAlphabet(keyCode) {\n return keyCode >= capAlpha.A && keyCode <= capAlpha.Z || keyCode >= lowAlpha.A && keyCode <= lowAlpha.Z;\n}\n\nfunction isEnter(keyCode) {\n return keyCode === whitespace.ENTER;\n}\n\nfunction isEscape(keyCode) {\n return keyCode === other.ESCAPE;\n}\n\nfunction isNavigation(keyCode) {\n return keyCode >= navigation.KEY_PAGE_UP && keyCode <= navigation.DOWN_ARROW;\n}\n\nfunction isNumber(keyCode) {\n return keyCode >= numbers[0] && keyCode <= numbers[9];\n}\n\nfunction isWhitespace(keyCode) {\n return keyCode === whitespace.SPACE || keyCode === whitespace.ENTER || keyCode === whitespace.TAB;\n}\n\nfunction codeToString(keyCode) {\n if (isAlphabet(keyCode) || isNumber(keyCode)) {\n return String.fromCharCode(keyCode);\n } else if (isNavigation(keyCode)) {\n return keyForKeyCode(keyCode, navigation);\n } else if (isWhitespace(keyCode)) {\n return keyForKeyCode(keyCode, whitespace);\n } else if (isEscape(keyCode)) {\n return 'ESCAPE';\n }\n\n return keyCode;\n}\n\n/***/ }),\n\n/***/ \"/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/components/search/search-dropdown/plugin.js\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _jquery = __webpack_require__(\"/opt/app/client/src/vendor/jquery@2.1.1.js\");\n\nvar _jquery2 = _interopRequireDefault(_jquery);\n\nvar _debug = __webpack_require__(\"/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/node_modules/debug/src/browser.js\");\n\nvar _debug2 = _interopRequireDefault(_debug);\n\nvar _lib = __webpack_require__(\"/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/plugins/lib/index.js\");\n\nvar _lib2 = _interopRequireDefault(_lib);\n\nvar _keystroke = __webpack_require__(\"/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/components/search/search-dropdown/keystroke.js\");\n\nvar _keystroke2 = _interopRequireDefault(_keystroke);\n\nvar _index = __webpack_require__(\"/opt/app/node_modules/babel-loader/lib/index.js??ref--5-0!/opt/app/node_modules/eslint-loader/index.js!/opt/app/client/src/site__fus078/components/search/search-dropdown/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar log = (0, _debug2.default)('components/' + _index.PLUGIN_NAME);\n\nvar SearchDropdownPlugin = function () {\n\tfunction SearchDropdownPlugin(element, options) {\n\t\t_classCallCheck(this, SearchDropdownPlugin);\n\n\t\tlog('construct', element, options);\n\n\t\tthis.options = options;\n\t\tthis.element = element;\n\t\tthis.$element = (0, _jquery2.default)(element);\n\n\t\tthis.options.typingDebounceMs = parseInt(this.options.typingDebounceMs);\n\n\t\tthis.options.escapeKeyCodes = this.options.escapeKeyCodes.split(' ');\n\t\tthis.options.ignoreKeyCodes = this.options.ignoreKeyCodes.split(' ');\n\n\t\tthis.hasFocus = false;\n\t\tthis.focsusedElement = null;\n\t\tthis.searchCancelled = false;\n\n\t\tthis.searchField = this.selectors.selectTarget(this.options.searchInputSelector, this.$element);\n\t\tthis.submitButton = this.selectors.selectTarget(this.options.searchSubmitSelector, this.$element);\n\t\tthis.cancelButton = this.selectors.selectTarget(this.options.searchCancelSelector, this.$element);\n\t\tthis.resultsContainer = this.selectors.selectTarget(this.options.resultsContainerSelector, this.$element);\n\n\t\tthis.templateSource = this.selectors.selectTarget(this.options.dropdownTemplateSelector, this.$element);\n\t\tthis.template = this.templateSource.text();\n\t\tthis.templateSource.data('original-content', this.template);\n\t\tthis.templateSource.empty();\n\n\t\twindow.strings = this.strings;\n\n\t\tthis.watch();\n\n\t\tlog('ready', this.$target);\n\t}\n\n\t_createClass(SearchDropdownPlugin, [{\n\t\tkey: 'watch',\n\t\tvalue: function watch() {\n\t\t\tvar _this = this;\n\n\t\t\tvar debounceImmediate = this.options.typingDebounceEdge === 'leading';\n\t\t\tthis.searchField.on('keyup', this.fn.debounce(this.send.bind(this), this.options.typingDebounceMs, debounceImmediate));\n\n\t\t\t// Respond to clear search button click (IE/Edge)\n\t\t\tthis.searchField.on('mouseup', function () {\n\t\t\t\tvar input = _this.searchField;\n\t\t\t\tvar oldValue = input.val();\n\t\t\t\tif (oldValue === '') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tsetTimeout(function () {\n\t\t\t\t\tvar newValue = input.val();\n\t\t\t\t\tif (newValue === '') {\n\t\t\t\t\t\t_this.cancel();\n\t\t\t\t\t}\n\t\t\t\t}, 0);\n\t\t\t});\n\n\t\t\t(0, _jquery2.default)(document).on('click', function (event) {\n\t\t\t\tvar hasTarget = _this.$element.has(event.target);\n\t\t\t\tif (hasTarget && hasTarget.length) {\n\t\t\t\t\t_this.open();\n\t\t\t\t} else {\n\t\t\t\t\t_this.close();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.cancelButton.on('click', function () {\n\t\t\t\tlog('cancelClick');\n\t\t\t\t_this.cancel();\n\t\t\t});\n\n\t\t\tlog('watching');\n\t\t}\n\t}, {\n\t\tkey: 'send',\n\t\tvalue: function send(event) {\n\t\t\tvar _this2 = this;\n\n\t\t\tthis.close();\n\t\t\tvar query = this.searchField.val();\n\t\t\tvar keyCode = event.keyCode;\n\t\t\tvar _options = this.options,\n\t\t\t ignoreKeyCodes = _options.ignoreKeyCodes,\n\t\t\t escapeKeyCodes = _options.escapeKeyCodes,\n\t\t\t minQueryLength = _options.minQueryLength,\n\t\t\t errorClass = _options.errorClass,\n\t\t\t sendingClass = _options.sendingClass,\n\t\t\t openClass = _options.openClass,\n\t\t\t url = _options.url;\n\n\n\t\t\tlog('send', query);\n\n\t\t\tif (query && query.length < minQueryLength) {\n\t\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.notMinLength');\n\n\t\t\t\tlog('minQueryLength', query.length);\n\t\t\t\treturn;\n\t\t\t} else if (ignoreKeyCodes.includes('' + keyCode)) {\n\t\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.keyIgnored', { keyCode: keyCode });\n\n\t\t\t\tlog('key[' + event.keyCode + '] ignored since it\\'s in options.ignoreKeyCodes[' + ignoreKeyCodes + ']');\n\t\t\t\treturn;\n\t\t\t} else if (escapeKeyCodes.includes('' + event.keyCode)) {\n\t\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.escape');\n\t\t\t\tlog('key[' + event.keyCode + '] triggered close since it\\'s in options.escapeKeyCodes[' + escapeKeyCodes + ']');\n\n\t\t\t\tthis.close();\n\t\t\t\treturn;\n\t\t\t} else if (query && query.length) {\n\t\t\t\tthis.submitButton.attr('disabled', true);\n\t\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.beforeSend');\n\t\t\t\tthis.$element.addClass(sendingClass);\n\t\t\t\tthis.$element.removeClass(errorClass);\n\n\t\t\t\t_jquery2.default.ajax({\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tq: query\n\t\t\t\t\t},\n\t\t\t\t\tsuccess: function success(data, status, request) {\n\t\t\t\t\t\tlog('success', data, status);\n\n\t\t\t\t\t\t_this2.$element.removeClass(errorClass);\n\t\t\t\t\t\t_this2.render(data);\n\t\t\t\t\t\t_this2.$element.addClass(openClass);\n\t\t\t\t\t\t_this2.$element.trigger(_index.PLUGIN_NAME + '.rendered');\n\t\t\t\t\t},\n\t\t\t\t\terror: function error(data, status, request) {\n\t\t\t\t\t\tlog('error', data, status);\n\n\t\t\t\t\t\t_this2.$element.removeClass(openClass);\n\t\t\t\t\t\t_this2.$element.addClass(errorClass);\n\t\t\t\t\t\t_this2.$element.trigger(_index.PLUGIN_NAME + '.error', {\n\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\tstatus: status,\n\t\t\t\t\t\t\trequest: request\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tcomplete: function complete() {\n\t\t\t\t\t\t_this2.$element.removeClass(sendingClass);\n\t\t\t\t\t\t_this2.submitButton.removeAttr('disabled');\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.cancel();\n\t\t\t}\n\n\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.afterSend');\n\t\t}\n\t}, {\n\t\tkey: 'onFocusChanged',\n\t\tvalue: function onFocusChanged(event) {\n\t\t\tlog('onFocusChanged', event);\n\t\t\tthis.focusedElement = event.toElement;\n\t\t\tvar hasFocus = this.$element.has(this.focusedElement);\n\t\t\tthis.hasFocus = hasFocus && hasFocus.length > 0;\n\n\t\t\tlogger.log('onFocusIn.hasFocus', this.hasFocus);\n\n\t\t\tif (!this.hasFocus) {\n\t\t\t\tthis.fn.debounce(this.close.bind(this), 50);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'render',\n\t\tvalue: function render(data) {\n\t\t\tlog('render', data, this.template);\n\t\t\tvar context = Object.keys(data).reduce(function (result, key) {\n\t\t\t\tvar value = data[key];\n\t\t\t\tresult[key] = value;\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tresult[key + 'IsEmpty'] = value.length === 0;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}, {});\n\t\t\tvar html = this.strings.mustache(this.template, context);\n\t\t\tlog('rendered', html);\n\t\t\tthis.resultsContainer.html(html);\n\t\t}\n\t}, {\n\t\tkey: 'reset',\n\t\tvalue: function reset(event) {\n\t\t\tlog('reset');\n\t\t\tthis.submitButton.removeAttr('disabled');\n\t\t\tthis.searchField.val('');\n\t\t\tthis.searchField.EmitOnDirty('clean');\n\t\t\tthis.resultsContainer.empty();\n\t\t}\n\n\t\t// Display suggestions\n\n\t}, {\n\t\tkey: 'open',\n\t\tvalue: function open() {\n\t\t\tlog('open');\n\t\t\tthis.$element.addClass(this.options.openClass);\n\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.open');\n\t\t}\n\t}, {\n\t\tkey: 'close',\n\t\tvalue: function close() {\n\t\t\tlog('close');\n\t\t\tthis.$element.removeClass(this.options.hasErrorClass);\n\t\t\tthis.$element.removeClass(this.options.sendingClass);\n\t\t\tthis.$element.removeClass(this.options.openClass);\n\t\t\tthis.$element.trigger(_index.PLUGIN_NAME + '.closed');\n\t\t}\n\t}, {\n\t\tkey: 'cancel',\n\t\tvalue: function cancel() {\n\t\t\tlog('cancel');\n\t\t\tthis.searchCancelled = true;\n\t\t\tthis.reset();\n\t\t\tthis.close();\n\t\t}\n\t}]);\n\n\treturn SearchDropdownPlugin;\n}();\n\nSearchDropdownPlugin.DEFAULTS = {\n\t/*\r\n http://keycode.info/\r\n 9 = tab\r\n 16 = shift\r\n 17 = ctrl\r\n 18 = alt\r\n 37 = left\r\n 38 = up\r\n 39 = right\r\n 40 = down\r\n 32 = space\r\n 91 = left super\r\n 92 = right super\r\n //https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Constants_for_keyCode_value\r\n */\n\tminQueryLength: 3,\n\tignoreKeyCodes: '9 16 17 18 33 34 35 36 37 38 39 40 44 91 92 93 224',\n\tescapeKeyCodes: '27',\n\tsearchInputSelector: '(here) [data-search-dropdown__input-field]',\n\tsearchCancelSelector: '(here) [data-search-dropdown__cancel-button]',\n\tsearchSubmitSelector: '(here) [data-search-dropdown__submit-button]',\n\tdropdownTemplateSelector: '(here) [data-search-dropdown__result-container]',\n\tresultsContainerSelector: '(here) [data-search-dropdown__result-container]',\n\ttypingDebounceMs: 500,\n\ttypingDebounceEdge: 'trailing',\n\topenClass: 'search-dropdown--is-open',\n\tsendingClass: 'search-dropdown--is-sending',\n\terrorClass: 'search-dropdown--error',\n\tplacement: 'bottom',\n\tplacementTarget: '(self)'\n};\n\n(0, _lib2.default)(_index.PLUGIN_NAME, SearchDropdownPlugin);\n\n/***/ })\n\n});\n\n\n// WEBPACK FOOTER //\n// scripts/plugin--search-dropdown--44b72f616f6b84a4e003.js","export const capAlpha = {\r\n A: 65,\r\n B: 66,\r\n C: 67,\r\n D: 68,\r\n E: 69,\r\n F: 70,\r\n G: 71,\r\n H: 72,\r\n I: 73,\r\n J: 74,\r\n K: 75,\r\n L: 76,\r\n M: 77,\r\n N: 78,\r\n O: 79,\r\n P: 80,\r\n Q: 81,\r\n R: 82,\r\n S: 83,\r\n T: 84,\r\n U: 85,\r\n V: 86,\r\n W: 87,\r\n X: 88,\r\n Y: 89,\r\n Z: 90\r\n};\r\n\r\nexport const lowAlpha = {\r\n A: 97,\r\n B: 98,\r\n C: 99,\r\n D: 100,\r\n E: 101,\r\n F: 102,\r\n G: 103,\r\n H: 104,\r\n I: 105,\r\n J: 106,\r\n K: 107,\r\n L: 108,\r\n M: 109,\r\n N: 110,\r\n O: 111,\r\n P: 112,\r\n Q: 113,\r\n R: 114,\r\n S: 115,\r\n T: 116,\r\n U: 117,\r\n V: 118,\r\n W: 119,\r\n X: 120,\r\n Y: 121,\r\n Z: 122\r\n};\r\n\r\nexport const navigation = {\r\n KEY_PAGE_UP: 33,\r\n KEY_PAGE_DOWN: 34,\r\n KEY_END: 35,\r\n KEY_HOME: 36,\r\n LEFT_ARROW: 37,\r\n UP_ARROW: 38,\r\n RIGHT_ARROW: 39,\r\n DOWN_ARROW: 40,\r\n};\r\n\r\nexport const numbers = {\r\n 0: 48,\r\n 1: 49,\r\n 2: 50,\r\n 3: 51,\r\n 4: 52,\r\n 5: 53,\r\n 6: 54,\r\n 7: 55,\r\n 8: 56,\r\n 9: 57\r\n};\r\n\r\nexport const other = {\r\n DASH: 189,\r\n ESCAPE: 27,\r\n SUBTRACT: 109\r\n};\r\n\r\nexport const whitespace = {\r\n TAB: 9,\r\n ENTER: 13,\r\n SPACE: 32\r\n};\r\n\r\nexport function keyForKeyCode(keyCode, object) {\r\n let keyLabel = null;\r\n\r\n Object.keys(object).forEach((key) => {\r\n if (object[key] === keyCode) {\r\n keyLabel = key;\r\n }\r\n });\r\n\r\n return keyLabel;\r\n}\r\n\r\nexport function isAlphabet(keyCode) {\r\n return (keyCode >= capAlpha.A && keyCode <= capAlpha.Z) ||\r\n (keyCode >= lowAlpha.A && keyCode <= lowAlpha.Z);\r\n}\r\n\r\nexport function isEnter(keyCode) {\r\n return keyCode === whitespace.ENTER;\r\n}\r\n\r\nexport function isEscape(keyCode) {\r\n return keyCode === other.ESCAPE;\r\n}\r\n\r\nexport function isNavigation(keyCode) {\r\n return keyCode >= navigation.KEY_PAGE_UP && keyCode <= navigation.DOWN_ARROW;\r\n}\r\n\r\nexport function isNumber(keyCode) {\r\n return keyCode >= numbers[0] && keyCode <= numbers[9];\r\n}\r\n\r\nexport function isWhitespace(keyCode) {\r\n return keyCode === whitespace.SPACE ||\r\n keyCode === whitespace.ENTER ||\r\n keyCode === whitespace.TAB;\r\n}\r\n\r\nexport function codeToString(keyCode) {\r\n if (isAlphabet(keyCode) || isNumber(keyCode)) {\r\n return String.fromCharCode(keyCode);\r\n } else if (isNavigation(keyCode)) {\r\n return keyForKeyCode(keyCode, navigation);\r\n } else if (isWhitespace(keyCode)) {\r\n return keyForKeyCode(keyCode, whitespace);\r\n } else if (isEscape(keyCode)) {\r\n return 'ESCAPE';\r\n }\r\n\r\n return keyCode;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/site__fus078/components/search/search-dropdown/keystroke.js","import $ from 'jquery';\r\nimport debug from 'debug';\r\nimport plugin from '@fus078/plugins/lib';\r\nimport keystroke from './keystroke';\r\nimport { ELEMENT_SELECTOR, PLUGIN_NAME } from './index';\r\n\r\nconst log = debug(`components/${PLUGIN_NAME}`);\r\n\r\nclass SearchDropdownPlugin {\r\n\tconstructor(element, options) {\r\n\t\tlog('construct', element, options);\r\n\r\n\t\tthis.options = options;\r\n\t\tthis.element = element;\r\n\t\tthis.$element = $(element);\r\n\r\n\t\tthis.options.typingDebounceMs = parseInt(this.options.typingDebounceMs);\r\n\r\n\t\tthis.options.escapeKeyCodes = this.options.escapeKeyCodes.split(' ');\r\n\t\tthis.options.ignoreKeyCodes = this.options.ignoreKeyCodes.split(' ');\r\n\r\n\t\tthis.hasFocus = false;\r\n\t\tthis.focsusedElement = null;\r\n\t\tthis.searchCancelled = false;\r\n\r\n\t\tthis.searchField = this.selectors.selectTarget(\r\n\t\t\tthis.options.searchInputSelector,\r\n\t\t\tthis.$element\r\n\t\t);\r\n\t\tthis.submitButton = this.selectors.selectTarget(\r\n\t\t\tthis.options.searchSubmitSelector,\r\n\t\t\tthis.$element\r\n\t\t);\r\n\t\tthis.cancelButton = this.selectors.selectTarget(\r\n\t\t\tthis.options.searchCancelSelector,\r\n\t\t\tthis.$element\r\n\t\t);\r\n\t\tthis.resultsContainer = this.selectors.selectTarget(\r\n\t\t\tthis.options.resultsContainerSelector,\r\n\t\t\tthis.$element\r\n\t\t);\r\n\r\n\t\tthis.templateSource = this.selectors.selectTarget(\r\n\t\t\tthis.options.dropdownTemplateSelector,\r\n\t\t\tthis.$element\r\n\t\t);\r\n\t\tthis.template = this.templateSource.text();\r\n\t\tthis.templateSource.data('original-content', this.template);\r\n\t\tthis.templateSource.empty();\r\n\r\n\t\twindow.strings = this.strings;\r\n\r\n\t\tthis.watch();\r\n\r\n\t\tlog('ready', this.$target);\r\n\t}\r\n\r\n\twatch() {\r\n\t\tconst debounceImmediate = this.options.typingDebounceEdge === 'leading';\r\n\t\tthis.searchField.on(\r\n\t\t\t'keyup',\r\n\t\t\tthis.fn.debounce(\r\n\t\t\t\tthis.send.bind(this),\r\n\t\t\t\tthis.options.typingDebounceMs,\r\n\t\t\t\tdebounceImmediate\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\t// Respond to clear search button click (IE/Edge)\r\n\t\tthis.searchField.on('mouseup', () => {\r\n\t\t\tconst input = this.searchField;\r\n\t\t\tconst oldValue = input.val();\r\n\t\t\tif (oldValue === '') {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tconst newValue = input.val();\r\n\t\t\t\tif (newValue === '') {\r\n\t\t\t\t\tthis.cancel();\r\n\t\t\t\t}\r\n\t\t\t}, 0);\r\n\r\n\t\t});\r\n\r\n\t\t$(document).on('click', event => {\r\n\t\t\tconst hasTarget = this.$element.has(event.target);\r\n\t\t\tif (hasTarget && hasTarget.length) {\r\n\t\t\t\tthis.open();\r\n\t\t\t} else {\r\n\t\t\t\tthis.close();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.cancelButton.on('click', () => {\r\n\t\t\tlog('cancelClick');\r\n\t\t\tthis.cancel();\r\n\t\t});\r\n\r\n\t\tlog('watching');\r\n\t}\r\n\r\n\tsend(event) {\r\n\t\tthis.close();\r\n\t\tconst query = this.searchField.val();\r\n\t\tconst { keyCode } = event;\r\n\t\tconst {\r\n\t\t\tignoreKeyCodes,\r\n\t\t\tescapeKeyCodes,\r\n\t\t\tminQueryLength,\r\n\t\t\terrorClass,\r\n\t\t\tsendingClass,\r\n\t\t\topenClass,\r\n\t\t\turl\r\n\t\t} = this.options;\r\n\r\n\t\tlog('send', query);\r\n\r\n\t\tif (query && query.length < minQueryLength) {\r\n\t\t\tthis.$element.trigger(`${PLUGIN_NAME}.notMinLength`);\r\n\r\n\t\t\tlog('minQueryLength', query.length);\r\n\t\t\treturn;\r\n\t\t} else if (ignoreKeyCodes.includes(''+keyCode)) {\r\n\t\t\tthis.$element.trigger(`${PLUGIN_NAME}.keyIgnored`, { keyCode });\r\n\r\n\t\t\tlog(\r\n\t\t\t\t`key[${\r\n\t\t\t\t\tevent.keyCode\r\n\t\t\t\t}] ignored since it's in options.ignoreKeyCodes[${ignoreKeyCodes}]`\r\n\t\t\t);\r\n\t\t\treturn;\r\n\t\t} else if (escapeKeyCodes.includes(''+event.keyCode)) {\r\n\t\t\tthis.$element.trigger(`${PLUGIN_NAME}.escape`);\r\n\t\t\tlog(\r\n\t\t\t\t`key[${\r\n\t\t\t\t\tevent.keyCode\r\n\t\t\t\t}] triggered close since it's in options.escapeKeyCodes[${escapeKeyCodes}]`\r\n\t\t\t);\r\n\r\n\t\t\tthis.close();\r\n\t\t\treturn;\r\n\t\t} else if (query && query.length) {\r\n\t\t\tthis.submitButton.attr('disabled', true);\r\n\t\t\tthis.$element.trigger(`${PLUGIN_NAME}.beforeSend`);\r\n\t\t\tthis.$element.addClass(sendingClass);\r\n\t\t\tthis.$element.removeClass(errorClass);\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\turl,\r\n\t\t\t\tdata: {\r\n\t\t\t\t\tq: query\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: (data, status, request) => {\r\n\t\t\t\t\tlog('success', data, status);\r\n\r\n\t\t\t\t\tthis.$element.removeClass(errorClass);\r\n\t\t\t\t\tthis.render(data);\r\n\t\t\t\t\tthis.$element.addClass(openClass);\r\n\t\t\t\t\tthis.$element.trigger(`${PLUGIN_NAME}.rendered`);\r\n\t\t\t\t},\r\n\t\t\t\terror: (data, status, request) => {\r\n\t\t\t\t\tlog('error', data, status);\r\n\r\n\t\t\t\t\tthis.$element.removeClass(openClass);\r\n\t\t\t\t\tthis.$element.addClass(errorClass);\r\n\t\t\t\t\tthis.$element.trigger(`${PLUGIN_NAME}.error`, {\r\n\t\t\t\t\t\tdata,\r\n\t\t\t\t\t\tstatus,\r\n\t\t\t\t\t\trequest\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tcomplete: () => {\r\n\t\t\t\t\tthis.$element.removeClass(sendingClass);\r\n\t\t\t\t\tthis.submitButton.removeAttr('disabled');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.cancel();\r\n\t\t}\r\n\r\n\t\tthis.$element.trigger(`${PLUGIN_NAME}.afterSend`);\r\n\t}\r\n\r\n\tonFocusChanged(event) {\r\n\t\tlog('onFocusChanged', event);\r\n\t\tthis.focusedElement = event.toElement;\r\n\t\tconst hasFocus = this.$element.has(this.focusedElement);\r\n\t\tthis.hasFocus = hasFocus && hasFocus.length > 0;\r\n\r\n\t\tlogger.log('onFocusIn.hasFocus', this.hasFocus);\r\n\r\n\t\tif (!this.hasFocus) {\r\n\t\t\tthis.fn.debounce(this.close.bind(this), 50);\r\n\t\t}\r\n\t}\r\n\r\n\trender(data) {\r\n\t\tlog('render', data, this.template);\r\n\t\tconst context = Object.keys(data).reduce((result, key) => {\r\n\t\t\tconst value = data[key];\r\n\t\t\tresult[key] = value;\r\n\t\t\tif (Array.isArray(value)) {\r\n\t\t\t\tresult[`${key}IsEmpty`] = value.length === 0;\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}, {});\r\n\t\tconst html = this.strings.mustache(this.template, context);\r\n\t\tlog('rendered', html);\r\n\t\tthis.resultsContainer.html(html);\r\n\t}\r\n\r\n\treset(event) {\r\n\t\tlog('reset');\r\n\t\tthis.submitButton.removeAttr('disabled');\r\n\t\tthis.searchField.val('');\r\n\t\tthis.searchField.EmitOnDirty('clean');\r\n\t\tthis.resultsContainer.empty();\r\n\t}\r\n\r\n\t// Display suggestions\r\n\topen() {\r\n\t\tlog('open');\r\n\t\tthis.$element.addClass(this.options.openClass);\r\n\t\tthis.$element.trigger(`${PLUGIN_NAME}.open`);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tlog('close');\r\n\t\tthis.$element.removeClass(this.options.hasErrorClass);\r\n\t\tthis.$element.removeClass(this.options.sendingClass);\r\n\t\tthis.$element.removeClass(this.options.openClass);\r\n\t\tthis.$element.trigger(`${PLUGIN_NAME}.closed`);\r\n\t}\r\n\r\n\tcancel() {\r\n\t\tlog('cancel');\r\n\t\tthis.searchCancelled = true;\r\n\t\tthis.reset();\r\n\t\tthis.close();\r\n\t}\r\n}\r\n\r\nSearchDropdownPlugin.DEFAULTS = {\r\n\t/*\r\n http://keycode.info/\r\n 9 = tab\r\n 16 = shift\r\n 17 = ctrl\r\n 18 = alt\r\n 37 = left\r\n 38 = up\r\n 39 = right\r\n 40 = down\r\n 32 = space\r\n 91 = left super\r\n 92 = right super\r\n //https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Constants_for_keyCode_value\r\n */\r\n\tminQueryLength: 3,\r\n\tignoreKeyCodes: '9 16 17 18 33 34 35 36 37 38 39 40 44 91 92 93 224',\r\n\tescapeKeyCodes: '27',\r\n\tsearchInputSelector: '(here) [data-search-dropdown__input-field]',\r\n\tsearchCancelSelector: '(here) [data-search-dropdown__cancel-button]',\r\n\tsearchSubmitSelector: '(here) [data-search-dropdown__submit-button]',\r\n\tdropdownTemplateSelector: '(here) [data-search-dropdown__result-container]',\r\n\tresultsContainerSelector: '(here) [data-search-dropdown__result-container]',\r\n\ttypingDebounceMs: 500,\r\n\ttypingDebounceEdge: 'trailing',\r\n\topenClass: 'search-dropdown--is-open',\r\n\tsendingClass: 'search-dropdown--is-sending',\r\n\terrorClass: 'search-dropdown--error',\r\n\tplacement: 'bottom',\r\n\tplacementTarget: '(self)'\r\n};\r\n\r\nplugin(PLUGIN_NAME, SearchDropdownPlugin);\r\n\n\n\n// WEBPACK FOOTER //\n// ./client/src/site__fus078/components/search/search-dropdown/plugin.js"],"sourceRoot":""}