{"version":3,"file":"static/js/17.6beed777164b3df495a2.chunk.js","mappings":"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","sources":["webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-details.view.tsx?d810","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/order-history.view.tsx?1eff","webpack://Msdyn365.Commerce.Online/./src/themes/venchi/views/product-specification.view.tsx?ddc2","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/cookie-compliance/components/accept-button.tsx?8e73","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/components/links.tsx?97b8","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.tsx?02ac","webpack://Msdyn365.Commerce.Online/./src/modules/cookie-compliance/cookie-compliance.view.tsx?a33f","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/cart.view.tsx?3909","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/order-details.view.tsx?027b","webpack://Msdyn365.Commerce.Online/./src/modules/adventureworks/views/store-selector.view.tsx?ccdd"],"sourcesContent":["/*---------------------------------------------------------------------------------------------\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHelp,\r\n IOrderDetailsViewProps,\r\n IOrderInformation,\r\n IOrderSummary,\r\n IPaymentMethods,\r\n ISalesLine\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId,\r\n channelName,\r\n channelAddress\r\n}) => (\r\n \r\n {channelName}\r\n {channelAddress}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\r\n \r\n {salesLine}\r\n {buyAgainButton}\r\n \r\n);\r\n\r\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count, trackingInfo, shippedStatusCheck }) => (\r\n \r\n {heading}\r\n {count}\r\n {/* shippedStatusCheck === 'shipped' ? null : trackingInfo */}\r\n \r\n);\r\n\r\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines }) => (\r\n \r\n {delivery && }\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n \r\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\r\n \r\n {salesLine.salesStatus}\r\n \r\n ))}\r\n \r\n )}\r\n {!delivery.showTimeslot && address}\r\n {delivery.showTimeslot && (\r\n \r\n {address}\r\n {delivery.pickupDateTimeslot}\r\n \r\n )}\r\n \r\n \r\n);\r\n\r\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nconst _renderCustomTaxLine = (taxAmount: number): JSX.Element | null => {\r\n //const { estimatedTaxLabel, yetToBeCalculatedText} = props.resources;\r\n\r\n return (\r\n
\r\n

\r\n Tax\r\n \r\n {taxAmount}\r\n \r\n

\r\n
\r\n )\r\n}\r\n\r\nexport const OrderSummary: React.FC = ({\r\n orderSummaryProps,\r\n heading,\r\n subtotal,\r\n shipping,\r\n tax,\r\n totalAmount,\r\n earnedPoints,\r\n ...other\r\n}) => {\r\n // @ts-ignore\r\n const locale = other.locale;\r\n // @ts-ignore\r\n const taxAmount = other.taxAmount;\r\n \r\n return (\r\n \r\n {heading}\r\n {subtotal}\r\n {shipping}\r\n {locale.toLowerCase() == 'en-gb' && taxAmount > 0 ? _renderCustomTaxLine(taxAmount) : tax}\r\n {totalAmount}\r\n {earnedPoints}\r\n \r\n );\r\n};\r\n\r\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\r\n \r\n {title}\r\n {methods}\r\n \r\n);\r\n\r\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\r\n \r\n {needHelpLabel}\r\n {helpLineNumberLabel}\r\n {contactNumber}\r\n \r\n);\r\n\r\nconst OrderDetailsView: React.FC = ({\r\n salesOrder,\r\n moduleProps,\r\n heading,\r\n alert,\r\n loading,\r\n orderInfomation,\r\n orderSummary,\r\n payment,\r\n help,\r\n groups\r\n}) => {\r\n // prettier-ignore\r\n // @ts-ignore\r\n const customTrackingNumber = salesOrder?.ExtensionProperties?.filter((tracking: { Key: string }) => tracking.Key === 'trackingId_CAP')[0]?.Value.StringValue;\r\n // prettier-ignore\r\n // @ts-ignore\r\n const customTrackingStatus = salesOrder?.ExtensionProperties?.filter((tracking: { Key: string }) => tracking.Key === 'trakingStatus_CAP')[0]?.Value.StringValue;\r\n\r\n const locale = moduleProps.moduleProps.context.request.locale;\r\n // @ts-ignore\r\n const salesOrderData = moduleProps?.moduleProps?.data?.orderHydration?.result?.salesOrder;\r\n const taxAmount = salesOrderData?.TaxAmount;\r\n const extraOrdersSummaryEu = {\r\n locale: locale,\r\n taxAmount: taxAmount\r\n };\r\n return (\r\n \r\n {heading}\r\n {alert}\r\n {loading}\r\n {orderInfomation && }\r\n {salesOrder && customTrackingNumber && (\r\n
\r\n Tracking Number: {customTrackingNumber === '' ? 'Not yet available.' : customTrackingNumber}\r\n {customTrackingStatus !== '' ? ({customTrackingStatus}) : ''}\r\n
\r\n )}\r\n {groups && }\r\n \r\n {orderSummary && }\r\n {payment && }\r\n \r\n {help && }\r\n
\r\n );\r\n};\r\n\r\nexport default OrderDetailsView;\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 {\r\n IGroup,\r\n IGroupDelivery,\r\n IGroups,\r\n IHeader,\r\n IList,\r\n IOrderHistoryViewProps,\r\n IOrderInformation,\r\n ISalesOrder\r\n} from '@msdyn365-commerce-modules/order-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nexport const OrderHistoryOrderInfomation: React.FC = ({\r\n orderInformationProps,\r\n salesId,\r\n receiptId,\r\n channelName,\r\n createdDate,\r\n count,\r\n amount,\r\n channelReferenceId\r\n}) => (\r\n \r\n {channelName}\r\n {salesId}\r\n {receiptId}\r\n {createdDate}\r\n {count}\r\n {amount}\r\n {channelReferenceId}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroupDelivery: React.FC = ({\r\n deliveryProps,\r\n heading,\r\n count,\r\n processing,\r\n address,\r\n trackingInfo\r\n}) => (\r\n \r\n {heading}\r\n {count}\r\n {processing}\r\n {address}\r\n {trackingInfo}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\r\n \r\n {salesLines && (\r\n \r\n {salesLines.map(salesLine => (\r\n {salesLine.salesLine}\r\n ))}\r\n \r\n )}\r\n \r\n);\r\n\r\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\r\n \r\n {groups.map((group, index) => (\r\n \r\n ))}\r\n \r\n);\r\n\r\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\r\n \r\n {heading}\r\n {orderCountLabel}\r\n {extraActions}\r\n \r\n);\r\n\r\nexport const OrderHistorySalesOder: React.FC = ({ salesOrderProps, orderInfomation, groups, orderDetailsLink }) => {\r\n // @ts-ignore\r\n const dataPrice = orderInfomation.amount !== null ? orderInfomation.amount.props.data.price.CustomerContextualPrice : 0;\r\n const orderType = dataPrice < 0 ? 'order--return' : 'order--default';\r\n return (\r\n \r\n {orderInfomation && }\r\n {groups && }\r\n {orderDetailsLink}\r\n \r\n );\r\n};\r\n\r\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\r\n \r\n {salesOrders && salesOrders.map((salesOrder, index) => )}\r\n \r\n);\r\n\r\nconst OrderHistoryView: React.FC = ({\r\n orderHistoryProps,\r\n header,\r\n alert,\r\n loading,\r\n emptyMessage,\r\n backToShoppingLink,\r\n list,\r\n moreButton\r\n}) => (\r\n \r\n {header && }\r\n {loading}\r\n {alert && (\r\n <>\r\n {alert}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {emptyMessage && (\r\n <>\r\n {emptyMessage}\r\n {backToShoppingLink}\r\n \r\n )}\r\n {list && }\r\n {moreButton && moreButton}\r\n \r\n);\r\n\r\nexport default OrderHistoryView;\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 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 { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\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 { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\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

