{"version":3,"file":"static/js/13.0411ed8d7dfd9a3960d5.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/modules/dyn-catalog-search/dyn-catalog-search.tsx?976c","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-catalog-search/dyn-catalog-search.view.tsx?e843","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-cookie-compliance/dyn-cookie-compliance.tsx?7ae9","webpack://Msdyn365.Commerce.Online/./src/modules/dyn-cookie-compliance/dyn-cookie-compliance.view.tsx?890c","webpack://Msdyn365.Commerce.Online/./src/themes/dyn-tebutheme/views/buybox.view.tsx?a4bb","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","webpack://Msdyn365.Commerce.Online/./src/modules/default-page-summary/default-page-summary.tsx?0c78","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.tsx?899b","webpack://Msdyn365.Commerce.Online/./src/modules/social-share/social-share.view.tsx?dcdf"],"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 { IDynCatalogSearchData } from './dyn-catalog-search.data';\r\nimport { IDynCatalogSearchProps } from './dyn-catalog-search.props.autogenerated';\r\n\r\nexport interface IDynCatalogSearchState {\r\n filter: string;\r\n}\r\n\r\nexport interface IDynCatalogSearchViewProps extends IDynCatalogSearchProps {\r\n handleChange(event: any): void;\r\n catalogSearch(): void;\r\n}\r\n\r\n/**\r\n *\r\n * DynCatalogSearch component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynCatalogSearch extends React.PureComponent, IDynCatalogSearchState> {\r\n public _handleChange(event: any): void {\r\n const filter = event.target.value.toString();\r\n const transformedFilter = `${String(filter).includes('::') ? String(filter).split('::')[0] : filter}*`;\r\n this.setState({\r\n filter: transformedFilter\r\n });\r\n }\r\n\r\n public _catalogSearch(): void {\r\n window.location.assign(`${this.props.context.actionContext.requestContext.sitePath}/search?q=${this.state.filter}`);\r\n }\r\n\r\n public constructor(props: IDynCatalogSearchProps) {\r\n super(props);\r\n this.state = { filter: '' };\r\n this._handleChange = this._handleChange.bind(this);\r\n this._catalogSearch = this._catalogSearch.bind(this);\r\n }\r\n\r\n public render(): JSX.Element | null {\r\n const props: IDynCatalogSearchViewProps = {\r\n ...(this.props as IDynCatalogSearchProps),\r\n handleChange: this._handleChange,\r\n catalogSearch: this._catalogSearch\r\n };\r\n return this.props.renderView(props);\r\n }\r\n}\r\n\r\nexport default DynCatalogSearch;\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 { IDynCatalogSearchViewProps } from './dyn-catalog-search';\r\n\r\nexport default (props: IDynCatalogSearchViewProps) => {\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Enter') {\r\n props.catalogSearch();\r\n }\r\n };\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\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 { IDynCookieComplianceData } from './dyn-cookie-compliance.data';\r\nimport { IDynCookieComplianceProps } from './dyn-cookie-compliance.props.autogenerated';\r\n\r\nexport interface IDynCookieComplianceViewProps extends IDynCookieComplianceProps {\r\n onAccept(): void;\r\n // onCancel(): void;\r\n}\r\n\r\n/**\r\n *\r\n * DynCookieCompliance component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass DynCookieCompliance extends React.PureComponent> {\r\n public constructor(props: IDynCookieComplianceProps) {\r\n super(props);\r\n // All of _msdyn365_# cookies are considered as required by Tebu and Dyn ...\r\n // theoretically should only be called on onAccept which is triggered by Commerce inline script (in cookiebot bridge component)\r\n // window.addEventListener('CookiebotOnAccept', function (e) {document.getElementById('commerce-cookie-consent-accept').click();}, false);\r\n this.props.context.request.cookies.setConsentCookie();\r\n }\r\n\r\n private readonly _onAccept = (): void => {\r\n const context = this.props.context;\r\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n };\r\n\r\n // private readonly _onCancel = (): void => {\r\n // const context = this.props.context;\r\n // if (context && context.request && context.request.cookies && context.request.cookies.isConsentGiven()) {\r\n // context.request.cookies.deleteConsentCookie();\r\n // location.reload();\r\n // }\r\n // };\r\n\r\n public render(): JSX.Element | null {\r\n const viewProps = {\r\n ...this.props,\r\n onAccept: this._onAccept.bind(this)\r\n // onCancel: this._onCancel\r\n };\r\n return this.props.renderView(viewProps);\r\n }\r\n}\r\n\r\nexport default DynCookieCompliance;\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 { IDynCookieComplianceViewProps } from './dyn-cookie-compliance';\r\n\r\nexport default (props: IDynCookieComplianceViewProps) => {\r\n return (\r\n <>\r\n \r\n {/* */}\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\n/* eslint-disable no-duplicate-imports */\r\nimport {\r\n IBuyboxAddToCartViewProps,\r\n IBuyboxAddToOrderTemplateViewProps,\r\n IBuyboxAddToWishlistViewProps,\r\n IBuyboxCallbacks,\r\n IBuyboxData,\r\n IBuyboxFindInStoreViewProps,\r\n IBuyboxKeyInPriceViewProps,\r\n IBuyboxProductConfigureDropdownViewProps,\r\n IBuyboxProductConfigureViewProps,\r\n IBuyboxProductQuantityViewProps,\r\n IBuyboxProps,\r\n IBuyboxShopSimilarLookViewProps,\r\n IBuyboxState,\r\n IBuyboxViewProps\r\n} from '@msdyn365-commerce-modules/buybox';\r\nimport { IncrementalQuantity, ITelemetryContent, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IBuyboxProps as IBuyboxExtentionProps, IBuyboxResources as IBuyboxExtentionResources } from '../definition-extensions/buybox.ext.props.autogenerated';\r\n\r\nconst BuyboxView: React.FC> = props => {\r\n const { ModuleProps, MediaGalleryContainerProps, ProductInfoContainerProps,\r\n addToCart, addToOrderTemplate, addToWishlist,\r\n telemetryContent, configure, description, findInStore,\r\n quantity, price, title, rating, callbacks, state, resources, inventoryLabel, shopSimilarLook, keyInPrice,\r\n quantityLimitsMessages, max, shopSimilarDescription, unitOfMeasure } = props;\r\n\r\n return (\r\n \r\n \r\n {props.mediaGallery}\r\n \r\n \r\n {title}\r\n {price}\r\n {unitOfMeasure}\r\n {description}\r\n { _renderTextBlock(props.slots.textBlocks)}\r\n {rating}\r\n {configure && _renderConfigure(configure)}\r\n {keyInPrice && _renderKeyInPrice(keyInPrice)}\r\n {quantity && _renderQuantity(quantity, callbacks, props, state, resources, quantityLimitsMessages, max, telemetryContent)}\r\n {inventoryLabel}\r\n { _renderCartAndActions(addToCart, addToOrderTemplate, addToWishlist)}\r\n {findInStore && _renderFindInStore(findInStore)}\r\n { _renderSocialShare(props.slots && props.slots?.socialShare)}\r\n {shopSimilarLook && _renderShopSimilarItem(shopSimilarLook)}\r\n {shopSimilarDescription && _renderShopSimilarItem(shopSimilarDescription)}\r\n \r\n \r\n );\r\n};\r\n\r\nconst _renderTextBlock = (textBlocks: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!textBlocks || textBlocks.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {textBlocks[0]}\r\n \r\n );\r\n};\r\n\r\nconst _renderSocialShare = (socialShare: React.ReactNode[]): JSX.Element | undefined => {\r\n if (!socialShare || socialShare.length === 0) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n <>\r\n {socialShare[0]}\r\n \r\n );\r\n};\r\n\r\nconst _renderCartAndActions = (\r\n addToCart?: IBuyboxAddToCartViewProps,\r\n addToOrderTemplate?: IBuyboxAddToOrderTemplateViewProps,\r\n addToWishlist?: IBuyboxAddToWishlistViewProps): JSX.Element | undefined => {\r\n if (!addToCart && !addToWishlist) {\r\n return undefined;\r\n }\r\n\r\n return (\r\n
\r\n {addToCart && addToCart.errorBlock}\r\n {addToOrderTemplate && addToOrderTemplate.errorBlock}\r\n {addToWishlist && addToWishlist.errorBlock}\r\n
\r\n {addToCart && addToCart.button}\r\n {addToOrderTemplate && addToOrderTemplate.button}\r\n {addToWishlist && addToWishlist.button}\r\n
\r\n
\r\n );\r\n};\r\n\r\nconst _renderConfigure = (configure: IBuyboxProductConfigureViewProps): JSX.Element => {\r\n const { ContainerProps, dropdowns } = configure;\r\n\r\n return (\r\n \r\n {dropdowns.map(_renderConfigureDropdown)}\r\n \r\n );\r\n};\r\n\r\nconst _renderConfigureDropdown = (dropdown: IBuyboxProductConfigureDropdownViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors, select } = dropdown;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n {select}\r\n \r\n );\r\n};\r\n\r\nconst _renderFindInStore = (findInStore: IBuyboxFindInStoreViewProps): JSX.Element => {\r\n const { ContainerProps, storeSelector, heading, description, errors, button, modal, productPickupOptionList } = findInStore;\r\n\r\n return (\r\n \r\n {storeSelector}\r\n {heading}\r\n {productPickupOptionList}\r\n {description}\r\n {errors}\r\n {button}\r\n {modal}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * On Change function.\r\n * @param callbacks -Callbacks.\r\n * @returns Update quantity.\r\n */\r\nconst onChangeHandler = (callbacks: IBuyboxCallbacks) => (newValue: number): boolean => {\r\n if (callbacks.updateQuantity) {\r\n return callbacks.updateQuantity(newValue);\r\n }\r\n return true;\r\n};\r\n\r\nconst _renderQuantity = (\r\n quantityComponent: IBuyboxProductQuantityViewProps,\r\n callbacks: IBuyboxCallbacks,\r\n props: IBuyboxProps,\r\n state: IBuyboxState,\r\n extentionResources: IBuyboxExtentionResources,\r\n quantityLimitsMessages: React.ReactNode,\r\n max: number | undefined,\r\n telemetryContent?: ITelemetryContent): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, errors } = quantityComponent;\r\n\r\n const {\r\n resources\r\n } = props;\r\n\r\n const\r\n {\r\n quantity\r\n } = state;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n {errors}\r\n \r\n\r\n \r\n {quantityLimitsMessages}\r\n \r\n );\r\n};\r\n\r\nconst _renderKeyInPrice = (keyInPrice: IBuyboxKeyInPriceViewProps): JSX.Element => {\r\n const { ContainerProps, LabelContainerProps, heading, input } = keyInPrice;\r\n\r\n return (\r\n \r\n \r\n {heading}\r\n \r\n {input}\r\n \r\n\r\n );\r\n};\r\n\r\nconst _renderShopSimilarItem = (shopSimilarItem: IBuyboxShopSimilarLookViewProps): JSX.Element => {\r\n const { ContainerProps, errors, input } = shopSimilarItem;\r\n\r\n return (\r\n \r\n {errors}\r\n {input}\r\n \r\n );\r\n};\r\n\r\nexport default BuyboxView;\r\n","/*!\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { HtmlHeadInclude, IAny, IGeneric } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\nimport { IDefaultPageSummaryData } from './default-page-summary.data';\nimport { IDefaultPageSummaryProps } from './default-page-summary.props.autogenerated';\n\n/**\n *\n * DefaultPageSummaryMetadata component.\n * @extends {React.PureComponent}\n */\nclass DefaultPageSummary extends React.PureComponent> {\n public render(): JSX.Element {\n if (this.props.data.pageSummary.result === undefined) {\n throw new Error('PageSummaryData input to page-summary is undefined. Unable to generate page-summary');\n }\n let {\n data: {\n pageSummary: {\n result: { title, description, keywords, sharingImageUrl, faviconUrl }\n }\n }\n } = this.props;\n\n const {\n config,\n context,\n data: {\n pageSummary: {\n result: { canonicalUrl }\n }\n }\n } = this.props;\n\n // Override values coming from data action if config values are provided\n title = config.title || title;\n description = config.description || description;\n keywords = config.keywords || keywords;\n sharingImageUrl = (config.sharingImage && config.sharingImage.src) || sharingImageUrl;\n faviconUrl = config.faviconUrl || faviconUrl;\n\n const pageTitle = this._constructPageTitle(title, context && context.request && context.request.app);\n return (\n <>\n \n {pageTitle && {pageTitle}}\n {description && }\n {keywords && }\n {canonicalUrl && }\n {faviconUrl && }\n \n {!config.disableOgTags && this._renderOgTags(pageTitle, description, sharingImageUrl)}\n {!config.disableTwitterTags && this._renderTwitterTags(pageTitle, description, sharingImageUrl)}\n \n );\n }\n\n private _renderOgTags(title: string | undefined, description: string | undefined, sharingImageUrl: string | undefined): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _renderTwitterTags(\n title: string | undefined,\n description: string | undefined,\n sharingImageUrl: string | undefined\n ): JSX.Element {\n return (\n \n {title && }\n {description && }\n {sharingImageUrl && }\n \n \n );\n }\n\n private _constructPageTitle(title: string | undefined, app: IGeneric): string | undefined {\n if (!title) {\n title = '';\n }\n\n const moduleConfig = this.props.config;\n if (moduleConfig && moduleConfig.ignoreTitleSuffixPrefix) {\n return title;\n }\n\n const appConfig = app && app.platform;\n if (appConfig) {\n if (appConfig.pageTitlePrefix) {\n title = (appConfig.pageTitlePrefix as string) + title;\n }\n if (appConfig.pageTitleSuffix) {\n title += appConfig.pageTitleSuffix as string;\n }\n }\n\n return title;\n }\n}\n\nexport default DefaultPageSummary;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ISocialShareConfig, ISocialShareProps, orientation } from './social-share.props.autogenerated';\n\nexport interface ISocialShareViewProps extends ISocialShareProps {\n isConsentGiven: boolean;\n SocialShareItemElements: React.ReactNode[];\n SocialShare: IModuleProps;\n SocialShareList: INodeProps;\n SocialShareItem: INodeProps;\n SocialShareItemCustomization: INodeProps;\n}\n\n/**\n *\n * SocialShare component.\n * @extends {React.PureComponent>}\n */\nclass SocialShare extends React.PureComponent> {\n constructor(props: ISocialShareProps) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { slots } = this.props;\n\n if (!slots || !ArrayExtensions.hasElements(slots.socialShareItems)) {\n this.props.context.telemetry.error('No social media is enable for sharing, module wont render');\n return null;\n }\n\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!isConsentGiven && !this.props.context.request.params.isEditor) {\n return null;\n }\n\n const viewprops = {\n ...this.props,\n SocialShare: {\n moduleProps: this.props,\n className: classnames('ms-social-share', this.props.config.className)\n },\n SocialShareList: {\n 'data-title': this.props.config.caption,\n className: `ms-social-share-ul ${this.props.config.caption && 'caption'} ${\n this.props.config.orientation === orientation.vertical ? 'vertical' : ''\n }`,\n tag: 'ul',\n role: 'group'\n },\n SocialShareItem: {\n className: 'ms-social-share-li',\n tag: 'li',\n tabIndex: '0',\n role: 'link'\n },\n SocialShareItemElements: slots && slots.socialShareItems.length > 0 && slots.socialShareItems\n };\n\n return this.props.renderView(viewprops) as React.ReactElement;\n }\n}\n\nexport default SocialShare;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ISocialShareViewProps } from './social-share';\n\nexport const SocialShareView: React.FC = props => {\n const { SocialShareList, SocialShareItemElements, SocialShareItem, SocialShare } = props;\n if (SocialShareItemElements.length === 0) {\n props.context.telemetry.error('Social media list is empty, module wont render');\n return null;\n }\n return (\n \n \n {SocialShareItemElements.map((SocialShareElement: ReactNode, index: number) => {\n return (\n \n {SocialShareElement}\n \n );\n })}\n \n \n );\n};\n\nexport default SocialShareView;\n"],"names":["DynCatalogSearch","React","_handleChange","event","filter","target","value","toString","transformedFilter","String","includes","split","this","setState","_catalogSearch","window","location","assign","props","context","actionContext","requestContext","sitePath","state","constructor","super","bind","render","_objectSpread","handleChange","catalogSearch","renderView","className","onChange","placeholder","config","catalogSearchSlaceholderText","onKeyDown","key","onClick","DynCookieCompliance","_onAccept","request","cookies","isConsentGiven","setConsentCookie","reload","viewProps","onAccept","id","_renderTextBlock","textBlocks","length","_renderSocialShare","socialShare","_renderCartAndActions","addToCart","addToOrderTemplate","addToWishlist","errorBlock","button","_renderConfigure","configure","ContainerProps","dropdowns","Node","Object","map","_renderConfigureDropdown","dropdown","LabelContainerProps","heading","errors","select","_renderFindInStore","findInStore","storeSelector","description","modal","productPickupOptionList","onChangeHandler","callbacks","newValue","updateQuantity","_renderQuantity","quantityComponent","extentionResources","quantityLimitsMessages","max","telemetryContent","resources","quantity","IncrementalQuantity","currentCount","inputQuantityAriaLabel","decrementButtonAriaLabel","incrementButtonAriaLabel","minQuantityText","maxQuantityText","_renderKeyInPrice","keyInPrice","input","_renderShopSimilarItem","shopSimilarItem","_props$slots","ModuleProps","MediaGalleryContainerProps","ProductInfoContainerProps","price","title","rating","inventoryLabel","shopSimilarLook","shopSimilarDescription","unitOfMeasure","Module","mediaGallery","slots","CatalogPicker","handleTextChange","text","handleParagraphChange","paragraph","_heading$tag","_this$props$data$cata","catalogPickerHeading","Text","_moduleClassName","tag","editProps","onEdit","isCatalogsAvailable","ArrayExtensions","hasElements","data","catalogs","result","catalogPickerParagraph","RichTextComponent","catalogValidationText","handleText","catalogPicker","moduleProps","_renderCatalogPicker","_renderCatalogPickerButton","item","catalogId","RecordId","getCatalogId","currentCatalogText","linkToCatalog","Msdyn365","isBrowser","_getUrlSync","catalogUrl","getUrlSync","fullUrl","URL","href","searchParams","set","Button","changeCatalogButtonText","_this$props$data$cata2","role","reactKey","JSON","stringify","image","firstOrDefault","Images","tabIndex","Name","Image","src","generateImageUrl","apiSettings","Uri","gridSettings","imageSettings","galleryImageSettings","altText","AltText","loadFailureBehavior","CatalogPickerViewFunctionComponent","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","menuItemList","locale","nameTranslations","nameTranslation","find","Language","toLowerCase","componentDidMount","MsDyn365","resizeThrottledEventHandler","addThrottledEvent","componentWillUnmount","removeEventListener","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","telemetry","error","viewports","xs","q","w","h","xl","lazyload","Navigation","classnames","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","index","push","_constructMenuItemData","undefined","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_NavigationMenu$getFr2","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","Retail","ariaLabel","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","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","_ref","_categoryImage$imageS","categoryImageSettings","menuItemRef","getTelemetryObject","telemetryPageName","friendlyName","payLoad","getPayloadObject","document","body","addEventListener","componentDidUpdate","_this$menuItemRef$cur","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","_renderMenu","onFocus","hoverEffect","isParent","imagesource","contentAction","etext","attributes","getTelemetryAttributes","onMouseOver","onTelemetryClick","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","DefaultPageSummary","pageSummary","Error","keywords","sharingImageUrl","faviconUrl","canonicalUrl","sharingImage","pageTitle","_constructPageTitle","app","HtmlHeadInclude","name","content","rel","disableOgTags","_renderOgTags","disableTwitterTags","_renderTwitterTags","property","moduleConfig","ignoreTitleSuffixPrefix","appConfig","platform","pageTitlePrefix","pageTitleSuffix","SocialShare","socialShareItems","params","isEditor","viewprops","SocialShareList","caption","orientation","SocialShareItem","SocialShareItemElements","SocialShareView","SocialShareElement"],"sourceRoot":""}