{"version":3,"file":"static/js/24.d289a3a0ac7f35a87d45.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/citta-category-navigation-menu/components/link.tsx?c099","webpack://Citta2.0/./src/modules/citta-category-navigation-menu/components/subLink.tsx?099d","webpack://Citta2.0/./src/modules/citta-category-navigation-menu/citta-category-navigation-menu.tsx?40b8","webpack://Citta2.0/./src/modules/citta-category-navigation-menu/citta-category-navigation-menu.view.tsx?ab4a","webpack://Citta2.0/./src/modules/citta-product-video/citta-product-video.tsx?bc8d","webpack://Citta2.0/./src/modules/citta-product-video/citta-product-video.view.tsx?ed50","webpack://Citta2.0/./src/themes/citta/views/footer-category.view.tsx?544e","webpack://Citta2.0/./src/modules/catalog-picker/catalog-picker.tsx?02aa","webpack://Citta2.0/./src/modules/catalog-picker/catalog-picker.view.tsx?1e13","webpack://Citta2.0/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Citta2.0/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Citta2.0/./src/modules/navigation-menu/navigation-menu.view.tsx?c594"],"sourcesContent":["import { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n// import { SubLink } from './subLink'\r\n\r\ninterface ILink {\r\n className?: string;\r\n text?: string;\r\n href?: string;\r\n ariaLabel?: string;\r\n index: string;\r\n noclick?: boolean;\r\n isActive: boolean;\r\n telemetryContent: ITelemetryContent;\r\n subLinks?: any;\r\n handleHover: Function;\r\n recordId: number;\r\n isHover: boolean;\r\n menuHover: boolean;\r\n}\r\n\r\nexport const Link: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent, isActive, subLinks, handleHover, recordId, isHover, menuHover }) => {\r\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\r\n const linkText = text !== undefined ? text : '';\r\n payLoad.contentAction.etext = linkText;\r\n // Construct telemetry attribute to render\r\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\r\n return (\r\n
handleHover(recordId)}\r\n onMouseLeave={() => handleHover(null)}\r\n >\r\n \r\n \r\n {linkText}\r\n \r\n \r\n \r\n\r\n {(isHover || (!menuHover && isActive)) && subLinks && subLinks.length ? \r\n (
\r\n {subLinks}\r\n
)\r\n :''\r\n }\r\n
\r\n );\r\n};","import { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport interface ISubLink {\r\n className?: string;\r\n text?: string;\r\n href?: string;\r\n ariaLabel?: string;\r\n index: string;\r\n noclick?: boolean;\r\n isActive: boolean;\r\n telemetryContent: ITelemetryContent;\r\n handleHover: Function;\r\n recordId: number;\r\n}\r\n\r\nexport const SubLink: React.FC = ({ text, className, href, ariaLabel, index, noclick, telemetryContent, isActive, handleHover, recordId }) => {\r\n\r\n const payLoad = getPayloadObject('click', telemetryContent, '', '');\r\n\r\n const subLinkText = text !== undefined ? text : '';\r\n payLoad.contentAction.etext = subLinkText;\r\n // Construct telemetry attribute to render\r\n const attribute = getTelemetryAttributes(telemetryContent, payLoad);\r\n\r\n return (\r\n handleHover(recordId, true)}\r\n onMouseLeave={() => handleHover(null, true)}\r\n >\r\n \r\n {subLinkText}\r\n \r\n \r\n \r\n );\r\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IGridSettings, IImageSettings, isEmptyOrNullObject} from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { Link } from './components/link';\r\nimport { SubLink } from './components/subLink';\r\nimport { IMenuItemData, ICittaCategoryNavigationMenuData } from './citta-category-navigation-menu.data';\r\nimport { ICittaCategoryNavigationMenuProps } from './citta-category-navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends ICittaCategoryNavigationMenuProps {\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 pageType: string;\r\n links?: 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 linkHoverRecId?: number;\r\n subLinkHoverRecId?: number;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n private resizeThrottledEventHandler?: (event: Event) => void;\r\n private hasSubLinks: boolean;\r\n @observable\r\n private viewport: GridSize;\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: ICittaCategoryNavigationMenuProps) {\r\n super(props);\r\n this.viewport = props.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n this.state = {\r\n isMobile: this.isMobile,\r\n linkHoverRecId: undefined,\r\n subLinkHoverRecId: undefined\r\n\r\n };\r\n this.hasSubLinks = false;\r\n\r\n this._handleHover = this._handleHover.bind(this);\r\n\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 let container = document.querySelector(\".ms-nav-category\");\r\n if (container) {\r\n const middle = container.querySelector(\"a.active\") || container.children[Math.floor((container.children.length - 1) / 2)];\r\n \r\n container.scrollTo({\r\n top: 0,\r\n // @ts-ignore\r\n left: middle.offsetLeft + middle.offsetWidth / 2 - container.offsetWidth / 2,\r\n behavior: 'smooth'\r\n })\r\n \r\n \r\n // middle.offsetLeft + middle.offsetWidth / 2 - container.offsetWidth / 2;\r\n }\r\n }\r\n\r\n public componentWillUnmount(): void {\r\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const urlTokens = this.props.context.request.urlTokens;\r\n\r\n let links: React.ReactNode[] = [];\r\n\r\n if (urlTokens.pageType === 'Category') {\r\n const currentCategoryId = Number(urlTokens.recordId);\r\n const categoryHierarchyList = this.props.data.categories.result;\r\n if (categoryHierarchyList && categoryHierarchyList[1]) {\r\n const categoryHierarchyCurrent = categoryHierarchyList[1].Children[0];\r\n categoryHierarchyCurrent.Children.forEach(layerOneChild => {\r\n \r\n if (currentCategoryId === layerOneChild.RecordId) {\r\n links = this._getLinkData(layerOneChild, currentCategoryId);\r\n } else if (layerOneChild.Children && layerOneChild.Children.length) {\r\n layerOneChild.Children.forEach(layerTwoChild => {\r\n if (currentCategoryId === layerTwoChild.RecordId) {\r\n links = this._getLinkData(layerOneChild, currentCategoryId);\r\n \r\n } else if (layerTwoChild.Children && layerTwoChild.Children.length) {\r\n layerTwoChild.Children.forEach(layerThreeChild => {\r\n if (currentCategoryId === layerThreeChild.RecordId) {\r\n links = this._getLinkData(layerOneChild, currentCategoryId);\r\n }\r\n });\r\n }\r\n })\r\n }\r\n })\r\n }\r\n }\r\n\r\n if (isEmptyOrNullObject(this.props.data)) {\r\n this.props.telemetry.error('Navigatiomenu returned null');\r\n return null;\r\n }\r\n\r\n const viewProps = {\r\n ...this.props,\r\n ...this.state,\r\n pageType: urlTokens.pageType,\r\n Navigation: {\r\n moduleProps: this.props,\r\n className: classnames('ms-nav-category', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp', this.hasSubLinks ? 'hasSubMenu' : ''),\r\n tag:'nav',\r\n role:'navigation',\r\n 'aria-label': this.props.resources.menuAriaLabel\r\n },\r\n isMobileView: this.state.isMobile,\r\n links: links,\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 _handleHover(recordId?: number, isSubLink = false) {\r\n if (isSubLink) {\r\n this.setState({subLinkHoverRecId: recordId})\r\n } else {\r\n this.setState({linkHoverRecId: recordId})\r\n }\r\n }\r\n\r\n private _getLinkData(category: CategoryHierarchy, activeCurrent: Number): React.ReactNode[] {\r\n let links = [];\r\n links.push();\r\n \r\n (category.Children || []).forEach(childCategory => {\r\n let subLinks: any = [];\r\n let subLinkIsActive = false;\r\n if (childCategory.Children) {\r\n childCategory.Children.forEach(childChildCategory => {\r\n if (childChildCategory.RecordId === activeCurrent) {\r\n subLinkIsActive = true;\r\n }\r\n subLinks.push();\r\n });\r\n \r\n }\r\n if ((childCategory.RecordId === activeCurrent || subLinkIsActive) && childCategory.Children && childCategory.Children.length ) {\r\n this.hasSubLinks = true;\r\n }\r\n\r\n links.push();\r\n })\r\n\r\n return links;\r\n }\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable no-duplicate-imports */\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './citta-category-navigation-menu';\r\n\r\nconst NavigationMenuView: React.FC = props => {\r\n const { isMobileView, Navigation, links, pageType} = props;\r\n if (pageType !== 'Category') {\r\n return null;\r\n }\r\n return (\r\n \r\n {links}\r\n \r\n );\r\n};\r\n\r\nexport default NavigationMenuView;","/*!\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// import { reaction } from 'mobx';\r\nimport * as React from 'react';\r\n// import { IVideoMetadata } from '@msdyn365-commerce/components';\r\n\r\nimport { ICittaProductVideoData } from './citta-product-video.data';\r\nimport { ICittaProductVideoProps } from './citta-product-video.props.autogenerated';\r\n\r\nimport {\r\n IModuleProps,\r\n INodeProps\r\n} from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\n\r\nimport { IImageData } from '@msdyn365-commerce/core';\r\n\r\nimport { IMediaGalleryData, IMediaGalleryProps } from '@msdyn365-commerce-modules/media-gallery';\r\n// import { IPlayerResources } from '@msdyn365-commerce/components/dist/types/videoplayer/components/data/player-resources';\r\n// import { IPlayerData } from '@msdyn365-commerce/components/dist/types/videoplayer/players/player/Player.props';\r\n// import * as MsDyn365 from '@msdyn365-commerce/core';\r\n// import { getValidProductImages } from './utils';\r\n\r\nexport const enum imageSource {\r\n pageContext = 'pageContext',\r\n productId = 'productId'\r\n}\r\nexport interface IMediaGalleryState {\r\n animating: boolean;\r\n activeIndex: number;\r\n mediaGalleryItems: IImageData[] | undefined;\r\n isImageZoomed: boolean;\r\n modalIsOpen: boolean;\r\n lastUpdate?: number;\r\n}\r\n\r\nexport interface IMediaGalleryThumbnailsViewProps {\r\n ThumbnailsContainerProps: INodeProps;\r\n SingleSlideCarouselComponentProps: INodeProps;\r\n items?: IMediaGalleryThumbnailItemViewProps[];\r\n}\r\n\r\nexport interface IMediaGalleryThumbnailItemViewProps {\r\n ThumbnailItemContainerProps: INodeProps;\r\n Picture: React.ReactElement;\r\n}\r\n\r\nexport interface IMediaGalleryViewProps extends IMediaGalleryProps {\r\n state: IMediaGalleryState;\r\n MediaGallery: IModuleProps;\r\n CarouselProps: INodeProps;\r\n Thumbnails: IMediaGalleryThumbnailsViewProps;\r\n Modal?:React.ReactElement|null;\r\n}\r\n\r\n\r\nexport interface ICittaProductVideoViewProps extends ICittaProductVideoProps<{}> {\r\n player: INodeProps;\r\n ProductVideoContainer: IModuleProps\r\n}\r\n\r\n/**\r\n * Media gallery component\r\n */\r\nclass CittaProductVideo extends React.Component, IMediaGalleryState> {\r\n public render(): JSX.Element | null {\r\n const {\r\n className\r\n } = this.props.config;\r\n\r\n const content: ICittaProductVideoData = this.props.data;\r\n\r\n const attributes = content.attributes.result;\r\n if (!attributes) {\r\n return null;\r\n }\r\n \r\n const srcAttribute = attributes?.find(attribute => attribute.Name === this.props.resources.attributeName);\r\n\r\n if (!srcAttribute || !srcAttribute.TextValue) {\r\n return null;\r\n }\r\n \r\n const viewProps = {\r\n ...this.props,\r\n ProductVideoContainer: {\r\n moduleProps: this.props,\r\n className: classnames('product-video-container', className)\r\n },\r\n player: \r\n };\r\n return this.props.renderView(viewProps) as React.ReactElement;\r\n }\r\n}\r\n\r\nexport default CittaProductVideo;","/*!\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\nimport * as React from 'react';\r\nimport { Module } from '@msdyn365-commerce-modules/utilities';\r\nimport { ICittaProductVideoViewProps } from './citta-product-video';\r\n\r\nexport default (props: ICittaProductVideoViewProps) => {\r\n return (\r\n \r\n { /* @ts-ignore */ }\r\n {props.player}\r\n \r\n );\r\n};\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\nimport { IFooterCategoryViewProps } from '@msdyn365-commerce-modules/footer/src/modules/footer-category';\r\nimport { Drawer, IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport React, { ReactNode } from 'react';\r\nimport { IFooterCategoryProps } from '../definition-extensions/footer-category.ext.props.autogenerated';\r\n\r\nexport const FooterCategoryView: React.FC> = props => {\r\n const { categories, FooterList, FooterListItem } = props;\r\n if (!categories || !categories.length) {\r\n return null;\r\n }\r\n const FooterContainer: IModuleProps = {\r\n moduleProps: props,\r\n className: classnames('ms-footer_module', props.config.className),\r\n };\r\n\r\n if (props.config.renderDrawer) {\r\n return (\r\n \r\n {renderDesktop(props)}\r\n {renderMobile(props)}\r\n );\r\n } else {\r\n return (\r\n \r\n {categories.map((category: ReactNode, index: number) => {\r\n return (\r\n \r\n {category}\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n }\r\n};\r\n\r\nfunction renderDesktop(props: IFooterCategoryViewProps & IFooterCategoryProps<{}>): JSX.Element {\r\n const { categories, FooterListItem } = props;\r\n const DesktopFooterList: IModuleProps = {\r\n moduleProps: props,\r\n className: classnames('ms-footer__list-Desktop citta-footer-category-desktop', props.config.className),\r\n tag: 'ul',\r\n role: 'menu'\r\n };\r\n return (\r\n \r\n \r\n {props.config.categoryName}\r\n \r\n {categories.map((category: ReactNode, index: number) => {\r\n return (\r\n \r\n {category}\r\n \r\n );\r\n })\r\n }\r\n \r\n );\r\n}\r\n\r\nfunction renderMobile(props: IFooterCategoryViewProps & IFooterCategoryProps<{}>): React.ReactNode {\r\n const { categories } = props;\r\n const MobileFooterList: IModuleProps = {\r\n moduleProps: props,\r\n className: classnames('ms-footer__list-mobile citta-footer-category-mobile', props.config.className),\r\n tag: 'ul',\r\n role: 'menu'\r\n };\r\n return (\r\n \r\n \r\n
\r\n {categories &&\r\n categories.map((category, id2: number) => (\r\n
\r\n {category}\r\n
\r\n ))}\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default FooterCategoryView;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport Msdyn365, {\n ContentEditableEvent,\n generateImageUrl,\n getCatalogId,\n getUrlSync,\n Image,\n RichTextComponent,\n Text\n} from '@msdyn365-commerce/core';\nimport { MediaLocation, ProductCatalog } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Button, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ICatalogPickerData } from './catalog-picker.data';\nimport { ICatalogPickerProps } from './catalog-picker.props.autogenerated';\n\n/**\n * ICatalogPickerViewProps.\n */\nexport interface ICatalogPickerViewProps extends ICatalogPickerProps {\n catalogPicker: IModuleProps;\n heading: React.ReactNode;\n paragraph: React.ReactNode;\n catalogs: ReactNode;\n}\n\n/**\n * CatalogPicker component.\n * @extends {React.PureComponent>}\n */\nexport class CatalogPicker extends React.PureComponent> {\n private static readonly _moduleClassName = 'ms-catalog-picker';\n\n public constructor(props: ICatalogPickerViewProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { heading, paragraph } = this.props.config;\n\n const catalogPickerHeading = heading && (\n \n );\n\n const isCatalogsAvailable: boolean = ArrayExtensions.hasElements(this.props.data.catalogs?.result);\n const catalogPickerParagraph = paragraph && (\n \n );\n const viewProps = {\n ...this.props,\n handleText: this.handleTextChange,\n catalogPicker: {\n moduleProps: this.props,\n className: CatalogPicker._moduleClassName\n },\n heading: catalogPickerHeading,\n paragraph: catalogPickerParagraph,\n catalogs: isCatalogsAvailable ? this._renderCatalogPicker() : ''\n };\n\n return this.props.renderView(viewProps);\n }\n\n /**\n * Handle text change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleTextChange = (event: ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n /**\n * Handle paragraph change.\n * @param event - The dialog that is allowed to remain open.\n */\n public handleParagraphChange = (event: ContentEditableEvent): void => {\n this.props.config.paragraph = event.target.value;\n };\n\n private _renderCatalogPickerButton(item: ProductCatalog): React.ReactNode {\n const catalogId = item.RecordId;\n const currentCatalogId = getCatalogId(this.props.context.request);\n if (currentCatalogId === catalogId) {\n return
{this.props.resources.currentCatalogText}
;\n }\n let linkToCatalog = '';\n if (Msdyn365.isBrowser) {\n const catalogUrl = getUrlSync('home', this.props.context.actionContext) ?? '';\n const fullUrl = new URL(catalogUrl, window.location.href);\n fullUrl.searchParams.set('catalogid', `${catalogId}`);\n linkToCatalog = fullUrl.href;\n }\n return (\n \n {this.props.resources.changeCatalogButtonText}\n \n );\n }\n\n private _renderCatalogPicker(): React.ReactNode {\n const catalogs = this.props.data.catalogs?.result;\n\n const isBrowser = Msdyn365.isBrowser;\n\n return (\n
\n {catalogs?.map(item => {\n const reactKey = `${JSON.stringify(item)}-${String(isBrowser)}`;\n const image: MediaLocation | undefined = ArrayExtensions.firstOrDefault(item.Images);\n return (\n \n

{item.Name}

\n
\n \n
\n {this._renderCatalogPickerButton(item)}\n
\n
\n
\n );\n })}\n \n );\n }\n}\n\nexport default CatalogPicker;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICatalogPickerViewProps } from './catalog-picker';\n\n/**\n * ICatalogPickerViewProps.\n * @param props - ICatalogPickerViewProps.\n * @returns - Render Catalog Picker.\n */\nexport const CatalogPickerViewFunctionComponent: React.FC = props => {\n const { catalogPicker } = props;\n return (\n \n {props.heading}\n {props.paragraph}\n {props.catalogs}\n \n );\n};\n\nexport default CatalogPickerViewFunctionComponent;\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"],"names":["Link","_ref","text","className","href","ariaLabel","index","noclick","telemetryContent","isActive","subLinks","handleHover","recordId","isHover","menuHover","payLoad","getPayloadObject","linkText","undefined","contentAction","etext","attribute","getTelemetryAttributes","React","onMouseEnter","onMouseLeave","Object","assign","onClick","onTelemetryClick","itemProp","content","length","SubLink","subLinkText","NavigationMenu","constructor","props","super","this","viewport","context","request","device","Type","state","isMobile","linkHoverRecId","subLinkHoverRecId","hasSubLinks","_handleHover","bind","static","locale","nameTranslations","nameTranslation","find","item","Language","toLowerCase","Text","componentDidMount","container","document","querySelector","middle","children","Math","floor","scrollTo","top","left","offsetLeft","offsetWidth","behavior","componentWillUnmount","window","removeEventListener","resizeThrottledEventHandler","render","urlTokens","links","pageType","currentCategoryId","Number","categoryHierarchyList","data","categories","result","Children","forEach","layerOneChild","RecordId","_getLinkData","layerTwoChild","layerThreeChild","isEmptyOrNullObject","telemetry","error","viewProps","_objectSpread","Navigation","moduleProps","classnames","config","tag","role","resources","menuAriaLabel","isMobileView","renderView","arguments","setState","category","activeCurrent","push","Name","Url","pageName","moduleName","childCategory","subLinkIsActive","childChildCategory","__decorate","observable","computed","Module","imageSource","CittaProductVideo","attributes","srcAttribute","attributeName","TextValue","ProductVideoContainer","player","width","src","controls","FooterCategoryView","FooterList","FooterListItem","FooterContainer","renderDrawer","DesktopFooterList","Node","categoryName","map","key","renderDesktop","MobileFooterList","Drawer","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","toggleButtonProps","color","id2","renderMobile","CatalogPicker","handleTextChange","event","heading","target","value","handleParagraphChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","_moduleClassName","editProps","onEdit","requestContext","isCatalogsAvailable","ArrayExtensions","hasElements","catalogs","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","_renderCatalogPicker","_renderCatalogPickerButton","catalogId","getCatalogId","currentCatalogText","linkToCatalog","Msdyn365","isBrowser","_getUrlSync","catalogUrl","getUrlSync","actionContext","fullUrl","URL","location","searchParams","set","Button","changeCatalogButtonText","_this$props$data$cata2","reactKey","JSON","stringify","String","image","firstOrDefault","Images","tabIndex","Image","generateImageUrl","apiSettings","Uri","gridSettings","imageSettings","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","MenuTypeIndexId","MenuSource","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","navigationMenuSource","menuItemList","MsDyn365","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","viewports","xs","q","w","h","xl","lazyload","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","menuItemData","mergedData","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","id","rootMenuNavigation","linkURL","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","RSItemIdInit","getFriendlyName","NameTranslations","_getNestedChildren","promotionalContent","menuSource","Retail","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","imageSourceUrl","nestedChildren","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","innerWidth","sm","md","lg","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","imageSrc","promotionalItemImageSettings","additionalProperties","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","current","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","defaultImageSettings","_categoryImage$imageS","categoryImageSettings","menuItemRef","getTelemetryObject","telemetryPageName","friendlyName","body","addEventListener","componentDidUpdate","_this$menuItemRef$cur","focus","ref","_renderDisplay","menuItem","menuItemDatum","_getFromSubMenu","_createMenuItemList","i","found","_renderSubMenu","_renderButtonMenuItem","_renderLinkMenuItem","_renderSpanMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","hasOptions","haveSubmenu","round","toString","_renderMenu","onFocus","hoverEffect","isParent","imagesource","onMouseOver","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope"],"sourceRoot":""}