@faststore/core 3.0.146 → 3.0.148
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +24 -24
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/cache/config.json +3 -3
- package/.next/cache/eslint/.cache_1gneedd +1 -1
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.js +1 -1
- package/.next/prerender-manifest.json +1 -1
- package/.next/react-loadable-manifest.json +25 -24
- package/.next/routes-manifest.json +1 -1
- package/.next/server/chunks/5679.js +1 -1
- package/.next/server/chunks/6604.js +1 -1
- package/.next/server/chunks/7675.js +1 -0
- package/.next/server/chunks/7917.js +1 -1
- package/.next/server/chunks/9646.js +3 -3
- package/.next/server/chunks/9844.js +1 -1
- package/.next/server/chunks/UINavbarSlider.js +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.js +1 -1
- package/.next/server/pages/404.js.nft.json +1 -1
- package/.next/server/pages/500.js +1 -1
- package/.next/server/pages/500.js.nft.json +1 -1
- package/.next/server/pages/[...slug].js +1 -1
- package/.next/server/pages/[...slug].js.nft.json +1 -1
- package/.next/server/pages/[slug]/p.js +1 -1
- package/.next/server/pages/[slug]/p.js.nft.json +1 -1
- package/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/server/pages/account.js +1 -1
- package/.next/server/pages/account.js.nft.json +1 -1
- package/.next/server/pages/api/graphql.js.nft.json +1 -1
- package/.next/server/pages/api/health/live.js.nft.json +1 -1
- package/.next/server/pages/api/health/ready.js.nft.json +1 -1
- package/.next/server/pages/api/preview.js.nft.json +1 -1
- package/.next/server/pages/checkout.js +1 -1
- package/.next/server/pages/checkout.js.nft.json +1 -1
- package/.next/server/pages/en-US/404.html +1 -1
- package/.next/server/pages/en-US/404.json +1 -1
- package/.next/server/pages/en-US/500.html +1 -1
- package/.next/server/pages/en-US/500.json +1 -1
- package/.next/server/pages/en-US/account.html +1 -1
- package/.next/server/pages/en-US/account.json +1 -1
- package/.next/server/pages/en-US/checkout.html +1 -1
- package/.next/server/pages/en-US/checkout.json +1 -1
- package/.next/server/pages/en-US/login.html +1 -1
- package/.next/server/pages/en-US/login.json +1 -1
- package/.next/server/pages/en-US/s.html +1 -1
- package/.next/server/pages/en-US/s.json +1 -1
- package/.next/server/pages/en-US.html +2 -2
- package/.next/server/pages/en-US.json +1 -1
- package/.next/server/pages/index.js +1 -1
- package/.next/server/pages/index.js.nft.json +1 -1
- package/.next/server/pages/login.js +1 -1
- package/.next/server/pages/login.js.nft.json +1 -1
- package/.next/server/pages/s.js +1 -1
- package/.next/server/pages/s.js.nft.json +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/static/chunks/343.d1c1e47ba6dfb4d9.js +1 -0
- package/.next/static/chunks/{388.5781b3f7dbc6616d.js → 388.0b1a49b31ff12af9.js} +1 -1
- package/.next/static/chunks/523.3d7b72011d05148e.js +1 -0
- package/.next/static/chunks/61-85c56c64992419d8.js +1 -0
- package/.next/static/chunks/{617.8816a140189edbcf.js → 617.0a2a7e39a7f3d4cc.js} +1 -1
- package/.next/static/chunks/{707-5963faf534c5cd23.js → 707-04bc546eb86a5e61.js} +1 -1
- package/.next/static/chunks/Toast.9c015005521b0f2d.js +1 -0
- package/.next/static/chunks/{UIToast.b6a96d79a157fa0a.js → UIToast.b5c0885cbd078c88.js} +1 -1
- package/.next/static/chunks/webpack-642f67e818afdfea.js +1 -0
- package/.next/static/{O3CQ1qoEzO8xogw5LMeSH → xMJeuq2CpfkQ-Z8xALZD0}/_buildManifest.js +1 -1
- package/.next/trace +99 -99
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-test.log +5 -5
- package/package.json +2 -2
- package/src/components/navigation/Navbar/Navbar.tsx +20 -17
- package/src/components/navigation/NavbarLinks/NavbarLinks.tsx +3 -3
- package/src/components/search/SearchDropdown/SearchDropdown.tsx +0 -1
- package/src/components/search/SearchInput/SearchInput.tsx +73 -46
- package/src/middleware__DISABLED.ts +65 -0
- package/.next/server/chunks/2524.js +0 -1
- package/.next/server/chunks/3295.js +0 -1
- package/.next/server/chunks/8188.js +0 -1
- package/.next/static/chunks/295.063a68ad8bfc881d.js +0 -1
- package/.next/static/chunks/343.f76546894e65db1a.js +0 -1
- package/.next/static/chunks/523.21a1ec53ebcfbb52.js +0 -1
- package/.next/static/chunks/61-122c72064f15206c.js +0 -1
- package/.next/static/chunks/Toast.e5749c27bbb861c8.js +0 -1
- package/.next/static/chunks/webpack-7fd9ef0958e17118.js +0 -1
- /package/.next/static/{O3CQ1qoEzO8xogw5LMeSH → xMJeuq2CpfkQ-Z8xALZD0}/_ssgManifest.js +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -46,7 +46,7 @@ Warning: Dynamic Content not found for the page: home. Refer to the Dynamic Cont
|
|
|
46
46
|
Collecting build traces ...
|
|
47
47
|
|
|
48
48
|
Route (pages) Size First Load JS
|
|
49
|
-
┌ ● / 1.23 kB
|
|
49
|
+
┌ ● / 1.23 kB 144 kB
|
|
50
50
|
├ └ css/197e314c5a03eabd.css 740 B
|
|
51
51
|
├ /_app 0 B 90.9 kB
|
|
52
52
|
├ ● /[...slug] 2.79 kB 157 kB
|
|
@@ -67,11 +67,11 @@ Route (pages) Size First Load JS
|
|
|
67
67
|
├ chunks/framework-8e279965036b6169.js 45.4 kB
|
|
68
68
|
├ chunks/main-029f1328cfee9686.js 33.1 kB
|
|
69
69
|
├ chunks/pages/_app-cb1c3a94f987c5c8.js 9.87 kB
|
|
70
|
-
├ chunks/webpack-
|
|
70
|
+
├ chunks/webpack-642f67e818afdfea.js 2.6 kB
|
|
71
71
|
└ css/ee0556daedda6306.css 3.07 kB
|
|
72
72
|
|
|
73
73
|
λ (Server) server-side renders at runtime (uses getInitialProps or getServerSideProps)
|
|
74
74
|
○ (Static) automatically rendered as static HTML (uses no initial props)
|
|
75
75
|
● (SSG) automatically generated as static HTML + JSON (uses getStaticProps)
|
|
76
76
|
|
|
77
|
-
Done in
|
|
77
|
+
Done in 72.55s.
|
package/.turbo/turbo-lint.log
CHANGED
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
yarn run v1.22.22
|
|
2
2
|
$ jest
|
|
3
|
-
PASS test/
|
|
4
|
-
PASS test/
|
|
5
|
-
PASS test/server/index.test.ts (38.
|
|
3
|
+
PASS test/utils/multipleTemplates.test.ts (34.693 s)
|
|
4
|
+
PASS test/server/cms/index.test.ts (35.568 s)
|
|
5
|
+
PASS test/server/index.test.ts (38.301 s)
|
|
6
6
|
|
|
7
7
|
Test Suites: 3 passed, 3 total
|
|
8
8
|
Tests: 19 passed, 19 total
|
|
9
9
|
Snapshots: 0 total
|
|
10
|
-
Time: 39.
|
|
10
|
+
Time: 39.41 s
|
|
11
11
|
Ran all test suites.
|
|
12
|
-
Done in 41.
|
|
12
|
+
Done in 41.20s.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@faststore/core",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.148",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "vtex/faststore",
|
|
6
6
|
"browserslist": "supports es6-module and not dead",
|
|
@@ -128,5 +128,5 @@
|
|
|
128
128
|
"node": "18.19.0",
|
|
129
129
|
"yarn": "1.19.1"
|
|
130
130
|
},
|
|
131
|
-
"gitHead": "
|
|
131
|
+
"gitHead": "95acfb993977fe1cca3873b845c6b7861483ac1e"
|
|
132
132
|
}
|
|
@@ -97,7 +97,7 @@ function Navbar({
|
|
|
97
97
|
} = useOverrideComponents<'Navbar'>()
|
|
98
98
|
const scrollDirection = useScrollDirection()
|
|
99
99
|
const { openNavbar, navbar: displayNavbar } = useUI()
|
|
100
|
-
const { isDesktop } = useScreenResize()
|
|
100
|
+
const { isDesktop, isMobile } = useScreenResize()
|
|
101
101
|
|
|
102
102
|
const searchMobileRef = useRef<SearchInputRef>(null)
|
|
103
103
|
const [searchExpanded, setSearchExpanded] = useState(false)
|
|
@@ -139,10 +139,12 @@ function Navbar({
|
|
|
139
139
|
</>
|
|
140
140
|
)}
|
|
141
141
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
142
|
+
{isDesktop && (
|
|
143
|
+
<SearchInput
|
|
144
|
+
placeholder={searchInput?.placeholder}
|
|
145
|
+
sort={searchInput?.sort}
|
|
146
|
+
/>
|
|
147
|
+
)}
|
|
146
148
|
|
|
147
149
|
<NavbarButtons.Component
|
|
148
150
|
searchExpanded={searchExpanded}
|
|
@@ -160,18 +162,19 @@ function Navbar({
|
|
|
160
162
|
/>
|
|
161
163
|
)}
|
|
162
164
|
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
165
|
+
{!isDesktop && (
|
|
166
|
+
<SearchInput
|
|
167
|
+
placeholder=""
|
|
168
|
+
ref={searchMobileRef}
|
|
169
|
+
testId="store-input-mobile"
|
|
170
|
+
buttonTestId="store-input-mobile-button"
|
|
171
|
+
onSearchClick={handlerExpandSearch}
|
|
172
|
+
sort={searchInput?.sort}
|
|
173
|
+
hidden={!searchExpanded}
|
|
174
|
+
aria-hidden={!searchExpanded}
|
|
175
|
+
/>
|
|
176
|
+
)}
|
|
177
|
+
{!isMobile && <ButtonSignIn.Component {...signInButton} />}
|
|
175
178
|
|
|
176
179
|
<CartToggle {...cart} />
|
|
177
180
|
</NavbarButtons.Component>
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type { AnchorHTMLAttributes } from 'react'
|
|
2
2
|
|
|
3
|
-
import { NavbarLinksListItem as UINavbarLinksListItem } from '@faststore/ui'
|
|
4
3
|
import type { NavbarLinksProps as UINavbarLinksProps } from '@faststore/ui'
|
|
4
|
+
import { NavbarLinksListItem as UINavbarLinksListItem } from '@faststore/ui'
|
|
5
5
|
|
|
6
|
-
import Link from 'src/components/ui/Link'
|
|
7
|
-
import RegionButton from 'src/components/region/RegionButton'
|
|
8
6
|
import type { NavbarProps } from 'src/components/navigation/Navbar'
|
|
7
|
+
import RegionButton from 'src/components/region/RegionButton'
|
|
8
|
+
import Link from 'src/components/ui/Link'
|
|
9
9
|
|
|
10
10
|
import { useOverrideComponents } from 'src/sdk/overrides/OverrideContext'
|
|
11
11
|
|
|
@@ -13,7 +13,6 @@ import { SearchState } from '@faststore/sdk'
|
|
|
13
13
|
import { ProductSummary_ProductFragment } from '@generated/graphql'
|
|
14
14
|
import SearchProductItem from 'src/components/search/SearchProductItem'
|
|
15
15
|
import { formatSearchPath } from 'src/sdk/search/formatSearchPath'
|
|
16
|
-
|
|
17
16
|
interface SearchDropdownProps {
|
|
18
17
|
sort: SearchState['sort']
|
|
19
18
|
[key: string]: any
|
|
@@ -1,16 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
import type {
|
|
4
|
-
SearchInputFieldProps as UISearchInputFieldProps,
|
|
5
|
-
SearchInputFieldRef as UISearchInputFieldRef,
|
|
6
|
-
} from '@faststore/ui'
|
|
7
|
-
import {
|
|
8
|
-
SearchProviderContextValue,
|
|
9
|
-
SearchInput as UISearchInput,
|
|
10
|
-
SearchInputField as UISearchInputField,
|
|
11
|
-
} from '@faststore/ui'
|
|
12
|
-
import { useRouter } from 'next/router'
|
|
13
|
-
import type { CSSProperties } from 'react'
|
|
1
|
+
import type { CSSProperties, SetStateAction } from 'react'
|
|
14
2
|
import {
|
|
15
3
|
Suspense,
|
|
16
4
|
forwardRef,
|
|
@@ -21,14 +9,40 @@ import {
|
|
|
21
9
|
useState,
|
|
22
10
|
} from 'react'
|
|
23
11
|
|
|
12
|
+
import dynamic from 'next/dynamic'
|
|
13
|
+
import { useRouter } from 'next/router'
|
|
14
|
+
|
|
15
|
+
import type { SearchEvent, SearchState } from '@faststore/sdk'
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
Icon as UIIcon,
|
|
19
|
+
IconButton as UIIconButton,
|
|
20
|
+
SearchInput as UISearchInput,
|
|
21
|
+
} from '@faststore/ui'
|
|
22
|
+
|
|
23
|
+
import type {
|
|
24
|
+
SearchInputFieldProps as UISearchInputFieldProps,
|
|
25
|
+
SearchInputFieldRef as UISearchInputFieldRef,
|
|
26
|
+
} from '@faststore/ui'
|
|
27
|
+
|
|
28
|
+
import { SearchProviderContextValue } from '@faststore/ui'
|
|
29
|
+
|
|
24
30
|
import useSearchHistory from 'src/sdk/search/useSearchHistory'
|
|
25
31
|
import useSuggestions from 'src/sdk/search/useSuggestions'
|
|
26
32
|
import useOnClickOutside from 'src/sdk/ui/useOnClickOutside'
|
|
27
33
|
|
|
34
|
+
import { formatSearchPath } from 'src/sdk/search/formatSearchPath'
|
|
35
|
+
|
|
28
36
|
const SearchDropdown = lazy(
|
|
37
|
+
/* webpackChunkName: "SearchDropdown" */
|
|
29
38
|
() => import('src/components/search/SearchDropdown')
|
|
30
39
|
)
|
|
31
40
|
|
|
41
|
+
const UISearchInputField = dynamic<UISearchInputFieldProps & any>(() =>
|
|
42
|
+
/* webpackChunkName: "UISearchInputField" */
|
|
43
|
+
import('@faststore/ui').then((module) => module.SearchInputField)
|
|
44
|
+
)
|
|
45
|
+
|
|
32
46
|
const MAX_SUGGESTIONS = 5
|
|
33
47
|
|
|
34
48
|
export type SearchInputProps = {
|
|
@@ -64,6 +78,7 @@ const SearchInput = forwardRef<SearchInputRef, SearchInputProps>(
|
|
|
64
78
|
},
|
|
65
79
|
ref
|
|
66
80
|
) {
|
|
81
|
+
const { hidden } = otherProps
|
|
67
82
|
const [searchQuery, setSearchQuery] = useState<string>('')
|
|
68
83
|
const searchQueryDeferred = useDeferredValue(searchQuery)
|
|
69
84
|
const [searchDropdownVisible, setSearchDropdownVisible] =
|
|
@@ -100,27 +115,39 @@ const SearchInput = forwardRef<SearchInputRef, SearchInputProps>(
|
|
|
100
115
|
)
|
|
101
116
|
const isLoading = !error && !data
|
|
102
117
|
|
|
118
|
+
const buttonProps = {
|
|
119
|
+
onClick: onSearchClick,
|
|
120
|
+
testId: buttonTestId,
|
|
121
|
+
}
|
|
122
|
+
|
|
103
123
|
return (
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
+
<>
|
|
125
|
+
{hidden ? (
|
|
126
|
+
<UIIconButton
|
|
127
|
+
type="submit"
|
|
128
|
+
aria-label="Submit Search"
|
|
129
|
+
icon={<UIIcon name="MagnifyingGlass" />}
|
|
130
|
+
size="small"
|
|
131
|
+
{...buttonProps}
|
|
132
|
+
/>
|
|
133
|
+
) : (
|
|
134
|
+
<UISearchInput
|
|
135
|
+
ref={searchRef}
|
|
136
|
+
visibleDropdown={searchDropdownVisible}
|
|
137
|
+
onSearchSelection={onSearchSelection}
|
|
138
|
+
term={searchQueryDeferred}
|
|
139
|
+
terms={terms}
|
|
140
|
+
products={products}
|
|
141
|
+
isLoading={isLoading}
|
|
142
|
+
>
|
|
143
|
+
<UISearchInputField
|
|
144
|
+
ref={ref}
|
|
145
|
+
buttonProps={buttonProps}
|
|
146
|
+
placeholder={placeholder}
|
|
147
|
+
onChange={(e: { target: { value: SetStateAction<string> } }) =>
|
|
148
|
+
setSearchQuery(e.target.value)
|
|
149
|
+
}
|
|
150
|
+
onSubmit={(term: string) => {
|
|
124
151
|
const path = formatSearchPath({
|
|
125
152
|
term,
|
|
126
153
|
sort: sort as SearchState['sort'],
|
|
@@ -128,20 +155,20 @@ const SearchInput = forwardRef<SearchInputRef, SearchInputProps>(
|
|
|
128
155
|
|
|
129
156
|
onSearchSelection(term, path)
|
|
130
157
|
router.push(path)
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
</
|
|
158
|
+
}}
|
|
159
|
+
onFocus={() => setSearchDropdownVisible(true)}
|
|
160
|
+
value={searchQuery}
|
|
161
|
+
{...otherProps}
|
|
162
|
+
/>
|
|
163
|
+
|
|
164
|
+
{searchDropdownVisible && (
|
|
165
|
+
<Suspense fallback={null}>
|
|
166
|
+
<SearchDropdown sort={sort as SearchState['sort']} />
|
|
167
|
+
</Suspense>
|
|
168
|
+
)}
|
|
169
|
+
</UISearchInput>
|
|
143
170
|
)}
|
|
144
|
-
|
|
171
|
+
</>
|
|
145
172
|
)
|
|
146
173
|
}
|
|
147
174
|
)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This middleware is disabled by default. Only stores that are in
|
|
3
|
+
* homebrew and want this functionality will be able to enable it via
|
|
4
|
+
* a feature flag. When the flag is active, the CLI at build time will
|
|
5
|
+
* check whether the ENABLE_REDIRECTS_MIDDLEWARE flag is set or not,
|
|
6
|
+
* if so, the file name will be changed to middleware.ts and nextjs
|
|
7
|
+
* will know how to automatically deal with it.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { NextResponse } from 'next/server'
|
|
11
|
+
import type { NextRequest } from 'next/server'
|
|
12
|
+
import storeConfig from 'discovery.config'
|
|
13
|
+
|
|
14
|
+
type Redirect = {
|
|
15
|
+
from: string
|
|
16
|
+
to: string
|
|
17
|
+
type: 'permanent' | 'temporary'
|
|
18
|
+
}
|
|
19
|
+
interface RedirectsClient {
|
|
20
|
+
get(from: string): Promise<Redirect | null>
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
class DynamoRedirectsClient implements RedirectsClient {
|
|
24
|
+
async get(from: string): Promise<Redirect | null> {
|
|
25
|
+
// TODO: Implement DynamoDB client. Ensure that the cluster has access to DynamoDB first.
|
|
26
|
+
return null
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const redirectsClient = new DynamoRedirectsClient()
|
|
31
|
+
|
|
32
|
+
export async function middleware(request: NextRequest) {
|
|
33
|
+
const { pathname } = request.nextUrl
|
|
34
|
+
|
|
35
|
+
const redirect = await redirectsClient.get(pathname)
|
|
36
|
+
|
|
37
|
+
if (redirect) {
|
|
38
|
+
const redirectUrl = new URL(redirect.to, storeConfig.storeUrl)
|
|
39
|
+
const redirectStatusCode = redirect.type === 'permanent' ? 301 : 302
|
|
40
|
+
|
|
41
|
+
const response = NextResponse.redirect(redirectUrl, redirectStatusCode)
|
|
42
|
+
|
|
43
|
+
response.headers.set(
|
|
44
|
+
'Cache-Control',
|
|
45
|
+
'public, max-age=300, stale-while-revalidate=31536000'
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
return response
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return NextResponse.next()
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const config = {
|
|
55
|
+
matcher: [
|
|
56
|
+
/*
|
|
57
|
+
* Match all request paths except for the ones starting with:
|
|
58
|
+
* - api (API routes)
|
|
59
|
+
* - _next/static (static files)
|
|
60
|
+
* - _next/image (image optimization files)
|
|
61
|
+
* - favicon.ico (favicon file)
|
|
62
|
+
*/
|
|
63
|
+
'/((?!api|_next/static|_next/image|favicon.ico).*)',
|
|
64
|
+
],
|
|
65
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=2524,exports.ids=[2524],exports.modules={2524:(e,a,s)=>{s.d(a,{X:()=>useSearchState,j:()=>initialize});var t=s(6689),r=s(2339);let initialize=({sort:e="score_desc",selectedFacets:a=[],term:s=null,base:t="/",page:r=0,passThrough:l=new URLSearchParams}={})=>({sort:e,selectedFacets:a,term:s,base:t,page:r,passThrough:l}),equals=(e,a)=>(0,r.Z)(e).href===(0,r.Z)(a).href,useSearchState=(e,a)=>{let s=(0,t.useMemo)(()=>initialize(e),[e]);return(0,t.useMemo)(()=>({state:s,setState:e=>!equals(e,s)&&a((0,r.Z)(e))}),[a,s])}},2339:(e,a,s)=>{s.d(a,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});let __WEBPACK_DEFAULT_EXPORT__=e=>{let a=new URL(e.base,"http://localhost"),{page:s,selectedFacets:t,sort:r,term:l,passThrough:i}=e;null!==l&&a.searchParams.set("q",l);let o=new Set;for(let e of t)a.searchParams.append(e.key,e.value),o.add(e.key);if(t.length>0&&a.searchParams.set("facets",Array.from(o).join(",")),a.searchParams.set("sort",r),a.searchParams.set("page",s.toString()),i)for(let[e,s]of i.entries())a.searchParams.append(e,s);return a}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=3295,exports.ids=[3295],exports.modules={1120:(r,t,e)=>{e.r(t),e.d(t,{formatSearchPath:()=>formatSearchPath});var a=e(2339),s=e(2524);let formatSearchPath=({term:r,sort:t})=>{let{pathname:e,search:o}=(0,a.Z)((0,s.j)({term:r,sort:t,base:"/s"}));return`${e}${o}`}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";exports.id=8188,exports.ids=[8188],exports.modules={9380:(e,t,r)=>{r.d(t,{n:()=>createCartStore});var s=r(2254),i=r(9578);let createCartStore=(e,t,r="fs::cart")=>{let a=(0,i.M)(e,r,t),getItem=e=>a.read().items.find(t=>t.id===e);return{...a,getItem,addItem:e=>{if(!e.id)throw new s.q("You must provide an `id` for items");if(e.quantity<0)throw new s.q("Item quantity needs to be higher than zero");let t=a.read(),r=getItem(e.id),i=r?{...e,quantity:r.quantity+e.quantity}:e;a.set({...t,items:r?t.items.map(e=>e===r?i:e):[...t.items,i]})},updateItemQuantity:(e,t)=>{let r=a.read(),i=getItem(e);if(!i)throw new s.q(`Item with id not found: ${e}`);let n={...i,quantity:t};a.set({...r,items:r.items.map(e=>e===i?n:e).filter(e=>e.quantity>0)})},removeItem:e=>{let t=a.read(),r=getItem(e);a.set({...t,items:t.items.filter(e=>e!==r)})},emptyCart:()=>a.set({...a.read(),items:[]}),inCart:e=>!!getItem(e),isEmpty:()=>0===a.read().items.length}}},8987:(e,t,r)=>{r.d(t,{S:()=>createSessionStore});var s=r(9578);let createSessionStore=(e,t,r="fs::session")=>(0,s.M)(e,r,t)},3365:(e,t,r)=>{r.d(t,{M:()=>createStore});let createStore=e=>{let t=new Set,r=new Set,s=e;return{set:e=>{s=e,r.forEach(e=>e()),r.clear(),t.forEach(t=>{let s=t(e);"function"==typeof s&&r.add(s)})},read:()=>s,readInitial:()=>e,subscribe:e=>(t.add(e),()=>{t.delete(e)})}}},9578:(e,t,r)=>{r.d(t,{M:()=>createStore});var s=r(4375),i=r(5214),a=r(8901),n=r(8956),d=r(3365);let identity=e=>e,createStore=(e,t,r)=>(0,n.q)([t?(0,a.r)(t):identity,t?(0,s.R)(t):identity,r?(0,i.A)(r):identity],(0,d.M)(e))},5214:(e,t,r)=>{r.d(t,{A:()=>optimistic});let trivial=async()=>null,optimistic=(e=trivial)=>{let t=Promise.resolve();return r=>(r.subscribe(s=>{let i=!1,handler=async()=>{if(i)return;let t=await e(s);i||null===t||r.set(t)};return t=t.then(handler),()=>{i=!0}}),r)}},4375:(e,t,r)=>{r.d(t,{R:()=>persisted});var s=r(3430);let getIDB=async e=>{try{return await (0,s.get)(e)}catch(e){return}},setIDB=async(e,t)=>{try{await (0,s.set)(e,t)}catch(e){}},debounce=(e,t)=>{let r;return(...s)=>{clearTimeout(r),r=setTimeout(()=>{e(...s)},t)}},persisted=e=>t=>{let handler=async()=>{let r=await getIDB(e);"undefined"!=typeof document&&t.set(r??t.readInitial())},r=debounce(handler,500);return r(),globalThis.addEventListener?.("focus",()=>r()),globalThis.document?.addEventListener("visibilitychange",()=>"visible"===document.visibilityState&&r()),t.subscribe(t=>{setIDB(e,t)}),t}},8901:(e,t,r)=>{r.d(t,{r:()=>singleton}),globalThis.faststore_sdk_stores=globalThis.faststore_sdk_stores??new Map;let singleton=e=>t=>{let r=globalThis.faststore_sdk_stores;return r.has(e)||r.set(e,t),r.get(e)}},8956:(e,t,r)=>{r.d(t,{q:()=>compose});let compose=(e,t)=>e.reduce((e,t)=>t(e),t)},2254:(e,t,r)=>{r.d(t,{q:()=>SDKError});let SDKError=class SDKError extends Error{constructor(e){super(`[sdk]: ${e}`)}}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[295],{1120:function(e,a,t){t.r(a),t.d(a,{formatSearchPath:function(){return formatSearchPath}});var r=t(2339),s=t(2524),formatSearchPath=e=>{var{term:a,sort:t}=e,{pathname:n,search:c}=(0,r.Z)((0,s.j)({term:a,sort:t,base:"/s"}));return"".concat(n).concat(c)}},2524:function(e,a,t){t.d(a,{X:function(){return useSearchState},j:function(){return initialize}});var r=t(2784),s=t(2339);let initialize=({sort:e="score_desc",selectedFacets:a=[],term:t=null,base:r="/",page:s=0,passThrough:n=new URLSearchParams}={})=>({sort:e,selectedFacets:a,term:t,base:r,page:s,passThrough:n}),equals=(e,a)=>(0,s.Z)(e).href===(0,s.Z)(a).href,useSearchState=(e,a)=>{let t=(0,r.useMemo)(()=>initialize(e),[e]);return(0,r.useMemo)(()=>({state:t,setState:e=>!equals(e,t)&&a((0,s.Z)(e))}),[a,t])}},2339:function(e,a){a.Z=e=>{let a=new URL(e.base,"http://localhost"),{page:t,selectedFacets:r,sort:s,term:n,passThrough:c}=e;null!==n&&a.searchParams.set("q",n);let u=new Set;for(let e of r)a.searchParams.append(e.key,e.value),u.add(e.key);if(r.length>0&&a.searchParams.set("facets",Array.from(u).join(",")),a.searchParams.set("sort",s),a.searchParams.set("page",t.toString()),c)for(let[e,t]of c.entries())a.searchParams.append(e,t);return a}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[343,195],{1153:function(e,t,r){r.r(t),r.d(t,{ANALYTICS_EVENT_TYPE:function(){return n.vi},STORE_EVENT_PREFIX:function(){return n.Mi},SearchProvider:function(){return c.z},UIContext:function(){return g},UIProvider:function(){return Provider_Provider},compose:function(){return I.q},createBaseStore:function(){return m.M},createCartStore:function(){return v.n},createSessionStore:function(){return p.S},createStore:function(){return y.M},formatSearchState:function(){return u.Z},initSearchState:function(){return i.j},isSearchSort:function(){return s.wb},optimistic:function(){return _.A},parseSearchState:function(){return o.Q},persisted:function(){return w.R},removeFacet:function(){return s.Ru},sendAnalyticsEvent:function(){return sendAnalyticsEvent},setFacet:function(){return s.uL},singleton:function(){return P.r},toggleFacet:function(){return s.wB},toggleFacets:function(){return s.a2},useAnalyticsEvent:function(){return a.W},useGlobalUIState:function(){return useGlobalUIState},usePagination:function(){return f.h},useSearch:function(){return l.R}});var n=r(4950);let sendAnalyticsEvent=e=>{try{window.postMessage((0,n.re)(e),window.origin)}catch(e){console.error(e)}};var a=r(8529),o=r(6142),u=r(2339),i=r(2524),s=r(9664),c=r(1197),l=r(9029),f=r(1341),d=r(2784);let g=(0,d.createContext)(void 0);g.displayName="UIContext";let S={displayMinicart:!1},reducer=e=>{let t={OPEN_MINICART:e=>({...e,displayMinicart:!0}),CLOSE_MINICART:e=>({...e,displayMinicart:!1}),...e};return(e,{type:r,data:n})=>{let a=t[r];if("function"==typeof a)return a(e,n);throw Error("Unknown UI state")}},defaultEffects=()=>({}),Provider_Provider=({children:e,actions:t={},effects:r=defaultEffects,initialState:n={}})=>{let[a,o]=(0,d.useReducer)(reducer(t),{...S,...n}),u=(0,d.useMemo)(()=>({...r(o),openMinicart:()=>o({type:"OPEN_MINICART"}),closeMinicart:()=>o({type:"CLOSE_MINICART"})}),[r]),i=(0,d.useMemo)(()=>({...a,...u}),[u,a]);return d.createElement(g.Provider,{value:i},e)};var h=r(7943);let useGlobalUIState=()=>(0,h.q)(g);var p=r(8987),v=r(9380),m=r(3365),y=r(9578),_=r(5214),w=r(4375),P=r(8901),I=r(8956)},1197:function(e,t,r){r.d(t,{_:function(){return u},z:function(){return Provider}});var n=r(2784),a=r(2254);function setPagesSessionStorage(e){try{let t=window.history.state?.key;if(!t)return;let r=`__fs_gallery_page_${t}`;sessionStorage.setItem(r,JSON.stringify(e))}catch(e){return}}let reducer=(e,t)=>{switch(t.type){case"addPrev":{let t=e[0]-1,r=[t,...e];return setPagesSessionStorage(r),r}case"addNext":{let t=Number(e[e.length-1])+1,r=[...e,t];return setPagesSessionStorage(r),r}case"reset":{let{payload:e}=t,r=[e];return setPagesSessionStorage(r),r}default:throw new a.q("Unknown action for infinite search")}},useSearchInfiniteState=e=>{let[t,r]=(0,n.useReducer)(reducer,void 0,()=>(function(){try{let e=window.history.state?.key;if(!e)return null;let t=`__fs_gallery_page_${e}`,r=sessionStorage.getItem(t);return r?JSON.parse(r):null}catch(e){return null}})()??[e]),a=(0,n.useMemo)(()=>({addPrevPage:()=>r({type:"addPrev"}),addNextPage:()=>r({type:"addNext"}),resetInfiniteScroll:e=>r({type:"reset",payload:e})}),[]);return{pages:t,...a}};var o=r(2524);let u=(0,n.createContext)(void 0),Provider=({children:e,itemsPerPage:t,onChange:r,...a})=>{let{state:i,...s}=(0,o.X)(a,r),{pages:c,...l}=useSearchInfiniteState(i.page),f=(0,n.useMemo)(()=>({state:i,...s,pages:c,...l,itemsPerPage:t}),[l,t,c,s,i]);return n.createElement(u.Provider,{value:f},e)}},9664:function(e,t,r){r.d(t,{Ru:function(){return removeFacet},a2:function(){return toggleFacets},uL:function(){return setFacet},wB:function(){return toggleFacet},wb:function(){return isSearchSort}});var n=r(2254);let a=new Set(["price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc"]),isSearchSort=e=>a.has(e),removeFacet=(e,t)=>{let{value:r}=t,a=e.findIndex(e=>e.value===r);if(a<0)throw new n.q(`Cannot remove ${r} from search params`);return e.filter((e,t)=>t!==a)},setFacet=(e,t,r)=>{if(!0===r){let r=e.findIndex(e=>e.key===t.key);if(r>-1)return e.map((e,n)=>n===r?t:e)}return[...e,t]},toggleFacet=(e,t)=>{let r=e.find(e=>e.key===t.key&&e.value===t.value);return void 0!==r?removeFacet(e,t):setFacet(e,t,!1)},toggleFacets=(e,t)=>t.reduce((e,t)=>toggleFacet(e,t),e)},6142:function(e,t,r){r.d(t,{Q:function(){return parse}});var n=r(2254),a=r(9664),o=r(2524);let parse=({pathname:e,searchParams:t})=>{let r=(0,o.j)({base:e,term:t.get("q")??null,sort:t.get("sort")??void 0,page:Number(t.get("page")??0)});if(!(0,a.wb)(r.sort))throw new n.q(`Uknown sorting option ${r.sort}`);let u=t.get("facets")?.split(",")??[];for(let e of u){let n=t.getAll(e);for(let t of n)r.selectedFacets=(0,a.uL)(r.selectedFacets,{key:e,value:t})}return r.passThrough=function(e,t){let r=new URLSearchParams,n=new Set(t),a=Array.from(e.entries());for(let[e,t]of a)n.has(e)||r.append(e,t);return r}(t,["q","sort","page","facets",...u]),r}},1341:function(e,t,r){r.d(t,{h:function(){return usePagination}});var n=r(2784),a=r(2339),o=r(9029);let getLink=e=>{let{pathname:t,search:r}=(0,a.Z)(e);return`${t}${r}`},usePagination=e=>{let{pages:t,itemsPerPage:r,state:a}=(0,o.R)(),u=Math.ceil(e/r),i=Number(t[t.length-1])+1,s=t[0]-1;return(0,n.useMemo)(()=>({next:i<u&&{cursor:i,link:getLink({...a,page:i})},prev:s>-1&&{cursor:s,link:getLink({...a,page:s})}}),[i,s,a,u])}},9029:function(e,t,r){r.d(t,{R:function(){return useSearch}});var n=r(1197),a=r(7943);let useSearch=()=>(0,a.q)(n._)},2524:function(e,t,r){r.d(t,{X:function(){return useSearchState},j:function(){return initialize}});var n=r(2784),a=r(2339);let initialize=({sort:e="score_desc",selectedFacets:t=[],term:r=null,base:n="/",page:a=0,passThrough:o=new URLSearchParams}={})=>({sort:e,selectedFacets:t,term:r,base:n,page:a,passThrough:o}),equals=(e,t)=>(0,a.Z)(e).href===(0,a.Z)(t).href,useSearchState=(e,t)=>{let r=(0,n.useMemo)(()=>initialize(e),[e]);return(0,n.useMemo)(()=>({state:r,setState:e=>!equals(e,r)&&t((0,a.Z)(e))}),[t,r])}},2339:function(e,t){t.Z=e=>{let t=new URL(e.base,"http://localhost"),{page:r,selectedFacets:n,sort:a,term:o,passThrough:u}=e;null!==o&&t.searchParams.set("q",o);let i=new Set;for(let e of n)t.searchParams.append(e.key,e.value),i.add(e.key);if(n.length>0&&t.searchParams.set("facets",Array.from(i).join(",")),t.searchParams.set("sort",a),t.searchParams.set("page",r.toString()),u)for(let[e,r]of u.entries())t.searchParams.append(e,r);return t}},7943:function(e,t,r){r.d(t,{q:function(){return useContext}});var n=r(2784),a=r(2254);let useContext=e=>{let t=(0,n.useContext)(e);if(void 0===t)throw new a.q(`${e.displayName??"Context"} needs to be on the React tree`);return t}}}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[523,295],{1933:function(e,t,r){r.d(t,{R:function(){return useSearch}});var a=r(2784),n=r(101);let useSearch=()=>{let e=(0,a.useContext)(n.c);return e?{inContext:!0,values:e}:{inContext:!1}}},2174:function(e,t,r){var a=r(2784),n=r(1933),c=r(4564);t.Z=({testId:e="fs-search-auto-complete",children:t,...r})=>{let{inContext:o,values:s}=(0,n.R)();return o&&(s.terms.length<=0||s.term.length<=0)?null:a.createElement("section",{"data-testid":e,"data-fs-search-auto-complete":!0,...r},a.createElement(c.Z,{as:"ol"},t))}},757:function(e,t,r){var a=r(2784),n=r(2614),c=r(727);t.Z=({testId:e="fs-search-auto-complete-term",suggestion:t,term:r,linkProps:o,icon:s=a.createElement(n.Z,{name:"MagnifyingGlass",width:18,height:18})})=>{let i=t.toLowerCase().split(r.toLowerCase());return a.createElement("li",{"data-fs-search-auto-complete-item":!0,"data-testid":e},a.createElement(c.Z,{...o,"data-fs-search-auto-complete-item-link":!0,variant:"display"},a.createElement("span",{"data-fs-search-auto-complete-item-icon":!0},s),a.createElement("p",null,i.map((e,n)=>a.createElement(a.Fragment,{key:[e,n].join()},e.length>0&&a.createElement("strong",{"data-fs-search-auto-complete-item-suggestion":!0},0===n?e.charAt(0).toUpperCase()+e.slice(1):e),n!==i.length-1&&(0===n?r.split("").map((e,r)=>0===r&&0===t.indexOf(e.toUpperCase())?e.toUpperCase():e.toLowerCase()).join(""):r.toLowerCase()))))))}},4583:function(e,t,r){var a=r(2784),n=r(1933);let SearchLoading=()=>{let{inContext:e,values:t}=(0,n.R)();return a.createElement(a.Fragment,null,e&&t.isLoading&&a.createElement("p",{"data-fs-search-dropdown-loading-text":!0},"Loading..."))},c=(0,a.forwardRef)(function({testId:e="fs-search-dropdown",children:t,...r},n){return a.createElement("div",{ref:n,"data-fs-search-dropdown":!0,"data-testid":e,...r},a.createElement("section",null,a.createElement(SearchLoading,null),t))});t.Z=c},2701:function(e,t,r){var a=r(2784),n=r(1933),c=r(3339),o=r(4564);t.Z=({testId:e="fs-search-history",title:t="History",clearLabel:r="Clear History",onClear:s,children:i,...l})=>{let{inContext:u,values:f}=(0,n.R)();return u&&(0!==f.term.length||f.isLoading)?null:a.createElement("section",{"data-testid":e,"data-fs-search-history":!0,...l},a.createElement("header",{"data-fs-search-history-header":!0},a.createElement("p",{"data-fs-search-history-title":!0},t),a.createElement(c.Z,{variant:"tertiary",onClick:s,size:"small"},r)),a.createElement(o.Z,{as:"ol"},i))}},9482:function(e,t,r){var a=r(2784),n=r(2614),c=r(727);t.Z=({testId:e="fs-search-history-term",value:t,linkProps:r,icon:o=a.createElement(n.Z,{name:"ClockClockwise",width:18,height:18})})=>a.createElement("li",{"data-fs-search-history-item":!0,"data-testid":e},a.createElement(c.Z,{...r,"data-fs-search-history-item-link":!0,variant:"display"},a.createElement("span",{"data-fs-search-history-item-icon":!0},o),a.createElement("span",null,t)))},6035:function(e,t,r){var a=r(2784),n=r(727);let c=(0,a.forwardRef)(function({testId:e="fs-search-product-item",linkProps:t,children:r},c){return a.createElement("li",{ref:c,"data-fs-search-product-item":!0,"data-testid":e},a.createElement(n.Z,{...t,"data-fs-search-product-item-link":!0,variant:"display"},r))});t.Z=c},3454:function(e,t,r){var a=r(2784),n=r(9088);let c=(0,a.forwardRef)(function({price:e,title:t,...r},c){return a.createElement("section",{ref:c,"data-fs-search-product-item-content":!0,...r},a.createElement("p",{"data-fs-search-product-item-title":!0},t),0!==e.value&&a.createElement(n.Z,{"data-fs-search-product-item-prices":!0,listPrice:e.listPrice,value:e.value,formatter:e.formatter}))});t.Z=c},9082:function(e,t,r){var a=r(2784);let n=(0,a.forwardRef)(function({testId:e="fs-search-product-item-image",children:t,...r},n){return a.createElement("div",{ref:n,"data-fs-search-product-item-image":!0,"data-testid":e,...r},t)});t.Z=n},9994:function(e,t,r){var a=r(2784),n=r(1933),c=r(4564);t.Z=({testId:e="fs-search-products",title:t="Suggested Products",children:r,...o})=>{let{inContext:s,values:i}=(0,n.R)();return s&&i.products.length<=0?null:a.createElement("section",{"data-testid":e,"data-fs-search-products":!0,...o},a.createElement("header",{"data-fs-search-products-header":!0},a.createElement("p",{"data-fs-search-products-title":!0},t)),a.createElement(c.Z,{as:"ol"},r))}},3311:function(e,t,r){var a=r(2784),n=r(1933),c=r(4564);let o=(0,a.forwardRef)(function({testId:e="fs-top-search",title:t="Top Search",children:r,...o},s){let{inContext:i,values:l}=(0,n.R)();return i&&(0!==l.term.length||l.isLoading)?null:a.createElement("section",{ref:s,"data-testid":e,"data-fs-search-top":!0,...o},a.createElement("header",{"data-fs-search-top-header":!0},a.createElement("p",{"data-fs-search-top-title":!0},t)),a.createElement(c.Z,{as:"ol"},r))});t.Z=o},1287:function(e,t,r){var a=r(2784),n=r(727),c=r(276);let o=(0,a.forwardRef)(function({testId:e="fs-top-search-term",value:t,linkProps:r,index:o},s){return a.createElement("li",{ref:s,"data-fs-search-top-item":!0,"data-testid":e},a.createElement(n.Z,{...r,"data-fs-search-top-item-link":!0,variant:"display"},a.createElement(c.Z,{"data-fs-search-top-item-badge":!0,variant:"info"},o+1),t))});t.Z=o},6942:function(e,t,r){r.r(t),r.d(t,{default:function(){return search_SearchDropdown_SearchDropdown}});var a=r(9499),n=r(4730),c=r(1933),o=r(4583),s=r(2174),i=r(757),l=r(9994),u=r(2701),f=r(9482),h=r(8543),d=r(2322);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var search_SearchHistory_SearchHistory=e=>{var t=Object.assign({},e),{values:{onSearchSelection:r}}=(0,c.R)(),{searchHistory:a,clearSearchHistory:n}=(0,h.Z)();return a.length?(0,d.jsx)(u.Z,_objectSpread(_objectSpread({title:"History",onClear:n},t),{},{children:a.map(e=>(0,d.jsx)(f.Z,{value:e.term,linkProps:{href:e.path,onClick:()=>null==r?void 0:r(e.term,e.path)}},e.term))})):null},p=r(3311),m=r(1287),y=r(1120),v=r(3523),S=r(7553),b=r(5238),j=v.M,search_useTopSearch=function(){var{channel:e,locale:t}=(0,b.kP)(),{data:r,error:a}=(0,S.aM)(j,{term:"",selectedFacets:[{key:"channel",value:null!=e?e:""},{key:"locale",value:t}]});return{data:r,error:a}},O=["topTerms","sort"];function SearchTop_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function SearchTop_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?SearchTop_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):SearchTop_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var search_SearchTop_SearchTop=function(e){var t,{topTerms:r=[],sort:a}=e,o=(0,n.Z)(e,O),{values:{onSearchSelection:s}}=(0,c.R)(),{data:i}=search_useTopSearch(),l=(null!==(t=null==i?void 0:i.search.suggestions.terms)&&void 0!==t?t:r).slice(0,5);return 0===l.length?null:(0,d.jsx)(p.Z,SearchTop_objectSpread(SearchTop_objectSpread({title:"Top Search"},o),{},{children:l.map((e,t)=>(0,d.jsx)(m.Z,{value:e.value,index:t,linkProps:{href:(0,y.formatSearchPath)({term:e.value,sort:a}),onClick:()=>null==s?void 0:s(e.value,(0,y.formatSearchPath)({term:e.value,sort:a}))}},t))}))},w=r(6035),P=r(9082),g=r(3454),_=r(8918),E=r(113),Z=r(5679),k=["product","index"],D=["href","onClick"];function SearchProductItem_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function SearchProductItem_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?SearchProductItem_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):SearchProductItem_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var search_SearchProductItem_SearchProductItem=function(e){var{product:t,index:r}=e,a=(0,n.Z)(e,k),{values:{onSearchSelection:o}}=(0,c.R)(),s=(0,Z.w)({product:t,selectedOffer:0,index:r}),{href:i,onClick:l}=s,u=(0,n.Z)(s,D),{isVariantOf:{name:f},image:[h],offers:{lowPrice:p,offers:[{listPrice:m}]}}=t,y=SearchProductItem_objectSpread({href:i,onClick:()=>{l(),null==o||o(f,i)}},u);return(0,d.jsxs)(w.Z,SearchProductItem_objectSpread(SearchProductItem_objectSpread({linkProps:y},a),{},{children:[(0,d.jsx)(P.Z,{children:(0,d.jsx)(_.Z,{src:h.url,alt:h.alternateName,width:56,height:56})}),(0,d.jsx)(g.Z,{title:f,price:{value:p,listPrice:m,formatter:E.P}})]}))},C=["sort"];function SearchDropdown_ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,a)}return r}function SearchDropdown_objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?SearchDropdown_ownKeys(Object(r),!0).forEach(function(t){(0,a.Z)(e,t,r[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):SearchDropdown_ownKeys(Object(r)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))})}return e}var search_SearchDropdown_SearchDropdown=function(e){var{sort:t}=e,r=(0,n.Z)(e,C),{values:{onSearchSelection:a,products:u,term:f,terms:h}}=(0,c.R)();return(0,d.jsxs)(o.Z,SearchDropdown_objectSpread(SearchDropdown_objectSpread({},r),{},{children:[(0,d.jsx)(search_SearchHistory_SearchHistory,{sort:t}),(0,d.jsx)(search_SearchTop_SearchTop,{sort:t}),(0,d.jsx)(s.Z,{children:null==h?void 0:h.map(e=>{var{value:r}=e;return(0,d.jsx)(i.Z,{term:f,suggestion:r,linkProps:{href:(0,y.formatSearchPath)({term:r,sort:t}),onClick:()=>null==a?void 0:a(r,(0,y.formatSearchPath)({term:r,sort:t}))}},r)})}),(0,d.jsx)(l.Z,{children:u.map((e,t)=>(0,d.jsx)(search_SearchProductItem_SearchProductItem,{product:e,index:t},e.id))})]}))}},5679:function(e,t,r){r.d(t,{w:function(){return useProductLink}});var a=r(2784),n=r(5238),useProductLink=e=>{var{index:t,product:c,selectedOffer:o}=e,{slug:s}=c,{currency:{code:i}}=(0,n.kP)(),l=(0,a.useCallback)(()=>{r.e(343).then(r.bind(r,1153)).then(e=>{var{sendAnalyticsEvent:r}=e;r({name:"select_item",params:{items:[{item_id:c.isVariantOf.productGroupID,item_name:c.isVariantOf.name,item_brand:c.brand.name,item_variant:c.sku,index:t,price:c.offers.offers[o].price,discount:c.offers.offers[o].listPrice-c.offers.offers[o].price,currency:i,item_variant_name:c.name,product_reference_id:c.gtin}]}}),r({name:"search_select_item",params:{url:window.location.href,items:[{item_id:c.isVariantOf.productGroupID,item_variant:c.sku,index:t}]}})})},[i,c,t,o]);return{href:"/".concat(s,"/p"),onClick:l,"data-testid":"product-link"}}},1120:function(e,t,r){r.r(t),r.d(t,{formatSearchPath:function(){return formatSearchPath}});var a=r(2339),n=r(2524),formatSearchPath=e=>{var{term:t,sort:r}=e,{pathname:c,search:o}=(0,a.Z)((0,n.j)({term:t,sort:r,base:"/s"}));return"".concat(c).concat(o)}},2524:function(e,t,r){r.d(t,{X:function(){return useSearchState},j:function(){return initialize}});var a=r(2784),n=r(2339);let initialize=({sort:e="score_desc",selectedFacets:t=[],term:r=null,base:a="/",page:n=0,passThrough:c=new URLSearchParams}={})=>({sort:e,selectedFacets:t,term:r,base:a,page:n,passThrough:c}),equals=(e,t)=>(0,n.Z)(e).href===(0,n.Z)(t).href,useSearchState=(e,t)=>{let r=(0,a.useMemo)(()=>initialize(e),[e]);return(0,a.useMemo)(()=>({state:r,setState:e=>!equals(e,r)&&t((0,n.Z)(e))}),[t,r])}},2339:function(e,t){t.Z=e=>{let t=new URL(e.base,"http://localhost"),{page:r,selectedFacets:a,sort:n,term:c,passThrough:o}=e;null!==c&&t.searchParams.set("q",c);let s=new Set;for(let e of a)t.searchParams.append(e.key,e.value),s.add(e.key);if(a.length>0&&t.searchParams.set("facets",Array.from(s).join(",")),t.searchParams.set("sort",n),t.searchParams.set("page",r.toString()),o)for(let[e,r]of o.entries())t.searchParams.append(e,r);return t}}}]);
|