{"version":3,"file":"static/js/2892e8747181ec05c401.bundle.js","mappings":"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","sources":["webpack://henrys-ecommerce/./src/common/utilities/makeAbsUrl.ts?817a","webpack://henrys-ecommerce/./src/modules/hei-navigation-menu/hei-navigation-menu.data.ts?b9b9","webpack://henrys-ecommerce/./src/modules/hei-navigation-menu/hei-navigation-menu.tsx?a012","webpack://henrys-ecommerce/./src/modules/hei-navigation-menu/components/MobileMenu.tsx?14ad","webpack://henrys-ecommerce/./src/modules/hei-navigation-menu/components/DesktopMenu.tsx?a5c3","webpack://henrys-ecommerce/./src/modules/hei-navigation-menu/components/StaticMenu.tsx?6579","webpack://henrys-ecommerce/./src/modules/hei-navigation-menu/hei-navigation-menu.view.tsx?f5c9","webpack://henrys-ecommerce/./lib/hei-navigation-menu/module-registration.js?10bf","webpack://henrys-ecommerce/external var \"React\"?0d3b","webpack://henrys-ecommerce/external var \"ReactDOM\"?853b"],"sourcesContent":["import { IActionContext } from '@msdyn365-commerce/core';\r\n\r\nexport const makeAbsUrl = (context: IActionContext, url: string) => {\r\n if (url[0] === '/') {\r\n let origin = `https://${window.location.host}`;\r\n\r\n if (context.requestContext.sitePath && process.env.NODE_ENV !== 'development') {\r\n origin += context.requestContext.sitePath;\r\n }\r\n\r\n return `${origin}${url}`;\r\n }\r\n\r\n return url;\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\nimport { ICategoryPromotionalContentData } from './hei-navigation-menu.props.autogenerated';\r\n\r\nexport interface IHeiNavigationMenuData {}\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 ariaLabel?: string;\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 in the project root for license information.\r\n */\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, { IActionContext, IGridSettings, IImageSettings } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions, getCategoryUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } 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, IHeiNavigationMenuData, MenuSource, MenuTypeIndexId } from './hei-navigation-menu.data';\r\nimport { ICmsNavItemsData, IHeiNavigationMenuProps, ISubMenusData } from './hei-navigation-menu.props.autogenerated';\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface IHeiNavigationMenuViewProps extends IHeiNavigationMenuProps {\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 showPromotionalContent?: boolean;\r\n actionBtn?: React.ReactNode;\r\n viewport: GridSize;\r\n}\r\n\r\nexport interface INavigationMenuState {\r\n isMobile: boolean;\r\n viewport: GridSize;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass HeiNavigationMenu extends React.PureComponent<\r\n IHeiNavigationMenuProps & { actionBtn?: React.ReactNode },\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 @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: IHeiNavigationMenuProps) {\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.state = { isMobile: this.isMobile, viewport: this.viewport };\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 }\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 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: this.isMobile ? 'listbox' : 'navigation'\r\n },\r\n MenuList: {\r\n className: 'ms-nav__list',\r\n tag: 'ul',\r\n role: this.isMobile ? 'listbox' : '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 viewport: this.viewport,\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 _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 { categoryPromotionalContent } = this.props.config;\r\n const cmsItemText = (cmsItem && cmsItem.linkText) || '';\r\n const { menuAriaLabel } = this.props.resources;\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: HeiNavigationMenu.RSItemIdInit++,\r\n linkText: HeiNavigationMenu.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 ariaLabel: `${HeiNavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\r\n } as IMenuItemData;\r\n }\r\n return {\r\n id: HeiNavigationMenu.CMSItemIdInit++,\r\n linkText: cmsItemText,\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 ariaLabel: `${cmsItemText} ${menuAriaLabel}`\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?: ICmsNavItemsData): 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 _updateViewport(): void {\r\n this.viewport = this._getViewport();\r\n this.setState({ isMobile: this.isMobile, viewport: this.viewport });\r\n process.env.NODE_ENV === 'development' && console.log('StaticMenu', '_updateViewport', this.viewport);\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) {\r\n // match responsive-breakpoints.scss\r\n if (window.innerWidth <= 1440) {\r\n return 'lg';\r\n }\r\n\r\n return 'xl';\r\n }\r\n\r\n return 'xs';\r\n }\r\n}\r\n\r\nexport default HeiNavigationMenu;\r\n","import * as React from 'react';\r\nimport classnames from 'classnames';\r\nimport { MenuConfigItem, MenuProps } from './models';\r\nimport { makeAbsUrl } from '../../../common/utilities/makeAbsUrl';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\n\r\nconst mergeMenuItems = (items: MenuConfigItem[]) => {\r\n const mergedItems: MenuConfigItem[] = [];\r\n for (const m of items) {\r\n if (m.label) {\r\n mergedItems.push({\r\n ...m\r\n });\r\n } else {\r\n const lastItem = mergedItems[mergedItems.length - 1];\r\n if (lastItem) {\r\n mergedItems[mergedItems.length - 1] = {\r\n ...lastItem,\r\n children: [...(lastItem.children ?? []), ...(m.children ?? [])]\r\n };\r\n } else {\r\n console?.warn('invalid menu config', items);\r\n }\r\n }\r\n }\r\n\r\n for (const m of mergedItems) {\r\n m.children = mergeMenuItems(m.children ?? []);\r\n }\r\n\r\n return mergedItems;\r\n};\r\n\r\nconst MenuList = ({ menus, level, context }: { menus: MenuConfigItem[]; level: number; context: IActionContext }) => {\r\n const [activeMenu, setActiveMenu] = React.useState(null);\r\n return (\r\n
    \r\n {menus.map((menuItem, idx) => {\r\n const hasChild = Boolean(menuItem.children && menuItem.children.length > 0);\r\n const expanded = hasChild && activeMenu === menuItem;\r\n return (\r\n \r\n {hasChild ? (\r\n setActiveMenu(expanded ? null : menuItem)}>{menuItem.label}\r\n ) : menuItem.url ? (\r\n \r\n {menuItem.label}\r\n \r\n ) : (\r\n <>{menuItem.label}\r\n )}\r\n {hasChild && (\r\n \r\n )}\r\n {expanded && }\r\n \r\n );\r\n })}\r\n
\r\n );\r\n};\r\n\r\nconst MobileMenu = ({ menuConfig, className, context }: MenuProps) => {\r\n const rootItems = React.useMemo(() => mergeMenuItems(menuConfig), []);\r\n // const [activeMenu, setActiveMenu] = React.useState(null);\r\n // const menuItems = activeMenu ? activeMenu.children ?? [] : rootItems;\r\n\r\n return (\r\n
\r\n \r\n {/* {menuItems.map((menuItem, idx) => {\r\n const hasChild = Boolean(menuItem.children && menuItem.children.length > 0);\r\n return (\r\n
  • \r\n {menuItem.url ? {menuItem.label} : <>{menuItem.label}}\r\n {hasChild && (\r\n \r\n )}\r\n
  • \r\n );\r\n })} */}\r\n
    \r\n );\r\n};\r\n\r\nexport default MobileMenu;\r\n","// eslint-disable @typescript-eslint/no-unused-vars\r\n// @ts-ignore\r\n\r\nimport * as React from 'react';\r\nimport classnames from 'classnames';\r\nimport { makeAbsUrl } from '../../../common/utilities/makeAbsUrl';\r\nimport { MenuProps } from './models';\r\n\r\nconst DesktopMenu = ({ menuConfig, className, context, viewport }: MenuProps) => {\r\n const [openMenuIndex, setOpenMenuIndex] = React.useState(null);\r\n const activeMenu = React.useMemo(() => {\r\n const activeMenu = (openMenuIndex !== null && menuConfig[openMenuIndex]) || null;\r\n // process.env.NODE_ENV === 'development' && console.log('hei-navigation-menu', 'activeMenu', activeMenu);\r\n return activeMenu;\r\n }, [openMenuIndex, menuConfig]);\r\n\r\n const isXl = viewport === 'xl';\r\n\r\n return (\r\n
    \r\n
      \r\n {menuConfig.map((c, idx) => (\r\n setOpenMenuIndex(currentIndex => (currentIndex === idx ? null : idx))}\r\n >\r\n {c.label}\r\n \r\n ))}\r\n
    \r\n\r\n {/* Selected/opened menu */}\r\n {activeMenu && (\r\n
    \r\n
    \r\n

    \r\n {activeMenu.url ? (\r\n \r\n {activeMenu.label}\r\n \r\n ) : (\r\n <>{activeMenu.label}\r\n )}\r\n

    \r\n
    \r\n {Array(isXl ? 6 : 4)\r\n .fill(0)\r\n .map((_, i) => {\r\n const col = i + 1;\r\n return (\r\n // Menu column\r\n
    \r\n {activeMenu.children &&\r\n activeMenu.children\r\n .filter(c =>\r\n isXl\r\n ? (c.columnXL || 1) === col\r\n : (c.column || 1) === col || (col === 4 && (c.column || 1) > 4)\r\n )\r\n .map((section, sectionIdx) => {\r\n const children = section.children;\r\n return (\r\n
    \r\n {section.label && (\r\n

    \r\n {section.url ? (\r\n \r\n {section.label}\r\n \r\n ) : (\r\n <>{section.label}\r\n )}\r\n

    \r\n )}\r\n {children && (\r\n
      \r\n {children.map((menuItem, menuItemIdx) => (\r\n \r\n {menuItem.url ? (\r\n \r\n {menuItem.label}\r\n \r\n ) : (\r\n <>{menuItem.label}\r\n )}\r\n \r\n ))}\r\n
    \r\n )}\r\n {section.promo && (\r\n
    \r\n \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default DesktopMenu;\r\n","// eslint-disable @typescript-eslint/no-unused-vars\r\n// @ts-ignore\r\n\r\nimport * as React from 'react';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport MenuConfig from '../../../common/menu-config.json';\r\nimport { GridSize, MenuConfigItem } from './models';\r\nimport MobileMenu from './MobileMenu';\r\nimport DesktopMenu from './DesktopMenu';\r\n\r\nconst UseConfigFromSiteBuilder = false;\r\n\r\nexport type StaticMenuProps = {\r\n isMobileView: boolean;\r\n jsonMenu?: string;\r\n className?: string;\r\n actionBtn?: React.ReactNode;\r\n context: IActionContext;\r\n viewport: GridSize;\r\n};\r\n\r\nconst StaticMenu = ({ isMobileView, jsonMenu, ...rest }: StaticMenuProps) => {\r\n const menuConfig = React.useMemo(() => {\r\n const menuConfig: MenuConfigItem[] = UseConfigFromSiteBuilder && jsonMenu ? JSON.parse(jsonMenu) : MenuConfig;\r\n return menuConfig;\r\n }, [jsonMenu, MenuConfig]);\r\n\r\n return isMobileView ? : ;\r\n};\r\n\r\nexport default StaticMenu;\r\n","// eslint-disable @typescript-eslint/no-unused-vars\r\n// eslint-disable @typescript-eslint/no-unused-imports\r\n// @ts-ignore\r\n\r\n/* eslint-disable no-duplicate-imports */\r\nimport MsDyn365, { IImageData } from '@msdyn365-commerce/core';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IHeiNavigationMenuViewProps } from './hei-navigation-menu';\r\nimport StaticMenu from './components/StaticMenu';\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 updateCounter: number;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class HeiNavigationMenuView extends React.PureComponent {\r\n private readonly menuNode: React.RefObject;\r\n\r\n private readonly menuItemRef: React.RefObject;\r\n\r\n constructor(props: IHeiNavigationMenuViewProps) {\r\n super(props);\r\n this.menuNode = React.createRef();\r\n this.menuItemRef = React.createRef();\r\n this.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '', updateCounter: 0 };\r\n this._closeSubmenu = this._closeSubmenu.bind(this);\r\n }\r\n\r\n public componentDidMount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.addEventListener('mousedown', this._handleClickOutside);\r\n document.body.addEventListener('focusout', this._handleFocusOutside);\r\n }\r\n }\r\n\r\n public componentDidUpdate(): void {\r\n if (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\r\n (this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n if (MsDyn365.isBrowser) {\r\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n }\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\r\n return (\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 \r\n \r\n );\r\n }\r\n\r\n private readonly _handleGoBack = () => () => {\r\n this.setState({ activeMenu: this.state.parentMenu });\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleClickOutside = (event: MouseEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n this.setState({\r\n updateCounter: this.state.updateCounter + 1,\r\n activeMenu: undefined,\r\n mobileViewLabelText: '',\r\n categoryImage: null\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Method to handle click outside of menu.\r\n * @param event -HTML event.\r\n */\r\n private readonly _handleFocusOutside = (event: FocusEvent) => {\r\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n this._closeSubmenu();\r\n }\r\n };\r\n\r\n private _closeSubmenu(): void {\r\n if (!this.props.isMobileView) {\r\n this.setState({\r\n updateCounter: this.state.updateCounter + 1,\r\n activeMenu: undefined,\r\n categoryImage: null,\r\n mobileViewLabelText: ''\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default HeiNavigationMenuView;\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['hei-navigation-menu'] = {\n c: () => require('partner/modules/hei-navigation-menu/hei-navigation-menu.tsx'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'hei-navigation-menu',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/hei-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 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|hei-navigation-menu|hei-navigation-menu'] = {\n c: () => require('partner/modules/hei-navigation-menu/hei-navigation-menu.view.tsx'),\n cn: '__local__-__local__-hei-navigation-menu'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","module.exports = React;","module.exports = ReactDOM;"],"names":["makeAbsUrl","context","url","origin","window","location","host","requestContext","sitePath","MenuTypeIndexId","MenuSource","HeiNavigationMenu","React","constructor","props","super","this","_updateViewport","bind","viewport","request","device","Type","state","isMobile","locale","nameTranslations","nameTranslation","length","find","item","Language","toLowerCase","Text","componentDidMount","MsDyn365","isBrowser","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","render","_this$props$config$di","_this$props$config$di2","viewProps","_objectSpread","imageSettings","viewports","xs","q","w","h","xl","lazyload","gridSettings","Navigation","moduleProps","className","classnames","config","tag","role","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","Button","onClick","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","resources","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","renderView","_constructMenuItemData","retailItem","cmsItem","isRetail","idx","addedAllMenu","categoryPromotionalContent","cmsItemText","linkText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","imageSource","_HeiNavigationMenu$ge","_HeiNavigationMenu$ge2","ArrayExtensions","hasElements","Images","Uri","id","RSItemIdInit","getFriendlyName","NameTranslations","linkURL","Url","subMenu","_getNestedChildren","promotionalContent","menuSource","Retail","ariaLabel","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","image","src","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","category","imageSourceUrl","arguments","undefined","nestedChildren","Children","enabletopMenu","push","allCategoryMenuText","getCategoryUrl","map","index","subMenus","_getViewport","setState","innerWidth","__decorate","observable","computed","mergeMenuItems","items","mergedItems","m","label","lastItem","_lastItem$children","_m$children","_console","children","console","warn","_m$children2","_ref","menus","level","activeMenu","setActiveMenu","menuItem","hasChild","Boolean","expanded","key","active","href","target","type","_ref2","menuConfig","rootItems","openMenuIndex","setOpenMenuIndex","isXl","c","currentIndex","Array","fill","_","i","col","columnXL","column","section","sectionIdx","menuItemIdx","promo","title","jsonMenu","rest","_objectWithoutProperties","_excluded","MenuConfig","MobileMenu","Object","assign","DesktopMenu","HeiNavigationMenuView","_handleGoBack","parentMenu","_handleClickOutside","event","menuNode","current","contains","updateCounter","mobileViewLabelText","categoryImage","_handleFocusOutside","relatedTarget","_closeSubmenu","menuItemRef","categoryImageAltText","document","body","addEventListener","componentDidUpdate","_this$menuItemRef$cur","focus","Module","Node","ref","tabIndex","StaticMenu","actionBtn","actionContext","binding","modules","dataActions","require","$type","da","name","path","runOn","iNM","ns","n","p","pdp","md","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","__bindings__","viewDictionary","cn","module","exports","ReactDOM"],"sourceRoot":""}