{"version":3,"sources":["webpack:///src/modules/product-specification/components/product-specification-table-stucture.tsx?4b07","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/product-specification/product-specification.tsx?f393","webpack:///src/modules/iframe/iframe.tsx?d14a","webpack:///src/modules/adventureworks/views/order-history.view.tsx?16f3","webpack:///src/modules/cookie-compliance/components/accept-button.tsx?1709","webpack:///src/modules/cookie-compliance/components/links.tsx?807e","webpack:///src/modules/cookie-compliance/cookie-compliance.tsx?5f7e","webpack:///src/modules/fabrikam/views/navigation-menu.view.tsx?5991","webpack:///src/modules/tile-list/tile-list.tsx?f539","webpack:///src/modules/product-specification/product-specification.view.tsx?bfbe","webpack:///src/modules/adventureworks/views/write-review.view.tsx?7a62","webpack:///./src/modules/navigation-menu/navigation-menu.data.ts?1365","webpack:///./src/modules/navigation-menu/navigation-menu.props.autogenerated.ts?43f0","webpack:///./src/modules/navigation-menu/navigation-menu.tsx?7711","webpack:///src/modules/iframe/iframe.view.tsx?dd86","webpack:///./src/themes/connselmer2/views/product-specification.view.tsx?55a4","webpack:///src/modules/checkout-express-payment-container/checkout-express-payment-container.view.tsx?3d5f","webpack:///src/modules/tile-list/tile-list.view.tsx?d2bd","webpack:///src/index.ts?c6ae","webpack:///src/modules/cart/cart.view.tsx?394b","webpack:///src/modules/adventureworks/views/order-details.view.tsx?1e8c","webpack:///src/modules/adventureworks/views/b2b-requests-status.view.tsx?b8db","webpack:///src/modules/business-partners/business-partners.view.tsx?677a","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/modules/checkout-loyalty/checkout-loyalty.view.tsx?876d","webpack:///src/modules/checkout/checkout.view.tsx?e9a7","webpack:///src/modules/fabrikam/views/header.view.tsx?1cde","webpack:///src/modules/order-details/order-details.view.tsx?018c","webpack:///./src/themes/connselmer/views/product-specification.view.tsx?7284","webpack:///src/modules/adventureworks/views/cart.view.tsx?7e13","webpack:///src/modules/cookie-compliance/cookie-compliance.view.tsx?b30b","webpack:///./src/themes/leblanc/views/product-specification.view.tsx?323e","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/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","webpack:///./src/modules/navigation-menu/navigation-menu.view.tsx?0899"],"names":["ProductSpecificationTableRow","_ref","productName","cellData","className","React","scope","dangerouslySetInnerHTML","getRichTextHtml","buildReviewCard","props","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","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","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","ProductSpecification","handleHeadingChange","event","target","_toggle","drawerListId","setState","isDrawerOpen","isAdditionalMediaDrawerOpen","catalogId","Msdyn365","validateCatalogId","reaction","result","RecordId","actionInput","AttributesForSelectedVariantInput","requestContext","channelId","getAttributesForSelectedVariant","shouldComponentUpdate","nextProps","nextState","render","_heading$tag","productSpecificationData","isAccrodion","displayStyle","viewProps","handleText","classnames","ProductSpecificationTableProps","tag","ProductSpecificationTableBodyProps","title","editProps","onEdit","productSpecificationResult","_createDrawerBody","_createTableBody","renderView","content","_this$props$data$addi","tableRows","index","_renderProductCell","OmniChannelMedia","additionalMediaLocations","_createAdditionalMediaDrawer","_this$props$context$r2","_this$props$data$addi2","accordionItemContainer","drawers","_product$Name","Drawer","collapseProps","isOpen","openGlyph","closeGlyph","glyphPlacement","toggleButtonText","onToggle","resources","additionalDownloadsText","prevState","mediaLocation","Uri","download","AltText","DataTypeValue","_renderCurrencyCell","_renderDateTimeCell","_renderDecimalCell","_renderIntegerCell","_renderTextCell","_renderTrueFalseCell","warning","CurrencyValue","CurrencyCode","_product$DateTimeOffs","DateTimeOffsetValue","IntegerValue","FloatValue","TextValue","BooleanValue","trueValueText","falseValueText","__decorate","observer","Iframe","iframeRef","destinationUrl","srcURL","URL","protocol","toLocaleLowerCase","iframeClassName","Heading","_createHeading","IframeContainer","IFrame","_createIframe","cookieConsentAccepted","alert","_renderAlert","cookieConsentRequiredMessage","targetURL","iframeAriaLabel","ref","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","CookieComplianceAcceptButton","acceptCookiesButtonText","acceptCookiesButtonAriaLabel","telemetryContent","onClose","payLoad","getPayloadObject","attributes","getTelemetryAttributes","CookieComplianceLinks","_mapEditableLinks","linkdata","editableLinks","forEach","link","linkText","contentAction","etext","editableLink","ariaLabel","linkUrl","openInNewTab","onTelemetryClick","links","onTextChange","CookieCompliance","getTelemetryObject","telemetryPageName","friendlyName","handleLinkTextChange","linkIndex","_this$props$config$ac","actionLinks","handleContentChange","visible","cookieRef","_onDismiss","componentDidMount","acceptCookiesAriaLabel","moduleConfig","MsDyn365","isBrowser","onDismiss","CookieComplianceBanner","AlertProps","fade","Content","acceptButton","reload","NavigationMenuView","currentLevel","_positionInSetOffset","escapeKey","_updateCategoryImage","categoryImageSrc","option","promotionalImage","altText","promotionalContent","image","imageSrc","promotionalItemImageSettings","imageSettings","categoryImage","categoryImageAltText","_handleDropdownToggle","parentId","isMobileView","activeMenu","parentMenu","showCategoryImage","imageSource","_resetFocus","menuNode","current","focus","_handleClickOutside","contains","_handleFocusOutside","relatedTarget","_closeSubmenu","_escFunction","keyCode","navDrawerList","Array","childNodes","navDrawerButton","firstChild","getAttribute","_getCategoryImage","categoryImageUrl","generateImageUrl","defaultImageSettings","viewports","xs","q","w","h","sm","md","lg","lazyload","_categoryImage$imageS","ImageData","Image","gridSettings","categoryImageSettings","loadFailureBehavior","_onDrawerChange","drawerState","drawerKeyValue","newPair","buttonText","body","addEventListener","componentWillUnmount","removeEventListener","_renderMobileMenu","_renderDesktopMenu","menuItemData","Navigation","menuItem","posinset","_renderDrawerMenu","MenuList","tabIndex","_renderDisplay","setSize","subMenu","_renderDrawer","_renderLinkMenuItem","keyValue","keys","colProps","toggleButtonProps","_renderLinkText","menuSubItem","currentPos","_menuItem$subMenu2","_menuItem$subMenu","_renderDrawerLink","linkURL","_renderSpanMenuItem","ListItem","menuItemList","menuItemDatum","_getFromSubMenu","_createMenuItemList","subMenus","found","_renderSubMenu","_renderButtonMenuItem","IsSubMenu","enableMultiSupportMenu","enableMultilevelMenu","multiLevelSupportedMenu","menuLevelSupport","levelClassName","menuOptions","idx","hasOptions","haveSubmenu","Math","round","_renderMenu","Button","onFocus","hoverEffect","isParent","Link","imagesource","shouldOpenNewTab","onMouseOver","_renderPromotionalLink","Span","level","currentItem","submenu","DivContainer","ImageDivContainer","showPromotionalContent","categoryImageDisplay","promotionalContentDisplay","DivContainerClass","_item$additionalPrope","TileList","_telemetryContent","StringExtensions","isNullOrWhitespace","headingTag","_this$props$config$cl","propsCarousel","SingleSlideCarousel","flipperPrevLabel","flipperPrevious","flipperNextLabel","flipperNext","vertical","singleSlideCarouselComponentProps","tileItemContainer","tileListContainer","tileListHeading","tiles","slots","ProductSpecificationView","rowdata","filter","row","ObjectExtensions","isNullOrUndefined","renderProductDescription","_props$data$product$r","primaryImageSource","PrimaryImageUrl","imageUrl","fallBackSrc","xl","cropFocalRegion","renderProductImage","WriteReviewView","signInMessage","signInButton","modalToggle","isAuthenticated","RichTextComponent","selectRatingLabel","reviewTitleLabel","reviewTextLabel","MenuTypeIndexId","MenuSource","navigationMenuSource","NavigationMenu","isRetail","isCMS","_setNavigationSource","sourceType","retailServerOnly","cmsOnly","all","_updateViewport","viewport","device","Type","locale","nameTranslations","nameTranslation","find","Language","Text","resizeThrottledEventHandler","addThrottledEvent","_this$props$config$di","_this$props$config$di2","_mapData","isEmptyOrNullObject","displayCategoryImage","displayPromotionalImage","ImageContainer","MobileDescriptionContainer","MobileBackButton","backButtonAriaLabel","MobileDescriptionLabel","mergedData","categories","_constructMenuItemData","cmsNavItems","_constructTopMenuItemData","_this$props$config$en","_this$props$config$ro","enabletopMenu","mergedRootMenuData","topMenu","rootMenuNavigation","retailItem","cmsItem","addedAllMenu","categoryPromotionalContent","cmsItemText","menuAriaLabel","promotionalData","promoItem","_promoItem$categoryNa","_retailItem$Name","categoryName","_NavigationMenu$getFr","_retailItem$Url","_NavigationMenu$getFr2","Images","RSItemIdInit","getFriendlyName","NameTranslations","Url","substring","slice","_getNestedChildren","menuSource","Retail","CMSItemIdInit","imageDestinationURL","imageLink","_getCMSNestedChildren","Cms","category","imageSourceUrl","nestedChildren","Children","_getViewport","innerWidth","observable","computed","IFrameView","ContainerItemsComponent","isLoadingClassName","items","CheckoutExpressPaymentContainerView","checkoutPlainContainerProps","isReady","waiting","tileListView","tileItem","keyIndex","_renderCartlines","cartLines","cartEmptyText","CartlinesWrapper","storeSelector","backToShoppingButton","waitingComponent","cartLoadingStatus","cartDataResult","cartLine","_cartLine$cartlineId","cartlineId","cartline","pickUpInStore","ContainerProps","defaultComponent","addToOrderTemplate","remove","addToWishlist","renderCartLinesGroupHeader","pickUpText","shippingText","emailShippingText","titleSeparate","emailDeliveryModeCode","_cartLine$pickUpInSto4","groupTitle","isBopisSelected","isNullOrEmpty","DeliveryMode","renderCartLinesGroupTitle","_cartLine$pickUpInSto","_cartLine$pickUpInSto2","_cartLine$pickUpInSto3","deliveryOption","orgUnitName","CartView","_props$cart","_props$cart2","errorData","promotions","renderModuleAttributes","hasInvoiceLine","promotionOptions","promotionMessageWrapper","promotionMessage","promotionSeeAllLink","promotionDialog","multiplePickUpEnabled","cartLinesGroup","cartlines","_props$context$action","emailshippingText","EmailDeliveryModeCode","emptyCartText","renderCartLinesGroup","orderSummaryHeading","OrderSummaryWrapper","_renderInvoiceSummarylines","invoiceSummaryLines","OrderSummaryItems","invoices","giftCard","loyalty","orderTotal","invoiceSummaryLineitems","_renderOrderSummarylines","orderSummaryLines","promoCode","subtotal","shipping","otherCharge","tax","totalDiscounts","orderSummaryLineitems","OrderSummaryErrors","errors","Wrapper","checkoutAsSignInUserButton","checkoutAsGuestButton","expressCheckoutButton","ExpressCheckoutSectionWrapper","createTemplateFromCartButton","OrderInfomation","channelAddress","SalesLine","salesLineProps","buyAgainButton","GroupDelivery","Group","isCashAndCarryTransaction","salesStatus","deliveryType","shipment","showTimeslot","pickupProps","pickupDateTimeslot","Groups","OrderSummary","orderSummaryProps","totalAmount","earnedPoints","Payment","paymentMethodsProps","methods","Help","helpProps","needHelpLabel","helpLineNumberLabel","contactNumber","OrderDetailsView","_ref9","viewModes","tableViewActions","orderSummary","payment","help","B2bRequestsStatusView","_props$data$operation","b2bRequestsStatus","continueShoppingButtonTitle","operationRequests","headingForEmptyRequestStatus","textForEmptyRequestStatus","getUrlSync","businessPartnersView","selectedBusinessPartnerUser","businessPartnersProps","businessPartnersHeading","catalogLoadingIndicator","catalogLoadingErrorMessage","cookieConsentNotGivenErrorMessage","backToBusinessPartnersLink","businessPartnersTable","businessPartnerUsersTable","renderCategorySuggestionsTitle","inCategoriesHeading","categoryAutoSuggestionHeading","CategorySuggestionsComponent","noResultText","isLoadingAutoSuggest","isLoadingNode","autosuggestCategory","CategorySuggest","UlCategory","MobileAutoSuggestEmptyComponent","noSearchResultImage","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","_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","isMobileViewport","useCallback","Fragment","onBlur","isSearchFormExpanded","AddCheckoutLoyalty","cardNumber","drawer","rewardPoints","loyaltyAmountContainer","appliedLoyaltyAmountContainer","loyaltyAmountLabel","loyaltyAmountInput","loyaltyAmountApplyButton","showAppliedAmount","loyaltyAmountAppliedText","loyaltyAmountAppliedPrice","loyaltyAmountRemoveButton","rewardPoint","checkoutLoyaltyRewardPoint","availablePointsText","activePoints","expiringPointsText","expiringPoints","ShowCheckoutLoyalty","coveredAmountText","CheckoutLoyaltyView","checkoutLoyalty","checkoutErrorRef","viewState","showLoyalty","addLoyalty","isShowLoyalty","isShowAddLoyalty","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","lines","customerAccount","PaymentSummaryComponent","_ref10","CheckoutView","isPaymentVerificationRedirection","shouldEnableSinglePaymentAuthorizationCheckout","canShow","checkoutProps","hasSalesOrder","bodyProps","mainProps","mainControlProps","sideProps","sideControlFirstProps","sideControlSecondProps","termsAndConditionsProps","orderConfirmation","guidedForm","invoicePaymentSummary","placeOrderButton","termsAndConditions","keepShoppingButton","checkoutExpressPaymentContainer","Waiting","renderCustomerName","accountInformation","customer","_renderReactFragment","slot","headerView","HeaderTag","HeaderContainer","HeaderTopBarContainer","Divider","navIcon","logo","search","preferredStore","renderForMobile","AccountInfoDropdownParentContainer","AccountInfoDropdownPopoverConentContainer","accountInfoDropdownButton","signOutLink","signInLink","accountLinks","accountClassName","_renderAccountBlock","wishListIconDesktop","cartIcon","siteOptions","MobileMenuLinksContainer","mobileMenuCollapsed","Collapse","_renderMobileAccountBlock","wishListIconMobile","menuBar","_renderCollapseMenu","OrderDetailsOrderInfomation","OrderDetailsSalesLine","OrderDetailsGroupDelivery","OrderDetailsGroup","OrderDetailsGroups","OrderDetailsOrderSummary","OrderDetailsPayment","OrderDetailsHelp","toggleBopisHandler","toggleBopis","onChangeStoreHandler","renderCartLine","isMultiplePickUp","outOfStockErrorMessage","renderGroupBopisBlock","_cartLine$data2","changeStoreDisplayText","shipInsteadDisplayText","pickItUpDisplayText","TelemetryConstant","PickupInStore","puckUpinStoreAttribute","renderCartlinesInternal","itemIndex","renderBopisBlock","_cartLine$data","shipToAddressDisplayText","pickUpAtStoreWithLocationText","renderCartlines","isCartDataResult","emptyCart","_cartLine$pickUpInSto6","payInvoicesDisplayText","IsInvoiceLine","replace","_cartLine$pickUpInSto5","itemLabel","itemsLabel","countTitle","_props$cart3","_props$orderSummaryLi","_props$cart4","_props$cart5","_props$cart6","updatedTitle","cartTitle","totalItemsInCart","checkoutBlockedDueToUnavailableFunds","renderOrderSummaryCheckoutButton","_props$context$action2","countItem","reduce","_item$data$cartline$Q","_item$data","Quantity","countItems","renderInvoiceSummarylines","orderSummaryItems","renderOrderSummarylines","renderOrderSummaryCheckout","CookieComplianceView","Alert","SignInLoading","icon","SignInButton","SignInView","signIn","defaultAADConainer","aadConainer","signInSection","signUpSection","signInSectionHeading","signInLocalAccount","signInSocialAccount","signUpSectionHeading","signInB2BAccount","signUpDescription","isShowLoading","localAccount","forgetPassword","disclaimer","wrapper","LocalAccount","socialAccounts","button","SocialAccount","b2bSignUpButtonAriaLabel","b2bSignUpButtonText","signUpButton","B2BAccount","ItemComponent","itemProps","CheckoutSectionContainerView","OrderConfirmationOrderInfomation","receiptEmail","OrderConfirmationSalesLine","OrderConfirmationGroupDelivery","OrderConfirmationGroup","shippingItemsToYou","OrderConfirmationGroups","OrderConfirmationOrderSummary","OrderConfirmationPayment","OrderConfirmationHelp","OrderConfirmationView","AddressShow","AddressDetail","description","AddressAddUpdate","AddressForm","hasError","isShowSaveButton","saveButton","isShowCancelButton","AddressItem","AddressError","CheckoutBillingAddressView","CheckoutBillingAddress","sameAsShippingCheckbox","showAddress","showAddOrUpdateAddress","isShowSameAsShippingCheckbox","isShowAddress","isShowAddOrUpdateAddress","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","editButton","isLoading","isError","isShowList","isShowSelected","isShowEditButton","OverlayModal","CheckoutExpressView","checkoutExpress","addPaymentForm","overlayModal","shouldHideExpressCheckout","sm_text_count","isBackTrack","mobileViewLabelText","_handleGoBack","_shouldAddFocusMenuRef","optionLinkText","menuItemRef","componentDidUpdate","_this$menuItemRef$cur","children"],"mappings":"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","file":"static/js/3.943e3887f5a35ca3db77.chunk.js","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { getRichTextHtml } from '@msdyn365-commerce/core';\nimport * as React from 'react';\n\n/**\n * Product specification table row.\n */\nexport interface IProductSpecificationTableRow {\n productName?: string;\n cellData?: React.ReactNode;\n className?: string;\n}\n\n/**\n * Product specification table row component.\n * @param props - For product specification table row.\n * @param props.productName - Product name.\n * @param props.cellData - Cell data.\n * @param props.className - Class name.\n * @returns - Returns JSX element.\n */\nexport const ProductSpecificationTableRow: React.FC = ({ productName, cellData, className }) => (\n \n \n {/* eslint-disable-next-line react/no-danger */}\n \n \n {cellData}\n \n);\n","/*!\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 * as Msdyn365 from '@msdyn365-commerce/core';\nimport { AttributeValue } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { Drawer, IModuleProps, INodeProps, Module } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport { reaction } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { validateCatalogId } from '@msdyn365-commerce-modules/retail-actions';\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant } from '../..';\nimport { ProductSpecificationTableRow } from './components/product-specification-table-stucture';\nimport { IProductSpecificationData } from './product-specification.data';\nimport { displayStyle, IProductSpecificationProps } from './product-specification.props.autogenerated';\n\n/**\n * Maintain Drawer State.\n */\nexport interface IProductSpecificationState {\n isDrawerOpen: boolean;\n isAdditionalMediaDrawerOpen: boolean;\n drawerListId: number | undefined;\n}\n\n/**\n * Product specification view props.\n */\nexport interface IProductSpecificationViewProps extends IProductSpecificationProps<{}> {\n ProductSpecification: IModuleProps;\n ProductSpecificationTableProps: INodeProps;\n ProductSpecificationTableBodyProps: INodeProps;\n productSpecificationResult?: (JSX.Element | null)[];\n\n title?: React.ReactNode;\n isAccrodion?: boolean;\n handleText?(event: Msdyn365.ContentEditableEvent): void;\n}\n\n/**\n * Check for display style either accordion or table.\n */\nexport interface IProductSpecificationExtentedProps extends IProductSpecificationProps {\n displayStyle?: displayStyle;\n}\n\n/**\n *\n * ProductSpecification component.\n * @extends {React.Component>}\n */\n@observer\nclass ProductSpecification extends React.Component {\n public constructor(props: IProductSpecificationExtentedProps) {\n super(props);\n this.state = {\n isDrawerOpen: false,\n isAdditionalMediaDrawerOpen: false,\n drawerListId: undefined\n };\n }\n\n public async componentDidMount(): Promise {\n const { context, data, telemetry } = this.props;\n const catalogId = Msdyn365.getCatalogId(this.props.context.request);\n validateCatalogId(catalogId);\n reaction(\n () => (data.product.result ? data.product.result.RecordId : null),\n () => {\n if (context && data.product.result) {\n const actionInput = new AttributesForSelectedVariantInput(\n data.product.result.RecordId,\n\n +context.actionContext.requestContext.apiSettings.channelId,\n data.product.result,\n catalogId\n );\n\n getAttributesForSelectedVariant(actionInput, this.props.context.actionContext).catch((error: Error) => {\n telemetry.error(error.message);\n telemetry.debug('Unable to update attributes for Product');\n telemetry.error(error.message);\n });\n }\n }\n );\n }\n\n public shouldComponentUpdate(nextProps: IProductSpecificationExtentedProps, nextState: IProductSpecificationState): boolean {\n if (this.state === nextState && this.props.data === nextProps.data) {\n return false;\n }\n return true;\n }\n\n public render(): JSX.Element | null {\n let data: IProductSpecificationData;\n try {\n data = this.props.data;\n } catch (error) {\n this.props.telemetry.error(`Something went wrong ------${error}`);\n return
{error}
;\n }\n\n if (!data.productSpecificationData.result || data.productSpecificationData.result.length <= 0) {\n this.props.telemetry.error('Product specification content is empty, module wont render.');\n return null;\n }\n\n const { heading, className } = this.props.config;\n const { productSpecificationData } = this.props.data;\n const isAccrodion = this.props.config.displayStyle === displayStyle.accordion;\n const viewProps = {\n ...this.props,\n handleText: this.handleHeadingChange,\n ProductSpecification: {\n moduleProps: this.props,\n className: classnames('ms-product-specification', className)\n },\n ProductSpecificationTableProps: isAccrodion\n ? {\n moduleProps: this.props,\n className: classnames('ms-product-specification__accordion', className)\n }\n : {\n className: classnames('ms-product-specification__table table-striped table-bordered'),\n tag: 'table'\n },\n isAccrodion,\n ProductSpecificationTableBodyProps: isAccrodion\n ? {}\n : {\n className: '',\n tag: 'tbody'\n },\n title: heading?.text && (\n \n ),\n productSpecificationResult:\n productSpecificationData.result && (isAccrodion ? this._createDrawerBody(data) : this._createTableBody(data))\n } as IProductSpecificationViewProps;\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handle Heading Text Change.\n * @param event - Current event.\n */\n public handleHeadingChange = (event: Msdyn365.ContentEditableEvent): void => {\n this.props.config.heading!.text = event.target.value;\n };\n\n private _createTableBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const tableRows = content.productSpecificationData.result!.map((product, index) => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n\n if (!cellData) {\n return null;\n }\n\n return (\n <>\n \n \n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n tableRows.push(this._createAdditionalMediaDrawer());\n }\n\n return tableRows;\n }\n\n private _createDrawerBody(content: IProductSpecificationData): (JSX.Element | null)[] {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n const drawers = content.productSpecificationData.result!.map(product => {\n const cellData: JSX.Element | null = this._renderProductCell(product);\n if (!cellData) {\n return null;\n }\n return (\n \n \n
{cellData}
\n \n
\n );\n });\n\n if (this.props.context.request.app?.config?.OmniChannelMedia && this.props.data.additionalMediaLocations.result?.length) {\n drawers.push(this._createAdditionalMediaDrawer());\n }\n\n return drawers;\n }\n private _createAdditionalMediaDrawer(): JSX.Element {\n const accordionItemContainer: IModuleProps = {\n moduleProps: this.props,\n className: 'ms-product-specification-title'\n };\n\n return (\n \n {\n this.setState(prevState => ({\n ...prevState,\n isAdditionalMediaDrawerOpen: !prevState.isAdditionalMediaDrawerOpen\n }));\n }}\n >\n
\n \n
\n \n
\n );\n }\n\n private readonly _toggle = (drawerListId: number | undefined) => (): void => {\n if (this.state.drawerListId !== drawerListId) {\n this.setState({ drawerListId, isDrawerOpen: true });\n } else {\n this.setState({ drawerListId: undefined, isDrawerOpen: false });\n }\n };\n\n private _renderProductCell(product: AttributeValue): JSX.Element | null {\n switch (product.DataTypeValue) {\n case 0: // None\n // Return span here instead of null so the row still shows\n return ;\n case 1: // Currency\n return this._renderCurrencyCell(product);\n case 2: // DateTime\n return this._renderDateTimeCell(product);\n case 3: // Decimal\n return this._renderDecimalCell(product);\n case 4: // Integer\n return this._renderIntegerCell(product);\n case 5: // Text\n return this._renderTextCell(product);\n case 6: // TrueFalse\n return this._renderTrueFalseCell(product);\n case 40: // Video\n this.props.telemetry.warning('Got video specification type, not supported yet so skipping line');\n return null;\n case 41: // Image\n this.props.telemetry.warning('Got image specification type, not supported yet so skipping line');\n return null;\n default:\n this.props.telemetry.warning(`Got unknown specification type ${product.DataTypeValue} so skipping line`);\n return null;\n }\n }\n\n private _renderCurrencyCell(product: AttributeValue): JSX.Element | null {\n if (product.CurrencyValue !== null && product.CurrencyValue !== undefined) {\n return (\n \n {product.CurrencyCode}\n {product.CurrencyValue}\n \n );\n }\n\n return null;\n }\n\n private _renderDateTimeCell(product: AttributeValue): JSX.Element | null {\n if (product.DateTimeOffsetValue?.toUTCString) {\n return {product.DateTimeOffsetValue.toUTCString()};\n }\n\n return null;\n }\n\n private _renderIntegerCell(product: AttributeValue): JSX.Element | null {\n if (product.IntegerValue !== null && product.IntegerValue !== undefined) {\n return {product.IntegerValue};\n }\n\n return null;\n }\n\n private _renderDecimalCell(product: AttributeValue): JSX.Element | null {\n if (product.FloatValue !== null && product.FloatValue !== undefined) {\n return {product.FloatValue};\n }\n\n return null;\n }\n\n private _renderTextCell(product: AttributeValue): JSX.Element | null {\n if (product.TextValue !== null && product.TextValue !== undefined) {\n // eslint-disable-next-line react/no-danger\n return ;\n }\n\n return null;\n }\n\n private _renderTrueFalseCell(product: AttributeValue): JSX.Element | null {\n // TODO 20369885 setting to default value is needed to work around a platform bug where\n // config string value does not get its default value.\n if (product.BooleanValue) {\n return {this.props.resources.trueValueText ? this.props.resources.trueValueText : 'Yes'};\n }\n return {this.props.resources.falseValueText ? this.props.resources.falseValueText : 'No'};\n }\n}\n\nexport default ProductSpecification;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Heading, IModuleProps } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { IHeadingData, IIframeConfig, IIframeProps } from './iframe.props.autogenerated';\n\nexport interface IIframeViewProps extends IIframeProps {\n Heading: React.ReactNode;\n IframeContainer: IModuleProps;\n IFrame: React.ReactNode;\n alert?: React.ReactNode;\n cookieConsentAccepted?: boolean;\n}\n\n/**\n *\n * Iframe component.\n * @extends {React.PureComponent}\n */\nclass Iframe extends React.PureComponent> {\n private readonly iframeRef: React.RefObject;\n\n constructor(props: IIframeProps) {\n super(props);\n this.iframeRef = React.createRef();\n }\n\n public render(): JSX.Element | null {\n const { config, resources } = this.props;\n const isConsentGiven =\n this.props.context.request &&\n this.props.context.request.cookies &&\n this.props.context.request.cookies.isConsentGiven &&\n this.props.context.request.cookies.isConsentGiven();\n\n if (!(config && config.target && config.target.destinationUrl)) {\n return null;\n }\n\n let srcURL;\n try {\n srcURL = new URL(config.target.destinationUrl);\n } catch (error) {\n this.props.telemetry.exception(error);\n return null;\n }\n\n if (srcURL && srcURL.protocol && srcURL.protocol.toLocaleLowerCase() !== 'https:') {\n return null;\n }\n const iframeClassName = classnames('ms-iframe', config.className);\n\n let viewProps: IIframeViewProps = {\n ...(this.props as IIframeProps),\n Heading: this._createHeading(config.heading!),\n IframeContainer: {\n moduleProps: this.props,\n className: iframeClassName\n },\n IFrame: this._createIframe()\n };\n\n if (!isConsentGiven) {\n viewProps = {\n ...viewProps,\n alert: this._renderAlert(resources.cookieConsentRequiredMessage)\n };\n } else {\n viewProps = {\n ...viewProps,\n cookieConsentAccepted: true\n };\n }\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n private _createHeading(heading: IHeadingData): React.ReactNode | null {\n if (!heading || !heading.text || heading.text.length === 0) {\n return null;\n }\n\n return ;\n }\n\n private _renderAlert(message: string): React.ReactNode | null {\n return (\n

\n {message}\n

\n );\n }\n\n private _createIframe(): React.ReactNode | null {\n const { config } = this.props;\n const targetURL = config.target.destinationUrl;\n\n return (\n \n );\n }\n}\n\nexport default Iframe;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\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 { getPayloadObject, getTelemetryAttributes, IPayLoad, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport interface ICookieComplianceAcceptButton {\n acceptCookiesButtonText?: string;\n acceptCookiesButtonAriaLabel?: string;\n\n /**\n * The telemetry content\n */\n telemetryContent?: ITelemetryContent;\n onClose(): void;\n}\n\nexport const CookieComplianceAcceptButton: React.FC = ({\n acceptCookiesButtonText,\n acceptCookiesButtonAriaLabel,\n telemetryContent,\n onClose\n}) => {\n const payLoad: IPayLoad = getPayloadObject('click', telemetryContent!, 'accept cookies');\n const attributes = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n {acceptCookiesButtonText}\n \n );\n};\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as Msdyn365 from '@msdyn365-commerce/core';\nimport { getPayloadObject, getTelemetryAttributes, ITelemetryContent, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IActionLinksData } from '../cookie-compliance.props.autogenerated';\n\nexport interface ICookieComplianceLinks {\n links: IActionLinksData[];\n requestContext: Msdyn365.IRequestContext;\n telemetryContent: ITelemetryContent;\n onTextChange?(index: number): (event: Msdyn365.ContentEditableEvent) => void;\n}\n\n/**\n *\n * ContentCardLinks component.\n * @extends {React.PureComponent}\n */\nexport class CookieComplianceLinks extends React.PureComponent {\n public render(): JSX.Element {\n const editableLinks = this._mapEditableLinks(this.props.links);\n return (\n \n {editableLinks && editableLinks.length > 0 ? (\n \n ) : null}\n \n );\n }\n\n private readonly _mapEditableLinks = (linkdata: IActionLinksData[]): Msdyn365.ILinksData[] | null => {\n if (!linkdata || linkdata.length === 0) {\n return null;\n }\n const editableLinks: Msdyn365.ILinksData[] = [];\n linkdata.forEach((link, index) => {\n // Construct telemetry attribute to render\n const payLoad = getPayloadObject('click', this.props.telemetryContent, '', '');\n const linkText = link.linkText ? link.linkText : '';\n payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.props.telemetryContent, payLoad);\n const editableLink: Msdyn365.ILinksData = {\n ariaLabel: link.ariaLabel,\n className: 'link',\n linkText: link.linkText,\n linkUrl: link.linkUrl.destinationUrl,\n openInNewTab: link.openInNewTab,\n role: 'link',\n additionalProperties: attributes,\n onClick: onTelemetryClick(this.props.telemetryContent, payLoad, linkText)\n };\n editableLinks.push(editableLink);\n });\n\n return editableLinks;\n };\n}\n\nexport default CookieComplianceLinks;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport * as MsDyn365 from '@msdyn365-commerce/core';\nimport { ArrayExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { getTelemetryObject, IAlertProps, IModuleProps, INodeProps, ITelemetryContent } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nimport { CookieComplianceAcceptButton, CookieComplianceLinks } from './components';\nimport { ICookieComplianceConfig, ICookieComplianceProps } from './cookie-compliance.props.autogenerated';\n\n/**\n * Alert state interface.\n */\nexport interface IAlertState {\n visible: boolean;\n}\n\n/**\n * Cookie compliance view props interface.\n */\nexport interface ICookieComplianceViewProps extends ICookieComplianceProps<{}> {\n CookieComplianceBanner: IModuleProps;\n AlertProps: IAlertProps;\n Content: INodeProps;\n text?: React.ReactNode;\n links?: React.ReactNode;\n acceptButton?: React.ReactNode;\n className: string;\n onDismiss(): void;\n}\n\n/**\n *\n * CookieCompliance component.\n * @extends {React.PureComponent>}\n */\nclass CookieCompliance extends React.PureComponent, IAlertState> {\n private readonly cookieRef: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n\n public constructor(props: ICookieComplianceProps) {\n super(props);\n this.state = { visible: false };\n this.cookieRef = React.createRef();\n this._onDismiss = this._onDismiss.bind(this);\n }\n\n public componentDidMount(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies && !context.request.cookies.isConsentGiven()) {\n this.setState({ visible: true });\n }\n }\n\n public render(): JSX.Element | null {\n const { config, context, resources, telemetry } = this.props;\n const { acceptCookiesButtonText, acceptCookiesAriaLabel } = resources;\n const { visible } = this.state;\n\n const isConsentGiven = context && context.request && context.request.cookies && context.request.cookies.isConsentGiven();\n let moduleConfig: ICookieComplianceConfig;\n\n try {\n moduleConfig = config;\n } catch (error) {\n telemetry.error(`Something went wrong while rendering the alert module ------${error}`);\n return
{error}
;\n }\n\n if (isConsentGiven && !visible) {\n this.props.context.telemetry.error('Cookie Compliance content is empty, module wont render.');\n return null;\n }\n\n if (!MsDyn365.msdyn365Commerce.isBrowser) {\n return <>;\n }\n\n const viewProps = {\n ...this.props,\n onDismiss: this._onDismiss,\n CookieComplianceBanner: {\n moduleProps: this.props,\n className: classnames('ms-cookie-compliance', moduleConfig.className),\n ref: this.cookieRef\n },\n AlertProps: {\n className: 'ms-cookie-compliance__container',\n color: 'white',\n fade: false\n },\n Content: {\n className: 'ms-cookie-compliance__content'\n },\n text: moduleConfig.content && (\n \n ),\n links: ArrayExtensions.hasElements(moduleConfig.actionLinks) && (\n \n ),\n acceptButton: (\n \n )\n };\n\n return this.props.renderView(viewProps) as React.ReactElement;\n }\n\n /**\n * Handles Link content change event.\n * @param linkIndex - Index of link in linkarray.\n * @returns Void.\n */\n public handleLinkTextChange = (linkIndex: number) => (event: MsDyn365.ContentEditableEvent): void => {\n if (this.props.config.actionLinks?.[linkIndex]) {\n this.props.config.actionLinks[linkIndex].linkText = event.target.value;\n }\n };\n\n /**\n * Handles content change event.\n * @param event - Event.\n */\n public handleContentChange = (event: MsDyn365.ContentEditableEvent): void => {\n this.props.config.content = event.target.value;\n };\n\n private _onDismiss(): void {\n const { context } = this.props;\n\n if (context && context.request && context.request.cookies) {\n context.request.cookies.setConsentCookie();\n location.reload();\n }\n this.setState({ visible: false });\n }\n}\n\nexport default CookieCompliance;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365, { IDictionary, IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\nimport { IMenuItemData, INavigationMenuViewProps } from '@msdyn365-commerce-modules/navigation-menu';\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Drawer,\n getPayloadObject,\n getTelemetryAttributes,\n getTelemetryObject,\n ICollapseProps,\n IDrawerState,\n IPayLoad,\n ITelemetryContent,\n Module,\n Node,\n onTelemetryClick\n} from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\ninterface INavigationState {\n parentMenu?: number;\n activeMenu?: number;\n categoryImage?: IImageData[] | null;\n categoryImageAltText: string;\n drawerKeyValue: IDictionary;\n}\n\n/**\n *\n * NavigationMenuView component.\n * @extends {React.PureComponent}\n */\nexport class NavigationMenuView extends React.PureComponent {\n private currentLevel: number = 0;\n\n private readonly _positionInSetOffset: number = 1;\n\n private readonly escapeKey: number = 27;\n\n private readonly menuNode: React.RefObject;\n\n private readonly telemetryContent: ITelemetryContent;\n\n private readonly payLoad: IPayLoad;\n\n constructor(props: INavigationMenuViewProps) {\n super(props);\n this.menuNode = React.createRef();\n this.state = { activeMenu: undefined, parentMenu: undefined, categoryImageAltText: '', drawerKeyValue: {} };\n this._closeSubmenu = this._closeSubmenu.bind(this);\n this._escFunction = this._escFunction.bind(this);\n this.telemetryContent = getTelemetryObject(\n this.props.context.request.telemetryPageName!,\n this.props.friendlyName,\n this.props.telemetry\n );\n this.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\n }\n\n public componentDidMount(): void {\n if (MsDyn365.isBrowser) {\n document.body.addEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.addEventListener('mousedown', this._handleClickOutside);\n document.body.addEventListener('focusout', this._handleFocusOutside);\n }\n }\n\n public componentWillUnmount(): void {\n if (MsDyn365.isBrowser) {\n document.removeEventListener('keydown', (this._escFunction as unknown) as EventListener, false);\n document.body.removeEventListener('mousedown', this._handleClickOutside, false);\n document.body.removeEventListener('focusout', this._handleFocusOutside, false);\n }\n }\n\n public render(): JSX.Element | null {\n const { isMobileView } = this.props;\n\n this.currentLevel = 1;\n return <>{isMobileView ? this._renderMobileMenu() : this._renderDesktopMenu()};\n }\n\n /**\n * Method to render mobile menu.\n * @returns Jsx element.\n */\n private _renderMobileMenu(): JSX.Element {\n const { isMobileView, menuItemData, Navigation } = this.props;\n return (\n \n {menuItemData.map((menuItem: IMenuItemData, posinset: number) => {\n return this._renderDrawerMenu(menuItem, menuItemData.length, posinset + this._positionInSetOffset);\n })}\n \n );\n }\n\n /**\n * Method to render desktop menu.\n * @returns Jsx element.\n */\n private _renderDesktopMenu(): JSX.Element {\n const { MenuList, Navigation } = this.props;\n return (\n \n \n {this._renderDisplay()}\n \n \n );\n }\n\n /**\n * Method to render drawer menu.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerMenu(menuItem: IMenuItemData, setSize: number, posinset: number): JSX.Element | null {\n if (menuItem && menuItem.subMenu && ArrayExtensions.hasElements(menuItem.subMenu)) {\n return this._renderDrawer(menuItem, setSize, posinset);\n }\n return this._renderLinkMenuItem(menuItem, undefined, true, false, setSize, posinset);\n }\n\n /**\n * Method to render drawer component.\n * @param menuItem -Menuitem data.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawer(menuItem: IMenuItemData, setSize?: number, posinset?: number): JSX.Element | null {\n const toggleButtonText = menuItem.linkText;\n const keyValue = this.state.drawerKeyValue;\n const buttonText = toggleButtonText !== undefined ? toggleButtonText : '';\n const keys = keyValue !== undefined ? keyValue : {};\n const { isMobileView } = this.props;\n\n let isDrawerOpen = false;\n if (keys[buttonText]) {\n isDrawerOpen = true;\n }\n const colProps: ICollapseProps = { isOpen: isDrawerOpen };\n return (\n \n
\n {menuItem.subMenu!.map((menuSubItem: IMenuItemData, currentPos: number) => {\n if (ArrayExtensions.hasElements(menuSubItem.subMenu)) {\n return this._renderDrawer(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n }\n return this._renderDrawerLink(menuSubItem, menuItem.subMenu?.length, currentPos + this._positionInSetOffset);\n })}\n
\n \n );\n }\n\n /**\n * Method to render link.\n * @param linkText -Text on Menu link.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkText(linkText: string | undefined, setSize: number | undefined, posinset: number | undefined): JSX.Element {\n return (\n \n {linkText}\n \n );\n }\n\n /**\n * Method to render drawer link.\n * @param item -Single Menuitem.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderDrawerLink(item: IMenuItemData, setSize: number | undefined, posinset: number): JSX.Element | null {\n if (item && item.linkText && item.linkURL && item.linkURL.length > 0) {\n return this._renderLinkMenuItem(item, undefined, true, false, setSize, posinset);\n } else if (item && item.linkText && !item.linkURL) {\n return this._renderSpanMenuItem(item);\n }\n return null;\n }\n\n /**\n * Method to generate menu.\n * @returns Jsx element.\n */\n private _renderDisplay(): JSX.Element[] {\n const { ListItem, menuItemData, isMobileView } = this.props;\n const { activeMenu } = this.state;\n const menuItemList: JSX.Element[] = [];\n\n if (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\n let menuItem: IMenuItemData = {};\n for (const menuItemDatum of menuItemData) {\n if (menuItemDatum && menuItemDatum.id === activeMenu) {\n menuItem = menuItemDatum;\n this.setState({ parentMenu: undefined });\n break;\n }\n menuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\n if (menuItem && menuItem.id === activeMenu) {\n break;\n }\n }\n\n menuItem &&\n menuItemList.push(\n \n {` `}\n {this._createMenuItemList(menuItem)}\n {` `}\n \n );\n } else {\n menuItemData.forEach((item: IMenuItemData, index: number) => {\n menuItemList.push(\n \n {this._createMenuItemList(item)}\n \n );\n });\n }\n\n return menuItemList;\n }\n\n /**\n * Method to get data for submenu.\n * @param item -Single Menuitem.\n * @returns IMenuItemData.\n */\n private _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\n const subMenus = item && item.subMenu;\n if (subMenus && subMenus.length > 0) {\n for (let i = 0; i <= subMenus.length - 1; i++) {\n if (subMenus[i].id === this.state.activeMenu) {\n this.setState({ parentMenu: item?.id });\n return subMenus[i];\n }\n const found = this._getFromSubMenu(subMenus[i]);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n /**\n * Method to create item list.\n * @param menuItemData -Single Menuitem.\n * @returns Jsx element.\n */\n private _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\n if (menuItemData && menuItemData.subMenu && menuItemData.subMenu.length > 0) {\n if (this.props.isMobileView && this.state.activeMenu !== undefined) {\n return this._renderSubMenu(menuItemData.subMenu, menuItemData.id);\n }\n return (\n <>\n {this._renderButtonMenuItem(menuItemData)}\n {this._renderSubMenu(menuItemData.subMenu, menuItemData.id)}\n \n );\n } else if (menuItemData && menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\n return this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\n } else if (menuItemData && menuItemData.linkText && !menuItemData.linkURL) {\n return this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\n }\n\n return null;\n }\n\n private _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\n const { isMobileView, ListItem } = this.props;\n const enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\n const subMenuLevel = 3;\n const multiLevelSupportedMenu = this.props.config.menuLevelSupport || subMenuLevel;\n\n // Const isParentMenu:boolean= false;\n if (activeMenu && this.state.activeMenu !== activeMenu) {\n this.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\n return null;\n }\n\n if (!subMenus || subMenus.length === 0) {\n this.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\n return null;\n }\n\n let levelClassName: string = '';\n const menuOptions =\n subMenus &&\n subMenus.map((option: IMenuItemData, idx: number) => {\n const hasOptions = option.subMenu && option.subMenu.length > 0;\n let menuItem: JSX.Element | null;\n if (hasOptions && isMobileView) {\n menuItem = this._renderButtonMenuItem(option, activeMenu, idx);\n } else {\n menuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\n }\n let subMenu;\n const haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\n if (haveSubmenu) {\n this.currentLevel++;\n levelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\n subMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\n }\n return (\n \n {menuItem}\n {subMenu}\n \n );\n });\n return this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\n }\n\n /**\n * Method to render button menu item.\n * @param option -Single Menuitem.\n * @param activeMenu -Active menu number.\n * @param index -Active menu index.\n * @returns Jsx element.\n */\n private _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\n const { Button } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render link menu item.\n * @param option -Single Menuitem.\n * @param index -Active menu index.\n * @param hoverEffect -Active menu effect.\n * @param isParent -Is parent menu.\n * @param setSize -Setsize data.\n * @param posinset -Current position.\n * @returns Jsx element.\n */\n private _renderLinkMenuItem(\n option: IMenuItemData,\n index?: number,\n hoverEffect: boolean = true,\n isParent: boolean = false,\n setSize?: number,\n posinset?: number\n ): JSX.Element | null {\n const { Link, isMobileView } = this.props;\n const linkText = option.linkText ? option.linkText : '';\n const imagesource = option.imageSource ? option.imageSource : '';\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render promotional link.\n * @param linkText -Link text.\n * @param linkUrl -Link url.\n * @returns Jsx element.\n */\n private _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\n const { Link } = this.props;\n this.payLoad.contentAction.etext = linkText;\n const attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\n if (linkText && linkUrl) {\n return (\n \n {linkText}\n \n );\n }\n return null;\n }\n\n /**\n * Method to render span menu item.\n * @param option -Single Menu Item.\n * @param index -Index.\n * @param isParent -Is parent menu.\n * @returns Jsx element.\n */\n private _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\n const { Span } = this.props;\n return (\n \n {option.linkText}\n \n );\n }\n\n /**\n * Method to render menu.\n * @param level -Menu level.\n * @param menuOptions -Menu lists.\n * @param currentItem -Menu current.\n * @param submenu -Mneu has submenu or not.\n * @returns Jsx element.\n */\n private _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\n const { DivContainer, MenuList, ImageDivContainer, showCategoryImage, isMobileView, showPromotionalContent } = this.props;\n const categoryImageDisplay =\n !isMobileView && showCategoryImage && this.state.categoryImage !== null && this.state.categoryImage !== undefined && !submenu;\n const promotionalContentDisplay =\n !isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\n const DivContainerClass = this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__deafult';\n this.currentLevel = 1;\n return (\n \n 2 &&\n 'navmenu-multi-level'\n )}\n >\n {menuOptions}\n \n
\n {categoryImageDisplay &&\n this.state.categoryImage &&\n this.state.categoryImage.map(item => (\n \n {this.state.categoryImage && this._getCategoryImage(item)}\n {promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\n \n ))}\n
\n \n );\n }\n\n private readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\n const linkText = option && option.linkText ? option.linkText : '';\n const promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\n\n // Read category and promotional image in one array\n if (ArrayExtensions.hasElements(option.promotionalContent)) {\n option.promotionalContent.map(item => {\n if (item && item.image) {\n const imageSrc = item.image.src;\n const promotionalItemImageSettings = item.image.imageSettings;\n promotionalImage.push({\n src: imageSrc,\n altText: item.text,\n imageSettings: promotionalItemImageSettings,\n additionalProperties: { linkUrl: item.linkUrl.destinationUrl }\n });\n }\n });\n }\n this.setState({\n categoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\n categoryImageAltText: linkText\n });\n };\n\n /**\n * Method to handle dropdwon change.\n * @param data -Menuitem data.\n * @param parentId -Menu parent.\n * @returns Jsx element.\n */\n private readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\n if (!this.props.isMobileView) {\n this.setState({\n activeMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\n parentMenu: parentId\n });\n if (this.props.showCategoryImage) {\n this._updateCategoryImage(data.imageSource!, data)();\n }\n } else {\n this.setState({\n activeMenu: data.id,\n parentMenu: parentId\n });\n }\n\n this._resetFocus();\n };\n\n /**\n * Method to call when focus lost from menu.\n */\n private readonly _resetFocus = () => {\n if (this.props.isMobileView) {\n setTimeout(() => {\n this.menuNode && this.menuNode.current && this.menuNode.current.focus();\n }, 0);\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleClickOutside = (event: MouseEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\n this.setState({\n activeMenu: undefined,\n categoryImage: null\n });\n }\n };\n\n /**\n * Method to handle click outside of menu.\n * @param event -HTML event.\n */\n private readonly _handleFocusOutside = (event: FocusEvent) => {\n if (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\n this._closeSubmenu();\n }\n };\n\n /**\n * Method to handle close submenu event.\n */\n private _closeSubmenu(): void {\n if (!this.props.isMobileView) {\n this.setState({ activeMenu: undefined });\n }\n }\n\n /**\n * Method to handle escape key event.\n * @param event -HTML event.\n */\n private readonly _escFunction = (event: React.KeyboardEvent) => {\n if (event.keyCode === this.escapeKey) {\n if (!this.props.isMobileView) {\n const navDrawerList = Array.from(this.menuNode.current!.childNodes);\n for (const item of navDrawerList) {\n const navDrawerButton = item.firstChild as HTMLButtonElement;\n if (navDrawerButton.getAttribute('aria-expanded') === 'true') {\n navDrawerButton.focus();\n }\n }\n }\n this._closeSubmenu();\n }\n };\n\n private readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\n if (!categoryImage || !categoryImage.src) {\n return null;\n }\n\n const categoryImageUrl = generateImageUrl(categoryImage.src, this.props.context.actionContext.requestContext.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n sm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n md: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\n lg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\n },\n lazyload: true\n };\n if (categoryImageUrl !== undefined) {\n const ImageData: IImageData = { src: categoryImageUrl };\n return (\n \n );\n }\n return null;\n };\n\n /**\n * Method to handle escape key event.\n * @param drawerState -HTML event.\n */\n private readonly _onDrawerChange = (drawerState: IDrawerState) => {\n const { drawerKeyValue } = this.state;\n const drawerText: string = drawerState.buttonText !== undefined ? drawerState.buttonText : '';\n const newPair = { [drawerText]: drawerState.isOpen };\n this.setState({ drawerKeyValue: { ...drawerKeyValue, ...newPair } });\n };\n}\n\nexport default NavigationMenuView;\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IProductSpecificationViewProps } from './product-specification';\n\nconst ProductSpecificationView: React.FC = props => {\n const { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\n const rowdata =\n productSpecificationResult &&\n ArrayExtensions.hasElements(productSpecificationResult) &&\n productSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row));\n\n return rowdata && ArrayExtensions.hasElements(rowdata) ? (\n \n {props.title}\n \n {rowdata}\n \n \n ) : null;\n};\n\nexport default ProductSpecificationView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IImageSettings, Image, RichTextComponent } from '@msdyn365-commerce/core';\nimport { IWriteReviewData, IWriteReviewViewProps } from '@msdyn365-commerce-modules/ratings-reviews';\nimport { generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IWriteReviewProps } from '../definition-extensions/write-review.ext.props.autogenerated';\n\n/**\n * Render Product Image.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductImage = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const primaryImageSource = props.data.product.result?.PrimaryImageUrl;\n const imageUrl = generateImageUrl(primaryImageSource, props.context.request.apiSettings);\n const defaultImageSettings: IImageSettings = {\n viewports: {\n xs: { q: 'w=111&h=111&m=6', w: 111, h: 111 },\n sm: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n md: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n lg: { q: 'w=130&h=130&m=6', w: 130, h: 130 },\n xl: { q: 'w=130&h=130&m=6', w: 130, h: 130 }\n },\n lazyload: true,\n cropFocalRegion: true\n };\n\n return (\n \n );\n};\n\n/**\n * Render Product Description.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst renderProductDescription = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const product = props.data.product.result;\n return (\n \n
{renderProductImage(props)}
\n
\n
{product?.Name}
\n
{product?.ItemId}
\n
\n
\n );\n};\n\n/**\n * Create Write Review Modal.\n * @param props - WriteReview ViewProps.\n * @returns JSX Element.\n */\nconst createReviewModal = (props: IWriteReviewViewProps & IWriteReviewProps): JSX.Element => {\n const { resources, moduleProps, reviewModal } = props;\n\n return (\n \n {reviewModal.modalHeader}\n \n \n \n {renderProductDescription(props)}\n \n
{resources.selectRatingLabel}
\n {reviewModal.rating}\n
\n
\n \n {resources.reviewTitleLabel}\n {reviewModal.titleInput}\n \n \n {resources.reviewTextLabel}\n {reviewModal.textInput}\n \n {reviewModal.privacyPolicyUrl}\n {reviewModal.error}\n
\n
\n \n {reviewModal.submitButton}\n {reviewModal.cancelButton}\n \n
\n );\n};\n\n/**\n * WriteReview view.\n * @param props - WriteReview ViewProps.\n * @returns WriteReview view module.\n */\nconst WriteReviewView: React.FC> = props => {\n const { config, heading, signInMessage, signInButton, modalToggle, moduleProps } = props;\n const { paragraph } = config;\n const isAuthenticated = props.context.request.user.isAuthenticated;\n const text = paragraph && ;\n\n return (\n \n {heading}\n {!isAuthenticated ? (\n <>\n {signInMessage}\n {signInButton}\n \n ) : (\n <>\n {text}\n {modalToggle}\n {createReviewModal(props)}\n \n )}\n \n );\n};\n\nexport default WriteReviewView;\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 { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\r\n\r\nimport { ICategoryPromotionalContentData } from './navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuData {\r\n categories: AsyncResult;\r\n}\r\n\r\nexport interface IMenuItemData {\r\n id?: number;\r\n linkText?: string;\r\n linkURL?: string;\r\n imageSource?: string;\r\n imageDestinationURL?: string;\r\n subMenu?: IMenuItemData[];\r\n promotionalContent?: ICategoryPromotionalContentData[];\r\n menuSource?: string;\r\n shouldOpenNewTab?: boolean;\r\n ariaLabel?: string;\r\n}\r\n\r\n/**\r\n *\r\n * Menu type index id.\r\n */\r\nexport enum MenuTypeIndexId {\r\n Cms = 1000,\r\n Retail = 5000\r\n}\r\n\r\n/**\r\n *\r\n * Menu type source.\r\n */\r\nexport enum MenuSource {\r\n Cms = 'Cms',\r\n Retail = 'Retail'\r\n}\r\n","/**\r\n * Copyright (c) Microsoft Corporation\r\n * All rights reserved. See License.txt in the project root for license information.\r\n * INavigationMenu contentModule Interface Properties\r\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\r\n */\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\nexport const enum navigationMenuSource {\r\n all = 'all',\r\n retailServerOnly = 'retailServerOnly',\r\n cmsOnly = 'cmsOnly'\r\n}\r\n\r\nexport interface INavigationMenuConfig extends Msdyn365.IModuleConfig {\r\n navigationMenuSource?: navigationMenuSource;\r\n cmsNavItems?: ICmsNavItemsData[];\r\n enableMultilevelMenu?: boolean;\r\n enabletopMenu?: boolean;\r\n menuLevelSupport?: number;\r\n rootMenuNavigation?: string;\r\n displayCategoryImage?: boolean;\r\n displayPromotionalImage?: boolean;\r\n categoryPromotionalContent?: ICategoryPromotionalContentData[];\r\n categoryImageSettings?: Msdyn365.IImageSettings;\r\n className?: string;\r\n clientRender?: boolean;\r\n}\r\n\r\nexport interface INavigationMenuResources {\r\n menuAriaLabel: string;\r\n backButtonAriaLabel: string;\r\n allCategoryMenuText: string;\r\n}\r\n\r\nexport interface ICmsNavItemsData {\r\n linkText?: string;\r\n linkUrl?: Msdyn365.ILinkData;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n openInNewTab?: boolean;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ICategoryPromotionalContentData {\r\n categoryName?: string;\r\n image: Msdyn365.IImageData;\r\n text?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n subMenus?: ISubMenusData[];\r\n}\r\n\r\nexport interface ISubMenusData {\r\n linkText?: string;\r\n linkUrl: Msdyn365.ILinkData;\r\n ariaLabel?: string;\r\n image?: Msdyn365.IImageData;\r\n imageLink?: Msdyn365.ILinkData;\r\n}\r\n\r\nexport interface INavigationMenuProps extends Msdyn365.IModule {\r\n resources: INavigationMenuResources;\r\n config: INavigationMenuConfig;\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n *\r\n * Commented out IActionContext and getCategoryUrl due to removal of the \"All\" node in hierarchy navigation\r\n */\r\n\r\nimport { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport MsDyn365, { /*IActionContext,*/ IGridSettings, IImageSettings, isEmptyOrNullObject } from '@msdyn365-commerce/core';\r\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\r\nimport { ArrayExtensions/*, getCategoryUrl*/ } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { addThrottledEvent, IModuleProps, INodeProps } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport { computed, observable } from 'mobx';\r\nimport * as React from 'react';\r\nimport { IMenuItemData, INavigationMenuData, MenuSource, MenuTypeIndexId } from './navigation-menu.data';\r\nimport { ICmsNavItemsData, INavigationMenuProps, ISubMenusData, navigationMenuSource } from './navigation-menu.props.autogenerated';\r\n\r\nexport interface INavigationMenuViewProps extends INavigationMenuProps {\r\n\tclassName: string;\r\n\tmenuItemData: IMenuItemData[];\r\n\tNavigation: IModuleProps;\r\n\tMenuList: INodeProps;\r\n\tListItem: INodeProps;\r\n\tLink: INodeProps;\r\n\tButton: INodeProps;\r\n\tSpan: INodeProps;\r\n\tImageContainer: INodeProps;\r\n\tMobileDescriptionContainer: INodeProps;\r\n\tMobileBackButton: INodeProps;\r\n\tMobileDescriptionLabel: INodeProps;\r\n\timageSettings: IImageSettings;\r\n\tgridSettings: IGridSettings;\r\n\tisMobileView: boolean;\r\n\tDivContainer?: INodeProps;\r\n\tImageDivContainer?: INodeProps;\r\n\tshowCategoryImage?: boolean;\r\n\tshowPromotionalContent?: boolean;\r\n}\r\n\r\nexport type GridSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport interface INavigationMenuState {\r\n\tisMobile: boolean;\r\n}\r\n\r\n/**\r\n *\r\n * NavigationMenu component.\r\n * @extends {React.PureComponent>}\r\n */\r\nclass NavigationMenu extends React.PureComponent, INavigationMenuState> {\r\n\tprivate static CMSItemIdInit: number = MenuTypeIndexId.Cms;\r\n\tprivate static RSItemIdInit: number = MenuTypeIndexId.Retail;\r\n\tprivate resizeThrottledEventHandler?: (event: Event) => void;\r\n\tprivate menuItemList: IMenuItemData[];\r\n\tprivate isRetail: boolean = true;\r\n\tprivate isCMS: boolean = true;\r\n\r\n\t@observable\r\n\tprivate viewport: GridSize;\r\n\r\n\tpublic static getFriendlyName(locale: string, nameTranslations?: TextValueTranslation[]): string | undefined {\r\n\t\tlet nameTranslation: TextValueTranslation | undefined;\r\n\t\tif (locale && nameTranslations && nameTranslations.length > 0) {\r\n\t\t\tnameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\r\n\t\t}\r\n\t\treturn nameTranslation && nameTranslation.Text;\r\n\t}\r\n\r\n\tconstructor(props: INavigationMenuProps) {\r\n\t\tsuper(props);\r\n\t\tthis._updateViewport = this._updateViewport.bind(this);\r\n\t\tthis.viewport =\tprops.context.request && props.context.request.device && props.context.request.device.Type === 'Mobile' ? 'xs' : 'lg';\r\n\t\tthis._setNavigationSource(this.props.config && this.props.config.navigationMenuSource);\r\n\t\tthis.state = { isMobile: this.isMobile };\r\n\t\tthis.menuItemList = [];\r\n\t}\r\n\r\n\t@computed get isMobile(): boolean {\r\n\t\treturn this.viewport === 'xs' || this.viewport === 'sm' || this.viewport === 'md';\r\n\t}\r\n\r\n\tpublic componentDidMount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\tthis.resizeThrottledEventHandler = addThrottledEvent(window, 'resize', this._updateViewport as EventListener);\r\n\t\t}\r\n\t\tthis._updateViewport();\r\n\t}\r\n\r\n\tpublic componentWillUnmount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\twindow.removeEventListener('resize', this.resizeThrottledEventHandler!, false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic render(): JSX.Element | null {\r\n\t\tthis.menuItemList = this._mapData();\r\n\t\tif (isEmptyOrNullObject(this.props.data)) {\r\n\t\t\tthis.props.telemetry.error('Navigatiomenu returned null');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tconst defaultImageSettings: IImageSettings = {\r\n\t\t\tviewports: {\r\n\t\t\t\txs: { q: 'w=224&h=300&m=6', w: 0, h: 0 },\r\n\t\t\t\txl: { q: 'w=224&h=300&m=6', w: 0, h: 0 }\r\n\t\t\t},\r\n\t\t\tlazyload: true\r\n\t\t};\r\n\r\n\t\tconst viewProps = {\r\n\t\t\t...this.props,\r\n\t\t\t...this.state,\r\n\t\t\timageSettings: defaultImageSettings,\r\n\t\t\tgridSettings: this.props.context.request.gridSettings,\r\n\t\t\tNavigation: {\r\n\t\t\t\tmoduleProps: this.props,\r\n\t\t\t\tclassName: classnames('ms-nav', this.props.config.className, this.state.isMobile ? 'mobile-vp' : 'desktop-vp'),\r\n\t\t\t\ttag: 'nav',\r\n\t\t\t\trole: this.isMobile ? 'listbox' : 'navigation'\r\n\t\t\t},\r\n\t\t\tMenuList: {\r\n\t\t\t\tclassName: 'ms-nav__list',\r\n\t\t\t\ttag: 'ul',\r\n\t\t\t\trole: this.isMobile ? 'listbox' : 'menu'\r\n\t\t\t},\r\n\t\t\tListItem: {\r\n\t\t\t\tclassName: 'ms-nav__list__item',\r\n\t\t\t\trole: 'presentation',\r\n\t\t\t\ttag: 'li'\r\n\t\t\t},\r\n\t\t\tshowCategoryImage: this.props.config.displayCategoryImage ?? false,\r\n\t\t\tshowPromotionalContent: this.props.config.displayPromotionalImage ?? false,\r\n\t\t\tLink: {\r\n\t\t\t\ttag: 'a',\r\n\t\t\t\tclassName: 'ms-nav__list__item__link',\r\n\t\t\t\trole: this.isMobile ? 'option' : 'menuitem'\r\n\t\t\t},\r\n\t\t\tDivContainer: {\r\n\t\t\t\ttag: 'div',\r\n\t\t\t\tclassName: 'ms-nav__feature'\r\n\t\t\t},\r\n\t\t\tImageDivContainer: {\r\n\t\t\t\ttag: 'div',\r\n\t\t\t\tclassName: 'category-image',\r\n\t\t\t\trole: 'tabpanel'\r\n\t\t\t},\r\n\t\t\tButton: {\r\n\t\t\t\tclassName: 'ms-nav__list__item__button',\r\n\t\t\t\ttag: 'button',\r\n\t\t\t\trole: this.isMobile ? 'option' : 'menuitem',\r\n\t\t\t\tonClick: this.props\r\n\t\t\t},\r\n\t\t\tImageContainer: {\r\n\t\t\t\tclassName: 'ms-nav__list__item__image'\r\n\t\t\t},\r\n\t\t\tSpan: {\r\n\t\t\t\tclassName: 'ms-nav__list__item__span',\r\n\t\t\t\ttag: 'span'\r\n\t\t\t},\r\n\t\t\tMobileDescriptionContainer: {\r\n\t\t\t\tclassName: 'ms-nav__list__mobile__container'\r\n\t\t\t},\r\n\t\t\tMobileBackButton: {\r\n\t\t\t\tclassName: 'ms-nav__list__mobile__container__button',\r\n\t\t\t\ttag: 'button',\r\n\t\t\t\t'aria-label': this.props.resources.backButtonAriaLabel,\r\n\t\t\t\tonClick: this.props\r\n\t\t\t},\r\n\t\t\tMobileDescriptionLabel: {\r\n\t\t\t\tclassName: 'ms-nav__list__mobile__container__span',\r\n\t\t\t\ttag: 'span'\r\n\t\t\t},\r\n\t\t\tisMobileView: this.state.isMobile,\r\n\t\t\tmenuItemData: this.menuItemList,\r\n\t\t\tclassName: classnames('ms-nav', this.props.config.className)\r\n\t\t};\r\n\t\treturn this.props.renderView(viewProps) as React.ReactElement;\r\n\t}\r\n\r\n\tprivate _mapData(): IMenuItemData[] {\r\n\t\tconst { data, config } = this.props;\r\n\t\tconst mergedData: IMenuItemData[] = [];\r\n\t\tif (this.isRetail && data && data.categories && data.categories.result && data.categories.result.length > 0) {\r\n\t\t\tdata.categories.result.map((item: CategoryHierarchy, index) =>\r\n\t\t\t\tmergedData.push(this._constructMenuItemData(item, undefined, true, index, true))\r\n\t\t\t);\r\n\t\t}\r\n\t\tif (this.isCMS && config.cmsNavItems && config.cmsNavItems.length > 0) {\r\n\t\t\tconfig.cmsNavItems.map((item: ICmsNavItemsData, idx: number) =>\r\n\t\t\t\tmergedData.push(this._constructMenuItemData(undefined, item, false, idx + 1))\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn this._constructTopMenuItemData(mergedData);\r\n\t}\r\n\r\n\tprivate _constructTopMenuItemData(mergedData: IMenuItemData[]): IMenuItemData[] {\r\n\t\tconst enableTopLevelMenu = this.props.config.enabletopMenu ?? false;\r\n\t\tif (!enableTopLevelMenu) {\r\n\t\t\treturn mergedData;\r\n\t\t}\r\n\t\tconst mergedRootMenuData: IMenuItemData[] = [];\r\n\t\tconst topMenu = {\r\n\t\t\tid: 1,\r\n\t\t\tlinkText: this.props.config.rootMenuNavigation ?? '...',\r\n\t\t\tlinkURL: '#',\r\n\t\t\timageSource: undefined,\r\n\t\t\tsubMenu: mergedData\r\n\t\t} as IMenuItemData;\r\n\t\tmergedRootMenuData.push(topMenu);\r\n\r\n\t\treturn mergedRootMenuData;\r\n\t}\r\n\r\n\tprivate _constructMenuItemData(\r\n\t\tretailItem?: CategoryHierarchy,\r\n\t\tcmsItem?: ICmsNavItemsData,\r\n\t\tisRetail?: boolean,\r\n\t\tidx?: number,\r\n\t\taddedAllMenu?: boolean\r\n\t): IMenuItemData {\r\n\t\tconst locale =\r\n\t\t\tthis.props.context && this.props.context.request && this.props.context.request.locale\r\n\t\t\t\t? this.props.context.request.locale\r\n\t\t\t\t: 'en-us';\r\n\t\tconst { categoryPromotionalContent } = this.props.config;\r\n\t\tconst cmsItemText = (cmsItem && cmsItem.linkText) || '';\r\n\t\tconst { menuAriaLabel } = this.props.resources;\r\n\r\n\t\t// Filter category promotional data based on category name\r\n\t\tconst promotionalData =\r\n\t\t\tretailItem &&\r\n\t\t\tcategoryPromotionalContent?.filter(promoItem => promoItem.categoryName?.toLowerCase() === retailItem?.Name?.toLowerCase());\r\n\r\n\t\t// First check if image is available from promotional data else read from retail server\r\n\t\tlet imageSource: string = 'empty';\r\n\t\tif (ArrayExtensions.hasElements(retailItem?.Images) && retailItem!.Images[0].Uri) {\r\n\t\t\timageSource = retailItem!.Images[0].Uri;\r\n\t\t}\r\n\t\tif (isRetail) {\r\n\t\t\t// Additional Link code explodes && drops first element (removes root node from hierarchy)\r\n\t\t\treturn {\r\n\t\t\t\tid: NavigationMenu.RSItemIdInit++,\r\n\t\t\t\tlinkText: NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? '',\r\n\t\t\t\tlinkURL: `/${ retailItem && retailItem.Url?.substring(1).split('/').slice(1).join('/')}`,\r\n\t\t\t\timageSource,\r\n\t\t\t\tsubMenu: this._getNestedChildren(retailItem, imageSource, addedAllMenu),\r\n\t\t\t\tpromotionalContent: this.props.config.displayPromotionalImage && promotionalData,\r\n\t\t\t\tmenuSource: MenuSource.Retail,\r\n\t\t\t\tariaLabel: `${NavigationMenu.getFriendlyName(locale, retailItem?.NameTranslations) ?? ''} ${menuAriaLabel}`\r\n\t\t\t} as IMenuItemData;\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tid: NavigationMenu.CMSItemIdInit++,\r\n\t\t\tlinkText: cmsItemText,\r\n\t\t\tlinkURL: (cmsItem && cmsItem.linkUrl && cmsItem.linkUrl.destinationUrl) || '',\r\n\t\t\timageDestinationURL: (cmsItem && cmsItem.imageLink && cmsItem.imageLink.destinationUrl) || '',\r\n\t\t\timageSource: (cmsItem && cmsItem.image && cmsItem.image.src) || '',\r\n\t\t\tsubMenu: this._getCMSNestedChildren(cmsItem),\r\n\t\t\tmenuSource: MenuSource.Cms,\r\n\t\t\tshouldOpenNewTab: cmsItem?.openInNewTab,\r\n\t\t\tariaLabel: `${cmsItemText} ${menuAriaLabel}`\r\n\t\t} as IMenuItemData;\r\n\t}\r\n\r\n\tprivate _getNestedChildren(category?: CategoryHierarchy, imageSourceUrl?: string, addedAllMenu: boolean = false): IMenuItemData[] {\r\n\t\tconst nestedChildren: IMenuItemData[] = [];\r\n\t\tif (!category || !category.Children || category.Children.length === 0){\r\n\t\t\treturn [];\r\n\t\t}\r\n\t\t/* /Removed to hide the root \"ALL\" items, also fixed to remove the bad node in case we decide to bring these back.\r\n\t\tif (!this.props.config.enabletopMenu && addedAllMenu){\r\n\t\t\tconst linkURL = getCategoryUrl(category, (this.props.context as unknown) as IActionContext, {});\r\n\t\t\tnestedChildren.push({\r\n\t\t\t\tlinkText: this.props.resources.allCategoryMenuText,\r\n\t\t\t\timageSource: imageSourceUrl,\r\n\t\t\t\tlinkURL: `/${ linkURL?.substring(1).split('/').slice(1).join('/')}`\r\n\t\t\t});\r\n\t\t}*/\r\n\t\tcategory.Children.map((item: CategoryHierarchy, index) => {\r\n\t\t\tnestedChildren.push(this._constructMenuItemData(item, undefined, true, index, false));\r\n\t\t});\r\n\t\treturn nestedChildren;\r\n\t}\r\n\r\n\tprivate _getCMSNestedChildren(category?: ICmsNavItemsData): IMenuItemData[] {\r\n\t\tconst nestedChildren: IMenuItemData[] = [];\r\n\r\n\t\tif (!category || !category.subMenus || category.subMenus.length === 0) {\r\n\t\t\treturn [];\r\n\t\t}\r\n\r\n\t\tcategory.subMenus.map((item: ISubMenusData, idx: number) => {\r\n\t\t\tnestedChildren.push(this._constructMenuItemData(undefined, item, false, idx));\r\n\t\t});\r\n\t\treturn nestedChildren;\r\n\t}\r\n\r\n\tprivate readonly _setNavigationSource = (sourceType?: navigationMenuSource): void => {\r\n\t\tswitch (sourceType) {\r\n\t\t\tcase navigationMenuSource.retailServerOnly:\r\n\t\t\t\tthis.isRetail = true;\r\n\t\t\t\tthis.isCMS = false;\r\n\t\t\t\tbreak;\r\n\t\t\tcase navigationMenuSource.cmsOnly:\r\n\t\t\t\tthis.isRetail = false;\r\n\t\t\t\tthis.isCMS = true;\r\n\t\t\t\tbreak;\r\n\t\t\tcase navigationMenuSource.all:\r\n\t\t\t\tthis.isRetail = true;\r\n\t\t\t\tthis.isCMS = true;\r\n\t\t\t\tbreak;\r\n\t\t\tdefault:\r\n\t\t}\r\n\t};\r\n\r\n\tprivate _updateViewport(): void {\r\n\t\tthis.viewport = this._getViewport();\r\n\t\tthis.setState({ isMobile: this.isMobile });\r\n\t}\r\n\r\n\tprivate _getViewport(): GridSize {\r\n\t\tconst { context } = this.props;\r\n\r\n\t\t// Always render in mobile viewport on a mobile device\r\n\t\tif (context.request && context.request.device && context.request.device.Type === 'Mobile') {\r\n\t\t\treturn 'xs';\r\n\t\t}\r\n\r\n\t\tif (MsDyn365.isBrowser && window.innerWidth) {\r\n\t\t\tconst gridSettings = context.request.gridSettings;\r\n\t\t\tif (gridSettings) {\r\n\t\t\t\tif (gridSettings.xs && window.innerWidth <= gridSettings.xs.w) {\r\n\t\t\t\t\treturn 'xs';\r\n\t\t\t\t} else if (gridSettings.sm && window.innerWidth <= gridSettings.sm.w) {\r\n\t\t\t\t\treturn 'sm';\r\n\t\t\t\t} else if (gridSettings.md && window.innerWidth <= gridSettings.md.w) {\r\n\t\t\t\t\treturn 'md';\r\n\t\t\t\t} else if (gridSettings.lg && window.innerWidth <= gridSettings.lg.w) {\r\n\t\t\t\t\treturn 'lg';\r\n\t\t\t\t}\r\n\t\t\t\treturn 'xl';\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn 'xs';\r\n\t}\r\n}\r\n\r\nexport default NavigationMenu;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IIframeViewProps } from './iframe';\n\n/**\n *\n * IFrameView component.\n * @extends {React.PureComponent}\n */\nexport class IFrameView extends React.PureComponent {\n public render(): JSX.Element | null {\n const { Heading, IframeContainer, IFrame, alert, cookieConsentAccepted } = this.props;\n\n return (\n \n {alert}\n {cookieConsentAccepted && cookieConsentAccepted ? (\n <>\n {Heading}\n {IFrame}\n \n ) : null}\n \n );\n }\n}\nexport default IFrameView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n\tconst { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n\tconst rowdata =\r\n\t\tproductSpecificationResult &&\r\n\t\tArrayExtensions.hasElements(productSpecificationResult) &&\r\n\t\tproductSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row) && row.props.cellData.props.dangerouslySetInnerHTML);\r\n\treturn rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n\t\t\r\n\t\t\t{props.title}\r\n\t\t\t\r\n\t\t\t\t{rowdata}\r\n\t\t\t\r\n\t\t\r\n\t) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICheckoutExpressPaymentContainerViewProps } from './checkout-express-payment-container';\n\ninterface IContainerItemsComponent {\n isLoadingClassName: string;\n items: React.ReactNode[];\n}\n\nconst ContainerItemsComponent: React.FC = ({ isLoadingClassName, items }) => (\n
{items}
\n);\n\nconst CheckoutExpressPaymentContainerView: React.FC = ({\n checkoutPlainContainerProps,\n items,\n isReady,\n waiting,\n title,\n headerProps\n}) => {\n const isLoadingClassName: string = isReady ? 'showContainer' : 'notShowContainer';\n return (\n \n {title}\n {!isReady && waiting}\n \n \n );\n};\n\nexport default CheckoutExpressPaymentContainerView;\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 getAttributesForSelectedVariant, { AttributesForSelectedVariantInput } from './dataActions/get-attributes-for-selected-variant';\nimport ProductSpecification from './modules/product-specification/product-specification';\nimport ProductSpecificationView from './modules/product-specification/product-specification.view';\n\nexport * from './modules/product-specification/components/product-specification-table-stucture';\nexport * from './modules/product-specification/product-specification';\nexport * from './modules/product-specification/product-specification.data';\nexport * from './modules/product-specification/product-specification.props.autogenerated';\nexport * from './modules/product-specification/product-specification.view';\nexport { AttributesForSelectedVariantInput, getAttributesForSelectedVariant, ProductSpecification, ProductSpecificationView };\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport MsDyn365 from '@msdyn365-commerce/core';\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 { INodeProps, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartViewProps, IOrderSummaryErrors } from './cart';\nimport { ICartlinesViewProps } from './components/cart-line-items';\nimport { ICartLineItemViewProps } from './components/cart-line-items-promotion';\n\nconst _renderCartlines = (\n cartLines: ICartlinesViewProps[] | undefined,\n cartEmptyText: string,\n CartlinesWrapper: INodeProps,\n storeSelector: React.ReactNode | undefined,\n backToShoppingButton: React.ReactNode,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n cartDataResult: boolean\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n if (cartLines) {\n return cartLines.map(cartLine => {\n return (\n
\n {cartLine.cartline}\n {storeSelector && cartLine.pickUpInStore ? (\n {cartLine.pickUpInStore.defaultComponent}\n ) : null}\n {cartLine.addToOrderTemplate ? (\n \n {cartLine.remove}\n {cartLine.addToWishlist}\n {cartLine.addToOrderTemplate}\n \n ) : (\n <>\n {cartLine.remove}\n {cartLine.addToWishlist}\n \n )}\n
\n );\n });\n }\n return cartDataResult ? (\n
\n

{cartEmptyText}

\n {backToShoppingButton}\n
\n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Method will render error block.\n * @param errorData -The order summary errors interface.\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 * Method will render invoice summary lines.\n * @param invoiceSummaryLines -The invoicesummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview 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 * Method will render order summary lines.\n * @param orderSummaryLines -The ordersummary lines interface.\n * @param OrderSummaryItems -The order summary items props.\n * @param props -The cartview 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 {props.promoCode}\n {orderSummaryLines.subtotal}\n {orderSummaryLines.shipping}\n {orderSummaryLines.otherCharge}\n {orderSummaryLines.tax}\n {orderSummaryLines.totalDiscounts ? orderSummaryLines.totalDiscounts : null}\n {orderSummaryLines.orderTotal}\n \n );\n};\n\n/**\n * Method will render cart promotions.\n * @param promotions -The cartline item 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 * Method will render cartlines group title.\n * @param cartLine -The cartline view props.\n * @param titleSeparate -The title separate.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, titleSeparate: string) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n return (\n <>\n \n {isBopisSelected ? (\n

\n {cartLine.pickUpInStore?.deliveryOption}\n {titleSeparate}\n {cartLine.pickUpInStore?.orgUnitName}\n

\n ) : null}\n
\n \n );\n};\n\n/**\n * Method will render cartlines groups header title.\n * @param pickUpText -The pickup text for group.\n * @param shippingText -The shipping text for group.\n * @param emailShippingText -The email shipping text for group.\n * @param titleSeparate -The title separator.\n * @param cartLine -The cartline view props.\n * @param emailDeliveryModeCode -The email delivery code from channel.\n * @returns Jsx element.\n */\nconst renderCartLinesGroupHeader = (\n pickUpText: string,\n shippingText: string,\n emailShippingText: string,\n titleSeparate: string,\n cartLine: ICartlinesViewProps,\n emailDeliveryModeCode?: string\n) => {\n const isBopisSelected: boolean | undefined = cartLine.pickUpInStore?.isBopisSelected;\n let groupTitle: string;\n\n groupTitle = isBopisSelected ? pickUpText : shippingText;\n 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, titleSeparate)}\n
\n \n );\n};\n\n/**\n * Method will render cartlines in groups.\n * @param props -The cartline.\n * @returns Jsx element.\n */\nconst renderCartLinesGroup = (props: ICartViewProps): 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 props.resources.pickUpText,\n props.resources.shippingText,\n props.resources.emailshippingText,\n props.resources.titleSeparate,\n cartlines[0],\n props.context.actionContext.requestContext.channel?.EmailDeliveryModeCode\n )}\n {_renderCartlines(\n cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n
\n );\n })}\n
\n );\n }\n return props.cartDataResult ? (\n
\n
\n

{props.resources.emptyCartText}

\n {props.backToShoppingButton}\n
\n
\n ) : (\n <>{props.waitingComponent}\n );\n};\n\nconst CartView: React.FC = (props: ICartViewProps) => (\n
\n {props.title}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && _renderPromotions(props.promotionOptions)}\n {props.multiplePickUpEnabled ? (\n renderCartLinesGroup(props)\n ) : (\n \n {_renderCartlines(\n props.cartlines,\n props.resources.emptyCartText,\n props.CartlinesWrapper,\n props.storeSelector,\n props.backToShoppingButton,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n \n )}\n {props.orderSummaryHeading && (\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 {props.checkoutAsSignInUserButton}\n {props.checkoutAsGuestButton}\n {props.expressCheckoutButton && ArrayExtensions.hasElements(props.expressCheckoutButton) ? (\n {props.expressCheckoutButton}\n ) : null}\n {props.backToShoppingButton}\n {props.createTemplateFromCartButton}\n \n )}\n {props.storeSelector}\n
\n);\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n IGroup,\n IGroupDelivery,\n IGroups,\n IHelp,\n IOrderDetailsViewProps,\n IOrderInformation,\n IOrderSummary,\n IPaymentMethods,\n ISalesLine\n} from '@msdyn365-commerce-modules/order-management';\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nexport const OrderInfomation: React.FC = ({\n orderInformationProps,\n salesId,\n receiptId,\n createdDate,\n count,\n amount,\n channelReferenceId,\n channelName,\n channelAddress\n}) => (\n \n {channelName}\n {channelAddress}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n {channelReferenceId}\n \n);\n\nexport const SalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const GroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const Group: React.FC = ({ groupProps, delivery, address, salesLinesProps, salesLines, isCashAndCarryTransaction }) => (\n \n {delivery && }\n \n {salesLines && (\n \n {salesLines.map(salesLine => (\n \n {!isCashAndCarryTransaction && salesLine.salesStatus}\n {salesLine.data.deliveryType === 'ship' && salesLine.data.shipment ? salesLine.trackingInfo : null}\n \n \n ))}\n \n )}\n {!delivery.showTimeslot && address}\n {delivery.showTimeslot && (\n \n {address}\n {delivery.pickupDateTimeslot}\n \n )}\n \n \n);\n\nexport const Groups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group, index) => (\n \n ))}\n \n);\n\nexport const OrderSummary: React.FC = ({\n orderSummaryProps,\n heading,\n subtotal,\n shipping,\n tax,\n totalAmount,\n earnedPoints\n}) => (\n \n {heading}\n {subtotal}\n {shipping}\n {tax}\n {totalAmount}\n {earnedPoints}\n \n);\n\nexport const Payment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const Help: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n viewModes,\n tableViewActions,\n table,\n placedBy,\n heading,\n alert,\n loading,\n orderInfomation,\n orderSummary,\n payment,\n help,\n groups\n}) => {\n return (\n \n {placedBy}\n {heading}\n {alert}\n {loading}\n {orderInfomation && }\n {tableViewActions}\n {viewModes}\n {table}\n {groups && }\n \n {orderSummary && }\n {payment && }\n \n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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 { Module } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { IBusinessPartnersViewProps } from './business-partners';\n\n/**\n * View layout of business partner module.\n * @param props - React props of the component.\n * @returns Functional component.\n */\nconst businessPartnersView: React.FC = props => {\n if (props.selectedBusinessPartnerUser) {\n return (\n \n {props.businessPartnersHeading}\n {props.catalogLoadingIndicator}\n {props.catalogLoadingErrorMessage}\n \n );\n }\n\n if (props.cookieConsentNotGivenErrorMessage) {\n return (\n \n {props.businessPartnersHeading}\n {props.cookieConsentNotGivenErrorMessage}\n \n );\n }\n\n return (\n \n {props.backToBusinessPartnersLink}\n {props.businessPartnersHeading}\n {props.businessPartnersTable}\n {props.businessPartnerUsersTable}\n \n );\n};\n\nexport default businessPartnersView;\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","/*!\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 { ICheckoutLoyaltyAdd, ICheckoutLoyaltyRewardPoint, ICheckoutLoyaltyShow, ICheckoutLoyaltyViewProps } from './checkout-loyalty';\n\nconst AddCheckoutLoyalty: React.FC = ({\n heading,\n cardNumber,\n drawer,\n rewardPoints,\n loyaltyAmountContainer,\n appliedLoyaltyAmountContainer,\n loyaltyAmountLabel,\n loyaltyAmountInput,\n loyaltyAmountApplyButton,\n showAppliedAmount,\n loyaltyAmountAppliedText,\n loyaltyAmountAppliedPrice,\n loyaltyAmountRemoveButton\n}) => {\n return (\n <>\n {heading}\n {cardNumber}\n \n {rewardPoints.map((rewardPoint: ICheckoutLoyaltyRewardPoint) => {\n return (\n \n {rewardPoint.title}\n {rewardPoint.availablePointsText}\n {rewardPoint.activePoints}\n {rewardPoint.expiringPointsText}\n {rewardPoint.expiringPoints}\n \n );\n })}\n \n \n {loyaltyAmountLabel}\n {loyaltyAmountInput}\n {loyaltyAmountApplyButton}\n {showAppliedAmount && (\n \n {loyaltyAmountAppliedText}\n {loyaltyAmountAppliedPrice}\n {loyaltyAmountRemoveButton}\n \n )}\n \n \n );\n};\n\nconst ShowCheckoutLoyalty: React.FC = ({ heading, coveredAmountText, amount }) => {\n return (\n <>\n {heading}\n {coveredAmountText}\n {amount}\n \n );\n};\n\nconst CheckoutLoyaltyView: React.FC = props => {\n const { checkoutLoyalty, checkoutErrorRef, alert, viewState, showLoyalty, addLoyalty } = props;\n\n return (\n \n {alert}\n {viewState.isShowLoyalty && }\n {viewState.isShowAddLoyalty && }\n \n );\n};\n\nexport default CheckoutLoyaltyView;\n","/*!\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","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { AsyncResult } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { IHeaderViewProps } from '@msdyn365-commerce-modules/header';\nimport { Collapse, Drawer, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport classnames from 'classnames';\nimport * as React from 'react';\n\nconst headerView: React.FC = props => {\n const { HeaderTag, HeaderContainer, HeaderTopBarContainer, Divider } = props;\n return (\n \n \n \n {props.navIcon}\n {props.logo}\n {_renderReactFragment(props.search)}\n {props.preferredStore}\n {_renderAccountBlock(props, false)}\n {props.wishListIconDesktop}\n \n {props.cartIcon}\n {_renderReactFragment(props.siteOptions)}\n \n {_renderCollapseMenu(props)}\n {_renderReactFragment(props.menuBar)}\n \n \n );\n};\n\nfunction _renderCollapseMenu(props: IHeaderViewProps): JSX.Element | null {\n const { Divider, MobileMenuLinksContainer, mobileMenuCollapsed } = props;\n return (\n \n \n {_renderReactFragment(props.search)}\n {_renderMobileAccountBlock(props, true)}\n {props.wishListIconMobile}\n {props.siteOptions}\n \n \n {_renderReactFragment(props.menuBar)}\n \n );\n}\n\nconst renderCustomerName = (accountInformation: AsyncResult): React.ReactChild => {\n const customer = accountInformation && accountInformation.result;\n return <>{customer ? customer.FirstName || customer.Name : ''};\n};\n\nfunction _renderMobileAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const { AccountInfoDropdownParentContainer, signOutLink, signInLink, data, accountLinks } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n 'ms-header__drawer',\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n\n if (accountLinks) {\n return (\n \n
    \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n
    \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n return null;\n}\n\nfunction _renderAccountBlock(props: IHeaderViewProps, renderForMobile: boolean): JSX.Element | null {\n const {\n AccountInfoDropdownParentContainer,\n AccountInfoDropdownPopoverConentContainer,\n accountInfoDropdownButton,\n signOutLink,\n signInLink,\n accountLinks\n } = props;\n\n if (AccountInfoDropdownParentContainer) {\n const accountClassName = classnames(\n AccountInfoDropdownParentContainer.className,\n renderForMobile ? 'account-mobile' : 'account-desktop'\n );\n if (AccountInfoDropdownPopoverConentContainer) {\n return (\n \n {accountInfoDropdownButton}\n \n {accountLinks ? accountLinks.map((link: React.ReactNode) => link) : false}\n {signOutLink}\n \n \n );\n } else if (signInLink) {\n return (\n \n {signInLink}\n \n );\n }\n }\n\n return null;\n}\n\nfunction _renderReactFragment(items: React.ReactNode[]): JSX.Element | null {\n return (\n <>\n {items && items.length > 0\n ? items.map((slot: React.ReactNode, index: number) => {\n return {slot};\n })\n : null}\n \n );\n}\n\nexport default headerView;\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 { IOrderDetailsViewProps } from './order-details';\n\nexport const OrderDetailsOrderInfomation: 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 {channelReferenceId}\n {salesId}\n {receiptId}\n {createdDate}\n {count}\n {amount}\n \n);\n\nexport const OrderDetailsSalesLine: React.FC = ({ salesLineProps, salesLine, buyAgainButton, errors }) => (\n \n {salesLine}\n {buyAgainButton}\n {errors}\n \n);\n\nexport const OrderDetailsGroupDelivery: React.FC = ({ deliveryProps, heading, count }) => (\n \n {heading}\n {count}\n \n);\n\nexport const OrderDetailsGroup: React.FC = ({\n groupProps,\n delivery,\n address,\n salesLinesProps,\n salesLines,\n isCashAndCarryTransaction\n}) => (\n \n {delivery && }\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\nexport const OrderDetailsGroups: React.FC = ({ groupsProps, groups }) => (\n \n {groups.map((group: IGroup, index: number) => (\n \n ))}\n \n);\n\nexport const OrderDetailsOrderSummary: 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 OrderDetailsPayment: React.FC = ({ paymentMethodsProps, title, methods }) => (\n \n {title}\n {methods}\n \n);\n\nexport const OrderDetailsHelp: React.FC = ({ helpProps, needHelpLabel, helpLineNumberLabel, contactNumber }) => (\n \n {needHelpLabel}\n {helpLineNumberLabel}\n {contactNumber}\n \n);\n\nconst OrderDetailsView: React.FC = ({\n moduleProps,\n tableViewActions,\n viewModes,\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 {orderSummary && }\n {payment && }\n {help && }\n \n );\n};\n\nexport default OrderDetailsView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n\tconst { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n\tconst rowdata =\r\n\t\tproductSpecificationResult &&\r\n\t\tArrayExtensions.hasElements(productSpecificationResult) &&\r\n\t\tproductSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row) && row.props.cellData.props.dangerouslySetInnerHTML);\r\n\treturn rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n\t\t\r\n\t\t\t{props.title}\r\n\t\t\t\r\n\t\t\t\t{rowdata}\r\n\t\t\t\r\n\t\t\r\n\t) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport {\n ICartLineItemViewProps,\n ICartlinesViewProps,\n ICartResources,\n ICartViewProps,\n IOrderSummaryErrors\n} from '@msdyn365-commerce-modules/cart';\nimport { IInvoiceSummaryLines } from '@msdyn365-commerce-modules/invoice-payment-summary';\nimport { IOrderSummaryLines } from '@msdyn365-commerce-modules/order-summary-utilities';\nimport { ArrayExtensions, StringExtensions } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n Button,\n getPayloadObject,\n getTelemetryAttributes,\n INodeProps,\n ITelemetryContent,\n Node,\n TelemetryConstant\n} from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICartProps as ICartExtensionProps } from '../definition-extensions/cart.ext.props.autogenerated';\n\n/**\n * Toggle Bopis Function.\n * @param cartLine -CartLine.\n * @param isBopisSelected -Boolean.\n * @returns Toggle Bopis.\n */\nconst toggleBopisHandler = (cartLine: ICartlinesViewProps, isBopisSelected: boolean) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(!isBopisSelected);\n};\n\n/**\n * Change Store Function.\n * @param cartLine -CartLine.\n * @returns Toggle Bopis.\n */\nconst onChangeStoreHandler = (cartLine: ICartlinesViewProps) => () => {\n cartLine.pickUpInStore?.callbacks.toggleBopis(true);\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for BOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const {\n shipInsteadDisplayText,\n shipToAddressDisplayText,\n pickItUpDisplayText,\n pickUpAtStoreWithLocationText,\n changeStoreDisplayText\n } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n \n
    \n {isBopisSelected ? (\n {pickUpAtStoreWithLocationText}\n ) : (\n {shipToAddressDisplayText}\n )}\n
    \n {isBopisSelected && (\n
    \n {cartLine.pickUpInStore.orgUnitName}\n \n
    \n )}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n
    \n );\n};\n\n/**\n * Render Bopis block.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderGroupBopisBlock = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n emailDeliveryModeCode?: string\n): JSX.Element | null => {\n // If it is electronic item cart line, then return null for GroupBOPISBlock.\n if (!cartLine.pickUpInStore || !storeSelector || cartLine.data?.cartline.DeliveryMode === emailDeliveryModeCode) {\n return null;\n }\n\n const { changeStoreDisplayText, shipInsteadDisplayText, pickItUpDisplayText } = resources;\n\n const isBopisSelected = cartLine.pickUpInStore.isBopisSelected;\n\n const payLoad = getPayloadObject('click', telemetryContent!, TelemetryConstant.PickupInStore);\n const puckUpinStoreAttribute = getTelemetryAttributes(telemetryContent!, payLoad);\n\n return (\n <>\n {isBopisSelected ? (\n \n ) : null}\n \n {isBopisSelected ? shipInsteadDisplayText : pickItUpDisplayText}\n \n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - FLag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartLine = (\n cartLine: ICartlinesViewProps,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element => {\n if (cartLine.error === resources.outOfStockErrorMessage) {\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (isMultiplePickUp) {\n return (\n \n {renderGroupBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n if (cartLine.addToOrderTemplate) {\n return (\n \n {cartLine.addToOrderTemplate}\n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n }\n\n return (\n \n {cartLine.addToWishlist}\n {cartLine.remove}\n \n );\n};\n\n/**\n * Render Cart Lines.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlinesInternal = (\n cartLines: ICartlinesViewProps[],\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n return cartLines.map((cartLine, index) => {\n const itemIndex = index;\n return (\n
    \n {cartLine.cartline}\n \n {isMultiplePickUp\n ? null\n : renderBopisBlock(cartLine, resources, storeSelector, telemetryContent, emailDeliveryModeCode)}\n {renderCartLine(cartLine, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n
    \n );\n });\n};\n\n/**\n * Render Cart Lines.\n * @param props - The cart line props.\n * @param cartLines - The cart line view props.\n * @param resources - Module resource strings.\n * @param storeSelector - Store selector element.\n * @param waitingComponent - Waiting component element.\n * @param cartLoadingStatus - Cart loading status string.\n * @param isCartDataResult - Flag to check if there is cart data.\n * @param telemetryContent - The telemetry object.\n * @param isMultiplePickUp - Flag to check if there multiple pickups.\n * @param emailDeliveryModeCode - The email delivery mode code.\n * @returns JSX Element.\n */\nconst renderCartlines = (\n props: ICartViewProps & ICartExtensionProps<{}>,\n cartLines: ICartlinesViewProps[] | undefined,\n resources: ICartResources,\n storeSelector: React.ReactNode | undefined,\n waitingComponent: React.ReactNode,\n cartLoadingStatus: string,\n isCartDataResult: boolean,\n telemetryContent?: ITelemetryContent,\n isMultiplePickUp?: boolean,\n emailDeliveryModeCode?: string\n): JSX.Element[] | JSX.Element => {\n if (cartLoadingStatus) {\n return <>{cartLoadingStatus};\n }\n\n // Props.CartlinesWrapper is only required on cart lines and when multiple pickup mode is disabled. This is also required to handle the empty cart styling.\n // Else, empty cart multiple pickup mode is disabled falls under the other cart line wrapper which is creating issue with Empty cart scenario.\n if (cartLines) {\n return props.multiplePickUpEnabled ? (\n renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)\n ) : (\n \n {renderCartlinesInternal(cartLines, resources, storeSelector, telemetryContent, isMultiplePickUp, emailDeliveryModeCode)}\n \n );\n }\n\n return isCartDataResult ? (\n
    \n
    {props.slots.emptyCart}
    \n
    \n ) : (\n <>{waitingComponent}\n );\n};\n\n/**\n * Render Cart Lines group title.\n * @param cartLine - The cart line view props.\n * @param resources - Module resource strings.\n * @param count - Count of products.\n * @returns JSX Element.\n */\nconst renderCartLinesGroupTitle = (cartLine: ICartlinesViewProps, resources: ICartResources, count: number) => {\n const isBopisSelected = cartLine.pickUpInStore?.isBopisSelected;\n const { itemLabel, itemsLabel } = resources;\n const itemCountOne: number = 1;\n const suffix = count > itemCountOne ? itemsLabel : itemLabel;\n const countTitle = `(${count} ${suffix})`;\n return (\n <>\n \n {isBopisSelected ? (\n

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

    \n ) : null}\n

    {countTitle}

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

    \n

    {groupTitle}

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

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

    \n );\n return (\n
    \n {props.checkoutBlockedDueToUnavailableFunds}\n {updatedTitle}\n
    {props.orderSummaryLineitems?.orderTotal}
    \n {renderOrderSummaryCheckoutButton(props)}\n {!props.cart?.hasInvoiceLine && props.promotionOptions && renderPromotions(props.promotionOptions)}\n {props.cart?.hasInvoiceLine || props.multiplePickUpEnabled\n ? renderCartLinesGroup(props, props.resources)\n : renderCartlines(\n props,\n props.cartlines,\n props.resources,\n props.storeSelector,\n props.waitingComponent,\n props.cartLoadingStatus,\n props.cartDataResult\n )}\n {props.orderSummaryHeading && (\n \n \n {props.orderSummaryHeading}\n {props.cart?.hasInvoiceLine\n ? renderInvoiceSummarylines(props.invoiceSummaryLineitems, props.OrderSummaryItems, props)\n : renderOrderSummarylines(props.orderSummaryLineitems, props.OrderSummaryItems, props)}\n {renderErrorBlock(props.OrderSummaryErrors)}\n \n {renderOrderSummaryCheckout(props)}\n \n )}\n {props.storeSelector}\n
    \n );\n};\n\nexport default CartView;\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { Alert, Module, Node } from '@msdyn365-commerce-modules/utilities';\nimport * as React from 'react';\n\nimport { ICookieComplianceViewProps } from './cookie-compliance';\n\nconst CookieComplianceView: React.FC = props => {\n const { CookieComplianceBanner, AlertProps, Content, acceptButton, text, links } = props;\n\n return (\n \n \n \n {text}\n {links}\n \n {acceptButton}\n \n \n );\n};\nexport default CookieComplianceView;\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { ArrayExtensions, ObjectExtensions } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as React from 'react';\r\n\r\nimport { IProductSpecificationViewProps } from '@msdyn365-commerce-modules/product-specification/src/modules/product-specification/./product-specification';\r\n\r\nconst ProductSpecificationView: React.FC = props => {\r\n\tconst { ProductSpecification, ProductSpecificationTableProps, ProductSpecificationTableBodyProps, productSpecificationResult } = props;\r\n\tconst rowdata =\r\n\t\tproductSpecificationResult &&\r\n\t\tArrayExtensions.hasElements(productSpecificationResult) &&\r\n\t\tproductSpecificationResult.filter(row => !ObjectExtensions.isNullOrUndefined(row) && row.props.cellData.props.dangerouslySetInnerHTML);\r\n\treturn rowdata && ArrayExtensions.hasElements(rowdata) ? (\r\n\t\t\r\n\t\t\t{props.title}\r\n\t\t\t\r\n\t\t\t\t{rowdata}\r\n\t\t\t\r\n\t\t\r\n\t) : null;\r\n};\r\n\r\nexport default ProductSpecificationView;\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { 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","/*!\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","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport MsDyn365, { IImageData, IImageSettings, Image } from '@msdyn365-commerce/core';\r\nimport { ArrayExtensions, generateImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { getPayloadObject, getTelemetryAttributes, getTelemetryObject, IPayLoad, ITelemetryContent, Module, Node, onTelemetryClick } from '@msdyn365-commerce-modules/utilities';\r\nimport classnames from 'classnames';\r\nimport * as React from 'react';\r\nimport { INavigationMenuViewProps } from './navigation-menu';\r\nimport { IMenuItemData } from './navigation-menu.data';\r\n\r\ninterface INavigationState {\r\n\tparentMenu?: number;\r\n\tactiveMenu?: number;\r\n\tcategoryImage?: IImageData[] | null;\r\n\tmobileViewLabelText?: string;\r\n\tcategoryImageAltText: string;\r\n}\r\n\r\n/**\r\n * NavigationMenuView component.\r\n * @extends {React.PureComponent}\r\n */\r\nexport class NavigationMenuView extends React.PureComponent {\r\n\tprivate static isBackTrack: boolean = false;\r\n\tprivate currentLevel: number = 1;\r\n\tprivate readonly sm_text_count = 30;\r\n\tprivate readonly menuNode: React.RefObject;\r\n\tprivate readonly menuItemRef: React.RefObject;\r\n\tprivate readonly telemetryContent: ITelemetryContent;\r\n\tprivate readonly payLoad: IPayLoad;\r\n\r\n\tconstructor(props: INavigationMenuViewProps) {\r\n\t\tsuper(props);\r\n\t\tthis.menuNode = React.createRef();\r\n\t\tthis.menuItemRef = React.createRef();\r\n\t\tthis.state = { activeMenu: undefined, mobileViewLabelText: '', parentMenu: undefined, categoryImageAltText: '' };\r\n\t\tthis._closeSubmenu = this._closeSubmenu.bind(this);\r\n\t\tthis.telemetryContent = getTelemetryObject(\r\n\t\t\tthis.props.context.request.telemetryPageName!,\r\n\t\t\tthis.props.friendlyName,\r\n\t\t\tthis.props.telemetry\r\n\t\t);\r\n\t\tthis.payLoad = getPayloadObject('click', this.telemetryContent, '', '');\r\n\t}\r\n\r\n\tpublic componentDidMount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\tdocument.body.addEventListener('mousedown', this._handleClickOutside);\r\n\t\t\tdocument.body.addEventListener('focusout', this._handleFocusOutside);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic componentDidUpdate(): void {\r\n\t\tif (this.menuItemRef.current?.children[0] && this.props.isMobileView) {\r\n\t\t\t(this.menuItemRef.current.children[0] as HTMLElement).focus();\r\n\t\t}\r\n\t}\r\n\r\n\tpublic componentWillUnmount(): void {\r\n\t\tif (MsDyn365.isBrowser) {\r\n\t\t\tdocument.body.removeEventListener('mousedown', this._handleClickOutside, false);\r\n\t\t\tdocument.body.removeEventListener('focusout', this._handleFocusOutside, false);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic render(): JSX.Element | null {\r\n\t\tconst { isMobileView, MenuList, MobileBackButton, MobileDescriptionContainer, MobileDescriptionLabel, Navigation } = this.props;\r\n\t\tthis.currentLevel = 1;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{isMobileView && this.state.activeMenu !== undefined && (\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{this.state.mobileViewLabelText}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t{this._renderDisplay()}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderDisplay(): JSX.Element[] {\r\n\t\tconst { ListItem, menuItemData, isMobileView } = this.props;\r\n\t\tconst { activeMenu } = this.state;\r\n\t\tconst menuItemList: JSX.Element[] = [];\r\n\t\tif (isMobileView && activeMenu !== undefined && menuItemData.length > 0) {\r\n\t\t\tlet menuItem: IMenuItemData = {};\r\n\t\t\tfor (const menuItemDatum of menuItemData) {\r\n\t\t\t\tif (menuItemDatum && menuItemDatum.id === activeMenu) {\r\n\t\t\t\t\tmenuItem = menuItemDatum;\r\n\t\t\t\t\t!NavigationMenuView.isBackTrack\r\n\t\t\t\t\t\t? this.setState({ parentMenu: undefined })\r\n\t\t\t\t\t\t: this.setState({ parentMenu: undefined, mobileViewLabelText: menuItemDatum.linkText });\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tmenuItem = this._getFromSubMenu(menuItemDatum) as IMenuItemData;\r\n\t\t\t\tif (menuItem && menuItem.id === activeMenu) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tmenuItem && menuItemList.push(\r\n\t\t\t\t\r\n\t\t\t\t\t{' '}\r\n\t\t\t\t\t{this._createMenuItemList(menuItem)}{' '}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tmenuItemData.forEach((item: IMenuItemData, index: number) => {\r\n\t\t\t\tmenuItemList.push(\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this._createMenuItemList(item)}\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\treturn menuItemList;\r\n\t}\r\n\r\n\tprivate _getFromSubMenu(item?: IMenuItemData): IMenuItemData | null {\r\n\t\tconst subMenus = item && item.subMenu;\r\n\t\tif (subMenus && subMenus.length > 0) {\r\n\t\t\tfor (let i = 0; i <= subMenus.length - 1; i++) {\r\n\t\t\t\tif (subMenus[i].id === this.state.activeMenu) {\r\n\t\t\t\t\t!NavigationMenuView.isBackTrack\r\n\t\t\t\t\t\t? this.setState({ parentMenu: item?.id })\r\n\t\t\t\t\t\t: this.setState({ parentMenu: item && item.id, mobileViewLabelText: subMenus[i].linkText });\r\n\t\t\t\t\treturn subMenus[i];\r\n\t\t\t\t}\r\n\t\t\t\tconst found = this._getFromSubMenu(subMenus[i]);\r\n\t\t\t\tif (found) {\r\n\t\t\t\t\treturn found;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.props.context.telemetry.error('Submenu content is empty, module wont render.');\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _createMenuItemList(menuItemData: IMenuItemData): JSX.Element | null {\r\n\t\tif(menuItemData){\r\n\t\t\tif (menuItemData.subMenu && menuItemData.subMenu.length > 0) {\r\n\t\t\t\tif (this.props.isMobileView && this.state.activeMenu !== undefined) {\r\n\t\t\t\t\treturn this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false);\r\n\t\t\t\t}\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t{this._renderButtonMenuItem(menuItemData)}\r\n\t\t\t\t\t\t{this._renderSubMenu(menuItemData.subMenu, menuItemData.id, false)}\r\n\t\t\t\t\t\r\n\t\t\t\t);\r\n\t\t\t} else if (menuItemData.linkText && menuItemData.linkURL && menuItemData.linkURL.length > 0) {\r\n\t\t\t\treturn this._renderLinkMenuItem(menuItemData, menuItemData.id, false, true);\r\n\t\t\t} else if (menuItemData.linkText && !menuItemData.linkURL) {\r\n\t\t\t\treturn this._renderSpanMenuItem(menuItemData, menuItemData.id, true);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.props.context.telemetry.error('Navigation menu content is empty, module wont render.');\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _renderSubMenu(subMenus?: IMenuItemData[], activeMenu?: number, IsSubMenu?: boolean): JSX.Element | null {\r\n\t\tconst { isMobileView, ListItem } = this.props;\r\n\t\tconst enableMultiSupportMenu = this.props.config.enableMultilevelMenu || false;\r\n\t\tconst multiLevelSupportedMenu = this.props.config.menuLevelSupport || 3;\r\n\r\n\t\tif (activeMenu && this.state.activeMenu !== activeMenu) {\r\n\t\t\tthis.props.context.telemetry.error('Navigation Active menu content is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tif (!subMenus || subMenus.length === 0) {\r\n\t\t\tthis.props.context.telemetry.error('Navigation Submenu content is empty, module wont render.');\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet levelClassName: string = '';\r\n\t\tconst menuOptions = subMenus && subMenus.map((option: IMenuItemData, idx: number) => {\r\n\t\t\tconst hasOptions = option.subMenu && option.subMenu.length > 0;\r\n\t\t\tlet menuItem: JSX.Element | null;\r\n\t\t\tif (hasOptions && isMobileView) {\r\n\t\t\t\tmenuItem = this._renderButtonMenuItem(option, activeMenu, idx);\r\n\t\t\t} else {\r\n\t\t\t\tmenuItem = option.linkURL ? this._renderLinkMenuItem(option, idx) : this._renderSpanMenuItem(option);\r\n\t\t\t}\r\n\t\t\tlet subMenu;\r\n\t\t\tconst haveSubmenu = hasOptions && enableMultiSupportMenu && this.currentLevel <= Math.round(multiLevelSupportedMenu) - 1;\r\n\t\t\tif (haveSubmenu) {\r\n\t\t\t\tthis.currentLevel++;\r\n\t\t\t\tlevelClassName = enableMultiSupportMenu ? `level-${this.currentLevel.toString()}` : '';\r\n\t\t\t\tsubMenu = this._renderSubMenu(option.subMenu, isMobileView ? option.id : undefined, true);\r\n\t\t\t}\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{menuItem}\r\n\t\t\t\t\t{subMenu}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t});\r\n\t\treturn this._renderMenu(levelClassName, menuOptions, activeMenu, IsSubMenu);\r\n\t}\r\n\r\n\tprivate _renderButtonMenuItem(option: IMenuItemData, activeMenu?: number, index?: number): JSX.Element | null {\r\n\t\tconst { Button } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{option.linkText}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderLinkMenuItem(option: IMenuItemData, index?: number, hoverEffect: boolean = true, isParent: boolean = false): JSX.Element | null {\r\n\t\tconst { Link } = this.props;\r\n\t\tconst linkText = option.linkText ? option.linkText : '';\r\n\t\tconst imagesource = option.imageSource ? option.imageSource : '';\r\n\t\tthis.payLoad.contentAction.etext = linkText;\r\n\t\tconst attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n\t\tconst className = (linkText.length > this.sm_text_count) ? 'ms-nav__list__item__link sm_txt' : 'ms-nav__list__item__link';\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{option.linkText}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderPromotionalLink(linkText?: string, linkUrl?: string): JSX.Element | null {\r\n\t\tconst { Link } = this.props;\r\n\t\tthis.payLoad.contentAction.etext = linkText;\r\n\t\tconst attributes = getTelemetryAttributes(this.telemetryContent, this.payLoad);\r\n\t\tif (linkText && linkUrl) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t\t\t{linkText}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate _renderSpanMenuItem(option: IMenuItemData, index?: number, isParent: boolean = false): JSX.Element | null {\r\n\t\tconst { Span } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{option.linkText}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _renderMenu(level: string, menuOptions: JSX.Element[], currentItem?: number, submenu?: boolean): JSX.Element | null {\r\n\t\tconst { DivContainer, MenuList, ImageDivContainer, showCategoryImage, showPromotionalContent, isMobileView } = this.props;\r\n\t\tconst categoryImageDisplay =\r\n\t\t\t!isMobileView &&\r\n\t\t\t(showCategoryImage || showPromotionalContent) &&\r\n\t\t\t!ArrayExtensions.hasElements(this.state.categoryImage) &&\r\n\t\t\t!submenu;\r\n\t\tconst promotionalContentDisplay =\r\n\t\t\t!isMobileView && showPromotionalContent && ArrayExtensions.hasElements(this.state.categoryImage) && !submenu;\r\n\t\tconst DivContainerClass = `${this.currentLevel > 2 || categoryImageDisplay ? DivContainer!.className : 'ms-nav__dropped' } ${ level}`;\r\n\t\tthis.currentLevel = 1;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t 2 && 'navmenu-multi-level'\r\n\t\t\t\t\t)}\r\n\t\t\t\t>\r\n\t\t\t\t\t{menuOptions}\r\n\t\t\t\t\r\n\t\t\t\t{categoryImageDisplay && this.state.categoryImage && this.state.categoryImage.map(item => (\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{this.state.categoryImage && this._getCategoryImage(item)}\r\n\t\t\t\t\t\t{promotionalContentDisplay && this._renderPromotionalLink(item.altText, item.additionalProperties?.linkUrl)}\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\tprivate readonly _updateCategoryImage = (categoryImageSrc: string, option: IMenuItemData) => () => {\r\n\t\tconst linkText = option && option.linkText ? option.linkText : '';\r\n\t\tconst promotionalImage: IImageData[] = [{ src: categoryImageSrc, altText: linkText }];\r\n\r\n\t\t// Read category and promotional image in one array\r\n\t\tif (ArrayExtensions.hasElements(option.promotionalContent)) {\r\n\t\t\toption.promotionalContent.map(item => {\r\n\t\t\t\tif (item && item.image) {\r\n\t\t\t\t\tconst imageSrc = item.image.src;\r\n\t\t\t\t\tconst promotionalItemImageSettings = item.image.imageSettings;\r\n\t\t\t\t\tpromotionalImage.push({\r\n\t\t\t\t\t\tsrc: imageSrc,\r\n\t\t\t\t\t\taltText: item.text,\r\n\t\t\t\t\t\timageSettings: promotionalItemImageSettings,\r\n\t\t\t\t\t\tadditionalProperties: { linkUrl: item.linkUrl.destinationUrl }\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\tthis.setState({\r\n\t\t\tcategoryImage: promotionalImage.length > 0 ? promotionalImage : [{ src: 'empty' }],\r\n\t\t\tcategoryImageAltText: linkText\r\n\t\t});\r\n\t};\r\n\r\n\tprivate readonly _handleDropdownToggle = (data: IMenuItemData, parentId?: number) => () => {\r\n\t\tif (!this.props.isMobileView) {\r\n\t\t\tthis.setState({\r\n\t\t\t\tactiveMenu: this.state.activeMenu && this.state.activeMenu === data.id! ? undefined : data.id!,\r\n\t\t\t\tparentMenu: parentId\r\n\t\t\t});\r\n\t\t\tif (this.props.showCategoryImage) {\r\n\t\t\t\tthis._updateCategoryImage(data.imageSource!, data)();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tNavigationMenuView.isBackTrack = false;\r\n\t\t\tthis.setState({\r\n\t\t\t\tactiveMenu: data.id,\r\n\t\t\t\tmobileViewLabelText: data.linkText!,\r\n\t\t\t\tparentMenu: parentId\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tprivate readonly _handleGoBack = () => () => {\r\n\t\tNavigationMenuView.isBackTrack = true;\r\n\t\tthis.setState({ activeMenu: this.state.parentMenu });\r\n\t};\r\n\r\n\t/**\r\n\t * Method to handle click outside of menu.\r\n\t * @param event -HTML event.\r\n\t */\r\n\tprivate readonly _handleClickOutside = (event: MouseEvent) => {\r\n\t\tif (this.menuNode.current && !this.menuNode.current.contains(event.target as Node)) {\r\n\t\t\tthis.setState({activeMenu: undefined, mobileViewLabelText: '', categoryImage: null\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Method to handle click outside of menu.\r\n\t * @param event -HTML event.\r\n\t */\r\n\tprivate readonly _handleFocusOutside = (event: FocusEvent) => {\r\n\t\tif (this.menuNode.current && !this.menuNode.current.contains(event.relatedTarget as Node)) {\r\n\t\t\tthis._closeSubmenu();\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Checks to assign a ref for focus.\r\n\t * @param index -Sub menu list index.\r\n\t * @param mobileViewLabelText -Parent user clicked Sub menu list.\r\n\t * @param optionLinkText -Sub menu list.\r\n\t * @returns Ref.\r\n\t */\r\n\tprivate readonly _shouldAddFocusMenuRef = (index: number, mobileViewLabelText?: string, optionLinkText?: string) => {\r\n\t\tif(!NavigationMenuView.isBackTrack && index === 0){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tif(!optionLinkText || !mobileViewLabelText){\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn mobileViewLabelText === optionLinkText;\r\n\t};\r\n\r\n\tprivate _closeSubmenu(): void {\r\n\t\tif (!this.props.isMobileView) {\r\n\t\t\tthis.setState({ activeMenu: undefined, categoryImage: null, mobileViewLabelText: '' });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate readonly _getCategoryImage = (categoryImage?: IImageData): React.ReactNode | null => {\r\n\t\tif (!categoryImage || !categoryImage.src) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst categoryImageUrl = generateImageUrl(`${categoryImage.src}`, this.props.context.actionContext.requestContext.apiSettings);\r\n\t\tconst defaultImageSettings: IImageSettings = {\r\n\t\t\tviewports: {\r\n\t\t\t\txs: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n\t\t\t\tsm: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n\t\t\t\tmd: { q: 'w=300&h=250&m=8', w: 0, h: 0 },\r\n\t\t\t\tlg: { q: 'w=300&h=250&m=8', w: 0, h: 0 }\r\n\t\t\t},\r\n\t\t\tlazyload: true\r\n\t\t};\r\n\t\tif (categoryImageUrl !== undefined) {\r\n\t\t\treturn (\r\n\t\t\t\t\r\n\t\t\t);\r\n\t\t}\r\n\t\treturn null;\r\n\t};\r\n}\r\n\r\nexport default NavigationMenuView;"],"sourceRoot":""}