{"version":3,"file":"static/js/27.e6232ff65db09ccaed8b.chunk.js","mappings":"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","sources":["webpack://Citta2.0/./src/modules/accordion/accordion.tsx?78b1","webpack://Citta2.0/./src/modules/accordion-item/accordion-item.tsx?36f7","webpack://Citta2.0/./src/modules/navigation-menu/navigation-menu.data.ts?9815","webpack://Citta2.0/./src/modules/navigation-menu/navigation-menu.tsx?2bef","webpack://Citta2.0/./src/modules/site-picker/site-picker.tsx?b9ec","webpack://Citta2.0/./src/modules/accordion-item/accordion-item.view.tsx?a302","webpack://Citta2.0/./src/modules/accordion/accordion.view.tsx?8c7b","webpack://Citta2.0/./src/modules/navigation-menu/navigation-menu.view.tsx?c594","webpack://Citta2.0/./src/modules/site-picker/site-picker.view.tsx?5319"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput } from '../..';\nimport { IAccordionData } from './accordion.data';\nimport { IAccordionProps } from './accordion.props.autogenerated';\n\n/**\n *\n * Accordion component.\n * @extends {React.PureComponent>}\n */\n\nexport interface ICallToActionProps {\n link: INodeProps[];\n}\n\n/**\n * Added interface for state management.\n */\nexport interface IAccordianState {\n isDisabled: boolean;\n}\n\nexport interface IAccordionViewProps extends IAccordionProps<{}> {\n heading?: React.ReactNode;\n AccordionContainer: IModuleProps;\n HeaderSection: INodeProps;\n HeadingWrapper: INodeProps;\n accordianButtonsContainer: INodeProps;\n accordionButtons: React.ReactNode;\n accordionItemContainer: INodeProps;\n accordionItems: React.ReactNode;\n}\n\n/**\n *\n * Accordion component.\n * @extends {React.Component>}\n */\n@observer\nclass Accordion extends React.PureComponent, IAccordianState> {\n private readonly telemetryContent?: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n private readonly expandAllButtonRef: React.RefObject = React.createRef();\n\n private readonly collapseAllButtonRef: React.RefObject = React.createRef();\n\n constructor(props: IAccordionProps) {\n super(props);\n this._onExpandAll = this._onExpandAll.bind(this);\n this._onCollapseAll = this._onCollapseAll.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 this.state = { isDisabled: false };\n }\n\n public render(): JSX.Element {\n const { slots } = this.props;\n const { heading, className } = this.props.config;\n const headingComponent = heading && heading.text && (\n \n );\n\n const accordionViewProps = {\n ...this.props,\n AccordionContainer: {\n moduleProps: this.props,\n className: classnames('ms-accordion', className)\n },\n HeaderSection: { className: 'ms-accordion-header-section' },\n HeadingWrapper: { className: 'ms-accordion-header-section-container' },\n heading: headingComponent,\n config: this.props && this.props.config,\n accordianButtonsContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-header-section-toggle-button-container'\n },\n accordionButtons: this._renderAccordionButton(),\n accordionItemContainer: {\n tag: 'div' as NodeTag,\n className: 'ms-accordion-item-section'\n },\n accordionItems:\n slots &&\n slots.accordionItems &&\n slots.accordionItems.length > 0 &&\n slots.accordionItems.map((item: React.ReactNode, index: number) => this._getAccordionItem(item, index))\n };\n return this.props.renderView(accordionViewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading!.text = event.target.value);\n\n private _renderAccordionButton(): React.ReactNode | null {\n const { config, resources } = this.props;\n const { heading } = config;\n this.payLoad.contentAction.etext = TelemetryConstant.ExpandAll;\n const attributeExpandAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n this.payLoad.contentAction.etext = TelemetryConstant.CollapseAll;\n const attributeCollapseAll = getTelemetryAttributes(this.telemetryContent!, this.payLoad);\n if (!config.showToggleAll) {\n this.props.context.telemetry.error('Accordion button content is empty, module wont render');\n return null;\n }\n return (\n <>\n \n {resources.expandAllText}\n \n  \n {resources.toggleAllSeparator}\n  \n \n {resources.collapseAllText}\n \n \n );\n }\n\n private _onExpandAll(): void {\n const accordionState = { isAllExpanded: true };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (accordionState.isAllExpanded) {\n this.setState({\n isDisabled: true\n });\n setTimeout(() => {\n this.collapseAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _onCollapseAll(): void {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n if (!accordionState.isAllExpanded) {\n this.setState({\n isDisabled: false\n });\n setTimeout(() => {\n this.expandAllButtonRef.current?.focus();\n }, 50);\n }\n }\n\n private _getAccordionItem(item: React.ReactNode, index: number): React.ReactNode {\n return (\n \n {React.cloneElement(item as React.ReactElement, { interactionStyle: this.props.config.interactionStyle })}\n \n );\n }\n}\n\nexport default Accordion;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { ControlledDrawer, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport { IDrawerState } from '@msdyn365-commerce-modules/utilities/dist/types/drawer/Drawer';\nimport classnames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { createAccordionStateInput, interactionStyle } from '../..';\nimport { IAccordionItemData } from './accordion-item.data';\nimport { IAccordionItemProps } from './accordion-item.props.autogenerated';\n\nexport interface IAccordionItemViewProps {\n AccordionItemContainer: IModuleProps;\n drawer: INodeProps;\n accordionSlots: INodeProps;\n AccordionItemContent: INodeProps;\n className: string;\n}\n\nexport interface IAccordionItemExtentedProps extends IAccordionItemProps {\n interactionStyle?: interactionStyle;\n}\n\n/**\n *\n * AccordionItem component.\n * @extends {React.Component}\n */\n@observer\nclass AccordionItem extends React.Component {\n private readonly moduleClassName: string = 'ms-accordion-item';\n\n private readonly telemetryContent?: ITelemetryContent;\n\n constructor(props: IAccordionItemProps) {\n super(props);\n this._onToggle = this._onToggle.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public shouldComponentUpdate(nextProps: IAccordionItemProps): boolean {\n if (this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { slots, renderView, config, data } = this.props;\n const accordionExpandedStateResult = data && data.accordionExpandedState && data.accordionExpandedState.result;\n const expanded =\n accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded === undefined\n ? data && config.isExpandedOnInitialLoad\n : accordionExpandedStateResult && accordionExpandedStateResult.isAllExpanded;\n const viewProps = {\n ...this.props,\n AccordionItemContainer: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n AccordionItemContent: {\n className: 'ms-accordion-item-content'\n },\n drawer: {\n tag: ControlledDrawer,\n className: `${this.moduleClassName}__drawer`,\n toggleButtonText: (config.accordionItemTitle && config.accordionItemTitle) || '',\n collapseProps: { isOpen: expanded },\n onToggle: this._onToggle,\n onTextChange: this.handleHeadingChange,\n requestContext: this.props.context.request,\n telemetryContent: this.telemetryContent\n },\n accordionSlots: slots\n };\n return renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.accordionItemTitle = event.target.value);\n\n private _onToggle(state: IDrawerState): void {\n if (!state.isOpen && this.props.interactionStyle === interactionStyle.ExpandOneItemOnly) {\n const accordionState = { isAllExpanded: false };\n this.props.context.actionContext.update(createAccordionStateInput(accordionState), accordionState);\n }\n }\n}\nexport default AccordionItem;\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, { IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { addThrottledEvent, Drawer, IModuleProps, INodeProps, KeyCodes, NodeTag } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, observable } from 'mobx';\nimport React from 'react';\n\nimport { ISitePickerConfig, ISitePickerProps } from './site-picker.props.autogenerated';\n\nexport interface ISitePickerViewProps extends ISitePickerProps {\n SitePicker: IModuleProps;\n SitePickerMenu: INodeProps;\n SitePickerMenuSpan: INodeProps;\n SitePickerMenuList: INodeProps;\n SitePickerMenuListItem: INodeProps;\n SitePickerMenuListItemArray: React.ReactNode[] | undefined;\n siteOptionsState: boolean;\n SitePickerMobileContainer: INodeProps;\n isMobileView: boolean;\n renderSiteOptions(): void;\n resetSiteOptionsState(): void;\n}\n\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\ninterface ISitePickerState {\n expandSiteOptions: boolean;\n isMobile: boolean;\n}\n\n/**\n *\n * SitePicker component.\n * @extends {React.PureComponent>}\n */\nclass SitePicker extends React.PureComponent, ISitePickerState> {\n private readonly _cookieName: string = '_msdyn365___site_';\n\n private readonly _cookieExpirationInSeconds: number = 5_184_000;\n\n private readonly _sitePickerMenuNode: React.RefObject;\n\n private readonly _sitePickerMenuButton: React.RefObject;\n\n private resizeThrottledEventHandler?: (event: Event) => void;\n\n @observable\n private viewport: GridSize;\n\n public constructor(props: ISitePickerViewProps) {\n super(props);\n this._handleChange = this._handleChange.bind(this);\n this._sitePickerMenuNode = React.createRef();\n this._sitePickerMenuButton = React.createRef();\n this._renderSiteOptions = this._renderSiteOptions.bind(this);\n this._resetSiteOptionsState = this._resetSiteOptionsState.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this._handleOutsideClick = this._handleOutsideClick.bind(this);\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.state = {\n expandSiteOptions: false,\n isMobile: this.isMobile\n };\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 document?.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.addEventListener('mousedown', this._handleOutsideClick);\n this.resizeThrottledEventHandler = window && addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\n this._updateViewport();\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document?.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document?.body?.removeEventListener('mousedown', this._handleOutsideClick, false);\n window && window.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\n }\n }\n\n public render(): JSX.Element | null {\n const viewProps: ISitePickerViewProps = {\n ...(this.props as ISitePickerProps),\n SitePicker: {\n moduleProps: this.props,\n className: classnames('ms-site-picker', this.props.config.className, this.state.isMobile ? 'mobile-view' : 'desktop-view'),\n tag: 'div'\n },\n SitePickerMenu: {\n tag: 'button' as NodeTag,\n className: 'ms-site-picker__button',\n 'aria-label': this.props.config.heading?.text,\n 'aria-expanded': this.state.expandSiteOptions,\n onClick: this.props,\n ref: this._sitePickerMenuButton\n },\n SitePickerMenuSpan: {\n className: 'ms-site-picker__span',\n tag: 'span'\n },\n SitePickerMenuList: {\n className: 'ms-site-picker__list',\n role: 'menu',\n tag: 'ul',\n ref: this._sitePickerMenuNode\n },\n SitePickerMenuListItem: {\n className: 'ms-site-picker__list__item',\n role: 'presentation',\n tag: 'li'\n },\n SitePickerMobileContainer: {\n tag: Drawer,\n className: 'ms-site-picker__drawer',\n toggleButtonText: this.props.config.heading?.text,\n openGlyph: 'ms-site-picker__drawer-open',\n closeGlyph: 'ms-site-picker__drawer-close',\n glyphPlacement: 'end'\n },\n isMobileView: this.state.isMobile,\n SitePickerMenuListItemArray: this._renderSitePickerImage(),\n renderSiteOptions: this._renderSiteOptions,\n resetSiteOptionsState: this._resetSiteOptionsState,\n siteOptionsState: this.state.expandSiteOptions\n };\n return this.props.renderView(viewProps);\n }\n\n private _renderSiteOptions(): void {\n const expandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !expandSiteOptionsState\n });\n }\n\n private _resetSiteOptionsState(): void {\n this.setState({\n expandSiteOptions: false\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _escFunction = (event: any) => {\n const key = event.keyCode;\n if (this.state.expandSiteOptions) {\n switch (key) {\n case KeyCodes.Escape: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n this._sitePickerMenuButton?.current?.contains(nextFocus) ||\n this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n this._sitePickerMenuButton?.current?.focus();\n }\n }, 50);\n break;\n }\n case KeyCodes.Tab: {\n setTimeout(() => {\n const nextFocus = document && document.activeElement;\n if (\n !this._sitePickerMenuButton?.current?.contains(nextFocus) &&\n !this._sitePickerMenuNode?.current?.contains(nextFocus)\n ) {\n this._resetSiteOptionsState();\n }\n }, 50);\n break;\n }\n default:\n return;\n }\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _handleOutsideClick = (event: any) => {\n if (\n (this._sitePickerMenuButton.current?.contains(event.target) && this.state.expandSiteOptions) ||\n (this._sitePickerMenuNode.current?.contains(event.target) && this.state.expandSiteOptions)\n ) {\n return;\n }\n this._resetSiteOptionsState();\n };\n\n private _handleChange(e: React.MouseEvent): void {\n e.preventDefault();\n if (e.currentTarget.href && e.currentTarget.href.length > 0 && window) {\n if (this.props.context.request.cookies.isConsentGiven()) {\n const cookieConfig = { maxAge: this._cookieExpirationInSeconds };\n this.props.context.request.cookies.set(this._cookieName, e.currentTarget.href, cookieConfig);\n }\n window.location.assign(e.currentTarget.href);\n }\n }\n\n private _renderSitePickerImage(): React.ReactNode[] | undefined {\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n sm: { q: 'w=50&h=25&m=6', w: 0, h: 0 },\n md: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n lg: { q: 'w=40&h=20&m=6', w: 0, h: 0 },\n xl: { q: 'w=40&h=20&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n const siteOptions = this.props.config.siteOptions && this.props.config.siteOptions;\n return (\n siteOptions &&\n siteOptions.map((item, index) => {\n const image = item?.siteImage;\n const imageProps = {\n gridSettings: this.props.context.request.gridSettings!,\n imageSettings: image?.imageSettings?.viewports ? image.imageSettings : defaultImageSettings\n };\n return (\n \n {item?.siteName}\n \n \n );\n })\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 if (context.request && context.request.device && context.request.device.Type === 'Mobile') {\n return 'xs';\n }\n\n if (typeof window !== undefined && 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 return 'xs';\n }\n}\n\nexport default SitePicker;\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 * as React from 'react';\n\nimport { IAccordionItemViewProps } from './accordion-item';\n\nconst AccordionItemView: React.FC = props => {\n const { drawer, accordionSlots, AccordionItemContainer, AccordionItemContent } = props;\n return (\n \n \n \n {accordionSlots &&\n accordionSlots.accordionItemContent &&\n accordionSlots.accordionItemContent.length &&\n _renderAccordionItemContent(accordionSlots.accordionItemContent)}\n \n \n \n );\n};\n\nconst _renderAccordionItemContent = (items: React.ReactNode[]): JSX.Element | null => {\n return (\n <>\n {items && items.length > 0\n ? items.map((item: React.ReactNode, index: number) => {\n return {item};\n })\n : null}\n \n );\n};\nexport default AccordionItemView;\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 * as React from 'react';\n\nimport { IAccordionViewProps } from './accordion';\n\nconst accordionView: React.FC = props => {\n const { heading, AccordionContainer, accordionItems } = props;\n if (!props.heading && !props.accordionButtons && !props.accordionItems) {\n props.context.telemetry.error('Accordion content is empty, module wont render');\n return null;\n }\n return (\n \n \n {heading}\n {props.accordionButtons && {props.accordionButtons}}\n \n {accordionItems}\n \n );\n};\n\nexport default accordionView;\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISitePickerViewProps } from './site-picker';\n\nexport default (props: ISitePickerViewProps) => {\n return <>{_renderSitePicker(props)};\n};\n\nconst _renderDesktopView = (props: ISitePickerViewProps) => {\n const { SitePickerMenu, SitePickerMenuSpan } = props;\n return (\n <>\n \n {props.config.heading?.text}\n \n \n {props.siteOptionsState ? _renderSiteOptionsList(props) : null}\n \n );\n};\n\nconst _renderSiteOptionsList = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMenuList, SitePickerMenuListItem, SitePickerMenuListItemArray } = props;\n const options = SitePickerMenuListItemArray!.map((item, index) => {\n return (\n \n {item}\n \n );\n });\n return (\n \n {options}\n \n );\n};\n\nconst _renderMobileView = (props: ISitePickerViewProps): React.ReactNode => {\n const { SitePickerMobileContainer } = props;\n return (\n \n
\n {props.SitePickerMenuListItemArray?.map((item, index) => {\n return
{item}
;\n })}\n
\n
\n );\n};\n\nconst _renderSitePicker = (props: ISitePickerViewProps): React.ReactNode => {\n const { isMobileView, SitePicker } = props;\n return {isMobileView ? _renderMobileView(props) : _renderDesktopView(props)};\n};\n"],"names":["Accordion","React","constructor","props","super","expandAllButtonRef","collapseAllButtonRef","handleHeadingChange","event","this","config","heading","text","target","value","_onExpandAll","bind","_onCollapseAll","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","payLoad","getPayloadObject","state","isDisabled","render","slots","className","headingComponent","Msdyn365","tag","editProps","onEdit","requestContext","accordionViewProps","_objectSpread","AccordionContainer","moduleProps","classnames","HeaderSection","HeadingWrapper","accordianButtonsContainer","accordionButtons","_renderAccordionButton","accordionItemContainer","accordionItems","length","map","item","index","_getAccordionItem","renderView","resources","contentAction","etext","TelemetryConstant","ExpandAll","attributeExpandAll","getTelemetryAttributes","CollapseAll","attributeCollapseAll","showToggleAll","Object","assign","disabled","expandAllText","onClick","ref","toggleAllSeparator","collapseAllText","error","accordionState","isAllExpanded","actionContext","update","createAccordionStateInput","setState","setTimeout","_this$collapseAllButt","current","focus","_this$expandAllButton","key","interactionStyle","__decorate","observer","AccordionItem","moduleClassName","accordionItemTitle","_onToggle","shouldComponentUpdate","nextProps","data","accordionExpandedStateResult","accordionExpandedState","result","expanded","undefined","isExpandedOnInitialLoad","AccordionItemContainer","AccordionItemContent","drawer","ControlledDrawer","toggleButtonText","collapseProps","isOpen","onToggle","onTextChange","accordionSlots","MenuTypeIndexId","MenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","_updateViewport","viewport","device","Type","navigationMenuSource","isMobile","menuItemList","static","locale","nameTranslations","nameTranslation","find","Language","toLowerCase","Text","componentDidMount","MsDyn365","isBrowser","resizeThrottledEventHandler","addThrottledEvent","window","componentWillUnmount","removeEventListener","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","viewProps","imageSettings","viewports","xs","q","w","h","xl","lazyload","gridSettings","Navigation","role","MenuList","ListItem","showCategoryImage","displayCategoryImage","showPromotionalContent","displayPromotionalImage","Link","DivContainer","ImageDivContainer","Button","ImageContainer","Span","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","isMobileView","menuItemData","mergedData","categories","push","_constructMenuItemData","cmsNavItems","idx","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","id","linkText","rootMenuNavigation","linkURL","imageSource","subMenu","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","filter","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","Name","_NavigationMenu$getFr","_NavigationMenu$getFr2","ArrayExtensions","hasElements","Images","Uri","RSItemIdInit","getFriendlyName","NameTranslations","Url","_getNestedChildren","promotionalContent","menuSource","Retail","ariaLabel","CMSItemIdInit","linkUrl","destinationUrl","imageDestinationURL","imageLink","image","src","_getCMSNestedChildren","Cms","shouldOpenNewTab","openInNewTab","category","imageSourceUrl","arguments","nestedChildren","Children","allCategoryMenuText","getCategoryUrl","subMenus","_getViewport","innerWidth","sm","md","lg","observable","computed","SitePicker","_cookieName","_cookieExpirationInSeconds","_escFunction","keyCode","expandSiteOptions","KeyCodes","Escape","_this$_sitePickerMenu","_this$_sitePickerMenu2","nextFocus","document","activeElement","_this$_sitePickerMenu3","_sitePickerMenuButton","contains","_sitePickerMenuNode","_resetSiteOptionsState","Tab","_this$_sitePickerMenu4","_this$_sitePickerMenu5","_handleOutsideClick","_this$_sitePickerMenu6","_this$_sitePickerMenu7","_handleChange","_renderSiteOptions","_document","_document2","addEventListener","body","_document3","_document4","_this$props$config$he","_this$props$config$he2","SitePickerMenu","SitePickerMenuSpan","SitePickerMenuList","SitePickerMenuListItem","SitePickerMobileContainer","Drawer","openGlyph","closeGlyph","glyphPlacement","SitePickerMenuListItemArray","_renderSitePickerImage","renderSiteOptions","resetSiteOptionsState","siteOptionsState","expandSiteOptionsState","e","preventDefault","currentTarget","href","cookies","isConsentGiven","cookieConfig","maxAge","set","location","defaultImageSettings","siteOptions","_image$imageSettings","_item$siteRedirectUrl","siteImage","imageProps","tabIndex","siteRedirectUrl","siteName","Image","altText","loadFailureBehavior","shouldSkipToMainImage","_renderAccordionItemContent","items","Module","Node","accordionItemContent","NavigationMenuView","currentLevel","_updateCategoryImage","categoryImageSrc","option","promotionalImage","imageSrc","promotionalItemImageSettings","additionalProperties","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isBackTrack","activeMenu","mobileViewLabelText","parentMenu","_handleGoBack","_handleClickOutside","menuNode","_handleFocusOutside","relatedTarget","_closeSubmenu","_shouldAddFocusMenuRef","optionLinkText","_getCategoryImage","_ref","_categoryImage$imageS","generateImageUrl","apiSettings","categoryImageSettings","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children","_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","attributes","onMouseOver","onTelemetryClick","_renderPromotionalLink","level","currentItem","submenu","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","_renderSitePicker","_renderSiteOptionsList","options","onMouseLeave","_props$SitePickerMenu","_renderMobileView","_props$config$heading","_renderDesktopView"],"sourceRoot":""}