@faststore/core 2.0.101-alpha.0 → 2.0.102-alpha.0

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.
Files changed (152) hide show
  1. package/.turbo/turbo-build.log +3 -3
  2. package/CHANGELOG.md +6 -0
  3. package/cypress/integration/analytics.test.js +2 -2
  4. package/cypress/integration/cart.test.js +4 -4
  5. package/package.json +4 -4
  6. package/src/components/cart/CartSidebar/CartSidebar.tsx +16 -40
  7. package/src/components/cart/OrderSummary/OrderSummary.tsx +2 -6
  8. package/.next/BUILD_ID +0 -1
  9. package/.next/build-manifest.json +0 -99
  10. package/.next/cache/.tsbuildinfo +0 -1
  11. package/.next/cache/config.json +0 -7
  12. package/.next/cache/eslint/.cache_1gneedd +0 -1
  13. package/.next/cache/next-server.js.nft.json +0 -1
  14. package/.next/cache/webpack/client-production/0.pack +0 -0
  15. package/.next/cache/webpack/client-production/index.pack +0 -0
  16. package/.next/cache/webpack/server-production/0.pack +0 -0
  17. package/.next/cache/webpack/server-production/index.pack +0 -0
  18. package/.next/export-marker.json +0 -1
  19. package/.next/images-manifest.json +0 -1
  20. package/.next/next-server.js.nft.json +0 -1
  21. package/.next/package.json +0 -1
  22. package/.next/prerender-manifest.json +0 -1
  23. package/.next/react-loadable-manifest.json +0 -44
  24. package/.next/required-server-files.json +0 -1
  25. package/.next/routes-manifest.json +0 -1
  26. package/.next/server/chunks/120.js +0 -435
  27. package/.next/server/chunks/123.js +0 -58
  28. package/.next/server/chunks/1394.js +0 -3801
  29. package/.next/server/chunks/1608.js +0 -515
  30. package/.next/server/chunks/2154.js +0 -206
  31. package/.next/server/chunks/247.js +0 -61
  32. package/.next/server/chunks/2914.js +0 -95
  33. package/.next/server/chunks/2922.js +0 -7293
  34. package/.next/server/chunks/3264.js +0 -67
  35. package/.next/server/chunks/3431.js +0 -7241
  36. package/.next/server/chunks/350.js +0 -142
  37. package/.next/server/chunks/3746.js +0 -237
  38. package/.next/server/chunks/3898.js +0 -240
  39. package/.next/server/chunks/4312.js +0 -674
  40. package/.next/server/chunks/4371.js +0 -1473
  41. package/.next/server/chunks/5098.js +0 -124
  42. package/.next/server/chunks/5576.js +0 -72
  43. package/.next/server/chunks/6280.js +0 -322
  44. package/.next/server/chunks/6465.js +0 -91
  45. package/.next/server/chunks/676.js +0 -32
  46. package/.next/server/chunks/6859.js +0 -959
  47. package/.next/server/chunks/6881.js +0 -320
  48. package/.next/server/chunks/6898.js +0 -149
  49. package/.next/server/chunks/7104.js +0 -196
  50. package/.next/server/chunks/7181.js +0 -658
  51. package/.next/server/chunks/7183.js +0 -72
  52. package/.next/server/chunks/7992.js +0 -570
  53. package/.next/server/chunks/8098.js +0 -246
  54. package/.next/server/chunks/810.js +0 -432
  55. package/.next/server/chunks/8287.js +0 -58
  56. package/.next/server/chunks/9143.js +0 -106
  57. package/.next/server/chunks/9152.js +0 -213
  58. package/.next/server/chunks/953.js +0 -646
  59. package/.next/server/chunks/9557.js +0 -117
  60. package/.next/server/chunks/9854.js +0 -72
  61. package/.next/server/chunks/font-manifest.json +0 -1
  62. package/.next/server/font-manifest.json +0 -1
  63. package/.next/server/middleware-build-manifest.js +0 -1
  64. package/.next/server/middleware-manifest.json +0 -6
  65. package/.next/server/middleware-react-loadable-manifest.js +0 -1
  66. package/.next/server/pages/404.js.nft.json +0 -1
  67. package/.next/server/pages/500.js.nft.json +0 -1
  68. package/.next/server/pages/[...slug].js +0 -671
  69. package/.next/server/pages/[...slug].js.nft.json +0 -1
  70. package/.next/server/pages/[slug]/p.js +0 -2393
  71. package/.next/server/pages/[slug]/p.js.nft.json +0 -1
  72. package/.next/server/pages/_app.js +0 -2369
  73. package/.next/server/pages/_app.js.nft.json +0 -1
  74. package/.next/server/pages/_document.js +0 -304
  75. package/.next/server/pages/_document.js.nft.json +0 -1
  76. package/.next/server/pages/_error.js +0 -164
  77. package/.next/server/pages/_error.js.nft.json +0 -1
  78. package/.next/server/pages/account.js.nft.json +0 -1
  79. package/.next/server/pages/api/graphql.js +0 -315
  80. package/.next/server/pages/api/graphql.js.nft.json +0 -1
  81. package/.next/server/pages/api/preview.js +0 -118
  82. package/.next/server/pages/api/preview.js.nft.json +0 -1
  83. package/.next/server/pages/checkout.js.nft.json +0 -1
  84. package/.next/server/pages/en-US/404.html +0 -81
  85. package/.next/server/pages/en-US/500.html +0 -81
  86. package/.next/server/pages/en-US/account.html +0 -81
  87. package/.next/server/pages/en-US/checkout.html +0 -81
  88. package/.next/server/pages/en-US/login.html +0 -81
  89. package/.next/server/pages/en-US/s.html +0 -81
  90. package/.next/server/pages/en-US.html +0 -81
  91. package/.next/server/pages/en-US.json +0 -1
  92. package/.next/server/pages/index.js +0 -428
  93. package/.next/server/pages/index.js.nft.json +0 -1
  94. package/.next/server/pages/login.js.nft.json +0 -1
  95. package/.next/server/pages/s.js.nft.json +0 -1
  96. package/.next/server/pages-manifest.json +0 -16
  97. package/.next/server/webpack-api-runtime.js +0 -229
  98. package/.next/server/webpack-runtime.js +0 -229
  99. package/.next/static/V0z729OIqsX7azqcAGJ5Q/_buildManifest.js +0 -1
  100. package/.next/static/V0z729OIqsX7azqcAGJ5Q/_ssgManifest.js +0 -1
  101. package/.next/static/chunks/143.dd8a556e6957baa1.js +0 -1
  102. package/.next/static/chunks/152.57849458d8337a92.js +0 -1
  103. package/.next/static/chunks/264-6dc2258a751b3d74.js +0 -1
  104. package/.next/static/chunks/351-a4e28d64f48c5269.js +0 -1
  105. package/.next/static/chunks/608.59e69b83f35d9c44.js +0 -1
  106. package/.next/static/chunks/651.7142f31ce1e052b3.js +0 -1
  107. package/.next/static/chunks/686.6c345856d484363b.js +0 -1
  108. package/.next/static/chunks/741.52f7fb873418346f.js +0 -1
  109. package/.next/static/chunks/781-7df372b5b56e3f96.js +0 -1
  110. package/.next/static/chunks/843.e1d0f9260a52f32c.js +0 -1
  111. package/.next/static/chunks/98.97381d2021f86cd9.js +0 -1
  112. package/.next/static/chunks/996.64460309250b214c.js +0 -1
  113. package/.next/static/chunks/framework-dfd14d7ce6600b03.js +0 -1
  114. package/.next/static/chunks/main-9746772201fe3ac1.js +0 -1
  115. package/.next/static/chunks/pages/404-ba608a2a9f0c420a.js +0 -1
  116. package/.next/static/chunks/pages/500-910883c20541d9ce.js +0 -1
  117. package/.next/static/chunks/pages/[...slug]-417e3b51bda1f5f3.js +0 -1
  118. package/.next/static/chunks/pages/[slug]/p-cbb4ca8d57bafa9f.js +0 -1
  119. package/.next/static/chunks/pages/_app-6dc7b0c168e15d5c.js +0 -1
  120. package/.next/static/chunks/pages/_error-a7a0c1d9bfbb4f38.js +0 -1
  121. package/.next/static/chunks/pages/account-b8fc5222ffe89b60.js +0 -1
  122. package/.next/static/chunks/pages/checkout-f8cb7cb22225ef9d.js +0 -1
  123. package/.next/static/chunks/pages/index-9ea3f7868f5ed138.js +0 -1
  124. package/.next/static/chunks/pages/login-33954810b200eca8.js +0 -1
  125. package/.next/static/chunks/pages/s-ba2868e14fedb65b.js +0 -1
  126. package/.next/static/chunks/polyfills-c67a75d1b6f99dc8.js +0 -1
  127. package/.next/static/chunks/webpack-65b155971f3eac57.js +0 -1
  128. package/.next/static/css/10db3bc7ecdf0556.css +0 -1
  129. package/.next/static/css/43d61b402f41569b.css +0 -1
  130. package/.next/static/css/4899c3cc356704f9.css +0 -1
  131. package/.next/static/css/6507cb48401e73a4.css +0 -1
  132. package/.next/static/css/8ea129ea90e49e98.css +0 -1
  133. package/.next/static/css/b2f16bd4b93e0aca.css +0 -1
  134. package/.next/static/css/db63ea05e98cb7e8.css +0 -1
  135. package/.next/static/css/ea60a7e6c07ee644.css +0 -1
  136. package/.next/static/media/brandless-neutral.76ddf63a.png +0 -0
  137. package/.next/trace +0 -65
  138. package/public/~partytown/debug/partytown-atomics.js +0 -556
  139. package/public/~partytown/debug/partytown-media.js +0 -374
  140. package/public/~partytown/debug/partytown-sandbox-sw.js +0 -543
  141. package/public/~partytown/debug/partytown-sw.js +0 -59
  142. package/public/~partytown/debug/partytown-ww-atomics.js +0 -1789
  143. package/public/~partytown/debug/partytown-ww-sw.js +0 -1781
  144. package/public/~partytown/debug/partytown.js +0 -72
  145. package/public/~partytown/partytown-atomics.js +0 -2
  146. package/public/~partytown/partytown-media.js +0 -2
  147. package/public/~partytown/partytown-sw.js +0 -2
  148. package/public/~partytown/partytown.js +0 -2
  149. package/src/components/cart/CartItem/CartItem.stories.mdx +0 -134
  150. package/src/components/cart/CartSidebar/CartSidebar.stories.mdx +0 -105
  151. package/src/components/cart/CartSidebar/cart-sidebar.module.scss +0 -57
  152. package/src/components/cart/OrderSummary/order-summary.module.scss +0 -22
