{"version":3,"file":"static/js/1bff9e647c6347f8423f.bundle.js","mappings":"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","sources":["webpack://mattressfirm/./src/Utilities/get-view-port.tsx?4210","webpack://mattressfirm/./src/Utilities/plp-url-utils.ts?728b","webpack://mattressfirm/./src/data-actions/navigation-menu-state-data-action.ts?8ae5","webpack://mattressfirm/./src/themes/mattressfirm/custom-components/header-preferred-store.tsx?8ed0","webpack://mattressfirm/./src/themes/mattressfirm/custom-components/logo.tsx?1c87","webpack://mattressfirm/./src/themes/mattressfirm/views/header.view.tsx?6bd0","webpack://mattressfirm/./lib/header/module-registration.js?4d67","webpack://mattressfirm/./src/store-selector-state-manager/base-store-selector-state-manager.ts?281e","webpack://mattressfirm/./src/store-selector-state-manager/map-store-selector-state-manager.ts?2ae0","webpack://mattressfirm/./src/store-selector-state-manager/store-selector-state-manager-data-action.ts?bd3e","webpack://mattressfirm/./src/modules/header/components/header-preferred-store.tsx?ee9c","webpack://mattressfirm/./src/modules/header/components/logo.tsx?f27e","webpack://mattressfirm/./src/modules/header/components/nav-icon.tsx?2475","webpack://mattressfirm/./src/modules/header/header.tsx?e91a","webpack://mattressfirm/./src/modules/header/header.view.tsx?cf0f","webpack://mattressfirm/external var \"React\"?0d3b","webpack://mattressfirm/external var \"ReactDOM\"?853b"],"sourcesContent":["import MsDyn365, { ICoreContext } from '@msdyn365-commerce/core';\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nconst _getViewPort = (context: ICoreContext): GridSize => {\r\n if (MsDyn365.isBrowser && window.innerWidth) {\r\n const gridSettings = context.request.gridSettings;\r\n if (gridSettings) {\r\n if (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n return 'xs';\r\n } else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n return 'sm';\r\n } else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n return 'md';\r\n } else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n return 'lg';\r\n } else {\r\n return 'xl';\r\n }\r\n }\r\n }\r\n return 'xs';\r\n};\r\n\r\nexport default _getViewPort;\r\n","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\r\nexport interface IVirtualRefinersConfig {\r\n order: number;\r\n refinerName: string;\r\n enableForMattresses: boolean;\r\n enableForOtherCategories: boolean;\r\n allowDuplicate: boolean;\r\n}\r\n\r\n/**\r\n * This will create the canonicalURL as per 7924 requirement\r\n * @param requestContext\r\n * @returns string of canonical URL\r\n */\r\nexport const canonicalURL = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const origin = requestUrl.origin;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove double values containing pipe sign\r\n if (path.match(/%7c/)) {\r\n urlParts = removePipeSignValue(urlParts);\r\n }\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n const filteredPath = urlParts?.join('/');\r\n\r\n return `${origin}/${filteredPath}`;\r\n};\r\n\r\nexport const filteredURL = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n const filteredPath = urlParts?.join('/');\r\n\r\n return `/${filteredPath}`;\r\n};\r\n\r\n/**\r\n * This will create the canonicalURL as per 7924 requirement\r\n * @param requestContext\r\n * @returns string of canonical URL\r\n */\r\nexport const canonicalURLWithoutBaseUrl = (requestContext: IRequestContext): string => {\r\n const requestUrl = requestContext.url.requestUrl;\r\n const path = requestUrl.pathname.toLowerCase();\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('\\/').splice(1);\r\n\r\n // remove double values containing pipe sign\r\n if (path.match(/%7c/)) {\r\n urlParts = removePipeSignValue(urlParts);\r\n }\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n return urlParts?.join('\\/');\r\n};\r\n\r\n/**\r\n * This will remove the Pipe sign value set from urlParts\r\n * @param urlParts\r\n * @returns\r\n */\r\nexport const removePipeSignValue = (urlParts: string[]) => {\r\n // urlParts.forEach((part, index) => {\r\n // const indexOfValue = urlParts.indexOf('%7c');\r\n // if (indexOfValue !== -1) {\r\n // urlParts.splice(indexOfValue, 1);\r\n // }\r\n // });\r\n\r\n if (urlParts !== undefined && urlParts.length > 0) {\r\n urlParts = urlParts.filter(urlPart => urlPart.indexOf('%7c') === -1);\r\n }\r\n\r\n return urlParts;\r\n};\r\n\r\n/**\r\n * This will remove the keywords from urlParts array which were received from\r\n * the app.settings.json/CMS Extensions\r\n * @param urlParts\r\n * @param requestContext\r\n * @returns urlParts array filtered\r\n */\r\nexport const removeKeywords = (urlParts: string[], requestContext: IRequestContext): string[] => {\r\n const removeKeywordFromUrl = requestContext.app.config.removeKeywordFromUrl;\r\n\r\n if (urlParts.length > 0 && removeKeywordFromUrl && removeKeywordFromUrl.length > 0) {\r\n const removeKeywordFromUrlArray: string[] = removeKeywordFromUrl?.trim().split(',');\r\n removeKeywordFromUrlArray?.length > 0 &&\r\n urlParts.forEach(_part => {\r\n removeKeywordFromUrlArray.forEach(removeKeyword => {\r\n const trimmedKeyword = removeKeyword.trim().toLowerCase();\r\n const indexOfValue = urlParts.indexOf(trimmedKeyword);\r\n if (trimmedKeyword.length > 0 && indexOfValue !== -1) {\r\n urlParts.splice(indexOfValue, 1);\r\n }\r\n });\r\n });\r\n }\r\n\r\n return urlParts;\r\n};\r\n\r\n/**\r\n * This will sort the Virtual refiner config based on order and return\r\n * only active virtual refiner configs based on isMattress category will\r\n * be returned\r\n * @param requestContext\r\n * @param isMattressesCategory boolean | undefined\r\n * @returns IVirtualRefinersConfig[] | undefined\r\n */\r\nexport const getSortedVirtualRefinerConfig = (\r\n requestContext: IRequestContext,\r\n isMattressesCategory: boolean | undefined\r\n): IVirtualRefinersConfig[] | undefined => {\r\n let appConfigSorted = getVirtualRefinerConfig(requestContext);\r\n\r\n // sort the config by provided config\r\n if (appConfigSorted) {\r\n if (isMattressesCategory === true) {\r\n appConfigSorted = appConfigSorted.filter(appConfig => {\r\n return appConfig.enableForMattresses;\r\n });\r\n } else if (isMattressesCategory === false) {\r\n appConfigSorted = appConfigSorted.filter(appConfig => {\r\n return appConfig.enableForOtherCategories;\r\n });\r\n }\r\n appConfigSorted.sort((a: IVirtualRefinersConfig, b: IVirtualRefinersConfig) => {\r\n return a.order - b.order;\r\n });\r\n }\r\n\r\n return appConfigSorted;\r\n};\r\n\r\n/**\r\n * Virtual refiner names from the app.settings.json will be returned which can be used\r\n * to filter out refiners data based upon active virtual refiners\r\n * @param requestContext\r\n * @param isMattressesCategory boolean | undefined\r\n * @returns string[]\r\n */\r\nexport const getVirtualRefinerNames = (requestContext: IRequestContext, isMattressesCategory: boolean | undefined): string[] => {\r\n const sortedVirtualRefinerConfig = getSortedVirtualRefinerConfig(requestContext, isMattressesCategory);\r\n\r\n const appConfigRefinerNames: string[] = [];\r\n\r\n sortedVirtualRefinerConfig &&\r\n sortedVirtualRefinerConfig.forEach(sortedConfig => {\r\n appConfigRefinerNames.push(sortedConfig.refinerName.trim().toLowerCase());\r\n });\r\n\r\n return appConfigRefinerNames;\r\n};\r\n\r\n/**\r\n * This will return the value of virtual refiner configuration\r\n * @param requestContext\r\n * @returns IVirtualRefinersConfig[] | undefined\r\n */\r\nexport const getVirtualRefinerConfig = (requestContext: IRequestContext): IVirtualRefinersConfig[] => {\r\n return requestContext.app.config.urlModifications;\r\n};\r\n\r\nexport async function getVirtualRefinerValues(\r\n requestContext: IRequestContext,\r\n virtualRefiners: IProductRefinerHierarchy[]\r\n): Promise {\r\n const virtualRefinerValues: ProductRefinerValue[] = [];\r\n if (virtualRefiners.length === 0) {\r\n return virtualRefinerValues;\r\n }\r\n const requestUrl = requestContext.url.requestUrl;\r\n // const origin = requestUrl.origin;\r\n const path = requestUrl.pathname;\r\n\r\n // separate out url parts split on forward / and remove first empty index\r\n let urlParts = path?.split('/').splice(1);\r\n\r\n // remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n // remove category id {categoryid}.c\r\n const categoryIdToken = requestContext.urlTokens.recordId;\r\n const categoryId = categoryIdToken ? `${categoryIdToken}.c` : undefined;\r\n\r\n if (categoryId) {\r\n urlParts.splice(-1);\r\n }\r\n\r\n // run loop for each url part and get values from refiners for further usage\r\n const finalizedUrlParts: string[] = [];\r\n urlParts.forEach(plainUrlPart => {\r\n const urlPart = decodeURIComponent(plainUrlPart);\r\n if (urlPart.indexOf('|') !== -1) {\r\n const splitOnPipeSign = urlPart?.split('|');\r\n const filteredParts = splitOnPipeSign.filter(part => part.length > 0);\r\n filteredParts.forEach(filteredPart => {\r\n finalizedUrlParts.push(filteredPart.toLowerCase().trim());\r\n });\r\n }\r\n finalizedUrlParts.push(urlPart);\r\n });\r\n finalizedUrlParts.forEach((urlPart) => {\r\n virtualRefiners.forEach((mainRefiner) => {\r\n mainRefiner.Values.forEach((refinerValue) => {\r\n const refinerValueKeyName = refinerValue.LeftValueBoundString?.toLowerCase().trim().split(' ')?.join('-').replace(/\\&/g, 'and').replace(regExSpecialChars(requestContext.app.config.canonicalUrlspecialCharIncludeList), '-');\r\n if (refinerValueKeyName && refinerValueKeyName === urlPart) {\r\n virtualRefinerValues.push(refinerValue);\r\n }\r\n });\r\n });\r\n });\r\n\r\n return virtualRefinerValues;\r\n}\r\n\r\n/**\r\n * For navigation menu links, it will remove keywords configured in global configurations from the navigation link\r\n * and clp link and return url path string\r\n * @param link\r\n * @param requestContext\r\n * @returns string\r\n */\r\nexport const navLinkKeywordRemoval = (link: string, requestContext: IRequestContext): string => {\r\n // Using the rest operator in case there is a weirdly formatted URL with multiple question marks.\r\n const [linkBase, ...linkParams] = link?.split('?');\r\n\r\n // Only apply to category links, which end in .c. Check that a keyword is configured.\r\n if (!linkBase.endsWith('.c') || !requestContext.app.config) {\r\n return link;\r\n }\r\n\r\n // Separate out url parts split on forward /\r\n let urlParts = linkBase?.split('\\/');\r\n\r\n // Remove unwanted keywords from url\r\n urlParts = removeKeywords(urlParts, requestContext);\r\n\r\n // Glue the URL params back together\r\n const linkParam = linkParams.map(param => `?${param}`)?.join('');\r\n\r\n // Rebuild URL by joining with forward slash and appending any URL parameters\r\n const filteredLink = `${urlParts?.join('/')}${linkParam}`;\r\n return `${filteredLink}`;\r\n};\r\nexport const regExSpecialChars = (includeConfigList: string): RegExp => {\r\n let includeConfig = '';\r\n if (includeConfigList !== undefined && includeConfigList !== '') {\r\n includeConfig = includeConfigList?.trim().split(',')?.join('\\\\\\\\');\r\n includeConfig = includeConfig && includeConfig !== '' ? `\\\\\\\\${includeConfig}` : '';\r\n const pattern = `[^\\\\w\\\\&\\\\|${includeConfig}]`;\r\n return new RegExp(pattern, 'gi');\r\n } else {\r\n\r\n const pattern = `[^\\\\w\\\\&\\\\|]`;\r\n return new RegExp(pattern, 'gi');\r\n }\r\n};\r\n","import {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { INavigationMenuState } from './navigation-menu-state';\r\n\r\n/**\r\n * NavigationMenuState - action input\r\n */\r\nexport class NavMenuStateInput implements IActionInput {\r\n public getCacheKey = () => `NavMenuState`;\r\n public getCacheObjectType = () => 'NavMenuState';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * NavMenuStateInput - action\r\n */\r\nexport async function navMenuStateAction(input: NavMenuStateInput, ctx: IActionContext): Promise {\r\n return { isMenuHasParent: false, isMobileMenuCollapsed: true, selectedNavMenu: '', menuItemData: [] };\r\n}\r\n\r\n/**\r\n * NavMenuStateInput - create new input for create action\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new NavMenuStateInput();\r\n};\r\n\r\n/**\r\n * NavMenuStateInput - create action\r\n */\r\nexport default createObservableDataAction({\r\n action: >navMenuStateAction,\r\n input: createInput\r\n});\r\n","// VSI Customization - starts\r\nimport { IHeaderData } from '@msdyn365-commerce-modules/header/dist/types/modules/header/header.data';\r\nimport MsDyn365, { Text } from '@msdyn365-commerce/core';\r\nimport { OrgUnitLocation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { observer } from 'mobx-react';\r\nimport * as React from 'react';\r\nimport { IHeaderProps } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { IMfrmExtendedStoreSelectorData } from '../views/header.data';\r\n// VSI Customization - ends\r\n\r\n/**\r\n * The header preferred store component\r\n */\r\n@observer\r\nexport class HeaderPreferredStore extends React.PureComponent> {\r\n public handleClick = () => {\r\n // VSI Customization - starts\r\n MsDyn365.isBrowser && document.body.classList.add('modal-store-locator-toggle');\r\n const pageURL = MsDyn365.isBrowser && window.location.pathname;\r\n // @ts-ignore\r\n if ('utag' in window) {\r\n // @ts-ignore\r\n utag.link({\r\n event: \"store-locator-slideout-open\",\r\n event_category: \"store locator slideout\",\r\n event_action: \"open shelf\",\r\n event_label: `from: ${pageURL}`,\r\n event_noninteraction: \"false\"\r\n });\r\n }\r\n return this._findPreferreStoreOnClick(this.props);\r\n // VSI Customization - ends\r\n };\r\n\r\n // VSI Customization - starts\r\n public handleClose = (): void => {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n }\r\n } = this.props;\r\n\r\n MsDyn365.isBrowser && document.body.classList.remove('modal-store-locator-toggle');\r\n storeSelectorStateManager?.closeDialog();\r\n };\r\n // VSI Customization - ends\r\n\r\n public render(): JSX.Element | undefined {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n slots,\r\n resources\r\n } = this.props;\r\n // VSI Customization - starts\r\n const isModalOpen =\r\n (this.props.data.storeSelectorState &&\r\n this.props.data.storeSelectorState.result &&\r\n this.props.data.storeSelectorState.result.isModalOpen) ||\r\n false;\r\n\r\n\r\n if (MsDyn365.isBrowser && slots && slots.mfrmStoreSelector && slots.mfrmStoreSelector.length) {\r\n const mfrmPrefferedStore: OrgUnitLocation = localStorage.getItem('_mfrm__prefferedStore_')\r\n ? JSON.parse(localStorage.getItem('_mfrm__prefferedStore_') || '')\r\n : null;\r\n const sociPrefferedStore: any = localStorage.getItem('_mfrm__prefferedStore_')\r\n ? JSON.parse(localStorage.getItem('_mfrm__prefferedStore_') || '')\r\n : null;\r\n if (mfrmPrefferedStore === undefined) {\r\n localStorage.removeItem('_msdyn365__preferredStore_');\r\n }\r\n const storeCity =\r\n storeSelectorStateManager && (storeSelectorStateManager.preferredStore && storeSelectorStateManager.preferredStore.StoreId) ===\r\n (mfrmPrefferedStore && mfrmPrefferedStore.OrgUnitNumber) && mfrmPrefferedStore?.City &&\r\n resources.mfrmStoreCity.replace('{city}', `${mfrmPrefferedStore?.City}`) || undefined;\r\n const sociStoreCity = this.props.app.config.enableSociLocations && sociPrefferedStore?.city &&\r\n resources.mfrmStoreCity.replace('{city}', `${sociPrefferedStore?.city}`) || undefined;\r\n\r\n const city = this.props.app.config.enableSociLocations ? sociStoreCity : storeCity;\r\n\r\n return (\r\n <>\r\n {/* VSI Customization - starts */}\r\n \r\n {/* Replaced with Text componentfor rendering html */}\r\n {/* {storeName} */}\r\n {\r\n \r\n }\r\n \r\n {slots.mfrmStoreSelector}\r\n {/* VSI Customization - starts */}\r\n \r\n );\r\n }\r\n\r\n return ;\r\n }\r\n\r\n private async _findPreferreStoreOnClick(props: IHeaderProps): Promise {\r\n const {\r\n data: {\r\n storeSelectorStateManager: { result: storeSelectorStateManager }\r\n },\r\n modules\r\n } = props;\r\n if (!storeSelectorStateManager) {\r\n return;\r\n }\r\n let storeSelectorId: string = '';\r\n // VSI Customization - starts\r\n if (modules && Object.keys(modules).length > 0 && modules.mfrmStoreSelector && modules.mfrmStoreSelector.length > 0) {\r\n storeSelectorId = modules.mfrmStoreSelector[0].id;\r\n }\r\n // VSI Customization - ends\r\n await storeSelectorStateManager\r\n .openDialog({\r\n id: storeSelectorId,\r\n showMapViewLink: false,\r\n onLocationSelected: orgUnitLocation => {\r\n return Promise.resolve();\r\n }\r\n })\r\n .catch((error: Error) => {\r\n if (props.telemetry) {\r\n props.telemetry.error(error.message);\r\n props.telemetry.debug('Unable to set preferred store');\r\n }\r\n return;\r\n });\r\n }\r\n}\r\n\r\nexport default HeaderPreferredStore;\r\n\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport * as React from 'react';\r\n\r\nexport interface ILogoProps {\r\n image: Msdyn365.IImageData;\r\n gridSettings?: Msdyn365.IGridSettings;\r\n link?: ILinkData;\r\n className?: string;\r\n telemetryContent?: ITelemetryContent;\r\n requestContext: Msdyn365.IRequestContext;\r\n}\r\n\r\nexport interface ILinkData {\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n linkText?: string;\r\n}\r\n\r\n/**\r\n *\r\n * Logo component\r\n * @extends {React.PureComponent}\r\n */\r\nexport class Logo extends React.PureComponent {\r\n private attributes?: Msdyn365.IDictionary;\r\n\r\n constructor(props: ILogoProps) {\r\n super(props);\r\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\r\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\r\n }\r\n public render(): JSX.Element {\r\n return (\r\n // tslint:disable-next-line: react-a11y-event-has-role\r\n ) => {\r\n // @ts-ignore\r\n if (utag) {\r\n event.preventDefault();\r\n const isExternal = this.props.link?.linkUrl.type === 'externalLink' ? true : false;\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n const internalDestinationUrl =\r\n this.props.link?.linkUrl.destinationUrl === '/'\r\n ? '/'\r\n : this.props.link?.linkUrl.destinationUrl.split(location.host)[1];\r\n const internalLocalUrl =\r\n Msdyn365.msdyn365Commerce.isBrowser &&\r\n (window.location.href === '/' ? '/' : window.location.href.split(location.host)[1].split('?')[0]);\r\n const eventAction = isExternal ? `to: ${this.props.link?.linkUrl.destinationUrl}` : `to: ${internalDestinationUrl}`;\r\n const eventLabel = isExternal\r\n ? `from ${this.props.link?.ariaLabel} logo: ${Msdyn365.msdyn365Commerce.isBrowser && window.location.href}`\r\n : `from ${this.props.link?.ariaLabel} logo: ${internalLocalUrl}`;\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes\r\n utag.link({\r\n event: eventName,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n event_label: eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n if (Msdyn365.msdyn365Commerce.isBrowser) {\r\n const isOpenInNewTab = this.props.link?.openInNewTab;\r\n !isOpenInNewTab\r\n ? (window.location.href = this.props.link?.linkUrl.destinationUrl!)\r\n : window.open(this.props.link?.linkUrl.destinationUrl);\r\n }\r\n }\r\n }}\r\n >\r\n {this._renderLogo(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderLogo(config: ILogoProps): JSX.Element {\r\n if (config.link && config.link.linkUrl.destinationUrl) {\r\n return (\r\n \r\n {this._renderImage(config)}\r\n \r\n );\r\n }\r\n return this._renderImage(config);\r\n }\r\n\r\n private _renderImage(config: ILogoProps): JSX.Element {\r\n const defaultImageSettings: Msdyn365.IImageSettings = {\r\n viewports: {\r\n xs: { q: `w=0&h=0&m=6`, w: 0, h: 0 },\r\n lg: { q: `w=0&h=0&m=6`, w: 0, h: 0 },\r\n xl: { q: `w=0&h=0&m=6`, w: 0, h: 0 }\r\n },\r\n lazyload: false,\r\n disableLazyLoad: true\r\n };\r\n // TODO: add imageSettings to logo from config\r\n // config && config.image && config.image.imageSettings || defaultImageSettings\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Logo;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header/src/modules/header/./header';\r\n/* VSI-Customization - Start */\r\nimport {\r\n addThrottledEvent,\r\n Button,\r\n getPayloadObject,\r\n getTelemetryAttributes,\r\n getTelemetryObject,\r\n Modal,\r\n ModalBody,\r\n ModalHeader,\r\n Module,\r\n Node,\r\n onTelemetryClick,\r\n TelemetryConstant\r\n} from '@msdyn365-commerce-modules/utilities';\r\n/* VSI-Customization - End */\r\nimport * as MsDyn365 from '@msdyn365-commerce/core';\r\n/* VSI-Customization - Start */\r\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport get from 'lodash/get';\r\nimport * as React from 'react';\r\nimport { NavMenuStateInput } from '../../../data-actions/navigation-menu-state-data-action';\r\nimport _getViewPort from '../../../Utilities/get-view-port';\r\nimport { navLinkKeywordRemoval } from '../../../Utilities/plp-url-utils';\r\nimport { HeaderPreferredStore } from '../custom-components/header-preferred-store';\r\nimport Logo from '../custom-components/logo';\r\nimport { IHeaderProps, IHeaderResources, IUtilityLinksData } from '../definition-extensions/header.ext.props.autogenerated';\r\nimport { IMfrmExtendedNavMenuData, IMfrmExtendedStoreSelectorData, ISecondaryNavItemsData } from './header.data';\r\n/* VSI-Customization - End */\r\n\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nconst headerView: React.FC> = props => {\r\n const [isPageScroll, setIsPageScroll] = React.useState(false);\r\n const [isMobile, setIsMobile] = React.useState(false);\r\n const [isTablet, setIsTablet] = React.useState(false);\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, MobileMenuLinksContainer, config, context } = props;\r\n // change tag to div so there isnt nested \r\n const updatedHeaderTag = {\r\n moduleProps: HeaderTag.moduleProps,\r\n className: classnames(HeaderTag.className),\r\n tag: 'div'\r\n };\r\n\r\n {\r\n /* VSI-Customization - Start - destructured and filtered data */\r\n }\r\n const mfrmMenuBar =\r\n (props.slots && props.slots.extendedMenuBar && props.slots.extendedMenuBar.length && props.slots.extendedMenuBar) || props.menuBar;\r\n const mfrmSearch =\r\n (props.slots && props.slots.mfrmSearchSlot && props.slots.mfrmSearchSlot.length && props.slots.mfrmSearchSlot) || props.search;\r\n const storeSelector = props.slots &&\r\n props.slots.mfrmStoreSelector &&\r\n props.slots.mfrmStoreSelector.length &&\r\n props.data.storeSelectorStateManager && ;\r\n const mfrmNotfications =\r\n props.slots && props.slots.mfrmNotifications && props.slots.mfrmNotifications.length && props.slots.mfrmNotifications;\r\n const mfrmCartIcon = props.slots && props.slots.mfrmCartIcon && props.slots.mfrmCartIcon.length && props.slots.mfrmCartIcon;\r\n const { secondaryLogoLink, secondaryLogoImage, utilityLinks, isHeaderSticky } = config;\r\n const desktopUtilityLinks = utilityLinks && utilityLinks.filter(link => link.showUnderUtilityDesktop === true);\r\n const tabUtilityLinks = utilityLinks && utilityLinks.filter(link => link.showUnderUtilityTab === true);\r\n const hamburgerUtilityLinks = utilityLinks && utilityLinks.filter(link => link.showUnderHamburger === true);\r\n const hamburgerTabUtilityLinks =\r\n utilityLinks && utilityLinks.filter(link => link.showUnderHamburger === true && link.hideFromTab !== true);\r\n const navMenuParentActive = props.data.navMenuState.result?.isMenuHasParent;\r\n const secondaryNavConfig = get(mfrmMenuBar[0], 'props.config') || [];\r\n const { secondaryNavItems, menuItemsLimitDesktop, menuItemsLimitMobile } = secondaryNavConfig;\r\n const menuItemLimit = isMobile || isTablet ? menuItemsLimitMobile : menuItemsLimitDesktop;\r\n const secondaryNavLimit = menuItemLimit !== undefined ? menuItemLimit : secondaryNavItems ? secondaryNavItems.length : 0 || 0;\r\n const customer = props.data.accountInformation?.result;\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const stickyNavigation = () => {\r\n const InitialTopBarSize =\r\n (MsDyn365.msdyn365Commerce.isBrowser &&\r\n document\r\n .getElementsByClassName('ms-header__topbar')\r\n .item(0)\r\n ?.getBoundingClientRect().height) ||\r\n 0;\r\n const [visibleHeight, setVisibleHeight] = React.useState(0);\r\n const [topBarVisibleHeight, setTopBarVisibleHeight] = React.useState(0);\r\n const scrollValue = 0;\r\n const scrollBarWidth = MsDyn365.msdyn365Commerce.isBrowser && window.innerWidth - document.body.offsetWidth;\r\n const windowWidth = MsDyn365.msdyn365Commerce.isBrowser && document.documentElement.clientWidth;\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n if (props.mobileMenuCollapsed !== true) {\r\n document.body.style.setProperty('overflow', 'hidden');\r\n document.documentElement.style.setProperty('overflow', 'hidden');\r\n } else {\r\n document.body.style.removeProperty('overflow');\r\n document.documentElement.style.removeProperty('overflow');\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n MsDyn365.msdyn365Commerce.isBrowser &&\r\n addThrottledEvent(window, 'resize', () => updateViewPort(context, setIsOpen, setIsMobile, setIsTablet));\r\n updateViewPort(context, setIsOpen, setIsMobile, setIsTablet);\r\n });\r\n\r\n // for viewport innerHeight\r\n const InitialHeight = MsDyn365.msdyn365Commerce.isBrowser && document.documentElement.clientHeight;\r\n const [androidBannerViewHeight, setAndroidBannerViewHeight] = React.useState(87);\r\n const wrapperElement = document.querySelector('.ms-header__container__wrapper');\r\n const secondaryElement = document.querySelector('.ms-header__secondary');\r\n const bannerElement = document.querySelector('.mfrm-android-banner-container');\r\n\r\n if (bannerElement) {\r\n const bannerStyle = getComputedStyle(bannerElement);\r\n if (bannerStyle.display === 'flex') {\r\n if (androidBannerViewHeight === 0) {\r\n wrapperElement?.classList.add('ms-header__container__wrapper--lock');\r\n secondaryElement?.classList.add('ms-header__secondary--lock');\r\n } else if (window.pageYOffset > 87) {\r\n wrapperElement?.classList.add('ms-header__container__wrapper--lock');\r\n secondaryElement?.classList.add('ms-header__secondary--lock');\r\n } else if (androidBannerViewHeight > 0 && androidBannerViewHeight <= 87) {\r\n wrapperElement?.classList.remove('ms-header__container__wrapper--lock');\r\n secondaryElement?.classList.remove('ms-header__secondary--lock');\r\n }\r\n } else {\r\n wrapperElement?.classList.add('ms-header__container__wrapper--lock');\r\n secondaryElement?.classList.add('ms-header__secondary--lock');\r\n }\r\n }\r\n\r\n // storing viewheight into css variable\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n document.documentElement.style.setProperty('--windowSize', `${InitialHeight}px`);\r\n document.documentElement.style.setProperty('--topBarSize', `${topBarVisibleHeight}px`);\r\n document.documentElement.style.setProperty('--scrollbarWidth', `${scrollBarWidth}px`);\r\n document.documentElement.style.setProperty('--windowWidth', `${windowWidth}px`);\r\n document.documentElement.style.setProperty('--initialTopbarSize', `${InitialTopBarSize}px`);\r\n document.documentElement.style.setProperty('--storeLocatorSize', `${visibleHeight}px`);\r\n document.documentElement.style.setProperty('--pageYOffset', `${androidBannerViewHeight}px`);\r\n window.addEventListener('resize', () => {\r\n const vh = document.documentElement.clientHeight;\r\n const scrollBarWidthUpdate = window.innerWidth - document.body.offsetWidth;\r\n const windowWidthUpdate = document.documentElement.clientWidth;\r\n document.documentElement.style.setProperty('--windowSize', `${vh}px`);\r\n document.documentElement.style.setProperty('--scrollbarWidth', `${scrollBarWidthUpdate}px`);\r\n document.documentElement.style.setProperty('--windowWidth', `${windowWidthUpdate}px`);\r\n });\r\n window.addEventListener('scroll', () => {\r\n setAndroidBannerViewHeight(Math.max((87 - window.pageYOffset), 0));\r\n });\r\n }\r\n\r\n if (isPageScroll === true) {\r\n MsDyn365.msdyn365Commerce.isBrowser && document.documentElement.style.setProperty('--topBarSize', `0px`);\r\n MsDyn365.msdyn365Commerce.isBrowser && document.documentElement.style.setProperty('--storeLocatorSize', `0px`);\r\n }\r\n\r\n const _topBarSize = () => {\r\n const mobileTopBarSize =\r\n (MsDyn365.msdyn365Commerce.isBrowser &&\r\n document\r\n .getElementsByClassName('ms-header__topbar')\r\n .item(0)\r\n ?.getBoundingClientRect().bottom) ||\r\n 0;\r\n {\r\n mobileTopBarSize > 0 && setTopBarVisibleHeight(mobileTopBarSize);\r\n }\r\n };\r\n\r\n const _storeLocatorSize = () => {\r\n const storeLocatorSize =\r\n (MsDyn365.msdyn365Commerce.isBrowser &&\r\n document\r\n .getElementsByClassName('ms-header__preferred-store-container')\r\n .item(0)\r\n ?.getBoundingClientRect().bottom) ||\r\n 0;\r\n {\r\n storeLocatorSize > 0 && setVisibleHeight(storeLocatorSize);\r\n }\r\n };\r\n\r\n React.useEffect(() => {\r\n _topBarSize();\r\n _storeLocatorSize();\r\n MsDyn365.msdyn365Commerce.isBrowser &&\r\n window.addEventListener('scroll', () => {\r\n _mainMenuScroll(scrollValue, isPageScroll, setIsPageScroll, isOpen);\r\n _topBarSize();\r\n _storeLocatorSize();\r\n });\r\n return () => {\r\n MsDyn365.msdyn365Commerce.isBrowser &&\r\n window.removeEventListener('scroll', () => {\r\n _mainMenuScroll(scrollValue, isPageScroll, setIsPageScroll, isOpen);\r\n _topBarSize();\r\n _storeLocatorSize();\r\n });\r\n };\r\n });\r\n\r\n React.useEffect(() => {\r\n if (props.data.navMenuState.result) {\r\n props.context.actionContext.update(new NavMenuStateInput(), { isMobileMenuCollapsed: props.mobileMenuCollapsed });\r\n }\r\n }, [props.mobileMenuCollapsed]);\r\n };\r\n\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n stickyNavigation();\r\n }\r\n\r\n const toggleModal = () => {\r\n setIsOpen(prevState => !prevState);\r\n MsDyn365.msdyn365Commerce.isBrowser && document.body.classList.toggle('header-fixed');\r\n };\r\n\r\n {\r\n /* VSI-Customization - End */\r\n }\r\n\r\n {\r\n /** VSI Customization - Start - 04/02/2021 */\r\n }\r\n {\r\n /** Checkout page header customization */\r\n }\r\n if (props.config.headerType && props.config.headerType === 'checkout') {\r\n const phoneNumber = props.config.phoneNumberCheckoutPage ? `tel:+${props.config.phoneNumberCheckoutPage}` : '';\r\n return (\r\n // @ts-ignore\r\n \r\n \r\n \r\n {props.logo}\r\n {props.config.phoneNumberCheckoutPage ?\r\n {props.config.phoneNumberCheckoutPage}\r\n : ''\r\n }\r\n {mfrmCartIcon}\r\n \r\n \r\n \r\n );\r\n }\r\n {\r\n /** VSI Customization - End - 04/02/2021 */\r\n }\r\n // tslint:disable-next-line: cyclomatic-complexity\r\n return (\r\n // @ts-ignore\r\n \r\n \r\n \r\n \r\n {/* VSI-Customization - Start - Added MFRM Notifications slot */}\r\n {mfrmNotfications}\r\n {/* VSI-Customization - End */}\r\n {/* VSI-Customization - Start - Utility secondary logo and utility links */}\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n {desktopUtilityLinks &&\r\n desktopUtilityLinks.length > 0 &&\r\n desktopUtilityLinks.map((link: IUtilityLinksData, index: number) => (\r\n {\r\n const isChat = link.ariaLabel === 'Chat' ? true : false;\r\n\r\n if (isChat) {\r\n event.preventDefault();\r\n // tslint:disable: no-function-expression\r\n // tslint:disable: typedef\r\n setTimeout(function () {\r\n // eslint-disable-next-line no-eval\r\n eval(\r\n `var elems = document.querySelectorAll('.uiButton.helpButtonEnabled, .minimizedContainer.helpButton'); if(elems != undefined && elems.length > 0) { if(elems.length > 1){elems[1].click()} else {elems[0].click()}}`\r\n );\r\n // eslint-disable-next-line no-eval\r\n // eval(\r\n // `document.querySelectorAll('.embeddedServiceHelpButton')[0].classList.add('show-chat');`\r\n // );\r\n }, 1000);\r\n // @ts-ignore\r\n if (utag) {\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes\r\n utag.link({\r\n event: 'chat-widget-initiated',\r\n event_type: 'chat_click',\r\n event_category: 'chat',\r\n event_action: 'click',\r\n event_label: 'chat engagement'\r\n });\r\n }\r\n }\r\n\r\n // @ts-ignore\r\n if (utag) {\r\n event.preventDefault();\r\n const isExternal = link.linkUrl.type === 'externalLink' ? true : false;\r\n const isPhoneNum = link.linkUrl.destinationUrl.startsWith('tel') ? true : false;\r\n let eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n let eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n let eventAction = '';\r\n let eventLabel = `from header: ${MsDyn365.msdyn365Commerce.isBrowser &&\r\n window.location.href}`;\r\n let eventType = '';\r\n\r\n if (isPhoneNum) {\r\n eventName = 'call-engagement';\r\n eventCategory = 'call';\r\n eventAction = 'header click';\r\n eventLabel = 'call engagement';\r\n eventType = 'call_engagement';\r\n } else if (isChat) {\r\n eventName = 'chat-widget-initiated';\r\n eventType = 'chat_click';\r\n eventCategory = 'chat';\r\n eventAction = 'click';\r\n eventLabel = 'chat engagement';\r\n } else {\r\n eventAction = `to: ${link.linkUrl.destinationUrl}`;\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes\r\n utag.link({\r\n event: eventName,\r\n event_type: eventType,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n event_label: eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n if (MsDyn365.msdyn365Commerce.isBrowser && !isChat === true) {\r\n const isOpenInNewTab = link.openInNewTab;\r\n !isOpenInNewTab\r\n ? (window.location.href = link.linkUrl.destinationUrl)\r\n : window.open(link.linkUrl.destinationUrl);\r\n }\r\n }\r\n }}\r\n >\r\n {link.linkText}\r\n \r\n ))}\r\n
\r\n
\r\n {tabUtilityLinks &&\r\n tabUtilityLinks.length > 0 &&\r\n tabUtilityLinks.map((link: IUtilityLinksData, index: number) => (\r\n {\r\n const isChat = link.ariaLabel === 'Chat' ? true : false;\r\n const isPhoneNum = link.linkUrl.destinationUrl.startsWith('tel') ? true : false;\r\n const isExternal = link.linkUrl.type === 'externalLink' ? true : false;\r\n let eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n let eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n let eventAction = `to: ${link.linkUrl.destinationUrl}`;\r\n let eventLabel = `from header: ${MsDyn365.msdyn365Commerce.isBrowser && window.location.href}`;\r\n let eventType = '';\r\n\r\n if (isChat) {\r\n event.preventDefault();\r\n // tslint:disable: no-function-expression\r\n // tslint:disable: typedef\r\n setTimeout(function () {\r\n // eslint-disable-next-line no-eval\r\n eval(\r\n `var elems = document.querySelectorAll('.uiButton.helpButtonEnabled, .minimizedContainer.helpButton, .sidebarHeader.minimizedContainer'); if(elems != undefined && elems.length > 0) { if(elems.length > 1){elems[1].click()} else {elems[0].click()}}`\r\n );\r\n }, 1000);\r\n } else if (isPhoneNum) {\r\n eventName = 'call-engagement';\r\n eventCategory = 'call';\r\n eventAction = 'header click';\r\n eventLabel = 'call engagement';\r\n eventType = 'call_engagement';\r\n }\r\n // @ts-ignore\r\n if (utag) {\r\n event.preventDefault();\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes\r\n utag.link({\r\n event: eventName,\r\n event_type: eventType,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n event_label: eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n if (MsDyn365.msdyn365Commerce.isBrowser && !isChat === true) {\r\n const isOpenInNewTab = link.openInNewTab;\r\n !isOpenInNewTab\r\n ? (window.location.href = link.linkUrl.destinationUrl)\r\n : window.open(link.linkUrl.destinationUrl);\r\n }\r\n }\r\n }}\r\n >\r\n {link.linkText}\r\n \r\n ))}\r\n
\r\n
\r\n
\r\n {/* VSI-Customization - End - Utility secondary logo and utility links */}\r\n
\r\n
\r\n
\r\n {props.navIcon}\r\n {
{_renderReactFragment(mfrmMenuBar)}
}\r\n {_renderReactFragment(mfrmSearch)}\r\n
\r\n {!isMobile && (\r\n \r\n \r\n \r\n )}\r\n {mfrmCartIcon}\r\n
\r\n \r\n \r\n \r\n
{_renderDesktopAccountBlock(props)}
\r\n
\r\n \r\n
\r\n {/* Mobile Container starts here */}\r\n \r\n \r\n \r\n {props.data.accountInformation && props.data.accountInformation.result && (\r\n

{props.resources.accountHeading}

\r\n )}\r\n {props.accountLinks &&\r\n props.accountLinks[0] &&\r\n props.accountLinks.filter((link, index) => index === 0)[0]}\r\n {_signInButton(customer, props.context.request.user, props)}\r\n {props.signOutLink}\r\n {!props.accountLinks && _signUpButton(customer, props.context.request.user, props)}\r\n {/* Todo: Placeholder Create account Link - END */}\r\n
\r\n {_renderReactFragment(mfrmMenuBar)}\r\n \r\n {hamburgerUtilityLinks &&\r\n hamburgerUtilityLinks.length > 0 &&\r\n hamburgerUtilityLinks.map((link: IUtilityLinksData, index: number) => {\r\n const navUrl = navLinkKeywordRemoval(\r\n (link.linkUrl && link.linkUrl.destinationUrl) || '',\r\n props.context.request\r\n );\r\n return (\r\n
  • \r\n {\r\n const isChat = link.ariaLabel === 'Chat' ? true : false;\r\n\r\n if (isChat) {\r\n event.preventDefault();\r\n // tslint:disable: no-function-expression\r\n // tslint:disable: typedef\r\n setTimeout(function () {\r\n // eslint-disable-next-line no-eval\r\n eval(\r\n `var elems = document.querySelectorAll('.uiButton.helpButtonEnabled, .minimizedContainer.helpButton, .sidebarHeader.minimizedContainer'); if(elems != undefined && elems.length > 0) { if(elems.length > 1){elems[1].click()} else {elems[0].click()}}`\r\n );\r\n }, 1000);\r\n }\r\n\r\n // @ts-ignore\r\n if (utag) {\r\n event.preventDefault();\r\n const isExternal = link.linkUrl.type === 'externalLink' ? true : false;\r\n const isPhoneNum = link.linkUrl.destinationUrl.startsWith('tel')\r\n ? true\r\n : false;\r\n let eventName = isExternal\r\n ? 'outbound-general-link-click'\r\n : 'internal-navigation';\r\n let eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n let eventAction = `to: ${navUrl}`;\r\n let eventLabel = `from header: ${MsDyn365.msdyn365Commerce.isBrowser &&\r\n window.location.href}`;\r\n let eventType = '';\r\n\r\n if (isPhoneNum) {\r\n eventName = 'call-engagement';\r\n eventCategory = 'call';\r\n eventAction = 'header click';\r\n eventLabel = 'call engagement';\r\n eventType = 'call_engagement';\r\n }\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes max-line-length\r\n utag.link({\r\n event: eventName,\r\n event_type: eventType,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n event_label: eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n if (MsDyn365.msdyn365Commerce.isBrowser && !isChat === true) {\r\n const isOpenInNewTab = link.openInNewTab;\r\n !isOpenInNewTab ? (window.location.href = navUrl) : window.open(navUrl);\r\n }\r\n }\r\n }}\r\n >\r\n {link.linkText}\r\n \r\n
  • \r\n );\r\n })}\r\n \r\n \r\n {hamburgerTabUtilityLinks &&\r\n hamburgerTabUtilityLinks.length > 0 &&\r\n hamburgerTabUtilityLinks.map((link: IUtilityLinksData, index: number) => {\r\n const navUrl = navLinkKeywordRemoval(\r\n (link.linkUrl && link.linkUrl.destinationUrl) || '',\r\n props.context.request\r\n );\r\n return (\r\n
  • \r\n {\r\n const isChat = link.ariaLabel === 'Chat' ? true : false;\r\n const isExternal = link.linkUrl.type === 'externalLink' ? true : false;\r\n const isPhoneNum = link.linkUrl.destinationUrl.startsWith('tel') ? true : false;\r\n let eventName = isExternal\r\n ? 'outbound-general-link-click'\r\n : 'internal-navigation';\r\n let eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n let eventAction = `to: ${navUrl}`;\r\n let eventLabel = `from header: ${MsDyn365.msdyn365Commerce.isBrowser &&\r\n window.location.href}`;\r\n let eventType = '';\r\n\r\n if (isChat) {\r\n event.preventDefault();\r\n // tslint:disable: no-function-expression\r\n // tslint:disable: typedef\r\n setTimeout(function () {\r\n // eslint-disable-next-line no-eval\r\n eval(\r\n `var elems = document.querySelectorAll('.uiButton.helpButtonEnabled, .minimizedContainer.helpButton, .sidebarHeader.minimizedContainer'); if(elems != undefined && elems.length > 0) { if(elems.length > 1){elems[1].click()} else {elems[0].click()}}`\r\n );\r\n }, 1000);\r\n } else if (isPhoneNum) {\r\n eventName = 'call-engagement';\r\n eventCategory = 'call';\r\n eventAction = 'header click';\r\n eventLabel = 'call engagement';\r\n eventType = 'call_engagement';\r\n }\r\n // @ts-ignore\r\n if (utag) {\r\n event.preventDefault();\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes max-line-length\r\n utag.link({\r\n event: eventName,\r\n event_type: eventType,\r\n event_category: eventCategory,\r\n event_action: eventAction,\r\n event_label: eventLabel,\r\n event_noninteraction: 'false'\r\n });\r\n if (MsDyn365.msdyn365Commerce.isBrowser && !isChat === true) {\r\n const isOpenInNewTab = link.openInNewTab;\r\n !isOpenInNewTab ? (window.location.href = navUrl) : window.open(navUrl);\r\n }\r\n }\r\n }}\r\n >\r\n {link.linkText}\r\n \r\n
  • \r\n );\r\n })}\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n {/* VSI-Customization - End - Primary Navigation */}\r\n \r\n
    \r\n
    \r\n {isMobile ? null : storeSelector}\r\n
    \r\n
    \r\n {secondaryNavItems &&\r\n secondaryNavItems.length > 0 &&\r\n secondaryNavItems.slice(0, secondaryNavLimit).map((link: ISecondaryNavItemsData, index: number) => {\r\n const navUrl = navLinkKeywordRemoval(\r\n (link.linkUrl && link.linkUrl.destinationUrl) || '',\r\n props.context.request\r\n );\r\n return (\r\n {\r\n // @ts-ignore\r\n if (utag) {\r\n event.preventDefault();\r\n const isExternal = link.linkUrl.type === 'externalLink' ? true : false;\r\n const eventName = isExternal ? 'outbound-general-link-click' : 'internal-navigation';\r\n const eventCategory = isExternal ? 'outbound links' : 'internal links';\r\n // @ts-ignore\r\n // tslint:disable-next-line: object-literal-key-quotes\r\n utag.link({\r\n event: eventName,\r\n event_category: eventCategory,\r\n event_action: `to: ${navUrl}`,\r\n event_label: `from header: ${MsDyn365.msdyn365Commerce.isBrowser &&\r\n window.location.href}`,\r\n event_noninteraction: 'false'\r\n });\r\n if (MsDyn365.msdyn365Commerce.isBrowser) {\r\n const isOpenInNewTab = link.openInNewTab;\r\n !isOpenInNewTab ? (window.location.href = navUrl) : window.open(navUrl);\r\n }\r\n }\r\n }}\r\n >\r\n {link.linkText}\r\n \r\n );\r\n })}\r\n
    \r\n
    \r\n {/* VSI-Customization - End - Secondary Navigation */}\r\n \r\n \r\n );\r\n };\r\n\r\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps & IHeaderProps): JSX.Element | null {\r\n const { AccountInfoDropdownParentContainer, signOutLink, accountLinks } = props;\r\n const customer = props.data.accountInformation?.result;\r\n const signInLink = _signInButton(customer, props.context.request.user, props);\r\n const signUpLink = _signUpButton(customer, props.context.request.user, props);\r\n if (AccountInfoDropdownParentContainer) {\r\n if (customer) {\r\n return (\r\n \r\n {signOutLink}\r\n {accountLinks ? accountLinks.map(link => link) : false}\r\n \r\n );\r\n } else if (signInLink) {\r\n return (\r\n \r\n {signInLink}\r\n {signUpLink}\r\n {/* Todo: create a method to render sign up link and add here*/}\r\n \r\n );\r\n }\r\n }\r\n props.context.telemetry.warning('Header content is empty, module wont render.');\r\n return null;\r\n}\r\n\r\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\r\n return (\r\n \r\n {items && items.length\r\n ? items.map((slot: React.ReactNode, index: number) => {\r\n return {slot};\r\n })\r\n : null}\r\n \r\n );\r\n}\r\n\r\n// VSI CUSTOMIZATION - starts here\r\nfunction _mainMenuScroll(\r\n pageScrollValue: number,\r\n isPageScroll: boolean,\r\n setIsPageScroll: React.Dispatch>,\r\n isOpen: boolean\r\n): void {\r\n if (\r\n MsDyn365.msdyn365Commerce.isBrowser &&\r\n (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop) >= pageScrollValue\r\n ) {\r\n if (isPageScroll !== true) {\r\n setIsPageScroll(true);\r\n }\r\n } else {\r\n if (isOpen === false) {\r\n setIsPageScroll(false);\r\n } else if (isOpen === true) {\r\n setIsPageScroll(true);\r\n }\r\n }\r\n}\r\n\r\nfunction _signUpButton(\r\n customer: Customer | undefined,\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n props: IHeaderViewProps & IHeaderProps\r\n): React.ReactNode | undefined {\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignUp);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const signupUrl = modifiedAuthUrl(user?.signUpUrl);\r\n return (\r\n !customer && (\r\n \r\n \r\n {props.resources.signUpLinkText}\r\n \r\n \r\n )\r\n );\r\n}\r\nfunction _signInButton(\r\n customer: Customer | undefined,\r\n user: MsDyn365.IRequestContextUser | undefined,\r\n props: IHeaderViewProps & IHeaderProps\r\n): React.ReactNode | undefined {\r\n const telemetryContent = getTelemetryObject(props.context.request.telemetryPageName!, props.friendlyName, props.telemetry);\r\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.SignIn);\r\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\r\n const signinUrl = modifiedAuthUrl(user?.signInUrl);\r\n\r\n return !customer && (\r\n \r\n \r\n {props.resources.signInLinkText}\r\n \r\n \r\n );\r\n}\r\n\r\nconst modifiedAuthUrl = (url: string | undefined): string | undefined => {\r\n const urlParts = url?.split('\\/');\r\n urlParts?.splice(3, 1);\r\n const newUrl = urlParts?.join('\\/');\r\n return newUrl;\r\n\r\n};\r\n\r\n// Method for getting and updating viewport\r\nconst updateViewPort = (\r\n context: MsDyn365.ICoreContext,\r\n setIsOpen: React.Dispatch>,\r\n setIsMobile: React.Dispatch>,\r\n setIsTablet: React.Dispatch>\r\n): void => {\r\n const viewport = _getViewPort(context);\r\n\r\n if (viewport === 'xs' || viewport === 'sm') {\r\n setIsMobile(true);\r\n setIsTablet(false);\r\n setIsOpen(false);\r\n } else if (viewport === 'md' || viewport === 'lg') {\r\n setIsMobile(false);\r\n setIsTablet(true);\r\n } else {\r\n setIsMobile(false);\r\n setIsTablet(false);\r\n }\r\n};\r\n// VSI CUSTOMIZATION - ends here\r\n\r\nexport default headerView;\r\n","const binding = { modules: {}, dataActions: {} };\n\n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n } else {\n Object.keys(binding.dataActions[actionPath] || {}).forEach(exportName => {\n if (binding.dataActions[actionPath][exportName] &&\n binding.dataActions[actionPath][exportName].prototype &&\n binding.dataActions[actionPath][exportName].prototype.Action) {\n binding.dataActions[binding.dataActions[actionPath][exportName].prototype.id] = binding.dataActions[actionPath][exportName];\n }\n })\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n\n (binding.modules['header'] = {\n c: () => require('@msdyn365-commerce-modules/header/dist/lib/modules/header/header'),\n $type: 'containerModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'header',\n p: 'header',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header'\n });\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n {\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n window.__bindings__ = window.__bindings__ || {};\n window.__bindings__.modules = {\n ...window.__bindings__.modules || {},\n ...binding.modules\n };\n \n window.__bindings__.dataActions = {\n ...window.__bindings__.dataActions || {},\n ...binding.dataActions\n };\n export const viewDictionary = {};\n viewDictionary['__local__|__local__|themes|mattressfirm|views|header'] = {\n c: () => require('partner/themes/mattressfirm/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['@msdyn365-commerce-modules|header|modules|header|header'] = {\n c: () => require('@msdyn365-commerce-modules/header/dist/lib/modules/header/header.view.js'),\n cn: '@msdyn365-commerce-modules-header-header'\n };\nwindow.__bindings__ = window.__bindings__ || {};\nwindow.__bindings__.viewDictionary = {\n ...window.__bindings__.viewDictionary || {},\n ...viewDictionary\n };","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport MsDyn365, { IActionContext } from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\n\nimport { IListMapViewState, ILoadMapApiInput, IStoreInfo, IStoreSelectionStateContext, IStoreSelectorLocation, IStoreSelectorStateManager } from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function.\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n\n @observable public selectedStoreLocationId?: string;\n\n @observable public preferredStore?: IStoreInfo;\n\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n\n @observable public isMapModuleLoaded?: boolean;\n\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n\n @observable protected _context?: IStoreSelectionStateContext;\n\n private readonly preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if (storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(storeId?: string, storeName?: string | undefined, writeToCookie: boolean = false, latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { action } from 'mobx';\n\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location.\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (!searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled) {\n return undefined;\n }\n\n let searchContent: string = searchTerm;\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n\n if (actionContext.requestContext.channel.ChannelCountryRegionISOCode) {\n searchContent = `${searchTerm.trim()} ${actionContext.requestContext.channel.ChannelCountryRegionISOCode}`;\n }\n\n const query = encodeURI(searchContent);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl = actionContext.requestContext.app && actionContext.requestContext.app.config && actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT}/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise((resolve) => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n script.remove();\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n if (StringExtensions.isNullOrEmpty(input.key)) {\n return Promise.resolve();\n }\n\n const isScriptAlreadyLoaded = !!document?.getElementById('msdyn_map-api-script');\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${input.market ? `&setMkt=${input.market}` : ''}`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.addEventListener('error', (error: string | Event) => {\n reject(error);\n });\n document?.body?.appendChild(script);\n });\n }\n\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\n\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport const getGenericActionDataAction = createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n\nexport default getGenericActionDataAction;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderData } from '../header.data';\nimport { IHeaderProps } from '../header.props.autogenerated';\n\n/**\n * The header preferred store component.\n */\n@observer\nexport class HeaderPreferredStore extends React.PureComponent> {\n private readonly modalCloseButtonRef: React.RefObject = React.createRef();\n\n public handleClick = () => {\n return this._findPreferreStoreOnClick(this.props);\n };\n\n public render(): JSX.Element | undefined {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n slots,\n resources\n } = this.props;\n if (slots && slots.storeSelector && slots.storeSelector.length > 0) {\n const storeName = storeSelectorStateManager!.preferredStore && storeSelectorStateManager!.preferredStore.StoreName ? storeSelectorStateManager!.preferredStore.StoreName : resources.headerPreferredStoreText;\n\n return (\n
    \n \n \n {storeName}\n \n \n {slots.storeSelector}\n
    \n );\n }\n\n return undefined;\n }\n\n private async _findPreferreStoreOnClick(props: IHeaderProps): Promise {\n const { data: { storeSelectorStateManager: { result: storeSelectorStateManager } }, modules } = props;\n if (!storeSelectorStateManager) {\n return;\n }\n let storeSelectorId: string = '';\n if (modules && Object.keys(modules).length > 0 && modules.storeSelector && modules.storeSelector.length > 0) {\n storeSelectorId = modules.storeSelector[0].id;\n }\n storeSelectorStateManager.openDialog({\n id: storeSelectorId,\n showMapViewLink: false,\n parentElementRef: this.modalCloseButtonRef,\n onLocationSelected: orgUnitLocation => {\n return Promise.resolve();\n }\n }).catch((error: Error) => {\n if (props.telemetry) {\n props.telemetry.error(error.message);\n props.telemetry.debug('Unable to set preferred store');\n }\n return;\n });\n }\n}\n\nexport default HeaderPreferredStore;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ILogoProps {\n image: Msdyn365.IImageData;\n gridSettings?: Msdyn365.IGridSettings;\n link?: ILinkData;\n className?: string;\n telemetryContent?: ITelemetryContent;\n requestContext: Msdyn365.IRequestContext;\n typeName?: string;\n}\n\nexport interface ILinkData {\n linkUrl: Msdyn365.ILinkData;\n ariaLabel?: string;\n openInNewTab?: boolean;\n linkText?: string;\n}\n\n/**\n *\n * Logo component.\n * @extends {React.PureComponent}\n */\nexport class Logo extends React.PureComponent {\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: ILogoProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.Logo);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\n
    \n {this._renderLogo(this.props)}\n
    \n );\n }\n\n private _renderLogo(config: ILogoProps): JSX.Element {\n if (config.link && config.link.linkUrl.destinationUrl) {\n return (\n \n {this._renderImage(config)}\n \n );\n }\n return (\n this._renderImage(config)\n );\n }\n\n private _renderImage(config: ILogoProps): JSX.Element {\n const defaultImageSettings: Msdyn365.IImageSettings = {\n viewports: {\n xs: { q: 'w=132&h=28&m=6', w: 0, h: 0 },\n lg: { q: 'w=160&h=48&m=6', w: 0, h: 0 }\n },\n lazyload: true\n };\n\n return (\n \n );\n }\n}\n\nexport default Logo;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent, TelemetryConstant } from '@msdyn365-commerce-modules/utilities';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IHeaderResources } from '../header.props.autogenerated';\n\nexport interface INavIconProps {\n resources: IHeaderResources;\n isExpanded: boolean;\n targetId: string;\n telemetryContent?: ITelemetryContent;\n toggleNavBar(): void;\n}\n\n/**\n *\n * NavIcon component.\n * @extends {React.PureComponent}\n */\n\n@observer\nexport class NavIcon extends React.PureComponent {\n\n private readonly attributes?: Msdyn365.IDictionary;\n\n constructor(props: INavIconProps) {\n super(props);\n const payLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.NavIcon);\n this.attributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n return (\n \n );\n }\n}\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { CartIconComponent, WishListIconComponent } from '@msdyn365-commerce/components';\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ICartState } from '@msdyn365-commerce/global-state';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { ErrorNotification, NotificationsManager } from '@msdyn365-commerce-modules/notifications-core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button, getPayloadObject, getTelemetryAttributes, getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, KeyCodes, Modal,\n ModalBody, ModalHeader, onTelemetryClick, Popover, TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { computed, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { HeaderPreferredStore, Logo, NavIcon } from './components';\nimport { IHeaderData } from './header.data';\nimport { IHeaderProps, IHeaderResources, IMyAccountLinksData } from './header.props.autogenerated';\n\nexport interface IHeaderState {\n mobileMenuCollapsed: boolean;\n signinPopoverOpen: boolean;\n hasSigninerror?: boolean;\n}\n\nexport interface IHeaderViewProps extends IHeaderProps, IHeaderState {\n logo: React.ReactNode;\n wishListIconDesktop: React.ReactNode;\n wishListIconMobile: React.ReactNode;\n cartIcon: React.ReactNode;\n navIcon: React.ReactNode;\n className: string;\n menuBar: React.ReactNode[];\n search: React.ReactNode[];\n siteOptions: React.ReactNode[];\n HeaderTag: IModuleProps;\n HeaderContainer: INodeProps;\n MobileMenuContainer: INodeProps;\n MobileMenuHeader: React.ReactNode;\n MobileMenuBodyContainer: INodeProps;\n MobileMenuLinksContainer: INodeProps;\n HeaderTopBarContainer: INodeProps;\n Divider: INodeProps;\n\n AccountInfoDropdownParentContainer?: INodeProps;\n AccountInfoDropdownPopoverConentContainer?: INodeProps;\n accountInfoDropdownButton?: React.ReactNode;\n\n signOutLink?: React.ReactNode;\n signInLink?: React.ReactNode;\n accountLinks?: React.ReactNode[];\n preferredStore?: React.ReactNode;\n}\n\n/**\n *\n * Header component.\n * @extends {React.PureComponent>}\n */\n@observer\nclass Header extends React.PureComponent, IHeaderState> {\n private readonly popOverRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private cart: ICartState | undefined;\n\n @computed public get displayName(): Readonly {\n const customer = this.props.data.accountInformation?.result;\n return customer ? customer.FirstName || customer.Name : undefined;\n }\n\n constructor(props: IHeaderProps) {\n super(props);\n this.popOverRef = React.createRef();\n this._toggleNavbar = this._toggleNavbar.bind(this);\n this._togglePopover = this._togglePopover.bind(this);\n this._keydown = this._keydown.bind(this);\n this.state = {\n mobileMenuCollapsed: true,\n signinPopoverOpen: false,\n hasSigninerror: false\n };\n this.telemetryContent = getTelemetryObject(this.props.context.request.telemetryPageName!, this.props.friendlyName, this.props.telemetry);\n }\n\n public componentDidMount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.addEventListener('keydown', this._keydown);\n }\n reaction(\n () => this.props.data.cart.result,\n () => {\n this.cart = this.props.data.cart.result;\n }\n );\n\n const {\n context: {\n request: {\n user\n }\n },\n resources: {\n signUpCustomerNotFoundTitle,\n signUpMultipleCustomerFoundTitle,\n closeNotificationLabel\n }\n } = this.props;\n\n const signinNotificationError = this._getSigninNotification(user, signUpMultipleCustomerFoundTitle, signUpCustomerNotFoundTitle);\n if (signinNotificationError !== undefined && this.state.hasSigninerror === false) {\n // For signup show simple error notification.\n NotificationsManager.instance().addNotification(new ErrorNotification(\n signinNotificationError, closeNotificationLabel));\n }\n\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.msdyn365Commerce.isBrowser) {\n window.removeEventListener('keydown', this._keydown, false);\n }\n }\n\n // eslint-disable-next-line complexity -- Disabled complexity.\n public render(): JSX.Element | null {\n const {\n id,\n typeName,\n data: { accountInformation,\n storeSelectorStateManager: { result: storeSelectorStateManager },\n wishlists\n },\n context: {\n request: {\n user\n }\n },\n context,\n resources: {\n cartLabel,\n cartQtyLabel\n }\n } = this.props;\n const { logoLink, logoImage, shouldShowWishlistCount } = this.props.config;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access -- app config is generic\n const disableTooltip = this.props.context.app.config.disableTooltip || false;\n const headerToggleClass = this.state.mobileMenuCollapsed ? '' : 'ms-header-open';\n const headerClassName = classnames('ms-header', this.props.config.className, headerToggleClass);\n const navbarKey = 'header-nav-mobile';\n const customer = accountInformation && accountInformation.result;\n const cartIconSlot = this._getSlot('cartIcon');\n const menuBarSlot = this._getSlot('menuBar');\n const searchSlot = this._getSlot('search');\n let wishlistCount = 0;\n const siteOptionsSlot = this._getSlot('siteOptions');\n const preferredStoreSlot = this._getSlot('storeSelector');\n if (wishlists !== undefined) {\n if (!wishlists.result || !ArrayExtensions.hasElements(wishlists.result) ||\n !wishlists.result[0].CommerceListLines || !ArrayExtensions.hasElements(wishlists.result[0].CommerceListLines)) {\n wishlistCount = 0;\n } else {\n wishlistCount = wishlists.result[0].CommerceListLines.length;\n }\n }\n const viewProps: IHeaderViewProps = {\n ...(this.props as IHeaderProps),\n ...(this.state),\n logo: ,\n wishListIconDesktop: (\n \n ),\n wishListIconMobile: (\n \n ),\n cartIcon: (cartIconSlot && cartIconSlot.length > 0) ? cartIconSlot[0] : ,\n navIcon: ,\n menuBar: menuBarSlot && menuBarSlot.length && menuBarSlot || [],\n search: searchSlot && searchSlot.length && searchSlot || [],\n siteOptions: siteOptionsSlot && siteOptionsSlot.length && siteOptionsSlot || [],\n className: headerClassName,\n HeaderTag: {\n moduleProps: this.props,\n className: classnames(headerClassName),\n tag: 'header'\n },\n HeaderContainer: {\n className: classnames('ms-header__container')\n },\n HeaderTopBarContainer: {\n className: classnames('ms-header__topbar')\n },\n Divider: {\n className: classnames('ms-header__divider')\n },\n MobileMenuContainer: {\n tag: Modal,\n id: navbarKey,\n className: 'ms-header__mobile-hamburger',\n isOpen: !this.state.mobileMenuCollapsed,\n wrapClassName: 'ms-header__modal',\n toggle: this._toggleNavbar\n },\n MobileMenuHeader: (\n \n ),\n MobileMenuBodyContainer: {\n tag: ModalBody,\n className: 'ms-header__mobile-hamburger-menu-body'\n },\n MobileMenuLinksContainer: {\n className: 'ms-header__mobile-hamburger-menu-links'\n },\n AccountInfoDropdownParentContainer: {\n className: 'ms-header__account-info'\n },\n AccountInfoDropdownPopoverConentContainer: customer && this.displayName && {\n tag: Popover,\n id: 'myprofilePopover',\n className: 'ms-header__account-info-content',\n placement: 'bottom',\n isOpen: this.state.signinPopoverOpen,\n target: this.popOverRef,\n toggle: this._togglePopover\n } || undefined,\n signInLink: this._getSigninButton(customer, user, this.props.resources),\n signOutLink: this._getSignOutButton(customer, user, this.props.resources),\n accountInfoDropdownButton: this._getAccountInfoDropdownButton(customer),\n accountLinks: this._getAccountLinks(customer),\n preferredStore: preferredStoreSlot &&\n preferredStoreSlot.length &&\n storeSelectorStateManager &&\n ()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /* Handle link text change*/\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent) => {\n if (this.props.config.myAccountLinks && this.props.config.myAccountLinks[linkIndex]) {\n this.props.config.myAccountLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n private _getSlot(slotName: string): React.ReactNode[] | null {\n const { slots } = this.props;\n return (slots && slots[slotName] && slots[slotName].length && slots[slotName]) || null;\n }\n\n private _getSigninButton(customer: Customer | undefined, user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignIn);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return !customer && (\n \n \n {resources.signInLinkText}\n \n \n );\n }\n\n private _getSignOutButton(customer: Customer | undefined, user: MsDyn365.IRequestContextUser | undefined, resources: IHeaderResources): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.SignOut);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return customer && this.displayName && (\n \n \n {resources.signOutLinkText}\n \n \n );\n }\n\n private _getSigninNotification(user: MsDyn365.IRequestContextUser | undefined,\n signUpMultipleCustomerFoundTitle: string, signUpCustomerNotFoundTitle: string): string | undefined {\n const { signUpCustomerNotFound, signUpMultipleCustomerFound } = this.props.config;\n const notFoundError = 'Microsoft_Dynamics_Commerce_Runtime_CustomerNotFound_WhenAutoLinking';\n const multipleAccountError = 'Microsoft_Dynamics_Commerce_Runtime_MultipleCustomerAccountsFoundWithSameEmailAddress';\n\n if (user?.retailServerErrorCode === notFoundError) {\n return signUpCustomerNotFound !== undefined ? signUpCustomerNotFound : signUpCustomerNotFoundTitle;\n } else if (user?.retailServerErrorCode === multipleAccountError) {\n return signUpMultipleCustomerFound !== undefined ? signUpMultipleCustomerFound : signUpMultipleCustomerFoundTitle;\n }\n return undefined;\n }\n\n private _getAccountInfoDropdownButton(customer: Customer | undefined): React.ReactNode | undefined {\n const payLoad = getPayloadObject('click', this.telemetryContent, TelemetryConstant.MyProfile);\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n return customer && this.displayName && (\n \n \n {this.displayName}\n \n \n );\n }\n\n private _getAccountLinks(customer: Customer | undefined): React.ReactNode[] | undefined {\n const { myAccountLinks } = this.props.config;\n const payLoad = getPayloadObject('click', this.telemetryContent, '');\n if (!customer || !this.displayName || !myAccountLinks || myAccountLinks.length === 0) {\n return undefined;\n }\n return myAccountLinks.map((cta: IMyAccountLinksData, index: number) => {\n payLoad.contentAction.etext = cta.linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, payLoad);\n const editableLink: MsDyn365.ILinksData = {\n ariaLabel: cta.ariaLabel,\n className: 'ms-signin-info__account-link-button',\n linkText: cta.linkText,\n linkUrl: cta.linkUrl.destinationUrl,\n openInNewTab: cta.openInNewTab,\n role: 'link',\n additionalProperties: attributes\n };\n\n return (\n \n );\n });\n }\n\n private _toggleNavbar(): void {\n this.setState({\n mobileMenuCollapsed: !this.state.mobileMenuCollapsed\n });\n }\n\n private _togglePopover(): void {\n this.setState({\n signinPopoverOpen: !this.state.signinPopoverOpen\n });\n }\n\n private _keydown(e: KeyboardEvent): void {\n if (e.keyCode === KeyCodes.Escape) {\n this.setState({ mobileMenuCollapsed: true });\n }\n }\n}\n\nexport default Header;\n","/*--------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * See License.txt in the project root for license information.\n *--------------------------------------------------------------*/\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHeaderViewProps } from './header';\n\nconst headerView: React.FC = props => {\n const {\n HeaderTag,\n HeaderContainer,\n HeaderTopBarContainer,\n MobileMenuContainer,\n MobileMenuBodyContainer,\n MobileMenuLinksContainer,\n Divider\n } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderDesktopAccountBlock(props)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n \n \n { props.MobileMenuHeader }\n {_renderReactFragment(props.menuBar)}\n \n { props.accountLinks ? props.accountLinks.map(link => link) : false }\n { props.siteOptions }\n { props.wishListIconMobile }\n { props.signInLink }\n { props.signOutLink }\n \n \n \n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderDesktopAccountBlock(props: IHeaderViewProps): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n { accountLinks ? accountLinks.map(link => link) : false }\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n props.context.telemetry.error('Header content is empty, module wont render.');\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0 ? items.map((slot: React.ReactNode, index: number) => {\n return (\n {slot}\n );\n }) : null}\n \n );\n}\n\nexport default headerView;\n","module.exports = React;","module.exports = ReactDOM;"],"names":["context","MsDyn365","window","innerWidth","gridSettings","request","xs","w","sm","md","lg","canonicalURL","requestContext","requestUrl","url","origin","path","pathname","toLowerCase","urlParts","split","splice","match","removePipeSignValue","removeKeywords","filteredPath","join","filteredURL","undefined","length","filter","urlPart","indexOf","removeKeywordFromUrl","app","config","removeKeywordFromUrlArray","trim","forEach","_part","removeKeyword","trimmedKeyword","indexOfValue","getSortedVirtualRefinerConfig","isMattressesCategory","appConfigSorted","getVirtualRefinerConfig","appConfig","enableForMattresses","enableForOtherCategories","sort","a","b","order","getVirtualRefinerNames","sortedVirtualRefinerConfig","appConfigRefinerNames","sortedConfig","push","refinerName","urlModifications","async","getVirtualRefinerValues","virtualRefiners","virtualRefinerValues","categoryIdToken","urlTokens","recordId","finalizedUrlParts","plainUrlPart","decodeURIComponent","part","filteredPart","mainRefiner","Values","refinerValue","refinerValueKeyName","LeftValueBoundString","replace","regExSpecialChars","canonicalUrlspecialCharIncludeList","navLinkKeywordRemoval","link","linkBase","linkParams","endsWith","linkParam","map","param","filteredLink","includeConfigList","includeConfig","pattern","RegExp","NavMenuStateInput","constructor","getCacheKey","getCacheObjectType","dataCacheType","navMenuStateAction","input","ctx","isMenuHasParent","isMobileMenuCollapsed","selectedNavMenu","menuItemData","createObservableDataAction","action","inputData","HeaderPreferredStore","React","handleClick","document","body","classList","add","pageURL","location","utag","event","event_category","event_action","event_label","event_noninteraction","this","_findPreferreStoreOnClick","props","handleClose","data","storeSelectorStateManager","result","remove","closeDialog","render","slots","resources","isModalOpen","storeSelectorState","mfrmStoreSelector","mfrmPrefferedStore","localStorage","getItem","JSON","parse","sociPrefferedStore","removeItem","storeCity","preferredStore","StoreId","OrgUnitNumber","City","mfrmStoreCity","sociStoreCity","enableSociLocations","city","className","color","headerPreferredStoreAriaLabel","onClick","Text","tag","text","headerPreferredStoreText","modules","storeSelectorId","Object","keys","id","openDialog","showMapViewLink","onLocationSelected","orgUnitLocation","Promise","resolve","catch","error","telemetry","message","debug","observer","Logo","super","payLoad","getPayloadObject","telemetryContent","TelemetryConstant","attributes","getTelemetryAttributes","preventDefault","isExternal","linkUrl","type","eventName","eventCategory","internalDestinationUrl","destinationUrl","host","internalLocalUrl","Msdyn365","href","eventAction","eventLabel","ariaLabel","openInNewTab","open","_renderLogo","target","_renderImage","image","imageSettings","viewports","q","h","xl","lazyload","disableLazyLoad","loadFailureBehavior","editProps","key","headerView","isPageScroll","setIsPageScroll","isMobile","setIsMobile","isTablet","setIsTablet","isOpen","setIsOpen","updatedHeaderTag","moduleProps","HeaderTag","classnames","mfrmMenuBar","extendedMenuBar","menuBar","mfrmSearch","mfrmSearchSlot","search","storeSelector","mfrmNotfications","mfrmNotifications","mfrmCartIcon","desktopUtilityLinks","utilityLinks","showUnderUtilityDesktop","tabUtilityLinks","showUnderUtilityTab","hamburgerUtilityLinks","showUnderHamburger","hamburgerTabUtilityLinks","hideFromTab","navMenuParentActive","navMenuState","secondaryNavConfig","get","menuItemLimit","menuItemsLimitMobile","menuItemsLimitDesktop","secondaryNavLimit","secondaryNavItems","customer","accountInformation","getTelemetryObject","telemetryPageName","friendlyName","stickyNavigation","InitialTopBarSize","getElementsByClassName","item","getBoundingClientRect","height","visibleHeight","setVisibleHeight","topBarVisibleHeight","setTopBarVisibleHeight","scrollBarWidth","offsetWidth","windowWidth","documentElement","clientWidth","mobileMenuCollapsed","style","setProperty","removeProperty","addThrottledEvent","updateViewPort","InitialHeight","clientHeight","androidBannerViewHeight","setAndroidBannerViewHeight","wrapperElement","querySelector","secondaryElement","bannerElement","getComputedStyle","display","pageYOffset","addEventListener","vh","scrollBarWidthUpdate","windowWidthUpdate","Math","max","_topBarSize","mobileTopBarSize","bottom","_storeLocatorSize","storeLocatorSize","_mainMenuScroll","removeEventListener","actionContext","update","toggleModal","prevState","toggle","headerType","phoneNumber","phoneNumberCheckoutPage","Module","Node","isHeaderSticky","logo","HeaderContainer","title","event_type","HeaderTopBarContainer","logoLink","logoImage","secondaryLogoLink","secondaryLogoImage","index","linkText","isChat","setTimeout","eval","isPhoneNum","startsWith","eventType","isOpenInNewTab","navIcon","_renderReactFragment","role","tabIndex","Modal","autoFocus","fade","horizontalPosition","verticalPosition","zIndex","applicationNode","modalClassName","ModalHeader","ModalBody","_renderDesktopAccountBlock","MobileMenuLinksContainer","accountHeading","accountLinks","_signInButton","user","signOutLink","_signUpButton","navUrl","slice","AccountInfoDropdownParentContainer","signInLink","signUpLink","warning","items","slot","pageScrollValue","scrollTop","signupUrl","modifiedAuthUrl","signUpUrl","Button","signUpLinkText","signUpLinkAriaText","onTelemetryClick","signinUrl","signInUrl","signInLinkText","signInLinkAriaText","viewport","_getViewPort","binding","dataActions","registerSanitizedActionPath","sanitizedActionPath","dataAction","default","Error","prototype","RegistrationId","c","require","$type","da","name","runOn","iNM","ns","n","p","pdp","__bindings__","viewDictionary","cn","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","value","_readFromToCookie","storeInfo","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","setItem","cookieValue","__decorate","computed","observable","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","channel","BingMapsApiKey","BingMapsEnabled","searchContent","jsonp","crypto","getRandomValues","Uint32Array","ChannelCountryRegionISOCode","query","encodeURI","geolocationApiUrl","script","createElement","setAttribute","resourceSets","point","coordinates","appendChild","StringExtensions","getElementById","lang","market","reject","defer","src","mapAPIReady","isMapApiLoaded","createStoreSelectorStateInput","GenericInput","getGenericActionDataAction","getGenericAction","modalCloseButtonRef","ref","parentElementRef","moduleType","typeName","imagePropertyName","shouldSkipToMainImage","NavIcon","toggleNavBar","mobileHamburgerAriaLabel","isExpanded","targetId","Header","handleLinkTextChange","linkIndex","myAccountLinks","popOverRef","_toggleNavbar","bind","_togglePopover","_keydown","state","signinPopoverOpen","hasSigninerror","FirstName","Name","componentDidMount","reaction","cart","signUpCustomerNotFoundTitle","signUpMultipleCustomerFoundTitle","closeNotificationLabel","signinNotificationError","_getSigninNotification","NotificationsManager","addNotification","ErrorNotification","componentWillUnmount","wishlists","cartLabel","cartQtyLabel","shouldShowWishlistCount","disableTooltip","headerToggleClass","headerClassName","navbarKey","cartIconSlot","_getSlot","menuBarSlot","searchSlot","wishlistCount","siteOptionsSlot","preferredStoreSlot","ArrayExtensions","CommerceListLines","viewProps","wishListIconDesktop","WishListIconComponent","showButtonTooltip","wishlistTooltipText","wishlistCountLabel","isDispayWishlistCount","wishListIconMobile","cartIcon","CartIconComponent","siteOptions","Divider","MobileMenuContainer","wrapClassName","MobileMenuHeader","MobileMenuBodyContainer","AccountInfoDropdownPopoverConentContainer","displayName","Popover","placement","_getSigninButton","_getSignOutButton","accountInfoDropdownButton","_getAccountInfoDropdownButton","_getAccountLinks","renderView","slotName","signOutLinkText","signOutUrl","signOutLinkAriaText","signUpCustomerNotFound","signUpMultipleCustomerFound","retailServerErrorCode","innerRef","cta","contentAction","etext","editableLink","additionalProperties","onTextChange","setState","e","keyCode","KeyCodes","module","exports","ReactDOM"],"sourceRoot":""}