{"version":3,"file":"static/js/498b31863ca52ea497b3.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/analytics/htmlToText.ts?c3c7","webpack://mattressfirm/./src/Utilities/get-dynamic-image.tsx?8e0f","webpack://mattressfirm/./src/Utilities/get-view-port.tsx?4210","webpack://mattressfirm/./src/modules/mfrm-hero-with-tabs/mfrm-hero-with-tabs.tsx?0b3a","webpack://mattressfirm/./src/modules/mfrm-hero-with-tabs/mfrm-hero-with-tabs.view.tsx?7414","webpack://mattressfirm/./lib/mfrm-hero-with-tabs/module-registration.js?4c02","webpack://mattressfirm/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"sourcesContent":["\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 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","import MsDyn365, { ICoreContext } from '@msdyn365-commerce/core';\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nconst _getViewPort = (context: ICoreContext): GridSize => {\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n};\r\n\r\nexport default _getViewPort;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IGridSettings, IImageData, Image, RichText, RichTextComponent } from '@msdyn365-commerce/core';\r\nimport { getDynamicImageSettings, getResponsiveImage } from '../../Utilities/get-dynamic-image';\r\nimport { IDynamicImagesData } from '../../themes/mattressfirm/definition-extensions/content-block.ext.props.autogenerated';\r\nimport { htmltoText } from '../../Utilities/analytics/htmlToText';\r\n\r\nimport { addThrottledEvent, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365 from '@msdyn365-commerce/core';\r\nimport Tabs from 'mfcl/Tabs';\r\nimport * as React from 'react';\r\nimport _getViewPort from '../../Utilities/get-view-port';\r\nimport { IMfrmHeroWithTabsData } from './mfrm-hero-with-tabs.data';\r\nimport { IMfrmHeroWithTabsProps } from './mfrm-hero-with-tabs.props.autogenerated';\r\n\r\nexport interface IPanelContent {\r\n content: React.ReactElement;\r\n}\r\nexport interface ITabHeroData {\r\n tabTitle: RichText;\r\n heroTitle: RichText;\r\n heroDescription: RichText | undefined;\r\n heroTextColor: string;\r\n heroColor: string;\r\n image: IImageData;\r\n gridSettings: IGridSettings;\r\n useDynamicImages?: boolean;\r\n dynamicImages?: IDynamicImagesData;\r\n}\r\nexport interface IResponsiveState {\r\n isMobile: boolean;\r\n isTablet: boolean;\r\n activeTab: number;\r\n}\r\nexport interface IMfrmHeroWithTabsViewProps extends IMfrmHeroWithTabsProps {\r\n tabsData: React.ReactNode;\r\n}\r\n\r\n/**\r\n *\r\n * MfrmSleepDisrupters component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass MfrmHeroWithTabs extends React.PureComponent, IResponsiveState> {\r\n private tabHeadings: any[];\r\n private heroContent: any[];\r\n private panelContent: IPanelContent[];\r\n private className: string | undefined;\r\n\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n constructor(props: IMfrmHeroWithTabsProps) {\r\n super(props);\r\n this.tabHeadings = [];\r\n this.heroContent = [];\r\n this.panelContent = [];\r\n this.state = {\r\n isMobile: false,\r\n isTablet: false,\r\n activeTab: 0\r\n };\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', () => this._updateViewport());\r\n }\r\n this._updateViewport();\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n MsDyn365.isBrowser && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config: { featuredTabList },\r\n context: {\r\n request: { gridSettings }\r\n }\r\n } = this.props;\r\n this.className = 'mfrm-hero-with-tabs';\r\n\r\n this.tabHeadings = featuredTabList.map((content, indx) => {\r\n const { tabTitle, trimTabTitle } = content;\r\n if( this.state.isMobile && trimTabTitle ) {\r\n function containsSpecialChars(str:string) {\r\n const specialChars = /[`!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?~]/;\r\n return specialChars.test(str);\r\n }\r\n\r\n const tabTitleText = htmltoText(tabTitle.toString()).trim();\r\n const trimTitle = tabTitleText.split(\" \");\r\n let newTabTitle;\r\n\r\n if( containsSpecialChars(trimTitle[trimTitle.length - 1]) ) {\r\n newTabTitle = trimTitle[0] + trimTitle[trimTitle.length - 1][trimTitle[trimTitle.length - 1].length - 1];\r\n } else {\r\n newTabTitle = trimTitle[0];\r\n }\r\n\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n });\r\n\r\n this.heroContent = featuredTabList.map((content, indx) => {\r\n const { heroTitle, heroDescription, heroTextColor, heroColor, image, useDynamicImages, dynamicImages } = content;\r\n\r\n let currentImage;\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: image,\r\n imageSettingViewports: getDynamicImageSettings({ moduleName: 'mfrm-hero-with-tabs' })\r\n });\r\n }\r\n\r\n let heroBkgColor;\r\n switch (heroColor) {\r\n case 'lightBlue':\r\n heroBkgColor = 'bkg-light-blue';\r\n break;\r\n case 'blue':\r\n heroBkgColor = 'bkg-blue';\r\n break;\r\n case 'red':\r\n heroBkgColor = 'bkg-red';\r\n break;\r\n case 'charcoal':\r\n heroBkgColor = 'bkg-charcoal';\r\n break;\r\n case 'white':\r\n heroBkgColor = 'bkg-white';\r\n break;\r\n case 'gray':\r\n heroBkgColor = 'bkg-gray';\r\n break;\r\n }\r\n\r\n let textColor;\r\n switch (heroTextColor) {\r\n case 'red':\r\n textColor = 'font-red';\r\n break;\r\n case 'charcoal':\r\n textColor = 'font-charcoal';\r\n break;\r\n case 'white':\r\n textColor = 'font-white';\r\n break;\r\n case 'blue':\r\n textColor = 'font-blue';\r\n break;\r\n }\r\n\r\n const imageDisplay = (useDynamicImages ?\r\n (\r\n
{currentImage}
\r\n ) : (\r\n {image?.altText}\r\n )\r\n );\r\n\r\n return ({ content:\r\n <>\r\n
\r\n \r\n {heroDescription && }\r\n
\r\n {imageDisplay}\r\n ,\r\n heroColor: heroBkgColor\r\n });\r\n });\r\n\r\n this.panelContent = [\r\n { content: this._getPanelContent(this.props.slots?.firstTabContent) },\r\n { content: this._getPanelContent(this.props.slots?.secondTabContent) },\r\n { content: this._getPanelContent(this.props.slots?.thirdTabContent) }\r\n ];\r\n\r\n const viewProps = {\r\n ...this.props,\r\n tabsData: this._getTabsContent()\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n\r\n private _handleAnalytics = (activeTab: number) => {\r\n const { featuredTabList } = this.props.config;\r\n // @ts-ignore\r\n if (activeTab !== this.state.activeTab && MsDyn365.isBrowser && 'utag' in window) {\r\n const tabTitle = htmltoText(featuredTabList[activeTab].tabTitle.toString()).trim();\r\n const heroTitle = featuredTabList[activeTab].heroTitle !== undefined ? htmltoText(featuredTabList[activeTab].heroTitle!.toString()).trim() : '';\r\n // @ts-ignore\r\n utag.link({\r\n event: 'sleep-disruptor-top-level-page-hero-module',\r\n event_category: 'Sleep Disruptor Top Level Page Hero',\r\n event_action: `${tabTitle} hero image click`,\r\n event_label: `${heroTitle}`,\r\n event_noninteraction: 'false'\r\n });\r\n }\r\n this.setState({ activeTab });\r\n };\r\n\r\n private _updateViewport = () => {\r\n const { context } = this.props;\r\n const viewPort = _getViewPort(context);\r\n viewPort === 'xs' || viewPort === 'sm' ? this.setState({ isMobile: true }) : this.setState({ isMobile: false });\r\n viewPort === 'md' || viewPort === 'lg' || viewPort === 'xl' ? this.setState({ isTablet: true }) : this.setState({ isTablet: false });\r\n };\r\n\r\n private _getTabsContent = () => {\r\n const tabItems = this.tabHeadings;\r\n return (\r\n
\r\n
\r\n {/* tslint:disable-next-line:jsx-no-lambda react-this-binding-issue */}\r\n this._handleAnalytics(activeTab)} />\r\n {this.heroContent.map((hero, indx) => {\r\n // eslint-disable-next-line\r\n return
{hero.content}
;\r\n })}\r\n
\r\n {this.panelContent.map((panel, indx) => {\r\n // eslint-disable-next-line\r\n return
{panel.content}
;\r\n })}\r\n
\r\n );\r\n };\r\n\r\n private _getPanelContent(tabContent: React.ReactNode[]): JSX.Element {\r\n if (this.props.slots && this.props.slots.firstTabContent && this.props.slots.firstTabContent.length) {\r\n return (\r\n <>\r\n {tabContent && tabContent.length\r\n ? tabContent.map((children: React.ReactNode, index: number) => {\r\n return {children};\r\n })\r\n : null}\r\n \r\n );\r\n }\r\n return this._defaultContent();\r\n }\r\n\r\n private _defaultContent(): JSX.Element {\r\n const { defaultContent } = this.props.resources;\r\n return {defaultContent};\r\n }\r\n}\r\n\r\nexport default MfrmHeroWithTabs;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IMfrmHeroWithTabsViewProps } from './mfrm-hero-with-tabs';\r\n\r\nexport default (props: IMfrmHeroWithTabsViewProps) => {\r\n const { tabsData } = props;\r\n return (\r\n \r\n {tabsData}\r\n \r\n );\r\n};\r\n","const binding = { modules: {}, dataActions: {} };\n\n (binding.modules['mfrm-hero-with-tabs'] = {\n c: () => require('partner/modules/mfrm-hero-with-tabs/mfrm-hero-with-tabs.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mfrm-hero-with-tabs',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mfrm-hero-with-tabs'\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-hero-with-tabs|mfrm-hero-with-tabs'] = {\n c: () => require('partner/modules/mfrm-hero-with-tabs/mfrm-hero-with-tabs.view.tsx'),\n cn: '__local__-__local__-mfrm-hero-with-tabs'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["htmltoText","html","MsDyn365","isBrowser","tempDivElement","document","createElement","innerHTML","textContent","innerText","getResponsiveFromSeoData","_ref","desktop","tablet","mobile","query","React","src","media","srcSet","className","alt","altText","getResponsiveImage","_ref2","_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","context","window","innerWidth","gridSettings","request","xs","w","sm","md","lg","MfrmHeroWithTabs","constructor","props","super","_handleAnalytics","activeTab","featuredTabList","this","config","state","tabTitle","toString","trim","heroTitle","utag","link","event","event_category","event_action","event_label","event_noninteraction","setState","_updateViewport","viewPort","_getViewPort","isMobile","isTablet","_getTabsContent","tabItems","tabHeadings","Tabs","name","titleClassName","defaultValue","items","onChange","heroContent","map","hero","indx","heroColor","content","panelContent","panel","componentDidMount","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","render","_this$props$slots","_this$props$slots2","_this$props$slots3","trimTabTitle","trimTitle","split","newTabTitle","str","length","test","RichTextComponent","key","text","heroDescription","heroTextColor","image","useDynamicImages","dynamicImages","currentImage","heroBkgColor","textColor","desktopImage","tabletImage","mobileImage","imageSettingViewports","imageDisplay","Image","Object","assign","_getPanelContent","slots","firstTabContent","secondTabContent","thirdTabContent","viewProps","_objectSpread","tabsData","renderView","tabContent","children","index","_defaultContent","defaultContent","resources","Node","binding","dataActions","c","require","$type","da","iNM","ns","n","p","pdp","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}