{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 let sortLocation = null;\n if (storeLocationList) {\n sortLocation = this._sortStores(storeLocationList, this.isPreferredStoreEnabled, preferredLocationId);\n }\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 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 isInStock: this._isProductInStock(hasEnabledOutOfStockCheck, store.OrgUnitAvailability?.ItemAvailabilities),\n stockStatusLabel: this._stockInventoryLabel(store),\n storeLocatorView: isStoreLocatorView,\n index: this.storeCounter.toString(),\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n telemetryContent: this.telemetryContent,\n isLocationDisabled: this.state.isLocationDisabled,\n storePickUpOptionList: deliveryOptions?.DeliveryOptions,\n productPickUpOptionList,\n locationOpen: { openFrom: storeOpenFrom, openTo: storeOpenTo },\n storeHoursList: storeHours?.RegularStoreHours ? buildStoreHours(storeHours.RegularStoreHours, lineResources) : [],\n onClick: this._setSelectedStore,\n handlers: {\n onSelected: this._onOrgUnitLocationSelected,\n onSetAsPreferredStore: this._setPreferredStore,\n onRemovePreferredStore: this._removePreferredStore,\n closeStoreDetailsModal: this._closeStoreDetailModal\n }\n };\n }\n return undefined;\n }\n\n /**\n * Method to map resources with Location Item.\n * @param resources - List of strings for module.\n * @returns Resources for StoreSelector location line.\n */\n private readonly _mapResources = (resources: IStoreSelectorResources): IStoreSelectorLocationLineItemResources => {\n return {\n contactInfoHeader: resources.contactText,\n storeHoursHeader: resources.timeText,\n availabilityInfoHeader: resources.availabilityText,\n\n closedText: resources.storeHoursClosedText,\n outOfStock: resources.outOfStockText,\n inStock: resources.inStockText,\n\n currentLocation: resources.selectedStoreLocationText,\n selectLocation: resources.selectStoreText,\n selectLocationAriaLabelFormat: resources.selectStoreAriaFormatText,\n setAsPreferredStoreText: resources.setAsPreferredStoreText,\n setAsPreferredStoreTextAriaLabel: resources.setAsPreferredStoreTextAriaLabel,\n preferredStoreText: resources.preferredStoreText,\n preferredStoreAriaLabel: resources.preferredStoreAriaLabel,\n\n days: {\n monday: resources.storeHoursMondayText,\n tuesday: resources.storeHoursTuesdayText,\n wednesday: resources.storeHoursWednesdayText,\n thursday: resources.storeHoursThursdayText,\n friday: resources.storeHoursFridayText,\n saturday: resources.storeHoursSaturdayText,\n sunday: resources.storeHoursSundayText,\n mondayFull: resources.storeHoursMondayFullText,\n tuesdayFull: resources.storeHoursTuesdayFullText,\n wednesdayFull: resources.storeHoursWednesdayFullText,\n thursdayFull: resources.storeHoursThursdayFullText,\n fridayFull: resources.storeHoursFridayFullText,\n saturdayFull: resources.storeHoursSaturdayFullText,\n sundayFull: resources.storeHoursSundayFullText\n }\n };\n };\n\n private readonly _isCurrentLocation = (location: OrgUnitLocation | undefined, selectedLocation?: OrgUnitLocation): boolean =>\n (selectedLocation && location && selectedLocation.OrgUnitNumber === location.OrgUnitNumber) || false;\n\n /**\n * Method to get stock.\n * @param hasEnableOutOfStockCheck - Config to check for stock check enabled.\n * @param itemAvailabilities - Item quantity availability.\n * @returns Boolean value for item stock.\n */\n private readonly _isProductInStock = (\n hasEnableOutOfStockCheck: boolean,\n itemAvailabilities: ItemAvailability[] | undefined\n ): boolean => {\n if (!hasEnableOutOfStockCheck) {\n return true;\n }\n const quantityCount = 0;\n if (ArrayExtensions.hasElements(itemAvailabilities)) {\n return itemAvailabilities[0].AvailableQuantity ? itemAvailabilities[0].AvailableQuantity > quantityCount : false;\n }\n\n return false;\n };\n\n /**\n * Method to get stocklevel label.\n * @param isInStock - Stock available in store.\n * @returns Label for stock status.\n */\n private readonly _stockInventoryLabel = (isInStock: IFullOrgUnitAvailability | undefined): string | undefined => {\n if (isInStock?.ProductInventoryInformation && ArrayExtensions.hasElements(isInStock.ProductInventoryInformation)) {\n for (let index = 0; index < isInStock.ProductInventoryInformation.length; index++) {\n if (\n isInStock.OrgUnitAvailability?.OrgUnitLocation?.InventoryLocationId ===\n isInStock.ProductInventoryInformation[index].InventLocationId\n ) {\n return isInStock.ProductInventoryInformation[index].StockLevelLabel;\n }\n }\n }\n\n return undefined;\n };\n}\n\nexport default StoreSelector;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ISelectedStoreViewProps } from './components/selected-store/selected-store';\nimport { IStoreSelectorViewProps } from './store-selector';\n\n/**\n * Renders the pickup Delivery options.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderDeliveryOptions: React.FC = props => {\n const { canSelectLocation, deliveryOptions, pickUpDeliveryOptionButton, pickupModes } = props;\n\n return (\n <>\n {/* eslint-disable-next-line no-nested-ternary -- Need this.*/}\n {canSelectLocation ? (ArrayExtensions.hasElements(deliveryOptions) ? pickupModes : pickUpDeliveryOptionButton) : false}\n \n );\n};\n\n/**\n * Render the selected store.\n * @param props -- Selected store view props.\n * @returns -- HTML.\n */\nconst renderSelectedStore: React.FC = props => {\n const {\n storeDetailsMain,\n storeHeader,\n storeName,\n storeDetailsCloseButton,\n storeDistance,\n storeDetailsAvailabilityContainer,\n productAvailability,\n stockStatus,\n isCurrentLocation,\n currentLocation,\n isPreferredStore,\n preferredStoreButton,\n removePreferredStoreButton\n } = props;\n\n return (\n \n \n {storeDetailsCloseButton}\n {storeName}\n {storeDistance}\n \n \n {productAvailability}\n {stockStatus}\n \n {isCurrentLocation ? currentLocation : renderDeliveryOptions(props)}\n {isPreferredStore ? preferredStoreButton : removePreferredStoreButton}\n \n );\n};\n\n/**\n * Render the body of the popup.\n * @param props -- Store selector view props.\n * @returns -- Returns the html.\n */\nconst renderBody: React.FC = props => {\n const {\n BodyContainerProps,\n locationsMessage,\n search,\n state,\n spinner,\n locationsList,\n noLocationsMessage,\n maps,\n bodyWrapperProps,\n storeResultContainerProps,\n mapContainerProps,\n isMobileView,\n storeDetailsModal,\n selectedLocation\n } = props;\n\n if (isMobileView) {\n return (\n \n {locationsMessage}\n {search}\n \n \n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n {maps}\n {selectedLocation && renderSelectedStore(selectedLocation)}\n \n \n \n );\n }\n\n return (\n \n \n \n {locationsMessage}\n {search}\n {state.isSearchInProgress ? spinner : <>{locationsList ? locationsList : noLocationsMessage}}\n \n {maps}\n \n \n );\n};\n\n/**\n * Store selector view props.\n * @param props - Store selector view props.\n * @returns - HTML.\n */\nconst StoreSelectorView: React.FC = props => {\n const {\n FooterContainerProps,\n HeaderContainerProps,\n HeaderProps,\n ModuleProps,\n\n terms\n } = props;\n\n return (\n \n {HeaderProps}\n {renderBody(props)}\n {terms}\n \n );\n};\n\nexport default StoreSelectorView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
\n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
\n {isBopisSelected && (\n
\n {cartLine.pickUpInStore.orgUnitName}\n \n
\n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
\n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
\n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
\n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
\n
{props.slots.emptyCart}
\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

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

\n ) : null}\n

