{"version":3,"file":"static/js/23.fdd7167aa0e7cf34e633.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/actions/customProxy/MyAccount/DataServiceEntities.g.ts?407f","webpack://Msdyn365.Commerce.Online/./src/actions/customProxy/MyAccount/DataActionExtension.g.ts?1377","webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/account-profile.view.tsx?acd7","webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/cookie-compliance.view.tsx?aeb8","webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/footer-item.view.tsx?d46d","webpack://Msdyn365.Commerce.Online/./src/themes/krannich/views/promo-banner.view.tsx?3081","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.tsx?a0b5","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/account-profile-edit.view.tsx?530d","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-button.tsx?e669","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-error.tsx?eadf","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-input.tsx?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-label.tsx?4793","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-icon.tsx?fba0","webpack://Msdyn365.Commerce.Online/./src/modules/account-profile-edit/components/account-profile-edit-loading-message.tsx?7cf0","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.tsx?797a","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/rng.js?7d39","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/regex.js?255d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/validate.js?f4cd","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/stringify.js?688d","webpack://Msdyn365.Commerce.Online/./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/v4.js?0bec","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/proactive-chat-trigger.ts?ab51","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-amount-trigger.ts?b0a3","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-number-of-items-trigger.ts?5c1e","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-specific-product-trigger.ts?5985","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/consts.ts?4dc3","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/date-range-trigger.ts?d574","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/from-specific-page-trigger.ts?37c0","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/page-visits-trigger.ts?66a6","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-CountryRegion-trigger.ts?5c72","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-page-trigger.ts?9295","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/triggers/wait-on-time-trigger.ts?63fd","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/proactive/index.ts?ef6c","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/ContextProvider.ts?20ff","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/StyleComposers.ts?0cc6","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/helpers/CommerceChatStore.ts?9abc","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/components/ChatCore.tsx?1b5f","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/components/Chat.tsx?5004","webpack://Msdyn365.Commerce.Online/./src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.view.tsx?cb2f","webpack://Msdyn365.Commerce.Online/./src/modules/fabrikam/views/order-details.view.tsx?1ce1","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-pickup-option-list.tsx?7a25","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-lines.tsx?87ff","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-search-form.tsx?fb9a","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-small-components.tsx?4335","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/store-selector-location-line-item/store-selector-location-line-item.components.tsx?923d","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/selected-store/selected-store.tsx?bfbc","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.tsx?e416","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/store-selector.view.tsx?71a6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/sign-in.view.tsx?048a","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"sourcesContent":["// tslint:disable\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * KRV_AddressResponseEntity entity interface.\r\n */\r\nexport interface IKRV_AddressResponseEntity {\r\n Id: string;\r\n AddressList?: IKRV_AddressEntity[];\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n}\r\n\r\n/**\r\n * KRV_AddressEntity entity interface.\r\n */\r\nexport interface IKRV_AddressEntity {\r\n AddressName?: string;\r\n Street?: string;\r\n City?: string;\r\n State?: string;\r\n PostalCode?: string;\r\n Country?: string;\r\n CountryRegion?: string;\r\n FullAddress?: string;\r\n}\r\n\r\n/**\r\n * KRV_AddressResponseEntity entity class.\r\n */\r\nexport class KRV_AddressResponseEntityExtensionClass implements IKRV_AddressResponseEntity {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Id: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressList: IKRV_AddressEntity[];\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Id = odataObject.Id;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressList = undefined;\r\n if (odataObject.AddressList) {\r\n this.AddressList = [];\r\n for (var i = 0; i < odataObject.AddressList.length; i++) {\r\n if (odataObject.AddressList[Number(i)]) {\r\n if (odataObject.AddressList[Number(i)]['@odata.type']) {\r\n var className: string = odataObject.AddressList[Number(i)]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat('Class');\r\n if (EntityClasses[String(className)]) {\r\n this.AddressList[Number(i)] = new EntityClasses[String(className)](odataObject.AddressList[Number(i)]);\r\n }\r\n } else {\r\n this.AddressList[Number(i)] = new KRV_AddressEntityExtensionClass(odataObject.AddressList[Number(i)]);\r\n }\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressList[Number(i)] = undefined;\r\n }\r\n }\r\n }\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (let i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[Number(i)]) {\r\n if (odataObject.ExtensionProperties[Number(i)]['@odata.type']) {\r\n let className: string = odataObject.ExtensionProperties[Number(i)]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat('Class');\r\n if (EntityClasses[String(className)]) {\r\n this.ExtensionProperties[Number(i)] = new EntityClasses[String(className)](\r\n odataObject.ExtensionProperties[Number(i)]\r\n );\r\n }\r\n } else {\r\n this.ExtensionProperties[Number(i)] = new EntityClasses.CommercePropertyClass(\r\n odataObject.ExtensionProperties[Number(i)]\r\n );\r\n }\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[Number(i)] = undefined;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * KRV_AddressEntity entity class.\r\n */\r\nexport class KRV_AddressEntityExtensionClass implements IKRV_AddressEntity {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressName: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Street: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public City: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public State: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public PostalCode: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Country: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CountryRegion: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public FullAddress: string;\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressName = odataObject.AddressName;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Street = odataObject.Street;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.City = odataObject.City;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.State = odataObject.State;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.PostalCode = odataObject.PostalCode;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Country = odataObject.Country;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CountryRegion = odataObject.CountryRegion;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.FullAddress = odataObject.FullAddress;\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\n// tslint:disable\r\nimport {\r\n AsyncResult,\r\n callActionOrExecute,\r\n DataServiceQuery,\r\n IContext,\r\n IDataServiceRequest,\r\n IQueryResultSettings\r\n} from '@msdyn365-commerce/retail-proxy';\r\n// @ts-ignore\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n// @ts-ignore\r\nfunction kRV_BillingAddressQuery(id?: string): DataServiceQuery {\r\n const key = id ? { Id: id } : null;\r\n return new DataServiceQuery(\r\n 'KRV_BillingAddress',\r\n 'KRV_AddressResponseEntity',\r\n DataServiceEntities.KRV_AddressResponseEntityExtensionClass,\r\n key\r\n );\r\n}\r\n\r\nexport function createKRV_GetAddressInput(queryResultSettings: IQueryResultSettings, customerAccountNumber: string): IDataServiceRequest {\r\n const query = kRV_BillingAddressQuery().resultSettings(queryResultSettings);\r\n return query.createDataServiceRequestForOperation(\r\n 'KRV_GetAddress',\r\n true,\r\n DataServiceEntities.KRV_AddressEntityExtensionClass,\r\n 'true',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IKRV_AddressEntity' },\r\n { customerAccountNumber: customerAccountNumber }\r\n );\r\n}\r\n\r\nexport function kRV_GetAddressAsync(\r\n context: IContext,\r\n customerAccountNumber: string\r\n): AsyncResult {\r\n const request = createKRV_GetAddressInput(context.queryResultSettings || {}, customerAccountNumber);\r\n return callActionOrExecute(request, context.callerContext);\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport {\r\n IAccountPreference,\r\n IAccountPreferences,\r\n IAccountProfileItem,\r\n IAccountProfileViewProps\r\n} from '@msdyn365-commerce-modules/account-management/src/modules/account-profile/./account-profile';\r\nimport { IAccountProfileProps } from '../definition-extensions/account-profile.ext.props.autogenerated';\r\nimport { kRV_GetAddressAsync } from '../../../actions/customProxy/MyAccount/DataActionExtension.g';\r\nimport { IAccountProfileData } from './account-profile.data';\r\n\r\nconst AccountPreferencesSection: React.FC = ({ accountPreferences, heading, personalization, extraPreferences }) => {\r\n return (\r\n \r\n {heading}\r\n \r\n {extraPreferences &&\r\n extraPreferences.map((preferenceSecton, index) => {\r\n return ;\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst AccountPreferenceSection: React.FC = ({\r\n accountPreference,\r\n heading,\r\n description,\r\n buttonWrapper,\r\n buttonYesText,\r\n button,\r\n buttonNoText\r\n}) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n \r\n {buttonNoText}\r\n {button}\r\n {buttonYesText}\r\n \r\n \r\n );\r\n};\r\n\r\nconst AccountProfileSection: React.FC = ({ AccountProfileItem, heading, links, description }) => {\r\n return (\r\n \r\n {heading}\r\n {description}\r\n {links}\r\n \r\n );\r\n};\r\n\r\nconst AccountProfileView: React.FC> = props => {\r\n const {\r\n AccountProfile,\r\n accountProfileWrapper,\r\n heading,\r\n emailSection,\r\n preferenceSection,\r\n customerAttributesWrapper,\r\n customerAttributesSection,\r\n data: { accountInformation, customerInformation }\r\n } = props;\r\n\r\n const [billingAddress, setBillingAddress] = React.useState();\r\n const companyName = customerInformation.result?.ExtensionProperties?.find(item => item.Key === 'CompanyName');\r\n const context1 = { callerContext: props.context.actionContext };\r\n const accountNumber = accountInformation?.result?.AccountNumber;\r\n const invoiceAccountNumber = accountInformation.result?.InvoiceAccount;\r\n let billAddress: string | undefined;\r\n let billName: string | undefined;\r\n let billNumber: string | undefined;\r\n\r\n if (invoiceAccountNumber === '') {\r\n accountInformation.result?.Addresses?.map((item: any) => {\r\n if (item.IsPrimary === true) {\r\n billName = item.Name;\r\n billAddress = item.FullAddress;\r\n billNumber = item.Phone;\r\n }\r\n });\r\n } else {\r\n billName = accountInformation.result?.Name;\r\n billAddress = billingAddress?.FullAddress!;\r\n billNumber = accountInformation.result?.Phone;\r\n }\r\n React.useEffect(() => {\r\n if (accountNumber) {\r\n kRV_GetAddressAsync(context1, accountNumber).then((result: any) => {\r\n setBillingAddress(result[0]);\r\n });\r\n }\r\n }, [accountNumber]);\r\n return (\r\n \r\n {/* {infoMessageBar} */}\r\n {accountProfileWrapper && (\r\n <>\r\n \r\n {heading}\r\n {/* VSI CUSTOMIZATION START */}\r\n {/* \r\n */}\r\n
\r\n \r\n
\r\n
\r\n {/* {props.resources.personalDataHeading} */}\r\n
\r\n {/* */}\r\n {props.resources.firstNameHeading}\r\n {props.data.customerInformation.result?.FirstName}\r\n
\r\n
\r\n {props.resources.lastNameHeading}\r\n {props.data.customerInformation.result?.LastName}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {props.resources.companyNameHeading}\r\n \r\n {companyName?.Value?.StringValue ? companyName?.Value?.StringValue : '-'}\r\n \r\n
\r\n
\r\n\r\n {/* VSI CUSTOMIZATION End */}\r\n
\r\n {billName && billNumber && (\r\n
\r\n

{props.resources.billingAddressHeading}

\r\n
\r\n {props.resources.name}\r\n {billName}\r\n
\r\n
\r\n {props.resources.phone}\r\n {billNumber}\r\n
\r\n
\r\n {props.resources.fulladdress}\r\n {billAddress ? billAddress : props.resources.noAddressFoundtext}\r\n
\r\n
\r\n )}\r\n \r\n )}\r\n {customerAttributesWrapper && {customerAttributesSection}}\r\n
\r\n );\r\n};\r\n\r\nexport default AccountProfileView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { ICookieComplianceViewProps } from '@msdyn365-commerce-modules/cookie-compliance/src/modules/cookie-compliance/./cookie-compliance';\r\nimport { ICookieComplianceProps as ICookieComplianceExtensionProps } from './../definition-extensions/cookie-compliance.ext.props.autogenerated';\r\n\r\ndeclare global {\r\n interface Window {\r\n CookieConsent: {\r\n consent: {\r\n necessary: boolean;\r\n };\r\n };\r\n }\r\n}\r\n\r\nconst CookieComplianceView: React.FC> = props => {\r\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\r\n\r\n const { config, context } = props;\r\n const { externalConsent } = config;\r\n\r\n React.useEffect(() => {\r\n if (externalConsent) {\r\n const consentChoosed = () => {\r\n if (context && context.request && context.request.cookies) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n };\r\n if (window?.CookieConsent?.consent?.necessary) {\r\n context.request.cookies.setConsentCookie();\r\n location.reload();\r\n }\r\n window.addEventListener(\r\n 'CookiebotOnAccept',\r\n () => {\r\n window.CookieConsent.consent.necessary && consentChoosed();\r\n },\r\n false\r\n );\r\n }\r\n }, []);\r\n\r\n return (\r\n <>\r\n {!externalConsent && (\r\n \r\n \r\n \r\n {text}\r\n {links}\r\n \r\n {acceptButton}\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\nexport default CookieComplianceView;\r\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IFooterViewProps } from '@msdyn365-commerce-modules/footer/src/modules/footer-item';\r\n\r\n/**\r\n *\r\n * FooterItemView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class FooterItemView extends React.PureComponent {\r\n public render(): JSX.Element | null {\r\n const {\r\n FooterItem,\r\n Link,\r\n context: {\r\n actionContext: {\r\n requestContext: {\r\n user: { isAuthenticated }\r\n }\r\n }\r\n }\r\n } = this.props;\r\n //VSI CUSTOMIZATION START Hide register now link in case of logged in user\r\n if (Link?.title === 'Become a Valued Customer' && isAuthenticated) {\r\n return null;\r\n }\r\n return {this._renderElement(this.props)};\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return {heading} ;\r\n } else if (Link && image) {\r\n return (\r\n \r\n {linkText}\r\n {image}\r\n \r\n );\r\n } else if (Link) {\r\n return EditableLink;\r\n }\r\n return (\r\n <>\r\n {text}\r\n {image}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default FooterItemView;\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { Module, Node, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { IPromoBannerProps } from '../definition-extensions/promo-banner.ext.props.autogenerated';\r\nimport { IBannerMessagesData, IPromoBannerResources } from '@msdyn365-commerce-modules/promo-banner';\r\n\r\nexport interface IPromoBannerViewProps extends IPromoBannerProps<{}> {\r\n promoBannerProps: IModuleProps;\r\n contentProps: INodeProps;\r\n bannerMessages: IBannerMessagesData[];\r\n promoBannerTextProps: INodeProps;\r\n promoBannerLinksProps: INodeProps;\r\n carouselProps: INodeProps;\r\n closeButton?: React.ReactNode;\r\n className: string;\r\n promoBannerText: string;\r\n resources: IPromoBannerResources;\r\n onDismiss(): void;\r\n handleText(): void;\r\n handleLinks(): void;\r\n}\r\nconst PromoBannerView: React.FC = props => {\r\n const {\r\n promoBannerProps,\r\n contentProps,\r\n closeButton,\r\n bannerMessages,\r\n promoBannerTextProps,\r\n promoBannerLinksProps,\r\n carouselProps,\r\n promoBannerText,\r\n handleLinks,\r\n handleText,\r\n config: { orderTracking, becomeBuisnessPartner, promotionalText },\r\n context: {\r\n request: {\r\n user: { isAuthenticated }\r\n }\r\n }\r\n } = props;\r\n\r\n const slides =\r\n bannerMessages &&\r\n bannerMessages.map((message, index) => {\r\n return (\r\n \r\n {/* VSI CUSTOMIZAITON START ADD TWO CONFIGS ORDER TRACKING AND BUISNESS PARTNER*/}\r\n
\r\n {promotionalText && (\r\n
\r\n {promotionalText}\r\n
\r\n )}\r\n
\r\n
\r\n {promoBannerText}\r\n {message.text && }\r\n {message.links && message.links.length > 0 && (\r\n \r\n )}\r\n
\r\n {orderTracking && (\r\n \r\n {orderTracking?.linkText}\r\n \r\n )}\r\n {!isAuthenticated && becomeBuisnessPartner && (\r\n \r\n {becomeBuisnessPartner?.linkText}\r\n \r\n )}\r\n
\r\n {/* VSI CUSTOMIZAITON END */}\r\n
\r\n
\r\n );\r\n });\r\n\r\n return (\r\n \r\n \r\n {closeButton}\r\n \r\n );\r\n};\r\nexport default PromoBannerView;\r\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 { EmailRegex } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent, Modal, ModalBody } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IAccountProfileEditConfig, IAccountProfileEditProps } from './account-profile-edit.props.autogenerated';\nimport AccountProfileEditButtonComponent from './components/account-profile-edit-button';\nimport AccountProfileEditErrorComponent from './components/account-profile-edit-error';\nimport AccountProfileEditInputComponent from './components/account-profile-edit-input';\nimport AccountProfileEditLabelComponent from './components/account-profile-edit-label';\nimport AccountProfileEditLoadingIconComponent from './components/account-profile-edit-loading-icon';\nimport AccountProfileEditLoadingMessageComponent from './components/account-profile-edit-loading-message';\n\nexport interface IAccountProfileEditViewState {\n isShowLoading: boolean;\n}\n\nexport interface IAccountProfileEditItem {\n wrapper: INodeProps;\n key: string;\n label: React.ReactNode;\n errorMessage: React.ReactNode;\n input: React.ReactNode;\n}\n\nexport interface IAccountProfileEditLocalAccount {\n localAccount: INodeProps;\n items: IAccountProfileEditItem[];\n errorMessage: React.ReactNode[];\n buttonsWrapper: INodeProps;\n buttons: React.ReactNode[];\n verificationSuccessModal: INodeProps;\n verificationSuccessModalMessage: INodeProps;\n}\n\nexport interface IAccountProfileEditLoading {\n modal: INodeProps;\n modalBody: INodeProps;\n icon: React.ReactNode;\n message: React.ReactNode;\n}\n\nexport interface IAccountProfileEditViewProps {\n className: string;\n viewState: IAccountProfileEditViewState;\n loading: IAccountProfileEditLoading;\n accountProfileEdit: IModuleProps;\n defaultAADConainer: INodeProps;\n aadConainer: INodeProps;\n heading: React.ReactNode;\n accountProfileEditLocalAccount: IAccountProfileEditLocalAccount;\n}\n\n/**\n *\n * AccountProfileEdit component\n * All AAD related module is rendered on AAD page and we need to respect HTML contract provide by AAD.\n * Please ensure any change in module don't break contract with AAD.\n * @extends {React.Component>}\n */\n@observer\nclass AccountProfileEdit extends React.Component> {\n private readonly moduleClassName: string = 'ms-account-profile-edit';\n\n private readonly telemetryContent: ITelemetryContent;\n\n @observable private givenName: string;\n\n @observable private surname: string;\n\n @observable private email: string;\n\n @observable private emailRegex: string;\n\n @observable private isInitialized: boolean;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private initializationTimer: any;\n\n constructor(props: IAccountProfileEditProps) {\n super(props);\n this.givenName = '';\n this.surname = '';\n this.email = '';\n this.emailRegex = EmailRegex.defaultRegex.source;\n this.isInitialized = false;\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n }\n\n public componentDidMount(): void {\n this._onInit();\n }\n\n // After successful AAD initialization, call initialize method provided by AAD to attach events.\n public componentDidUpdate(): void {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (this.isInitialized && window && window['$element'] && window['$element']['initialize']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['$element']['initialize']();\n }\n }\n\n public shouldComponentUpdate(\n nextProps: IAccountProfileEditProps,\n nextState: IAccountProfileEditViewState\n ): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element {\n const { config, resources } = this.props;\n\n const viewProps = {\n ...this.props,\n viewState: {\n isShowLoading: !this.isInitialized\n },\n accountProfileEdit: {\n moduleProps: this.props,\n className: classnames(this.moduleClassName, config.className)\n },\n loading: {\n modal: {\n tag: Modal,\n isOpen: true\n },\n modalBody: {\n tag: ModalBody\n },\n icon: ,\n message: \n },\n defaultAADConainer: {\n id: 'api',\n style: { display: 'none' }\n },\n aadConainer: {\n id: this.isInitialized ? 'api' : null,\n className: `${this.moduleClassName}__container`\n },\n heading: config.heading && config.heading.text && (\n \n ),\n accountProfileEditLocalAccount: this._renderLocalAccount()\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent) => (this.props.config.heading.text = event.target.value);\n\n public onTextBoxChange = (event: React.ChangeEvent) => {\n const id = event.target.id;\n const value = event.target.value;\n\n switch (id.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.emailRegex = value;\n break;\n }\n default:\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public _onInit = () => {\n this._prePopulateData();\n this._updateErrorMessage();\n\n // Check if AAD initialization is complete. AAD do not provide any event to subscribe so we need to check variable set by AAD to check initialization status.\n this.initializationTimer = setInterval(() => {\n this._isInitializationSuccessful();\n }, 100);\n setTimeout(() => {\n clearInterval(this.initializationTimer);\n }, 10_000);\n };\n\n // After successful AAD initialization, remove waiting and preload any data, if needed.\n private readonly _isInitializationSuccessful = () => {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window && window['$diags'] && window['$diags']['initializationSuccessful']) {\n clearInterval(this.initializationTimer);\n this.isInitialized = true;\n }\n };\n\n private readonly _prePopulateData = () => {\n const { resources } = this.props;\n const invalidEmailAddressError = resources.invalidEmailAddressError || 'Please enter a valid email address.';\n\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n if (window['SA_FIELDS'] && window['SA_FIELDS']['AttributeFields']) {\n // eslint-disable-next-line @typescript-eslint/dot-notation, @typescript-eslint/no-unsafe-member-access -- Auto-suppressed.\n window['SA_FIELDS']['AttributeFields'].map(\n (obj: { ID: string; PRE: string; PAT: string; UX_INPUT_TYPE: string; PAT_DESC: string }) => {\n const value = obj.PRE ? this._htmlDecode(obj.PRE) : '';\n switch (obj.ID.toLowerCase()) {\n case 'givenname': {\n this.givenName = value;\n break;\n }\n case 'surname': {\n this.surname = value;\n break;\n }\n case 'email': {\n this.email = value;\n this.emailRegex = obj.PAT;\n obj.PAT_DESC = invalidEmailAddressError;\n break;\n }\n default:\n }\n }\n );\n }\n };\n\n private _htmlDecode(str: string): string {\n const e = document.createElement('div');\n\n e.innerHTML = str;\n return e.childNodes.length === 0 ? '' : e.childNodes[0].nodeValue || '';\n }\n\n private readonly _updateErrorMessage = () => {\n const { resources } = this.props;\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n if (window && window['CONTENT']) {\n const message = {\n required_field: resources.requiredFieldMissingError,\n verifying_blurb: resources.loadingMessage\n };\n\n // eslint-disable-next-line @typescript-eslint/dot-notation -- Auto-suppressed.\n Object.assign(window['CONTENT'], message);\n }\n };\n\n private _renderLocalAccount(): IAccountProfileEditLocalAccount {\n const { config, resources } = this.props;\n const localAccount = {\n localAccount: {\n id: 'attributeList',\n className: `${this.moduleClassName}__account-items attr`\n },\n items: [\n this._renderInput('givenName', 'text', this.givenName, resources.firstNameLabelText, resources.firstNameMaxLength),\n this._renderInput('surname', 'text', this.surname, resources.lastNameLabelText, resources.lastNameMaxLength)\n ],\n errorMessage: [\n ,\n ,\n \n ],\n buttonsWrapper: {\n className: `${this.moduleClassName}__buttons`\n },\n buttons: [\n ,\n \n ],\n verificationSuccessModal: {\n className: `${this.moduleClassName}__verifying-modal verifying-modal`\n },\n verificationSuccessModalMessage: {\n id: 'verifying_blurb',\n className: `${this.moduleClassName}__verifying-modal-message`\n }\n };\n\n if (config.showEmail && this.email !== '') {\n localAccount.items.push(\n this._renderInput('email', 'email', this.email, resources.emailAddressLabelText, undefined, this.emailRegex)\n );\n }\n\n return localAccount;\n }\n\n private _renderInput(\n id: string,\n type: string,\n value: string,\n labelText: string,\n maxLength?: string,\n pattern?: string\n ): IAccountProfileEditItem {\n const className = `${this.moduleClassName}__account-item`;\n return {\n wrapper: {\n className: classnames(className, `${className}-${id}`, 'entry-item', 'attrEntry')\n },\n key: id,\n label: (\n \n ),\n errorMessage: (\n \n ),\n input: (\n \n )\n };\n }\n}\n\nexport default AccountProfileEdit;\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 {\n IAccountProfileEditItem,\n IAccountProfileEditLoading,\n IAccountProfileEditLocalAccount,\n IAccountProfileEditViewProps\n} from './account-profile-edit';\n\nconst AccountProfileEditItem: React.FC = ({ wrapper, label, errorMessage, input }) => {\n return (\n \n {label}\n {errorMessage}\n {input}\n \n );\n};\n\nconst LocalAccount: React.FC = ({\n localAccount,\n items,\n errorMessage,\n buttonsWrapper,\n buttons,\n verificationSuccessModal,\n verificationSuccessModalMessage\n}) => {\n return (\n \n {items &&\n items.map((item: IAccountProfileEditItem) => {\n // eslint-disable-next-line react/jsx-key\n return ;\n })}\n {errorMessage &&\n errorMessage.map((error: React.ReactNode, index: number) => {\n return {error};\n })}\n \n {buttons &&\n buttons.map((button: React.ReactNode, index: number) => {\n return {button};\n })}\n \n\n \n \n \n \n );\n};\n\nconst AccountProfileEditLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\n\nconst AccountProfileEditView: React.FC = props => {\n const { accountProfileEdit, viewState, loading, defaultAADConainer, aadConainer, heading, accountProfileEditLocalAccount } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n {heading}\n {LocalAccount(accountProfileEditLocalAccount)}\n \n \n );\n};\n\nexport default AccountProfileEditView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Button, getPayloadObject, getTelemetryAttributes, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditButton {\n id?: string;\n className: string;\n text: string;\n ariaLabel: string;\n disabled?: boolean;\n telemetryContent?: ITelemetryContent;\n onClick?(event: React.MouseEvent): void;\n}\n\nconst AccountProfileEditButton: React.FC = ({\n id,\n className,\n text,\n ariaLabel,\n disabled,\n telemetryContent,\n onClick\n}) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n );\n};\n\nexport default AccountProfileEditButton;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditErrorProps {\n id?: string;\n className: string;\n type?: string;\n message?: string;\n}\n\nconst AccountProfileEditError: React.FC = ({ id, className, type = 'page', message }) => {\n const errorClassName = `${className}__${type}-error`;\n\n return (\n \n );\n};\n\nexport default AccountProfileEditError;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { INodeProps } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface IAccountProfileEditInputProps {\n id?: string;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: string;\n pattern?: string;\n className: string;\n maxLength?: string;\n onChange?(event: React.ChangeEvent): void;\n}\n\nexport interface IAccountProfileEditInput {\n key: string;\n AddressItem: INodeProps;\n label: React.ReactNode;\n alert: React.ReactNode;\n input: React.ReactNode;\n}\n\nconst GetMaxLength = (maxLength?: string): number | undefined => {\n if (maxLength) {\n const parsedMaxLength = Number.parseInt(maxLength, 10);\n if (!isNaN(parsedMaxLength)) {\n return parsedMaxLength;\n }\n }\n\n return undefined;\n};\n\nconst AccountProfileEditInput: React.FC = ({ id, type, value, pattern, className, maxLength, onChange }) => (\n \n);\n\nexport default AccountProfileEditInput;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLabel {\n id: string;\n forId: string;\n className: string;\n text: string;\n}\n\nconst AccountProfileEditLabel: React.FC = ({ id, forId, className, text }) => (\n \n);\n\nexport default AccountProfileEditLabel;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingIcon {\n className: string;\n}\n\nconst AccountProfileEditLoadingIcon: React.FC = ({ className }) => (\n
\n);\n\nexport default AccountProfileEditLoadingIcon;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\n\nexport interface IAccountProfileEditLoadingMessage {\n className: string;\n message: string;\n}\n\nconst AccountProfileEditLoadingMessage: React.FC = ({ className, message }) => (\n
{message}
\n);\n\nexport default AccountProfileEditLoadingMessage;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport { isOboRequest } from '@msdyn365-commerce/core-internal';\nimport { IMsdyn365PvaChatConnectorData } from './msdyn365-pva-chat-connector.data';\nimport { IMsdyn365PvaChatConnectorConfig, IMsdyn365PvaChatConnectorProps } from './msdyn365-pva-chat-connector.props.autogenerated';\n\nexport interface IPvaChatConnectorViewProps extends IMsdyn365PvaChatConnectorProps {\n config: IMsdyn365PvaChatConnectorConfig;\n}\n\n/**\n * PvaChatConnector component\n * @extends {React.PureComponent>}\n */\nclass PvaChatConnector extends React.PureComponent> {\n // Loads CDN version of Botframework-Webchat library\n public componentDidMount(): void {\n if (isOboRequest(this.props.context.request)) {\n return;\n }\n\n const url = this.props.config.botFrameworkCDNURL || this.props.context.app.config.pvaChatConnectorBotFrameworkCDNURL;\n const script = document.createElement('script');\n script.src = url;\n script.async = true;\n script.crossOrigin = 'anonymous';\n document.body.appendChild(script);\n }\n\n public render(): JSX.Element | null {\n if (isOboRequest(this.props.context.request)) {\n return null;\n }\n\n return this.props.renderView(this.props);\n }\n}\n\nexport default PvaChatConnector;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IProactiveChatTrigger } from '../../interfaces';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\n\n/**\n * ProactiveChatTrigger class - checks if Proactive Chat should be triggered, starts the chat and sets context\n */\nabstract class ProactiveChatTrigger implements IProactiveChatTrigger {\n public props: IPvaChatConnectorViewProps;\n public context: IChatContext;\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n this.props = props;\n this.context = context;\n }\n\n /**\n * Generates Chat Context with included properties related to Proactive Chat\n * @returns TContextProvider - Chat Context\n */\n public abstract getContextProvider(): TContextProvider;\n\n /**\n * Generates chat welcome message to be used if Proactive Chat is triggered\n * @returns string - chat welcome message\n */\n public abstract getMessage(): string;\n\n /**\n * Validate specific trigger conditions if Proactive Chat should be initiated\n * @returns boolean (TRUE if Proactive Chat should be triggered)\n */\n public abstract validate(): Promise;\n}\n\nexport default ProactiveChatTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartAmountTrigger class - proactive chat is triggered if cArt amount is in preset boundaries (config.proactiveOnCartAmountMin, config.proactiveOnCartAmountMax)\n */\nclass CartAmountTrigger extends ProactiveChatTrigger {\n private min?: number;\n private max?: number;\n private totalInCart: number = 0;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.min = this.props.config.proactiveOnCartAmountMin;\n this.max = this.props.config.proactiveOnCartAmountMax;\n this.props.context.telemetry.debug(\n `[Chat][${CartAmountTrigger.name}] Cart amount proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\n );\n }\n\n public async validate(): Promise {\n const cart = await this._getCart();\n if (cart.isEmpty) {\n this.props.context.telemetry.debug(`[Chat][${CartAmountTrigger.name}] Cart was empty. Validation returning 'false'.`);\n return false;\n }\n\n this.totalInCart = cart.cart.TotalAmount || 0;\n let retVal = false;\n if (this.min) {\n if (this.max) {\n retVal = this.min <= this.totalInCart && this.totalInCart <= this.max;\n } else {\n retVal = this.min <= this.totalInCart;\n }\n } else {\n if (this.max) {\n retVal = this.totalInCart <= this.max;\n } else {\n retVal = false;\n }\n }\n this.props.context.telemetry.debug(\n `[Chat][${CartAmountTrigger.name}] Validation result: '${retVal}'; Cart total: '${this.totalInCart}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Amount',\n eCommerceCustProactiveShoppingCartAmount: `${this.totalInCart}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartAmountMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartAmountTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartNumberOfItemsTrigger class - proactive chat is triggered if Cart Number of Items is in preset boundaries (config.proactiveOnCartNoOfItemsMin, config.proactiveOnCartNoOfItemsMax)\n */\nclass CartNumberOfItemsTrigger extends ProactiveChatTrigger {\n private min?: number;\n private max?: number;\n private numberOfItems: number = 0;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.min = this.props.config.proactiveOnCartNoOfItemsMin;\n this.max = this.props.config.proactiveOnCartNoOfItemsMax;\n\n this.props.context.telemetry.debug(\n `[${CartNumberOfItemsTrigger.name}] Cart number of items proactive chat initialized with min: '${this.min}'; max: '${this.max}'.`\n );\n }\n\n public async validate(): Promise {\n const cart = await this._getCart();\n if (cart.isEmpty) {\n this.props.context.telemetry.debug(`[Chat][${CartNumberOfItemsTrigger.name}] Cart was empty. Validation returning 'false'.`);\n return false;\n }\n\n this.numberOfItems = cart.cart.TotalItems || 0;\n\n let retVal = false;\n if (this.min) {\n if (this.max) {\n retVal = this.min <= this.numberOfItems && this.numberOfItems <= this.max;\n } else {\n retVal = this.min <= this.numberOfItems;\n }\n } else {\n if (this.max) {\n retVal = this.numberOfItems <= this.max;\n } else {\n retVal = false;\n }\n }\n this.props.context.telemetry.debug(\n `[${CartNumberOfItemsTrigger.name}] Validation result: '${retVal}'; Number of items in cart: '${this.numberOfItems}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Number of Items',\n eCommerceCustProactiveShoppingCartNumberOfItems: `${this.numberOfItems}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartNoOfItemsMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartNumberOfItemsTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n// @ts-ignore\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * CartSpecificProductTrigger class - proactive chat is triggered if a Product in the Cart is in preset list of products (config.proactiveOnCartSpecificProductList)\n */\nclass CartSpecificProductTrigger extends ProactiveChatTrigger {\n private product: string = '';\n\n public async validate(): Promise {\n let isValid = false;\n const cart = await this._getCart();\n if (!cart.isEmpty) {\n if (cart.cart.CartLines) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Number of cart line items was '${cart.cart.CartLines?.length}'`\n );\n for (let i = 0; i < cart.cart.CartLines?.length; i++) {\n if (cart.cart.CartLines[i]) {\n if (this.props.config.proactiveOnCartSpecificProductList) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Number of cart specific products was configured for proactive chat was '${this.props.config.proactiveOnCartSpecificProductList?.length}'`\n );\n // Find first item, from user-defined list of products, that matches the cart lines' itemId in the cart.\n for (let j = 0; j < (this.props.config.proactiveOnCartSpecificProductList?.length || 0); j++) {\n if (\n this.props.config.proactiveOnCartSpecificProductList &&\n cart.cart.CartLines[i].ItemId &&\n this.props.config.proactiveOnCartSpecificProductList[j] === cart.cart.CartLines[i].ItemId\n ) {\n this.props.context.telemetry.debug(\n `[${CartSpecificProductTrigger.name}] Matched cart line item ID '${cart.cart.CartLines[i].ItemId}' against user-defined list of specific products for proactive chat.`\n );\n isValid = true;\n break;\n }\n }\n }\n } else {\n // Rest of the CartLines are undefined\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart did not contain any cart lines.`);\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Cart was empty.`);\n }\n this.props.context.telemetry.debug(`[Chat][${CartSpecificProductTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: 'Cart Specific Product',\n eCommerceCustProactiveShoppingCartSpecificProduct: `${this.product}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnCartSpecificProductMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private async _getCart(): Promise {\n return getCartState(this.props.context.actionContext);\n }\n}\n\nexport default CartSpecificProductTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nexport enum ProactiveChatNames {\n DateRange = 'Date Range',\n FromSpecificPage = 'From Specific Page',\n PageVisits = 'Page Visits',\n SpecificLocation = 'Specific Location',\n SpecificPage = 'Specific Page',\n WaitOnTime = 'Wait On Time'\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * DateRangeTrigger class - proactive chat is triggered if current date is in preset date boundaries (config.proactiveOnDateRangeStart, config.proactiveOnDateRangeEnd)\n */\nclass DateRangeTrigger extends ProactiveChatTrigger {\n private start?: Date;\n private end?: Date;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.start = this._toDate(this.props.config.proactiveOnDateRangeStart);\n this.end = this._toDate(this.props.config.proactiveOnDateRangeEnd);\n\n this.props.context.telemetry.debug(\n `[${DateRangeTrigger.name}] Proactive chat initialized with startDate: '${this.start}'; max: '${this.end}'.`\n );\n }\n\n public async validate(): Promise {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n\n let retVal = false;\n if (this.start) {\n if (this.end) {\n retVal = this.start.getTime() <= now.getTime() && now.getTime() <= this.end.getTime();\n } else {\n retVal = this.start.getTime() <= now.getTime();\n }\n } else if (this.end) {\n retVal = now.getTime() <= this.end.getTime();\n }\n\n this.props.context.telemetry.debug(\n `[${DateRangeTrigger.name}] Validation result: '${retVal}'; Current date used to compare: '${now}'.`\n );\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.DateRange,\n eCommerceCustProactiveFromDate: this.start ? this.start.toUTCString() : '',\n eCommerceCustProactiveToDate: this.end ? this.end.toUTCString() : ''\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnDateRangeMessage || this.props.config.proactiveDefaultMessage;\n }\n\n /**\n * Converts string(us-en) to date\n * @param date string (mm/dd/yyyy)\n * @returns Date or undefined\n */\n private _toDate(date?: string): Date | undefined {\n if (date) {\n const dateParts = date.split('/');\n return new Date(+dateParts[2], +dateParts[1] - 1, +dateParts[0]);\n } else {\n return undefined;\n }\n }\n}\n\nexport default DateRangeTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * FromSpecificPageTrigger class - proactive chat is triggered if user has come from specific page (the one listed in config.proactiveOnFromSpecificPageList)\n */\nclass FromSpecificPageTrigger extends ProactiveChatTrigger {\n public async validate(): Promise {\n let isValid = false;\n if (this.props.config.proactiveOnFromSpecificPageList) {\n this.props.context.telemetry.debug(\n `[${FromSpecificPageTrigger.name}] Number of items in user-defined list of 'From Specific Page' was '${this.props.config.proactiveOnFromSpecificPageList?.length}'.`\n );\n for (let i = 0; i < (this.props.config.proactiveOnFromSpecificPageList?.length || 0); i++) {\n const fromSpecificPageTrimmed: string = this.props.config.proactiveOnFromSpecificPageList[i].trim();\n this.props.context.telemetry.debug(\n `[Chat][${FromSpecificPageTrigger.name}] Current page URL: '${window.document.referrer}'.`\n );\n this.props.context.telemetry.debug(\n `[${FromSpecificPageTrigger.name}] Current item from user-defined list of 'From Specific Page': '${fromSpecificPageTrimmed}'.`\n );\n\n if (window.document.referrer.indexOf(fromSpecificPageTrimmed) > -1) {\n isValid = true;\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(\n `[Chat][${FromSpecificPageTrigger.name}] User-defined 'From Specific Page' list was undefined.`\n );\n }\n this.props.context.telemetry.debug(`[Chat][${FromSpecificPageTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.FromSpecificPage,\n eCommerceCustProactiveCameFromPage: window.document.referrer\n };\n };\n }\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnFromSpecificPageMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default FromSpecificPageTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ICookieContext } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/ICookieContext';\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * PageVisitTrigger class - proactive chat is triggered if user has visited current page for (config.proactiveOnPageVisitNumber) or more times\n */\nclass PageVisitTrigger extends ProactiveChatTrigger {\n public visits: number = 0;\n private cookieName: string = 'TimesPageVisited';\n private expdate: Date;\n private cookies: ICookieContext;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.cookies = this.props.context.request.cookies;\n this.expdate = new Date();\n // Set expiry date to 365 days.\n this.expdate.setTime(this.expdate.getTime() + 24 * 60 * 60 * 1000 * 365);\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie expiry date set to: '${this.expdate}'.`);\n\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Cookie context is given: '${this.cookies.isConsentGiven()}'.`);\n if (this.cookies.isConsentGiven()) {\n this.cookies.setConsentCookie();\n }\n\n this._updateVisitCounter();\n }\n\n public async validate(): Promise {\n let retVal: boolean = false;\n\n if (this.props.config.proactiveOnPageVisitNumber) {\n retVal = this.visits >= this.props.config.proactiveOnPageVisitNumber;\n }\n\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Validation result: '${retVal}'.`);\n return retVal;\n }\n\n public clear(): void {\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Clearing cookie for page visit counter.`);\n this.cookies.set(this.cookieName, 0, {\n domain: window.location.hostname,\n path: window.location.pathname,\n expires: this.expdate\n });\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.PageVisits,\n eCommerceCustProactiveNumberOfVisits: `${this.visits}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnPageVisitMessage || this.props.config.proactiveDefaultMessage;\n }\n\n private _updateVisitCounter(): void {\n this.visits = this.cookies.get(this.cookieName).value || 0;\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter BEFORE update: '${this.visits}.`);\n ++this.visits;\n this.props.context.telemetry.debug(`[Chat][${PageVisitTrigger.name}] Page visit counter AFTER update: '${this.visits}.`);\n\n this.cookies.set(this.cookieName, this.visits, {\n domain: window.location.hostname,\n path: window.location.pathname,\n expires: this.expdate\n });\n }\n}\n\nexport default PageVisitTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IExtendedRequest } from '../../interfaces';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * SpecificPageTrigger class - proactive chat is triggered if user geographically uses the website from specific country/regions(config.proactiveOnSpecificCountryRegionCountry)\n */\nclass SpecificCountryRegionTrigger extends ProactiveChatTrigger {\n private customerCountryCode: string;\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n this.customerCountryCode = (this.props.context.request).suggestedMarket || 'n/a';\n this.props.context.telemetry.debug(\n `[${SpecificCountryRegionTrigger.name}] Customer country code set to: '${this.customerCountryCode}.'`\n );\n }\n\n public async validate(): Promise {\n const retVal: boolean = this.props.config.proactiveOnSpecificLocation\n ? this.props.config.proactiveOnSpecificLocation.toLowerCase().indexOf(this.customerCountryCode.toLowerCase()) > -1\n : false;\n this.props.context.telemetry.debug(`[Chat][${SpecificCountryRegionTrigger.name}] Validation returning '${retVal}'.`);\n return retVal;\n }\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveCountryCode: this.props.config.proactiveOnSpecificLocation || '',\n eCommerceCustProactiveType: ProactiveChatNames.SpecificLocation\n };\n };\n }\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnSpecificCountryRegionMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default SpecificCountryRegionTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { TContextProvider } from '../../../interfaces';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * SpecificPageTrigger class - proactive chat is triggered if current page is listed in config.proactiveOnSpecificPageList\n */\nclass SpecificPageTrigger extends ProactiveChatTrigger {\n public async validate(): Promise {\n let isValid = false;\n if (this.props.config.proactiveOnSpecificPageList) {\n this.props.context.telemetry.debug(\n `[${SpecificPageTrigger.name}] Number of items in user-defined list of 'Specific Pages' was '${this.props.config.proactiveOnSpecificPageList?.length}'.`\n );\n for (let i = 0; i < (this.props.config.proactiveOnSpecificPageList?.length || 0); i++) {\n const specificPageTrimmed: string = this.props.config.proactiveOnSpecificPageList[i].trim();\n this.props.context.telemetry.debug(`[] Current location URL: ${window.location.href}.`);\n this.props.context.telemetry.debug(`[] Current item from user-defined list of 'Specific Page': ${specificPageTrimmed}.`);\n if (window.location.href.indexOf(specificPageTrimmed) > -1) {\n isValid = true;\n break;\n }\n }\n } else {\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] User-defined 'Specific Page' list was undefined.`);\n }\n this.props.context.telemetry.debug(`[Chat][${SpecificPageTrigger.name}] Validation returning '${isValid}'.`);\n return isValid;\n }\n\n public getContextProvider(): TContextProvider {\n return () => {\n return {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.SpecificPage\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnSpecificPageMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default SpecificPageTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ProactiveChatNames } from '../../helpers/consts';\nimport { IChatContext, TContextProvider } from '../../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../../msdyn365-pva-chat-connector';\nimport ProactiveChatTrigger from './proactive-chat-trigger';\n\n/**\n * WaitOnTimeTrigger - proactive chat is triggered if user stays on current page for more than (config.proactiveOnWaitTimeSeconds) seconds\n */\nclass WaitOnTimeTrigger extends ProactiveChatTrigger {\n private waitTimeInMilliseconds: number | undefined;\n\n constructor(props: IPvaChatConnectorViewProps, context: IChatContext) {\n super(props, context);\n if (this.props.config.proactiveOnWaitTimeSeconds && !isNaN(this.props.config.proactiveOnWaitTimeSeconds)) {\n this.waitTimeInMilliseconds = Number(this.props.config.proactiveOnWaitTimeSeconds) * 1000;\n this.props.context.telemetry.debug(\n `[Chat][${WaitOnTimeTrigger.name}] Wait time (ms) set to: '${this.waitTimeInMilliseconds}'.`\n );\n }\n }\n\n public async validate(): Promise {\n const retVal: boolean = this.waitTimeInMilliseconds !== undefined;\n this.props.context.telemetry.debug(`[Chat][${WaitOnTimeTrigger.name}] Validation returning '${retVal}'.`);\n return retVal;\n }\n\n public getContextProvider(): TContextProvider {\n const triggerTime = Date.now() + (this.waitTimeInMilliseconds || 0);\n return () => {\n return triggerTime > Date.now()\n ? this.context\n : {\n ...this.context,\n eCommerceCustIsProactiveChat: 'True',\n eCommerceCustProactiveType: ProactiveChatNames.WaitOnTime,\n eCommerceCustProactiveTimeOnPage: `${this.waitTimeInMilliseconds ? this.waitTimeInMilliseconds : 0}`\n };\n };\n }\n\n public getMessage(): string {\n // @TODO: Add message processing if needed\n return this.props.config.proactiveOnWaitTimeMessage || this.props.config.proactiveDefaultMessage;\n }\n}\n\nexport default WaitOnTimeTrigger;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport CartAmountTrigger from './triggers/cart-amount-trigger';\nimport CartNumberOfItemsTrigger from './triggers/cart-number-of-items-trigger';\nimport CartSpecificProductTrigger from './triggers/cart-specific-product-trigger';\nimport DateRangeTrigger from './triggers/date-range-trigger';\nimport FromSpecificPageTrigger from './triggers/from-specific-page-trigger';\nimport PageVisitTrigger from './triggers/page-visits-trigger';\nimport SpecificCountryRegionTrigger from './triggers/specific-CountryRegion-trigger';\nimport SpecificPageTrigger from './triggers/specific-page-trigger';\nimport WaitOnTimeTrigger from './triggers/wait-on-time-trigger';\n\ntype ProactiveChat =\n | typeof DateRangeTrigger\n | typeof SpecificPageTrigger\n | typeof FromSpecificPageTrigger\n | typeof PageVisitTrigger\n | typeof SpecificCountryRegionTrigger\n | typeof CartAmountTrigger\n | typeof CartNumberOfItemsTrigger\n | typeof CartSpecificProductTrigger\n | typeof WaitOnTimeTrigger;\n\n/**\n * List of Proactive Chat Validators in order of validation (first proactive chat that pass validation is triggered, the rest are ommited)\n */\nexport const ProactiveTriggers: ProactiveChat[] = [\n DateRangeTrigger,\n SpecificPageTrigger,\n FromSpecificPageTrigger,\n PageVisitTrigger,\n SpecificCountryRegionTrigger,\n CartAmountTrigger,\n CartNumberOfItemsTrigger,\n CartSpecificProductTrigger,\n WaitOnTimeTrigger\n];\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IRequestContextUser } from '@msdyn365-commerce/core-internal/dist/types/interfaces/context/IRequestContext';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ProactiveTriggers } from '../proactive';\nimport ProactiveChatTrigger from '../proactive/triggers/proactive-chat-trigger';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\nimport { IProactiveData } from './../interfaces';\nimport { IChatContext, TContextProvider } from '../../interfaces';\n\n/**\n *\n * ContextProvider class - generates chat context, and checks for proactive triggers\n */\nclass ContextProvider {\n public data: IProactiveData;\n public props: IPvaChatConnectorViewProps;\n private user: IRequestContextUser;\n private userId: string;\n private context: IChatContext;\n private provider: TContextProvider | undefined;\n\n constructor(props: IPvaChatConnectorViewProps) {\n this.props = props;\n this.user = this.props.context.request.user;\n this.userId = `dl_${uuidv4()}`;\n this.context = this._getContext();\n // Proactive Chat related data\n this.data = {\n enabled: false,\n timeout: this.props.config.proactiveOnWaitTimeSeconds || 0,\n message: this.props.config.proactiveDefaultMessage\n };\n }\n\n /**\n * Executes Proactive Chat validation\n * @returns TContextProvider - a function returning IChatContext object\n */\n public async init(): Promise {\n try {\n await this._proactiveCheck();\n } catch (e) {\n // Use ?debug=true to see telemetry\n // If previous block fails, chat will still be available (no need to display any errors to user)\n this.props.telemetry.exception(e);\n }\n return this.provider || this._getProvider();\n }\n\n /**\n * Returns TContextProvider - a function returning IChatContext object\n */\n private _getProvider(): TContextProvider {\n return () => {\n return {\n eCommerceOperatingUnitNumber: this.props.context.request.apiSettings.oun,\n eCommerceBaseUrl: this.props.context.request.apiSettings.baseUrl,\n eCommerceDataAreaId: this.props.context.request.channel?.InventLocationDataAreaId,\n UserId: this.userId,\n // eCommerceCust...\n AccountNumber: this.user.customerAccountNumber ? this.user.customerAccountNumber : 'N/A',\n Email: this.user.emailAddress ? this.user.emailAddress : 'N/A',\n FirstName: this.user.firstName ? this.user.firstName : this.props.config.anonymousUserName,\n LastName: this.user.lastName ? this.user.lastName : 'N/A',\n Name: this.user.name ? this.user.name : this.props.config.anonymousUserName,\n eCommerceCustPageURL: window.location.href,\n eCommerceCustChatType: 'pva',\n // Proactive chat\n eCommerceCustIsProactiveChat: 'False',\n eCommerceCustProactiveType: 'N/A',\n // Date Range\n eCommerceCustProactiveFromDate: 'N/A',\n eCommerceCustProactiveToDate: 'N/A',\n // From Specific Page\n eCommerceCustProactiveCameFromPage: 'N/A',\n // No. Page Visits\n eCommerceCustProactiveNumberOfVisits: 'N/A',\n // Specific CountryRegion\n eCommerceCustProactiveCountryCode: 'N/A',\n // Specific Page => eCommerceCustPageURL\n // eCommerceCustProactiveSpecificPage: 'N/A',\n // Wait On Time\n eCommerceCustProactiveTimeOnPage: 'N/A',\n // Shopping cart amount\n eCommerceCustProactiveShoppingCartAmount: 'N/A',\n // Shopping cart number of items\n eCommerceCustProactiveShoppingCartNumberOfItems: 'N/A',\n // Shopping cart specific product\n eCommerceCustProactiveShoppingCartSpecificProduct: 'N/A'\n };\n };\n }\n\n /**\n * Returns default IChatContext object\n */\n private _getContext(): IChatContext {\n return this._getProvider()();\n }\n\n /**\n * Validates proactive triggers to check if proactive chat should be initialized\n */\n private async _proactiveCheck(): Promise {\n if (this.props.config.proactiveChatEnabled) {\n for (let i = 0; i < ProactiveTriggers.length; i++) {\n const proactive = new ProactiveTriggers[i](this.props, this.context);\n // Only first detected proactive trigger gets executed\n if (await this._isProactive(proactive)) {\n this.props.context.telemetry.debug(`First detected proactive trigger to be executed: ${proactive}`);\n break;\n }\n }\n }\n }\n\n /**\n * Validates if proactive chat should be triggered for given ProactiveTrigger\n * @param proactive ProactiveChatTrigger\n * @returns boolean\n */\n private async _isProactive(proactive: ProactiveChatTrigger): Promise {\n this.data.enabled = await proactive.validate();\n if (this.data.enabled) {\n this.provider = proactive.getContextProvider();\n this.data.message = proactive.getMessage();\n }\n return this.data.enabled;\n }\n}\n\nexport default ContextProvider;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/**\n * Style generating functions\n */\nimport { IAvatarStyling, IBubbleStyling, IChatCustomStyle, IChatStyling, IOtherStyling, ISuggestedActionStyling } from '../interfaces';\nimport { IMsdyn365PvaChatConnectorConfig } from '../msdyn365-pva-chat-connector.props.autogenerated';\n\nconst getChatWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n position: config.position || 'inherit',\n top: config.top ? config.top : 'inherit',\n right: config.right ? config.right : 'inherit',\n bottom: config.bottom ? config.bottom : 'inherit',\n left: config.left ? config.left : 'inherit',\n zIndex: 1000,\n display: 'flex',\n justifyContent: 'flex-end'\n };\n};\n\nconst getMaximizedChatWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig, isMobileDevice: boolean): React.CSSProperties => {\n if (isMobileDevice) {\n return {\n height: '90%',\n width: '100%',\n bottom: '0.5em',\n right: '0',\n padding: '5px'\n };\n }\n return {\n height: config.chatHeight ? config.chatHeight : '80%',\n width: config.chatWidth ? config.chatWidth : 'inherit'\n };\n};\n\nconst getChatButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n display: 'flex',\n alignItems: 'center',\n backgroundColor: config.startChatButtonBackgroundColor || 'white',\n color: config.startChatButtonTextColor || 'inherit',\n borderColor: config.startChatButtonBorderColor || 'inherit',\n borderRadius: config.startChatButtonBorderRadius || '0px',\n borderStyle: config.startChatButtonBorderStyle || 'solid',\n borderWidth: config.startChatButtonBorderWidth ? config.startChatButtonBorderWidth : '0px',\n padding: config.storeLogoURL ? '2px 20px 2px 2px' : '10px 20px 10px 20px',\n cursor: 'pointer',\n outlineStyle: 'none',\n alignSelf: 'flex-end',\n boxShadow: '0 0 4px rgba(102,102,102,.5)',\n WebkitBoxShadow: '0 0 4px rgba(102,102,102,.5)',\n MozBoxShadow: '0 0 4px rgba(102,102,102,.5)'\n };\n};\n\nconst getButtonStoreLogoStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n color: config.headerTextColor || 'inherit',\n borderRadius: '50%',\n padding: '11px',\n width: '30px',\n height: '30px',\n marginRight: '12px',\n borderStyle: 'solid',\n borderWidth: '1px',\n boxSizing: 'content-box'\n };\n};\n\nconst getChatStoreLogoStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n color: config.headerTextColor || 'inherit',\n borderRadius: '50%',\n padding: '11px',\n width: '30px',\n height: '30px',\n margin: '5px 12px 5px 5px',\n alignSelf: 'center',\n borderStyle: 'solid',\n borderWidth: '1px',\n boxSizing: 'content-box'\n };\n};\n\nconst getChatMessagesStyle = (config: IMsdyn365PvaChatConnectorConfig, minimized: boolean): React.CSSProperties => {\n return {\n display: minimized ? 'none' : 'block',\n backgroundColor: config.backgroundColor || 'White',\n height: '100%',\n width: '100%',\n boxSizing: 'border-box',\n position: 'relative'\n };\n};\n\nconst getChatMessageHeader = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\n color: config.headerTextColor || 'inherit',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n width: '100%',\n position: 'absolute',\n top: config.chatHeaderHeight ? `-${config.chatHeaderHeight}` : '',\n height: config.chatHeaderHeight,\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getMinimizeButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n borderTop: 'none',\n borderLeft: 'none',\n borderRight: 'none',\n borderBottom: `solid 2px ${config.headerTextColor || 'White'}`,\n backgroundColor: 'transparent',\n padding: '5px 10px 3px 10px',\n cursor: 'pointer',\n outlineStyle: 'none',\n marginTop: '7px',\n marginRight: '7px'\n };\n};\n\nconst getCloseButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n border: 'none',\n color: config.headerTextColor || 'White',\n backgroundColor: 'transparent',\n padding: '0px 0px 0px 7px',\n cursor: 'pointer',\n outlineStyle: 'none',\n marginTop: '7px',\n marginRight: '7px'\n };\n};\n\nconst getChatMessageContent = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n height: '100%',\n width: '100%',\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveWrapperStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n flexDirection: 'column',\n display: 'flex',\n justifyContent: 'flex-end',\n backgroundColor: config.backgroundColor || 'White'\n };\n};\n\nconst getProactiveMessageHeader = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n backgroundColor: config.headerBackgroundColor || 'inherit',\n backgroundImage: `url(\"${config.headerBackgroundImageURL}\")` || 'none',\n color: config.headerTextColor || 'inherit',\n backgroundRepeat: 'no-repeat',\n display: 'flex',\n alignItems: 'flex-start',\n flexDirection: 'row',\n boxSizing: 'border-box',\n width: '100%',\n height: config.chatHeaderHeight,\n borderColor: config.headerBackgroundColor ? config.headerBackgroundColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveMessageContent = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n width: '100%',\n padding: '10px 20px',\n boxSizing: 'border-box',\n borderColor: config.chatBorderColor ? config.chatBorderColor : 'inherit',\n borderStyle: config.chatBorderStyle ? config.chatBorderStyle : 'none',\n borderWidth: config.chatBorderWidth ? config.chatBorderWidth : '0px'\n };\n};\n\nconst getProactiveButtonStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n config.chatHeaderHeight = config.chatHeaderHeight || '70px';\n return {\n color: config.headerTextColor || 'inherit',\n cursor: 'pointer',\n padding: '5px 10px',\n outline: 'none',\n border: 'none',\n backgroundColor: config.headerBackgroundColor || 'inherit',\n borderRadius: '25px'\n };\n};\n\nconst getRedDotStyle = (config: IMsdyn365PvaChatConnectorConfig): React.CSSProperties => {\n return {\n background: 'Red',\n borderRadius: '50%',\n height: '5px',\n width: '5px',\n position: 'absolute',\n right: '10px',\n bottom: '33px'\n };\n};\n\n/**\n * Generates styles for the chat wrapper, and proactive chat parts\n * @param config IMsdyn365PvaChatConnectorConfig\n * @param minimized boolean\n * @returns IChatCustomStyle\n */\nexport const getChatStyling = (config: IMsdyn365PvaChatConnectorConfig, minimized: boolean, isMobileDevice: boolean): IChatCustomStyle => {\n return {\n ChatWrapperStyle: getChatWrapperStyle(config),\n MaximizedChatWrapperStyle: getMaximizedChatWrapperStyle(config, isMobileDevice),\n ChatButtonStyle: getChatButtonStyle(config),\n ButtonStoreLogoStyle: getButtonStoreLogoStyle(config),\n ChatStoreLogoStyle: getChatStoreLogoStyle(config),\n ChatMessagesStyle: getChatMessagesStyle(config, minimized),\n ChatMessageHeader: getChatMessageHeader(config),\n MinimizeButtonStyle: getMinimizeButtonStyle(config),\n CloseButtonStyle: getCloseButtonStyle(config),\n ChatMessageContent: getChatMessageContent(config),\n ProactiveWrapperStyle: getProactiveWrapperStyle(config),\n ProactiveMessageHeader: getProactiveMessageHeader(config),\n ProactiveMessageContent: getProactiveMessageContent(config),\n ProactiveButtonStyle: getProactiveButtonStyle(config),\n RedDotStyle: getRedDotStyle(config)\n };\n};\n\nconst fontFormat = (font?: string): string | undefined => {\n if (font && font.length > 0) {\n const arr = font.split(',');\n for (let i = 0; i < arr.length; i++) {\n arr[i] = `'${arr[i].trim()}'`;\n }\n font = arr.join(', ');\n } else {\n font = \"'Calibri', 'Helvetica Neue', 'Arial', 'sans-serif'\";\n }\n\n return font;\n};\n\nconst getBubbleStyling = (config: IMsdyn365PvaChatConnectorConfig): IBubbleStyling => {\n return {\n bubbleBackground: config.bubbleBackground || 'White',\n bubbleTextColor: config.bubbleTextColor || 'Black',\n bubbleBorderColor: config.bubbleBorderColor || '#e6e6e6',\n bubbleBorderRadius: config.bubbleBorderRadius || '2',\n bubbleBorderStyle: config.bubbleBorderStyle || 'solid',\n bubbleBorderWidth: config.bubbleBorderWidth || '1',\n bubbleFromUserBackground: config.bubbleFromUserBackground || 'White',\n bubbleFromUserTextColor: config.bubbleFromUserTextColor || 'Black',\n bubbleFromUserBorderColor: config.bubbleFromUserBorderColor || '#e6e6e6',\n bubbleFromUserBorderRadius: config.bubbleFromUserBorderRadius || '2',\n bubbleFromUserBorderStyle: config.bubbleFromUserBorderStyle || 'solid',\n bubbleFromUserBorderWidth: config.bubbleFromUserBorderWidth || '1'\n };\n};\n\n// eslint-disable-next-line complexity\nconst getOtherStyling = (config: IMsdyn365PvaChatConnectorConfig): IOtherStyling => {\n return {\n groupTimestamp: config.groupTimestamp || true,\n sendTimeout: config.sendTimeout || '20000',\n sendTimeoutForAttachments: config.sendTimeoutForAttachments || '120000',\n timestampColor: config.timestampColor || 'undefined',\n timestampFormat: config.timestampFormat || 'undefined',\n notificationDebounceTimeout: config.notificationDebounceTimeout || '400',\n hideToaster: config.hideToaster || true,\n toasterHeight: config.toasterHeight || '32',\n toasterMaxHeight: config.toasterMaxHeight || '32 * 5',\n toasterSingularMaxHeight: config.toasterSingularMaxHeight || '50',\n toastFontSize: config.toastFontSize || '87.5%',\n toastIconWidth: config.toastIconWidth || '36',\n toastSeparatorColor: config.toastSeparatorColor || '#E8EAEC',\n toastTextPadding: config.toastTextPadding || '6',\n toastErrorBackgroundColor: config.toastErrorBackgroundColor || '#FDE7E9',\n toastErrorColor: config.toastErrorColor || '#A80000',\n toastInfoBackgroundColor: config.toastInfoBackgroundColor || '#CEF1FF',\n toastInfoColor: config.toastInfoColor || '#105E7D',\n toastSuccessBackgroundColor: config.toastSuccessBackgroundColor || '#DFF6DD',\n toastSuccessColor: config.toastSuccessColor || '#107C10',\n toastWarnBackgroundColor: config.toastWarnBackgroundColor || '#FFF4CE',\n toastWarnColor: config.toastWarnColor || '#3B3A39',\n typingAnimationBackgroundImage: config.typingAnimationBackgroundImage || 'undefined',\n typingAnimationDuration: config.typingAnimationDuration || '5000',\n typingAnimationHeight: config.typingAnimationHeight || '20',\n typingAnimationWidth: config.typingAnimationWidth || '64',\n videoHeight: config.videoHeight || '270',\n markdownExternalLinkIconImage:\n config.markdownExternalLinkIconImage ||\n 'url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIzIDMgMTggMTgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTcuMjUwMSA0LjUwMDE3SDEwLjc0OTVDMTEuMTYzNyA0LjUwMDE3IDExLjQ5OTUgNC44MzU5NiAxMS40OTk1IDUuMjUwMTdDMTEuNDk5NSA1LjYyOTg2IDExLjIxNzMgNS45NDM2NiAxMC44NTEzIDUuOTkzMzJMMTAuNzQ5NSA2LjAwMDE3SDcuMjQ5NzRDNi4wNzA3OSA1Ljk5OTYxIDUuMTAzNDkgNi45MDY1NiA1LjAwNzg2IDguMDYxMTJMNS4wMDAyOCA4LjIyMDAzTDUuMDAzMTIgMTYuNzUwN0M1LjAwMzQzIDE3Ljk0MTUgNS45Mjg4NSAxOC45MTYxIDcuMDk5NjYgMTguOTk0OUw3LjI1MzcxIDE5LjAwMDFMMTUuNzUxOCAxOC45ODg0QzE2Ljk0MTUgMTguOTg2OCAxNy45MTQ1IDE4LjA2MiAxNy45OTM1IDE2Ljg5MjNMMTcuOTk4NyAxNi43Mzg0VjEzLjIzMjFDMTcuOTk4NyAxMi44MTc5IDE4LjMzNDUgMTIuNDgyMSAxOC43NDg3IDEyLjQ4MjFDMTkuMTI4NCAxMi40ODIxIDE5LjQ0MjIgMTIuNzY0MyAxOS40OTE4IDEzLjEzMDNMMTkuNDk4NyAxMy4yMzIxVjE2LjczODRDMTkuNDk4NyAxOC43NDA3IDE3LjkyOTMgMjAuMzc2OSAxNS45NTI4IDIwLjQ4MjlMMTUuNzUzOCAyMC40ODg0TDcuMjU4MjcgMjAuNTAwMUw3LjA1NDk1IDIwLjQ5NDlDNS4xNDIzOSAyMC4zOTU0IDMuNjA4OTUgMTguODYyNyAzLjUwODM3IDE2Ljk1MDJMMy41MDMxMiAxNi43NTExTDMuNTAwODkgOC4yNTI3TDMuNTA1MjkgOC4wNTAyQzMuNjA1MzkgNi4xMzc0OSA1LjEzODY3IDQuNjA0NDkgNy4wNTA5NiA0LjUwNTI3TDcuMjUwMSA0LjUwMDE3SDEwLjc0OTVINy4yNTAxWk0xMy43NDgxIDMuMDAxNDZMMjAuMzAxOCAzLjAwMTk3TDIwLjQwMTQgMy4wMTU3NUwyMC41MDIyIDMuMDQzOTNMMjAuNTU5IDMuMDY4MDNDMjAuNjEyMiAzLjA5MTIyIDIwLjY2MzQgMy4xMjE2MyAyMC43MTExIDMuMTU4ODVMMjAuNzgwNCAzLjIyMTU2TDIwLjg2NDEgMy4zMjAxNEwyMC45MTgzIDMuNDEwMjVMMjAuOTU3IDMuNTAwNTdMMjAuOTc2MiAzLjU2NDc2TDIwLjk4OTggMy42Mjg2MkwyMC45OTkyIDMuNzIyODJMMjAuOTk5NyAxMC4yNTU0QzIwLjk5OTcgMTAuNjY5NiAyMC42NjM5IDExLjAwNTQgMjAuMjQ5NyAxMS4wMDU0QzE5Ljg3IDExLjAwNTQgMTkuNTU2MiAxMC43MjMyIDE5LjUwNjUgMTAuMzU3MUwxOS40OTk3IDEwLjI1NTRMMTkuNDk4OSA1LjU2MTQ3TDEyLjI3OTcgMTIuNzg0N0MxMi4wMTM0IDEzLjA1MSAxMS41OTY4IDEzLjA3NTMgMTEuMzAzMSAxMi44NTc1TDExLjIxOSAxMi43ODQ5QzEwLjk1MjcgMTIuNTE4NyAxMC45Mjg0IDEyLjEwMjEgMTEuMTQ2MiAxMS44MDg0TDExLjIxODggMTEuNzI0M0wxOC40MzY5IDQuNTAxNDZIMTMuNzQ4MUMxMy4zNjg0IDQuNTAxNDYgMTMuMDU0NiA0LjIxOTMxIDEzLjAwNSAzLjg1MzI0TDEyLjk5ODEgMy43NTE0NkMxMi45OTgxIDMuMzcxNzcgMTMuMjgwMyAzLjA1Nzk3IDEzLjY0NjQgMy4wMDgzMUwxMy43NDgxIDMuMDAxNDZaIiBmaWxsPSIjMjEyMTIxIiAvPjwvc3ZnPg==)',\n markdownRespectCRLF: config.markdownRespectCRLF || 'true',\n internalLiveRegionFadeAfter: config.internalLiveRegionFadeAfter || '1000',\n accent: config.accent || '#0063B1',\n subtle: config.subtle || '#767676'\n };\n};\n\nconst getAvatarStyling = (config: IMsdyn365PvaChatConnectorConfig): IAvatarStyling => {\n return {\n avatarBorderRadius: config.avatarBorderRadius || '50%',\n avatarSize: config.avatarSize || '40',\n botAvatarBackgroundColor: config.botAvatarBackgroundColor || 'undefined',\n botAvatarImage: config.botAvatarImage || '',\n botAvatarInitials: config.botAvatarInitials || '',\n userAvatarBackgroundColor: config.userAvatarBackgroundColor || 'undefined',\n userAvatarImage: config.userAvatarImage || '',\n userAvatarInitials: config.userAvatarInitials || '',\n showAvatarInGroup: config.showAvatarInGroup || 'status'\n };\n};\n\nconst getSuggestedActionStyling = (config: IMsdyn365PvaChatConnectorConfig): ISuggestedActionStyling => {\n return {\n suggestedActionLayout: config.suggestedActionLayout || 'carousel',\n suggestedActionBackground: config.suggestedActionBackground || 'White',\n suggestedActionTextColor: config.suggestedActionTextColor || '',\n suggestedActionBorderColor: config.suggestedActionBorderColor || '',\n suggestedActionBorderRadius: config.suggestedActionBorderRadius || '0',\n suggestedActionBorderStyle: config.suggestedActionBorderStyle || 'solid',\n suggestedActionBorderWidth: config.suggestedActionBorderWidth || '2',\n suggestedActionDisabledBorderStyle: config.suggestedActionDisabledBorderStyle || 'solid',\n suggestedActionDisabledBorderWidth: config.suggestedActionDisabledBorderWidth || '2',\n suggestedActionDisabledTextColor: config.suggestedActionDisabledTextColor || '',\n suggestedActionHeight: config.suggestedActionHeight || '40',\n suggestedActionImageHeight: config.suggestedActionImageHeight || '20',\n suggestedActionsCarouselFlipperCursor: config.suggestedActionsCarouselFlipperCursor || '',\n suggestedActionsCarouselFlipperBoxWidth: config.suggestedActionsCarouselFlipperBoxWidth || '40',\n suggestedActionsCarouselFlipperSize: config.suggestedActionsCarouselFlipperSize || '20',\n suggestedActionsFlowMaxHeight: config.suggestedActionsFlowMaxHeight || '',\n suggestedActionsStackedHeight: config.suggestedActionsStackedHeight || '',\n suggestedActionsStackedOverflow: config.suggestedActionsStackedOverflow || '2',\n suggestedActionsStackedLayoutButtonMaxHeight: config.suggestedActionsStackedLayoutButtonMaxHeight || '',\n suggestedActionsStackedLayoutButtonTextWrap: config.suggestedActionsStackedLayoutButtonTextWrap || false\n };\n};\n\n/**\n * Generates style options for the Botframework-WebChat widget\n * @param config IMsdyn365PvaChatConnectorConfig\n * @returns IChatStyling\n */\nexport const getChatStyleOptions = (config: IMsdyn365PvaChatConnectorConfig): IChatStyling => {\n const bubbleStyling = getBubbleStyling(config);\n const avatarStyling = getAvatarStyling(config);\n const suggestedActionStyling = getSuggestedActionStyling(config);\n const otherStyling = getOtherStyling(config);\n return {\n hideUploadButton: true,\n primaryFont: fontFormat(config.primaryFont),\n backgroundColor: config.backgroundColor || 'White',\n ...bubbleStyling,\n ...avatarStyling,\n ...suggestedActionStyling,\n ...otherStyling\n };\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React from 'react';\nimport { IAction, IDispatch, INext } from '../interfaces';\nimport { TContextProvider } from '../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\n\nexport class CommerceChatStore {\n private props: IPvaChatConnectorViewProps;\n private setNewMessageAction: React.Dispatch>;\n private provider?: TContextProvider;\n\n /**\n * Gets conversation token\n * @param props IPvaChatConnectorViewProps\n */\n public static async getDirectLineToken(props: IPvaChatConnectorViewProps): Promise {\n if (props.config.powervaDirectlineTokenURL && props.config.botID && props.config.tenantID) {\n // use direct line token url, bot id and tenant id from module config to get conversation token\n const url = `${props.config.powervaDirectlineTokenURL}?botId=${props.config.botID}&tenantId=${props.config.tenantID}`;\n const options = { method: 'GET' };\n return fetch(url, options)\n .then(r => r.json())\n .then(r => {\n if (r.token) {\n return r.token;\n } else {\n throw r;\n }\n });\n }\n\n // use direct line token url, bot id and tenant id from app config to get conversation token\n const url = `${props.context.app.config.pvaChatConnectorPowervaDirectlineTokenURL}?botId=${props.context.app.config.pvaChatConnectorBotID}&tenantId=${props.context.app.config.pvaChatConnectorTenantID}`;\n const options = {\n method: 'GET'\n };\n return fetch(url, options)\n .then(r => r.json())\n .then(r => {\n if (r.token) {\n return r.token;\n } else {\n throw r;\n }\n });\n }\n\n /**\n * Creates a new instance of commerce store for WebChat\n * @param props IPvaChatConnectorViewProps\n * @param provider TContextProvider\n * @param setNewMessage React.Dispatch>\n */\n constructor(\n props: IPvaChatConnectorViewProps,\n provider: TContextProvider | undefined,\n setNewMessage: React.Dispatch>\n ) {\n this.props = props;\n this.provider = provider;\n this.setNewMessageAction = setNewMessage;\n }\n\n /**\n * Handles custom chat actions\n * @param param0 {\n * dispatch: IDispatch;\n * next: INext;\n * action: IAction;\n * }\n */\n public async actionHandler({ dispatch, next, action }: { dispatch: IDispatch; next: INext; action: IAction }): Promise {\n const atype = action.type;\n\n switch (atype) {\n case 'DIRECT_LINE/CONNECT_FULFILLED': {\n // sets language\n dispatch({\n type: 'WEB_CHAT/SEND_EVENT',\n payload: {\n name: 'webchat/join',\n value: { language: window.navigator.language }\n }\n });\n break;\n }\n case 'DIRECT_LINE/INCOMING_ACTIVITY': {\n const activity = action.payload.activity;\n if (activity?.from?.role === 'bot') {\n // Sets flag for new message (will be use to indicate new messages from bot when chat is minimized)\n this.setNewMessageAction(true);\n }\n break;\n }\n case 'DIRECT_LINE/POST_ACTIVITY_FULFILLED': {\n switch (action.payload.activity.name) {\n case 'webchat/join':\n {\n if (this.provider !== undefined) {\n // Sets Chat Context\n dispatch({\n type: 'WEB_CHAT/SEND_EVENT',\n payload: {\n name: 'pvaSetContext',\n value: this.provider()\n }\n });\n }\n }\n break;\n case 'pvaSetContext':\n {\n if (this.props.config.triggerQuery) {\n // Initialize chat after Chat Context is set\n dispatch({\n type: 'WEB_CHAT/SEND_MESSAGE_BACK',\n payload: {\n text: this.props.config.triggerQuery\n }\n });\n }\n }\n break;\n default: {\n // default nothing\n }\n }\n break;\n }\n default: {\n // default nothing\n }\n }\n\n return next(action);\n }\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { FunctionComponent, useMemo, useState } from 'react';\nimport { getChatStyleOptions } from '../helpers/StyleComposers';\nimport { IChatCoreProps, IAction, IDispatch } from '../interfaces';\nimport { CommerceChatStore } from '../helpers/CommerceChatStore';\n\n/**\n * Just a core Chat component\n * @param props\n */\n\nconst ChatCore: FunctionComponent = (props: IChatCoreProps) => {\n const { ReactWebChat } = window.WebChat;\n\n const [userId, setUserId] = useState('');\n useMemo(() => {\n if (props.provider) {\n const ctx = props.provider();\n if (ctx.UserId) {\n setUserId(typeof ctx.UserId === 'string' ? ctx.UserId : ctx.UserId.value.toString());\n }\n }\n }, [props.provider]);\n\n const directLine = useMemo(() => {\n return window.WebChat.createDirectLine({ token: props.directLineToken });\n }, [props.directLineToken]);\n\n const commerceChatStore = useMemo(() => {\n if (directLine && props.provider) {\n return new CommerceChatStore(props.config, props.provider, props.setNewMessage);\n }\n return undefined;\n }, [props.provider, directLine]);\n\n const store = useMemo(() => {\n return window.WebChat.createStore(\n {},\n ({ dispatch }: { dispatch: IDispatch }) => (next: (action: IAction) => IDispatch) => (action: IAction) => {\n commerceChatStore?.actionHandler({ dispatch, next, action });\n }\n );\n }, [commerceChatStore]);\n const styleOptions = getChatStyleOptions(props.config.config);\n\n return props.directLineToken !== '' ? (\n \n ) : (\n

Please wait while we are connecting.

\n );\n};\n\nexport default ChatCore;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport React, { FunctionComponent, useEffect, useState } from 'react';\nimport { isMobile, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport ContextProvider from '../helpers/ContextProvider';\nimport { getChatStyling } from '../helpers/StyleComposers';\nimport { TContextProvider } from '../../interfaces';\nimport { IPvaChatConnectorViewProps } from '../msdyn365-pva-chat-connector';\nimport { CommerceChatStore } from '../helpers';\nimport ChatCore from './ChatCore';\n\nconst INVALID_TOKEN = 'INVALID_TOKEN';\nconst CLOSE_IMG_DATA =\n 'M443.6,387.1L312.4,255.4l131.5-130c5.4-5.4,5.4-14.2,0-19.6l-37.4-37.6c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4 L256,197.8L124.9,68.3c-2.6-2.6-6.1-4-9.8-4c-3.7,0-7.2,1.5-9.8,4L68,105.9c-5.4,5.4-5.4,14.2,0,19.6l131.5,130L68.4,387.1 c-2.6,2.6-4.1,6.1-4.1,9.8c0,3.7,1.4,7.2,4.1,9.8l37.4,37.6c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1L256,313.1l130.7,131.1 c2.7,2.7,6.2,4.1,9.8,4.1c3.5,0,7.1-1.3,9.8-4.1l37.4-37.6c2.6-2.6,4.1-6.1,4.1-9.8C447.7,393.2,446.2,389.7,443.6,387.1z';\n\n/**\n * Outer chat component, displays chat button, and proactive chat, and handles custom actions\n * @param props IPvaChatConnectorViewProps\n */\nconst Chat: FunctionComponent = (props: IPvaChatConnectorViewProps) => {\n const [loaded, setLoaded] = useState(false); // loaded & minimized are needed as ChatWidget should not be removed from DOM (it resets chat)\n const [minimized, setMinimized] = useState(true);\n const [newMessage, setNewMessage] = useState(false); // TODO: use this to indicate new message in minimized chat\n const [token, setToken] = useState(''); // holds conversation token for WebChat\n const [isProactive, setIsProactive] = useState(false); // if proactive chat is triggered\n const [proactiveMessage, setProactiveMessage] = useState(props.config.proactiveDefaultMessage);\n const [closed, setClosed] = useState(false);\n const [provider, setProvider] = useState();\n const isMobileDevice =\n isMobile({ variant: VariantType.Browser, context: props.context.request }) === 'xs' ||\n isMobile({ variant: VariantType.Viewport, context: props.context.request }) === 'xs';\n const chatStyle = getChatStyling(props.config, minimized, isMobileDevice); // generates chat style objects based on configuration\n const handleMaximizeButtonClick = () => {\n setLoaded(true);\n setMinimized(false);\n setNewMessage(false);\n };\n const handleMinimizeButtonClick = () => {\n setMinimized(true);\n setNewMessage(false);\n };\n const handleCloseButtonClick = () => {\n setClosed(true);\n setLoaded(false);\n setMinimized(true);\n setNewMessage(false);\n setIsProactive(false);\n };\n useEffect(() => {\n if (loaded) {\n CommerceChatStore.getDirectLineToken(props)\n .then(directLineToken => {\n setToken(directLineToken);\n })\n .catch(e => {\n setToken(INVALID_TOKEN);\n props.telemetry.exception(e);\n });\n }\n }, [loaded]);\n useEffect(() => {\n (async () => {\n const contextProvider = new ContextProvider(props); // Generates context (provider) and checks for proactive chat triggers\n const prov = await contextProvider.init();\n if (contextProvider.data.enabled) {\n props.context.telemetry.debug(`[Chat] Proactive chat was enabled: '${contextProvider.data.enabled}'.`);\n // if proactive chat is triggered\n const timeout = contextProvider.data.timeout * 1000; // timeout is there only for WaitOnTime trigger\n setTimeout(() => {\n if (!loaded) {\n props.context.telemetry.debug(`[Chat] Proactive chat was loaded: ${loaded}.`);\n setProactiveMessage(contextProvider.data.message);\n setIsProactive(true);\n }\n }, timeout);\n }\n setProvider(() => prov);\n })().catch(e => props.telemetry.exception(e));\n }, []);\n useEffect(() => {\n if (closed) {\n setClosed(false);\n }\n }, [token, provider]);\n const isValidToken = (): boolean => {\n return `${token}` !== INVALID_TOKEN;\n };\n return (\n \n {minimized && (!isProactive || (isProactive && loaded)) && (\n \n )}\n {minimized && isProactive && !loaded && (\n
\n
\n {props.config.storeLogoURL && (\n logo\n )}\n
\n
\n
\n

{proactiveMessage}

\n \n
\n
\n )}\n {loaded && isValidToken() && (\n
\n
\n {props.config.storeLogoURL && (\n logo\n )}\n
\n \n
\n
\n \n
\n
\n )}\n {!isValidToken() &&
{props.config.unableToLoadChatMessage}
}\n
\n );\n};\n\nexport default Chat;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as React from 'react';\nimport Chat from './components/Chat';\nimport { IPvaChatConnectorViewProps } from './msdyn365-pva-chat-connector';\n\nexport default (props: IPvaChatConnectorViewProps) => {\n // Only for CDN loading check, won't be needed with npm package of Botframework-WebChat\n const [loaded, setLoaded] = React.useState(false);\n const p = {\n ...props\n };\n\n // Just to verify that CDN Chat Widget js lib is loaded\n // Remove this block if moving to npm package of Botframework-WebChat\n const interval = setInterval(() => {\n const t = typeof window;\n if (t !== 'undefined' && window.WebChat) {\n setLoaded(true);\n clearInterval(interval);\n }\n }, 100);\n\n return
{loaded && }
;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Store Pickup option list interface.\n */\nexport interface IStorePickUpOptionListProps {\n productPickupListOptionMenuText?: string;\n productPickupModeList?: DeliveryOption[];\n defaultOptionText?: string;\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Store Pickup option state interface.\n */\nexport interface IStorePickOptionListState {\n isFilterExpanded: boolean;\n selectedPickupMode?: string;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class StorePickUpOptionList extends React.PureComponent {\n private readonly _storePickupListOptionMenu: React.RefObject;\n\n public constructor(props: IStorePickUpOptionListProps) {\n super(props);\n this._storePickupListOptionMenu = React.createRef();\n this.state = {\n isFilterExpanded: false,\n selectedPickupMode: ''\n };\n }\n\n public render(): JSX.Element {\n const { productPickupListOptionMenuText, productPickupModeList, defaultOptionText } = this.props;\n const selectedPickupModeDesc = defaultOptionText\n ? defaultOptionText\n : productPickupModeList?.find((delivery: DeliveryOption) => delivery.Code === this.state.selectedPickupMode)?.Description;\n const role = 'menu';\n return (\n
\n \n {this.state.isFilterExpanded ? (\n
    \n {productPickupModeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Method to call when drop dwon get selected.\n */\n private readonly _rendeDeliveryOptions = () => {\n const isExpandOptionsState = this.state.isFilterExpanded;\n this.setState({\n isFilterExpanded: !isExpandOptionsState\n });\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n\n /**\n * Method to call on select pickup mode.\n * @param event - Mouse event.\n * @returns Void.\n */\n private readonly _onKeyDown = async (event: React.KeyboardEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode !== null) {\n this.setState({\n selectedPickupMode: deliveryCode\n });\n\n this._rendeDeliveryOptions();\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport { ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { observable, reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources } from '../store-selector.props.autogenerated';\nimport { IStoreSelectorLocationLineItemResources, StoreSelectorLocationLineItemComponent } from './store-selector-location-line-item';\n\n/**\n * Store selector location lines props interface.\n */\nexport interface IStoreSelectorLocationLinesProps {\n locations?: IFullOrgUnitAvailability[];\n resources: IStoreSelectorResources;\n preferredDistanceUnit?: string;\n\n alreadySelectedLocation?: OrgUnitLocation;\n outOfStockThreshold: number;\n enableOutOfStockCheck: boolean;\n storeLocatorView?: boolean;\n selectedStoreLocationId?: string;\n isPreferredStoreEnabled?: boolean;\n displayList?: boolean;\n isLocationDisabled?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n onClick: (locationId: string | undefined) => void;\n preferredStoreLocationId: string | null;\n onSetAsPreferredStore: (locationId: string | undefined) => void;\n onRemovePreferredStore: () => void;\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onLocationSelected(location: OrgUnitLocation | undefined): void;\n}\n\n/**\n * Displays all the location line items, or null if none exists.\n */\n@observer\nexport class StoreSelectorLocationLines extends React.PureComponent {\n @observable private _stores: IFullOrgUnitAvailability[] | undefined;\n\n private readonly selectedLocationRef: React.RefObject;\n\n private storeCounter: number;\n\n public constructor(props: IStoreSelectorLocationLinesProps) {\n super(props);\n this.selectedLocationRef = React.createRef();\n this.storeCounter = 0;\n }\n\n public componentDidUpdate(previousProps: IStoreSelectorLocationLinesProps): void {\n if (this.props.selectedStoreLocationId !== previousProps.selectedStoreLocationId) {\n this._scrollIntoView();\n }\n }\n\n public componentDidMount(): void {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n\n reaction(\n () => this.props.locations,\n () => {\n if (this.props.locations) {\n this._stores = this._sortStores(this.props.locations);\n }\n }\n );\n }\n\n public render(): JSX.Element | null {\n if (!ArrayExtensions.hasElements(this._stores)) {\n return null;\n }\n\n this.storeCounter = 0;\n\n return (\n
\n {this._stores.map((store, index) => {\n return this._renderStoreLocation(store, index);\n })}\n
\n );\n }\n\n /**\n * On click Handler function.\n * @param orgUnitLocation -OrgUnit location.\n * @returns Click action on orgUnit Location.\n */\n private readonly onClickHandler = (orgUnitLocation: OrgUnitLocation | undefined) => () => {\n this.props.onClick(orgUnitLocation?.OrgUnitNumber);\n };\n\n private _renderStoreLocation(store: IFullOrgUnitAvailability, index: number): JSX.Element | undefined {\n const orgUnitLocation = store?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocationId = this.props.selectedStoreLocationId;\n const deliveryOptions = store?.OrgUnitPickUpDeliveryModes;\n const defaultAriaSetsize = 0;\n if (orgUnitLocation) {\n ++this.storeCounter;\n return (\n \n \n
\n );\n }\n return undefined;\n }\n\n /**\n * Sort store.\n * @param stores - Array of stores data.\n * @returns Sorted stores array.\n */\n private _sortStores(stores: IFullOrgUnitAvailability[]): IFullOrgUnitAvailability[] {\n /**\n * IsPreferredStore.\n * @param value - Array of stores data.\n * @returns IsPreferred store boolean value.\n */\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n this.props.isPreferredStoreEnabled &&\n this.props.preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === this.props.preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Scroll into view.\n */\n private readonly _scrollIntoView = () => {\n const selectedLocationDiv = this.selectedLocationRef.current;\n const parent = selectedLocationDiv?.parentElement;\n if (selectedLocationDiv && parent) {\n if (parent.scrollTop > selectedLocationDiv.offsetTop) {\n parent.scrollTop = selectedLocationDiv.offsetTop;\n } else if (selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight > parent.scrollTop + parent.clientHeight) {\n parent.scrollTop = selectedLocationDiv.offsetTop + selectedLocationDiv.clientHeight - parent.clientHeight;\n }\n }\n };\n\n /**\n * Is current location.\n * @param location - Org unit location.\n * @returns The current location.\n */\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined): boolean =>\n (this.props.alreadySelectedLocation && location && this.props.alreadySelectedLocation.OrgUnitNumber === location.OrgUnitNumber) ||\n false;\n\n /**\n * Check the product is in stock or not.\n * @param itemAvailabilities - Item availabilities.\n * @returns If the product is in stock.\n */\n private readonly _isProductInStock = (itemAvailabilities: ItemAvailability[] | undefined): boolean => {\n if (!this.props.enableOutOfStockCheck) {\n return true;\n }\n\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > 0 : false;\n }\n\n return false;\n };\n\n /**\n * Get the stock inventory label.\n * @param availabilityWithHours - Full org unit availability.\n * @returns The stock label.\n */\n private readonly _stockInventoryLabel = (availabilityWithHours: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (availabilityWithHours && ArrayExtensions.hasElements(availabilityWithHours.ProductInventoryInformation)) {\n for (let i = 0; i < availabilityWithHours.ProductInventoryInformation.length; i++) {\n if (\n availabilityWithHours.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n availabilityWithHours.ProductInventoryInformation[i].InventLocationId\n ) {\n return availabilityWithHours.ProductInventoryInformation[i].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n\n /**\n * Map resources.\n * @param resources - Store resources.\n * @returns Resources.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n pickupDeliveryOptionErrorMessage: resources.pickupDeliveryOptionErrorMessage,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n}\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 { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n KeyCodes,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { StorePickUpOptionList } from './store-pickup-option-list';\n\n/**\n * Store Selector Search Form Props interface.\n */\nexport interface IStoreSelectorSearchFormProps {\n resources: {\n searchInputAriaLabel: string;\n searchButtonAriaLabel: string;\n searchPlaceholderText: string;\n seeAllStoresText: string;\n viewListText: string;\n viewMapText: string;\n pickupFilterByHeading?: string;\n pickupFilterMenuHeading?: string;\n };\n\n id: string;\n value: string;\n isMapDisabled?: boolean;\n showAllStores?: boolean;\n displayList?: boolean;\n locatorView?: boolean;\n productPickUpDeliveryOptions?: DeliveryOption[];\n hasEnabledPickupFilterToShowStore?: boolean;\n filteredPickupMode?: string;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n onShowAllStores(): void;\n onToggleListMapViewState(): void;\n performSearch(searchTerm: string): Promise;\n searchTermChanged(searchTerm: string): Promise;\n filterPickupModeSelected(pickupMode: string): void;\n}\n\n/**\n * Simple search form consisting of search text and a search button.\n */\nexport class StoreSelectorSearchForm extends React.PureComponent {\n private readonly searchBoxRef: React.RefObject = React.createRef();\n\n private readonly storeSearchAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly showAllStoreAttributes: Msdyn365.IDictionary | undefined;\n\n private readonly toggleMapViewAttributes: Msdyn365.IDictionary | undefined;\n\n private previousValue: string = '';\n\n private isSearchResultOpened: boolean = false;\n\n public constructor(props: IStoreSelectorSearchFormProps) {\n super(props);\n this.state = { value: '' };\n this._handleKeyPressPrev = this._handleKeyPressPrev.bind(this);\n const payLoad: IPayLoad = getPayloadObject('click', props.telemetryContent!, TelemetryConstant.SearchStore);\n this.storeSearchAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ShowAllStore;\n this.showAllStoreAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.ToggleMapView;\n this.toggleMapViewAttributes = getTelemetryAttributes(props.telemetryContent!, payLoad);\n }\n\n public render(): JSX.Element {\n const {\n resources: {\n searchButtonAriaLabel,\n searchPlaceholderText,\n seeAllStoresText,\n viewListText,\n viewMapText,\n pickupFilterByHeading,\n pickupFilterMenuHeading\n },\n id,\n value,\n isMapDisabled,\n showAllStores,\n displayList,\n locatorView,\n onShowAllStores,\n productPickUpDeliveryOptions,\n hasEnabledPickupFilterToShowStore\n } = this.props;\n\n const toggleButtonText = displayList ? viewMapText : viewListText;\n\n return (\n
\n \n
\n )}\n {this.renderPickupModesList(\n this.props,\n toggleButtonText,\n productPickUpDeliveryOptions,\n pickupFilterMenuHeading,\n locatorView,\n pickupFilterByHeading,\n hasEnabledPickupFilterToShowStore,\n displayList\n )}\n
\n );\n }\n\n /**\n * Handles the key press on the input box.\n * @param event - Event object.\n */\n private readonly _handleInputKeyPress = (event: React.KeyboardEvent): void => {\n // When the user navigates through the up and down arrow on the result returned by the auto suggest and press enter.\n // At that time, two requests were made to fetch the store details due to which incorrect result is shown and causes flickering.\n // In order to avoid that. Checking if the search result is open or not.\n if (event.keyCode === KeyCodes.ArrowUp || event.keyCode === KeyCodes.ArrowDown) {\n const activeDescedantValue = (event.target as HTMLInputElement).getAttribute('aria-activedescendant');\n if (activeDescedantValue) {\n if (this.previousValue === '') {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n return;\n }\n\n if (activeDescedantValue !== this.previousValue) {\n this.previousValue = activeDescedantValue;\n this.isSearchResultOpened = true;\n } else {\n this.isSearchResultOpened = false;\n }\n }\n }\n };\n\n /**\n * Calls method display result.\n * @param event - The first number.\n */\n private readonly _handleKeyPressPrev = (event: React.KeyboardEvent): void => {\n if (event.keyCode === KeyCodes.Enter || event.keyCode === KeyCodes.Space) {\n this.props.onShowAllStores();\n }\n };\n\n /**\n * Method called on search text changed.\n * @param event - Input value.\n */\n private readonly _searchTextChanged = async (event: React.ChangeEvent): Promise => {\n const inputValue: string = event.target.value;\n\n await this.props.searchTermChanged(inputValue);\n };\n\n /**\n * Method called on search submit.\n * @param event - Input value.\n */\n private readonly _onSubmit = async (event: React.SyntheticEvent): Promise => {\n event.preventDefault(); // Prevents form submission\n this.searchBoxRef.current?.blur();\n if (!this.isSearchResultOpened) {\n await this.props.performSearch(this.props.value);\n }\n this.isSearchResultOpened = false;\n };\n\n /**\n * Method called on product pickup option change.\n * @returns - Void.\n */\n private readonly _onChangeHandler = () => async (deliveryCode: string): Promise => {\n this.props.filterPickupModeSelected(deliveryCode);\n return Promise.resolve();\n };\n\n /**\n * Method to render pickup mode list.\n * @param props - Store selector search form props.\n * @param toggleButtonText - Locator view button text.\n * @param productPickUpDeliveryOptions - Product DeliveryOption List.\n * @param pickupFilterMenuHeading - Pickup store button text.\n * @param locatorView - Locator View is on\\off.\n * @param pickupFilterByHeading - Pickup list label text.\n * @param hasEnabledPickupFilterToShowStore - Flag to check header filter is enabled.\n * @param shouldDisplayList - Display List.\n * @returns Jsx component.\n */\n private readonly renderPickupModesList = (\n props: IStoreSelectorSearchFormProps,\n toggleButtonText: string,\n productPickUpDeliveryOptions: DeliveryOption[] | undefined,\n pickupFilterMenuHeading: string | undefined,\n locatorView: boolean | undefined,\n pickupFilterByHeading: string | undefined,\n hasEnabledPickupFilterToShowStore: boolean | undefined,\n shouldDisplayList?: boolean\n ): JSX.Element | null => {\n const toggleButtonClass = shouldDisplayList ? 'view-map' : 'list-view';\n if (hasEnabledPickupFilterToShowStore) {\n return (\n
\n {locatorView && (\n \n {toggleButtonText}\n \n )}\n \n
{pickupFilterByHeading}
\n
\n );\n }\n if (locatorView) {\n return (\n \n {toggleButtonText}\n \n );\n }\n return null;\n };\n}\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 { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorResources, ITermsOfServiceLinkData } from '../store-selector.props.autogenerated';\n\nexport interface IStoreSelectorEmptyMessageProps {\n resources: IStoreSelectorResources;\n}\nexport const StoreSelectorEmptyMessage: React.FC = ({ resources }) => (\n
\n

{resources.emptyLocationsText}

\n
\n);\n\nexport const StoreSelectorWaiting: React.FC = () =>
;\n\nexport interface IStoreSelectorTermsOfServiceProps {\n link?: ITermsOfServiceLinkData;\n requestContext: Msdyn365.IRequestContext;\n onTextChange?(event: Msdyn365.ContentEditableEvent): void;\n}\n\nexport const StoreSelectorTermsOfService: React.FC = ({ link, requestContext, onTextChange }) => {\n if (link) {\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'ms-store-select__terms-link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link'\n };\n\n return (\n
\n \n
\n );\n }\n return null;\n};\n\nexport interface IStoreSelectorFoundLocationsMessage {\n resources: IStoreSelectorResources;\n locations?: IFullOrgUnitAvailability[];\n searchRadius: number;\n preferredDistanceUnit: string;\n isSeeAllStore: boolean;\n}\nexport const StoreSelectorFoundLocationsMessage: React.FC = ({\n locations,\n searchRadius,\n resources,\n isSeeAllStore,\n preferredDistanceUnit\n}) => {\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n return (\n
\n {isSeeAllStore\n ? resources.storeAllCountMessage.replace('{count}', locations.length.toString())\n : storeCountMessage.replace('{count}', locations.length.toString()).replace('{radius}', searchRadius.toString())}\n
\n );\n }\n\n return null;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption } from '@msdyn365-commerce/retail-proxy';\nimport * as React from 'react';\n\n/**\n * Interface Pickup option list.\n */\nexport interface IPickUpOptionListProps {\n pickupListOptionMenuText: string;\n pickupmodeList?: DeliveryOption[];\n onChange(deliveryCode: string): Promise;\n}\n\n/**\n * Interface pickup option list state.\n */\nexport interface IPickOptionListState {\n expandSiteOptions: boolean;\n}\n\n/**\n * Simple Pickup option dropdown with Button to get menu option.\n */\nexport class PickUpOptionList extends React.PureComponent {\n private readonly _pickupListOptionMenu: React.RefObject;\n\n private readonly _pickupListOptionButton: React.RefObject;\n\n private readonly eventsToBeBind = ['click', 'touchstart'];\n\n public constructor(props: IPickUpOptionListProps) {\n super(props);\n this._renderDeliveryOptions = this._renderDeliveryOptions.bind(this);\n this._pickupListOptionMenu = React.createRef();\n this._pickupListOptionButton = React.createRef();\n this.state = {\n expandSiteOptions: false\n };\n }\n\n public componentDidMount(): void {\n for (const event of this.eventsToBeBind) {\n window.addEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public componentWillUnmount(): void {\n for (const event of this.eventsToBeBind) {\n window.removeEventListener(event, this.handleDocumentClick, true);\n }\n }\n\n public render(): JSX.Element {\n const { pickupListOptionMenuText, pickupmodeList } = this.props;\n\n return (\n
\n \n {pickupListOptionMenuText}\n \n \n {this.state.expandSiteOptions ? (\n
    \n {pickupmodeList?.map((delivery: DeliveryOption) => {\n return (\n
  • \n \n \n {delivery.Description}\n \n \n
  • \n );\n })}\n
\n ) : null}\n
\n );\n }\n\n /**\n * Handle the document click.\n * @param event -- Event object.\n */\n private readonly handleDocumentClick = (event: Event): void => {\n const htmlElement = event.target as HTMLElement;\n if (\n !(\n (this._pickupListOptionButton.current !== null &&\n (event.target === this._pickupListOptionButton.current ||\n this._pickupListOptionButton.current.contains(htmlElement))) ||\n (this._pickupListOptionMenu.current !== null &&\n (event.target === this._pickupListOptionMenu.current || this._pickupListOptionMenu.current.contains(htmlElement)))\n )\n ) {\n this.setState({\n expandSiteOptions: false\n });\n }\n };\n\n private _renderDeliveryOptions(event: React.MouseEvent): void {\n event.stopPropagation();\n const isExpandSiteOptionsState = this.state.expandSiteOptions;\n this.setState({\n expandSiteOptions: !isExpandSiteOptionsState\n });\n }\n\n /**\n * Select Delivery option.\n * @param event -- Event Object.\n */\n private readonly _onSelect = async (event: React.MouseEvent): Promise => {\n event.preventDefault();\n const deliveryCode = event.currentTarget.getAttribute('data-value');\n if (deliveryCode && deliveryCode.length > 0) {\n await this.props.onChange(deliveryCode);\n }\n };\n}\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { RegularStoreHours } from '@msdyn365-commerce/retail-proxy';\nimport get from 'lodash/get';\n\nimport { IStoreSelectorLocationLineItemResources } from '.';\n\nexport interface IHoursDisplayInfo {\n startDayShort: string;\n startDayFull: string;\n endDayShort?: string;\n endDayFull?: string;\n timeRange: string;\n}\n\ninterface IHoursInfo {\n isClosed: boolean;\n openTime?: number;\n closeTime?: number;\n}\n\ntype DayType = 'MON' | 'TUE' | 'WED' | 'THU' | 'FRI' | 'SAT' | 'SUN';\n\nexport const secondsToTime = (seconds: number | undefined): string | undefined => {\n if (seconds === undefined) {\n return undefined;\n }\n let hours = Math.floor(seconds / (60 * 60));\n const ampm = hours >= 12 ? 'pm' : 'am';\n hours %= 12;\n hours = hours ? hours : 12;\n const divisorForMinutes = seconds % (60 * 60);\n const minutes = Math.floor(divisorForMinutes / 60) < 10 ? `0${Math.floor(divisorForMinutes / 60)}` : Math.floor(divisorForMinutes / 60);\n return `${hours}:${minutes} ${ampm}`;\n};\n\nconst getShortTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.monday;\n case 'TUE':\n return resources.days.tuesday;\n case 'WED':\n return resources.days.wednesday;\n case 'THU':\n return resources.days.thursday;\n case 'FRI':\n return resources.days.friday;\n case 'SAT':\n return resources.days.saturday;\n default:\n // Case 'SUN':\n return resources.days.sunday;\n }\n};\n\nconst getFullTimeString = (day: DayType, resources: IStoreSelectorLocationLineItemResources): string => {\n switch (day) {\n case 'MON':\n return resources.days.mondayFull;\n case 'TUE':\n return resources.days.tuesdayFull;\n case 'WED':\n return resources.days.wednesdayFull;\n case 'THU':\n return resources.days.thursdayFull;\n case 'FRI':\n return resources.days.fridayFull;\n case 'SAT':\n return resources.days.saturdayFull;\n default:\n // Case 'SUN':\n return resources.days.sundayFull;\n }\n};\n\nconst buildHoursDisplayInfo = (\n startDay: DayType,\n endDay: DayType,\n hoursInfo: string,\n resources: IStoreSelectorLocationLineItemResources\n): IHoursDisplayInfo => {\n return {\n startDayShort: getShortTimeString(startDay, resources),\n startDayFull: getFullTimeString(startDay, resources),\n endDayShort: startDay !== endDay ? getShortTimeString(endDay, resources) : undefined,\n endDayFull: startDay !== endDay ? getFullTimeString(endDay, resources) : undefined,\n timeRange: hoursInfo\n };\n};\n\nconst shouldMergeLines = (firstLine: IHoursInfo, secondLine: IHoursInfo): boolean => {\n if (firstLine.isClosed && secondLine.isClosed) {\n return true;\n }\n\n if (!firstLine.isClosed && !secondLine.isClosed) {\n return firstLine.openTime === secondLine.openTime && firstLine.closeTime === secondLine.closeTime;\n }\n\n return false;\n};\n\nconst getStoreHoursData = (storeHours: RegularStoreHours, dateForLookup: string): IHoursInfo => {\n return {\n isClosed: get(storeHours, `IsClosedOn${dateForLookup}`, false),\n openTime: get(storeHours, `${dateForLookup}OpenTime`, undefined),\n closeTime: get(storeHours, `${dateForLookup}CloseTime`, undefined)\n };\n};\n\nconst buildStoreHoursString = (hoursInfo: IHoursInfo, resources: IStoreSelectorLocationLineItemResources): string => {\n if (hoursInfo.isClosed) {\n return resources.closedText;\n }\n const openFrom: string | undefined = secondsToTime(hoursInfo.openTime);\n const openTo: string | undefined = secondsToTime(hoursInfo.closeTime);\n\n return `${openFrom}–${openTo}`;\n};\n\nexport const buildStoreHours = (storeHours: RegularStoreHours, resources: IStoreSelectorLocationLineItemResources): IHoursDisplayInfo[] => {\n const storeHoursList: IHoursDisplayInfo[] = [];\n\n const mondayHours = getStoreHoursData(storeHours, 'Monday');\n const tuesdayHours = getStoreHoursData(storeHours, 'Tuesday');\n const wednesdayHours = getStoreHoursData(storeHours, 'Wednesday');\n const thursdayHours = getStoreHoursData(storeHours, 'Thursday');\n const fridayHours = getStoreHoursData(storeHours, 'Friday');\n const saturdayHours = getStoreHoursData(storeHours, 'Saturday');\n const sundayHours = getStoreHoursData(storeHours, 'Sunday');\n\n let periodStart: DayType = 'MON';\n let periodEnd: DayType = 'MON';\n\n if (!shouldMergeLines(mondayHours, tuesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(mondayHours, resources), resources));\n\n periodStart = 'TUE';\n }\n periodEnd = 'TUE';\n\n if (!shouldMergeLines(tuesdayHours, wednesdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(tuesdayHours, resources), resources));\n\n periodStart = 'WED';\n }\n periodEnd = 'WED';\n\n if (!shouldMergeLines(wednesdayHours, thursdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(wednesdayHours, resources), resources));\n\n periodStart = 'THU';\n }\n periodEnd = 'THU';\n\n if (!shouldMergeLines(thursdayHours, fridayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(thursdayHours, resources), resources));\n\n periodStart = 'FRI';\n }\n periodEnd = 'FRI';\n\n if (!shouldMergeLines(fridayHours, saturdayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(fridayHours, resources), resources));\n\n periodStart = 'SAT';\n }\n periodEnd = 'SAT';\n\n if (!shouldMergeLines(saturdayHours, sundayHours)) {\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(saturdayHours, resources), resources));\n\n periodStart = 'SUN';\n }\n periodEnd = 'SUN';\n\n storeHoursList.push(buildHoursDisplayInfo(periodStart, periodEnd, buildStoreHoursString(sundayHours, resources), resources));\n\n return storeHoursList;\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitContact, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n IPayLoad,\n ITelemetryContent,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './date-time-helpers';\n\n/**\n * Store Locator line item resources.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n\n closedText: string;\n\n outOfStock: string;\n inStock: string;\n\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n pickupDeliveryOptionErrorMessage?: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * Store Locator line item props.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n filteredPickupMode?: string;\n shouldShowIndex?: boolean;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n };\n}\n\n/**\n * Store Locator line item action component.\n */\nconst storeSelectorLocationLineItemComponentActions = {\n onLocationSelected(props: IStoreSelectorLocationLineItemProps, deliveryMode?: string): void {\n props.handlers.onSelected(props.location, deliveryMode);\n },\n onSetAsPreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onSetAsPreferredStore(props.location.OrgUnitNumber);\n },\n onRemovePreferredStore(props: IStoreSelectorLocationLineItemProps): void {\n props.handlers.onRemovePreferredStore();\n }\n};\n\n/**\n * Function to render store hours.\n * @param storeHours - Store Hours object.\n * @param location - Store Unit.\n * @param resources - Resources.\n * @returns - Jsx element.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n location: OrgUnitLocation,\n resources: IStoreSelectorLocationLineItemResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day houts\n if (storeHours?.RegularStoreHours) {\n const storeHoursList: IHoursDisplayInfo[] = buildStoreHours(storeHours.RegularStoreHours, resources);\n\n return (\n
\n {storeHoursList.map(displayTime => (\n
\n {displayTime.endDayShort ? (\n
\n {displayTime.startDayShort}–\n {displayTime.endDayShort}\n
\n ) : (\n
\n {displayTime.startDayShort}\n
\n )}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string | undefined = secondsToTime(location.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(location.OpenTo);\n\n return (\n
\n {storeOpenFrom}-{storeOpenTo}\n
\n );\n};\n\n/**\n * Function to return distance measure unit.\n * @param distance - Store location within radius.\n * @param preferredDistanceUnit - Unit configuration.\n * @param isLocationDisabled - Flag to check user location.\n * @returns - Unit of distance.\n */\nexport const buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n isLocationDisabled?: boolean\n): string | undefined => {\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < 1) {\n return `(<1 ${preferredDistanceUnit})`;\n }\n return `(${Math.floor(distance)} ${preferredDistanceUnit})`;\n};\n\n/**\n * Function to store contact.\n * @param contacts - Store location within radius.\n * @returns - Return primary contact number of store.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === 1 && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: IStoreSelectorLocationLineItemProps, pickupMode?: string) => () => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, pickupMode);\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onSetAsPreferredStore(props);\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n storeSelectorLocationLineItemComponentActions.onRemovePreferredStore(props);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: IStoreSelectorLocationLineItemProps) => async (deliveryCode: string): Promise => {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props, deliveryCode);\n return Promise.resolve();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: IStoreSelectorLocationLineItemProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Method to check if we have atleast one common delivery code between product and channel.\n * @param productdeliveryOptions - Product DeliveryOption List.\n * @param storePickUpOptionList - Channel DeliveryOption List.\n * @returns DeliveryOptionList.\n */\nexport const matchDeliveryOptions = (\n productdeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n const deliveryOption: DeliveryOption[] = [];\n productdeliveryOptions?.map(delivery => {\n const pickup = storePickUpOptionList?.find(_delivery => _delivery.Code === delivery.Code);\n if (pickup) {\n deliveryOption.push(pickup);\n }\n });\n\n return deliveryOption;\n};\n\n/**\n * Renders store location line items.\n * @param props - Store location line items props.\n * @returns - HTML.\n */\nconst storeSelectorLocationLineItem: React.FC = (props: IStoreSelectorLocationLineItemProps) => {\n const {\n hideStockStatus,\n isCurrentLocation,\n isInStock,\n location,\n resources,\n storeHours,\n stockStatusLabel,\n storeLocatorView,\n index,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n shouldShowIndex\n } = props;\n\n const storeName: string | undefined = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(location.Distance, props.preferredDistanceUnit, isLocationDisabled);\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n const stockText: string | undefined = hideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = hideStockStatus || isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName || '');\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [isError, setError] = React.useState(false);\n\n const pickUpButtonClickHandler = (props: IStoreSelectorLocationLineItemProps) => () => {\n if (deliveryOptionList.length === 0) {\n setError(true);\n } else {\n storeSelectorLocationLineItemComponentActions.onLocationSelected(props);\n }\n };\n\n /* eslint-disable prettier/prettier */\n return (\n
\n
\n {(shouldShowIndex || storeLocatorView) && {index}}\n {storeName}\n {distanceAsString ? \n {' '}\n {distanceAsString}\n : false}\n
\n
\n
\n

{resources.contactInfoHeader}

\n {storeAddress && (\n
\n \n {storeAddress}\n
\n )}\n {phoneNumber && (\n
\n \n {phoneNumber}\n
\n )}\n
\n
\n

{resources.storeHoursHeader}

\n {renderStoreHours(storeHours, location, resources)}\n
\n {!storeLocatorView && (\n
\n {!hideStockStatus &&

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : canSelectLocation ? (\n deliveryOptionList.length === 0 ? (\n \n {pickupInStoreButtonText}\n \n ) : (\n renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel)\n )\n ) : (\n false\n )}\n
\n )}\n {isPreferredStoreEnabled ? (\n isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n )\n ) : null}\n
\n {isError ? (\n \n \n ) : ('')}\n
\n );\n};\n\n/**\n * Store location line item component.\n */\nexport const StoreSelectorLocationLineItemComponent = storeSelectorLocationLineItem as (\n props: IStoreSelectorLocationLineItemProps\n) => JSX.Element;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { DeliveryOption, OrgUnitLocation } from '@msdyn365-commerce/retail-proxy';\nimport { IFullOrgUnitAvailability } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n IPayLoad,\n ITelemetryContent,\n NodeTag,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { PickUpOptionList } from '../pickup-option-list';\nimport { buildDistanceString, matchDeliveryOptions } from '../store-selector-location-line-item';\n\n/**\n * Store Locator line item resources.\n */\nexport interface ISelectedStoreResources {\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreProps {\n className?: string;\n shouldHideStockStatus?: boolean;\n isCurrentLocation?: boolean;\n isInStock?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n resources: ISelectedStoreResources;\n stockStatusLabel?: string;\n preferredStoreLocationId: string | null;\n isPreferredStoreEnabled?: boolean;\n isLocationDisabled?: boolean;\n telemetryContent?: ITelemetryContent;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n preferredDistanceUnit: string;\n filteredPickupMode?: string;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * Store Selector resources.\n */\nexport interface ISelectedStoreViewProps {\n isCurrentLocation?: boolean;\n canSelectLocation?: boolean;\n selectedStore?: IFullOrgUnitAvailability;\n deliveryOptions?: DeliveryOption[];\n isPreferredStore?: boolean;\n resources: ISelectedStoreResources;\n\n storeDetailsMain: INodeProps;\n storeHeader: INodeProps;\n storeName: React.ReactNode;\n storeDistance: React.ReactNode;\n storeDetailsAvailabilityContainer: INodeProps;\n productAvailability: React.ReactNode;\n stockStatus: React.ReactNode;\n currentLocation: React.ReactNode;\n pickUpDeliveryOptionButton: React.ReactNode;\n pickupModes?: React.ReactNode;\n preferredStoreButton?: React.ReactNode;\n removePreferredStoreButton?: React.ReactNode;\n storeDetailsCloseButton?: React.ReactNode;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n}\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupInStoreClickHandler = (props: ISelectedStoreProps) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation);\n }\n};\n\n/**\n * Set Preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onSetPreferredStoreClickHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onSetAsPreferredStore(props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber);\n};\n\n/**\n * On Change functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onChangeHandler = (props: ISelectedStoreProps) => async (deliveryCode: string): Promise => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, deliveryCode);\n }\n return Promise.resolve();\n};\n\n/**\n * Remove preferred store functionality.\n * @param props -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst removePreferredStoreHandler = (props: ISelectedStoreProps) => () => {\n props.handlers.onRemovePreferredStore();\n};\n\n/**\n * On Store locator click functionality.\n * @param props -Store locator location items.\n * @param pickupMode -Store locator location items.\n * @returns Store locator selected location line item action.\n */\nconst onPickupModeSelectHandler = (props: ISelectedStoreProps, pickupMode?: string) => () => {\n if (props.selectedStore?.OrgUnitAvailability?.OrgUnitLocation) {\n props.handlers.onSelected(props.selectedStore.OrgUnitAvailability.OrgUnitLocation, pickupMode);\n }\n};\n\n/**\n * On store details close functionality.\n * @param props -Store locator location items.\n * @returns Void promise.\n */\nconst storeDetailsModalHandler = (props: ISelectedStoreProps) => async (): Promise => {\n await props.handlers.closeStoreDetailsModal();\n};\n\n/**\n * Method to render pickup modes.\n * @param props - StoreSelector Line item props.\n * @param deliveryOptionList - Product DeliveryOption List.\n * @param pickupInStoreButtonText - Pickup store button text.\n * @param pickupInStoreAriaLabel - Pickup store aria label.\n * @returns Jsx component.\n */\nconst renderPickupModes = (\n props: ISelectedStoreProps,\n deliveryOptionList: DeliveryOption[],\n pickupInStoreButtonText: string,\n pickupInStoreAriaLabel: string\n): JSX.Element | null => {\n if (props.filteredPickupMode === undefined) {\n return (\n \n );\n }\n return (\n \n {pickupInStoreButtonText}\n \n );\n};\n\n/**\n * Renders selected store details.\n * @param props - Store location details props.\n * @returns - Selected Store view props.\n */\nconst selectedStoreDetails = (props: ISelectedStoreProps): ISelectedStoreViewProps => {\n const {\n className,\n shouldHideStockStatus,\n isCurrentLocation,\n isInStock,\n selectedStore,\n resources,\n stockStatusLabel,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n isLocationDisabled,\n telemetryContent,\n storePickUpOptionList,\n productPickUpOptionList,\n preferredDistanceUnit\n } = props;\n\n const parentClassName = className ? className : 'ms-store-select__map__selected_store';\n const storeName: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const location = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const distanceAsString: string | undefined = buildDistanceString(location?.Distance, preferredDistanceUnit, isLocationDisabled);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockLabel = stockStatusLabel ? stockStatusLabel : undefined;\n // eslint-disable-next-line no-nested-ternary -- Required to check stock Label\n const stockText: string | undefined = shouldHideStockStatus ? undefined : stockLabel ? stockLabel : resourceLabel;\n const canSelectLocation = !shouldHideStockStatus && isInStock;\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const isPreferredStore = preferredStoreLocationId === location?.OrgUnitNumber;\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n\n const viewProps: ISelectedStoreViewProps = {\n selectedStore,\n isCurrentLocation,\n canSelectLocation,\n isPreferredStore,\n resources,\n deliveryOptions: deliveryOptionList,\n storeDetailsMain: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__main`\n },\n storeHeader: {\n tag: 'div' as NodeTag,\n className: `${parentClassName}__header`\n },\n storeName: {storeName},\n storeDetailsCloseButton: \n ),\n pickupModes: renderPickupModes(props, deliveryOptionList, pickupInStoreButtonText, pickupInStoreAriaLabel),\n preferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.preferredStoreText}\n \n ) : null,\n removePreferredStoreButton: isPreferredStoreEnabled ? (\n \n {resources.setAsPreferredStoreText}\n \n ) : null,\n handlers: {\n onSelected: props.handlers.onSelected,\n onSetAsPreferredStore: props.handlers.onSetAsPreferredStore,\n onRemovePreferredStore: props.handlers.onRemovePreferredStore,\n closeStoreDetailsModal: props.handlers.closeStoreDetailsModal\n }\n };\n\n return viewProps;\n};\n\n/**\n * Store location line item component.\n */\nexport const SelectedStoreComponent = selectedStoreDetails as (props: ISelectedStoreProps) => ISelectedStoreViewProps;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\n/// \n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { DeliveryOption, ItemAvailability, OrgUnitLocation, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { IStoreInfo, IStoreSelectionStateContext } from '@msdyn365-commerce-modules/bopis-utilities';\nimport {\n ArrayExtensions,\n getFullAvailableInventoryNearby,\n GetFullAvailableInventoryNearbyInput,\n getOrgUnitLocationsByArea,\n GetOrgUnitLocationsByAreaInput,\n IFullOrgUnitAvailability\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n IModuleProps,\n INodeProps,\n isMobile,\n ITelemetryContent,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n NodeTag,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classname from 'classnames';\nimport { reaction, when } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n StoreSelectorEmptyMessage,\n StoreSelectorFoundLocationsMessage,\n StoreSelectorLocationLines,\n StoreSelectorSearchForm,\n StoreSelectorTermsOfService,\n StoreSelectorWaiting\n} from './components';\nimport { ISelectedStoreProps, ISelectedStoreViewProps, SelectedStoreComponent } from './components/selected-store/selected-store';\nimport { buildStoreHours, IHoursDisplayInfo, secondsToTime } from './components/store-selector-location-line-item/date-time-helpers';\nimport { IStoreSelectorData } from './store-selector.data';\nimport {\n IStoreSelectorProps,\n IStoreSelectorResources,\n mode as modeEnum,\n searchRadiusUnit as SearchRadiusUnit,\n style as styleEnum\n} from './store-selector.props.autogenerated';\n\n/**\n * StoreSelector State Interface.\n */\nexport interface IStoreSelectorState {\n isSearchInProgress: boolean;\n searchTerm?: string;\n isSeeAllStoreValue: boolean;\n isLocationDisabled?: boolean;\n filteredPickupMode?: string;\n}\n\n/**\n * StoreSelector View Props Interface.\n */\nexport interface IStoreSelectorViewProps extends IStoreSelectorProps {\n state: IStoreSelectorState;\n\n // Containers:\n ModuleProps: IModuleProps;\n BodyContainerProps: INodeProps;\n FooterContainerProps: INodeProps;\n HeaderContainerProps: INodeProps;\n HeaderProps?: React.ReactNode;\n\n // Components\n locationsMessage?: React.ReactNode;\n search?: React.ReactNode;\n spinner?: React.ReactNode;\n locationsList?: React.ReactNode;\n selectedLocation?: ISelectedStoreViewProps;\n noLocationsMessage?: React.ReactNode;\n terms?: React.ReactNode;\n headerText?: React.ReactNode;\n sortLocations?: IFullOrgUnitAvailability[];\n locationListProps?: IStoreSelectorLocationLineItemProps[];\n bodyWrapperProps?: INodeProps;\n storeResultContainerProps?: INodeProps;\n mapContainerProps?: INodeProps;\n maps?: React.ReactNode;\n isMobileView?: boolean;\n storeDetailsModal?: INodeProps;\n\n callbacks: {\n closeDialog(): Promise;\n searchTermChanged(searchTerm: string): Promise;\n performSearch(searchTerm: string): Promise;\n selectedLocation(location: OrgUnitLocation | undefined): Promise;\n getAndUpdateUserLocation(): Promise;\n attachMapAutoSuggest(): Promise;\n onSuggestionSelected(result: Microsoft.Maps.ISuggestionResult): Promise;\n setPreferredStore(storeId: string | undefined): Promise;\n removePreferredStore(): Promise;\n setSelectedStore(storeId: string | undefined): Promise;\n setOrgUnitStoreInformation(location: OrgUnitLocation | undefined): Promise;\n };\n}\n\n/**\n * StoreSelectorLocation Line Resources Interface.\n */\nexport interface IStoreSelectorLocationLineItemResources {\n contactInfoHeader: string;\n storeHoursHeader: string;\n availabilityInfoHeader: string;\n closedText: string;\n outOfStock: string;\n inStock: string;\n currentLocation: string;\n selectLocation: string;\n selectLocationAriaLabelFormat: string;\n setAsPreferredStoreText: string;\n setAsPreferredStoreTextAriaLabel: string;\n preferredStoreText: string;\n preferredStoreAriaLabel: string;\n\n days: {\n monday: string;\n tuesday: string;\n wednesday: string;\n thursday: string;\n friday: string;\n saturday: string;\n sunday: string;\n mondayFull: string;\n tuesdayFull: string;\n wednesdayFull: string;\n thursdayFull: string;\n fridayFull: string;\n saturdayFull: string;\n sundayFull: string;\n };\n}\n\n/**\n * ILocationHours Interface.\n */\nexport interface ILocationHours {\n openFrom?: string;\n openTo?: string;\n}\n\n/**\n * StoreSelectorLocation Line Item Props Interface.\n */\nexport interface IStoreSelectorLocationLineItemProps {\n location: OrgUnitLocation;\n storeHours?: StoreHours;\n storeHoursList?: IHoursDisplayInfo[];\n\n hideStockStatus?: boolean;\n isInStock?: boolean;\n isCurrentLocation?: boolean;\n\n resources: IStoreSelectorLocationLineItemResources;\n stockStatusLabel?: string;\n storeLocatorView?: boolean;\n isPreferredStoreEnabled?: boolean;\n index: string;\n preferredStoreLocationId: string | null;\n storePickUpOptionList?: DeliveryOption[];\n productPickUpOptionList?: DeliveryOption[];\n selectedStoreLocationId?: string;\n locationOpen?: ILocationHours;\n\n /**\n * The telemetry content.\n */\n telemetryContent?: ITelemetryContent;\n preferredDistanceUnit: string;\n isLocationDisabled?: boolean;\n handlers: {\n onSelected(location: OrgUnitLocation, deliveryMode?: string): void;\n onSetAsPreferredStore(locationId: string | undefined): void;\n onRemovePreferredStore(): void;\n closeStoreDetailsModal(): Promise;\n };\n onClick: (locationId: string | undefined) => void;\n}\n\n/**\n *\n * Pick Up In Store module.\n * @extends React.Component>}\n */\n@observer\nclass StoreSelector extends React.Component, IStoreSelectorState> {\n private autoSuggestManager: Microsoft.Maps.AutosuggestManager | undefined;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private storeCounter: number;\n\n private isPreferredStoreEnabled?: boolean;\n\n public constructor(props: IStoreSelectorProps) {\n super(props);\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.state = { isSearchInProgress: true, searchTerm: '', isSeeAllStoreValue: false, filteredPickupMode: undefined };\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.storeCounter = 0;\n }\n\n public async componentDidMount(): Promise {\n const {\n context: {\n actionContext: {\n requestContext: { channel }\n }\n },\n config: { autoSuggestionEnabled: isAutoSuggestionEnabled }\n } = this.props;\n\n // Adding Timeout to make sure it loads the data based upon the preferred store.\n setTimeout(() => {\n this._getAndUpdateStoreLocation();\n }, 0);\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.isDialogOpen,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context?.id === this.props.id) {\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.context?.id,\n async () => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (!context || context.id === this.props.id) {\n await this._searchTermChanged('');\n this._getAndUpdateStoreLocation();\n }\n }\n );\n\n if (this.props.data.storeSelectorStateManager.result?.loadMapApi) {\n await this.props.data.storeSelectorStateManager.result.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context?.actionContext?.requestContext?.channel?.ChannelCountryRegionISOCode\n });\n }\n\n reaction(\n () => this.props.data.storeSelectorStateManager.result?.loadMapApi,\n () => {\n this.props.data.storeSelectorStateManager.result?.loadMapApi({\n key: channel?.BingMapsEnabled ? channel.BingMapsApiKey : '',\n lang: this.props.context.actionContext.requestContext.locale,\n market: this.props.context.actionContext.requestContext.channel?.ChannelCountryRegionISOCode\n });\n }\n );\n\n reaction(\n () => this.props.data.availabilitiesWithHours.result,\n async () => {\n if (this.props.data.storeSelectorStateManager.result?.isDialogOpen) {\n const storeLocationList = this.props.data.availabilitiesWithHours.result;\n if (storeLocationList) {\n await this._setOrgUnitStoreInformation(storeLocationList);\n }\n }\n }\n );\n\n if (isAutoSuggestionEnabled) {\n when(\n () => {\n const isMapApiLoaded = !!this.props.data.storeSelectorStateManager.result?.isMapApiLoaded;\n const isDialogOpen = !!this.props.data.storeSelectorStateManager.result?.isDialogOpen;\n const isSameContext = this.props.data.storeSelectorStateManager.result?.context?.id === this.props.id;\n return isMapApiLoaded && isDialogOpen && isSameContext;\n },\n () => {\n setTimeout(async () => {\n await this._attachMapAutoSuggest();\n }, 0);\n }\n );\n }\n }\n\n public shouldComponentUpdate(): boolean {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n if (context && context.id === this.props.id) {\n return true;\n }\n return false;\n }\n\n // eslint-disable-next-line complexity -- disabling the complexity for this method for now as its causing lot of other warnings\n public render(): JSX.Element {\n const {\n config: {\n termsOfServiceLink,\n className,\n heading,\n mode,\n style,\n setAsPreferredStore: shouldSetAsPreferredStore,\n showAllStores: shouldShowAllStores,\n lookupRadius,\n enablePickupFilterToShowStore: hasEnablePickupFilterToShowStore,\n searchRadiusUnit\n },\n context: {\n telemetry,\n app: { config: appConfig },\n actionContext: {\n requestContext: { channel, cookies }\n }\n },\n slots: { maps: mapSlot },\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n this.storeCounter = 0;\n const isMobileDevice = isMobile({ variant: VariantType.Viewport, context: this.props.context.request }) === 'xs';\n const isMapDisabled = !(channel?.BingMapsApiKey && channel.BingMapsEnabled);\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const isDialogOpen: boolean = storeSelectorStateManager\n ? storeSelectorStateManager.isDialogOpen && context?.id === this.props.id\n : false;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const isInlineView = styleDefault === styleEnum.inline;\n const isLocatorView = modeDefault === modeEnum.findStores;\n const shouldHideInventory = isLocatorView;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n const shouldDisplayList = storeSelectorStateManager?.listMapViewState?.displayList;\n this.isPreferredStoreEnabled = shouldSetAsPreferredStore && cookies?.isConsentGiven();\n const canShowLocationView =\n context && (context.showMapViewLink === undefined || context.showMapViewLink) && storeSelectorStateManager?.isMapModuleLoaded;\n\n const storeSelectorActions = {\n async toggleListMapViewState(): Promise {\n await storeSelectorStateManager?.toggleListMapViewState();\n }\n };\n\n if (!channel?.BingMapsApiKey) {\n telemetry.error('BingMapsApiKey is missing.');\n }\n\n const configHeading = heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText;\n const preferredDistanceUnit =\n searchRadiusUnit === SearchRadiusUnit.kilometers ? resources.kilometersShortText : resources.milesShortText;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n let storeLocationList: IFullOrgUnitAvailability[] | undefined = shouldHideInventory ? storeLocations : availabilitiesWithHours;\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment -- Reading value from app config.\n const isEnableOutofStock: boolean = appConfig?.enableStockCheck || false;\n const alreadySelectedLocation = context ? context.alreadySelectedLocation : undefined;\n const productPickUpOptionList = storeSelectorStateManager?.context?.deliveryOptions?.DeliveryOptions;\n if (this.state.filteredPickupMode && storeLocationList) {\n storeLocationList = this.onFilterLocations(storeLocationList, this.state.filteredPickupMode);\n }\n\n let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\n\n const locationListProps = this._getStoreLocationListProps(\n isEnableOutofStock,\n isLocatorView,\n preferredLocationId,\n this.isPreferredStoreEnabled,\n selectedStoreLocationId,\n sortLocation ?? null,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n\n const hasMapSlot = ArrayExtensions.hasElements(mapSlot);\n const dialogClassName = hasMapSlot ? 'ms-store-select__map' : '';\n const viewProps: IStoreSelectorViewProps = {\n ...(this.props as IStoreSelectorProps),\n state: this.state,\n maps: hasMapSlot ? mapSlot[0] : undefined,\n\n ModuleProps: {\n tag: isInlineView ? ('div' as NodeTag) : Modal,\n moduleProps: this.props,\n className: classname(\n `ms-store-${isInlineView ? 'locate' : 'select'}`,\n className,\n dialogClassName,\n isInlineView ? '' : 'msc-modal-input-required'\n ),\n autoFocus: true,\n fade: true,\n isOpen: isDialogOpen,\n 'aria-label': configHeading,\n onClosed: this._closeDialog,\n horizontalPosition: 'center',\n verticalPosition: 'center',\n toggle: this._closeDialog\n },\n isMobileView: isMobileDevice,\n HeaderContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalHeader,\n className: `ms-store-select__${isInlineView ? 'header' : 'modal-header'}`,\n toggle: this._closeDialog\n },\n HeaderProps: configHeading && (\n \n ),\n FooterContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalFooter,\n className: `ms-store-select__${isInlineView ? 'footer' : 'modal-footer'} ${!shouldDisplayList ? 'map-only-view' : ''}`\n },\n BodyContainerProps: {\n tag: isInlineView ? ('div' as NodeTag) : ModalBody,\n className: `ms-store-select__${isInlineView ? 'body' : 'modal-body'}`\n },\n bodyWrapperProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__body_wrapper'\n },\n storeResultContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__store_container'\n },\n mapContainerProps: {\n tag: 'div' as NodeTag,\n className: 'ms-store-select__map_container'\n },\n storeDetailsModal: {\n tag: 'div' as NodeTag,\n className: `ms-store-select__map__selected_store__modal ${\n selectedStoreLocationId && isDialogOpen && !shouldDisplayList ? 'show' : 'hide'\n }`\n },\n locationsMessage: !this.state.isLocationDisabled && (\n \n ),\n selectedLocation: this.renderSelectedStore(\n shouldHideInventory,\n preferredDistanceUnit,\n preferredStore,\n this.isPreferredStoreEnabled,\n isEnableOutofStock,\n productPickUpOptionList,\n shouldDisplayList\n ),\n search: (\n \n ),\n spinner: ,\n locationsList: ArrayExtensions.hasElements(storeLocationList) ? (\n \n ) : (\n undefined\n ),\n noLocationsMessage: ,\n terms: (\n \n ),\n\n // Not being used in current context, we can use it here to pass more props.\n headerText: (\n {heading ? heading : isLocatorView ? resources.storeLocatorHeaderText : resources.storeSelectorHeaderText}\n ),\n sortLocations: sortLocation,\n locationListProps,\n callbacks: {\n searchTermChanged: this._searchTermChanged,\n performSearch: this._performSearch,\n closeDialog: this._closeDialog,\n selectedLocation: this._onOrgUnitLocationSelected,\n getAndUpdateUserLocation: async () => {\n this._getAndUpdateStoreLocation();\n return Promise.resolve();\n },\n attachMapAutoSuggest: this._attachMapAutoSuggest,\n onSuggestionSelected: this._onOrgUnitLocationSelected,\n setPreferredStore: this._setPreferredStore,\n removePreferredStore: this._removePreferredStore,\n setSelectedStore: this._setSelectedStore,\n setOrgUnitStoreInformation: this._setOrgUnitStoreInformation\n }\n } as IStoreSelectorViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Render the selected store for the mobile devices.\n * @param shouldHideInventory -- Hide Inventory.\n * @param preferredDistanceUnit -- Preferred Distance Unit.\n * @param preferredStore -- Preferred Store.\n * @param isPreferredStoreEnabled -- Is Preferred Store Enabled.\n * @param hasEnabledOutOfStockCheck -- Stock check is enabled or not.\n * @param productPickUpOptionList -- Product pickup option list.\n * @param shouldDisplayList - Should Display list.\n * @returns -- Returns the view props.\n */\n public renderSelectedStore = (\n shouldHideInventory: boolean,\n preferredDistanceUnit: string,\n preferredStore: IStoreInfo | undefined,\n isPreferredStoreEnabled: boolean | undefined,\n hasEnabledOutOfStockCheck: boolean,\n productPickUpOptionList?: DeliveryOption[],\n shouldDisplayList?: boolean\n ): ISelectedStoreViewProps | undefined => {\n const {\n resources,\n data: {\n availabilitiesWithHours: { result: availabilitiesWithHours },\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations }\n }\n } = this.props;\n\n const context = storeSelectorStateManager ? storeSelectorStateManager.context : undefined;\n const selectedStoreLocationId = storeSelectorStateManager?.selectedStoreLocationId;\n const selectedStore = (shouldHideInventory ? storeLocations : availabilitiesWithHours)?.find(\n store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === selectedStoreLocationId\n );\n const orgUnitLocation = selectedStore?.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreResources = this._mapResources(resources);\n\n if (!shouldDisplayList && selectedStore) {\n const selectedProps: ISelectedStoreProps = {\n shouldHideStockStatus: shouldHideInventory,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, context?.alreadySelectedLocation),\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, selectedStore.OrgUnitAvailability?.ItemAvailabilities),\n selectedStore,\n resources: selectedStoreResources,\n stockStatusLabel: this._stockInventoryLabel(selectedStore),\n preferredStoreLocationId: preferredStore?.StoreId ? preferredStore.StoreId : '',\n isPreferredStoreEnabled,\n isLocationDisabled: this.state.isLocationDisabled,\n telemetryContent: this.telemetryContent,\n storePickUpOptionList: selectedStore.OrgUnitPickUpDeliveryModes?.DeliveryOptions,\n productPickUpOptionList,\n preferredDistanceUnit,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n\n return SelectedStoreComponent(selectedProps);\n }\n\n return undefined;\n };\n\n /**\n * Method to be called on link text change.\n * @param event -Content Edit Event.\n */\n public handleLinkTextChange = (event: Msdyn365.ContentEditableEvent): void => {\n if (this.props.config.termsOfServiceLink) {\n this.props.config.termsOfServiceLink.linkText = event.target.value;\n }\n };\n\n /**\n * Method to be called on heading change.\n * @param event -Content Edit Event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading = event.target.value;\n };\n\n /**\n * Show all stores handler function.\n */\n private readonly onShowAllStoresHandler = () => {\n this._getAndUpdateStoreLocation(true);\n this.setState({ filteredPickupMode: undefined });\n };\n\n /**\n * Method to be called for filtered the store location based on the filter selected by the user.\n * @param stores -All the stores from the API.\n * @param filteredPickupMode -Filter selected by the user.\n * @returns -Filtered stores.\n */\n private readonly onFilterLocations = (stores: IFullOrgUnitAvailability[], filteredPickupMode: string) => {\n return stores.filter(location => {\n return location.OrgUnitPickUpDeliveryModes?.DeliveryOptions?.some(deliveryOption => {\n return deliveryOption.Code === filteredPickupMode;\n });\n });\n };\n\n /**\n * Filter Store by pickup mode.\n * @param deliveryCode -Delivery Code.\n */\n private readonly onFilteredPickupMode = (deliveryCode: string) => {\n this.setState({ filteredPickupMode: deliveryCode });\n };\n\n /**\n * Method will sort all stores.\n * @param stores -Stores List.\n * @param isPreferredStoreEnabled -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @returns List of Stores.\n */\n // eslint-disable-next-line class-methods-use-this -- No need of introducing new variable.\n private _sortStores(\n stores: IFullOrgUnitAvailability[],\n isPreferredStoreEnabled: boolean | undefined,\n preferredStoreLocationId: string\n ): IFullOrgUnitAvailability[] {\n const isPreferredStore = (value: IFullOrgUnitAvailability) =>\n isPreferredStoreEnabled &&\n preferredStoreLocationId &&\n value.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === preferredStoreLocationId;\n\n return [...stores.filter(isPreferredStore), ...stores.filter(store => !isPreferredStore(store))];\n }\n\n /**\n * Method will list of store selector location line.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param stores -Store Id.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns List of StoreSelectorLocation Line.\n */\n private _getStoreLocationListProps(\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n stores: IFullOrgUnitAvailability[] | null,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps[] {\n const storeList: IStoreSelectorLocationLineItemProps[] = [];\n if (ArrayExtensions.hasElements(stores)) {\n stores.map((store, index: number) => {\n const storeLineProps = this._createStoreLocationList(\n store,\n index,\n hasEnabledOutOfStockCheck,\n isStoreLocatorView,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n selectedStoreLocationId,\n preferredDistanceUnit,\n alreadySelectedLocation,\n productPickUpOptionList\n );\n if (storeLineProps) {\n storeList.push(storeLineProps);\n }\n });\n }\n return storeList;\n }\n\n /**\n * Initialize Map AutoSuggest.\n */\n private readonly _attachMapAutoSuggest = async (): Promise => {\n const {\n config: { autoSuggestOptions },\n context: {\n telemetry,\n actionContext: {\n requestContext: { channel }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager?.isMapApiLoaded && !this.autoSuggestManager) {\n Microsoft.Maps.loadModule('Microsoft.Maps.AutoSuggest', {\n /**\n * Callback for the autosuggest API.\n */\n callback: () => {\n const options = { ...autoSuggestOptions, countryCode: channel?.ChannelCountryRegionISOCode };\n this.autoSuggestManager = new Microsoft.Maps.AutosuggestManager(options);\n this.autoSuggestManager.attachAutosuggest(\n `#ms-store-select__search-box_${this.props.id}`,\n `#ms-store-select__search-box-container_${this.props.id}`,\n this._onSuggestionSelected\n );\n },\n\n /**\n * Error call back for autosuggest API.\n */\n errorCallback: () => {\n if (telemetry) {\n telemetry.debug('Unable to attach map auto suggest.');\n }\n },\n credentials: channel?.BingMapsApiKey\n });\n }\n };\n\n /**\n * On Selecting Location Suggestion.\n * @param result - Map Suggestions List.\n */\n private readonly _onSuggestionSelected = async (result: Microsoft.Maps.ISuggestionResult): Promise => {\n const context = this.props.data.storeSelectorStateManager.result?.context;\n if (context && context.id === this.props.id) {\n await this._searchTermChanged(result.formattedSuggestion);\n await this._performSearch(result.formattedSuggestion);\n }\n };\n\n /**\n * On Selecting Preferred Store.\n * @param storeId - Store Id.\n */\n private readonly _setPreferredStore = async (storeId: string | undefined): Promise => {\n if (!storeId) {\n return;\n }\n\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n config: { mode },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager },\n storeLocations: { result: storeLocations },\n availabilitiesWithHours: { result: availabilitiesWithHours }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n\n let stores: IFullOrgUnitAvailability[];\n if (modeDefault === modeEnum.findStores && storeLocations) {\n stores = storeLocations;\n } else {\n stores = availabilitiesWithHours!;\n }\n\n const preferredStore = stores.find(store => store.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitNumber === storeId);\n\n await storeSelectorStateManager.setPreferredStoreLocation(\n storeId,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName,\n cookies.isConsentGiven(),\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Latitude,\n preferredStore?.OrgUnitAvailability?.OrgUnitLocation?.Longitude\n );\n };\n\n /**\n * On Removing Preferred Store.\n */\n private readonly _removePreferredStore = async (): Promise => {\n const {\n context: {\n actionContext: {\n requestContext: { cookies }\n }\n },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.clearPreferredStore(cookies.isConsentGiven());\n };\n\n /**\n * Method called to close the store details modal that comes up on clicking the pushpin.\n * @returns Void promise.\n */\n private readonly _closeStoreDetailModal = async (): Promise => {\n const storeSelectorStateManager = this.props.data.storeSelectorStateManager.result;\n await storeSelectorStateManager?.setSelectedStoreLocationId(undefined);\n };\n\n /**\n * On Selecting Store for pickup.\n * @param storeId - Store Id.\n */\n private readonly _setSelectedStore = async (storeId: string | undefined): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n await storeSelectorStateManager.setSelectedStoreLocationId(storeId);\n };\n\n /**\n * Method to be called on search.\n * @param searchTerm - Search string.\n */\n private readonly _performSearch = async (searchTerm: string): Promise => {\n const {\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!searchTerm || !storeSelectorStateManager) {\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n const location = await storeSelectorStateManager.geoLocate(searchTerm.trim() !== '' ? searchTerm : '0', actionContext);\n\n if (location) {\n await this._updateLocations(location.latitude, location.longitude);\n } else {\n await this._updateLocations();\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n };\n\n /**\n * Method to be called on search term changed.\n * @param searchTerm - Search string.\n */\n private readonly _searchTermChanged = async (searchTerm: string): Promise => {\n this.setState({ searchTerm });\n };\n\n /**\n * Method to be called updating the store location.\n * @param shouldShowAllStores - Flag to show all stores.\n */\n private readonly _getAndUpdateStoreLocation = (shouldShowAllStores?: boolean): void => {\n const {\n config: { style },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n\n if (styleDefault !== styleEnum.inline && (!storeSelectorStateManager || !storeSelectorStateManager.isDialogOpen)) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: true, isSeeAllStoreValue: false });\n\n if (navigator?.geolocation) {\n navigator.geolocation.getCurrentPosition(\n async position => {\n // eslint-disable-next-line react/no-unused-state -- This state is used in the views.\n this.setState({ isLocationDisabled: false, isSearchInProgress: true });\n if (shouldShowAllStores) {\n this.setState({ isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(position.coords.latitude, position.coords.longitude, 0);\n } else {\n await this._updateLocations(position.coords.latitude, position.coords.longitude);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n async error => {\n // If the location setting is turned off\n if (error.PERMISSION_DENIED) {\n this.setState({ isLocationDisabled: true, isSeeAllStoreValue: true });\n await this._searchTermChanged('');\n await this._updateLocations(0, 0, 0);\n }\n\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n },\n { timeout: 5000 }\n );\n } else {\n // eslint-disable-next-line react/no-unused-state -- State is used in the view.\n this.setState({ isSearchInProgress: false });\n }\n };\n\n /**\n * Method to be called closing the store selector dialog.\n * @returns Void promise.\n */\n private readonly _closeDialog = async (): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n this.setState({ searchTerm: '' });\n\n if (storeSelectorStateManager) {\n storeSelectorStateManager.context?.parentElementRef?.current?.focus();\n return storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method to set store info.\n * @param orgUnitStoreInformation - Store Info Object.\n * @returns Void promise.\n */\n private readonly _setOrgUnitStoreInformation = async (orgUnitStoreInformation: IFullOrgUnitAvailability[]): Promise => {\n const {\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n },\n config: { style },\n telemetry\n } = this.props;\n\n if (!storeSelectorStateManager) {\n return;\n }\n\n const context = storeSelectorStateManager.context;\n const moduleId: string = context?.id ? context.id : this.props.id;\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n let input: IStoreSelectionStateContext = {\n /**\n * On Location selected.\n * @returns - Returns promise.\n */\n onLocationSelected: async () => {\n // TO-DO handle event for when location in selected\n return Promise.resolve();\n }\n };\n\n if (storeSelectorStateManager.context) {\n input = storeSelectorStateManager.context;\n }\n\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager.preferredStore;\n const preferredLocationId = preferredStore?.StoreId ? preferredStore.StoreId : '';\n const storeLocationList = this._sortStores(orgUnitStoreInformation, this.isPreferredStoreEnabled, preferredLocationId);\n\n input = {\n ...input,\n id: moduleId,\n showMapViewLink: context?.showMapViewLink,\n parentElementRef: context?.parentElementRef,\n isDialog: styleDefault === styleEnum.dialog,\n orgUnitStoreInformation: storeLocationList,\n product: context?.product\n };\n\n await storeSelectorStateManager.setOrgUnitStoreInformation(input).catch((error: Error) => {\n if (telemetry) {\n telemetry.error(error.message);\n telemetry.debug('Unable to Update store location state');\n }\n });\n };\n\n /**\n * Method to update user location.\n * @param latitude - User location.\n * @param longitude - User location.\n * @param radius - Search Criteria Radius.\n * @returns Void promise.\n */\n private readonly _updateLocations = async (latitude?: number, longitude?: number, radius?: number): Promise => {\n const {\n config: { mode, lookupRadius, style, searchRadiusUnit },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n const styleDefault = style !== undefined ? style : styleEnum.dialog;\n const calRadius = radius || radius === 0 ? radius : lookupRadius || 50;\n const distanceUnitValue = searchRadiusUnit === SearchRadiusUnit.kilometers ? 1 : 0;\n const modeDefault = mode !== undefined ? mode : modeEnum.pickupInStore;\n const preferredStore: IStoreInfo | undefined = storeSelectorStateManager?.preferredStore;\n let localLatitude = this.state.searchTerm || !preferredStore?.Latitude ? latitude : preferredStore.Latitude;\n let long = this.state.searchTerm || !preferredStore?.Longitude ? longitude : preferredStore.Longitude;\n if (styleDefault === styleEnum.inline) {\n const lastInlineStoreLocation = storeSelectorStateManager?.lastInlineShownStoreInfo;\n if (lastInlineStoreLocation && !this.state.searchTerm) {\n localLatitude = lastInlineStoreLocation.Latitude ? lastInlineStoreLocation.Latitude : localLatitude;\n long = lastInlineStoreLocation.Longitude ? lastInlineStoreLocation.Longitude : long;\n }\n await storeSelectorStateManager?.setLastInlineStoreInfo(localLatitude, long);\n }\n\n if (modeDefault === modeEnum.findStores) {\n await this.getOrgUnitLocationByArea(calRadius, distanceUnitValue, localLatitude, long);\n return;\n }\n\n await this.getFullAvailableInventoryNearby(calRadius, distanceUnitValue, localLatitude, long);\n };\n\n /**\n * Get org unit location by area.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getOrgUnitLocationByArea = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n context: { actionContext }\n } = this.props;\n const orgUnitLocationsInput = new GetOrgUnitLocationsByAreaInput(\n latitude,\n longitude,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n const orgUnitLocations = await getOrgUnitLocationsByArea(orgUnitLocationsInput, actionContext);\n if (orgUnitLocations) {\n await this._setOrgUnitStoreInformation(orgUnitLocations);\n await this._setSelectedStore(undefined);\n }\n };\n\n /**\n * Get full available inventory nearby.\n * @param calRadius - Radius.\n * @param distanceUnitValue - Distance unit value.\n * @param latitude - Latitude.\n * @param longitude - Longitude.\n * @returns - Returns a void promise.\n */\n private readonly getFullAvailableInventoryNearby = async (\n calRadius: number,\n distanceUnitValue: number,\n latitude?: number,\n longitude?: number\n ): Promise => {\n const {\n telemetry,\n context: { actionContext },\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (!storeSelectorStateManager || !storeSelectorStateManager.context) {\n // Store selector dialog isn't open yet, so don't try and update anything\n return;\n }\n\n if (!storeSelectorStateManager.context.product) {\n // TODO: Use alternative search method here to not make inventory check\n return;\n }\n\n const input = new GetFullAvailableInventoryNearbyInput(\n storeSelectorStateManager.context.product.RecordId,\n latitude ?? 0,\n longitude ?? 0,\n calRadius,\n distanceUnitValue,\n this.state.isLocationDisabled\n );\n\n await getFullAvailableInventoryNearby(input, actionContext).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get full available inventory near by');\n });\n };\n\n /**\n * Method to called on store selected.\n * @param location - Store Info.\n * @param deliveryMode - Pickup mode.\n * @returns Void promise.\n */\n private readonly _onOrgUnitLocationSelected = async (location: OrgUnitLocation | undefined, deliveryMode?: string): Promise => {\n const {\n telemetry,\n data: {\n storeSelectorStateManager: { result: storeSelectorStateManager }\n }\n } = this.props;\n\n if (storeSelectorStateManager) {\n if (location && storeSelectorStateManager.context) {\n // Want to eat exceptions here so that the dialog still closes even if the onLocationSelected call goes wrong\n await storeSelectorStateManager.context.onLocationSelected(location, deliveryMode).catch(error => {\n telemetry.warning(error);\n telemetry.error(error.message);\n telemetry.debug('Unable to get on org unit location selected');\n });\n }\n\n await storeSelectorStateManager.closeDialog();\n }\n };\n\n /**\n * Method will list of store selector location line.\n * @param store -Store Info.\n * @param index - List index.\n * @param hasEnabledOutOfStockCheck -Stores List.\n * @param isStoreLocatorView -Module config value.\n * @param preferredStoreLocationId -Store Id.\n * @param isPreferredStoreEnabled -Stores List.\n * @param selectedStoreLocationId -Module config value.\n * @param preferredDistanceUnit -Module config value.\n * @param alreadySelectedLocation -Already Selected Location.\n * @param productPickUpOptionList -Product supported Pickup Modes List.\n * @returns StoreSelectorLocation Line Prop.\n */\n private _createStoreLocationList(\n store: IFullOrgUnitAvailability,\n index: number,\n hasEnabledOutOfStockCheck: boolean,\n isStoreLocatorView: boolean,\n preferredStoreLocationId: string,\n isPreferredStoreEnabled: boolean | undefined,\n selectedStoreLocationId: string | undefined,\n preferredDistanceUnit?: string | undefined,\n alreadySelectedLocation?: OrgUnitLocation,\n productPickUpOptionList?: DeliveryOption[]\n ): IStoreSelectorLocationLineItemProps | undefined {\n const orgUnitLocation = store.OrgUnitAvailability?.OrgUnitLocation;\n const selectedStoreLocation = selectedStoreLocationId;\n const deliveryOptions = store.OrgUnitPickUpDeliveryModes;\n const lineResources = this._mapResources(this.props.resources);\n const storeOpenFrom: string | undefined = secondsToTime(orgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(orgUnitLocation?.OpenTo);\n const storeHours = store.StoreHours;\n\n if (orgUnitLocation) {\n ++this.storeCounter;\n return {\n location: orgUnitLocation,\n selectedStoreLocationId: selectedStoreLocation,\n storeHours,\n resources: lineResources,\n preferredDistanceUnit: preferredDistanceUnit!,\n isCurrentLocation: this._isCurrentLocation(orgUnitLocation, alreadySelectedLocation),\n hideStockStatus: !hasEnabledOutOfStockCheck,\n isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {', '}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n

{countTitle}

\n
\n \n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupHeader = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n count: number,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { pickUpText, shippingText, emailshippingText, payInvoicesDisplayText } = resources;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n if (cartLine.data && cartLine.data.cartline.IsInvoiceLine) {\n groupTitle = payInvoicesDisplayText;\n } else if (!StringExtensions.isNullOrEmpty(emailDeliveryModeCode)) {\n groupTitle = cartLine.data && cartLine.data.cartline.DeliveryMode === emailDeliveryModeCode ? emailshippingText : groupTitle;\n }\n\n return (\n <>\n
\n

\n

{groupTitle}

\n {renderCartLinesGroupTitle(cartLine, resources, count)}\n
\n \n );\n};\n\n/**\n * Returns count of products.\n * @param cartLine - The cart line view props.\n * @returns Number of products.\n */\nconst countItems = (cartLine: ICartlinesViewProps[]): number => {\n let countItem = 0;\n const defaultItemCount = 0;\n countItem = cartLine.reduce((count, item) => {\n return count + (item.data?.cartline.Quantity ?? defaultItemCount);\n }, defaultItemCount);\n return countItem;\n};\n\n/**\n * Render Cart Lines group.\n * @param props - The cart line view props.\n * @param resources - Module resource strings.\n * @returns JSX Element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps & ICartExtensionProps<{}>, resources: ICartResources): JSX.Element | undefined => {\n if (props.cartLinesGroup && ArrayExtensions.hasElements(props.cartLinesGroup)) {\n return (\n
\n {props.cartLinesGroup.map(cartlines => {\n return (\n
\n {renderCartLinesGroupHeader(\n cartlines[0],\n resources,\n countItems(cartlines),\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {renderCartlines(\n props,\n cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult,\n props.telemetryContent,\n props.multiplePickUpEnabled,\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\n/**\n * Render error block.\n * @param errorData - Error component.\n * @returns JSX Element.\n */\nconst renderErrorBlock = (errorData: IOrderSummaryErrors | undefined): JSX.Element | null => {\n if (!errorData || !ArrayExtensions.hasElements(errorData.errors)) {\n return null;\n }\n return (\n \n {errorData.header}\n {errorData.errors}\n \n );\n};\n\n/**\n * Render invoice summary.\n * @param invoiceSummaryLines - Invoice summary component.\n * @param orderSummaryItems - Order summary component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderInvoiceSummarylines = (\n invoiceSummaryLines: IInvoiceSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!invoiceSummaryLines) {\n props.context.telemetry.error('InvoiceSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {invoiceSummaryLines.invoices}\n {invoiceSummaryLines.giftCard}\n {invoiceSummaryLines.loyalty}\n {invoiceSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render order summary.\n * @param orderSummaryLines - Order summary component.\n * @param orderSummaryItems - Order summary items component.\n * @param props - The module props.\n * @returns JSX Element.\n */\nconst renderOrderSummarylines = (\n orderSummaryLines: IOrderSummaryLines | undefined,\n orderSummaryItems: INodeProps,\n props: ICartViewProps\n): JSX.Element | null => {\n if (!orderSummaryLines) {\n props.context.telemetry.error('OrderSummary content is empty, module wont render');\n return null;\n }\n return (\n \n {orderSummaryLines.subtotal}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Render error block.\n * @param promotions - The module view props.\n * @returns JSX Element.\n */\nconst renderPromotions = (promotions: ICartLineItemViewProps): JSX.Element | undefined => {\n return (\n <>\n \n {promotions.promotionMessage}\n {promotions.promotionSeeAllLink}\n {promotions.promotionDialog}\n \n \n );\n};\n\n/**\n * Render order summary checkout.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckout = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.cart?.hasInvoiceLine ? null : props.promoCode}\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n \n {props.createTemplateFromCartButton}\n \n );\n};\n\n/**\n * Render order summary checkout button.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst renderOrderSummaryCheckoutButton = (props: ICartViewProps): JSX.Element | undefined => {\n return (\n \n {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n \n );\n};\n\n/**\n * Render cart view.\n * @param props - The module view props.\n * @returns JSX Element.\n */\nconst CartView: React.FC> = (props: ICartViewProps & ICartExtensionProps<{}>) => {\n const totalItemCountOne: number = 1;\n const updatedTitle = (\n

\n {props.resources.cartTitle}\n \n {` (${Number(props.cart?.totalItemsInCart)} ${props.cart?.totalItemsInCart !== totalItemCountOne ? 'items' : 'item'})`}\n \n

\n );\n return (\n
\n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
\n
\n or\n
\n {B2BAccount(signInB2BAccount)}\n
\n
\n
\n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
\n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

\n {storeAddress && (\n
\n
\n )}\n {phoneNumber && (\n
\n \n {phoneNumber}\n
\n )}\n
\n
\n

{locationLineItem.resources.storeHoursHeader}

\n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n
\n {!storeLocatorView && !hideStockStatus && (\n
\n

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

}\n
\n )}\n {isPreferredStoreEnabled &&\n (isPreferredStore ? (\n \n {resources.preferredStoreText}\n \n ) : (\n \n {resources.setAsPreferredStoreText}\n \n ))}\n
\n
\n );\n};\n\n/**\n * Render Store Location.\n * @param location - The location props.\n * @param index - The location index.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocation = (\n location: IStoreSelectorLocationLineItemProps,\n index: number,\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n): JSX.Element | undefined => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n storeLocatorView,\n isCurrentLocation,\n isInStock,\n productPickUpOptionList,\n resources,\n storePickUpOptionList,\n telemetryContent\n } = location;\n\n const orgUnitLocation = location.location;\n const selectedStoreLocationId = location.selectedStoreLocationId;\n const defaultAriaSetsize = 0;\n const canSelectLocation = hideStockStatus ?? isInStock;\n const storeName = location.location.OrgUnitName;\n const pickupInStoreAriaLabel: string = resources.selectLocationAriaLabelFormat.replace('{StoreName}', storeName ?? '');\n const pickupInStoreButtonText: string = resources.selectLocation;\n const pickUpOptionDropdownPlaceholderText: string = props.resources.pickupOptionDropdownPlaceholderText;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const selectStoreText = props.resources.selectStoreText;\n const pickUpMethodLabel = props.resources.pickUpMethodLabel;\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n location.handlers.onSelected(location.location);\n };\n\n /**\n * Render Store Locations.\n * @param unitLocation - The org unit location.\n * @returns Handler for onClick.\n */\n const onClickHandler = (unitLocation: OrgUnitLocation | undefined) => () => {\n location.onClick(unitLocation?.OrgUnitNumber);\n };\n\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n \n );\n const pickUpMethodSelection = canSelectLocation ? canSelectPickUpMethod : false;\n\n return (\n \n \n {renderStoreLocationLineItem(location, props)}\n \n {!storeLocatorView &&\n (isCurrentLocation ? (\n

{resources.currentLocation}

\n ) : (\n pickUpMethodSelection\n ))}\n \n );\n};\n\n/**\n * Render Store Locations.\n * @param props - The view props.\n * @param selectedLocationReference - The ref.\n * @returns The JSX Element.\n */\nconst renderStoreLocations = (\n props: IStoreSelectorViewProps & IStoreSelectorProps,\n selectedLocationReference: React.RefObject\n) => {\n return (\n \n {props.locationListProps?.map((store, index) => {\n return renderStoreLocation(store, index, props, selectedLocationReference);\n })}\n \n );\n};\n\n/**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\nconst mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n};\n\n/**\n * Render the selected store.\n * @param selectedLocationProps -- Selected store view props.\n * @param storeSelectorViewProps -- Store selector view props.\n * @returns -- HTML.\n */\nexport const renderSelectedStore = (\n selectedLocationProps: ISelectedStoreViewProps,\n storeSelectorViewProps: IStoreSelectorViewProps & IStoreSelectorProps\n): JSX.Element => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton,\n selectedStore\n } = selectedLocationProps;\n\n const storeAddress: string | undefined = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.Contacts);\n const storeHoursList = selectedStore?.StoreHours?.RegularStoreHours\n ? buildStoreHours(selectedStore.StoreHours.RegularStoreHours, mapResources(storeSelectorViewProps.resources))\n : [];\n const storeOpenFrom: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenFrom);\n const storeOpenTo: string | undefined = secondsToTime(selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OpenTo);\n const locationOpen = { openFrom: storeOpenFrom, openTo: storeOpenTo };\n const storeNameValue = selectedStore?.OrgUnitAvailability?.OrgUnitLocation?.OrgUnitName;\n const pickupInStoreAriaLabel: string = selectedLocationProps.resources.selectLocationAriaLabelFormat.replace(\n '{StoreName}',\n storeNameValue ?? ''\n );\n const telemetryContent = getTelemetryObject(\n storeSelectorViewProps.context.request.telemetryPageName!,\n storeSelectorViewProps.friendlyName,\n storeSelectorViewProps.telemetry\n );\n const payLoad = getPayloadObject('click', telemetryContent, TelemetryConstant.PickupInStore);\n const attributes = getTelemetryAttributes(telemetryContent, payLoad);\n const pickupInStoreButtonText: string = selectedLocationProps.resources.selectLocation;\n const selectStoreText = storeSelectorViewProps.resources.selectStoreText;\n const pickUpMethodLabel = storeSelectorViewProps.resources.pickUpMethodLabel;\n const pickUpOptionDropdownPlaceholderText: string = storeSelectorViewProps.resources.pickupOptionDropdownPlaceholderText;\n const orgUnitNumber = selectedStore?.OrgUnitAvailability?.OrgUnitLocation!.OrgUnitNumber;\n const productPickUpOptionList = storeSelectorViewProps.data.storeSelectorStateManager.result?.context?.deliveryOptions?.DeliveryOptions;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, selectedLocationProps.deliveryOptions);\n const selectedLocation = storeSelectorViewProps.locationListProps?.find(location => location.location.OrgUnitNumber === orgUnitNumber);\n\n /**\n * Method to handle the pick up in store.\n * @returns Void.\n */\n const onPickupInStoreClickHandler = () => () => {\n selectedLocationProps.handlers.onSelected(selectedStore!.OrgUnitAvailability!.OrgUnitLocation!);\n };\n const canSelectPickUpMethod = !ArrayExtensions.hasElements(deliveryOptionList) ? (\n \n ) : (\n selectedLocation && (\n \n )\n );\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n
\n

{storeSelectorViewProps.resources.contactText}

\n {storeAddress && (\n
\n
\n )}\n {phoneNumber && (\n
\n \n {phoneNumber}\n
\n )}\n
\n
\n

{storeSelectorViewProps.resources.timeText}

\n {renderStoreHours(selectedStore?.StoreHours, storeHoursList, locationOpen, storeSelectorViewProps.resources)}\n
\n {productAvailability && (\n
\n

{productAvailability}

\n {stockStatus &&

{stockStatus}

}\n
\n )}\n
\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n {canSelectPickUpMethod}\n
\n );\n};\n\n/**\n * Store Selector View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst StoreSelectorViewComponent: React.FC> = props => {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from Store-Selector.tsx file\n const {\n BodyContainerProps,\n storeResultContainerProps,\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n locationsMessage,\n search,\n state,\n spinner,\n maps,\n locationsList,\n noLocationsMessage,\n terms,\n storeDetailsModal,\n selectedLocation,\n bodyWrapperProps,\n data,\n context\n } = props;\n const selectedLocationReference = React.useRef(null);\n const [isDesktopPort, setIsDesktopPort] = React.useState(false);\n\n const isDesktopViewport = React.useCallback(() => {\n const portView = isMobile({ variant: VariantType.Browser, context: context.request });\n const isDesktopPorts = portView === 'md' || portView === 'xl' || portView === 'lg';\n setIsDesktopPort(isDesktopPorts);\n }, [context]);\n\n React.useEffect(() => {\n if (props.locationsList) {\n /**\n * Method to handle scrolling.\n */\n const scrollIntoView = () => {\n const selectedLocationDiv = (selectedLocationReference as React.RefObject).current;\n if (selectedLocationDiv !== null) {\n const offset = selectedLocationDiv.getBoundingClientRect();\n const parent = selectedLocationDiv.parentElement?.parentElement;\n if (parent && offset) {\n const totalHeight = parent.scrollTop + offset.top;\n parent.scrollTop = totalHeight - parent.clientHeight;\n }\n }\n };\n scrollIntoView();\n }\n }, [props.locationsList]);\n\n React.useEffect(() => {\n if (MsDyn365.isBrowser) {\n window.addEventListener('resize', isDesktopViewport);\n }\n isDesktopViewport();\n }, [isDesktopViewport]);\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isDesktopView = viewport === 'md' || viewport === 'lg' || viewport === 'xl';\n\n if (!isDesktopView || !isDesktopPort) {\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n \n \n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n {maps}\n \n {selectedLocation && renderSelectedStore(selectedLocation, props)}\n \n \n \n
\n {terms}\n \n );\n }\n return (\n \n {HeaderProps}\n \n \n {locationsMessage && (\n \n )}\n {search}\n {state.isSearchInProgress ? (\n spinner\n ) : (\n <>{locationsList ? renderStoreLocations(props, selectedLocationReference) : noLocationsMessage}\n )}\n \n \n {maps}\n \n \n {terms}\n \n );\n};\n\nexport default StoreSelectorViewComponent;\n"],"names":["KRV_AddressResponseEntityExtensionClass","constructor","odataObject","this","Id","AddressList","undefined","i","length","Number","className","substr","lastIndexOf","concat","EntityClasses","String","KRV_AddressEntityExtensionClass","ExtensionProperties","AddressName","Street","City","State","PostalCode","Country","CountryRegion","FullAddress","createKRV_GetAddressInput","queryResultSettings","customerAccountNumber","id","key","DataServiceQuery","DataServiceEntities","kRV_BillingAddressQuery","resultSettings","createDataServiceRequestForOperation","bypassCache","returnEntity","AccountPreferencesSection","_ref","accountPreferences","heading","personalization","extraPreferences","React","Node","Object","assign","AccountPreferenceSection","map","preferenceSecton","index","_ref2","accountPreference","description","buttonWrapper","buttonYesText","button","buttonNoText","AccountProfileSection","_ref3","AccountProfileItem","links","props","_customerInformation$","_accountInformation$r","_accountInformation$r2","_props$data$customerI","_props$data$customerI2","_companyName$Value","_companyName$Value2","AccountProfile","accountProfileWrapper","emailSection","preferenceSection","customerAttributesWrapper","customerAttributesSection","data","accountInformation","customerInformation","billingAddress","setBillingAddress","companyName","result","find","item","Key","context1","callerContext","context","actionContext","accountNumber","AccountNumber","billAddress","billName","billNumber","_accountInformation$r3","_accountInformation$r4","_accountInformation$r5","InvoiceAccount","Addresses","IsPrimary","Name","Phone","request","callActionOrExecute","kRV_GetAddressAsync","then","Module","resources","firstNameHeading","FirstName","lastNameHeading","LastName","companyNameHeading","Value","StringValue","billingAddressHeading","name","phone","fulladdress","noAddressFoundtext","CookieComplianceBanner","AlertProps","Content","acceptButton","text","config","externalConsent","_window","consentChoosed","cookies","setConsentCookie","location","reload","window","CookieConsent","consent","necessary","addEventListener","Alert","color","fade","FooterItemView","render","FooterItem","Link","requestContext","user","isAuthenticated","title","_renderElement","HeadingContainer","linkText","image","EditableLink","promoBannerProps","contentProps","closeButton","bannerMessages","promoBannerTextProps","promoBannerLinksProps","carouselProps","promoBannerText","handleLinks","handleText","orderTracking","becomeBuisnessPartner","promotionalText","slides","message","_orderTracking$linkUr","_becomeBuisnessPartne","role","onClick","href","linkUrl","destinationUrl","items","AccountProfileEdit","super","moduleClassName","handleHeadingChange","event","target","value","onTextBoxChange","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","isInitialized","invalidEmailAddressError","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","EmailRegex","defaultRegex","source","telemetryContent","getTelemetryObject","telemetryPageName","friendlyName","telemetry","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","viewProps","_objectSpread","viewState","isShowLoading","accountProfileEdit","moduleProps","classnames","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","Msdyn365","editProps","onEdit","accountProfileEditLocalAccount","_renderLocalAccount","renderView","str","e","document","createElement","innerHTML","childNodes","nodeValue","localAccount","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","push","emailAddressLabelText","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","__decorate","observable","observer","AccountProfileEditItem","AccountProfileEditLoading","error","LocalAccount","disabled","payLoad","getPayloadObject","attributes","getTelemetryAttributes","Button","errorClassName","GetMaxLength","parsedMaxLength","parseInt","isNaN","htmlFor","PvaChatConnector","isOboRequest","url","botFrameworkCDNURL","app","pvaChatConnectorBotFrameworkCDNURL","script","src","async","crossOrigin","body","appendChild","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","uuid","REGEX","test","byteToHex","toString","arr","offset","arguments","validate","TypeError","options","buf","rnds","random","stringify","CartAmountTrigger","ProactiveChatTrigger","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","debug","cart","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","product","isValid","CartLines","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","ItemId","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","Date","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","toUTCString","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","date","dateParts","split","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","trim","referrer","indexOf","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","expdate","setTime","isConsentGiven","_updateVisitCounter","proactiveOnPageVisitNumber","clear","set","domain","hostname","path","pathname","expires","PageVisits","eCommerceCustProactiveNumberOfVisits","proactiveOnPageVisitMessage","get","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","waitTimeInMilliseconds","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","userId","uuidv4","_getContext","enabled","timeout","_proactiveCheck","exception","provider","_getProvider","_this$props$context$r","eCommerceOperatingUnitNumber","apiSettings","oun","eCommerceBaseUrl","baseUrl","eCommerceDataAreaId","channel","InventLocationDataAreaId","UserId","Email","emailAddress","firstName","anonymousUserName","lastName","eCommerceCustPageURL","eCommerceCustChatType","proactiveChatEnabled","proactive","_isProactive","getChatWrapperStyle","position","top","right","bottom","left","zIndex","justifyContent","getMaximizedChatWrapperStyle","isMobileDevice","height","width","padding","chatHeight","chatWidth","getChatButtonStyle","alignItems","backgroundColor","startChatButtonBackgroundColor","startChatButtonTextColor","borderColor","startChatButtonBorderColor","borderRadius","startChatButtonBorderRadius","borderStyle","startChatButtonBorderStyle","borderWidth","startChatButtonBorderWidth","storeLogoURL","cursor","outlineStyle","alignSelf","boxShadow","WebkitBoxShadow","MozBoxShadow","getButtonStoreLogoStyle","headerBackgroundColor","headerTextColor","marginRight","boxSizing","getChatStoreLogoStyle","margin","getChatMessagesStyle","minimized","getChatMessageHeader","chatHeaderHeight","backgroundImage","headerBackgroundImageURL","backgroundRepeat","flexDirection","chatBorderStyle","chatBorderWidth","getMinimizeButtonStyle","borderTop","borderLeft","borderRight","borderBottom","marginTop","getCloseButtonStyle","border","getChatMessageContent","chatBorderColor","getProactiveWrapperStyle","getProactiveMessageHeader","getProactiveMessageContent","getProactiveButtonStyle","outline","fontFormat","font","join","CommerceChatStore","setNewMessage","setNewMessageAction","powervaDirectlineTokenURL","botID","tenantID","fetch","method","r","json","token","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","dispatch","next","action","payload","language","navigator","_activity$from","activity","from","triggerQuery","ReactWebChat","WebChat","setUserId","useState","useMemo","ctx","directLine","createDirectLine","directLineToken","commerceChatStore","store","createStore","actionHandler","styleOptions","bubbleStyling","bubbleBackground","bubbleTextColor","bubbleBorderColor","bubbleBorderRadius","bubbleBorderStyle","bubbleBorderWidth","bubbleFromUserBackground","bubbleFromUserTextColor","bubbleFromUserBorderColor","bubbleFromUserBorderRadius","bubbleFromUserBorderStyle","bubbleFromUserBorderWidth","getBubbleStyling","avatarStyling","avatarBorderRadius","avatarSize","botAvatarBackgroundColor","botAvatarImage","botAvatarInitials","userAvatarBackgroundColor","userAvatarImage","userAvatarInitials","showAvatarInGroup","getAvatarStyling","suggestedActionStyling","suggestedActionLayout","suggestedActionBackground","suggestedActionTextColor","suggestedActionBorderColor","suggestedActionBorderRadius","suggestedActionBorderStyle","suggestedActionBorderWidth","suggestedActionDisabledBorderStyle","suggestedActionDisabledBorderWidth","suggestedActionDisabledTextColor","suggestedActionHeight","suggestedActionImageHeight","suggestedActionsCarouselFlipperCursor","suggestedActionsCarouselFlipperBoxWidth","suggestedActionsCarouselFlipperSize","suggestedActionsFlowMaxHeight","suggestedActionsStackedHeight","suggestedActionsStackedOverflow","suggestedActionsStackedLayoutButtonMaxHeight","suggestedActionsStackedLayoutButtonTextWrap","getSuggestedActionStyling","otherStyling","groupTimestamp","sendTimeout","sendTimeoutForAttachments","timestampColor","timestampFormat","notificationDebounceTimeout","hideToaster","toasterHeight","toasterMaxHeight","toasterSingularMaxHeight","toastFontSize","toastIconWidth","toastSeparatorColor","toastTextPadding","toastErrorBackgroundColor","toastErrorColor","toastInfoBackgroundColor","toastInfoColor","toastSuccessBackgroundColor","toastSuccessColor","toastWarnBackgroundColor","toastWarnColor","typingAnimationBackgroundImage","typingAnimationDuration","typingAnimationHeight","typingAnimationWidth","videoHeight","markdownExternalLinkIconImage","markdownRespectCRLF","internalLiveRegionFadeAfter","accent","subtle","getOtherStyling","hideUploadButton","primaryFont","getChatStyleOptions","userID","INVALID_TOKEN","loaded","setLoaded","setMinimized","newMessage","setToken","isProactive","setIsProactive","proactiveMessage","setProactiveMessage","closed","setClosed","setProvider","isMobile","variant","VariantType","Browser","Viewport","chatStyle","getChatStyling","ChatWrapperStyle","MaximizedChatWrapperStyle","ChatButtonStyle","ButtonStoreLogoStyle","ChatStoreLogoStyle","ChatMessagesStyle","ChatMessageHeader","MinimizeButtonStyle","CloseButtonStyle","ChatMessageContent","ProactiveWrapperStyle","ProactiveMessageHeader","ProactiveMessageContent","ProactiveButtonStyle","RedDotStyle","background","handleMaximizeButtonClick","useEffect","getDirectLineToken","catch","contextProvider","ContextProvider","prov","init","isValidToken","alt","fontWeight","fontSize","chatButtonHeader","chatButtonText","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","version","viewBox","xmlSpace","d","fill","ChatCore","unableToLoadChatMessage","p","interval","Chat","OrderInfomation","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","SalesLine","salesLineProps","salesLine","buyAgainButton","errors","GroupDelivery","deliveryProps","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","isCashAndCarryTransaction","LineId","deliveryType","shipment","trackingInfo","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","Payment","_ref7","paymentMethodsProps","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","alert","orderInfomation","orderSummary","payment","help","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","setState","_onSelect","preventDefault","deliveryCode","currentTarget","getAttribute","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","Code","Description","ref","tabIndex","onKeyDown","StoreSelectorLocationLines","onClickHandler","orgUnitLocation","OrgUnitNumber","_scrollIntoView","selectedLocationDiv","selectedLocationRef","current","parent","parentElement","scrollTop","offsetTop","clientHeight","_isCurrentLocation","alreadySelectedLocation","_isProductInStock","itemAvailabilities","enableOutOfStockCheck","ArrayExtensions","hasElements","AvailableQuantity","_stockInventoryLabel","availabilityWithHours","ProductInventoryInformation","_availabilityWithHour","OrgUnitAvailability","OrgUnitLocation","InventoryLocationId","InventLocationId","StockLevelLabel","_mapResources","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","pickupDeliveryOptionErrorMessage","days","monday","storeHoursMondayText","tuesday","storeHoursTuesdayText","wednesday","storeHoursWednesdayText","thursday","storeHoursThursdayText","friday","storeHoursFridayText","saturday","storeHoursSaturdayText","sunday","storeHoursSundayText","mondayFull","storeHoursMondayFullText","tuesdayFull","storeHoursTuesdayFullText","wednesdayFull","storeHoursWednesdayFullText","thursdayFull","storeHoursThursdayFullText","fridayFull","storeHoursFridayFullText","saturdayFull","storeHoursSaturdayFullText","sundayFull","storeHoursSundayFullText","storeCounter","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","hideStockStatus","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","filter","StoreSelectorSearchForm","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","onShowAllStores","_searchTextChanged","inputValue","searchTermChanged","_onSubmit","_this$searchBoxRef$cu","blur","performSearch","_onChangeHandler","filterPickupModeSelected","Promise","resolve","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","locatorView","pickupFilterByHeading","hasEnabledPickupFilterToShowStore","shouldDisplayList","toggleButtonClass","onToggleListMapViewState","toggleMapViewAttributes","TelemetryConstant","SearchStore","storeSearchAttributes","contentAction","etext","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","link","onTextChange","editableLink","openInNewTab","StoreSelectorFoundLocationsMessage","searchRadius","isSeeAllStore","storeCountMessage","milesShortText","storeCountMessageInKm","storeAllCountMessage","replace","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_renderDeliveryOptions","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","stopPropagation","isExpandSiteOptionsState","secondsToTime","seconds","hours","Math","floor","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","startDayShort","startDayFull","endDayShort","endDayFull","timeRange","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","buildStoreHoursString","buildStoreHours","storeHoursList","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","storeSelectorLocationLineItemComponentActions","deliveryMode","buildDistanceString","distance","onPickupModeSelectHandler","pickupMode","onSetPreferredStoreClickHandler","removePreferredStoreHandler","onChangeHandler","matchDeliveryOptions","productdeliveryOptions","deliveryOption","pickup","_delivery","storeName","OrgUnitName","distanceAsString","Distance","storeAddress","Address","phoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","IsPrivate","primaryPhoneContact","Locator","extractPhoneNumber","Contacts","resourceLabel","stockLabel","stockText","canSelectLocation","pickupInStoreButtonText","pickupInStoreAriaLabel","PickupInStore","PreferredStore","preferredStoreAttributes","RemovePreferredStore","removePreferredStoreAttributes","deliveryOptionList","isError","setError","renderStoreHours","RegularStoreHours","displayTime","JSON","storeOpenFrom","OpenFrom","storeOpenTo","OpenTo","pickUpButtonClickHandler","renderPickupModes","onPickupInStoreClickHandler","_props$selectedStore","selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","closeStoreDetailsModal","SelectedStoreComponent","_selectedStore$OrgUni","_selectedStore$OrgUni2","shouldHideStockStatus","parentClassName","storeDetailsMain","storeHeader","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","pickUpDeliveryOptionButton","pickupModes","preferredStoreButton","removePreferredStoreButton","StoreSelector","renderSelectedStore","shouldHideInventory","preferredStore","hasEnabledOutOfStockCheck","availabilitiesWithHours","storeSelectorStateManager","storeLocations","selectedStoreResources","_selectedStore$OrgUni3","selectedProps","StoreId","_onOrgUnitLocationSelected","_setPreferredStore","_removePreferredStore","_closeStoreDetailModal","handleLinkTextChange","termsOfServiceLink","onShowAllStoresHandler","_getAndUpdateStoreLocation","onFilterLocations","_location$OrgUnitPick","some","onFilteredPickupMode","_attachMapAutoSuggest","autoSuggestOptions","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","mode","setPreferredStoreLocation","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","geolocation","getCurrentPosition","coords","PERMISSION_DENIED","_closeDialog","_storeSelectorStateMa","parentElementRef","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","preferredLocationId","storeLocationList","orgUnitStoreInformation","showMapViewLink","isDialog","setOrgUnitStoreInformation","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","selectedLocation","hasEnableOutOfStockCheck","_isInStock$OrgUnitAva","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","_this$props$data$stor2","_this$props$data$stor3","_this$props$data$stor4","_this$props$data$stor5","loadMapApi","BingMapsEnabled","lang","locale","market","_this$props$data$stor7","_this$props$data$stor8","_this$props$context$a","_this$props$data$stor9","when","_this$props$data$stor10","_this$props$data$stor11","_this$props$data$stor12","isSameContext","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","slots","maps","mapSlot","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","isEnableOutofStock","enableStockCheck","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","classname","autoFocus","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","header","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","SignInLoading","SignInButton","signIn","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","forgetPassword","disclaimer","signInButton","socialAccounts","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount","StoreSelectorFoundLocationsMessageComponent","RichTextComponent","ContactInformationType","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","storeHoursDayPeriod","storeHoursDay","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","dataset","handleDropdownToggle","filterDeliveryOption","filteredDeliveryMode","renderLocationLinePickupButton","PickUpButtonComponent","renderStoreLocationLineItem","locationLineItem","closeDistanceString","distanceString","preferredStoreAttribute","removePreferredStoreAttribute","_props$data$storeSele","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","pickUpMethodSelection","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","_selectedLocationDiv$","getBoundingClientRect","totalHeight","MsDyn365","isBrowser","viewport","_data$storeSelectorSt","displayMap"],"sourceRoot":""}