{"version":3,"sources":["webpack:///src/modules/fabrikam/views/reviews-list.view.tsx?39a2","webpack:///./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/rng.js?7d39","webpack:///./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/regex.js?255d","webpack:///./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/stringify.js?688d","webpack:///./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/validate.js?f4cd","webpack:///./node_modules/@msdyn365-commerce-modules/chat/node_modules/uuid/dist/esm-browser/v4.js?0bec","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/proactive-chat-trigger.ts?53ff","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-amount-trigger.ts?f249","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-number-of-items-trigger.ts?6e2a","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/cart-specific-product-trigger.ts?f770","webpack:///src/modules/msdyn365-pva-chat-connector/helpers/consts.ts?29a6","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/date-range-trigger.ts?7473","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/from-specific-page-trigger.ts?c7f8","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/page-visits-trigger.ts?f742","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-CountryRegion-trigger.ts?53fd","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/specific-page-trigger.ts?4028","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/triggers/wait-on-time-trigger.ts?3c0b","webpack:///src/modules/msdyn365-pva-chat-connector/proactive/index.ts?dd07","webpack:///src/modules/msdyn365-pva-chat-connector/helpers/ContextProvider.ts?3993","webpack:///src/modules/msdyn365-pva-chat-connector/helpers/StyleComposers.ts?47f6","webpack:///src/modules/msdyn365-pva-chat-connector/helpers/CommerceChatStore.ts?a21c","webpack:///src/modules/msdyn365-pva-chat-connector/components/ChatCore.tsx?8272","webpack:///src/modules/msdyn365-pva-chat-connector/components/Chat.tsx?d24f","webpack:///src/modules/msdyn365-pva-chat-connector/msdyn365-pva-chat-connector.view.tsx?1da7","webpack:///src/modules/order-lookup/order-lookup.view.tsx?d1dd","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///./src/modules/brand-hero/brand-hero.view.tsx?b49c","webpack:///./src/modules/instrument-block/components/links.tsx?28ac","webpack:///./src/modules/instrument-block/instrument-block.tsx?9fa7","webpack:///src/modules/adventureworks/views/order-history.view.tsx?16f3","webpack:///src/modules/tile-list/tile-list.tsx?f539","webpack:///./src/modules/brand-hero/svgs/logos.tsx?7b07","webpack:///./src/modules/brand-hero/brand-hero.tsx?bba3","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///src/modules/tile-list/tile-list.view.tsx?d2bd","webpack:///src/modules/adventureworks/views/b2b-requests-status.view.tsx?b8db","webpack:///src/modules/adventureworks/views/components/search.categorysuggest.tsx?5c98","webpack:///src/modules/adventureworks/views/components/search.mobile.empty.tsx?16ff","webpack:///src/modules/adventureworks/views/components/search.form.tsx?f934","webpack:///src/modules/adventureworks/views/components/search.keywordsuggest.tsx?34ae","webpack:///src/modules/adventureworks/views/components/search.productsuggest.tsx?1992","webpack:///src/modules/adventureworks/views/search.view.tsx?4e21","webpack:///./src/themes/connselmer2/views/components/price.component.tsx?7502","webpack:///src/modules/checkout/checkout.view.tsx?e9a7","webpack:///./src/themes/connselmer/views/components/price.component.tsx?cf28","webpack:///src/modules/adventureworks/views/cart.view.tsx?7e13","webpack:///./src/themes/leblanc/views/components/price.component.tsx?b40d","webpack:///src/modules/reviews-list/reviews-list.view.tsx?6dd9","webpack:///src/modules/adventureworks/views/sign-in.view.tsx?94bb","webpack:///src/modules/checkout-section-container/checkout-section-container.view.tsx?61ae","webpack:///src/modules/order-confirmation/order-confirmation.view.tsx?8166","webpack:///src/modules/checkout-billing-address/checkout-billing-address.view.tsx?d08e","webpack:///./src/modules/instrument-block/instrument-block.view.tsx?504c","webpack:///src/modules/fabrikam/views/order-details.view.tsx?2a61","webpack:///src/modules/gift-card-balance-check/gift-card-balance-check.view.tsx?ce1c","webpack:///src/modules/checkout-order-confirmation/checkout-order-confirmation.view.tsx?504a","webpack:///src/modules/checkout-delivery-options/checkout-delivery-options.view.tsx?d64d","webpack:///src/modules/checkout-express/checkout-express.view.tsx?6c99"],"names":["buildReviewCard","props","React","Node","Object","assign","cardProps","headerProps","rating","name","date","cardBodyProps","reviewProps","reviewTitle","reviewText","responseProps","responseName","responseDate","responseText","controlsProps","ratingHelpfulLabel","like","dislike","edit","report","createReviewModal","moduleProps","Module","modal","modalHeader","modalBody","form","inputRow","ratingLabel","titleLabel","titleInput","textLabel","textInput","privacyPolicyUrl","error","modalFooter","submitButton","cancelButton","createReportModal","state","reported","headerSubmitted","header","reportSubmittedMessage","reportMessage","radioButtons","succesfulButton","ReviewsListview","averageRating","filterByDropdown","noReviewsMessage","noReviewsWithFilterMessage","pageControls","refineReviewsProps","reportReviewModal","reviewsListProps","reviewCards","reviewCount","reviewModal","sortByDropdown","userReview","length","isFilterApplied","map","review","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","validate","uuid","REGEX","test","byteToHex","i","push","toString","substr","stringify","arr","offset","arguments","undefined","toLowerCase","TypeError","v4","options","buf","rnds","random","ProactiveChatTrigger","constructor","context","this","CartAmountTrigger","super","totalInCart","min","config","proactiveOnCartAmountMin","max","proactiveOnCartAmountMax","telemetry","debug","cart","_getCart","isEmpty","TotalAmount","retVal","getContextProvider","_objectSpread","eCommerceCustIsProactiveChat","eCommerceCustProactiveType","eCommerceCustProactiveShoppingCartAmount","getMessage","proactiveOnCartAmountMessage","proactiveDefaultMessage","getCartState","actionContext","CartNumberOfItemsTrigger","numberOfItems","proactiveOnCartNoOfItemsMin","proactiveOnCartNoOfItemsMax","TotalItems","eCommerceCustProactiveShoppingCartNumberOfItems","proactiveOnCartNoOfItemsMessage","CartSpecificProductTrigger","product","isValid","CartLines","_cart$cart$CartLines","_cart$cart$CartLines2","proactiveOnCartSpecificProductList","_this$props$config$pr","j","_this$props$config$pr2","ItemId","eCommerceCustProactiveShoppingCartSpecificProduct","proactiveOnCartSpecificProductMessage","ProactiveChatNames","DateRangeTrigger","start","_toDate","proactiveOnDateRangeStart","end","proactiveOnDateRangeEnd","now","Date","setHours","getTime","DateRange","eCommerceCustProactiveFromDate","toUTCString","eCommerceCustProactiveToDate","proactiveOnDateRangeMessage","dateParts","split","FromSpecificPageTrigger","proactiveOnFromSpecificPageList","fromSpecificPageTrimmed","trim","window","document","referrer","indexOf","FromSpecificPage","eCommerceCustProactiveCameFromPage","proactiveOnFromSpecificPageMessage","PageVisitTrigger","visits","cookieName","cookies","request","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","ContextProvider","user","userId","uuidv4","_getContext","data","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","url","fetch","method","then","r","json","token","app","pvaChatConnectorPowervaDirectlineTokenURL","pvaChatConnectorBotID","pvaChatConnectorTenantID","_ref","dispatch","next","action","type","payload","language","navigator","_activity$from","activity","from","role","triggerQuery","text","ChatCore","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","createElement","userID","Chat","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","prov","init","setTimeout","isValidToken","style","onClick","src","alt","fontWeight","fontSize","chatButtonHeader","chatButtonText","className","flexGrow","handleMinimizeButtonClick","handleCloseButtonClick","id","version","viewBox","xmlSpace","d","fill","unableToLoadChatMessage","p","interval","setInterval","clearInterval","OrderLookupViewComponent","_orderLookupForm$clas","_submitButton$classNa","orderLookup","orderLookupContainer","orderLookupAdditionalFieldContainer","heading","paragraph","orderLookupForm","renderOrderLookupInputField","orderNumberInput","errorMessage","additionalProperties","registeredUserMessage","fieldErrorMessage","ArrayExtensions","hasElements","item","key","submitButtonLabelText","Iframe","iframeRef","render","resources","target","destinationUrl","srcURL","URL","protocol","toLocaleLowerCase","iframeClassName","classnames","viewProps","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","renderView","targetURL","iframeAriaLabel","ref","BrandHeroView","brandHeroContainer","imageContainer","detailsContainer","title","brandLogo","image","InstrumentLinks","_mapEditableLinks","link_data","editableLinks","forEach","link","index","payLoad","getPayloadObject","telemetryContent","linkText","contentAction","etext","attributes","getTelemetryAttributes","btnClass","editableLink","ariaLabel","linkUrl","openInNewTab","onTelemetryClick","links","Msdyn365","editProps","requestContext","InstrumentBlock","getTelemetryObject","telemetryPageName","friendlyName","_buildColumns","columns","mainHeading","_headingTag","idx","tag","LinksComponent","_this$props$config$ma","mainImage","imageProps","gridSettings","imageSettings","instrumentBlockImage","preserveImageSpace","moduleType","typeName","imagePropertyName","moduleId","layout","msdyn365__moduleLayout","shouldSkipToMainImage","instrumentBlockContainer","OrderHistoryOrderInfomation","orderInformationProps","salesId","receiptId","channelName","createdDate","count","amount","channelReferenceId","OrderHistoryGroupDelivery","_ref2","deliveryProps","processing","address","trackingInfo","OrderHistoryGroup","_ref3","groupProps","delivery","salesLinesProps","salesLines","salesLine","LineId","OrderHistoryGroups","_ref4","groupsProps","groups","group","OrderHistoryHeader","_ref5","orderCountLabel","extraActions","OrderHistorySalesOder","_ref6","salesOrderProps","orderInfomation","orderDetailsLink","expandProductsButton","placedBy","OrderHistoryList","_ref7","listProps","salesOrders","salesOrder","OrderHistoryView","_ref8","orderHistoryProps","loading","emptyMessage","backToShoppingLink","list","table","moreButton","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","parentId","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","slots","content","armstrong","xmlns","bach","conn","holton","king","leblanc","ludwig","ludwig_musser","musser","scherl","stroke","strokeWidth","strokeMiterlimit","selmer","yanagisawa","BrandHero","_this$props$config$im","h1Text","contentBlockTitle","brandHeroImage","logos","brandHeroBlockProps","moduleClass","IFrameView","tileListView","tileItem","keyIndex","B2bRequestsStatusView","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","result","headingForEmptyRequestStatus","textForEmptyRequestStatus","Button","getUrlSync","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","Image","altText","lazyload","viewports","xs","w","h","q","renderProductNotFoundResultsImage","emptyMobileSearchTextHeading","emptyMobileSearchText","FormComponent","searchForm","formWrapper","clearSearchButtonText","isSearchText","clearSearch","cancelButtonNode","cancelBtnAriaLabel","cancelBtn","input","renderClearButton","submitBtn","renderKeywordSuggestionsTitle","keywordsHeading","KeywordSuggestionsComponent","keywordSuggest","ulKeyword","keywordSuggestions","renderProductSuggestionsTitle","productSuggestionsHeading","productAutoSuggestionHeading","renderProductNotFoundResults","noResultContentHeadingText","noResultContentParagraphText","ProductSuggestionsComponent","productSuggest","ulProduct","productSuggestions","productSuggestionHeading","items","_item$id","LiProduct","AProduct","thumbnail","price","renderTitle","searchSuggestionHeading","searchText","searchTextString","concat","searchAutoSuggestionHeading","format","SearchView","Search","AutoSuggestAriaLabel","AutoSuggestAriaLabelText","AutoSuggest","KeywordSuggest","ProductSuggest","UlKeyword","UlProduct","autosuggestKeyword","autosuggestProduct","SearchForm","FormWrapper","label","callbacks","handleCancelSearchFocused","categorySuggestionHeading","setSearchTextString","isMobilePort","setIsMobile","propsFormInput","propsFormInputCurrent","current","isMobileViewport","useCallback","isMobileView","addEventListener","viewport","isNullOrEmpty","Fragment","onBlur","isSearchFormExpanded","getOriginalPrice","_props$data$price$Adj","AdjustedPrice","TradeAgreementPrice","BasePrice","formatCurrency","showCC","currencyCode","CurrencyCode","_cultureFormatter","_props$data$price","ExtensionProperties","_cc","find","element","Key","Value","StringValue","cultureFormatter","formatNumber","currency","minimumFractionDigits","showPriceRangeForMasterProduct","_props$isPriceMinMaxE","_props$product","_props$product2","isPriceMinMaxEnabled","ProductTypeValue","ProductType","Master","KitMaster","MinVariantPrice","MaxVariantPrice","renderCurrentPrice","_props$priceResources","itemProp","priceResources","priceRangeSeparator","CustomerContextualPrice","getActivePrice","PriceComponent","msdyn365Commerce","createComponentOverride","component","isSalesAgreementPriceFeatureEnabled","SalesAgreementPrice","_props$data$price$Sal","_props$priceResources8","_props$priceResources9","isExpanded","setIsExpanded","toggle","salesAgreementPricePrompt","tabIndex","_props$data$price$Att","_props$priceResources2","_props$priceResources3","_props$priceResources4","_props$priceResources5","_props$priceResources6","_props$priceResources7","firstPriceLine","AttainablePriceLines","salesAgreementExpirationDatePrompt","formatDate","EffectiveDate","ExpirationDate","salesAgreementCommittedQuantityPrompt","CommittedQuantity","salesAgreementRemainingQuantityPrompt","RemainingQuantity","renderSalesAgreementDetail","originalSalesPrice","activeSalesPrice","showStrikethroughPricing","initialPrice","originalPriceText","currentPriceText","savingsText","renderCurrentPriceWithOriginalPrice","PickUpAtStoreComponent","PickUpAtStore","EmailDeliveryComponent","EmailDelivery","LineItemComponent","LineItem","pickUpAtStore","emailDelivery","LineItemGroupComponent","LineItemDeliveryGroup","LineItemList","lineItems","lineItem","LineItemGroupComponentWithMultiplePickUp","lineItemWraper","lineItemWraperIcon","LineItemComponentWithMultiplePickUp","PickUpAtStoreComponentWithMultiplePickUp","LineItemsComponent","LineItems","Header","editLink","itemsForPickup","itemsForShip","itemsForEmail","itemsGroupWithMulitplePickupMode","OrderSummaryComponent","_ref9","lines","subtotal","shipping","otherCharge","tax","totalDiscounts","loyalty","customerAccount","giftCard","orderTotal","PaymentSummaryComponent","_ref10","invoices","CheckoutView","isPaymentVerificationRedirection","shouldEnableSinglePaymentAuthorizationCheckout","canShow","checkoutProps","hasSalesOrder","hasInvoiceLine","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","guidedForm","orderSummary","invoicePaymentSummary","placeOrderButton","termsAndConditions","keepShoppingButton","checkoutExpressPaymentContainer","checkoutErrorRef","Waiting","originalPrice","_props$data$price$Bas","_props$data$price$Tra","Math","shouldUseFreePriceText","freePriceText","_price","_symbol","replace","maxVariantPrice","minVariantPrice","_currencyCode","_props$data$price2","_element$Value","_element$Value2","_element$Value3","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","TelemetryConstant","PickupInStore","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","renderCartLinesGroupTitle","_cartLine$pickUpInSto3","_cartLine$pickUpInSto4","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","deliveryOption","CartView","_props$cart2","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","totalItemsInCart","renderModuleAttributes","checkoutBlockedDueToUnavailableFunds","orderSummaryLineitems","checkoutAsSignInUserButton","checkoutAsGuestButton","renderOrderSummaryCheckoutButton","promotionOptions","promotions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","renderCartLinesGroup","cartLinesGroup","cartlines","_props$context$action","_props$context$action2","cartlineId","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","EmailDeliveryModeCode","cartDataResult","orderSummaryHeading","OrderSummaryWrapper","renderInvoiceSummarylines","invoiceSummaryLines","orderSummaryItems","invoiceSummaryLineitems","OrderSummaryItems","renderOrderSummarylines","orderSummaryLines","errorData","OrderSummaryErrors","errors","Wrapper","_props$cart","promoCode","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","renderOrderSummaryCheckout","SignInLoading","icon","SignInButton","SignInView","signIn","viewState","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","isShowLoading","localAccount","forgetPassword","disclaimer","signInButton","wrapper","LocalAccount","socialAccounts","button","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount","ItemComponent","itemProps","CheckoutSectionContainerView","checkoutPlainContainerProps","OrderConfirmationOrderInfomation","receiptEmail","OrderConfirmationSalesLine","salesLineProps","buyAgainButton","OrderConfirmationGroupDelivery","pickupDateTimeslot","OrderConfirmationGroup","shippingItemsToYou","OrderConfirmationGroups","OrderConfirmationOrderSummary","orderSummaryProps","totalAmount","earnedPoints","OrderConfirmationPayment","paymentMethodsProps","methods","OrderConfirmationHelp","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderConfirmationView","payment","help","AddressShow","AddressDetail","description","AddressAddUpdate","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","AddressItem","AddressError","CheckoutBillingAddressView","CheckoutBillingAddress","sameAsShippingCheckbox","showAddress","showAddOrUpdateAddress","isShowSameAsShippingCheckbox","isShowAddress","isShowAddOrUpdateAddress","ContentBlockView","OrderInfomation","channelAddress","SalesLine","GroupDelivery","Group","isCashAndCarryTransaction","deliveryType","shipment","salesStatus","showTimeslot","pickupProps","Groups","OrderSummary","Payment","Help","OrderDetailsView","viewModes","tableViewActions","Form","formProps","inputPinLabel","inputExpLabel","inputProps","inputNumProps","inputPinProps","inputExpProps","inputNumber","inputPin","inputExp","applyButton","supportExternalGiftCard","showGiftCardPinInput","showGiftCardExpInput","alertFieldLabel","Item","selectedGiftCard","GiftCardBalanceCheckView","giftCardBalanceCheckProps","DeliveryOptionList","DeliveryOptionsList","DeliveryOption","code","radioButton","DeliveryOptionSelected","CheckoutDeliveryOptionsView","CheckoutDeliveryOptions","deliveryOptions","deliveryOptionSelected","waiting","editButton","isLoading","isError","isShowList","isShowSelected","isShowEditButton","OverlayModal","CheckoutExpressView","checkoutExpress","addPaymentForm","overlayModal","shouldHideExpressCheckout"],"mappings":"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","file":"static/js/7.e91b1293406d2bb66e54.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IReviewModalViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport {\n IReportReviewModalViewProps,\n IReviewCardViewProps,\n IReviewsListState,\n IReviewsListViewProps\n} from '@msdyn365-commerce-modules/ratings-reviews/src/modules/reviews-list';\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n {props.date}\n \n \n \n {props.reviewTitle}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\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 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 REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","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 { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IOrderLookupViewProps } from './order-lookup';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns - Returns JSX Element.\n */\nexport const OrderLookupViewComponent: React.FC = props => {\n const {\n orderLookup,\n orderLookupContainer,\n orderLookupAdditionalFieldContainer,\n heading,\n paragraph,\n orderLookupForm,\n renderOrderLookupInputField,\n orderNumberInput,\n errorMessage,\n submitButton,\n additionalProperties,\n registeredUserMessage,\n fieldErrorMessage\n } = props;\n return (\n \n \n {heading}\n {paragraph}\n \n {orderNumberInput}\n {renderOrderLookupInputField}\n {ArrayExtensions.hasElements(additionalProperties) && (\n \n {additionalProperties.map((item: JSX.Element) => (\n {item}\n ))}\n \n )}\n {fieldErrorMessage}\n \n {props.submitButtonLabelText}\n \n {errorMessage}\n \n {registeredUserMessage}\n \n \n );\n};\n\nexport default OrderLookupViewComponent;\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","import * as React from 'react';\r\nimport {IBrandHeroViewProps} from './brand-hero';\r\nimport {Module, Node} from \"@msdyn365-commerce-modules/utilities\";\r\n\r\nconst BrandHeroView: React.FC = props => {\r\n\tconst {\r\n\t\tbrandHeroContainer,\r\n\t\timageContainer,\r\n\t\tdetailsContainer,\r\n\t\ttitle,\r\n\t\tbrandLogo,\r\n\t\timage\r\n\t} = props;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{image}\r\n\t\t\t\r\n\t\t\t\t{brandLogo}\r\n\t\t\t\t{title}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\nexport default BrandHeroView;","import * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\nimport { ILinksData } from '../instrument-block.props.autogenerated';\r\n\r\nexport interface IInstrumentLinks {\r\n links?: ILinksData[];\r\n requestContext: Msdyn365.IRequestContext;\r\n telemetryContent: ITelemetryContent;\r\n}\r\n\r\nexport class InstrumentLinks extends React.PureComponent{\r\n public render(): JSX.Element {\r\n const editableLinks = this._mapEditableLinks(this.props.links);\r\n return (\r\n
\r\n {editableLinks && editableLinks.length > 0 ? (\r\n \r\n ) : null}\r\n
\r\n );\r\n }\r\n\r\n private _mapEditableLinks = (link_data: ILinksData[]|undefined): Msdyn365.ILinksData[] | null => {\r\n if (!link_data || link_data.length === 0) {\r\n return null;\r\n }\r\n const editableLinks: Msdyn365.ILinksData[] = [];\r\n link_data.forEach((link, index) => {\r\n // Construct telemetry attribute to render\r\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\r\n const linkText = link.linkText ? link.linkText : '';\r\n payLoad.contentAction.etext = linkText;\r\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\r\n const btnClass = index === 0 ? 'msc-cta__primary' : 'msc-cta__secondary';\r\n const editableLink: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: btnClass,\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: \"link\",\r\n additionalProperties: attributes,\r\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\r\n };\r\n editableLinks.push(editableLink);\r\n });\r\n\r\n return editableLinks;\r\n }\r\n}\r\nexport default InstrumentLinks;","import * as React from 'react';\r\nimport {IInstrumentBlockProps, IInstrumentBlockConfig, IColumnsData} from './instrument-block.props.autogenerated';\r\nimport * as Msdyn365 from \"@msdyn365-commerce/core\";\r\nimport classnames from \"classnames\";\r\nimport {getTelemetryObject, IModuleProps, INodeProps, ITelemetryContent} from \"@msdyn365-commerce-modules/utilities\";\r\nimport LinksComponent from './components/links';\r\n\r\n/* Interfaces */\r\nexport interface IInstrumentBlockViewProps extends IInstrumentBlockProps<{}>{\r\n\tmainHeading?: string;\r\n\tmainImage?: Msdyn365.IImageData;\r\n\tcolumns?:JSX.Element,\r\n\tinstrumentBlockContainer: IModuleProps;\r\n\timageContainer: INodeProps;\r\n}\r\nexport interface IInstrumentBlockFullConfig extends IInstrumentBlockConfig {\r\n\t// eslint-disable-next-line @typescript-eslint/naming-convention -- This field comes from SDK.\r\n\tmsdyn365__moduleLayout?: string;\r\n}\r\n\r\nexport class InstrumentBlock extends React.PureComponent> {\r\n\tprivate readonly telemetryContent: ITelemetryContent = getTelemetryObject(\r\n\t\tthis.props.context.request.telemetryPageName!,\r\n\t\tthis.props.friendlyName,\r\n\t\tthis.props.telemetry\r\n\t);\r\n\r\n\tprivate _buildColumns(columns: IColumnsData[]|undefined, mainHeading: string|undefined):JSX.Element{\r\n\t\tconst _headingTag = mainHeading ? `h3` : `h2`;\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t{columns?.map((item, idx) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t)\r\n\t\t\t\t})}\r\n\t\t\t
\r\n\t\t)\r\n\t}\r\n\r\n public render(): JSX.Element | null {\r\n\t\tconst {\r\n\t\t\tmainHeading,\r\n\t\t\tmainImage,\r\n\t\t\tcolumns,\r\n\t\t\tclassName\r\n\t\t\t/*clientRender*/\r\n\t\t} = this.props.config;\r\n\r\n\t\t//Don't render the module without a main image\r\n\t\tif (!mainImage){\r\n\t\t\tthis.props.context.telemetry.error('Content block content is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst imageProps = {\r\n\t\t\tgridSettings: this.props.context.request.gridSettings ?? {},\r\n\t\t\timageSettings: mainImage?.imageSettings\r\n\t\t};\r\n\t\tconst instrumentBlockImage = (\r\n\t\t\t\r\n\t\t);\r\n\r\n\t\treturn this.props.renderView({\r\n\t\t\t...this.props,\r\n\t\t\tmainHeading: mainHeading && (

{mainHeading}

),\r\n\t\t\tmainImage: instrumentBlockImage,\r\n\t\t\tinstrumentBlockContainer: {\r\n\t\t\t\tmoduleProps: this.props,\r\n\t\t\t\tclassName: classnames('inst-block', className)\r\n\t\t\t},\r\n\t\t\timageContainer: { className: 'inst-block__image' },\r\n\t\t\tcolumns: this._buildColumns(columns, mainHeading)\r\n\t\t}) as React.ReactElement;\r\n }\r\n}\r\nexport default InstrumentBlock;\r\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 IHeader,\n IList,\n IOrderHistoryViewProps,\n IOrderInformation,\n ISalesOrder\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderHistoryOrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n channelName,\n createdDate,\n count,\n amount,\n channelReferenceId\n}) => (\n \n {channelName}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const OrderHistoryGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {processing}\n {address}\n {trackingInfo}\n \n);\n\nexport const OrderHistoryGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n {salesLine.salesLine}\n ))}\n \n )}\n \n);\n\nexport const OrderHistoryGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderHistoryHeader: React.FC = ({ headerProps, heading, orderCountLabel, extraActions }) => (\n \n {heading}\n {orderCountLabel}\n {extraActions}\n \n);\n\nexport const OrderHistorySalesOder: React.FC = ({\n salesOrderProps,\n orderInfomation,\n groups,\n orderDetailsLink,\n expandProductsButton\n}) => (\n \n
\n {orderInfomation.placedBy && {orderInfomation.placedBy}}\n
{orderInfomation && }
\n
\n {groups && }\n {expandProductsButton}\n {orderDetailsLink}\n
\n);\n\nexport const OrderHistoryList: React.FC = ({ listProps, salesOrders }) => (\n \n {salesOrders && salesOrders.map((salesOrder, index) => )}\n \n);\n\nconst OrderHistoryView: React.FC = ({\n orderHistoryProps,\n header,\n alert,\n loading,\n emptyMessage,\n backToShoppingLink,\n list,\n table,\n moreButton\n}) => (\n \n {header && }\n {loading}\n {alert && (\n <>\n {alert}\n {backToShoppingLink}\n \n )}\n {emptyMessage && (\n \n {emptyMessage}\n {backToShoppingLink}\n \n )}\n {list && }\n {table}\n {moreButton && moreButton}\n \n);\n\nexport default OrderHistoryView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n getTelemetryObject,\n Heading,\n IComponentNodeProps,\n INodeProps,\n ISingleSlideCarouselProps,\n ITelemetryContent,\n NodeTag,\n SingleSlideCarousel\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { ITileListProps, ITitleData } from './tile-list.props.autogenerated';\n\n/**\n * Tile-list view props.\n */\nexport interface ITileListViewProps extends ITileListProps<{}> {\n title?: React.ReactNode;\n tiles: React.ReactNode[];\n tileItemContainer: INodeProps;\n tileListContainer: INodeProps;\n tileListHeading: INodeProps;\n singleSlideCarouselComponentProps: INodeProps;\n}\n\n/**\n *\n * TileList component.\n * @extends {React.PureComponent>}\n */\nexport class TileList extends React.PureComponent> {\n private readonly _telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n private static _createHeading(heading?: ITitleData): React.ReactNode | null {\n if (!heading || !heading.text || StringExtensions.isNullOrWhitespace(heading.text)) {\n return null;\n }\n return ;\n }\n public constructor(props: ITileListProps<{}>) {\n super(props);\n }\n\n public render(): JSX.Element | null {\n const { resources } = this.props;\n const { title, className } = this.props.config;\n const propsCarousel: IComponentNodeProps = {\n tag: SingleSlideCarousel,\n className: this.props.config.className ?? '',\n flipperPrevLabel: resources.flipperPrevious,\n flipperNextLabel: resources.flipperNext,\n parentId: this.props.id,\n telemetryContent: this._telemetryContent,\n vertical: false\n };\n\n const viewProps = {\n ...this.props,\n title: TileList._createHeading(title),\n singleSlideCarouselComponentProps: propsCarousel,\n tileItemContainer: {\n tag: 'li' as NodeTag,\n className: 'ms-tile__item',\n role: 'listitem'\n },\n tileListContainer: { className: classnames('ms-tile-list', className) },\n tileListHeading: { className: 'ms-tile-list__heading' },\n tiles: this.props.slots.content\n };\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n}\n\nexport default TileList;\n","import React from \"react\";\r\n\r\nexport function armstrong():JSX.Element{\r\n\treturn (\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function bach(): JSX.Element {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function conn(): JSX.Element {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function holton(): JSX.Element {\r\n\treturn (\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function king(): JSX.Element {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function leblanc(): JSX.Element {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function ludwig(): JSX.Element {\r\n\treturn (\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function ludwig_musser(): JSX.Element{\r\n\treturn (\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function musser(): JSX.Element{\r\n\treturn (\r\n\t\t\r\n\t);\r\n}\r\nexport function scherl(): JSX.Element{\r\n\treturn (\r\n\t\t\r\n\t\t)\r\n}\r\nexport function selmer(): JSX.Element {\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}\r\nexport function yanagisawa(): JSX.Element {\r\n\treturn (\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t)\r\n}","import * as React from 'react';\r\nimport {IBrandHeroData} from './brand-hero.data';\r\nimport {IBrandHeroProps} from './brand-hero.props.autogenerated';\r\nimport {IModuleProps, INodeProps} from \"@msdyn365-commerce-modules/utilities\";\r\nimport * as Msdyn365 from \"@msdyn365-commerce/core\";\r\nimport classnames from 'classnames';\r\nimport {IContentBlockFullConfig} from \"@msdyn365-commerce-modules/content-block/src/modules/content-block/content-block\";\r\nimport {\r\n\tarmstrong,\r\n\tbach,\r\n\tconn,\r\n\tking,\r\n\tholton,\r\n\tleblanc,\r\n\tludwig,\r\n\tmusser,\r\n\tscherl,\r\n\tselmer,\r\n\tyanagisawa,\r\n\tludwig_musser\r\n} from './svgs/logos';\r\n\r\nexport interface IBrandHeroViewProps extends IBrandHeroProps {\r\n\th1Text?: string;\r\n\tbrandLogo: string;\r\n\tclassName?: string;\r\n\timage?: React.ReactNode;\r\n\ttitle?: React.ReactNode;\r\n\tbrandHeroContainer: IModuleProps;\r\n\timageContainer: INodeProps;\r\n\tdetailsContainer: INodeProps;\r\n}\r\n\r\n/**\r\n *\r\n * BrandHero component\r\n * @extends {React.PureComponent>}\r\n */\r\nclass BrandHero extends React.PureComponent> {\r\n\r\n\tpublic render(): JSX.Element | null {\r\n\t\tconst { h1Text, brandLogo, image, className } = this.props.config;\r\n\t\tconst contentBlockTitle = h1Text && (\r\n\t\t\t\r\n\t\t);\r\n\t\tconst imageProps = {\r\n\t\t\tgridSettings: this.props.context.request.gridSettings ?? {},\r\n\t\t\timageSettings: image?.imageSettings\r\n\t\t\t//lazyload: false ??\r\n\t\t};\r\n\t\t//Get the CTA Link builders from content-block.tsx if we need this later. Same for text\r\n\r\n\t\tconst brandHeroImage = (\r\n\t\t\t\r\n\t\t);\r\n\t\t//Set up the array of logos to grab (this is TERRIBLE CODE)\r\n\t\tconst logos = {\r\n\t\t\tarmstrong, bach, conn, king, holton, leblanc, ludwig, ludwig_musser, musser, scherl, selmer, yanagisawa\r\n\t\t}\r\n\r\n\t\tif (!contentBlockTitle){\r\n\t\t\tthis.props.context.telemetry.error('Brand Hero H1 is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst brandHeroBlockProps = {\r\n\t\t\t...this.props,\r\n\t\t\ttitle: contentBlockTitle,\r\n\t\t\timage: brandHeroImage,\r\n\t\t\tmoduleClass: this.props.config.className,\r\n\t\t\tbrandHeroContainer: {\r\n\t\t\t\tmoduleProps: this.props,\r\n\t\t\t\tclassName: classnames('brand-hero', className)\r\n\t\t\t},\r\n\t\t\timageContainer: { className: 'brand-hero__image' },\r\n\t\t\tdetailsContainer: { className: 'brand-hero__details' },\r\n\t\t\tbrandLogo: logos[`${brandLogo}`]()\r\n\t\t};\r\n\r\n\t\treturn this.props.renderView(brandHeroBlockProps) as React.ReactElement;\r\n\t}\r\n}\r\nexport default BrandHero;","/*!\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 { Node } from '@msdyn365-commerce-modules/utilities';\nimport React, { ReactNode } from 'react';\n\nimport { ITileListViewProps } from './tile-list';\n\n/**\n * View component.\n * @param props - The view properties.\n * @returns Returns props.\n */\nexport const tileListView: React.FC = props => {\n const { title, tiles, tileListContainer, tileListHeading, tileItemContainer, singleSlideCarouselComponentProps } = props;\n return (\n \n {title}\n \n {tiles.map((tileItem: ReactNode, index: number) => {\n const keyIndex = `tile-list-item__${index}`;\n return (\n \n {tileItem}\n \n );\n })}\n \n \n );\n};\n\nexport default tileListView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getUrlSync } from '@msdyn365-commerce/core';\nimport { IB2bRequestsStatusViewProps } from '@msdyn365-commerce-modules/account-management';\nimport { Button, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { IB2bRequestsStatusProps, IB2bRequestsStatusResources } from '../definition-extensions/b2b-requests-status.ext.props.autogenerated';\n\n/**\n * B2b Request status View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Dependency from module file.\nconst B2bRequestsStatusView: React.FC> = props => {\n const { b2bRequestsStatus, heading, table } = props;\n const { continueShoppingButtonTitle } = props.resources;\n const initialCount = 0;\n\n if (props.data.operationRequests.result?.length === initialCount) {\n return (\n \n {heading}\n \n
\n

{props.resources.headingForEmptyRequestStatus}

\n

{props.resources.textForEmptyRequestStatus}

\n \n \n {continueShoppingButtonTitle}\n \n \n
\n
\n
\n );\n }\n return (\n \n {heading}\n {table}\n \n );\n};\n\nexport default B2bRequestsStatusView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ISearchData, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Categories heading.\n * @param inCategoriesHeading - The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderCategorySuggestionsTitle = (inCategoriesHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = inCategoriesHeading ? inCategoriesHeading : 'In categories';\n\n return
{categoryAutoSuggestionHeading}
;\n};\n\n/**\n * Render Categories suggestion result.\n * @param inCategoriesHeading - The Categories result heading.\n * @param noResultText - The \"No Result\" text.\n * @param props - The Categories suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const CategorySuggestionsComponent = (\n inCategoriesHeading: string,\n noResultText: string,\n props: ISearchViewProps & ISearchProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return props.autosuggestCategory ? (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n props.autosuggestCategory.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderCategorySuggestionsTitle(inCategoriesHeading)}\n \n
  • {noResultText}
  • \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData } from '@msdyn365-commerce-modules/search';\nimport { Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n const imageSettings = {\n lazyload: true,\n viewports: {\n xs: { w: 100, h: 100, q: 'w=100&h=100&q=60&m=6' }\n }\n };\n return (\n \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param props -The props.\n * @returns The JSX Element.\n */\nexport const MobileAutoSuggestEmptyComponent = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    \n
    {props.resources.emptyMobileSearchTextHeading}
    \n
    {props.resources.emptyMobileSearchText}
    \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 { ISearchData, ISearchFormViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\nimport { MobileAutoSuggestEmptyComponent } from './search.mobile.empty';\n\n/**\n * Render Clear button for mobile viewport.\n * @param clearSearchButtonText -The Clear button text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nconst renderClearButton = (clearSearchButtonText: string, clearSearch: () => void): JSX.Element => {\n return (\n \n );\n};\n\n/**\n * Render Search form.\n * @param form -Form view props.\n * @param searchForm -Search Form props.\n * @param formWrapper -Form Wrapper props.\n * @param isMobile -Is mobile viewport flag.\n * @param clearSearchButtonText -The Clear button text.\n * @param props -The props for resource.\n * @param isSearchText -Is SearchText flag for input text.\n * @param clearSearch -Clear Search callback.\n * @returns -The JSX Element.\n */\nexport const FormComponent = (\n form: ISearchFormViewProps,\n searchForm: INodeProps,\n formWrapper: INodeProps,\n isMobile: boolean,\n clearSearchButtonText: string,\n props: ISearchProps,\n isSearchText: boolean,\n clearSearch: () => void\n): JSX.Element => {\n const cancelButtonNode = (\n \n );\n\n return isMobile ? (\n \n {form.cancelBtn}\n \n {form.input}\n {isSearchText && renderClearButton(clearSearchButtonText, clearSearch)}\n {!isSearchText ? MobileAutoSuggestEmptyComponent(props) : null}\n \n \n ) : (\n \n \n {form.submitBtn}\n {form.input}\n {isSearchText && cancelButtonNode}\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 { ISearchKeywordViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\n/**\n * Render keywords heading.\n * @param keywordsHeading -The Keywords result heading.\n * @returns The JSX Element.\n */\nconst renderKeywordSuggestionsTitle = (keywordsHeading: string): JSX.Element => {\n const categoryAutoSuggestionHeading = keywordsHeading ? keywordsHeading : 'Keywords';\n\n return
    {categoryAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render keywords reults.\n * @param keywordSuggest -The Keywords suggest Node props.\n * @param ulKeyword -The List Node props.\n * @param keywordsHeading -The Keywords result heading.\n * @param noResultText -The \"No Result\" text.\n * @param keywordSuggestions -The Keywords suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns -The JSX Element.\n */\nexport const KeywordSuggestionsComponent = (\n keywordSuggest: INodeProps,\n ulKeyword: INodeProps,\n keywordsHeading: string,\n noResultText: string,\n keywordSuggestions?: ISearchKeywordViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n return keywordSuggestions ? (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n keywordSuggestions.text.map(text => {\n return text;\n })}\n \n \n ) : (\n \n {renderKeywordSuggestionsTitle(keywordsHeading)}\n \n
  • {noResultText}
  • \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 { IImageData, Image } from '@msdyn365-commerce/core';\nimport { ISearchData, ISearchProductViewProps } from '@msdyn365-commerce-modules/search';\nimport { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport React from 'react';\n\nimport { ISearchProps } from '../../definition-extensions/search.ext.props.autogenerated';\n\n/**\n * Render Products Suggestion result heading.\n * @param productSuggestionsHeading -The products suggestion result heading.\n * @returns The JSX Element.\n */\nconst renderProductSuggestionsTitle = (productSuggestionsHeading: string): JSX.Element => {\n const productAutoSuggestionHeading = productSuggestionsHeading ? productSuggestionsHeading : 'Products';\n\n return
    {productAutoSuggestionHeading}
    ;\n};\n\n/**\n * Render Products Suggestion result heading.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResultsImage = (props: ISearchProps): JSX.Element | null => {\n const noSearchResultImage: IImageData | undefined = props.config.noSearchResultImage;\n if (!noSearchResultImage || !noSearchResultImage.src) {\n return null;\n }\n return (\n \n );\n};\n\n/**\n * Render Products No result section.\n * @param props -The props.\n * @returns The JSX Element.\n */\nconst renderProductNotFoundResults = (props: ISearchProps): JSX.Element => {\n return (\n \n
    {renderProductNotFoundResultsImage(props)}
    \n
    {props.resources.noResultContentHeadingText}
    \n
    \n {props.resources.noResultContentParagraphText}\n
    \n
    \n );\n};\n\n/**\n * Render Product suggestion result.\n * @param productSuggest -The product suggest Node props.\n * @param ulProduct -The List Node props.\n * @param props -The props.\n * @param productSuggestions -The Product suggestion result.\n * @param isLoadingAutoSuggest - The autosuggestion loading flag.\n * @param isLoadingNode - The autosuggestion loading node.\n * @returns The JSX Element.\n */\nexport const ProductSuggestionsComponent = (\n productSuggest: INodeProps,\n ulProduct: INodeProps,\n props: ISearchProps,\n productSuggestions?: ISearchProductViewProps,\n isLoadingAutoSuggest?: boolean,\n isLoadingNode?: React.ReactNode\n): JSX.Element => {\n const liProduct: INodeProps = {\n tag: 'li',\n className: 'msc-no-result-content'\n };\n return productSuggestions ? (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {isLoadingAutoSuggest && isLoadingNode}\n {!isLoadingAutoSuggest &&\n productSuggestions.items.map((item, index) => {\n return (\n \n \n {item.thumbnail}\n {item.text}\n {item.price}\n \n \n );\n })}\n \n \n ) : (\n \n {renderProductSuggestionsTitle(props.resources.productSuggestionHeading)}\n \n {renderProductNotFoundResults(props)}\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 { StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { ISearchData, ISearchFormViewProps, ISearchViewProps } from '@msdyn365-commerce-modules/search';\nimport { Button, format, isMobile, Module, Node, VariantType } from '@msdyn365-commerce-modules/utilities';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { ISearchProps } from '../definition-extensions/search.ext.props.autogenerated';\nimport { CategorySuggestionsComponent } from './components/search.categorysuggest';\nimport { FormComponent } from './components/search.form';\nimport { KeywordSuggestionsComponent } from './components/search.keywordsuggest';\nimport { ProductSuggestionsComponent } from './components/search.productsuggest';\n\n/**\n * Render Title for AutoSuggest.\n * @param searchSuggestionHeading -The heading resource string.\n * @param searchText -The search string.\n * @returns -The JSX Element.\n */\nconst renderTitle = (searchSuggestionHeading: string, searchText: string): JSX.Element => {\n const searchTextString = '\"'.concat(searchText.concat('\"'));\n const searchAutoSuggestionHeading = searchSuggestionHeading\n ? format(searchSuggestionHeading, searchTextString)\n : `Search for ${searchTextString}`;\n\n return {searchAutoSuggestionHeading};\n};\n\n/**\n * Search View.\n * @param props - The view props.\n * @returns The JSX Element.\n */\nconst SearchView: React.FC> = (\n props: ISearchViewProps & ISearchProps\n): JSX.Element => {\n const {\n Search,\n AutoSuggestAriaLabel,\n AutoSuggestAriaLabelText,\n searchText,\n AutoSuggest,\n KeywordSuggest,\n ProductSuggest,\n UlKeyword,\n UlProduct,\n form,\n autosuggestKeyword,\n autosuggestProduct,\n SearchForm,\n FormWrapper,\n label,\n context,\n isLoadingAutoSuggest,\n isLoadingNode,\n callbacks: { handleCancelSearchFocused }\n } = props;\n\n const { searchSuggestionHeading, categorySuggestionHeading, keywordsHeading, noResultText, clearSearchButtonText } = props.resources;\n\n const [searchTextString, setSearchTextString] = useState();\n const [isMobilePort, setIsMobile] = useState(false);\n\n useEffect(() => {\n setSearchTextString(searchText);\n }, [searchText]);\n\n /**\n * ClearSearch callback method to clear search string.\n */\n const clearSearch = (): void => {\n setSearchTextString('');\n\n const propsForm = props.form as ISearchFormViewProps;\n const propsFormInput = propsForm.input as React.DetailedHTMLProps, HTMLInputElement>;\n const propsFormInputCurrent = (propsFormInput.ref as React.RefObject).current;\n\n if (propsFormInputCurrent) {\n propsFormInputCurrent.value = '';\n }\n\n propsFormInput.value = '';\n props.searchText = '';\n props.FormWrapper.action = '';\n };\n\n const isMobileViewport = useCallback(() => {\n const isMobileView = isMobile({ variant: VariantType.Browser, context: context.request }) === 'xs';\n setIsMobile(isMobileView);\n }, [context]);\n\n useEffect(() => {\n window.addEventListener('resize', isMobileViewport);\n isMobileViewport();\n }, [isMobileViewport]);\n\n const viewport = isMobile({ variant: VariantType.Browser, context: context.request });\n\n const isMobileView = viewport === 'sm' || viewport === 'xs';\n\n AutoSuggest.className = !StringExtensions.isNullOrEmpty(searchTextString)\n ? `${AutoSuggest.className} show`\n : `${AutoSuggest.className} hide`;\n const isSearchText: boolean = !StringExtensions.isNullOrEmpty(searchTextString);\n\n return (\n \n {label}\n {FormComponent(\n form as ISearchFormViewProps,\n SearchForm,\n FormWrapper,\n isMobilePort,\n clearSearchButtonText,\n props,\n isSearchText,\n clearSearch\n )}\n {!isMobileView && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n \n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n {isMobileView && props.isSearchFormExpanded && (\n \n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n {AutoSuggestAriaLabelText}\n ) : (\n ''\n )}\n {!StringExtensions.isNullOrEmpty(searchTextString) ? (\n <>\n \n {(form as ISearchFormViewProps).cancelBtn}\n {renderTitle(searchSuggestionHeading, searchText)}\n \n \n \n {CategorySuggestionsComponent(\n categorySuggestionHeading,\n noResultText,\n props,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n {KeywordSuggestionsComponent(\n KeywordSuggest,\n UlKeyword,\n keywordsHeading,\n noResultText,\n autosuggestKeyword,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n {ProductSuggestionsComponent(\n ProductSuggest,\n UlProduct,\n props,\n autosuggestProduct,\n isLoadingAutoSuggest,\n isLoadingNode\n )}\n \n \n ) : null}\n \n )}\n \n );\n};\nexport default SearchView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductType, SalesAgreementPriceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { Button, format, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n salesAgreementPricePrompt?: string;\r\n salesAgreementExpirationDatePrompt?: string;\r\n salesAgreementCommittedQuantityPrompt?: string;\r\n salesAgreementRemainingQuantityPrompt?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n product?: SimpleProduct;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n isSalesAgreementPriceFeatureEnabled?: boolean;\r\n salesAgreementLineId?: number;\r\n priceResources?: IPriceComponentResources;\r\n salesAgreementDetailCollapseProps?: ICollapseProps;\r\n currencyCode?: string;\r\n salesAgreementDetailOnClick?(event: React.MouseEvent | React.KeyboardEvent): void;\r\n}\r\nexport interface IPriceComponent extends IComponent {}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Get the original price from price component props.\r\n * @param props - The IPriceComponentProps.\r\n * @returns The original price.\r\n */\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return props.data.price.AdjustedPrice ?? props.data.price.TradeAgreementPrice ?? props.data.price.BasePrice ?? defaultPrice;\r\n};\r\nconst getActivePrice = (props: IPriceComponentProps): number => {\r\n if (showPriceRangeForMasterProduct(props) && props.data.price.MinVariantPrice !== undefined) {\r\n return props.data.price.MinVariantPrice;\r\n }\r\n if (props.data.price.CustomerContextualPrice !== undefined) {\r\n return props.data.price.CustomerContextualPrice;\r\n }\r\n return getOriginalPrice(props);\r\n};\r\n\r\n/**\r\n * Get the formatted currency.\r\n * @param props - The props.\r\n * @param price - The price.\r\n * @param showCC\r\n * @returns The formatted currency.\r\n */\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, showCC:boolean): string => {\r\n if (price === undefined || price === freePrice) return '';\r\n const currencyCode = props.currencyCode || props.data.price.CurrencyCode || null;\r\n if(currencyCode){\r\n return _cultureFormatter(props, price, currencyCode, showCC);\r\n } else {\r\n //check the Extension Properties or else return null (and kill the object)\r\n if(props.data.price?.ExtensionProperties){\r\n const _cc = props.data.price.ExtensionProperties.find((element) => (element.Key === 'CurrencyCode' && element.Value && element.Value.StringValue));\r\n if(_cc !== undefined && _cc.Value && _cc.Value.StringValue){\r\n return _cultureFormatter(props, price, _cc.Value.StringValue.trim(), showCC);\r\n }\r\n }\r\n return '';\r\n }\r\n //return props.context.cultureFormatter.formatCurrency(price, currencyCode) + (showCC ? ' '+ currencyCode: '');\r\n};\r\nconst _cultureFormatter = (props: IPriceComponentProps, price: number, currencyCode:string, showCC:boolean):string => {\r\n return props.context.cultureFormatter.formatNumber(price,{\r\n style:\"currency\",\r\n currency:currencyCode,\r\n minimumFractionDigits: 0\r\n }) + (showCC ? ' '+ currencyCode: '');\r\n}\r\n\r\nconst showPriceRangeForMasterProduct = (props: IPriceComponentProps): boolean => {\r\n return (\r\n (props.isPriceMinMaxEnabled ?? false) &&\r\n (props.product?.ProductTypeValue === ProductType.Master || props.product?.ProductTypeValue === ProductType.KitMaster) &&\r\n props.data.price.MinVariantPrice !== undefined &&\r\n props.data.price.MaxVariantPrice !== undefined\r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalSalesPrice = getOriginalPrice(props);\r\n const activeSalesPrice = showPriceRangeForMasterProduct(props)\r\n ? props.data.price.MinVariantPrice\r\n : props.data.price.CustomerContextualPrice;\r\n\r\n if (activeSalesPrice && originalSalesPrice) {\r\n return activeSalesPrice < originalSalesPrice;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Render current price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n if (\r\n props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice\r\n ) {\r\n return (\r\n {\r\n formatCurrency(props, props.data.price.MinVariantPrice, false) +\r\n props.priceResources?.priceRangeSeparator +\r\n formatCurrency(props, props.data.price.MaxVariantPrice, true)\r\n }\r\n );\r\n }\r\n return (\r\n \r\n {formatCurrency(props, getActivePrice(props), true)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render active sales price with original sales price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, getOriginalPrice(props), true);\r\n\r\n return (\r\n <>\r\n \r\n {` `}\r\n {props.originalPriceText}\r\n {` `}\r\n {initialPrice}\r\n {` `}\r\n {props.currentPriceText}\r\n {` `}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && {props.savingsText}}\r\n \r\n );\r\n};\r\nconst renderSalesAgreementDetail = (props: IPriceComponentProps): JSX.Element => {\r\n // In most cases there should be only one sales agreement line.\r\n // If there are more than one, only the first one will be shown.\r\n const firstPriceLine: SalesAgreementPriceLine = (props.data.price.AttainablePriceLines ?? [])[0] as SalesAgreementPriceLine;\r\n return (\r\n

    \r\n

    \r\n {/* Available date */}\r\n {` · ${format(\r\n props.priceResources?.salesAgreementExpirationDatePrompt ?? '',\r\n props.context.cultureFormatter.formatDate(firstPriceLine.EffectiveDate as Date),\r\n props.context.cultureFormatter.formatDate(firstPriceLine.ExpirationDate as Date)\r\n )}`}\r\n

    \r\n

    \r\n {/* Quantity commitment */}\r\n {` · ${format(props.priceResources?.salesAgreementCommittedQuantityPrompt ?? '', firstPriceLine.CommittedQuantity)}`}\r\n

    \r\n

    \r\n {/* Remaining quantity to qualify */}\r\n {` · ${format(props.priceResources?.salesAgreementRemainingQuantityPrompt ?? '', firstPriceLine.RemainingQuantity)}`}\r\n

    \r\n

    \r\n );\r\n};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) return null;\r\n\r\n // Determine if contract price is avaiable/applied by:\r\n // isFeatureEnabled and SA price != 0, for PDP.\r\n // SA line id != 0, for cart line.\r\n if (props.isSalesAgreementPriceFeatureEnabled && props.data.price.SalesAgreementPrice !== 0) {\r\n const [isExpanded, setIsExpanded] = React.useState(false);\r\n const toggle = () => {\r\n setIsExpanded(!isExpanded);\r\n };\r\n return (\r\n \r\n \r\n

    \r\n {formatCurrency(props, props.data.price.SalesAgreementPrice ?? props.data.price.CustomerContextualPrice, true)}\r\n

    \r\n \r\n {props.priceResources?.salesAgreementPricePrompt}\r\n \r\n {isExpanded && renderSalesAgreementDetail(props)}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * The PriceComponent.\r\n */\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride('Price', {\r\n component: Price,\r\n ...priceComponentActions\r\n});\r\n\r\nexport default PriceComponent;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node, Waiting } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutViewProps, ILineItem, ILineItemDeliveryGroup, ILineItems, IOrderSummary, IPickUpAtStore } from './checkout';\nimport { IEmailDelivery } from './components';\nimport { IInvoicePaymentSummary } from './components/get-invoice-payment-summary';\n\nexport const PickUpAtStoreComponent: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const EmailDeliveryComponent: React.FC = ({ EmailDelivery, label }) => {label};\n\nexport const LineItemComponent: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {pickUpAtStore && }\n {emailDelivery && }\n \n);\n\nexport const LineItemGroupComponent: React.FC = ({ LineItemDeliveryGroup, LineItemList, heading, lineItems }) => (\n \n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemGroupComponentWithMultiplePickUp: React.FC = ({\n LineItemDeliveryGroup,\n LineItemList,\n heading,\n lineItems,\n lineItemWraper,\n lineItemWraperIcon\n}) => (\n \n {lineItemWraperIcon}\n {lineItemWraper}\n {heading}\n \n {lineItems.map(lineItem => (\n \n ))}\n \n \n);\n\nexport const LineItemComponentWithMultiplePickUp: React.FC = ({ LineItem, item, pickUpAtStore, emailDelivery }) => (\n \n {item}\n {emailDelivery && }\n \n);\n\nexport const PickUpAtStoreComponentWithMultiplePickUp: React.FC = ({ PickUpAtStore, label, location }) => (\n \n {label}\n {location}\n \n);\n\nexport const LineItemsComponent: React.FC = ({\n LineItems,\n Header,\n heading,\n editLink,\n itemsForPickup,\n itemsForShip,\n itemsForEmail,\n itemsGroupWithMulitplePickupMode\n}) => (\n \n \n {heading}\n {editLink}\n \n {itemsGroupWithMulitplePickupMode === undefined && itemsForPickup && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForEmail && }\n {itemsGroupWithMulitplePickupMode === undefined && itemsForShip && }\n {itemsGroupWithMulitplePickupMode !== undefined\n ? itemsGroupWithMulitplePickupMode.map((item, index) => {\n return ;\n })\n : null}\n \n);\n\nconst OrderSummaryComponent: React.FC = ({ heading, lines }) => (\n
    \n {heading}\n
    \n {lines && (\n <>\n {lines.subtotal}\n {lines.shipping}\n {lines.otherCharge}\n {lines.tax}\n {lines.totalDiscounts}\n {lines.loyalty}\n {lines.customerAccount}\n {lines.giftCard}\n {lines.orderTotal}\n \n )}\n
    \n
    \n);\n\nconst PaymentSummaryComponent: React.FC = ({ heading, lines }) => (\n
    \n {heading}\n
    \n {lines && (\n <>\n {lines.invoices}\n {lines.giftCard}\n {lines.loyalty}\n {lines.orderTotal}\n \n )}\n
    \n
    \n);\n\nconst CheckoutView: React.FC = props => {\n const {\n isPaymentVerificationRedirection,\n shouldEnableSinglePaymentAuthorizationCheckout,\n canShow,\n checkoutProps,\n headerProps,\n hasSalesOrder,\n hasInvoiceLine,\n bodyProps,\n mainProps,\n mainControlProps,\n sideProps,\n sideControlFirstProps,\n sideControlSecondProps,\n termsAndConditionsProps,\n orderConfirmation,\n loading,\n alert,\n title,\n guidedForm,\n orderSummary,\n invoicePaymentSummary,\n lineItems,\n placeOrderButton,\n termsAndConditions,\n keepShoppingButton,\n checkoutExpressPaymentContainer,\n checkoutErrorRef\n } = props;\n\n return (\n \n {!hasSalesOrder && !checkoutExpressPaymentContainer && {title}}\n {!hasSalesOrder && isPaymentVerificationRedirection && shouldEnableSinglePaymentAuthorizationCheckout && !alert && !loading && (\n \n )}\n {!hasSalesOrder && (\n \n {loading}\n {alert}\n {canShow && (\n <>\n \n {checkoutExpressPaymentContainer}\n {checkoutExpressPaymentContainer && {title}}\n {guidedForm}\n {termsAndConditions}\n \n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n {!hasInvoiceLine\n ? orderSummary && \n : invoicePaymentSummary && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n {lineItems && }\n \n {termsAndConditions}\n {placeOrderButton}\n {keepShoppingButton}\n \n \n \n )}\n \n )}\n {hasSalesOrder && orderConfirmation}\n \n );\n};\n\nexport default CheckoutView;\n","/*--------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * See License.txt in the project root for license information.\r\n *--------------------------------------------------------------*/\r\n\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice } from '@msdyn365-commerce/retail-proxy';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n priceResources?: IPriceComponentResources;\r\n}\r\nexport interface IPriceComponent extends IComponent {\r\n}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalPrice = getOriginalPrice(props);\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n return props.data.price.MinVariantPrice < originalPrice;\r\n }\r\n\r\n if (originalPrice && props.data.price.CustomerContextualPrice) {\r\n return originalPrice > props.data.price.CustomerContextualPrice;\r\n }\r\n\r\n return false;\r\n};\r\n\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return Math.max(\r\n props.data.price.BasePrice ?? defaultPrice,\r\n props.data.price.TradeAgreementPrice ?? defaultPrice,\r\n props.data.price.AdjustedPrice ?? defaultPrice\r\n );\r\n};\r\n\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, shouldUseFreePriceText: boolean | undefined): string => {\r\n if (price === undefined) {\r\n return '';\r\n }\r\n\r\n if (shouldUseFreePriceText && price === freePrice && props.freePriceText) {\r\n return '';\r\n //return props.freePriceText;\r\n }\r\n\r\n let _price: any = props.context.cultureFormatter.formatCurrency(price);\r\n let _symbol: string = _price.replace(/[\\d\\., ]/g, ''); //get symbol from price\r\n _price = _price.replace(/[^0-9\\.-]+/g,\"\"); //remove symbol from price\r\n _price = _price %1 != 0 ? _price : Number(_price);\r\n _price = _price.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\n return _symbol + \"\" + _price;\r\n //return props.context.cultureFormatter.formatCurrency(price);\r\n};\r\n\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, props.data.price.CustomerContextualPrice, true);\r\n const maxVariantPrice: string = formatCurrency(props, props.data.price.MaxVariantPrice, false);\r\n const minVariantPrice: string = formatCurrency(props, props.data.price.MinVariantPrice, false);\r\n let _currencyCode: string = '';\r\n if(props.data.price?.ExtensionProperties != undefined){\r\n props.data.price?.ExtensionProperties?.forEach((element) => {\r\n if (element.Key == 'CurrencyCode' && element.Value?.StringValue != '' && element.Value?.StringValue != undefined) {\r\n _currencyCode = element.Value?.StringValue;\r\n }\r\n })\r\n }\r\n\r\n if (props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice) {\r\n //MS Code\r\n return (\r\n \r\n {' '}\r\n \r\n {minVariantPrice}\r\n \r\n \r\n {props.priceResources?.priceRangeSeparator}\r\n \r\n \r\n {maxVariantPrice}\r\n \r\n {_currencyCode}\r\n \r\n );\r\n }\r\n return (\r\n {initialPrice + ' ' + _currencyCode}\r\n );\r\n};\r\n\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const originalPrice: number = getOriginalPrice(props);\r\n const initialPrice: string = formatCurrency(props, originalPrice, true);\r\n\r\n return (\r\n <>\r\n \r\n {' '}\r\n {props.originalPriceText}\r\n {' '}\r\n {initialPrice}\r\n {' '}\r\n {props.currentPriceText}\r\n {' '}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && \r\n {props.savingsText}\r\n }\r\n \r\n );\r\n};\r\n\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride(\r\n 'Price',\r\n { component: Price, ...priceComponentActions }\r\n);\r\n\r\n\r\nexport default PriceComponent;","/*!\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","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\nimport { IComponent, IComponentProps, msdyn365Commerce } from '@msdyn365-commerce/core';\r\nimport { ProductPrice, ProductType, SalesAgreementPriceLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { Button, format, ICollapseProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\n\r\nconst defaultPrice: number = 0;\r\nconst freePrice: number = 0;\r\n\r\n/**\r\n * Interface for price component resources.\r\n * @param {string} priceRangeSeparator - The price range separator.\r\n */\r\nexport interface IPriceComponentResources {\r\n priceRangeSeparator?: string;\r\n salesAgreementPricePrompt?: string;\r\n salesAgreementExpirationDatePrompt?: string;\r\n salesAgreementCommittedQuantityPrompt?: string;\r\n salesAgreementRemainingQuantityPrompt?: string;\r\n}\r\n\r\n/**\r\n * Interface for price component props.\r\n * @param {boolean} isPriceMinMaxEnabled - Whether the price range feature is enabled or not.\r\n * @param {IPriceComponentResources} priceResources - The price range resources.\r\n */\r\nexport interface IPriceComponentProps extends IComponentProps<{ price: ProductPrice }> {\r\n className?: string;\r\n product?: SimpleProduct;\r\n savingsText?: string;\r\n freePriceText?: string;\r\n originalPriceText?: string;\r\n currentPriceText?: string;\r\n isPriceMinMaxEnabled?: boolean;\r\n isSalesAgreementPriceFeatureEnabled?: boolean;\r\n salesAgreementLineId?: number;\r\n priceResources?: IPriceComponentResources;\r\n salesAgreementDetailCollapseProps?: ICollapseProps;\r\n currencyCode?: string;\r\n salesAgreementDetailOnClick?(event: React.MouseEvent | React.KeyboardEvent): void;\r\n}\r\nexport interface IPriceComponent extends IComponent {}\r\n\r\nconst priceComponentActions = {};\r\n\r\n/**\r\n * Get the original price from price component props.\r\n * @param props - The IPriceComponentProps.\r\n * @returns The original price.\r\n */\r\nconst getOriginalPrice = (props: IPriceComponentProps): number => {\r\n return props.data.price.AdjustedPrice ?? props.data.price.TradeAgreementPrice ?? props.data.price.BasePrice ?? defaultPrice;\r\n};\r\nconst getActivePrice = (props: IPriceComponentProps): number => {\r\n if (showPriceRangeForMasterProduct(props) && props.data.price.MinVariantPrice !== undefined) {\r\n return props.data.price.MinVariantPrice;\r\n }\r\n if (props.data.price.CustomerContextualPrice !== undefined) {\r\n return props.data.price.CustomerContextualPrice;\r\n }\r\n return getOriginalPrice(props);\r\n};\r\n\r\n/**\r\n * Get the formatted currency.\r\n * @param props - The props.\r\n * @param price - The price.\r\n * @param showCC\r\n * @returns The formatted currency.\r\n */\r\nconst formatCurrency = (props: IPriceComponentProps, price: number | undefined, showCC:boolean): string => {\r\n if (price === undefined || price === freePrice) return '';\r\n const currencyCode = props.currencyCode || props.data.price.CurrencyCode || null;\r\n if(currencyCode){\r\n return _cultureFormatter(props, price, currencyCode, showCC);\r\n } else {\r\n\t\t//check the Extension Properties or else return null (and kill the object)\r\n\t\tif(props.data.price?.ExtensionProperties){\r\n\t\t\tconst _cc = props.data.price.ExtensionProperties.find((element) => (element.Key === 'CurrencyCode' && element.Value && element.Value.StringValue));\r\n\t\t\tif(_cc !== undefined && _cc.Value && _cc.Value.StringValue){\r\n\t\t\t\treturn _cultureFormatter(props, price, _cc.Value.StringValue.trim(), showCC);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn '';\r\n\t}\r\n //return props.context.cultureFormatter.formatCurrency(price, currencyCode) + (showCC ? ' '+ currencyCode: '');\r\n};\r\nconst _cultureFormatter = (props: IPriceComponentProps, price: number, currencyCode:string, showCC:boolean):string => {\r\n return props.context.cultureFormatter.formatNumber(price,{\r\n style:\"currency\",\r\n currency:currencyCode,\r\n minimumFractionDigits: 0\r\n }) + (showCC ? ' '+ currencyCode: '');\r\n}\r\n\r\nconst showPriceRangeForMasterProduct = (props: IPriceComponentProps): boolean => {\r\n return (\r\n (props.isPriceMinMaxEnabled ?? false) &&\r\n (props.product?.ProductTypeValue === ProductType.Master || props.product?.ProductTypeValue === ProductType.KitMaster) &&\r\n props.data.price.MinVariantPrice !== undefined &&\r\n props.data.price.MaxVariantPrice !== undefined\r\n );\r\n};\r\n\r\n/**\r\n * ShowStrikethroughPricing.\r\n * @param props - The props.\r\n * @returns True if showStrikethroughPricing, false otherwise.\r\n */\r\nconst showStrikethroughPricing = (props: IPriceComponentProps): boolean => {\r\n const originalSalesPrice = getOriginalPrice(props);\r\n const activeSalesPrice = showPriceRangeForMasterProduct(props)\r\n ? props.data.price.MinVariantPrice\r\n : props.data.price.CustomerContextualPrice;\r\n\r\n if (activeSalesPrice && originalSalesPrice) {\r\n return activeSalesPrice < originalSalesPrice;\r\n }\r\n return false;\r\n};\r\n\r\n/**\r\n * Render current price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPrice = (props: IPriceComponentProps): JSX.Element => {\r\n if (\r\n props.isPriceMinMaxEnabled &&\r\n props.data.price.MaxVariantPrice &&\r\n props.data.price.MinVariantPrice &&\r\n props.data.price.MaxVariantPrice > props.data.price.MinVariantPrice\r\n ) {\r\n return (\r\n {\r\n formatCurrency(props, props.data.price.MinVariantPrice, false) +\r\n props.priceResources?.priceRangeSeparator +\r\n formatCurrency(props, props.data.price.MaxVariantPrice, true)\r\n }\r\n );\r\n }\r\n return (\r\n \r\n {formatCurrency(props, getActivePrice(props), true)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Render active sales price with original sales price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst renderCurrentPriceWithOriginalPrice = (props: IPriceComponentProps): JSX.Element => {\r\n const initialPrice: string = formatCurrency(props, getOriginalPrice(props), true);\r\n\r\n return (\r\n <>\r\n \r\n {` `}\r\n {props.originalPriceText}\r\n {` `}\r\n {initialPrice}\r\n {` `}\r\n {props.currentPriceText}\r\n {` `}\r\n {renderCurrentPrice(props)}\r\n \r\n \r\n \r\n {props.savingsText && {props.savingsText}}\r\n \r\n );\r\n};\r\nconst renderSalesAgreementDetail = (props: IPriceComponentProps): JSX.Element => {\r\n // In most cases there should be only one sales agreement line.\r\n // If there are more than one, only the first one will be shown.\r\n const firstPriceLine: SalesAgreementPriceLine = (props.data.price.AttainablePriceLines ?? [])[0] as SalesAgreementPriceLine;\r\n return (\r\n

    \r\n

    \r\n {/* Available date */}\r\n {` · ${format(\r\n props.priceResources?.salesAgreementExpirationDatePrompt ?? '',\r\n props.context.cultureFormatter.formatDate(firstPriceLine.EffectiveDate as Date),\r\n props.context.cultureFormatter.formatDate(firstPriceLine.ExpirationDate as Date)\r\n )}`}\r\n

    \r\n

    \r\n {/* Quantity commitment */}\r\n {` · ${format(props.priceResources?.salesAgreementCommittedQuantityPrompt ?? '', firstPriceLine.CommittedQuantity)}`}\r\n

    \r\n

    \r\n {/* Remaining quantity to qualify */}\r\n {` · ${format(props.priceResources?.salesAgreementRemainingQuantityPrompt ?? '', firstPriceLine.RemainingQuantity)}`}\r\n

    \r\n

    \r\n );\r\n};\r\n\r\n/**\r\n * Price.\r\n * @param props - The props.\r\n * @returns The JSX.Element.\r\n */\r\nconst Price: React.FC = (props: IPriceComponentProps): JSX.Element | null => {\r\n // CustomerContextualPrice could be zero\r\n if (props.data.price.CustomerContextualPrice === undefined) return null;\r\n\r\n // Determine if contract price is avaiable/applied by:\r\n // isFeatureEnabled and SA price != 0, for PDP.\r\n // SA line id != 0, for cart line.\r\n if (props.isSalesAgreementPriceFeatureEnabled && props.data.price.SalesAgreementPrice !== 0) {\r\n const [isExpanded, setIsExpanded] = React.useState(false);\r\n const toggle = () => {\r\n setIsExpanded(!isExpanded);\r\n };\r\n return (\r\n \r\n \r\n

    \r\n {formatCurrency(props, props.data.price.SalesAgreementPrice ?? props.data.price.CustomerContextualPrice, true)}\r\n

    \r\n \r\n {props.priceResources?.salesAgreementPricePrompt}\r\n \r\n {isExpanded && renderSalesAgreementDetail(props)}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n \r\n {showStrikethroughPricing(props) ? renderCurrentPriceWithOriginalPrice(props) : renderCurrentPrice(props)}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * The PriceComponent.\r\n */\r\nexport const PriceComponent: React.FunctionComponent = msdyn365Commerce.createComponentOverride('Price', {\r\n component: Price,\r\n ...priceComponentActions\r\n});\r\n\r\nexport default PriceComponent;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IModuleProps, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IReviewModalViewProps } from '../../common/review-modal';\nimport { IReportReviewModalViewProps } from './components/report-review-modal';\nimport { IReviewCardViewProps } from './components/review-card';\nimport { IReviewsListState, IReviewsListViewProps } from './reviews-list';\n\nconst ReviewsListview: React.FC = props => {\n const {\n averageRating,\n filterByDropdown,\n heading,\n moduleProps,\n noReviewsMessage,\n noReviewsWithFilterMessage,\n pageControls,\n refineReviewsProps,\n reportReviewModal,\n reviewsListProps,\n reviewCards,\n reviewCount,\n reviewModal,\n sortByDropdown,\n state,\n userReview\n } = props;\n\n if (!userReview && reviewCards.length === 0 && !state.isFilterApplied) {\n return {noReviewsMessage};\n }\n\n return (\n \n {heading}\n {averageRating}\n {reviewCount}\n \n {sortByDropdown}\n {filterByDropdown}\n \n \n {userReview && buildReviewCard(userReview)}\n {reviewCards.map(review => {\n return buildReviewCard(review);\n })}\n \n {reviewCards.length === 0 && state.isFilterApplied && noReviewsWithFilterMessage}\n {pageControls}\n {createReviewModal(reviewModal, moduleProps)}\n {createReportModal(reportReviewModal, state)}\n \n );\n};\n\nconst buildReviewCard = (props: IReviewCardViewProps) => {\n return (\n \n \n {props.rating}\n {props.name}\n \n \n \n {props.reviewTitle}\n {props.date}\n {props.reviewText}\n \n \n {props.responseName}\n {props.responseDate}\n {props.responseText}\n \n \n {props.ratingHelpfulLabel}\n {props.like}\n {props.dislike}\n {props.edit}\n {props.report}\n \n \n \n );\n};\n\nconst createReviewModal = (props: IReviewModalViewProps, moduleProps: IModuleProps): JSX.Element => {\n return (\n \n {props.modalHeader}\n \n \n \n {props.rating}\n {props.ratingLabel}\n \n \n {props.titleLabel}\n {props.titleInput}\n \n \n {props.textLabel}\n {props.textInput}\n \n {props.privacyPolicyUrl}\n {props.error}\n \n \n \n {props.submitButton}\n {props.cancelButton}\n \n \n );\n};\n\nconst createReportModal = (props: IReportReviewModalViewProps, state: IReviewsListState): JSX.Element => {\n return (\n \n {state.reported ? props.headerSubmitted : props.header}\n \n {state.reported ? props.reportSubmittedMessage : [props.reportMessage, props.radioButtons, props.error]}\n \n {state.reported ? props.succesfulButton : [props.submitButton, props.cancelButton]}\n \n );\n};\n\nexport default ReviewsListview;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ISignInItem,\n ISignInLoading,\n ISignInLocalAccount,\n ISignInSocialAccount,\n ISignInSocialItem,\n ISignInB2BAccount,\n ISignInB2BItem,\n ISignInViewProps,\n ISignInButton\n} from '@msdyn365-commerce-modules/account-management';\n\nimport { ISignInProps, ISignInResources } from '../definition-extensions/sign-in.ext.props.autogenerated';\n\nconst LocalAccount: React.FC = ({ localAccount, items, forgetPassword, disclaimer, error, signInButton }) => {\n return (\n \n {items &&\n items.map((item: ISignInItem) => {\n return (\n \n {item.label}\n {item.error}\n {item.input}\n \n );\n })}\n {forgetPassword}\n {disclaimer}\n {error}\n {signInButton}\n \n );\n};\n\nconst SocialAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInSocialItem) => {\n return (\n \n {item.image}\n {item.text}\n \n );\n })}\n \n );\n};\n\nconst B2BAccount: React.FC = ({ socialAccounts, items }) => {\n return (\n \n {items &&\n items.map((item: ISignInB2BItem) => {\n return (\n item && (\n \n {item.text}\n \n )\n );\n })}\n \n );\n};\n\nconst SignInLoading: React.FC = ({ modal, modalBody, icon, message }) => {\n return (\n \n \n {icon}\n {message}\n \n \n );\n};\nconst SignInButton: React.FC = ({ id, className, text, ariaLabel, telemetryContent, onClick }) => {\n const payLoad = getPayloadObject('click', telemetryContent!, text);\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n return (\n \n {text}\n \n );\n};\n\nconst signUpButton: React.FC> = (\n props: ISignInViewProps & ISignInProps\n) => {\n const {\n resources,\n telemetry,\n friendlyName,\n context: {\n request: { telemetryPageName }\n }\n } = props;\n const telemetryContent = getTelemetryObject(telemetryPageName!, friendlyName, telemetry);\n const attributes = {\n href: '#'\n };\n\n return (\n \n );\n};\n\nconst SignInView: React.FC> = props => {\n const {\n signIn,\n viewState,\n loading,\n defaultAADConainer,\n aadConainer,\n signInSection,\n signUpSection,\n signInSectionHeading,\n signInLocalAccount,\n signInSocialAccount,\n signUpSectionHeading,\n signInB2BAccount,\n signUpDescription\n } = props;\n\n return (\n \n {viewState.isShowLoading && }\n {viewState.isShowLoading && }\n \n \n {signInSectionHeading}\n {LocalAccount(signInLocalAccount)}\n {SocialAccount(signInSocialAccount)}\n \n \n {signUpSectionHeading}\n {signUpDescription}\n {signUpButton(props)}\n \n
    \n
    \n or\n
    \n {B2BAccount(signInB2BAccount)}\n
    \n
    \n
    \n );\n};\n\nexport default SignInView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutSectionContainerItem, ICheckoutSectionContainerViewProps } from './checkout-section-container';\n\nconst ItemComponent: React.FC = ({ loading, itemProps, item }) => (\n <>\n {loading}\n {item}\n \n);\n\nconst CheckoutSectionContainerView: React.FC = ({ checkoutPlainContainerProps, items }) => (\n \n {items.map(item => (\n \n ))}\n \n);\n\nexport default CheckoutSectionContainerView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHelp, IOrderSummary, IPaymentMethods } from '../../common';\nimport { IGroup, IGroupDelivery, IGroups } from '../../common/get-groups';\nimport { IOrderInformation } from '../../common/get-order-information';\nimport { ISalesLine } from '../../common/get-sales-line';\nimport { IOrderConfirmationViewProps } from './order-confirmation';\n\nexport const OrderConfirmationOrderInfomation: React.FC = ({\n orderInformationProps,\n receiptEmail,\n createdDate,\n channelReferenceId\n}) => (\n \n {createdDate}\n {channelReferenceId}\n {receiptEmail}\n \n);\n\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\n {salesLine}\n);\n\nexport const OrderConfirmationGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n trackingInfo,\n pickupDateTimeslot\n}) => (\n \n {heading}\n {address}\n {pickupDateTimeslot}\n \n);\n\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {delivery && }\n {delivery && delivery.shippingItemsToYou}\n {salesLines && (\n \n {salesLines.map((salesLine: ISalesLine) => (\n \n ))}\n \n )}\n \n);\n\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group: IGroup, index: number) => (\n \n ))}\n \n);\n\nexport const OrderConfirmationOrderSummary: 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 OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderConfirmationView: React.FC = ({\n moduleProps,\n heading,\n backToShoppingLink,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {backToShoppingLink}\n {groups && }\n {payment && }\n {orderSummary && }\n {help && }\n \n );\n};\n\nexport default OrderConfirmationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IAddressAddItem, IAddressAddUpdateProps } from '../../common/components/address-add';\nimport { IAddressShowItem, IAddressShowProps } from '../../common/components/address-show';\nimport { ICheckoutBillingAddressViewProps } from './checkout-billing-address';\n\n/**\n * Address show component.\n * @param param0 - Root param.\n * @param param0.AddressDetail - Address detail.\n * @param param0.items - IAddressShowItem[].\n * @returns - Address Node.\n */\nconst AddressShow: React.FC = ({ AddressDetail, items }) => {\n return (\n \n {items.map((item: IAddressShowItem) => {\n return <>{item.description};\n })}\n \n );\n};\n\n/**\n * Address Add Update Component.\n * @param param0 - Root param.\n * @param param0.AddressForm - Address form.\n * @param param0.heading - Address Heading.\n * @param param0.items - IAddressAddItem[].\n * @param param0.hasError - Boolean.\n * @param param0.error - IAddressError.\n * @param param0.isShowSaveButton - Boolean.\n * @param param0.saveButton - Save button.\n * @param param0.isShowCancelButton - Boolean.\n * @param param0.cancelButton - Cancel button.\n * @returns - AddressForm Node.\n */\nconst AddressAddUpdate: React.FC = ({\n AddressForm,\n heading,\n items,\n hasError,\n error,\n isShowSaveButton,\n saveButton,\n isShowCancelButton,\n cancelButton\n}) => {\n return (\n \n {heading}\n {items.map((item: IAddressAddItem) => {\n const { AddressItem, key, label, alert, input } = item;\n return (\n \n {label}\n {alert}\n {input}\n \n );\n })}\n {hasError && (\n \n {error.title}\n {error.message}\n \n )}\n {isShowSaveButton && saveButton}\n {isShowCancelButton && cancelButton}\n \n );\n};\n\n/**\n * Checkout Billing Address View Component.\n * @param props - Props.\n * @returns - CheckoutBillingAddress Module.\n */\nconst CheckoutBillingAddressView: React.FC = props => {\n const {\n CheckoutBillingAddress,\n checkoutErrorRef,\n alert,\n viewState,\n heading,\n sameAsShippingCheckbox,\n showAddress,\n showAddOrUpdateAddress\n } = props;\n\n return (\n \n {heading}\n {alert}\n {viewState.isShowSameAsShippingCheckbox && sameAsShippingCheckbox}\n {viewState.isShowAddress && }\n {viewState.isShowAddOrUpdateAddress && }\n \n );\n};\n\nexport default CheckoutBillingAddressView;\n","import * as React from 'react';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport { IInstrumentBlockViewProps } from './instrument-block';\r\n\r\nconst ContentBlockView: React.FC = props => {\r\n const {\r\n\t\tmainHeading,\r\n\t\tmainImage,\r\n\t\tcolumns,\r\n\t\tinstrumentBlockContainer,\r\n\t\timageContainer\r\n } = props;\r\n\r\n return (\r\n\t\t\r\n\t\t\t{mainHeading}\r\n\t\t\t{mainImage}\r\n\t\t\t{columns}\r\n\t\t\r\n\t);\r\n};\r\nexport default ContentBlockView;","/*!\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 { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IForm, IItem } from './components';\nimport { IGiftCardBalanceCheckViewProps } from './gift-card-balance-check';\n\nexport const Form: React.FC = ({\n formProps,\n label,\n inputPinLabel,\n inputExpLabel,\n alert,\n inputProps,\n inputNumProps,\n inputPinProps,\n inputExpProps,\n inputNumber,\n inputPin,\n inputExp,\n applyButton,\n supportExternalGiftCard,\n showGiftCardPinInput,\n showGiftCardExpInput,\n alertFieldLabel\n}) => (\n \n {alert}\n {supportExternalGiftCard ? (\n \n \n {label}\n {inputNumber}\n \n {showGiftCardPinInput && (\n \n {inputPinLabel}\n {inputPin}\n \n )}\n {showGiftCardExpInput && (\n \n {inputExpLabel}\n {inputExp}\n \n )}\n {(showGiftCardPinInput || showGiftCardExpInput) && alertFieldLabel}\n \n ) : (\n <>\n {label}\n {inputNumber}\n \n )}\n {applyButton}\n \n);\n\nexport const Item: React.FC = ({ itemProps, selectedGiftCard }) => {selectedGiftCard};\n\nconst GiftCardBalanceCheckView: React.FC = props => {\n const { giftCardBalanceCheckProps, form, item } = props;\n return (\n \n {form &&
    }\n {item && }\n \n );\n};\n\nexport default GiftCardBalanceCheckView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IHelp, IOrderSummary, IPaymentMethods } from '../../common';\nimport { IGroup, IGroupDelivery, IGroups } from '../../common/get-groups';\nimport { IOrderInformation } from '../../common/get-order-information';\nimport { ISalesLine } from '../../common/get-sales-line';\nimport { ICheckoutOrderConfirmationViewProps } from './checkout-order-confirmation';\n\nexport const OrderConfirmationOrderInfomation: React.FC = ({\n orderInformationProps,\n receiptEmail,\n createdDate,\n channelReferenceId\n}) => (\n \n {channelReferenceId}\n {receiptEmail}\n \n);\n\nexport const OrderConfirmationSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton }) => (\n {salesLine}\n);\n\nexport const OrderConfirmationGroupDelivery: React.FC = ({\n deliveryProps,\n heading,\n count,\n processing,\n address,\n pickupDateTimeslot,\n trackingInfo\n}) => (\n \n {heading}\n {count}\n {address}\n {pickupDateTimeslot}\n \n);\n\nexport const OrderConfirmationGroup: React.FC = ({ groupProps, delivery, salesLinesProps, salesLines }) => (\n \n {delivery && }\n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n ))}\n \n )}\n \n);\n\nexport const OrderConfirmationGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderConfirmationOrderSummary: 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 OrderConfirmationPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const OrderConfirmationHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderConfirmationView: React.FC = ({\n moduleProps,\n heading,\n backToShoppingLink,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {backToShoppingLink}\n {groups && }\n {orderSummary && }\n {payment && }\n {help && }\n \n );\n};\n\nexport default OrderConfirmationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport {\n ICheckoutDeliveryOption,\n ICheckoutDeliveryOptionEdit,\n ICheckoutDeliveryOptionsList,\n ICheckoutDeliveryOptionsViewProps\n} from './checkout-delivery-options';\n\nconst DeliveryOptionList: React.FC = ({ DeliveryOptionsList, list }) => {\n if (!list || list.length === 0) {\n return null;\n }\n\n return (\n \n {list.map((deliveryOption: ICheckoutDeliveryOptionEdit) => {\n return (\n \n {deliveryOption.radioButton}\n {deliveryOption.description}\n {deliveryOption.price}\n \n );\n })}\n \n );\n};\n\nconst DeliveryOptionSelected: React.FC = ({ DeliveryOption, description, price }) => {\n return (\n \n {description}\n {price}\n \n );\n};\n\nconst CheckoutDeliveryOptionsView: React.FC = props => {\n const {\n CheckoutDeliveryOptions,\n checkoutErrorRef,\n viewState,\n deliveryOptions,\n deliveryOptionSelected,\n alert,\n waiting,\n saveButton,\n editButton,\n cancelButton\n } = props;\n\n return (\n // TODO: All wrapper div should be provided by viewProps. Once SDK provide the sln, update markup.\n \n {viewState.isLoading && waiting}\n {viewState.isError && alert}\n {viewState.isShowList && deliveryOptions && }\n {viewState.isShowSelected && deliveryOptionSelected && }\n {viewState.isShowSaveButton && saveButton}\n {viewState.isShowEditButton && editButton}\n {viewState.isShowCancelButton && cancelButton}\n \n );\n};\n\nexport default CheckoutDeliveryOptionsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressOverlayModal, ICheckoutExpressViewProps } from './checkout-express';\n\n/**\n * Overlay modal.\n * @param param0 - Modal.\n * @param param0.modal - Modal param.\n * @returns React node.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- public name.\nconst OverlayModal: React.FC = ({ modal }) => {\n return ;\n};\n\n/**\n * Checkout express view.\n * @param param0 - Checkout express view props.\n * @param param0.checkoutExpress - Checkout express.\n * @param param0.waiting - Waiting.\n * @param param0.alert - Alert.\n * @param param0.addPaymentForm - Add payment form.\n * @param param0.overlayModal - Overlay modal.\n * @param param0.title - Module title.\n * @param param0.shouldHideExpressCheckout - ShouldHideExpressCheckout.\n * @returns React node.\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention -- Public name.\nconst CheckoutExpressView: React.FC = ({\n checkoutExpress,\n waiting,\n alert,\n addPaymentForm,\n overlayModal,\n title,\n shouldHideExpressCheckout\n}) =>\n shouldHideExpressCheckout ? (\n <>\n ) : (\n \n {title}\n {waiting}\n {alert}\n {addPaymentForm}\n {overlayModal && }\n \n );\n\nexport default CheckoutExpressView;\n"],"sourceRoot":""}