@faststore/core 3.86.4 → 3.88.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 (246) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/build-manifest.json +115 -116
  3. package/.next/cache/.tsbuildinfo +1 -1
  4. package/.next/cache/config.json +3 -3
  5. package/.next/cache/webpack/client-production/0.pack +0 -0
  6. package/.next/cache/webpack/client-production/index.pack +0 -0
  7. package/.next/cache/webpack/server-production/0.pack +0 -0
  8. package/.next/cache/webpack/server-production/index.pack +0 -0
  9. package/.next/prerender-manifest.js +1 -1
  10. package/.next/prerender-manifest.json +1 -1
  11. package/.next/react-loadable-manifest.json +178 -169
  12. package/.next/routes-manifest.json +1 -1
  13. package/.next/server/chunks/3006.js +1 -1
  14. package/.next/server/chunks/3945.js +1 -1
  15. package/.next/server/chunks/6870.js +1 -0
  16. package/.next/server/chunks/83.js +1 -1
  17. package/.next/server/chunks/8474.js +3 -3
  18. package/.next/server/chunks/948.js +1 -1
  19. package/.next/server/chunks/9563.js +2 -2
  20. package/.next/server/chunks/9630.js +1 -1
  21. package/.next/server/chunks/UIBannerText.js +1 -1
  22. package/.next/server/functions-config-manifest.json +1 -1
  23. package/.next/server/middleware-build-manifest.js +1 -1
  24. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  25. package/.next/server/pages/404.js.nft.json +1 -1
  26. package/.next/server/pages/500.js.nft.json +1 -1
  27. package/.next/server/pages/[...slug].js +1 -1
  28. package/.next/server/pages/[...slug].js.nft.json +1 -1
  29. package/.next/server/pages/[slug]/p.js +1 -1
  30. package/.next/server/pages/[slug]/p.js.nft.json +1 -1
  31. package/.next/server/pages/_app.js.nft.json +1 -1
  32. package/.next/server/pages/_document.js.nft.json +1 -1
  33. package/.next/server/pages/_error.js.nft.json +1 -1
  34. package/.next/server/pages/api/graphql.js +2 -2
  35. package/.next/server/pages/api/graphql.js.nft.json +1 -1
  36. package/.next/server/pages/api/health/live.js.nft.json +1 -1
  37. package/.next/server/pages/api/health/ready.js.nft.json +1 -1
  38. package/.next/server/pages/api/preview.js.nft.json +1 -1
  39. package/.next/server/pages/checkout.js.nft.json +1 -1
  40. package/.next/server/pages/en-US/404.html +1 -1
  41. package/.next/server/pages/en-US/500.html +1 -1
  42. package/.next/server/pages/en-US/checkout.html +1 -1
  43. package/.next/server/pages/en-US/login.html +1 -1
  44. package/.next/server/pages/en-US/s.html +1 -1
  45. package/.next/server/pages/en-US.html +1 -1
  46. package/.next/server/pages/index.js.nft.json +1 -1
  47. package/.next/server/pages/login.js.nft.json +1 -1
  48. package/.next/server/pages/pvt/account/403.js.nft.json +1 -1
  49. package/.next/server/pages/pvt/account/404.js.nft.json +1 -1
  50. package/.next/server/pages/pvt/account/[...unknown].js.nft.json +1 -1
  51. package/.next/server/pages/pvt/account/orders/[id].js.nft.json +1 -1
  52. package/.next/server/pages/pvt/account/orders.js.nft.json +1 -1
  53. package/.next/server/pages/pvt/account/profile.js.nft.json +1 -1
  54. package/.next/server/pages/pvt/account/security.js.nft.json +1 -1
  55. package/.next/server/pages/pvt/account/user-details.js.nft.json +1 -1
  56. package/.next/server/pages/pvt/account.js.nft.json +1 -1
  57. package/.next/server/pages/s.js.nft.json +1 -1
  58. package/.next/server/pages-manifest.json +1 -1
  59. package/.next/static/JaRUyeLgqhw17hCxdW6B5/_buildManifest.js +1 -0
  60. package/.next/static/chunks/1208-9118a8f14ecf05c8.js +8 -0
  61. package/.next/static/chunks/1841.b3a98a2a1886b09c.js +1 -0
  62. package/.next/static/chunks/2284.17a3e4c3af092981.js +1 -0
  63. package/.next/static/chunks/2500.02f018a354c612fb.js +1 -0
  64. package/.next/static/chunks/294.ac8fb1e24849b0c4.js +1 -0
  65. package/.next/static/chunks/3155.f521c771a8c355a5.js +1 -0
  66. package/.next/static/chunks/3399.b1311b661da6b316.js +1 -0
  67. package/.next/static/chunks/3483.ef53d632a763da3f.js +1 -0
  68. package/.next/static/chunks/349.235b18ceb82aa256.js +1 -0
  69. package/.next/static/chunks/3836.5a76d717d95d1f2d.js +1 -0
  70. package/.next/static/chunks/4799.46dca5f8076f9448.js +1 -0
  71. package/.next/static/chunks/4803.c1405eca2ccf78c8.js +1 -0
  72. package/.next/static/chunks/5796.4351370494d8b8b6.js +1 -0
  73. package/.next/static/chunks/5859.cf66c492751f5680.js +1 -0
  74. package/.next/static/chunks/6031-a7dfc540189ff57c.js +28 -0
  75. package/.next/static/chunks/6393.e4b26fee060438d6.js +1 -0
  76. package/.next/static/chunks/6700.a72869377e81146c.js +1 -0
  77. package/.next/static/chunks/6789.856de844108ee5da.js +1 -0
  78. package/.next/static/chunks/6852-97b424676696b449.js +1 -0
  79. package/.next/static/chunks/7191-0063121dcadf6b82.js +1 -0
  80. package/.next/static/chunks/7351.2d0d3a1fb538d97a.js +1 -0
  81. package/.next/static/chunks/7692.a352cce6d744fa8b.js +1 -0
  82. package/.next/static/chunks/7861.7f9f1a124a43da30.js +6 -0
  83. package/.next/static/chunks/8068.43663fb64762f7b8.js +1 -0
  84. package/.next/static/chunks/83.7723de7199118a99.js +1 -0
  85. package/.next/static/chunks/8325.dabe9aa22eaadeed.js +1 -0
  86. package/.next/static/chunks/8587.53c8ce185ed1a2cb.js +1 -0
  87. package/.next/static/chunks/9173-2dc082a086a959c3.js +1 -0
  88. package/.next/static/chunks/9399.132e63584d15075f.js +1 -0
  89. package/.next/static/chunks/941.417f354fd61bae91.js +1 -0
  90. package/.next/static/chunks/9465.8754a1b3cd5c4c83.js +1 -0
  91. package/.next/static/chunks/9714.2e2c2f0eb526ba23.js +1 -0
  92. package/.next/static/chunks/9781.a221de71d6b10ba0.js +1 -0
  93. package/.next/static/chunks/9909.787576b171184aa5.js +1 -0
  94. package/.next/static/chunks/BannerNewsletter.840a840b7a616260.js +1 -0
  95. package/.next/static/chunks/BannerText.b675fb19df87b7cb.js +1 -0
  96. package/.next/static/chunks/ButtonSignIn.308336a54a58f436.js +1 -0
  97. package/.next/static/chunks/CartItem.afa42120880fcb94.js +1 -0
  98. package/.next/static/chunks/CartSidebar.71d3ea99611c87a3.js +1 -0
  99. package/.next/static/chunks/Dropdown.38b48c749bad6b60.js +1 -0
  100. package/.next/static/chunks/DropdownButton.66fa6b25dddb3a07.js +1 -0
  101. package/.next/static/chunks/DropdownItem.38b8f5a07c7f422a.js +1 -0
  102. package/.next/static/chunks/DropdownMenu.48b11521a24c6efd.js +1 -0
  103. package/.next/static/chunks/EmptyCart.320e2f94a0d5e6b1.js +1 -0
  104. package/.next/static/chunks/FilterSkeleton.7ab99e28f92341c9.js +1 -0
  105. package/.next/static/chunks/Footer.63a7682a81a96f8e.js +1 -0
  106. package/.next/static/chunks/Gift.9d0570cbe866077f.js +1 -0
  107. package/.next/static/chunks/Newsletter.dbf35a8ea6d2067e.js +1 -0
  108. package/.next/static/chunks/OrderSummary.f9adad5622605046.js +1 -0
  109. package/.next/static/chunks/PreviewTag.f4f0c8710a7bcad9.js +1 -0
  110. package/.next/static/chunks/ProductShelf.632b93b2c0e1ca9a.js +1 -0
  111. package/.next/static/chunks/ProductTiles.778c483734598736.js +1 -0
  112. package/.next/static/chunks/RegionModal.2a8f6662c3a64d2a.js +1 -0
  113. package/.next/static/chunks/RegionSlider.bd14bfba15836ea0.js +1 -0
  114. package/.next/static/chunks/ScrollToTopButton.c15431f2e8bb93ef.js +1 -0
  115. package/.next/static/chunks/Toast.f583e19c7fcb2527.js +1 -0
  116. package/.next/static/chunks/UIBannerText.6715ba9ae0b6065c.js +1 -0
  117. package/.next/static/chunks/UISKUMatrixSidebar.072f0b5bf8e172f6.js +1 -0
  118. package/.next/static/chunks/UIToast.1ac644a9d787435c.js +1 -0
  119. package/.next/static/chunks/framework-d514426edf885c68.js +33 -0
  120. package/.next/static/chunks/main-595f5e3b626b9fff.js +1 -0
  121. package/.next/static/chunks/pages/404-4b3f1e22c77f849a.js +1 -0
  122. package/.next/static/chunks/pages/500-bb2de0c11524b2b8.js +1 -0
  123. package/.next/static/chunks/pages/[...slug]-8c829cc01fdb1a38.js +1 -0
  124. package/.next/static/chunks/pages/[slug]/p-4900eb3e616324c7.js +1 -0
  125. package/.next/static/chunks/pages/_app-8b7d8e9c9021b0cf.js +1 -0
  126. package/.next/static/chunks/pages/_error-2b0148be56a716e9.js +1 -0
  127. package/.next/static/chunks/pages/checkout-dc07d72b3514c83d.js +1 -0
  128. package/.next/static/chunks/pages/index-8e36d989396a7544.js +1 -0
  129. package/.next/static/chunks/pages/login-e97ef92769456bf6.js +1 -0
  130. package/.next/static/chunks/pages/pvt/account/403-e4315ace8609a7ff.js +1 -0
  131. package/.next/static/chunks/pages/pvt/account/404-1e450ae9476bbcaa.js +1 -0
  132. package/.next/static/chunks/pages/pvt/account/[...unknown]-f80f645594d2740c.js +1 -0
  133. package/.next/static/chunks/pages/pvt/account/orders/[id]-a3e46af1be9816a4.js +1 -0
  134. package/.next/static/chunks/pages/pvt/account/orders-db7a364869130660.js +1 -0
  135. package/.next/static/chunks/pages/pvt/account/profile-e8a7ad7a7d7c60fb.js +1 -0
  136. package/.next/static/chunks/pages/pvt/account/security-cad4e4260be8b0cd.js +1 -0
  137. package/.next/static/chunks/pages/pvt/account/user-details-401f6f6e4ce4b9ce.js +1 -0
  138. package/.next/static/chunks/pages/pvt/account-65fefcc699344bdb.js +1 -0
  139. package/.next/static/chunks/pages/s-5319ae49907c3391.js +1 -0
  140. package/.next/static/chunks/webpack-50869061879531a0.js +1 -0
  141. package/.next/static/css/175fa823349dc534.css +1 -0
  142. package/.next/static/css/{18e4be87b97035da.css → 45fac71f6411cceb.css} +1 -1
  143. package/.next/static/css/f63d693715093ed1.css +1 -0
  144. package/.next/trace +137 -136
  145. package/.turbo/turbo-build.log +29 -30
  146. package/.turbo/turbo-test.log +5 -5
  147. package/@generated/graphql.ts +3 -3
  148. package/@generated/schema.graphql +1 -1
  149. package/CHANGELOG.md +12 -0
  150. package/cms/faststore/content-types.json +22 -0
  151. package/package.json +13 -5
  152. package/src/components/search/Filter/FilterDesktop.tsx +8 -10
  153. package/src/components/search/Filter/FilterSlider.tsx +9 -10
  154. package/src/components/sections/Newsletter/section.module.scss +2 -0
  155. package/src/components/ui/Newsletter/NewsletterAddendum.tsx +22 -73
  156. package/src/components/ui/RichText/RichText.tsx +202 -0
  157. package/src/components/ui/RichText/index.ts +2 -0
  158. package/src/sdk/deliveryPromise/index.ts +3 -0
  159. package/src/sdk/deliveryPromise/useDeliveryPromise.ts +124 -92
  160. package/src/utils/globalSettings.ts +5 -0
  161. package/.next/server/chunks/8640.js +0 -1
  162. package/.next/static/-2c_JOi0FOzMdeFIuzNgV/_buildManifest.js +0 -1
  163. package/.next/static/chunks/1417.feb3146f627742b7.js +0 -1
  164. package/.next/static/chunks/2284.6e01b30c38bb74fd.js +0 -1
  165. package/.next/static/chunks/294.d57cdd543091b533.js +0 -1
  166. package/.next/static/chunks/3155.8ff6efc44151971f.js +0 -1
  167. package/.next/static/chunks/3166-b1ac316afe18625b.js +0 -1
  168. package/.next/static/chunks/3399.15d4dbadc57c3f42.js +0 -1
  169. package/.next/static/chunks/3483.4aa5b8186f9288b8.js +0 -1
  170. package/.next/static/chunks/353.3e74b28c8ca649a2.js +0 -1
  171. package/.next/static/chunks/3836.c7f8d69a151682bc.js +0 -1
  172. package/.next/static/chunks/4799.685d618907cf7026.js +0 -1
  173. package/.next/static/chunks/4803.74cf987971db6d93.js +0 -1
  174. package/.next/static/chunks/4836.ef87204971e182f4.js +0 -1
  175. package/.next/static/chunks/5796.31fc3b14839d2bc0.js +0 -1
  176. package/.next/static/chunks/6031-18797e7ebff417ab.js +0 -28
  177. package/.next/static/chunks/6393.4ad395e06f7dbbc6.js +0 -1
  178. package/.next/static/chunks/6700.ddae2aa02d2dd401.js +0 -1
  179. package/.next/static/chunks/6789.c37c2ec891333684.js +0 -1
  180. package/.next/static/chunks/7026.9ab6a9b610831b85.js +0 -1
  181. package/.next/static/chunks/7191-d39597fc204602cb.js +0 -1
  182. package/.next/static/chunks/7351.8ef7b6b1d6e1505a.js +0 -1
  183. package/.next/static/chunks/7692.d434a8499fb2aa03.js +0 -1
  184. package/.next/static/chunks/7861.3fe27a385fea2fb7.js +0 -6
  185. package/.next/static/chunks/8068.374d1641856d8b1b.js +0 -1
  186. package/.next/static/chunks/83.730576d7ded8dfe2.js +0 -1
  187. package/.next/static/chunks/8325.40b7331df742c2f5.js +0 -1
  188. package/.next/static/chunks/8587.1d6d458c9b697351.js +0 -1
  189. package/.next/static/chunks/9173-188afceabcbccdbb.js +0 -1
  190. package/.next/static/chunks/9399.6bd7f24a04ccfff4.js +0 -1
  191. package/.next/static/chunks/941.2a946730a9174ed7.js +0 -1
  192. package/.next/static/chunks/9666-1bd33f872ad66b42.js +0 -1
  193. package/.next/static/chunks/9714.68af2d4bf27f560b.js +0 -1
  194. package/.next/static/chunks/9781.60f28efd7e165f54.js +0 -1
  195. package/.next/static/chunks/9909.dcc319593a7c09f1.js +0 -1
  196. package/.next/static/chunks/BannerNewsletter.d91d065d644d15f3.js +0 -1
  197. package/.next/static/chunks/BannerText.3bc2f0af3687e984.js +0 -1
  198. package/.next/static/chunks/ButtonSignIn.c9bc322071e80856.js +0 -1
  199. package/.next/static/chunks/CartItem.d4c2664933f93606.js +0 -1
  200. package/.next/static/chunks/CartSidebar.e21ad4975e18e6db.js +0 -1
  201. package/.next/static/chunks/Dropdown.7fe839c5ffce4687.js +0 -1
  202. package/.next/static/chunks/DropdownButton.47ba6e75ee7435de.js +0 -1
  203. package/.next/static/chunks/DropdownItem.0b3c39f881ca0832.js +0 -1
  204. package/.next/static/chunks/DropdownMenu.943b2d11ffa50ff6.js +0 -1
  205. package/.next/static/chunks/EmptyCart.2fac8149cc511b0d.js +0 -1
  206. package/.next/static/chunks/FilterSkeleton.2e156182f33d8116.js +0 -1
  207. package/.next/static/chunks/Footer.0eb7e5cc7bce8103.js +0 -1
  208. package/.next/static/chunks/Gift.5891ca280b4f0164.js +0 -1
  209. package/.next/static/chunks/Newsletter.46c9113fa222890a.js +0 -1
  210. package/.next/static/chunks/OrderSummary.35d859a1e467ad91.js +0 -1
  211. package/.next/static/chunks/PreviewTag.0b16a5b6ac35ce1c.js +0 -1
  212. package/.next/static/chunks/ProductShelf.ee5cec2ae121df87.js +0 -1
  213. package/.next/static/chunks/ProductTiles.2bd64de5bcd5f6d8.js +0 -1
  214. package/.next/static/chunks/RegionModal.b5edb6ada60d37ec.js +0 -1
  215. package/.next/static/chunks/RegionSlider.3d9063b0cb6733d9.js +0 -1
  216. package/.next/static/chunks/ScrollToTopButton.7acc3be2dcad2695.js +0 -1
  217. package/.next/static/chunks/Toast.c06d4e2e2e7913c5.js +0 -1
  218. package/.next/static/chunks/UIBannerText.08c65db460bd1695.js +0 -1
  219. package/.next/static/chunks/UISKUMatrixSidebar.5793df7899038286.js +0 -1
  220. package/.next/static/chunks/UIToast.55af19d2eba3d8a1.js +0 -1
  221. package/.next/static/chunks/framework-807b0f81cbc129f0.js +0 -33
  222. package/.next/static/chunks/main-f658704b53a96ab1.js +0 -1
  223. package/.next/static/chunks/pages/404-cc5de07438cb53b5.js +0 -1
  224. package/.next/static/chunks/pages/500-926ab913425651bc.js +0 -1
  225. package/.next/static/chunks/pages/[...slug]-1e68a914dfca7da9.js +0 -1
  226. package/.next/static/chunks/pages/[slug]/p-60dd0938ba92424b.js +0 -1
  227. package/.next/static/chunks/pages/_app-02ac96e27a9cbbb4.js +0 -1
  228. package/.next/static/chunks/pages/_error-d820b4586477c368.js +0 -1
  229. package/.next/static/chunks/pages/checkout-b0637ee59b1cdca8.js +0 -1
  230. package/.next/static/chunks/pages/index-004d6444cfaf59cb.js +0 -1
  231. package/.next/static/chunks/pages/login-3043634ec00661a8.js +0 -1
  232. package/.next/static/chunks/pages/pvt/account/403-a1c5772740914141.js +0 -1
  233. package/.next/static/chunks/pages/pvt/account/404-eaed7a7c92d499ff.js +0 -1
  234. package/.next/static/chunks/pages/pvt/account/[...unknown]-a8bcdec2e6ed7b0e.js +0 -1
  235. package/.next/static/chunks/pages/pvt/account/orders/[id]-3bdaf71be192669b.js +0 -1
  236. package/.next/static/chunks/pages/pvt/account/orders-10475517a29223cb.js +0 -1
  237. package/.next/static/chunks/pages/pvt/account/profile-449314f16e1c132c.js +0 -1
  238. package/.next/static/chunks/pages/pvt/account/security-8b024c8877f125d0.js +0 -1
  239. package/.next/static/chunks/pages/pvt/account/user-details-0caf3ce4cb6df66e.js +0 -1
  240. package/.next/static/chunks/pages/pvt/account-412a3bb2b0f22dea.js +0 -1
  241. package/.next/static/chunks/pages/s-c624c961a98a1be0.js +0 -1
  242. package/.next/static/chunks/webpack-5b7c916f31abc68d.js +0 -1
  243. package/.next/static/css/37ee6a2c6adab309.css +0 -1
  244. package/.next/static/css/3d7be7043aee15df.css +0 -1
  245. package/.next/static/css/fe0bcc13a2b68605.css +0 -1
  246. /package/.next/static/{-2c_JOi0FOzMdeFIuzNgV → JaRUyeLgqhw17hCxdW6B5}/_ssgManifest.js +0 -0
