{"version":3,"file":"static/js/22.5f5cfcfbac507c7cc0e1.chunk.js","mappings":"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","sources":["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/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/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.tsx?797a","webpack://Msdyn365.Commerce.Online/./src/modules/iframe/iframe.tsx?65fe","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/footer-item.view.tsx?eacc","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme-b2c/views/reviews-list.view.tsx?da88","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/footer-item.view.tsx?27ed","webpack://Msdyn365.Commerce.Online/./src/themes/gardner-theme/views/reviews-list.view.tsx?03f6","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/iframe/iframe.view.tsx?a7d6","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd","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/store-selector/components/store-selector-location-line-item/date-time-helpers.ts?fe27","webpack://Msdyn365.Commerce.Online/./src/modules/store-selector/components/pickup-option-list.tsx?dae0","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/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"],"sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { 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\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, IStoreSelectorViewProps } from './index';\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 * 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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\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 // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\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. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\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 { IFooterViewProps } from '@msdyn365-commerce-modules/footer';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\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 // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { FooterItem } = this.props;\r\n return (\r\n \r\n {this._renderElement(this.props)}\r\n \r\n );\r\n }\r\n\r\n private _renderElement(props: IFooterViewProps): React.ReactNode | null {\r\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Cannot change the prop names as props are from business logic.\r\n const { heading, HeadingContainer, Link, linkText, image, text, EditableLink } = props;\r\n if (heading) {\r\n return (\r\n {' '}\r\n );\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. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport {\r\n IReportReviewModalViewProps,\r\n IReviewCardViewProps,\r\n IReviewsListData,\r\n IReviewsListResources,\r\n IReviewsListState,\r\n IReviewsListViewProps\r\n} from '@msdyn365-commerce-modules/ratings-reviews';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IReviewsListProps } from '../definition-extensions/reviews-list.ext.props.autogenerated';\r\n\r\n/**\r\n * Build Review Card.\r\n * @param props - Review Card ViewProps.\r\n * @param resources - Resource Strings.\r\n * @param isUserReview - User review flag.\r\n * @returns JSX Element.\r\n */\r\nconst buildReviewCard = (props: IReviewCardViewProps, resources: IReviewsListResources, isUserReview: boolean) => {\r\n return (\r\n \r\n \r\n
\r\n {props.rating}\r\n {props.date}\r\n
\r\n {props.name}\r\n
\r\n \r\n \r\n {props.reviewTitle}\r\n {props.reviewText}\r\n \r\n \r\n {props.responseName}\r\n {props.responseDate}\r\n {props.responseText}\r\n \r\n \r\n {isUserReview ? undefined :

\r\n {resources.wasReviewHelpfulText}\r\n

}\r\n {props.like}\r\n {props.dislike}\r\n {props.edit}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Render Product Image.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductImage = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\r\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\r\n const defaultImageSettings: IImageSettings = {\r\n viewports: {\r\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\r\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\r\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\r\n },\r\n lazyload: true,\r\n cropFocalRegion: true\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render Product Description.\r\n * @param props - WriteReview ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst renderProductDescription = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const product = props.data.product.result;\r\n return (\r\n \r\n
\r\n {renderProductImage(props)}\r\n
\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.Name}\r\n
\r\n
\r\n {product?.ItemId}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review list ViewProps.\r\n * @returns JSX Element.\r\n */\r\nconst createReviewModal = (props: IReviewsListViewProps & IReviewsListProps): JSX.Element => {\r\n const { resources, moduleProps, reviewModal } = props;\r\n return (\r\n \r\n {reviewModal.modalHeader}\r\n \r\n \r\n \r\n {renderProductDescription(props)}\r\n \r\n
\r\n {resources.selectRatingLabel}\r\n
\r\n {reviewModal.rating}\r\n
\r\n
\r\n \r\n {resources.reviewTitleLabel}\r\n {reviewModal.titleInput}\r\n \r\n \r\n {resources.reviewTextLabel}\r\n {reviewModal.textInput}\r\n \r\n {reviewModal.privacyPolicyUrl}\r\n {reviewModal.error}\r\n
\r\n
\r\n \r\n {reviewModal.submitButton}\r\n {reviewModal.cancelButton}\r\n \r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Build Review modal.\r\n * @param props - Review modal ViewProps.\r\n * @param state - Review List State.\r\n * @returns JSX Element.\r\n */\r\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\r\n return (\r\n \r\n \r\n {state.reported ? props.headerSubmitted : props.header}\r\n \r\n \r\n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\r\n \r\n \r\n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * ReviewsList view.\r\n * @param props - Ratings ReviewsList ViewProps.\r\n * @returns ReviewsList view module.\r\n */\r\nconst ReviewsListview: React.FC> = props => {\r\n const {\r\n filterByDropdown,\r\n heading,\r\n moduleProps,\r\n noReviewsMessage,\r\n noReviewsWithFilterMessage,\r\n pageControls,\r\n refineReviewsProps,\r\n reportReviewModal,\r\n reviewsListProps,\r\n reviewCards,\r\n sortByDropdown,\r\n state,\r\n userReview,\r\n resources\r\n } = props;\r\n\r\n if (!userReview && !ArrayExtensions.hasElements(reviewCards) && !state.isFilterApplied) {\r\n return (\r\n {noReviewsMessage}\r\n );\r\n }\r\n\r\n return (\r\n \r\n {heading}\r\n \r\n {sortByDropdown}\r\n {filterByDropdown}\r\n \r\n \r\n {userReview && buildReviewCard(userReview, resources, true)}\r\n {reviewCards.map(review => {\r\n return buildReviewCard(review, resources, false);\r\n })}\r\n \r\n { !ArrayExtensions.hasElements(reviewCards) && state.isFilterApplied && noReviewsWithFilterMessage}\r\n {pageControls}\r\n {createReviewModal(props)}\r\n {createReportModal(reportReviewModal, state)}\r\n \r\n );\r\n};\r\n\r\nexport default ReviewsListview;\r\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, IPvaChatConnectorViewProps } from './index';\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 note\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\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 { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\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 {\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 note,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n {note}\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 {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \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 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","/*!\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 { 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 } 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 { 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, 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"],"names":["AccountProfileEdit","React","constructor","props","super","moduleClassName","handleHeadingChange","event","this","config","heading","text","target","value","onTextBoxChange","id","toLowerCase","givenName","surname","emailRegex","_onInit","_prePopulateData","_updateErrorMessage","initializationTimer","setInterval","_isInitializationSuccessful","setTimeout","clearInterval","window","isInitialized","resources","invalidEmailAddressError","map","obj","PRE","_htmlDecode","ID","email","PAT","PAT_DESC","message","required_field","requiredFieldMissingError","verifying_blurb","loadingMessage","Object","assign","EmailRegex","defaultRegex","source","telemetryContent","getTelemetryObject","context","request","telemetryPageName","friendlyName","telemetry","componentDidMount","componentDidUpdate","shouldComponentUpdate","nextProps","nextState","state","data","render","viewProps","_objectSpread","viewState","isShowLoading","accountProfileEdit","moduleProps","className","classnames","loading","modal","tag","Modal","isOpen","modalBody","ModalBody","icon","AccountProfileEditLoadingIconComponent","AccountProfileEditLoadingMessageComponent","defaultAADConainer","style","display","aadConainer","Msdyn365","editProps","onEdit","requestContext","accountProfileEditLocalAccount","_renderLocalAccount","renderView","str","e","document","createElement","innerHTML","childNodes","length","nodeValue","localAccount","items","_renderInput","firstNameLabelText","firstNameMaxLength","lastNameLabelText","lastNameMaxLength","errorMessage","AccountProfileEditErrorComponent","key","requiredFieldMissingSummaryError","fieldIncorrectError","buttonsWrapper","buttons","AccountProfileEditButtonComponent","ariaLabel","saveButtonAriaLabel","saveButtonText","cancelButtonText","verificationSuccessModal","verificationSuccessModalMessage","showEmail","push","emailAddressLabelText","undefined","type","labelText","maxLength","pattern","wrapper","label","AccountProfileEditLabelComponent","forId","input","AccountProfileEditInputComponent","onChange","__decorate","observable","observer","AccountProfileEditItem","_ref","Node","AccountProfileEditLoading","_ref3","Module","_ref2","item","error","index","button","LocalAccount","StoreSelector","renderSelectedStore","shouldHideInventory","preferredDistanceUnit","preferredStore","isPreferredStoreEnabled","hasEnabledOutOfStockCheck","productPickUpOptionList","shouldDisplayList","_selectedStore$OrgUni","availabilitiesWithHours","result","storeSelectorStateManager","storeLocations","selectedStoreLocationId","selectedStore","find","store","_store$OrgUnitAvailab","OrgUnitAvailability","OrgUnitLocation","OrgUnitNumber","orgUnitLocation","selectedStoreResources","_mapResources","_selectedStore$OrgUni2","_selectedStore$OrgUni3","selectedProps","shouldHideStockStatus","isCurrentLocation","_isCurrentLocation","alreadySelectedLocation","isInStock","_isProductInStock","ItemAvailabilities","stockStatusLabel","_stockInventoryLabel","preferredStoreLocationId","StoreId","isLocationDisabled","storePickUpOptionList","OrgUnitPickUpDeliveryModes","DeliveryOptions","handlers","onSelected","_onOrgUnitLocationSelected","onSetAsPreferredStore","_setPreferredStore","onRemovePreferredStore","_removePreferredStore","closeStoreDetailsModal","_closeStoreDetailModal","SelectedStoreComponent","handleLinkTextChange","termsOfServiceLink","linkText","onShowAllStoresHandler","_getAndUpdateStoreLocation","setState","filteredPickupMode","onFilterLocations","stores","filter","location","_location$OrgUnitPick","some","deliveryOption","Code","onFilteredPickupMode","deliveryCode","_attachMapAutoSuggest","async","autoSuggestOptions","actionContext","channel","isMapApiLoaded","autoSuggestManager","Microsoft","Maps","loadModule","callback","options","countryCode","ChannelCountryRegionISOCode","AutosuggestManager","attachAutosuggest","_onSuggestionSelected","errorCallback","debug","credentials","BingMapsApiKey","_this$props$data$stor","_searchTermChanged","formattedSuggestion","_performSearch","_preferredStore$OrgUn","_preferredStore$OrgUn2","_preferredStore$OrgUn3","storeId","cookies","mode","_store$OrgUnitAvailab2","setPreferredStoreLocation","OrgUnitName","isConsentGiven","Latitude","Longitude","clearPreferredStore","setSelectedStoreLocationId","_setSelectedStore","searchTerm","isSearchInProgress","isSeeAllStoreValue","geoLocate","trim","_updateLocations","latitude","longitude","shouldShowAllStores","_navigator","isDialogOpen","navigator","geolocation","getCurrentPosition","position","coords","PERMISSION_DENIED","timeout","_closeDialog","_storeSelectorStateMa","parentElementRef","current","focus","closeDialog","_setOrgUnitStoreInformation","moduleId","styleDefault","onLocationSelected","Promise","resolve","preferredLocationId","storeLocationList","_sortStores","orgUnitStoreInformation","showMapViewLink","isDialog","product","setOrgUnitStoreInformation","catch","radius","lookupRadius","searchRadiusUnit","calRadius","distanceUnitValue","modeDefault","localLatitude","long","lastInlineStoreLocation","lastInlineShownStoreInfo","setLastInlineStoreInfo","getFullAvailableInventoryNearby","getOrgUnitLocationByArea","orgUnitLocationsInput","GetOrgUnitLocationsByAreaInput","orgUnitLocations","getOrgUnitLocationsByArea","GetFullAvailableInventoryNearbyInput","RecordId","warning","deliveryMode","contactInfoHeader","contactText","storeHoursHeader","timeText","availabilityInfoHeader","availabilityText","closedText","storeHoursClosedText","outOfStock","outOfStockText","inStock","inStockText","currentLocation","selectedStoreLocationText","selectLocation","selectStoreText","selectLocationAriaLabelFormat","selectStoreAriaFormatText","setAsPreferredStoreText","setAsPreferredStoreTextAriaLabel","preferredStoreText","preferredStoreAriaLabel","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","selectedLocation","hasEnableOutOfStockCheck","itemAvailabilities","ArrayExtensions","hasElements","AvailableQuantity","ProductInventoryInformation","_isInStock$OrgUnitAva","InventoryLocationId","InventLocationId","StockLevelLabel","storeCounter","_this$props$data$stor6","autoSuggestionEnabled","isAutoSuggestionEnabled","_this$props$context","reaction","_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","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","showAllStores","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","app","appConfig","slots","maps","mapSlot","isMobileDevice","isMobile","variant","VariantType","Viewport","isMapDisabled","isInlineView","isLocatorView","listMapViewState","displayList","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","milesShortText","isEnableOutofStock","enableStockCheck","deliveryOptions","sortLocation","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","classname","autoFocus","fade","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","StoreSelectorFoundLocationsMessage","locations","searchRadius","isSeeAllStore","search","StoreSelectorSearchForm","performSearch","searchTermChanged","onShowAllStores","onToggleListMapViewState","locatorView","productPickUpDeliveryOptions","filterPickupModeSelected","hasEnabledPickupFilterToShowStore","spinner","StoreSelectorWaiting","locationsList","StoreSelectorLocationLines","outOfStockThreshold","enableOutOfStockCheck","storeLocatorView","onClick","shouldShowIndex","noLocationsMessage","StoreSelectorEmptyMessage","terms","StoreSelectorTermsOfService","link","onTextChange","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isPreferredStore","_value$OrgUnitAvailab","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","storeOpenFrom","secondsToTime","OpenFrom","storeOpenTo","OpenTo","storeHours","StoreHours","_store$OrgUnitAvailab4","hideStockStatus","toString","locationOpen","openFrom","openTo","storeHoursList","RegularStoreHours","buildStoreHours","storeDetailsMain","storeHeader","storeName","storeDetailsCloseButton","storeDistance","storeDetailsAvailabilityContainer","productAvailability","stockStatus","preferredStoreButton","removePreferredStoreButton","canSelectLocation","pickUpDeliveryOptionButton","pickupModes","renderDeliveryOptions","renderBody","PvaChatConnector","isOboRequest","url","botFrameworkCDNURL","pvaChatConnectorBotFrameworkCDNURL","script","src","crossOrigin","body","appendChild","Iframe","iframeRef","destinationUrl","srcURL","URL","exception","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","role","targetURL","height","iframeAriaLabel","ref","FooterItemView","FooterItem","_renderElement","HeadingContainer","Link","image","EditableLink","buildReviewCard","isUserReview","cardProps","headerProps","rating","date","name","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","wasReviewHelpfulText","like","dislike","edit","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","generateImageUrl","apiSettings","Image","gridSettings","imageSettings","viewports","xs","q","w","h","sm","md","lg","xl","lazyload","cropFocalRegion","renderProductImage","Name","ItemId","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","sortByDropdown","userReview","isFilterApplied","review","reviewModal","modalHeader","form","inputRow","selectRatingLabel","reviewTitleLabel","titleInput","reviewTextLabel","textInput","privacyPolicyUrl","modalFooter","submitButton","cancelButton","createReviewModal","createReportModal","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","uuid","REGEX","test","byteToHex","i","substr","arr","offset","arguments","validate","TypeError","buf","rnds","random","stringify","CartAmountTrigger","ProactiveChatTrigger","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","cart","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","isValid","CartLines","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","Date","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","toUTCString","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","dateParts","split","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","referrer","indexOf","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","expdate","setTime","setConsentCookie","_updateVisitCounter","proactiveOnPageVisitNumber","clear","set","domain","hostname","path","pathname","expires","PageVisits","eCommerceCustProactiveNumberOfVisits","proactiveOnPageVisitMessage","get","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","href","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","isNaN","waitTimeInMilliseconds","Number","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","user","userId","uuidv4","_getContext","enabled","_proactiveCheck","provider","_getProvider","_this$props$context$r","eCommerceOperatingUnitNumber","oun","eCommerceBaseUrl","baseUrl","eCommerceDataAreaId","InventLocationDataAreaId","UserId","AccountNumber","customerAccountNumber","Email","emailAddress","FirstName","firstName","anonymousUserName","LastName","lastName","eCommerceCustPageURL","eCommerceCustChatType","proactiveChatEnabled","proactive","_isProactive","getChatWrapperStyle","top","right","bottom","left","zIndex","justifyContent","getMaximizedChatWrapperStyle","width","padding","chatHeight","chatWidth","getChatButtonStyle","alignItems","backgroundColor","startChatButtonBackgroundColor","color","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","static","powervaDirectlineTokenURL","botID","tenantID","fetch","method","then","r","json","token","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","dispatch","next","action","payload","language","_activity$from","activity","from","triggerQuery","ReactWebChat","WebChat","setUserId","useState","useMemo","ctx","directLine","createDirectLine","directLineToken","commerceChatStore","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","Browser","chatStyle","getChatStyling","ChatWrapperStyle","MaximizedChatWrapperStyle","ChatButtonStyle","ButtonStoreLogoStyle","ChatStoreLogoStyle","ChatMessagesStyle","ChatMessageHeader","MinimizeButtonStyle","CloseButtonStyle","ChatMessageContent","ProactiveWrapperStyle","ProactiveMessageHeader","ProactiveMessageContent","ProactiveButtonStyle","RedDotStyle","background","handleMaximizeButtonClick","useEffect","getDirectLineToken","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","note","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","title","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","viewModes","tableViewActions","table","placedBy","orderInfomation","orderSummary","payment","help","IFrameView","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","payLoad","getPayloadObject","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","getTelemetryAttributes","Button","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","replace","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","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","StoreSelectorFoundLocationsMessageComponent","storeCountMessage","storeCountMessageInKm","RichTextComponent","storeAllCountMessage","extractPhoneNumber","contacts","allPhoneContacts","contact","ContactTypeValue","ContactInformationType","Phone","IsPrivate","primaryPhoneContact","IsPrimary","Locator","renderStoreHours","displayTime","JSON","buildStoreHoursDay","storeHoursDayPeriodString","storeHoursDayString","endDayShort","startDayFull","startDayShort","endDayFull","storeHoursDayPeriod","storeHoursDay","timeRange","matchDeliveryOptions","productDeliveryOptions","productDeliveryOption","PickUpMethodDropdownComponent","pickUpStatesProps","pickUpMethodLabel","pickUpOptionPlaceholder","pickupOptionDropdownError","pickupButtonAriaLabel","deliveryOptionList","selectedStorePickUpOption","selectStorePickUpOption","currentStorePickUpOption","setCurrentStorePickUpOption","isDropdownOpen","toggleDropdown","isError","setError","onChangeHandler","preventDefault","currentTarget","dataset","description","onClickHandler","handleDropdownToggle","filterDeliveryOption","pickupInStoreButtonText","filteredDeliveryMode","Description","renderLocationLinePickupButton","PickUpButtonComponent","pickupInStoreAriaLabel","pickupDeliveryOptionErrorMessage","attributes","renderStoreLocationLineItem","locationLineItem","distanceAsString","buildDistanceString","distance","closeDistanceString","distanceString","Math","floor","Distance","storeAddress","Address","phoneNumber","Contacts","resourceLabel","stockText","contentAction","etext","PreferredStore","preferredStoreAttribute","RemovePreferredStore","removePreferredStoreAttribute","_props$data$storeSele","stopPropagation","onSetPreferredStoreClickHandler","renderStoreLocations","selectedLocationReference","_props$data$storeSele2","_props$locationListPr","show","renderStoreLocation","pickUpOptionDropdownPlaceholderText","pickupOptionDropdownPlaceholderText","unitLocation","canSelectPickUpMethod","pickupOptionDropdownErrorText","onPickupInStoreClickHandler","pickUpMethodSelection","selected","parseInt","onKeyDown","selectedLocationProps","storeSelectorViewProps","_selectedStore$StoreH","_selectedStore$OrgUni4","_selectedStore$OrgUni5","_selectedStore$OrgUni6","_storeSelectorViewPro","_storeSelectorViewPro2","storeNameValue","orgUnitNumber","_data$storeSelectorSt2","_data$storeSelectorSt3","isDesktopPort","setIsDesktopPort","isDesktopViewport","portView","scrollIntoView","selectedLocationDiv","_selectedLocationDiv$","getBoundingClientRect","parent","parentElement","totalHeight","scrollTop","clientHeight","MsDyn365","isBrowser","addEventListener","viewport","_data$storeSelectorSt","displayMap","disabled","errorClassName","GetMaxLength","parsedMaxLength","htmlFor","seconds","hours","ampm","divisorForMinutes","getShortTimeString","day","getFullTimeString","buildHoursDisplayInfo","startDay","endDay","hoursInfo","shouldMergeLines","firstLine","secondLine","isClosed","openTime","closeTime","getStoreHoursData","dateForLookup","buildStoreHoursString","mondayHours","tuesdayHours","wednesdayHours","thursdayHours","fridayHours","saturdayHours","sundayHours","periodStart","periodEnd","PickUpOptionList","eventsToBeBind","handleDocumentClick","htmlElement","_pickupListOptionButton","contains","_pickupListOptionMenu","expandSiteOptions","_onSelect","getAttribute","_renderDeliveryOptions","componentWillUnmount","removeEventListener","pickupListOptionMenuText","pickupmodeList","tabIndex","isExpandSiteOptionsState","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","selectedPickupMode","_onKeyDown","_storePickupListOptionMenu","_productPickupModeLis","productPickupListOptionMenuText","productPickupModeList","defaultOptionText","selectedPickupModeDesc","_scrollIntoView","selectedLocationRef","offsetTop","availabilityWithHours","_availabilityWithHour","previousProps","_stores","_renderStoreLocation","StoreSelectorLocationLineItemComponent","searchBoxRef","previousValue","isSearchResultOpened","_handleInputKeyPress","keyCode","KeyCodes","ArrowUp","ArrowDown","activeDescedantValue","_handleKeyPressPrev","Enter","Space","_searchTextChanged","inputValue","_onSubmit","_this$searchBoxRef$cu","blur","_onChangeHandler","renderPickupModesList","toggleButtonText","pickupFilterMenuHeading","pickupFilterByHeading","toggleButtonClass","toggleMapViewAttributes","SearchStore","storeSearchAttributes","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","emptyLocationsText","editableLink","linkUrl","openInNewTab","storeSelectorLocationLineItemComponentActions","onPickupModeSelectHandler","pickupMode","removePreferredStoreHandler","productdeliveryOptions","pickup","_delivery","stockLabel","preferredStoreAttributes","removePreferredStoreAttributes","pickUpButtonClickHandler","renderPickupModes","_props$selectedStore","_props$selectedStore2","_props$selectedStore3","_props$selectedStore4","storeDetailsModalHandler","parentClassName"],"sourceRoot":""}