{"version":3,"file":"static/js/183176d8eb35effbe88e.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/get-view-port.tsx?4210","webpack://mattressfirm/./src/Utilities/isExternalLink.ts?57de","webpack://mattressfirm/./src/Utilities/plp-url-utils.ts?728b","webpack://mattressfirm/./src/data-actions/navigation-menu-state-data-action.ts?8ae5","webpack://mattressfirm/./src/modules/mfrm-navigation-menu/mfrm-navigation-menu.props.autogenerated.ts?c08b","webpack://mattressfirm/./src/modules/mfrm-navigation-menu/mfrm-navigation-menu.tsx?7f4b","webpack://mattressfirm/./src/modules/mfrm-navigation-menu/mfrm-navigation-menu.view.tsx?f63b","webpack://mattressfirm/./lib/mfrm-navigation-menu/module-registration.js?f13f","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 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","export const isExternalLink = (url: any) => {\r\n const tmp = document.createElement('a');\r\n tmp.href = url;\r\n return tmp.host !== window.location.host;\r\n};","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\r\nexport interface IVirtualRefinersConfig {\r\n order: number;\r\n refinerName: string;\r\n enableForMattresses: boolean;\r\n enableForOtherCategories: boolean;\r\n allowDuplicate: boolean;\r\n}\r\n\r\n/**\r\n * This will create the canonicalURL as per 7924 requirement\r\n * @param requestContext\r\n * @returns string of canonical URL\r\n */\r\nexport const canonicalURL = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const origin = requestUrl.origin;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove double values containing pipe sign\r\n if (path.match(/%7c/)) {\r\n urlParts = removePipeSignValue(urlParts);\r\n }\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n const filteredPath = urlParts?.join('/');\r\n\r\n return `${origin}/${filteredPath}`;\r\n};\r\n\r\nexport const filteredURL = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n const filteredPath = urlParts?.join('/');\r\n\r\n return `/${filteredPath}`;\r\n};\r\n\r\n/**\r\n * This will create the canonicalURL as per 7924 requirement\r\n * @param requestContext\r\n * @returns string of canonical URL\r\n */\r\nexport const canonicalURLWithoutBaseUrl = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('\\/').splice(1);\r\n\r\n // remove double values containing pipe sign\r\n if (path.match(/%7c/)) {\r\n urlParts = removePipeSignValue(urlParts);\r\n }\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n return urlParts?.join('\\/');\r\n};\r\n\r\n/**\r\n * This will remove the Pipe sign value set from urlParts\r\n * @param urlParts\r\n * @returns\r\n */\r\nexport const removePipeSignValue = (urlParts: string[]) => {\r\n // urlParts.forEach((part, index) => {\r\n // const indexOfValue = urlParts.indexOf('%7c');\r\n // if (indexOfValue !== -1) {\r\n // urlParts.splice(indexOfValue, 1);\r\n // }\r\n // });\r\n\r\n if (urlParts !== undefined && urlParts.length > 0) {\r\n urlParts = urlParts.filter(urlPart => urlPart.indexOf('%7c') === -1);\r\n }\r\n\r\n return urlParts;\r\n};\r\n\r\n/**\r\n * This will remove the keywords from urlParts array which were received from\r\n * the app.settings.json/CMS Extensions\r\n * @param urlParts\r\n * @param requestContext\r\n * @returns urlParts array filtered\r\n */\r\nexport const removeKeywords = (urlParts: string[], requestContext: IRequestContext): string[] => {\r\n const removeKeywordFromUrl = requestContext.app.config.removeKeywordFromUrl;\r\n\r\n if (urlParts.length > 0 && removeKeywordFromUrl && removeKeywordFromUrl.length > 0) {\r\n const removeKeywordFromUrlArray: string[] = removeKeywordFromUrl?.trim().split(',');\r\n removeKeywordFromUrlArray?.length > 0 &&\r\n urlParts.forEach(_part => {\r\n removeKeywordFromUrlArray.forEach(removeKeyword => {\r\n const trimmedKeyword = removeKeyword.trim().toLowerCase();\r\n const indexOfValue = urlParts.indexOf(trimmedKeyword);\r\n if (trimmedKeyword.length > 0 && indexOfValue !== -1) {\r\n urlParts.splice(indexOfValue, 1);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return urlParts;\r\n};\r\n\r\n/**\r\n * This will sort the Virtual refiner config based on order and return\r\n * only active virtual refiner configs based on isMattress category will\r\n * be returned\r\n * @param requestContext\r\n * @param isMattressesCategory boolean | undefined\r\n * @returns IVirtualRefinersConfig[] | undefined\r\n */\r\nexport const getSortedVirtualRefinerConfig = (\r\n requestContext: IRequestContext,\r\n isMattressesCategory: boolean | undefined\r\n): IVirtualRefinersConfig[] | undefined => {\r\n let appConfigSorted = getVirtualRefinerConfig(requestContext);\r\n\r\n // sort the config by provided config\r\n if (appConfigSorted) {\r\n if (isMattressesCategory === true) {\r\n appConfigSorted = appConfigSorted.filter(appConfig => {\r\n return appConfig.enableForMattresses;\r\n });\r\n } else if (isMattressesCategory === false) {\r\n appConfigSorted = appConfigSorted.filter(appConfig => {\r\n return appConfig.enableForOtherCategories;\r\n });\r\n }\r\n appConfigSorted.sort((a: IVirtualRefinersConfig, b: IVirtualRefinersConfig) => {\r\n return a.order - b.order;\r\n });\r\n }\r\n\r\n return appConfigSorted;\r\n};\r\n\r\n/**\r\n * Virtual refiner names from the app.settings.json will be returned which can be used\r\n * to filter out refiners data based upon active virtual refiners\r\n * @param requestContext\r\n * @param isMattressesCategory boolean | undefined\r\n * @returns string[]\r\n */\r\nexport const getVirtualRefinerNames = (requestContext: IRequestContext, isMattressesCategory: boolean | undefined): string[] => {\r\n const sortedVirtualRefinerConfig = getSortedVirtualRefinerConfig(requestContext, isMattressesCategory);\r\n\r\n const appConfigRefinerNames: string[] = [];\r\n\r\n sortedVirtualRefinerConfig &&\r\n sortedVirtualRefinerConfig.forEach(sortedConfig => {\r\n appConfigRefinerNames.push(sortedConfig.refinerName.trim().toLowerCase());\r\n });\r\n\r\n return appConfigRefinerNames;\r\n};\r\n\r\n/**\r\n * This will return the value of virtual refiner configuration\r\n * @param requestContext\r\n * @returns IVirtualRefinersConfig[] | undefined\r\n */\r\nexport const getVirtualRefinerConfig = (requestContext: IRequestContext): IVirtualRefinersConfig[] => {\r\n return requestContext.app.config.urlModifications;\r\n};\r\n\r\nexport async function getVirtualRefinerValues(\r\n requestContext: IRequestContext,\r\n virtualRefiners: IProductRefinerHierarchy[]\r\n): Promise {\r\n const virtualRefinerValues: ProductRefinerValue[] = [];\r\n if (virtualRefiners.length === 0) {\r\n return virtualRefinerValues;\r\n }\r\n const requestUrl = requestContext.url.requestUrl;\r\n // const origin = requestUrl.origin;\r\n const path = requestUrl.pathname;\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n // remove category id {categoryid}.c\r\n const categoryIdToken = requestContext.urlTokens.recordId;\r\n const categoryId = categoryIdToken ? `${categoryIdToken}.c` : undefined;\r\n\r\n if (categoryId) {\r\n urlParts.splice(-1);\r\n }\r\n\r\n // run loop for each url part and get values from refiners for further usage\r\n const finalizedUrlParts: string[] = [];\r\n urlParts.forEach(plainUrlPart => {\r\n const urlPart = decodeURIComponent(plainUrlPart);\r\n if (urlPart.indexOf('|') !== -1) {\r\n const splitOnPipeSign = urlPart?.split('|');\r\n const filteredParts = splitOnPipeSign.filter(part => part.length > 0);\r\n filteredParts.forEach(filteredPart => {\r\n finalizedUrlParts.push(filteredPart.toLowerCase().trim());\r\n });\r\n }\r\n finalizedUrlParts.push(urlPart);\r\n });\r\n finalizedUrlParts.forEach((urlPart) => {\r\n virtualRefiners.forEach((mainRefiner) => {\r\n mainRefiner.Values.forEach((refinerValue) => {\r\n const refinerValueKeyName = refinerValue.LeftValueBoundString?.toLowerCase().trim().split(' ')?.join('-')?.replace(/\\&/g, 'and')?.replace(regExSpecialChars(requestContext.app.config.canonicalUrlspecialCharIncludeList), '-');\r\n if (refinerValueKeyName && refinerValueKeyName === urlPart) {\r\n virtualRefinerValues.push(refinerValue);\r\n }\r\n });\r\n });\r\n });\r\n\r\n return virtualRefinerValues;\r\n}\r\n\r\n/**\r\n * For navigation menu links, it will remove keywords configured in global configurations from the navigation link\r\n * and clp link and return url path string\r\n * @param link\r\n * @param requestContext\r\n * @returns string\r\n */\r\nexport const navLinkKeywordRemoval = (link: string, requestContext: IRequestContext): string => {\r\n // Using the rest operator in case there is a weirdly formatted URL with multiple question marks.\r\n const [linkBase, ...linkParams] = link?.split('?');\r\n\r\n // Only apply to category links and product links, which end in .c or .p. Check that a keyword is configured.\r\n if (!linkBase.endsWith('.c') && !linkBase.endsWith('.p') || !requestContext.app.config) {\r\n return link;\r\n }\r\n\r\n // Separate out url parts split on forward /\r\n let urlParts = linkBase?.split('\\/');\r\n\r\n // Remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n // Glue the URL params back together\r\n const linkParam = linkParams.map(param => `?${param}`)?.join('');\r\n\r\n // Rebuild URL by joining with forward slash and appending any URL parameters\r\n const filteredLink = `${urlParts?.join('/')}${linkParam}`;\r\n return `${filteredLink}`;\r\n};\r\nexport const regExSpecialChars = (includeConfigList: string): RegExp => {\r\n let includeConfig = '';\r\n if (includeConfigList !== undefined && includeConfigList !== '') {\r\n includeConfig = includeConfigList?.trim().split(',')?.join('\\\\\\\\');\r\n includeConfig = includeConfig && includeConfig !== '' ? `\\\\\\\\${includeConfig}` : '';\r\n const pattern = `[^\\\\w\\\\&\\\\|${includeConfig}]`;\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return new RegExp(pattern, 'gi');\r\n } else {\r\n\r\n const pattern = `[^\\\\w\\\\&\\\\|]`;\r\n // eslint-disable-next-line security/detect-non-literal-regexp\r\n return new RegExp(pattern, 'gi');\r\n }\r\n};\r\n","import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { INavigationMenuState } from './navigation-menu-state';\r\n\r\n/**\r\n * NavigationMenuState - action input\r\n */\r\nexport class NavMenuStateInput implements IActionInput {\r\n public getCacheKey = () => `NavMenuState`;\r\n public getCacheObjectType = () => 'NavMenuState';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * NavMenuStateInput - action\r\n */\r\nexport async function navMenuStateAction(input: NavMenuStateInput, ctx: IActionContext): Promise {\r\n return { isMenuHasParent: false, isMobileMenuCollapsed: true, selectedNavMenu: '', menuItemData: [] };\r\n}\r\n\r\n/**\r\n * NavMenuStateInput - create new input for create action\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new NavMenuStateInput();\r\n};\r\n\r\n/**\r\n * NavMenuStateInput - create action\r\n */\r\nexport default createObservableDataAction({\r\n id: 'NavMenuState',\r\n action: >navMenuStateAction,\r\n input: createInput\r\n});\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 * IMfrmNavigationMenu 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 navigationMenuSource {\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly',\r\n all = 'all'\r\n}\r\n\r\nexport interface IMfrmNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n categoryImageSettings?: Msdyn365.IImageSettings;\r\n displayCategoryImage?: boolean;\r\n enableMultilevelMenu?: boolean;\r\n enabletopMenu?: boolean;\r\n rootMenuNavigation?: string;\r\n menuLevelSupport?: number;\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n secondaryNavItems?: ISecondaryNavItemsData[];\r\n menuItemsLimitMobile?: number;\r\n menuItemsLimitDesktop?: number;\r\n className?: string;\r\n}\r\n\r\nexport interface IMfrmNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n clpLinkText?: string;\r\n clpLink?: Msdyn365.ILinkData;\r\n categoryBannerNames?: string;\r\n mattressMatcherBannerID?: string;\r\n menuItemColorMobile?: string;\r\n menuItemColorDesktop?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISecondaryNavItemsData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n clpLinkText?: string;\r\n clpLink?: Msdyn365.ILinkData;\r\n categoryBannerNames?: string;\r\n mattressMatcherBannerID?: string;\r\n menuItemColorMobile?: string;\r\n menuItemColorDesktop?: string;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n clpLinkText?: string;\r\n clpLink?: Msdyn365.ILinkData;\r\n categoryBannerNames?: string;\r\n mattressMatcherBannerID?: string;\r\n menuItemColorMobile?: string;\r\n menuItemColorDesktop?: string;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n categoryBannerNames?: string;\r\n mattressMatcherBannerID?: string;\r\n menuItemColorMobile?: string;\r\n menuItemColorDesktop?: string;\r\n}\r\n\r\nexport interface IMfrmNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IMfrmNavigationMenuResources;\r\n config: IMfrmNavigationMenuConfig;\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\nimport { getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, { IActionContext, ICoreContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport Cookies from 'universal-cookie';\r\nimport _getViewPort from '../../Utilities/get-view-port';\r\nimport { navLinkKeywordRemoval } from '../../Utilities/plp-url-utils';\r\nimport { IMenuItemData, IMfrmNavigationMenuData } from './mfrm-navigation-menu.data';\r\nimport {\r\n ICmsNavItemsData,\r\n IMfrmNavigationMenuProps,\r\n ISubMenusData,\r\n navigationMenuSource\r\n} from './mfrm-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IMfrmNavigationMenuProps {\r\n className: string;\r\n menuItemData: IMenuItemData[];\r\n Navigation: IModuleProps;\r\n MenuList: INodeProps;\r\n ListItem: INodeProps;\r\n Link: INodeProps;\r\n Button: INodeProps;\r\n Span: INodeProps;\r\n ImageContainer: INodeProps;\r\n MobileDescriptionContainer: INodeProps;\r\n MobileBackButton: INodeProps;\r\n MobileDescriptionLabel: INodeProps;\r\n imageSettings: IImageSettings;\r\n gridSettings: IGridSettings;\r\n isMobileView: boolean;\r\n DivContainer?: INodeProps;\r\n ImageDivContainer?: INodeProps;\r\n showCategoryImage?: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private CMSItemIdInit: number = 1000;\r\n private RSItemIdInit: number = 5000;\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private menuItemList: IMenuItemData[];\r\n private isRetail: boolean = true;\r\n private isCMS: boolean = true;\r\n @observable\r\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n let nameTranslation: TextValueTranslation | undefined;\r\n if (locale && nameTranslations && nameTranslations.length > 0) {\r\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n }\r\n\r\n return nameTranslation && nameTranslation.Text;\r\n }\r\n\r\n constructor(props: IMfrmNavigationMenuProps) {\r\n super(props);\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = { isMobile: false };\r\n this.menuItemList = [];\r\n\r\n // set cookie to track sessions for new site\r\n const cookies = new Cookies();\r\n const expiryDateTracking = new Date();\r\n // expiry date set to now + 1 day\r\n expiryDateTracking.setDate(expiryDateTracking.getDate() + 1);\r\n cookies.set('d365_site', true, {\r\n expires: expiryDateTracking,\r\n path: '/'\r\n });\r\n\r\n // set d365 user cookie\r\n const expiryDateUser = new Date();\r\n // expiry date set to now + 14 days\r\n expiryDateUser.setDate(expiryDateUser.getDate() + 14);\r\n cookies.set('d365_user', true, {\r\n expires: expiryDateUser,\r\n path: '/'\r\n });\r\n\r\n const expiryDateInMonths = new Date();\r\n // expiry date set to now + 13 Months\r\n expiryDateInMonths.setMonth(expiryDateInMonths.getMonth() + 13);\r\n const requestContext = this.props.context.request;\r\n const cjeventValue = requestContext?.query?.cjevent;\r\n if (cjeventValue) {\r\n requestContext.cookies.set('cje', cjeventValue, {\r\n expires: expiryDateInMonths,\r\n secure: true,\r\n httpOnly: false,\r\n sameSite: 'none',\r\n path: '/'\r\n });\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(this.props.context));\r\n }\r\n this.updateViewPort(this.props.context);\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 this.CMSItemIdInit = 1000;\r\n this.menuItemList = this._mapData();\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.warning('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=224&h=300&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=224&h=300&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n imageSettings: defaultImageSettings,\r\n gridSettings: this.props.context.request.gridSettings,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n tag: 'nav',\r\n role: 'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul',\r\n role: 'menu'\r\n },\r\n ListItem: {\r\n className: 'ms-nav__list__item',\r\n role: 'presentation',\r\n tag: 'li'\r\n },\r\n showCategoryImage: this.props.config.displayCategoryImage || false,\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: 'menuitem'\r\n },\r\n DivContainer: {\r\n tag: 'div',\r\n className: 'ms-nav__feature',\r\n role: 'menu'\r\n },\r\n ImageDivContainer: {\r\n tag: 'div',\r\n className: 'category-image',\r\n role: 'menu'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag: 'button',\r\n role: 'menuitem',\r\n onClick: this.props\r\n },\r\n ImageContainer: {\r\n className: 'ms-nav__list__item__image'\r\n },\r\n Span: {\r\n className: 'ms-nav__list__item__span',\r\n tag: 'span'\r\n },\r\n MobileDescriptionContainer: {\r\n className: 'ms-nav__list__mobile__container'\r\n },\r\n MobileBackButton: {\r\n className: 'ms-nav__list__mobile__container__button',\r\n tag: 'button',\r\n 'aria-label': this.props.resources.backButtonAriaLabel,\r\n onClick: this.props\r\n },\r\n MobileDescriptionLabel: {\r\n className: 'ms-nav__list__mobile__container__span',\r\n tag: 'span'\r\n },\r\n isMobileView: this.state.isMobile,\r\n menuItemData: this.menuItemList,\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(): IMenuItemData[] {\r\n const { data, config } = this.props;\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n data.categories.result.map((item: CategoryHierarchy, index) =>\r\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\r\n );\r\n }\r\n\r\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\r\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n );\r\n }\r\n return this._constructTopMenuItemData(mergedData);\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\r\n const enableTopLevelMenu = this.props.config.enabletopMenu || false;\r\n if (!enableTopLevelMenu) {\r\n return mergedData;\r\n }\r\n const mergedRootMenuData: IMenuItemData[] = [];\r\n const topMenu = {\r\n id: 1,\r\n linkText: this.props.config.rootMenuNavigation || '...',\r\n linkURL: '#',\r\n imageSource: undefined,\r\n subMenu: mergedData\r\n } as IMenuItemData;\r\n mergedRootMenuData.push(topMenu);\r\n\r\n return mergedRootMenuData;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _constructMenuItemData(\r\n retailItem?: CategoryHierarchy,\r\n cmsItem?: ICmsNavItemsData,\r\n isRetail?: boolean,\r\n idx?: number,\r\n addedAllMenu?: boolean\r\n ): IMenuItemData {\r\n const locale =\r\n this.props.context && this.props.context.request && this.props.context.request.locale\r\n ? this.props.context.request.locale\r\n : 'en-us';\r\n const imageSouce = retailItem && retailItem.Images && retailItem.Images[0].Uri ? retailItem.Images[0].Uri : 'empty';\r\n if (isRetail) {\r\n return {\r\n id: this.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem && retailItem.NameTranslations) || '',\r\n linkURL: navLinkKeywordRemoval((retailItem && retailItem.Url) || '', this.props.context.request),\r\n imageSource: imageSouce,\r\n subMenu: this._getNestedChildren(retailItem, imageSouce, addedAllMenu)\r\n } as IMenuItemData;\r\n } else {\r\n return {\r\n // VSI Customization - start - added additional params for menu item data\r\n id: this.CMSItemIdInit++,\r\n linkText: cmsItem?.linkText || '',\r\n linkURL: navLinkKeywordRemoval((cmsItem?.linkUrl && cmsItem.linkUrl.destinationUrl) || '', this.props.context.request),\r\n linkType: cmsItem?.linkUrl?.type,\r\n imageDestinationURL: (cmsItem?.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem?.image && cmsItem.image.src) || '',\r\n menuItemColorMobile: cmsItem?.menuItemColorMobile || '',\r\n menuItemColorDesktop: cmsItem?.menuItemColorDesktop || '',\r\n categoryBannerNames: cmsItem?.categoryBannerNames || '',\r\n mattressMatcherBannerID: cmsItem?.mattressMatcherBannerID || '',\r\n clpLink: cmsItem?.clpLink || undefined,\r\n clpLinkText: cmsItem?.clpLinkText || '',\r\n openInNewTab: cmsItem?.openInNewTab,\r\n subMenu: this._getCMSNestedChildren(cmsItem)\r\n // VSI Customization - end\r\n } as IMenuItemData;\r\n }\r\n }\r\n\r\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n if (!category || !category.Children || !category.Children.length) {\r\n return [];\r\n }\r\n\r\n if (!this.props.config.enabletopMenu && addedAllMenu) {\r\n nestedChildren.push({\r\n linkText: this.props.resources.allCategoryMenuText,\r\n imageSource: imageSourceUrl,\r\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\r\n });\r\n }\r\n category.Children.map((item: CategoryHierarchy, index) => {\r\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || !category.subMenus.length) {\r\n return [];\r\n }\r\n\r\n category.subMenus.map((item: ISubMenusData, idx: number) => {\r\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n });\r\n return nestedChildren;\r\n }\r\n\r\n private _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch (sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isRetail = true;\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isRetail = false;\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isRetail = true;\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n private updateViewPort = (context: ICoreContext): void => {\r\n const viewport = _getViewPort(context);\r\n if (viewport === 'xs' || viewport === 'sm' || viewport === 'md') {\r\n this.setState({\r\n isMobile: true\r\n });\r\n } else {\r\n this.setState({\r\n isMobile: false\r\n });\r\n }\r\n };\r\n}\r\n\r\nexport default NavigationMenu;\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 {generateImageUrl} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n Button as CoreButton,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n IPayLoad,\r\n ITelemetryContent,\r\n Module,\r\n Node,\r\n onTelemetryClick\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport MsDyn365, {IImageData, IImageSettings, Image} from '@msdyn365-commerce/core';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport {NavMenuStateInput} from '../../data-actions/navigation-menu-state-data-action';\r\nimport { isExternalLink } from '../../Utilities/isExternalLink';\r\nimport {navLinkKeywordRemoval} from '../../Utilities/plp-url-utils';\r\nimport {INavigationMenuViewProps} from './mfrm-navigation-menu';\r\nimport {IMenuItemData} from './mfrm-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number[];\r\n activeMenuLabels?: string[];\r\n categoryImage?: string | null;\r\n mobileViewLabelText?: string;\r\n showModal?: boolean;\r\n dataShared: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * MfrmNavigationMenuView component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class MfrmNavigationMenuView extends React.PureComponent {\r\n // VSI-Customization - start - 10/12/2020\r\n private activeIndex: number = 0;\r\n private currentSubMenu: JSX.Element[] = [];\r\n private possibleParentMenus: IMenuItemData[] = [];\r\n private parentMenu: IMenuItemData | undefined;\r\n private mobileRoot: IMenuItemData | undefined;\r\n // VSI-Customization - end\r\n private currentLevel: number = 0;\r\n private menuNode: React.RefObject;\r\n private telemetryContent: ITelemetryContent;\r\n private payLoad: IPayLoad;\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, activeMenuLabels: undefined, mobileViewLabelText: '', parentMenu: undefined, showModal: false, dataShared: false };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry);\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n const { menuItemData } = this.props;\r\n if (this.props.data.navMenuState.result && !this.state.dataShared) {\r\n const navMenuState = this.props.data.navMenuState?.result;\r\n this.props.context.actionContext.update(new NavMenuStateInput(), { ...navMenuState, menuItemData: menuItemData });\r\n this.setState({ dataShared: true });\r\n }\r\n if (MsDyn365.isBrowser && this.isWmap()) {\r\n const collection = document.getElementsByTagName('a');\r\n if (collection.length) {\r\n for (let i = 0; i < collection.length; i++) {\r\n const href = collection[i].getAttribute('href')?.replace(`/${this.props.app.config.wmapPageUrlSuffix}`, '');\r\n collection[i].setAttribute('href', href!);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n this.currentLevel = 1;\r\n this.activeIndex = 0;\r\n this.currentSubMenu = [];\r\n this.possibleParentMenus = [];\r\n this.parentMenu = undefined;\r\n\r\n const mobileCollapsedState = this.props.data.navMenuState.result?.isMobileMenuCollapsed;\r\n if (mobileCollapsedState && isMobileView) {\r\n this.setState({ activeMenu: undefined, activeMenuLabels: undefined });\r\n }\r\n\r\n const query = this.props.context.request.query;\r\n\r\n const linkList = {this._displayMenuItemData()};\r\n\r\n return (\r\n <>\r\n {query && query.hasOwnProperty('emitCategories') && query.emitCategories === 'true' && (\r\n \r\n \r\n {JSON.stringify(this.props.menuItemData)}\r\n \r\n )}\r\n \r\n {/* menu list creates an ul with role menu */}\r\n \r\n {/* active menu is undefined by default */}\r\n {isMobileView && this.state.activeMenu !== undefined &&\r\n \r\n {this.state.mobileViewLabelText}\r\n }\r\n {this._renderDisplay()}\r\n \r\n {/* modal for desktop */}\r\n {!isMobileView &&\r\n
\r\n }\r\n \r\n {/* Render seo link-list in the page source. */}\r\n {linkList}\r\n \r\n );\r\n }\r\n\r\n private isWmap = (): boolean => {\r\n const pathName = this.props.context.request && this.props.context.request.url.requestUrl.pathname?.toLowerCase().split('/');\r\n const makeaPaymentLink = this.props.context?.app.config.wmapPageUrlSuffix?.toLowerCase();\r\n return pathName && makeaPaymentLink && pathName?.includes(makeaPaymentLink);\r\n };\r\n private _renderDisplay(): JSX.Element[] {\r\n const { ListItem, menuItemData, isMobileView } = this.props;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n // VSI-Customization - start - Mouse Leave Event\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n // VSI-Customization - end\r\n );\r\n });\r\n return menuItemList;\r\n }\r\n\r\n private _displayMenuItemData(): JSX.Element[] {\r\n const { menuItemData } = this.props;\r\n const allMenuItemArray = [];\r\n\r\n for (let index = 0; index < menuItemData.length; index++) {\r\n const currentMenu = menuItemData[index];\r\n\r\n if (currentMenu.subMenu) {\r\n for (let subMenuIndex = 0; subMenuIndex < currentMenu.subMenu.length; subMenuIndex++) {\r\n const subMenu = currentMenu.subMenu[subMenuIndex];\r\n\r\n if (subMenu.subMenu) {\r\n for (let nestedSubMenuIndex = 0; nestedSubMenuIndex < subMenu.subMenu.length; nestedSubMenuIndex++) {\r\n const nestedSubMenu = subMenu.subMenu[nestedSubMenuIndex];\r\n\r\n if (nestedSubMenu.subMenu) {\r\n for (let doublyNestedSubMenuIndex = 0; doublyNestedSubMenuIndex < nestedSubMenu.subMenu.length; doublyNestedSubMenuIndex++) {\r\n const doublyNestedSubMenu = nestedSubMenu.subMenu[doublyNestedSubMenuIndex];\r\n allMenuItemArray.push(doublyNestedSubMenu);\r\n }\r\n }\r\n allMenuItemArray.push(nestedSubMenu);\r\n }\r\n }\r\n allMenuItemArray.push(subMenu);\r\n }\r\n }\r\n allMenuItemArray.push(currentMenu);\r\n }\r\n\r\n // Filter out empty href links\r\n const MenuItems = allMenuItemArray.filter(({ linkURL }) => !!linkURL);\r\n\r\n // Build anchor node from array of menu items\r\n return MenuItems.map(({id, linkText, linkURL}) => {linkText});\r\n }\r\n\r\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && !this.state.activeMenu) {\r\n return this._renderButtonMenuItem(menuItemData, 0);\r\n } else if (this.props.isMobileView) {\r\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\r\n } else {\r\n return (\r\n \r\n {this._renderButtonMenuItem(menuItemData)}\r\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\r\n \r\n );\r\n }\r\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n return this.props.isMobileView ? this.state.activeMenu?.length ? null : this._renderLinkMenuItem(menuItemData, menuItemData.id, false) : this._renderLinkMenuItem(menuItemData, menuItemData.id, false);\r\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\r\n return this.props.isMobileView ? this.state.activeMenu?.length ? null : this._renderSpanMenuItem(menuItemData) : this._renderSpanMenuItem(menuItemData);\r\n }\r\n this.props.context.telemetry.warning('Navigation menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { ListItem } = this.props;\r\n // VSI-Customization - start\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n // default of 4 is set as requested by MFRM\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 4;\r\n\r\n if (activeMenu && (!this.state.activeMenu || (this.state.activeMenu[this.activeIndex]) !== activeMenu)) {\r\n this.props.context.telemetry.warning('Navigation Active menu content is empty, module wont render.');\r\n this.activeIndex > 0 && this.activeIndex--;\r\n this.currentLevel > 1 && this.currentLevel--;\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.warning('Navigation Submenu content is empty, module wont render.');\r\n this.activeIndex > 0 && this.activeIndex--;\r\n this.currentLevel > 1 && this.currentLevel--;\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuItems = [];\r\n\r\n const isLastSubMenu = this.state.activeMenu && this.activeIndex === this.state.activeMenu.length - 1;\r\n const isLastParent = this.state.activeMenu && this.activeIndex === this.state.activeMenu.length - 2;\r\n\r\n for (let idx = 0; idx < subMenus.length; idx++) {\r\n const option: IMenuItemData = subMenus[idx];\r\n const hasOptions = (option.subMenu && option.subMenu.length > 0);\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && (this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1);\r\n\r\n let menuItem: JSX.Element | null;\r\n if (haveSubmenu) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = (option.linkURL\r\n ? this._renderLinkMenuItem(option, idx, false)\r\n : this._renderSpanMenuItem(option)\r\n );\r\n }\r\n\r\n // reached active submenu so build a list of its children to display\r\n if (isLastSubMenu) {\r\n this.currentSubMenu.push(\r\n \r\n {menuItem}\r\n \r\n );\r\n\r\n // get the parent of this submenu\r\n this.parentMenu = this.possibleParentMenus.find(menu => menu.id === activeMenu);\r\n\r\n continue;\r\n // reached parent of active submenu so set this.activeSubMenuParent here\r\n } else if (isLastParent) {\r\n this.possibleParentMenus.push(option);\r\n }\r\n\r\n // no active submenu found so keep looking\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n this.activeIndex++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n this._renderSubMenu(option.subMenu, option.id, true);\r\n }\r\n\r\n menuItems.push(\r\n \r\n {menuItem}\r\n \r\n );\r\n }\r\n\r\n this.activeIndex--;\r\n return this.currentSubMenu.length ? (this._renderMenu(levelClassName, this.currentSubMenu, activeMenu, IsSubMenu)) : (this._renderMenu(levelClassName, menuItems, activeMenu, IsSubMenu));\r\n // VSI-Customization - end\r\n\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button, isMobileView } = this.props;\r\n const isRoot = !this.state.parentMenu && !activeMenu;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const attribute = isRoot && !this.props.isMobileView ?\r\n { onMouseOver: this._handleDropdownToggle(option, activeMenu), onClick: this._handleOnClick(option, activeMenu), onFocus: this._handleDropdownToggle(option, activeMenu) }\r\n :\r\n { onClick: this._handleDropdownToggle(option, activeMenu) };\r\n const menuItemColor = isMobileView ? option?.menuItemColorMobile : option?.menuItemColorDesktop;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true): JSX.Element | null {\r\n const { Link, isMobileView } = this.props;\r\n const linkText = option.linkText ? option.linkText : '';\r\n const imagesource = option.imageSource ? option.imageSource : '';\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n const menuItemColor = isMobileView ? option?.menuItemColorMobile : option?.menuItemColorDesktop;\r\n return (\r\n // VSI Customization - start - Added inline style for menu item color\r\n null}\r\n // tslint:disable-next-line: jsx-no-lambda react-this-binding-issue\r\n onClick={(event: React.MouseEvent) => { this._handleOnClickMenuItem(event, option); }}\r\n >\r\n {option.linkText}\r\n \r\n // VSI Customization - end\r\n );\r\n }\r\n\r\n private _handleOnClickMenuItem(event: React.MouseEvent, option: IMenuItemData): void {\r\n const telemetryContent = getTelemetryObject('Navigation Header', this.props.friendlyName, this.props.telemetry);\r\n const payLoad = getPayloadObject('click', telemetryContent, 'Nav', '');\r\n // @ts-ignore\r\n payLoad.contentAction.linkText = option.linkText;\r\n onTelemetryClick(telemetryContent, payLoad, 'Nav')();\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n event.preventDefault();\r\n const isExternal = isExternalLink(option.linkURL);\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl = option.linkURL === '/' ? '/' : option.linkURL!;\r\n const internalLocalUrl = MsDyn365.isBrowser && (window.location.href === '/' ? '/' : window.location.href.split(location.host)[1].split('?')[0]);\r\n const eventAction = isExternal ? `to: ${option.linkURL}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal ? `from: ${MsDyn365.isBrowser && window.location.href}` : `from header: ${this.state.activeMenuLabels?.join(' > ')}: ${internalLocalUrl}`;\r\n\r\n // @ts-ignore\r\n utag.link({ event: eventName, event_category: eventCategory, event_action: eventAction, event_label: eventLabel, event_noninteraction: 'false' });\r\n if (MsDyn365.isBrowser) {\r\n const isOpenInNewTab = option.openInNewTab;\r\n !isOpenInNewTab ? window.location.href = option.linkURL! : window.open(option.linkURL);\r\n }\r\n }\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number): JSX.Element | null {\r\n const { Span, isMobileView } = this.props;\r\n const menuItemColor = isMobileView ? option?.menuItemColorMobile : option?.menuItemColorDesktop;\r\n return (\r\n // VSI Customization - start - Added inline style for menu item color\r\n {option.linkText}\r\n // VSI Customization - end\r\n );\r\n }\r\n\r\n // tslint:disable-next-line: max-func-body-length cyclomatic-complexity\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { MenuList, MobileDescriptionContainer, MobileBackButton, ImageDivContainer, showCategoryImage, isMobileView } = this.props;\r\n const categoryImageDisplay = !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\r\n this.currentLevel = 1;\r\n const showSubMenuHeader = this.props.isMobileView || (!this.props.isMobileView && this.state.parentMenu !== undefined);\r\n const showRootData = this.props.isMobileView && this.state.activeMenu && this.state.activeMenu.length === 1;\r\n\r\n return (\r\n \r\n {showRootData ?\r\n \r\n {this.props.resources.backButtonAriaLabel}\r\n \r\n {this.mobileRoot?.linkText &&\r\n {\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n // tslint:disable-next-line: jsx-no-lambda react-this-binding-issue\r\n event.preventDefault();\r\n const isExternal = isExternalLink(this.mobileRoot!.linkURL);\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl = this.mobileRoot!.linkURL! === '/' ? '/' : this.mobileRoot!.linkURL!;\r\n const internalLocalUrl = MsDyn365.isBrowser && (window.location.href === '/' ? '/' : window.location.href.split(location.host)[1].split('?')[0]);\r\n const eventAction = isExternal ? `to: ${this.mobileRoot!.linkURL!}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal ? `from: ${MsDyn365.isBrowser && window.location.href}` : `from header: ${this.state.activeMenuLabels?.join(' > ')}: ${internalLocalUrl}`;\r\n const isOpenInNewTab = this.mobileRoot?.openInNewTab;\r\n // @ts-ignore\r\n utag.link({ event: eventName, event_category: eventCategory, event_action: eventAction, event_label: eventLabel, event_noninteraction: 'false' });\r\n if (MsDyn365.isBrowser) {\r\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\r\n !isOpenInNewTab ? this.mobileRoot?.linkURL ? window.location.href = this.mobileRoot?.linkURL : null : window.open(this.mobileRoot?.linkURL!);\r\n }\r\n }\r\n }\r\n }\r\n >\r\n {this.mobileRoot.linkText}\r\n }\r\n {this.mobileRoot?.clpLinkText && this.mobileRoot.clpLink?.destinationUrl &&\r\n {\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n // tslint:disable-next-line: jsx-no-lambda react-this-binding-issue\r\n event.preventDefault();\r\n const clpMobileRootLink = navLinkKeywordRemoval(this.mobileRoot!.clpLink?.destinationUrl || '', this.props.context.request);\r\n const isExternal = isExternalLink(this.mobileRoot!.clpLink?.destinationUrl);\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl = clpMobileRootLink === '/' ? '/' : clpMobileRootLink;\r\n const internalLocalUrl = MsDyn365.isBrowser && (window.location.href === '/' ? '/' : window.location.href.split(location.host)[1].split('?')[0]);\r\n const eventAction = isExternal ? `to: ${clpMobileRootLink}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal ? `from: ${MsDyn365.isBrowser && window.location.href}` : `from header: ${this.state.activeMenuLabels?.join(' > ')}: ${internalLocalUrl}`;\r\n const isOpenInNewTab = this.mobileRoot?.openInNewTab;\r\n // @ts-ignore\r\n utag.link({ event: eventName, event_category: eventCategory, event_action: eventAction, event_label: eventLabel, event_noninteraction: 'false' });\r\n if (MsDyn365.isBrowser) {\r\n !isOpenInNewTab ? window.location.href = clpMobileRootLink : window.open(clpMobileRootLink);\r\n }\r\n }\r\n }\r\n }\r\n >\r\n {this.mobileRoot.clpLinkText}\r\n }\r\n \r\n :\r\n showSubMenuHeader &&\r\n \r\n {this.props.resources.backButtonAriaLabel}\r\n \r\n {this.parentMenu?.linkText &&\r\n {\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n event.preventDefault();\r\n const isExternal = isExternalLink(this.parentMenu?.linkURL);\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl = this.parentMenu!.linkURL! === '/' ? '/' : this.parentMenu!.linkURL!;\r\n const internalLocalUrl = MsDyn365.isBrowser && (window.location.href === '/' ? '/' : window.location.href.split(location.host)[1].split('?')[0]);\r\n const eventAction = isExternal ? `to: ${this.parentMenu!.linkURL!}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal ? `from: ${MsDyn365.isBrowser && window.location.href}` : `from header: ${this.state.activeMenuLabels?.join(' > ')}: ${internalLocalUrl}`;\r\n const isOpenInNewTab = this.mobileRoot?.openInNewTab;\r\n // @ts-ignore\r\n utag.link({ event: eventName, event_category: eventCategory, event_action: eventAction, event_label: eventLabel, event_noninteraction: 'false' });\r\n if (MsDyn365.isBrowser) {\r\n !isOpenInNewTab ? window.location.href = this.parentMenu!.linkURL! : window.open(this.parentMenu!.linkURL);\r\n }\r\n }\r\n }\r\n }\r\n >\r\n {this.parentMenu.linkText}\r\n }\r\n {this.parentMenu?.clpLinkText && this.parentMenu.clpLink?.destinationUrl &&\r\n {\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n event.preventDefault();\r\n const clpParentMenuLink = navLinkKeywordRemoval(this.parentMenu!.clpLink?.destinationUrl || '', this.props.context.request);\r\n const isExternal = isExternalLink(this.parentMenu?.clpLink?.destinationUrl);\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl = clpParentMenuLink === '/' ? '/' : clpParentMenuLink;\r\n const internalLocalUrl = MsDyn365.isBrowser && (window.location.href === '/' ? '/' : window.location.href.split(location.host)[1].split('?')[0]);\r\n const eventAction = isExternal ? `to: ${clpParentMenuLink}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal ? `from: ${MsDyn365.isBrowser && window.location.href}` : `from header: ${this.state.activeMenuLabels?.join(' > ')}: ${internalLocalUrl}`;\r\n const isOpenInNewTab = this.mobileRoot?.openInNewTab;\r\n // @ts-ignore\r\n utag.link({ event: eventName, event_category: eventCategory, event_action: eventAction, event_label: eventLabel, event_noninteraction: 'false' });\r\n if (MsDyn365.isBrowser) {\r\n !isOpenInNewTab ? window.location.href = clpParentMenuLink : window.open(clpParentMenuLink);\r\n }\r\n }\r\n }\r\n }\r\n >\r\n {this.parentMenu.clpLinkText}\r\n }\r\n \r\n }\r\n {menuOptions}\r\n {\r\n categoryImageDisplay && this.state.categoryImage && (\r\n \r\n {this.state.categoryImage && this._getCategoryImage(this.state.categoryImage)}\r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n\r\n private _updateCategoryImage = (categoryImageSrc: string) => () => {\r\n this.setState({\r\n categoryImage: categoryImageSrc !== '' ? categoryImageSrc : 'empty'\r\n });\r\n };\r\n\r\n private _handleOnClick = (data: IMenuItemData, parentId?: number) => () => {\r\n if (MsDyn365.isBrowser) {\r\n if (!parentId && data.linkURL) {\r\n window.location.href = data.linkURL;\r\n }\r\n }\r\n };\r\n\r\n private _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n // VSI Customization - start\r\n let updatedActiveMenu;\r\n let updatedActiveMenuLabels;\r\n if (this.state.activeMenu) {\r\n if (this.state.activeMenu[this.state.activeMenu.length - 1] !== data.id) {\r\n updatedActiveMenu = data.id && this.state.activeMenu.concat(data.id);\r\n updatedActiveMenuLabels = data.linkText && this.state.activeMenuLabels!.concat(data.linkText);\r\n } else {\r\n updatedActiveMenu = this.state.activeMenu;\r\n updatedActiveMenuLabels = this.state.activeMenuLabels;\r\n }\r\n } else {\r\n updatedActiveMenu = data.id && [data.id];\r\n updatedActiveMenuLabels = data.linkText && [data.linkText];\r\n }\r\n if (typeof (updatedActiveMenu) === 'number') { updatedActiveMenu = [updatedActiveMenu]; }\r\n if (typeof (updatedActiveMenuLabels) === 'string') { updatedActiveMenuLabels = [updatedActiveMenuLabels]; }\r\n\r\n // set root of mobile menu to display above submenu\r\n if (this.props.isMobileView && (!this.state.activeMenu || !this.state.activeMenu.length)) {\r\n this.mobileRoot = data;\r\n // toggle mobile links\r\n this._toggleMobileLinks(true);\r\n }\r\n\r\n // show modal\r\n const showModal = !!(updatedActiveMenu && updatedActiveMenu.length);\r\n\r\n updatedActiveMenu && this.setState({\r\n activeMenu: updatedActiveMenu,\r\n activeMenuLabels: updatedActiveMenuLabels,\r\n parentMenu: parentId,\r\n showModal: showModal\r\n });\r\n\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!)();\r\n }\r\n\r\n // VSI Customization - end\r\n this._resetFocus();\r\n };\r\n\r\n private _handleGoBack = () => () => {\r\n // VSI Customization - start\r\n const updatedActiveMenu = this.state.activeMenu;\r\n const updatedActiveMenuLabels = this.state.activeMenuLabels;\r\n const finalUpdate = updatedActiveMenu && updatedActiveMenu.length > 1 ? updatedActiveMenu.slice(0, updatedActiveMenu.length - 1) : undefined;\r\n const finalUpdateMenuLabels = updatedActiveMenuLabels && updatedActiveMenuLabels.length > 1 ? updatedActiveMenuLabels.slice(0, updatedActiveMenuLabels.length - 1) : undefined;\r\n\r\n // toggle mobile links\r\n !finalUpdate && this._toggleMobileLinks(false);\r\n\r\n // parent set to undefined when on the root menu so back button doesn't show up\r\n const newParentMenu = this.state.activeMenu && this.state.activeMenu.length === 2;\r\n newParentMenu ? this.setState({ activeMenu: finalUpdate, activeMenuLabels: finalUpdateMenuLabels, parentMenu: undefined }) : this.setState({ activeMenu: finalUpdate, activeMenuLabels: finalUpdateMenuLabels });\r\n\r\n // VSI Customization - end\r\n this._resetFocus();\r\n };\r\n\r\n private _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n MsDyn365.isBrowser && setTimeout(() => {\r\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\r\n }, 0);\r\n }\r\n };\r\n\r\n private _toggleMobileLinks = (result: boolean): void => {\r\n const navMenuState = this.props.data.navMenuState?.result;\r\n if (navMenuState) {\r\n // This will directly update our application state, which should trigger all modules observing the state to update\r\n this.props.context.actionContext.update(new NavMenuStateInput(), { ...navMenuState, isMenuHasParent: result });\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n // VSI Customization - start\r\n this.setState({ activeMenu: undefined, activeMenuLabels: undefined, mobileViewLabelText: '', parentMenu: undefined, showModal: false, categoryImage: null });\r\n // VSI Customization - end\r\n }\r\n\r\n private _getCategoryImage = (categoryImage: string): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(`${categoryImage}`, this.props.context.actionContext.requestContext.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n },\r\n lazyload: true\r\n };\r\n if (categoryImageUrl !== undefined) {\r\n const ImageData: IImageData = { src: categoryImageUrl };\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport default MfrmNavigationMenuView;","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['mfrm-navigation-menu'] = {\n c: () => require('partner/modules/mfrm-navigation-menu/mfrm-navigation-menu.tsx'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0},{name:'navMenuState', path:'data-actions/navigation-menu-state-data-action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'mfrm-navigation-menu',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mfrm-navigation-menu'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = 'data-actions/navigation-menu-state-data-action';\n let dataAction = require('partner/data-actions/navigation-menu-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\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-navigation-menu|mfrm-navigation-menu'] = {\n c: () => require('partner/modules/mfrm-navigation-menu/mfrm-navigation-menu.view.tsx'),\n cn: '__local__-__local__-mfrm-navigation-menu'\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":["context","MsDyn365","isBrowser","window","innerWidth","gridSettings","request","xs","w","sm","md","lg","isExternalLink","url","tmp","document","createElement","href","host","location","canonicalURL","requestContext","_urlParts","requestUrl","origin","path","pathname","toLowerCase","urlParts","split","splice","match","removePipeSignValue","removeKeywords","join","filteredURL","_urlParts2","undefined","length","filter","urlPart","indexOf","removeKeywordFromUrl","app","config","removeKeywordFromUrlArray","trim","forEach","_part","removeKeyword","trimmedKeyword","indexOfValue","getSortedVirtualRefinerConfig","isMattressesCategory","appConfigSorted","getVirtualRefinerConfig","appConfig","enableForMattresses","enableForOtherCategories","sort","a","b","order","getVirtualRefinerNames","sortedVirtualRefinerConfig","appConfigRefinerNames","sortedConfig","push","refinerName","urlModifications","async","getVirtualRefinerValues","virtualRefiners","virtualRefinerValues","categoryIdToken","urlTokens","recordId","finalizedUrlParts","plainUrlPart","decodeURIComponent","part","filteredPart","mainRefiner","Values","refinerValue","_refinerValue$LeftVal","refinerValueKeyName","LeftValueBoundString","replace","regExSpecialChars","canonicalUrlspecialCharIncludeList","navLinkKeywordRemoval","link","_linkParams$map","_urlParts4","linkBase","linkParams","endsWith","linkParam","map","param","includeConfigList","includeConfig","_includeConfigList$tr","RegExp","NavMenuStateInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","navMenuStateAction","input","ctx","isMenuHasParent","isMobileMenuCollapsed","selectedNavMenu","menuItemData","createObservableDataAction","id","action","inputData","navigationMenuSource","NavigationMenu","React","props","_requestContext$query","super","CMSItemIdInit","RSItemIdInit","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","this","cmsOnly","all","updateViewPort","viewport","_getViewPort","setState","isMobile","state","menuItemList","cookies","Cookies","expiryDateTracking","Date","setDate","getDate","set","expires","expiryDateUser","expiryDateInMonths","setMonth","getMonth","cjeventValue","query","cjevent","secure","httpOnly","sameSite","locale","nameTranslations","nameTranslation","find","item","Language","Text","componentDidMount","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","render","_mapData","isEmptyOrNullObject","data","telemetry","warning","defaultImageSettings","viewports","q","h","xl","lazyload","viewProps","_objectSpread","imageSettings","Navigation","moduleProps","className","classnames","tag","role","resources","menuAriaLabel","MenuList","ListItem","showCategoryImage","displayCategoryImage","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","renderView","mergedData","categories","result","index","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","imageSouce","Images","Uri","getFriendlyName","NameTranslations","Url","_getNestedChildren","linkUrl","destinationUrl","linkType","_cmsItem$linkUrl","type","imageDestinationURL","imageLink","image","src","menuItemColorMobile","menuItemColorDesktop","categoryBannerNames","mattressMatcherBannerID","clpLink","clpLinkText","openInNewTab","_getCMSNestedChildren","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","__decorate","observable","MfrmNavigationMenuView","activeIndex","currentSubMenu","possibleParentMenus","currentLevel","isWmap","_this$props$context$r","_this$props$context","pathName","makeaPaymentLink","wmapPageUrlSuffix","includes","_updateCategoryImage","categoryImageSrc","categoryImage","_handleOnClick","parentId","_handleDropdownToggle","updatedActiveMenu","updatedActiveMenuLabels","activeMenu","concat","activeMenuLabels","mobileRoot","_toggleMobileLinks","showModal","parentMenu","_resetFocus","_handleGoBack","finalUpdate","slice","finalUpdateMenuLabels","setTimeout","menuNode","current","focus","_this$props$data$navM","navMenuState","actionContext","update","_getCategoryImage","categoryImageUrl","generateImageUrl","apiSettings","ImageData","Image","Object","assign","categoryImageSettings","loadFailureBehavior","mobileViewLabelText","dataShared","_closeSubmenu","bind","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","componentDidUpdate","_this$props$data$navM2","collection","getElementsByTagName","i","_collection$i$getAttr","getAttribute","setAttribute","_this$props$data$navM3","linkList","Node","_displayMenuItemData","hasOwnProperty","emitCategories","JSON","stringify","style","display","Module","ref","tabIndex","_renderDisplay","key","onMouseLeave","_createMenuItemList","allMenuItemArray","currentMenu","subMenuIndex","nestedSubMenuIndex","nestedSubMenu","doublyNestedSubMenuIndex","doublyNestedSubMenu","_ref","_ref2","_renderButtonMenuItem","_renderSubMenu","_this$state$activeMen","_renderLinkMenuItem","_this$state$activeMen2","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuItems","isLastSubMenu","isLastParent","option","haveSubmenu","Math","round","menuItem","menu","toString","_renderMenu","isRoot","attributes","getTelemetryAttributes","attribute","onMouseOver","onFocus","menuItemColor","color","hoverEffect","imagesource","contentAction","etext","event","_handleOnClickMenuItem","onTelemetryClick","_this$state$activeMen3","preventDefault","isExternal","eventName","eventCategory","internalDestinationUrl","internalLocalUrl","eventAction","eventLabel","utag","event_category","event_action","event_label","event_noninteraction","open","level","menuOptions","currentItem","submenu","_this$mobileRoot","_this$mobileRoot2","_this$mobileRoot3","_this$mobileRoot4","_this$mobileRoot9","_this$mobileRoot$clpL","_this$mobileRoot10","_this$mobileRoot$clpL2","_this$parentMenu","_this$parentMenu2","_this$parentMenu4","_this$parentMenu$clpL","_this$parentMenu5","_this$parentMenu$clpL2","categoryImageDisplay","showSubMenuHeader","showRootData","CoreButton","_this$state$activeMen4","_this$mobileRoot5","isOpenInNewTab","_this$mobileRoot6","_this$mobileRoot7","_this$mobileRoot8","_this$mobileRoot$clpL3","_this$mobileRoot$clpL4","_this$state$activeMen5","_this$mobileRoot11","clpMobileRootLink","_this$parentMenu3","_this$state$activeMen6","_this$mobileRoot12","_this$parentMenu$clpL3","_this$parentMenu6","_this$state$activeMen7","_this$mobileRoot13","clpParentMenuLink","binding","modules","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","runOn","iNM","ns","n","p","pdp","__bindings__","viewDictionary","cn","call","fixRegExpWellKnownSymbolLogic","anObject","isNullOrUndefined","toLength","requireObjectCoercible","getMethod","advanceStringIndex","regExpExec","MATCH","nativeMatch","maybeCallNative","regexp","O","matcher","string","rx","S","res","done","value","global","fullUnicode","unicode","lastIndex","A","matchStr","apply","uncurryThis","isRegExp","speciesConstructor","arraySlice","callRegExpExec","regexpExec","stickyHelpers","fails","UNSUPPORTED_Y","MAX_UINT32","min","$push","exec","stringSlice","SPLIT","nativeSplit","internalSplit","separator","limit","lim","lastLength","output","flags","ignoreCase","multiline","sticky","lastLastIndex","separatorCopy","source","splitter","C","unicodeMatching","e","z","re","originalExec","module","exports","ReactDOM"],"sourceRoot":""}