{"version":3,"file":"static/js/a138e33159bc9ed26c8f.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/analytics/clickTrack.ts?bce2","webpack://mattressfirm/./src/Utilities/analytics/htmlToText.ts?c3c7","webpack://mattressfirm/./src/Utilities/analytics/promotionClickTrack.ts?a0bd","webpack://mattressfirm/./src/Utilities/analytics/utagCaller.ts?3814","webpack://mattressfirm/./src/Utilities/get-dynamic-image.tsx?8e0f","webpack://mattressfirm/./src/modules/mfrm-category-banner/components/links.tsx?7ea4","webpack://mattressfirm/./src/modules/mfrm-category-banner/mfrm-category-banner.props.autogenerated.ts?a9c1","webpack://mattressfirm/./src/modules/mfrm-category-banner/mfrm-category-banner.tsx?3560","webpack://mattressfirm/./src/modules/mfrm-category-banner/mfrm-category-banner.view.tsx?4e8d","webpack://mattressfirm/./src/themes/mattressfirm/custom-components/CustomSkeleton/index.tsx?ef9d","webpack://mattressfirm/./src/themes/mattressfirm/views/tealiumAnalytics/analytics.ts?3dfb","webpack://mattressfirm/./lib/mfrm-category-banner/module-registration.js?4f34","webpack://mattressfirm/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.match.js?a69e","webpack://mattressfirm/./node_modules/@msdyn365-commerce/bootloader/node_modules/core-js/modules/es.string.split.js?9fc2","webpack://mattressfirm/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"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};","\r\n// Convert Rich Text inner text to string for analytics tagging\r\n\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const 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};","import { fireAnalyticsLink } from './clickTrack';\r\n\r\ninterface IPromotionConfigs {\r\n eventLabel: string;\r\n promotionName: string[];\r\n promotionId: string[];\r\n promotionCreative: string[];\r\n promotionPosition: (string | undefined)[];\r\n}\r\n\r\nexport const firePromotionImpression = ({ eventLabel = '', promotionName = [], promotionId = [], promotionCreative = [], promotionPosition = [] }: IPromotionConfigs) => {\r\n fireAnalyticsLink({\r\n eventName: 'promotion-impression',\r\n eventCategory: 'ecommerce',\r\n eventAction: 'promotion impression',\r\n eventLabel: eventLabel,\r\n eventNoninteraction: 'true',\r\n promoConfig: {\r\n promotion_impression_name: promotionName,\r\n promotion_impression_id: promotionId,\r\n promotion_impression_creative: promotionCreative,\r\n promotion_impression_position: promotionPosition\r\n }\r\n });\r\n};\r\n\r\nexport const firePromotionClick = ({ eventLabel = '', promotionName = [], promotionId = [], promotionCreative = [], promotionPosition = [] }: IPromotionConfigs) => {\r\n fireAnalyticsLink({\r\n eventName: 'promotion-click',\r\n eventCategory: 'ecommerce',\r\n eventAction: 'promotion click',\r\n eventLabel: eventLabel,\r\n eventNoninteraction: 'false',\r\n promoConfig: {\r\n promotion_name: promotionName,\r\n promotion_id: promotionId,\r\n promotion_creative: promotionCreative,\r\n promotion_position: promotionPosition\r\n }\r\n });\r\n};","import { IAnalyticsConfiguration } from './clickTrack';\r\n\r\n// Interface for 3rd-party function. AKA utag.\r\ninterface ITealium {\r\n link(data: {}): void | false;\r\n view(data: {}): void | false;\r\n data(data: {}): void | false;\r\n}\r\n\r\nexport interface IPromotionConfig {\r\n event?: string | null;\r\n event_name?: string | null;\r\n search_term?: string | null;\r\n search_type?: string | null;\r\n event_category?: string | null;\r\n event_action?: string | null;\r\n event_label?: string | null;\r\n event_type?: string | null;\r\n event_noninteraction?: string;\r\n enhanced_action?: string | null;\r\n customer_email?: string | undefined;\r\n customer_phone_number?: string | undefined;\r\n first_name?: string | undefined;\r\n last_name?: string | undefined;\r\n address1?: string | undefined;\r\n address2?: string | undefined;\r\n city?: string | undefined;\r\n state?: string | undefined;\r\n zip_code?: string | undefined;\r\n order_subtotal?: string | undefined;\r\n order_currency?: string | undefined;\r\n country?: string | undefined;\r\n // productConfig?: IProductDataConfig;\r\n checkout_step?: string;\r\n checkout_option?:(string | undefined)[];\r\n checkout_type?:(string | undefined)[];\r\n product_id?: (string | undefined)[];\r\n product_name?: (string | undefined)[];\r\n product_category?: (string | undefined)[];\r\n product_brand?: (string | undefined)[];\r\n product_variant?: (string | undefined | number)[];\r\n product_price?: (string | undefined)[];\r\n product_quantity?: (string | undefined)[];\r\n product_url?: (string | undefined)[];\r\n product_size?: (string | undefined)[];\r\n product_image_url?: (string | undefined)[];\r\n core_item_flag?: string | null;\r\n funnel_type?: string | null;\r\n ga_title?: string | null;\r\n ga_location?: string | null;\r\n order_quantity?: string | null;\r\n master_customer_code?: string | null;\r\n order_number?: string | null;\r\n}\r\n\r\ninterface IProductDataConfig {\r\n product_variant?: (string | undefined)[];\r\n product_price?: (string | undefined)[];\r\n}\r\n\r\nexport interface IAnalyticsConfigurationData {\r\n productConfig?: IProductDataConfig;\r\n}\r\n\r\n\r\n// Legacy function\r\nexport const callUtag = async (objToCall: IPromotionConfig) => {\r\n void await callUtagLink(objToCall);\r\n};\r\n\r\n/**\r\n * Tealium dispatch click tracking.\r\n * @param objToCall\r\n */\r\nexport const callUtagLink = async (objToCall: IPromotionConfig | IAnalyticsConfiguration) => {\r\n try {\r\n Object.keys(objToCall).forEach(\r\n key => {\r\n if (objToCall[key] === null) {\r\n delete objToCall[key];\r\n }\r\n }\r\n );\r\n // If utag doesn't exist in the global scope, set as false.\r\n const utag: ITealium = global.hasOwnProperty('utag') ? global[\"utag\"] : false;\r\n if(utag) { utag.link(objToCall); }\r\n\r\n } catch (e) {\r\n console.log('Utag Error', e);\r\n }\r\n};\r\n\r\n/**\r\n * Tealium dispatch view tracking.\r\n * @param objToCall\r\n */\r\nexport const callUtagView = async (objToCall: {}) => {\r\n try {\r\n // If utag doesn't exist in the global scope, set as false.\r\n const utag: ITealium = global.hasOwnProperty('utag') ? global[\"utag\"] : false;\r\n if(utag) { utag.view(objToCall); }\r\n } catch (e) {\r\n console.log('utag View Error', e);\r\n }\r\n};\r\n\r\n/**\r\n * Not currently implemented.\r\n * @param objToCall\r\n * @param dataType\r\n */\r\nexport const callUtagData = ({ productConfig = {} }: IAnalyticsConfigurationData , dataType: string) => {\r\n try {\r\n // If utag doesn't exist in the global scope, set as false.\r\n const utag: ITealium = global.hasOwnProperty('utag') ? global[\"utag\"] : false;\r\n switch (dataType) {\r\n case 'data':\r\n // @ts-ignore\r\n if('utag' in window) { utag.data = {...utag.data, ...productConfig}; }\r\n break;\r\n case '_data':\r\n // @ts-ignore\r\n utag_data = {...utag_data , ...productConfig};\r\n break;\r\n default:\r\n null;\r\n }\r\n } catch (e) {\r\n console.log('Utag Error', e);\r\n }\r\n};","import MsDyn365, { IImageData } from '@msdyn365-commerce/core';\r\nimport _get from 'lodash/get';\r\nimport _cloneDeep from 'lodash/cloneDeep';\r\nimport * as React from 'react';\r\n\r\ninterface IImageDimension {\r\n width: string;\r\n height: string;\r\n}\r\ninterface IImageSettings {\r\n sm: IImageDimension;\r\n md: IImageDimension;\r\n lg: IImageDimension;\r\n}\r\nexport interface IResponsiveImage {\r\n desktop: IImageData | undefined;\r\n tablet: IImageData | undefined;\r\n mobile: IImageData | undefined;\r\n defaultImg: IImageData | undefined;\r\n imageSettingViewports?: IImageSettings | undefined;\r\n}\r\n\r\nexport interface IResponsiveImageFromSeoData {\r\n desktop: IImageData | undefined;\r\n tablet: IImageData | undefined;\r\n mobile: IImageData | undefined;\r\n imageSettingViewports?: IImageSettings | undefined;\r\n}\r\n\r\nexport const getResponsiveFromSeoData = ({ desktop, tablet, mobile }: IResponsiveImageFromSeoData) => {\r\n const desktopWidth = 1025;\r\n const tabletWidth = 768;\r\n\r\n const query = {\r\n desktop: '',\r\n tablet: '',\r\n mobile: ''\r\n };\r\n\r\n // Removing resizing for the time being to discuss with Microsoft\r\n // if (imageSettingViewports) {\r\n // const { sm, md, lg } = imageSettingViewports;\r\n // query.desktop = `&w=${lg.width}&h=${lg.height}`;\r\n // query.tablet = `&w=${md.width}&h=${md.height}`;\r\n // query.mobile = `&w=${sm.width}&h=${sm.height}`;\r\n // }\r\n\r\n return (\r\n \r\n <>\r\n {desktop?.src && }\r\n {tablet?.src && }\r\n {mobile?.src && }\r\n {desktop?.altText}\r\n \r\n \r\n );\r\n\r\n};\r\n\r\n// Note Responsive Image does not use Msdyn365 Image component\r\nexport const getResponsiveImage = ({ desktop, tablet, mobile, defaultImg }: IResponsiveImage): React.ReactNode => {\r\n // Note this is a temp solution as D365 does not support dynamic images across viewports\r\n\r\n const desktopWidth = 1025;\r\n const tabletWidth = 768;\r\n const lazyload = !defaultImg?.imageSettings?.disableLazyLoad;\r\n\r\n const query = {\r\n desktop: '',\r\n tablet: '',\r\n mobile: ''\r\n };\r\n\r\n // Removing resizing for the time being to discuss with Microsoft\r\n // if (imageSettingViewports) {\r\n // const { sm, md, lg } = imageSettingViewports;\r\n // query.desktop = `&w=${lg.width}&h=${lg.height}`;\r\n // query.tablet = `&w=${md.width}&h=${md.height}`;\r\n // query.mobile = `&w=${sm.width}&h=${sm.height}`;\r\n // }\r\n\r\n const defaultImgSrc = `${defaultImg?.src}${query.desktop}${\r\n defaultImg?.imageSettings?.quality ? `&q=${defaultImg.imageSettings.quality}` : ''\r\n }`;\r\n\r\n return (\r\n \r\n {lazyload ? (\r\n <>\r\n {desktop?.src && }\r\n {tablet?.src && }\r\n {mobile?.src && }\r\n \r\n \r\n ) : (\r\n <>\r\n {desktop?.src && }\r\n {tablet?.src && }\r\n {mobile?.src && }\r\n {defaultImg?.altText}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport interface IDynamicImageProps {\r\n moduleName: string;\r\n}\r\n\r\nexport const getDynamicImageSettings = ({ moduleName }: IDynamicImageProps) => {\r\n // This logic is directly from MsDyn Image Component src builder\r\n // just applied to get dynamic image settings if they are defined\r\n const imageSettings = { viewports: undefined };\r\n const themeSettingsForModule = MsDyn365.themeSettings?.mattressfirm?.modules?.[moduleName];\r\n if (themeSettingsForModule) {\r\n const themeSettingsForLayout = themeSettingsForModule.properties.dynamic;\r\n if (themeSettingsForLayout) {\r\n const imageViewportProperties = _get(themeSettingsForLayout.properties, ['image'], { properties: imageSettings }).properties;\r\n // Clone the image viewport properties from theme settings\r\n // so that the proxy traps do not affect the global themesettings\r\n imageSettings.viewports = _cloneDeep(imageViewportProperties);\r\n }\r\n }\r\n\r\n return imageSettings.viewports;\r\n};\r\n","/* tslint:disable: no-duplicate-imports */\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../mfrm-category-banner.props.autogenerated';\r\n\r\nexport interface IContentCardLinks {\r\n links: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n onClickOverride?(event: React.MouseEvent, ctaUrl: string): void;\r\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCardLinks component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class ContentCardLinks extends React.PureComponent {\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (linkdata: ILinksData[]): Msdyn365.ILinksData[] | null => {\r\n if (!linkdata || linkdata.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n linkdata.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button',\r\n additionalProperties: attributes,\r\n onClick: (event: React.MouseEvent) => {\r\n this.props.onClickOverride && this.props.onClickOverride(event, link.linkUrl.destinationUrl);\r\n onTelemetryClick(this.props.telemetryContent, payLoad, linkText);\r\n }\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n };\r\n}\r\nexport default ContentCardLinks;\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * IMfrmCategoryBanner contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum textAlignment {\r\n left = 'left',\r\n center = 'center'\r\n}\r\n\r\nexport const enum imagePosition {\r\n left = 'left',\r\n center = 'center',\r\n right = 'right'\r\n}\r\n\r\nexport const enum actionableRegion {\r\n imageAndLinks = 'imageAndLinks',\r\n linksOnly = 'linksOnly',\r\n fullyClickableBanner = 'fullyClickableBanner'\r\n}\r\n\r\nexport const enum enhancedEcommTracking {\r\n promotion = 'promotion'\r\n}\r\n\r\nexport interface IMfrmCategoryBannerConfig extends Msdyn365.IModuleConfig {\r\n useDynamicImages?: boolean;\r\n dynamicImages?: IDynamicImagesData;\r\n heading?: IHeadingData;\r\n paragraph?: Msdyn365.RichText;\r\n image?: Msdyn365.IImageData;\r\n links?: ILinksData[];\r\n nonPLPstyling?: boolean;\r\n textAlignment?: textAlignment;\r\n imagePosition?: imagePosition;\r\n actionableRegion?: actionableRegion;\r\n imageLink?: Msdyn365.ILinkData;\r\n logoImage?: Msdyn365.IImageData;\r\n imageAriaLabel?: string;\r\n className?: string;\r\n moduleId?: string;\r\n enhancedEcommTracking?: enhancedEcommTracking;\r\n tealiumEvent?: ITealiumEventData;\r\n tealiumPromotion?: ITealiumPromotionData;\r\n}\r\n\r\nexport interface IDynamicImagesData {\r\n desktopImage?: Msdyn365.IImageData;\r\n tabletImage?: Msdyn365.IImageData;\r\n mobileImage?: Msdyn365.IImageData;\r\n}\r\n\r\nexport const enum HeadingTag {\r\n h1 = 'h1',\r\n h2 = 'h2',\r\n h3 = 'h3',\r\n h4 = 'h4',\r\n h5 = 'h5',\r\n h6 = 'h6'\r\n}\r\n\r\nexport interface IHeadingData {\r\n text: string;\r\n tag?: HeadingTag;\r\n}\r\n\r\nexport interface ILinksData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface ITealiumEventData {\r\n event?: string;\r\n event_category?: string;\r\n event_action?: string;\r\n event_label?: string;\r\n event_noninteraction?: boolean;\r\n}\r\n\r\nexport interface ITealiumPromotionData {\r\n promotion_name?: string;\r\n promotion_id?: string;\r\n promotion_creative_version?: string;\r\n promotion_position?: string;\r\n}\r\n\r\nexport interface IMfrmCategoryBannerProps extends Msdyn365.IModule {\r\n config: IMfrmCategoryBannerConfig;\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/* tslint:disable: no-duplicate-imports */\r\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IImageSettings, Image, IImageData } from '@msdyn365-commerce/core';\r\n\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { IDynamicImagesData } from '../../themes/mattressfirm/definition-extensions/content-block.ext.props.autogenerated';\r\nimport LinksComponent from './components/links';\r\nimport { actionableRegion as region, ILinksData, IMfrmCategoryBannerProps } from './mfrm-category-banner.props.autogenerated';\r\n\r\nexport interface IContentBlockViewProps extends IMfrmCategoryBannerProps<{}> {\r\n title?: React.ReactNode;\r\n text?: React.ReactNode;\r\n image?: React.ReactNode;\r\n links?: ILinksData[];\r\n nonPLPstyling?: boolean;\r\n className?: string;\r\n contentBlockContainer: IModuleProps;\r\n imageContainer: INodeProps;\r\n detailsContainer: INodeProps;\r\n contentBlockAnchorTag?: INodeProps;\r\n useDynamicImages?: boolean;\r\n dynamicImages?: IDynamicImagesData;\r\n imageLink?: string;\r\n imageAriaLabel?: string;\r\n telemetryContent?: ITelemetryContent;\r\n handleTextChange?(): (event: Msdyn365.ContentEditableEvent) => string;\r\n fullyClickableBanner?: boolean;\r\n logo?: IImageData;\r\n}\r\n\r\n/**\r\n *\r\n * ContentCard component\r\n * @extends {React.PureComponent}\r\n */\r\n\r\nclass ContentBlock extends React.PureComponent> {\r\n private telemetryContent: ITelemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n public render(): JSX.Element | null {\r\n const { heading, paragraph, image, links, nonPLPstyling, textAlignment, className, useDynamicImages, dynamicImages, imageAriaLabel } = this.props.config;\r\n const contentBlockTitle = heading && (\r\n \r\n );\r\n const imageProps = {\r\n gridSettings: this.props.context.request.gridSettings || {},\r\n imageSettings: image && image.imageSettings\r\n };\r\n const contentBlockLinks = links && links.length > 0 && (\r\n \r\n );\r\n const contentBlockText = paragraph && (\r\n \r\n );\r\n const contentBlockImage = image && (\r\n \r\n );\r\n\r\n if (!contentBlockTitle && !contentBlockText && !contentBlockImage && !contentBlockLinks) {\r\n this.props.context.telemetry.warning('Content block content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n const contentBlockviewProps = {\r\n ...this.props,\r\n title: contentBlockTitle,\r\n text: contentBlockText,\r\n image: contentBlockImage,\r\n links: links,\r\n nonPLPstyling: nonPLPstyling,\r\n useDynamicImages: useDynamicImages,\r\n dynamicImages: dynamicImages,\r\n moduleClass: this.props.config.className,\r\n contentBlockContainer: {\r\n moduleProps: this.props,\r\n className: classnames('ms-content-block', nonPLPstyling ? 'mfrm-mm-banner-nonPLP' : 'mfrm-category-banner', className)\r\n },\r\n imageContainer: { className: 'ms-content-block__image' },\r\n detailsContainer: { className: classnames(textAlignment === 'left' ? 'ms-content-block__details-left' : 'ms-content-block__details') },\r\n contentBlockAnchorTag: {\r\n tag: 'a',\r\n className: 'ms-content-block__link',\r\n role: 'link'\r\n },\r\n imageLink: this._getImageLink(),\r\n imageAriaLabel,\r\n telemetryContent: this.telemetryContent,\r\n handleTextChange: this.handleLinkTextChange,\r\n fullyClickableBanner: this._fullyClickable(),\r\n logo: this._getLogo()\r\n };\r\n\r\n return this.props.renderView(contentBlockviewProps) as React.ReactElement;\r\n }\r\n public handleTextChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\r\n public handleParagraphChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.paragraph = event.target.value);\r\n /* Handle link text change*/\r\n public handleLinkTextChange = (linkIndex: number) => (event: Msdyn365.ContentEditableEvent) => {\r\n if (this.props.config.links && this.props.config.links[linkIndex]) {\r\n this.props.config.links[linkIndex].linkText = event.target.value;\r\n }\r\n };\r\n private _getImageLink(): string | null {\r\n const { imageLink, links, actionableRegion } = this.props.config;\r\n if (actionableRegion === region.imageAndLinks) {\r\n if (imageLink && imageLink.destinationUrl) {\r\n return imageLink.destinationUrl;\r\n } else if (links && links.length && links[0].linkUrl) {\r\n return links[0].linkUrl.destinationUrl;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n private _fullyClickable(): boolean | null {\r\n const { actionableRegion } = this.props.config;\r\n return actionableRegion === region.fullyClickableBanner;\r\n }\r\n\r\n private _getLogo(): React.ReactNode {\r\n const { logoImage } = this.props.config;\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=77&h=22&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=77&h=22&m=8', w: 0, h: 0 },\r\n md: { q: 'w=77&h=22&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=77&h=22&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n if(logoImage){\r\n return (\r\n {logoImage?.altText}\r\n\r\n );\r\n }else{\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport default ContentBlock;\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/* tslint:disable: no-duplicate-imports */\r\nimport classname from 'classnames';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\nimport { useInView } from 'react-intersection-observer';\r\nimport { getPromoAnalyticsConfig } from '../../themes/mattressfirm/views/tealiumAnalytics/analytics';\r\nimport { htmltoText } from '../../Utilities/analytics/htmlToText';\r\nimport { firePromotionClick, firePromotionImpression } from '../../Utilities/analytics/promotionClickTrack';\r\nimport { getDynamicImageSettings, getResponsiveImage } from '../../Utilities/get-dynamic-image';\r\nimport _getViewPort from '../../Utilities/get-view-port';\r\nimport LinksComponent from './components/links';\r\nimport { IContentBlockViewProps } from './mfrm-category-banner';\r\nimport CustomSkeleton from '../../themes/mattressfirm/custom-components/CustomSkeleton';\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nconst ContentBlockView: React.FC = props => {\r\n const {\r\n contentBlockContainer,\r\n imageContainer,\r\n detailsContainer,\r\n title,\r\n text,\r\n links,\r\n image,\r\n contentBlockAnchorTag,\r\n imageLink,\r\n fullyClickableBanner,\r\n useDynamicImages,\r\n dynamicImages,\r\n imageAriaLabel,\r\n logo\r\n } = props;\r\n\r\n const { tealiumEvent, enhancedEcommTracking, tealiumPromotion, heading, paragraph, textAlignment } = props.config;\r\n\r\n const isPromotion = enhancedEcommTracking === 'promotion';\r\n const pagePath = MsDyn365.isBrowser\r\n ? window.location.href.split(location.host)[1].includes('?')\r\n ? window.location.href.split(location.host)[1].split('?')[0]\r\n : window.location.href.split(location.host)[1]\r\n : '';\r\n const paragraphText = paragraph ? htmltoText(paragraph.toString()).trim() : '';\r\n let promoAnalyticsConfig = getPromoAnalyticsConfig(\r\n props.config.image,\r\n imageLink || (links && links[0]?.linkUrl?.destinationUrl),\r\n pagePath,\r\n paragraphText,\r\n tealiumPromotion,\r\n true,\r\n heading?.text\r\n );\r\n\r\n const [ref, inView] = useInView({\r\n triggerOnce: true,\r\n rootMargin: '25px'\r\n });\r\n\r\n const handleAnalytics = (isImageClick?: boolean, ctaUrl?: string) => {\r\n const pageURL = MsDyn365.isBrowser && window.location.pathname;\r\n if (MsDyn365.isBrowser) {\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n // @ts-ignore\r\n utag.link({\r\n event: tealiumEvent?.event,\r\n event_category: tealiumEvent?.event_category,\r\n event_action: tealiumEvent?.event_action,\r\n event_label: tealiumEvent?.event_label ? `${tealiumEvent?.event_label} ${pageURL}` : ``,\r\n event_noninteraction: tealiumEvent?.event_noninteraction === true ? 'true' : 'false'\r\n });\r\n }\r\n if (isPromotion) {\r\n if (!isImageClick) {\r\n promoAnalyticsConfig = getPromoAnalyticsConfig(\r\n props.config.image,\r\n ctaUrl,\r\n pagePath,\r\n paragraphText,\r\n tealiumPromotion,\r\n true,\r\n heading?.text\r\n );\r\n }\r\n promoAnalyticsConfig && firePromotionClick({ ...promoAnalyticsConfig });\r\n }\r\n\r\n if (imageLink) {\r\n window.location.href = imageLink;\r\n } else if (!isImageClick && ctaUrl) {\r\n window.location.href = ctaUrl;\r\n }\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n if (MsDyn365.isBrowser && isPromotion && inView) {\r\n promoAnalyticsConfig && firePromotionImpression({ ...promoAnalyticsConfig });\r\n }\r\n }, [inView]);\r\n\r\n const imageSkeleton = ();\r\n let currentImage = image;\r\n\r\n // Only use Responsive Image if Dynamic Images are defined\r\n if (dynamicImages && useDynamicImages) {\r\n currentImage = getResponsiveImage({\r\n desktop: dynamicImages?.desktopImage,\r\n tablet: dynamicImages?.tabletImage,\r\n mobile: dynamicImages?.mobileImage,\r\n defaultImg: props.config.image,\r\n imageSettingViewports: getDynamicImageSettings({ moduleName: 'mfrm-category-banner' })\r\n });\r\n }\r\n\r\n if (useDynamicImages) {\r\n return
{currentImage}
;\r\n }\r\n\r\n const imageLinkContent = (\r\n \r\n \r\n ) => {\r\n event.preventDefault();\r\n handleAnalytics(true, undefined);\r\n }}\r\n >\r\n {image}\r\n \r\n \r\n \r\n {title}\r\n {text}\r\n {links}\r\n \r\n \r\n );\r\n\r\n const buttonLinkContent = (\r\n \r\n \r\n {image ? image : imageSkeleton}\r\n \r\n \r\n {title}\r\n {text}\r\n {props.links && props.links.length > 0 && props.handleTextChange && props.telemetryContent && (\r\n textAlignment === 'left' ?\r\n (\r\n
\r\n \r\n
\r\n ):\r\n (, ctaUrl: string) => {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n handleAnalytics(false, ctaUrl);\r\n }\r\n }}\r\n />)\r\n )}\r\n
\r\n
\r\n );\r\n\r\n if (imageLink) {\r\n return imageLinkContent;\r\n } else if (fullyClickableBanner){\r\n return (\r\n
) => {\r\n event.preventDefault();\r\n handleAnalytics(false, links && links[0].linkUrl.destinationUrl);\r\n }}\r\n data-cy='category-banner'\r\n >\r\n \r\n {buttonLinkContent}\r\n \r\n
\r\n );\r\n }else{\r\n return buttonLinkContent;\r\n }\r\n};\r\n\r\nexport default ContentBlockView;\r\n","import React, { FunctionComponent } from 'react';\r\n\r\n\r\ninterface Props {\r\n /** Sets the skeleton-pulse style */\r\n type?: 'text' | 'image' | 'button' | 'button-secondary';\r\n /** Sets the width of the skeleton. Default unit is px. */\r\n width?: number | string;\r\n /** Sets the height of the skeleton. Default unit is px. */\r\n height?: number | string;\r\n /** Makes the skeleton look like a circle */\r\n circle?: boolean;\r\n /** Override classNames on wrapper */\r\n className?: string;\r\n /** Override styles on wrapper */\r\n style?: object;\r\n [rest: string]: unknown; // ...rest property\r\n}\r\n\r\nconst getValidCSSInput = (input: string | number) => {\r\n switch (typeof input) {\r\n case 'undefined':\r\n case 'boolean':\r\n return null;\r\n case 'number':\r\n return `${input}px`;\r\n default:\r\n const parsedInput = parseFloat(input);\r\n const unit = input.match(/%|em/);\r\n return isNaN(parsedInput) ? '' : unit ? `${parsedInput}${unit}` : `${parsedInput}px`;\r\n }\r\n};\r\n\r\nconst CustomSkeleton: FunctionComponent = ({\r\n width,\r\n height,\r\n circle,\r\n type = 'text',\r\n className = '',\r\n style = {},\r\n ...rest\r\n}) => {\r\n const isTextType = type === 'text';\r\n const classNames = `pulse ${!className ? type : ``} ${isTextType ? 'transform' : ''} ${type === 'button-secondary' && !className ? 'button' : ''} ${circle ? 'circle' : ''} ${className}`;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CustomSkeleton;\r\n","import { IImageData } from '@msdyn365-commerce/core';\r\nimport { ITealiumEventData, ITealiumPromotionData } from '../../definition-extensions/content-block.ext.props.autogenerated';\r\n\r\nexport const getPromoAnalyticsConfig = (image: IImageData | undefined, link: string | undefined, pagePath: string, paragraphText: string, tealiumPromotion: ITealiumPromotionData | undefined, isCategoryBanner?: boolean, headerText?: string) => {\r\n // Use Configured Paragraph text as Promotion Name\r\n let promoName;\r\n if (isCategoryBanner) {\r\n promoName = tealiumPromotion?.promotion_name || headerText || image?.title || image?.altText || '';\r\n } else {\r\n promoName = tealiumPromotion?.promotion_name || paragraphText;\r\n }\r\n // Use Configured Link as Promotion ID\r\n const promoID = tealiumPromotion?.promotion_id || link || '';\r\n // Use Configured Image URL as default Creative\r\n const promoCreative = tealiumPromotion?.promotion_creative_version || image?.title || image?.altText || '';\r\n const promoPosition = tealiumPromotion?.promotion_position || (isCategoryBanner ? '1' : undefined);\r\n\r\n return {\r\n eventLabel: `${promoName} from ${pagePath}`,\r\n promotionName: [promoName],\r\n promotionId: [promoID],\r\n promotionCreative: [promoCreative],\r\n promotionPosition: [promoPosition]\r\n };\r\n};\r\n\r\nexport const getAnalyticsConfig = (pagePath: string, heading: string | undefined, imageAriaLabel: string | undefined, tealiumEvent: ITealiumEventData | undefined) => {\r\n return {\r\n eventName: tealiumEvent?.event || 'content-block',\r\n eventCategory: tealiumEvent?.event_category || `${heading ? heading : imageAriaLabel} container`,\r\n eventType: tealiumEvent?.event_type || '',\r\n eventAction: tealiumEvent?.event_action || `${heading ? heading : imageAriaLabel} click`,\r\n eventLabel: tealiumEvent?.event_label || pagePath\r\n };\r\n};","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['mfrm-category-banner'] = {\n c: () => require('partner/modules/mfrm-category-banner/mfrm-category-banner.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mfrm-category-banner',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mfrm-category-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__|modules|mfrm-category-banner|mfrm-category-banner'] = {\n c: () => require('partner/modules/mfrm-category-banner/mfrm-category-banner.view.tsx'),\n cn: '__local__-__local__-mfrm-category-banner'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","'use strict';\nvar call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n return [\n // `String.prototype.match` method\n // https://tc39.es/ecma262/#sec-string.prototype.match\n function match(regexp) {\n var O = requireObjectCoercible(this);\n var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n },\n // `RegExp.prototype[@@match]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n function (string) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(nativeMatch, rx, S);\n\n if (res.done) return res.value;\n\n if (!rx.global) return regExpExec(rx, S);\n\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n var A = [];\n var n = 0;\n var result;\n while ((result = regExpExec(rx, S)) !== null) {\n var matchStr = toString(result[0]);\n A[n] = matchStr;\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n n++;\n }\n return n === 0 ? null : A;\n }\n ];\n});\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isRegExp = require('../internals/is-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar speciesConstructor = require('../internals/species-constructor');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar getMethod = require('../internals/get-method');\nvar arraySlice = require('../internals/array-slice-simple');\nvar callRegExpExec = require('../internals/regexp-exec-abstract');\nvar regexpExec = require('../internals/regexp-exec');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar fails = require('../internals/fails');\n\nvar UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;\nvar MAX_UINT32 = 0xFFFFFFFF;\nvar min = Math.min;\nvar $push = [].push;\nvar exec = uncurryThis(/./.exec);\nvar push = uncurryThis($push);\nvar stringSlice = uncurryThis(''.slice);\n\n// Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n var re = /(?:)/;\n var originalExec = re.exec;\n re.exec = function () { return originalExec.apply(this, arguments); };\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\n// @@split logic\nfixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n if (\n 'abbc'.split(/(b)*/)[1] === 'c' ||\n // eslint-disable-next-line regexp/no-empty-group -- required for testing\n 'test'.split(/(?:)/, -1).length !== 4 ||\n 'ab'.split(/(?:ab)*/).length !== 2 ||\n '.'.split(/(.?)(.?)/).length !== 4 ||\n // eslint-disable-next-line regexp/no-empty-capturing-group, regexp/no-empty-group -- required for testing\n '.'.split(/()()/).length > 1 ||\n ''.split(/.?/).length\n ) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function (separator, limit) {\n var string = toString(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) {\n return call(nativeSplit, string, separator, lim);\n }\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n while (match = call(regexpExec, separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n if (lastIndex > lastLastIndex) {\n push(output, stringSlice(string, lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) apply($push, output, arraySlice(match, 1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n if (lastLastIndex === string.length) {\n if (lastLength || !exec(separatorCopy, '')) push(output, '');\n } else push(output, stringSlice(string, lastLastIndex));\n return output.length > lim ? arraySlice(output, 0, lim) : output;\n };\n // Chakra, V8\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : call(nativeSplit, this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [\n // `String.prototype.split` method\n // https://tc39.es/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = isNullOrUndefined(separator) ? undefined : getMethod(separator, SPLIT);\n return splitter\n ? call(splitter, separator, O, limit)\n : call(internalSplit, toString(O), separator, limit);\n },\n // `RegExp.prototype[@@split]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (string, limit) {\n var rx = anObject(this);\n var S = toString(string);\n var res = maybeCallNative(internalSplit, rx, S, limit, internalSplit !== nativeSplit);\n\n if (res.done) return res.value;\n\n var C = speciesConstructor(rx, RegExp);\n\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') +\n (rx.multiline ? 'm' : '') +\n (rx.unicode ? 'u' : '') +\n (UNSUPPORTED_Y ? 'g' : 'y');\n\n // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n while (q < S.length) {\n splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;\n var z = callRegExpExec(splitter, UNSUPPORTED_Y ? stringSlice(S, q) : S);\n var e;\n if (\n z === null ||\n (e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p\n ) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n push(A, stringSlice(S, p, q));\n if (A.length === lim) return A;\n for (var i = 1; i <= z.length - 1; i++) {\n push(A, z[i]);\n if (A.length === lim) return A;\n }\n q = p = e;\n }\n }\n push(A, stringSlice(S, p));\n return A;\n }\n ];\n}, !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC, UNSUPPORTED_Y);\n","module.exports = React;","module.exports = ReactDOM;"],"names":["fireAnalyticsLink","_ref","searchTerm","searchType","eventName","eventCategory","eventAction","eventLabel","eventType","eventNoninteraction","enhancedAction","generalConfig","promoConfig","productConfig","customerConfig","productImpressionConfig","callUtagLink","_objectSpread","event","event_category","event_action","event_label","event_type","event_noninteraction","enhanced_action","search_term","search_type","htmltoText","html","MsDyn365","isBrowser","tempDivElement","document","createElement","innerHTML","textContent","innerText","firePromotionImpression","promotionName","promotionId","promotionCreative","promotionPosition","promotion_impression_name","promotion_impression_id","promotion_impression_creative","promotion_impression_position","firePromotionClick","_ref2","promotion_name","promotion_id","promotion_creative","promotion_position","callUtag","async","objToCall","Object","keys","forEach","key","utag","global","hasOwnProperty","link","e","console","log","callUtagView","view","getResponsiveFromSeoData","desktop","tablet","mobile","query","React","src","media","srcSet","className","alt","altText","getResponsiveImage","_defaultImg$imageSett","_defaultImg$imageSett2","defaultImg","lazyload","imageSettings","disableLazyLoad","defaultImgSrc","quality","getDynamicImageSettings","_ref3","_MsDyn365$themeSettin","moduleName","viewports","undefined","themeSettingsForModule","themeSettings","mattressfirm","modules","themeSettingsForLayout","properties","dynamic","imageViewportProperties","_get","_cloneDeep","ContentCardLinks","constructor","_mapEditableLinks","linkdata","length","editableLinks","index","payLoad","getPayloadObject","this","props","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","btnClass","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","role","additionalProperties","onClick","onClickOverride","onTelemetryClick","push","render","links","Msdyn365","editProps","onTextChange","requestContext","textAlignment","imagePosition","actionableRegion","enhancedEcommTracking","HeadingTag","ContentBlock","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","handleTextChange","config","heading","text","target","value","handleParagraphChange","paragraph","handleLinkTextChange","linkIndex","image","nonPLPstyling","useDynamicImages","dynamicImages","imageAriaLabel","contentBlockTitle","tag","onEdit","imageProps","gridSettings","contentBlockLinks","LinksComponent","assign","contentBlockText","contentBlockImage","warning","contentBlockviewProps","title","moduleClass","contentBlockContainer","moduleProps","classnames","imageContainer","detailsContainer","contentBlockAnchorTag","imageLink","_getImageLink","fullyClickableBanner","_fullyClickable","logo","_getLogo","renderView","region","imageAndLinks","logoImage","defaultImageSettings","xs","q","w","h","sm","md","lg","Image","_links$","tealiumEvent","tealiumPromotion","isPromotion","pagePath","window","location","href","split","host","includes","paragraphText","toString","trim","promoAnalyticsConfig","getPromoAnalyticsConfig","ref","inView","useInView","triggerOnce","rootMargin","handleAnalytics","isImageClick","ctaUrl","pageURL","pathname","imageSkeleton","CustomSkeleton","height","width","type","style","marginTop","currentImage","desktopImage","tabletImage","mobileImage","imageSettingViewports","imageLinkContent","Module","Node","preventDefault","buttonLinkContent","classname","stopPropagation","tabIndex","getValidCSSInput","input","parsedInput","parseFloat","unit","match","isNaN","_getValidCSSInput","_getValidCSSInput2","circle","rest","_objectWithoutProperties","_excluded","classNames","borderRadius","isCategoryBanner","headerText","promoName","promotion_creative_version","getAnalyticsConfig","binding","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","__bindings__","viewDictionary","cn","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","toLength","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","RegExp","string","rx","S","res","done","fullUnicode","unicode","lastIndex","result","A","matchStr","apply","uncurryThis","isRegExp","speciesConstructor","arraySlice","callRegExpExec","regexpExec","stickyHelpers","fails","UNSUPPORTED_Y","MAX_UINT32","min","Math","$push","exec","stringSlice","slice","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","flags","ignoreCase","multiline","sticky","lastLastIndex","separatorCopy","source","splitter","C","unicodeMatching","z","i","re","originalExec","arguments","module","exports","ReactDOM"],"sourceRoot":""}