{"version":3,"file":"7f38c063.js","sources":["../../../src/components/views/account/AccountIconBlack.tsx","../../../src/components/views/account/AccountIconWhite.tsx","../../../src/components/globals/search/SearchDrawer.client.tsx","../../../src/components/globals/header/Header.client.tsx"],"sourcesContent":["import React from 'react';\n\n/**\n * A shared component that specifies the icon to represent an account\n */\nexport default function AccountIconBlack() {\n return (\n \n My Account\n \n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\n\n/**\n * A shared component that specifies the icon to represent an account\n */\nexport default function AccountIconWhite() {\n return (\n \n My Account\n \n \n \n \n \n \n \n \n );\n}\n","import {useRef, useState, useEffect, Suspense} from 'react';\nimport {Link, Image, useNavigate, useLocalization} from '@shopify/hydrogen';\nimport {fetchDySearchRecs, reportDySlotClick} from '../../../util/dy-utils';\n// import { receiveMessageOnPort } from 'worker_threads';\nimport {CloseBlackIcon} from '@base/icon/CloseIcon';\nimport {MainLogoIcon} from '../header/Header.client';\nimport CartIconBlack from '@base/icon/CartIconBlack';\nimport {ErrorBoundary} from '../error-boundary/ErrorBoundary.client';\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 logoColor,\n setCartOpen,\n}: {\n headerSolid: any;\n searchData: any;\n searchDrawerOpen: boolean;\n setSearchDrawerOpen: any;\n showPromoBanner: boolean;\n logoColor: string;\n setCartOpen: () => void;\n}) {\n const navigate = useNavigate();\n const searchInput = useRef(null);\n const [searchValue, setSearchValue] = useState(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 const {country} = useLocalization();\n const blockedKeywords = ['gift card'];\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 slotId: item.slotId,\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 const suggestions =\n country?.isoCode !== 'US'\n ? filterBlockedResults(resp.alternatives)\n : resp.alternatives;\n\n setSearchSuggestions(suggestions);\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 filterBlockedResults = (results: any) => {\n return results.filter(\n (obj: any) =>\n !blockedKeywords.some((kw) =>\n (obj.text || obj.ss_name || obj.title).toLowerCase().includes(kw),\n ),\n );\n };\n\n const handleSearchQuery = async (event: any, query?: any) => {\n try {\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: 'json',\n resultsPerPage: 10,\n };\n\n const res = await fetch(baseUrl, {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n });\n\n if (!res.ok) {\n throw new Error(`Failed to fetch search results: ${res.status}`);\n }\n\n const json = await res.json();\n if (!json || !json.results || !Array.isArray(json.results)) {\n throw new Error(`Invalid search results: ${JSON.stringify(json)}`);\n }\n\n const {results, didYouMean} = json;\n\n // handle autocomplete\n if (didYouMean?.query && didYouMean.query !== searchQuery) {\n if (isSubmit) {\n navigate(`/search?q=${didYouMean.query}`);\n } else {\n await handleSearchQuery(null, didYouMean.query);\n }\n return;\n }\n\n try {\n if (isSubmit) {\n navigate(`/search?q=${searchQuery}`);\n } else {\n const checkedTitles = new Set();\n const matchingResults: any[] = [];\n const otherResults: any[] = [];\n\n results.forEach((result: any) => {\n const productTitle = result?.name?.split(' | ')[0]?.toLowerCase();\n const productTitleColor = result?.name\n ?.split(' | ')[1]\n ?.toLowerCase();\n const color = result?.tags_filterparentcolor?.toLowerCase() || '';\n const variantColor = result?.variant_color?.toLowerCase() || '';\n const filterColor = result?.tags_filtercolor?.toLowerCase() || '';\n\n if (!productTitle || checkedTitles.has(productTitle)) return;\n checkedTitles.add(productTitle);\n if (country?.isoCode !== 'US' && isBlocked(result)) return;\n if (result.ss_name && result.image) {\n if (\n color === searchQuery ||\n variantColor === searchQuery ||\n filterColor === searchQuery ||\n productTitleColor === searchQuery\n ) {\n matchingResults.unshift(result);\n } else if (\n (color && color.startsWith(searchQuery)) ||\n (variantColor && variantColor.startsWith(searchQuery)) ||\n (filterColor && filterColor.startsWith(searchQuery)) ||\n (productTitleColor && productTitleColor.startsWith(searchQuery))\n ) {\n matchingResults.push(result);\n } else if (\n productTitle.includes(searchQuery) ||\n productTitleColor.includes(searchQuery)\n ) {\n matchingResults.push(result);\n } else {\n otherResults.push(result);\n }\n }\n });\n\n const sortedResults = [...matchingResults, ...otherResults].slice(\n 0,\n 4,\n );\n setSearchResults(sortedResults);\n }\n } catch (error) {\n console.error(error);\n setSearchResults(null);\n }\n } catch (error) {\n console.error(error);\n }\n };\n\n function isBlocked(result: any) {\n return (\n result.ss_blocked_country_codes?.includes(country.isoCode) ||\n result.ss_blocked_device_types?.includes('desktop')\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 try {\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 && response?.status == 200) {\n setDefaultDySearchRecs(\n response?.data?.choices[0]?.variations[0]?.payload?.data?.slots,\n );\n }\n };\n getRecs().catch(console.error);\n }\n } catch (e) {\n console.error('SearchDrawer recs useEffect Error', e);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n function handleOpenCart() {\n setSearchDrawerOpen(false);\n setCartOpen();\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
\n
\n setSearchDrawerOpen(false)}\n >\n \n \n \n \n \n handleOpenCart()}\n >\n \n \n \n \n
\n
\n \n debounceFn(handleSearchQuery(event, searchValue), 100)\n }\n >\n \n debounceFn(handleSearchQuery(event, null), 100)\n }\n >\n \n \n {\n debounceFn(predictiveSearch(event.target.value), 100);\n setSearchValue(event.target.value);\n }}\n ref={searchInput}\n />\n \n
\n {searchSuggestions ? (\n
\n

\n {suggestions.suggestedHeading}\n

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

\n {suggestions.suggestedHeading}\n

\n )}\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 {suggestions?.searchHeading && (\n

\n {suggestions.searchHeading}\n

\n )}\n\n
    \n {searchResults || mappedDefaultRecs\n ? (searchResults || mappedDefaultRecs).map(\n (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 reportDySlotClick(result)}\n >\n {images[0] && (\n \n )}\n \n {productTitle}\n \n \n \n );\n },\n )\n : null}\n