{countTitle}

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

\n

{groupTitle}

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

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

\n );\n return (\n
\n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
{props.orderSummaryLineitems?.orderTotal}
\n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
\n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\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 {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { RichTextComponent } from '@msdyn365-commerce/core';\nimport {\n ContactInformationType,\n DeliveryOption,\n IDictionary,\n OrgUnitContact,\n OrgUnitLocation,\n StoreHours\n} from '@msdyn365-commerce/retail-proxy';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n buildStoreHours,\n IHoursDisplayInfo,\n ILocationHours,\n IStoreSelectorFoundLocationsMessage,\n IStoreSelectorLocationLineItemProps,\n IStoreSelectorLocationLineItemResources,\n IStoreSelectorViewProps,\n secondsToTime\n} from '@msdyn365-commerce-modules/store-selector';\nimport { ISelectedStoreViewProps } from '@msdyn365-commerce-modules/store-selector/src/modules/store-selector/components/selected-store/selected-store';\nimport {\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n IPayLoad,\n isMobile,\n Module,\n Node,\n TelemetryConstant,\n VariantType\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IStoreSelectorProps, IStoreSelectorResources } from '../definition-extensions/store-selector.ext.props.autogenerated';\n\n/**\n * PickUpMethodComponent View Props Interface.\n */\nexport interface IPickupComponent extends IStoreSelectorLocationLineItemProps {\n pickUpStatesProps: IStoreSelectorViewProps;\n}\n\nexport interface IPickUpButtonComponent {\n attributes: IDictionary | undefined;\n onPickupInStoreClickHandler?(): void;\n}\n\n/**\n * Found Locations Message component in Store Selector.\n * @param props - The component props.\n * @returns The JSX Element.\n */\nconst StoreSelectorFoundLocationsMessageComponent: React.FC = props => {\n const { locations, searchRadius, resources, isSeeAllStore, preferredDistanceUnit } = props;\n if (locations) {\n const storeCountMessage =\n preferredDistanceUnit === resources.milesShortText ? resources.storeCountMessage : resources.storeCountMessageInKm;\n\n return (\n ${locations.length.toString()}`\n )\n : storeCountMessage\n .replace(\n '{count}',\n `${locations.length.toString()}`\n )\n .replace(\n '{radius}',\n `${searchRadius.toString()}`\n )\n }\n />\n );\n }\n\n return null;\n};\n\n/**\n * Build distance string.\n * @param distance - The distance.\n * @param preferredDistanceUnit - The preferred distance unit.\n * @param resources - The module resources.\n * @param isLocationDisabled - True if location is disabled.\n * @returns The distance string.\n */\nconst buildDistanceString = (\n distance: number | undefined,\n preferredDistanceUnit: string,\n resources: IStoreSelectorResources & IStoreSelectorResources,\n isLocationDisabled?: boolean\n): string | undefined => {\n const closeDistance: number = 1;\n if (distance === undefined || isLocationDisabled) {\n return undefined;\n } else if (distance < closeDistance) {\n const closeDistanceString: string = resources.closeDistanceString;\n return closeDistanceString.replace('{preferredDistanceUnit}', preferredDistanceUnit);\n }\n const distanceAsString: string = resources.distanceString;\n return distanceAsString\n .replace('{preferredDistanceUnit}', preferredDistanceUnit)\n .replace('{distance}', Math.floor(distance).toString());\n};\n\n/**\n * Extract phone number.\n * @param contacts - Contacts array.\n * @returns Phone number.\n */\nconst extractPhoneNumber = (contacts: OrgUnitContact[] | undefined): string | undefined => {\n if (!contacts) {\n return undefined;\n }\n\n const allPhoneContacts = contacts.filter(contact => contact.ContactTypeValue === ContactInformationType.Phone && !contact.IsPrivate);\n\n if (ArrayExtensions.hasElements(allPhoneContacts)) {\n const primaryPhoneContact = allPhoneContacts.find(contact => contact.IsPrimary);\n\n if (primaryPhoneContact) {\n return primaryPhoneContact.Locator;\n }\n\n return allPhoneContacts[0].Locator;\n }\n\n return undefined;\n};\n\n/**\n * Render Store Hours Day.\n * @param displayTime - Store Hours Information.\n * @param storeHoursDayPeriodString - The string for store hours day period.\n * @param storeHoursDayString - The string for store hours day period.\n * @returns JSX element with store hours day.\n */\nconst buildStoreHoursDay = (displayTime: IHoursDisplayInfo, storeHoursDayPeriodString: string, storeHoursDayString: string) => {\n return (\n ${displayTime.startDayShort}`)\n .replace(\n '{endDay}',\n `${displayTime.endDayShort}`\n )\n : storeHoursDayString.replace(\n '{startDay}',\n `${displayTime.startDayShort}`\n )\n }\n />\n );\n};\n\n/**\n * Render Store Hours.\n * @param storeHours - Store hours.\n * @param storeHoursList - Store hours list.\n * @param locationOpen - Location open.\n * @param resources - The module resources.\n * @returns JSX element with store hours.\n */\nconst renderStoreHours = (\n storeHours: StoreHours | undefined,\n storeHoursList: IHoursDisplayInfo[] | undefined,\n locationOpen: ILocationHours | undefined,\n resources: IStoreSelectorResources & IStoreSelectorResources\n): JSX.Element | null => {\n // First, use the store hours. This will allow listing day by day hours\n if (storeHours?.RegularStoreHours) {\n return (\n
\n {storeHoursList?.map(displayTime => (\n
\n {buildStoreHoursDay(displayTime, resources.storeHoursDayPeriod, resources.storeHoursDay)}\n
{displayTime.timeRange}
\n
\n ))}\n
\n );\n }\n\n // If that fails, fall back to using the OpenFrom and OpenTo properties on the location\n const storeOpenFrom: string = locationOpen?.openFrom ? locationOpen.openFrom : '';\n const storeOpenTo: string = locationOpen?.openTo ? locationOpen.openTo : '';\n return (\n
\n {resources.storeHoursDayPeriod.replace('{startDay}', storeOpenFrom).replace('{endDay}', storeOpenTo)}\n
\n );\n};\n\n/**\n * Match delivery options.\n * @param productDeliveryOptions - The list of product delivery options.\n * @param storePickUpOptionList - The list of store pick up options.\n * @returns Matched delivery option.\n */\nconst matchDeliveryOptions = (\n productDeliveryOptions: DeliveryOption[] | undefined,\n storePickUpOptionList: DeliveryOption[] | undefined\n): DeliveryOption[] => {\n if (!productDeliveryOptions) {\n return [] as DeliveryOption[];\n }\n return productDeliveryOptions\n .map(productDeliveryOption => storePickUpOptionList?.find(delivery => delivery.Code === productDeliveryOption.Code))\n .filter(productDeliveryOption => productDeliveryOption) as DeliveryOption[];\n};\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpButtonResources {\n pickupInStoreAriaLabel: string;\n pickupInStoreButtonText: string;\n pickupDeliveryOptionErrorMessage: string;\n}\n\n/**\n * PickUpMethod Resources Interface.\n */\nexport interface IPickUpMethodResources {\n selectStoreText: string;\n pickUpMethodLabel: string;\n pickUpOptionPlaceholder: string;\n pickupOptionDropdownError: string;\n pickupButtonAriaLabel: string;\n}\n\n/**\n * PickUp method dropdown component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpMethodDropdownComponent = (props: IPickupComponent & IPickUpMethodResources) => {\n const {\n handlers,\n location,\n pickUpStatesProps,\n selectStoreText,\n pickUpMethodLabel,\n pickUpOptionPlaceholder,\n pickupOptionDropdownError,\n pickupButtonAriaLabel,\n productPickUpOptionList,\n storePickUpOptionList\n } = props;\n const deliveryOptionList = matchDeliveryOptions(productPickUpOptionList, storePickUpOptionList);\n const [selectedStorePickUpOption, selectStorePickUpOption] = React.useState('');\n const [currentStorePickUpOption, setCurrentStorePickUpOption] = React.useState(pickUpOptionPlaceholder);\n const [isDropdownOpen, toggleDropdown] = React.useState(false);\n const [isError, setError] = React.useState(false);\n\n /**\n * Method to handle the store pickup option change.\n * @param event - Change Event.\n */\n const onChangeHandler = React.useCallback((event: React.MouseEvent) => {\n event.preventDefault();\n selectStorePickUpOption(event.currentTarget.value);\n setCurrentStorePickUpOption(event.currentTarget.dataset.description ? event.currentTarget.dataset.description : '');\n toggleDropdown(false);\n setError(false);\n }, []);\n\n /**\n * Method to render store location line pick up button.\n * @param filteredDeliveryMode - Filtered Delivery Mode.\n * @returns JSX Element.\n */\n const renderLocationLinePickupButton = (filteredDeliveryMode: DeliveryOption | undefined) => {\n return filteredDeliveryMode !== undefined ? (\n
\n \n {filteredDeliveryMode.Description}\n \n
\n ) : null;\n };\n\n /**\n * Method to handle the store pickup option submit.\n */\n const onClickHandler = React.useCallback(() => {\n if (!StringExtensions.isNullOrEmpty(selectedStorePickUpOption)) {\n handlers.onSelected(location, selectedStorePickUpOption);\n } else if (pickUpStatesProps.state.filteredPickupMode !== undefined) {\n handlers.onSelected(location, pickUpStatesProps.state.filteredPickupMode);\n } else {\n toggleDropdown(false);\n setError(true);\n }\n }, [location, selectedStorePickUpOption, handlers, pickUpStatesProps.state.filteredPickupMode]);\n\n const handleDropdownToggle = React.useCallback(() => {\n toggleDropdown(!isDropdownOpen);\n setError(false);\n }, [isDropdownOpen]);\n\n const filterDeliveryOption = deliveryOptionList.find(\n (delivery: DeliveryOption) => delivery.Code === pickUpStatesProps.state.filteredPickupMode\n );\n\n const pickupInStoreButtonText: string = selectStoreText;\n const filteredDeliveryMode: DeliveryOption | undefined =\n pickUpStatesProps.state.filteredPickupMode !== undefined ? filterDeliveryOption : undefined;\n\n return (\n \n
{pickUpMethodLabel}
\n {pickUpStatesProps.state.filteredPickupMode === undefined ? (\n
\n \n {currentStorePickUpOption}\n \n
    \n {deliveryOptionList.map((delivery: DeliveryOption) => (\n \n \n {delivery.Description}\n \n \n ))}\n
\n
{pickupOptionDropdownError}
\n
\n ) : (\n renderLocationLinePickupButton(filteredDeliveryMode)\n )}\n \n
\n );\n};\n\n/**\n * PickUp button component.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst PickUpButtonComponent = (props: IPickUpButtonComponent & IPickUpButtonResources) => {\n const { pickupInStoreAriaLabel, pickupInStoreButtonText, pickupDeliveryOptionErrorMessage, attributes } = props;\n const [isError, setError] = React.useState(false);\n const onPickupButtonClickHandler = () => () => {\n setError(true);\n };\n\n return (\n <>\n \n {pickupInStoreButtonText}\n \n
\n {pickupDeliveryOptionErrorMessage}\n
\n \n );\n};\n\n/**\n * Method to render store location line item.\n * @param locationLineItem - The Location Line item view props.\n * @param props - The view props.\n * @returns JSX Element.\n */\nconst renderStoreLocationLineItem = (\n locationLineItem: IStoreSelectorLocationLineItemProps,\n props: IStoreSelectorViewProps & IStoreSelectorProps\n) => {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n hideStockStatus,\n index,\n isInStock,\n preferredStoreLocationId,\n isPreferredStoreEnabled,\n location,\n resources,\n storeHours,\n storeHoursList,\n stockStatusLabel,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from store-selector.tsx file\n storeLocatorView,\n telemetryContent\n } = locationLineItem;\n const storeName = location.OrgUnitName;\n const distanceAsString: string | undefined = buildDistanceString(\n location.Distance,\n locationLineItem.preferredDistanceUnit,\n props.resources,\n locationLineItem.isLocationDisabled\n );\n const storeAddress: string | undefined = location.Address;\n const phoneNumber: string | undefined = extractPhoneNumber(location.Contacts);\n\n const resourceLabel = isInStock ? resources.inStock : resources.outOfStock;\n const stockStatus = stockStatusLabel ? stockStatusLabel : resourceLabel;\n const stockText: string | undefined = hideStockStatus ? undefined : stockStatus;\n\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n\n /**\n * Method to handle the change for preferred store.\n * @returns Void.\n */\n const onSetPreferredStoreClickHandler = () => {\n locationLineItem.handlers.onSetAsPreferredStore(locationLineItem.location.OrgUnitNumber);\n };\n\n /**\n * Method to handle the removal of the preferred store.\n * @returns Void.\n */\n const onRemovePreferredStoreClickHandler = async (event: React.MouseEvent) => {\n event.stopPropagation();\n locationLineItem.handlers.onRemovePreferredStore();\n await props.data.storeSelectorStateManager.result?.setSelectedStoreLocationId(undefined);\n };\n\n const isPreferredStore = preferredStoreLocationId === location.OrgUnitNumber;\n payLoad.contentAction.etext = TelemetryConstant.PreferredStore;\n const preferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n payLoad.contentAction.etext = TelemetryConstant.RemovePreferredStore;\n const removePreferredStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n
\n
\n {storeLocatorView && {index}}\n {storeName}\n {distanceAsString ? {distanceAsString} : false}\n
\n
\n
\n