@@ -1,237 +0,0 @@
1
- "use strict";
2
- exports.id = 3746;
3
- exports.ids = [3746];
4
- exports.modules = {
5
-
6
- /***/ 4875:
7
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8
-
9
-
10
- // EXPORTS
11
- __webpack_require__.d(__webpack_exports__, {
12
- "Z": () => (/* reexport */ ProductGrid_ProductGrid)
13
- });
14
-
15
- // EXTERNAL MODULE: ./src/components/skeletons/ProductGridSkeleton/index.ts + 1 modules
16
- var ProductGridSkeleton = __webpack_require__(9913);
17
- // EXTERNAL MODULE: ./src/components/product/ProductGrid/product-grid.module.scss
18
- var product_grid_module = __webpack_require__(4920);
19
- var product_grid_module_default = /*#__PURE__*/__webpack_require__.n(product_grid_module);
20
- // EXTERNAL MODULE: ./src/components/product/ProductCard/index.ts + 4 modules
21
- var ProductCard = __webpack_require__(6475);
22
- // EXTERNAL MODULE: external "react/jsx-runtime"
23
- var jsx_runtime_ = __webpack_require__(997);
24
- ;// CONCATENATED MODULE: ./src/components/product/ProductGrid/ProductGrid.tsx
25
-
26
-
27
-
28
-
29
-
30
- function ProductGrid({
31
- products,
32
- page,
33
- pageSize
34
- }) {
35
- const aspectRatio = 1;
36
- return /*#__PURE__*/jsx_runtime_.jsx(ProductGridSkeleton/* default */.Z, {
37
- aspectRatio: aspectRatio,
38
- loading: products.length === 0,
39
- children: /*#__PURE__*/jsx_runtime_.jsx("ul", {
40
- "data-fs-product-grid": true,
41
- className: (product_grid_module_default()).fsProductGrid,
42
- children: products.map(({
43
- node: product
44
- }, idx) => /*#__PURE__*/jsx_runtime_.jsx("li", {
45
- children: /*#__PURE__*/jsx_runtime_.jsx(ProductCard/* default */.Z, {
46
- product: product,
47
- index: pageSize * page + idx + 1,
48
- bordered: true,
49
- aspectRatio: aspectRatio
50
- })
51
- }, `${product.id}`))
52
- })
53
- });
54
- }
55
-
56
- /* harmony default export */ const ProductGrid_ProductGrid = (ProductGrid);
57
- ;// CONCATENATED MODULE: ./src/components/product/ProductGrid/index.ts
58
-
59
-
60
- /***/ }),
61
-
62
- /***/ 3746:
63
- /***/ ((module, __webpack_exports__, __webpack_require__) => {
64
-
65
- __webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
66
- __webpack_require__.r(__webpack_exports__);
67
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
68
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
69
- /* harmony export */ });
70
- /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7794);
71
- /* harmony import */ var src_components_product_ProductGrid__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4875);
72
- /* harmony import */ var src_sdk_search_Sentinel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(713);
73
- /* harmony import */ var _ProductTiles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8872);
74
- /* harmony import */ var _usePageProducts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(763);
75
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(997);
76
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
77
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_ProductTiles__WEBPACK_IMPORTED_MODULE_2__, _usePageProducts__WEBPACK_IMPORTED_MODULE_3__]);
78
- ([_ProductTiles__WEBPACK_IMPORTED_MODULE_2__, _usePageProducts__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
79
-
80
-
81
-
82
-
83
-
84
- /* If showSponsoredProducts is true, a ProductTiles will be displayed in between two blocks of ProductGrid on the page 0 */
85
-
86
-
87
-
88
-
89
-
90
- function GalleryPage({
91
- page,
92
- title,
93
- showSponsoredProducts = true
94
- }) {
95
- const products = (0,_usePageProducts__WEBPACK_IMPORTED_MODULE_3__/* .useProducts */ .r)(page) ?? [];
96
- const {
97
- itemsPerPage
98
- } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_5__/* .useSearch */ .R)();
99
- const productsSponsored = showSponsoredProducts ? products.slice(0, 2) : undefined;
100
- const middleItemIndex = Math.ceil(itemsPerPage / 2);
101
- const shouldDisplaySponsoredProducts = page === 0 && productsSponsored && productsSponsored.length > 1;
102
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {
103
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx(src_sdk_search_Sentinel__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, {
104
- products: products,
105
- page: page,
106
- pageSize: itemsPerPage,
107
- title: title
108
- }), shouldDisplaySponsoredProducts ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.Fragment, {
109
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx(src_components_product_ProductGrid__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z, {
110
- products: products.slice(0, middleItemIndex),
111
- page: page,
112
- pageSize: middleItemIndex
113
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
114
- "data-fs-product-listing-sponsored": true,
115
- children: [/*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx("h3", {
116
- children: "Sponsored"
117
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx(_ProductTiles__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z, {
118
- selectedFacets: [{
119
- key: 'productClusterIds',
120
- value: '141'
121
- }],
122
- title: ""
123
- })]
124
- }), /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx(src_components_product_ProductGrid__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z, {
125
- products: products.slice(middleItemIndex, itemsPerPage),
126
- page: page,
127
- pageSize: middleItemIndex
128
- })]
129
- }) : /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx(src_components_product_ProductGrid__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .Z, {
130
- products: products,
131
- page: page,
132
- pageSize: itemsPerPage
133
- })]
134
- });
135
- }
136
-
137
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (GalleryPage);
138
- __webpack_async_result__();
139
- } catch(e) { __webpack_async_result__(e); } });
140
-
141
- /***/ }),
142
-
143
- /***/ 713:
144
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
145
-
146
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
147
- /* harmony export */ "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
148
- /* harmony export */ });
149
- /* harmony import */ var _faststore_sdk__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7794);
150
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
151
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
152
- /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9785);
153
- /* harmony import */ var react_intersection_observer__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__);
154
- /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(1853);
155
- /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_2__);
156
- /* harmony import */ var _analytics_hooks_useViewItemListEvent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5184);
157
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(997);
158
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__);
159
-
160
-
161
-
162
-
163
-
164
-
165
-
166
- // Adds/Replaces ?page= to the querystring of the page
167
- const replacePagination = (page, router) => {
168
- const url = new URL(window.location.href); // In case the page argument already matches the target page
169
-
170
- if (url.searchParams.get('page') === page) {
171
- return;
172
- } // Set ?page= parameter and replace route
173
-
174
-
175
- url.searchParams.set('page', page);
176
- router.replace(url, undefined, {
177
- shallow: true,
178
- scroll: false
179
- });
180
- };
181
- /**
182
- * Use this component to add a boundary between pages so we can
183
- * change the current page being viewed on infinite pagination.
184
- *
185
- * For more info: https://developers.google.com/search/blog/2014/02/infinite-scroll-search-friendly
186
- *
187
- * Also, this component's name is kind of curious. Wikipedia calls is Page Break(https://en.wikipedia.org/wiki/Page_break)
188
- * however all codes I've seen online use Sentinel
189
- */
190
-
191
-
192
- function Sentinel({
193
- page,
194
- pageSize,
195
- products,
196
- title
197
- }) {
198
- const viewedRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(false);
199
- const {
200
- ref,
201
- inView
202
- } = (0,react_intersection_observer__WEBPACK_IMPORTED_MODULE_1__.useInView)();
203
- const {
204
- pages
205
- } = (0,_faststore_sdk__WEBPACK_IMPORTED_MODULE_5__/* .useSearch */ .R)();
206
- const router = (0,next_router__WEBPACK_IMPORTED_MODULE_2__.useRouter)();
207
- const {
208
- sendViewItemListEvent
209
- } = (0,_analytics_hooks_useViewItemListEvent__WEBPACK_IMPORTED_MODULE_3__/* .useViewItemListEvent */ .m)({
210
- products,
211
- title,
212
- page,
213
- pageSize
214
- });
215
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
216
- // Only replace pagination state when infinite scroll
217
- // state has more than one page being rendered to the screen
218
- if (inView && pages.length > 1) {
219
- replacePagination(page.toString(), router);
220
- }
221
-
222
- if (inView && !viewedRef.current && products.length) {
223
- sendViewItemListEvent();
224
- viewedRef.current = true;
225
- }
226
- }, [pages.length, inView, page, router, sendViewItemListEvent, products.length]);
227
- return /*#__PURE__*/react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx("div", {
228
- ref: ref
229
- });
230
- }
231
-
232
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sentinel);
233
-
234
- /***/ })
235
-
236
- };
237
- ;
@@ -1,240 +0,0 @@
1
- "use strict";
2
- exports.id = 3898;
3
- exports.ids = [3898];
4
- exports.modules = {
5
-
6
- /***/ 6321:
7
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8
-
9
-
10
- // EXPORTS
11
- __webpack_require__.d(__webpack_exports__, {
12
- "_": () => (/* binding */ Context),
13
- "z": () => (/* binding */ Provider)
14
- });
15
-
16
- // EXTERNAL MODULE: external "react"
17
- var external_react_ = __webpack_require__(6689);
18
- var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
19
- // EXTERNAL MODULE: ./node_modules/@faststore/sdk/dist/utils/error.js
20
- var error = __webpack_require__(670);
21
- ;// CONCATENATED MODULE: ./node_modules/@faststore/sdk/dist/search/useInfiniteSearchState.js
22
-
23
-
24
- const reducer = (state, action) => {
25
- switch (action.type) {
26
- case 'addPrev': {
27
- const prev = state[0] - 1;
28
- return [prev, ...state];
29
- }
30
- case 'addNext': {
31
- const next = Number(state[state.length - 1]) + 1;
32
- return [...state, next];
33
- }
34
- case 'reset': {
35
- const { payload } = action;
36
- return [payload];
37
- }
38
- default:
39
- throw new error/* SDKError */.q('Unknown action for infinite search');
40
- }
41
- };
42
- const useSearchInfiniteState = (initialPage) => {
43
- const [pages, dispatch] = (0,external_react_.useReducer)(reducer, undefined, () => [initialPage]);
44
- const actions = (0,external_react_.useMemo)(() => ({
45
- addPrevPage: () => dispatch({ type: 'addPrev' }),
46
- addNextPage: () => dispatch({ type: 'addNext' }),
47
- resetInfiniteScroll: (page) => dispatch({ type: 'reset', payload: page }),
48
- }), []);
49
- return { pages, ...actions };
50
- };
51
- //# sourceMappingURL=useInfiniteSearchState.js.map
52
- // EXTERNAL MODULE: ./node_modules/@faststore/sdk/dist/search/useSearchState.js
53
- var useSearchState = __webpack_require__(3264);
54
- ;// CONCATENATED MODULE: ./node_modules/@faststore/sdk/dist/search/Provider.js
55
-
56
-
57
-
58
- const Context = (0,external_react_.createContext)(undefined);
59
- const Provider = ({ children, itemsPerPage, onChange, ...rest }) => {
60
- const { state, ...searchActions } = (0,useSearchState/* useSearchState */.X)(rest, onChange);
61
- const { pages, ...infiniteActions } = useSearchInfiniteState(state.page);
62
- const value = (0,external_react_.useMemo)(() => ({
63
- state,
64
- ...searchActions,
65
- pages,
66
- ...infiniteActions,
67
- itemsPerPage,
68
- }), [infiniteActions, itemsPerPage, pages, searchActions, state]);
69
- return external_react_default().createElement(Context.Provider, { value: value }, children);
70
- };
71
- //# sourceMappingURL=Provider.js.map
72
-
73
- /***/ }),
74
-
75
- /***/ 3291:
76
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
77
-
78
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
79
- /* harmony export */ "uL": () => (/* binding */ setFacet),
80
- /* harmony export */ "wB": () => (/* binding */ toggleFacet),
81
- /* harmony export */ "wb": () => (/* binding */ isSearchSort)
82
- /* harmony export */ });
83
- /* unused harmony exports removeFacet, toggleFacets */
84
- /* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(670);
85
-
86
- const sortKeys = new Set([
87
- 'price_desc',
88
- 'price_asc',
89
- 'orders_desc',
90
- 'name_desc',
91
- 'name_asc',
92
- 'release_desc',
93
- 'discount_desc',
94
- 'score_desc',
95
- ]);
96
- const isSearchSort = (x) => sortKeys.has(x);
97
- const removeFacet = (facets, facet) => {
98
- const { value } = facet;
99
- const index = facets.findIndex((x) => x.value === value);
100
- if (index < 0) {
101
- throw new _utils_error__WEBPACK_IMPORTED_MODULE_0__/* .SDKError */ .q(`Cannot remove ${value} from search params`);
102
- }
103
- return facets.filter((_, it) => it === 0 || it !== index);
104
- };
105
- const setFacet = (facets, facet, unique) => {
106
- if (unique === true) {
107
- const index = facets.findIndex((f) => f.key === facet.key);
108
- if (index > -1) {
109
- return facets.map((f, it) => (it === index ? facet : f));
110
- }
111
- }
112
- return [...facets, facet];
113
- };
114
- const toggleFacet = (facets, item) => {
115
- const found = facets.find((facet) => facet.key === item.key && facet.value === item.value);
116
- if (found !== undefined) {
117
- return removeFacet(facets, item);
118
- }
119
- return setFacet(facets, item, false);
120
- };
121
- const toggleFacets = (facets, items) => items.reduce((acc, curr) => toggleFacet(acc, curr), facets);
122
- //# sourceMappingURL=facets.js.map
123
-
124
- /***/ }),
125
-
126
- /***/ 2888:
127
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
128
-
129
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
130
- /* harmony export */ "Q": () => (/* binding */ parse)
131
- /* harmony export */ });
132
- /* harmony import */ var _utils_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(670);
133
- /* harmony import */ var _facets__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3291);
134
- /* harmony import */ var _useSearchState__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3264);
135
-
136
-
137
-
138
- const parse = ({ pathname, searchParams }) => {
139
- const state = (0,_useSearchState__WEBPACK_IMPORTED_MODULE_0__/* .initialize */ .j)({
140
- base: pathname,
141
- term: searchParams.get('q') ?? null,
142
- sort: searchParams.get('sort') ?? undefined,
143
- page: Number(searchParams.get('page') ?? 0),
144
- });
145
- if (!(0,_facets__WEBPACK_IMPORTED_MODULE_1__/* .isSearchSort */ .wb)(state.sort)) {
146
- throw new _utils_error__WEBPACK_IMPORTED_MODULE_2__/* .SDKError */ .q(`Uknown sorting option ${state.sort}`);
147
- }
148
- const facets = searchParams.get('facets')?.split(',') ?? [];
149
- for (const facet of facets) {
150
- const values = searchParams.getAll(facet);
151
- for (const value of values) {
152
- state.selectedFacets = (0,_facets__WEBPACK_IMPORTED_MODULE_1__/* .setFacet */ .uL)(state.selectedFacets, {
153
- key: facet,
154
- value,
155
- });
156
- }
157
- }
158
- return state;
159
- };
160
- //# sourceMappingURL=serializer.js.map
161
-
162
- /***/ }),
163
-
164
- /***/ 2549:
165
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
166
-
167
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
168
- /* harmony export */ "h": () => (/* binding */ usePagination)
169
- /* harmony export */ });
170
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6689);
171
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
172
- /* harmony import */ var _utils_format__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3364);
173
- /* harmony import */ var _useSearch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7794);
174
-
175
-
176
-
177
- const getLink = (state) => {
178
- const { pathname, search } = (0,_utils_format__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z)(state);
179
- return `${pathname}${search}`;
180
- };
181
- const usePagination = (totalItems) => {
182
- const { pages, itemsPerPage, state } = (0,_useSearch__WEBPACK_IMPORTED_MODULE_2__/* .useSearch */ .R)();
183
- const total = Math.ceil(totalItems / itemsPerPage);
184
- const next = Number(pages[pages.length - 1]) + 1;
185
- const prev = pages[0] - 1;
186
- return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(() => ({
187
- next: next < total && {
188
- cursor: next,
189
- link: getLink({ ...state, page: next }),
190
- },
191
- prev: prev > -1 && {
192
- cursor: prev,
193
- link: getLink({ ...state, page: prev }),
194
- },
195
- }), [next, prev, state, total]);
196
- };
197
- //# sourceMappingURL=usePagination.js.map
198
-
199
- /***/ }),
200
-
201
- /***/ 7794:
202
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
203
-
204
-
205
- // EXPORTS
206
- __webpack_require__.d(__webpack_exports__, {
207
- "R": () => (/* binding */ useSearch)
208
- });
209
-
210
- // EXTERNAL MODULE: ./node_modules/@faststore/sdk/dist/search/Provider.js + 1 modules
211
- var Provider = __webpack_require__(6321);
212
- // EXTERNAL MODULE: external "react"
213
- var external_react_ = __webpack_require__(6689);
214
- // EXTERNAL MODULE: ./node_modules/@faststore/sdk/dist/utils/error.js
215
- var error = __webpack_require__(670);
216
- ;// CONCATENATED MODULE: ./node_modules/@faststore/sdk/dist/utils/useContext.js
217
-
218
-
219
- /**
220
- * @description Like React.useContext but throws when the context's value === undefined.
221
- * This is useful when you want to force the context to be present in the React's tree before using it
222
- */
223
- const useContext = (context) => {
224
- const value = (0,external_react_.useContext)(context);
225
- if (value !== undefined) {
226
- return value;
227
- }
228
- throw new error/* SDKError */.q(`${context.displayName ?? 'Context'} needs to be on the React tree`);
229
- };
230
- //# sourceMappingURL=useContext.js.map
231
- ;// CONCATENATED MODULE: ./node_modules/@faststore/sdk/dist/search/useSearch.js
232
-
233
-
234
- const useSearch = () => useContext(Provider/* Context */._);
235
- //# sourceMappingURL=useSearch.js.map
236
-
237
- /***/ })
238
-
239
- };
240
- ;