{"version":3,"sources":["webpack:///./js/utils/index.js","webpack:///./js/react/components/product-listing/redux/actions/index.js","webpack:///./js/react/components/product-listing/redux/actions/products.js","webpack:///./js/react/components/product-listing/redux/actions/filters.js","webpack:///./js/react/components/product-listing/redux/actions/trades.js","webpack:///./js/react/components/product-listing/redux/actions/tradeBanner.js","webpack:///./js/react/components/product-listing/redux/actions/api.js","webpack:///./js/react/components/product-listing/redux/actions/seo.js","webpack:///./js/react/components/product-listing/redux/reducers/products.js","webpack:///./js/react/components/product-listing/enums/filter-categories.js","webpack:///./js/react/components/product-listing/redux/reducers/filters.js","webpack:///./js/react/components/product-listing/redux/reducers/settings.js","webpack:///./js/react/components/product-listing/redux/reducers/api.js","webpack:///./js/react/components/product-listing/redux/reducers/seo.js","webpack:///./js/react/components/product-listing/redux/reducers/tradeBanner.js","webpack:///./js/react/components/product-listing/redux/store/index.js","webpack:///./js/react/components/product-listing/redux/reducers/index.js","webpack:///./js/react/components/product-listing/redux/utils/index.js"],"names":["getCultureFromPage","document","querySelector","value","getNodeIdFromPage","getTwoLetterCountryCode","split","toLowerCase","IsUsingIE","navigator","appName","userAgent","match","$","browser","msie","firstOrDefault","array","filterCondition","Array","isArray","length","results","filter","getOffset","element","docElem","win","rect","doc","elem","getBoundingClientRect","width","height","getClientRects","ownerDocument","window","documentElement","top","pageYOffset","clientTop","left","pageXOffset","clientLeft","__webpack_require__","d","__webpack_exports__","PRODUCTS","FETCH_REQUEST","FETCH_SUCCESS","FETCH_ERROR","FILTERS","CHANGED","SET_ALL_BY_KEY","CLEAR_ALL_BY_KEY","ORDER_BY","REMOVED","TOGGLE_MOBILE_FILTERS","SET_PRODUCT_LAUNCH_WINDOW","LOAD_MODE","FETCH","TRADES","AGILITY_ID_UPDATED","OPEN_POPUP","CLOSE_POPUP","TRADEBANNER","FETCH_TRADEBANNER","FETCH_TRADEBANNER_SUCCESS","FETCH_TRADEBANNER_ERROR","API","SET_REQUEST_PARAMS","SEO","FETCH_SEO","FETCH_SEO_SUCCESS","FETCH_SEO_ERROR","initialState","isLoading","groupedProducts","products","areAnyProducts","undefined","state","arguments","action","type","ACTIONS","_objectSpread","data","payload","filters","orderByFilters","FILTER_CATEGORIES","FILTER","DYNAMIC_FILTER","initialFilters","primaryTradeFilter","location","search","queryParams","querystring","parse","removeQuestionMark","tradeFilter","unmapFilters","queryFilters","find","x","parentKey","filters_objectSpread","allFilters","dynamicFilters","activeDropdowns","mobileFiltersOpen","productLaunchWindow","pageIndex","getInitialState","existingFilters","_toConsumableArray","dependantKeys","handleDependantKeys","filterMode","existingIndex","findIndex","push","splice","handleReplaceFiltering","key","index","handlePageFiltering","handleFiltering","orderBy","parseInt","filterToSet","filterOptions","newFilters","clearTrade","defaultOrderBy","params","standardFilters","responseFilters","missingFilters","forEach","f","fo","initialParentFilter","initialFilterValue","count","missingFilter","existingParent","handleMissingFilters","filterCategory","map","name","setDefaultOrderBy","tempFilters","LOCATION_CHANGE","orderByOptions","defaultOption","item","unshift","_loop","firstLoad","settings","settings_objectSpread","initalState","api","api_objectSpread","content","seo","newState","seo_objectSpread","tradeBanner","tradeBanner_objectSpread","store_history","history","createBrowserHistory","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","rootReducer","combineReducers","app","router","connectRouter","store","createStore","applyMiddleware","routerMiddleware","thunk","mapFilters","keyWhitelist","unmappedFilters","Object","keys","filterValue","query","substring"],"mappings":"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","file":"default~product-range~product-search-results~promo-product-listing~trade-cards~trades-product-listin~e57be4a2-84bef14f21b621259424.js","sourcesContent":["export function getCultureFromPage() {\r\n return document.querySelector('.js-culture-code').value;\r\n}\r\n\r\nexport function getNodeIdFromPage() {\r\n return document.querySelector('.js-node-id').value;\r\n}\r\n\r\nexport function getTwoLetterCountryCode() {\r\n const cultureCode = getCultureFromPage();\r\n\r\n return cultureCode.split('-')[1].toLowerCase();\r\n}\r\n\r\nexport function getCached(key) {\r\n try {\r\n const json = sessionStorage.getItem(key);\r\n if (json === '' || json === null || json === undefined) {\r\n return false;\r\n }\r\n return JSON.parse(json);\r\n } catch (error) {\r\n // eslint-disable-next-line\r\n console.log('sessionstorage not supported');\r\n return null;\r\n }\r\n}\r\n\r\nexport function setCached(key, object) {\r\n try {\r\n const json = JSON.stringify(object);\r\n sessionStorage.setItem(key, json);\r\n } catch (error) {\r\n // eslint-disable-next-line\r\n console.log('sessionstorage not supported');\r\n }\r\n}\r\n\r\nexport function clearCache(key) {\r\n try {\r\n sessionStorage.removeItem(key);\r\n } catch (error) {\r\n // eslint-disable-next-line\r\n console.log('sessionstorage not supported');\r\n }\r\n}\r\n\r\n/**\r\n * Checks if the current client is IE.\r\n */\r\nexport function IsUsingIE() {\r\n /* eslint-disable */\r\n if (\r\n navigator.appName == 'Microsoft Internet Explorer' ||\r\n !!(navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/rv:11/)) ||\r\n (typeof $.browser !== 'undefined' && $.browser.msie == 1)\r\n ) {\r\n return true;\r\n }\r\n /* eslint-enable */\r\n return false;\r\n}\r\n\r\n/**\r\n * Returns the given nodelist as an array of nodes\r\n * @param {NodeList} nodes\r\n */\r\nexport function nodeListToArray(nodes) {\r\n return Array.prototype.slice.call(nodes);\r\n}\r\n\r\n/**\r\n * @param {Object} object\r\n * @param {string} key\r\n * @return {any} value\r\n */\r\nexport function getParameterCaseInsensitive(object, key) {\r\n return object[Object.keys(object).find(k => k.toLowerCase() === key.toLowerCase())];\r\n}\r\n\r\n/**\r\n * Returns the first matched item in the array, if not found then it returns null\r\n * @param {Array} array\r\n * @param {Function} filterCondition\r\n */\r\nexport function firstOrDefault(array, filterCondition) {\r\n if (!Array.isArray(array)) {\r\n return null;\r\n }\r\n\r\n if (array.length === 0) {\r\n return null;\r\n }\r\n\r\n const results = array.filter(filterCondition);\r\n\r\n if (results.length === 0) {\r\n return null;\r\n }\r\n\r\n return results[0];\r\n}\r\n\r\n/* eslint-disable */\r\nexport function distance(lat1, lon1, lat2, lon2, unit) {\r\n if (lat1 == lat2 && lon1 == lon2) {\r\n return 0;\r\n } else {\r\n var radlat1 = (Math.PI * lat1) / 180;\r\n var radlat2 = (Math.PI * lat2) / 180;\r\n var theta = lon1 - lon2;\r\n var radtheta = (Math.PI * theta) / 180;\r\n var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);\r\n if (dist > 1) {\r\n dist = 1;\r\n }\r\n dist = Math.acos(dist);\r\n dist = (dist * 180) / Math.PI;\r\n dist = dist * 60 * 1.1515;\r\n if (unit == 'K') {\r\n dist = dist * 1.609344;\r\n }\r\n if (unit == 'N') {\r\n dist = dist * 0.8684;\r\n }\r\n return dist;\r\n }\r\n}\r\n/* eslint-enable */\r\n\r\n/* eslint-disable */\r\n// This is the decompiled jQuery getOffset() function\r\nexport function getOffset(element) {\r\n var docElem,\r\n win,\r\n rect,\r\n doc,\r\n elem = element;\r\n\r\n if (!elem) {\r\n return;\r\n }\r\n\r\n rect = elem.getBoundingClientRect();\r\n\r\n // Make sure element is not hidden (display: none) or disconnected\r\n if (rect.width || rect.height || elem.getClientRects().length) {\r\n doc = elem.ownerDocument;\r\n win = window;\r\n docElem = doc.documentElement;\r\n\r\n return {\r\n top: rect.top + win.pageYOffset - docElem.clientTop,\r\n left: rect.left + win.pageXOffset - docElem.clientLeft,\r\n };\r\n }\r\n}\r\n/* eslint-enable */\r\n\r\n/** Groups the given array using the given expression */\r\nexport function groupBy(array, expression) {\r\n const map = new Map();\r\n Array.forEach(array, item => {\r\n const key = expression(item);\r\n const collection = map.get(key);\r\n if (!collection) {\r\n map.set(key, [item]);\r\n } else {\r\n collection.push(item);\r\n }\r\n });\r\n return map;\r\n}\r\n\r\n/**\r\n * Checks if the given rectangles intersect\r\n * @param rectA\r\n * @param rectB\r\n */\r\nexport function intersects(rectA, rectB) {\r\n return !(rectB.left >= rectA.right || rectB.right <= rectA.left || rectB.top >= rectA.bottom || rectB.bottom <= rectA.top);\r\n}\r\n","import { PRODUCT_ACTIONS } from './products';\r\nimport { FILTER_ACTIONS } from './filters';\r\nimport { TRADE_ACTIONS } from './trades';\r\nimport { TRADEBANNER_ACTIONS } from './tradeBanner';\r\nimport { API_ACTIONS } from './api';\r\nimport { SEO_ACTIONS } from './seo';\r\n\r\nexport default {\r\n PRODUCTS: PRODUCT_ACTIONS,\r\n FILTERS: FILTER_ACTIONS,\r\n TRADES: TRADE_ACTIONS,\r\n TRADEBANNER: TRADEBANNER_ACTIONS,\r\n API: API_ACTIONS,\r\n SEO: SEO_ACTIONS,\r\n};\r\n","export const PRODUCT_ACTIONS = {\r\n FETCH_REQUEST: 'PRODUCTS/FETCH_REQUEST',\r\n FETCH_SUCCESS: 'PRODUCTS/FETCH_SUCCESS',\r\n FETCH_ERROR: 'PRODUCTS/FETCH_ERROR',\r\n};\r\n\r\n","export const FILTER_ACTIONS = {\r\n CHANGED: 'FILTERS/CHANGED',\r\n SET_ALL_BY_KEY: 'FILTERS/SET_ALL_BY_KEY',\r\n CLEAR_ALL_BY_KEY: 'FILTERS/CLEAR_ALL_BY_KEY',\r\n ORDER_BY: 'FILTERS/ORDER_BY',\r\n REMOVED: 'FILTERS/REMOVED',\r\n TOGGLE_MOBILE_FILTERS: 'FILTERS/TOGGLE_MOBILE_FILTERS',\r\n SET_PRODUCT_LAUNCH_WINDOW: 'FILTERS/SET_PRODUCT_LAUNCH_WINDOW',\r\n LOAD_MODE: 'FILTERS/LOAD_MORE',\r\n FETCH: 'FILTERS/FETCH',\r\n FETCH_SUCCESS: 'FILTERS/FETCH_SUCCESS',\r\n FETCH_ERROR: 'FILTERS/FETCH_ERROR',\r\n};\r\n","export const TRADE_ACTIONS = {\r\n AGILITY_ID_UPDATED: 'TRADES/AGILITY_ID_UPDATED',\r\n OPEN_POPUP: 'TRADES/OPEN_POPUP',\r\n CLOSE_POPUP: 'TRADES/CLOSE_POPUP',\r\n};\r\n","export const TRADEBANNER_ACTIONS = {\r\n FETCH_TRADEBANNER: 'TRADEBANNER/FETCH_TRADEBANNER',\r\n FETCH_TRADEBANNER_SUCCESS: 'TRADEBANNER/FETCH_TRADEBANNER_SUCCESS',\r\n FETCH_TRADEBANNER_ERROR: 'TRADEBANNER/FETCH_TRADEBANNER_ERROR',\r\n};\r\n","export const API_ACTIONS = {\r\n SET_REQUEST_PARAMS: 'API/SET_REQUEST_PARAMS',\r\n};\r\n","export const SEO_ACTIONS = {\r\n FETCH_SEO: 'SEO/FETCH_SEO',\r\n FETCH_SEO_SUCCESS: 'SEO/FETCH_SEO_SUCCESS',\r\n FETCH_SEO_ERROR: 'SEO/FETCH_SEO_ERROR',\r\n};\r\n","import ACTIONS from '../actions';\r\n\r\nconst initialState = {\r\n isLoading: true,\r\n groupedProducts: [],\r\n products: [],\r\n areAnyProducts: undefined,\r\n};\r\n\r\nexport function products(state = initialState, action) {\r\n switch (action.type) {\r\n case ACTIONS.PRODUCTS.FETCH_REQUEST:\r\n return {\r\n ...state,\r\n isLoading: true,\r\n };\r\n\r\n case ACTIONS.PRODUCTS.FETCH_SUCCESS: {\r\n const data = {\r\n ...action.payload.data,\r\n };\r\n\r\n // Deleting the filters from the data as this is being handled in the filters reducer\r\n delete data.filters;\r\n delete data.orderByFilters;\r\n\r\n\r\n return {\r\n ...state,\r\n ...data,\r\n isLoading: false,\r\n areAnyProducts: areAnyProducts(data, state),\r\n };\r\n }\r\n\r\n case ACTIONS.PRODUCTS.FETCH_ERROR:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n };\r\n\r\n case ACTIONS.TRADES.CLOSE_POPUP:\r\n return {\r\n ...state,\r\n groupedProducts: [],\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nfunction areAnyProducts(data) {\r\n return (data.products !== undefined && data.products.length > 0)\r\n ||\r\n (data.groupedProducts !== undefined && data.groupedProducts.length > 0);\r\n}\r\n","export const FILTER_CATEGORIES = {\r\n ORDER_BY: 0,\r\n FILTER: 1,\r\n DYNAMIC_FILTER: 2,\r\n};\r\n","import { LOCATION_CHANGE } from 'connected-react-router';\r\nimport querystring from 'querystring';\r\nimport { firstOrDefault } from '@utils';\r\nimport ACTIONS from '../actions';\r\nimport { FILTER_CATEGORIES } from '../../enums/filter-categories';\r\nimport { removeQuestionMark, unmapFilters } from '../utils';\r\n\r\nconst initialState = getInitialState();\r\n\r\nexport function filters(state = initialState, action) {\r\n switch (action.type) {\r\n case ACTIONS.FILTERS.CHANGED: {\r\n let existingFilters = [...state.queryFilters];\r\n\r\n if (action.payload.dependantKeys) {\r\n existingFilters = handleDependantKeys(existingFilters, action);\r\n }\r\n\r\n if (action.payload.filterMode === 'replace') {\r\n existingFilters = handleReplaceFiltering(existingFilters, action);\r\n } else {\r\n if (action.payload.key === 'categoryPageNumber') {\r\n existingFilters = handlePageFiltering(existingFilters, action);\r\n } else {\r\n existingFilters = handleFiltering(existingFilters, action);\r\n }\r\n }\r\n\r\n const queryFilters = [...existingFilters];\r\n const tradeFilter = queryFilters.find(x => x.parentKey === 'trades');\r\n\r\n return {\r\n ...state,\r\n queryFilters,\r\n primaryTradeFilter: !tradeFilter ? 0 : tradeFilter.value,\r\n };\r\n }\r\n\r\n case ACTIONS.FILTERS.REMOVED: {\r\n let existingFilters = state.queryFilters;\r\n\r\n if (action.payload.dependantKeys) {\r\n existingFilters = handleDependantKeys(existingFilters, action);\r\n }\r\n\r\n const index = existingFilters.findIndex(x => x.key === action.payload.key && x.value === action.payload.value);\r\n\r\n if (index !== -1) {\r\n existingFilters.splice(index, 1);\r\n }\r\n\r\n return {\r\n ...state,\r\n queryFilters: existingFilters,\r\n };\r\n }\r\n\r\n case ACTIONS.FILTERS.ORDER_BY:\r\n return {\r\n ...state,\r\n orderBy: action.payload,\r\n };\r\n\r\n case ACTIONS.FILTERS.LOAD_MODE: {\r\n let pageIndex = parseInt(state.pageIndex, 10) || 1;\r\n const newPage = (pageIndex += 1);\r\n\r\n return {\r\n ...state,\r\n pageIndex: newPage,\r\n };\r\n }\r\n\r\n case ACTIONS.FILTERS.TOGGLE_MOBILE_FILTERS:\r\n return {\r\n ...state,\r\n mobileFiltersOpen: !state.mobileFiltersOpen,\r\n };\r\n\r\n case ACTIONS.FILTERS.SET_PRODUCT_LAUNCH_WINDOW:\r\n return {\r\n ...state,\r\n productLaunchWindow: action.payload,\r\n };\r\n\r\n case ACTIONS.FILTERS.SET_ALL_BY_KEY: {\r\n const key = action.payload;\r\n const filterToSet = state.allFilters.find(x => x.key === key).filterOptions;\r\n const existingFilters = state.queryFilters;\r\n\r\n const primaryTradeFilter = key === 'trades' ? filterToSet[0].value : state.primaryTradeFilter;\r\n\r\n for (let index = 0; index < filterToSet.length; index++) {\r\n const filter = filterToSet[index];\r\n existingFilters.push(filter);\r\n }\r\n\r\n return {\r\n ...state,\r\n queryFilters: existingFilters,\r\n primaryTradeFilter,\r\n };\r\n }\r\n\r\n case ACTIONS.FILTERS.CLEAR_ALL_BY_KEY: {\r\n const key = action.payload;\r\n const newFilters = state.queryFilters.filter(x => x.parentKey !== key);\r\n const clearTrade = state.queryFilters.find(x => x.parentKey === 'trades');\r\n\r\n return {\r\n ...state,\r\n queryFilters: [...newFilters],\r\n primaryTradeFilter: clearTrade ? 0 : state.primaryTradeFilter,\r\n };\r\n }\r\n\r\n case ACTIONS.PRODUCTS.FETCH_SUCCESS: {\r\n const { defaultOrderBy } = action.payload.params;\r\n\r\n let allFilters = action.payload.data.filters || [];\r\n allFilters = handleMissingFilters(state.initialFilters, allFilters, state.queryFilters);\r\n\r\n const standardFilters = allFilters.filter(x => x.filterCategory === FILTER_CATEGORIES.FILTER);\r\n const dynamicFilters = allFilters.filter(x => x.filterCategory === FILTER_CATEGORIES.DYNAMIC_FILTER);\r\n let orderByFilters = firstOrDefault(allFilters, x => x.filterCategory === FILTER_CATEGORIES.ORDER_BY);\r\n\r\n if (orderByFilters !== null) {\r\n orderByFilters.filterOptions = orderByFilters.filterOptions.map(x => ({\r\n ...x,\r\n value: x.value,\r\n name: x.name,\r\n }));\r\n\r\n orderByFilters = setDefaultOrderBy(orderByFilters, defaultOrderBy);\r\n }\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n allFilters,\r\n filters: standardFilters,\r\n dynamicFilters,\r\n orderByFilters,\r\n };\r\n }\r\n\r\n case ACTIONS.FILTERS.FETCH_SUCCESS: {\r\n const { defaultOrderBy } = action.payload.params;\r\n const tempFilters = action.payload.data.filters;\r\n\r\n let orderByFilters = firstOrDefault(tempFilters, x => x.filterCategory === FILTER_CATEGORIES.ORDER_BY);\r\n\r\n if (orderByFilters !== null) {\r\n orderByFilters = setDefaultOrderBy(orderByFilters, defaultOrderBy);\r\n }\r\n\r\n return {\r\n ...state,\r\n initialFilters: tempFilters,\r\n };\r\n }\r\n\r\n case LOCATION_CHANGE: {\r\n const unmappedFilters = unmapFilters(querystring.parse(removeQuestionMark(action.payload.location.search)));\r\n\r\n return {\r\n ...state,\r\n queryFilters: [...unmappedFilters.queryFilters],\r\n };\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nfunction setDefaultOrderBy(orderByFilters, defaultOrderBy) {\r\n const tempFilters = orderByFilters;\r\n let orderByOptions = tempFilters.filterOptions;\r\n\r\n const defaultOption = orderByOptions.find(item => item.value === defaultOrderBy);\r\n if (defaultOption) {\r\n orderByOptions = orderByOptions.filter(item => item.value !== defaultOrderBy);\r\n orderByOptions.unshift(defaultOption);\r\n tempFilters.filterOptions = orderByOptions;\r\n }\r\n\r\n return tempFilters;\r\n}\r\n\r\nfunction handleFiltering(existingFilters, action) {\r\n const index = existingFilters.findIndex(\r\n x => x.parentKey === action.payload.parentKey && x.value.split('-')[0] === action.payload.value.split('-')[0],\r\n );\r\n\r\n if (index !== -1) {\r\n existingFilters.splice(index, 1);\r\n existingFilters.push({ ...action.payload });\r\n } else if (action.payload.value !== null) {\r\n existingFilters.push({ ...action.payload });\r\n }\r\n\r\n return existingFilters;\r\n}\r\n\r\nfunction handlePageFiltering(existingFilters, action) {\r\n const value = action.payload.value.split('-')[0];\r\n const index = existingFilters.findIndex(x => x.parentKey === action.payload.parentKey && x.value.split('-')[0] === value);\r\n\r\n if (index !== -1) {\r\n existingFilters.splice(index, 1);\r\n existingFilters.push({ ...action.payload });\r\n } else if (action.payload.value !== null) {\r\n existingFilters.push({ ...action.payload });\r\n }\r\n\r\n return existingFilters;\r\n}\r\n\r\nfunction handleReplaceFiltering(existingFilters, action) {\r\n const existingIndex = existingFilters.findIndex(x => x.parentKey === action.payload.parentKey);\r\n if (existingIndex === -1) {\r\n existingFilters.push({ ...action.payload });\r\n } else if (existingFilters[existingIndex].value !== action.payload.value) {\r\n existingFilters[existingIndex] = { ...action.payload };\r\n } else {\r\n existingFilters.splice(existingIndex, 1);\r\n }\r\n\r\n return existingFilters;\r\n}\r\n\r\nfunction handleDependantKeys(existingFilters, action) {\r\n for (let index = 0; index < action.payload.dependantKeys.length; index++) {\r\n const key = action.payload.dependantKeys[index];\r\n const existingIndex = existingFilters.findIndex(x => x.key === key);\r\n\r\n if (existingIndex !== -1) {\r\n existingFilters.splice(existingIndex, 1);\r\n }\r\n }\r\n\r\n return existingFilters;\r\n}\r\n\r\nfunction handleMissingFilters(initialFilters, responseFilters, queryFilters) {\r\n const missingFilters = [];\r\n\r\n Array.forEach(queryFilters, filter => {\r\n const existingParentFilterWithValue = responseFilters.find(\r\n f => f.key === filter.parentKey && f.filterOptions.find(fo => fo.value === filter.value),\r\n );\r\n\r\n if (existingParentFilterWithValue === undefined) {\r\n const initialParentFilter = initialFilters.find(x => x.key === filter.parentKey);\r\n\r\n if (initialParentFilter === undefined) {\r\n return;\r\n }\r\n\r\n const initialFilterValue = initialParentFilter.filterOptions.find(x => x.value === filter.value);\r\n\r\n if (initialFilterValue !== undefined) {\r\n initialFilterValue.count = 0;\r\n missingFilters.push(initialFilterValue);\r\n }\r\n }\r\n });\r\n\r\n Array.forEach(missingFilters, missingFilter => {\r\n const existingParent = responseFilters.find(x => x.key === missingFilter.parentKey);\r\n\r\n if (existingParent !== undefined) {\r\n existingParent.filterOptions.push(missingFilter);\r\n }\r\n });\r\n\r\n return responseFilters;\r\n}\r\n\r\nfunction getInitialState() {\r\n let initialFilters = [];\r\n let primaryTradeFilter = 0;\r\n\r\n if (window.location.search !== '') {\r\n const queryParams = querystring.parse(removeQuestionMark(window.location.search));\r\n initialFilters = unmapFilters(queryParams);\r\n\r\n const tradeFilter = initialFilters.queryFilters.find(x => x.parentKey === 'trades');\r\n\r\n primaryTradeFilter = !tradeFilter ? 0 : tradeFilter.value;\r\n }\r\n\r\n return {\r\n initialFilters: [],\r\n allFilters: [],\r\n filters: [],\r\n orderByFilters: [],\r\n queryFilters: [],\r\n primaryTradeFilter,\r\n dynamicFilters: [],\r\n activeDropdowns: [],\r\n mobileFiltersOpen: false,\r\n productLaunchWindow: null,\r\n pageIndex: null,\r\n ...initialFilters,\r\n };\r\n}\r\n","import ACTIONS from '../actions';\r\n\r\nconst initialState = {\r\n firstLoad: true,\r\n};\r\n\r\nexport function settings(state = initialState, action) {\r\n switch (action.type) {\r\n case ACTIONS.PRODUCTS.FETCH_SUCCESS:\r\n return {\r\n ...state,\r\n firstLoad: false,\r\n };\r\n\r\n default:\r\n return { ...state };\r\n }\r\n}\r\n","import ACTIONS from '../actions';\r\n\r\nconst initalState = {\r\n};\r\n\r\nexport function api(state = initalState, action) {\r\n switch (action.type) {\r\n case ACTIONS.API.SET_REQUEST_PARAMS:\r\n return {\r\n ...state,\r\n ...action.payload,\r\n };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import ACTIONS from '../actions';\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n content: undefined,\r\n};\r\n\r\nexport function seo(state = initialState, action) {\r\n switch (action.type) {\r\n case ACTIONS.SEO.FETCH_SEO: {\r\n const newState = { ...state };\r\n\r\n newState.isLoading = true;\r\n return newState;\r\n }\r\n\r\n case ACTIONS.SEO.FETCH_SEO_SUCCESS: {\r\n const newState = { ...state };\r\n\r\n newState.content = action.payload.data;\r\n newState.isLoading = false;\r\n return newState;\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import ACTIONS from '../actions';\r\n\r\nconst initialState = {\r\n isLoading: false,\r\n content: undefined,\r\n};\r\n\r\nexport function tradeBanner(state = initialState, action) {\r\n switch (action.type) {\r\n case ACTIONS.TRADEBANNER.FETCH_TRADEBANNER: {\r\n const newState = { ...state };\r\n\r\n newState.isLoading = true;\r\n return newState;\r\n }\r\n\r\n case ACTIONS.TRADEBANNER.FETCH_TRADEBANNER_SUCCESS: {\r\n const newState = { ...state };\r\n\r\n newState.content = action.payload.data;\r\n newState.isLoading = false;\r\n return newState;\r\n }\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","\r\nimport { createStore, applyMiddleware, compose } from 'redux';\r\nimport { createBrowserHistory } from 'history';\r\nimport { routerMiddleware } from 'connected-react-router';\r\nimport thunk from 'redux-thunk';\r\n\r\nimport createRootReducer from '../reducers';\r\n\r\nexport const history = createBrowserHistory();\r\n\r\n/* eslint-disable no-underscore-dangle */\r\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\r\n/* eslint-enable no-underscore-dangle */\r\n\r\nconst rootReducer = createRootReducer(history);\r\n\r\nconst store = createStore(rootReducer, composeEnhancers(applyMiddleware(routerMiddleware(history), thunk)));\r\n\r\nexport default store;\r\n","import { combineReducers } from 'redux';\r\nimport { connectRouter } from 'connected-react-router';\r\n\r\nimport { products } from './products';\r\nimport { filters } from './filters';\r\nimport { settings } from './settings';\r\nimport { api } from './api';\r\nimport { seo } from './seo';\r\nimport { tradeBanner } from './tradeBanner';\r\n\r\nexport default history =>\r\n combineReducers({\r\n app: combineReducers({\r\n products,\r\n filters,\r\n settings,\r\n api,\r\n seo,\r\n tradeBanner,\r\n }),\r\n router: connectRouter(history),\r\n });\r\n","/**\r\n * Maps the filters to a flat array so they can be used in the URL.\r\n * @param {object} filters\r\n */\r\nexport function mapFilters(filters) {\r\n const newFilters = {};\r\n\r\n Array.forEach(filters, filter => {\r\n const existing = newFilters[filter.parentKey];\r\n if (existing === undefined) {\r\n newFilters[filter.parentKey] = [filter.value];\r\n } else {\r\n newFilters[filter.parentKey].push(filter.value);\r\n }\r\n });\r\n\r\n return newFilters;\r\n}\r\n\r\n/**\r\n * Unmaps the filters from the flat URL format.\r\n * @param {object} filters\r\n */\r\nexport function unmapFilters(filters) {\r\n const keyWhitelist = ['pageIndex'];\r\n\r\n const unmappedFilters = {\r\n queryFilters: [],\r\n };\r\n\r\n Array.forEach(Object.keys(filters), key => {\r\n const value = filters[key];\r\n\r\n if (keyWhitelist.findIndex(x => x.toLowerCase() === key.toLowerCase()) > -1) {\r\n unmappedFilters[key] = value;\r\n } else if (Array.isArray(value)) {\r\n Array.forEach(value, filterValue => {\r\n unmappedFilters.queryFilters.push({\r\n parentKey: key,\r\n value: filterValue,\r\n });\r\n });\r\n } else {\r\n unmappedFilters.queryFilters.push({\r\n parentKey: key,\r\n value: filters[key],\r\n });\r\n }\r\n });\r\n\r\n return unmappedFilters;\r\n}\r\n\r\n/**\r\n * Removes the question mark from the query string\r\n * @param {String} query\r\n */\r\nexport const removeQuestionMark = query => query.substring(1);\r\n"],"sourceRoot":""}