{"version":3,"file":"recommendations.js","mappings":"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","sources":["webpack://catalog_2023/webpack/runtime/chunk loaded","webpack://catalog_2023/webpack/runtime/create fake namespace object","webpack://catalog_2023/./src/widgets/Recommendations/Recommendations.module.scss?1285","webpack://catalog_2023/./src/helpers/index.ts","webpack://catalog_2023/./src/api/constructor.ts","webpack://catalog_2023/./src/components/RecommendationProductCard/RecommendationProductCard.module.scss?8691","webpack://catalog_2023/./src/kit/atoms/Typography/Typography.tsx","webpack://catalog_2023/./src/kit/atoms/Link/Link.tsx","webpack://catalog_2023/./src/components/Icon/Icon.tsx","webpack://catalog_2023/./src/kit/icons/Heart.tsx","webpack://catalog_2023/./src/kit/icons/HeartFilled.tsx","webpack://catalog_2023/./src/kit/icons/Plus.tsx","webpack://catalog_2023/./src/kit/icons/Minus.tsx","webpack://catalog_2023/./src/api/opti.ts","webpack://catalog_2023/./src/components/RecommendationProductCard/RecommendationProductCard.tsx","webpack://catalog_2023/./src/widgets/Recommendations/Recommendations.tsx","webpack://catalog_2023/./src/i18n.ts","webpack://catalog_2023/./src/recommendations.tsx","webpack://catalog_2023/./src/components/RecommendationProductCard/RecommendationProductCard.module.scss","webpack://catalog_2023/./src/widgets/Recommendations/Recommendations.module.scss","webpack://catalog_2023/webpack/bootstrap","webpack://catalog_2023/webpack/runtime/compat get default export","webpack://catalog_2023/webpack/runtime/define property getters","webpack://catalog_2023/webpack/runtime/global","webpack://catalog_2023/webpack/runtime/hasOwnProperty shorthand","webpack://catalog_2023/webpack/runtime/make namespace object","webpack://catalog_2023/webpack/runtime/runtimeId","webpack://catalog_2023/webpack/runtime/jsonp chunk loading","webpack://catalog_2023/webpack/runtime/nonce","webpack://catalog_2023/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./Recommendations.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./Recommendations.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","export const createArrayOfObjects = (\r\n length: number,\r\n template: object\r\n): object[] => {\r\n return Array.from({ length }, () => ({ ...template }));\r\n};\r\n\r\nexport const disableBodyScroll = () => {\r\n const body = document.querySelector('body');\r\n\r\n body.style.overflowY = 'hidden';\r\n};\r\n\r\nexport const enableBodyScroll = () => {\r\n const body = document.querySelector('body');\r\n\r\n body.style.overflowY = 'auto';\r\n};\r\n\r\nexport const getBaseUrl = () => {\r\n return window.location.href.split('?')[0];\r\n};\r\n\r\nconst getMarketName = (marketName) => {\r\n let market1, market2;\r\n\r\n if (!marketName) return;\r\n\r\n const lastSpaceIndex = marketName.lastIndexOf(' ');\r\n\r\n if (lastSpaceIndex !== -1) {\r\n market1 = marketName.substring(0, lastSpaceIndex);\r\n market2 = marketName.substring(lastSpaceIndex + 1);\r\n } else {\r\n market1 = marketName;\r\n market2 = undefined;\r\n }\r\n\r\n return {\r\n market1,\r\n market2\r\n };\r\n};\r\n\r\nexport const getOriginalPrice = (data, marketName) => {\r\n if (!marketName || !data) return;\r\n const { market1, market2 } = getMarketName(marketName);\r\n\r\n for (const key of Object.keys(data)) {\r\n if (key.includes(`${market1} ${market2}_Original`)) {\r\n return data[key];\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport const getPriceForMarket = (data, marketName) => {\r\n if (!marketName || !data) return;\r\n const { market1, market2 } = getMarketName(marketName);\r\n\r\n for (const key of Object.keys(data)) {\r\n if (key.includes(`${market1} ${market2}_All Customers`)) {\r\n return data[key];\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst extractNumber = (str: string) => {\r\n let string = str;\r\n\r\n if (typeof string !== 'string') {\r\n string = str.toString();\r\n }\r\n\r\n const matched = string.match(/(\\d+(\\.\\d+)?)/);\r\n return matched ? parseFloat(matched[0]) : null;\r\n};\r\n\r\nexport const getGa4Data = (\r\n index,\r\n productData,\r\n value,\r\n price: string,\r\n qty,\r\n categoryData\r\n) => {\r\n return (\r\n price && {\r\n affiliation: 'Evergreen',\r\n index: index,\r\n item_id: productData.SKU,\r\n item_name: value,\r\n item_brand: productData.Brand,\r\n item_list_id: categoryData.display_name,\r\n item_list_name: categoryData.group_id,\r\n price: extractNumber(price),\r\n quantity: qty\r\n }\r\n );\r\n};\r\n\r\nexport const getDiscountPercent = (price, discount) => {\r\n const discountAmount = (price * discount) / 100;\r\n const finalPrice = price - discountAmount;\r\n\r\n return priceRound(finalPrice);\r\n};\r\n\r\nexport const priceRound = (price) => {\r\n const factor = Math.pow(10, 2);\r\n return (Math.ceil(price * factor) / factor).toFixed(2);\r\n};\r\n\r\nexport const formatNumber = (num: number) => {\r\n if (typeof num !== 'number' || isNaN(num)) return null;\r\n\r\n const str = num.toString();\r\n const decimalPart = str.split('.')[1];\r\n\r\n if (decimalPart && decimalPart.length >= 2) {\r\n return str;\r\n } else {\r\n return num.toFixed(2);\r\n }\r\n};\r\n\r\nexport const getObjectByDefaultVariant = (item) => {\r\n if (item.variations?.length === 1) {\r\n return item.data;\r\n }\r\n\r\n if (!item?.variations) return;\r\n const defaultVariant = item.data['default_variant '].toString();\r\n\r\n const defaultObject = item.variations?.find(\r\n (variation) => variation.data.SKU === defaultVariant\r\n );\r\n\r\n return defaultObject?.data?.IsCustomized\r\n ? defaultObject.data\r\n : item.variations[0]?.data;\r\n};\r\n\r\nexport const arraysAreEqual = (arr1, arr2) => {\r\n if (arr1.length !== arr2.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const getLicensedCollectionsFilterValue = (facets: []) => {\r\n if (!facets.length) return;\r\n\r\n const licensedCollectionsFilter = facets.find(\r\n (facet) => facet.name === 'LicensedCollections_Filter'\r\n );\r\n\r\n const firstValue = licensedCollectionsFilter\r\n ? licensedCollectionsFilter.values[0]\r\n : null;\r\n\r\n return firstValue;\r\n};\r\n\r\nexport const getApiKey = () => {\r\n const stagingKey = 'key_0noanbI2Z65zxHZo';\r\n const productionKey = 'key_cqnWKsLdLroVSpbs';\r\n\r\n if (window.location.href.includes('inte.myevergreenonline.com')\r\n || window.location.href.includes('prep.myevergreenonline.com')) {\r\n return stagingKey;\r\n }\r\n\r\n return productionKey;\r\n};\r\n\r\nexport const filterSortingOptions = (data, market) => {\r\n let { MarketName } = market;\r\n\r\n const filteredSortOpts = data.filter(({ sort_by }) =>\r\n sort_by.startsWith('Price_')\r\n ? sort_by.includes(`${MarketName}_All Customers`)\r\n : true\r\n );\r\n\r\n if (!filteredSortOpts.some(({ sort_by }) => sort_by.includes(MarketName))) {\r\n filteredSortOpts.push(\r\n ...data.filter(\r\n ({ sort_by }) => sort_by === 'Price_Retailer US_All Customers'\r\n )\r\n );\r\n }\r\n\r\n return filteredSortOpts;\r\n};\r\n\r\nexport const transformSortData = (data, market) => {\r\n if (!data) return;\r\n const filteredSortingOptions = market ? filterSortingOptions(data, market) : data;\r\n\r\n return filteredSortingOptions?.map((item) => ({\r\n data: item.sort_by,\r\n display_name: item.display_name,\r\n sort_order: item.sort_order\r\n }));\r\n};\r\n\r\nexport const getSortByValue = (marketName, displayName) => {\r\n const filteredData = filterSortingOptions(sortOpts, marketName);\r\n const item = filteredData.find(\r\n ({ display_name }) => display_name === displayName\r\n );\r\n\r\n return item ? item.sort_by : null;\r\n};\r\n\r\nconst sortOpts = [\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'relevance',\r\n display_name: 'Relevance'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Flag_2_BestSeller',\r\n display_name: 'Best Sellers'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Flag_1_New',\r\n display_name: 'New'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Harley Davidson US_Case pack price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Harley Davidson US_Case pack price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Harley Davidson US_Discounted price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Harley Davidson US_Discounted price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Hearth CAN_All Customers',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Hearth CAN_All Customers',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Hearth CAN_Discounted price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Hearth CAN_Discounted price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Hearth US_All Customers',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Hearth US_All Customers',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Hearth US_Discounted price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Hearth US_Discounted price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Retailer CAN_All Customers',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Retailer CAN_All Customers',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Retailer CAN_Case pack price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Retailer CAN_Case pack price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Retailer CAN_Discounted price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Retailer CAN_Discounted price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Retailer US_All Customers',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Retailer US_All Customers',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Retailer US_Case pack price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Retailer US_Case pack price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Retailer US_Discounted price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Retailer US_Discounted price',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Admin US_All Customers',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Admin US_All Customers',\r\n display_name: 'Price (High to Low)'\r\n },\r\n {\r\n sort_order: 'ascending',\r\n sort_by: 'Price_Admin US_Discounted price',\r\n display_name: 'Price (Low to High)'\r\n },\r\n {\r\n sort_order: 'descending',\r\n sort_by: 'Price_Admin US_Discounted price',\r\n display_name: 'Price (High to Low)'\r\n }\r\n];\r\n","/* eslint-disable prettier/prettier */\r\nimport ConstructorIOClient, {\r\n RecommendationsResponse\r\n} from '@constructor-io/constructorio-client-javascript';\r\nimport { BrowseResultsResponse, SearchResultsResponse } from './types';\r\nimport { getApiKey } from '../helpers';\r\nimport { Facet } from '../types';\r\n\r\nexport const constructorio = new ConstructorIOClient({\r\n apiKey: getApiKey()\r\n});\r\n\r\nexport const fetchBrowseGroups = (groupId: string, params = {}) => {\r\n return new Promise((resolve, reject) => {\r\n constructorio.browse\r\n .getBrowseGroups({\r\n filters: {\r\n group_id: groupId\r\n }\r\n })\r\n .then((response) => {\r\n resolve(response.response);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const fetchBrowseFacets = () => {\r\n return new Promise((resolve, reject) => {\r\n constructorio.browse\r\n .getBrowseFacets({\r\n resultsPerPage: 100\r\n })\r\n .then((response) => {\r\n resolve(response.response.facets as Facet[]);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const fetchBrowseResults = (\r\n filterName: string,\r\n filterValue: string,\r\n params = {}\r\n): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!filterName || typeof filterName !== 'string') {\r\n return Promise.reject(\r\n new Error('filterName should be a non-empty string.')\r\n );\r\n }\r\n if (!filterValue || typeof filterValue !== 'string') {\r\n return Promise.reject(\r\n new Error('filterValue should be a non-empty string.')\r\n );\r\n }\r\n\r\n constructorio.browse\r\n .getBrowseResults(filterName, filterValue, {\r\n ...params\r\n })\r\n .then((response) => {\r\n resolve(response.response as BrowseResultsResponse);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const fetchSearchResults = (\r\n query: string,\r\n params = {}\r\n): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!query || typeof query !== 'string') {\r\n reject(new Error('Query must be a valid string'));\r\n return;\r\n }\r\n\r\n constructorio.search\r\n .getSearchResults(query, {\r\n ...params\r\n })\r\n .then((response) => {\r\n resolve(response.response);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n};\r\n\r\nexport const fetchRecommendations = (\r\n podId: string,\r\n params = {}\r\n): Promise => {\r\n return new Promise((resolve, reject) => {\r\n if (!podId || typeof podId !== 'string') {\r\n return Promise.reject(\r\n new Error('podId should be a non-empty string.')\r\n );\r\n }\r\n\r\n constructorio.recommendations\r\n .getRecommendations(podId, {\r\n ...params\r\n })\r\n .then((response) => {\r\n resolve(response as RecommendationsResponse);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n};\r\n","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./RecommendationProductCard.module.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[1]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./RecommendationProductCard.module.scss\";\n export default content && content.locals ? content.locals : undefined;\n","import React from 'react';\r\n\r\ntype TypographyVariant = 'h1' | 'h2' | 'h3' | 'p' | 'span';\r\n\r\ninterface TypographyProps extends React.HTMLAttributes {\r\n variant?: TypographyVariant;\r\n className?: string;\r\n children?: React.ReactNode;\r\n}\r\n\r\nconst Typography: React.FC = ({\r\n variant,\r\n className,\r\n children\r\n}) => {\r\n switch (variant) {\r\n case 'h1':\r\n return

{children}

;\r\n case 'h2':\r\n return

{children}

;\r\n case 'h3':\r\n return

{children}

;\r\n case 'p':\r\n return

{children}

;\r\n case 'span':\r\n default:\r\n return {children};\r\n }\r\n};\r\n\r\nexport default Typography;\r\n","import React from 'react';\r\n\r\ninterface LinkProps extends React.AnchorHTMLAttributes {\r\n dataAttributes?: {\r\n [key: string]: string;\r\n };\r\n}\r\n\r\nconst Link: React.FC = ({ dataAttributes, children, ...props }) => {\r\n const dataProps = dataAttributes\r\n ? Object.keys(dataAttributes).reduce(\r\n (result, key) => {\r\n result[`data-${key}`] = dataAttributes[key];\r\n return result;\r\n },\r\n {} as { [key: string]: string }\r\n )\r\n : {};\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Link;\r\n","import React, { ReactElement } from 'react';\r\n\r\ninterface IconWrapperProps {\r\n size?: number;\r\n color?: string;\r\n className?: string;\r\n onClick?: () => void;\r\n children?: ReactElement;\r\n}\r\n\r\nconst Icon: React.FC = ({\r\n size = 24,\r\n color = 'black',\r\n className,\r\n onClick,\r\n children\r\n}) => {\r\n const styles = {\r\n width: size,\r\n height: size,\r\n color: color,\r\n cursor: onClick ? 'pointer' : 'default'\r\n };\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default Icon;\r\n","import * as React from 'react';\r\n\r\nimport Icon from '../../components/Icon/Icon';\r\n\r\nconst SvgHeartComponent = (props: React.SVGProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst SvgHeart = (props: any) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default SvgHeart;\r\n","import * as React from 'react';\r\n\r\nimport Icon from '../../components/Icon/Icon';\r\n\r\nconst SvgHeartFilledComponent = (props: React.SVGProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst SvgHeartFilled = (props: any) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default SvgHeartFilled;\r\n","import * as React from 'react';\r\n\r\nimport Icon from '../../components/Icon/Icon';\r\n\r\nconst SvgPlusComponent = (props: React.SVGProps) => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst SvgPlus = (props: any) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default SvgPlus;\r\n","import * as React from 'react';\r\n\r\nimport Icon from '../../components/Icon/Icon';\r\n\r\nconst SvgMinusComponent = (props: React.SVGProps) => (\r\n \r\n \r\n \r\n);\r\n\r\nconst SvgMinus = (props: any) => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default SvgMinus;\r\n","const updateCartNum = (qty: number) => {\r\n const cartNum = $('.cart-count');\r\n if (!cartNum.length) return;\r\n const currentQty = parseInt(cartNum.text());\r\n const newQty = currentQty + qty;\r\n\r\n cartNum.text(newQty);\r\n};\r\n\r\nexport const addToCart = (sku: string, qty) => {\r\n const url = `/DefaultCart/AddToCart?Code=${sku}&Customization=null&Quantity=${qty}&TrackingData=null`;\r\n return fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n const contentType = response.headers.get('content-type');\r\n if (contentType && contentType.indexOf('application/json') !== -1) {\r\n updateCartNum(qty);\r\n return response.json();\r\n } else {\r\n updateCartNum(qty);\r\n return { error: 'Expected JSON but received: ' + contentType };\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(\r\n 'There was a problem with the fetch operation:',\r\n error\r\n );\r\n });\r\n};\r\n\r\nexport const addToWishlist = (sku: string, qty) => {\r\n const url: string = `/Wishlist/AddToCart?Code=${sku}&Customization=null&CustomerCartName=Wishlist&IsWishlist=true&Quantity=${qty}&TrackingData=null`;\r\n\r\n return fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n const contentType = response.headers.get('content-type');\r\n if (contentType && contentType.indexOf('application/json') !== -1) {\r\n return response.json();\r\n } else {\r\n return { error: 'Expected JSON but received: ' + contentType };\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(\r\n 'There was a problem with the fetch operation:',\r\n error\r\n );\r\n });\r\n};\r\n\r\nexport const removeFromWishlist = (sku: string, qty) => {\r\n const url: string = `/Wishlist/RemoveItem?Code=${sku}&Customization=null&CustomerCartName=Wishlist&IsWishlist=false&Quantity=${qty}&TrackingData=null`;\r\n\r\n return fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n })\r\n .then((response) => {\r\n if (!response.ok) {\r\n throw new Error('Network response was not ok');\r\n }\r\n const contentType = response.headers.get('content-type');\r\n if (contentType && contentType.indexOf('application/json') !== -1) {\r\n return response.json();\r\n } else {\r\n return { error: 'Expected JSON but received: ' + contentType };\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(\r\n 'There was a problem with the fetch operation:',\r\n error\r\n );\r\n });\r\n};\r\n","import clsx from 'clsx';\r\nimport React, { useState, useEffect, useMemo } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { CssModuleType } from '@utils/cssModules';\r\n\r\nimport currentCssModule from './RecommendationProductCard.module.scss';\r\nimport Typography from '../../kit/atoms/Typography';\r\nimport Link from '../../kit/atoms/Link';\r\nimport SvgHeart from '../../kit/icons/Heart';\r\nimport SvgHeartFilled from '../../kit/icons/HeartFilled';\r\nimport SvgPlus from '../../kit/icons/Plus';\r\nimport SvgMinus from '../../kit/icons/Minus';\r\n\r\nimport { IProductCard, CategoryData, Market } from '../../types';\r\nimport { addToCart } from '../../api/opti';\r\nimport {\r\n getPriceForMarket,\r\n getOriginalPrice,\r\n getGa4Data,\r\n getDiscountPercent,\r\n priceRound,\r\n getLicensedCollectionsFilterValue\r\n} from '../../helpers';\r\nexport interface RecommendationProductCardProps\r\n extends React.PropsWithChildren {\r\n data: IProductCard;\r\n wishlist;\r\n market: Market;\r\n discount;\r\n handleWishlist?: (SKU: string) => void;\r\n isInSlider?: boolean;\r\n isShortVersion?: boolean;\r\n noMargins?: boolean;\r\n index?: number;\r\n variationsQty?: number;\r\n categoryData: CategoryData;\r\n}\r\n\r\nconst RecommendationProductCard: React.FC = ({\r\n data: { value, variations, strategy },\r\n productData,\r\n wishlist,\r\n market,\r\n discount,\r\n isInSlider = false,\r\n isShortVersion = false,\r\n noMargins = false,\r\n index,\r\n variationsQty,\r\n categoryData\r\n}) => {\r\n const st: CssModuleType = currentCssModule;\r\n const { t } = useTranslation();\r\n const [isHovered, setIsHovered] = useState(false);\r\n const [isAvailable, setIsAvailable] = useState(true);\r\n const [addedToWishlist, setAddedToWishlist] = useState(false);\r\n const [qtyValue, setQtyValue] = useState(\r\n market.MarketId.Value === 'EODUS' || market.MarketId.Value === 'EODCAN'\r\n ? 1\r\n : productData.Minimum\r\n );\r\n const [minimum, setMinimum] = useState(productData.Minimum);\r\n const [price, setPrice] = useState('');\r\n const [originalPrice, setOriginalPrice] = useState();\r\n const [addToCartText, setAddToCartText] = useState(\r\n t('/Product/Button/AddToCart')\r\n );\r\n const [currency, setCurrency] = useState('');\r\n\r\n const memoizedPrice = useMemo(() => {\r\n const renderPrice = () => {\r\n if (\r\n (!productData.IsCustomized && !variations) ||\r\n variations?.length === 1\r\n ) {\r\n return (\r\n price && parseFloat(price) > 0.00 && `$${price} ${currency}`\r\n );\r\n }\r\n\r\n const prices = variations.map(({ data }) =>\r\n getPriceForMarket(data, market.MarketName)\r\n );\r\n\r\n const allEqual = prices.every((price) => price === prices[0]);\r\n\r\n if (allEqual) {\r\n return (\r\n parseFloat(prices[0]) > 0.00 &&\r\n `$${priceRound(prices[0])} ${currency}`\r\n );\r\n } else {\r\n const filteredPrices = prices.filter((price) => price !== null);\r\n const minPrice = Math.min(...filteredPrices);\r\n const maxPrice = Math.max(...filteredPrices);\r\n\r\n if (discount !== 0 && !productData.No_Additional_Discounts) {\r\n if (minPrice > 0.00 && maxPrice > 0.00) {\r\n return `$${getDiscountPercent(\r\n minPrice,\r\n discount\r\n )} ${currency} - $${getDiscountPercent(\r\n maxPrice,\r\n discount\r\n )} ${currency}`;\r\n }\r\n if (minPrice === 0.00)\r\n return `$${getDiscountPercent(\r\n maxPrice,\r\n discount\r\n )} ${currency}`;\r\n if (maxPrice === 0.00)\r\n return `$${getDiscountPercent(\r\n minPrice,\r\n discount\r\n )} ${currency}`;\r\n }\r\n if (minPrice > 0.00 && maxPrice > 0.00) {\r\n return `$${priceRound(\r\n minPrice\r\n )} ${currency} - $${priceRound(maxPrice)} ${currency}`;\r\n }\r\n if (minPrice === 0.00)\r\n return `$${priceRound(maxPrice)} ${currency}`;\r\n if (maxPrice === 0.00)\r\n return `$${priceRound(minPrice)} ${currency}`;\r\n }\r\n };\r\n\r\n return renderPrice();\r\n }, [\r\n price,\r\n currency,\r\n variations,\r\n productData.IsCustomized,\r\n market,\r\n discount\r\n ]);\r\n\r\n const memoizedGa4Data = useMemo(() => {\r\n if (!memoizedPrice) return null;\r\n\r\n const ga4Data = () =>\r\n JSON.stringify(\r\n getGa4Data(\r\n index,\r\n productData,\r\n value,\r\n memoizedPrice,\r\n qtyValue,\r\n categoryData\r\n )\r\n );\r\n\r\n return ga4Data();\r\n }, [index, productData, value, memoizedPrice, qtyValue, categoryData]);\r\n\r\n const isInWishlist = () =>\r\n wishlist?.some((item) => item.Code === productData.SKU);\r\n\r\n const renderWishlistIcon = () => {\r\n if (isInWishlist() || addedToWishlist || isHovered) {\r\n return ;\r\n }\r\n\r\n return ;\r\n };\r\n\r\n const getEODIncrement = (increment) => {\r\n return market.MarketId.Value === 'EODUS' ||\r\n market.MarketId.Value === 'EODCAN'\r\n ? 1\r\n : increment;\r\n };\r\n\r\n const increaseQty = () => {\r\n if (qtyValue < productData.Maximum) {\r\n setQtyValue(\r\n (prevValue) =>\r\n prevValue + getEODIncrement(productData.Increment)\r\n );\r\n }\r\n };\r\n\r\n const dereaseQty = () => {\r\n if (qtyValue > minimum) {\r\n setQtyValue(\r\n (prevValue) =>\r\n prevValue - getEODIncrement(productData.Increment)\r\n );\r\n }\r\n };\r\n\r\n const handleKeyPress = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n };\r\n\r\n const getFinalPrice = () => {\r\n const marketPrice = getPriceForMarket(productData, market.MarketName);\r\n const oldPrice = getOriginalPrice(productData, market.MarketName);\r\n\r\n let finalPrice = marketPrice;\r\n\r\n if (!oldPrice && !discount) {\r\n setPrice(finalPrice?.toFixed(2));\r\n return;\r\n }\r\n\r\n if (discount !== 0) {\r\n const discountAmount = (marketPrice * discount) / 100;\r\n finalPrice = marketPrice - discountAmount;\r\n\r\n if (!oldPrice) {\r\n setPrice(\r\n priceRound(\r\n !productData.No_Additional_Discounts\r\n ? finalPrice\r\n : marketPrice\r\n )\r\n );\r\n return;\r\n }\r\n\r\n const saleDiscountAmount = (oldPrice * discount) / 100;\r\n const finalDiscountPrice = priceRound(\r\n oldPrice - saleDiscountAmount\r\n );\r\n setOriginalPrice(\r\n priceRound(\r\n !productData.No_Additional_Discounts\r\n ? finalDiscountPrice\r\n : oldPrice\r\n )\r\n );\r\n setPrice(\r\n priceRound(\r\n !productData.No_Additional_Discounts\r\n ? finalPrice\r\n : marketPrice\r\n )\r\n );\r\n\r\n return;\r\n }\r\n\r\n if (oldPrice && !discount) {\r\n setOriginalPrice(oldPrice?.toFixed(2));\r\n setPrice(finalPrice?.toFixed(2));\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n getFinalPrice();\r\n setCurrency(market.Currencies[0]);\r\n setMinimum(\r\n market.MarketId.Value === 'EODUS' ||\r\n market.MarketId.Value === 'EODCAN'\r\n ? 1\r\n : productData.Minimum\r\n );\r\n\r\n const handler = (event) => {\r\n if (\r\n event.detail.attributeName === 'isAddedToWishlist' &&\r\n event.detail.btnId === productData.SKU\r\n ) {\r\n setAddedToWishlist(true);\r\n const ga4data = getGa4Data(\r\n index,\r\n productData,\r\n value,\r\n event.detail.price,\r\n qtyValue,\r\n categoryData\r\n );\r\n if (Boolean(ga4data)) {\r\n window.wowga4.reportAddToWishlist(\r\n ga4data,\r\n qtyValue,\r\n window.cartHelper.GetCartCurrency()\r\n );\r\n }\r\n } else if (\r\n event.detail.attributeName === 'isAddedToCart' &&\r\n event.detail.btnId === productData.SKU\r\n ) {\r\n const ga4data = getGa4Data(\r\n index,\r\n productData,\r\n value,\r\n event.detail.price,\r\n qtyValue,\r\n categoryData\r\n );\r\n if (Boolean(ga4data)) {\r\n window.wowga4.reportAddToCart(\r\n ga4data,\r\n qtyValue,\r\n window.cartHelper.GetCartCurrency()\r\n );\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener('attributeChanged', handler);\r\n\r\n return () => {\r\n document.removeEventListener('attributeChanged', handler);\r\n };\r\n }, []);\r\n\r\n const addToCartAction = (e) => {\r\n e.preventDefault();\r\n\r\n if (!isAvailable) return;\r\n addToCart(productData.SKU, qtyValue);\r\n setAddToCartText('Added to cart');\r\n\r\n const ga4data =\r\n Boolean(window.wowga4) && window.wowga4.getItemData(e.target);\r\n\r\n if (Boolean(ga4data)) {\r\n window.wowga4.reportAddToCart(\r\n ga4data,\r\n qtyValue,\r\n window.cartHelper.GetCartCurrency()\r\n );\r\n }\r\n\r\n setTimeout(() => {\r\n setAddToCartText(t('/Product/Button/AddToCart'));\r\n }, 1500);\r\n };\r\n\r\n const addToWishlistAction = (e) => {\r\n e.preventDefault();\r\n };\r\n\r\n const handleBodyScroll = () => {\r\n const body = document.querySelector('body');\r\n const scrollTop = document.documentElement.scrollTop;\r\n body.style.top = `-${scrollTop}px`;\r\n body.setAttribute('data-top', scrollTop.toString());\r\n };\r\n\r\n const onLinkClick = () => {\r\n const url = new URL(window.location.href);\r\n url.searchParams.set('position', window.scrollY.toString());\r\n window.history.pushState({}, '', url.toString());\r\n };\r\n\r\n const renderButtons = () => {\r\n if (!productData.IsCustomized) {\r\n if (variationsQty === 1) {\r\n return (\r\n <>\r\n addToCartAction(e)}\r\n onAuxClick={(e) => addToCartAction(e)}\r\n data-cnstrc-item-id={productData.SKU}\r\n data-cnstrc-item-name={value}\r\n data-cnstrc-item-variation-id={\r\n productData.variation_id\r\n }\r\n {...(productData.Availability_Filter\r\n ? { 'data-cnstrc-item-price': price }\r\n : {})}\r\n data-ga4-item={memoizedGa4Data}\r\n >\r\n {addToCartText}\r\n \r\n setIsHovered(true)}\r\n onMouseLeave={() => setIsHovered(false)}\r\n className={clsx(\r\n st.btn,\r\n st['btn-primary'],\r\n st['addToWishlist'],\r\n 'addToWishlist'\r\n )}\r\n data-cnstrc-btn='add_to_wishlist'\r\n data-code={productData.SKU}\r\n data-price={memoizedPrice}\r\n data-qty={qtyValue}\r\n onClick={(e) => addToWishlistAction(e)}\r\n data-ga4-item={memoizedGa4Data}\r\n >\r\n {renderWishlistIcon()}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n onLinkClick()}\r\n >\r\n {t('/Product/Button/ShowMoreOptions')}\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n onLinkClick()}\r\n >\r\n {t('/Product/Button/Customize')}\r\n \r\n );\r\n }\r\n };\r\n\r\n return (\r\n \r\n
\r\n onLinkClick()}\r\n >\r\n \r\n \r\n {productData.Case_Pack_Quantity > 0 &&\r\n productData[`Price_${market.MarketName}_Case pack price`] ? (\r\n
\r\n \r\n \r\n {t('/Product/CasePackPricing')}\r\n \r\n
\r\n ) : null}\r\n handleBodyScroll()}\r\n data-ga4-item={memoizedGa4Data}\r\n >\r\n {t('/Product/Quickview')}\r\n \r\n
\r\n {productData.Flag_1_New ? (\r\n \r\n New\r\n \r\n ) : (\r\n ''\r\n )}\r\n {productData.Flag_2_BestSeller ? (\r\n \r\n Best Seller\r\n \r\n ) : (\r\n ''\r\n )}\r\n {originalPrice ? (\r\n \r\n Sale\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n
\r\n \r\n {getLicensedCollectionsFilterValue(productData.facets)}\r\n \r\n \r\n onLinkClick()}\r\n >\r\n {value}\r\n \r\n \r\n \r\n {originalPrice &&\r\n parseFloat(originalPrice) > parseFloat(price) && (\r\n \r\n ${originalPrice} {currency}\r\n \r\n )}\r\n \r\n {memoizedPrice}\r\n \r\n \r\n {!isShortVersion ? (\r\n <>\r\n \r\n {!memoizedPrice?.length ? (\r\n \r\n {t('/Product/NotAvailable')}\r\n \r\n ) : null}\r\n {t('/Shared/Sku')} {productData.SKU} \r\n {memoizedPrice.length ? (\r\n \r\n {`${t('/Product/Ships')} ${\r\n productData.Availability_Filter\r\n }`}\r\n \r\n ) : null}\r\n \r\n\r\n
\r\n {!productData.IsCustomized &&\r\n variationsQty === 1 &&\r\n memoizedPrice?.length ? (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n setQtyValue(Number(e.target.value))\r\n }\r\n min={minimum}\r\n max={productData.Maximum}\r\n step={productData.Increment}\r\n name='qty'\r\n className={st['quantity__field']}\r\n />\r\n \r\n
\r\n
\r\n ) : null}\r\n \r\n {memoizedPrice?.length ? renderButtons() : null}\r\n
\r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nexport default RecommendationProductCard;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport clsx from 'clsx';\r\nimport Slider from 'react-slick';\r\n\r\nimport { CssModuleType } from '@utils/cssModules';\r\n\r\nimport currentCssModule from './Recommendations.module.scss';\r\nimport { CategoryData, IProductCard, Market, Wishlist } from '../../types';\r\nimport { fetchRecommendations } from '../../api/constructor';\r\nimport RecommendationProductCard from '@components/RecommendationProductCard';\r\nimport Typography from '../../kit/atoms/Typography';\r\nimport {\r\n getGa4Data,\r\n getPriceForMarket,\r\n getObjectByDefaultVariant\r\n} from '../../helpers';\r\n\r\ninterface RecommendationsProps {\r\n isSlider?: boolean;\r\n isAutoplay: string;\r\n autoplaySpeed: string;\r\n isVertical?: boolean;\r\n count?: number;\r\n itemId?: string;\r\n podId: string;\r\n marketData: string;\r\n wishlistData: string;\r\n discountData: string;\r\n headingType: string;\r\n showOnNoResults: string;\r\n}\r\n\r\nconst Recommendations: React.FC = ({\r\n isSlider,\r\n isAutoplay,\r\n autoplaySpeed,\r\n isVertical,\r\n podId,\r\n count,\r\n itemId,\r\n marketData,\r\n wishlistData,\r\n discountData,\r\n headingType,\r\n showOnNoResults\r\n}) => {\r\n const st: CssModuleType = currentCssModule;\r\n const [products, setProducts] = useState([]);\r\n const [market, setMarket] = useState();\r\n const [discount, setDiscount] = useState('');\r\n const [heading, setHeading] = useState('');\r\n const [resultId, setResultId] = useState('');\r\n const [totalResults, setTotalResults] = useState(0);\r\n const [categoryData, setCategoryData] = useState(null);\r\n const [isHorizontal, setIsHorizontal] = useState(false);\r\n const [wishlist, setWishlist] = useState(null);\r\n const sliderRef = useRef(null);\r\n\r\n const sliderOptions = {\r\n autoplay: isAutoplay === 'True' ? true : false,\r\n slidesToShow: 4,\r\n slidesToScroll: 1,\r\n infinite: true,\r\n autoplaySpeed: parseInt(autoplaySpeed),\r\n\r\n responsive: [\r\n {\r\n breakpoint: 1080,\r\n settings: {\r\n slidesToShow: 2,\r\n slidesToScroll: 2\r\n }\r\n },\r\n {\r\n breakpoint: 480,\r\n settings: {\r\n slidesToShow: 1\r\n }\r\n }\r\n ]\r\n };\r\n\r\n useEffect(() => {\r\n if (products?.length === 0) return;\r\n\r\n if (products.length <= 4 && !isVertical) setIsHorizontal(true);\r\n }, [products]);\r\n\r\n useEffect(() => {\r\n if (categoryData && products) {\r\n window.dataLayer.push({ ecommerce: null });\r\n window.dataLayer.push({\r\n event: 'view_item_list',\r\n ecommerce: {\r\n item_list_id: categoryData.group_id,\r\n item_list_name: categoryData.display_name,\r\n items: products.map((item, ind) => {\r\n return getGa4Data(\r\n ind,\r\n item.data,\r\n item.value,\r\n getPriceForMarket(item.data, market.MarketName),\r\n item.data.Increment,\r\n categoryData\r\n );\r\n })\r\n }\r\n });\r\n }\r\n }, [categoryData, products]);\r\n\r\n const initComponent = () => {\r\n marketData && setMarket(JSON.parse(marketData));\r\n wishlistData && setWishlist(JSON.parse(wishlistData));\r\n discountData && setDiscount(JSON.parse(discountData));\r\n const url = new URL(window.location.href);\r\n const query = url.searchParams.get('search');\r\n\r\n const props = {};\r\n const newObj = {\r\n ...props,\r\n ...(query !== null && query !== undefined ? { term: query } : {}),\r\n ...(itemId !== null && itemId !== undefined\r\n ? { itemIds: itemId }\r\n : {}),\r\n ...(count !== null && count !== undefined\r\n ? { numResults: count }\r\n : {})\r\n };\r\n\r\n fetchRecommendations(podId, { ...newObj }).then((data) => {\r\n setProducts(data.response.results);\r\n setHeading(data.response.pod.display_name);\r\n setResultId(data.result_id);\r\n setTotalResults(data.response.total_num_results);\r\n setCategoryData({\r\n display_name: heading,\r\n group_id: heading\r\n });\r\n });\r\n };\r\n\r\n const watchElement = (element) => {\r\n if (!element) return;\r\n\r\n const observer = new MutationObserver((mutations) => {\r\n mutations.forEach((mutation) => {\r\n if (element.getAttribute(mutation.attributeName) === 'true') {\r\n initComponent();\r\n }\r\n });\r\n });\r\n\r\n const config = {\r\n attributes: true,\r\n attributeOldValue: true,\r\n attributeFilter: ['init-recommendations']\r\n };\r\n\r\n observer.observe(element, config);\r\n };\r\n\r\n useEffect(() => {\r\n if (showOnNoResults === 'true') {\r\n const noResultsRecommendations = document.querySelector(\r\n '.product-recommendations-block.no-results > div'\r\n );\r\n watchElement(noResultsRecommendations);\r\n\r\n return;\r\n }\r\n\r\n initComponent();\r\n }, []);\r\n\r\n const handleWishlist = (variation_id: string) => {\r\n setWishlist((prevWishlist) => {\r\n if (!prevWishlist) return null;\r\n\r\n const itemIndex = prevWishlist.findIndex(\r\n (item) => item.Code === variation_id\r\n );\r\n\r\n if (itemIndex !== -1) {\r\n return [\r\n ...prevWishlist.slice(0, itemIndex),\r\n ...prevWishlist.slice(itemIndex + 1)\r\n ];\r\n } else {\r\n return [...prevWishlist, { Code: variation_id, Quantity: '1' }];\r\n }\r\n });\r\n };\r\n\r\n const getHeadingType = (headingType) => {\r\n const types = {\r\n 'best-seller': st['heading--big'],\r\n 'cross-sell-products': st['heading--small'],\r\n 'cross-sell-products--vertical': st['heading--small-vertical']\r\n };\r\n\r\n return types[headingType];\r\n };\r\n\r\n const renderRecommendations = () => {\r\n if (products.length > 4 && isSlider)\r\n return (\r\n \r\n {products?.map((item) => (\r\n \r\n ))}\r\n \r\n );\r\n\r\n return products?.map((item) => (\r\n \r\n ));\r\n };\r\n\r\n return (\r\n
\r\n {heading ? (\r\n \r\n {heading}\r\n \r\n ) : null}\r\n \r\n {renderRecommendations()}\r\n
\r\n \r\n );\r\n};\r\n\r\nexport default Recommendations;\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\n\r\nimport nsEN from './locales/en/translation.json';\r\nimport nsFR from './locales/fr/translation.json';\r\n\r\nconst resources = {\r\n en: {\r\n translation: nsEN\r\n },\r\n fr: {\r\n translation: nsFR\r\n }\r\n}\r\n\r\ni18n\r\n .use(initReactI18next)\r\n .use(LanguageDetector)\r\n .init({\r\n resources,\r\n fallbackLng: 'en',\r\n //debug: true,\r\n detection: {\r\n order: ['path']\r\n },\r\n interpolation:{\r\n escapeValue: false\r\n }\r\n });\r\nexport default i18n;","import React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport Recommendations from './widgets/Recommendations';\r\n\r\nconst recommendations = document.querySelectorAll(\r\n '.constructor-recommendations'\r\n);\r\n\r\nimport './i18n';\r\n\r\nrecommendations.forEach((recommendationsDiv) => {\r\n const attributes = {\r\n podId: recommendationsDiv.getAttribute('data-podId'),\r\n itemId: recommendationsDiv.getAttribute('data-itemId'),\r\n count: parseInt(recommendationsDiv.getAttribute('data-count')),\r\n isSlider: recommendationsDiv.getAttribute('data-slider')?.length > 0,\r\n isAutoplay: recommendationsDiv.getAttribute('data-slider-autoplay'),\r\n autoplaySpeed: recommendationsDiv.getAttribute('data-autoplay-speed'),\r\n isVertical: recommendationsDiv.getAttribute('vertical')?.length > 0,\r\n marketData: recommendationsDiv.getAttribute('data-market'),\r\n wishlistData: recommendationsDiv.getAttribute('data-wishlists'),\r\n discountData: recommendationsDiv.getAttribute('data-discount'),\r\n headingType: recommendationsDiv.getAttribute('data-heading-type'),\r\n showOnNoResults: recommendationsDiv.getAttribute(\r\n 'data-show-on-no-results'\r\n )\r\n };\r\n\r\n ReactDOM.createRoot(recommendationsDiv).render(\r\n \r\n );\r\n});\r\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.RecommendationProductCard-module__btn-group__dAvv9,.RecommendationProductCard-module__btn-group-vertical__oyKwd{position:relative;display:inline-flex;vertical-align:middle}.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0,.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0{position:relative;flex:1 1 auto}.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0:hover,.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0:hover{z-index:1}.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0:focus,.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0:active,.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__active__LUnwD,.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0:focus,.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0:active,.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__active__LUnwD{z-index:1}.RecommendationProductCard-module__btn-toolbar__NbTvJ{display:flex;flex-wrap:wrap;justify-content:flex-start}.RecommendationProductCard-module__btn-toolbar__NbTvJ .RecommendationProductCard-module__input-group__seTgG{width:auto}.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0:not(:first-child),.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn-group__dAvv9:not(:first-child){margin-left:-1px}.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0:not(:last-child):not(.RecommendationProductCard-module__dropdown-toggle__PAhqX),.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn-group__dAvv9:not(:last-child)>.RecommendationProductCard-module__btn__TJVa0{border-top-right-radius:0;border-bottom-right-radius:0}.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0:not(:first-child),.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn-group__dAvv9:not(:first-child)>.RecommendationProductCard-module__btn__TJVa0{border-top-left-radius:0;border-bottom-left-radius:0}.RecommendationProductCard-module__dropdown-toggle-split__WjISA{padding-right:.5625rem;padding-left:.5625rem}.RecommendationProductCard-module__dropdown-toggle-split__WjISA::after,.RecommendationProductCard-module__dropup__gFWgX .RecommendationProductCard-module__dropdown-toggle-split__WjISA::after,.RecommendationProductCard-module__dropright__Mpj_D .RecommendationProductCard-module__dropdown-toggle-split__WjISA::after{margin-left:0}.RecommendationProductCard-module__dropleft__MexSo .RecommendationProductCard-module__dropdown-toggle-split__WjISA::before{margin-right:0}.RecommendationProductCard-module__btn-sm__wFBWA+.RecommendationProductCard-module__dropdown-toggle-split__WjISA,.RecommendationProductCard-module__btn-group-sm__cMcwx>.RecommendationProductCard-module__btn__TJVa0+.RecommendationProductCard-module__dropdown-toggle-split__WjISA{padding-right:.375rem;padding-left:.375rem}.RecommendationProductCard-module__btn-lg__KBfln+.RecommendationProductCard-module__dropdown-toggle-split__WjISA,.RecommendationProductCard-module__btn-group-lg__bxKex>.RecommendationProductCard-module__btn__TJVa0+.RecommendationProductCard-module__dropdown-toggle-split__WjISA{padding-right:.75rem;padding-left:.75rem}.RecommendationProductCard-module__btn-group-vertical__oyKwd{flex-direction:column;align-items:flex-start;justify-content:center}.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0,.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn-group__dAvv9{width:100%}.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0:not(:first-child),.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn-group__dAvv9:not(:first-child){margin-top:-1px}.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0:not(:last-child):not(.RecommendationProductCard-module__dropdown-toggle__PAhqX),.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn-group__dAvv9:not(:last-child)>.RecommendationProductCard-module__btn__TJVa0{border-bottom-right-radius:0;border-bottom-left-radius:0}.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn__TJVa0:not(:first-child),.RecommendationProductCard-module__btn-group-vertical__oyKwd>.RecommendationProductCard-module__btn-group__dAvv9:not(:first-child)>.RecommendationProductCard-module__btn__TJVa0{border-top-left-radius:0;border-top-right-radius:0}.RecommendationProductCard-module__btn-group-toggle__KDGgy>.RecommendationProductCard-module__btn__TJVa0,.RecommendationProductCard-module__btn-group-toggle__KDGgy>.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0{margin-bottom:0}.RecommendationProductCard-module__btn-group-toggle__KDGgy>.RecommendationProductCard-module__btn__TJVa0 input[type=radio],.RecommendationProductCard-module__btn-group-toggle__KDGgy>.RecommendationProductCard-module__btn__TJVa0 input[type=checkbox],.RecommendationProductCard-module__btn-group-toggle__KDGgy>.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0 input[type=radio],.RecommendationProductCard-module__btn-group-toggle__KDGgy>.RecommendationProductCard-module__btn-group__dAvv9>.RecommendationProductCard-module__btn__TJVa0 input[type=checkbox]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-primary__y6p1j{font-family:canada-type-gibson,sans-serif;font-weight:500;font-style:normal;font-size:.813rem;color:#fff;letter-spacing:.13px;background-color:#006346;border:2px solid #006346;min-height:3.5rem;padding:.625rem 1.875rem;text-transform:uppercase;text-decoration:none;letter-spacing:.78px;line-height:2.15}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-primary__y6p1j:hover{transition:all linear .2s}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-primary__y6p1j:active,.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-primary__y6p1j:hover,.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-primary__y6p1j:focus{background-color:#52a886;border-color:#52a886;color:#fff}@media(max-width: 600px){.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-primary__y6p1j{width:100%}}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-secondary__lalPy{font-family:canada-type-gibson,sans-serif;font-weight:500;font-style:normal;font-size:.813rem;color:#222;letter-spacing:.13px;background-color:#09e5e5;border:2px solid #09e5e5;min-height:3.5rem;padding:.625rem 1.875rem;text-transform:uppercase;text-decoration:none;letter-spacing:.78px;line-height:2.15}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-secondary__lalPy:hover{transition:all linear .2s}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-secondary__lalPy:active,.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-secondary__lalPy:hover,.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-secondary__lalPy:focus{background-color:#10d0d0;border-color:#10d0d0;color:#222}@media(max-width: 600px){.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-secondary__lalPy{width:100%}}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-ghost__jjCjm{font-family:canada-type-gibson,sans-serif;font-weight:500;font-style:normal;font-size:.813rem;color:#006346;letter-spacing:.13px;background-color:rgba(0,0,0,0);border:2px solid #006346;min-height:3.5rem;padding:.625rem 1.875rem;text-transform:uppercase;text-decoration:none;letter-spacing:.78px;line-height:2.15}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-ghost__jjCjm:hover{transition:all linear .2s}.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-ghost__jjCjm:active,.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-ghost__jjCjm:hover,.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-ghost__jjCjm:focus{background-color:#006346;border-color:#006346;color:#fff}@media(max-width: 600px){.RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__btn-ghost__jjCjm{width:100%}}button:disabled,.RecommendationProductCard-module__btn__TJVa0:disabled,button.RecommendationProductCard-module__disabled__BZZdY,btn.RecommendationProductCard-module__disabled__BZZdY{font-family:canada-type-gibson,sans-serif;font-weight:500;font-style:normal;font-size:.813rem;color:#949698;letter-spacing:.13px;background-color:#d9d9d6;border:2px solid #949698;min-height:3.5rem;padding:.625rem 1.875rem;text-transform:uppercase;text-decoration:none;letter-spacing:.78px;line-height:2.15;user-select:none;pointer-events:none;cursor:default}button:disabled:hover,.RecommendationProductCard-module__btn__TJVa0:disabled:hover,button.RecommendationProductCard-module__disabled__BZZdY:hover,btn.RecommendationProductCard-module__disabled__BZZdY:hover{transition:all linear .2s}button:disabled:active,button:disabled:hover,button:disabled:focus,.RecommendationProductCard-module__btn__TJVa0:disabled:active,.RecommendationProductCard-module__btn__TJVa0:disabled:hover,.RecommendationProductCard-module__btn__TJVa0:disabled:focus,button.RecommendationProductCard-module__disabled__BZZdY:active,button.RecommendationProductCard-module__disabled__BZZdY:hover,button.RecommendationProductCard-module__disabled__BZZdY:focus,btn.RecommendationProductCard-module__disabled__BZZdY:active,btn.RecommendationProductCard-module__disabled__BZZdY:hover,btn.RecommendationProductCard-module__disabled__BZZdY:focus{background-color:#d9d9d6;border-color:#949698;color:#949698}@media(max-width: 600px){button:disabled,.RecommendationProductCard-module__btn__TJVa0:disabled,button.RecommendationProductCard-module__disabled__BZZdY,btn.RecommendationProductCard-module__disabled__BZZdY{width:100%}}.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY).RecommendationProductCard-module__active__LUnwD,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY):active,.RecommendationProductCard-module__show__Z3dHl>.RecommendationProductCard-module__btn-primary__y6p1j.RecommendationProductCard-module__dropdown-toggle__PAhqX{font-family:canada-type-gibson,sans-serif;font-weight:500;font-style:normal;font-size:.813rem;color:#fff;letter-spacing:.13px;background-color:#006346;border:2px solid #006346;min-height:3.5rem;padding:.625rem 1.875rem;text-transform:uppercase;text-decoration:none;letter-spacing:.78px;line-height:2.15}.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY).RecommendationProductCard-module__active__LUnwD:hover,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY):active:hover,.RecommendationProductCard-module__show__Z3dHl>.RecommendationProductCard-module__btn-primary__y6p1j.RecommendationProductCard-module__dropdown-toggle__PAhqX:hover{transition:all linear .2s}.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY).RecommendationProductCard-module__active__LUnwD:active,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY).RecommendationProductCard-module__active__LUnwD:hover,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY).RecommendationProductCard-module__active__LUnwD:focus,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY):active:active,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY):active:hover,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY):active:focus,.RecommendationProductCard-module__show__Z3dHl>.RecommendationProductCard-module__btn-primary__y6p1j.RecommendationProductCard-module__dropdown-toggle__PAhqX:active,.RecommendationProductCard-module__show__Z3dHl>.RecommendationProductCard-module__btn-primary__y6p1j.RecommendationProductCard-module__dropdown-toggle__PAhqX:hover,.RecommendationProductCard-module__show__Z3dHl>.RecommendationProductCard-module__btn-primary__y6p1j.RecommendationProductCard-module__dropdown-toggle__PAhqX:focus{background-color:#52a886;border-color:#52a886;color:#fff}@media(max-width: 600px){.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY).RecommendationProductCard-module__active__LUnwD,.RecommendationProductCard-module__btn-primary__y6p1j:not(:disabled):not(.RecommendationProductCard-module__disabled__BZZdY):active,.RecommendationProductCard-module__show__Z3dHl>.RecommendationProductCard-module__btn-primary__y6p1j.RecommendationProductCard-module__dropdown-toggle__PAhqX{width:100%}}.RecommendationProductCard-module__product-card__FVoHC{display:flex !important;flex-direction:column;width:100%;align-items:stretch;margin-bottom:3.125rem;cursor:pointer}@media(max-width: 1079px){.RecommendationProductCard-module__product-card__FVoHC{max-width:33.813rem}}.RecommendationProductCard-module__product-card__FVoHC>*{flex:0 0 auto}.RecommendationProductCard-module__product-card__FVoHC.RecommendationProductCard-module__small__lUHeS{margin-bottom:.625rem}@media(min-width: 576px){.RecommendationProductCard-module__product-card__FVoHC.RecommendationProductCard-module__no-margins__Eiowp{margin-bottom:0}}.RecommendationProductCard-module__product-card__image-wrap__gfLXn{position:relative;width:100%;margin-bottom:.9375rem;padding-top:100%;border:1px solid #d9d9d6}.RecommendationProductCard-module__product-card__image-wrap__gfLXn .RecommendationProductCard-module__casePackPrice__eCSZo{position:absolute;bottom:0;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:1.4375rem;padding:.25rem;background-color:#197080}.RecommendationProductCard-module__product-card__image-wrap__gfLXn .RecommendationProductCard-module__casePackPrice__eCSZo p{font-size:.625rem;line-height:1;color:#fff;text-align:center;text-transform:uppercase}.RecommendationProductCard-module__product-card__image-wrap__gfLXn .RecommendationProductCard-module__casePackPrice__eCSZo p .RecommendationProductCard-module__fal__w5xOn{margin-right:.25rem}.RecommendationProductCard-module__product-card__image-wrap__gfLXn .RecommendationProductCard-module__quickView__apOfb{cursor:pointer;opacity:0;display:flex;align-items:center;justify-content:center;position:absolute;left:0;bottom:0;width:100%;height:2.3125rem;background-color:#bce5d5;transition:opacity .25s ease-in-out;font-family:canada-type-gibson,sans-serif;font-weight:400;font-style:normal;text-transform:uppercase}.RecommendationProductCard-module__product-card__image-wrap__gfLXn:hover .RecommendationProductCard-module__quickView__apOfb{opacity:1}.RecommendationProductCard-module__product-card__image__ovMir{position:absolute;top:0;left:0;height:100%;width:100%;cursor:pointer;border:0;padding:0;margin:0}.RecommendationProductCard-module__product-card__image-block__nhs3I{height:100%;width:100%;object-fit:contain;user-select:none}.RecommendationProductCard-module__product-card__flags___XTzX{position:absolute;top:0;left:0;display:flex;column-gap:.375rem}.RecommendationProductCard-module__product-card__flags___XTzX .RecommendationProductCard-module__flag__igvI3{padding:.1875rem .25rem;background-color:#006346;font-family:canada-type-gibson,sans-serif;font-weight:500;font-style:normal;font-size:.625rem;color:#fff;text-transform:uppercase}.RecommendationProductCard-module__product-card__brand__a_DUZ{margin-bottom:.5rem;font-size:.8125rem;text-align:center;color:#53565a;font-family:canada-type-gibson,sans-serif;font-weight:400;font-style:normal}.RecommendationProductCard-module__product-card__name__bJ4gO{text-align:center}.RecommendationProductCard-module__product-card__name-link__amoKc{font-family:mrs-eaves-xl-serif,serif;font-weight:700;font-style:normal;font-size:1.125rem;line-height:1;letter-spacing:.9px;color:#3c3c3c;text-decoration:none;cursor:pointer}.RecommendationProductCard-module__product-card__price__MJDiM{line-height:2rem;letter-spacing:.28px;display:flex;justify-content:center;column-gap:.25rem}.RecommendationProductCard-module__product-card__price--old__vQLHc{color:#949698;position:relative}.RecommendationProductCard-module__product-card__price--old__vQLHc::after{content:\"\";display:inline-block;position:absolute;width:100%;border-bottom:1px solid #949698;top:40%;left:0}.RecommendationProductCard-module__product-card__price__MJDiM span{font-family:canada-type-gibson,sans-serif;font-weight:400;font-style:normal;font-size:1.125rem}.RecommendationProductCard-module__product-card__price__MJDiM.RecommendationProductCard-module__small__lUHeS span{font-size:.8125rem}.RecommendationProductCard-module__product-card__sku__xjJhQ{font-family:canada-type-gibson,sans-serif;font-weight:400;font-style:normal;margin-bottom:.90625rem;text-align:center;font-size:.813rem;line-height:1.23;color:#222;letter-spacing:.13px}.RecommendationProductCard-module__product-card__sku--column__KfWQg{display:flex;flex-direction:column;row-gap:.15rem}.RecommendationProductCard-module__product-card__availability__oi4Hp{font-weight:500;text-transform:uppercase;color:#52a886;margin-left:.125rem}.RecommendationProductCard-module__product-card__availability--not-available__UzPdd{color:#000;font-size:1.125rem}.RecommendationProductCard-module__product-card__bottom__zXRx7{display:flex;flex:1 0 auto;flex-direction:column;justify-content:flex-end}.RecommendationProductCard-module__product-card__buttons__YvqCs{width:100%;max-height:3.5rem;column-gap:1px}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0{min-width:1px;margin:0}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToCart__jMYVG{display:flex;justify-content:center;align-items:center;text-align:center;flex:2 0 auto;flex-shrink:0;flex-grow:1;margin-right:1px;user-select:none;color:#fff;cursor:pointer}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToCart__jMYVG[aria-disabled]{background-color:#006346;cursor:default;border:none}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToCart__jMYVG:hover{color:#fff}@media screen and (max-width: 600px){.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToCart__jMYVG{flex:0 1 auto}}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToWishlist__yiuEg{flex:0 0 3.3125rem;padding:0;margin-right:0;display:flex;justify-content:center;align-items:center;cursor:pointer}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToWishlist__yiuEg svg{overflow:hidden;vertical-align:middle;fill:#fff;stroke-width:1.5;width:1rem;height:1rem;position:relative;cursor:pointer;display:block}.RecommendationProductCard-module__product-card__buttons__YvqCs .RecommendationProductCard-module__btn__TJVa0.RecommendationProductCard-module__addToWishlist__yiuEg:hover svg{fill:#fff}.RecommendationProductCard-module__product-card__quantity__Pd9wg{display:flex;border-top:1px solid #000}.RecommendationProductCard-module__product-card__quantity__Pd9wg label{display:flex;flex:1 1 8.53125rem;align-items:center;font-family:mrs-eaves-xl-serif,serif;font-weight:400;font-style:normal;text-transform:none;font-size:.9375rem;line-height:1.87}.RecommendationProductCard-module__product-card__quantity__Pd9wg label span{margin-left:.25rem;line-height:1.87;text-transform:none;color:#959595}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__DRrZP{display:flex;justify-content:space-between;padding:1.375rem .875rem;border:1px solid #d9d9d6;background:#fff;flex:1 1 8.71875rem;border-top:none;border-right:none;border-bottom:none}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__DRrZP label{display:none}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__field__D5Znq{flex:0 0 auto;max-width:20px;border:none;font-family:canada-type-gibson,sans-serif;font-weight:400;font-style:normal;text-align:center;pointer-events:all;padding:0;user-select:none}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__field__D5Znq::-webkit-inner-spin-button,.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__field__D5Znq::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__field__D5Znq:focus-visible{outline:none}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__button__gKVFh{pointer-events:all;flex:0 0 auto;cursor:pointer}.RecommendationProductCard-module__product-card__quantity__Pd9wg .RecommendationProductCard-module__quantity__button__gKVFh svg{height:15px;width:15px}.RecommendationProductCard-module__product-card__previous-quantity__xuPuA{text-align:center;font-size:.813rem;margin-bottom:.5rem}.RecommendationProductCard-module__product-card__case-pack-badge__YKc_X{position:absolute;bottom:0;left:0;display:flex;align-items:center;justify-content:center;width:100%;height:1.4375rem;padding:.25rem;background-color:#197080}.RecommendationProductCard-module__product-card__case-pack-badge__YKc_X i{margin-right:.25rem}.RecommendationProductCard-module__product-card__case-pack-badge__YKc_X p{font-family:canada-type-gibson,sans-serif;font-weight:400;font-style:normal;color:#fff;font-size:.625rem;line-height:1;text-align:center;text-transform:uppercase}`, \"\",{\"version\":3,\"sources\":[\"webpack://./src/kit/styles/_global.scss\",\"webpack://./src/kit/styles/_mixins.scss\",\"webpack://./src/kit/styles/_variables.scss\",\"webpack://./src/components/RecommendationProductCard/RecommendationProductCard.module.scss\"],\"names\":[],\"mappings\":\"AAMA,iHAEE,iBAAA,CACA,mBAAA,CACA,qBAAA,CAEA,6MACE,iBAAA,CACA,aAAA,CCSA,yNDNE,SAAA,CAGF,iuBAGE,SAAA,CAMN,sDACE,YAAA,CACA,cAAA,CACA,0BAAA,CAEA,4GACE,UAAA,CAOF,8OAEE,gBAAA,CAIF,yVCsBE,yBDpB6B,CCqB7B,4BDrB6B,CAG/B,4RC+BE,wBD7B4B,CC8B5B,2BD9B4B,CAqBhC,gEACE,sBAAA,CACA,qBAAA,CAEA,0TAGE,aAAA,CAGF,2HACE,cAAA,CAIJ,sRACE,qBAAA,CACA,oBAAA,CAGF,sRACE,oBAAA,CACA,mBAAA,CAgBF,6DACE,qBAAA,CACA,sBAAA,CACA,sBAAA,CAEA,4NAEE,UAAA,CAGF,gQAEE,eAAA,CAIF,2WCrDE,4BDuD8B,CCtD9B,2BDsD8B,CAGhC,8SCxEE,wBD0E2B,CCzE3B,yBDyE2B,CAM7B,sQAEE,eAAA,CAEA,0lBAEE,iBAAA,CACA,qBAAA,CACA,mBAAA,CAKN,mGCnJE,yCAAA,CACA,eAiIkB,CAhIlB,iBAAA,CAiIE,iBAAA,CACA,UC3HI,CD4HJ,oBAAA,CACA,wBCtIM,CDuIN,wBAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gBAAA,CAEA,yGACI,yBAAA,CAGJ,4TAGI,wBCrJI,CDsJJ,oBCtJI,CDuJJ,UC/IA,CDkJJ,yBDRJ,mGCSQ,UAAA,CAAA,CDLR,qGCvJE,yCAAA,CACA,eAiIkB,CAhIlB,iBAAA,CAiIE,iBAAA,CACA,UC/HG,CDgIH,oBAAA,CACA,wBClHG,CDmHH,wBAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gBAAA,CAEA,2GACI,yBAAA,CAGJ,kUAGI,wBCjIK,CDkIL,oBClIK,CDmIL,UCnJD,CDsJH,yBDJJ,qGCKQ,UAAA,CAAA,CDDR,iGC3JE,yCAAA,CACA,eAiIkB,CAhIlB,iBAAA,CAiIE,iBAAA,CACA,aCpIM,CDqIN,oBAAA,CACA,8BDsBc,CCrBd,wBAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gBAAA,CAEA,uGACI,yBAAA,CAGJ,sTAGI,wBCtJE,CDuJF,oBCvJE,CDwJF,UC/IA,CDkJJ,yBAAA,iGACI,UAAA,CAAA,CDGR,sLC/JE,yCAAA,CACA,eAiIkB,CAhIlB,iBAAA,CAiIE,iBAAA,CACA,aCtHI,CDuHJ,oBAAA,CACA,wBC1HI,CD2HJ,wBAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gBAAA,CDuBF,gBAAA,CACA,mBAAA,CACA,cAAA,CCvBE,8MACI,yBAAA,CAGJ,8mBAGI,wBC1IA,CD2IA,oBCzIA,CD0IA,aC1IA,CD6IJ,yBDIJ,sLCHQ,UAAA,CAAA,CDaR,+cCzKE,yCAAA,CACA,eAiIkB,CAhIlB,iBAAA,CAiIE,iBAAA,CACA,UC3HI,CD4HJ,oBAAA,CACA,wBCtIM,CDuIN,wBAAA,CACA,iBAAA,CACA,wBAAA,CACA,wBAAA,CACA,oBAAA,CACA,oBAAA,CACA,gBAAA,CAEA,ieACI,yBAAA,CAGJ,s6CAGI,wBCrJI,CDsJJ,oBCtJI,CDuJJ,UC/IA,CDkJJ,yBDcJ,+cCbQ,UAAA,CAAA,CEjKR,uDACI,uBAAA,CACA,qBAAA,CACA,UAAA,CACA,mBAAA,CACA,sBAAA,CACA,cAAA,CF+KE,0BErLN,uDASQ,mBAAA,CAAA,CAGJ,yDACI,aAAA,CAGJ,sGACI,qBAAA,CFwJA,yBErJJ,2GAEQ,eAAA,CAAA,CAIR,mEACI,iBAAA,CACA,UAAA,CACA,sBAAA,CACA,gBAAA,CACA,wBAAA,CAEA,2HACI,iBAAA,CACA,QAAA,CACA,MAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,gBAAA,CACA,cAAA,CACA,wBDnBA,CCqBF,6HACI,iBAAA,CACA,aAAA,CACA,UDlCN,CCmCM,iBAAA,CACA,wBAAA,CAEA,2KACI,mBAAA,CAKV,uHACI,cAAA,CACA,SAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,iBAAA,CACA,MAAA,CACA,QAAA,CACA,UAAA,CACA,gBAAA,CACA,wBD9DE,CC+DF,mCAAA,CFjEV,yCAAA,CACA,eEiE0B,CFhE1B,iBAAA,CEiEU,wBAAA,CAIA,6HACI,SAAA,CAKZ,8DACI,iBAAA,CACA,KAAA,CACA,MAAA,CACA,WAAA,CACA,UAAA,CACA,cAAA,CACA,QAAA,CACA,SAAA,CACA,QAAA,CAEA,oEACI,WAAA,CACA,UAAA,CACA,kBAAA,CACA,gBAAA,CAIR,8DACI,iBAAA,CACA,KAAA,CACA,MAAA,CACA,YAAA,CACA,kBAAA,CAEA,6GACI,uBAAA,CACA,wBDzGF,CAAA,yCAAA,CDCR,eEyG0B,CFxG1B,iBAAA,CEyGU,iBAAA,CACA,UDnGJ,CCoGI,wBAAA,CAIR,8DACI,mBAAA,CACA,kBAAA,CACA,iBAAA,CACA,aD/GK,CDNX,yCAAA,CACA,eEqHsB,CFpHtB,iBAAA,CEuHE,6DACI,iBAAA,CAEA,kEFlIN,oCAAA,CACA,eEkIyB,CFjIzB,iBAAA,CEkIU,kBAAA,CACA,aAAA,CACA,mBAAA,CACA,aD1HL,CC2HK,oBAAA,CACA,cAAA,CAIR,8DACI,gBAAA,CACA,oBAAA,CACA,YAAA,CACA,sBAAA,CACA,iBAAA,CAEA,mEACI,aDjIJ,CCkII,iBAAA,CAEA,0EACI,UAAA,CACA,oBAAA,CACA,iBAAA,CACA,UAAA,CACA,+BAAA,CACA,OAAA,CACA,MAAA,CAIR,mEF7JN,yCAAA,CACA,eE6J0B,CF5J1B,iBAAA,CE6JU,kBAAA,CAGJ,kHACI,kBAAA,CAIR,4DFvKF,yCAAA,CACA,eEuKsB,CFtKtB,iBAAA,CEuKM,uBAAA,CACA,iBAAA,CACA,iBAAA,CACA,gBAAA,CACA,UDxKD,CCyKC,oBAAA,CAEA,oEACI,YAAA,CACA,qBAAA,CACA,cAAA,CAIN,qEACE,eAAA,CACA,wBAAA,CACA,aDzLI,CC0LJ,mBAAA,CAEA,oFACI,UDtLJ,CCuLI,kBAAA,CAIR,+DACI,YAAA,CACA,aAAA,CACA,qBAAA,CACA,wBAAA,CAGJ,gEACI,UAAA,CACA,iBAAA,CACA,cAAA,CAEA,8GACI,aAAA,CACA,QAAA,CAEA,iKACI,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,iBAAA,CACA,aAAA,CACA,aAAA,CACA,WAAA,CACA,gBAAA,CACA,gBAAA,CACA,UDpNR,CCqNQ,cAAA,CAEA,gLACI,wBDjOV,CCkOU,cAAA,CACA,WAAA,CAGJ,uKACI,UD9NZ,CCiOQ,qCAvBJ,iKAwBQ,aAAA,CAAA,CAIR,qKACI,kBAAA,CACA,SAAA,CACA,cAAA,CACA,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,cAAA,CAEA,yKACE,eAAA,CACA,qBAAA,CACA,SDlPV,CCmPU,gBAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,cAAA,CACA,aAAA,CAIE,+KACI,SD7PhB,CCoQJ,iEACI,YAAA,CACA,yBAAA,CAEA,uEACI,YAAA,CACA,mBAAA,CACA,kBAAA,CF1RV,oCAAA,CACA,eE0RyB,CFzRzB,iBAAA,CE0RU,mBAAA,CACA,kBAAA,CACA,gBAAA,CAEA,4EACI,kBAAA,CACA,gBAAA,CACA,mBAAA,CACA,aDpRR,CCwRA,oHACI,YAAA,CACA,6BAAA,CACA,wBAAA,CACA,wBAAA,CACA,eD9RJ,CC+RI,mBAAA,CACA,eAAA,CACA,iBAAA,CACA,kBAAA,CAEA,0HACE,YAAA,CAGF,2HACI,aAAA,CACA,cAAA,CACA,WAAA,CFpTd,yCAAA,CACA,eEoT8B,CFnT9B,iBAAA,CEoTc,iBAAA,CACA,kBAAA,CACA,SAAA,CACA,gBAAA,CAEA,4SAEI,uBAAA,CACA,QAAA,CAGJ,yIACI,YAAA,CAIR,4HACI,kBAAA,CACA,aAAA,CACA,cAAA,CAEA,gIACI,WAAA,CACA,UAAA,CAMhB,0EACI,iBAAA,CACA,iBAAA,CACA,mBAAA,CAGJ,wEACI,iBAAA,CACA,QAAA,CACA,MAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,gBAAA,CACA,cAAA,CACA,wBDhVI,CCkVJ,0EACI,mBAAA,CAGJ,0EFzWN,yCAAA,CACA,eEyW0B,CFxW1B,iBAAA,CEyWU,UDlWJ,CCmWI,iBAAA,CACA,aAAA,CACA,iBAAA,CACA,wBAAA\",\"sourcesContent\":[\"@import './variables';\\r\\n@import './mixins';\\r\\n\\r\\n// stylelint-disable selector-no-qualifying-type\\r\\n\\r\\n// Make the div behave like a button\\r\\n.btn-group,\\r\\n.btn-group-vertical {\\r\\n position: relative;\\r\\n display: inline-flex;\\r\\n vertical-align: middle; // match .btn alignment given font-size hack above\\r\\n\\r\\n >.btn {\\r\\n position: relative;\\r\\n flex: 1 1 auto;\\r\\n\\r\\n @include hover {\\r\\n z-index: 1;\\r\\n }\\r\\n\\r\\n &:focus,\\r\\n &:active,\\r\\n &.active {\\r\\n z-index: 1;\\r\\n }\\r\\n }\\r\\n}\\r\\n\\r\\n// Optional: Group multiple button groups together for a toolbar\\r\\n.btn-toolbar {\\r\\n display: flex;\\r\\n flex-wrap: wrap;\\r\\n justify-content: flex-start;\\r\\n\\r\\n .input-group {\\r\\n width: auto;\\r\\n }\\r\\n}\\r\\n\\r\\n.btn-group {\\r\\n\\r\\n // Prevent double borders when buttons are next to each other\\r\\n >.btn:not(:first-child),\\r\\n >.btn-group:not(:first-child) {\\r\\n margin-left: -$btn-border-width;\\r\\n }\\r\\n\\r\\n // Reset rounded corners\\r\\n >.btn:not(:last-child):not(.dropdown-toggle),\\r\\n >.btn-group:not(:last-child)>.btn {\\r\\n @include border-right-radius(0);\\r\\n }\\r\\n\\r\\n >.btn:not(:first-child),\\r\\n >.btn-group:not(:first-child)>.btn {\\r\\n @include border-left-radius(0);\\r\\n }\\r\\n}\\r\\n\\r\\n// Sizing\\r\\n//\\r\\n// Remix the default button sizing classes into new ones for easier manipulation.\\r\\n\\r\\n.btn-group-sm>.btn {\\r\\n @extend .btn-sm;\\r\\n}\\r\\n\\r\\n.btn-group-lg>.btn {\\r\\n @extend .btn-lg;\\r\\n}\\r\\n\\r\\n\\r\\n//\\r\\n// Split button dropdowns\\r\\n//\\r\\n\\r\\n.dropdown-toggle-split {\\r\\n padding-right: $btn-padding-x * .75;\\r\\n padding-left: $btn-padding-x * .75;\\r\\n\\r\\n &::after,\\r\\n .dropup &::after,\\r\\n .dropright &::after {\\r\\n margin-left: 0;\\r\\n }\\r\\n\\r\\n .dropleft &::before {\\r\\n margin-right: 0;\\r\\n }\\r\\n}\\r\\n\\r\\n.btn-sm+.dropdown-toggle-split {\\r\\n padding-right: $btn-padding-x-sm * .75;\\r\\n padding-left: $btn-padding-x-sm * .75;\\r\\n}\\r\\n\\r\\n.btn-lg+.dropdown-toggle-split {\\r\\n padding-right: $btn-padding-x-lg * .75;\\r\\n padding-left: $btn-padding-x-lg * .75;\\r\\n}\\r\\n\\r\\n.btn-group.show .dropdown-toggle {\\r\\n @include box-shadow($btn-active-box-shadow);\\r\\n\\r\\n &.btn-link {\\r\\n @include box-shadow(none);\\r\\n }\\r\\n}\\r\\n\\r\\n\\r\\n//\\r\\n// Vertical button groups\\r\\n//\\r\\n\\r\\n.btn-group-vertical {\\r\\n flex-direction: column;\\r\\n align-items: flex-start;\\r\\n justify-content: center;\\r\\n\\r\\n >.btn,\\r\\n >.btn-group {\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n >.btn:not(:first-child),\\r\\n >.btn-group:not(:first-child) {\\r\\n margin-top: -$btn-border-width;\\r\\n }\\r\\n\\r\\n // Reset rounded corners\\r\\n >.btn:not(:last-child):not(.dropdown-toggle),\\r\\n >.btn-group:not(:last-child)>.btn {\\r\\n @include border-bottom-radius(0);\\r\\n }\\r\\n\\r\\n >.btn:not(:first-child),\\r\\n >.btn-group:not(:first-child)>.btn {\\r\\n @include border-top-radius(0);\\r\\n }\\r\\n}\\r\\n\\r\\n.btn-group-toggle {\\r\\n\\r\\n >.btn,\\r\\n >.btn-group>.btn {\\r\\n margin-bottom: 0; // Override default `