{"version":3,"sources":["webpack:///./scripts/Components/QuickSearch/styles|lazy|/^\\.\\/.*\\.scss$/|groupOptions: {}|namespace object","webpack:///./scripts/Actions/QuickSearch.action.js","webpack:///../node_modules/@react-hook/previous/dist/module/index.js","webpack:///./scripts/Components/QuickSearch/QuickSearchLinks.js","webpack:///./scripts/Components/QuickSearch/BrandsResults.js","webpack:///./scripts/Components/QuickSearch/CategoryResults.js","webpack:///./scripts/Components/QuickSearch/NoResults.js","webpack:///./scripts/Components/QuickSearch/PagesResult.js","webpack:///./scripts/Components/QuickSearch/ProductResults.js","webpack:///./scripts/Components/QuickSearch/QuickSearchResult.js","webpack:///./scripts/Components/QuickSearch/QuickSearch.js","webpack:///./styles/exports/wtg.module.scss","webpack:///./scripts/Hooks/useIsMobile.js","webpack:///./scripts/Hooks/useWindowSize.js","webpack:///../node_modules/clsx/dist/clsx.mjs","webpack:///../node_modules/lodash.debounce/index.js"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","keys","Object","module","exports","abortController","query","q","dispatch","getState","abort","AbortController","post","response","json","result","receive","catch","ex","catchError","error","searchError","setSearchQuery","type","QUICK_SEARCH_QUERY","payload","QUICK_SEARCH_ERROR","QUICK_SEARCH_RECEIVE","showResult","length","toggleShowFullForm","show","quickSearch","showFullForm","visible","QUICK_SEARCH_SHOW_FULL_FORM","hideResults","document","body","classList","remove","hideResult","showResults","add","handleKeyDown","event","opt","selectedItem","max","clip","index","keyCode","selectItem","trackSearch","selectedObject","url","location","href","searchUrl","searchString","undefined","window","fbq","search_string","QUICK_SEARCH_SELECT_ITEM","value","initialValue","storedValue","current","QuickSearchLinks","links","React","linkgroup","i","key","className","link","Fragment","name","BrandsResults","filteredBrands","slice","item","CategoryResults","filteredCategory","NoResults","dataMenus","hasSearched","translate","PagesResult","filteredPages","ProductResults","filteredProducts","useIsMobile","ProductCard","_extends","productItemViewModel","fieldId","uniqueId","QuickSearchResult","filteredResults","Products","filter","category","Brands","Category","Pages","activeTab","setActiveTab","useState","visibleActiveTab","GetActiveTab","currentTab","availableTabs","tab","hasOwnProperty","onClick","global","ThemeName","debouncedQuery","debounce","text","QuickSearch","useSelector","state","lastClickedNode","setLastClickedNode","LitiumQuickSearchUrl","searchStartLinks","LitiumQuickSearchLinks","searchContainer","useRef","searchInput","useDispatch","previousSelectedItem","usePrevious","clickHandler","useCallback","target","contains","useEffect","addEventListener","removeEventListener","urlParams","URLSearchParams","search","has","get","el","querySelector","scrollIntoView","behavior","block","inline","closeIconOnClick","searchIconOnClick","setTimeout","focus","role","ref","rel","title","Icon","iconCode","placeholder","autoComplete","decodeURIComponent","onChange","encodeURIComponent","onKeyDown","onBlur","breakpoint","parseInt","breakpoints","replace","windowWidth","initialWidth","innerWidth","initialHeight","innerHeight","size","setSize","useLayoutEffect","updateSize","useWindowSize","isMobile","setIsMobile","r","t","f","n","Array","isArray","arguments","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","g","freeSelf","self","root","Function","objectToString","prototype","toString","nativeMax","Math","nativeMin","min","now","Date","isObject","toNumber","isObjectLike","call","isSymbol","other","valueOf","isBinary","test","func","wait","options","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","debounced","isInvoking","this","leadingEdge","cancel","clearTimeout","flush"],"mappings":"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","file":"7145.dac20a0c9e6214694371.js","sourcesContent":["var map = {\n\t\"./alf.scss\": [\n\t\t78351,\n\t\t8351\n\t],\n\t\"./main.scss\": [\n\t\t17377,\n\t\t7377\n\t],\n\t\"./oh-poppy.scss\": [\n\t\t3123,\n\t\t3123\n\t],\n\t\"./vincent.scss\": [\n\t\t42119,\n\t\t2119\n\t],\n\t\"./wtg.scss\": [\n\t\t35026,\n\t\t5026\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 63292;\nmodule.exports = webpackAsyncContext;","import { post } from '../Services/http';\nimport {\n QUICK_SEARCH_ERROR,\n QUICK_SEARCH_QUERY,\n QUICK_SEARCH_RECEIVE,\n QUICK_SEARCH_SELECT_ITEM,\n QUICK_SEARCH_SHOW_FULL_FORM,\n} from '../constants';\nimport { catchError } from './Error.action';\n\nlet abortController;\n\nexport const query = (q) => (dispatch, getState) => {\n // abort any existing, pending request.\n // It's ok to call .abort() after the fetch has already completed, fetch simply ignores it.\n abortController && abortController.abort();\n abortController = new AbortController();\n return post('/api/quickSearch', q, abortController)\n .then((response) => response.json())\n .then((result) => dispatch(receive(result)))\n .catch((ex) => dispatch(catchError(ex, (error) => searchError(error))));\n};\n\nexport const setSearchQuery = (query) => ({\n type: QUICK_SEARCH_QUERY,\n payload: {\n query,\n },\n});\n\nexport const searchError = (error) => ({\n type: QUICK_SEARCH_ERROR,\n payload: {\n error,\n },\n});\n\nexport const receive = (result) => ({\n type: QUICK_SEARCH_RECEIVE,\n payload: {\n result,\n showResult: result && result.length > 0,\n },\n});\n\nexport const toggleShowFullForm = () => (dispatch, getState) => {\n dispatch(show(!getState().quickSearch.showFullForm));\n};\n\nconst show = (visible) => ({\n type: QUICK_SEARCH_SHOW_FULL_FORM,\n payload: {\n showFullForm: visible,\n },\n});\n\nexport const hideResults = () => (dispatch, getState) => {\n document.body.classList.remove('overlay');\n dispatch(hideResult());\n};\n\nconst hideResult = () => ({\n type: QUICK_SEARCH_SHOW_FULL_FORM,\n payload: {\n showResult: false,\n query: '',\n result: [],\n },\n});\n\nexport const showResults = () => (dispatch, getState) => {\n document.body.classList.add('overlay');\n dispatch(showResult());\n};\n\nconst showResult = () => ({\n type: QUICK_SEARCH_SHOW_FULL_FORM,\n payload: {\n showResult: true,\n },\n});\n\nexport const handleKeyDown = (event, opt) => (dispatch, getState) => {\n const { result, selectedItem } = getState().quickSearch;\n\n if (!result || !result.length) {\n return;\n }\n const max = result.length - 1,\n clip = (index) => (index < 0 ? max : index > max ? 0 : index);\n switch (event.keyCode) {\n case 38:\n dispatch(selectItem(clip(selectedItem - 1)));\n break;\n case 40:\n dispatch(selectItem(clip(selectedItem + 1)));\n break;\n case 13:\n trackSearch(opt.query);\n\n const selectedObject = result[selectedItem];\n if (selectedObject && selectedObject.url) {\n location.href = selectedObject.url;\n } else {\n location.href = opt.searchUrl;\n }\n break;\n default:\n break;\n }\n};\n\nexport const handleClickSearch = (opt) => (_, getState) => {\n const { result } = getState().quickSearch;\n trackSearch(opt.query);\n\n if (!result || !result.length) {\n return;\n }\n location.href = opt.searchUrl;\n};\n\nexport const trackSearch = (searchString) => {\n if (window.fbq != undefined) {\n fbq('track', 'Search', { search_string: searchString });\n }\n};\n\nconst selectItem = (selectedItem) => ({\n type: QUICK_SEARCH_SELECT_ITEM,\n payload: {\n selectedItem,\n },\n});\n","import * as React from 'react';\n\nfunction usePrevious(value, initialValue) {\n const storedValue = React.useRef(initialValue);\n React.useEffect(() => {\n storedValue.current = value;\n }, [value]);\n return storedValue.current;\n}\n\nexport default usePrevious;","import React from 'react';\nimport { Fragment } from 'react';\n\nconst QuickSearchLinks = ({ links }) => {\n return (\n <>\n {links.map((linkgroup, i) => (\n
\n {linkgroup.map((link, i) => (\n \n {link.url === null ? (\n
\n \n {link.name}\n \n
\n ) : (\n
\n {link.name}\n
\n )}\n
\n ))}\n
\n ))}\n \n );\n};\n\nexport default QuickSearchLinks;\n","import React from 'react';\n\nconst BrandsResults = ({ filteredBrands }) => {\n return (\n \n );\n};\n\nexport default BrandsResults;\n","import React from 'react';\n\nconst CategoryResults = ({ filteredCategory }) => {\n return (\n \n );\n};\n\nexport default CategoryResults;\n","import React from 'react';\nimport { translate } from '../../Services/translation';\nimport QuickSearchLinks from './QuickSearchLinks';\n\nconst NoResults = ({ dataMenus, links, hasSearched }) => {\n return (\n <>\n
\n {hasSearched && (\n
\n
{translate('quick-search-results.no-hits-title')}
\n {translate('quick-search-results.no-hits')}\n
\n )}\n {links.length > 0 && (\n
\n \n
\n )}\n
\n \n );\n};\n\nexport default NoResults;\n","import React from 'react';\n\nconst PagesResult = ({ filteredPages }) => {\n return (\n \n );\n};\n\nexport default PagesResult;\n","import React, { Fragment } from 'react';\nimport { uniqueId } from 'lodash';\nimport ProductCard from '../ProductCard/ProductCard';\nimport useIsMobile from '../../Hooks/useIsMobile';\n\nconst ProductResults = ({ filteredProducts, selectedItem }) => {\n const isMobile = useIsMobile();\n const getFieldId = () => uniqueId();\n return (\n \n {filteredProducts &&\n filteredProducts.map((item, index) => (\n \n ))}\n \n );\n};\n\nexport default ProductResults;\n","import React, { useState } from 'react';\nimport { translate } from '../../Services/translation';\nimport BrandsResults from './BrandsResults';\nimport CategoryResults from './CategoryResults';\nimport NoResults from './NoResults';\nimport PagesResult from './PagesResult';\nimport ProductResults from './ProductResults';\n\nconst GetActiveTab = (currentTab, availableTabs) => {\n if (availableTabs[currentTab].length > 0) {\n return currentTab;\n }\n\n for (const tab in availableTabs) {\n if (!availableTabs.hasOwnProperty(tab)) {\n continue;\n }\n if (availableTabs[tab].length > 0) {\n return tab;\n }\n }\n\n return 'NoResult';\n};\n\nconst QuickSearchResult = ({\n result,\n selectedItem,\n searchUrl,\n showResult,\n dataMenus,\n links,\n}) => {\n const filteredResults = {\n Products: result.filter((id) => id.category === 'Produkter'),\n Brands: result.filter((id) => id.category === 'Brands'),\n Category: result.filter((id) => id.category === 'Kategorier'),\n Pages: result.filter((id) => id.category === 'Sidor'),\n };\n const hasSearched = result.length > 0;\n\n const [activeTab, setActiveTab] = useState('Products');\n const visibleActiveTab = GetActiveTab(activeTab, filteredResults);\n return (\n
\n {visibleActiveTab != 'NoResult' && (\n
\n
\n {filteredResults.Products && filteredResults.Products.length > 0 && (\n setActiveTab('Products')}\n className={`quick-search-results-tabs__item ${\n visibleActiveTab == 'Products'\n ? 'quick-search-results-tabs__item--active'\n : ''\n }`}\n >\n {translate('quick-search.products')}{' '}\n {`(${filteredResults.Products.length})`}\n
\n )}\n {filteredResults.Category && filteredResults.Category.length > 0 && (\n setActiveTab('Category')}\n className={`quick-search-results-tabs__item ${\n visibleActiveTab == 'Category'\n ? 'quick-search-results-tabs__item--active'\n : ''\n }`}\n >\n {translate('quick-search.categories')}{' '}\n {`(${filteredResults.Category.length})`}\n
\n )}\n {filteredResults.Pages && filteredResults.Pages.length > 0 && (\n setActiveTab('Pages')}\n className={`quick-search-results-tabs__item ${\n visibleActiveTab == 'Pages'\n ? 'quick-search-results-tabs__item--active'\n : ''\n }`}\n >\n {translate('quick-search.pages')}{' '}\n {`(${filteredResults.Pages.length})`}\n
\n )}\n {filteredResults.Brands && filteredResults.Brands > 0 && (\n setActiveTab('Brands')}\n className={`quick-search-results-tabs__item ${\n visibleActiveTab == 'Brands'\n ? 'quick-search-results-tabs__item--active'\n : ''\n }`}\n >\n {translate('quick-search.brands')}{' '}\n {`(${filteredResults.Brands.length})`}\n \n )}\n \n \n )}\n
\n
\n
\n {visibleActiveTab == 'Products' && (\n \n )}\n {visibleActiveTab == 'Category' && (\n \n )}\n {visibleActiveTab == 'Pages' && (\n \n )}\n {visibleActiveTab == 'Brands' && (\n \n )}\n {visibleActiveTab == 'NoResult' && (\n \n )}\n
\n
\n
\n\n {visibleActiveTab != 'NoResult' && (\n
\n
\n
\n \n {translate('quicksearch.show-all')}\n \n
\n
\n
\n )}\n \n );\n};\n\nexport default QuickSearchResult;\n","import usePrevious from '@react-hook/previous';\nimport * as debounce from 'lodash.debounce';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n handleKeyDown,\n hideResults,\n query,\n setSearchQuery,\n showResults,\n toggleShowFullForm,\n trackSearch,\n} from '../../Actions/QuickSearch.action';\nimport { translate } from '../../Services/translation';\nimport Icon from '../IconBase/Icon';\nimport QuickSearchLinks from './QuickSearchLinks';\nimport QuickSearchResult from './QuickSearchResult';\nimport(`./styles/${global.ThemeName}.scss`);\n\n// debouncing function to 200ms so we don't send query request on every key stroke\nconst debouncedQuery = debounce((dispatch, text) => dispatch(query(text)), 200);\n\nconst QuickSearch = () => {\n const { query, result, showResult, showFullForm, selectedItem } = useSelector(\n (state) => state.quickSearch\n );\n const [lastClickedNode, setLastClickedNode] = useState(null);\n const searchUrl =\n window.LitiumQuickSearchUrl + (query.length > 0 ? `?q=${query}` : '');\n const searchStartLinks = window.LitiumQuickSearchLinks;\n const searchContainer = useRef(null);\n const searchInput = useRef(null);\n const dispatch = useDispatch();\n const previousSelectedItem = usePrevious(selectedItem);\n\n const clickHandler = useCallback((event) => {\n if (!event.target.classList.contains('buy-button')) {\n setLastClickedNode(event.target);\n }\n }, []);\n useEffect(() => {\n // listen for click event to hide the search when clicking outside\n window.addEventListener('mousedown', clickHandler);\n return () => window.removeEventListener('mousedown', clickHandler);\n }, [clickHandler]);\n\n useEffect(() => {\n // set query value if it is avaialble in the Url\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('q')) {\n const query = urlParams.get('q');\n dispatch(setSearchQuery(query));\n }\n }, [dispatch]);\n\n useEffect(() => {\n if (selectedItem !== previousSelectedItem) {\n const el = document.querySelector('.quick-search-result__item--selected');\n el &&\n el.scrollIntoView({\n behavior: 'smooth',\n block: 'end',\n inline: 'nearest',\n });\n }\n }, [selectedItem, previousSelectedItem]);\n\n const closeIconOnClick = () => {\n dispatch(hideResults());\n };\n const searchIconOnClick = () => {\n dispatch(showResults());\n setTimeout(() => {\n searchInput.current && searchInput.current.focus();\n }, 0);\n if (query.length > 0) {\n debouncedQuery(dispatch, query);\n }\n };\n\n return (\n
\n (showResult ? closeIconOnClick() : searchIconOnClick())}\n >\n \n \n {translate('general.search')}\n \n \n \n
\n
\n
\n {showResult ? (\n \n ) : (\n \n )}\n {\n const text = encodeURIComponent(event.target.value);\n dispatch(setSearchQuery(text));\n debouncedQuery(dispatch, text);\n }}\n onKeyDown={(event) => \n dispatch(handleKeyDown(event, { searchUrl, query }))\n }\n ref={searchInput}\n onBlur={() => {\n dispatch(trackSearch(query));\n if (\n searchContainer.current &&\n !searchContainer.current.contains(lastClickedNode)\n ) {\n showFullForm && dispatch(toggleShowFullForm());\n }\n }}\n />\n
\n
\n
\n {showResult && (\n \n )}\n {!showResult && showFullForm && searchStartLinks.length > 0 && (\n
\n
\n
\n \n
\n
\n
\n )}\n
\n \n );\n};\n\nexport default QuickSearch;\n","// extracted by mini-css-extract-plugin\nexport default {\"xsmall\":\"0\",\"small\":\"480px\",\"medium\":\"768px\",\"large\":\"1024px\",\"xlarge\":\"1440px\",\"sitelarge\":\"1656px\",\"xxlarge\":\"1920px\"};","import React, { useEffect } from 'react';\nimport breakpoints from '../../styles/exports/wtg.module.scss';\nimport useWindowSize from './useWindowSize';\n\nconst MOBILE_BREAKPOINT = 'large'; // below large = mobile\n\nconst useIsMobile = (breakpoint = MOBILE_BREAKPOINT) => {\n breakpoint = parseInt(breakpoints[breakpoint].replace('px', ''));\n\n const [windowWidth] = useWindowSize();\n const [isMobile, setIsMobile] = React.useState(windowWidth <= breakpoint - 1);\n\n useEffect(() => {\n setIsMobile(windowWidth <= breakpoint - 1);\n }, [windowWidth, breakpoint]);\n\n return isMobile;\n};\n\nexport default useIsMobile;\n","import { useState, useLayoutEffect } from 'react';\n\nexport default function () {\n var initialWidth = window && window.innerWidth ? window.innerWidth : 0;\n var initialHeight = window && window.innerHeight ? window.innerHeight : 0;\n const [size, setSize] = useState([initialWidth, initialHeight]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener('resize', updateSize);\n updateSize();\n return () => window.removeEventListener('resize', updateSize);\n }, []);\n return size;\n}\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\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/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\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 * 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\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 result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\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 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\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\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 = value.replace(reTrim, '');\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 = debounce;\n"],"sourceRoot":""}