{"version":3,"file":"d13e4f6c.js","sources":["../../../src/components/globals/search/SearchDrawer.client.tsx"],"sourcesContent":["import {useRef, useState, useEffect, Suspense} from 'react';\nimport {Link, Image, useNavigate} from '@shopify/hydrogen';\nimport {fetchDySearchRecs} from '../../../util/dy-utils';\n// import { receiveMessageOnPort } from 'worker_threads';\nimport {CloseBlackIcon} from '@base/icon/CloseIcon';\n\n/**\n * A client component that defines the search drawer for a web storefront\n */\nexport default function SearchDrawer({\n headerSolid,\n searchData,\n searchDrawerOpen,\n setSearchDrawerOpen,\n showPromoBanner,\n}: {\n headerSolid: any;\n searchData: any;\n searchDrawerOpen: boolean;\n setSearchDrawerOpen: any;\n showPromoBanner: boolean;\n}): JSX.Element {\n const navigate = useNavigate();\n const searchInput = useRef(null);\n const [searchResults, setSearchResults] = useState(null);\n const [searchSuggestions, setSearchSuggestions] = useState(null);\n const [defaultDySearchRecs, setDefaultDySearchRecs] = useState({});\n const {searchSpringId, suggestions, suggestionProducts} = searchData || {};\n let mappedDefaultRecs: any;\n\n if (defaultDySearchRecs.length) {\n mappedDefaultRecs = defaultDySearchRecs.slice(0, 4).map((item: any) => {\n const {pathname} = new URL(item.productData.url);\n const productDataSlug = pathname.replace('/products/', '');\n return {\n images: [\n {\n altText: item.productData.name,\n src: item.productData.image_url,\n },\n ],\n slug: {\n current: productDataSlug,\n _type: '_slug',\n },\n title: item.productData.name,\n };\n });\n }\n\n const predictiveSearch = (searchString: string) => {\n if (searchString === '') return;\n\n const suggestionEndpoint =\n 'https://suggest-cache.searchspring.net/api/suggest/query';\n\n const data = {\n siteId: searchSpringId,\n query: searchString,\n suggestionCount: 7,\n };\n\n fetch(suggestionEndpoint, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n .then((resp) => {\n // Update Search Term Suggestions\n const showDefaultSuggestions =\n !resp.alternatives.length && resp.query === '';\n if (!showDefaultSuggestions) {\n setSearchSuggestions(resp.alternatives);\n } else {\n setSearchSuggestions(null);\n }\n\n const searchQuery = resp.suggested ? resp.suggested.text : searchString;\n // Search with the suggested query\n debounceFn(handleSearchQuery(null, searchQuery), 100);\n })\n .catch((error) => {\n console.error('Error getting search suggestion: ', error);\n });\n };\n\n const handleSearchQuery = (event: any, query: any) => {\n if (event) event.preventDefault();\n const isSubmit = event && event.type === 'submit';\n if (!searchData || !searchSpringId) return;\n\n const searchQuery = query || searchInput.current?.value;\n if (!searchQuery) {\n setSearchResults(null);\n return;\n }\n\n const baseUrl = `https://${searchSpringId}.a.searchspring.io/api/search/autocomplete.json`;\n\n const data = {\n siteId: searchSpringId,\n q: searchQuery,\n resultsFormat: 'native',\n resultsPerPage: 10,\n };\n\n fetch(baseUrl, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n .then((json) => {\n if (!json) {\n setSearchResults(null);\n return;\n }\n\n const {results, didYouMean} = json;\n\n // handle autocomplete\n if (\n didYouMean &&\n didYouMean.query &&\n didYouMean.query !== searchQuery\n ) {\n if (isSubmit) {\n navigate(`/search?q=${didYouMean.query}`);\n } else {\n handleSearchQuery(null, didYouMean.query);\n }\n return;\n }\n\n if (isSubmit) {\n navigate(`/search?q=${searchQuery}`);\n } else {\n const filteredResults: any[] = [];\n const checkedTitles: any[] = [];\n results.forEach((result: any) => {\n const productTitle = result.name?.includes('|')\n ? result.name.split('|')[0]\n : result.name;\n\n if (!checkedTitles.includes(productTitle)) {\n checkedTitles.push(productTitle);\n filteredResults.push(result);\n }\n });\n\n // parse filtered search results\n const parsedResults = filteredResults\n .filter((result: any) => result.ss_name && result.image)\n .slice(0, 4);\n setSearchResults(parsedResults);\n }\n })\n .catch((error) => {\n console.error(error);\n setSearchResults(null);\n });\n };\n\n const debounceFn = (method: any, delay: number) => {\n setTimeout(() => {\n if (typeof method === 'function') method();\n }, delay);\n };\n\n useEffect(() => {\n if (!searchDrawerOpen) return;\n searchInput.current?.focus();\n }, [searchDrawerOpen]);\n\n useEffect(() => {\n if (!defaultDySearchRecs.length) {\n const getRecs = async () => {\n const response = await fetchDySearchRecs(\n 'OTHER',\n 'Search Drawer Default Recs [API]',\n );\n if (response) {\n setDefaultDySearchRecs(\n response.data.choices[0].variations[0].payload.data.slots,\n );\n }\n };\n getRecs().catch(console.error);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return searchData && searchDrawerOpen && headerSolid ? (\n {\n // Ignore mouseleave events triggered by right click > paste on the search input\n const rightClickPaste = e?.target === searchInput?.current;\n if (!rightClickPaste) {\n setSearchDrawerOpen(false);\n }\n }}\n >\n \n
\n setSearchDrawerOpen(false)}\n >\n \n \n
\n \n debounceFn(handleSearchQuery(event, null), 100)\n }\n >\n \n debounceFn(handleSearchQuery(event, null), 100)\n }\n >\n \n \n \n debounceFn(predictiveSearch(event.target.value), 100)\n }\n ref={searchInput}\n />\n \n
\n {searchSuggestions ? (\n
\n

\n {suggestions.suggestedHeading}\n

\n \n
\n ) : suggestions && suggestions.defaultSuggestions ? (\n
\n

\n {suggestions.suggestedHeading}\n

\n
    \n {suggestions.defaultSuggestions.map((suggestion: any) => {\n return suggestion.url ? (\n \n \n {suggestion.text}\n \n \n ) : (\n \n {suggestion.text}\n \n );\n })}\n
\n
\n ) : null}\n
\n

