1(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([[8077,7967,2599],{ 2 3/***/ 374129: 4/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 5 6"use strict"; 7 8 9Object.defineProperty(exports, "__esModule", ({ value: true })); 10 11function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } 12 13var React = __webpack_require__(667294); 14var React__default = _interopDefault(React); 15 16/*! ***************************************************************************** 17Copyright (c) Microsoft Corporation. 18 19Permission to use, copy, modify, and/or distribute this software for any 20purpose with or without fee is hereby granted. 21 22THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH 23REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 24AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, 25INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 26LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 27OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 28PERFORMANCE OF THIS SOFTWARE. 29***************************************************************************** */ 30 31var __assign = function() { 32 __assign = Object.assign || function __assign(t) { 33 for (var s, i = 1, n = arguments.length; i < n; i++) { 34 s = arguments[i]; 35 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; 36 } 37 return t; 38 }; 39 return __assign.apply(this, arguments); 40}; 41 42var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof self !== 'undefined' ? self : {}; 43 44function unwrapExports (x) { 45 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; 46} 47 48function createCommonjsModule(fn, module) { 49 return module = { exports: {} }, fn(module, module.exports), module.exports; 50} 51 52var blocks = createCommonjsModule(function (module, exports) { 53Object.defineProperty(exports, "__esModule", { value: true }); 54exports.BLOCKS = void 0; 55/** 56 * Map of all Contentful block types. Blocks contain inline or block nodes. 57 */ 58var BLOCKS; 59(function (BLOCKS) { 60 BLOCKS["DOCUMENT"] = "document"; 61 BLOCKS["PARAGRAPH"] = "paragraph"; 62 BLOCKS["HEADING_1"] = "heading-1"; 63 BLOCKS["HEADING_2"] = "heading-2"; 64 BLOCKS["HEADING_3"] = "heading-3"; 65 BLOCKS["HEADING_4"] = "heading-4"; 66 BLOCKS["HEADING_5"] = "heading-5"; 67 BLOCKS["HEADING_6"] = "heading-6"; 68 BLOCKS["OL_LIST"] = "ordered-list"; 69 BLOCKS["UL_LIST"] = "unordered-list"; 70 BLOCKS["LIST_ITEM"] = "list-item"; 71 BLOCKS["HR"] = "hr"; 72 BLOCKS["QUOTE"] = "blockquote"; 73 BLOCKS["EMBEDDED_ENTRY"] = "embedded-entry-block"; 74 BLOCKS["EMBEDDED_ASSET"] = "embedded-asset-block"; 75 BLOCKS["TABLE"] = "table"; 76 BLOCKS["TABLE_ROW"] = "table-row"; 77 BLOCKS["TABLE_CELL"] = "table-cell"; 78 BLOCKS["TABLE_HEADER_CELL"] = "table-header-cell"; 79})(BLOCKS = exports.BLOCKS || (exports.BLOCKS = {})); 80 81}); 82 83unwrapExports(blocks); 84var blocks_1 = blocks.BLOCKS; 85 86var inlines = createCommonjsModule(function (module, exports) { 87Object.defineProperty(exports, "__esModule", { value: true }); 88exports.INLINES = void 0; 89/** 90 * Map of all Contentful inline types. Inline contain inline or text nodes. 91 */ 92var INLINES; 93(function (INLINES) { 94 INLINES["HYPERLINK"] = "hyperlink"; 95 INLINES["ENTRY_HYPERLINK"] = "entry-hyperlink"; 96 INLINES["ASSET_HYPERLINK"] = "asset-hyperlink"; 97 INLINES["EMBEDDED_ENTRY"] = "embedded-entry-inline"; 98})(INLINES = exports.INLINES || (exports.INLINES = {})); 99 100}); 101 102unwrapExports(inlines); 103var inlines_1 = inlines.INLINES; 104 105var marks = createCommonjsModule(function (module, exports) { 106Object.defineProperty(exports, "__esModule", { value: true }); 107/** 108 * Map of all Contentful marks. 109 */ 110var MARKS; 111(function (MARKS) { 112 MARKS["BOLD"] = "bold"; 113 MARKS["ITALIC"] = "italic"; 114 MARKS["UNDERLINE"] = "underline"; 115 MARKS["CODE"] = "code"; 116 MARKS["SUPERSCRIPT"] = "superscript"; 117 MARKS["SUBSCRIPT"] = "subscript"; 118})(MARKS || (MARKS = {})); 119exports.default = MARKS; 120 121}); 122 123unwrapExports(marks); 124 125var schemaConstraints = createCommonjsModule(function (module, exports
125) { 126var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { 127 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { 128 if (ar || !(i in from)) { 129 if (!ar) ar = Array.prototype.slice.call(from, 0, i); 130 ar[i] = from[i]; 131 } 132 } 133 return to.concat(ar || Array.prototype.slice.call(from)); 134}; 135var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { 136 return (mod && mod.__esModule) ? mod : { "default": mod }; 137}; 138var _a; 139Object.defineProperty(exports, "__esModule", { value: true }); 140exports.V1_MARKS = exports.V1_NODE_TYPES = exports.TEXT_CONTAINERS = exports.HEADINGS = exports.CONTAINERS = exports.VOID_BLOCKS = exports.TABLE_BLOCKS = exports.LIST_ITEM_BLOCKS = exports.TOP_LEVEL_BLOCKS = void 0; 141 142 143var marks_1 = __importDefault(marks); 144/** 145 * Array of all top level block types. 146 * Only these block types can be the direct children of the document. 147 */ 148exports.TOP_LEVEL_BLOCKS = [ 149 blocks.BLOCKS.PARAGRAPH, 150 blocks.BLOCKS.HEADING_1, 151 blocks.BLOCKS.HEADING_2, 152 blocks.BLOCKS.HEADING_3, 153 blocks.BLOCKS.HEADING_4, 154 blocks.BLOCKS.HEADING_5, 155 blocks.BLOCKS.HEADING_6, 156 blocks.BLOCKS.OL_LIST, 157 blocks.BLOCKS.UL_LIST, 158 blocks.BLOCKS.HR, 159 blocks.BLOCKS.QUOTE, 160 blocks.BLOCKS.EMBEDDED_ENTRY, 161 blocks.BLOCKS.EMBEDDED_ASSET, 162 blocks.BLOCKS.TABLE, 163]; 164/** 165 * Array of all allowed block types inside list items 166 */ 167exports.LIST_ITEM_BLOCKS = [ 168 blocks.BLOCKS.PARAGRAPH, 169 blocks.BLOCKS.HEADING_1, 170 blocks.BLOCKS.HEADING_2, 171 blocks.BLOCKS.HEADING_3, 172 blocks.BLOCKS.HEADING_4, 173 blocks.BLOCKS.HEADING_5, 174 blocks.BLOCKS.HEADING_6, 175 blocks.BLOCKS.OL_LIST, 176 blocks.BLOCKS.UL_LIST, 177 blocks.BLOCKS.HR, 178 blocks.BLOCKS.QUOTE, 179 blocks.BLOCKS.EMBEDDED_ENTRY, 180 blocks.BLOCKS.EMBEDDED_ASSET, 181]; 182exports.TABLE_BLOCKS = [ 183 blocks.BLOCKS.TABLE, 184 blocks.BLOCKS.TABLE_ROW, 185 blocks.BLOCKS.TABLE_CELL, 186 blocks.BLOCKS.TABLE_HEADER_CELL, 187]; 188/** 189 * Array of all void block types 190 */ 191exports.VOID_BLOCKS = [blocks.BLOCKS.HR, blocks.BLOCKS.EMBEDDED_ENTRY, blocks.BLOCKS.EMBEDDED_ASSET]; 192/** 193 * Dictionary of all container block types, and the set block types they accept as children. 194 * 195 * Note: This does not include `[BLOCKS.DOCUMENT]: TOP_LEVEL_BLOCKS` 196 */ 197exports.CONTAINERS = (_a = {}, 198 _a[blocks.BLOCKS.OL_LIST] = [blocks.BLOCKS.LIST_ITEM], 199 _a[blocks.BLOCKS.UL_LIST] = [blocks.BLOCKS.LIST_ITEM], 200 _a[blocks.BLOCKS.LIST_ITEM] = exports.LIST_ITEM_BLOCKS, 201 _a[blocks.BLOCKS.QUOTE] = [blocks.BLOCKS.PARAGRAPH], 202 _a[blocks.BLOCKS.TABLE] = [blocks.BLOCKS.TABLE_ROW], 203 _a[blocks.BLOCKS.TABLE_ROW] = [blocks.BLOCKS.TABLE_CELL, blocks.BLOCKS.TABLE_HEADER_CELL], 204 _a[blocks.BLOCKS.TABLE_CELL] = [blocks.BLOCKS.PARAGRAPH], 205 _a[blocks.BLOCKS.TABLE_HEADER_CELL] = [blocks.BLOCKS.PARAGRAPH], 206 _a); 207/** 208 * Array of all heading levels 209 */ 210exports.HEADINGS = [ 211 blocks.BLOCKS.HEADING_1, 212 blocks.BLOCKS.HEADING_2, 213 blocks.BLOCKS.HEADING_3, 214 blocks.BLOCKS.HEADING_4, 215 blocks.BLOCKS.HEADING_5, 216 blocks.BLOCKS.HEADING_6, 217]; 218/** 219 * Array of all block types that may contain text and inline nodes. 220 */ 221exports.TEXT_CONTAINERS = __spreadArray([blocks.BLOCKS.PARAGRAPH], exports.HEADINGS, true); 222/** 223 * Node types before `tables` release. 224 */ 225exports.V1_NODE_TYPES = [ 226 blocks.BLOCKS.DOCUMENT, 227 blocks.BLOCKS.PARAGRAPH, 228 blocks.BLOCKS.HEADING_1, 229 blocks.BLOCKS.HEADING_2, 230 blocks.BLOCKS.HEADING_3, 231 blocks.BLOCKS.HEADING_4, 232 blocks.BLOCKS.HEADING_5, 233 blocks.BLOCKS.HEADING_6, 234 blocks.BLOCKS.OL_LIST, 235 blocks.BLOCKS.UL_LIST, 236 blocks.BLOCKS.LIST_ITEM, 237 blocks.BLOCKS.HR, 238 blocks.BLOCKS.QUOTE, 239 blocks.BLOCKS.EMBEDDED_ENTRY, 240 blocks.BLOCKS.EMBEDDED_ASSET, 241 inlines.INLINES.HYPERLINK, 242 inlines.INLINES.ENTRY_HYPERLINK, 243 inlines.INLINES.ASSET_HYPERLINK, 244 inlines.INLINES.EMBEDDED_ENTRY, 245 'text', 246]; 247/** 248 * Marks before `superscript` & `subscript` release. 249 */ 250exports.V1_MARKS = [marks_1.default.BOLD, marks_1.default.CODE, marks_1.default.ITALIC, marks_1.default.UNDERLINE]; 251 252}
252); 253 254unwrapExports(schemaConstraints); 255var schemaConstraints_1 = schemaConstraints.V1_MARKS; 256var schemaConstraints_2 = schemaConstraints.V1_NODE_TYPES; 257var schemaConstraints_3 = schemaConstraints.TEXT_CONTAINERS; 258var schemaConstraints_4 = schemaConstraints.HEADINGS; 259var schemaConstraints_5 = schemaConstraints.CONTAINERS; 260var schemaConstraints_6 = schemaConstraints.VOID_BLOCKS; 261var schemaConstraints_7 = schemaConstraints.TABLE_BLOCKS; 262var schemaConstraints_8 = schemaConstraints.LIST_ITEM_BLOCKS; 263var schemaConstraints_9 = schemaConstraints.TOP_LEVEL_BLOCKS; 264 265var types = createCommonjsModule(function (module, exports) { 266Object.defineProperty(exports, "__esModule", { value: true }); 267 268}); 269 270unwrapExports(types); 271 272var nodeTypes = createCommonjsModule(function (module, exports) { 273Object.defineProperty(exports, "__esModule", { value: true }); 274 275}); 276 277unwrapExports(nodeTypes); 278 279var emptyDocument = createCommonjsModule(function (module, exports) { 280Object.defineProperty(exports, "__esModule", { value: true }); 281 282/** 283 * A rich text document considered to be empty. 284 * Any other document structure than this is not considered empty. 285 */ 286var EMPTY_DOCUMENT = { 287 nodeType: blocks.BLOCKS.DOCUMENT, 288 data: {}, 289 content: [ 290 { 291 nodeType: blocks.BLOCKS.PARAGRAPH, 292 data: {}, 293 content: [ 294 { 295 nodeType: 'text', 296 value: '', 297 marks: [], 298 data: {}, 299 }, 300 ], 301 }, 302 ], 303}; 304exports.default = EMPTY_DOCUMENT; 305 306}); 307 308unwrapExports(emptyDocument); 309 310var helpers = createCommonjsModule(function (module, exports) { 311Object.defineProperty(exports, "__esModule", { value: true }); 312exports.isText = exports.isBlock = exports.isInline = void 0; 313 314 315/** 316 * Tiny replacement for Object.values(object).includes(key) to 317 * avoid including CoreJS polyfills 318 */ 319function hasValue(obj, value) { 320 for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) { 321 var key = _a[_i]; 322 if (value === obj[key]) { 323 return true; 324 } 325 } 326 return false; 327} 328/** 329 * Checks if the node is an instance of Inline. 330 */ 331function isInline(node) { 332 return hasValue(inlines.INLINES, node.nodeType); 333} 334exports.isInline = isInline; 335/** 336 * Checks if the node is an instance of Block. 337 */ 338function isBlock(node) { 339 return hasValue(blocks.BLOCKS, node.nodeType); 340} 341exports.isBlock = isBlock; 342/** 343 * Checks if the node is an instance of Text. 344 */ 345function isText(node) { 346 return node.nodeType === 'text'; 347} 348exports.isText = isText; 349 350}); 351 352unwrapExports(helpers); 353var helpers_1 = helpers.isText; 354var helpers_2 = helpers.isBlock; 355var helpers_3 = helpers.isInline; 356 357var dist = createCommonjsModule(function (module, exports) { 358var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { 359 if (k2 === undefined) k2 = k; 360 var desc = Object.getOwnPropertyDescriptor(m, k); 361 if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 362 desc = { enumerable: true, get: function() { return m[k]; } }; 363 } 364 Object.defineProperty(o, k2, desc); 365}) : (function(o, m, k, k2) { 366 if (k2 === undefined) k2 = k; 367 o[k2] = m[k]; 368})); 369var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { 370 Object.defineProperty(o, "default", { enumerable: true, value: v }); 371}) : function(o, v) { 372 o["default"] = v; 373}); 374var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { 375 for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 376}; 377var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { 378 if (mod && mod.__esModule) return mod; 379 var result = {}; 380 if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); 381 __setModuleDefault(result, mod); 382 return result; 383}; 384var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { 385 return (mod && mod.__esModule) ? mod : { "default": mod }; 386}; 387Object.defineProperty(exports, "__esModule", { value: true }); 388exports.helpers = exports.EMPTY_DOCUMENT = exports.MARKS = exports.INLINES = exports.BLOCKS = void 0; 389 390Object.defineProperty(exports, "BLOCKS", { enumerable: true, get: function () { return blocks.BLOCKS; } }); 391 392Object.defineProperty(exports, "INLINES", { enumerable: true, get: function () { return inlines.INLINES; } }); 393 394Object.defineProperty(exports, "MARKS", { enumerable: true, get: function () { return __importDefault(marks).default; } });
395__exportStar(schemaConstraints, exports); 396__exportStar(types, exports); 397__exportStar(nodeTypes, exports); 398 399Object.defineProperty(exports, "EMPTY_DOCUMENT", { enumerable: true, get: function () { return __importDefault(emptyDocument).default; } }); 400var helpers$1 = __importStar(helpers); 401exports.helpers = helpers$1; 402 403}); 404 405unwrapExports(dist); 406var dist_1 = dist.helpers; 407var dist_2 = dist.EMPTY_DOCUMENT; 408var dist_3 = dist.MARKS; 409var dist_4 = dist.INLINES; 410var dist_5 = dist.BLOCKS; 411 412function appendKeyToValidElement(element, key) { 413 if (React.isValidElement(element) && element.key === null) { 414 return React.cloneElement(element, { key: key }); 415 } 416 return element; 417} 418 419function nodeListToReactComponents(nodes, options) { 420 return nodes.map(function (node, index) { 421 return appendKeyToValidElement(nodeToReactComponent(node, options), index); 422 }); 423} 424function nodeToReactComponent(node, options) { 425 var renderNode = options.renderNode, renderMark = options.renderMark, renderText = options.renderText; 426 if (dist_1.isText(node)) { 427 return node.marks.reduce(function (value, mark) { 428 if (!renderMark[mark.type]) { 429 return value; 430 } 431 return renderMark[mark.type](value); 432 }, renderText ? renderText(node.value) : node.value); 433 } 434 else { 435 var children = nodeListToReactComponents(node.content, options); 436 if (!node.nodeType || !renderNode[node.nodeType]) { 437 return React__default.createElement(React__default.Fragment, null, children); 438 } 439 return renderNode[node.nodeType](node, children); 440 } 441} 442 443var _a, _b; 444var defaultNodeRenderers = (_a = {}, 445 _a[dist_5.DOCUMENT] = function (node, children) { return children; }, 446 _a[dist_5.PARAGRAPH] = function (node, children) { return React__default.createElement("p", null, children); }, 447 _a[dist_5.HEADING_1] = function (node, children) { return React__default.createElement("h1", null, children); }, 448 _a[dist_5.HEADING_2] = function (node, children) { return React__default.createElement("h2", null, children); }, 449 _a[dist_5.HEADING_3] = function (node, children) { return React__default.createElement("h3", null, children); }, 450 _a[dist_5.HEADING_4] = function (node, children) { return React__default.createElement("h4", null, children); }, 451 _a[dist_5.HEADING_5] = function (node, children) { return React__default.createElement("h5", null, children); }, 452 _a[dist_5.HEADING_6] = function (node, children) { return React__default.createElement("h6", null, children); }, 453 _a[dist_5.EMBEDDED_ENTRY] = function (node, children) { return React__default.createElement("div", null, children); }, 454 _a[dist_5.UL_LIST] = function (node, children) { return React__default.createElement("ul", null, children); }, 455 _a[dist_5.OL_LIST] = function (node, children) { return React__default.createElement("ol", null, children); }, 456 _a[dist_5.LIST_ITEM] = function (node, children) { return React__default.createElement("li", null, children); }, 457 _a[dist_5.QUOTE] = function (node, children) { return React__default.createElement("blockquote", null, children); }, 458 _a[dist_5.HR] = function () { return React__default.createElement("hr", null); }, 459 _a[dist_5.TABLE] = function (node, children) { return (React__default.createElement("table", null, 460 React__default.createElement("tbody", null, children))); }, 461 _a[dist_5.TABLE_ROW] = function (node, children) { return React__default.createElement("tr", null, children); }, 462 _a[dist_5.TABLE_HEADER_CELL] = function (node, children) { return React__default.createElement("th", null, children); }, 463 _a[dist_5.TABLE_CELL] = function (node, children) { return React__default.createElement("td", null, children); }, 464 _a[dist_4.ASSET_HYPERLINK] = function (node) { return defaultInline(dist_4.ASSET_HYPERLINK, node); }, 465 _a[dist_4.ENTRY_HYPERLINK] = function (node) { return defaultInline(dist_4.ENTRY_HYPERLINK, node); }, 466 _a[dist_4.EMBEDDED_ENTRY] = function (node) { return defaultInline(dist_4.EMBEDDED_ENTRY, node); }, 467 _a[dist_4.HYPERLINK] = function (node, children) { return React__default.createElement("a", { href: node.data.uri }, children); }, 468 _a); 469var defaultMarkRenderers = (_b = {}, 470 _b[dist_3.BOLD] = function (text) { return React__default.createElement("b", null, text); }, 471 _b[dist_3.ITALIC] = function (text) { return React__default.createElement("i", null, text); }, 472 _b[dist_3.UNDERLINE] = function (text) { return React__default.createElement("u", null, text); }, 473 _b[dist_3.CODE] = function (text) { return React__default.createElement("code", null, text); }, 474 _b[dist_3.SUPERSCRIPT] = function (text) { return React__default.createElement("sup", null, text); }, 475 _b[dist_3.SUBSCRIPT] = function (text) { return React__default.createElement("sub", null, text); }, 476 _b); 477function defaultInline(type, node) { 478 return (React__default.createElement("span", { key: node.data.target.sys.id }, 479 "type: ", 480 node.nodeType, 481 " id: ", 482 node.data.target.sys.id)); 483} 484/** 485 * Serialize a Contentful Rich Text `document` to React tree 486 */ 487function documentToReactComponents(richTextDocument, options) { 488 if (options === void 0) { options = {}; } 489 if (!richTextDocument) { 490 return null; 491 } 492 return nodeToReactComponent(richTextDocument, { 493 renderNode: __assign(__assign({}, defaultNodeRenderers), options.renderNode), 494 renderMark: __assign(__assign({}, defaultMarkRenderers), options.renderMark), 495 renderText: options.renderText, 496 });
497} 498 499exports.documentToReactComponents = documentToReactComponents; 500//# sourceMappingURL=rich-text-react-renderer.es5.js.map 501 502 503/***/ }), 504 505/***/ 857305: 506/***/ (function(__unused_webpack_module, exports) { 507 508"use strict"; 509 510Object.defineProperty(exports, "__esModule", ({ value: true })); 511const useGetUrlsInfo = ({ desktopMedia, mobileMedia, includeHttps = true, }) => { 512 const desktopAsset = desktopMedia?.fields?.asset; 513 const mobileAsset = mobileMedia?.fields?.asset ?? desktopMedia?.fields?.asset; 514 if (!desktopAsset) { 515 return { 516 source: null, 517 mobileSource: null, 518 altText: '', 519 }; 520 } 521 const altText = desktopAsset?.fields?.title || ''; 522 let desktopSrc = desktopAsset.fields.file.url; 523 let mobileSrc = mobileAsset?.fields.file.url ?? desktopSrc; 524 if (includeHttps) { 525 desktopSrc = desktopSrc.startsWith('http') 526 ? desktopSrc 527 : `https:${desktopSrc}`; 528 mobileSrc = mobileSrc.startsWith('http') ? mobileSrc : `https:${mobileSrc}`; 529 } 530 return { 531 source: desktopSrc, 532 mobileSource: mobileSrc, 533 altText, 534 }; 535}; 536exports["default"] = useGetUrlsInfo; 537 538 539/***/ }), 540 541/***/ 723474: 542/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 543 544"use strict"; 545 546var __importDefault = (this && this.__importDefault) || function (mod) { 547 return (mod && mod.__esModule) ? mod : { "default": mod }; 548}; 549Object.defineProperty(exports, "__esModule", ({ value: true })); 550exports.ResponsiveMediaPod = void 0; 551const jsx_runtime_1 = __webpack_require__(785893); 552const clsx_1 = __importDefault(__webpack_require__(557966)); 553const image_1 = __webpack_require__(425675); 554const bannerFormat_1 = __webpack_require__(137305); 555const useGetUrlsInfo_1 = __importDefault(__webpack_require__(857305)); 556const ImageOptimized_1 = __importDefault(__webpack_require__(83521)); 557const ResponsiveMediaPod = ({ mediaPod, mobileMediaPod, className, imageProps, improveLCP = false, keepOriginalImage = false, }) => { 558 const { source, mobileSource, altText } = (0, useGetUrlsInfo_1.default)({ 559 desktopMedia: mediaPod, 560 mobileMedia: mobileMediaPod, 561 }); 562 if (!source) 563 return null; 564 const common = { 565 alt: altText, 566 fill: true, 567 loader: ({ src }) => src, 568 src: source, 569 unoptimized: true, 570 ...imageProps, 571 }; 572 const { props } = (0, image_1.getImageProps)({ ...common }); 573 return ((0, jsx_runtime_1.jsx)(ImageOptimized_1.default, { url: source, urlMobile: mobileSource, className: (0, clsx_1.default)('responsive-media-pod', className), imageFormats: bannerFormat_1.bannerFormat, improveLCP: improveLCP, keepOriginalImage: keepOriginalImage, ...props })); 574}; 575exports.ResponsiveMediaPod = ResponsiveMediaPod; 576 577 578/***/ }), 579 580/***/ 137305: 581/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 582 583"use strict"; 584 585Object.defineProperty(exports, "__esModule", ({ value: true })); 586exports.bannerFormat = void 0; 587const breakpoints_1 = __webpack_require__(298222); 588const usePictureSources_1 = __webpack_require__(626931); 589exports.bannerFormat = [ 590 { 591 urlProps: { 592 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 593 w: breakpoints_1.BREAKPOINTS.MOBILE_M.toString(), 594 h: breakpoints_1.BREAKPOINTS.MOBILE_M.toString(), 595 q: breakpoints_1.QUALITY.DEFAULT, 596 fit: breakpoints_1.FIT_SIZE.THUMB, 597 }, 598 bp: breakpoints_1.BREAKPOINTS.MOBILE_M, 599 media: breakpoints_1.MEDIA.MOBILE_M, 600 isMobile: true, 601 }, 602 { 603 urlProps: { 604 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 605 w: breakpoints_1.BREAKPOINTS.MOBILE_M.toString(), 606 h: breakpoints_1.BREAKPOINTS.MOBILE_M.toString(), 607 q: breakpoints_1.QUALITY.DEFAULT, 608 fit: breakpoints_1.FIT_SIZE.THUMB, 609 }, 610 bp: breakpoints_1.BREAKPOINTS.MOBILE_M, 611 media: breakpoints_1.MEDIA.MOBILE_M, 612 isMobile: true, 613 }, 614 { 615 urlProps: { 616 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 617 w: breakpoints_1.BREAKPOINTS.MOBILE_W.toString(), 618 h: breakpoints_1.BREAKPOINTS.MOBILE_W.toString(), 619 q: breakpoints_1.QUALITY.DEFAULT, 620 fit: breakpoints_1.FIT_SIZE.THUMB, 621 }, 622 bp: breakpoints_1.BREAKPOINTS.MOBILE_W, 623 media: breakpoints_1.MEDIA.MOBILE_W, 624 isMobile: true, 625 }, 626 { 627 urlProps: { 628 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 629 w: breakpoints_1.BREAKPOINTS.MOBILE_W.toString(), 630 h: breakpoints_1.BREAKPOINTS.MOBILE_W.toString(), 631 q: breakpoints_1.QUALITY.DEFAULT, 632 fit: breakpoints_1.FIT_SIZE.THUMB, 633 }, 634 bp: breakpoints_1.BREAKPOINTS.MOBILE_W, 635 media: breakpoints_1.MEDIA.MOBILE_W, 636 isMobile: true, 637 }, 638 { 639 urlProps: { 640 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 641 w: breakpoints_1.BREAKPOINTS.TABLET_S.toString(), 642 h: breakpoints_1.BREAKPOINTS.TABLET_S.toString(), 643 q: breakpoints_1.QUALITY.DEFAULT, 644 fit: breakpoints_1.FIT_SIZE.THUMB, 645 }, 646 bp: breakpoints_1.BREAKPOINTS.TABLET_S, 647 media: breakpoints_1.MEDIA.TABLET_S, 648 isMobile: true, 649 }, 650 { 651 urlProps: { 652 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 653 w: breakpoints_1.BREAKPOINTS.TABLET_S.toString(), 654 h: breakpoints_1.BREAKPOINTS.TABLET_S.toString(), 655 q: breakpoints_1.QUALITY.DEFAULT, 656 fit: breakpoints_1.FIT_SIZE.THUMB, 657 }, 658 bp: breakpoints_1.BREAKPOINTS.TABLET_S, 659 media: breakpoints_1.MEDIA.TABLET_S, 660 isMobile: true, 661 }, 662 { 663 urlProps: { 664 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 665 w: breakpoints_1.BREAKPOINTS.TABLET_M.toString(), 666 }, 667 bp: breakpoints_1.BREAKPOINTS.TABLET_M, 668 media: breakpoints_1.MEDIA.TABLET_M, 669 isMobile: false, 670 }, 671 { 672 urlProps: { 673 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 674 w: breakpoints_1.BREAKPOINTS.TABLET_M.toString(), 675 }, 676 bp: breakpoints_1.BREAKPOINTS.TABLET_M, 677 media: breakpoints_1.MEDIA.TABLET_M, 678 isMobile: false, 679 }, 680 { 681 urlProps: { 682 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 683 w: breakpoints_1.BREAKPOINTS.LAPTOP_S.toString(), 684 }, 685 bp: breakpoints_1.BREAKPOINTS.LAPTOP_S, 686 media: breakpoints_1.MEDIA.LAPTOP_S, 687 isMobile: false, 688 }, 689 { 690 urlProps: { 691 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 692 w: breakpoints_1.BREAKPOINTS.LAPTOP_S.toString(), 693 }, 694 bp: breakpoints_1.BREAKPOINTS.LAPTOP_S, 695 media: breakpoints_1.MEDIA.LAPTOP_S, 696 isMobile: false, 697 }, 698 { 699 urlProps: { 700 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 701 w: breakpoints_1.BREAKPOINTS.LAPTOP_M.toString(), 702 }, 703 bp: breakpoints_1.BREAKPOINTS.LAPTOP_M, 704 media: breakpoints_1.MEDIA.LAPTOP_M, 705 isMobile: false, 706 }, 707 { 708 urlProps: { 709 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 710 w: breakpoints_1.BREAKPOINTS.LAPTOP_M.toString(), 711 }, 712 bp: breakpoints_1.BREAKPOINTS.LAPTOP_M, 713 media: breakpoints_1.MEDIA.LAPTOP_M, 714 isMobile: false, 715 }, 716 { 717 urlProps: { 718 fm: usePictureSources_1.FORMAT_TYPES.WEBP, 719 w: breakpoints_1.BREAKPOINTS.HD.toString(), 720 }, 721 bp: breakpoints_1.BREAKPOINTS.HD, 722 media: breakpoints_1.MEDIA.LAPTOP_HD, 723 isMobile: false, 724 }, 725 { 726 urlProps: { 727 fm: usePictureSources_1.FORMAT_TYPES.AVIF, 728 w: breakpoints_1.BREAKPOINTS.HD.toString(), 729 }, 730 bp: breakpoints_1.BREAKPOINTS.HD, 731 media: breakpoints_1.MEDIA.LAPTOP_HD, 732 isMobile: false, 733 }, 734]; 735 736 737/***/ }), 738 739/***/ 859315: 740/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 741 742"use strict"; 743 744var __importDefault = (this && this.__importDefault) || function (mod) { 745 return (mod && mod.__esModule) ? mod : { "default": mod }; 746}; 747Object.defineProperty(exports, "__esModule", ({ value: true })); 748exports.RichTextPod = void 0; 749const jsx_runtime_1 = __webpack_require__(785893); 750const rich_text_react_renderer_1 = __webpack_require__(374129); 751const clsx_1 = __importDefault(__webpack_require__(557966)); 752const stringUtils_1 = __webpack_require__(782219); 753const RichTextPod = (props) => { 754 const { richTextContent: content, designVariationTextColor: textColor, designVariationTextAlignment: textAlignment, }
754 = props?.data?.fields || {}; 755 const classes = (0, clsx_1.default)(textColor && 756 `rich-text-pod__text-color--${(0, stringUtils_1.hyphenateSpaces)(textColor?.toLowerCase())}`, textAlignment && 757 `rich-text-pod__text-alignment--${(0, stringUtils_1.hyphenateSpaces)(textAlignment?.toLowerCase())}`); 758 if (!content) { 759 return null; 760 } 761 return (0, jsx_runtime_1.jsx)("div", { className: classes, children: (0, rich_text_react_renderer_1.documentToReactComponents)(content) }); 762}; 763exports.RichTextPod = RichTextPod; 764 765 766/***/ }), 767 768/***/ 352599: 769/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 770 771"use strict"; 772 773Object.defineProperty(exports, "__esModule", ({ value: true })); 774const RichTextPod_1 = __webpack_require__(859315); 775exports["default"] = RichTextPod_1.RichTextPod; 776 777 778/***/ }), 779 780/***/ 649900: 781/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 782 783"use strict"; 784 785var __importDefault = (this && this.__importDefault) || function (mod) { 786 return (mod && mod.__esModule) ? mod : { "default": mod }; 787}; 788Object.defineProperty(exports, "__esModule", ({ value: true })); 789exports.VerticalBannerTile = void 0; 790const jsx_runtime_1 = __webpack_require__(785893); 791const link_1 = __importDefault(__webpack_require__(741664)); 792const VerticalBannerContainer_1 = __webpack_require__(262750); 793const VerticalBannerTile = (props) => { 794 const { data } = props; 795 return ( 796 // Despite the content type configuration, entire vertical banner should be linkeable 797 (0, jsx_runtime_1.jsx)(link_1.default, { href: data.fields.callToAction?.fields?.target || '', children: (0, jsx_runtime_1.jsx)("div", { className: "vertical-banner-tile", children: (0, jsx_runtime_1.jsx)(VerticalBannerContainer_1.VerticalBannerContainer, { ...data, asBackground: true }) }) })); 798}; 799exports.VerticalBannerTile = VerticalBannerTile; 800 801 802/***/ }), 803 804/***/ 202665: 805/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 806 807"use strict"; 808 809var __importDefault = (this && this.__importDefault) || function (mod) { 810 return (mod && mod.__esModule) ? mod : { "default": mod }; 811}; 812Object.defineProperty(exports, "__esModule", ({ value: true })); 813exports.BannerCollection = exports.getSettings = exports.NextArrow = exports.PrevArrow = void 0; 814const jsx_runtime_1 = __webpack_require__(785893); 815const react_1 = __webpack_require__(667294); 816const react_slick_1 = __importDefault(__webpack_require__(446066)); 817const stringUtils_1 = __webpack_require__(782219); 818const BannerContainer_1 = __webpack_require__(343213); 819const Icon_1 = __importDefault(__webpack_require__(229818)); 820const handleLeftArrowClick = (currentSlide, callBack) => { 821 if (callBack && currentSlide && currentSlide > 0) 822 callBack(currentSlide - 1); 823}; 824const handleRightArrowClick = (slideCount, currentSlide, callBack) => { 825 if (slideCount && currentSlide !== undefined && currentSlide < slideCount) 826 if (callBack !== undefined) 827 callBack(currentSlide + 1); 828}; 829const PrevArrow = (props) => { 830 const { currentSlide, callBack = () => null } = props; 831 const disabledArrow = currentSlide !== undefined && currentSlide < 1; 832 const arrowClass = disabledArrow 833 ? `${'arrow arrow-left disabled-arrow'}` 834 : `${'arrow arrow-left'}`; 835 return ((0, jsx_runtime_1.jsx)("button", { className: arrowClass, onClick: () => handleLeftArrowClick(currentSlide, callBack), children: (0, jsx_runtime_1.jsx)(Icon_1.default, { id: 'arrow-left-thin', iconName: "arrow-left-thin" }) })); 836}; 837exports.PrevArrow = PrevArrow; 838const NextArrow = (props) => { 839 const { slideCount, currentSlide, callBack = () => null } = props; 840 const disabledArrow = currentSlide !== undefined && 841 slideCount !== undefined && 842 currentSlide >= slideCount - 1; 843 const arrowClass = disabledArrow 844 ? `${'arrow arrow-right disabled-arrow'}` 845 : `${'arrow arrow-right'}`; 846 return ((0, jsx_runtime_1.jsx)("button", { className: arrowClass, onClick: () => handleRightArrowClick(slideCount, currentSlide, callBack), children: (0, jsx_runtime_1.jsx)(Icon_1.default, { iconName: "arrow-right-thin" }) })); 847}; 848exports.NextArrow = NextArrow; 849const getSettings = (currentSlide, callBack) => ({ 850 infinite: false, 851 lazyLoad: 'progressive', 852 swipeDirection: 'down', 853 speed: 500, 854 slidesToShow: 1, 855 slidesToScroll: 1, 856 arrows: true, 857 adaptiveHeight: false, 858 prevArrow: (0, jsx_runtime_1.jsx)(exports.PrevArrow, { currentSlide: currentSlide, callBack: callBack }), 859 nextArrow: (0, jsx_runtime_1.jsx)(exports.NextArrow, { currentSlide: currentSlide, callBack: callBack }), 860 dots: false, 861 className: 'container-slider', 862 initialSlide: currentSlide, 863 beforeChange: (prev, next) => { 864 if (next !== prev) { 865 callBack(next); 866 } 867 }, 868}); 869exports.getSettings = getSettings; 870const BannerCollection = (props) => { 871 const sliderRef = (0, react_1.useRef)(null); 872 const [currentSlide, setCurrentSlide] = (0, react_1.useState)(0); 873 (0, react_1.useEffect)(() => { 874 if (sliderRef.current) 875 sliderRef.current.slickGoTo(currentSlide); 876 }, [currentSlide]); 877 const { data, keepOriginalImage = false } = props; 878 if (!data.fields) { 879 return null; 880 }
881 const tiles = data?.fields?.bannerContainers; 882 const { designVariationBannerHeight } = data?.fields; 883 const bannerHeightClass = designVariationBannerHeight && 884 'banner-title--height-' + 885 (0, stringUtils_1.hyphenateSpaces)(designVariationBannerHeight ?? ''); 886 const settings = (0, exports.getSettings)(currentSlide, setCurrentSlide); 887 if (!tiles?.length) 888 return null; 889 const asBackground = !bannerHeightClass?.includes('fit-to-image'); 890 const id = data.sys.id; 891 // Rendering a single tile as a banner without Slider 892 // allows us to prerender the banner and avoid flickering 893 if (tiles?.length === 1) { 894 return ( 895 // slider-wrapper may not be a good class name 896 // but DY may be using it 897 (0, jsx_runtime_1.jsx)("div", { className: "slider-wrapper", id: id, children: (0, jsx_runtime_1.jsx)(BannerTileItem, { asBackground: asBackground, className: bannerHeightClass, item: tiles[0], keepOriginalImage: keepOriginalImage }) })); 898 } 899 return ((0, jsx_runtime_1.jsx)("div", { className: "slider-wrapper", id: id, children: (0, jsx_runtime_1.jsx)(react_slick_1.default, { ...settings, ref: sliderRef, children: tiles?.map((item, idx) => ((0, jsx_runtime_1.jsx)(BannerTileItem, { asBackground: asBackground, className: bannerHeightClass, item: item, keepOriginalImage: keepOriginalImage }, idx))) }) })); 900}; 901exports.BannerCollection = BannerCollection; 902const BannerTileItem = ({ item, className = '', asBackground = true, keepOriginalImage = false, }) => { 903 return ((0, jsx_runtime_1.jsx)("div", { className: `banner-media-tile ${className}`, children: (0, jsx_runtime_1.jsx)(BannerContainer_1.BannerContainer, { ...item, asBackground: asBackground, keepOriginalImage: keepOriginalImage }) })); 904}; 905 906 907/***/ }), 908 909/***/ 457967: 910/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 911 912"use strict"; 913 914Object.defineProperty(exports, "__esModule", ({ value: true })); 915const BannerCollection_1 = __webpack_require__(202665); 916exports["default"] = BannerCollection_1.BannerCollection; 917 918 919/***/ }), 920 921/***/ 266311: 922/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 923 924"use strict"; 925 926var __importDefault = (this && this.__importDefault) || function (mod) { 927 return (mod && mod.__esModule) ? mod : { "default": mod }; 928}; 929Object.defineProperty(exports, "__esModule", ({ value: true })); 930const jsx_runtime_1 = __webpack_require__(785893); 931const link_1 = __importDefault(__webpack_require__(741664)); 932const breakpoints_1 = __webpack_require__(298222); 933const Carousel_1 = __webpack_require__(345582); 934const MediaPod_1 = __webpack_require__(693075); 935const PlpMiniNav = ({ data }) => { 936 const { TABLET, TABLET_M, LAPTOP } = breakpoints_1.BREAKPOINTS; 937 if (!data.fields || !data.fields.miniNavItemsCarousel) 938 return null; 939 const slidesToShowLaptop = data.fields.miniNavItemsCarousel?.length < 8 940 ? data.fields.miniNavItemsCarousel.length 941 : 8; 942 const slidesToShowTabletW = data.fields.miniNavItemsCarousel?.length < 6 943 ? data.fields.miniNavItemsCarousel.length 944 : 6; 945 const buildResponsiveProps = () => [ 946 { 947 breakpoint: LAPTOP, 948 settings: { 949 slidesToShow: slidesToShowLaptop, 950 }, 951 }, 952 { 953 breakpoint: 1024, 954 settings: { 955 slidesToShow: slidesToShowTabletW, 956 }, 957 }, 958 { 959 breakpoint: 900, 960 settings: { 961 slidesToShow: 8, 962 }, 963 }, 964 { 965 breakpoint: TABLET, 966 settings: { 967 slidesToShow: 5, 968 }, 969 }, 970 { 971 breakpoint: TABLET_M, 972 settings: { 973 slidesToShow: 5.6, 974 }, 975 }, 976 { 977 breakpoint: 480, 978 settings: { 979 slidesToShow: 3, 980 }, 981 }, 982 { 983 breakpoint: 425, 984 settings: { 985 slidesToShow: 2.6, 986 }, 987 }, 988 { 989 breakpoint: 360, 990 settings: { 991 slidesToShow: 2, 992 }, 993 }, 994 ]; 995 const DEFAULT_CAROUSEL_SETTINGS = { 996 slidesToShow: 8, 997 }; 998 return ((0, jsx_runtime_1.jsx)(Carousel_1.Carousel, { ...DEFAULT_CAROUSEL_SETTINGS, dots: false, className: "mini-nav-carousel", arrows: true, responsive: buildResponsiveProps(), draggable: false, swipe: true, initialSlide: 0, children: data.fields.miniNavItemsCarousel 999 ?.filter((e) => e.fields?.linkToCollection) 1000 .map((e) => ((0, jsx_runtime_1.jsxs)(link_1.default, { href: sanitizeUrl(`/collections/${e.fields?.linkToCollection}`), children: [(0, jsx_runtime_1.jsx)(MediaPod_1.MediaPod, { ...e.fields.media, height: 100, width: 100, className: "mini-nav-carousel__image" }), (0, jsx_runtime_1.jsx)("p", { className: "mini-nav-carousel__text", children: e.fields.displayTitle })] }, e.sys.id))) }, data.sys.id)); 1001}; 1002exports["default"] = PlpMiniNav; 1003const sanitizeUrl = (path) => { 1004 return path.replace(/([^:]\/)\/+/g, '$1'); 1005}; 1006 1007 1008/***/ }), 1009 1010/***/ 343213: 1011/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 1012 1013"use strict"; 1014 1015var __importDefault = (this && this.__importDefault) || function (mod) { 1016 return (mod && mod.__esModule) ? mod : { "default": mod }; 1017}; 1018Object.defineProperty(exports, "__esModule", ({ value: true })); 1019exports.BannerContainer = void 0; 1020const react_1 = __webpack_require__(667294); 1021const jsx_runtime_1 = __webpack_require__(785893); 1022const clsx_1 = __importDefault(__webpack_require__(557966)); 1023const FlatTextPod_1 = __webpack_require__(777700); 1024const ResponsiveMediaPod_1 = __webpack_require__(723474); 1025const RichTextPod_1 = __importDefault(__webpack_require__(352599)); 1026const LinkPod_1 = __importDefault(__webpack_require__(937740)); 1027const BannerContainer = (props) => { 1028 if (!props.fields) 1029 return null; 1030 const { fields, keepOriginalImage = false } = props; 1031 const { media, backgroundMobile, overlayText, callToAction, designVariationTextAlignment, } = fields; 1032 const textAlignmentClass = designVariationTextAlignment?.includes('Left') 1033 ? 'caption--left' 1034 : 'caption--center'; 1035 const isIPodFlatText = (content) => content?.fields?.textContent ? true : false;
1036 const isIRichTextPod = (content) => content?.fields?.richTextContent?.content ? true : false; 1037 const BannerContainerText = ({ content, }) => { 1038 return isIPodFlatText(content) ? ((0, jsx_runtime_1.jsx)(FlatTextPod_1.FlatTextPod, { ...content })) : isIRichTextPod(content) ? ((0, jsx_runtime_1.jsx)(RichTextPod_1.default, { data: content })) : null; 1039 }; 1040 const bannerContentClassNames = (0, clsx_1.default)('caption', textAlignmentClass, 'banner-content'); 1041 return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [media && ((0, jsx_runtime_1.jsx)(ResponsiveMediaPod_1.ResponsiveMediaPod, { mediaPod: media, mobileMediaPod: backgroundMobile, className: "media--default", imageProps: { 1042 priority: true, 1043 }, improveLCP: true, keepOriginalImage: keepOriginalImage })), (0, jsx_runtime_1.jsxs)("div", { className: bannerContentClassNames, children: [overlayText?.length && 1044 overlayText.map((title, i) => ((0, jsx_runtime_1.jsx)(BannerContainerText, { content: title }, `TextPod-${i}`))), (0, jsx_runtime_1.jsx)("div", { className: "banner-content__cta-wrapper", children: callToAction && Array.isArray(callToAction) 1045 ? callToAction.map((item, idx) => ((0, react_1.createElement)(LinkPod_1.default, { ...item, key: `call-to-action-${idx}` }))) 1046 : null })] })] })); 1047}; 1048exports.BannerContainer = BannerContainer; 1049 1050 1051/***/ }), 1052 1053/***/ 262750: 1054/***/ (function(__unused_webpack_module, exports, __webpack_require__) { 1055 1056"use strict"; 1057 1058var __importDefault = (this && this.__importDefault) || function (mod) { 1059 return (mod && mod.__esModule) ? mod : { "default": mod }; 1060}; 1061Object.defineProperty(exports, "__esModule", ({ value: true })); 1062exports.VerticalBannerContainer = void 0; 1063const jsx_runtime_1 = __webpack_require__(785893); 1064const FlatTextPod_1 = __webpack_require__(777700); 1065const ResponsiveMediaPod_1 = __webpack_require__(723474); 1066const RichTextPod_1 = __importDefault(__webpack_require__(352599)); 1067const LinkPod_1 = __importDefault(__webpack_require__(937740)); 1068const VerticalBannerContainer = (props) => { 1069 if (!props.fields) 1070 return null; 1071 const { media, backgroundMobile, overlayText, callToAction } = props.fields; 1072 const isIPodFlatText = (content) => content?.fields?.textContent ? true : false; 1073 const isIRichTextPod = (content) => content?.fields?.richTextContent?.content ? true : false; 1074 const BannerContainerText = ({ content, }) => { 1075 return isIPodFlatText(content) ? ((0, jsx_runtime_1.jsx)(FlatTextPod_1.FlatTextPod, { ...content })) : isIRichTextPod(content) ? ((0, jsx_runtime_1.jsx)(RichTextPod_1.default, { data: content })) : null; 1076 }; 1077 return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(ResponsiveMediaPod_1.ResponsiveMediaPod, { mediaPod: media, mobileMediaPod: backgroundMobile, className: "vertical-banner-media" }), (0, jsx_runtime_1.jsx)("div", { className: "caption vertical-banner-caption", children: (0, jsx_runtime_1.jsxs)("div", { children: [overlayText?.length && 1078 overlayText.map((title, i) => ((0, jsx_runtime_1.jsx)(BannerContainerText, { content: title }, `TextPod-${i}`))), callToAction && (0, jsx_runtime_1.jsx)(LinkPod_1.default, { ...callToAction })] }) })] })); 1079}; 1080exports.VerticalBannerContainer = VerticalBannerContainer; 1081 1082 1083/***/ }), 1084 1085/***/ 532417: 1086/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) { 1087 1088 1089 (window.__NEXT_P = window.__NEXT_P || []).push([ 1090 "/collections/[categorySlug]", 1091 function () { 1092 return __webpack_require__(18995); 1093 } 1094 ]); 1095 if(false) {} 1096 1097 1098/***/ }), 1099 1100/***/ 514421: 1101/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1102 1103"use strict"; 1104/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1105/* harmony export */ T: function() { return /* binding */ Configure; } 1106/* harmony export */ }); 1107/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1108/* harmony import */ var react_instantsearch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32174); 1109 1110 1111//this component re-wraps the Configure component 1112//from Algolia to get around the current bugs with Typescript 1113const Configure = (props)=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(react_instantsearch__WEBPACK_IMPORTED_MODULE_1__/* .Configure */ .T, { 1114 ...props 1115 }); 1116 1117 1118/***/ }), 1119 1120/***/ 892270: 1121/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1122 1123"use strict"; 1124 1125// EXPORTS 1126__webpack_require__.d(__webpack_exports__, { 1127 S: function() { return /* binding */ FilterRenderer; } 1128}); 1129 1130// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js 1131var jsx_runtime = __webpack_require__(785893); 1132// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/hooks/useRouteChange.js 1133var useRouteChange = __webpack_require__(723484); 1134// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useClearRefinements.js 1135var useClearRefinements = __webpack_require__(457829); 1136;// CONCATENATED MODULE: ./src/components/ProductListingPage/ClearFilters.tsx 1137 1138 1139 1140const ClearFilters = ()=>{ 1141 const { refine: clearRefinements } = (0,useClearRefinements/* useClearRefinements */.n)(); 1142 (0,useRouteChange.useRouteChange)({ 1143 callback: clearRefinements 1144 }); 1145 return /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 1146 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { 1147 className: "clear-filters__button", 1148 onClick: ()=>clearRefinements(), 1149 children: "Clear all filters" 1150 }) 1151 }); 1152}; 1153 1154// EXTERNAL MODULE: ./src/components/ProductListingPage/Configure.tsx 1155var Configure = __webpack_require__(514421); 1156// EXTERNAL MODULE: ./src/components/ProductListingPage/RefinementFilter.tsx 1157var RefinementFilter = __webpack_require__(913362); 1158;// CONCATENATED MODULE: ./src/components/ProductListingPage/FilterRenderer.tsx 1159 1160 1161 1162 1163const FilterRenderer = (param)=>{ 1164 let { filterOptionList } = param; 1165 if (!filterOptionList) return null; 1166 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { 1167 children: [ 1168 /*#__PURE__*/ (0,jsx_runtime.jsx)(ClearFilters, {}), 1169 /*#__PURE__*/ (0,jsx_runtime.jsx)(Configure/* Configure */.T, { 1170 maxValuesPerFacet: 1000 1171 }), 1172 filterOptionList.map((param, index)=>{ 1173 let { key, value } = param; 1174 return /*#__PURE__*/ (0,jsx_runtime.jsx)(RefinementFilter/* default */.Z, { 1175 filterText: value, 1176 filterValue: key 1177 }, "".concat(key, "-").concat(index)); 1178 }) 1179 ] 1180 }); 1181}; 1182 1183 1184/***/ }), 1185 1186/***/ 738222: 1187/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1188 1189"use strict"; 1190 1191// EXPORTS 1192__webpack_require__.d(__webpack_exports__, { 1193 z: function() { return /* binding */ MobileFilter; } 1194}); 1195 1196// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js 1197var jsx_runtime = __webpack_require__(785893); 1198// EXTERNAL MODULE: ./node_modules/react/index.js 1199var react = __webpack_require__(667294); 1200// EXTERNAL MODULE: ./node_modules/@mui/icons-material/Close.js 1201var Close = __webpack_require__(450594); 1202// EXTERNAL MODULE: ./node_modules/@mui/icons-material/ExpandMore.js 1203var ExpandMore = __webpack_require__(823508); 1204// EXTERNAL MODULE: ./node_modules/@mui/icons-material/Tune.js 1205var Tune = __webpack_require__(875395); 1206// EXTERNAL MODULE: ./node_modules/@mui/material/Accordion/Accordion.js 1207var Accordion = __webpack_require__(86532); 1208// EXTERNAL MODULE: ./node_modules/@mui/material/AccordionDetail
1208s/AccordionDetails.js 1209var AccordionDetails = __webpack_require__(963083); 1210// EXTERNAL MODULE: ./node_modules/@mui/material/AccordionSummary/AccordionSummary.js 1211var AccordionSummary = __webpack_require__(361250); 1212// EXTERNAL MODULE: ./node_modules/@mui/material/Avatar/Avatar.js 1213var Avatar = __webpack_require__(827995); 1214// EXTERNAL MODULE: ./node_modules/@mui/material/Box/Box.js 1215var Box = __webpack_require__(999226); 1216// EXTERNAL MODULE: ./node_modules/@mui/material/Button/Button.js 1217var Button = __webpack_require__(669397); 1218// EXTERNAL MODULE: ./node_modules/@mui/material/Divider/Divider.js 1219var Divider = __webpack_require__(467720); 1220// EXTERNAL MODULE: ./node_modules/@mui/material/Drawer/Drawer.js 1221var Drawer = __webpack_require__(619058); 1222// EXTERNAL MODULE: ./node_modules/@mui/material/FormControl/FormControl.js 1223var FormControl = __webpack_require__(453640); 1224// EXTERNAL MODULE: ./node_modules/@mui/material/FormControlLabel/FormControlLabel.js 1225var FormControlLabel = __webpack_require__(620847); 1226// EXTERNAL MODULE: ./node_modules/@mui/material/Grid/Grid.js + 1 modules 1227var Grid = __webpack_require__(448263); 1228// EXTERNAL MODULE: ./node_modules/@mui/material/IconButton/IconButton.js 1229var IconButton = __webpack_require__(554799); 1230// EXTERNAL MODULE: ./node_modules/@mui/material/List/List.js 1231var List = __webpack_require__(618843); 1232// EXTERNAL MODULE: ./node_modules/@mui/material/Radio/Radio.js + 1 modules 1233var Radio = __webpack_require__(599942); 1234// EXTERNAL MODULE: ./node_modules/@mui/material/RadioGroup/RadioGroup.js 1235var RadioGroup = __webpack_require__(668061); 1236// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/breakpoints.js 1237var breakpoints = __webpack_require__(298222); 1238// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/hooks/useRouteChange.js 1239var useRouteChange = __webpack_require__(723484); 1240// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/utils/classNames.js 1241var classNames = __webpack_require__(221504); 1242// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useSortBy.js 1243var useSortBy = __webpack_require__(96890); 1244// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useCurrentRefinements.js 1245var useCurrentRefinements = __webpack_require__(141391); 1246// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useClearRefinements.js 1247var useClearRefinements = __webpack_require__(457829); 1248// EXTERNAL MODULE: ./src/components/search/AlgoliaConstants.ts 1249var AlgoliaConstants = __webpack_require__(858885); 1250// EXTERNAL MODULE: ./src/lib/fonts.ts 1251var fonts = __webpack_require__(623376); 1252// EXTERNAL MODULE: ./src/lib/hooks/useWindowDimensions.tsx 1253var useWindowDimensions = __webpack_require__(845623); 1254// EXTERNAL MODULE: ./src/lib/store/hooks.ts 1255var hooks = __webpack_require__(267097); 1256// EXTERNAL MODULE: ./src/lib/store/zipcodeSlice.tsx 1257var zipcodeSlice = __webpack_require__(480326); 1258// EXTERNAL MODULE: ./node_modules/@mui/material/Chip/Chip.js 1259var Chip = __webpack_require__(58308); 1260// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useRefinementList.js 1261var useRefinementList = __webpack_require__(441281); 1262;// CONCATENATED MODULE: ./src/components/ProductListingPage/components/ActiveFilterChip.tsx 1263 1264 1265 1266 1267 1268 1269const ActiveFilterChip = (param)=>{ 1270 let { filterValue } = param; 1271 const { items, refine } = (0,useRefinementList/* useRefinementList */.c)({ 1272 attribute: filterValue, 1273 limit: 100, 1274 operator: "or", 1275 showMore: true, 1276 showMoreLimit: 1000, 1277 sortBy: [ 1278 "name:asc" 1279 ] 1280 }); 1281 return /*#__PURE__*/ (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { 1282 children: items.filter((item)=>item.isRefined).map((refinement)=>{ 1283 return /*#__PURE__*/ (0,jsx_runtime.jsx)(Chip/* default */.Z, { 1284 label: refinement.label, 1285 variant: "outlined", 1286 sx: { 1287 border: "1px solid #3D3935", 1288 borderRadius: "8px", 1289 margin: "0 10px 10px 0", 1290 color: "black", 1291 "& .MuiChip-avatar": { 1292 color: "black" 1293 }, 1294 "& .MuiChip-label": { 1295 fontSize: "14px", 1296 fontWeight: 500, 1297 color: "#3D3935", 1298 fontFamily: fonts/* CSS_VAR_FONT_OSWALD */.pl, 1299 textTransform: "uppercase" 1300 } 1301 }, 1302 onDelete: ()=>refine(refinement.value), 1303 deleteIcon: /*#__PURE__*/ (0,jsx_runtime.jsx)(IconButton/* default */.Z, { 1304 size: "small", 1305 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Close["default"], { 1306 fontSize: "small", 1307 sx: { 1308 color: "#3D3935" 1309 } 1310 }) 1311 }) 1312 }, refinement.value); 1313 }) 1314 }); 1315}; 1316 1317// EXTERNAL MODULE: ./src/components/ProductListingPage/Filter.module.scss 1318var Filter_module = __webpack_require__(205498); 1319var Filter_module_default = /*#__PURE__*/__webpack_require__.n(Filter_module); 1320// EXTERNAL MODULE: ./src/components/ProductListingPage/RefinementFilter.tsx 1321var RefinementFilter = __webpack_require__(913362); 1322;// CONCATENATED MODULE: ./src/components/ProductListingPage/MobileFilter.tsx 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355const { TABLET_W } = breakpoints.BREAKPOINTS; 1356const MobileFilter = (param)=>{ 1357 let { filterOptionList = [] } = param; 1358 var _options_find; 1359 const { regionId } = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* ZipCodeSelector */.pz); 1360 const { currentRefinement, options, refine } = (0,useSortBy/* useSortBy */.s)((0,AlgoliaConstants/* getSortByOptions */.yC)(regionId)); 1361 const { items: activeRefinements } = (0,useCurrentRefinements/* useCurrentRefinements */.b)(); 1362 const { refine: clearAll } = (0,useClearRefinements/* useClearRefinements */.n)(); 1363 (0,useRouteChange.useRouteChange)({ 1364 callback: clearAll 1365 }); 1366 const [drawerKey, setDrawerKey] = (0,react.useState)(0); 1367 const [showDrawer, setShowDrawer] = (0,react.useState)(false); 1368 (0,react.useEffect)(()=>{ 1369 if (showDrawer) { 1370 setDrawerKey((prev)=>
1370prev + 1); 1371 } 1372 }, [ 1373 showDrawer 1374 ]); 1375 const [orderBy, setOrderBy] = (0,react.useState)(((_options_find = options.find((option)=>option.value === currentRefinement)) === null || _options_find === void 0 ? void 0 : _options_find.value) || ""); 1376 const selectedOrderBy = options.find((option)=>option.value === orderBy); 1377 const { width = 1000 } = (0,useWindowDimensions/* default */.Z)(); 1378 const handleOrderByChange = (event)=>{ 1379 setOrderBy(event); 1380 }; 1381 const onClose = ()=>{ 1382 setShowDrawer(false); 1383 }; 1384 const onApply = ()=>{ 1385 refine(orderBy); 1386 onClose(); 1387 }; 1388 const onClearAll = ()=>{ 1389 clearAll(); 1390 setOrderBy(""); 1391 }; 1392 if (width > TABLET_W) { 1393 return null; 1394 } 1395 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { 1396 children: [ 1397 /*#__PURE__*/ (0,jsx_runtime.jsxs)(Button/* default */.Z, { 1398 variant: "outlined", 1399 startIcon: /*#__PURE__*/ (0,jsx_runtime.jsx)(Tune/* default */.Z, {}), 1400 sx: { 1401 borderRadius: 20, 1402 color: "#3D3935", 1403 borderColor: "#3D3935", 1404 "&:hover": { 1405 borderColor: "#3D3935", 1406 backgroundColor: "#F5F5F5" 1407 } 1408 }, 1409 onClick: ()=>setShowDrawer(true), 1410 className: (Filter_module_default()).buttonFilter, 1411 children: [ 1412 "Filter", 1413 !!activeRefinements.length && /*#__PURE__*/ (0,jsx_runtime.jsx)(Avatar/* default */.Z, { 1414 sx: { 1415 bgcolor: "black", 1416 color: "white", 1417 width: 20, 1418 height: 20, 1419 marginLeft: 1, 1420 "& .MuiAvatar-root": { 1421 fontSize: 8 1422 } 1423 }, 1424 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 1425 className: (Filter_module_default()).numberOfFilter, 1426 children: activeRefinements.length 1427 }) 1428 }) 1429 ] 1430 }), 1431 /*#__PURE__*/ (0,jsx_runtime.jsxs)(Drawer/* default */.ZP, { 1432 anchor: "bottom", 1433 open: showDrawer, 1434 onClose: onClose, 1435 ModalProps: { 1436 keepMounted: true 1437 }, 1438 PaperProps: { 1439 sx: { 1440 top: 64, 1441 borderRadius: "20px 20px 0 0", 1442 overflow: "hidden" 1443 } 1444 }, 1445 children: [ 1446 /*#__PURE__*/ (0,jsx_runtime.jsx)(Box/* default */.Z, { 1447 paddingX: { 1448 xs: 2 1449 }, 1450 paddingY: 1, 1451 children: /*#__PURE__*/ (0,jsx_runtime.jsxs)(Grid/* default */.ZP, { 1452 container: true, 1453 justifyContent: "space-between", 1454 alignItems: "center", 1455 children: [ 1456 /*#__PURE__*/ (0,jsx_runtime.jsx)(Grid/* default */.ZP, { 1457 item: true, 1458 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(IconButton/* default */.Z, { 1459 edge: "start", 1460 sx: { 1461 color: "#000" 1462 }, 1463 onClick: onClose, 1464 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(Close["default"], {}) 1465 }) 1466 }), 1467 /*#__PURE__*/ (0,jsx_runtime.jsx)(Grid/* default */.ZP, { 1468 item: true, 1469 children: /*#__PURE__*/ (0,jsx_runtime.jsxs)(Box/* default */.Z, { 1470 sx: { 1471 display: "flex", 1472 alignItems: "center", 1473 color: "#000" 1474 }, 1475 children: [ 1476 /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 1477 className: (Filter_module_default()).title, 1478 children: "Filter" 1479 }), 1480 !!activeRefinements.length && /*#__PURE__*/ (0,jsx_runtime.jsx)(Avatar/* default */.Z, { 1481 sx: { 1482 bgcolor: "black", 1483 color: "white", 1484 width: 20, 1485 height: 20, 1486 marginLeft: 1, 1487 "& .MuiAvatar-root": { 1488 fontSize: 8 1489 } 1490 }, 1491 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 1492 className: (Filter_module_default()).numberOfFilter, 1493 children: activeRefinements.length 1494 }) 1495 }) 1496 ] 1497 }) 1498 }), 1499 /*#__PURE__*/ (0,jsx_runtime.jsx)(Grid/* default */.ZP, { 1500 item: true, 1501 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 1502 color: "primary", 1503 className: (Filter_module_default()).clearAll, 1504 onClick: onClearAll, 1505 children: "Clear All" 1506 }) 1507 }) 1508 ] 1509 }) 1510 }), 1511 /*#__PURE__*/ (0,jsx_runtime.jsx)(Box/* default */.Z, { 1512 sx: { 1513 overflow: "auto" 1514 }, 1515 paddingX: { 1516 xs: 2 1517 }, 1518 children: /*#__PURE__*/ (0,jsx_runtime.jsxs)(List/* default */.Z, { 1519 children: [ 1520 /*#__PURE__*/ (0,jsx_runtime.jsxs)(Accordion/* default */.Z, { 1521 elevation: 0, 1522 disableGutters: true, 1523 children: [ 1524 /*#__PURE__*/ (0,jsx_runtime.jsx)(AccordionSummary/* default */.Z, { 1525 expandIcon: /*#__PURE__*/ (0,jsx_runtime.jsx)(ExpandMore["default"], {}), 1526 sx: { 1527 padding: 0 1528 }, 1529 children: /*#__PURE__*/ (0,jsx_runtime.jsxs)(Grid/* default */.ZP, { 1530 container: true, 1531 justifyContent: "space-between", 1532 flexDirection: "column", 1533 children: [ 1534 /*#__PURE__*/ (0,jsx_runtime.jsx)(Grid/* default */.ZP, { 1535 item: true, 1536 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 1537 className: (Filter_module_default()).title, 1538 children: "Sort By" 1539 }) 1540 }), 1541 /*#__PURE__*/ (0,jsx_runtime.jsx)(Grid/* default */.ZP, { 1542 item: true, 1543 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("span", { 1544 className: (Filter_module_default()).selectedSortBy, 1545 children: selectedOrderBy === null || selectedOrderBy === void 0 ? void 0 : selectedOrderBy.label 1546 }) 1547 }) 1548 ] 1549 }) 1550 }), 1551 /*#__PURE__*/ (0,jsx_runtime.jsx)(AccordionDetail
1551s/* default */.Z, { 1552 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(FormControl/* default */.Z, { 1553 component: "fieldset", 1554 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(RadioGroup/* default */.Z, { 1555 "aria-label": "sort-by", 1556 name: "sort-by", 1557 value: orderBy, 1558 onChange: (e)=>handleOrderByChange(e.target.value), 1559 defaultValue: currentRefinement, 1560 children: options.filter((option)=>!(option.label === "Sort By")).map((option)=>/*#__PURE__*/ (0,jsx_runtime.jsx)(FormControlLabel/* default */.Z, { 1561 value: option.value, 1562 sx: { 1563 "& .MuiFormControlLabel-label": { 1564 fontSize: "14px", 1565 fontWeight: 400, 1566 color: "#3D3935", 1567 fontFamily: fonts/* CSS_VAR_FONT_MONTSERRAT */.Y 1568 } 1569 }, 1570 control: /*#__PURE__*/ (0,jsx_runtime.jsx)(Radio/* default */.Z, { 1571 sx: { 1572 "& .MuiSvgIcon-root": { 1573 fontSize: 18 1574 }, 1575 "&.Mui-checked": { 1576 color: "#000" 1577 } 1578 } 1579 }), 1580 label: option.label 1581 }, option.label)) 1582 }) 1583 }) 1584 }) 1585 ] 1586 }, drawerKey), 1587 /*#__PURE__*/ (0,jsx_runtime.jsx)("h4", { 1588 className: (0,classNames.clsx)((Filter_module_default()).title, (Filter_module_default()).filterTItle), 1589 children: "Filters" 1590 }), 1591 /*#__PURE__*/ (0,jsx_runtime.jsx)(Divider/* default */.Z, { 1592 sx: { 1593 margin: "10px 0 10px 0" 1594 } 1595 }), 1596 filterOptionList.map((param, index)=>{ 1597 let { key } = param; 1598 return /*#__PURE__*/ (0,jsx_runtime.jsx)(ActiveFilterChip, { 1599 filterValue: key 1600 }, "".concat(key, "-").concat(index)); 1601 }), 1602 filterOptionList.map((param, index)=>{ 1603 let { key, value } = param; 1604 return /*#__PURE__*/ (0,jsx_runtime.jsx)(RefinementFilter/* default */.Z, { 1605 filterText: value, 1606 filterValue: key 1607 }, "".concat(key, "-").concat(index)); 1608 }) 1609 ] 1610 }) 1611 }), 1612 /*#__PURE__*/ (0,jsx_runtime.jsx)(Grid/* default */.ZP, { 1613 item: true, 1614 paddingY: 1, 1615 sx: { 1616 textAlign: "center", 1617 marginTop: "auto" 1618 }, 1619 boxShadow: 3, 1620 children: /*#__PURE__*/ (0,jsx_runtime.jsx)("button", { 1621 className: (0,classNames.clsx)("action", (Filter_module_default()).applyFilterButton), 1622 onClick: onApply, 1623 children: "Apply" 1624 }) 1625 }) 1626 ] 1627 }) 1628 ] 1629 }); 1630}; 1631 1632 1633/***/ }), 1634 1635/***/ 379787: 1636/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1637 1638"use strict"; 1639/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1640/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_atoms_ProductTile_ProductTile__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(573360); 1641/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_components_atoms_ProductTile_ProductTile__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_components_atoms_ProductTile_ProductTile__WEBPACK_IMPORTED_MODULE_1__); 1642/* harmony import */ var _Components_account_hooks_useCustomerOrders__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(896212); 1643/* harmony import */ var _Lib_utils_productUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(183498); 1644/* harmony import */ var _Lib_utils_useStructureAlgoliaData__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(675333); 1645 1646 1647 1648 1649 1650const ProductTileWrapper = (param)=>{ 1651 let { product, onConversion = ()=>{} } = param; 1652 const formattedProduct = (0,_Lib_utils_useStructureAlgoliaData__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)(product); 1653 const { purchasedSkusByDate } = (0,_Components_account_hooks_useCustomerOrders__WEBPACK_IMPORTED_MODULE_2__/* .useCustomerOrders */ .P)(); 1654 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_wildfork_commercetools_core_ui_dist_src_components_atoms_ProductTile_ProductTile__WEBPACK_IMPORTED_MODULE_1__.ProductTile, { 1655 product: formattedProduct, 1656 swipe: true, 1657 previouslyPurchasedDate: (0,_Lib_utils_productUtils__WEBPACK_IMPORTED_MODULE_3__/* .getFormattedPurchaseDate */ .d)(product.
1657sku, purchasedSkusByDate), 1658 onConversion: onConversion 1659 }); 1660}; 1661/* harmony default export */ __webpack_exports__.Z = (ProductTileWrapper); 1662 1663 1664/***/ }), 1665 1666/***/ 913362: 1667/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1668 1669"use strict"; 1670/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1671/* harmony import */ var _mui_icons_material_ExpandMore__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(823508); 1672/* harmony import */ var _mui_material_Accordion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(86532); 1673/* harmony import */ var _mui_material_AccordionDetails__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(963083); 1674/* harmony import */ var _mui_material_AccordionSummary__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(361250); 1675/* harmony import */ var _mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(470459); 1676/* harmony import */ var _mui_material_List__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(618843); 1677/* harmony import */ var _mui_material_ListItemButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(598619); 1678/* harmony import */ var _mui_material_ListItemIcon__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(48885); 1679/* harmony import */ var _mui_material_ListItemText__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(459334); 1680/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_constants_countries__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(264560); 1681/* harmony import */ var react_instantsearch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(441281); 1682/* harmony import */ var _Components_search_AlgoliaConstants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(858885); 1683/* harmony import */ var _Lib_fonts__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(623376); 1684/* harmony import */ var _Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(538933); 1685/* harmony import */ var _Filter_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(205498); 1686/* harmony import */ var _Filter_module_scss__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_Filter_module_scss__WEBPACK_IMPORTED_MODULE_8__); 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703const RefinementFilter = (param)=>{ 1704 let { filterText, filterValue } = param; 1705 const { items, refine } = (0,react_instantsearch__WEBPACK_IMPORTED_MODULE_4__/* .useRefinementList */ .c)({ 1706 attribute: filterValue, 1707 limit: 100, 1708 operator: "or", 1709 showMore: true, 1710 showMoreLimit: 1000, 1711 sortBy: [ 1712 "name:asc" 1713 ], 1714 transformItems: filterValue === _Components_search_AlgoliaConstants__WEBPACK_IMPORTED_MODULE_2__/* .FACETS */ .Xr.COUNTRY_OF_ORIGIN.VALUE ? transformCountryItems : undefined 1715 }); 1716 if (!items.length) return null; 1717 const onFilterClick = (item)=>{ 1718 const { isRefined = false, value = "" } = item || {}; 1719 if (!isRefined) { 1720 (0,_Lib_tracking_trackingEvents__WEBPACK_IMPORTED_MODULE_3__/* .GTMCollectionsFilter */ .Ch)(filterText, value); 1721 } 1722 refine(value); 1723 }; 1724 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material_Accordion__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, { 1725 disableGutters: true, 1726 elevation: 0, 1727 sx: { 1728 "&.MuiAccordion-root:before": { 1729 display: "none" 1730 } 1731 }, 1732 children: [ 1733 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_AccordionSummary__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, { 1734 expandIcon: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_icons_material_ExpandMore__WEBPACK_IMPORTED_MODULE_7__["default"], {}), 1735 sx: { 1736 padding: 0 1737 }, 1738 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("span", { 1739 className: (_Filter_module_scss__WEBPACK_IMPORTED_MODULE_8___default().facetTitle), 1740 children: filterText 1741 }) 1742 }), 1743 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_AccordionDetail
1743s__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Z, { 1744 sx: { 1745 "&.MuiAccordionDetails-root": { 1746 padding: 0 1747 } 1748 }, 1749 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_List__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Z, { 1750 sx: { 1751 "&.MuiList-root": { 1752 padding: 0 1753 } 1754 }, 1755 children: items.map((item, index)=>{ 1756 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(_mui_material_ListItemButton__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, { 1757 onClick: ()=>onFilterClick(item), 1758 sx: { 1759 "&.MuiListItemButton-root": { 1760 padding: "0" 1761 } 1762 }, 1763 children: [ 1764 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_ListItemIcon__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, { 1765 sx: { 1766 "&.MuiListItemIcon-root": { 1767 minWidth: "auto" 1768 } 1769 }, 1770 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_13__/* ["default"] */ .Z, { 1771 edge: "start", 1772 sx: { 1773 "& .MuiSvgIcon-root": { 1774 fontSize: 18 1775 }, 1776 "&.Mui-checked": { 1777 color: "#000" 1778 } 1779 }, 1780 value: item.value, 1781 onChange: ()=>refine(item.value), 1782 checked: item === null || item === void 0 ? void 0 : item.isRefined, 1783 onClick: ()=>refine(item.value) 1784 }) 1785 }), 1786 /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_ListItemText__WEBPACK_IMPORTED_MODULE_14__/* ["default"] */ .Z, { 1787 primary: item.label.toLowerCase(), 1788 sx: { 1789 "&.MuiListItemText-root span": { 1790 fontSize: "14px", 1791 fontWeight: 400, 1792 color: "#3D3935", 1793 fontFamily: _Lib_fonts__WEBPACK_IMPORTED_MODULE_15__/* .CSS_VAR_FONT_MONTSERRAT */ .Y, 1794 cursor: "pointer", 1795 textTransform: "capitalize" 1796 } 1797 } 1798 }) 1799 ] 1800 }, "".concat(item.value, "-").concat(index)); 1801 }) 1802 }) 1803 }) 1804 ] 1805 }); 1806}; 1807/* harmony default export */ __webpack_exports__.Z = (RefinementFilter); 1808const transformCountryItems = (items)=>{ 1809 return items.map((item)=>{ 1810 var _COUNTRIES_LOOKUP_US; 1811 return { 1812 ...item, 1813 label: ((_COUNTRIES_LOOKUP_US = _wildfork_commercetools_core_ui_dist_src_lib_constants_countries__WEBPACK_IMPORTED_MODULE_1__.COUNTRIES_LOOKUP.US) === null || _COUNTRIES_LOOKUP_US === void 0 ? void 0 : _COUNTRIES_LOOKUP_US[item.value]) || item.label 1814 }; 1815 }); 1816}; 1817 1818 1819/***/ }), 1820 1821/***/ 855486: 1822/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1823 1824"use strict"; 1825/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1826/* harmony export */ x: function() { return /* binding */ SortByIndex; } 1827/* harmony export */ }); 1828/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1829/* harmony import */ var _mui_material_Box__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(999226); 1830/* harmony import */ var _mui_material_FormControl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(453640); 1831/* harmony import */ var _mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(863931); 1832/* harmony import */ var _mui_material_Select__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(769587); 1833/* harmony import */ var react_instantsearch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(96890); 1834/* harmony import */ var _Components_search_AlgoliaConstants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(858885); 1835/* harmony import */ var _Lib_fonts__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(623376); 1836/* harmony import */ var _Lib_store_hooks__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(267097); 1837/* harmony import */ var _Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(480326); 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848const SortByIndex = ()=>{ 1849 const { regionId } = (0,_Lib_store_hooks__WEBPACK_IMPORTED_MODULE_2__/* .useAppSelector */ .C)(_Lib_store_zipcodeSlice__WEBPACK_IMPORTED_MODULE_3__/* .ZipCodeSelector */ .pz); 1850 const { currentRefinement, options, refine } = (0,react_instantsearch__WEBPACK_IMPORTED_MODULE_4__/* .useSortBy */ .s)((0,_Components_search_AlgoliaConstants__WEBPACK_IMPORTED_MODULE_1__/* .getSortByOptions */ .yC)(regionId)); 1851 const activeClass = (option)=>{ 1852 if (option.value === currentRefinement) { 1853 return "sort-component__option--active"; 1854 } 1855 return ""; 1856 }; 1857 const handleSelectChange = (event)=>{ 1858 refine(event.target.value); 1859 }; 1860 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1861 className: "sort-component", 1862 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Box__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, { 1863 sx: { 1864 minWidth: 120 1865 }, 1866 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_FormControl__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, { 1867 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_Select__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, { 1868 labelId: "sort-by-label", 1869 id: "sort-by-select", 1870 label: "Sort By", 1871 style: { 1872 color: "#d14124" 1873 }, 1874 className: "sort-component__select", 1875 disableUnderline: true, 1876 variant: "standard", 1877 value: currentRefinement, 1878 onChange: handleSelectChange, 1879 defaultValue: "Most Popular", 1880 displayEmpty: true, 1881 renderValue: ()=>/*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h5", { 1882 className: "sort-by__title", 1883 children: "Sort By" 1884 }), 1885 children: options.filter((option)=>!(option.label === "Sort By")).map((option)=>{ 1886 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(_mui_material_MenuItem__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, { 1887 className: "sort-component__option ".concat(activeClass(option)), 1888 value: option.value, 1889 style: { 1890 backgroundColor: "inherit", 1891 fontWeight: option.value === currentRefinement ? "500" : "400", 1892 fontFamily: _Lib_fonts__WEBPACK_IMPORTED_MODULE_9__/* .CSS_VAR_FONT_MONTSERRAT */ .Y 1893 }, 1894 children: option.label 1895 }, option.label); 1896 }) 1897 }) 1898 }) 1899 }) 1900 }); 1901}; 1902 1903 1904/***/ }), 1905 1906/***/ 597318: 1907/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1908 1909"use strict"; 1910/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1911/* harmony export */ E: function() { return /* binding */ GoToTopIcon; } 1912/* harmony export */ }); 1913/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(785893); 1914/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(667294); 1915 1916 1917const GoToTopIcon = (param)=>{ 1918 let { goToTopMediaPod, productTilesRef } = param; 1919 var _goToTopMediaPod_fields_asset, _goToTopMediaPod_fields; 1920 const [isVisible, setIsVisible] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false); 1921 var _goToTopMediaPod_fields_asset_fields_file_url; 1922 const url = (_goToTopMediaPod_fields_asset_fields_file_url = goToTopMediaPod === null || goToTopMediaPod === void 0 ? void 0 : (_goToTopMediaPod_fields = goToTopMediaPod.fields) === null || _goToTopMediaPod_fields === void 0 ? void 0 : (_goToTopMediaPod_fields_asset = _goToTopMediaPod_fields.asset) === null || _goToTopMediaPod_fields_asset === void 0 ? void 0 : _goToTopMediaPod_fields_asset.fields.file.url) !== null && _goToTopMediaPod_fields_asset_fields_file_url !== void 0 ? _goToTopMediaPod_fields_asset_fields_file_url : ""; 1923 const goToTop = ()=>{ 1924 window.scrollTo(0, 0); 1925 }; 1926 (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{ 1927 const handleScroll = ()=>{ 1928 if (!productTilesRef || !productTilesRef.current) return; 1929 const rect = productTilesRef.current.getBoundingClientRect(); 1930 setIsVisible(!(rect.top > 0)); 1931 }; 1932 window.addEventListener("scroll", handleScroll); 1933 return ()=>{ 1934 window.removeEventListener("scroll", handleScroll); 1935 }; 1936 }, [ 1937 productTilesRef 1938 ]); 1939 if (!isVisible) return null; 1940 return /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("div", { 1941 className: "go-to-top__container", 1942 children: /*#__PURE__*/ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("button", { 1943 className: "go-to-top__button", 1944 style: { 1945 background: "url(".concat(url, ")"), 1946 backgroundSize: "cover", 1947 border: "none", 1948 width: "70px", 1949 height: "100%", 1950 cursor: "pointer" 1951 }, 1952 onClick: goToTop 1953 }) 1954 }); 1955}; 1956 1957 1958/***/ }), 1959 1960/***/ 858885: 1961/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 1962 1963"use strict"; 1964/* harmony export */ __webpack_require__.d(__webpack_exports__, { 1965/* harmony export */ E2: function() { return /* binding */ algoliaSearchClient; }, 1966/* harmony export */ Xr: function() { return /* binding */ FACETS; }, 1967/* harmony export */ yC: function() { return /* binding */ getSortByOptions; } 1968/* harmony export */ }); 1969/* unused harmony exports querySuggestionIndex, filterByOptions */ 1970/* harmony import */ var algoliasearch_lite__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(70290); 1971/* harmony import */ var algoliasearch_lite__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(algoliasearch_lite__WEBPACK_IMPORTED_MODULE_1__); 1972/* harmony import */ var _Lib_configs_environment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(208891); 1973 1974 1975const algoliaSearchClient = algoliasearch_lite__WEBPACK_IMPORTED_MODULE_1___default()(_Lib_configs_environment__WEBPACK_IMPORTED_MODULE_0__.nextAppEnv.algolia.appId, _Lib_configs_environment__WEBPACK_IMPORTED_MODULE_0__.nextAppEnv.algolia.apiKey); 1976const getSortByOptions = (regionId)=>{ 1977 const { algolia: { index, indexRegionalPrice, indexProductBestSeller, indexProductNewArrival } } = _Lib_configs_environment__WEBPACK_IMPORTED_MODULE_0__.nextAppEnv; 1978 const defaultRegionId = "default"; 1979 const regionSpecificId = regionId || defaultRegionId; 1980 const pricePrefix = "".concat(indexRegionalPrice, "_").concat(regionSpecificId, "_"); 1981 const priceIndex = { 1982 LH: "".concat(pricePrefix, "LH"), 1983 HL: "".concat(pricePrefix, "HL") 1984 }; 1985 const items = [ 1986 { 1987 value: index, 1988 label: "Sort By" 1989 }, 1990 { 1991 value: indexProductBestSeller, 1992 label: "Best Sellers" 1993 }, 1994 { 1995 value: indexProductNewArrival, 1996 label: "New Arrivals" 1997 }, 1998 { 1999 value: priceIndex.LH, 2000 label: "Price (Low to High)" 2001 }, 2002 { 2003 value: priceIndex.HL, 2004 label: "Price (High to Low)" 2005 } 2006 ]; 2007 return { 2008 items 2009 }; 2010}; 2011const querySuggestionIndex = "".concat(_Lib_configs_environment__WEBPACK_IMPORTED_MODULE_0__.nextAppEnv.algolia.indexSuggestions); 2012const filterByOptions = (/* unused pure expression or super */ null && ([ 2013 "BADGE", 2014 "BREED", 2015 "COURSE", 2016 "CUT", 2017 "GRADE", 2018 "GLOBAL CATEGORY", 2019 "OCCASION", 2020 "SPECIES", 2021 "CUSTOMERPROFILE", 2022 "FROZENDRY" 2023])); 2024const FACETS = { 2025 COUNTRY_OF_ORIGIN: { 2026 VALUE: "countryOfOrigin" 2027 } 2028}; 2029 2030 2031/***/ }), 2032 2033/***/ 623376: 2034/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2035 2036"use strict"; 2037/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2038/* harmony export */ Y: function() { return /* binding */ CSS_VAR_FONT_MONTSERRAT; }, 2039/* harmony export */ pl: function() { return /* binding */ CSS_VAR_FONT_OSWALD; } 2040/* harmony export */ }); 2041 2042 2043const CSS_VAR_FONT_OSWALD = "var(--font-oswald)"; 2044const CSS_VAR_FONT_MONTSERRAT = "var(--font-montserrat)"; 2045 2046 2047 2048 2049/***/ }), 2050 2051/***/ 619443: 2052/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2053 2054"use strict"; 2055/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2056/* harmony export */ r: function() { return /* binding */ useScrollTrigger; } 2057/* harmony export */ }); 2058/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 2059 2060const useScrollTrigger = (param)=>{ 2061 let { ref, position, callbackFn, debounceTime = 200, condition = true } = param; 2062 const timeoutRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null); 2063 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{ 2064 const handleScroll = ()=>{ 2065 if (!condition) return; 2066 if (timeoutRef && timeoutRef.current) { 2067 clearTimeout(timeoutRef.current); 2068 } 2069 timeoutRef.current = setTimeout(()=>{ 2070 if (!ref.current) return; 2071 const coords = ref.current.getBoundingClientRect()[position] + window.scrollY; 2072 const currentScrollPosition = window.scrollY + window.innerHeight; 2073 if (currentScrollPosition >= coords) { 2074 callbackFn(); 2075 } 2076 }, debounceTime); 2077 }; 2078 window.addEventListener("scroll", handleScroll); 2079 return ()=>{ 2080 window.removeEventListener("scroll", handleScroll); 2081 if (timeoutRef.current) { 2082 clearTimeout(timeoutRef.current); 2083 } 2084 }; 2085 }, [ 2086 ref, 2087 position, 2088 callbackFn, 2089 debounceTime, 2090 condition 2091 ]); 2092}; 2093/* harmony default export */ __webpack_exports__.Z = (useScrollTrigger); 2094 2095
2096/***/ }), 2097 2098/***/ 845623: 2099/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2100 2101"use strict"; 2102/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(667294); 2103/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23279); 2104/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_1__); 2105 2106 2107const DEBOUNCE_TIME = 300; 2108const useWindowDimensions = ()=>{ 2109 const [windowDimensions, setWindowDimensions] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({ 2110 width: undefined, 2111 height: undefined 2112 }); 2113 (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{ 2114 const handleResize = lodash_debounce__WEBPACK_IMPORTED_MODULE_1___default()(()=>{ 2115 setWindowDimensions({ 2116 width: window.innerWidth, 2117 height: window.innerHeight 2118 }); 2119 }, DEBOUNCE_TIME); 2120 handleResize(); 2121 window.addEventListener("resize", handleResize); 2122 return ()=>window.removeEventListener("resize", handleResize); 2123 }, []); 2124 return windowDimensions; 2125}; 2126/* harmony default export */ __webpack_exports__.Z = (useWindowDimensions); 2127 2128 2129/***/ }), 2130 2131/***/ 183498: 2132/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2133 2134"use strict"; 2135/* harmony export */ __webpack_require__.d(__webpack_exports__, { 2136/* harmony export */ d: function() { return /* binding */ getFormattedPurchaseDate; } 2137/* harmony export */ }); 2138/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(940024); 2139/* harmony import */ var _wildfork_commercetools_core_ui_dist_src_lib_utils_time__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wildfork_commercetools_core_ui_dist_src_lib_utils_time__WEBPACK_IMPORTED_MODULE_0__); 2140 2141const getFormattedPurchaseDate = (sku, purchasedSkusByDate)=>{ 2142 var _purchasedSkusByDate_find; 2143 const rawDate = (_purchasedSkusByDate_find = purchasedSkusByDate.find((e)=>e.sku === sku)) === null || _purchasedSkusByDate_find === void 0 ? void 0 : _purchasedSkusByDate_find.date; 2144 return rawDate && (0,_wildfork_commercetools_core_ui_dist_src_lib_utils_time__WEBPACK_IMPORTED_MODULE_0__.formatDate)(rawDate, { 2145 year: "numeric", 2146 month: "short", 2147 day: "numeric" 2148 }); 2149}; 2150 2151 2152/***/ }), 2153 2154/***/ 18995: 2155/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { 2156 2157"use strict";
2158// ESM COMPAT FLAG 2159__webpack_require__.r(__webpack_exports__); 2160 2161// EXPORTS 2162__webpack_require__.d(__webpack_exports__, { 2163 __N_SSG: function() { return /* binding */ __N_SSG; }, 2164 "default": function() { return /* binding */ _categorySlug_; } 2165}); 2166 2167// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js 2168var jsx_runtime = __webpack_require__(785893); 2169// EXTERNAL MODULE: ./node_modules/react/index.js 2170var react = __webpack_require__(667294); 2171// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/corporate-gifts/Popup/index.js 2172var Popup = __webpack_require__(908410); 2173var Popup_default = /*#__PURE__*/__webpack_require__.n(Popup); 2174// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/corporate-gift.js 2175var corporate_gift = __webpack_require__(995268); 2176// EXTERNAL MODULE: ./node_modules/lodash/debounce.js 2177var debounce = __webpack_require__(23279); 2178var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce); 2179// EXTERNAL MODULE: ./node_modules/next/dynamic.js 2180var dynamic = __webpack_require__(505152); 2181var dynamic_default = /*#__PURE__*/__webpack_require__.n(dynamic); 2182// EXTERNAL MODULE: ./node_modules/next/router.js 2183var next_router = __webpack_require__(811163); 2184// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/components/InstantSearch.js + 2 modules 2185var InstantSearch = __webpack_require__(809935); 2186// EXTERNAL MODULE: ./src/components/layout/AppPage.tsx + 10 modules 2187var AppPage = __webpack_require__(422832); 2188// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/atoms/Icon/Icon.js 2189var Icon = __webpack_require__(882074); 2190// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/hooks/useHomePath.js 2191var useHomePath = __webpack_require__(160073); 2192// EXTERNAL MODULE: ./node_modules/next/link.js 2193var next_link = __webpack_require__(741664); 2194var link_default = /*#__PURE__*/__webpack_require__.n(next_link); 2195// EXTERNAL MODULE: ./src/components/providers/context/core-ui/EnvironmentContextProvider.tsx 2196var EnvironmentContextProvider = __webpack_require__(630807); 2197;// CONCATENATED MODULE: ./src/components/ProductListingPage/components/PlpBreadcrumbs.tsx 2198 2199 2200 2201 2202 2203const Breadcrumb = (param)=>{ 2204 let { name, slug } = param; 2205 if (!name) return null; 2206 return /*#__PURE__*/ (0,jsx_runtime.jsx)((link_default()), { 2207 href: "/collections/".concat(slug), 2208 children: name.toUpperCase() 2209 }); 2210}; 2211const PlpBreadcrumbs = (param)=>{ 2212 let { categoryNameData: { categoryName, parentCategoryName, categorySlug, parentCategorySlug } } = param; 2213 const [homePath] = (0,useHomePath.useHomePath)(); 2214 const category = { 2215 name: categoryName, 2216 slug: categorySlug 2217 }; 2218 const parent = { 2219 name: parentCategoryName, 2220 slug: parentCategorySlug 2221 }; 2222 const breadcrumbNames = [ 2223 parent, 2224 category 2225 ]; 2226 return /*#__PURE__*/ (0,jsx_runtime.jsx)(EnvironmentContextProvider/* EnvironmentContextContextProvider */.U, { 2227 children: /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2228 className: "category-breadcrumbs", 2229 children: [ 2230 /*#__PURE__*/ (0,jsx_runtime.jsx)((link_default()), { 2231 href: homePath, 2232 children: "HOME" 2233 }), 2234 breadcrumbNames.map((name, index)=>{ 2235 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { 2236 children: [ 2237 !!breadcrumbNames[index++].name && /*#__PURE__*/ (0,jsx_runtime.jsx)(Icon.Icon, { 2238 iconName: "arrow-right" 2239 }), 2240 /*#__PURE__*/ (0,jsx_runtime.jsx)(Breadcrumb, { 2241 name: name.name, 2242 slug: name.slug 2243 }, name.name) 2244 ] 2245 }); 2246 }) 2247 ] 2248 }) 2249 }); 2250}; 2251/* harmony default export */ var components_PlpBreadcrumbs = (PlpBreadcrumbs); 2252 2253// EXTERNAL MODULE: ./src/components/ProductListingPage/Configure.tsx 2254var Configure = __webpack_require__(514421); 2255// EXTERNAL MODULE: ./node_modules/@mui/material/CircularProgress/CircularProgress.js 2256var CircularProgress = __webpack_require__(466489); 2257// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/
2257atoms/ProductTile/ProductTile.js 2258var ProductTile = __webpack_require__(573360); 2259// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/atoms/VerticalBannerTile/VerticalBannerTile.js 2260var VerticalBannerTile = __webpack_require__(649900); 2261// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/page-sections/BannerCollection/index.js 2262var BannerCollection = __webpack_require__(457967); 2263// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/breakpoints.js 2264var breakpoints = __webpack_require__(298222); 2265// EXTERNAL MODULE: ./node_modules/clsx/dist/clsx.mjs 2266var clsx = __webpack_require__(490512); 2267// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useInfiniteHits.js 2268var useInfiniteHits = __webpack_require__(192694); 2269// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/connectors/useHitsPerPage.js 2270var useHitsPerPage = __webpack_require__(727603); 2271// EXTERNAL MODULE: ./src/components/account/hooks/useCustomerOrders.ts 2272var useCustomerOrders = __webpack_require__(896212); 2273// EXTERNAL MODULE: ./src/components/ProductListingPage/SortByIndex.tsx 2274var SortByIndex = __webpack_require__(855486); 2275// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/utils/Logger.js 2276var Logger = __webpack_require__(101914); 2277var Logger_default = /*#__PURE__*/__webpack_require__.n(Logger); 2278// EXTERNAL MODULE: ./src/lib/utils/commercetoolsUtils.ts 2279var commercetoolsUtils = __webpack_require__(575602); 2280// EXTERNAL MODULE: ./src/lib/utils/typeUtils.ts 2281var typeUtils = __webpack_require__(726373); 2282;// CONCATENATED MODULE: ./src/lib/hooks/useGetCTProductsBySkus.ts 2283 2284 2285 2286 2287const useGetCTProductsBySkus = (skus)=>{ 2288 const [ctProducts, setCTProducts] = (0,react.useState)([]); 2289 (0,react.useEffect)(()=>{ 2290 let shouldUpdate = true; 2291 const getCTProductsBySKU = async ()=>{ 2292 try { 2293 const promises = await Promise.allSettled(skus.map((sku)=>(0,commercetoolsUtils/* getCTProductWithImagesBySKU */.Ox)(sku))); 2294 const successfulPromises = promises.filter(typeUtils/* isFulfilled */.KD).map((promise)=>promise.value).filter(typeUtils/* isCTProductWithImages */.I1); 2295 if (!shouldUpdate) return null; 2296 setCTProducts((prevProducts)=>[ 2297 ...prevProducts, 2298 ...successfulPromises 2299 ]); 2300 } catch (error) { 2301 Logger_default().error("Couldn't fetch products by SKU", error); 2302 } 2303 }; 2304 skus.length && getCTProductsBySKU(); 2305 return ()=>{ 2306 shouldUpdate = false; 2307 setCTProducts([]); 2308 }; 2309 }, [ 2310 skus 2311 ]); 2312 return ctProducts; 2313}; 2314 2315// EXTERNAL MODULE: ./src/lib/hooks/useScrollTrigger.ts 2316var useScrollTrigger = __webpack_require__(619443); 2317// EXTERNAL MODULE: ./src/lib/hooks/useStructureProductData/useStructureProductData.ts + 3 modules 2318var useStructureProductData = __webpack_require__(223966); 2319// EXTERNAL MODULE: ./src/lib/hooks/useWindowDimensions.tsx 2320var useWindowDimensions = __webpack_require__(845623); 2321// EXTERNAL MODULE: ./src/lib/hooks/useZipCode.ts 2322var useZipCode = __webpack_require__(455489); 2323// EXTERNAL MODULE: ./src/lib/store/hooks.ts 2324var hooks = __webpack_require__(267097); 2325// EXTERNAL MODULE: ./src/lib/store/zipcodeSlice.tsx 2326var zipcodeSlice = __webpack_require__(480326); 2327// EXTERNAL MODULE: ./src/lib/utils/productResultsUtils.ts 2328var productResultsUtils = __webpack_require__(877377); 2329// EXTERNAL MODULE: ./src/lib/utils/productUtils.ts 2330var productUtils = __webpack_require__(183498); 2331// EXTERNAL MODULE: ./src/components/ProductListingPage/components/GoTopIcon.tsx 2332var GoTopIcon = __webpack_require__(597318); 2333// EXTERNAL MODULE: ./src/components/ProductListingPage/FilterRenderer.tsx + 1 modules 2334var FilterRenderer = __webpack_require__(892270); 2335// EXTERNAL MODULE: ./src/components/ProductListingPage/MobileFilter.tsx + 1 modules 2336var MobileFilter = __webpack_require__(738222); 2337;// CONCATENATED MODULE: ./src/components/ProductListingPage/PlpTileRendererCT.tsx 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364const { TABLET_W } = breakpoints.BREAKPOINTS; 2365var BannerDisplayType; 2366(function(BannerDisplayType) { 2367 BannerDisplayType["HORIZONTAL"] = "containerBannerTile"; 2368 BannerDisplayType["VERTICAL"] = "containerVerticalBannerTile"; 2369})(BannerDisplayType || (BannerDisplayType = {})); 2370const PlpTileRenderer = (props)=>{ 2371 var _useAppSelector_stores_, _useAppSelector_stores, _useAppSelector; 2372 const { hits: preFilteredHits, isLastPage, showMore, results } = (0,useInfiniteHits/* useInfiniteHits */.a)(); 2373 const { zipcode } = (0,useZipCode/* useZipCode */.lH)(); 2374 const selectedListingStoreId = (_useAppSelector = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* storeDetailsSelector */.W$)) === null || _useAppSelector === void 0 ? void 0 : (_useAppSelector_stores = _useAppSelector.stores) === null || _useAppSelector_stores === void 0 ? void 0 : (_useAppSelector_stores_ = _useAppSelector_stores[0]) === null || _useAppSelector_stores_ === void 0 ? void 0 : _useAppSelector_stores_.id; 2375 const { filteredProducts: infiniteHits, numOfHitsFilteredFromFE } = (0,react.useMemo)(()=>(0,productResultsUtils/* filterOutRestrictedProducts */.$E)({ 2376 products: preFilteredHits, 2377 zipcode, 2378 storeId: selectedListingStoreId 2379 }), [ 2380 preFilteredHits, 2381 zipcode, 2382 selectedListingStoreId 2383 ]); 2384 const skus = (0,react.useMemo)(()=>infiniteHits === null || infiniteHits === void 0 ? void 0 : infiniteHits.map((hit)=>{ 2385 const sku = hit.sku; 2386 return sku; 2387 }), [ 2388 infiniteHits 2389 ]); 2390 const categoryProducts = useGetCTProductsBySkus((skus === null || skus === void 0 ? void 0 : skus.length) ? skus : []); 2391 const [fetchedProducts, setFetchedProducts] = (0,react.useState)([]); 2392 (0,useHitsPerPage/* useHitsPerPage */.Y)(productResultsUtils/* HITS_PER_PAGE_CONFIG */.xW);
2393 const loadMoreProducts = ()=>{ 2394 showMore(); 2395 }; 2396 const fetchedAllProducts = fetchedProducts.length === categoryProducts.length; 2397 const { width = 0 } = (0,useWindowDimensions/* default */.Z)(); 2398 const productTilesRef = (0,react.useRef)(null); 2399 (0,useScrollTrigger/* useScrollTrigger */.r)({ 2400 ref: productTilesRef, 2401 position: "bottom", 2402 callbackFn: loadMoreProducts, 2403 debounceTime: 300, 2404 condition: !isLastPage && fetchedAllProducts 2405 }); 2406 const isMobileDisplay = width < TABLET_W; 2407 const productsPerPage = 28; 2408 const pageNumber = 3; 2409 const displayGuard = fetchedProducts.length > productsPerPage * pageNumber; 2410 const { categoryName, globalCampaignTileList, globalFilterOptions, mobileViewTwoColumns = false, mediaPodEntry: goToTopMediaPod } = props; 2411 const { filterPlpList = [] } = (globalFilterOptions === null || globalFilterOptions === void 0 ? void 0 : globalFilterOptions.fields) || {}; 2412 const convertBannerTileToBannerCollection = (bannerTile)=>{ 2413 return { 2414 fields: { 2415 bannerContainers: [ 2416 bannerTile 2417 ] 2418 }, 2419 // The following attributes are unused, but required by Contentful types 2420 sys: "", 2421 metadata: "", 2422 toPlainObject: ()=>Object, 2423 update: ()=>null 2424 }; 2425 }; 2426 const { asPath } = (0,next_router.useRouter)(); 2427 const [bannerTiles, setBannerTiles] = (0,react.useState)([]); 2428 (0,react.useEffect)(()=>{ 2429 setBannerTiles([]); 2430 setFetchedProducts([]); 2431 }, [ 2432 asPath 2433 ]); 2434 (0,react.useEffect)(()=>{ 2435 if (categoryProducts.length > 0) { 2436 setFetchedProducts(categoryProducts); 2437 } 2438 }, [ 2439 categoryProducts 2440 ]); 2441 const newDisplayProductList = [ 2442 ...fetchedProducts 2443 ]; 2444 (0,react.useEffect)(()=>{ 2445 if (globalCampaignTileList) { 2446 globalCampaignTileList === null || globalCampaignTileList === void 0 ? void 0 : globalCampaignTileList.map(async (item)=>{ 2447 var _item_fields, _item_fields1; 2448 const collectionSlug = (item === null || item === void 0 ? void 0 : (_item_fields = item.fields) === null || _item_fields === void 0 ? void 0 : _item_fields.collection) ? item === null || item === void 0 ? void 0 : (_item_fields1 = item.fields) === null || _item_fields1 === void 0 ? void 0 : _item_fields1.collection : ""; 2449 if (collectionSlug && // More than one collection is capable to be selected to display vertical banner tiles. 2450 collectionSlug.split(",").some(// Adding checks in callback to grant promos showing up if: 2451 // - Unwanted trailing slash is added via Contentful prop (slice sanitization). 2452 // - Trailing slash is missing in browser entered URL or redirect (asPath check). 2453 (e)=>{ 2454 if (e.slice(-1) === "/") e.slice(0, -1); 2455 return (asPath === null || asPath === void 0 ? void 0 : asPath.endsWith("".concat(e, "/"))) || (asPath === null || asPath === void 0 ? void 0 : asPath.endsWith("".concat(e))); 2456 })) { 2457 setBannerTiles((prevBanners)=>{ 2458 var _item_fields, _item_fields_bannerTile_sys_contentType_sys, _item_fields_bannerTile_sys_contentType, _item_fields_bannerTile_sys, _item_fields_bannerTile, _item_fields1; 2459 return [ 2460 ...prevBanners, 2461 { 2462 bannerTile: item, 2463 bannerPosition: item === null || item === void 0 ? void 0 : (_item_fields = item.fields) === null || _item_fields === void 0 ? void 0 : _item_fields.locationOfCampaignTileInCollection, 2464 displayType: item === null || item === void 0 ? void 0 : (_item_fields1 = item.fields) === null || _item_fields1 === void 0 ? void 0 : (_item_fields_bannerTile = _item_fields1.bannerTile) === null || _item_fields_bannerTile === void 0 ? void 0 : (_item_fields_bannerTile_sys = _item_fields_bannerTile.sys) === null || _item_fields_bannerTile_sys === void 0 ? void 0 : (_item_fields_bannerTile_sys_contentType = _item_fields_bannerTile_sys.contentType) === null || _item_fields_bannerTile_sys_contentType === void 0 ? void 0 : (_item_fields_bannerTile_sys_contentType_sys = _item_fields_bannerTile_sys_contentType.sys) === null || _item_fields_bannerTile_sys_contentType_sys === void 0 ? void 0 : _item_fields_bannerTile_sys_contentType_sys.id 2465 } 2466 ]; 2467 }); 2468 } 2469 }); 2470 } 2471 }, [ 2472 globalCampaignTileList, 2473 asPath 2474 ]); 2475 // Insert the banner objects in the positions specified via Contentful 2476 // For VERTICAL banners, bannerPosition represents actual position amongst products (product placement) 2477 // For HORIZONTAL banners, bannerPosition represents the row position (banner placement) 2478 if (bannerTiles.length > 0 && categoryProducts.length > 0) {
2479 bannerTiles.forEach((tile)=>{ 2480 if (tile.displayType === "containerVerticalBannerTile") { 2481 newDisplayProductList === null || newDisplayProductList === void 0 ? void 0 : newDisplayProductList.splice(tile.bannerPosition - 1, 0, tile.bannerTile); 2482 } 2483 if (tile.displayType === "containerBannerTile") { 2484 // Custom calc to determine row position, for grid 3 column display 2485 newDisplayProductList === null || newDisplayProductList === void 0 ? void 0 : newDisplayProductList.splice((tile.bannerPosition - 1) * 3, 0, tile.bannerTile); 2486 } 2487 }); 2488 } 2489 const getBannerTargetLink = (banner)=>{ 2490 var _banner_fields_callToAction, _banner_fields; 2491 const targetLinks = (_banner_fields = banner.fields) === null || _banner_fields === void 0 ? void 0 : (_banner_fields_callToAction = _banner_fields.callToAction) === null || _banner_fields_callToAction === void 0 ? void 0 : _banner_fields_callToAction.map((item)=>item.fields.target); 2492 return targetLinks && targetLinks[0] ? targetLinks[0] : ""; 2493 }; 2494 if (!width) return null; 2495 var _results_nbHits; 2496 const resultsNum = ((_results_nbHits = results === null || results === void 0 ? void 0 : results.nbHits) !== null && _results_nbHits !== void 0 ? _results_nbHits : 0) - numOfHitsFilteredFromFE; 2497 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { 2498 children: [ 2499 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2500 className: "category-page__header", 2501 children: [ 2502 /*#__PURE__*/ (0,jsx_runtime.jsx)("h1", { 2503 className: "category-product-page__title", 2504 children: categoryName 2505 }), 2506 isMobileDisplay && /*#__PURE__*/ (0,jsx_runtime.jsx)(MobileFilter/* MobileFilter */.z, { 2507 filterOptionList: filterPlpList 2508 }) 2509 ] 2510 }), 2511 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2512 className: "category-page-data", 2513 children: [ 2514 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2515 className: "category-page-data__header", 2516 children: [ 2517 /*#__PURE__*/ (0,jsx_runtime.jsx)("h5", { 2518 className: "search-results__qty", 2519 children: "".concat(resultsNum, " results") 2520 }), 2521 !isMobileDisplay && /*#__PURE__*/ (0,jsx_runtime.jsx)(SortByIndex/* SortByIndex */.x, {}, categoryName) 2522 ] 2523 }), 2524 !isMobileDisplay && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2525 className: "category-filters", 2526 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(FilterRenderer/* FilterRenderer */.S, { 2527 filterOptionList: filterPlpList 2528 }) 2529 }), 2530 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2531 className: (0,clsx/* default */.Z)("category-product-tiles", mobileViewTwoColumns && "category-product-tiles--two-columns"), 2532 ref: productTilesRef, 2533 children: [ 2534 newDisplayProductList === null || newDisplayProductList === void 0 ? void 0 : newDisplayProductList.map((product, i)=>{ 2535 var _product_fields, _product_fields_bannerTile_sys, _product_fields_bannerTile, _product_fields1, _product_ctData_masterData_current_masterVariant, _product_ctData_masterData_current, _product_ctData_masterData, _product_ctData, _product_sys, _product_fields_locationOfCampaignTileInCollection, _product_fields2, _product_fields3, _product_ctData_masterData_current_masterVariant1, _product_ctData_masterData_current1, _product_ctData_masterData1, _product_ctData1, _product_ctData_masterData_current_masterVariant2, _product_ctData_masterData_current2, _product_ctData_masterData2, _product_ctData2, _product_fields4, _product_fields5, _product_sys1; 2536 const renderCampaignTile = (0,typeUtils/* isICampaignTile */.L8)(product) && (product === null || product === void 0 ? void 0 : (_product_fields = product.fields) === null || _product_fields === void 0 ? void 0 : _product_fields.bannerTile); 2537 const renderProductTile = (0,typeUtils/* isCTProductWithImages */.I1)(product); 2538 const renderVerticalBannerTile = (0,typeUtils/* isICampaignVerticalBannerTile */.yJ)(product); 2539 const wrapperKey = renderCampaignTile ? "".concat(product === null || product === void 0 ? void 0 : (_product_fields1 = product.fields) === null || _product_fields1 === void 0 ? void 0 : (_product_fields_bannerTile = _product_fields1.bannerTile) === null || _product_fields_bannerTile === void 0 ? void 0 : (_product_fields_bannerTile_sys = _product_fields_bannerTile.sys) === null || _product_fields_bannerTile_sys === void 0 ? void 0 : _product_fields_bannerTile_sys.id, "-").concat(i) : renderProductTile ? product === null || product === void 0 ? void 0 : (_product_ctData = product.ctData) === null || _product_ctData === void 0 ? void 0 : (_product_ctData_masterData = _product_ctData.masterData) === null || _product_ctData_masterData === void 0 ? void 0 : (_product_ctData_masterData_current = _product_ctData_masterData.current) === null || _product_ctData_masterData_current === void 0 ? void 0 : (_product_ctData_masterData_current_masterVariant = _product_ctData_masterData_current.masterVariant) === null || _product_ctData_masterData_current_masterVariant === void 0 ? void 0 : _product_ctData_masterData_current_masterVariant.sku : renderVerticalBannerTile ? "".concat(product === null || product === void 0 ? void 0 : (_product_sys = product.sys) === null || _product_sys === void 0 ? void 0 : _product_sys.id, "-").concat(i) : i; 2540 return(// Data attribute to be used in Dynamic Yield campaigns 2541 /*#__PURE__*/ (0,jsx_runtime.jsxs)(react.Fragment, { 2542 children: [ 2543 renderCampaignTile && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2544 className: "product-banner-collection", 2545 // Custom style property to complement the provided class 2546 // and enforce the horizontal banner position in the grid layout, avoiding blanks. 2547 style: { 2548 gridRow: product === null || product === void 0 ? void 0 : (_product_fields2 = product.fields) === null || _product_fields2 === void 0 ? void 0 : (_product_fields_locationOfCampaignTileInCollection = _product_fields2.locationOfCampaignTileInCollection) === null || _product_fields_locationOfCampaignTileInCollection === void 0 ? void 0 : _product_fields_locationOfCampaignTileInCollection.toString() 2549 }, 2550 children: /*#__PURE__*/ (0,jsx_runtime.jsx)((link_default()), { 2551 href: getBannerTargetLink(product.fields.bannerTile), 2552 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(BannerCollection["default"], { 2553 data: convertBannerTileToBannerCollection(product === null || product === void 0 ? void 0 : (_product_fields3 = product.fields) === null || _product_fields3 === void 0 ? void 0 : _product_fields3.bannerTile), 2554 keepOriginalImage: true 2555 }) 2556 }) 2557 }), 2558 renderProductTile && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2559 "data-product-sku": product === null || product === void 0 ? void 0 : (_product_ctData1 = product.ctData) === null || _product_ctData1 === void 0 ? void 0 : (_product_ctData_masterData1 = _product_ctData1.masterData) === null || _product_ctData_masterData1 === void 0 ? void 0 : (_product_ctData_masterData_current1 = _product_ctData_masterData1.current) === null || _product_ctData_masterData_current1 === void 0 ? void 0 : (_product_ctData_masterData_current_masterVariant1 = _product_ctData_masterData_current1.masterVariant) === null || _product_ctData_masterData_current_masterVariant1 === void 0 ? void 0 : _product_ctData_masterData_current_masterVariant1.sku, 2560 className: "category-product-tiles-wrapper", 2561 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(ProductTileWrapper, { 2562 product: product 2563 }) 2564 }, product === null || product === void 0 ? void 0 : (_product_ctData2 = product.ctData) === null || _product_ctData2 === void 0 ? void 0 : (_product_ctData_masterData2 = _product_ctData2.masterData) === null || _product_ctData_masterData2 === void 0 ? void 0 : (_product_ctData_masterData_current2 = _product_ctData_masterData2.current) === null || _product_ctData_masterData_current2 === void 0 ? void 0 : (_product_ctData_masterData_current_masterVariant2 = _product_ctData_masterData_current2.masterVariant) === null || _product_ctData_masterData_current_masterVariant2 === void 0 ? void 0 : _product_ctData_masterData_current_masterVariant2.sku), 2565 renderVerticalBannerTile && (product === null || product === void 0 ? void 0 : (_product_fields4 = product.fields) === null || _product_fields4 === void 0 ? void 0 : _product_fields4.bannerTile) && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2566 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(VerticalBannerTile.VerticalBannerTile, { 2567 data: product === null || product === void 0 ? void 0 : (_product_fields5 = product.fields) === null || _product_fields5 === void 0 ? void 0 : _product_fields5.bannerTile 2568 }) 2569 }, "".concat(product === null || product === void 0 ? void 0 : (_product_sys1 = product.sys) === null || _product_sys1 === void 0 ? void 0 : _product_sys1.id, "-").concat(i)) 2570 ] 2571 }, wrapperKey)); 2572 }), 2573 displayGuard && /*#__PURE__*/ (0,jsx_runtime.jsx)(GoTopIcon/* GoToTopIcon */.E, { 2574 goToTopMediaPod: goToTopMediaPod, 2575 productTilesRef: productTilesRef 2576 }), 2577 /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2578 className: "show-more__container", 2579 children: !fetchedAllProducts && /*#__PURE__*/ (0,jsx_runtime.jsx)(CircularProgress/* default */.Z, { 2580 color: "inherit" 2581 }) 2582 }) 2583 ] 2584 }) 2585 ] 2586 }) 2587 ] 2588 }); 2589}; 2590/* harmony default export */ var PlpTileRendererCT = (PlpTileRenderer); 2591const ProductTileWrapper = (param)=>{ 2592 let { product } = param; 2593 var _product_ctData_masterData_current_masterVariant, _product_ctData_masterData_current, _product_ctData_masterData, _product_ctData; 2594 const { regionId, regionIdMapped } = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* ZipCodeSelector */.pz); 2595 const blurPrices = false && 0; // TODO Jared: remove false condition if/when ready 2596 const formattedProduct = (0,useStructureProductData/* default */.Z)({ 2597 ctData: product.ctData, 2598 itemMedia: product.itemMedia 2599 }); 2600 const { purchasedSkusByDate } = (0,useCustomerOrders/* useCustomerOrders */.P)(); 2601 return /*#__PURE__*/ (0,jsx_runtime.jsx)(ProductTile.ProductTile, { 2602 product: formattedProduct, 2603 swipe: false, 2604 previouslyPurchasedDate: (0,productUtils/* getFormattedPurchaseDate */.d)(product === null || product === void 0 ? void 0 : (_product_ctData = product.ctData) === null || _product_ctData === void 0 ? void 0 : (_product_ctData_masterData = _product_ctData.masterData) === null || _product_ctData_masterData === void 0 ? void 0 : (_product_ctData_masterData_current = _product_ctData_masterData.current) === null || _product_ctData_masterData_current === void 0 ? void 0 : (_product_ctData_masterData_current_masterVariant = _product_ctData_masterData_current.masterVariant) === null || _product_ctData_masterData_current_masterVariant === void 0 ? void 0 : _product_ctData_masterData_current_masterVariant.sku, purchasedSkusByDate), 2605 blurPrices: blurPrices 2606 }); 2607}; 2608 2609// EXTERNAL MODULE: ./src/components/search/AlgoliaConstants.ts 2610var AlgoliaConstants = __webpack_require__(858885); 2611// EXTERNAL MODULE: ./src/lib/configs/environment.ts 2612var environment = __webpack_require__(208891); 2613// EXTERNAL MODULE: ./src/lib/corporateGifts/handlers/index.ts + 8 modules 2614var handlers = __webpack_require__(398736); 2615// EXTERNAL MODULE: ./src/lib/dynamic-yield/dynamicYield.ts + 1 modules 2616var dynamicYield = __webpack_require__(85325); 2617// EXTERNAL MODULE: ./src/lib/hooks/index.ts + 13 modules 2618var lib_hooks = __webpack_require__(130414); 2619// EXTERNAL MODULE: ./src/lib/store/cartSlice.ts + 1 modules 2620var cartSlice = __webpack_require__(484725); 2621// EXTERNAL MODULE: ./src/lib/store/customerInfoSlice.ts 2622var customerInfoSlice = __webpack_require__(680921); 2623// EXTERNAL MODULE: ./src/lib/store/environmentSlice.ts 2624var environmentSlice = __webpack_require__(221473); 2625// EXTERNAL MODULE: ./src/lib/store/trackingSlice.ts 2626var trackingSlice = __webpack_require__(962133); 2627// EXTERNAL MODULE: ./src/lib/tracking/trackingEvents.ts + 1 modules 2628var trackingEvents = __webpack_require__(538933); 2629// EXTERNAL MODULE: ./src/lib/utils/cartUtils.tsx 2630var cartUtils = __webpack_require__(729890); 2631// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/components/page-sections/PlpMiniNav/PlpMiniNav.js 2632var PlpMiniNav = __webpack_require__(266311); 2633var PlpMiniNav_default = /*#__PURE__*/__webpack_require__.n(PlpMiniNav); 2634// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/lib/constants/locale.js 2635var locale = __webpack_require__(808439); 2636// EXTERNAL MODULE: ./node_modules/react-instantsearch-core/dist/es/hooks/useInstantSearch.js + 2 modules 2637var useInstantSearch = __webpack_require__(754942); 2638// EXTERNAL MODULE: ./src/components/ProductListingPage/ProductTileWrapper.tsx 2639var ProductListingPage_ProductTileWrapper = __webpack_require__(379787); 2640;// CONCATENATED MODULE: ./src/components/ProductListingPage/PlpTileRenderer.tsx 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666const { TABLET_W: PlpTileRenderer_TABLET_W } = breakpoints.BREAKPOINTS; 2667var PlpTileRenderer_BannerDisplayType; 2668(function(BannerDisplayType) { 2669 BannerDisplayType["HORIZONTAL"] = "containerBannerTile"; 2670 BannerDisplayType["VERTICAL"] = "containerVerticalBannerTile"; 2671})(PlpTileRenderer_BannerDisplayType || (PlpTileRenderer_BannerDisplayType = {})); 2672const PlpTileRenderer_PlpTileRenderer = (props)=>{ 2673 var _useAppSelector_stores_, _useAppSelector_stores, _useAppSelector, _collectionCampaignTiles; 2674 const { hits: preFilteredHits, isLastPage, showMore, results, sendEvent } = (0,useInfiniteHits/* useInfiniteHits */.a)(); 2675 const { zipcode } = (0,useZipCode/* useZipCode */.lH)(); 2676 const { storeId } = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 2677 const selectedListingStoreId = (_useAppSelector = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* storeDetailsSelector */.W$)) === null || _useAppSelector === void 0 ? void 0 : (_useAppSelector_stores = _useAppSelector.stores) === null || _useAppSelecto
2677r_stores === void 0 ? void 0 : (_useAppSelector_stores_ = _useAppSelector_stores[0]) === null || _useAppSelector_stores_ === void 0 ? void 0 : _useAppSelector_stores_.id; 2678 const { filteredProducts: infiniteHits, numOfHitsFilteredFromFE } = (0,react.useMemo)(()=>(0,productResultsUtils/* filterOutRestrictedProducts */.$E)({ 2679 products: preFilteredHits, 2680 zipcode, 2681 storeId: selectedListingStoreId 2682 }), [ 2683 preFilteredHits, 2684 zipcode, 2685 selectedListingStoreId 2686 ]); 2687 const { inStockProducts, outOfStockProducts } = (0,react.useMemo)(()=>(0,productResultsUtils/* separateProductsByStock */.s3)({ 2688 products: infiniteHits, 2689 storeId 2690 }), [ 2691 infiniteHits, 2692 storeId 2693 ]); 2694 var _results_nbHits; 2695 const resultsNum = ((_results_nbHits = results === null || results === void 0 ? void 0 : results.nbHits) !== null && _results_nbHits !== void 0 ? _results_nbHits : 0) - numOfHitsFilteredFromFE; 2696 const { status } = (0,useInstantSearch/* useInstantSearch */.b)(); 2697 const showSpinner = (status === "loading" || status === "idle") && !isLastPage; 2698 (0,useHitsPerPage/* useHitsPerPage */.Y)(productResultsUtils/* HITS_PER_PAGE_CONFIG */.xW);
2699 const loadMoreProducts = ()=>{ 2700 showMore(); 2701 }; 2702 const { asPath } = (0,next_router.useRouter)(); 2703 const { width = 0 } = (0,useWindowDimensions/* default */.Z)(); 2704 const productTilesRef = (0,react.useRef)(null); 2705 (0,useScrollTrigger/* useScrollTrigger */.r)({ 2706 ref: productTilesRef, 2707 position: "bottom", 2708 callbackFn: loadMoreProducts, 2709 debounceTime: 300, 2710 condition: !isLastPage 2711 }); 2712 const isMobileDisplay = width < PlpTileRenderer_TABLET_W; 2713 const { categoryName, globalCampaignTileList, globalFilterOptions, mobileViewTwoColumns = false, mediaPodEntry: goToTopMediaPod, miniNavs } = props; 2714 const { filterPlpList = [] } = (globalFilterOptions === null || globalFilterOptions === void 0 ? void 0 : globalFilterOptions.fields) || {}; 2715 const convertBannerTileToBannerCollection = (bannerTile)=>{ 2716 return { 2717 fields: { 2718 bannerContainers: [ 2719 bannerTile 2720 ] 2721 }, 2722 // The following attributes are unused, but required by Contentful types 2723 sys: "", 2724 metadata: "", 2725 toPlainObject: ()=>Object, 2726 update: ()=>null 2727 }; 2728 }; 2729 const collectionCampaignTiles = (tiles)=>{ 2730 if (!tiles) return null; 2731 const activeCampaignTiles = tiles.filter((tile)=>{ 2732 var _tile_fields, _tile_fields1; 2733 const collectionSlug = (tile === null || tile === void 0 ? void 0 : (_tile_fields = tile.fields) === null || _tile_fields === void 0 ? void 0 : _tile_fields.collection) ? tile === null || tile === void 0 ? void 0 : (_tile_fields1 = tile.fields) === null || _tile_fields1 === void 0 ? void 0 : _tile_fields1.collection : ""; 2734 if (collectionSlug && // More than one collection is capable to be selected to display vertical banner tiles. 2735 collectionSlug.split(",").some(// Adding a double check in callback to prevent promos not showing up when trailing 2736 // slash is missing via Contentful prop or manually entered URL. 2737 (e)=>(asPath === null || asPath === void 0 ? void 0 : asPath.endsWith("".concat(e, "/"))) || (asPath === null || asPath === void 0 ? void 0 : asPath.endsWith("".concat(e)))) && asPath.includes("collections")) { 2738 return true; 2739 } else { 2740 return false; 2741 } 2742 }); 2743 if (activeCampaignTiles.length === 0) { 2744 return []; 2745 } else { 2746 return activeCampaignTiles.map((tile)=>{ 2747 var _tile_fields, _tile_fields_bannerTile_sys_contentType_sys, _tile_fields_bannerTile_sys_contentType, _tile_fields_bannerTile_sys, _tile_fields_bannerTile, _tile_fields1; 2748 return { 2749 bannerTile: tile, 2750 bannerPosition: tile === null || tile === void 0 ? void 0 : (_tile_fields = tile.fields) === null || _tile_fields === void 0 ? void 0 : _tile_fields.locationOfCampaignTileInCollection, 2751 displayType: tile === null || tile === void 0 ? void 0 : (_tile_fields1 = tile.fields) === null || _tile_fields1 === void 0 ? void 0 : (_tile_fields_bannerTile = _tile_fields1.bannerTile) === null || _tile_fields_bannerTile === void 0 ? void 0 : (_tile_fields_bannerTile_sys = _tile_fields_bannerTile.sys) === null || _tile_fields_bannerTile_sys === void 0 ? void 0 : (_tile_fields_bannerTile_sys_contentType = _tile_fields_bannerTile_sys.contentType) === null || _tile_fields_bannerTile_sys_contentType === void 0 ? void 0 : (_tile_fields_bannerTile_sys_contentType_sys = _tile_fields_bannerTile_sys_contentType.sys) === null || _tile_fields_bannerTile_sys_contentType_sys === void 0 ? void 0 : _tile_fields_bannerTile_sys_contentType_sys.id 2752 }; 2753 }); 2754 } 2755 }; 2756 const validCampaignTiles = (_collectionCampaignTiles = collectionCampaignTiles(globalCampaignTileList)) === null || _collectionCampaignTiles === void 0 ? void 0 : _collectionCampaignTiles.filter(Boolean); 2757 // Combine products: in-stock first, then out-of-stock at the end (only when all pages are fetched) 2758 // Start with in-stock products as a mutable array for banner insertion 2759 const mergedProductList = (0,react.useMemo)(()=>{ 2760 // Create a mutable copy of in-stock products for banner insertion 2761 const products = [ 2762 ...inStockProducts 2763 ]; 2764 var _inStockProducts_length; 2765 // Insert the banner objects in the positions specified via Contentful 2766 // For VERTICAL banners, bannerPosition represents actual position amongst products (product placement) 2767 // For HORIZONTAL banners, bannerPosition represents the row position (banner placement) 2768 if ((validCampaignTiles === null || validCampaignTiles === void 0 ? void 0 : validCampaignTiles.length) > 0 && ((_inStockProducts_length = inStockProducts === null || inStockProducts === void 0 ? void 0 : inStockProducts.length) !== null && _inStockProducts_length !== void 0 ? _inStockProducts_length : 0) > 0) {
2769 validCampaignTiles.forEach((tile)=>{ 2770 if (tile.displayType === "containerVerticalBannerTile") { 2771 products.splice(tile.bannerPosition - 1, 0, tile.bannerTile); 2772 } 2773 if (tile.displayType === "containerBannerTile") { 2774 // Custom calc to determine row position, for grid 3 column display 2775 products.splice((tile.bannerPosition - 1) * 3, 0, tile.bannerTile); 2776 } 2777 }); 2778 } 2779 // Only show out-of-stock products at the end when all pages are fetched 2780 if (isLastPage && outOfStockProducts.length > 0) { 2781 products.push(...outOfStockProducts); 2782 } 2783 return products; 2784 }, [ 2785 inStockProducts, 2786 outOfStockProducts, 2787 isLastPage, 2788 validCampaignTiles 2789 ]); 2790 const showGoToTop = mergedProductList.length > productResultsUtils/* TILES_WITHOUT_GO_TO_TOP */.Ak; 2791 const getBannerTargetLink = (banner)=>{ 2792 var _banner_fields_callToAction, _banner_fields; 2793 const targetLinks = (_banner_fields = banner.fields) === null || _banner_fields === void 0 ? void 0 : (_banner_fields_callToAction = _banner_fields.callToAction) === null || _banner_fields_callToAction === void 0 ? void 0 : _banner_fields_callToAction.map((item)=>item.fields.target); 2794 return targetLinks && targetLinks[0] ? targetLinks[0] : ""; 2795 }; 2796 const handleConversion = (product)=>{ 2797 sendEvent("conversion", product, "Add to Cart - PLP", { 2798 // Special subtype 2799 eventSubtype: "addToCart" 2800 }); 2801 }; 2802 const getMiniNavForCategory = (miniNavs)=>{ 2803 const cleanPath = asPath.split("?")[0].replace("/collections", "").replace(/\/$/, ""); 2804 return miniNavs.find((nav)=>{ 2805 return nav.fields.collections.split(",").includes(cleanPath); 2806 }); 2807 }; 2808 const miniNavForCategory = miniNavs && getMiniNavForCategory(miniNavs); 2809 if (!width) return null; 2810 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(jsx_runtime.Fragment, { 2811 children: [ 2812 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2813 className: "category-page__new-header ".concat(!miniNavForCategory && "no-mininav", " "), 2814 children: [ 2815 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2816 className: "category-page__header__title-wrapper", 2817 children: [ 2818 /*#__PURE__*/ (0,jsx_runtime.jsx)("h1", { 2819 className: "category-product-page__title", 2820 children: categoryName 2821 }), 2822 isMobileDisplay && /*#__PURE__*/ (0,jsx_runtime.jsx)(MobileFilter/* MobileFilter */.z, { 2823 filterOptionList: filterPlpList 2824 }) 2825 ] 2826 }), 2827 miniNavForCategory && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2828 className: "category-page-mini-nav-wrapper", 2829 children: /*#__PURE__*/ (0,jsx_runtime.jsx)((PlpMiniNav_default()), { 2830 data: miniNavForCategory 2831 }) 2832 }) 2833 ] 2834 }), 2835 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2836 className: "category-page-data", 2837 children: [ 2838 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2839 className: "category-page-data__header", 2840 children: [ 2841 /*#__PURE__*/ (0,jsx_runtime.jsx)("h5", { 2842 className: "search-results__qty", 2843 children: resultsNum === 0 ? "NO RESULTS FOUND" : "".concat(resultsNum, " results") 2844 }), 2845 !isMobileDisplay && /*#__PURE__*/ (0,jsx_runtime.jsx)(SortByIndex/* SortByIndex */.x, {}, categoryName) 2846 ] 2847 }), 2848 !isMobileDisplay && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2849 className: "category-filters", 2850 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(FilterRenderer/* FilterRenderer */.S, { 2851 filterOptionList: filterPlpList 2852 }) 2853 }), 2854 /*#__PURE__*/ (0,jsx_runtime.jsxs)("div", { 2855 className: (0,clsx/* default */.Z)("category-product-tiles", mobileViewTwoColumns && "category-product-tiles--two-columns", locale.isCALocale && "canada"), 2856 ref: productTilesRef, 2857 children: [ 2858 mergedProductList === null || mergedProductList === void 0 ? void 0 : mergedProductList.map((product, i)=>{ 2859 var _product_fields, _product_fields_bannerTile_sys, _product_fields_bannerTile, _product_fields1, _product_sys, _product_fields_locationOfCampaignTileInCollection, _product_fields2, _product_fields3, _product_fields4, _product_fields5, _product_sys1; 2860 const renderCampaignTile = (0,typeUtils/* isICampaignTile */.L8)(product) && (product === null || product === void 0 ? void 0 : (_product_fields = product.fields) === null || _product_fields === void 0 ? void 0 : _product_fields.bannerTile); 2861 const renderProductTile = (0,typeUtils/* isAlgoliaDataWithImages */.BH)(product); 2862 const renderVerticalBannerTile = (0,typeUtils/* isICampaignVerticalBannerTile */.yJ)(product); 2863 const wrapperKey = renderCampaignTile ? "".concat(product === null || product === void 0 ? void 0 : (_product_fields1 = product.fields) === null || _product_fields1 === void 0 ? void 0 : (_product_fields_bannerTile = _product_fields1.bannerTile) === null || _product_fields_bannerTile === void 0 ? void 0 : (_product_fields_bannerTile_sys = _product_fields_bannerTile.sys) === null || _product_fields_bannerTile_sys === void 0 ? void 0 : _product_fields_bannerTile_sys.id, "-").concat(i) : renderProductTile ? product === null || product === void 0 ? void 0 : product.sku : renderVerticalBannerTile ? "".concat(product === null || product === void 0 ? void 0 : (_product_sys = product.sys) === null || _product_sys === void 0 ? void 0 : _product_sys.id, "-").concat(i) : i; 2864 return(// Data attribute to be used in Dynamic Yield campaigns 2865 /*#__PURE__*/ (0,jsx_runtime.jsxs)(react.Fragment, { 2866 children: [ 2867 renderCampaignTile && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2868 className: "product-banner-collection", 2869 // Custom style property to complement the provided class 2870 // and enforce the horizontal banner position in the grid layout, avoiding blanks. 2871 style: { 2872 gridRow: product === null || product === void 0 ? void 0 : (_product_fields2 = product.fields) === null || _product_fields2 === void 0 ? void 0 : (_product_fields_locationOfCampaignTileInCollection = _product_fields2.locationOfCampaignTileInCollection) === null || _product_fields_locationOfCampaignTileInCollection === void 0 ? void 0 : _product_fields_locationOfCampaignTileInCollection.toString() 2873 }, 2874 children: /*#__PURE__*/ (0,jsx_runtime.jsx)((link_default()), { 2875 href: getBannerTargetLink(product.fields.bannerTile), 2876 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(BannerCollection["default"], { 2877 data: convertBannerTileToBannerCollection(product === null || product === void 0 ? void 0 : (_product_fields3 = product.fields) === null || _product_fields3 === void 0 ? void 0 : _product_fields3.bannerTile), 2878 keepOriginalImage: true 2879 }) 2880 }) 2881 }), 2882 renderProductTile && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2883 "data-product-sku": product === null || product === void 0 ? void 0 : product.sku, 2884 className: "category-product-tiles-wrapper", 2885 // We need to explicitly send click events when using infinite hits for Algolia. 2886 onClick: ()=>sendEvent("click", product, "Product Tile Click - PLP"), 2887 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(ProductListingPage_ProductTileWrapper/* default */.Z, { 2888 product: product, 2889 onConversion: ()=>handleConversion(product) 2890 }) 2891 }, product === null || product === void 0 ? void 0 : product.sku), 2892 renderVerticalBannerTile && (product === null || product === void 0 ? void 0 : (_product_fields4 = product.fields) === null || _product_fields4 === void 0 ? void 0 : _product_fields4.bannerTile) && /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2893 children: /*#__PURE__*/ (0,jsx_runtime.jsx)(VerticalBannerTile.VerticalBannerTile, { 2894 data: product === null || product === void 0 ? void 0 : (_product_fields5 = product.fields) === null || _product_fields5 === void 0 ? void 0 : _product_fields5.bannerTile 2895 }) 2896 }, "".concat(product === null || product === void 0 ? void 0 : (_product_sys1 = product.sys) === null || _product_sys1 === void 0 ? void 0 : _product_sys1.id, "-").concat(i)) 2897 ] 2898 }, wrapperKey)); 2899 }), 2900 showGoToTop && /*#__PURE__*/ (0,jsx_runtime.jsx)(GoTopIcon/* GoToTopIcon */.E, { 2901 goToTopMediaPod: goToTopMediaPod, 2902 productTilesRef: productTilesRef 2903 }), 2904 /*#__PURE__*/ (0,jsx_runtime.jsx)("div", { 2905 className: "show-more__container", 2906 children: showSpinner && /*#__PURE__*/ (0,jsx_runtime.jsx)(CircularProgress/* default */.Z, { 2907 color: "inherit" 2908 }) 2909 }) 2910 ] 2911 }) 2912 ] 2913 }) 2914 ] 2915 }); 2916}; 2917/* harmony default export */ var ProductListingPage_PlpTileRenderer = ((/* unused pure expression or super */ null && (PlpTileRenderer_PlpTileRenderer))); 2918 2919;// CONCATENATED MODULE: ./src/lib/corporateGifts/hooks/useParseUrlParms.ts 2920 2921 2922/** 2923 * Safely decodes a URI component with error handling 2924 */ const safeDecodeURIComponent = (str)=>{ 2925 try { 2926 return decodeURIComponent(str); 2927 } catch (e) { 2928 return str; 2929 } 2930}; 2931/** 2932 * Custom hook for parsing URL parameters to extract corporate gift voucher data 2933 * Extracts email and voucher_code from URL search parameters and returns a validated payload
2934 * Uses Pages Router API (useRouter) for compatibility with pages directory 2935 * 2936 * @returns A memoized function that returns VoucherValidationPayload or empty object 2937 * 2938 * @example 2939 * ```tsx 2940 * const { parseUrlParams } = useParseUrlParams(); 2941 * const params = parseUrlParams(); 2942 * Returns voucher validation payload: { email: '[email protected]', voucherCode: 'ABC123' } or empty object if no valid parameters are found 2943 * ``` 2944 */ const useParseUrlParams = ()=>{ 2945 const router = (0,next_router.useRouter)(); 2946 /** 2947 * Parse URL parameters and extract recipient data using Next.js Pages Router 2948 */ const parseUrlParams = (0,react.useCallback)(()=>{ 2949 // Wait for router to be ready before accessing query params 2950 if (!router.isReady) { 2951 return {}; 2952 } 2953 const email = typeof router.query.email === "string" ? router.query.email : ""; 2954 const voucherCode = typeof router.query.voucher_code === "string" ? router.query.voucher_code : ""; 2955 if (!email || !voucherCode || email.trim() === "" || voucherCode.trim() === "") { 2956 return {}; 2957 } 2958 const decodedEmail = safeDecodeURIComponent(email); 2959 const decodedVoucherCode = safeDecodeURIComponent(voucherCode); 2960 // Validate decoded values are not empty 2961 if (decodedEmail.trim() === "" || decodedVoucherCode.trim() === "") { 2962 return {}; 2963 } 2964 return { 2965 email: decodedEmail, 2966 voucherCode: decodedVoucherCode 2967 }; 2968 }, [ 2969 router.isReady, 2970 router.query.email, 2971 router.query.voucher_code 2972 ]); 2973 return { 2974 parseUrlParams 2975 }; 2976}; 2977 2978// EXTERNAL MODULE: ./node_modules/@wildfork/commercetools-core-ui/dist/src/hooks/corporate-gift/useRecipientData.js 2979var useRecipientData = __webpack_require__(173273); 2980;// CONCATENATED MODULE: ./src/lib/corporateGifts/hooks/useSetRecipientData.ts 2981 2982const useSetRecipientData = ()=>{ 2983 const { updateRecipientData } = (0,useRecipientData.useRecipientData)(); 2984 /** 2985 * Sets recipient data by extracting and validating relevant fields from a VoucherValidationResponse object, 2986 * formats data as needed, and sends it to updateRecipientData. 2987 * 2988 * @param {VoucherValidationResponse} recipientData - The recipient data from the voucher validation response. 2989 * It is expected to contain the recipient's name, email, campaignId, expiryDate, giftAmount, and user existence. 2990 * @param {string} voucherCode - The voucher code used for validation. 2991 * 2992 * Fields used: 2993 * - name: Split into firstName and lastName (first two space-separated parts; empty string if missing) 2994 * - email: Recipient email, defaults to empty string 2995 * - campaignId: Numeric campaign identifier, defaults to 0 2996 * - expiryDate: Voucher expiry date (timestamp or value), defaults to 0 2997 * - giftAmount: Amount of the voucher, coerced to number, defaults to 0 2998 * - userExists: Boolean flag if the user exists, defaults to false 2999 * - voucherCode: The voucher code provided by the caller 3000 */ const setRecipientData = (recipientData, voucherCode)=>{ 3001 var _recipientData_name, _recipientData_name1; 3002 if (!recipientData) { 3003 updateRecipientData(null); 3004 return; 3005 } 3006 const firstName = (recipientData === null || recipientData === void 0 ? void 0 : (_recipientData_name = recipientData.name) === null || _recipientData_name === void 0 ? void 0 : _recipientData_name.split(" ")[0]) || ""; 3007 const lastName = (recipientData === null || recipientData === void 0 ? void 0 : (_recipientData_name1 = recipientData.name) === null || _recipientData_name1 === void 0 ? void 0 : _recipientData_name1.split(" ")[1]) || ""; 3008 const validateRecipientData = { 3009 firstName: firstName, 3010 lastName: lastName, 3011 email: (recipientData === null || recipientData === void 0 ? void 0 : recipientData.email) || "", 3012 campaignId: (recipientData === null || recipientData === void 0 ? void 0 : recipientData.campaignId) || 0, 3013 expiryDate: (recipientData === null || recipientData === void 0 ? void 0 : recipientData.expiryDate) || 0, 3014 giftAmount: Number(recipientData === null || recipientData === void 0 ? void 0 : recipientData.giftAmount) || 0, 3015 isUserExists: (recipientData === null || recipientData === void 0 ? void 0 : recipientData.userExists) || false, 3016 voucherCode: voucherCode || "" 3017 };
3018 updateRecipientData(validateRecipientData); 3019 }; 3020 return { 3021 setRecipientData 3022 }; 3023}; 3024 3025;// CONCATENATED MODULE: ./src/pages/collections/[categorySlug].tsx 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054const ContentfulLivePreviewWrapper = dynamic_default()(()=>Promise.all(/* import() */[__webpack_require__.e(3590), __webpack_require__.e(9092)]).then(__webpack_require__.bind(__webpack_require__, 779092)).then((mod)=>mod.ContentfulLivePreviewWrapper), { 3055 loadableGenerated: { 3056 webpack: ()=>[ 3057 /*require.resolve*/(779092) 3058 ] 3059 }, 3060 ssr: false 3061}); 3062const ALGOLIA_PLP_REFACTOR_ENABLED = environment.nextAppEnv.feature_toggle.US.algoliaPLPRefactor; 3063const sendTrackingEventFromComponent = debounce_default()((emarsysContext)=>{ 3064 (0,trackingEvents/* setEmarsysContext */.lq)({ 3065 ...emarsysContext 3066 }); 3067}, trackingEvents/* COMPONENT_EVENT_TRACKING_DEBOUNCE_WAIT_TIME */.hK); 3068const CategorySlug = (props)=>{ 3069 var _props_pageMetadata, _props_pageMetadata1, _props_globalData; 3070 const cartStoreData = (0,hooks/* useAppSelector */.C)(cartSlice/* cartSliceSelector */.Ew); 3071 const zipCodeStoreData = (0,hooks/* useAppSelector */.C)(zipcodeSlice/* ZipCodeSelector */.pz); 3072 const customerInfo = (0,hooks/* useAppSelector */.C)(customerInfoSlice/* CustomerInfoSelector */.fP); 3073 const customerEmail = customerInfo.email; 3074 const dispatch = (0,hooks/* useAppDispatch */.T)(); 3075 const router = (0,next_router.useRouter)(); 3076 const cartUtilsForProductTile = (0,cartUtils/* structureCartUtils */.t1)(cartStoreData, zipCodeStoreData, dispatch); 3077 const { categoryName, categoryDisplayName, categorySlug, parentCategoryName, parentCategorySlug, grandParentCategoryName, grandParentCategorySlug, isMainCategory, mediaPodEntry } = props; 3078 const indexName = environment.nextAppEnv.algolia.index; 3079 const showBreadcrumbs = environment.nextAppEnv.feature_toggle.US.breadcrumbs === "show"; 3080 const { isCorporateGiftingRecipientFlowEnabled } = (0,lib_hooks/* useEnvironmentFlags */.R6)(); 3081 const configureFilter = isMainCategory ? 'categories:"'.concat(categoryName, '"') : 'categories:"'.concat(grandParentCategoryName || parentCategoryName, '" AND subCategories:"').concat(categoryName, '"'); 3082 const { getFavoritesList } = (0,lib_hooks/* useFavorites */.rc)(); 3083 const { parseUrlParams } = useParseUrlParams(); 3084 const urlParams = parseUrlParams(); 3085 const contentfuLivePreview = (0,hooks/* useAppSelector */.C)(environmentSlice/* selectContentfulLivePreview */.Yw); 3086 const { setRecipientData } = useSetRecipientData(); 3087 const hasValidatedVoucherRef = (0,react.useRef)(false); 3088 const voucherValidationHandlers = (0,react.useMemo)(()=>(0,handlers/* createVoucherValidationHandlers */.nZ)(), []); 3089 /** 3090 * Indicates whether the current flow involves a recipient/campaign, 3091 * such as gifting or a promotional process. 3092 * Determined by the presence of recipient data from the custom hook. 3093 */ const [isCampaignFlow, setIsCampaignFlow] = (0,react.useState)(false); 3094 /** 3095 * State for tracking whether the campaign (e.g., gifting event) is expired. 3096 * Initialized to false and set to true when voucher validation returns 3097 * error code WF_CORPORATE_GIFTING_011 (Voucher has expired). 3098 * Used to control the campaign expired popup display. 3099 */ const [isCampaignExpiredState, setIsCampaignExpiredState] = (0,react.useState)(false); 3100 /** 3101 * State for tracking whether the gift amount has already been redeemed. 3102 * Initialized to false and set to true when voucher validation returns 3103 * error code WF_CORPORATE_GIFTING_012 (Voucher is no more active). 3104 * Used to control the gift already claimed popup display. 3105 */ const [isGiftAmountRedeemed, setIsGiftAmountRedeemed] = (0,react.useState)(false); 3106 (0,react.useEffect)(()=>{ 3107 (0,dynamicYield/* setDYContext */.al)("CATEGORY", [ 3108 categoryName 3109 ]); 3110 getFavoritesList(); 3111 }, [ 3112 categoryName, 3113 getFavoritesList 3114 ]); 3115 (0,react.useEffect)(()=>{ 3116 router.beforePopState(()=>{ 3117 dispatch((0,trackingSlice/* setGTMCategoryNavigationDetail
3117s */.nS)(null)); 3118 return true; 3119 }); 3120 (0,trackingEvents/* GTMNavigationClicked */.IG)(); 3121 return ()=>{ 3122 router.beforePopState(()=>true); 3123 }; 3124 }, [ 3125 dispatch, 3126 router 3127 ]); 3128 (0,react.useEffect)(()=>{ 3129 const categoryContext = { 3130 isMainCategory, 3131 categoryName, 3132 parentCategoryName, 3133 grandParentCategoryName 3134 }; 3135 const emarsysContext = { 3136 customerEmail, 3137 categoryContext 3138 }; 3139 sendTrackingEventFromComponent(emarsysContext); 3140 }, [ 3141 categoryName, 3142 customerEmail, 3143 isMainCategory, 3144 parentCategoryName, 3145 grandParentCategoryName 3146 ]); 3147 (0,react.useEffect)(()=>{ 3148 // Wait for router to be ready before attempting to parse URL params 3149 if (!router.isReady) { 3150 return; 3151 } 3152 // Prevent duplicate validations - only run once when user lands via email link 3153 if (hasValidatedVoucherRef.current) { 3154 return; 3155 } 3156 // Validate urlParams structure before using 3157 if (urlParams && typeof urlParams === "object" && "email" in urlParams && "voucherCode" in urlParams && typeof urlParams.email === "string" && typeof urlParams.voucherCode === "string" && urlParams.email !== "" && urlParams.voucherCode !== "") { 3158 const handleVoucherValidation = async ()=>{ 3159 const result = await voucherValidationHandlers.validateVoucher(urlParams); 3160 setIsCampaignFlow(true); 3161 // Mark as attempted regardless of success/failure to prevent retries 3162 hasValidatedVoucherRef.current = true; 3163 if (result.success && result.data) { 3164 setRecipientData(result.data, urlParams.voucherCode); 3165 } else { 3166 setRecipientData(null); 3167 // If the voucher validation error code indicates an expired campaign, 3168 // set the campaign expired state to true so the UI can display an appropriate message. 3169 if (result.error === handlers/* voucherErrorCodes */.aH[1]) { 3170 setIsCampaignExpiredState(true); 3171 } 3172 // If the voucher validation error code indicates the gift amount has already been redeemed, 3173 // update state to reflect redemption so the UI can notify the user. 3174 if (result.error === handlers/* voucherErrorCodes */.aH[2]) { 3175 setIsGiftAmountRedeemed(true); 3176 } 3177 } 3178 }; 3179 if (isCorporateGiftingRecipientFlowEnabled) { 3180 handleVoucherValidation(); 3181 } else { 3182 setRecipientData(null); 3183 } 3184 } 3185 }, [ 3186 router.isReady, 3187 urlParams, 3188 setRecipientData, 3189 voucherValidationHandlers, 3190 setIsCampaignExpiredState, 3191 setIsGiftAmountRedeemed,
3192 isCorporateGiftingRecipientFlowEnabled 3193 ]); 3194 const pageInfo = { 3195 pageTitle: ((_props_pageMetadata = props.pageMetadata) === null || _props_pageMetadata === void 0 ? void 0 : _props_pageMetadata.title) || "", 3196 pageDescription: ((_props_pageMetadata1 = props.pageMetadata) === null || _props_pageMetadata1 === void 0 ? void 0 : _props_pageMetadata1.description) || "", 3197 headerEntry: props.globalData.headerEntry, 3198 footerEntry: props.globalData.footerEntry, 3199 mainClass: "category-page", 3200 ctCategoryNameMap: props.ctCategoryNameMap 3201 }; 3202 const { isLoggedIn } = (0,lib_hooks/* useCustomer */.ON)(); 3203 const favoriteUtils = { 3204 isLoggedInUser: isLoggedIn, 3205 useFavorites: lib_hooks/* useFavorites */.rc 3206 }; 3207 const globalCollectionEntry = props === null || props === void 0 ? void 0 : (_props_globalData = props.globalData) === null || _props_globalData === void 0 ? void 0 : _props_globalData.globalCollectionEntry; 3208 if (!globalCollectionEntry) return null; 3209 const { globalCampaignTileList, globalFilterOptions, mobileViewTwoColumns = false, miniNavs } = globalCollectionEntry === null || globalCollectionEntry === void 0 ? void 0 : globalCollectionEntry.fields; 3210 const categoryNameData = { 3211 categoryName, 3212 categorySlug, 3213 parentCategoryName, 3214 parentCategorySlug, 3215 grandParentCategoryName, 3216 grandParentCategorySlug 3217 }; 3218 const plpTileRendererProps = { 3219 categoryName, 3220 parentCategoryName, 3221 categoryDisplayName, 3222 cartUtils: cartUtilsForProductTile, 3223 favoriteUtils, 3224 globalCampaignTileList, 3225 globalFilterOptions, 3226 mobileViewTwoColumns, 3227 mediaPodEntry, 3228 miniNavs 3229 }; 3230 const storeId = cartStoreData === null || cartStoreData === void 0 ? void 0 : cartStoreData.storeId; 3231 const instantSearchKey = "".concat(categorySlug, "-").concat((zipCodeStoreData === null || zipCodeStoreData === void 0 ? void 0 : zipCodeStoreData.zipcode) || "", "-").concat(storeId || ""); 3232 return /*#__PURE__*/ (0,jsx_runtime.jsxs)(AppPage/* default */.Z, { 3233 ...pageInfo, 3234 pageMetadata: props.pageMetadata, 3235 children: [ 3236 showBreadcrumbs && /*#__PURE__*/ (0,jsx_runtime.jsx)(components_PlpBreadcrumbs, { 3237 categoryNameData: categoryNameData 3238 }), 3239 /*#__PURE__*/ (0,jsx_runtime.jsx)("section", { 3240 className: "category-product-page", 3241 children: /*#__PURE__*/ (0,jsx_runtime.jsxs)(InstantSearch/* InstantSearch */.p, { 3242 indexName: indexName, 3243 searchClient: AlgoliaConstants/* algoliaSearchClient */.E2, 3244 insights: true, 3245 children: [ 3246 /*#__PURE__*/ (0,jsx_runtime.jsx)(Configure/* Configure */.T, { 3247 filters: configureFilter, 3248 hitsPerPage: 28 3249 }), 3250 ALGOLIA_PLP_REFACTOR_ENABLED ? contentfuLivePreview ? /*#__PURE__*/ (0,jsx_runtime.jsx)(ContentfulLivePreviewWrapper, { 3251 entries: [ 3252 globalCollectionEntry 3253 ], 3254 children: (param)=>{ 3255 let { updatedEntries } = param; 3256 const [updatedCollectionPage] = updatedEntries; 3257 const { globalCampaignTileList, globalFilterOptions, mobileViewTwoColumns = false, miniNavs } = updatedCollectionPage === null || updatedCollectionPage === void 0 ? void 0 : updatedCollectionPage.fields; 3258 return /*#__PURE__*/ (0,jsx_runtime.jsx)(PlpTileRenderer_PlpTileRenderer, { 3259 ...plpTileRendererProps, 3260 globalCampaignTileList: globalCampaignTileList, 3261 globalFilterOptions: globalFilterOptions, 3262 mobileViewTwoColumns: mobileViewTwoColumns, 3263 miniNavs: miniNavs 3264 }); 3265 } 3266 }) : /*#__PURE__*/ (0,jsx_runtime.jsx)(PlpTileRenderer_PlpTileRenderer, { 3267 ...plpTileRendererProps 3268 }) : /*#__PURE__*/ (0,jsx_runtime.jsx)(PlpTileRendererCT, { 3269 categoryName: categoryName, 3270 parentCategoryName: parentCategoryName, 3271 categoryDisplayName: categoryDisplayName, 3272 cartUtils: cartUtilsForProductTile, 3273 favoriteUtils: favoriteUtils, 3274 globalCampaignTileList: globalCampaignTileList, 3275 globalFilterOptions: globalFilterOptions, 3276 mobileViewTwoColumns: mobileViewTwoColumns, 3277 mediaPodEntry: mediaPodEntry 3278 }) 3279 ] 3280 }, instantSearchKey) 3281 }), 3282 isCampaignFlow && /*#__PURE__*/ (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { 3283 children: isCampaignExpiredState && /*#__PURE__*/ (0,jsx_runtime.jsx)((Popup_default()), { 3284 isOpen: isCampaignExpiredState, 3285 onClose: ()=>setIsCampaignExpiredState(false), 3286 onClick: ()=>setIsCampaignExpiredState(false), 3287 textMessage: corporate_gift.CORPORATE_GIFT_POPUP_MESSAGES.CAMPAIGN_EXPIRED.textMessage, 3288 buttonText: corporate_gift.CORPORATE_GIFT_POPUP_MESSAGES.CAMPAIGN_EXPIRED.buttonText, 3289 title: corporate_gift.CORPORATE_GIFT_POPUP_MESSAGES.CAMPAIGN_EXPIRED.title 3290 }) 3291 }), 3292 isCampaignFlow && /*#__PURE__*/ (0,jsx_runtime.jsx)(jsx_runtime.Fragment, { 3293 children: isGiftAmountRedeemed && /*#__PURE__*/ (0,jsx_runtime.jsx)((Popup_default()), { 3294 isOpen: isGiftAmountRedeemed,
3295 onClose: ()=>setIsGiftAmountRedeemed(false), 3296 onClick: ()=>setIsGiftAmountRedeemed(false), 3297 textMessage: corporate_gift.CORPORATE_GIFT_POPUP_MESSAGES.GIFT_ALREADY_CLAIMED.textMessage, 3298 buttonText: corporate_gift.CORPORATE_GIFT_POPUP_MESSAGES.GIFT_ALREADY_CLAIMED.buttonText, 3299 title: corporate_gift.CORPORATE_GIFT_POPUP_MESSAGES.GIFT_ALREADY_CLAIMED.title 3300 }) 3301 }) 3302 ] 3303 }); 3304}; 3305var __N_SSG = true; 3306/* harmony default export */ var _categorySlug_ = (CategorySlug); 3307 3308 3309/***/ }), 3310 3311/***/ 205498: 3312/***/ (function(module) { 3313 3314// extracted by mini-css-extract-plugin 3315module.exports = {"title":"Filter_title__AyFqC","filterTItle":"Filter_filterTItle__pfbLQ","categoryTitle":"Filter_categoryTitle__fMrfU","facetTitle":"Filter_facetTitle__BaCms","clearAll":"Filter_clearAll__sO3pn","selectedSortBy":"Filter_selectedSortBy__hVl3u","buttonFilter":"Filter_buttonFilter__lULjG","applyFilterButton":"Filter_applyFilterButton__L0O45","numberOfFilter":"Filter_numberOfFilter__95ogq"}; 3316 3317/***/ }) 3318 3319}, 3320/******/ function(__webpack_require__) { // webpackRuntimeModules 3321/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); } 3322/******/ __webpack_require__.O(0, [8075,5432,1255,8867,3153,3949,3326,6382,68,4772,7987,5450,4523,737,6609,3436,9539,4483,2611,4263,1650,9786,5551,9013,3038,170,9277,29,5098,4243,4778,9864,8764,6246,4927,4935,1433,7723,6593,2678,4582,4885,1061,71,678,641,9352,1772,5401,2914,3483,8735,6576,5218,9774,480,179], function() { return __webpack_exec__(532417); }); 3323/******/ var __webpack_exports__ = __webpack_require__.O(); 3324/******/ _N_E = __webpack_exports__; 3325/******/ } 3326]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.