{"version":3,"file":"201.bundle.js","mappings":";uGAAA,IAAIA,EAAkB,EAAQ,8CAG1BC,EAAc,OAelBC,EAAOC,QANP,SAAkBC,GAChB,OAAOA,EACHA,EAAOC,MAAM,EAAGL,EAAgBI,GAAU,GAAGE,QAAQL,EAAa,IAClEG,CACN,oDCfA,IAAIG,EAAe,KAiBnBL,EAAOC,QAPP,SAAyBC,GAGvB,IAFA,IAAII,EAAQJ,EAAOK,OAEZD,KAAWD,EAAaG,KAAKN,EAAOO,OAAOH,MAClD,OAAOA,CACT,kDChBA,IAAII,EAAW,EAAQ,sCACnBC,EAAM,EAAQ,iCACdC,EAAW,EAAQ,sCAMnBC,EAAYC,KAAKC,IACjBC,EAAYF,KAAKG,IAqLrBjB,EAAOC,QA7HP,SAAkBiB,EAAMC,EAAMC,GAC5B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARZ,EACT,MAAM,IAAIa,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOb,EACPc,EAAUb,EAKd,OAHAD,EAAWC,OAAWc,EACtBT,EAAiBM,EACjBT,EAASN,EAAKmB,MAAMF,EAASD,EAE/B,CAqBA,SAASI,EAAaL,GACpB,IAAIM,EAAoBN,EAAOP,EAM/B,YAAyBU,IAAjBV,GAA+Ba,GAAqBpB,GACzDoB,EAAoB,GAAOV,GANJI,EAAON,GAM8BJ,CACjE,CAEA,SAASiB,IACP,IAAIP,EAAOtB,IACX,GAAI2B,EAAaL,GACf,OAAOQ,EAAaR,GAGtBR,EAAUiB,WAAWF,EA3BvB,SAAuBP,GACrB,IAEIU,EAAcxB,GAFMc,EAAOP,GAI/B,OAAOG,EACHb,EAAU2B,EAAapB,GAJDU,EAAON,IAK7BgB,CACN,CAmBqCC,CAAcX,GACnD,CAEA,SAASQ,EAAaR,GAKpB,OAJAR,OAAUW,EAINN,GAAYT,EACPW,EAAWC,IAEpBZ,EAAWC,OAAWc,EACfZ,EACT,CAcA,SAASqB,IACP,IAAIZ,EAAOtB,IACPmC,EAAaR,EAAaL,GAM9B,GAJAZ,EAAW0B,UACXzB,EAAW0B,KACXtB,EAAeO,EAEXa,EAAY,CACd,QAAgBV,IAAZX,EACF,OAzEN,SAAqBQ,GAMnB,OAJAN,EAAiBM,EAEjBR,EAAUiB,WAAWF,EAAcrB,GAE5BS,EAAUI,EAAWC,GAAQT,CACtC,CAkEayB,CAAYvB,GAErB,GAAIG,EAIF,OAFAqB,aAAazB,GACbA,EAAUiB,WAAWF,EAAcrB,GAC5Ba,EAAWN,EAEtB,CAIA,YAHgBU,IAAZX,IACFA,EAAUiB,WAAWF,EAAcrB,IAE9BK,CACT,CAGA,OA3GAL,EAAOP,EAASO,IAAS,EACrBT,EAASU,KACXQ,IAAYR,EAAQQ,QAEpBL,GADAM,EAAS,YAAaT,GACHP,EAAUD,EAASQ,EAAQG,UAAY,EAAGJ,GAAQI,EACrEO,EAAW,aAAcV,IAAYA,EAAQU,SAAWA,GAoG1De,EAAUM,OApCV,gBACkBf,IAAZX,GACFyB,aAAazB,GAEfE,EAAiB,EACjBN,EAAWK,EAAeJ,EAAWG,OAAUW,CACjD,EA+BAS,EAAUO,MA7BV,WACE,YAAmBhB,IAAZX,EAAwBD,EAASiB,EAAa9B,IACvD,EA4BOkC,CACT,6CC5LA,IAAIQ,EAAO,EAAQ,mCAsBnBrD,EAAOC,QAJG,WACR,OAAOoD,EAAKC,KAAK3C,KACnB,kDCpBA,IAAI4C,EAAW,EAAQ,uCACnB7C,EAAW,EAAQ,sCACnB8C,EAAW,EAAQ,sCAMnBC,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA8CnB7D,EAAOC,QArBP,SAAkB6D,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIN,EAASM,GACX,OA1CM,IA4CR,GAAIpD,EAASoD,GAAQ,CACnB,IAAIC,EAAgC,mBAAjBD,EAAME,QAAwBF,EAAME,UAAYF,EACnEA,EAAQpD,EAASqD,GAAUA,EAAQ,GAAMA,CAC3C,CACA,GAAoB,iBAATD,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQP,EAASO,GACjB,IAAIG,EAAWP,EAAWlD,KAAKsD,GAC/B,OAAQG,GAAYN,EAAUnD,KAAKsD,GAC/BF,EAAaE,EAAM3D,MAAM,GAAI8D,EAAW,EAAI,GAC3CR,EAAWjD,KAAKsD,GAvDb,KAuD6BA,CACvC,u2DCubA,QA/cA,WAEE,OAAkCI,EAAAA,EAAAA,UAAS,IAA3C,eAAOC,EAAP,KAAkBC,EAAlB,KACA,GAAsCF,EAAAA,EAAAA,UAAS,IAA/C,eAAOG,EAAP,KAAoBC,EAApB,KACA,GAAoCJ,EAAAA,EAAAA,WAAS,GAA7C,eAAOK,EAAP,KAAmBC,EAAnB,KACA,GAAsCN,EAAAA,EAAAA,UAAS,GAA/C,eAAOO,EAAP,KAAoBC,EAApB,KACA,GAA4CR,EAAAA,EAAAA,WAAS,GAArD,eAAOS,EAAP,KAAuBC,EAAvB,KACA,GACEV,EAAAA,EAAAA,WAAS,GADX,eAAOW,EAAP,KAAiCC,EAAjC,KAEA,GAAwDZ,EAAAA,EAAAA,WAAS,GAAjE,eAAOa,EAAP,KAA6BC,EAA7B,KACA,GAA8Dd,EAAAA,EAAAA,UAAS,IAAvE,eAAOe,EAAP,KAAgCC,EAAhC,KACA,IAAgDhB,EAAAA,EAAAA,UAAS,CAAC,GAA1D,iBAAOiB,GAAP,MAAyBC,GAAzB,MAGQC,IAAeC,EAAAA,EAAAA,KAAfD,WACR,IAAsCE,EAAAA,EAAAA,KAA9BC,GAAR,GAAQA,cAAeC,GAAvB,GAAuBA,WACfC,IAA4BC,EAAAA,EAAAA,KAA5BD,wBAM8BE,IAHvBC,EAAAA,EAAAA,MAEbC,UACEC,QAAWC,sBAKTC,GAAe,CACnBC,kBAAmBb,GAAW,yBAC9Bc,iBAAkBd,GAAW,mCAC7Be,wBAAyBf,GAAW,oCACpCgB,aAAchB,GAAW,+BACzBiB,kBAAmBjB,GAAW,sCAI5BkB,IAAkB,EAChBC,GAAe,CAAEC,iBAAkB,IAEnCC,IAAiCC,EAAAA,EAAAA,UACrC,kBAAMC,EAAAA,EAAAA,IAAqBhB,GAAwB,CAAEiB,WAAY,GAAjE,GACA,CAACjB,KAMGkB,GAAwB,mCAAG,WAAOC,GAAP,2FACRC,EAAAA,EAAAA,KAAA,mCAA+C,CACpEC,MAAOC,IAAKC,EAAAA,EAAY,QAAS,IACjCJ,aAAAA,IAH6B,uBACvBK,EADuB,EACvBA,KAIFC,GAAeT,EAAAA,EAAAA,IAAqB,CAAEQ,KAAAA,IALb,kBAMxBC,GANwB,2CAAH,sDAUxBC,GAAiB,mCAAG,WAAOC,GAAP,4EAClBC,EAA0B,CAC9B,CACEC,GAAI,0BACJC,MAAOzB,GAAaG,4BAIpBmB,KAASpC,IARW,uBAStBqC,EAAwB,GAAGnD,YACzBc,GAAiBoC,GAAO,GAAGlD,YAC7BW,GAAwB,GAXF,kBAYfV,EAAekD,IAZA,uBAcCV,GAAyBS,GAd1B,cAclBI,EAdkB,OAgBlBC,MAAMC,QAAQF,IAAeA,EAAWpH,SAC5C2E,EAA2Be,GAAaK,mBACxCd,GAAc,CACZsC,KAAMC,EAAAA,GAAAA,wBACNC,KAAMC,EAAAA,GAAAA,MACNC,KAAM,2CACNC,KAAMZ,KAIVC,EAAwB,GAAGnD,YAAcsD,EACzCxC,GAAiBoC,GAASC,EAC1BpC,GAAoB,EAAD,GAAMD,KACzBH,GAAwB,GACxBV,EAAekD,GA9BS,kBA+BjBhC,GAAc,CACnBsC,KAAMC,EAAAA,GAAAA,wBACNC,KAAMC,EAAAA,GAAAA,QACNC,KAAM,4DAAF,OAA8DP,EAAWpH,QAC7E4H,KAAMZ,KAnCgB,4CAAH,sDA6CjBa,GAAsB,WAC1BtD,GAA4B,EAC7B,EAWKuD,GAA8B,WAClC,OARA7B,GAAaC,iBAAmBtC,KACLA,EAAYA,EAAUmE,OAAS,IAChC/H,QAAUgI,EAAAA,KAQlCX,MAAMC,QAAQnB,KACdA,GAA+BnG,OAAS,CAE3C,EAoEKiI,GAAuB,SAACC,GAC5B,OAAOC,EAAAA,EAAAA,IAAkBD,EAC1B,EAQKE,GAAa,SAACC,GAClBA,EAAEC,iBAEAL,GAAqBrE,GAAW5D,OAASgI,EAAAA,KAM3C9C,GAAW,CACTqC,KAAMC,EAAAA,GAAAA,WACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,mCACNC,KAAMhE,IAlBR2E,OAAOC,SAAP,UAAqBrD,GAAwB,uBAAD,OACnB8C,GAAqBrE,MAsB/C,EAqBK6E,GAAc,WAClBvD,GAAW,CACTqC,KAAMC,EAAAA,GAAAA,WACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,sCAER9D,EAAa,IACbQ,GAAkB,GAClBN,EAAe,IACfE,GAAc,GACdU,EAA2B,GAC5B,EAqEK+D,GAAuB,SAACC,EAAOC,GACnCD,EAAML,iBACNK,EAAME,kBAGN7C,IAAkB,EAClB,IAAM8C,GAAiBC,EAAAA,EAAAA,IAAmBH,EAAWrF,OAC/CyF,EAAYrC,IAAKiC,EAAY,UAAY,GACzCK,EAAOtC,IAAKiC,EAAY,QACxBM,EAAsB5E,EACxBR,EAAY9D,OACZ8D,EAAY,GAAGA,YAAY9D,OAmB/B,OAhBEkF,GADEZ,EACS,CACTiD,KAAMC,EAAAA,GAAAA,4BACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,0CAAF,OAA4CqB,GAChDG,YAAaH,GAGJ,CACTzB,KAAMC,EAAAA,GAAAA,wBACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,2CAAF,OAA6CqB,EAA7C,iBAA+DC,EAA/D,+BAA0FC,GAC9FC,YAAaH,EACbpB,KAAMhE,IAIF2E,OAAOC,SAAP,UAAqBrD,GAAwB,mBAAD,OAC/B2D,EAD+B,YACbE,IAExC,EAkCKI,IACJ,aACEC,KAAI,UAAKlE,GAAwB,uBAAD,OACP8C,GAAqBrE,MAE9C0F,QAAS,WAEPpE,GAAW,CACTqC,KAAMC,EAAAA,GAAAA,wBACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,4CACNC,KAAMhE,GAET,EACD2F,KAAK,MAEJ7D,GAAaE,kBAUlB,OALA4D,EAAAA,EAAAA,YAAU,WAERvE,GAAc,CAAEsC,KAAMC,EAAAA,GAAAA,WAA2BC,KAAMC,EAAAA,GAAAA,SACxD,GAAE,CAACzC,MAGF,eAAK,cAAY,gBAAgBwE,UAAU,6BACzC,gBAAMC,KAAK,SAASC,SAAU,SAACtB,GAAD,OAAOD,GAAWC,EAAlB,IAC5B,oBACE,aACEuB,SApSO,SAACjB,GAChB,IAAQpF,EAAUoF,EAAMkB,OAAhBtG,MAEJuG,IAASvG,EAAMwE,SAAWnE,EAAU5D,QAAU,IAI/B,WAAf2I,EAAMlB,OACR5D,EAAaN,GACbY,EAAeZ,EAAMvD,SAGnBuD,GAASA,EAAMvD,QAAUgI,EAAAA,IAC3B3D,GAAkB,GAClBY,GAAc,CACZsC,KAAMC,EAAAA,GAAAA,WACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,0BACNC,KAAMhE,IAERG,EAAe,KAEfM,GAAkB,GAEhBd,GAASA,EAAMvD,OAAS,GAC1B6H,KAEH,EA0QSkC,OAvQK,WACY,IAArBnG,EAAU5D,QACZiE,GAAc,GAEZ6D,MACFD,IAEH,EAiQSmC,QA/JM,SAACrB,GACG,UAAdA,EAAMsB,MACRtB,EAAMkB,OAAOK,OACb9B,GAAWO,GAEd,EA2JSwB,QAAS,SAACxB,GAAD,OA/PH,SAACA,GACfA,EAAML,iBACNK,EAAME,kBACN5E,GAAc,GAGdiB,GAAW,CACTqC,KAAMC,EAAAA,GAAAA,WACNC,KAAMC,EAAAA,GAAAA,SACNC,KAAM,uBAIJG,OA/EJvD,GAA4B,GAmF1BU,GAAc,CACZsC,KAAMC,EAAAA,GAAAA,4BACNC,KAAMC,EAAAA,GAAAA,QACNC,KAAM,iDAGX,CAwO6BwC,CAAQxB,EAAnB,EACTyB,iBAvI0B,SAACC,GAEnC,GAAIrE,GACFA,IAAkB,MADpB,CAIA,IAAMsE,EAAiBD,EAAStC,OAE9B+B,IAASQ,IACTA,EAAetK,QAAUgI,EAAAA,KAMzBsC,GACAA,EAAetK,QAAUgI,EAAAA,GAEzBjE,EAAe,KAIjBU,GAAwB,GACxBE,EAA2B,IAC3BoC,GAAkBuD,GAEdlG,GACFO,EAA2B,KAtB5B,CAyBF,EA0GS4F,aAAa,KACbC,gBAnEN,cACEf,UAAU,2CACV,cAAY,6CACZzC,MAAOpD,EACP6G,SAAU/B,GACV5E,YAAaA,EACb4G,aAAW,IA8DPxD,GAAG,cACHK,KAAK,cACLoD,MAAOjF,GAAaC,kBACpBiF,gBAAiB,IACjBC,UAAW7C,EAAAA,GACXzE,MAAOK,EACPkH,MAAO1G,EACP2G,2BAA4BrG,EAC5BsG,iCAAiC,uCACjC5B,sBACG9E,GAA4B8E,GAE/B6B,8BAA8B,sCAC9BC,UAAW9G,EAAiBsB,GAAaI,aAAe,GACxDqF,UACE,eACE5B,KAAK,KACLE,UAAU,wBACV,cAAY,uBACZ,aAAW,WAGf2B,WACE,mBAjONxH,EAAU5D,OAAS,GAEnB,cACEuH,KAAK,0BACL,cAAY,0BACZkC,UAAW4B,IAAW,mCAAoC,CACxD,yCAA0CjH,KAJ9C,UAOMF,EAPN,YAOqB8D,EAAAA,KAIlB,GAkCFpE,EAAUmE,QAEb,eACE0B,UAAU,oCACV,cAAY,mCACZ6B,SAAS,IACT5B,KAAK,SACL,aAAW,eACX6B,WAAY,SAAC5C,GAAD,OAxBU,SAACA,GACT,UAAdA,EAAMsB,KACRxB,IAEH,CAoB4B+C,CAAoB7C,EAA/B,EACZW,QAAS,kBAAMb,IAAN,IAET,eAAac,KAAK,QAXQ,MAuLtB,cAAY,8BACZkC,eAAe,EACfjH,qBAAsBA,IArF1BR,GAAmC,IAArBJ,EAAU5D,QAAgB8H,MAExC,eACE2B,UAAU,6CACV,cAAY,8CAEZ,cACE3F,YAAaqC,GACbsE,SAAU/B,MAKX,OAgFV","sources":["webpack:///../node_modules/lodash/_baseTrim.js","webpack:///../node_modules/lodash/_trimmedEndIndex.js","webpack:///../node_modules/lodash/debounce.js","webpack:///../node_modules/lodash/now.js","webpack:///../node_modules/lodash/toNumber.js","webpack:///./components/search-bar/index.js"],"sourcesContent":["var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","/* eslint-disable max-statements */\nimport axios from 'axios'\nimport {\n BodyText,\n SearchIcon,\n CloseSmIcon,\n AutoSuggest,\n SuggestionList,\n Link,\n} from '@paypalcorp/pp-react'\nimport React, { useEffect, useState, useMemo } from 'react'\nimport classNames from 'classnames'\nimport { componentNames, fptiTypes } from '../../utils/analytics/fpti-constants'\nimport * as constants from '../../constants/index'\nimport _debouce from 'lodash/debounce'\nimport _isEmpty from 'lodash/isEmpty'\nimport _get from 'lodash/get'\n\n// Hooks\nimport { useMessage } from '../../hooks/useMessage'\nimport useTracking from '../../hooks/useTracking'\nimport { useAppContext } from '../../contexts/app-context'\nimport { useHelper } from '../../hooks/useHelper'\n\n// Utils\nimport {\n filterSearchResponse,\n getFaqUrlFromTitle,\n getSanitizedValue,\n} from '../../utils/helper'\nimport serverData from '../../utils/server-data'\n\n// styles\nimport './search-bar.less'\n\n// let suggestionsCache = {}\n\nfunction SearchBar() {\n // Initial State\n const [inputText, setInputText] = useState('')\n const [suggestions, setSuggestions] = useState([])\n const [inputFocus, setInputFocus] = useState(false)\n const [currentChar, setCurrentChar] = useState(0)\n const [isMaxCharError, setIsMaxCharError] = useState(false)\n const [isDisplayPopularArticles, setIsDisplayPopularArticles] =\n useState(false)\n const [isLoadingSuggestions, setisLoadingSuggestions] = useState(false)\n const [autoSuggestionsErrorMsg, setAutoSuggestionsErrorMsg] = useState('')\n const [suggestionsCache, setSuggestionsCache] = useState({})\n\n // Consume hooks\n const { getMessage } = useMessage()\n const { trackActivity, trackClick } = useTracking()\n const { generateLinkWithCoBrand } = useHelper()\n\n // App Context\n const appCtx = useAppContext()\n const {\n pageProps: {\n apiData: { searchPopularArticles: defaultPopularArticles },\n },\n } = appCtx\n\n // i18n Message constants\n const i18nMessages = {\n searchPlaceHolder: getMessage('app.helpcenter.search'),\n viewSearchResult: getMessage('app.helpcenter.viewSearchResult'),\n autoSuggestionTopHeader: getMessage('app.helpcenter.helpCenterResults'),\n maxCharError: getMessage('app.helpcenter.maxCharError'),\n noSuggestionError: getMessage('app.helpcenter.noSuggestionsFound'),\n }\n\n // Variables\n let suggestSelected = false\n const searchResult = { searchResultText: '' }\n\n const filteredDefaultPopularArticles = useMemo(\n () => filterSearchResponse(defaultPopularArticles, { maxResults: 5 }),\n [defaultPopularArticles],\n )\n\n // Methods\n\n // Fetch autocomplete results from search API\n const fetchAutocompleteResults = async (searchString) => {\n const { data } = await axios.post(`/cshelp/api/search-auto-complete`, {\n _csrf: _get(serverData, '_csrf', ''),\n searchString,\n })\n const filteredData = filterSearchResponse({ data })\n return filteredData\n }\n\n // update the auto complete results, condition to check the same query from cache\n const updateSuggestions = async (query) => {\n const formattedSuggestionsArr = [\n {\n id: 'helpCenterSearchResults',\n title: i18nMessages.autoSuggestionTopHeader,\n },\n ]\n // Check if suggestions exists in cache from the previous search queries\n if (query in suggestionsCache) {\n formattedSuggestionsArr[0].suggestions =\n suggestionsCache[query][0].suggestions\n setisLoadingSuggestions(false)\n return setSuggestions(formattedSuggestionsArr)\n }\n const newResults = await fetchAutocompleteResults(query)\n\n if (!(Array.isArray(newResults) && newResults.length)) {\n setAutoSuggestionsErrorMsg(i18nMessages.noSuggestionError)\n trackActivity({\n name: componentNames.SEARCH_AUTO_SUGGESTIONS,\n type: fptiTypes.ERROR,\n link: 'search-autocomplete-no-suggestions-found',\n srch: query,\n })\n }\n\n formattedSuggestionsArr[0].suggestions = newResults\n suggestionsCache[query] = formattedSuggestionsArr\n setSuggestionsCache({ ...suggestionsCache })\n setisLoadingSuggestions(false)\n setSuggestions(formattedSuggestionsArr)\n return trackActivity({\n name: componentNames.SEARCH_AUTO_SUGGESTIONS,\n type: fptiTypes.SUCCESS,\n link: `search-autocomplete-suggestions-shown|suggestions-length-${newResults.length}`,\n srch: query,\n })\n }\n\n // show the popular articles when user focus on the search input box\n const showPopularArticles = () => {\n setIsDisplayPopularArticles(true)\n }\n\n // hide the popular articles when user clears the search keyword in the input box\n const hidePopularArticles = () => {\n setIsDisplayPopularArticles(false)\n }\n\n // Method to check the minimum search characters\n const hasMinimimSearchCharacters = () => {\n searchResult.searchResultText = inputText\n const sanitizedInputText = inputText ? inputText.trim() : ''\n return sanitizedInputText.length >= constants.MIN_LENGTH_SEARCH_CHAR\n }\n\n // condition checking to enable the popular articles\n // const isDisplayDefaultPopularArticles = () => {\n const isTopPopularArticlesPresent = () => {\n return (\n !hasMinimimSearchCharacters() &&\n Array.isArray(filteredDefaultPopularArticles) &&\n filteredDefaultPopularArticles.length > 0\n )\n }\n\n // on change event handler\n const onChange = (event) => {\n const { value } = event.target\n // To handle empty spaces with out any string on the searchbar\n if (_isEmpty(value.trim()) && inputText.length <= 0) {\n return\n }\n\n if (event.type === 'change') {\n setInputText(value)\n setCurrentChar(value.length)\n }\n\n if (value && value.length >= constants.MAX_LENGTH_SEARCH_CHAR) {\n setIsMaxCharError(true)\n trackActivity({\n name: componentNames.SEARCH_BAR,\n type: fptiTypes.ON_CLICK,\n link: 'search-char-limit-error',\n srch: inputText,\n })\n setSuggestions([])\n } else {\n setIsMaxCharError(false)\n }\n if (value && value.length > 0) {\n hidePopularArticles()\n }\n }\n\n // on Blur event handler\n const onBlur = () => {\n if (inputText.length === 0) {\n setInputFocus(false)\n }\n if (isTopPopularArticlesPresent()) {\n hidePopularArticles()\n }\n }\n\n // on Focus event handler\n const onFocus = (event) => {\n event.preventDefault()\n event.stopPropagation()\n setInputFocus(true)\n\n // FPTI: click on the search box\n trackClick({\n name: componentNames.SEARCH_BAR,\n type: fptiTypes.ON_CLICK,\n link: 'search-bar-focused',\n })\n\n // Default popular articles handler\n if (isTopPopularArticlesPresent()) {\n showPopularArticles()\n\n // FPTI: quicklinks for common questions shown activity\n trackActivity({\n name: componentNames.SEARCH_TOP_POPULAR_ARTICLES,\n type: fptiTypes.SUCCESS,\n link: 'search-bar-popular-articles-quicklinks-shown',\n })\n }\n }\n\n const returnSanitizedValue = (val) => {\n return getSanitizedValue(val)\n }\n\n const goToSearchResultsPage = () => {\n window.location = `${generateLinkWithCoBrand(\n `/smarthelp/search?q=${returnSanitizedValue(inputText)}`,\n )}`\n }\n\n const submitForm = (e) => {\n e.preventDefault()\n if (\n returnSanitizedValue(inputText).length < constants.MIN_LENGTH_SEARCH_CHAR\n ) {\n return\n }\n\n // Empty search text will not fire FPTI request\n trackClick({\n name: componentNames.SEARCH_BAR,\n type: fptiTypes.ON_CLICK,\n link: 'search-input-entered-full-search',\n srch: inputText,\n })\n\n // go to the full search help page\n goToSearchResultsPage()\n }\n\n // render the character count place holder\n const renderCharCount = () => {\n if (inputText.length > 0) {\n return (\n