{"version":3,"file":"static/js/b58f2495e0e61d1a47ce.bundle.js","mappings":"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","sources":["webpack://henrys-ecommerce/./src/modules/subcategory-navigation/subcategory-navigation.tsx?aeef","webpack://henrys-ecommerce/./src/modules/subcategory-navigation/subcategory-navigation.view.tsx?fc5e","webpack://henrys-ecommerce/./lib/subcategory-navigation/module-registration.js?d90a","webpack://henrys-ecommerce/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://henrys-ecommerce/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://henrys-ecommerce/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://henrys-ecommerce/external var \"React\"?0d3b","webpack://henrys-ecommerce/external var \"ReactDOM\"?853b"],"sourcesContent":["import { ISubcategoryNavigationData } from './subcategory-navigation.data';\r\nimport { ISubcategoryNavigationProps } from './subcategory-navigation.props.autogenerated';\r\n\r\nexport type ISubcategoryNavigationViewProps = ISubcategoryNavigationProps;\r\n\r\nconst SubcategoryNavigation = (props: ISubcategoryNavigationProps) => {\r\n return props.renderView(props);\r\n};\r\n\r\nexport default SubcategoryNavigation;\r\n","import * as React from 'react';\r\nimport { ISubcategoryNavigationViewProps } from './subcategory-navigation';\r\nimport classnames from 'classnames';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { NavigationMenu } from '@msdyn365-commerce-modules/navigation-menu';\r\nimport { IImageData, IImageSettings, IRequestContext, Image } from '@msdyn365-commerce/core';\r\n\r\nexport default (props: ISubcategoryNavigationViewProps) => {\r\n const {\r\n data: { category },\r\n config: { className, imageSettings },\r\n context: {\r\n actionContext: { requestContext }\r\n }\r\n } = props;\r\n\r\n const categoryResult = category.result;\r\n if (!categoryResult || !categoryResult.Children || categoryResult.Children.length < 1) {\r\n return null;\r\n }\r\n\r\n const children = categoryResult.Children;\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst renderSubcategoryItem = (requestContext: IRequestContext, subcategory: CategoryHierarchy, imageSettings?: IImageSettings) => {\r\n let imageSource: string = 'empty';\r\n if (ArrayExtensions.hasElements(subcategory.Images) && subcategory.Images[0].Uri) {\r\n imageSource = subcategory.Images[0].Uri;\r\n }\r\n\r\n const linkText = NavigationMenu.getFriendlyName(requestContext.locale, subcategory.NameTranslations) || '';\r\n return (\r\n
  • \r\n \r\n {getCategoryImage(requestContext, imageSource, linkText, imageSettings)}\r\n {linkText}\r\n \r\n
  • \r\n );\r\n};\r\n\r\nconst defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=200&h=200&m=8', w: 0, h: 0 },\r\n sm: { q: 'w=200&h=200&m=8', w: 0, h: 0 },\r\n md: { q: 'w=200&h=200&m=8', w: 0, h: 0 },\r\n lg: { q: 'w=200&h=200&m=8', w: 0, h: 0 },\r\n xl: { q: 'w=200&h=200&m=8', w: 0, h: 0 }\r\n },\r\n quality: 80,\r\n lazyload: false\r\n};\r\n\r\nconst getCategoryImage = (\r\n requestContext: IRequestContext,\r\n categoryImage: string,\r\n altText: string,\r\n imageSettings?: IImageSettings\r\n): React.ReactNode | null => {\r\n const categoryImageUrl = generateImageUrl(categoryImage, requestContext.apiSettings);\r\n if (categoryImageUrl !== undefined) {\r\n const imageSettingsValue = {\r\n ...defaultImageSettings,\r\n imageSettings\r\n };\r\n\r\n const imageData: IImageData = {\r\n imageSettings: imageSettingsValue,\r\n src: categoryImageUrl,\r\n altText\r\n };\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\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['subcategory-navigation'] = {\n c: () => require('partner/modules/subcategory-navigation/subcategory-navigation.tsx'),\n $type: 'contentModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'subcategory-navigation',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subcategory-navigation'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\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|subcategory-navigation|subcategory-navigation'] = {\n c: () => require('partner/modules/subcategory-navigation/subcategory-navigation.view.tsx'),\n cn: '__local__-__local__-subcategory-navigation'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuData {\n categories: AsyncResult;\n}\n\nexport interface IMenuItemData {\n id?: number;\n linkText?: string;\n linkURL?: string;\n imageSource?: string;\n imageDestinationURL?: string;\n subMenu?: IMenuItemData[];\n promotionalContent?: ICategoryPromotionalContentData[];\n menuSource?: string;\n shouldOpenNewTab?: boolean;\n ariaLabel?: string;\n}\n\n/**\n *\n * Menu type index id.\n */\nexport enum MenuTypeIndexId {\n Cms = 1000,\n Retail = 5000\n}\n\n/**\n *\n * Menu type source.\n */\nexport enum MenuSource {\n Cms = 'Cms',\n Retail = 'Retail'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport * as React from 'react';\n\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\n\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\n className: string;\n menuItemData: IMenuItemData[];\n Navigation: IModuleProps;\n MenuList: INodeProps;\n ListItem: INodeProps;\n Link: INodeProps;\n Button: INodeProps;\n Span: INodeProps;\n ImageContainer: INodeProps;\n MobileDescriptionContainer: INodeProps;\n MobileBackButton: INodeProps;\n MobileDescriptionLabel: INodeProps;\n imageSettings: IImageSettings;\n gridSettings: IGridSettings;\n isMobileView: boolean;\n DivContainer?: INodeProps;\n ImageDivContainer?: INodeProps;\n showCategoryImage?: boolean;\n showPromotionalContent?: boolean;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface INavigationMenuState {\n isMobile: boolean;\n}\n\n/**\n *\n * NavigationMenu component.\n * @extends {React.PureComponent>}\n */\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\n private static CMSItemIdInit: number = MenuTypeIndexId.Cms;\n\n private static RSItemIdInit: number = MenuTypeIndexId.Retail;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n private menuItemList: IMenuItemData[];\n\n private isRetail: boolean = true;\n\n private isCMS: boolean = true;\n\n @observable\n private viewport: GridSize;\n\n public static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n }\n\n constructor(props: INavigationMenuProps) {\n super(props);\n this._updateViewport = this._updateViewport.bind(this);\n this.viewport =\n props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\n this._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\n this.state = { isMobile: this.isMobile };\n this.menuItemList = [];\n }\n\n @computed get isMobile(): boolean {\n return this.viewport === 'xs' || this.viewport === 'sm';\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n this.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n }\n this._updateViewport();\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n this.menuItemList = this._mapData();\n if (isEmptyOrNullObject(this.props.data)) {\n this.props.telemetry.error('Navigatiomenu returned null');\n return null;\n }\n\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\n xl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n const viewProps = {\n ...this.props,\n ...this.state,\n imageSettings: defaultImageSettings,\n gridSettings: this.props.context.request.gridSettings,\n Navigation: {\n moduleProps: this.props,\n className: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\n tag: 'nav',\n role: this.isMobile ? 'listbox' : 'navigation'\n },\n MenuList: {\n className: 'ms-nav__list',\n tag: 'ul',\n role: this.isMobile ? 'listbox' : 'menu'\n },\n ListItem: {\n className: 'ms-nav__list__item',\n role: 'presentation',\n tag: 'li'\n },\n showCategoryImage: this.props.config.displayCategoryImage ?? false,\n showPromotionalContent: this.props.config.displayPromotionalImage ?? false,\n Link: {\n tag: 'a',\n className: 'ms-nav__list__item__link',\n role: this.isMobile ? 'option' : 'menuitem'\n },\n DivContainer: {\n tag: 'div',\n className: 'ms-nav__feature'\n },\n ImageDivContainer: {\n tag: 'div',\n className: 'category-image',\n role: 'tabpanel'\n },\n Button: {\n className: 'ms-nav__list__item__button',\n tag: 'button',\n role: this.isMobile ? 'option' : 'menuitem',\n onClick: this.props\n },\n ImageContainer: {\n className: 'ms-nav__list__item__image'\n },\n Span: {\n className: 'ms-nav__list__item__span',\n tag: 'span'\n },\n MobileDescriptionContainer: {\n className: 'ms-nav__list__mobile__container'\n },\n MobileBackButton: {\n className: 'ms-nav__list__mobile__container__button',\n tag: 'button',\n 'aria-label': this.props.resources.backButtonAriaLabel,\n onClick: this.props\n },\n MobileDescriptionLabel: {\n className: 'ms-nav__list__mobile__container__span',\n tag: 'span'\n },\n isMobileView: this.state.isMobile,\n menuItemData: this.menuItemList,\n className: classnames('ms-nav', this.props.config.className)\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _mapData(): IMenuItemData[] {\n const { data, config } = this.props;\n const mergedData: IMenuItemData[] = [];\n if (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\n data.categories.result.map((item: CategoryHierarchy, index) =>\n mergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\n );\n }\n\n if (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\n config.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\n mergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\n );\n }\n return this._constructTopMenuItemData(mergedData);\n }\n\n private _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\n const enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\n if (!enableTopLevelMenu) {\n return mergedData;\n }\n const mergedRootMenuData: IMenuItemData[] = [];\n const topMenu = {\n id: 1,\n linkText: this.props.config.rootMenuNavigation ?? '...',\n linkURL: '#',\n imageSource: undefined,\n subMenu: mergedData\n } as IMenuItemData;\n mergedRootMenuData.push(topMenu);\n\n return mergedRootMenuData;\n }\n\n private _constructMenuItemData(\n retailItem?: CategoryHierarchy,\n cmsItem?: ICmsNavItemsData,\n isRetail?: boolean,\n idx?: number,\n addedAllMenu?: boolean\n ): IMenuItemData {\n const locale =\n this.props.context && this.props.context.request && this.props.context.request.locale\n ? this.props.context.request.locale\n : 'en-us';\n const { categoryPromotionalContent } = this.props.config;\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\n const { menuAriaLabel } = this.props.resources;\n\n // Filter category promotional data based on category name\n const promotionalData =\n retailItem &&\n categoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\n\n // First check if image is available from promotional data else read from retail server\n let imageSource: string = 'empty';\n if (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\n imageSource = retailItem!.Images[0].Uri;\n }\n if (isRetail) {\n return {\n id: NavigationMenu.RSItemIdInit++,\n linkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\n linkURL: retailItem?.Url,\n imageSource,\n subMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\n promotionalContent: this.props.config.displayPromotionalImage && promotionalData,\n menuSource: MenuSource.Retail,\n ariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n return {\n id: NavigationMenu.CMSItemIdInit++,\n linkText: cmsItemText,\n linkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\n imageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\n imageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\n subMenu: this._getCMSNestedChildren(cmsItem),\n menuSource: MenuSource.Cms,\n shouldOpenNewTab: cmsItem?.openInNewTab,\n ariaLabel: `${cmsItemText} ${menuAriaLabel}`\n } as IMenuItemData;\n }\n\n private _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n if (!category || !category.Children || category.Children.length === 0) {\n return [];\n }\n if (!this.props.config.enabletopMenu && addedAllMenu) {\n nestedChildren.push({\n linkText: this.props.resources.allCategoryMenuText,\n imageSource: imageSourceUrl,\n linkURL: getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {})\n });\n }\n category.Children.map((item: CategoryHierarchy, index) => {\n nestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\n });\n return nestedChildren;\n }\n\n private _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\n const nestedChildren: IMenuItemData[] = [];\n\n if (!category || !category.subMenus || category.subMenus.length === 0) {\n return [];\n }\n\n category.subMenus.map((item: ISubMenusData, idx: number) => {\n nestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\n });\n return nestedChildren;\n }\n\n private readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\n switch (sourceType) {\n case navigationMenuSource.retailServerOnly:\n this.isRetail = true;\n this.isCMS = false;\n break;\n case navigationMenuSource.cmsOnly:\n this.isRetail = false;\n this.isCMS = true;\n break;\n case navigationMenuSource.all:\n this.isRetail = true;\n this.isCMS = true;\n break;\n default:\n }\n };\n\n private _updateViewport(): void {\n this.viewport = this._getViewport();\n this.setState({ isMobile: this.isMobile });\n }\n\n private _getViewport(): GridSize {\n const { context } = this.props;\n\n // Always render in mobile viewport on a mobile device\n if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (MsDyn365.isBrowser && window.innerWidth) {\n const gridSettings = context.request.gridSettings;\n if (gridSettings) {\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\n return 'xs';\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\n return 'sm';\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\n return 'md';\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\n return 'lg';\n }\n return 'xl';\n }\n }\n\n return 'xs';\n }\n}\n\nexport default NavigationMenu;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { INavigationMenuViewProps } from './navigation-menu';\nimport { IMenuItemData } from './navigation-menu.data';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n mobileViewLabelText?: string;\n categoryImageAltText: string;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private static isBackTrack: boolean = false;\n\n private currentLevel: number = 0;\n\n private readonly menuNode: React.RefObject;\n\n private readonly menuItemRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.menuItemRef = React.createRef();\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentDidUpdate(): void {\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\n\n this.currentLevel = 1;\n return (\n \n \n {isMobileView && this.state.activeMenu !== undefined && (\n \n \n {this.state.mobileViewLabelText}\n \n )}\n {this._renderDisplay()}\n \n \n );\n }\n\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: undefined })\n : this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {' '}\n {this._createMenuItemList(menuItem)}{' '}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n !NavigationMenuView.isBackTrack\n ? this.setState({ parentMenu: item?.id })\n : this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n this.props.context.telemetry.error('Submenu content is empty, module wont render.');\n return null;\n }\n\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n this.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false\n ): JSX.Element | null {\n const { Link } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\n const categoryImageDisplay =\n !isMobileView &&\n (showCategoryImage || showPromotionalContent) &&\n !ArrayExtensions.hasElements(this.state.categoryImage) &&\n !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n NavigationMenuView.isBackTrack = false;\n this.setState({\n activeMenu: data.id,\n mobileViewLabelText: data.linkText!,\n parentMenu: parentId\n });\n }\n };\n\n private readonly _handleGoBack = () => () => {\n NavigationMenuView.isBackTrack = true;\n this.setState({ activeMenu: this.state.parentMenu });\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n mobileViewLabelText: '',\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Checks to assign a ref for focus.\n * @param index -Sub menu list index.\n * @param mobileViewLabelText -Parent user clicked Sub menu list.\n * @param optionLinkText -Sub menu list.\n * @returns Ref.\n */\n private readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\n if (!NavigationMenuView.isBackTrack && index === 0) {\n return true;\n }\n if (!optionLinkText || !mobileViewLabelText) {\n return false;\n }\n return mobileViewLabelText === optionLinkText;\n };\n\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\n }\n }\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n return (\n \n );\n }\n return null;\n };\n}\n\nexport default NavigationMenuView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["props","renderView","data","category","config","className","imageSettings","context","actionContext","requestContext","categoryResult","result","Children","length","children","React","role","classnames","map","c","renderSubcategoryItem","subcategory","imageSource","ArrayExtensions","hasElements","Images","Uri","linkText","NavigationMenu","getFriendlyName","locale","NameTranslations","key","RecordId","href","Url","getCategoryImage","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","xl","quality","lazyload","categoryImage","altText","categoryImageUrl","generateImageUrl","apiSettings","undefined","imageData","_objectSpread","src","Image","Object","assign","gridSettings","loadFailureBehavior","id","bypassHideOnFailure","binding","modules","dataActions","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","window","__bindings__","viewDictionary","cn","MenuTypeIndexId","MenuSource","constructor","super","isRetail","isCMS","_setNavigationSource","sourceType","this","_updateViewport","bind","viewport","request","device","Type","navigationMenuSource","state","isMobile","menuItemList","nameTranslations","nameTranslation","find","item","Language","toLowerCase","Text","componentDidMount","MsDyn365","isBrowser","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","render","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","telemetry","error","viewProps","Navigation","moduleProps","tag","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","resources","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","index","push","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","linkURL","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","RSItemIdInit","_getNestedChildren","promotionalContent","menuSource","Retail","ariaLabel","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","image","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","imageSourceUrl","arguments","nestedChildren","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","__decorate","observable","computed","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","imageSrc","promotionalItemImageSettings","text","additionalProperties","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","event","menuNode","current","contains","target","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","_ref","_categoryImage$imageS","categoryImageSettings","menuItemRef","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","document","body","addEventListener","componentDidUpdate","_this$menuItemRef$cur","focus","Module","Node","ref","tabIndex","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","forEach","i","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","Math","round","toString","_renderMenu","onFocus","hoverEffect","isParent","imagesource","contentAction","etext","attributes","getTelemetryAttributes","onMouseOver","onTelemetryClick","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","module","exports","ReactDOM"],"sourceRoot":""}