{locationLineItem.resources.contactInfoHeader}

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

{locationLineItem.resources.storeHoursHeader}

\n {renderStoreHours(storeHours, storeHoursList, locationLineItem.locationOpen, props.resources)}\n
\n {!storeLocatorView && (\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":["OrderInfomation","_ref","orderInformationProps","salesId","receiptId","createdDate","count","amount","channelReferenceId","channelName","channelAddress","React","Node","Object","assign","SalesLine","_ref2","salesLineProps","salesLine","buyAgainButton","GroupDelivery","_ref3","deliveryProps","heading","trackingInfo","shippedStatusCheck","Group","_ref4","groupProps","delivery","address","salesLinesProps","salesLines","className","map","key","data","LineId","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","pickupDateTimeslot","Groups","_ref5","groupsProps","groups","group","index","OrderSummary","_ref6","orderSummaryProps","subtotal","shipping","tax","totalAmount","earnedPoints","other","_objectWithoutProperties","_excluded","locale","taxAmount","toLowerCase","style","marginBottom","itemProp","_renderCustomTaxLine","Payment","_ref7","paymentMethodsProps","title","methods","Help","_ref8","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","_ref9","_salesOrder$Extension","_salesOrder$Extension2","_moduleProps$modulePr","salesOrder","moduleProps","alert","loading","orderInfomation","orderSummary","payment","help","customTrackingNumber","ExtensionProperties","filter","tracking","Key","Value","StringValue","customTrackingStatus","context","request","salesOrderData","orderHydration","result","extraOrdersSummaryEu","TaxAmount","Module","OrderHistoryOrderInfomation","OrderHistoryGroupDelivery","processing","OrderHistoryGroup","OrderHistoryGroups","OrderHistoryHeader","headerProps","orderCountLabel","extraActions","OrderHistorySalesOder","salesOrderProps","orderDetailsLink","dataPrice","props","price","CustomerContextualPrice","orderType","OrderHistoryList","listProps","salesOrders","orderHistoryProps","header","emptyMessage","backToShoppingLink","list","moreButton","_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","reassurance","reassuranceTitle","description","reassuranceDescription","image","reassuranceImage","isProductAccordionOpened","productDescriptionAccordionOpened","accordionsState","setAccordionsState","row","itemHtml","cellData","dangerouslySetInnerHTML","includes","productName","undefined","__html","push","product","ItemId","PrimaryImageUrl","PvaChatConnector","componentDidMount","isOboRequest","this","url","botFrameworkCDNURL","app","pvaChatConnectorBotFrameworkCDNURL","script","document","createElement","src","async","crossOrigin","body","appendChild","render","renderView","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","uuid","REGEX","test","byteToHex","i","toString","substr","arr","offset","arguments","length","validate","TypeError","options","buf","rnds","random","stringify","constructor","CartAmountTrigger","ProactiveChatTrigger","super","totalInCart","min","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","telemetry","debug","name","cart","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","_objectSpread","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","window","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","value","SpecificCountryRegionTrigger","customerCountryCode","suggestedMarket","proactiveOnSpecificLocation","eCommerceCustProactiveCountryCode","SpecificLocation","proactiveOnSpecificCountryRegionMessage","SpecificPageTrigger","proactiveOnSpecificPageList","specificPageTrimmed","href","SpecificPage","proactiveOnSpecificPageMessage","WaitOnTimeTrigger","proactiveOnWaitTimeSeconds","isNaN","waitTimeInMilliseconds","Number","triggerTime","WaitOnTime","eCommerceCustProactiveTimeOnPage","proactiveOnWaitTimeMessage","ProactiveTriggers","user","userId","uuidv4","_getContext","enabled","timeout","message","_proactiveCheck","e","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","display","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","type","payload","language","navigator","_activity$from","activity","from","role","triggerQuery","text","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","setTimeout","isValidToken","onClick","alt","fontWeight","fontSize","chatButtonHeader","chatButtonText","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","id","version","viewBox","xmlSpace","d","fill","ChatCore","unableToLoadChatMessage","p","interval","setInterval","clearInterval","Chat","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","link","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","destinationUrl","openInNewTab","additionalProperties","onTelemetryClick","links","Msdyn365","editProps","onTextChange","requestContext","CookieCompliance","getTelemetryObject","telemetryPageName","friendlyName","handleLinkTextChange","linkIndex","event","_this$props$config$ac","actionLinks","target","handleContentChange","content","state","visible","cookieRef","_onDismiss","setState","acceptCookiesAriaLabel","moduleConfig","error","MsDyn365","isBrowser","viewProps","onDismiss","CookieComplianceBanner","classnames","ref","AlertProps","fade","Content","onEdit","ArrayExtensions","hasElements","acceptButton","reload","Alert","errors","isCashAndCarryTransaction","viewModes","tableViewActions","table","placedBy","Iframe","iframeRef","srcURL","URL","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","_renderAlert","cookieConsentRequiredMessage","targetURL","iframeAriaLabel","IFrameView","StorePickUpOptionList","_rendeDeliveryOptions","isExpandOptionsState","isFilterExpanded","_onSelect","preventDefault","deliveryCode","currentTarget","getAttribute","selectedPickupMode","onChange","_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","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","componentDidUpdate","previousProps","selectedStoreLocationId","locations","_stores","_sortStores","reaction","show","displayList","_renderStoreLocation","_store$OrgUnitAvailab","deliveryOptions","OrgUnitPickUpDeliveryModes","_store$OrgUnitAvailab2","selected","StoreSelectorLocationLineItemComponent","storeHours","StoreHours","preferredDistanceUnit","isCurrentLocation","isInStock","ItemAvailabilities","handlers","onSelected","onLocationSelected","onSetAsPreferredStore","onRemovePreferredStore","stockStatusLabel","storeLocatorView","preferredStoreLocationId","isPreferredStoreEnabled","isLocationDisabled","storePickUpOptionList","DeliveryOptions","productPickUpOptionList","productPickUpDeliveryOptions","filteredPickupMode","shouldShowIndex","stores","isPreferredStore","_value$OrgUnitAvailab","__decorate","observable","observer","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","ShowAllStore","showAllStoreAttributes","ToggleMapView","searchButtonAriaLabel","searchPlaceholderText","seeAllStoresText","viewListText","viewMapText","isMapDisabled","showAllStores","autoComplete","onSubmit","searchInputAriaLabel","placeholder","onKeyUp","StoreSelectorEmptyMessage","emptyLocationsText","StoreSelectorWaiting","StoreSelectorTermsOfService","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","hideStockStatus","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","tag","storeHeader","storeDetailsCloseButton","Button","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","termsOfServiceLink","handleHeadingChange","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","input","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","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","shouldComponentUpdate","_storeSelectorStateMa2","_storeSelectorStateMa3","_sortLocation","_storeSelectorStateMa4","_storeSelectorStateMa5","setAsPreferredStore","shouldSetAsPreferredStore","enablePickupFilterToShowStore","hasEnablePickupFilterToShowStore","appConfig","slots","maps","mapSlot","isInlineView","isLocatorView","listMapViewState","canShowLocationView","isMapModuleLoaded","storeSelectorActions","toggleListMapViewState","configHeading","storeLocatorHeaderText","storeSelectorHeaderText","kilometersShortText","sortLocation","isEnableOutofStock","enableStockCheck","locationListProps","_getStoreLocationListProps","hasMapSlot","dialogClassName","ModuleProps","Modal","classname","autoFocus","isOpen","onClosed","horizontalPosition","verticalPosition","toggle","isMobileView","HeaderContainerProps","ModalHeader","HeaderProps","FooterContainerProps","ModalFooter","BodyContainerProps","ModalBody","bodyWrapperProps","storeResultContainerProps","mapContainerProps","storeDetailsModal","locationsMessage","search","spinner","locationsList","outOfStockThreshold","noLocationsMessage","terms","headerText","sortLocations","callbacks","getAndUpdateUserLocation","attachMapAutoSuggest","onSuggestionSelected","setPreferredStore","removePreferredStore","setSelectedStore","isStoreLocatorView","storeList","storeLineProps","_createStoreLocationList","_store$OrgUnitAvailab3","selectedStoreLocation","lineResources","_store$OrgUnitAvailab4","locationOpen","openFrom","openTo","renderDeliveryOptions","renderBody","toggleBopisHandler","cartLine","isBopisSelected","_cartLine$pickUpInSto","pickUpInStore","toggleBopis","onChangeStoreHandler","_cartLine$pickUpInSto2","renderCartLine","storeSelector","isMultiplePickUp","emailDeliveryModeCode","outOfStockErrorMessage","addToWishlist","remove","renderGroupBopisBlock","_cartLine$data2","cartline","DeliveryMode","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","puckUpinStoreAttribute","addToOrderTemplate","renderCartlinesInternal","cartLines","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","ContainerProps","orgUnitName","renderCartlines","waitingComponent","cartLoadingStatus","isCartDataResult","multiplePickUpEnabled","CartlinesWrapper","emptyCart","renderCartLinesGroupHeader","_cartLine$pickUpInSto6","pickUpText","shippingText","emailshippingText","payInvoicesDisplayText","groupTitle","IsInvoiceLine","StringExtensions","isNullOrEmpty","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","orderTotal","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","hasInvoiceLine","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","item","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoices","giftCard","loyalty","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","totalDiscounts","otherCharge","errorData","OrderSummaryErrors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","StoreSelectorFoundLocationsMessageComponent","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","parseInt","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","viewport","_data$storeSelectorSt","displayMap"],"sourceRoot":""}