{"version":3,"file":"static/js/19.76fcb817909de94c9c99.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/dyn-cookiebot-script/dyn-cookiebot-script.tsx?f6bb","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-cookiebot-script/dyn-cookiebot-script.view.tsx?12d3","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-wordpress-post/dyn-wordpress-post.tsx?2ca2","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-wordpress-post/dyn-wordpress-post.view.tsx?7d9d","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/breadcrumb.view.tsx?18b6","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/components/carticon.component.tsx?b7ae","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.tsx?02aa","webpack://Msdyn365.Commerce.Online/./src/modules/catalog-picker/catalog-picker.view.tsx?1e13","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Msdyn365.Commerce.Online/./src/modules/navigation-menu/navigation-menu.view.tsx?c594"],"sourcesContent":["/*!\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\n\r\nimport { IDynCookiebotScriptData } from './dyn-cookiebot-script.data';\r\nimport { IDynCookiebotScriptProps } from './dyn-cookiebot-script.props.autogenerated';\r\n\r\nexport interface IDynCookiebotScriptViewProps extends IDynCookiebotScriptProps {}\r\n\r\n/**\r\n *\r\n * DynCookiebotScript component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynCookiebotScript extends React.PureComponent> {\r\n public render(): JSX.Element | null {\r\n return this.props.renderView(this.props);\r\n }\r\n}\r\n\r\nexport default DynCookiebotScript;\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\nimport * as React from 'react';\r\nimport { IDynCookiebotScriptViewProps } from './dyn-cookiebot-script';\r\n\r\nexport const useScript = (props: IDynCookiebotScriptViewProps, position: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n\r\n const script: HTMLScriptElement = document.createElement('script');\r\n script.src = props.config.scriptUrl;\r\n script.type = 'text/javascript';\r\n script.id = 'Cookiebot';\r\n script.setAttribute('data-cbid', props.config.dataCbid);\r\n script.setAttribute('data-blockingmode', 'auto');\r\n\r\n placement?.appendChild(script);\r\n\r\n return () => {\r\n placement?.removeChild(script);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IDynCookiebotScriptViewProps) => {\r\n return <>{props.config.scriptUrl && useScript(props, 'head')};\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\nimport * as React from 'react';\r\n\r\nimport { IDynWordpressPostData } from './dyn-wordpress-post.data';\r\nimport { IDynWordpressPostProps } from './dyn-wordpress-post.props.autogenerated';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport interface IDynWordpressPostViewProps extends IDynWordpressPostProps {\r\n postNodes: React.ReactNode;\r\n}\r\n\r\nexport interface Article {\r\n databaseId: number;\r\n date: Date;\r\n slug: string;\r\n status: string;\r\n type: string;\r\n title: {\r\n rendered: string;\r\n };\r\n author: string;\r\n excerpt: {\r\n rendered: string;\r\n protected: boolean;\r\n };\r\n featured_media: number;\r\n categories?: string[];\r\n tags?: string[];\r\n content: {\r\n rendered: string;\r\n protected: boolean;\r\n };\r\n}\r\n\r\nexport interface ArticleGQL {\r\n content: string;\r\n date: Date;\r\n excerpt: string;\r\n featuredImage: {\r\n node: {\r\n altText: string;\r\n slug: string;\r\n uri: string;\r\n sourceUrl: string;\r\n };\r\n };\r\n slug: string;\r\n title: string;\r\n modified: Date;\r\n status: string;\r\n databaseId: number;\r\n}\r\n\r\nexport interface SeoPressData {\r\n title: string;\r\n description: string;\r\n canonical: string;\r\n og: {\r\n title: string;\r\n description: string;\r\n image: string;\r\n };\r\n twitter: {\r\n title: string;\r\n description: string;\r\n image: string;\r\n };\r\n robots: {\r\n noindex: boolean;\r\n nofollow: boolean;\r\n noodp: boolean;\r\n noarchive: boolean;\r\n nosnippet: boolean;\r\n noimageindex: boolean;\r\n };\r\n redirections: {\r\n enabled: boolean;\r\n status: string;\r\n type: number;\r\n value: string;\r\n };\r\n}\r\n\r\nexport interface ArticleGQLWithSeo {\r\n post: ArticleGQL | null;\r\n seo: SeoPressData | null;\r\n}\r\n\r\n/**\r\n *\r\n * DynWordpressPost component\r\n * @extends {React.PureComponent>}\r\n */\r\n\r\nclass DynWordpressPost extends React.PureComponent> {\r\n public componentDidMount(): void {\r\n // if (!this.props.data.wpPost.result?.post) {\r\n // window.location.assign(`${this.props.context.actionContext.requestContext.sitePath ?? ''}/404`);\r\n // }\r\n }\r\n\r\n public _getpostNodes(): React.ReactNode | undefined {\r\n return (\r\n
\r\n {/*\r\n // WP REST API\r\n this.props.data.wpPost.result?.title.rendered\r\n // WP GRAPHQL\r\n this.props.data.wpPost.result?.title\r\n */}\r\n
\r\n \r\n );\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const dynWordpressPostProps: IDynWordpressPostViewProps = {\r\n ...this.props,\r\n postNodes: this._getpostNodes()\r\n };\r\n\r\n return this.props.renderView(dynWordpressPostProps);\r\n }\r\n}\r\n\r\nexport default DynWordpressPost;\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\nimport * as React from 'react';\r\nimport { IDynWordpressPostViewProps } from './dyn-wordpress-post';\r\n\r\n// First string is your URL\r\n// Second string can be head or body\r\n// Third parameter is true or false.\r\nexport const useScript = (url: string, position: string, async: boolean) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector(position);\r\n const script: HTMLScriptElement = document.createElement('script');\r\n\r\n script.src = url;\r\n script.async = typeof async === 'undefined' ? false : async;\r\n\r\n placement?.appendChild(script);\r\n\r\n return () => {\r\n placement?.removeChild(script);\r\n };\r\n });\r\n};\r\n\r\nexport const useMetaTitle = (title: string) => {\r\n React.useEffect(() => {\r\n document.title = title;\r\n }, []);\r\n};\r\n\r\nexport const useMetaName = (name: string, content: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector('head');\r\n const meta = document.createElement('meta');\r\n\r\n meta.setAttribute('name', name);\r\n meta.setAttribute('content', content);\r\n\r\n placement?.appendChild(meta);\r\n\r\n return () => {\r\n placement?.removeChild(meta);\r\n };\r\n });\r\n};\r\n\r\nexport const useMetaProperty = (property: string, content: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector('head');\r\n const meta = document.createElement('meta');\r\n\r\n meta.setAttribute('property', property);\r\n meta.setAttribute('content', content);\r\n\r\n placement?.appendChild(meta);\r\n\r\n return () => {\r\n placement?.removeChild(meta);\r\n };\r\n });\r\n};\r\n\r\nexport const useMetaLink = (rel: string, media: string, href: string) => {\r\n React.useEffect(() => {\r\n const placement: Element | null = document.querySelector('head');\r\n const link = document.createElement('link');\r\n\r\n link.setAttribute('rel', rel);\r\n link.setAttribute('media', media);\r\n link.setAttribute('href', href);\r\n\r\n placement?.appendChild(link);\r\n\r\n return () => {\r\n placement?.removeChild(link);\r\n };\r\n });\r\n};\r\n\r\nexport default (props: IDynWordpressPostViewProps) => {\r\n const { postNodes, data, config, context } = props;\r\n //const blogUrl = config.blogUrl ?? '';\r\n const siteUrl = `${context.request.url.requestUrl.protocol}//${context.request.url.requestUrl.host}`;\r\n const seo = data.wpPost.result?.seo;\r\n\r\n // SEO Title\r\n const seoTitle = seo?.title !== '' ? seo?.title : data.wpPost.result?.post?.title;\r\n\r\n // SEO Canonical\r\n const pathName = context.request.url.requestUrl.pathname;\r\n let postSlug = '';\r\n if (config.postType === 'promotion') {\r\n // pathName like '/promotions/xxxxx'\r\n postSlug = pathName.substring(12);\r\n }\r\n if (config.postType === 'highlight') {\r\n // pathName like '/highlights/xxxxx'\r\n postSlug = pathName.substring(12);\r\n }\r\n const seoCanonical = `${siteUrl}/${config.postType}/${postSlug}`;\r\n\r\n // SEO description\r\n const seoDescription =\r\n seo?.description !== '' ? seo?.description : data.wpPost.result?.post?.excerpt.replace('

