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

Please wait while we are connecting.

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

{proactiveMessage}

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

{resources.emptyLocationsText}

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

{resources.contactInfoHeader}

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

{resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

}\n {stockText &&

{stockText}

}\n {isCurrentLocation ? (\n

{resources.currentLocation}

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

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

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

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

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

{resources.availabilityInfoHeader}

\n {stockText &&

{stockText}

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

{resources.currentLocation}

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

{storeSelectorViewProps.resources.contactText}

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

{storeSelectorViewProps.resources.timeText}

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

{productAvailability}

\n {stockStatus &&

{stockStatus}

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