\n
\n
\n
\n
\n
\n \n \n ) : null;\n\n function SearchIcon() {\n return (\n \n Search\n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import {Suspense, useEffect, useState} from 'react';\nimport {Link, useUrl} from '@shopify/hydrogen';\nimport useMediaQuery from 'Js/hooks/useMediaQuery';\n\nimport CartToggle from '../cart/CartToggle.client';\nimport {useCartUI} from '../cart/CartUIProvider.client';\nimport AccountIconBlack from '@views/account/AccountIconBlack';\nimport AccountIconWhite from '@views/account/AccountIconWhite';\nimport CountrySelector from '@globals/country-selector/CountrySelector.client';\nimport Navigation from '@globals/navigation/Navigation.client';\nimport NavigationDrawer from '@globals/navigation/NavigationDrawer.client';\nimport MobileNavigation from '@globals/navigation/MobileNavigation.client';\nimport SearchButton from '@globals/search/SearchButton.client';\nimport SearchDrawer from '@globals/search/SearchDrawer.client';\nimport {useHeader} from './HeaderProvider.client';\nimport {useGlobalSettings} from 'Js/hooks/useGlobalSettings';\nimport { ErrorBoundary } from '../error-boundary/ErrorBoundary.client';\n\n/**\n * A client component that specifies the content of the header on the website\n */\nexport function Header({\n children,\n countryData,\n countryWarning,\n footerData,\n hasPromoBanner,\n headerData,\n isLoggedIn,\n searchData,\n theme = 'dark',\n}: {\n children?: React.ReactNode;\n countryData: any;\n countryWarning?: boolean;\n footerData: any;\n hasPromoBanner: boolean;\n headerData: any;\n isLoggedIn: boolean;\n searchData: any;\n theme: string;\n}) {\n const {mainColor} = useGlobalSettings();\n const {showPromoBanner} = useHeader();\n const url = useUrl();\n const allowTransparentHeader = theme === 'light';\n\n const isMobile = useMediaQuery('(max-width: 1023px)');\n const [desktopNavTab, setDesktopNavTab] = useState('');\n const [isMobileNavOpen, setIsMobileNavOpen] = useState(false);\n const [isScrolled, setIsScrolled] = useState(false);\n const [searchDrawerOpen, setSearchDrawerOpen] = useState(false);\n const [scrollbarWidth, setScrollbarWidth] = useState(0);\n const [headerHovered, setHeaderHovered] = useState(false);\n const [headerSolid, setHeaderSolid] = useState(\n isMobile || !allowTransparentHeader,\n );\n // @ts-ignore\n const {isCartOpen, openCart} = useCartUI() || {};\n\n // Reset drawers on url change\n useEffect(() => {\n setSearchDrawerOpen(false);\n setDesktopNavTab('');\n setIsMobileNavOpen(false);\n }, [url]);\n\n useEffect(() => {\n const scrollbarWidth =\n window.innerWidth - document.documentElement.clientWidth;\n\n setScrollbarWidth(scrollbarWidth);\n }, [isCartOpen]);\n\n useEffect(() => {\n if (isMobile || !allowTransparentHeader) setHeaderSolid(true);\n }, [isMobile, allowTransparentHeader]);\n\n useEffect(() => {\n if (!document || !allowTransparentHeader) return;\n const handleHeaderScroll = () => {\n if (headerHovered || isMobile || !allowTransparentHeader) return;\n setHeaderSolid(window.scrollY > 0);\n setIsScrolled(window.scrollY > 0);\n };\n\n const debouncedHandleHeaderScroll = () => {\n debounceFn(handleHeaderScroll, 100);\n };\n\n handleHeaderScroll();\n document.addEventListener('scroll', debouncedHandleHeaderScroll);\n\n return () => {\n document.removeEventListener('scroll', debouncedHandleHeaderScroll);\n };\n }, [isMobile, allowTransparentHeader, headerHovered]);\n\n const debounceFn = (method: any, delay: number) => {\n setTimeout(() => method(), delay);\n };\n\n useEffect(() => {\n if (searchDrawerOpen && isMobile) {\n document.body.classList.add('overflow-hidden');\n }\n\n if (!searchDrawerOpen && isMobile) {\n document.body.classList.remove('overflow-hidden');\n }\n }, [searchDrawerOpen]);\n\n const handleSetHeaderHovered = (shouldSet: boolean) => {\n if (!allowTransparentHeader || isMobile) return;\n const shouldSetSolid = isScrolled || shouldSet;\n setHeaderHovered(shouldSet);\n setHeaderSolid(shouldSetSolid);\n };\n\n const {\n enableDropdownIcon,\n enableSimpleMenu,\n countryPicker,\n navigation,\n navigationAlignment,\n } = headerData || {};\n\n return (\n handleSetHeaderHovered(true)}\n onMouseLeave={() => handleSetHeaderHovered(false)}\n >\n {children}\n \n \n
\n \n \n \n\n \n\n
\n
\n \n
\n {!import.meta.env.SSR && (\n \n )}\n
\n
\n
\n\n \n\n \n {headerSolid ? : }\n \n\n {\n if (isMobileNavOpen) setIsMobileNavOpen(false);\n }}\n headerSolid={headerSolid}\n />\n \n
\n
\n \n\n \n \n \n \n \n \n );\n}\n\nexport function MainLogoIcon({\n headerSolid,\n logoColor,\n}: {\n headerSolid: boolean;\n logoColor?: string | null;\n}) {\n const defaultColor = headerSolid ? 'rgb(98, 85, 74)' : 'white';\n return (\n \n Skims\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n"],"names":["AccountIconBlack","width","height","viewBox","version","xmlns","xmlnsXlink","children","_jsx","id","stroke","strokeWidth","fill","fillRule","strokeLinecap","strokeLinejoin","transform","d","AccountIconWhite","SearchDrawer","headerSolid","searchData","searchDrawerOpen","setSearchDrawerOpen","showPromoBanner","logoColor","setCartOpen","navigate","useNavigate","searchInput","useRef","searchValue","setSearchValue","useState","searchResults","setSearchResults","searchSuggestions","setSearchSuggestions","defaultDySearchRecs","setDefaultDySearchRecs","searchSpringId","suggestions","suggestionProducts","country","useLocalization","blockedKeywords","mappedDefaultRecs","length","slice","map","item","pathname","URL","productData","url","productDataSlug","replace","images","altText","name","src","image_url","slug","current","_type","title","slotId","predictiveSearch","searchString","suggestionEndpoint","data","siteId","query","suggestionCount","fetch","method","body","JSON","stringify","headers","then","res","json","resp","alternatives","isoCode","filterBlockedResults","searchQuery","suggested","text","debounceFn","handleSearchQuery","catch","error","results","filter","obj","some","ss_name","toLowerCase","includes","kw","event","preventDefault","isSubmit","type","value","baseUrl","q","resultsFormat","resultsPerPage","Accept","ok","Error","status","Array","isArray","didYouMean","checkedTitles","Set","matchingResults","otherResults","forEach","result","productTitle","split","productTitleColor","color","tags_filterparentcolor","variantColor","variant_color","filterColor","tags_filtercolor","has","add","isBlocked","image","unshift","startsWith","push","sortedResults","console","ss_blocked_country_codes","ss_blocked_device_types","delay","setTimeout","useEffect","focus","response","fetchDySearchRecs","choices","variations","payload","slots","e","handleOpenCart","className","onMouseLeave","target","ErrorBoundary","tags","_component","_inComponent","Suspense","_jsxs","onClick","CloseBlackIcon","Link","to","MainLogoIcon","CartIconBlack","onSubmit","SearchIcon","placeholder","onChange","ref","suggestedHeading","suggestion","href","defaultSuggestions","searchHeading","handle","store","productHandle","reportDySlotClick","Image","alt","cx","cy","r","x1","y1","x2","y2","Header","countryData","countryWarning","footerData","hasPromoBanner","headerData","isLoggedIn","theme","mainColor","useGlobalSettings","useHeader","useUrl","allowTransparentHeader","isMobile","useMediaQuery","desktopNavTab","setDesktopNavTab","isMobileNavOpen","setIsMobileNavOpen","isScrolled","setIsScrolled","scrollbarWidth","setScrollbarWidth","headerHovered","setHeaderHovered","setHeaderSolid","isCartOpen","openCart","useCartUI","window","innerWidth","document","documentElement","clientWidth","handleHeaderScroll","scrollY","debouncedHandleHeaderScroll","addEventListener","removeEventListener","classList","remove","handleSetHeaderHovered","shouldSet","shouldSetSolid","enableDropdownIcon","enableSimpleMenu","countryPicker","navigation","navigationAlignment","role","onMouseEnter","style","backgroundColor","paddingRight","Navigation","openTab","setOpenTab","fallback","CountrySelector","buttonClass","SearchButton","setMobileNavOpen","CartToggle","handleClick","MobileNavigation","isOpen","setIsOpen","NavigationDrawer"],"mappings":"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"}