{"version":3,"file":"static/js/f716ec03cdf38bc7c8ad.bundle.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/herbal-content-navigation-menu/herbal-content-navigation-menu.data.ts?3f3f","webpack://Msdyn365.Commerce.Online/./src/modules/herbal-content-navigation-menu/herbal-content-navigation-menu.props.autogenerated.ts?0172","webpack://Msdyn365.Commerce.Online/./src/modules/herbal-content-navigation-menu/herbal-content-navigation-menu.tsx?e94c","webpack://Msdyn365.Commerce.Online/./src/modules/herbal-content-navigation-menu/herbal-content-navigation-menu.view.tsx?28b5","webpack://Msdyn365.Commerce.Online/./lib/herbal-content-navigation-menu/module-registration.js?f2db","webpack://Msdyn365.Commerce.Online/external var \"React\"?0d3b","webpack://Msdyn365.Commerce.Online/external var \"ReactDOM\"?853b"],"sourcesContent":["/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { ICategoryPromotionalContentData } from './herbal-content-navigation-menu.props.autogenerated';\r\nimport { AsyncResult, Customer } from '@msdyn365-commerce/retail-proxy';\r\n\r\nexport interface IHerbalContentNavigationMenuData {\r\n accountInformation: AsyncResult;\r\n}\r\n\r\nexport interface IMenuItemData {\r\n id?: number;\r\n linkText?: string;\r\n linkURL?: string;\r\n imageSource?: string;\r\n imageDestinationURL?: string;\r\n subMenu?: IMenuItemData[];\r\n promotionalContent?: ICategoryPromotionalContentData[];\r\n menuSource?: string;\r\n shouldOpenNewTab?: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * Menu type index id.\r\n */\r\nexport enum MenuTypeIndexId {\r\n Cms = 1000,\r\n Retail = 5000\r\n}\r\n\r\n/**\r\n *\r\n * Menu type source.\r\n */\r\nexport enum MenuSource {\r\n Cms = 'Cms',\r\n Retail = 'Retail'\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 * IHerbalContentNavigationMenu 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 all = 'all',\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly'\r\n}\r\n\r\nexport const enum enableMenuFollowUser {\r\n all = 'all',\r\n isLogin = 'isLogin',\r\n isNotLogin = 'isNotLogin'\r\n}\r\n\r\nexport interface IHerbalContentNavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsLeftNavItems?: ICmsLeftNavItemsData[];\r\n logoImage?: Msdyn365.IImageData;\r\n cmsRightNavItems?: ICmsRightNavItemsData[];\r\n enableMenuFollowUser?: enableMenuFollowUser;\r\n labelLoginButton?: string;\r\n enableMultilevelMenu?: boolean;\r\n enabletopMenu?: boolean;\r\n menuLevelSupport?: number;\r\n rootMenuNavigation?: string;\r\n displayCategoryImage?: boolean;\r\n displayPromotionalImage?: boolean;\r\n categoryPromotionalContent?: ICategoryPromotionalContentData[];\r\n categoryImageSettings?: Msdyn365.IImageSettings;\r\n logoLinkText?: string;\r\n className?: string;\r\n displayButtonOpenToggle?: boolean;\r\n}\r\n\r\nexport interface IHerbalContentNavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsLeftNavItemsData {\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 openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ICmsRightNavItemsData {\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 openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ICategoryPromotionalContentData {\r\n categoryName?: string;\r\n image: Msdyn365.IImageData;\r\n text?: string;\r\n linkUrl: Msdyn365.ILinkData;\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 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 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}\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}\r\n\r\nexport interface IHerbalContentNavigationMenuProps extends Msdyn365.IModule {\r\n resources: IHerbalContentNavigationMenuResources;\r\n config: IHerbalContentNavigationMenuConfig;\r\n}\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { Customer, TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n IModuleProps,\r\n INodeProps,\r\n ITelemetryContent,\r\n onTelemetryClick,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\n\r\nimport { IMenuItemData, IHerbalContentNavigationMenuData, MenuSource, MenuTypeIndexId } from './herbal-content-navigation-menu.data';\r\nimport { IHerbalContentNavigationMenuConfig } from './herbal-content-navigation-menu.props.autogenerated';\r\n\r\nimport {\r\n ICmsLeftNavItemsData,\r\n IHerbalContentNavigationMenuProps,\r\n ISubMenusData,\r\n navigationMenuSource\r\n} from './herbal-content-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends IHerbalContentNavigationMenuProps {\r\n className: string;\r\n logoImage?: React.ReactNode;\r\n logoImageContainer: INodeProps;\r\n leftMenuItemData: IMenuItemData[];\r\n rightMenuItemData: 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 showPromotionalContent?: boolean;\r\n signInLink?: React.ReactNode;\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 * Site-builder configuration for the module.\r\n */\r\nexport interface IHerbalContentNavigationMenuFullConfig extends IHerbalContentNavigationMenuConfig {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\r\n msdyn365__moduleLayout?: string;\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<\r\n IHerbalContentNavigationMenuProps,\r\n INavigationMenuState\r\n> {\r\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\r\n\r\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\r\n\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n\r\n private leftMenuItemList: IMenuItemData[];\r\n private rightMenuItemList: IMenuItemData[];\r\n\r\n // @ts-ignore\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private isCMS: boolean = true;\r\n private originURL: string = '';\r\n\r\n @observable\r\n private viewport: GridSize;\r\n\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: IHerbalContentNavigationMenuProps) {\r\n super(props);\r\n this._updateViewport = this._updateViewport.bind(this);\r\n this.viewport =\r\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n this.state = { isMobile: this.isMobile };\r\n this.leftMenuItemList = [];\r\n this.rightMenuItemList = [];\r\n }\r\n\r\n @computed get isMobile(): boolean {\r\n return this.viewport === 'xs' || this.viewport === 'sm';\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n }\r\n this._updateViewport();\r\n this.originURL =\r\n this.props.context.actionContext.requestContext.app.config.ecomBaseUrl &&\r\n this.props.context.actionContext.requestContext.app.config.ecomBaseUrl;\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n config,\r\n context: {\r\n request: { user }\r\n }\r\n } = this.props;\r\n const { logoImage, enableMenuFollowUser } = this.props.config;\r\n\r\n if (!(this.isCMS && config.cmsLeftNavItems && config.cmsLeftNavItems.length > 0)) {\r\n return null;\r\n }\r\n if (!(this.isCMS && config.cmsRightNavItems && config.cmsRightNavItems.length > 0)) {\r\n return null;\r\n }\r\n\r\n const customer = this.props.data.accountInformation?.result;\r\n if (enableMenuFollowUser !== 'all') {\r\n if (enableMenuFollowUser === 'isNotLogin' && customer) {\r\n return null;\r\n } else if (enableMenuFollowUser === 'isLogin' && !customer) {\r\n return null;\r\n }\r\n }\r\n\r\n this.leftMenuItemList = this._mapData(config.cmsLeftNavItems);\r\n this.rightMenuItemList = this._mapData(config.cmsRightNavItems);\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 logoImageProps = {\r\n gridSettings: this.props.context.request.gridSettings ?? {},\r\n imageSettings: logoImage?.imageSettings\r\n };\r\n\r\n const contentBlockImage = (\r\n \r\n {/*\r\n // @ts-ignore */}\r\n \r\n \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: this.isMobile ? 'listbox' : '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 showPromotionalContent: this.props.config.displayPromotionalImage || false,\r\n Link: {\r\n tag: 'a',\r\n className: 'ms-nav__list__item__link',\r\n role: this.isMobile ? 'option' : 'menuitem'\r\n },\r\n DivContainer: {\r\n tag: 'div',\r\n className: 'ms-nav__feature'\r\n },\r\n ImageDivContainer: {\r\n tag: 'div',\r\n className: 'category-image',\r\n role: 'tabpanel'\r\n },\r\n Button: {\r\n className: 'ms-nav__list__item__button',\r\n tag: 'button',\r\n role: this.isMobile ? 'option' : '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 leftMenuItemData: this.leftMenuItemList,\r\n rightMenuItemData: this.rightMenuItemList,\r\n logoImage: contentBlockImage,\r\n signInLink: this._getSigninButton(customer, user),\r\n logoImageContainer: { className: 'ms-site-logo' },\r\n className: classnames('ms-nav', this.props.config.className)\r\n };\r\n\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n\r\n private _mapData(navItems: IMenuItemData[]): IMenuItemData[] {\r\n const mergedData: IMenuItemData[] = [];\r\n if (this.isCMS && navItems && navItems.length > 0) {\r\n navItems.map((item: ICmsLeftNavItemsData, 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 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 private _constructMenuItemData(\r\n retailItem?: CategoryHierarchy,\r\n cmsItem?: ICmsLeftNavItemsData,\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 { categoryPromotionalContent } = this.props.config;\r\n\r\n // Filter category promotional data based on category name\r\n const promotionalData =\r\n retailItem &&\r\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\r\n\r\n // First check if image is available from promotional data else read from retail server\r\n let imageSource: string = 'empty';\r\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\r\n imageSource = retailItem!.Images[0].Uri;\r\n }\r\n if (isRetail) {\r\n return {\r\n id: NavigationMenu.RSItemIdInit++,\r\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) || '',\r\n linkURL: retailItem?.Url,\r\n imageSource,\r\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\r\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\r\n menuSource: MenuSource.Retail\r\n } as IMenuItemData;\r\n }\r\n return {\r\n id: NavigationMenu.CMSItemIdInit++,\r\n linkText: (cmsItem && cmsItem.linkText) || '',\r\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n subMenu: this._getCMSNestedChildren(cmsItem),\r\n menuSource: MenuSource.Cms,\r\n shouldOpenNewTab: cmsItem?.openInNewTab\r\n } as IMenuItemData;\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 === 0) {\r\n return [];\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?: ICmsLeftNavItemsData): IMenuItemData[] {\r\n const nestedChildren: IMenuItemData[] = [];\r\n\r\n if (!category || !category.subMenus || category.subMenus.length === 0) {\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 readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n switch (sourceType) {\r\n case navigationMenuSource.retailServerOnly:\r\n this.isCMS = false;\r\n break;\r\n case navigationMenuSource.cmsOnly:\r\n this.isCMS = true;\r\n break;\r\n case navigationMenuSource.all:\r\n this.isCMS = true;\r\n break;\r\n default:\r\n }\r\n };\r\n\r\n private _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile });\r\n }\r\n\r\n private _getViewport(): GridSize {\r\n const { context } = this.props;\r\n\r\n // Always render in mobile viewport on a mobile device\r\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n return 'xs';\r\n }\r\n\r\n if (MsDyn365.isBrowser && window.innerWidth && window.screen) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n const width = Math.min(window.screen.width, window.innerWidth);\r\n if (gridSettings.xs && width <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && width <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && width <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && width <= gridSettings.lg.w) {\r\n return 'lg';\r\n }\r\n return 'xl';\r\n }\r\n }\r\n\r\n return 'xs';\r\n }\r\n\r\n // @ts-ignore\r\n private _getSigninButton(customer: Customer | undefined, user: MsDyn365.IRequestContextUser | undefined): React.ReactNode | undefined {\r\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\r\n const { labelLoginButton } = this.props.config;\r\n const loginCallback = Msdyn365.getUrlSync('logincallback', this.props.context.actionContext);\r\n const signInUrl =\r\n user &&\r\n (loginCallback && loginCallback !== '/logincallback'\r\n ? `${user.signInUrl}?ru=${this.originURL}${loginCallback}`\r\n : user.signInUrl);\r\n return (\r\n !customer && (\r\n \r\n \r\n {labelLoginButton}\r\n \r\n \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 * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\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 classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { INavigationMenuViewProps } from './herbal-content-navigation-menu';\r\nimport { IMenuItemData } from './herbal-content-navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n parentMenu?: number;\r\n activeMenu?: number;\r\n categoryImage?: IImageData[] | null;\r\n mobileViewLabelText?: string;\r\n categoryImageAltText: string;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n private static isBackTrack: boolean = false;\r\n\r\n private currentLevel: number = 0;\r\n\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly telemetryContent: ITelemetryContent;\r\n\r\n private readonly payLoad: IPayLoad;\r\n\r\n constructor(props: INavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n this.telemetryContent = getTelemetryObject(\r\n this.props.context.request.telemetryPageName!,\r\n this.props.friendlyName,\r\n this.props.telemetry\r\n );\r\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.addEventListener('scroll', this._handleScroll);\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n window.removeEventListener('scroll', this._handleScroll, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const {\r\n isMobileView,\r\n MenuList,\r\n MobileBackButton,\r\n MobileDescriptionContainer,\r\n MobileDescriptionLabel,\r\n Navigation,\r\n logoImage,\r\n logoImageContainer,\r\n Button\r\n } = this.props;\r\n const { leftMenuItemData, rightMenuItemData } = this.props;\r\n const { displayButtonOpenToggle } = this.props.config;\r\n this.currentLevel = 1;\r\n return (\r\n \r\n {displayButtonOpenToggle && (\r\n \r\n {'X'}\r\n \r\n )}\r\n \r\n {isMobileView && this.state.activeMenu !== undefined && (\r\n \r\n \r\n {this.state.mobileViewLabelText}\r\n \r\n )}\r\n
  • \r\n
      {this._renderDisplay(leftMenuItemData)}
    \r\n
  • \r\n
  • \r\n {logoImage}\r\n
  • \r\n
  • \r\n
      {this._renderDisplay(rightMenuItemData)}
    \r\n
  • \r\n
    \r\n \r\n );\r\n }\r\n\r\n private _renderDisplay(menuItemData: IMenuItemData[]): JSX.Element[] {\r\n const { ListItem, isMobileView } = this.props;\r\n const { activeMenu } = this.state;\r\n const menuItemList: JSX.Element[] = [];\r\n\r\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n let menuItem: IMenuItemData = {};\r\n for (const menuItemDatum of menuItemData) {\r\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n menuItem = menuItemDatum;\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: undefined })\r\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\r\n break;\r\n }\r\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n if (menuItem && menuItem.id === activeMenu) {\r\n break;\r\n }\r\n }\r\n\r\n menuItem &&\r\n menuItemList.push(\r\n \r\n {' '}\r\n {this._createMenuItemList(menuItem)}{' '}\r\n \r\n );\r\n } else {\r\n menuItemData.forEach((item: IMenuItemData, index: number) => {\r\n menuItemList.push(\r\n \r\n {this._createMenuItemList(item)}\r\n \r\n );\r\n });\r\n }\r\n\r\n return menuItemList;\r\n }\r\n\r\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n const subMenus = item && item.subMenu;\r\n if (subMenus && subMenus.length > 0) {\r\n for (let i = 0; i <= subMenus.length - 1; i++) {\r\n if (subMenus[i].id === this.state.activeMenu) {\r\n !NavigationMenuView.isBackTrack\r\n ? this.setState({ parentMenu: item?.id })\r\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n return subMenus[i];\r\n }\r\n const found = this._getFromSubMenu(subMenus[i]);\r\n if (found) {\r\n return found;\r\n }\r\n }\r\n }\r\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _createMenuItemList(leftMenuItemData: IMenuItemData): JSX.Element | null {\r\n if (leftMenuItemData && leftMenuItemData.subMenu && leftMenuItemData.subMenu.length > 0) {\r\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n return this._renderSubMenu(leftMenuItemData.subMenu, leftMenuItemData.id, false);\r\n }\r\n return (\r\n <>\r\n {this._renderButtonMenuItem(leftMenuItemData)}\r\n {this._renderSubMenu(leftMenuItemData.subMenu, leftMenuItemData.id, false)}\r\n \r\n );\r\n } else if (leftMenuItemData && leftMenuItemData.linkText && leftMenuItemData.linkURL && leftMenuItemData.linkURL.length > 0) {\r\n return this._renderLinkMenuItem(leftMenuItemData, leftMenuItemData.id, false, true);\r\n } else if (leftMenuItemData && leftMenuItemData.linkText && !leftMenuItemData.linkURL) {\r\n return this._renderSpanMenuItem(leftMenuItemData, leftMenuItemData.id, true);\r\n }\r\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n const { isMobileView, ListItem } = this.props;\r\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\r\n\r\n // Const isParentMenu:boolean= false;\r\n if (activeMenu && this.state.activeMenu !== activeMenu) {\r\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n if (!subMenus || subMenus.length === 0) {\r\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n return null;\r\n }\r\n\r\n let levelClassName: string = '';\r\n const menuOptions =\r\n subMenus &&\r\n subMenus.map((option: IMenuItemData, idx: number) => {\r\n const hasOptions = option.subMenu && option.subMenu.length > 0;\r\n let menuItem: JSX.Element | null;\r\n if (hasOptions && isMobileView) {\r\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n } else {\r\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n }\r\n\r\n let subMenu;\r\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n if (haveSubmenu) {\r\n this.currentLevel++;\r\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n }\r\n return (\r\n \r\n {menuItem}\r\n {subMenu}\r\n \r\n );\r\n });\r\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n }\r\n\r\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n const { Button } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n
    \r\n );\r\n }\r\n\r\n private _renderLinkMenuItem(\r\n option: IMenuItemData,\r\n index?: number,\r\n hoverEffect: boolean = true,\r\n isParent: boolean = false\r\n ): JSX.Element | null {\r\n // @ts-ignore\r\n const { Link } = this.props;\r\n const { labelLoginButton } = this.props.config;\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 if (option.linkText === labelLoginButton) {\r\n // @ts-ignore\r\n return {this.props.signInLink};\r\n } else {\r\n return (\r\n {\r\n !isParent && this._closeSubmenu(e, true);\r\n }}\r\n >\r\n {option.linkText}\r\n \r\n );\r\n }\r\n }\r\n\r\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n const { Link } = this.props;\r\n this.payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n if (linkText && linkUrl) {\r\n return (\r\n \r\n {linkText}\r\n \r\n );\r\n }\r\n return null;\r\n }\r\n\r\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n const { Span } = this.props;\r\n return (\r\n \r\n {option.linkText}\r\n \r\n );\r\n }\r\n\r\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\r\n const categoryImageDisplay =\r\n !isMobileView &&\r\n (showCategoryImage || showPromotionalContent) &&\r\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\r\n !submenu;\r\n const promotionalContentDisplay =\r\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\r\n this.currentLevel = 1;\r\n return (\r\n \r\n 2 &&\r\n 'navmenu-multi-level'\r\n )}\r\n >\r\n {menuOptions}\r\n \r\n Close\r\n \r\n \r\n {categoryImageDisplay &&\r\n this.state.categoryImage &&\r\n this.state.categoryImage.map((item, index) => (\r\n \r\n {this.state.categoryImage && this._getCategoryImage(item)}\r\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n const linkText = option && option.linkText ? option.linkText : '';\r\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n // Read category and promotional image in one array\r\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n option.promotionalContent.map(item => {\r\n if (item && item.image) {\r\n const imageSrc = item.image.src;\r\n const promotionalItemImageSettings = item.image.imageSettings;\r\n promotionalImage.push({\r\n src: imageSrc,\r\n altText: item.text,\r\n imageSettings: promotionalItemImageSettings,\r\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\r\n });\r\n }\r\n });\r\n }\r\n this.setState({\r\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n categoryImageAltText: linkText\r\n });\r\n };\r\n\r\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n const overbody = [document.getElementsByTagName('body')];\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n parentMenu: parentId\r\n });\r\n if (this.props.showCategoryImage) {\r\n this._updateCategoryImage(data.imageSource!, data)();\r\n }\r\n } else {\r\n NavigationMenuView.isBackTrack = false;\r\n this.setState({\r\n activeMenu: data.id,\r\n mobileViewLabelText: data.linkText!,\r\n parentMenu: parentId\r\n });\r\n }\r\n if (!this.state.activeMenu) {\r\n for (const ob of overbody) {\r\n ob[0].classList.add('overBody');\r\n }\r\n }\r\n for (const ob of overbody) {\r\n const hasFixed = ob[0].classList.contains('fixed');\r\n // const hasOver = ob[0].classList.contains('overBody');\r\n if (!this.state.activeMenu) {\r\n ob[0].classList.add('overBody');\r\n if (hasFixed) {\r\n ob[0].classList.add('changeColorHeader');\r\n } else {\r\n ob[0].classList.remove('changeColorHeader');\r\n }\r\n } else {\r\n ob[0].classList.remove('overBody');\r\n ob[0].classList.remove('changeColorHeader');\r\n }\r\n }\r\n this._resetFocus();\r\n };\r\n\r\n private readonly _handleGoBack = () => () => {\r\n NavigationMenuView.isBackTrack = true;\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n\r\n this._resetFocus();\r\n };\r\n\r\n private readonly _resetFocus = () => {\r\n if (this.props.isMobileView) {\r\n setTimeout(() => {\r\n if (this.menuNode && this.menuNode.current) {\r\n this.menuNode.current.focus();\r\n }\r\n }, 0);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle scrolling.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleScroll = (event: Event) => {\r\n const elements = [\r\n document.getElementsByTagName('header'),\r\n document.getElementsByTagName('body'),\r\n document.getElementsByClassName('fixed-left'),\r\n document.getElementsByClassName('fixed-right')\r\n ];\r\n for (const el of elements) {\r\n this._handleFixedCss(el);\r\n }\r\n\r\n const hideElements = [document.getElementsByClassName('ms-intro-page')];\r\n for (const el of hideElements) {\r\n this._handleHideCss(el);\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle adding fixed selector class.\r\n * @param el -any.\r\n */\r\n private readonly _handleFixedCss = (el: any) => {\r\n if (el.length) {\r\n if (window.pageYOffset > window.innerHeight) {\r\n el[0].classList.add('fixed');\r\n } else {\r\n el[0].classList.remove('fixed');\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle adding fixed selector class.\r\n * @param el -any.\r\n */\r\n private readonly _handleHideCss = (el: any) => {\r\n if (el.length) {\r\n if (window.pageYOffset > window.innerHeight) {\r\n el[0].classList.add('d-none');\r\n el[0].classList.remove('ms-intro-page');\r\n }\r\n }\r\n };\r\n\r\n private readonly _handleButtonOpenToggle = () => () => {\r\n const overheader = [document.getElementsByTagName('header')];\r\n for (const ob of overheader) {\r\n let headerIndex = 0;\r\n let menuIndex = 1;\r\n if (ob[0].children.length > 2) {\r\n headerIndex = 1;\r\n menuIndex = 2;\r\n }\r\n const hasFixed = ob[0].children[menuIndex].classList.contains('open');\r\n if (!hasFixed) {\r\n ob[0].children[headerIndex].classList.add('open');\r\n ob[0].children[menuIndex].classList.add('open');\r\n } else {\r\n ob[0].children[headerIndex].classList.remove('open');\r\n ob[0].children[menuIndex].classList.remove('open');\r\n const overbody = document.getElementsByTagName('body');\r\n overbody[0].classList.remove('overBody');\r\n overbody[0].classList.remove('changeColorHeader');\r\n }\r\n }\r\n };\r\n\r\n private _closeSubmenu(event: any, isFinalMenu?: boolean): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\r\n }\r\n const overbody = [document.getElementsByTagName('body')];\r\n for (const ob of overbody) {\r\n ob[0].classList.remove('overBody');\r\n ob[0].classList.remove('changeColorHeader');\r\n }\r\n if (isFinalMenu) {\r\n const overheader = [document.getElementsByTagName('header')];\r\n for (const ob of overheader) {\r\n const hasFixed = ob[0].children[0].classList.contains('open');\r\n if (!hasFixed) {\r\n ob[0].children[0].classList.add('open');\r\n ob[0].children[1].classList.add('open');\r\n } else {\r\n ob[0].children[0].classList.remove('open');\r\n ob[0].children[1].classList.remove('open');\r\n }\r\n }\r\n }\r\n }\r\n\r\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n if (!categoryImage || !categoryImage.src) {\r\n return null;\r\n }\r\n\r\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, 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 return (\r\n // @ts-ignore\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport default NavigationMenuView;\r\n","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['herbal-content-navigation-menu'] = {\n c: () => require('partner/modules/herbal-content-navigation-menu/herbal-content-navigation-menu.tsx'),\n $type: 'contentModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'herbal-content-navigation-menu',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/herbal-content-navigation-menu'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\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|herbal-content-navigation-menu|herbal-content-navigation-menu'] = {\n c: () => require('partner/modules/herbal-content-navigation-menu/herbal-content-navigation-menu.view.tsx'),\n cn: '__local__-__local__-herbal-content-navigation-menu'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["MenuTypeIndexId","MenuSource","navigationMenuSource","enableMenuFollowUser","NavigationMenu","React","constructor","props","super","isCMS","originURL","_setNavigationSource","sourceType","retailServerOnly","this","cmsOnly","all","_updateViewport","bind","viewport","context","request","device","Type","config","state","isMobile","leftMenuItemList","rightMenuItemList","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","MsDyn365","isBrowser","resizeThrottledEventHandler","addThrottledEvent","window","actionContext","requestContext","app","ecomBaseUrl","componentWillUnmount","removeEventListener","render","_this$props$data$acco","_this$props$context$r","_this$props$config$lo","user","logoImage","cmsLeftNavItems","cmsRightNavItems","customer","data","accountInformation","result","_mapData","logoImageProps","gridSettings","imageSettings","contentBlockImage","href","logoLinkText","className","Msdyn365","Object","assign","editProps","key","moduleType","typeName","imagePropertyName","moduleId","id","layout","msdyn365__moduleLayout","shouldSkipToMainImage","viewProps","_objectSpread","viewports","xs","q","w","h","xl","lazyload","Navigation","moduleProps","classnames","tag","role","resources","menuAriaLabel","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","leftMenuItemData","rightMenuItemData","signInLink","_getSigninButton","logoImageContainer","renderView","navItems","mergedData","map","idx","push","_constructMenuItemData","undefined","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","isRetail","addedAllMenu","categoryPromotionalContent","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","ArrayExtensions","hasElements","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","Retail","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","image","src","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","index","subMenus","_getViewport","setState","innerWidth","screen","width","Math","min","sm","md","lg","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","SignIn","attributes","getTelemetryAttributes","labelLoginButton","loginCallback","signInUrl","title","onTelemetryClick","__decorate","observable","computed","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","altText","imageSrc","promotionalItemImageSettings","text","additionalProperties","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","overbody","document","getElementsByTagName","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","ob","classList","add","hasFixed","contains","remove","_resetFocus","_handleGoBack","setTimeout","menuNode","current","focus","_handleScroll","event","elements","getElementsByClassName","el","_handleFixedCss","hideElements","_handleHideCss","pageYOffset","innerHeight","_handleButtonOpenToggle","overheader","headerIndex","menuIndex","children","_getCategoryImage","defaultImageSettings","_ref","_categoryImage$imageS","generateImageUrl","apiSettings","Image","categoryImageSettings","loadFailureBehavior","_closeSubmenu","getTelemetryObject","telemetryPageName","friendlyName","telemetry","addEventListener","displayButtonOpenToggle","Module","Node","ref","tabIndex","_renderDisplay","menuItemData","menuItemList","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","forEach","i","found","error","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","round","toString","_renderMenu","onFocus","hoverEffect","isParent","imagesource","contentAction","etext","target","onMouseOver","e","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","isFinalMenu","binding","modules","dataActions","c","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}