{"version":3,"file":"static/js/3143.ae34ba27.chunk.js","mappings":"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","sources":["pageComponents/SearchResults/searchResultsPage.js","../node_modules/@mui/icons-material/esm/ChevronLeft.js"],"sourcesContent":["import React, { useState, useEffect, useContext, } from 'react'\nimport { useLazyQuery } from '@apollo/client'\nimport { QUERY_ITEM_SEARCH } from '../../setup/providerGQL'\nimport { buildSearchString, useDidUpdateEffect, cleanSearchState } from '../_common/helpers/generalHelperFunctions'\nimport AppBarPlugin from './plugins/AppBarPlugin'\nimport DrawerPlugin from './plugins/DrawerPlugin'\nimport BrandsPlugin from './plugins/BrandsPlugin'\nimport AttributesPlugin from './plugins/AttributesPlugin'\nimport SortPlugin from './plugins/SortPlugin'\nimport SearchTermsPlugin from './plugins/SearchTermsPlugin'\nimport SearchContainer from './uiComponents/SearchContainer'\nimport { useSearchState, useSearchQueryParams } from './hooks'\nimport CategoriesPlugin from './plugins/CategoriesPlugin'\nimport ResultSummaryPlugin from './plugins/ResultSummaryPlugin'\nimport { useNavigate } from 'react-router'\nimport AvailabilityPlugin from './plugins/AvailabilityPlugin'\nimport PaginationLink from 'pageComponents/_common/PaginationLink'\nimport Context from 'setup/context'\n\nconst RESULT_SIZE = 24\n\nexport default function SearchResultsPage() {\n const navigate = useNavigate()\n const context = useContext(Context)\n const [searchQueryParams, setQueryParam, clearSetQueryParam] = useSearchQueryParams()\n const {\n sortType,\n searchTerm,\n searchTerms,\n resultPage,\n nonweb,\n selectedCategoryId,\n inStockOnly\n } = searchQueryParams\n\n const setSearchTerms = newInnerSearchTerms => {\n setQueryParam('innerSearchTerms', newInnerSearchTerms.join(',') || void 0)\n handleSetSearchState({ searchTerms: newInnerSearchTerms })\n }\n\n useEffect(() => {\n setQueryParam('sortType', context.searchSortType)\n handleSetSearchState({ sortType: context.searchSortType })\n }, [context.searchSortType])\n\n const setCategoryId = newCategoryId => {\n setQueryParam('selectedCategoryId', newCategoryId)\n handleSetSearchState({ selectedCategoryId: newCategoryId })\n }\n\n const queryParamSearchState = { ...searchQueryParams, availability: { inStockOnly }, isSynced: false, results: [], totalResults: '--', isSearching: false }\n\n const [searchState, setSearchState, { setBrands, setAttributes, setAvailability }] = useSearchState(queryParamSearchState)\n const handleSetSearchState = newSearchData => setSearchState({ ...searchState, ...newSearchData })\n const { totalResults, isSynced, brands, attributes, category, childCategories, availability } = searchState\n\n const [lastSearchPayload, setLastSearchPayload] = useState({})\n\n useDidUpdateEffect(() => {\n if (!isSynced) {\n const selectedBrands = brands.filter(b => b.selected).map(b => b.brandName).join(',')\n const selectedAttributes = attributes.reduce((accum, { attributeName, features }) => {\n const selectedFeatures = features.filter(f => f.selected).map(f => f.featureName)\n if (selectedFeatures.length) accum[attributeName] = selectedFeatures.join(',')\n return accum\n }, {})\n\n const inStockOnly = availability?.inStockOnly\n\n navigate(buildSearchString({\n searchTerm,\n innerSearchTerms: searchTerms,\n sortType: context.searchSortType,\n nonweb,\n selectedCategoryId,\n resultPage: 1,\n brands: selectedBrands,\n inStockOnly,\n ...selectedAttributes\n }), { replace: true })\n\n if (resultPage === 1) performItemSearch()\n }\n }, [searchState.brands, searchState.attributes, searchState.availability])\n\n useDidUpdateEffect(() => {\n if (resultPage === 1) {\n performItemSearch()\n } else {\n setQueryParam('resultPage', 1)\n }\n }, [searchTerm, searchTerms, context.searchSortType, nonweb, selectedCategoryId])\n\n useEffect(() => {\n if(resultPage) {\n performItemSearch()\n } else {\n setQueryParam('resultPage', 1)\n } \n }, [resultPage])\n\n useDidUpdateEffect(() => { //When the header searchbar changes the query string the local search state needs to reset and perform a new search\n if (!searchQueryParams.brands.length\n && !searchQueryParams.attributes.length //If these contain values, that means the search state updated the query string, so we do not need to reset\n ) {\n setSearchState(queryParamSearchState)\n }\n }, [searchQueryParams.brands.length, searchQueryParams.attributes.length])\n\n const performItemSearch = () => {\n handleSetSearchState({ isSearching: true })\n const payload = {\n search: {\n searchTerm,\n innerSearchTerms: searchTerms ? searchTerms.split(',') : [],\n searchType: nonweb === 'true' ? 'nonweb' : 'web',\n sortType: context.searchSortType,\n selectedCategoryId: parseInt(selectedCategoryId),\n resultPage,\n resultSize: RESULT_SIZE,\n searchState: {\n brands,\n attributes,\n availability,\n }\n }\n }\n setLastSearchPayload(payload)\n search({ variables: payload })\n }\n\n const clearFilter = () => {\n clearSetQueryParam()\n }\n\n const [search, { variables }] = useLazyQuery(QUERY_ITEM_SEARCH, {\n fetchPolicy: 'no-cache',\n onCompleted: ({ itemSearch }) => {\n if (variables.search === lastSearchPayload.search) {\n const newSearchState = cleanSearchState(itemSearch)\n handleSetSearchState({ ...newSearchState, isSynced: true, results: itemSearch.result, totalResults: itemSearch.searchTotalCount, isSearching: false })\n }\n },\n onError: () => {\n throw 'Search Failed: show error boundary'\n }\n })\n\n const handlePageChange = page => setQueryParam('resultPage', page)\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M15.41 7.41 14 6l-6 6 6 6 1.41-1.41L10.83 12z\"\n}), 'ChevronLeft');"],"names":["RESULT_SIZE","SearchResultsPage","navigate","useNavigate","context","useContext","Context","_useSearchQueryParams","useSearchQueryParams","_useSearchQueryParams2","_slicedToArray","searchQueryParams","setQueryParam","clearSetQueryParam","searchTerm","sortType","searchTerms","resultPage","nonweb","selectedCategoryId","inStockOnly","useEffect","searchSortType","handleSetSearchState","queryParamSearchState","availability","isSynced","results","totalResults","isSearching","_useSearchState","useSearchState","_useSearchState2","searchState","setSearchState","_useSearchState2$","setBrands","setAttributes","setAvailability","newSearchData","brands","attributes","category","childCategories","_useState","useState","_useState2","lastSearchPayload","setLastSearchPayload","useDidUpdateEffect","selectedBrands","filter","b","selected","map","brandName","join","selectedAttributes","reduce","accum","_ref","attributeName","selectedFeatures","features","f","featureName","length","buildSearchString","innerSearchTerms","replace","performItemSearch","payload","search","split","searchType","parseInt","resultSize","variables","_useLazyQuery","useLazyQuery","QUERY_ITEM_SEARCH","fetchPolicy","onCompleted","_ref2","itemSearch","newSearchState","cleanSearchState","result","searchTotalCount","onError","_useLazyQuery2","React","SearchContainer","AppBarPlugin","title","DrawerPlugin","CategoriesPlugin","setCategoryId","newCategoryId","AvailabilityPlugin","BrandsPlugin","AttributesPlugin","ResultSummaryPlugin","SortPlugin","setSortType","setSearchSortType","SearchTermsPlugin","setSearchTerms","newInnerSearchTerms","clearFilter","PaginationLink","page","pageSize","total","handlePageChange","createSvgIcon","_jsx","d"],"sourceRoot":""}