{"version":3,"file":"static/js/265f0addb76c2290d77f.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/analytics/clickTrack.ts?bce2","webpack://mattressfirm/./src/Utilities/components/BVRatingSummary.tsx?6e2e","webpack://mattressfirm/./src/Utilities/emtpyChecker.ts?e2f5","webpack://mattressfirm/./src/Utilities/get-product-badge.tsx?635b","webpack://mattressfirm/./src/Utilities/get-product-brand.tsx?2b65","webpack://mattressfirm/./src/Utilities/select-financing-offer.tsx?5f53","webpack://mattressfirm/./src/common/components/error-boundary.tsx?6c0c","webpack://mattressfirm/./src/data-actions/financing-offer-state.action.ts?9faa","webpack://mattressfirm/./src/themes/mattressfirm/custom-components/financing-per-month-component.tsx?fa70"],"sourcesContent":["import { callUtagLink } from \"./utagCaller\";\r\n\r\nexport interface IUtagPromoConfig {\r\n promotion_impression_name?: string[];\r\n promotion_impression_id?: string[];\r\n promotion_impression_creative?: string[];\r\n promotion_impression_position?: (string | undefined)[];\r\n promotion_name?: string[];\r\n promotion_id?: string[];\r\n promotion_creative?: string[];\r\n promotion_position?: (string | undefined)[];\r\n}\r\n\r\nexport interface IUtagGeneralConfig {\r\n enhanced_action?: string | undefined;\r\n}\r\nexport interface ICustomerConfig {\r\n customer_email?: string;\r\n}\r\nexport interface IProductConfig {\r\n product_id?: string[];\r\n product_name?: string[];\r\n product_category?: (string | undefined)[];\r\n product_brand?: (string | undefined)[];\r\n product_variant?: (string | undefined)[];\r\n product_price?: (string | undefined)[];\r\n product_list_name?: string[];\r\n product_position?: (number | undefined)[];\r\n product_quantity?: (string | undefined)[];\r\n checkout_step?: string;\r\n}\r\nexport interface IProductImpressionConfig {\r\n product_impression_brand?: (string | undefined)[];\r\n product_impression_list_name?: (string | undefined)[];\r\n product_impression_id?: string[];\r\n product_impression_name?: string[];\r\n product_impression_category?: string[];\r\n product_impression_variant?: (string | undefined)[];\r\n product_impression_position?: number[];\r\n product_impression_price?: number[];\r\n}\r\nexport interface IAnalyticsConfiguration {\r\n event?: string | null;\r\n eventName?: string | null;\r\n eventCategory?: string | null;\r\n eventAction?: string | null;\r\n eventLabel?: string | null;\r\n eventType?: string | null;\r\n eventNoninteraction?: string;\r\n enhancedAction?: string | null;\r\n searchTerm?: string | undefined | null;\r\n searchType?: string | undefined | null;\r\n generalConfig?: IUtagGeneralConfig;\r\n promoConfig?: IUtagPromoConfig;\r\n productConfig?: IProductConfig;\r\n customerConfig?: ICustomerConfig;\r\n productImpressionConfig?: IProductImpressionConfig;\r\n}\r\n\r\nexport const fireAnalyticsLink = ({\r\n searchTerm = null,\r\n searchType = null,\r\n eventName = null,\r\n eventCategory = null,\r\n eventAction = null,\r\n eventLabel = null,\r\n eventType = null,\r\n eventNoninteraction = 'false',\r\n enhancedAction = null,\r\n generalConfig = {},\r\n promoConfig = {},\r\n productConfig = {},\r\n customerConfig = {},\r\n productImpressionConfig = {}\r\n}: IAnalyticsConfiguration) => {\r\n void callUtagLink({\r\n ...generalConfig,\r\n ...promoConfig,\r\n ...productConfig,\r\n ...customerConfig,\r\n ...productImpressionConfig,\r\n event: eventName,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n event_label: eventLabel,\r\n event_type: eventType,\r\n event_noninteraction: eventNoninteraction,\r\n enhanced_action: enhancedAction,\r\n search_term: searchTerm,\r\n search_type: searchType\r\n });\r\n};","import React, { useState, useEffect, useRef } from 'react';\r\n\r\nexport const BVRatingSummary = ({\r\n itemId,\r\n onClick,\r\n variantId,\r\n hideReadReviewsButton\r\n}: {\r\n itemId: string | undefined;\r\n onClick?: () => void;\r\n variantId?: number | undefined;\r\n hideReadReviewsButton?: boolean\r\n}) => {\r\n const [dataBvProductIdAttr, setDataBvProductIdAttr] = useState(itemId);\r\n const wrapper = useRef(null);\r\n const interval = useRef(-1);\r\n const [numReviews, setNumReviews] = useState();\r\n\r\n useEffect(() => {\r\n setDataBvProductIdAttr(itemId);\r\n }, [itemId]);\r\n\r\n useEffect(() => {\r\n setDataBvProductIdAttr('bv-refresh');\r\n }, [variantId]);\r\n\r\n useEffect(() => {\r\n if (dataBvProductIdAttr === 'bv-refresh') {\r\n setDataBvProductIdAttr(itemId);\r\n }\r\n }, [dataBvProductIdAttr]);\r\n useEffect(() => {\r\n const pollInterval = window.setInterval(() => {\r\n const numReviewsHTML = wrapper.current?.querySelector('.bv_numReviews_text')?.innerHTML.match(/\\(([^)]+)\\)/)?.[1];\r\n if (numReviewsHTML) {\r\n setNumReviews(numReviewsHTML);\r\n clearInterval(pollInterval);\r\n }\r\n }, 0);\r\n });\r\n useEffect(() => {\r\n if (wrapper.current) {\r\n numReviews === '0' ? wrapper.current.style.display = 'none' : wrapper.current.style.display = 'flex';\r\n }\r\n }, [numReviews]);\r\n\r\n return (\r\n {\r\n if (hideReadReviewsButton) {\r\n interval.current = window.setInterval(() => {\r\n const button: Element | undefined = Array.from(document.querySelectorAll('.bv_button_buttonFull')).find((button) => {\r\n return button?.innerHTML === `Read ${numReviews} Reviews`;\r\n });\r\n if (button) {\r\n button.outerHTML = '';\r\n }\r\n });\r\n }\r\n }}\r\n onMouseLeave={() => {\r\n if (hideReadReviewsButton) {\r\n clearInterval(interval.current);\r\n }\r\n }}\r\n data-bv-show='rating_summary'\r\n data-bv-product-id={dataBvProductIdAttr}\r\n onClick={onClick}\r\n ref={wrapper}\r\n />\r\n );\r\n};\r\n","// tslint:disable\r\nexport const hasArray = (values: any): any[] | undefined => {\r\n return (typeof values !== 'string') && values && values.length ? values : undefined;\r\n};","import { IImageSettings, Image, IRequestContext } from '@msdyn365-commerce/core';\r\nimport dayjs from 'dayjs';\r\nimport tz from 'dayjs/plugin/timezone';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\ndayjs.extend(tz);\r\ndayjs.extend(utc);\r\ndayjs.extend(isBetween);\r\nimport React from 'react';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nconst format = 'M/D/YYYY H:m:s';\r\n\r\nexport interface IBadgeData {\r\n src: string;\r\n alt: string;\r\n start: dayjs.Dayjs;\r\n end: dayjs.Dayjs;\r\n}\r\n\r\nconst defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `m=6`, w: 0, h: 0 }\r\n },\r\n disableLazyLoad: true\r\n};\r\n\r\nexport const parseBadgeData = (badgeData: string, requestContext: IRequestContext): IBadgeData | undefined => {\r\n let dataSegments;\r\n let scheduleStart;\r\n let scheduleEnd;\r\n let badgeType;\r\n let parsedScheduleStart;\r\n let startDate;\r\n let startTime;\r\n let parsedScheduleEnd;\r\n let endDate;\r\n let endTime;\r\n\r\n try {\r\n // split the data into its segments\r\n dataSegments = badgeData.split('#');\r\n scheduleStart = dataSegments[0];\r\n scheduleEnd = dataSegments[1];\r\n badgeType = dataSegments[2];\r\n\r\n // parse schedule start\r\n parsedScheduleStart = scheduleStart.split('_');\r\n startDate = parsedScheduleStart[0];\r\n startTime = parsedScheduleStart[1];\r\n\r\n // parse schedule end\r\n parsedScheduleEnd = scheduleEnd.split('_');\r\n endDate = parsedScheduleEnd[0];\r\n endTime = parsedScheduleEnd[1];\r\n } catch (e) {\r\n return;\r\n }\r\n\r\n const startMoment = `${startDate} ${startTime?.replace(/-/g, \":\")}`;\r\n const endMoment = `${endDate} ${endTime?.replace(/-/g, \":\")}`;\r\n\r\n const startMomentFormatted = dayjs(startMoment?.replace(/-/g, \"/\"));\r\n const endMomentFormatted = dayjs(endMoment?.replace(/-/g, \"/\"));\r\n\r\n // check if schedule is valid\r\n if (!(startMomentFormatted.isValid() && endMomentFormatted.isValid())) {\r\n return;\r\n }\r\n\r\n // parse badge type and create image src\r\n const baseUrl = requestContext.apiSettings.baseImageUrl.substring(0, requestContext.apiSettings.baseImageUrl.length - 1);\r\n if (badgeType) {\r\n const removed$ = badgeType.substring(1, badgeType.length - 1);\r\n const parsedBadgeType = removed$?.replace(' ', '-').toLowerCase();\r\n\r\n // remove page name portion\r\n const altText = removed$.split('-')[0];\r\n\r\n const src = `${baseUrl}${parsedBadgeType}.png`;\r\n return {\r\n src: src,\r\n alt: altText,\r\n start: convertTimeZone(startMomentFormatted),\r\n end: convertTimeZone(endMomentFormatted)\r\n };\r\n } else {\r\n return;\r\n }\r\n};\r\n\r\n// convert given time to Central Time (CT)\r\nconst convertTimeZone = (time: dayjs.Dayjs): dayjs.Dayjs => {\r\n return dayjs(time.format(format), format).tz('America/Chicago').local();\r\n};\r\n\r\nexport const buildProductBadge = (parsedBadgeData: IBadgeData, requestContext: IRequestContext): JSX.Element | undefined => {\r\n // only build image if it is scheduled\r\n const isScheduled = dayjs().isBetween(parsedBadgeData.start, parsedBadgeData.end);\r\n\r\n if (isScheduled) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const renderProductBadge = (\r\n attributeName: string | undefined,\r\n requestContext: IRequestContext\r\n): JSX.Element | undefined => {\r\n const badgeData = attributeName;\r\n if (!badgeData) {\r\n return;\r\n }\r\n // split badge data into its separate badges\r\n const badges = badgeData.split(',');\r\n // parse badge data to get its schedule and image src\r\n const parsedBadges = badges.map(badge => parseBadgeData(badge, requestContext));\r\n\r\n // build product badge image components\r\n const finalizedBadges = parsedBadges.map(parsedBadge => parsedBadge && buildProductBadge(parsedBadge, requestContext));\r\n\r\n return finalizedBadges ? <>{finalizedBadges} : <>;\r\n};\r\n\r\nexport const renderProductBadgeByFilteringAttributes = (\r\n attributeName: string | undefined,\r\n attributes: AttributeValue[] | undefined,\r\n requestContext: IRequestContext\r\n): JSX.Element | undefined => {\r\n const badgeData =\r\n attributeName &&\r\n attributes?.find(\r\n currAttribute => currAttribute.Name && currAttribute.Name.toLowerCase().trim() === attributeName.toLowerCase().trim()\r\n )?.TextValue;\r\n if (!badgeData) {\r\n return;\r\n }\r\n\r\n // split badge data into its separate badges\r\n const badges = badgeData.split(',');\r\n\r\n // parse badge data to get its schedule and image src\r\n const parsedBadges = badges.map(badge => parseBadgeData(badge, requestContext));\r\n // build product badge image components\r\n const finalizedBadges = parsedBadges.map(parsedBadge => parsedBadge && buildProductBadge(parsedBadge, requestContext));\r\n\r\n return finalizedBadges && <>{finalizedBadges};\r\n};\r\n","import { IGridSettings, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy';\r\nimport React from 'react';\r\nimport { IBrandListData } from '../modules/mfrm-buybox/mfrm-buybox.view';\r\nimport { IProductBonusWithBrandName } from '../modules/mfrm-cart/mfrm-cart';\r\nimport {hasArray} from './emtpyChecker';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nconst fallBackBrandAttribute = 'VENDOR BRAND';\r\n\r\n// tslint:disable-next-line: cyclomatic-complexity\r\nexport const parseBrandData = (\r\n attributes: AttributeValue[] | undefined,\r\n backendAttribute: string,\r\n gridSettings: IGridSettings,\r\n renderBrandNameOnly: Boolean = false,\r\n brandList: IBrandListData[],\r\n imageSettings?: IImageSettings\r\n): JSX.Element | undefined => {\r\n const attribute = backendAttribute || fallBackBrandAttribute;\r\n const productBrandName =\r\n attributes &&\r\n attributes.find(currAttribute => currAttribute.Name && currAttribute.Name.toLowerCase().trim() === attribute.toLowerCase().trim())\r\n ?.TextValue;\r\n\r\n if (renderBrandNameOnly) {\r\n return {productBrandName};\r\n }\r\n\r\n const selectedBrand =\r\n (brandList &&\r\n productBrandName &&\r\n brandList.find(\r\n (brand: IBrandListData) => brand && brand.brandName.toLowerCase().trim() === productBrandName.toLowerCase().trim()\r\n )) ||\r\n undefined;\r\n\r\n if (!selectedBrand) {\r\n return undefined;\r\n }\r\n\r\n const copySelectedBrand: IBrandListData = selectedBrand;\r\n // set alt text to brand name if no alt text is configured\r\n if (copySelectedBrand && _useDefaultAltText(copySelectedBrand) && copySelectedBrand.brandLogo) {\r\n copySelectedBrand.brandLogo.altText = productBrandName;\r\n }\r\n\r\n // set height to configured value or the default\r\n const height = copySelectedBrand && copySelectedBrand.logoHeight !== undefined ? copySelectedBrand.logoHeight : 22;\r\n const brandImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=0&h=25&m=6`, w: 0, h: 25 },\r\n lg: { q: `w=0&h=25&m=6`, w: 0, h: 25 },\r\n xl: { q: `w=0&h=25&m=6`, w: 0, h: 25 }\r\n },\r\n lazyload: false\r\n };\r\n\r\n const brandLogo = copySelectedBrand && copySelectedBrand.brandLogo && (\r\n \r\n );\r\n // place logo inside a link if configured to\r\n const brandLink =\r\n copySelectedBrand &&\r\n copySelectedBrand.brandLink &&\r\n copySelectedBrand.brandLink.linkUrl &&\r\n copySelectedBrand.brandLink.linkUrl.destinationUrl &&\r\n copySelectedBrand.brandLink;\r\n const linkElement = brandLink && (\r\n \r\n {brandLogo}\r\n \r\n );\r\n\r\n return linkElement || brandLogo;\r\n};\r\n// get only brandName\r\nexport const parseBrandName = (attributes: AttributeValue[] | undefined, backendAttribute: string, recordId?: number): string | undefined => {\r\n const attribute = backendAttribute || fallBackBrandAttribute;\r\n let productBrandName = hasArray(attributes)?.find((currAttribute: AttributeValue) => currAttribute?.Name?.toLowerCase().trim() === attribute?.toLowerCase().trim())?.TextValue;\r\n if (!productBrandName && MsDyn365.isBrowser) {\r\n const getLocalStorage = localStorage.getItem('bonusItmesWithBrand');\r\n let bonusItemArray: IProductBonusWithBrandName[] = [];\r\n if (getLocalStorage) {\r\n bonusItemArray = JSON.parse(getLocalStorage);\r\n }\r\n const checkBrandName = bonusItemArray.find(item => item.productId === recordId)?.brandName;\r\n if(checkBrandName) {\r\n productBrandName = checkBrandName;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return productBrandName;\r\n};\r\n\r\nexport const parseBrandNameUnbxd = (attributes: any | undefined, backendAttribute: string, recordId?: number): string | undefined => {\r\n const attribute = backendAttribute || fallBackBrandAttribute;\r\n // let productBrandName = hasArray(attributes)?.find((currAttribute: AttributeValue) => currAttribute?.Name?.toLowerCase().trim() === attribute?.toLowerCase().trim())?.TextValue;\r\n let productBrandName = attributes && attributes[attribute];\r\n if (!productBrandName && MsDyn365.isBrowser) {\r\n const getLocalStorage = localStorage.getItem('bonusItmesWithBrand');\r\n let bonusItemArray: IProductBonusWithBrandName[] = [];\r\n if (getLocalStorage) {\r\n bonusItemArray = JSON.parse(getLocalStorage);\r\n }\r\n const checkBrandName = bonusItemArray.find(item => item.productId === recordId)?.brandName;\r\n if(checkBrandName) {\r\n productBrandName = checkBrandName;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return productBrandName;\r\n};\r\n\r\n// get only brandName\r\nexport const getBrandNameCheck = (attributes: AttributeValue[] | undefined, backendAttribute: string): string | undefined => {\r\n const productBrandName =\r\n attributes &&\r\n attributes.find(\r\n currAttribute => currAttribute.Name && currAttribute.Name.toLowerCase().trim() === backendAttribute.toLowerCase().trim()\r\n )?.TextValue;\r\n if (!productBrandName) {\r\n return undefined;\r\n }\r\n return productBrandName;\r\n};\r\n\r\n// get the appropriate image alt text\r\nconst _useDefaultAltText = (selectedBrand: IBrandListData): boolean => {\r\n const configuredAltText = selectedBrand.brandLogo?.altText;\r\n return !(configuredAltText && configuredAltText.trim() && configuredAltText !== 'No Data Available');\r\n};\r\n","import { RichText } from '@msdyn365-commerce/core';\r\n\r\nimport dayjs from 'dayjs';\r\nimport tz from 'dayjs/plugin/timezone';\r\nimport utc from 'dayjs/plugin/utc';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\ndayjs.extend(tz);\r\ndayjs.extend(utc);\r\ndayjs.extend(isBetween);\r\nconst format = 'M/D/YYYY';\r\n\r\nexport interface IFinancingOffer {\r\n offerName?: string;\r\n noInterestFor: number;\r\n minPurchase: number;\r\n everydayFinancingOfferMessage: string,\r\n limitedFinancingOfferMessage: string,\r\n lowCostFinancingOfferMessage: string,\r\n cashbackFinancingOfferMessage: string,\r\n monthlyOfferDetails?: RichText;\r\n financingOfferDescription: RichText;\r\n disclaimer: RichText;\r\n offerValidStartDate?: string;\r\n offerValidEndDate?: string;\r\n specialCampaignOffer?: IFinancingOfferCampaign;\r\n checkoutDisplay?: { heading: string; details: string; specialOffer?: string},\r\n FinancingOfferDataOnPage?: RichText;\r\n cashBackPercentageAmount?: number;\r\n cashbackBannerDetails?: RichText;\r\n}\r\nexport interface ILowCostOffer {\r\n offerName?: string;\r\n maxPurchase: number;\r\n lowCostFinancingOfferMessage: string,\r\n financingOfferDescription: RichText;\r\n disclaimer: RichText;\r\n defaultNumberOfMonths: number;\r\n lowCostOfferDetailsOnCart?: RichText;\r\n}\r\n\r\n\r\nexport interface IFinancingOfferFormatted {\r\n lowCostOfferDetailsOnCart?: RichText;\r\n numOfMonths: number;\r\n costPerMonth: number;\r\n startDate?: string;\r\n endDate?: string;\r\n isLTO: boolean;\r\n monthlyOfferDetails?: RichText;\r\n minPurchase: number;\r\n lowCostFinancingOfferMessage?: string;\r\n everydayFinancingOfferMessage?: string;\r\n limitedFinancingOfferMessage?: string;\r\n cashbackFinancingOfferMessage?: string;\r\n financingOfferDescription: RichText;\r\n disclaimer: RichText;\r\n specialCampaign?: IFinancingOfferCampaign;\r\n offerName?: string;\r\n checkoutDisplay?: { heading: string; details: string; specialOffer?: string },\r\n FinancingOfferDataOnPage?: RichText;\r\n isCashBack?: boolean;\r\n cashBackPercentageAmount?: number;\r\n cashbackBannerDetails?: RichText;\r\n}\r\n\r\nexport interface IFinancingOfferCampaign {\r\n initialMonthlyAmount: number;\r\n numOfDiscountedMonths: number;\r\n campaignValidStartDate: string;\r\n campaignValidEndDate: string;\r\n enableCampaign: boolean;\r\n showEverydayFlag: boolean;\r\n}\r\n\r\nexport interface ISelectFinancingOfferData {\r\n limitedTimeFinancingOffers: IFinancingOffer[];\r\n everydayFinancingOffers: IFinancingOffer[];\r\n lowCostOffer?: ILowCostOffer[]\r\n totalPrice: number | undefined;\r\n specialFinancingOffer?: IFinancingOffer[];\r\n synchronySpecialFinancingCondition?: boolean;\r\n specialFinancingEnable?: boolean;\r\n checkoutShowEveryDayOffers?: boolean;\r\n cashbackFinancingEnable?: boolean;\r\n cashBackFinancingOffer?: IFinancingOffer[];\r\n}\r\n\r\nexport interface ICampaignRemainingCost {\r\n cost: number;\r\n months: number;\r\n}\r\n\r\nexport const getValidSpecialCampaign = (financingOffer: IFinancingOfferFormatted): IFinancingOfferCampaign | undefined => {\r\n if (\r\n financingOffer.specialCampaign &&\r\n financingOffer.specialCampaign.enableCampaign &&\r\n financingOffer.specialCampaign.initialMonthlyAmount &&\r\n financingOffer.specialCampaign.numOfDiscountedMonths &&\r\n isCampaignScheduled(financingOffer)\r\n ) {\r\n return financingOffer.specialCampaign;\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const getCampaignRemainingCost = (\r\n campaign: IFinancingOfferCampaign,\r\n financingOffer: IFinancingOfferFormatted,\r\n totalPrice: number | undefined\r\n): ICampaignRemainingCost | undefined => {\r\n if (!totalPrice) {\r\n return undefined;\r\n }\r\n\r\n const initialCost = campaign.initialMonthlyAmount * campaign.numOfDiscountedMonths;\r\n const remainingCost = totalPrice - initialCost;\r\n const remainingMonths = financingOffer.numOfMonths - campaign.numOfDiscountedMonths;\r\n const monthlyCost = remainingCost / remainingMonths;\r\n\r\n return {\r\n cost: monthlyCost,\r\n months: remainingMonths\r\n };\r\n};\r\nexport const isValidLimitedTimeOffer = (offer: IFinancingOffer): boolean => {\r\n const startDate = dayjs(offer.offerValidStartDate, format);\r\n const endDate = dayjs(offer.offerValidEndDate, format).add(1, 'd');\r\n\r\n const startDateCentralTime = startDate.isValid() && dayjs(startDate.format(format), format).tz('America/Chicago').local();\r\n const endDateCentralTime = endDate.isValid() && dayjs(endDate.format(format), format).tz('America/Chicago').local();\r\n\r\n const now = dayjs();\r\n return startDateCentralTime && endDateCentralTime && now.isBetween(startDateCentralTime, endDateCentralTime);\r\n};\r\n\r\nexport const isCampaignScheduled = (offer: IFinancingOfferFormatted): boolean => {\r\n const tempOffer = Object.create(offer);\r\n if (tempOffer.specialCampaign?.campaignValidStartDate && tempOffer.specialCampaign?.campaignValidEndDate) {\r\n tempOffer.startDate = tempOffer.specialCampaign?.campaignValidStartDate;\r\n tempOffer.endDate = tempOffer.specialCampaign?.campaignValidEndDate;\r\n\r\n return isScheduled(tempOffer);\r\n }\r\n\r\n return false;\r\n};\r\n\r\nexport const isScheduled = (offer: IFinancingOfferFormatted): boolean => {\r\n const startDate = dayjs(offer.startDate, format);\r\n const endDate = dayjs(offer.endDate, format).add(1, 'd');\r\n\r\n const startDateCentralTime = startDate.isValid() && dayjs(startDate.format(format), format).tz('America/Chicago').local();\r\n const endDateCentralTime = endDate.isValid() && dayjs(endDate.format(format), format).tz('America/Chicago').local();\r\n\r\n const now = dayjs();\r\n\r\n return startDateCentralTime && endDateCentralTime && now.isBetween(startDateCentralTime, endDateCentralTime);\r\n};\r\n\r\nexport const selectFinancingOffer = ({ limitedTimeFinancingOffers = [], everydayFinancingOffers = [], lowCostOffer = [], totalPrice = 0, specialFinancingOffer = [], synchronySpecialFinancingCondition = false, specialFinancingEnable = false, checkoutShowEveryDayOffers, cashbackFinancingEnable = false, cashBackFinancingOffer = [] }: ISelectFinancingOfferData, returnCustomOfferArray?: boolean): IFinancingOfferFormatted | undefined => {\r\n let highestMinimumPurchase: number = 0;\r\n let bestOffer: IFinancingOfferFormatted = {\r\n numOfMonths: 0,\r\n costPerMonth: 0,\r\n isLTO: false,\r\n minPurchase: 0,\r\n everydayFinancingOfferMessage: '',\r\n limitedFinancingOfferMessage: '',\r\n cashbackFinancingOfferMessage: '',\r\n monthlyOfferDetails: '',\r\n financingOfferDescription: '',\r\n disclaimer: ''\r\n };\r\n let offerFound = false;\r\n\r\n let campaignFound: IFinancingOfferFormatted | undefined;\r\n\r\n const everydayOffers: IFinancingOfferFormatted[] | undefined = [];\r\n const specialOffer: IFinancingOfferFormatted[] | undefined = [];\r\n\r\n const validLimitedTimeFinancingOffers = limitedTimeFinancingOffers.filter((offer) => {\r\n return isValidLimitedTimeOffer(offer) && offer;\r\n });\r\n\r\n if (synchronySpecialFinancingCondition && specialFinancingEnable) {\r\n if (!offerFound || (!isScheduled(bestOffer) && specialFinancingOffer.length)) {\r\n // try default offer\r\n offerFound = false;\r\n highestMinimumPurchase = 0;\r\n specialFinancingOffer.forEach((offer: IFinancingOffer) => {\r\n const minPurchase = offer.minPurchase ? offer.minPurchase : 0;\r\n let currentOfferAccepted = false;\r\n if (totalPrice >= minPurchase && minPurchase >= highestMinimumPurchase) {\r\n bestOffer = {\r\n numOfMonths: offer.noInterestFor,\r\n costPerMonth: Math.ceil(totalPrice / offer.noInterestFor),\r\n startDate: offer.offerValidStartDate,\r\n endDate: offer.offerValidEndDate,\r\n isLTO: false,\r\n minPurchase: offer.minPurchase || 0,\r\n offerName: offer.offerName,\r\n financingOfferDescription: offer.financingOfferDescription,\r\n disclaimer: offer.disclaimer,\r\n FinancingOfferDataOnPage: offer?.FinancingOfferDataOnPage,\r\n checkoutDisplay: offer?.checkoutDisplay\r\n };\r\n highestMinimumPurchase = offer.minPurchase;\r\n offerFound = true;\r\n currentOfferAccepted = true;\r\n }\r\n if (returnCustomOfferArray && (totalPrice >= minPurchase)) {\r\n specialOffer?.push({\r\n numOfMonths: offer.noInterestFor,\r\n costPerMonth: Math.ceil(totalPrice / offer.noInterestFor),\r\n startDate: offer.offerValidStartDate,\r\n endDate: offer.offerValidEndDate,\r\n isLTO: false,\r\n minPurchase: offer.minPurchase || 0,\r\n everydayFinancingOfferMessage: offer.everydayFinancingOfferMessage,\r\n limitedFinancingOfferMessage: offer.limitedFinancingOfferMessage,\r\n cashbackFinancingOfferMessage: offer.cashbackFinancingOfferMessage,\r\n financingOfferDescription: offer.financingOfferDescription,\r\n disclaimer: offer.disclaimer,\r\n offerName: offer.offerName\r\n });\r\n highestMinimumPurchase = offer.minPurchase;\r\n offerFound = true;\r\n currentOfferAccepted = true;\r\n // @ts-ignore\r\n bestOffer = specialOffer;\r\n }\r\n // Do not use default if end date is defined and has expired\r\n if (currentOfferAccepted && offer.offerValidEndDate) {\r\n const endDate = dayjs(offer.offerValidEndDate, format);\r\n const now = dayjs();\r\n if (endDate.isValid() && now.isAfter(endDate)) {\r\n offerFound = false;\r\n }\r\n }\r\n });\r\n }\r\n } else {\r\n // if cashback enabled and has length check for cashback offer\r\n if (cashbackFinancingEnable && cashBackFinancingOffer?.length) {\r\n cashBackFinancingOffer.forEach((offer) => {\r\n const minPurchase = offer.minPurchase ? offer.minPurchase : 0;\r\n // if minimum purchase criteria is met, then create best offer\r\n if (totalPrice >= minPurchase) {\r\n const cashBackOffer = {\r\n numOfMonths: offer?.noInterestFor,\r\n costPerMonth: Math.ceil(totalPrice / offer?.noInterestFor),\r\n startDate: offer?.offerValidStartDate,\r\n endDate: offer?.offerValidEndDate,\r\n isLTO: false,\r\n minPurchase: offer?.minPurchase || 0,\r\n offerName: offer?.offerName,\r\n financingOfferDescription: offer?.financingOfferDescription,\r\n disclaimer: offer?.disclaimer,\r\n FinancingOfferDataOnPage: offer?.FinancingOfferDataOnPage,\r\n isCashBack: cashbackFinancingEnable,\r\n checkoutDisplay: offer?.checkoutDisplay,\r\n cashBackPercentageAmount: offer?.cashBackPercentageAmount,\r\n cashbackBannerDetails: offer?.cashbackBannerDetails,\r\n cashbackFinancingOfferMessage: offer?.cashbackFinancingOfferMessage\r\n };\r\n offerFound = true;\r\n bestOffer = cashBackOffer;\r\n }\r\n\r\n // check if current offer expired\r\n if (offerFound && offer?.offerValidEndDate) {\r\n const endDate = dayjs(offer?.offerValidEndDate, format);\r\n const now = dayjs();\r\n if (endDate?.isValid() && now.isAfter(endDate)) {\r\n offerFound = false;\r\n }\r\n }\r\n });\r\n }\r\n // if no offer found then check limited time financing offers\r\n if (!offerFound || !isScheduled(bestOffer)) {\r\n validLimitedTimeFinancingOffers.forEach((offer: IFinancingOffer) => {\r\n const minPurchase = offer.minPurchase ? offer.minPurchase : 0;\r\n\r\n if (totalPrice >= minPurchase && minPurchase > highestMinimumPurchase) {\r\n const currentOffer: IFinancingOfferFormatted = {\r\n numOfMonths: offer.noInterestFor,\r\n costPerMonth: Math.ceil(totalPrice / offer.noInterestFor),\r\n startDate: offer.offerValidStartDate,\r\n endDate: offer.offerValidEndDate,\r\n isLTO: true,\r\n minPurchase: offer.minPurchase,\r\n everydayFinancingOfferMessage: offer.everydayFinancingOfferMessage,\r\n limitedFinancingOfferMessage: offer.limitedFinancingOfferMessage,\r\n cashbackFinancingOfferMessage: offer.cashbackFinancingOfferMessage,\r\n monthlyOfferDetails: offer.monthlyOfferDetails,\r\n financingOfferDescription: offer.financingOfferDescription,\r\n disclaimer: offer.disclaimer,\r\n specialCampaign: offer.specialCampaignOffer,\r\n checkoutDisplay: offer.checkoutDisplay,\r\n offerName: offer.offerName\r\n };\r\n bestOffer = currentOffer;\r\n highestMinimumPurchase = offer.minPurchase;\r\n offerFound = true;\r\n\r\n // check if campaign schedule is scheduled, otherwise fall back to parent offer\r\n const validCampaign = getValidSpecialCampaign(currentOffer);\r\n if (validCampaign) {\r\n currentOffer.startDate = validCampaign.campaignValidStartDate;\r\n currentOffer.endDate = validCampaign.campaignValidEndDate;\r\n campaignFound = currentOffer;\r\n }\r\n else {\r\n campaignFound = undefined;\r\n }\r\n }\r\n });\r\n }\r\n // if no offer found then check everyday financing offer\r\n if (!offerFound || (!isScheduled(bestOffer) && everydayFinancingOffers.length)) {\r\n // try default offer\r\n offerFound = false;\r\n highestMinimumPurchase = 0;\r\n\r\n everydayFinancingOffers.forEach((offer: IFinancingOffer) => {\r\n const minPurchase = checkoutShowEveryDayOffers ? 0 : offer.minPurchase ? offer.minPurchase : 0;\r\n let currentOfferAccepted = false;\r\n if (totalPrice >= minPurchase && minPurchase >= highestMinimumPurchase) {\r\n bestOffer = {\r\n numOfMonths: offer.noInterestFor,\r\n costPerMonth: Math.ceil(totalPrice / offer.noInterestFor),\r\n isLTO: false,\r\n minPurchase: offer.minPurchase || 0,\r\n everydayFinancingOfferMessage: offer.everydayFinancingOfferMessage,\r\n limitedFinancingOfferMessage: offer.limitedFinancingOfferMessage,\r\n cashbackFinancingOfferMessage: offer.cashbackFinancingOfferMessage,\r\n offerName: offer.offerName,\r\n monthlyOfferDetails: offer.monthlyOfferDetails,\r\n financingOfferDescription: offer.financingOfferDescription,\r\n disclaimer: offer.disclaimer\r\n };\r\n highestMinimumPurchase = offer.minPurchase;\r\n offerFound = true;\r\n currentOfferAccepted = true;\r\n }\r\n\r\n if (returnCustomOfferArray && (totalPrice >= minPurchase)) {\r\n everydayOffers?.push({\r\n numOfMonths: offer.noInterestFor,\r\n costPerMonth: Math.ceil(totalPrice / offer.noInterestFor),\r\n isLTO: false,\r\n minPurchase: offer.minPurchase || 0,\r\n everydayFinancingOfferMessage: offer.everydayFinancingOfferMessage,\r\n limitedFinancingOfferMessage: offer.limitedFinancingOfferMessage,\r\n cashbackFinancingOfferMessage: offer.cashbackFinancingOfferMessage,\r\n monthlyOfferDetails: offer.monthlyOfferDetails,\r\n financingOfferDescription: offer.financingOfferDescription,\r\n disclaimer: offer.disclaimer,\r\n offerName: offer.offerName\r\n });\r\n highestMinimumPurchase = offer.minPurchase;\r\n offerFound = true;\r\n currentOfferAccepted = true;\r\n // @ts-ignore\r\n bestOffer = everydayOffers;\r\n }\r\n // Do not use default if end date is defined and has expired\r\n if (currentOfferAccepted && offer.offerValidEndDate) {\r\n const endDate = dayjs(offer.offerValidEndDate, format);\r\n const now = dayjs();\r\n if (endDate.isValid() && now.isAfter(endDate)) {\r\n offerFound = false;\r\n }\r\n }\r\n });\r\n }\r\n if (lowCostOffer?.length) {\r\n lowCostOffer.forEach((offer: ILowCostOffer) => {\r\n if (totalPrice <= offer.maxPurchase && offer.offerName?.toLowerCase() === 'low cost offer') {\r\n const LCO = {\r\n offerName: offer.offerName,\r\n maxPurchase: offer.maxPurchase || 0,\r\n lowCostFinancingOfferMessage: offer.lowCostFinancingOfferMessage,\r\n financingOfferDescription: offer?.financingOfferDescription?.replace(/{defaultNumOfMonths}/g, `${offer?.defaultNumberOfMonths?.toString() || 6}`),\r\n disclaimer: offer.disclaimer,\r\n lowCostOfferDetailsOnCart: offer.lowCostOfferDetailsOnCart\r\n };\r\n highestMinimumPurchase = offer.maxPurchase;\r\n offerFound = true;\r\n // @ts-ignore\r\n bestOffer = LCO;\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!offerFound) {\r\n return undefined;\r\n }\r\n if (campaignFound) {\r\n return campaignFound;\r\n }\r\n return bestOffer;\r\n};\r\n","import * as React from \"react\";\r\nimport { ITelemetry } from '@msdyn365-commerce/core';\r\ninterface ErrorBoundaryState {\r\n hasError: boolean;\r\n errorMessage: string;\r\n}\r\n\r\ninterface ErrorBoundaryProps {\r\n showMessage?: boolean | string; //true to show the error message, set to string to show custom message\r\n telemetry: ITelemetry\r\n}\r\n\r\n\r\n// Put this in a child component to mock an error in order to test ErrorBoundary.\r\nexport const MockError = (props: {message?: string}) => {\r\n throw new Error(props.message);\r\n};\r\n\r\nexport class ErrorBoundary extends React.Component {\r\n constructor(props: ErrorBoundaryProps) {\r\n super(props);\r\n this.state = {\r\n hasError: false,\r\n errorMessage: \"\"\r\n };\r\n }\r\n\r\n\r\n // @ts-ignore\r\n private static getDerivedStateFromError(error: any) {\r\n // Update state so the next render will show the fallback UI.\r\n return { hasError: true, errorMessage: error.message };\r\n }\r\n\r\n// public componentDidCatch(error: any, errorInfo: any) {\r\n// // You can also log the error to an error reporting service\r\n// logErrorToMyService(error, errorInfo);\r\n// }\r\n\r\n public render() {\r\n const bgColor = \"rgba(0,0,255)\";\r\n\r\n if (this.state.hasError) {\r\n const { showMessage } = this.props;\r\n const message = typeof showMessage === 'string' ? showMessage : showMessage ? this.state.errorMessage : false;\r\n this.props?.telemetry?.error(this.state?.errorMessage);\r\n // TODO design this custom UI fallback\r\n return message ?
{message}
: null;\r\n }\r\n\r\n return this.props.children || null;\r\n }\r\n}\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nimport { IFinancingOfferFormatted } from '../Utilities/select-financing-offer';\r\n\r\n/**\r\n * FinancingOfferState Input Action\r\n */\r\n\r\nexport class FinancingOfferStateInput implements Msdyn365.IActionInput {\r\n // Determine if the results of this get action should cache the results and if so provide\r\n // a cache object type and an appropriate cache key\r\n public getCacheKey = () => `FinancingOfferState`;\r\n public getCacheObjectType = () => 'FinancingOfferState';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// Create a data model here or import one to capture the response of the action\r\nexport interface IFinancingOfferStateData {\r\n isOpen: boolean;\r\n totalPrice?: number;\r\n financingOffer?: IFinancingOfferFormatted;\r\n}\r\n\r\n/**\r\n * Use this function to create the input required to make the action call\r\n */\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new FinancingOfferStateInput();\r\n};\r\n\r\n/**\r\n * Use this function to call your action and process the results as needed\r\n */\r\nasync function action(input: FinancingOfferStateInput, ctx: Msdyn365.IActionContext): Promise {\r\n return { isOpen: false };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >action,\r\n id: 'FinancingOfferState',\r\n input: createInput\r\n});\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport * as React from 'react';\r\n\r\nimport { ICoreContext, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { FinancingOfferStateInput, IFinancingOfferStateData } from '../../../data-actions/financing-offer-state.action';\r\nimport { fireAnalyticsLink } from '../../../Utilities/analytics/clickTrack';\r\nimport {\r\n getCampaignRemainingCost,\r\n getValidSpecialCampaign,\r\n IFinancingOfferFormatted,\r\n selectFinancingOffer\r\n} from '../../../Utilities/select-financing-offer';\r\nimport { getQueryParamsFromQueryByName } from '../../../data-actions/utilities/utils';\r\nimport { variantQueryStringName } from '../../../Utilities/constants';\r\nimport CustomSkeleton from './CustomSkeleton';\r\n\r\nexport type FinancingComponentPageType = 'PDP' | 'PLP';\r\n\r\nexport interface IFinancingPerMonthComponentProps {\r\n pageType: FinancingComponentPageType;\r\n sellingPrice: number;\r\n // tslint:disable-next-line:no-any\r\n context: ICoreContext<{ [x: string]: any }>;\r\n priceComponent?: JSX.Element;\r\n // VSI Customization - START\r\n sizeValue?: string | undefined;\r\n dimensionPrice?: number | undefined;\r\n percentDiff?: number | undefined;\r\n discountAmount?: number;\r\n categoryName?: String | undefined,\r\n activeVariantId: number | undefined,\r\n productId: number | undefined,\r\n activeColorVariantId: number | undefined,\r\n isLoadedPriceComponent?: boolean | undefined,\r\n parentCategory?: string | undefined\r\n // VSI Customization - END\r\n}\r\n\r\nexport const FinancingPerMonthComponent: React.FC = ({\r\n pageType,\r\n sellingPrice,\r\n context,\r\n priceComponent,\r\n sizeValue,\r\n dimensionPrice,\r\n percentDiff,\r\n discountAmount,\r\n categoryName,\r\n activeVariantId,\r\n productId,\r\n activeColorVariantId,\r\n isLoadedPriceComponent,\r\n parentCategory\r\n}) => {\r\n const selectedFinancingOffer: IFinancingOfferFormatted | undefined = selectFinancingOffer({\r\n limitedTimeFinancingOffers: context.app.config.limitedTimeFinancingOffers,\r\n everydayFinancingOffers: context.app.config.everydayFinancingOffers,\r\n lowCostOffer: context.app.config.lowCostFinancingOffers,\r\n cashBackFinancingOffer: context.app.config.cashBackFinancingOffer,\r\n cashbackFinancingEnable: context.app.config.cashbackFinancingEnable,\r\n totalPrice: sellingPrice\r\n });\r\n\r\n if (!sellingPrice) {\r\n return null;\r\n }\r\n const monthlyCost = selectedFinancingOffer && Math.ceil(sellingPrice / selectedFinancingOffer.numOfMonths);\r\n const stateUpdate: IFinancingOfferStateData = {\r\n isOpen: true,\r\n totalPrice: sellingPrice,\r\n financingOffer: selectedFinancingOffer\r\n };\r\n const url = new URL(window.location.href.toString());\r\n const variantId = Number(getQueryParamsFromQueryByName(url, variantQueryStringName)) || undefined;\r\n const openModal = () => {\r\n fireAnalyticsLink({\r\n eventName: 'internal navigation',\r\n eventCategory: 'internal links',\r\n eventAction: 'to: Financing Per Month modal',\r\n eventLabel: `from ${pageType} Financing Per Month “Learn How” link`,\r\n eventNoninteraction: 'false'\r\n });\r\n context.actionContext.update(new FinancingOfferStateInput(), stateUpdate);\r\n };\r\n // format currency and strip trailing zeros\r\n // TODO: remove the cents portion in a dynamic way for all currencies\r\n const formattedMonthlyCost = monthlyCost && context.cultureFormatter.formatCurrency(monthlyCost);\r\n const monthlyCostStrippedZeros = formattedMonthlyCost && formattedMonthlyCost.substring(0, formattedMonthlyCost.length - 3);\r\n\r\n const campaign = selectedFinancingOffer && getValidSpecialCampaign(selectedFinancingOffer);\r\n const campaignRemainingCost =\r\n campaign && selectedFinancingOffer && getCampaignRemainingCost(campaign, selectedFinancingOffer, sellingPrice);\r\n\r\n const formattedCampaignCost =\r\n campaign && campaignRemainingCost && context.cultureFormatter.formatCurrency(Math.ceil(campaignRemainingCost.cost));\r\n const campaignCostStrippedZeros = formattedCampaignCost && formattedCampaignCost?.substring(0, formattedCampaignCost.length - 3);\r\n\r\n const cashbackFinancingMessage = context.app.config?.cashbackFinancingMessage;\r\n const pdpCashbackFinancingMessage = context.app.config?.pdpCashbackFinancingMessage;\r\n const everydayFinancingMessage = context.app.config.everydayFinancingMessage;\r\n const limitedFinancingMessage = context.app.config.limitedFinancingMessage;\r\n const limitedCampaignFinancingMessage = context.app.config.limitedCampaignFinancingMessage;\r\n\r\n const sellingPriceDollars = sellingPrice.toFixed(2).split('.')[0];\r\n const sellingPriceCents = sellingPrice.toFixed(2).split('.')[1];\r\n\r\n const dimensionDollars = dimensionPrice?.toFixed(2).split('.')[0];\r\n const dimensionCents = dimensionPrice?.toFixed(2).split('.')[1];\r\n const readyToShow = activeVariantId === productId || activeColorVariantId === productId || variantId === productId || pageType === \"PLP\";\r\n const promotionalPeriod = selectedFinancingOffer?.numOfMonths;\r\n const validThroughDate = selectedFinancingOffer && selectedFinancingOffer.isLTO && (promotionalPeriod === 36 || promotionalPeriod === 48 || promotionalPeriod === 60) ? '' : ` Valid thru ${selectedFinancingOffer?.endDate} `;\r\n const offerMinPurchase =\r\n selectedFinancingOffer && context.cultureFormatter.formatCurrency(Math.ceil(selectedFinancingOffer.minPurchase));\r\n const offerMinPurchaseStrippedZeros = offerMinPurchase && offerMinPurchase?.substring(0, offerMinPurchase.length - 3);\r\n // tslint:disable: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role\r\n return pageType === 'PDP' ? (\r\n
\r\n
\r\n
0 && Number(percentDiff) < 100 && discountAmount !== 0 ? 'product-price' : 'product-price-black'}>\r\n\r\n {Number(percentDiff) > 0 && discountAmount !== 0 ? readyToShow ?\r\n <>\r\n ${sellingPriceDollars}\r\n {sellingPriceCents}\r\n \r\n \r\n ${dimensionDollars}\r\n {dimensionCents}\r\n \r\n {percentDiff && percentDiff.toFixed()}% Off\r\n \r\n : : readyToShow ? priceComponent || (\r\n <>\r\n ${sellingPriceDollars}\r\n {sellingPriceCents}\r\n ) : \r\n }\r\n
\r\n
\r\n {selectedFinancingOffer && (\r\n <>\r\n {campaign && campaignRemainingCost ? (\r\n
\r\n {/* commented as per story no 21902 */}\r\n {/*
Pay as low as
*/}\r\n
or {`$${Math.ceil(\r\n campaign.initialMonthlyAmount\r\n )}/mo for the first ${campaign.numOfDiscountedMonths} months`}
\r\n {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role*/}\r\n
e.stopPropagation()}>\r\n {/* {`Then $${Math.ceil(campaignRemainingCost.cost)}/mo for ${\r\n campaignRemainingCost?.months\r\n } months with 0% APR with Mattress Firm Credit Card.Limited Time.`} */}\r\n {limitedCampaignFinancingMessage &&\r\n limitedCampaignFinancingMessage\r\n ?.replace('{campaignCost}', campaignCostStrippedZeros)\r\n ?.replace('{campaignMonths}', campaignRemainingCost?.months)}\r\n \r\n Learn How\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n ) : selectedFinancingOffer.offerName?.toLowerCase() === 'low cost offer' ?\r\n
\r\n {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role*/}\r\n
e.stopPropagation()}>\r\n {selectedFinancingOffer.lowCostFinancingOfferMessage}\r\n \r\n Learn How\r\n \r\n
\r\n
: (\r\n
\r\n {/* commented as per story no 21902 */}\r\n {/*
Pay as low as
*/}\r\n {/*
\r\n {pageType === 'PDP' ? `${monthlyCostStrippedZeros}/mo` : `${monthlyCostStrippedZeros} / mo`}\r\n
*/}\r\n {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role*/}\r\n
e.stopPropagation()}>\r\n {/* {pageType === 'PDP' ? `${monthlyCostStrippedZeros}/mo` : `${monthlyCostStrippedZeros} / mo`} */}\r\n {selectedFinancingOffer?.isCashBack ? pdpCashbackFinancingMessage &&\r\n :\r\n selectedFinancingOffer.isLTO\r\n ? `${limitedFinancingMessage &&\r\n limitedFinancingMessage?.replace(\r\n '{numOfMonths}',\r\n selectedFinancingOffer.numOfMonths\r\n )}${(pageType === 'PDP' && validThroughDate)}`\r\n : everydayFinancingMessage &&\r\n everydayFinancingMessage\r\n ?.replace('{monthlyCostStrippedZeros}', monthlyCostStrippedZeros)\r\n ?.replace('{numOfMonths}', selectedFinancingOffer.numOfMonths)}\r\n {/* ? `0% Interest with ${\r\n selectedFinancingOffer.numOfMonths\r\n } equal monthly payments. Limited Time.${(pageType === 'PDP' &&\r\n ` Valid thru ${selectedFinancingOffer.endDate} `) ||\r\n ''}`\r\n :`Suggested payments with ${selectedFinancingOffer.numOfMonths} months special financing. `} */}\r\n \r\n Learn How\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n ) : (\r\n
\r\n
\r\n {/* VSI Customization - START */}\r\n
{pageType === 'PLP' ? (sizeValue ? sizeValue : 'Starting at') : null}
\r\n {/* VSI Customization - END */}\r\n
{priceComponent || `${context.cultureFormatter.formatCurrency(sellingPrice)}`}
\r\n
\r\n {selectedFinancingOffer && (\r\n <>\r\n
\r\n OR\r\n
\r\n {campaign && campaignRemainingCost ? (\r\n
\r\n {/* commented as per story no 21902 */}\r\n {/*
Pay as low as
*/}\r\n
{`$${Math.ceil(\r\n campaign.initialMonthlyAmount\r\n )}/mo for the first ${campaign.numOfDiscountedMonths} months`}
\r\n {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role*/}\r\n
e.stopPropagation()}>\r\n {/* {`Then $${Math.ceil(campaignRemainingCost.cost)}/mo for ${\r\n campaignRemainingCost?.months\r\n } months with 0% APR with Mattress Firm Credit Card.Limited Time.`} */}\r\n {limitedCampaignFinancingMessage &&\r\n limitedCampaignFinancingMessage\r\n ?.replace('{campaignCost}', campaignCostStrippedZeros)\r\n ?.replace('{campaignMonths}', campaignRemainingCost?.months)}\r\n \r\n
\r\n
\r\n )\r\n :\r\n selectedFinancingOffer.offerName?.toLowerCase() === 'low cost offer' ?\r\n
\r\n {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role*/}\r\n
e.stopPropagation()}>\r\n

{selectedFinancingOffer.lowCostFinancingOfferMessage?.replace('.', '.\\n')}

\r\n \r\n
\r\n
\r\n : (\r\n
\r\n {/* tslint:disable-next-line: react-this-binding-issue jsx-no-lambda react-a11y-event-has-role*/}\r\n
\r\n {pageType === 'PLP' ? `${monthlyCostStrippedZeros}/mo` : `${monthlyCostStrippedZeros} / mo`}\r\n
\r\n
e.stopPropagation()}>\r\n {selectedFinancingOffer?.isCashBack ? cashbackFinancingMessage &&\r\n :\r\n selectedFinancingOffer.isLTO\r\n ? `${limitedFinancingMessage &&\r\n limitedFinancingMessage?.replace(\r\n '{numOfMonths}',\r\n selectedFinancingOffer.numOfMonths\r\n )?.replace('{monthlyCostStrippedZeros}', monthlyCostStrippedZeros)\r\n }`\r\n : everydayFinancingMessage &&\r\n everydayFinancingMessage\r\n ?.replace('{numOfMonths}', selectedFinancingOffer.numOfMonths)\r\n ?.replace('{monthlyCostStrippedZeros}', monthlyCostStrippedZeros)\r\n }\r\n \r\n
\r\n
\r\n )}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n"],"names":["fireAnalyticsLink","searchTerm","searchType","eventName","eventCategory","eventAction","eventLabel","eventType","eventNoninteraction","enhancedAction","generalConfig","promoConfig","productConfig","customerConfig","productImpressionConfig","callUtagLink","event","event_category","event_action","event_label","event_type","event_noninteraction","enhanced_action","search_term","search_type","BVRatingSummary","itemId","onClick","variantId","hideReadReviewsButton","dataBvProductIdAttr","setDataBvProductIdAttr","useState","wrapper","useRef","interval","numReviews","setNumReviews","useEffect","pollInterval","window","setInterval","numReviewsHTML","current","querySelector","innerHTML","match","clearInterval","style","display","React","onMouseEnter","button","Array","from","document","querySelectorAll","find","outerHTML","onMouseLeave","ref","hasArray","values","length","undefined","dayjs","tz","utc","isBetween","format","defaultImageSettings","viewports","xs","q","w","h","disableLazyLoad","parseBadgeData","badgeData","requestContext","dataSegments","scheduleStart","scheduleEnd","badgeType","parsedScheduleStart","startDate","startTime","parsedScheduleEnd","endDate","endTime","split","e","startMoment","replace","endMoment","startMomentFormatted","endMomentFormatted","isValid","baseUrl","apiSettings","baseImageUrl","substring","removed$","src","toLowerCase","alt","start","convertTimeZone","end","time","local","buildProductBadge","parsedBadgeData","Image","className","gridSettings","altText","title","imageSettings","renderProductBadge","attributeName","finalizedBadges","map","badge","parsedBadge","fallBackBrandAttribute","parseBrandName","attributes","backendAttribute","recordId","attribute","productBrandName","currAttribute","Name","trim","TextValue","MsDyn365","getLocalStorage","localStorage","getItem","bonusItemArray","JSON","parse","checkBrandName","item","productId","brandName","parseBrandNameUnbxd","getBrandNameCheck","getValidSpecialCampaign","financingOffer","specialCampaign","enableCampaign","initialMonthlyAmount","numOfDiscountedMonths","isCampaignScheduled","getCampaignRemainingCost","campaign","totalPrice","remainingCost","remainingMonths","numOfMonths","cost","months","offer","tempOffer","Object","create","campaignValidStartDate","campaignValidEndDate","isScheduled","add","startDateCentralTime","endDateCentralTime","now","selectFinancingOffer","returnCustomOfferArray","campaignFound","limitedTimeFinancingOffers","everydayFinancingOffers","lowCostOffer","specialFinancingOffer","synchronySpecialFinancingCondition","specialFinancingEnable","checkoutShowEveryDayOffers","cashbackFinancingEnable","cashBackFinancingOffer","highestMinimumPurchase","bestOffer","costPerMonth","isLTO","minPurchase","everydayFinancingOfferMessage","limitedFinancingOfferMessage","cashbackFinancingOfferMessage","monthlyOfferDetails","financingOfferDescription","disclaimer","offerFound","everydayOffers","specialOffer","validLimitedTimeFinancingOffers","filter","offerValidStartDate","offerValidEndDate","isValidLimitedTimeOffer","forEach","currentOfferAccepted","noInterestFor","Math","ceil","offerName","FinancingOfferDataOnPage","checkoutDisplay","push","isAfter","cashBackOffer","isCashBack","cashBackPercentageAmount","cashbackBannerDetails","currentOffer","specialCampaignOffer","validCampaign","maxPurchase","LCO","lowCostFinancingOfferMessage","defaultNumberOfMonths","toString","lowCostOfferDetailsOnCart","ErrorBoundary","constructor","props","super","this","state","hasError","errorMessage","error","message","render","showMessage","telemetry","background","padding","color","children","FinancingOfferStateInput","getCacheKey","getCacheObjectType","dataCacheType","Msdyn365","action","async","input","ctx","isOpen","id","args","FinancingPerMonthComponent","pageType","sellingPrice","context","priceComponent","sizeValue","dimensionPrice","percentDiff","discountAmount","categoryName","activeVariantId","activeColorVariantId","isLoadedPriceComponent","parentCategory","selectedFinancingOffer","app","config","lowCostFinancingOffers","monthlyCost","stateUpdate","url","URL","location","href","Number","getQueryParamsFromQueryByName","variantQueryStringName","openModal","actionContext","update","formattedMonthlyCost","cultureFormatter","formatCurrency","monthlyCostStrippedZeros","campaignRemainingCost","formattedCampaignCost","campaignCostStrippedZeros","cashbackFinancingMessage","pdpCashbackFinancingMessage","everydayFinancingMessage","limitedFinancingMessage","limitedCampaignFinancingMessage","sellingPriceDollars","toFixed","sellingPriceCents","dimensionDollars","dimensionCents","readyToShow","promotionalPeriod","validThroughDate","offerMinPurchase","offerMinPurchaseStrippedZeros","CustomSkeleton","type","stopPropagation","role","RichTextComponent","text"],"sourceRoot":""}