{"version":3,"sources":["webpack://web/./Scripts/react/libs/deals/feature/DiscountedProductsInGroup.tsx","webpack://web/./Scripts/react/search/search.tsx","webpack://web/./Scripts/react/search/index.tsx"],"names":["DiscountedProductsInGroup","groupId","numericGroupId","parseInt","search","useLocation","params","URLSearchParams","searchSource","Array","from","filter","x","toLowerCase","_a","_b","useGetDiscountedProductsQuery","fetchPolicy","variables","groupuid","searchsource","loading","newData","data","previousData","_c","getDiscountedProducts","discountedProducts","useMemo","results","length","window","location","replace","Id","showLoading","searchResultsScaffold","stullerMetadata","useEffect","pageTitle","document","title","body","scrollIntoView","_jsx","LoadingIndicator","Object","children","_jsxs","className","Breadcrumbs","crumbs","EncodedText","Url","allowHtml","dangerouslySetInnerHTML","__html","id","map","productResult","index","ProductResultCard","showDiscounts","onProductSelected","position","directToPDP","toString","style","fontSize","Button","tag","color","href","SearchInner","pathname","usePathname","startsWith","slice","useGetSearchNavigationQuery","error","getSearchNavigation","context","useUserContext","SearchPresentationContext","includes","PresentationContext","canonicalLink","querySelector","newHref","origin","protocol","host","setAttribute","isDealsOrSalesEvent","categoryPermalinkId","CategoryId","IsContentOnlyDisplayTemplate","categoryPermalinkUrl","CategoryPermalinkUrl","queryReturnedBadJson","networkError","name","CustomApolloErrorNames","isContentOnlyDisplayTemplate","PageTitle","RedirectUrl","BrowserRedirect","url","NotFoundPage","DynamicErrorPage","addQuerystringHack","Permalink","categoryId","CmsContentProvider","ProductNavigationContext","value","ProductNavigationInner","navProps","scaffold","ContentOnlyView","contentId","ContentId","reactApp","initPathname","useState","trackInitial","setTrackInitial","groupid","get","Switch","Route","path","ROUTES","TrackComponentLoad","EmbeddedSvgLoader","render","skipTracking"],"mappings":"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","file":"search.1b52f0d65c9d62b9f314.react.bundle.js","sourcesContent":["import { ReactElement, useMemo, useEffect } from 'react'\nimport { SearchScaffoldViewModel, useGetDiscountedProductsQuery, DiscountedProductResult } from '@web/shared-data-access-queries'\nimport { ProductResultCard } from '@web/product-navigation-feature'\nimport { LoadingIndicator, Breadcrumbs, BreadcrumbViewModel, Button } from '@web/shared-ui-components'\nimport { useLocation } from 'react-router-dom'\n\ninterface DiscountedProductsInGroupProps {\n groupId: string\n}\n\nfunction DiscountedProductsInGroup ({ groupId }: DiscountedProductsInGroupProps): ReactElement | null {\n const numericGroupId = parseInt(groupId)\n const { search } = useLocation()\n const params = new URLSearchParams(search)\n const searchSource = Array.from(params).filter(x => x[0].toLowerCase() === 'searchsource')?.[0]?.[1]\n const { loading, data: newData, previousData } = useGetDiscountedProductsQuery({\n fetchPolicy: 'no-cache',\n variables: {\n groupuid: numericGroupId,\n searchsource: searchSource\n }\n })\n const data = ((loading && newData == null) ? previousData : newData)?.getDiscountedProducts\n\n const discountedProducts = useMemo(() => {\n const results = data?.results\n if (results != null && results.length === 1) {\n window.location.replace(`/products/details?iid=${results[0].Id}&gid=${groupId}&recommendationSource=Web_Overstock`)\n }\n return data?.results\n }, [data?.results])\n\n const showLoading = useMemo(() => loading || (data != null && data?.results.length <= 1), [data?.results, loading])\n\n const breadcrumbs: BreadcrumbViewModel[] = [\n { EncodedText: 'Deals', Url: '/deals' },\n { EncodedText: 'Items on sale' }\n ]\n\n const searchResultsScaffold: SearchScaffoldViewModel = useMemo(() => window.stullerMetadata?.searchResultsScaffold, [])\n const pageHeader = 'Discounted Products In Group'\n\n useEffect(() => {\n if (searchResultsScaffold.pageTitle != null) {\n window.document.title = searchResultsScaffold.pageTitle\n }\n }, [searchResultsScaffold.pageTitle])\n\n // scroll to the top of the page every time the component rerenders\n useEffect(() => {\n window.document.body.scrollIntoView()\n })\n\n return (\n \n {!showLoading &&\n <>\n
\n
\n \n
\n
\n

\n

\n
\n
\n
\n
\n {discountedProducts?.map((productResult, index) =>\n \n key={`${productResult?.Id.toString() ?? index}-productCard`}\n productResult={productResult}\n searchSource={null}\n showDiscounts\n onProductSelected={() => null}\n position={index}\n className='u-flex-grid-col-xl-3 u-flex-grid-col-lg-4 u-flex-grid-col-sm-6 col-12'\n directToPDP\n groupId={numericGroupId}\n />\n )}\n
\n
\n
\n
\n
\n
\n Want to view items not included in the current sale?\n
\n \n
\n
\n }\n
\n )\n}\n\nexport { DiscountedProductsInGroup }\n","import { ReactElement, useEffect, useState, useMemo } from 'react'\nimport { useLocation, Switch, Route } from 'react-router-dom'\nimport {\n useGetSearchNavigationQuery,\n SearchScaffoldViewModel\n} from '@web/shared-data-access-queries'\nimport {\n BrowserRedirect,\n EmbeddedSvgLoader,\n LoadingIndicator,\n NotFoundPage,\n DynamicErrorPage,\n CmsContentProvider,\n TrackComponentLoad\n} from '@web/shared-ui-components'\nimport { ContentOnlyView, ProductNavigationInner, Permalink, ProductNavigationContext } from '@web/product-navigation-feature'\nimport { CustomApolloErrorNames } from '@web/shared-data-access-apollo'\nimport { ROUTES, SearchPresentationContext } from '@web/product-navigation-types'\nimport { DiscountedProductsInGroup } from 'libs/deals/feature/DiscountedProductsInGroup'\nimport { useUserContext } from '@web/shared-data-access-context'\n\n// TODO: Fold SearchInner back into Search when Context wrapper isn't needed\nfunction Search (): ReactElement {\n const { loading, context } = useUserContext()\n const { pathname, search } = useLocation()\n const initPathname = useMemo(() => pathname, [])\n const [trackInitial, setTrackInitial] = useState(false)\n\n // look for some param in the query string...\n const params = useMemo(() => new URLSearchParams(search), [search])\n const groupid = useMemo(() => params.get('groupid'), [params])\n\n useEffect(() => {\n setTrackInitial(true)\n }, [])\n\n return (\n \n \n {context != null && groupid &&\n \n \n }\n \n \n \n \n \n {context != null && }\n \n \n \n } />\n \n )\n}\n\nfunction SearchInner (): ReactElement | null {\n /**\n * this query is going to get hit for every back button (i.e. will pile up requests and not cancel subsequent calls)\n * one solution would be to introduce a(nother) in-between component that would rerender where the query aborts need to happen\n */\n const searchResultsScaffold: SearchScaffoldViewModel = useMemo(() => window.stullerMetadata?.searchResultsScaffold, [])\n const { pathname, search } = useLocation()\n const usePathname = pathname.startsWith('/') ? pathname.slice(1) : pathname\n const params = new URLSearchParams(search)\n const { loading, data: newData, previousData, error } = useGetSearchNavigationQuery({\n fetchPolicy: 'no-cache',\n variables: {\n pathname: usePathname, // String argument must only be the current path (without leading slash)\n search: params.toString()\n }\n })\n const data = ((loading && newData == null) ? previousData : newData)?.getSearchNavigation\n const { context } = useUserContext()\n\n // Scroll to the top of the page every time the component rerenders\n useEffect(() => {\n window.document.body.scrollIntoView()\n if (data != null && [SearchPresentationContext.Browse, SearchPresentationContext.Deals].includes(data?.PresentationContext)) {\n const canonicalLink = document.querySelector('link[rel=\"canonical\"]')\n if (canonicalLink != null) {\n // Construct the new URL without query parameters\n const origin = (window.location.origin != null && window.location.origin !== '')\n ? window.location.origin\n : (window.location.protocol + '//' + window.location.host)\n const path = window.location.pathname.replace(/\\/$/, '') // Remove trailing slash if needed\n const newHref = origin + path\n\n // Update the href attribute\n canonicalLink.setAttribute('href', newHref.toLowerCase())\n }\n }\n })\n\n const isDealsOrSalesEvent = useMemo(() => data != null && [\n SearchPresentationContext.Deals,\n SearchPresentationContext.SalesEvent,\n SearchPresentationContext.StullerFirstSale\n ].includes(data.PresentationContext), [data?.PresentationContext])\n\n const categoryPermalinkId = useMemo(() => {\n if (context != null && data?.CategoryId != null && !data?.IsContentOnlyDisplayTemplate && !isDealsOrSalesEvent) {\n return data.CategoryId\n } else {\n return null\n }\n }, [context, data?.CategoryId, data?.IsContentOnlyDisplayTemplate, isDealsOrSalesEvent])\n const categoryPermalinkUrl = data?.CategoryPermalinkUrl ?? 'http://webadmin.stuller.com/mvc/Category.mvc'\n\n const queryReturnedBadJson = useMemo(() => error?.networkError?.name === CustomApolloErrorNames.JSON_RESPONSE_TYPE_ERR, [error])\n const isContentOnlyDisplayTemplate = data?.IsContentOnlyDisplayTemplate ?? false\n\n useEffect(() => {\n if (searchResultsScaffold.pageTitle != null) {\n window.document.title = searchResultsScaffold.pageTitle\n }\n }, [])\n\n useEffect(() => {\n if (data?.PageTitle != null) {\n window.document.title = data.PageTitle\n }\n }, [data?.PageTitle])\n\n if (data?.RedirectUrl != null && data.RedirectUrl !== '') {\n return \n }\n\n return (\n \n {!loading && data == null && error == null && }\n {error != null && !queryReturnedBadJson && }\n {queryReturnedBadJson && }\n
\n {categoryPermalinkId != null && }\n
\n {data != null &&\n \n {!isContentOnlyDisplayTemplate &&\n \n \n }\n {isContentOnlyDisplayTemplate &&\n }\n }\n
\n )\n}\n\nexport { Search }\n","import { Search } from './search'\nimport { reactApp } from '@web/shared-ui-components'\n\nreactApp(Search, '#search-react-container', { skipTracking: true })\n"],"sourceRoot":""}