@@ -0,0 +1,202 @@
1
+ /**
2
+ * This component supports both DraftJS and Lexical content formats:
3
+ * - For hCMS content source: Uses DraftJS (legacy, will be deprecated)
4
+ * - For Content Platform (CP): Uses Lexical (actively maintained)
5
+ *
6
+ * The draftjs-to-html library (used for CMS) hasn't been updated in 4 years and should be removed
7
+ * when CMS content is fully migrated to Content Platform or a different approach.
8
+ *
9
+ * This is a reusable component that can be used by any component that needs to render rich text content.
10
+ */
11
+
12
+ // @ts-ignore motivation: cannot find the draftjs-to-html package types.
13
+ import draftToHtml from 'draftjs-to-html'
14
+ import { $generateHtmlFromNodes } from '@lexical/html'
15
+ import { createHeadlessEditor } from '@lexical/headless'
16
+ import { LinkNode } from '@lexical/link'
17
+ import { HeadingNode, QuoteNode } from '@lexical/rich-text'
18
+ import { ListNode, ListItemNode } from '@lexical/list'
19
+ import { CodeNode } from '@lexical/code'
20
+ import { HorizontalRuleNode } from '@lexical/react/LexicalHorizontalRuleNode'
21
+ import {
22
+ ParagraphNode,
23
+ TextNode,
24
+ RootNode,
25
+ type SerializedEditorState,
26
+ } from 'lexical'
27
+ import { RichText as UIRichText } from '@faststore/ui'
28
+ import { isContentPlatformSource } from 'src/server/content/utils'
29
+
30
+ export interface RichTextProps {
31
+ /**
32
+ * Content to render. Can be:
33
+ * - A string of a JSON object in the form of draftjs's raw content state (for hCMS)
34
+ * - Lexical's serialized editor state (for Content Platform)
35
+ * - Plain HTML string
36
+ * - Plain text
37
+ */
38
+ content: string
39
+ /**
40
+ * ID to find this component in testing tools (e.g.: cypress, testing library, and jest).
41
+ */
42
+ testId?: string
43
+ /**
44
+ * Additional props to pass to the underlying RichText component
45
+ */
46
+ [key: string]: any
47
+ }
48
+
49
+ function getLinkElementAsString(url: string, text: string) {
50
+ return `
51
+ <a
52
+ data-fs-link="true"
53
+ data-fs-link-variant="inline"
54
+ data-fs-link-inverse="true"
55
+ data-fs-link-size="regular"
56
+ data-testid="fs-link"
57
+ href="${url}"
58
+ >${text}</a>`
59
+ }
60
+
61
+ function replaceLinkElements(html: string): string {
62
+ return html.replace(
63
+ /<a[^>]*href="([^"]*)"[^>]*>([^<]*)<\/a>/g,
64
+ (match, url, text) => getLinkElementAsString(url, text)
65
+ )
66
+ }
67
+
68
+ function replaceLists(html: string): string {
69
+ return html
70
+ .replace(
71
+ /<ol([^>]*)>/g,
72
+ '<ol$1 data-fs-rich-text-list="true" data-fs-list-type="ordered">'
73
+ )
74
+ .replace(
75
+ /<ul([^>]*)>/g,
76
+ '<ul$1 data-fs-rich-text-list="true" data-fs-list-type="unordered">'
77
+ )
78
+ }
79
+
80
+ function fixNestedListStructure(html: string): string {
81
+ let result = html
82
+
83
+ // Remove completely empty list items
84
+ result = result.replace(/<li[^>]*>\s*<\/li>/g, '')
85
+
86
+ // Fix empty <li> elements that directly contain nested lists
87
+ result = result.replace(/<li([^>]*)>\s*(<(?:ul|ol)[^>]*>)/g, '$2')
88
+
89
+ // Fix closing tags: </ul></li> should become </ul>
90
+ result = result.replace(/(<\/(?:ul|ol)>)\s*<\/li>/g, '$1')
91
+
92
+ // Clean up remaining structural issues
93
+ result = result.replace(/\s*<li[^>]*>\s*(?=<(?:ul|ol))/g, '')
94
+
95
+ return result
96
+ }
97
+
98
+ function lexicalToHtml(content: string) {
99
+ let lexicalState: SerializedEditorState | null = null
100
+
101
+ try {
102
+ lexicalState = JSON.parse(content)
103
+ } catch (e) {
104
+ const error = new Error(
105
+ 'RichText\'s prop "content" is not a valid JSON string. This is happening because the content is malformed or the Content Platform is providing malformed content.'
106
+ )
107
+ error.cause = e
108
+ throw error
109
+ }
110
+
111
+ if (!lexicalState) {
112
+ return ''
113
+ }
114
+
115
+ const editor = createHeadlessEditor({
116
+ nodes: [
117
+ RootNode,
118
+ ParagraphNode,
119
+ TextNode,
120
+ LinkNode,
121
+ HeadingNode,
122
+ QuoteNode,
123
+ ListNode,
124
+ ListItemNode,
125
+ CodeNode,
126
+ HorizontalRuleNode,
127
+ ],
128
+ onError: (error) => {
129
+ throw error
130
+ },
131
+ })
132
+
133
+ let html = ''
134
+
135
+ editor.update(() => {
136
+ const editorState = editor.parseEditorState(lexicalState)
137
+ editor.setEditorState(editorState)
138
+ })
139
+
140
+ editor.read(() => {
141
+ html = $generateHtmlFromNodes(editor, null)
142
+ })
143
+
144
+ const withLinks = replaceLinkElements(html)
145
+ const withLists = replaceLists(withLinks)
146
+ return fixNestedListStructure(withLists)
147
+ }
148
+
149
+ function cmsToHtml(content: string) {
150
+ let rawDraftContentState: any = null
151
+
152
+ try {
153
+ rawDraftContentState = JSON.parse(content)
154
+ } catch (e) {
155
+ const error = new Error(
156
+ 'RichText\'s prop "content" is not a valid JSON string. This is happening because the content is malformed or the CMS is providing malformed content.'
157
+ )
158
+ error.cause = e
159
+ throw error
160
+ }
161
+
162
+ if (!rawDraftContentState) {
163
+ return ''
164
+ }
165
+
166
+ return draftToHtml(
167
+ rawDraftContentState,
168
+ undefined,
169
+ undefined,
170
+ (entity: { type: string; data: { url: string } }, text: string) => {
171
+ if (entity.type !== 'LINK') {
172
+ return null
173
+ }
174
+
175
+ return getLinkElementAsString(entity.data.url, text)
176
+ }
177
+ )
178
+ }
179
+
180
+ function isJsonString(str: string): boolean {
181
+ try {
182
+ JSON.parse(str)
183
+ return true
184
+ } catch {
185
+ return false
186
+ }
187
+ }
188
+
189
+ export function RichText({
190
+ content,
191
+ testId = 'fs-rich-text',
192
+ ...otherProps
193
+ }: Readonly<RichTextProps>) {
194
+ let htmlContent = content
195
+
196
+ if (isJsonString(content)) {
197
+ const convertToHtml = isContentPlatformSource() ? lexicalToHtml : cmsToHtml
198
+ htmlContent = convertToHtml(content)
199
+ }
200
+
201
+ return <UIRichText content={htmlContent} testId={testId} {...otherProps} />
202
+ }
@@ -0,0 +1,2 @@
1
+ export { RichText } from './RichText'
2
+ export type { RichTextProps } from './RichText'
@@ -1,5 +1,8 @@
1
1
  export {
2
+ DELIVERY_OPTIONS_FACET_KEY,
2
3
  deliveryPromiseStore,
4
+ DYNAMIC_ESTIMATE_FACET_KEY,
5
+ IN_STOCK_FACET_KEY,
3
6
  PICKUP_ALL_FACET_VALUE,
4
7
  PICKUP_IN_POINT_FACET_VALUE,
5
8
  PICKUP_POINT_FACET_KEY,
@@ -14,9 +14,10 @@ import type {
14
14
  } from '@generated/graphql'
15
15
 
16
16
  import type { useFilter } from 'src/sdk/search/useFilter'
17
- import { useSession } from 'src/sdk/session'
18
17
  import type { GlobalCmsData } from 'src/utils/globalSettings'
19
18
 
19
+ import { useSession } from 'src/sdk/session'
20
+
20
21
  import { deliveryPromise as deliveryPromiseConfig } from 'discovery.config'
21
22
  import {
22
23
  initialPickupPointsSimulation,
@@ -32,6 +33,7 @@ export const PICKUP_ALL_FACET_VALUE = 'pickup-all' as const
32
33
  export const ALL_DELIVERY_OPTIONS_FACET_VALUE = 'all-delivery-options' as const
33
34
  export const DELIVERY_OPTIONS_FACET_KEY = 'delivery-options' as const
34
35
  export const DYNAMIC_ESTIMATE_FACET_KEY = 'dynamic-estimate' as const
36
+ export const IN_STOCK_FACET_KEY = 'in-stock' as const
35
37
 
36
38
  type Facet = SearchState['selectedFacets'][number]
37
39
  type DeliveryType = 'delivery' | 'pickup-in-point'
@@ -116,6 +118,7 @@ export function useDeliveryPromise({
116
118
  const isDeliveryPromiseEnabled = deliveryPromiseConfig.enabled
117
119
  const isDeliveryOptionsEnabled =
118
120
  deliveryPromiseSettings?.deliveryOptions?.enabled ?? true
121
+ const isInStockEnabled = deliveryPromiseSettings?.inStock?.enabled ?? false
119
122
 
120
123
  const selectedFacets = useMemo(
121
124
  () => selectedFilterFacets ?? searchState.selectedFacets,
@@ -210,6 +213,25 @@ export function useDeliveryPromise({
210
213
  [defaultPickupPoint, selectedFacets]
211
214
  )
212
215
 
216
+ const inStockFacet = useMemo(
217
+ (): Filter_FacetsFragment => ({
218
+ key: IN_STOCK_FACET_KEY,
219
+ label: IN_STOCK_FACET_KEY,
220
+ __typename: 'StoreFacetBoolean',
221
+ values: [
222
+ {
223
+ value: 'true',
224
+ label: deliveryPromiseSettings?.inStock?.label ?? 'In-stock only',
225
+ selected: selectedFacets.some(
226
+ ({ key, value }) => key === IN_STOCK_FACET_KEY && value === 'true'
227
+ ),
228
+ quantity: null,
229
+ },
230
+ ],
231
+ }),
232
+ [deliveryPromiseSettings, selectedFacets]
233
+ )
234
+
213
235
  const [allDeliveryMethodsFacet, allDeliveryOptionsFacet] = useMemo(
214
236
  () => [
215
237
  {
@@ -300,101 +322,105 @@ export function useDeliveryPromise({
300
322
  const facets = useMemo(() => {
301
323
  if (!allFacets) return []
302
324
 
303
- return !isDeliveryPromiseEnabled || !postalCode
304
- ? allFacets.filter(
305
- ({ key }) =>
306
- key !== SHIPPING_FACET_KEY &&
307
- key !== DELIVERY_OPTIONS_FACET_KEY &&
308
- key !== DYNAMIC_ESTIMATE_FACET_KEY
309
- )
310
- : allFacets
311
- .filter(({ key }) => key !== DYNAMIC_ESTIMATE_FACET_KEY) // TODO: remove this filter when dynamic estimate is implemented
312
- .filter(({ key }) => {
313
- if (
314
- !isDeliveryOptionsEnabled &&
315
- key === DELIVERY_OPTIONS_FACET_KEY
316
- ) {
317
- return false
318
- }
325
+ if (!isDeliveryPromiseEnabled || !postalCode) {
326
+ return allFacets.filter(
327
+ ({ key }) =>
328
+ key !== SHIPPING_FACET_KEY &&
329
+ key !== DELIVERY_OPTIONS_FACET_KEY &&
330
+ key !== DYNAMIC_ESTIMATE_FACET_KEY
331
+ )
332
+ }
319
333
 
320
- return true
321
- })
322
- .map((facet) => {
323
- if (facet.__typename !== 'StoreFacetBoolean') return facet
334
+ const filteredFacets = allFacets
335
+ .filter(({ key }) => key !== DYNAMIC_ESTIMATE_FACET_KEY) // TODO: remove this filter when dynamic estimate is implemented
336
+ .filter(({ key }) => {
337
+ if (!isDeliveryOptionsEnabled && key === DELIVERY_OPTIONS_FACET_KEY) {
338
+ return false
339
+ }
324
340
 
325
- if (facet.key === DELIVERY_OPTIONS_FACET_KEY) {
326
- facet.values = withUniqueFacet(
327
- facet.values,
328
- allDeliveryOptionsFacet
329
- )
341
+ return true
342
+ })
330
343
 
331
- return facet
332
- }
344
+ if (
345
+ isInStockEnabled &&
346
+ !filteredFacets.find(({ key }) => key === IN_STOCK_FACET_KEY) &&
347
+ filteredFacets.find(({ key }) => key === SHIPPING_FACET_KEY) // Avoid adding in-stock facet if IS doesn't return any shipping facet
348
+ ) {
349
+ filteredFacets.push(inStockFacet)
350
+ }
333
351
 
334
- if (facet.key !== SHIPPING_FACET_KEY) return facet
352
+ return filteredFacets
353
+ .map((facet) => {
354
+ if (facet.__typename !== 'StoreFacetBoolean') return facet
335
355
 
336
- facet.values = withUniqueFacet(
337
- facet.values,
338
- allDeliveryMethodsFacet
339
- )
340
- const pickupInPointFacetIndex = facet.values.findIndex(
341
- (item) => item?.value === PICKUP_IN_POINT_FACET_VALUE
342
- )
356
+ if (facet.key === DELIVERY_OPTIONS_FACET_KEY) {
357
+ facet.values = withUniqueFacet(facet.values, allDeliveryOptionsFacet)
343
358
 
344
- // Remove old pickup `pickup in point` facet from list and search state
345
- if (pickupInPointFacetIndex !== -1 && !defaultPickupPoint) {
346
- const selectedShippingFacet = selectedFacets.find(
347
- ({ key }) => key === SHIPPING_FACET_KEY
348
- )
349
-
350
- if (selectedShippingFacet) {
351
- const selectedPickupInPointFacets = selectedFacets.filter(
352
- ({ key, value }) =>
353
- value === PICKUP_IN_POINT_FACET_VALUE ||
354
- key === PICKUP_POINT_FACET_KEY
355
- )
356
-
357
- selectedPickupInPointFacets.length
358
- ? onDeliveryFacetChange({
359
- facets: selectedPickupInPointFacets,
360
- })
361
- : onDeliveryFacetChange({ facet: selectedShippingFacet })
362
- }
363
-
364
- // Removes pickupInPointIndex from array
365
- facet.values = facet.values.filter(
366
- (_, index) => index !== pickupInPointFacetIndex
367
- )
368
- }
369
- // Prevent multiple `pickup in point` facet
370
- else if (pickupInPointFacetIndex === -1 && defaultPickupPoint) {
371
- facet.values.push(pickupInPointFacet)
372
- }
373
- // Replace current `pickup-in-point` facet with the updated one
374
- else if (
375
- facet.values[pickupInPointFacetIndex] &&
376
- facet.values[pickupInPointFacetIndex]?.label !==
377
- pickupInPointFacet.label
378
- ) {
379
- facet.values[pickupInPointFacetIndex] = pickupInPointFacet
380
- }
359
+ return facet
360
+ }
361
+
362
+ if (facet.key !== SHIPPING_FACET_KEY) return facet
363
+
364
+ facet.values = withUniqueFacet(facet.values, allDeliveryMethodsFacet)
365
+ const pickupInPointFacetIndex = facet.values.findIndex(
366
+ (item) => item?.value === PICKUP_IN_POINT_FACET_VALUE
367
+ )
381
368
 
382
- facet.values = facet.values.sort((a, b) =>
383
- (a.value ?? '').localeCompare(b.value ?? '')
369
+ // Remove old pickup `pickup in point` facet from list and search state
370
+ if (pickupInPointFacetIndex !== -1 && !defaultPickupPoint) {
371
+ const selectedShippingFacet = selectedFacets.find(
372
+ ({ key }) => key === SHIPPING_FACET_KEY
373
+ )
374
+
375
+ if (selectedShippingFacet) {
376
+ const selectedPickupInPointFacets = selectedFacets.filter(
377
+ ({ key, value }) =>
378
+ value === PICKUP_IN_POINT_FACET_VALUE ||
379
+ key === PICKUP_POINT_FACET_KEY
384
380
  )
385
381
 
386
- return facet
387
- })
388
- .sort((a, b) => {
389
- // Define priority order: shipping (0), delivery-options (1), others (2)
390
- const getPriority = (key: string) => {
391
- if (key === SHIPPING_FACET_KEY) return 0
392
- if (key === DELIVERY_OPTIONS_FACET_KEY) return 1
393
- return 2
394
- }
382
+ selectedPickupInPointFacets.length
383
+ ? onDeliveryFacetChange({
384
+ facets: selectedPickupInPointFacets,
385
+ })
386
+ : onDeliveryFacetChange({ facet: selectedShippingFacet })
387
+ }
388
+
389
+ // Removes pickupInPointIndex from array
390
+ facet.values = facet.values.filter(
391
+ (_, index) => index !== pickupInPointFacetIndex
392
+ )
393
+ }
394
+ // Prevent multiple `pickup in point` facet
395
+ else if (pickupInPointFacetIndex === -1 && defaultPickupPoint) {
396
+ facet.values.push(pickupInPointFacet)
397
+ }
398
+ // Replace current `pickup-in-point` facet with the updated one
399
+ else if (
400
+ facet.values[pickupInPointFacetIndex] &&
401
+ facet.values[pickupInPointFacetIndex]?.label !==
402
+ pickupInPointFacet.label
403
+ ) {
404
+ facet.values[pickupInPointFacetIndex] = pickupInPointFacet
405
+ }
406
+
407
+ facet.values = facet.values.sort((a, b) =>
408
+ (a.value ?? '').localeCompare(b.value ?? '')
409
+ )
395
410
 
396
- return getPriority(a.key) - getPriority(b.key)
397
- })
411
+ return facet
412
+ })
413
+ .sort((a, b) => {
414
+ // Define priority order: shipping (0), delivery-options (1), in-stock (2), others (3)
415
+ const getPriority = (key: string) => {
416
+ if (key === SHIPPING_FACET_KEY) return 0
417
+ if (key === DELIVERY_OPTIONS_FACET_KEY) return 1
418
+ if (key === IN_STOCK_FACET_KEY) return 2
419
+ return 3
420
+ }
421
+
422
+ return getPriority(a.key) - getPriority(b.key)
423
+ })
398
424
  }, [
399
425
  allDeliveryMethodsFacet,
400
426
  pickupInPointFacet,
@@ -441,6 +467,15 @@ export function useDeliveryPromise({
441
467
  []
442
468
  )
443
469
 
470
+ const labelsMap = {
471
+ [SHIPPING_FACET_KEY]:
472
+ deliveryPromiseSettings?.deliveryMethods?.title ?? 'Delivery',
473
+ [DELIVERY_OPTIONS_FACET_KEY]:
474
+ deliveryPromiseSettings?.deliveryOptions?.title ?? 'Delivery Option',
475
+ [IN_STOCK_FACET_KEY]:
476
+ deliveryPromiseSettings?.inStock?.title ?? 'Availability',
477
+ }
478
+
444
479
  function getBadgeLabel(value: DeliveryType, isAvailable: boolean) {
445
480
  const labelMap: Record<
446
481
  DeliveryType,
@@ -539,10 +574,7 @@ export function useDeliveryPromise({
539
574
  facets,
540
575
  onPostalCodeChange,
541
576
  onDeliveryFacetChange,
542
- deliveryLabel:
543
- deliveryPromiseSettings?.deliveryMethods?.title ?? 'Delivery',
544
- deliveryOptionsLabel:
545
- deliveryPromiseSettings?.deliveryOptions?.title ?? 'Delivery Option',
577
+ labelsMap,
546
578
  isPickupAllEnabled:
547
579
  pickupPoints?.length > 0 &&
548
580
  (deliveryPromiseSettings?.deliveryMethods?.pickupAll?.enabled ?? false),
@@ -552,12 +584,12 @@ export function useDeliveryPromise({
552
584
  }
553
585
  }
554
586
 
555
- type BoleanFacet = Extract<
587
+ type BooleanFacet = Extract<
556
588
  Filter_FacetsFragment,
557
589
  { __typename: 'StoreFacetBoolean' }
558
590
  >['values'][number]
559
591
 
560
- function withUniqueFacet(facets: Array<BoleanFacet>, facet: BoleanFacet) {
592
+ function withUniqueFacet(facets: Array<BooleanFacet>, facet: BooleanFacet) {
561
593
  return [facet, ...facets.filter((item) => item.value !== facet.value)]
562
594
  }
563
595
 
@@ -70,6 +70,11 @@ type DeliveryPromiseCmsData = {
70
70
  pickupInPoint?: string
71
71
  pickupInPointUnavailable?: string
72
72
  }
73
+ inStock?: {
74
+ enabled?: boolean
75
+ title?: string
76
+ label?: string
77
+ }
73
78
  }
74
79
 
75
80
  export function getGlobalSettings(
@@ -1 +0,0 @@
1
- "use strict";exports.id=8640,exports.ids=[8640],exports.modules={339:(e,t,r)=>{r.d(t,{K:()=>useSlideVisibility});var a=r(16689);let useSlideVisibility=({currentSlide:e,itemsPerPage:t,totalItems:r})=>{let l=(0,a.useRef)(new Set);(0,a.useEffect)(()=>{for(let r=0;r<t;r++)l.current.add(e+r)},[e,t]);let isItemVisible=a=>(function({itemsPerPage:e,currentSlide:t,slideIdx:r,totalItems:a}){return t<0||t>=a||r>=t&&r<t+e})({slideIdx:a,currentSlide:e,itemsPerPage:t,totalItems:r});return{shouldRenderItem:e=>l.current.has(e)||isItemVisible(e),isItemVisible}}},3525:(e,t,r)=>{r.d(t,{oN:()=>useSlider});var a=r(16689),l=r(81280);let nextPage=(e,t)=>(e+1)%t,previousPage=(e,t)=>(t-(t-e+1)%t)%t;function reducer(e,t){switch(t.type){case"NEXT_PAGE":{let t=e.infinite?e.totalPages+1:e.totalPages,r=nextPage(e.currentPage,t),a=r%t*e.itemsPerPage;return{...e,sliding:!0,slideDirection:"next",currentItem:a,currentPage:r}}case"PREVIOUS_PAGE":{let t=e.infinite?e.totalPages+1:e.totalPages,r=e.infinite&&0===e.currentPage,a=r?-1:previousPage(e.currentPage,e.totalPages);return{...e,sliding:!0,slideDirection:"previous",currentItem:a%t*e.itemsPerPage,currentPage:a}}case"GO_TO_PAGE":if(t.payload.pageIndex===e.currentPage)return e;return{...e,sliding:t.payload.shouldSlide,slideDirection:t.payload.pageIndex>e.currentPage?"next":"previous",currentItem:t.payload.pageIndex%e.totalPages*e.itemsPerPage,currentPage:t.payload.pageIndex};case"STOP_SLIDE":return{...e,sliding:!1};default:return e}}let defaultSliderState=(e,t,r)=>({currentItem:0,currentPage:0,sliding:!1,slideDirection:"next",totalItems:e,itemsPerPage:t,totalPages:Math.ceil(e/t),infinite:r}),slide=(e,t)=>{"next"===e&&t({type:"NEXT_PAGE"}),"previous"===e&&t({type:"PREVIOUS_PAGE"}),"number"==typeof e&&t({type:"GO_TO_PAGE",payload:{pageIndex:e,shouldSlide:!0}})},useSlider=({totalItems:e,itemsPerPage:t=1,infiniteMode:r=!1,shouldSlideOnSwipe:n=!0,...i})=>{let[s,o]=(0,a.useReducer)(reducer,void 0,()=>defaultSliderState(e,t,r)),d=(0,l.QS)({onSwipedRight:()=>n&&slide("previous",o),onSwipedLeft:()=>n&&slide("next",o),trackMouse:!0,...i});return{handlers:d,slide,sliderState:s,sliderDispatch:o}}},39237:(e,t,r)=>{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(16689),l=r.n(a),n=r(37041),i=r(2614),s=r(3525),o=r(9654),d=r(86487);let createTransformValues=(e,t)=>{let r={},a=100/t;for(let l=0;l<t;++l){let t=e?l-1:l,n=-(a*l);r[t]=n}return r},__WEBPACK_DEFAULT_EXPORT__=function({children:e,className:t,"aria-label":r,infiniteMode:c=!1,controls:u="complete",testId:f="fs-carousel",transition:g={duration:400,property:"transform"},id:m="fs-carousel",variant:P="scroll",itemsPerPage:p=1,navigationIcons:E,...h}){if(p<1)throw Error("itemsPerPage must be greater than or equal to 1");let w=(0,a.useRef)(null),v="slide"===P,S="scroll"===P,b=l().Children.toArray(e),_=b.length,y=c?_+2:_,x=`${g.property} ${g.duration}ms ${g.timing??""} ${g.delay??""}`,{handlers:I,slide:A,sliderState:R,sliderDispatch:T}=(0,s.oN)({itemsPerPage:p,infiniteMode:c,totalItems:_,shouldSlideOnSwipe:v,...h}),$=Math.ceil(_/R.itemsPerPage),[Z,O]=(0,a.useState)("16px"),[C,k]=(0,a.useState)(0);(0,a.useEffect)(()=>{let e=w.current?.firstElementChild;e&&(O(getComputedStyle(e).getPropertyValue("margin-right")),k(Number(e.clientWidth)+Number.parseInt(Z,10)+1))},[C]);let G=(0,a.useMemo)(()=>createTransformValues(c,y),[y,c]),N=c&&e?b.slice(0,1):[],L=c&&e?b.slice(_-1):[],D=L.concat(e??[],N),V=(0,a.useMemo)(()=>({width:`${100*y}%`,transition:R.sliding?x:void 0,transform:`translate3d(${G[R.currentPage]}%, 0, 0)`}),[y,G,x,R.sliding,R.currentPage]),M=(0,a.useMemo)(()=>({width:"100%",overflowX:"scroll",whiteSpace:"nowrap"}),[]),slidePrevious=()=>{!R.sliding&&(c||0!==R.currentPage)&&A("previous",T)},slideNext=()=>{!R.sliding&&(c||R.currentPage!==_-1)&&A("next",T)},onScrollPagination=async(e,t)=>{if("previous"===t&&0===R.currentPage||"next"===t&&R.currentPage===R.totalPages-1)return;let r=e*C*p;w.current?.scrollTo({left:r,behavior:"smooth"}),A(e,T)};return l().createElement("section",{id:m,"data-fs-carousel":!0,"data-fs-carousel-variant":P,className:t,"data-testid":f,"aria-label":r},l().createElement("div",{"data-fs-carousel-track-container":!0,style:{width:"100%",overflow:"hidden",display:S?"block":void 0},...I},l().createElement("ul",{"aria-live":"polite",ref:w,style:v&&V||S&&M,"data-fs-carousel-track":!0,onScroll:e=>{if(v||p>1)return;let t=Number(e.currentTarget.firstElementChild?.scrollWidth),r=e.currentTarget?.scrollLeft,a=r>t/2?Math.round:Math.floor,l=a(r/t);A(l,T)},onTransitionEnd:()=>{T({type:"STOP_SLIDE"}),c&&R.currentItem>=_&&T({type:"GO_TO_PAGE",payload:{pageIndex:0,shouldSlide:!1}}),c&&R.currentItem<0&&T({type:"GO_TO_PAGE",payload:{pageIndex:R.totalPages-1,shouldSlide:!1}})}},D.map((e,t)=>l().createElement(d.Z,{id:m,index:t,key:String(t),state:R,totalItems:_,infiniteMode:c,isScrollCarousel:S,marginRightValue:Z},e)))),1!==$&&("complete"===u||"navigationArrows"===u)&&l().createElement("div",{"data-fs-carousel-controls":!0},l().createElement(n.Z,{"data-fs-carousel-control":"left","aria-controls":m,disabled:!c&&0===R.currentPage,"aria-label":"previous",icon:E?.left??l().createElement(i.Z,{name:"ArrowLeft",width:20,height:20,weight:"bold"}),onClick:()=>{v&&slidePrevious(),S&&onScrollPagination(R.currentPage-1,"previous")}}),l().createElement(n.Z,{"data-fs-carousel-control":"right","aria-controls":m,disabled:!c&&R.currentPage===R.totalPages-1,"aria-label":"next",icon:E?.right??l().createElement(i.Z,{name:"ArrowRight",width:20,height:20,weight:"bold"}),onClick:()=>{v&&slideNext(),S&&onScrollPagination(R.currentPage+1,"next")}})),1!==$&&("complete"===u||"paginationBullets"===u)&&l().createElement(o.Z,{id:m,tabIndex:0,activeBullet:R.currentPage,totalQuantity:$,onKeyDown:e=>{switch(e.key){case"ArrowLeft":v&&slidePrevious(),S&&onScrollPagination(R.currentPage-1,"previous");break;case"ArrowRight":v&&slideNext(),S&&onScrollPagination(R.currentPage+1,"next");break;case"Home":A(0,T);break;case"End":A(_-1,T)}},onClick:async(e,t)=>{v&&!R.sliding&&A(t,T),S&&onScrollPagination(t)},onFocus:e=>e.currentTarget.focus(),ariaControlsGenerator:e=>`${m}-carousel-item-${e}`}))}},9654:(e,t,r)=>{r.d(t,{Z:()=>s});var a=r(16689),l=r.n(a),n=r(83339);let defaultAriaLabel=(e,t,r)=>r?`Current page from ${e}`:`Go to page ${t+1} from ${e}`,i=(0,a.forwardRef)(function({id:e,totalQuantity:t,activeBullet:r,onClick:i,testId:s="fs-carousel-bullets",ariaLabelGenerator:o=defaultAriaLabel,ariaControlsGenerator:d,...c},u){let f=(0,a.useMemo)(()=>Array(t).fill(0),[t]);return l().createElement("div",{ref:u,"data-fs-carousel-bullets":!0,"data-testid":s,role:"tablist",...c},f.map((t,a)=>{let c=r===a;return l().createElement(n.Z,{key:`${e}-${a}`,role:"tab",tabIndex:-1,"data-fs-carousel-bullet":!0,testId:`${s}-bullet`,onClick:e=>i(e,a),"aria-label":o(e,a,c),"aria-controls":d?.(a),"aria-selected":c,variant:"tertiary"})}))}),s=i},86487:(e,t,r)=>{r.d(t,{Z:()=>__WEBPACK_DEFAULT_EXPORT__});var a=r(16689),l=r.n(a),n=r(339);let __WEBPACK_DEFAULT_EXPORT__=function({id:e,index:t,state:r,children:a,totalItems:i,infiniteMode:s,isScrollCarousel:o,marginRightValue:d}){let{isItemVisible:c,shouldRenderItem:u}=(0,n.K)({totalItems:i,currentSlide:r.currentItem,itemsPerPage:r.itemsPerPage}),f={width:`calc((100% - ${d} * ${r.itemsPerPage-1}) / ${r.itemsPerPage})`},g=o&&r.itemsPerPage>1?{...f}:{width:"100%"},m=o||u(t-Number(s));return l().createElement("li",{style:g,id:`${e}-carousel-item-${t}`,"data-fs-carousel-item":!0,"data-fs-carousel-item-visible":c(t-Number(s))||void 0},m?a:null)}},37115:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({card:e,children:t,colorVariant:r="main",testId:a="fs-newsletter",...n},i){return l().createElement("div",{ref:i,"data-testid":a,"data-fs-content":"newsletter","data-fs-newsletter":e?"card":"","data-fs-newsletter-color-variant":r,...n},t)}),i=n},92294:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({addendum:e,testId:t="fs-newsletter-addendum",...r},a){return l().createElement("span",{ref:a,"data-testid":t,"data-fs-newsletter-addendum":!0,...r},e)}),i=n},84207:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({children:e,testId:t="fs-newsletter-content",...r},a){return l().createElement("div",{ref:a,"data-testid":t,"data-fs-newsletter-content":!0,...r},e)}),i=n},32571:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({children:e,onSubmit:t,testId:r="fs-newsletter-form",...a},n){return l().createElement("form",{ref:n,"data-testid":r,"data-fs-newsletter-form":!0,onSubmit:t,...a},e)}),i=n},4796:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({icon:e,title:t,description:r,testId:a="fs-newsletter-header",...n},i){return l().createElement("header",{ref:i,"data-testid":a,"data-fs-newsletter-header":!0,...n},l().createElement("h3",{"data-fs-newsletter-header-title":!0},e,t),r&&l().createElement("span",{"data-fs-newsletter-header-description":!0},r))}),i=n},16737:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({testId:e="fs-product-shelf",children:t,...r},a){return l().createElement("div",{ref:a,"data-fs-product-shelf":!0,"data-fs-content":"product-shelf","data-testid":e,...r},t)}),i=n},67901:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({testId:e="store-tile",children:t,...r},a){return l().createElement("li",{ref:a,role:"listitem","data-fs-tile":!0,"data-testid":e,...r},t)}),i=n},23877:(e,t,r)=>{r.d(t,{Z:()=>i});var a=r(16689),l=r.n(a);let n=(0,a.forwardRef)(function({testId:e="store-tiles",children:t,...r},n){let i=a.Children.count(t);return l().createElement("ul",{ref:n,role:"list","data-fs-tiles":!0,"data-fs-tiles-variant":3===i?"expanded-first":2===i?"expanded-first-two":"","data-fs-content":"tiles","data-testid":e,...r},t)}),i=n}};
@@ -1 +0,0 @@
1
- self.__BUILD_MANIFEST=function(c,s,t,a,e,u){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":[c,s,t,"static/css/b1806cbafd0c1f81.css","static/chunks/pages/index-004d6444cfaf59cb.js"],"/404":[c,s,t,a,"static/chunks/pages/404-cc5de07438cb53b5.js"],"/500":[c,s,t,a,"static/chunks/pages/500-926ab913425651bc.js"],"/_error":["static/chunks/pages/_error-d820b4586477c368.js"],"/checkout":[c,s,t,"static/chunks/pages/checkout-b0637ee59b1cdca8.js"],"/login":[c,s,t,a,"static/chunks/pages/login-3043634ec00661a8.js"],"/pvt/account":["static/chunks/pages/pvt/account-412a3bb2b0f22dea.js"],"/pvt/account/403":[c,s,t,"static/css/b7bba8fce075688b.css","static/chunks/pages/pvt/account/403-a1c5772740914141.js"],"/pvt/account/404":[c,s,t,"static/css/5347dbc8b71de47d.css","static/chunks/pages/pvt/account/404-eaed7a7c92d499ff.js"],"/pvt/account/orders":[c,s,t,"static/css/b7fc24e8f1eb011f.css","static/chunks/pages/pvt/account/orders-10475517a29223cb.js"],"/pvt/account/orders/[id]":[c,s,t,"static/css/297be4be3be36ff0.css","static/chunks/pages/pvt/account/orders/[id]-3bdaf71be192669b.js"],"/pvt/account/profile":[c,s,t,"static/css/831a1f72fe4b2d80.css","static/chunks/pages/pvt/account/profile-449314f16e1c132c.js"],"/pvt/account/security":[c,s,t,"static/css/ec7fdad03808422d.css","static/chunks/pages/pvt/account/security-8b024c8877f125d0.js"],"/pvt/account/user-details":[c,s,t,"static/css/e46393a76c5d93a9.css","static/chunks/pages/pvt/account/user-details-0caf3ce4cb6df66e.js"],"/pvt/account/[...unknown]":["static/chunks/pages/pvt/account/[...unknown]-a8bcdec2e6ed7b0e.js"],"/s":[c,s,t,e,u,a,"static/chunks/pages/s-c624c961a98a1be0.js"],"/[slug]/p":[c,s,t,"static/chunks/9666-1bd33f872ad66b42.js","static/css/6cd282d958f613bc.css","static/css/3d7be7043aee15df.css","static/chunks/3166-b1ac316afe18625b.js","static/css/37ee6a2c6adab309.css","static/chunks/pages/[slug]/p-60dd0938ba92424b.js"],"/[...slug]":[c,s,t,e,u,"static/chunks/pages/[...slug]-1e68a914dfca7da9.js"],sortedPages:["/","/404","/500","/_app","/_error","/checkout","/login","/pvt/account","/pvt/account/403","/pvt/account/404","/pvt/account/orders","/pvt/account/orders/[id]","/pvt/account/profile","/pvt/account/security","/pvt/account/user-details","/pvt/account/[...unknown]","/s","/[slug]/p","/[...slug]"]}}("static/chunks/6031-18797e7ebff417ab.js","static/css/0f990bb4836247c7.css","static/chunks/9173-188afceabcbccdbb.js","static/css/2980acad3f8e1028.css","static/css/fe0bcc13a2b68605.css","static/chunks/7191-d39597fc204602cb.js"),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1417],{1417:function(t){t.exports=function(){"use strict";function forEach(t,e){if(t)for(var n in t)({}).hasOwnProperty.call(t,n)&&e(n,t[n])}var t={unstyled:"p","header-one":"h1","header-two":"h2","header-three":"h3","header-four":"h4","header-five":"h5","header-six":"h6","unordered-list-item":"ul","ordered-list-item":"ol",blockquote:"blockquote",code:"pre"};function getBlockTag(e){return e&&t[e]}function getBlockStyle(t){var e="";return forEach(t,function(t,n){n&&(e+="".concat(t,":").concat(n,";"))}),e}function getEntityMarkup(t,e,n,a){var r=t[e];if("function"==typeof a){var c=a(r,n);if(c)return c}if("MENTION"===r.type)return'<a href="'.concat(r.data.url,'" class="wysiwyg-mention" data-mention data-value="').concat(r.data.value,'">').concat(n,"</a>");if("LINK"===r.type){var o=r.data.targetOption||"_self";return'<a href="'.concat(r.data.url,'" target="').concat(o,'">').concat(n,"</a>")}if("IMAGE"===r.type){var s=r.data.alignment;return s&&s.length?'<div style="text-align:'.concat(s,';"><img src="').concat(r.data.src,'" alt="').concat(r.data.alt,'" style="height: ').concat(r.data.height,";width: ").concat(r.data.width,'"/></div>'):'<img src="'.concat(r.data.src,'" alt="').concat(r.data.alt,'" style="height: ').concat(r.data.height,";width: ").concat(r.data.width,'"/>')}return"EMBEDDED_LINK"===r.type?'<iframe width="'.concat(r.data.width,'" height="').concat(r.data.height,'" src="').concat(r.data.src,'" frameBorder="0"></iframe>'):n}function getInlineStyleSections(t,e,n,a){var r=[],c=Array.from(t.text);if(c.length>0)for(var o,s,i,u,l=(o=t.text,s=t.inlineStyleRanges,i={BOLD:Array(o.length),ITALIC:Array(o.length),UNDERLINE:Array(o.length),STRIKETHROUGH:Array(o.length),CODE:Array(o.length),SUPERSCRIPT:Array(o.length),SUBSCRIPT:Array(o.length),COLOR:Array(o.length),BGCOLOR:Array(o.length),FONTSIZE:Array(o.length),FONTFAMILY:Array(o.length),length:o.length},s&&s.length>0&&s.forEach(function(t){for(var e=t.offset,n=e+t.length,a=e;a<n;a+=1)0===t.style.indexOf("color-")?i.COLOR[a]=t.style.substring(6):0===t.style.indexOf("bgcolor-")?i.BGCOLOR[a]=t.style.substring(8):0===t.style.indexOf("fontsize-")?i.FONTSIZE[a]=t.style.substring(9):0===t.style.indexOf("fontfamily-")?i.FONTFAMILY[a]=t.style.substring(11):i[t.style]&&(i[t.style][a]=!0)}),i),h=n;h<a;h+=1)h!==n&&function(t,e,n){var a=!0;return n>0&&n<t.length?e.forEach(function(e){a=a&&t[e][n]===t[e][n-1]}):a=!1,a}(l,e,h)?(u.text.push(c[h]),u.end=h+1):r.push(u={styles:function(t,e){var n={};return t.COLOR[e]&&(n.COLOR=t.COLOR[e]),t.BGCOLOR[e]&&(n.BGCOLOR=t.BGCOLOR[e]),t.FONTSIZE[e]&&(n.FONTSIZE=t.FONTSIZE[e]),t.FONTFAMILY[e]&&(n.FONTFAMILY=t.FONTFAMILY[e]),t.UNDERLINE[e]&&(n.UNDERLINE=!0),t.ITALIC[e]&&(n.ITALIC=!0),t.BOLD[e]&&(n.BOLD=!0),t.STRIKETHROUGH[e]&&(n.STRIKETHROUGH=!0),t.CODE[e]&&(n.CODE=!0),t.SUBSCRIPT[e]&&(n.SUBSCRIPT=!0),t.SUPERSCRIPT[e]&&(n.SUPERSCRIPT=!0),n}(l,h),text:[c[h]],start:h,end:h+1});return r}function getBlockInnerMarkup(t,e,n,a){var r,c,o=[],s=(r=[],c=0,t.entityRanges.map(function(t){return{offset:t.offset,length:t.length,key:t.key,type:"ENTITY"}}).concat(function(t,e){var n=[];if(e){for(var a=0,r=0,c=t,o=e.trigger||"#",s=e.separator||" ";c.length>0&&r>=0;)if(c[0]===o?(r=0,a=0,c=c.substr(o.length)):(r=c.indexOf(s+o))>=0&&(c=c.substr(r+(s+o).length),a+=r+s.length),r>=0){var i=c.indexOf(s)>=0?c.indexOf(s):c.length,u=c.substr(0,i);u&&u.length>0&&n.push({offset:a,length:u.length+o.length,type:"HASHTAG"}),a+=o.length}}return n}(t.text,n)).sort(function(t,e){return t.offset-e.offset}).forEach(function(t){t.offset>c&&r.push({start:c,end:t.offset}),r.push({start:t.offset,end:t.offset+t.length,entityKey:t.key,type:t.type}),c=t.offset+t.length}),c<t.text.length&&r.push({start:c,end:t.text.length}),r);return s.forEach(function(n,r){var c=function(t,e,n,a){var r=[];getInlineStyleSections(t,["COLOR","BGCOLOR","FONTSIZE","FONTFAMILY"],n.start,n.end).forEach(function(e){var n,a;r.push((n=getInlineStyleSections(t,["BOLD","ITALIC","UNDERLINE","STRIKETHROUGH","CODE","SUPERSCRIPT","SUBSCRIPT"],e.start,e.end),a="",n.forEach(function(t){var e,n,r;a+=(e=t.styles,r=(n=t.text)&&n.length>0?n.map(function(t){switch(t){case"\n":return"<br>";case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;";default:return t}}).join(""):"",forEach(e,function(t,e){var n;n=r,r="BOLD"===t?"<strong>".concat(n,"</strong>"):"ITALIC"===t?"<em>".concat(n,"</em>"):"UNDERLINE"===t?"<ins>".concat(n,"</ins>"):"STRIKETHROUGH"===t?"<del>".concat(n,"</del>"):"CODE"===t?"<code>".concat(n,"</code>"):"SUPERSCRIPT"===t?"<sup>".concat(n,"</sup>"):"SUBSCRIPT"===t?"<sub>".concat(n,"</sub>"):n}),r)}),a=function(t,e){if(t&&(t.COLOR||t.BGCOLOR||t.FONTSIZE||t.FONTFAMILY)){var n='style="';return t.COLOR&&(n+="color: ".concat(t.COLOR,";")),t.BGCOLOR&&(n+="background-color: ".concat(t.BGCOLOR,";")),t.FONTSIZE&&(n+="font-size: ".concat(t.FONTSIZE).concat(/^\d+$/.test(t.FONTSIZE)?"px":"",";")),t.FONTFAMILY&&(n+="font-family: ".concat(t.FONTFAMILY,";")),n+='"',"<span ".concat(n,">").concat(e,"</span>")}return e}(e.styles,a)))});var c=r.join("");return"ENTITY"===n.type?void 0!==n.entityKey&&null!==n.entityKey&&(c=getEntityMarkup(e,n.entityKey,c,a)):"HASHTAG"===n.type&&(c='<a href="'.concat(c,'" class="wysiwyg-hashtag">').concat(c,"</a>")),c}(t,e,n,a);0===r&&(c=function(t){if(t){for(var e=t,n=0;n<e.length;n+=1)if(" "===t[n])e=e.replace(" ","&nbsp;");else break;return e}return t}(c)),r===s.length-1&&(c=function(t){if(t){for(var e=t,n=e.length-1;n>=0;n-=1)if(" "===e[n])e="".concat(e.substring(0,n),"&nbsp;").concat(e.substring(n+1));else break;return e}return t}(c)),o.push(c)}),o.join("")}function getListMarkup(t,e,n,a,r){var c,o=[],s=[];return t.forEach(function(t){var i=!1;if(c?c.type!==t.type?(o.push("</".concat(getBlockTag(c.type),">\n")),o.push("<".concat(getBlockTag(t.type),">\n"))):c.depth===t.depth?s&&s.length>0&&(o.push(getListMarkup(s,e,n,a,r)),s=[]):(i=!0,s.push(t)):o.push("<".concat(getBlockTag(t.type),">\n")),!i){o.push("<li");var u=getBlockStyle(t.data);u&&o.push(' style="'.concat(u,'"')),a&&o.push(' dir = "auto"'),o.push(">"),o.push(getBlockInnerMarkup(t,e,n,r)),o.push("</li>\n"),c=t}}),s&&s.length>0&&o.push(getListMarkup(s,e,n,a,r)),o.push("</".concat(getBlockTag(c.type),">\n")),o.join("")}return function(t,e,n,a){var r=[];if(t){var c=t.blocks,o=t.entityMap;if(c&&c.length>0){var s=[];if(c.forEach(function(t){var c;if("unordered-list-item"===(c=t.type)||"ordered-list-item"===c)s.push(t);else{if(s.length>0){var i=getListMarkup(s,o,e,a);r.push(i),s=[]}var u=function(t,e,n,a,r){var c,o=[];if(t.entityRanges.length>0&&(null==(c=t.text)||0===c.length||0===c.trim().length||"atomic"===t.type)?0:1){var s=getBlockTag(t.type);if(s){o.push("<".concat(s));var i=getBlockStyle(t.data);i&&o.push(' style="'.concat(i,'"')),a&&o.push(' dir = "auto"'),o.push(">"),o.push(getBlockInnerMarkup(t,e,n,r)),o.push("</".concat(s,">"))}}else o.push(getEntityMarkup(e,t.entityRanges[0].key,void 0,r));return o.push("\n"),o.join("")}(t,o,e,n,a);r.push(u)}}),s.length>0){var i=getListMarkup(s,o,e,n,a);r.push(i),s=[]}}}return r.join("")}}()}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2284],{2284:function(e,t,r){r.r(t),r.d(t,{default:function(){return search_SearchDropdown_SearchDropdown},sendAutocompleteClickEvent:function(){return sendAutocompleteClickEvent}});var a=r(3067),n=r(4235),i=r(1933),o=r(4583),c=r(2174),s=r(757),l=r(9994),u=r(2701),d=r(9482),m=r(1379),f=r(1549);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,i.R)(),{searchHistory:a,clearSearchHistory:n}=(0,m.Z)();return a.length?(0,f.jsx)(u.Z,_objectSpread(_objectSpread({title:"History",onClear:n},t),{},{children:a.map(e=>(0,f.jsx)(d.Z,{value:e.term,linkProps:{href:e.path,onClick:()=>null==r?void 0:r(e.term,e.path)}},e.term))})):null},p=r(3311),h=r(1287),v=r(704),y=r(5487),g=r(2693),b=r(7358),O=y.M,search_useTopSearch=function(){var{channel:e,locale:t}=(0,b.kP)(),{data:r,error:a}=(0,g.aM)(O,{term:"",selectedFacets:[{key:"channel",value:null!=e?e:""},{key:"locale",value:t}]});return{data:r,error:a}},w=["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,w),{values:{onSearchSelection:c}}=(0,i.R)(),{data:s}=search_useTopSearch(),l=(null!==(t=null==s?void 0:s.search.suggestions.terms)&&void 0!==t?t:r).slice(0,5);return 0===l.length?null:(0,f.jsx)(p.Z,SearchTop_objectSpread(SearchTop_objectSpread({title:"Top Search"},o),{},{children:l.map((e,t)=>(0,f.jsx)(h.Z,{value:e.value,index:t,linkProps:{href:(0,v.u)({term:e.value,sort:a}),onClick:()=>null==c?void 0:c(e.value,(0,v.u)({term:e.value,sort:a}))}},t))}))},E=r(6652),S=r(6035),k=r(9082),j=r(7190),P=r(2614),_=r(7866),Z=r(7859),C=r(4194),x=r(2056),D=r(8687),I=r(9746),q=r(643),R=r(8563),T=r(1090),M=r.n(T),K=["product","index","quickOrderSettings","onChangeCustomSearchDropdownVisible"],V=["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,quickOrderSettings:a,onChangeCustomSearchDropdownVisible:o}=e,c=(0,n.Z)(e,K),{values:{term:s,onSearchSelection:l}}=(0,i.R)(),{pushToast:u}=(0,E.l8)(),{__experimentalSKUMatrixSidebar:d}=(0,I.r3)(),m=(0,R.w)({product:t,selectedOffer:0,index:r}),{href:p,onClick:h}=m,v=(0,n.Z)(m,V),{0:y,1:g}=(0,C.useState)(1),{id:b,sku:O,gtin:w,brand:T,isVariantOf:L,isVariantOf:{name:Q},unitMultiplier:B,image:[F],offers:{lowPrice:N,offers:[{listPrice:U,availability:A,price:H,listPriceWithTaxes:G,seller:z,priceWithTaxes:W,quantity:$}]},additionalProperty:J}=t,X=SearchProductItem_objectSpread({href:p,onClick:()=>{var e;h(),null==l||l(Q,p),sendAutocompleteClickEvent({url:p,term:s,position:r,productId:null!==(e=t.isVariantOf.productGroupID)&&void 0!==e?e:t.sku})}},v),Y=(0,C.useMemo)(()=>"https://schema.org/OutOfStock"===A,[A]),ee=(0,C.useMemo)(()=>!!Object.keys(t.isVariantOf.skuVariants.allVariantsByName).length,[t]),et=(0,D.Q)({id:b,price:H,priceWithTaxes:W,listPrice:U,listPriceWithTaxes:G,seller:z,quantity:y,itemOffered:{sku:O,name:Q,gtin:w,image:[F],brand:T,isVariantOf:L,additionalProperty:J,unitMultiplier:B}},!1);return(0,f.jsxs)(S.Z,SearchProductItem_objectSpread(SearchProductItem_objectSpread({linkProps:X},c),{},{children:[(0,f.jsx)(k.Z,{children:(0,f.jsx)(x.Z,{src:F.url,alt:F.alternateName,width:56,height:56})}),(0,f.jsx)(j.Z,{title:Q,price:{value:N,listPrice:U,formatter:q.P},onValidateBlur:(e,t,r)=>u({title:"Invalid quantity!",message:"The quantity you entered is outside the range of ".concat(e," to ").concat(t,". The quantity was set to ").concat(r,"."),status:"INFO",icon:(0,f.jsx)(P.Z,{name:"CircleWavyWarning",width:30,height:30})}),quickOrder:{enabled:null==a?void 0:a.quickOrder,outOfStockLabel:"Out of stock",availability:!Y,hasVariants:ee,buyProps:et,quantity:y,onChangeQuantity:g,max:$,skuMatrixControl:(0,f.jsx)(f.Fragment,{children:(null==a?void 0:a.quickOrder)&&(0,f.jsxs)(_.Z,{children:[(0,f.jsx)(Z.Z,{children:null==a?void 0:a.skuMatrix.triggerButtonLabel}),(0,f.jsx)(d.Component,{overlayProps:{className:M().section},formatter:q.P,columns:null==a?void 0:a.skuMatrix.columns,product:t,status:e=>o("visible"===e)})]})})}})]}))},L=["sort","quickOrderSettings","onChangeCustomSearchDropdownVisible"];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}function sendAutocompleteClickEvent(e){var{url:t,term:a,position:n,productId:i}=e;r.e(6393).then(r.bind(r,6393)).then(e=>{var{sendAnalyticsEvent:r}=e;r({name:"intelligent_search_autocomplete_click",params:{term:a,url:t,productId:i,position:n}})})}var search_SearchDropdown_SearchDropdown=function(e){var{sort:t,quickOrderSettings:r,onChangeCustomSearchDropdownVisible:a}=e,u=(0,n.Z)(e,L),{values:{onSearchSelection:d,products:m,term:p,terms:h}}=(0,i.R)();return(0,f.jsxs)(o.Z,SearchDropdown_objectSpread(SearchDropdown_objectSpread({},u),{},{children:[(0,f.jsx)(search_SearchHistory_SearchHistory,{sort:t}),(0,f.jsx)(search_SearchTop_SearchTop,{sort:t}),(0,f.jsx)(c.Z,{children:null==h?void 0:h.map(e=>{var{value:r}=e;return(0,f.jsx)(s.Z,{term:p,suggestion:r,linkProps:{href:(0,v.u)({term:r,sort:t}),onClick:()=>{null==d||d(p,(0,v.u)({term:p,sort:t})),sendAutocompleteClickEvent({term:p,url:window.location.href})}}},r)})}),(0,f.jsx)(l.Z,{children:m.map((e,t)=>(0,f.jsx)(search_SearchProductItem_SearchProductItem,{product:e,index:t,quickOrderSettings:r,onChangeCustomSearchDropdownVisible:a},e.id))})]}))}},8687:function(e,t,r){r.d(t,{Q:function(){return useBuyButton}});var a=r(4194),n=r(6652),i=r(7358),o=r(1041),useBuyButton=function(e){var t,c=!(arguments.length>1)||void 0===arguments[1]||arguments[1],{openCart:s}=(0,n.l8)(),{currency:{code:l}}=(0,i.kP)(),u=Array.isArray(e);return{onClick:(0,a.useCallback)(t=>{if(t.preventDefault(),e){var a=u?e.reduce((e,t)=>e+=t.price*t.quantity,0):e.price*e.quantity;r.e(6393).then(r.bind(r,6393)).then(t=>{var{sendAnalyticsEvent:r}=t;r({name:"add_to_cart",params:{currency:l,value:a,items:u?e.map(generatedItem):[generatedItem(e)]}})}),u?e.forEach(e=>o.i8.addItem(e)):o.i8.addItem(e),c&&s()}function generatedItem(e){return{item_id:e.itemOffered.isVariantOf.productGroupID,item_name:e.itemOffered.isVariantOf.name,item_brand:e.itemOffered.brand.name,item_variant:e.itemOffered.sku,quantity:e.quantity,price:e.price,discount:e.listPrice-e.price,currency:l,item_variant_name:e.itemOffered.name,product_reference_id:e.itemOffered.gtin}}},[l,e,s,u]),"data-testid":"buy-button","data-sku":u?"sku-matrix-sidebar":null==e?void 0:e.itemOffered.sku,"data-seller":u?null===(t=e[0])||void 0===t?void 0:t.seller.identifier:null==e?void 0:e.seller.identifier}}},643:function(e,t,r){r.d(t,{P:function(){return useFormattedPrice}});var a=r(4194),n=r(7358),usePriceFormatter=function(){var{decimals:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{currency:t,locale:r}=(0,n.kP)();return(0,a.useCallback)(a=>Intl.NumberFormat(r,{style:"currency",currency:t.code,minimumFractionDigits:e?2:0}).format(a),[t.code,r,e])},useFormattedPrice=e=>{var t=usePriceFormatter();return(0,a.useMemo)(()=>t(e),[t,e])}},8563:function(e,t,r){r.d(t,{w:function(){return useProductLink}});var a=r(4194),n=r(7358),useProductLink=e=>{var{index:t,product:i,selectedOffer:o}=e,{slug:c}=i,{currency:{code:s}}=(0,n.kP)(),l=(0,a.useCallback)(()=>{r.e(6393).then(r.bind(r,6393)).then(e=>{var{sendAnalyticsEvent:r}=e;r({name:"select_item",params:{items:[{item_id:i.isVariantOf.productGroupID,item_name:i.isVariantOf.name,item_brand:i.brand.name,item_variant:i.sku,index:t,price:i.offers.offers[o].price,discount:i.offers.offers[o].listPrice-i.offers.offers[o].price,currency:s,item_variant_name:i.name,product_reference_id:i.gtin}]}}),r({name:"search_select_item",params:{url:window.location.href,items:[{item_id:i.isVariantOf.productGroupID,item_variant:i.sku,index:t}]}})})},[s,i,t,o]);return{href:"/".concat(c,"/p"),onClick:l,"data-testid":"product-link"}}},9767:function(e,t,r){var a=r(4194),n=r(5450);let i=(0,a.forwardRef)(function({value:e,as:t="span",variant:r="selling",testId:i="fs-price",formatter:o=e=>e,SRText:c,...s},l){let u=o(e,r);return a.createElement(t,{ref:l,"data-fs-price":!0,"data-fs-price-variant":r,"data-testid":i,...s},c&&a.createElement(n.Z,{text:c}),u)});t.Z=i},5450:function(e,t,r){var a=r(4194);t.Z=function({text:e,as:t}){let r=t??"span";return a.createElement(r,{"data-fs-sr-only":!0},e)}},2955:function(e,t,r){r.d(t,{_:function(){return useSKUMatrix}});var a=r(4194),n=r(3442);function useSKUMatrix(){let e=(0,a.useContext)(n.m);if(!e)throw Error("Do not use SKUMatrix components outside the SKUMatrix context.");return e}},1933:function(e,t,r){r.d(t,{R:function(){return useSearch}});var a=r(4194),n=r(101);let useSearch=()=>{let e=(0,a.useContext)(n.c);return e?{inContext:!0,values:e}:{inContext:!1}}},9088:function(e,t,r){var a=r(4194),n=r(9767);let i=(0,a.forwardRef)(function({testId:e="fs-product-price",value:t,listPrice:r,formatter:i,...o},c){let s=r??0,l=t??0;return a.createElement("div",{ref:c,"data-fs-product-price":!0,"data-testid":e,...o},l!==s&&0!==s?a.createElement(a.Fragment,null,a.createElement(n.Z,{value:s,formatter:i,testId:"list-price","data-value":s,variant:"listing",SRText:"Original price:"}),a.createElement(n.Z,{value:l,formatter:i,testId:"price","data-value":l,variant:"spot",SRText:"Price:"})):a.createElement(n.Z,{value:l,formatter:i,testId:"price","data-value":l,variant:"spot",SRText:"Price:"}))});t.Z=i},6693:function(e,t,r){var a=r(4194),n=r(7041),i=r(2614),o=r(2256);t.Z=({max:e,min:t=1,unitMultiplier:r=1,useUnitMultiplier:c,initial:s,disabled:l=!1,onChange:u,onValidateBlur:d,testId:m="fs-quantity-selector",...f})=>{let[p,h]=(0,a.useState)(s??t),[v,y]=(0,a.useState)(p*r),roundUpQuantityIfNeeded=e=>c?Math.ceil(e/r)*r:e,g=p===t,b=p===e,changeQuantity=e=>{let t=validateQuantityBounds(p+e);u?.(t),h(t),y(t*r)};function validateQuantityBounds(a){let n=t?Math.max(a,t):a;return e?Math.min(n,c?e*r:e):n}return(0,a.useEffect)(()=>{s&&h(s)},[s]),a.createElement("div",{"data-fs-quantity-selector":l?"disabled":"true","data-testid":m,...f},a.createElement(n.Z,{"data-quantity-selector-button":"left",icon:a.createElement(i.Z,{name:"Minus",width:16,height:16,weight:"bold"}),"aria-label":"Decrement Quantity","aria-controls":"quantity-selector-input",disabled:g||l,onClick:()=>changeQuantity(-1),testId:`${m}-left-button`,size:"small"}),a.createElement(o.Z,{"data-quantity-selector-input":!0,id:"quantity-selector-input","aria-label":"Quantity",value:c?v:p,onChange:e=>{let t=e.target.value.replace(/\D/g,"");h(Number(t))},onBlur:function(){let a=validateQuantityBounds(p),n=roundUpQuantityIfNeeded(a),i=e??(t?Math.max(p,t):p),o=p>i||p<t;o&&d?.(t,i,n),h(()=>(y(n),u?.(n/r),n/r))},onInput:e=>{let t=e.currentTarget;t.value=t.value.replace(/\D/g,"")},disabled:l}),a.createElement(n.Z,{"data-quantity-selector-button":"right","aria-controls":"quantity-selector-input","aria-label":"Increment Quantity",disabled:b||l,icon:a.createElement(i.Z,{name:"Plus",width:16,height:16,weight:"bold"}),onClick:()=>changeQuantity(1),testId:`${m}-right-button`,size:"small"}))}},2174:function(e,t,r){var a=r(4194),n=r(1933),i=r(4564);t.Z=({testId:e="fs-search-auto-complete",children:t,...r})=>{let{inContext:o,values:c}=(0,n.R)();return o&&(c.terms.length<=0||c.term.length<=0)?null:a.createElement("section",{"data-testid":e,"data-fs-search-auto-complete":!0,...r},a.createElement(i.Z,{as:"ol"},t))}},757:function(e,t,r){var a=r(4194),n=r(2614),i=r(727);t.Z=({testId:e="fs-search-auto-complete-term",suggestion:t,term:r,linkProps:o,icon:c=a.createElement(n.Z,{name:"MagnifyingGlass",width:18,height:18})})=>{let s=t.toLowerCase().split(r.toLowerCase());return a.createElement("li",{"data-fs-search-auto-complete-item":!0,"data-testid":e},a.createElement(i.Z,{...o,"data-fs-search-auto-complete-item-link":!0,variant:"display"},a.createElement("span",{"data-fs-search-auto-complete-item-icon":!0},c),a.createElement("p",null,s.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!==s.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(4194),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..."))},i=(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=i},2701:function(e,t,r){var a=r(4194),n=r(1933),i=r(9009),o=r(4564);t.Z=({testId:e="fs-search-history",title:t="History",clearLabel:r="Clear History",onClear:c,children:s,...l})=>{let{inContext:u,values:d}=(0,n.R)();return u&&(0!==d.term.length||d.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(i.Z,{variant:"tertiary",onClick:c,size:"small"},r)),a.createElement(o.Z,{as:"ol"},s))}},9482:function(e,t,r){var a=r(4194),n=r(2614),i=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(i.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(4194),n=r(727);let i=(0,a.forwardRef)(function({testId:e="fs-search-product-item",linkProps:t,children:r},i){return a.createElement("li",{ref:i,"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=i},7190:function(e,t,r){r.d(t,{Z:function(){return f}});var a=r(4194),n=r(9088),i=r(1667),o=r(2614),c=r(276),s=r(6693),l=r(2256),u=r(7041);let d=(0,a.forwardRef)(function({availability:e,children:t,hasVariants:r,skuMatrixControl:n,quantity:d,outOfStockLabel:m,min:f=1,max:p,onClick:h,onChangeQuantity:v,onValidateBlur:y,...g},b){let[O,w]=(0,a.useState)("default"),E=e&&r;function stopPropagationClick(e){e.preventDefault(),e.stopPropagation()}let S=(0,a.useCallback)(()=>{switch(O){case"inProgress":return a.createElement(i.Z,null);case"completed":return a.createElement(o.Z,{name:"Checked",width:24,height:24});default:return a.createElement(o.Z,{name:"ShoppingCart",width:24,height:24})}},[O]);return a.createElement("div",{ref:b,"data-fs-search-product-item-control":!0,...g},a.createElement("div",{"data-fs-search-product-item-control-content":!0},!e&&a.createElement(c.Z,{"data-fs-search-product-item-control-badge":!0,variant:"warning"},m),t),e&&!r&&a.createElement("div",{"data-fs-search-product-item-control-actions":!0,role:"group","aria-hidden":!0,tabIndex:-1,onKeyDown:()=>{},onClick:stopPropagationClick},a.createElement("div",{"data-fs-search-product-item-control-actions-desktop":!0},a.createElement(s.Z,{disabled:"default"!==O,max:p,onValidateBlur:y,initial:d,onChange:v})),a.createElement("div",{"data-fs-search-product-item-control-actions-mobile":!0},a.createElement(l.Z,{"data-fs-product-item-control-input":!0,min:1,value:d,onChange:e=>v(e.target.value?Number(e.target.value):0),onBlur:function(){let e=p??(f?Math.max(d,f):d),t=d>e||d<f,r=d>e?e:d<f?f:d;t&&y?.(f,e,r),v(r)},onInput:e=>{let t=e.currentTarget;t.value=t.value.replace(/\D/g,"")}})),a.createElement(u.Z,{variant:"primary","aria-label":"Add product to cart",onClick:function(e){h&&(w("inProgress"),setTimeout(()=>{w("completed"),h(e)},1e3),setTimeout(()=>{w("default"),v(1)},2e3))},disabled:"inProgress"===O,icon:S()})),E&&a.createElement("div",{onClick:stopPropagationClick,"aria-hidden":!0,tabIndex:-1,onKeyDown:()=>{}},n))}),m=(0,a.forwardRef)(function({price:e,title:t,quickOrder:r,onValidateBlur:i,...o},c){let s=(0,a.useCallback)(()=>a.createElement(a.Fragment,null,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})),[e.formatter,e.listPrice,e.value,t]);return a.createElement("section",{ref:c,"data-fs-search-product-item-content":!0,...o},!r?.enabled&&s(),r?.enabled&&a.createElement(d,{outOfStockLabel:r.outOfStockLabel,availability:r.availability,hasVariants:r.hasVariants,skuMatrixControl:r.skuMatrixControl,quantity:r.quantity,onChangeQuantity:r.onChangeQuantity,max:r.max,onValidateBlur:i,...r.buyProps},s()))});var f=m},9082:function(e,t,r){var a=r(4194);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(4194),n=r(1933),i=r(4564);t.Z=({testId:e="fs-search-products",title:t="Suggested Products",children:r,...o})=>{let{inContext:c,values:s}=(0,n.R)();return c&&s.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(i.Z,{as:"ol"},r))}},3311:function(e,t,r){var a=r(4194),n=r(1933),i=r(4564);let o=(0,a.forwardRef)(function({testId:e="fs-top-search",title:t="Top Search",children:r,...o},c){let{inContext:s,values:l}=(0,n.R)();return s&&(0!==l.term.length||l.isLoading)?null:a.createElement("section",{ref:c,"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(i.Z,{as:"ol"},r))});t.Z=o},1287:function(e,t,r){var a=r(4194),n=r(727),i=r(276);let o=(0,a.forwardRef)(function({testId:e="fs-top-search-term",value:t,linkProps:r,index:o},c){return a.createElement("li",{ref:c,"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(i.Z,{"data-fs-search-top-item-badge":!0,variant:"info"},o+1),t))});t.Z=o},7866:function(e,t,r){var a=r(4194),n=r(3442);let i=(0,a.forwardRef)(function({testId:e="fs-sku-matrix",children:t,...r},i){return a.createElement("div",{ref:i,"data-fs-sku-matrix":!0,"data-testid":e,...r},a.createElement(n.Z,null,t))});t.Z=i},7859:function(e,t,r){var a=r(4194),n=r(9009),i=r(2955);let o=(0,a.forwardRef)(function({children:e,variant:t="secondary",onClick:r,...o},c){let{setIsOpen:s}=(0,i._)();return a.createElement(n.Z,{ref:c,variant:t,onClick:e=>{s(!0),r?.(e)},...o},e)});t.Z=o},3442:function(e,t,r){r.d(t,{m:function(){return n}});var a=r(4194);let n=(0,a.createContext)(null);t.Z=function({children:e}){let[t,r]=(0,a.useState)(!1),[i,o]=(0,a.useState)([]),c=(0,a.useCallback)((e,t)=>{let r=[...i],a=r.find(t=>t.id===e);return a&&(a.selectedCount=t),o(r),r},[i]);return a.createElement(n.Provider,{value:{isOpen:t,allVariantProducts:i,setAllVariantProducts:o,onChangeQuantityItem:c,setIsOpen:r}},e)}}}]);