{"version":3,"file":"static/js/16c70704406e804a457e.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/common/automation/data-testids.ts?225a","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/pencil-banner-adaptor/pencilBannerAdaptor.ts?a9ab","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/util/is-scheduled.ts?57af","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/pencil-banner-components/PencilBannerCountDown.tsx?61f8","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/util/html-to-text.ts?7843","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/pencil-banner-components/PencilBannerHTML.tsx?76ab","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/pencil-banner-components/PencilBannerCTA.tsx?55ac","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/pencil-banner-components/PencilBannerMessage.tsx?9bb0","webpack://mattressfirm/./src/mfrm-components/components/Carousel/useCarousel.ts?ffda","webpack://mattressfirm/./src/mfrm-components/components/Carousel/index.tsx?8422","webpack://mattressfirm/./src/mfrm-components/components/Carousel/utils.ts?267a","webpack://mattressfirm/./src/mfrm-components/mfrm-pencil-banner/MFRMPencilBanner.tsx?4b71","webpack://mattressfirm/./src/themes/mattressfirm/views/promo-banner.view.tsx?dbcd","webpack://mattressfirm/./lib/promo-banner/module-registration.js?d732","webpack://mattressfirm/./src/modules/promo-banner/components/close-button.tsx?063b","webpack://mattressfirm/./src/modules/promo-banner/components/links.tsx?2587","webpack://mattressfirm/./src/modules/promo-banner/components/text.tsx?782b","webpack://mattressfirm/./src/modules/promo-banner/promo-banner.tsx?9ee9","webpack://mattressfirm/./src/modules/promo-banner/promo-banner.view.tsx?7f77","webpack://mattressfirm/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"sourcesContent":["export enum CustomerInfoDataTestIds {\r\n customerInfoHeading = 'customerinfoCustomerInfoHeading',\r\n deliveryPageHeading = 'deliveryDeliveryHeading',\r\n paymentPageHeading = 'paymentPageTitle',\r\n FirstName = 'customerinfoShippingAddressFirstName',\r\n LastName = 'customerinfoShippingAddressLastName',\r\n Email = 'customerinfoShippingAddressEmail',\r\n Phone = 'customerinfoShippingAddressPhone',\r\n EmailMeNewsCheckBox = 'customerinfoEmailM',\r\n BillingAddressSameCheckBox = 'paymentCheckoutBillingAddressCheckBox',\r\n Address = 'customerinfoShippingAddressAddress',\r\n Apt = 'customerinfoShippingAddressApt',\r\n ZipCode = 'customerinfoShippingAddressZipCode',\r\n City = 'customerinfoShippingAddressCity',\r\n State = 'customerinfoShippingAddressState',\r\n ExpressCustomerInfo = 'customerinfoHeading'\r\n}\r\n\r\nexport enum CheckoutStepperDataTestIds {\r\n customerInfoStepper = 'customerinfoStepperModuleWrapper',\r\n deliveryInfoStepper = 'deliveryStepperModuleWrapper',\r\n paymentInfoStepper = 'paymentstepperModuleWrapper'\r\n}\r\n\r\nexport const SynchronyFinnacinTestIds = [\r\n { learnhow: 'paymentSynchrony6monthLearnHowLink', radio: 'paymentSynchrony6monthRadioSelect' },\r\n { learnhow: 'paymentSynchrony12monthLearnHowLink', radio: 'paymentSynchrony12monthRadioSelect' },\r\n { learnhow: 'paymentSynchrony24monthLearnHowLink', radio: 'paymentSynchrony24monthRadioSelect' }\r\n];\r\n\r\nexport enum PaymentSteppDataTestIds {\r\n CreditCardRadioSelect = \"paymentCreditCardRadioSelectButton\",\r\n Creditcardicons = \"paymentCreditCardIconsImage\",\r\n CheckoutBillingaddressCheckBox = \"paymentCheckoutBillingAddressCheckBox\",\r\n PayPalRadioSelect = \"paymentPayPalRadioSelectButton\",\r\n PayPalInstrumentalInfo = \"paymentPayPalInfo\",\r\n SynchronyRadioSelect = \"paymentSynchronyRadioSelectButton\",\r\n SynchronyImage = \"paymentSynchronyIconImage\",\r\n SynchronyPrequalify = \"paymentSynchronyPrequalifyButton\",\r\n Synchronyuseexistingaccount = \"paymentSynchronyUseExistingAccountButton\",\r\n Checkoutguidedcardcontent = \"paymentCheckoutGuidedCardContent\",\r\n Checkouteditcustomerinfo = \"paymentCheckoutEditCustomerInfoLink\",\r\n Deliverysummarycontent = \"paymentDeliverySummaryContent\",\r\n Deliverycontentedit = \"paymentDeliveryContentIdLink\",\r\n Submitorder = \"paymentSubmitOrderButton\"\r\n}\r\n\r\nexport enum CheckoutButtonDataTestIds {\r\n SubmitOrderId = 'paymentSubmitOrderButton',\r\n ContinueToDeliveryId = 'customerinfoContinueDeliveryButton',\r\n ContinueToPaymentId = 'deliveryContinueToPaymentButton'\r\n}\r\n\r\nexport enum DeliveryDataTestIds {\r\n DeliveryOptionSchedule = \"deliveryDeliveryOptionScheduleTitle\",\r\n DeliveryOptionsLinkWrapper = \"deliveryDeliveryOptionLinkWrapper\",\r\n DeliveryOptionScheduleDateButton = \"deliveryDeliveryOptionScheduleDateButton\",\r\n DeliveryTimeSelect = \"deliveryDeliveryTimeSelectOption\",\r\n DeliveryOptionHeading = \"deliveryDeliveryOptionTitle\",\r\n DeliveryOptionServiceWrapper = \"deliveryDeliveryOptionServiceWrapper\"\r\n}\r\n\r\nexport enum OrderSummaryCheckoutDataTestIds {\r\n OrderSummaryHeading = \"OrderSummaryHeading\",\r\n ItemsSubtotallabel = \"OrderSummaryLineSubTotalLabel\",\r\n ItemsSubtotal = \"OrderSummaryLineSubTotal\",\r\n SavingsLabel = \"OrderSummarySavingsLabel\",\r\n Savings = \"OrderSummarySavings\",\r\n TaxLabel = \"OrderSummaryTaxLabel\",\r\n Tax = \"OrderSummaryTax\",\r\n TotalLabel = \"OrderSummaryLineTotaLabel\",\r\n Total = \"OrderSummaryLineTotal\"\r\n}\r\n\r\nexport enum CartDataTestIds {\r\n PencilBanner = \"promoBanner\",\r\n StepperModuleWrapper = \"cartpageStepperModuleWrapper\",\r\n ShoppingCartHeading = \"cartpageShoppingCartHeading\",\r\n ZipCodeLink = \"cartpageDeliveryMessageLink\",\r\n QtyDropDown = \"cartpageQtySelectMenu\",\r\n DeleteItemLink = \"cartpageRemoveItemButton\",\r\n AddPromoCode = \"cartpageAddPromoCodeLink\",\r\n CheckoutButton = \"cartpageCheckoutButton\",\r\n PayPalButton = \"cartpagePaypalLogoButton\",\r\n CreditCardLearnHowLink = \"cartpageMattressfirmCreditCardLearnHowLink\",\r\n LookForLeaseLearnHowLink = \"cartpageLookForLeasetoOptionLearnHowLink\",\r\n SleepExpertLinks = \"cartpageTalkToSleepExpert{buttonType}Link\",\r\n}\r\n\r\nexport enum PaypalExpressDataTestIds {\r\n PaypalCustomerInfoHeading = 'PayPalExpresscustomerInfoHeading',\r\n PaypalStepperModule = 'PayPalExpressStepperModuleWrapper',\r\n PaypalFirstName = 'PayPalExpressshippingAddressfirstname',\r\n PaypalLastName = 'PayPalExpressshippingAddresslastname',\r\n PaypalEmail = 'PayPalExpressshippingAddressEmail',\r\n PaypalPhone = 'PayPalExpressshippingAddressPhone',\r\n PaypalAddress = 'PayPalExpressshippingAddressAddress',\r\n PaypalApt = 'customerinfoShippingAddressApt',\r\n PaypalZipCode = 'PayPalExpressshippingAddressZipcode',\r\n PaypalCity = 'PayPalExpressshippingAddressCity',\r\n SaveandContinueBtn = 'PayPalExpressSaveandContinueButton',\r\n ExpressDeliveryHeading = 'PayPalExpressdeliveryHeading',\r\n ExpressDeliveryContent = 'PayPalExpressdeliveryContent',\r\n ExpressDeliveryEditLink = 'PayPalExpressdeliveryEditLink',\r\n ExpressPaymentHeading = 'PayPalExpresspaymentMethodHeading',\r\n ExpressReviewEmail = 'PayPalExpressreviewEmail',\r\n ExpressPaymentEdit = 'PayPalExpresspaymentEditEditLink',\r\n ExpressOrderSummaryHeading = 'PayPalExpressorderSummaryHeading',\r\n ExpressItemsSubtotal = 'PayPalExpressorderSummarylineSubtotal',\r\n ExpressSavings = 'PayPalExpressorderSummarySavings',\r\n ExpressTax = 'PayPalExpressorderSummaryTax',\r\n ExpressTotal = 'PayPalExpressorderSummarylineTotal',\r\n ExpressorderReviewHeading = 'PayPalExpressorderReviewHeading',\r\n ExpressorderReviewContainer = 'PayPalExpressorderReviewPaypalExpressContainer',\r\n ExpresssubmitOrderBtn = 'PayPalExpresssubmitOrderButton'\r\n}\r\n\r\n//data testid's that will be used on OC page\r\nexport enum OrderConfirmationDataTestIds {\r\n ThanksTitle = \"confirmationThankYouTitle\",\r\n OrderNumber = \"confirmationOrderNumber\",\r\n OrderPlacedLabel = \"confirmationOrderPlacedLabel\",\r\n OrderPlacedDetails = \"confirmationOrderPlacedDetails\",\r\n OrderNumberDetails = \"confirmationOrderNumberDetails\",\r\n CustomerInfo = \"confirmationCustomerInfoSection\",\r\n DeliverySection = \"confirmationDeliverySection\",\r\n OrderSummary = \"confirmationOrderSummary\",\r\n OrderSummaryDeliveryLabel = \"confirmationSummaryDeliveryLabel\",\r\n OrderSummaryShippingLabel = \"confirmationSummaryShipLabel\",\r\n OrderSummaryShippingAmount = \"confirmationSummaryShipAmount\",\r\n DeliveryLabel = \"confirmationDeliveryLabel\",\r\n DeliveryProductName = \"confirmationProductName\",\r\n ProductDiscount = \"confirmationDiscountPrice\",\r\n ProductQuantity = \"confirmationQty\",\r\n DeliveryDate = \"confirmationDeliveryDate\",\r\n ProductSize = \"confirmationSize\",\r\n DiscountPercent = \"confirmationDiscountPercent\",\r\n OriginalPriceStrikeThrough = \"confirmationStrikethrough\",\r\n DeliveryProductPrice = \"confirmationNormalPrice\",\r\n TaxLabel = \"confirmationTaxLabel\",\r\n SavingsLabel = \"confirmationItemsSavingsLabel\",\r\n ItemsLabel = \"confirmationItemsLabel\",\r\n TotalLabel = \"confirmationTotalLabel\",\r\n TaxAmount = \"confirmationTaxAmount\",\r\n SavingsAmount = \"confirmationItemsSavingsAmount\",\r\n ItemsTotal = \"confirmationItemsTotal\",\r\n OrderSummaryDeliveryFee = \"confirmationDeliveryFee\",\r\n TotalAmount = \"confirmationTotalAmount\",\r\n PaymentLabel = \"confirmationPaymentLabel\",\r\n PaymentInfo = \"confirmationPaymentDetail\",\r\n DeliveryAddress = \"confirmationDeliveryAddress\",\r\n Email = \"confirmationEmail\",\r\n Phone = \"confirmationPhone\",\r\n BillingMessage = \"confirmationBillingMessage\",\r\n ContactMessage = \"confirmationContactMessage\",\r\n ReceiptEmail = \"confirmationSentEmailToMessage\",\r\n DeliveryTypeLabel = \"confirmationDeliveryTypeLabel\",\r\n ShippingProductName = \"confirmationShippingLineItem\",\r\n ShippingSection = \"confirmationShippingSection\",\r\n ShippingSectionTitle = \"confirmationShippingTitle\",\r\n ShippingNumber = \"confirmationShipmentNumber\",\r\n ShippingSectionSize = \"confirmationSectionSize\",\r\n ShippingSectionQuantity = \"confirmationSectionQTY\",\r\n ShippingSectionPrice = \"confirmationShipLineItemPrice\"\r\n}\r\n\r\n//data testid's that will be used for Progressive\r\nexport enum ProgressiveDataTestIds {\r\n ProgressiveApplyNow = \"progressiveApplyNow\",\r\n ProgressiveLearnMore = \"progressiveLearnMore\",\r\n ProgressivePhoneNumber = \"progressivePhoneNumber\",\r\n ProgressiveSSN = \"progressiveSSN\",\r\n ProgressiveLookUpButton = \"progressiveLookUpButton\",\r\n ProgressiveCallButton = \"progressiveCallButton\",\r\n ProgressiveApprovedPopUpContinueButton = \"progressiveApprovedPopUpContinueButton\",\r\n ProgressiveApprovedPopUpGoBackButton = \"progressiveApprovedPopUpGoBackButton\",\r\n ProgressiveApprovedPopUpCloseButton = \"progressiveApprovedPopUpCloseButton\",\r\n ProgressiveErrorLimitExceed = \"progressiveErrorLimitExceed\",\r\n ProgressiveErrorLimitExceedCTA = \"progressiveErrorLimitExceedCTA\",\r\n ProgressiveErrorCartMinimunThreshold = \"progressiveErrorCartMinimunThreshold\",\r\n ProgressiveErrorOutOfState = \"progressiveErrorOutOfState\",\r\n ProgressiveLeaseNotFound = \"progressiveLeaseNotFound\",\r\n ProgressiveAddressMismatch = \"progressiveAddressMismatch\",\r\n}","/* eslint-disable @typescript-eslint/restrict-plus-operands */\r\nimport { IMfrmHeaderData } from \"../../../modules/mfrm-header/mfrm-header.data\";\r\nimport { IPromoBannerConfig, IPromoBannerProps } from \"../../../themes/mattressfirm/definition-extensions/promo-banner.ext.props.autogenerated\";\r\n\r\nexport interface UIPencilBannerData {\r\n interval: Number | undefined\r\n items?: UIPencilBannerItem [] | null\r\n next?: UICarouselButton | null\r\n previous?: UICarouselButton | null\r\n}\r\n\r\nexport interface UIPencilBannerItem extends UILink {\r\n enableBanner: Boolean\r\n html: String\r\n schedule?: UIDateRange\r\n countdown?: UIDateRange\r\n }\r\n\r\nexport interface UIDateRange {\r\n start: String | undefined\r\n end: String | undefined\r\n}\r\n\r\nexport interface UILink {\r\n ariaLabel?: String | null\r\n label: String | undefined\r\n type?: UILinkType [] | null\r\n url: String | undefined\r\n}\r\n\r\nenum UILinkType {\r\n CHAT\r\n}\r\n\r\nexport interface UICarouselButton {\r\n ariaLabel?: String\r\n image?: {\r\n url: String\r\n }\r\n label?: String\r\n}\r\n\r\nexport const d365ToPencilBannerData = (mfrmPencilBanner: IPromoBannerProps & IPromoBannerConfig | undefined ) => {\r\n if (mfrmPencilBanner) {\r\n return {\r\n interval: mfrmPencilBanner.config.interval,\r\n items :\r\n mfrmPencilBanner?.config.mfrmBannerMessages?.map(item => {\r\n return {\r\n enableBanner: item.enableBanner,\r\n ariaLabel: item?.name,\r\n countdown : {\r\n end: (item.countdownSchedule?.enableCountdown ? (`${item?.countdownSchedule?.endDate!}T${item?.countdownSchedule?.endTime!}`) : undefined),\r\n start: (item.countdownSchedule?.enableCountdown ? (`${item?.countdownSchedule?.startDate!}T${item?.countdownSchedule?.startTime!}`) : undefined)\r\n },\r\n html: item.richText,\r\n label: item.links?.map((label: any) => { return label.linkText; })[0],\r\n schedule: {\r\n end: (item.bannerSchedule?.enableBannerSchedule ? (`${item?.bannerSchedule?.endDate!}T${item?.bannerSchedule?.endTime!}`) : undefined),\r\n start: (item.bannerSchedule?.enableBannerSchedule ? (`${item?.bannerSchedule?.startDate!}T${item?.bannerSchedule?.startTime!}`) : undefined)\r\n },\r\n url: item.links?.map((url: any) => { return url.linkUrl.destinationUrl; })[0]\r\n };\r\n }),\r\n next: {\r\n ariaLabel: mfrmPencilBanner?.config?.next?.altText,\r\n image: {\r\n url: mfrmPencilBanner?.config?.next?.src\r\n },\r\n label: mfrmPencilBanner?.config?.next?.label\r\n },\r\n previous: {\r\n ariaLabel: mfrmPencilBanner?.config?.previous?.altText,\r\n image: {\r\n url: mfrmPencilBanner?.config?.previous?.src\r\n },\r\n label:mfrmPencilBanner?.config?.previous?.label\r\n }\r\n\r\n };\r\n } return null;\r\n};\r\n\r\n\r\n//BedHub Data\r\nexport const bedhubToPencilBannerData = (bedhubData: IMfrmHeaderData | undefined) => {\r\n if (bedhubData !== undefined || null) {\r\n return {\r\n interval: bedhubData?.interval,\r\n items :\r\n bedhubData?.items?.map((item: any) => {\r\n return {\r\n enableBanner: true,\r\n ariaLabel: item.ariaLabel,\r\n countdown : {\r\n end: item?.countdown?.end,\r\n start: item?.countdown?.start\r\n },\r\n html: item.html,\r\n label: item.label,\r\n schedule: {\r\n end: item?.schedule?.end,\r\n start: item?.schedule?.start\r\n },\r\n type: item.type,\r\n url: item.url\r\n };\r\n }),\r\n next: {\r\n ariaLabel: bedhubData?.next?.ariaLabel,\r\n image: {\r\n url: bedhubData?.next?.image.url\r\n },\r\n label: bedhubData?.next?.label\r\n },\r\n previous: {\r\n ariaLabel: bedhubData?.previous?.ariaLabel,\r\n image: {\r\n url: bedhubData?.previous?.image.url\r\n },\r\n label: bedhubData?.previous?.label\r\n }\r\n };\r\n }\r\n return null;\r\n};","import dayjs from 'dayjs';\r\n//checks if banner is currently scheduled\r\nexport const isScheduled = (schedule: {end: string | undefined, start: string | undefined}): Boolean => {\r\n //check if start/end is undefined.\r\n if (!schedule.start && !schedule.end) {\r\n return true;\r\n }\r\n const format = 'M/D/YYYY H:m:s';\r\n\r\n const splitStartSchedule = schedule.start ? schedule.start.split(\"T\") : null;\r\n const startDate = splitStartSchedule ? splitStartSchedule[0] : null;\r\n const startTime = splitStartSchedule ? splitStartSchedule[1] : null;\r\n const start = dayjs(`${startDate} ${startTime}`, format);\r\n\r\n const splitEndSchedule = schedule.end ? schedule.end.split(\"T\") : null;\r\n const endDate = splitEndSchedule ? splitEndSchedule[0] : null;\r\n const endTime = splitEndSchedule ? splitEndSchedule[1] : null;\r\n const end = dayjs(`${endDate} ${endTime}`, format);\r\n\r\n // check if schedule is valid\r\n const validStart = start && start.isValid();\r\n const validEnd = end && end.isValid();\r\n\r\n if (!validStart || !validEnd) {\r\n return false;\r\n }\r\n\r\n const now = dayjs();\r\n\r\n return now.isBetween(start, end);\r\n };","import React from 'react';\r\nimport dayjs from 'dayjs';\r\nimport Countdown, { CountdownRenderProps} from 'react-countdown';\r\nimport { isScheduled } from '../util/is-scheduled';\r\n\r\nexport const PencilBannerCountDown = (props: any) => {\r\n const countdownData = props.countdownData;\r\n //check if coundown start/end is undefined;\r\n if(!countdownData.end && !countdownData.start) { return null; }\r\n // check if countdown is scheduled to show\r\n if (!isScheduled(countdownData)) { return null; }\r\n\r\n const format = 'M/D/YYYY H:m:s';\r\n const splitEndSchedule = countdownData.end ? countdownData.end.split(\"T\") : null;\r\n const endDate = splitEndSchedule ? splitEndSchedule[0] : null;\r\n const endTime = splitEndSchedule ? splitEndSchedule[1] : null;\r\n const scheduleEnd = dayjs(`${endDate} ${endTime}`, format);\r\n\r\n //formatting count down\r\n const renderer = ({ formatted }: CountdownRenderProps) => {\r\n\r\n const days = formatted.days === '00' ? null : {formatted.days}:;\r\n\r\n return (\r\n \r\n {days}{formatted.hours}:{formatted.minutes}:\r\n {formatted.seconds}\r\n \r\n );\r\n };\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\n\r\n","export const htmltoText = (html: string) => {\r\n // Create a new div element\r\n const tempDivElement = document.createElement('div');\r\n\r\n // Set the HTML content with the given value\r\n // tslint:disable-next-line: no-inner-html\r\n tempDivElement.innerHTML = html;\r\n\r\n // Retrieve the text property of the element\r\n return tempDivElement.textContent || tempDivElement.innerText || '';\r\n };","import React from 'react';\r\nimport { htmltoText } from '../util/html-to-text';\r\n\r\ninterface IPencilBannerHTML {\r\n bannerHTML: string;\r\n url: string;\r\n}\r\n\r\nexport const PencilBannerHTML: React.FC = ({ bannerHTML, url }) => {\r\n const handleAnalytics = () => {\r\n if ('utag' in window) {\r\n // @ts-ignore\r\n utag.link({\r\n event: 'pencil banner tracking',\r\n event_category: 'pencil banner tracking',\r\n event_action: 'pencil banner click',\r\n event_label: `${htmltoText(bannerHTML).trim()}`,\r\n event_noninteraction: 'false'\r\n });\r\n }\r\n window.location.href = url;\r\n };\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n handleAnalytics();\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { htmltoText } from '../util/html-to-text';\r\n\r\ninterface IPencilBannerCTA {\r\n ctaText: string;\r\n url: string;\r\n bannerHtml: string;\r\n}\r\n\r\nexport const PencilBannerCTA: React.FC = ({ctaText, url, bannerHtml }) => {\r\n\r\n const handleAnalytics = () => {\r\n if ('utag' in window) {\r\n // @ts-ignore\r\n utag.link({\r\n event: 'pencil banner tracking',\r\n event_category: 'pencil banner tracking',\r\n event_action: 'pencil banner click',\r\n event_label: `${htmltoText(bannerHtml).trim()}`,\r\n event_noninteraction: 'false'\r\n });\r\n }\r\n window.location.href = url;\r\n };\r\n\r\n const handleClick = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n handleAnalytics();\r\n };\r\n\r\n return (\r\n \r\n {ctaText}\r\n \r\n );\r\n};\r\n","import React, { useRef } from 'react';\r\nimport { PencilBannerCountDown } from './PencilBannerCountDown';\r\nimport { PencilBannerHTML } from './PencilBannerHTML';\r\nimport { PencilBannerCTA } from './PencilBannerCTA';\r\nimport { CartDataTestIds } from '../../../common/automation/data-testids';\r\n\r\nexport const PencilBannerMessage = ( props:any ) => {\r\n const {slideInfo} = props;\r\n const messageRef = useRef(null);\r\n const ariaHiddenNode = messageRef?.current?.parentNode as HTMLDivElement;\r\n const anchorRef = useRef(null);\r\n const currentNode = anchorRef?.current as HTMLAnchorElement;\r\n const isMessageHidden = ariaHiddenNode?.getAttribute('aria-hidden') === 'true';\r\n currentNode?.setAttribute(\"tabIndex\", isMessageHidden ? \"-1\" : \"0\");\r\n const handleKeyDown = (e: {key: string}, url?:string) => {\r\n if (e.key === 'Enter') {\r\n window.location.href= url ? url : '';\r\n }\r\n };\r\n\r\n return (\r\n
\r\n handleKeyDown(slideInfo?.url)}\r\n tabIndex={-1}\r\n ref={anchorRef}\r\n >\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\r\n\r\nimport { CarouselHook } from './types';\r\nimport _getViewPort from '../../../Utilities/get-view-port';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nconst useCarousel: CarouselHook = ({\r\n slides = [],\r\n allowTouchMove = false,\r\n autoplay = {},\r\n onSlideChange = () => null\r\n}) => {\r\n const [index, setIndex] = useState(0);\r\n const [realIndex, setRealIndex] = useState(0);\r\n const [play, setPlay] = useState(false);\r\n const intervalRef = useRef();\r\n const desktopViewport = 768;\r\n const { lastSlideIndex, slideCount } = useMemo<{\r\n lastSlideIndex: number;\r\n slideCount: number;\r\n }>(\r\n () => ({\r\n lastSlideIndex: slides.length - 1,\r\n slideCount: slides.length\r\n }),\r\n [slides.length]\r\n );\r\n\r\n\r\n const enableMouseEvents = useMemo(\r\n () => MsDyn365.isBrowser && window?.innerWidth <= desktopViewport && allowTouchMove,\r\n [allowTouchMove]\r\n );\r\n\r\n const nextSlideClickHandler = useCallback(() => {\r\n setIndex((prevIndex) => prevIndex + 1);\r\n setRealIndex((prevIndex) =>\r\n prevIndex === lastSlideIndex ? 0 : prevIndex + 1\r\n );\r\n }, [lastSlideIndex]);\r\n\r\n const pausePlay = () => {\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n }\r\n };\r\n\r\n const stopPlay = () => {\r\n setPlay(false);\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n }\r\n };\r\n\r\n const startPlay = useCallback(() => {\r\n if (intervalRef.current) {\r\n clearInterval(intervalRef.current);\r\n }\r\n\r\n intervalRef.current = setInterval(nextSlideClickHandler, autoplay.delay);\r\n setPlay(true);\r\n }, [autoplay.delay, nextSlideClickHandler]);\r\n\r\n useEffect(() => {\r\n const handleVisibilityChange = (event:any) => {\r\n if (event.target.hidden) {\r\n pausePlay();\r\n } else {\r\n if (play) {\r\n startPlay();\r\n }\r\n }\r\n };\r\n\r\n document.addEventListener(\r\n 'visibilitychange',\r\n handleVisibilityChange\r\n );\r\n\r\n return () => {\r\n document.removeEventListener(\r\n 'visibilitychange',\r\n handleVisibilityChange\r\n );\r\n };\r\n }, [play, startPlay]);\r\n\r\n useEffect(() => {\r\n onSlideChange({ play, index: realIndex });\r\n }, [realIndex, onSlideChange, play]);\r\n\r\n useEffect(() => {\r\n if (!autoplay.enable || slideCount === 1) {\r\n return;\r\n }\r\n\r\n startPlay();\r\n\r\n return () => {\r\n stopPlay();\r\n };\r\n }, [autoplay.enable, startPlay, slideCount]);\r\n\r\n const prevSlideClickHandler = useCallback(() => {\r\n setIndex((prevIndex) => prevIndex - 1);\r\n setRealIndex((prevIndex) =>\r\n prevIndex === 0 ? lastSlideIndex : prevIndex - 1\r\n );\r\n }, [lastSlideIndex]);\r\n\r\n const slideChangeHandler = (virtualIndex:number) => {\r\n let paginationIndex;\r\n\r\n if (virtualIndex >= 0) {\r\n paginationIndex = virtualIndex % slideCount;\r\n } else {\r\n paginationIndex =\r\n (slideCount - Math.abs(virtualIndex % slideCount)) % slideCount;\r\n }\r\n\r\n setRealIndex(paginationIndex);\r\n setIndex(virtualIndex);\r\n };\r\n\r\n\r\n const mouseEnterHandler = () => {\r\n if (autoplay.pauseOnHover) {\r\n pausePlay();\r\n }\r\n };\r\n\r\n const mouseLeaveHandler = () => {\r\n if (autoplay.pauseOnHover && play) {\r\n startPlay();\r\n }\r\n };\r\n\r\n return {\r\n index,\r\n realIndex,\r\n slideCount,\r\n play,\r\n enableMouseEvents,\r\n nextSlideClickHandler,\r\n prevSlideClickHandler,\r\n slideChangeHandler,\r\n mouseEnterHandler,\r\n mouseLeaveHandler\r\n };\r\n};\r\n\r\nexport default useCarousel;\r\n","import { cloneElement, FC, Fragment, ReactElement, ReactNode } from 'react';\r\nimport SwipeableViews from 'react-swipeable-views';\r\nimport { virtualize } from 'react-swipeable-views-utils';\r\nimport { CarouselConfig } from './types';\r\nimport { mod } from './utils';\r\nimport React from 'react';\r\nimport useCarousel from './useCarousel';\r\n\r\ntype PropTypes = { children: ReactNode[] } & CarouselConfig;\r\n\r\nconst VirtualizeSwipeableViews = virtualize(SwipeableViews);\r\n\r\nconst Carousel: FC = (props) => {\r\n const {\r\n index,\r\n slideCount,\r\n enableMouseEvents,\r\n slideChangeHandler,\r\n mouseLeaveHandler,\r\n mouseEnterHandler\r\n } = useCarousel({ slides: props.children, ...props });\r\n const {\r\n children,\r\n classes = {}\r\n } = props;\r\n\r\n const slideRenderer = ({ index }:any) => {\r\n const child = children[mod(index, slideCount)] as ReactElement;\r\n if (!child) {\r\n return null;\r\n }\r\n return {cloneElement(child)};\r\n };\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Carousel;\r\n","export const mod = (index:number, count:number) => {\r\n const q = index % count;\r\n\r\n return q < 0 ? q + count : q;\r\n};\r\n","import React from 'react';\r\nimport { IPromoBannerConfig, IPromoBannerProps } from '../../themes/mattressfirm/definition-extensions/promo-banner.ext.props.autogenerated';\r\nimport { IMfrmHeaderData } from '../../modules/mfrm-header/mfrm-header.data';\r\nimport { bedhubToPencilBannerData, d365ToPencilBannerData } from './pencil-banner-adaptor/pencilBannerAdaptor';\r\nimport { isScheduled } from './util/is-scheduled';\r\nimport { PencilBannerMessage } from './pencil-banner-components/PencilBannerMessage';\r\nimport Carousel from '../components/Carousel';\r\n\r\nexport const MFRMPencilBanner = (props: IPromoBannerProps & IPromoBannerConfig) => {\r\n //D365 Data\r\n const mfrmPencilBannerData = props;\r\n const d365PencilBannerData = d365ToPencilBannerData(mfrmPencilBannerData);\r\n\r\n //Filter D365 data if scheduled and banner enabled\r\n d365PencilBannerData!.items = d365PencilBannerData!.items?.filter((item:\r\n { enableBanner: boolean | undefined, schedule: { end: string | undefined, start: string | undefined } }) => {\r\n return (item.enableBanner && isScheduled(item.schedule));\r\n });\r\n\r\n //BedHub Data\r\n let bedhubDataSource = props?.config?.bedhubDataSource;\r\n const {\r\n data: {\r\n bedhubHeader: { result: bedhubHeader }\r\n }\r\n } = props;\r\n\r\n if (bedhubHeader?.data?.ui === undefined) {\r\n bedhubDataSource = false;\r\n }\r\n\r\n const bedhubPencilBanner = bedhubHeader?.data?.ui?.pencilBanner;\r\n const bedhubPencilBannerData = bedhubToPencilBannerData(bedhubPencilBanner);\r\n const pencilBannerData:any = bedhubDataSource ? (bedhubPencilBannerData || []) : d365PencilBannerData;\r\n if (!bedhubPencilBannerData?.items?.length) {\r\n return null;\r\n }\r\n //Filter BedHub data if scheduled and banner enabled\r\n if (bedhubDataSource) {\r\n bedhubPencilBannerData!.items = bedhubPencilBannerData!.items?.filter((item:\r\n { enableBanner: boolean | undefined, schedule: { end: string | undefined, start: string | undefined } }) => {\r\n return (item.enableBanner && isScheduled(item.schedule));\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n {\r\n pencilBannerData?.items.map((slideInfo: any) => (\r\n \r\n ))\r\n }\r\n \r\n
\r\n );\r\n};\r\n","//!OLD PROMO BANNER CODE\r\n//TODO add logic for toggle\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\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport {\r\n IBannerScheduleData,\r\n ICountdownScheduleData,\r\n IPromoBannerProps\r\n} from '../definition-extensions/promo-banner.ext.props.autogenerated';\r\nimport { IMfrmHeaderData } from '../../../modules/mfrm-header/mfrm-header.data';\r\nimport { MFRMPencilBanner } from '../../../mfrm-components/mfrm-pencil-banner/MFRMPencilBanner';\r\n\r\n// countdown component\r\nimport Countdown, { CountdownRenderProps } from 'react-countdown';\r\n\r\n// used for date/time functionailty\r\nimport MsDyn365, { Link, ILinksData } 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\nconst format = 'M/D/YYYY H:m:s';\r\n\r\nimport { IPromoBannerViewProps } from '@msdyn365-commerce-modules/promo-banner';\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nconst PromoBannerView: React.FC & IPromoBannerViewProps> = props => {\r\n const {\r\n promoBannerProps,\r\n promoBannerLinksProps,\r\n closeButton,\r\n carouselProps,\r\n config: { mfrmBannerMessages, bannerLimit, enableOOBPencilBanner }\r\n } = props;\r\n\r\n // VSI Customization - START\r\n\r\n const scheduledSlides: JSX.Element[] = [];\r\n // counter for the banner limit\r\n const adjustedBannerLimit = bannerLimit !== undefined ? bannerLimit : (mfrmBannerMessages && mfrmBannerMessages.length) || 0;\r\n let bannerCount = 0;\r\n\r\n mfrmBannerMessages &&\r\n mfrmBannerMessages.forEach((message, index) => {\r\n const bannersUnderLimit = adjustedBannerLimit - bannerCount;\r\n const bannerSchedule = message.bannerSchedule;\r\n\r\n // banner only follows schedule if enableBannerSchedule config is set to true\r\n const bannerShouldShow = bannerSchedule && bannerSchedule.enableBannerSchedule ? isScheduled(bannerSchedule) : true;\r\n\r\n // checks if banner is set to be enabled, is currently scheduled, and the banner limit hasn't been surpassed\r\n if (message.enableBanner && bannersUnderLimit && bannerShouldShow) {\r\n const countdownSchedule = message.countdownSchedule;\r\n bannerCount++;\r\n\r\n // add countdown to richText if required\r\n const parsedRichText = message.richText && ReactHtmlParser(message.richText.toString());\r\n\r\n // add countdown component into richText\r\n countdownSchedule && parsedRichText && countdownSchedule.enableCountdown && setCountDown(countdownSchedule, parsedRichText);\r\n\r\n const editableLink: ILinksData = {\r\n ariaLabel: message.links![0].ariaLabel,\r\n className: 'ms-promo-banner__link',\r\n linkText: message.links![0].linkText,\r\n openInNewTab: message.links![0].openInNewTab,\r\n role: 'link',\r\n linkUrl: message.links![0].linkUrl.destinationUrl\r\n };\r\n\r\n const promoBannerParentDivRef = React.useRef();\r\n React.useEffect(() => {\r\n promoBannerParentDivRef.current &&\r\n promoBannerParentDivRef.current.addEventListener('click', function (event: React.MouseEvent) {\r\n event.preventDefault();\r\n if ('utag' in window) {\r\n const eventLabel = `${htmltoText(message.richText?.toString()!).trim()}`;\r\n // @ts-ignore\r\n utag.link({\r\n event: 'pencil banner tracking',\r\n event_category: 'pencil banner tracking',\r\n event_action: 'pencil banner click',\r\n event_label: eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n }\r\n if (MsDyn365.isBrowser) {\r\n window.location.href = message.links![0].linkUrl.destinationUrl;\r\n }\r\n });\r\n }, []);\r\n\r\n scheduledSlides.push(\r\n \r\n \r\n {message.richText &&
{parsedRichText}
}\r\n {message.links && message.links.length > 0 && }\r\n
\r\n
\r\n );\r\n }\r\n });\r\n\r\n // override the _next() and _prev() functions from promo-banner.tsx to only count scheduled slides instead of all slides when determining first and last slides\r\n carouselProps.next = (): void => {\r\n const isLastItem = props.activeIndex === scheduledSlides.length - 1;\r\n const nextIndex = isLastItem ? 0 : props.activeIndex + 1;\r\n // sets the index for the next button. equivalent to _goToIndex() from promo-banner.tsx\r\n carouselProps.onIndicatorsClickHandler(nextIndex);\r\n };\r\n\r\n carouselProps.previous = (): void => {\r\n const isFirstItem = props.activeIndex === 0;\r\n const nextIndex = isFirstItem ? (mfrmBannerMessages ? scheduledSlides.length - 1 : 0) : props.activeIndex - 1;\r\n carouselProps.onIndicatorsClickHandler(nextIndex);\r\n };\r\n if (enableOOBPencilBanner) {\r\n return (\r\n \r\n } data-testid='BannerScrollArrow' />\r\n {closeButton}\r\n \r\n );\r\n }\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\n// strips content inside given element\r\nconst clearContent = (parsedRichText: React.ReactElement[]): void => {\r\n // find countdown element and clear its content\r\n for (let i = 0; i < parsedRichText.length; i++) {\r\n const element = parsedRichText[i];\r\n const classNames = element.props.className && element.props.className.split(' ');\r\n if (classNames && classNames.includes('countdown')) {\r\n element.props.children.length = 0;\r\n return;\r\n }\r\n }\r\n};\r\n\r\n// adds Countdown component as a child of the element with the id 'countdown' is countdown should show\r\nconst setCountDown = (countdownSchedule: ICountdownScheduleData, parsedRichText: React.ReactElement[]): void => {\r\n // check if countdown is scheduled to show\r\n if (!isScheduled(countdownSchedule)) {\r\n return;\r\n }\r\n\r\n // clear content inside 'countdown' element\r\n clearContent(parsedRichText);\r\n\r\n const endDate = countdownSchedule.endDate;\r\n const endTime = countdownSchedule.endTime;\r\n const scheduleEnd = dayjs(`${endDate} ${endTime}`, format);\r\n const scheduleEndLocal = scheduleEnd && convertToLocal(scheduleEnd, countdownSchedule);\r\n\r\n const renderer = ({ formatted }: CountdownRenderProps) => {\r\n return (\r\n \r\n {formatted.hours}:{formatted.minutes}:\r\n {formatted.seconds}\r\n \r\n );\r\n };\r\n\r\n const countdown = scheduleEndLocal && ;\r\n\r\n // find target and put countdown inside of it\r\n parsedRichText.forEach(element => {\r\n const classNames = element.props.className && element.props.className.split(' ');\r\n if (classNames && classNames.includes('countdown')) {\r\n element.props.children.push(countdown);\r\n return;\r\n }\r\n });\r\n};\r\n\r\n// checks if countdown/banner is currently scheduled\r\nconst isScheduled = (schedule: ICountdownScheduleData | IBannerScheduleData): Boolean => {\r\n let start = schedule.startDate && schedule.startTime && dayjs(`${schedule.startDate} ${schedule.startTime}`, format);\r\n let end = schedule.endDate && schedule.endTime && dayjs(`${schedule.endDate} ${schedule.endTime}`, format);\r\n\r\n // check if schedule is valid\r\n const validStart = start && start.isValid();\r\n const validEnd = end && end.isValid();\r\n\r\n if (!validStart || !validEnd) {\r\n return false;\r\n }\r\n\r\n const now = dayjs();\r\n\r\n // convert to local time\r\n start = start && convertToLocal(start, schedule);\r\n end = end && convertToLocal(end, schedule);\r\n\r\n return now.isBetween(start, end);\r\n};\r\n\r\n// convert time to local time\r\nconst convertToLocal = (time: dayjs.Dayjs, schedule: ICountdownScheduleData | IBannerScheduleData): dayjs.Dayjs | undefined => {\r\n const timeZone = schedule.timeZone && getTimeZone(schedule.timeZone);\r\n\r\n return !timeZone\r\n ? time\r\n : dayjs(time.format(format), format)\r\n .tz(timeZone)\r\n .local();\r\n};\r\n\r\n// convert timezone choice to matching timezone in moment-timezone\r\nconst getTimeZone = (timeZone: string): string | undefined => {\r\n switch (timeZone) {\r\n case 'hawaii':\r\n return 'America/Adak';\r\n case 'alaska':\r\n return 'America/Anchorage';\r\n case 'pacific':\r\n return 'America/Los_Angeles';\r\n case 'mountain':\r\n return 'America/Denver';\r\n case 'central':\r\n return 'America/Chicago';\r\n case 'eastern':\r\n return 'America/New_York';\r\n default:\r\n return undefined;\r\n }\r\n};\r\n\r\nconst htmltoText = (html: string) => {\r\n if (MsDyn365.isBrowser) {\r\n // Create a new div element\r\n const tempDivElement = document.createElement('div');\r\n\r\n // Set the HTML content with the given value\r\n // tslint:disable-next-line: no-inner-html\r\n tempDivElement.innerHTML = html;\r\n\r\n // Retrieve the text property of the element\r\n return tempDivElement.textContent || tempDivElement.innerText || '';\r\n } else {\r\n return '';\r\n }\r\n};\r\n\r\n// VSI Customization - END\r\n\r\nexport default PromoBannerView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['promo-banner'] = {\n c: () => require('@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'promo-banner',\n p: 'promo-banner',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner'\n });\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|mattressfirm|views|promo-banner'] = {\n c: () => require('partner/themes/mattressfirm/views/promo-banner.view.tsx'),\n cn: '__local__-__local__-promo-banner'\n };\nviewDictionary['@msdyn365-commerce-modules|promo-banner|modules|promo-banner|promo-banner'] = {\n c: () => require('@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.view.js'),\n cn: '@msdyn365-commerce-modules-promo-banner-promo-banner'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IPromoBannerCloseButton {\n closeButtonAriaLabel?: string;\n label?: string;\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const PromoBannerCloseButton: React.FC = ({ closeButtonAriaLabel, label, telemetryContent, onClose }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PromoBannerClose);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ILinksData } from '../promo-banner.props.autogenerated';\n\nexport interface IPromoBannerLinks {\n links: ILinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\nexport const PromoBannerLinks: React.FC = ({ links, requestContext, onTextChange, telemetryContent }) => {\n const editableLinks = _mapEditableLinks(links, telemetryContent);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n};\n\nconst _mapEditableLinks = (linkdata: ILinksData[], telemetryContent: ITelemetryContent): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-promo-banner__link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nexport interface IPromoBannerText {\n text: string;\n requestContext: Msdyn365.IRequestContext;\n onTextChange(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const PromoBannerText: React.FC = ({ text, onTextChange, requestContext }) => {\n return ;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Carousel } from '@msdyn365-commerce/components';\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { PromoBannerCloseButton, PromoBannerLinks, PromoBannerText } from './components';\nimport { IBannerMessagesData, IPromoBannerProps, IPromoBannerResources } from './promo-banner.props.autogenerated';\n\nexport interface IPromoBannerState {\n animating: boolean;\n isVisible: boolean;\n activeIndex: number;\n}\n\nexport interface IPromoBannerViewProps extends IPromoBannerProps<{}>, IPromoBannerState {\n promoBannerProps: IModuleProps;\n contentProps: INodeProps;\n bannerMessages: IBannerMessagesData[];\n promoBannerTextProps: INodeProps;\n promoBannerLinksProps: INodeProps;\n carouselProps: INodeProps;\n closeButton?: React.ReactNode;\n className: string;\n promoBannerText: string;\n resources: IPromoBannerResources;\n onDismiss(): void;\n handleText(): void;\n handleLinks(): void;\n}\n\n/**\n *\n * PromoBannerModule component.\n * @extends {React.PureComponent>}\n */\nclass PromoBanner extends React.PureComponent, IPromoBannerState> {\n public state: IPromoBannerState = {\n animating: false,\n isVisible: true,\n activeIndex: 0\n };\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public render(): JSX.Element | null {\n const { bannerMessages, dismissEnabled, interval, hideFlipper, autoplay, className = '' } = this.props.config;\n const { closeButtonAriaLabel, closeButtonLabel, bannerText, bannerAriaLabel } = this.props.resources;\n const { isVisible, activeIndex } = this.state;\n\n if (!isVisible) {\n this.props.context.telemetry.error('Promo banner content is empty, module wont render.');\n return null;\n }\n\n const viewProps = {\n // Context for telemetry and raw data for C1 to do customization\n // Including computed data, state data and methods\n ...this.props,\n className: classnames('ms-promo-banner', className),\n isVisible, // State data\n onDismiss: this._onDismiss, // Methods\n handleLinks: this.handleLinkTextChange,\n handleText: this.handleTextChange,\n\n promoBannerProps: {\n className: classnames('ms-promo-banner', className),\n moduleProps: this.props,\n role: 'banner',\n 'aria-label': bannerAriaLabel\n },\n promoBannerTextProps: {\n tag: PromoBannerText\n },\n promoBannerLinksProps: {\n tag: PromoBannerLinks,\n telemetryContent: this.telemetryContent\n },\n contentProps: { className: 'ms-promo-banner__content' },\n promoBannerText: bannerText,\n bannerMessages,\n activeIndex,\n carouselProps: {\n tag: Carousel,\n className: 'ms-promo-banner__carousel',\n activeIndex,\n next: this._next,\n previous: this._previous,\n onIndicatorsClickHandler: this._goToIndex,\n hideIndicator: hideFlipper,\n interval,\n hideFlipper,\n autoplay\n },\n closeButton: dismissEnabled && (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.bannerMessages && this.props.config.bannerMessages[0]) {\n this.props.config.bannerMessages[0].text = event.target.value;\n }\n };\n\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\n if (this.props.config.bannerMessages && this.props.config.bannerMessages[1]) {\n const links = this.props.config.bannerMessages[1].links;\n if (links) {\n links[linkIndex].linkText = event.target.value;\n }\n }\n };\n\n private readonly _next = (): void => {\n const nextIndex = this._isLastItem() ? 0 : this.state.activeIndex + 1;\n this._goToIndex(nextIndex);\n };\n\n private readonly _previous = (): void => {\n const nextIndex = this._isFirstItem()\n ? this.props.config.bannerMessages\n ? this.props.config.bannerMessages.length - 1\n : 0\n : this.state.activeIndex - 1;\n this._goToIndex(nextIndex);\n };\n\n private readonly _goToIndex = (index: number): void => {\n if (this.state.animating) {\n return;\n }\n this.setState({ activeIndex: index });\n };\n\n private readonly _isFirstItem = () => this.state.activeIndex === 0;\n\n private readonly _isLastItem = () =>\n this.props.config.bannerMessages && this.state.activeIndex === this.props.config.bannerMessages.length - 1;\n\n private readonly _onDismiss = (): void => {\n this.setState({ isVisible: false });\n };\n}\n\nexport default PromoBanner;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IPromoBannerViewProps } from './promo-banner';\n\nconst PromoBannerView: React.FC = props => {\n const {\n promoBannerProps,\n contentProps,\n closeButton,\n bannerMessages,\n promoBannerTextProps,\n promoBannerLinksProps,\n carouselProps,\n promoBannerText,\n handleLinks,\n handleText\n } = props;\n\n const slides =\n bannerMessages &&\n bannerMessages.map((message, index) => {\n return (\n \n {promoBannerText}\n {message.text && }\n {message.links && message.links.length > 0 && (\n \n )}\n \n );\n });\n\n return (\n \n \n {closeButton}\n \n );\n};\nexport default PromoBannerView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["CustomerInfoDataTestIds","CheckoutStepperDataTestIds","SynchronyFinnacinTestIds","learnhow","radio","PaymentSteppDataTestIds","CheckoutButtonDataTestIds","DeliveryDataTestIds","OrderSummaryCheckoutDataTestIds","CartDataTestIds","PaypalExpressDataTestIds","OrderConfirmationDataTestIds","ProgressiveDataTestIds","UILinkType","isScheduled","schedule","start","end","format","splitStartSchedule","split","startDate","startTime","dayjs","splitEndSchedule","endDate","endTime","validStart","isValid","validEnd","isBetween","PencilBannerCountDown","props","countdownData","scheduleEnd","React","Countdown","date","toDate","renderer","_ref","formatted","days","className","hours","minutes","seconds","htmltoText","html","tempDivElement","document","createElement","innerHTML","textContent","innerText","PencilBannerHTML","bannerHTML","url","href","onClick","event","preventDefault","window","utag","link","event_category","event_action","event_label","trim","event_noninteraction","location","tabIndex","dangerouslySetInnerHTML","__html","PencilBannerCTA","ctaText","bannerHtml","PencilBannerMessage","_messageRef$current","slideInfo","messageRef","useRef","ariaHiddenNode","current","parentNode","anchorRef","currentNode","isMessageHidden","getAttribute","setAttribute","ref","PencilBanner","onKeyDown","handleKeyDown","key","countdown","label","slides","allowTouchMove","autoplay","onSlideChange","index","setIndex","useState","realIndex","setRealIndex","play","setPlay","intervalRef","lastSlideIndex","slideCount","useMemo","length","enableMouseEvents","_window","MsDyn365","isBrowser","innerWidth","nextSlideClickHandler","useCallback","prevIndex","pausePlay","clearInterval","startPlay","setInterval","delay","useEffect","handleVisibilityChange","target","hidden","addEventListener","removeEventListener","enable","prevSlideClickHandler","slideChangeHandler","virtualIndex","paginationIndex","Math","abs","mouseEnterHandler","pauseOnHover","mouseLeaveHandler","VirtualizeSwipeableViews","virtualize","SwipeableViews","useCarousel","_objectSpread","children","classes","carousel","onMouseEnter","onMouseLeave","animateTransitions","onChangeIndex","slideRenderer","child","mod","count","q","Fragment","cloneElement","overscanSlideAfter","overscanSlideBefore","springConfig","duration","easeFunction","MFRMPencilBanner","_d365PencilBannerData","_props$config","_bedhubHeader$data","_bedhubHeader$data2","_bedhubPencilBannerDa","d365PencilBannerData","mfrmPencilBanner","interval","config","items","_mfrmPencilBanner$con","mfrmBannerMessages","map","item","_item$countdownSchedu","_item$countdownSchedu2","_item$countdownSchedu3","_item$countdownSchedu4","_item$countdownSchedu5","_item$countdownSchedu6","_item$links","_item$bannerSchedule","_item$bannerSchedule2","_item$bannerSchedule3","_item$bannerSchedule4","_item$bannerSchedule5","_item$bannerSchedule6","_item$links2","enableBanner","ariaLabel","name","countdownSchedule","enableCountdown","undefined","richText","links","linkText","bannerSchedule","enableBannerSchedule","linkUrl","destinationUrl","next","_mfrmPencilBanner$con2","altText","image","_mfrmPencilBanner$con3","src","_mfrmPencilBanner$con4","previous","_mfrmPencilBanner$con5","_mfrmPencilBanner$con6","_mfrmPencilBanner$con7","filter","bedhubDataSource","data","bedhubHeader","result","ui","bedhubPencilBanner","pencilBanner","bedhubPencilBannerData","bedhubData","_bedhubData$items","_item$countdown","_item$countdown2","_item$schedule","_item$schedule2","type","_bedhubData$next","_bedhubData$next2","_bedhubData$next3","_bedhubData$previous","_bedhubData$previous2","_bedhubData$previous3","pencilBannerData","_bedhubPencilBannerDa2","Carousel","tz","utc","setCountDown","parsedRichText","i","element","classNames","includes","clearContent","scheduleEndLocal","convertToLocal","daysInHours","forEach","push","now","time","timeZone","getTimeZone","local","promoBannerProps","promoBannerLinksProps","closeButton","carouselProps","bannerLimit","enableOOBPencilBanner","scheduledSlides","adjustedBannerLimit","bannerCount","message","bannersUnderLimit","bannerShouldShow","ReactHtmlParser","toString","editableLink","openInNewTab","role","promoBannerParentDivRef","_message$richText","eventLabel","Node","Link","Object","assign","nextIndex","activeIndex","onIndicatorsClickHandler","Module","binding","modules","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","md","__bindings__","viewDictionary","cn","PromoBannerCloseButton","closeButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","TelemetryConstant","PromoBannerClose","attributes","getTelemetryAttributes","PromoBannerLinks","requestContext","onTextChange","editableLinks","_mapEditableLinks","Msdyn365","editProps","linkdata","contentAction","etext","additionalProperties","onTelemetryClick","PromoBannerText","text","tag","onEdit","PromoBanner","constructor","state","animating","isVisible","getTelemetryObject","this","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","bannerMessages","value","handleLinkTextChange","linkIndex","_next","_isLastItem","_goToIndex","_previous","_isFirstItem","setState","_onDismiss","render","dismissEnabled","hideFlipper","closeButtonLabel","bannerText","bannerAriaLabel","resources","error","viewProps","classnames","onDismiss","handleLinks","handleText","moduleProps","promoBannerTextProps","contentProps","promoBannerText","hideIndicator","renderView","module","exports","ReactDOM"],"sourceRoot":""}