', '').replace('

', '');\r\n\r\n // SEO OG\r\n const ogTitle = seo?.og.title !== '' ? seo?.og.title : seoTitle;\r\n const ogDescription = seo?.og.description !== '' ? seo?.og.description : seoDescription;\r\n const ogImage = seo?.og.image !== '' ? seo?.og.image : data.wpPost.result?.post?.featuredImage.node.sourceUrl;\r\n\r\n // SEO Twitter\r\n const twitterTitle = seo?.twitter.title !== '' ? seo?.twitter.title : seoTitle;\r\n const twitterDescription = seo?.twitter.description !== '' ? seo?.twitter.description : seoDescription;\r\n const twitterImage = seo?.twitter.image !== '' ? seo?.twitter.image : data.wpPost.result?.post?.featuredImage.node.sourceUrl;\r\n\r\n // SEO robots\r\n const robotsIndex = seo?.robots.noindex ? 'noindex' : 'index';\r\n const robotsFollow = seo?.robots.nofollow ? 'nofollow' : 'follow';\r\n\r\n return (\r\n <>\r\n {seo?.title &&\r\n useMetaLink(\r\n 'stylesheet',\r\n 'all',\r\n `${props.config.blogUrl}/wp-content/uploads/elementor/css/post-${data.wpPost.result?.post?.databaseId}.css`\r\n )}\r\n {seo?.title && useMetaTitle(seoTitle ?? '')}\r\n {seo?.title && useMetaLink('canonical', '', seoCanonical)}\r\n {seo?.title && useMetaName('dc.description', seoDescription ?? '')}\r\n {seo?.title && useMetaName('dc.relation', seoCanonical ?? '')}\r\n {seo?.title && useMetaName('dc.source', siteUrl ?? '')}\r\n {seo?.title && useMetaName('description', seoDescription ?? '')}\r\n {seo?.title && useMetaName('robots', `${robotsIndex} ${robotsFollow}`)}\r\n {seo?.title &&\r\n useMetaName('googlebot', `${robotsIndex}, ${robotsFollow}, max-snippet:-1, max-image-preview:large, max-video-preview:-1`)}\r\n {seo?.title &&\r\n useMetaName('bingbot', `${robotsIndex}, ${robotsFollow}, max-snippet:-1, max-image-preview:large, max-video-preview:-1`)}\r\n {seo?.title && useMetaName('og:url', seoCanonical ?? '')}\r\n {seo?.title && useMetaName('og:site_name', 'Tebu bio')}\r\n {seo?.title && useMetaName('og:type', config.postType ?? '')}\r\n {seo?.title && useMetaName('og:title', ogTitle ?? '')}\r\n {seo?.title && useMetaName('og:description', ogDescription ?? '')}\r\n {seo?.title && useMetaName('og:image', ogImage ?? '')}\r\n {seo?.title && useMetaName('og:image:secure_url', ogImage ?? '')}\r\n {seo?.title && useMetaName('twitter:card', 'summary')}\r\n {seo?.title && useMetaName('twitter:title', twitterTitle ?? '')}\r\n {seo?.title && useMetaName('twitter:description', twitterDescription ?? '')}\r\n {seo?.title && useMetaName('twitter:image', twitterImage ?? '')}\r\n\r\n {/* {seo?.title && (\r\n \r\n {data.wpPost.result?.post?.databaseId && (\r\n \r\n )}\r\n\r\n {seoTitle}\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\n )} */}\r\n {postNodes}\r\n \r\n );\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nimport { IBreadcrumbViewProps } from '@msdyn365-commerce-modules/breadcrumb/src/modules/breadcrumb/breadcrumb';\r\n\r\nconst BreadCrumbView: React.FC = props => {\r\n const { root, links, backButton, BreadcrumbContainer, BreadcrumbList, BreadcrumbListItem } = props;\r\n if (!root && !links && !backButton) {\r\n props.context.telemetry.error('BreadCrumb content is empty, module wont render');\r\n return null;\r\n }\r\n const separator = {' '}{'>'}{' '};\r\n\r\n return (\r\n \r\n \r\n {root &&\r\n \r\n {root}\r\n {links && separator}\r\n }\r\n {backButton &&\r\n \r\n {backButton}\r\n }\r\n {links && links.map((link, index) => (\r\n \r\n \r\n {link}\r\n {links[index + 1] && separator}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default BreadCrumbView;\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 { getUrlSync, IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ICartState } from '@msdyn365-commerce/global-state';\r\nimport { format, getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\n\r\nexport interface ICartIconData {\r\n cart?: ICartState;\r\n}\r\n\r\nexport interface ICartIconComponentProps extends IComponentProps {\r\n className?: string;\r\n cartLabel: string;\r\n cartQtyLabel: string;\r\n telemetryContent?: ITelemetryContent;\r\n}\r\n\r\nexport interface ICartIconComponent extends IComponent {\r\n}\r\n\r\nconst CartIconComponentActions = {};\r\n\r\n/**\r\n *\r\n * CartIcon component.\r\n * @extends {React.FC}\r\n */\r\nconst CartIcon: React.FC = observer((props: ICartIconComponentProps) => {\r\n const { cartLabel, data: { cart } } = props;\r\n const cartLink = getUrlSync('cart', props.context.actionContext);\r\n\r\n // If there are invoice lines, don't update mini cart item quantity\r\n const cartItem = cart ? cart.totalItemsInCart : 0;\r\n //const qtyLabel = format(cartQtyLabel, cartItem);\r\n const label = format(cartLabel, cartItem);\r\n\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, 'cart-icon', '');\r\n const attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n const style: React.CSSProperties = {\r\n visibility: cart ? 'visible' : 'hidden'\r\n };\r\n return (\r\n \r\n
\r\n {/*qtyLabel*/} ({cartItem} items)\r\n
\r\n \r\n );\r\n});\r\n\r\n// @ts-expect-error\r\nexport const CartIconComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'CartIcon',\r\n { component: CartIcon, ...CartIconComponentActions }\r\n);\r\n\r\n\r\nexport default CartIconComponent;","/*!\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":["DynCookiebotScript","React","render","this","props","renderView","useScript","position","placement","document","querySelector","script","createElement","src","config","scriptUrl","type","id","setAttribute","dataCbid","appendChild","removeChild","DynWordpressPost","componentDidMount","_getpostNodes","className","dangerouslySetInnerHTML","Msdyn365","data","wpPost","result","post","content","dynWordpressPostProps","postNodes","url","async","useMetaTitle","title","useMetaName","name","meta","useMetaProperty","property","useMetaLink","rel","media","href","link","context","siteUrl","request","requestUrl","protocol","host","seo","seoTitle","pathName","pathname","postSlug","postType","substring","seoCanonical","seoDescription","description","excerpt","replace","ogTitle","og","ogDescription","ogImage","image","featuredImage","node","sourceUrl","twitterTitle","twitter","twitterDescription","twitterImage","robotsIndex","robots","noindex","robotsFollow","nofollow","blogUrl","databaseId","root","links","backButton","BreadcrumbContainer","BreadcrumbList","BreadcrumbListItem","telemetry","error","separator","Module","Object","Node","map","index","key","classnames","length","CartIcon","observer","cartLabel","cart","cartLink","getUrlSync","actionContext","cartItem","totalItemsInCart","label","format","payLoad","getPayloadObject","telemetryContent","attributes","getTelemetryAttributes","style","visibility","onClick","onTelemetryClick","CartIconComponent","msdyn365Commerce","component","CatalogPicker","constructor","super","handleTextChange","event","heading","text","target","value","handleParagraphChange","paragraph","catalogPickerHeading","Text","_moduleClassName","tag","editProps","onEdit","requestContext","isCatalogsAvailable","ArrayExtensions","catalogs","catalogPickerParagraph","RichTextComponent","resources","catalogValidationText","viewProps","handleText","catalogPicker","moduleProps","_renderCatalogPicker","_renderCatalogPickerButton","item","catalogId","RecordId","getCatalogId","currentCatalogText","linkToCatalog","catalogUrl","fullUrl","URL","window","location","searchParams","set","Button","changeCatalogButtonText","isBrowser","role","reactKey","JSON","stringify","String","Images","tabIndex","Name","Image","generateImageUrl","apiSettings","Uri","gridSettings","imageSettings","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","bind","viewport","device","Type","navigationMenuSource","state","isMobile","menuItemList","locale","nameTranslations","nameTranslation","find","Language","toLowerCase","MsDyn365","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","_mapData","isEmptyOrNullObject","viewports","xs","q","w","h","xl","lazyload","Navigation","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","push","_constructMenuItemData","undefined","cmsNavItems","idx","_constructTopMenuItemData","enabletopMenu","mergedRootMenuData","topMenu","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","categoryName","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","Retail","ariaLabel","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","category","imageSourceUrl","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","setState","innerWidth","sm","md","lg","__decorate","observable","computed","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","categoryImageSettings","menuItemRef","getTelemetryObject","telemetryPageName","friendlyName","body","addEventListener","componentDidUpdate","children","focus","ref","_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","onMouseOver","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass"],"sourceRoot":""}