\n {suggestions.searchHeading}\n

\n
    \n {searchResults || mappedDefaultRecs ? (\n (searchResults || mappedDefaultRecs).map((result: any) => {\n if (!result) return null;\n const {handle, images, slug, ss_name, title} =\n result.store || result;\n const productTitle = ss_name || title;\n const productHandle = handle || slug.current;\n\n return (\n \n \n {images[0] && (\n \n )}\n \n {productTitle}\n \n \n \n );\n })\n ) : (\n <>\n )}\n
\n
\n
\n
\n
\n
\n \n ) : (\n <>\n );\n\n function SearchIcon() {\n return (\n \n Search\n \n \n \n \n \n \n \n \n \n );\n }\n}\n"],"names":["SearchDrawer","headerSolid","searchData","searchDrawerOpen","setSearchDrawerOpen","showPromoBanner","navigate","useNavigate","searchInput","useRef","searchResults","setSearchResults","useState","searchSuggestions","setSearchSuggestions","defaultDySearchRecs","setDefaultDySearchRecs","searchSpringId","suggestions","suggestionProducts","mappedDefaultRecs","length","slice","map","item","pathname","URL","productData","url","productDataSlug","replace","images","altText","name","src","image_url","slug","current","_type","title","predictiveSearch","searchString","suggestionEndpoint","data","siteId","query","suggestionCount","fetch","method","body","JSON","stringify","headers","then","res","json","resp","showDefaultSuggestions","alternatives","searchQuery","suggested","text","debounceFn","handleSearchQuery","catch","error","event","preventDefault","isSubmit","type","value","baseUrl","q","resultsFormat","resultsPerPage","Accept","results","didYouMean","filteredResults","checkedTitles","forEach","result","productTitle","includes","split","push","parsedResults","filter","ss_name","image","console","delay","setTimeout","useEffect","focus","response","fetchDySearchRecs","choices","variations","payload","slots","_jsx","e","target","Suspense","CloseBlackIcon","_jsxs","SearchIcon","suggestedHeading","suggestion","defaultSuggestions","Link","searchHeading","handle","store","productHandle","Image","_Fragment"],"mappings":"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"}